Snap for 8730993 from eb370f828865f01d0e1b38d2fb24acf7c6b440f2 to mainline-tzdata3-release

Change-Id: I9df03521496299b7313166f38410153ecf6e0f23
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000..cb9fc37
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,20 @@
+---
+name: Bug report
+about: Create a report to help us improve
+
+---
+
+**What version of protobuf and what language are you using?**
+Version: (e.g., `v1.1.0`, `89a0c16f`, etc)
+
+**What did you do?**
+If possible, provide a recipe for reproducing the error.
+A complete runnable program is good with `.proto` and `.go` source code.
+
+**What did you expect to see?**
+
+**What did you see instead?**
+
+Make sure you include information that can help us debug (full error message, exception listing, stack trace, logs).
+
+**Anything else we should know about your project / environment?**
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000..b904f1f
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,17 @@
+---
+name: Feature request
+about: Suggest an idea for this project
+
+---
+
+**Is your feature request related to a problem? Please describe.**
+A clear and concise description of what the problem is.
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered**
+A clear and concise description of any alternative solutions or features you've considered.
+
+**Additional context**
+Add any other context or screenshots about the feature request here.
diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md
new file mode 100644
index 0000000..bfa6dde
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/question.md
@@ -0,0 +1,7 @@
+---
+name: Question
+about: Questions and troubleshooting
+
+---
+
+
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
deleted file mode 100644
index d03f567..0000000
--- a/.github/workflows/test.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-on: [push]
-name: Test
-jobs:
-  test:
-    strategy:
-      matrix:
-        go-version: [1.16.x]
-        os: [ubuntu-latest] # TODO: Add [macos-latest, windows-latest]
-    runs-on: ${{ matrix.os }}
-    steps:
-    - name: Install Linux dependencies
-      if: runner.os == 'Linux'
-      run: sudo apt-get -y install autoconf automake libtool curl make g++ unzip
-    - name: Install Go
-      uses: actions/setup-go@v2
-      with:
-        go-version: ${{ matrix.go-version }}
-    - name: Checkout code
-      uses: actions/checkout@v2
-    - name: Cache dependencies
-      uses: actions/cache@v2
-      with:
-        path: .cache
-        key: ${{ runner.os }}-${{ hashFiles('integration_test.go') }}
-    - name: Test
-      run: go test -v -mod=vendor -timeout=60m -count=1 integration_test.go -failfast
diff --git a/.gitignore b/.gitignore
index 698e891..c7dd405 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,9 +1,17 @@
-/.cache/
-/.gocache/
-/bin/
-/vendor/
+.DS_Store
+*.[568ao]
+*.ao
+*.so
+*.pyc
+._*
+.nfs.*
+[568a].out
+*~
+*.orig
+core
+_obj
+_test
+_testmain.go
 
-# This file includes artifacts of the system test that should not be checked in.
-# For files created by specific development environment (e.g. editor),
-# use alternative ways to exclude files from git.
-# For example, set up .git/info/exclude or use a global .gitignore.
+# Conformance test output and transient files.
+conformance/failing_tests.txt
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..3773aff
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,35 @@
+sudo: false
+language: go
+go:
+- 1.9.x
+- 1.10.x
+- 1.11.x
+- 1.12.x
+- 1.13.x
+- 1.14.x
+- 1.x
+
+install:
+  - go get -v -d google.golang.org/grpc
+  - go get -v -d -t github.com/golang/protobuf/...
+  - curl -L https://github.com/google/protobuf/releases/download/v3.11.4/protoc-3.11.4-linux-x86_64.zip -o /tmp/protoc.zip
+  - unzip /tmp/protoc.zip -d "$HOME"/protoc
+  - mkdir -p "$HOME"/src && ln -s "$HOME"/protoc "$HOME"/src/protobuf
+
+env:
+  - PATH=$HOME/protoc/bin:$PATH
+
+script:
+  - make all
+  - make regenerate
+  # TODO(tamird): When https://github.com/travis-ci/gimme/pull/130 is
+  # released, make this look for "1.x".
+  - if [[ "$TRAVIS_GO_VERSION" == 1.10* ]]; then
+      if [[ "$(git status --porcelain 2>&1)" != "" ]]; then
+        git status >&2;
+        git diff -a >&2;
+        exit 1;
+      fi;
+      echo "git status is clean.";
+    fi;
+  - make test
diff --git a/AUTHORS b/AUTHORS
index 2b00ddb..15167cd 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,3 +1,3 @@
 # This source code refers to The Go Authors for copyright purposes.
 # The master list of authors is in the main Go distribution,
-# visible at https://tip.golang.org/AUTHORS.
+# visible at http://tip.golang.org/AUTHORS.
diff --git a/Android.bp b/Android.bp
index 28a0af8..2213d5b 100644
--- a/Android.bp
+++ b/Android.bp
@@ -29,4 +29,216 @@
     ],
 }
 
-build = ["Android.gen.bp"]
+bootstrap_go_package {
+    name: "protoc-gen-go_descriptor",
+    pkgPath: "github.com/golang/protobuf/protoc-gen-go/descriptor",
+    deps: ["golang-protobuf-proto"],
+    srcs: ["protoc-gen-go/descriptor/descriptor.pb.go"],
+}
+
+bootstrap_go_package {
+    name: "protoc-gen-go_plugin",
+    pkgPath: "github.com/golang/protobuf/protoc-gen-go/plugin",
+    deps: [
+        "golang-protobuf-proto",
+        "protoc-gen-go_descriptor",
+    ],
+    srcs: ["protoc-gen-go/plugin/plugin.pb.go"],
+}
+
+bootstrap_go_package {
+    name: "protoc-gen-go_generator_internal_remap",
+    pkgPath: "github.com/golang/protobuf/protoc-gen-go/generator/internal/remap",
+    srcs: ["protoc-gen-go/generator/internal/remap/remap.go"],
+    testSrcs: ["protoc-gen-go/generator/internal/remap/remap_test.go"],
+}
+
+bootstrap_go_package {
+    name: "protoc-gen-go_generator",
+    pkgPath: "github.com/golang/protobuf/protoc-gen-go/generator",
+    deps: [
+        "golang-protobuf-proto",
+        "protoc-gen-go_descriptor",
+        "protoc-gen-go_plugin",
+        "protoc-gen-go_generator_internal_remap",
+    ],
+    srcs: ["protoc-gen-go/generator/generator.go"],
+    testSrcs: ["protoc-gen-go/generator/name_test.go"],
+}
+
+bootstrap_go_package {
+    name: "protoc-gen-go_grpc",
+    pkgPath: "github.com/golang/protobuf/protoc-gen-go/grpc",
+    deps: [
+        "protoc-gen-go_descriptor",
+        "protoc-gen-go_generator",
+    ],
+    srcs: ["protoc-gen-go/grpc/grpc.go"],
+}
+
+blueprint_go_binary {
+    name: "protoc-gen-go",
+    deps: [
+        "golang-protobuf-proto",
+        "protoc-gen-go_generator",
+        "protoc-gen-go_grpc",
+    ],
+    srcs: [
+        "protoc-gen-go/main.go",
+        "protoc-gen-go/link_grpc.go",
+    ],
+    testSrcs: [
+        // execs protoc from the PATH
+        //"protoc-gen-go/golden_test.go",
+    ],
+}
+
+bootstrap_go_package {
+    name: "golang-protobuf-proto",
+    pkgPath: "github.com/golang/protobuf/proto",
+    srcs: [
+        "proto/clone.go",
+        "proto/decode.go",
+        "proto/discard.go",
+        "proto/encode.go",
+        "proto/equal.go",
+        "proto/extensions.go",
+        "proto/lib.go",
+        "proto/message_set.go",
+        "proto/table_marshal.go",
+        "proto/table_merge.go",
+        "proto/table_unmarshal.go",
+        "proto/pointer_unsafe.go",
+        "proto/properties.go",
+        "proto/text.go",
+        "proto/text_parser.go",
+    ],
+    testSrcs: [
+        "proto/size2_test.go",
+    ],
+}
+
+bootstrap_go_package {
+    name: "golang-protobuf-proto-proto3_proto",
+    pkgPath: "github.com/golang/protobuf/proto/proto3_proto",
+    deps: [
+        "golang-protobuf-proto",
+        "golang-protobuf-proto-test-proto",
+        "golang-protobuf-ptypes-any",
+    ],
+    srcs: ["proto/proto3_proto/proto3.pb.go"],
+}
+
+// These won't run by default (they also print output, which we don't want), but
+// can be run with:
+//  m out/soong/.bootstrap/golang-protobuf-proto_test/test/test.passed
+bootstrap_go_package {
+    name: "golang-protobuf-proto_test",
+    pkgPath: "github.com/golang/protobuf/proto_test",
+    deps: [
+        "golang-protobuf-jsonpb",
+        "golang-protobuf-proto",
+        "golang-protobuf-proto-proto3_proto",
+        "golang-protobuf-proto-test-proto",
+        "golang-protobuf-ptypes",
+    ],
+    testSrcs: [
+        "proto/all_test.go",
+        "proto/any_test.go",
+        "proto/clone_test.go",
+        "proto/decode_test.go",
+        "proto/discard_test.go",
+        "proto/encode_test.go",
+        "proto/equal_test.go",
+        // Requires golang.org/x/sync/errgroup
+        //"proto/extensions_test.go",
+        "proto/map_test.go",
+        "proto/message_set_test.go",
+        "proto/proto3_test.go",
+        "proto/size_test.go",
+        "proto/text_parser_test.go",
+        "proto/text_test.go",
+    ],
+}
+
+bootstrap_go_package {
+    name: "golang-protobuf-proto-test-proto",
+    pkgPath: "github.com/golang/protobuf/proto/test_proto",
+    deps: ["golang-protobuf-proto"],
+    srcs: ["proto/test_proto/test.pb.go"],
+}
+
+bootstrap_go_package {
+    name: "golang-protobuf-ptypes",
+    pkgPath: "github.com/golang/protobuf/ptypes",
+    deps: [
+        "golang-protobuf-proto",
+        "golang-protobuf-ptypes-any",
+        "golang-protobuf-ptypes-duration",
+        "golang-protobuf-ptypes-timestamp",
+        "protoc-gen-go_descriptor",
+    ],
+    srcs: [
+        "ptypes/any.go",
+        "ptypes/doc.go",
+        "ptypes/duration.go",
+        "ptypes/timestamp.go",
+    ],
+    testSrcs: [
+        "ptypes/any_test.go",
+        "ptypes/duration_test.go",
+        "ptypes/timestamp_test.go",
+    ],
+}
+
+bootstrap_go_package {
+    name: "golang-protobuf-ptypes-any",
+    pkgPath: "github.com/golang/protobuf/ptypes/any",
+    deps: ["golang-protobuf-proto"],
+    srcs: ["ptypes/any/any.pb.go"],
+}
+
+bootstrap_go_package {
+    name: "golang-protobuf-ptypes-duration",
+    pkgPath: "github.com/golang/protobuf/ptypes/duration",
+    deps: ["golang-protobuf-proto"],
+    srcs: ["ptypes/duration/duration.pb.go"],
+}
+
+bootstrap_go_package {
+    name: "golang-protobuf-ptypes-empty",
+    pkgPath: "github.com/golang/protobuf/ptypes/empty",
+    deps: ["golang-protobuf-proto"],
+    srcs: ["ptypes/empty/empty.pb.go"],
+}
+
+bootstrap_go_package {
+    name: "golang-protobuf-ptypes-struct",
+    pkgPath: "github.com/golang/protobuf/ptypes/struct",
+    deps: ["golang-protobuf-proto"],
+    srcs: ["ptypes/struct/struct.pb.go"],
+}
+
+bootstrap_go_package {
+    name: "golang-protobuf-ptypes-timestamp",
+    pkgPath: "github.com/golang/protobuf/ptypes/timestamp",
+    deps: ["golang-protobuf-proto"],
+    srcs: ["ptypes/timestamp/timestamp.pb.go"],
+}
+
+bootstrap_go_package {
+    name: "golang-protobuf-ptypes-wrappers",
+    pkgPath: "github.com/golang/protobuf/ptypes/wrappers",
+    deps: ["golang-protobuf-proto"],
+    srcs: ["ptypes/wrappers/wrappers.pb.go"],
+}
+
+bootstrap_go_package {
+    name: "golang-protobuf-jsonpb",
+    pkgPath: "github.com/golang/protobuf/jsonpb",
+    srcs: ["jsonpb/jsonpb.go"],
+    deps: [
+        "golang-protobuf-proto",
+        "golang-protobuf-ptypes-struct",
+    ],
+}
diff --git a/Android.gen.bp b/Android.gen.bp
deleted file mode 100644
index 72e1c3b..0000000
--- a/Android.gen.bp
+++ /dev/null
@@ -1,1577 +0,0 @@
-// Automatically generated with:
-// go2bp -rewrite google.golang.org/protobuf=golang-protobuf -rewrite github.com/google/go-cmp/cmp=go-cmp -exclude-src internal/detrand/rand_test.go
-
-bootstrap_go_package {
-    name: "golang-protobuf-android",
-    pkgPath: "google.golang.org/protobuf/android",
-    deps: [
-        "golang-protobuf-internal-detrand",
-    ],
-    srcs: [
-        "android/android.go",
-    ],
-}
-
-blueprint_go_binary {
-    name: "protoc-gen-go",
-    deps: [
-        "golang-protobuf-cmd-protoc-gen-go-internal_gengo",
-        "golang-protobuf-compiler-protogen",
-        "golang-protobuf-encoding-prototext",
-        "golang-protobuf-internal-genid",
-        "golang-protobuf-internal-version",
-        "golang-protobuf-proto",
-        "golang-protobuf-types-descriptorpb",
-    ],
-    srcs: [
-        "cmd/protoc-gen-go/main.go",
-    ],
-    testSrcs: [
-        "cmd/protoc-gen-go/annotation_test.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-cmd-protoc-gen-go-internal_gengo",
-    pkgPath: "google.golang.org/protobuf/cmd/protoc-gen-go/internal_gengo",
-    deps: [
-        "golang-protobuf-compiler-protogen",
-        "golang-protobuf-encoding-protowire",
-        "golang-protobuf-internal-encoding-tag",
-        "golang-protobuf-internal-genid",
-        "golang-protobuf-internal-version",
-        "golang-protobuf-proto",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-        "golang-protobuf-types-descriptorpb",
-        "golang-protobuf-types-pluginpb",
-    ],
-    srcs: [
-        "cmd/protoc-gen-go/internal_gengo/init.go",
-        "cmd/protoc-gen-go/internal_gengo/main.go",
-        "cmd/protoc-gen-go/internal_gengo/reflect.go",
-        "cmd/protoc-gen-go/internal_gengo/well_known_types.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-compiler-protogen",
-    pkgPath: "google.golang.org/protobuf/compiler/protogen",
-    deps: [
-        "go-cmp",
-        "golang-protobuf-encoding-prototext",
-        "golang-protobuf-internal-genid",
-        "golang-protobuf-internal-strs",
-        "golang-protobuf-proto",
-        "golang-protobuf-reflect-protodesc",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-reflect-protoregistry",
-        "golang-protobuf-types-descriptorpb",
-        "golang-protobuf-types-pluginpb",
-    ],
-    srcs: [
-        "compiler/protogen/protogen.go",
-    ],
-    testSrcs: [
-        "compiler/protogen/protogen_test.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-encoding-protojson",
-    pkgPath: "google.golang.org/protobuf/encoding/protojson",
-    deps: [
-        "golang-protobuf-internal-encoding-json",
-        "golang-protobuf-internal-encoding-messageset",
-        "golang-protobuf-internal-errors",
-        "golang-protobuf-internal-filedesc",
-        "golang-protobuf-internal-flags",
-        "golang-protobuf-internal-genid",
-        "golang-protobuf-internal-order",
-        "golang-protobuf-internal-pragma",
-        "golang-protobuf-internal-set",
-        "golang-protobuf-internal-strs",
-        "golang-protobuf-proto",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-reflect-protoregistry",
-    ],
-    srcs: [
-        "encoding/protojson/decode.go",
-        "encoding/protojson/doc.go",
-        "encoding/protojson/encode.go",
-        "encoding/protojson/well_known_types.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-encoding-prototext",
-    pkgPath: "google.golang.org/protobuf/encoding/prototext",
-    deps: [
-        "golang-protobuf-encoding-protowire",
-        "golang-protobuf-internal-encoding-messageset",
-        "golang-protobuf-internal-encoding-text",
-        "golang-protobuf-internal-errors",
-        "golang-protobuf-internal-flags",
-        "golang-protobuf-internal-genid",
-        "golang-protobuf-internal-order",
-        "golang-protobuf-internal-pragma",
-        "golang-protobuf-internal-set",
-        "golang-protobuf-internal-strs",
-        "golang-protobuf-proto",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-reflect-protoregistry",
-    ],
-    srcs: [
-        "encoding/prototext/decode.go",
-        "encoding/prototext/doc.go",
-        "encoding/prototext/encode.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-encoding-protowire",
-    pkgPath: "google.golang.org/protobuf/encoding/protowire",
-    deps: [
-        "golang-protobuf-internal-errors",
-    ],
-    srcs: [
-        "encoding/protowire/wire.go",
-    ],
-    testSrcs: [
-        "encoding/protowire/wire_test.go",
-    ],
-}
-
-blueprint_go_binary {
-    name: "generate-corpus",
-    deps: [
-        "golang-protobuf-encoding-protojson",
-        "golang-protobuf-encoding-prototext",
-        "golang-protobuf-internal-testprotos-fuzz",
-        "golang-protobuf-internal-testprotos-test",
-        "golang-protobuf-proto",
-    ],
-    srcs: [
-        "internal/cmd/generate-corpus/main.go",
-    ],
-}
-
-blueprint_go_binary {
-    name: "generate-protos",
-    deps: [
-        "golang-protobuf-cmd-protoc-gen-go-internal_gengo",
-        "golang-protobuf-compiler-protogen",
-        "golang-protobuf-internal-detrand",
-    ],
-    srcs: [
-        "internal/cmd/generate-protos/main.go",
-    ],
-}
-
-blueprint_go_binary {
-    name: "generate-types",
-    srcs: [
-        "internal/cmd/generate-types/impl.go",
-        "internal/cmd/generate-types/main.go",
-        "internal/cmd/generate-types/proto.go",
-    ],
-}
-
-blueprint_go_binary {
-    name: "pbdump",
-    deps: [
-        "golang-protobuf-encoding-prototext",
-        "golang-protobuf-encoding-protowire",
-        "golang-protobuf-internal-errors",
-        "golang-protobuf-proto",
-        "golang-protobuf-reflect-protodesc",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-testing-protopack",
-        "golang-protobuf-types-descriptorpb",
-    ],
-    srcs: [
-        "internal/cmd/pbdump/pbdump.go",
-    ],
-    testSrcs: [
-        "internal/cmd/pbdump/pbdump_test.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-descfmt",
-    pkgPath: "google.golang.org/protobuf/internal/descfmt",
-    deps: [
-        "golang-protobuf-internal-detrand",
-        "golang-protobuf-internal-pragma",
-        "golang-protobuf-reflect-protoreflect",
-    ],
-    srcs: [
-        "internal/descfmt/stringer.go",
-    ],
-    testSrcs: [
-        "internal/descfmt/desc_test.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-descopts",
-    pkgPath: "google.golang.org/protobuf/internal/descopts",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-    ],
-    srcs: [
-        "internal/descopts/options.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-detrand",
-    pkgPath: "google.golang.org/protobuf/internal/detrand",
-    srcs: [
-        "internal/detrand/rand.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-encoding-defval",
-    pkgPath: "google.golang.org/protobuf/internal/encoding/defval",
-    deps: [
-        "golang-protobuf-internal-encoding-text",
-        "golang-protobuf-internal-errors",
-        "golang-protobuf-reflect-protoreflect",
-    ],
-    srcs: [
-        "internal/encoding/defval/default.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-encoding-json",
-    pkgPath: "google.golang.org/protobuf/internal/encoding/json",
-    deps: [
-        "golang-protobuf-internal-detrand",
-        "golang-protobuf-internal-errors",
-        "golang-protobuf-internal-strs",
-    ],
-    srcs: [
-        "internal/encoding/json/decode.go",
-        "internal/encoding/json/decode_number.go",
-        "internal/encoding/json/decode_string.go",
-        "internal/encoding/json/decode_token.go",
-        "internal/encoding/json/encode.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-encoding-messageset",
-    pkgPath: "google.golang.org/protobuf/internal/encoding/messageset",
-    deps: [
-        "golang-protobuf-encoding-protowire",
-        "golang-protobuf-internal-errors",
-        "golang-protobuf-reflect-protoreflect",
-    ],
-    srcs: [
-        "internal/encoding/messageset/messageset.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-encoding-tag",
-    pkgPath: "google.golang.org/protobuf/internal/encoding/tag",
-    deps: [
-        "golang-protobuf-internal-encoding-defval",
-        "golang-protobuf-internal-filedesc",
-        "golang-protobuf-internal-strs",
-        "golang-protobuf-reflect-protoreflect",
-    ],
-    srcs: [
-        "internal/encoding/tag/tag.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-encoding-text",
-    pkgPath: "google.golang.org/protobuf/internal/encoding/text",
-    deps: [
-        "golang-protobuf-internal-detrand",
-        "golang-protobuf-internal-errors",
-        "golang-protobuf-internal-flags",
-        "golang-protobuf-internal-strs",
-    ],
-    srcs: [
-        "internal/encoding/text/decode.go",
-        "internal/encoding/text/decode_number.go",
-        "internal/encoding/text/decode_string.go",
-        "internal/encoding/text/decode_token.go",
-        "internal/encoding/text/doc.go",
-        "internal/encoding/text/encode.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-errors",
-    pkgPath: "google.golang.org/protobuf/internal/errors",
-    deps: [
-        "golang-protobuf-internal-detrand",
-    ],
-    srcs: [
-        "internal/errors/errors.go",
-        "internal/errors/is_go113.go",
-    ],
-    testSrcs: [
-        "internal/errors/errors_test.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-filedesc",
-    pkgPath: "google.golang.org/protobuf/internal/filedesc",
-    deps: [
-        "golang-protobuf-encoding-protowire",
-        "golang-protobuf-internal-descfmt",
-        "golang-protobuf-internal-descopts",
-        "golang-protobuf-internal-encoding-defval",
-        "golang-protobuf-internal-encoding-messageset",
-        "golang-protobuf-internal-errors",
-        "golang-protobuf-internal-genid",
-        "golang-protobuf-internal-pragma",
-        "golang-protobuf-internal-strs",
-        "golang-protobuf-proto",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-reflect-protoregistry",
-    ],
-    srcs: [
-        "internal/filedesc/build.go",
-        "internal/filedesc/desc.go",
-        "internal/filedesc/desc_init.go",
-        "internal/filedesc/desc_lazy.go",
-        "internal/filedesc/desc_list.go",
-        "internal/filedesc/desc_list_gen.go",
-        "internal/filedesc/placeholder.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-filetype",
-    pkgPath: "google.golang.org/protobuf/internal/filetype",
-    deps: [
-        "golang-protobuf-internal-descopts",
-        "golang-protobuf-internal-filedesc",
-        "golang-protobuf-internal-impl",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-reflect-protoregistry",
-    ],
-    srcs: [
-        "internal/filetype/build.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-flags",
-    pkgPath: "google.golang.org/protobuf/internal/flags",
-    srcs: [
-        "internal/flags/flags.go",
-        "internal/flags/proto_legacy_disable.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-fuzz-jsonfuzz",
-    pkgPath: "google.golang.org/protobuf/internal/fuzz/jsonfuzz",
-    deps: [
-        "golang-protobuf-encoding-protojson",
-        "golang-protobuf-internal-fuzztest",
-        "golang-protobuf-internal-testprotos-fuzz",
-        "golang-protobuf-proto",
-    ],
-    srcs: [
-        "internal/fuzz/jsonfuzz/fuzz.go",
-    ],
-    testSrcs: [
-        "internal/fuzz/jsonfuzz/fuzz_test.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-fuzz-textfuzz",
-    pkgPath: "google.golang.org/protobuf/internal/fuzz/textfuzz",
-    deps: [
-        "golang-protobuf-encoding-prototext",
-        "golang-protobuf-internal-fuzztest",
-        "golang-protobuf-internal-testprotos-fuzz",
-        "golang-protobuf-proto",
-    ],
-    srcs: [
-        "internal/fuzz/textfuzz/fuzz.go",
-    ],
-    testSrcs: [
-        "internal/fuzz/textfuzz/fuzz_test.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-fuzz-wirefuzz",
-    pkgPath: "google.golang.org/protobuf/internal/fuzz/wirefuzz",
-    deps: [
-        "golang-protobuf-internal-fuzztest",
-        "golang-protobuf-internal-impl",
-        "golang-protobuf-internal-testprotos-fuzz",
-        "golang-protobuf-proto",
-        "golang-protobuf-reflect-protoregistry",
-        "golang-protobuf-runtime-protoiface",
-    ],
-    srcs: [
-        "internal/fuzz/wirefuzz/fuzz.go",
-    ],
-    testSrcs: [
-        "internal/fuzz/wirefuzz/fuzz_test.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-fuzztest",
-    pkgPath: "google.golang.org/protobuf/internal/fuzztest",
-    srcs: [
-        "internal/fuzztest/fuzztest.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-genid",
-    pkgPath: "google.golang.org/protobuf/internal/genid",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-    ],
-    srcs: [
-        "internal/genid/any_gen.go",
-        "internal/genid/api_gen.go",
-        "internal/genid/descriptor_gen.go",
-        "internal/genid/doc.go",
-        "internal/genid/duration_gen.go",
-        "internal/genid/empty_gen.go",
-        "internal/genid/field_mask_gen.go",
-        "internal/genid/goname.go",
-        "internal/genid/map_entry.go",
-        "internal/genid/source_context_gen.go",
-        "internal/genid/struct_gen.go",
-        "internal/genid/timestamp_gen.go",
-        "internal/genid/type_gen.go",
-        "internal/genid/wrappers.go",
-        "internal/genid/wrappers_gen.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-impl",
-    pkgPath: "google.golang.org/protobuf/internal/impl",
-    deps: [
-        "golang-protobuf-encoding-prototext",
-        "golang-protobuf-encoding-protowire",
-        "golang-protobuf-internal-descopts",
-        "golang-protobuf-internal-detrand",
-        "golang-protobuf-internal-encoding-messageset",
-        "golang-protobuf-internal-encoding-tag",
-        "golang-protobuf-internal-errors",
-        "golang-protobuf-internal-filedesc",
-        "golang-protobuf-internal-flags",
-        "golang-protobuf-internal-genid",
-        "golang-protobuf-internal-order",
-        "golang-protobuf-internal-pragma",
-        "golang-protobuf-internal-strs",
-        "golang-protobuf-proto",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-reflect-protoregistry",
-        "golang-protobuf-runtime-protoiface",
-    ],
-    srcs: [
-        "internal/impl/api_export.go",
-        "internal/impl/checkinit.go",
-        "internal/impl/codec_extension.go",
-        "internal/impl/codec_field.go",
-        "internal/impl/codec_gen.go",
-        "internal/impl/codec_map.go",
-        "internal/impl/codec_map_go112.go",
-        "internal/impl/codec_message.go",
-        "internal/impl/codec_messageset.go",
-        "internal/impl/codec_tables.go",
-        "internal/impl/codec_unsafe.go",
-        "internal/impl/convert.go",
-        "internal/impl/convert_list.go",
-        "internal/impl/convert_map.go",
-        "internal/impl/decode.go",
-        "internal/impl/encode.go",
-        "internal/impl/enum.go",
-        "internal/impl/extension.go",
-        "internal/impl/legacy_enum.go",
-        "internal/impl/legacy_export.go",
-        "internal/impl/legacy_extension.go",
-        "internal/impl/legacy_file.go",
-        "internal/impl/legacy_message.go",
-        "internal/impl/merge.go",
-        "internal/impl/merge_gen.go",
-        "internal/impl/message.go",
-        "internal/impl/message_reflect.go",
-        "internal/impl/message_reflect_field.go",
-        "internal/impl/message_reflect_gen.go",
-        "internal/impl/pointer_unsafe.go",
-        "internal/impl/validate.go",
-        "internal/impl/weak.go",
-    ],
-    testSrcs: [
-        "internal/impl/legacy_export_test.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-msgfmt",
-    pkgPath: "google.golang.org/protobuf/internal/msgfmt",
-    deps: [
-        "golang-protobuf-encoding-protowire",
-        "golang-protobuf-internal-detrand",
-        "golang-protobuf-internal-genid",
-        "golang-protobuf-internal-order",
-        "golang-protobuf-proto",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-reflect-protoregistry",
-    ],
-    srcs: [
-        "internal/msgfmt/format.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-order",
-    pkgPath: "google.golang.org/protobuf/internal/order",
-    deps: [
-        "go-cmp",
-        "golang-protobuf-reflect-protoreflect",
-    ],
-    srcs: [
-        "internal/order/order.go",
-        "internal/order/range.go",
-    ],
-    testSrcs: [
-        "internal/order/order_test.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-pragma",
-    pkgPath: "google.golang.org/protobuf/internal/pragma",
-    srcs: [
-        "internal/pragma/pragma.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-protobuild",
-    pkgPath: "google.golang.org/protobuf/internal/protobuild",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-reflect-protoregistry",
-    ],
-    srcs: [
-        "internal/protobuild/build.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-protolegacy",
-    pkgPath: "google.golang.org/protobuf/internal/protolegacy",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-reflect-protoregistry",
-        "golang-protobuf-runtime-protoiface",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "internal/protolegacy/proto.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-set",
-    pkgPath: "google.golang.org/protobuf/internal/set",
-    srcs: [
-        "internal/set/ints.go",
-    ],
-    testSrcs: [
-        "internal/set/ints_test.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-strs",
-    pkgPath: "google.golang.org/protobuf/internal/strs",
-    deps: [
-        "golang-protobuf-internal-flags",
-        "golang-protobuf-reflect-protoreflect",
-    ],
-    srcs: [
-        "internal/strs/strings.go",
-        "internal/strs/strings_unsafe.go",
-    ],
-    testSrcs: [
-        "internal/strs/strings_test.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-annotation",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/annotation",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-        "golang-protobuf-types-descriptorpb",
-    ],
-    srcs: [
-        "internal/testprotos/annotation/annotation.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-benchmarks",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/benchmarks",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "internal/testprotos/benchmarks/benchmarks.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-benchmarks-datasets-google_message1-proto2",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message1/proto2",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "internal/testprotos/benchmarks/datasets/google_message1/proto2/benchmark_message1_proto2.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-benchmarks-datasets-google_message1-proto3",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message1/proto3",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "internal/testprotos/benchmarks/datasets/google_message1/proto3/benchmark_message1_proto3.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-benchmarks-datasets-google_message2",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message2",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "internal/testprotos/benchmarks/datasets/google_message2/benchmark_message2.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-benchmarks-datasets-google_message3",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message3",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3.pb.go",
-        "internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_1.pb.go",
-        "internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_2.pb.go",
-        "internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_3.pb.go",
-        "internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_4.pb.go",
-        "internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_5.pb.go",
-        "internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_6.pb.go",
-        "internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_7.pb.go",
-        "internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_8.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-benchmarks-datasets-google_message4",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message4",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4.pb.go",
-        "internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4_1.pb.go",
-        "internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4_2.pb.go",
-        "internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4_3.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-benchmarks-micro",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/benchmarks/micro",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "internal/testprotos/benchmarks/micro/micro.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-conformance",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/conformance",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-        "golang-protobuf-types-known-anypb",
-        "golang-protobuf-types-known-durationpb",
-        "golang-protobuf-types-known-fieldmaskpb",
-        "golang-protobuf-types-known-structpb",
-        "golang-protobuf-types-known-timestamppb",
-        "golang-protobuf-types-known-wrapperspb",
-    ],
-    srcs: [
-        "internal/testprotos/conformance/conformance.pb.go",
-        "internal/testprotos/conformance/test_messages_proto2.pb.go",
-        "internal/testprotos/conformance/test_messages_proto3.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-enums",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/enums",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "internal/testprotos/enums/enums.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-fieldtrack",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/fieldtrack",
-    deps: [
-        "golang-protobuf-internal-testprotos-annotation",
-        "golang-protobuf-internal-testprotos-test",
-        "golang-protobuf-proto",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "internal/testprotos/fieldtrack/fieldtrack.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-fuzz",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/fuzz",
-    deps: [
-        "golang-protobuf-internal-testprotos-test",
-        "golang-protobuf-internal-testprotos-test3",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "internal/testprotos/fuzz/fuzz.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-irregular",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/irregular",
-    deps: [
-        "golang-protobuf-encoding-prototext",
-        "golang-protobuf-reflect-protodesc",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoiface",
-        "golang-protobuf-runtime-protoimpl",
-        "golang-protobuf-types-descriptorpb",
-    ],
-    srcs: [
-        "internal/testprotos/irregular/irregular.go",
-        "internal/testprotos/irregular/test.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-legacy",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/legacy",
-    deps: [
-        "golang-protobuf-internal-testprotos-legacy-proto2_20160225_2fc053c5",
-        "golang-protobuf-internal-testprotos-legacy-proto2_20160519_a4ab9ec5",
-        "golang-protobuf-internal-testprotos-legacy-proto2_20180125_92554152",
-        "golang-protobuf-internal-testprotos-legacy-proto2_20180430_b4deda09",
-        "golang-protobuf-internal-testprotos-legacy-proto2_20180814_aa810b61",
-        "golang-protobuf-internal-testprotos-legacy-proto2_20190205_c823c79e",
-        "golang-protobuf-internal-testprotos-legacy-proto3_20160225_2fc053c5",
-        "golang-protobuf-internal-testprotos-legacy-proto3_20160519_a4ab9ec5",
-        "golang-protobuf-internal-testprotos-legacy-proto3_20180125_92554152",
-        "golang-protobuf-internal-testprotos-legacy-proto3_20180430_b4deda09",
-        "golang-protobuf-internal-testprotos-legacy-proto3_20180814_aa810b61",
-        "golang-protobuf-internal-testprotos-legacy-proto3_20190205_c823c79e",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "internal/testprotos/legacy/legacy.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-legacy-bug1052",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/legacy/bug1052",
-    deps: [
-        "golang-protobuf-internal-protolegacy",
-        "golang-protobuf-types-descriptorpb",
-    ],
-    srcs: [
-        "internal/testprotos/legacy/bug1052/bug1052.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-legacy-proto2_20160225_2fc053c5",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20160225_2fc053c5",
-    deps: [
-        "golang-protobuf-internal-protolegacy",
-    ],
-    srcs: [
-        "internal/testprotos/legacy/proto2_20160225_2fc053c5/test.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-legacy-proto2_20160519_a4ab9ec5",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20160519_a4ab9ec5",
-    deps: [
-        "golang-protobuf-internal-protolegacy",
-    ],
-    srcs: [
-        "internal/testprotos/legacy/proto2_20160519_a4ab9ec5/test.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-legacy-proto2_20180125_92554152",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20180125_92554152",
-    deps: [
-        "golang-protobuf-internal-protolegacy",
-    ],
-    srcs: [
-        "internal/testprotos/legacy/proto2_20180125_92554152/test.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-legacy-proto2_20180430_b4deda09",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20180430_b4deda09",
-    deps: [
-        "golang-protobuf-internal-protolegacy",
-    ],
-    srcs: [
-        "internal/testprotos/legacy/proto2_20180430_b4deda09/test.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-legacy-proto2_20180814_aa810b61",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20180814_aa810b61",
-    deps: [
-        "golang-protobuf-internal-protolegacy",
-    ],
-    srcs: [
-        "internal/testprotos/legacy/proto2_20180814_aa810b61/test.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-legacy-proto2_20190205_c823c79e",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20190205_c823c79e",
-    deps: [
-        "golang-protobuf-internal-protolegacy",
-    ],
-    srcs: [
-        "internal/testprotos/legacy/proto2_20190205_c823c79e/test.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-legacy-proto3_20160225_2fc053c5",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20160225_2fc053c5",
-    deps: [
-        "golang-protobuf-internal-protolegacy",
-    ],
-    srcs: [
-        "internal/testprotos/legacy/proto3_20160225_2fc053c5/test.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-legacy-proto3_20160519_a4ab9ec5",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20160519_a4ab9ec5",
-    deps: [
-        "golang-protobuf-internal-protolegacy",
-    ],
-    srcs: [
-        "internal/testprotos/legacy/proto3_20160519_a4ab9ec5/test.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-legacy-proto3_20180125_92554152",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20180125_92554152",
-    deps: [
-        "golang-protobuf-internal-protolegacy",
-    ],
-    srcs: [
-        "internal/testprotos/legacy/proto3_20180125_92554152/test.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-legacy-proto3_20180430_b4deda09",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20180430_b4deda09",
-    deps: [
-        "golang-protobuf-internal-protolegacy",
-    ],
-    srcs: [
-        "internal/testprotos/legacy/proto3_20180430_b4deda09/test.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-legacy-proto3_20180814_aa810b61",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20180814_aa810b61",
-    deps: [
-        "golang-protobuf-internal-protolegacy",
-    ],
-    srcs: [
-        "internal/testprotos/legacy/proto3_20180814_aa810b61/test.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-legacy-proto3_20190205_c823c79e",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20190205_c823c79e",
-    deps: [
-        "golang-protobuf-internal-protolegacy",
-    ],
-    srcs: [
-        "internal/testprotos/legacy/proto3_20190205_c823c79e/test.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-messageset-messagesetpb",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/messageset/messagesetpb",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "internal/testprotos/messageset/messagesetpb/message_set.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-messageset-msetextpb",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/messageset/msetextpb",
-    deps: [
-        "golang-protobuf-internal-testprotos-messageset-messagesetpb",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "internal/testprotos/messageset/msetextpb/msetextpb.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-news",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/news",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-        "golang-protobuf-types-known-anypb",
-        "golang-protobuf-types-known-timestamppb",
-    ],
-    srcs: [
-        "internal/testprotos/news/news.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-nullable",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/nullable",
-    deps: [
-        "go-cmp",
-        "golang-protobuf-encoding-prototext",
-        "golang-protobuf-encoding-protowire",
-        "golang-protobuf-proto",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-        "golang-protobuf-testing-protocmp",
-        "golang-protobuf-types-descriptorpb",
-    ],
-    srcs: [
-        "internal/testprotos/nullable/nullable.go",
-    ],
-    testSrcs: [
-        "internal/testprotos/nullable/nullable_test.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-order",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/order",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "internal/testprotos/order/order.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-registry",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/registry",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "internal/testprotos/registry/test.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-required",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/required",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "internal/testprotos/required/required.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-test",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/test",
-    deps: [
-        "golang-protobuf-internal-testprotos-enums",
-        "golang-protobuf-proto",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "internal/testprotos/test/ext.pb.go",
-        "internal/testprotos/test/test.pb.go",
-        "internal/testprotos/test/test_import.pb.go",
-        "internal/testprotos/test/test_public.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-test-weak1",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/test/weak1",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "internal/testprotos/test/weak1/test_weak.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-test-weak2",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/test/weak2",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "internal/testprotos/test/weak2/test_weak.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-test3",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/test3",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-        "golang-protobuf-types-descriptorpb",
-    ],
-    srcs: [
-        "internal/testprotos/test3/test.pb.go",
-        "internal/testprotos/test3/test_extension.pb.go",
-        "internal/testprotos/test3/test_import.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-textpb2",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/textpb2",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-        "golang-protobuf-types-known-anypb",
-        "golang-protobuf-types-known-durationpb",
-        "golang-protobuf-types-known-emptypb",
-        "golang-protobuf-types-known-fieldmaskpb",
-        "golang-protobuf-types-known-structpb",
-        "golang-protobuf-types-known-timestamppb",
-        "golang-protobuf-types-known-wrapperspb",
-    ],
-    srcs: [
-        "internal/testprotos/textpb2/test.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-testprotos-textpb3",
-    pkgPath: "google.golang.org/protobuf/internal/testprotos/textpb3",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "internal/testprotos/textpb3/test.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-version",
-    pkgPath: "google.golang.org/protobuf/internal/version",
-    srcs: [
-        "internal/version/version.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-internal-weakdeps",
-    pkgPath: "google.golang.org/protobuf/internal/weakdeps",
-    srcs: [
-        "internal/weakdeps/doc.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-proto",
-    pkgPath: "google.golang.org/protobuf/proto",
-    deps: [
-        "golang-protobuf-encoding-protowire",
-        "golang-protobuf-internal-encoding-messageset",
-        "golang-protobuf-internal-errors",
-        "golang-protobuf-internal-flags",
-        "golang-protobuf-internal-genid",
-        "golang-protobuf-internal-order",
-        "golang-protobuf-internal-pragma",
-        "golang-protobuf-internal-strs",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-reflect-protoregistry",
-        "golang-protobuf-runtime-protoiface",
-    ],
-    srcs: [
-        "proto/checkinit.go",
-        "proto/decode.go",
-        "proto/decode_gen.go",
-        "proto/doc.go",
-        "proto/encode.go",
-        "proto/encode_gen.go",
-        "proto/equal.go",
-        "proto/extension.go",
-        "proto/merge.go",
-        "proto/messageset.go",
-        "proto/proto.go",
-        "proto/proto_methods.go",
-        "proto/reset.go",
-        "proto/size.go",
-        "proto/size_gen.go",
-        "proto/wrappers.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-reflect-protodesc",
-    pkgPath: "google.golang.org/protobuf/reflect/protodesc",
-    deps: [
-        "golang-protobuf-encoding-prototext",
-        "golang-protobuf-encoding-protowire",
-        "golang-protobuf-internal-encoding-defval",
-        "golang-protobuf-internal-errors",
-        "golang-protobuf-internal-filedesc",
-        "golang-protobuf-internal-flags",
-        "golang-protobuf-internal-genid",
-        "golang-protobuf-internal-pragma",
-        "golang-protobuf-internal-strs",
-        "golang-protobuf-proto",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-reflect-protoregistry",
-        "golang-protobuf-types-descriptorpb",
-    ],
-    srcs: [
-        "reflect/protodesc/desc.go",
-        "reflect/protodesc/desc_init.go",
-        "reflect/protodesc/desc_resolve.go",
-        "reflect/protodesc/desc_validate.go",
-        "reflect/protodesc/proto.go",
-    ],
-    testSrcs: [
-        "reflect/protodesc/file_test.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-reflect-protopath",
-    pkgPath: "google.golang.org/protobuf/reflect/protopath",
-    deps: [
-        "golang-protobuf-internal-encoding-text",
-        "golang-protobuf-internal-msgfmt",
-        "golang-protobuf-reflect-protoreflect",
-    ],
-    srcs: [
-        "reflect/protopath/path.go",
-        "reflect/protopath/step.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-reflect-protorange",
-    pkgPath: "google.golang.org/protobuf/reflect/protorange",
-    deps: [
-        "go-cmp",
-        "go-cmp-cmpopts",
-        "golang-protobuf-internal-genid",
-        "golang-protobuf-internal-order",
-        "golang-protobuf-internal-testprotos-news",
-        "golang-protobuf-proto",
-        "golang-protobuf-reflect-protopath",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-reflect-protoregistry",
-        "golang-protobuf-testing-protocmp",
-        "golang-protobuf-types-known-anypb",
-        "golang-protobuf-types-known-timestamppb",
-    ],
-    srcs: [
-        "reflect/protorange/range.go",
-    ],
-    testSrcs: [
-        "reflect/protorange/range_test.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-reflect-protoreflect",
-    pkgPath: "google.golang.org/protobuf/reflect/protoreflect",
-    deps: [
-        "golang-protobuf-encoding-protowire",
-        "golang-protobuf-internal-pragma",
-    ],
-    srcs: [
-        "reflect/protoreflect/methods.go",
-        "reflect/protoreflect/proto.go",
-        "reflect/protoreflect/source.go",
-        "reflect/protoreflect/source_gen.go",
-        "reflect/protoreflect/type.go",
-        "reflect/protoreflect/value.go",
-        "reflect/protoreflect/value_union.go",
-        "reflect/protoreflect/value_unsafe.go",
-    ],
-    testSrcs: [
-        "reflect/protoreflect/proto_test.go",
-        "reflect/protoreflect/source_test.go",
-        "reflect/protoreflect/value_test.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-reflect-protoregistry",
-    pkgPath: "google.golang.org/protobuf/reflect/protoregistry",
-    deps: [
-        "golang-protobuf-internal-encoding-messageset",
-        "golang-protobuf-internal-errors",
-        "golang-protobuf-internal-flags",
-        "golang-protobuf-reflect-protoreflect",
-    ],
-    srcs: [
-        "reflect/protoregistry/registry.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-runtime-protoiface",
-    pkgPath: "google.golang.org/protobuf/runtime/protoiface",
-    deps: [
-        "golang-protobuf-internal-pragma",
-        "golang-protobuf-reflect-protoreflect",
-    ],
-    srcs: [
-        "runtime/protoiface/legacy.go",
-        "runtime/protoiface/methods.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-runtime-protoimpl",
-    pkgPath: "google.golang.org/protobuf/runtime/protoimpl",
-    deps: [
-        "golang-protobuf-internal-filedesc",
-        "golang-protobuf-internal-filetype",
-        "golang-protobuf-internal-impl",
-        "golang-protobuf-internal-version",
-    ],
-    srcs: [
-        "runtime/protoimpl/impl.go",
-        "runtime/protoimpl/version.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-testing-protocmp",
-    pkgPath: "google.golang.org/protobuf/testing/protocmp",
-    deps: [
-        "go-cmp",
-        "go-cmp-cmpopts",
-        "golang-protobuf-encoding-protowire",
-        "golang-protobuf-internal-detrand",
-        "golang-protobuf-internal-genid",
-        "golang-protobuf-internal-msgfmt",
-        "golang-protobuf-internal-testprotos-test",
-        "golang-protobuf-internal-testprotos-textpb2",
-        "golang-protobuf-proto",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-reflect-protoregistry",
-        "golang-protobuf-runtime-protoiface",
-        "golang-protobuf-runtime-protoimpl",
-        "golang-protobuf-testing-protopack",
-        "golang-protobuf-types-dynamicpb",
-        "golang-protobuf-types-known-anypb",
-        "golang-protobuf-types-known-wrapperspb",
-    ],
-    srcs: [
-        "testing/protocmp/reflect.go",
-        "testing/protocmp/util.go",
-        "testing/protocmp/xform.go",
-    ],
-    testSrcs: [
-        "testing/protocmp/reflect_test.go",
-        "testing/protocmp/util_test.go",
-        "testing/protocmp/xform_test.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-testing-protopack",
-    pkgPath: "google.golang.org/protobuf/testing/protopack",
-    deps: [
-        "go-cmp",
-        "golang-protobuf-encoding-prototext",
-        "golang-protobuf-encoding-protowire",
-        "golang-protobuf-reflect-protodesc",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-types-descriptorpb",
-    ],
-    srcs: [
-        "testing/protopack/pack.go",
-    ],
-    testSrcs: [
-        "testing/protopack/pack_test.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-testing-prototest",
-    pkgPath: "google.golang.org/protobuf/testing/prototest",
-    deps: [
-        "golang-protobuf-encoding-prototext",
-        "golang-protobuf-encoding-protowire",
-        "golang-protobuf-proto",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-reflect-protoregistry",
-    ],
-    srcs: [
-        "testing/prototest/enum.go",
-        "testing/prototest/message.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-types-descriptorpb",
-    pkgPath: "google.golang.org/protobuf/types/descriptorpb",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "types/descriptorpb/descriptor.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-types-dynamicpb",
-    pkgPath: "google.golang.org/protobuf/types/dynamicpb",
-    deps: [
-        "golang-protobuf-internal-errors",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoiface",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "types/dynamicpb/dynamic.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-types-known-anypb",
-    pkgPath: "google.golang.org/protobuf/types/known/anypb",
-    deps: [
-        "golang-protobuf-proto",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-reflect-protoregistry",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "types/known/anypb/any.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-types-known-apipb",
-    pkgPath: "google.golang.org/protobuf/types/known/apipb",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-        "golang-protobuf-types-known-sourcecontextpb",
-        "golang-protobuf-types-known-typepb",
-    ],
-    srcs: [
-        "types/known/apipb/api.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-types-known-durationpb",
-    pkgPath: "google.golang.org/protobuf/types/known/durationpb",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "types/known/durationpb/duration.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-types-known-emptypb",
-    pkgPath: "google.golang.org/protobuf/types/known/emptypb",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "types/known/emptypb/empty.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-types-known-fieldmaskpb",
-    pkgPath: "google.golang.org/protobuf/types/known/fieldmaskpb",
-    deps: [
-        "golang-protobuf-proto",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "types/known/fieldmaskpb/field_mask.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-types-known-sourcecontextpb",
-    pkgPath: "google.golang.org/protobuf/types/known/sourcecontextpb",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "types/known/sourcecontextpb/source_context.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-types-known-structpb",
-    pkgPath: "google.golang.org/protobuf/types/known/structpb",
-    deps: [
-        "golang-protobuf-encoding-protojson",
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "types/known/structpb/struct.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-types-known-timestamppb",
-    pkgPath: "google.golang.org/protobuf/types/known/timestamppb",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "types/known/timestamppb/timestamp.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-types-known-typepb",
-    pkgPath: "google.golang.org/protobuf/types/known/typepb",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-        "golang-protobuf-types-known-anypb",
-        "golang-protobuf-types-known-sourcecontextpb",
-    ],
-    srcs: [
-        "types/known/typepb/type.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-types-known-wrapperspb",
-    pkgPath: "google.golang.org/protobuf/types/known/wrapperspb",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-    ],
-    srcs: [
-        "types/known/wrapperspb/wrappers.pb.go",
-    ],
-}
-
-bootstrap_go_package {
-    name: "golang-protobuf-types-pluginpb",
-    pkgPath: "google.golang.org/protobuf/types/pluginpb",
-    deps: [
-        "golang-protobuf-reflect-protoreflect",
-        "golang-protobuf-runtime-protoimpl",
-        "golang-protobuf-types-descriptorpb",
-    ],
-    srcs: [
-        "types/pluginpb/plugin.pb.go",
-    ],
-}
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
deleted file mode 100644
index 1f8083b..0000000
--- a/CONTRIBUTING.md
+++ /dev/null
@@ -1,80 +0,0 @@
-# Contributing to Go Protocol Buffers
-
-Go protocol buffers is an open source project and accepts contributions.
-The source of truth for this repository is at
-[go.googlesource.com/protobuf](https://go.googlesource.com/protobuf).
-The code review tool used is
-[Gerrit Code Review](https://www.gerritcodereview.com/).
-At this time, we are unfortunately unable to accept GitHub pull requests.
-
-
-## Becoming a contributor
-
-The first step is to configure your environment.
-Please follow the steps outlined in
-["Becoming a contributor" (golang.org)](https://golang.org/doc/contribute.html#contributor)
-as the setup for contributing to the `protobuf` project is identical
-to that for contributing to the `go` project.
-
-
-## Before contributing code
-
-The project welcomes submissions, but to make sure things are well coordinated
-we ask that contributors discuss any significant changes before starting work.
-Best practice is to connect your work to the
-[issue tracker](https://github.com/golang/protobuf/issues),
-either by filing a new issue or by claiming an existing issue.
-
-
-## Sending a change via Gerrit
-
-The `protobuf` project performs development in Gerrit.
-Below are the steps to send a change using Gerrit.
-
-
-**Step 1:** Clone the Go source code:
-```
-$ git clone https://go.googlesource.com/protobuf
-```
-
-**Step 2:** Setup a Git hook:
-Setup a hook to run the tests prior to submitting changes to Gerrit:
-```
-$ (cd protobuf/.git/hooks && echo -e '#!/bin/bash\n./test.bash' > pre-push && chmod a+x pre-push)
-```
-
-**Step 3:** Prepare changes in a new branch, created from the `master` branch.
-To commit the changes, use `git codereview change`;
-that will create or amend a single commit in the branch.
-
-```
-$ git checkout -b mybranch
-$ [edit files...]
-$ git add [files...]
-$ git codereview change   # create commit in the branch
-$ [edit again...]
-$ git add [files...]
-$ git codereview change   # amend the existing commit with new changes
-$ [etc.]
-```
-
-**Step 4:** Send the changes for review to Gerrit using `git codereview mail`.
-```
-$ git codereview mail     # send changes to Gerrit
-```
-
-**Step 5:** After a review, there may be changes that are required.
-Do so by applying changes to the same commit and mail them to Gerrit again:
-```
-$ [edit files...]
-$ git add [files...]
-$ git codereview change   # update same commit
-$ git codereview mail     # send to Gerrit again
-```
-
-When calling `git codereview mail`, it will call `git push` under the hood,
-which will trigger the test hook that was setup in step 2.
-
-The [Contribution Guidelines](https://golang.org/doc/contribute.html) for the
-Go project provides additional details that are also relevant to
-contributing to the Go `protobuf` project.
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 1fbd3e9..1c4577e 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -1,3 +1,3 @@
 # This source code was written by the Go contributors.
 # The master list of contributors is in the main Go distribution,
-# visible at https://tip.golang.org/CONTRIBUTORS.
+# visible at http://tip.golang.org/CONTRIBUTORS.
diff --git a/LICENSE b/LICENSE
index 49ea0f9..0f64693 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,16 +1,16 @@
-Copyright (c) 2018 The Go Authors. All rights reserved.
+Copyright 2010 The Go Authors.  All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
 met:
 
-   * Redistributions of source code must retain the above copyright
+    * Redistributions of source code must retain the above copyright
 notice, this list of conditions and the following disclaimer.
-   * Redistributions in binary form must reproduce the above
+    * Redistributions in binary form must reproduce the above
 copyright notice, this list of conditions and the following disclaimer
 in the documentation and/or other materials provided with the
 distribution.
-   * Neither the name of Google Inc. nor the names of its
+    * Neither the name of Google Inc. nor the names of its
 contributors may be used to endorse or promote products derived from
 this software without specific prior written permission.
 
@@ -25,3 +25,4 @@
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/METADATA b/METADATA
index ad0c055..576db36 100644
--- a/METADATA
+++ b/METADATA
@@ -2,17 +2,17 @@
 third_party {
   url {
     type: HOMEPAGE
-    value: "https://github.com/protocolbuffers/protobuf-go"
+    value: "https://github.com/golang/protobuf"
   }
   url {
     type: GIT
-    value: "https://github.com/protocolbuffers/protobuf-go"
+    value: "https://github.com/golang/protobuf"
   }
-  version: "v1.28.0"
   license_type: NOTICE
+  version: "v1.3.5"
   last_upgrade_date {
-    year: 2022
+    year: 2020
     month: 3
-    day: 29
+    day: 12
   }
 }
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..2d7328e
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,49 @@
+# Go support for Protocol Buffers - Google's data interchange format
+#
+# Copyright 2010 The Go Authors.  All rights reserved.
+# https://github.com/golang/protobuf
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+#     * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+#     * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+all:	install
+
+install:
+	go install ./proto ./jsonpb ./ptypes ./protoc-gen-go
+
+test:
+	go test ./... ./protoc-gen-go/testdata
+	go test -tags purego ./... ./protoc-gen-go/testdata
+	cd protoc-gen-go/testdata/grpc && go build grpc.pb.go
+
+clean:
+	go clean ./...
+
+nuke:
+	go clean -i ./...
+
+regenerate:
+	./regenerate.sh
diff --git a/PATENTS b/PATENTS
deleted file mode 100644
index 7330990..0000000
--- a/PATENTS
+++ /dev/null
@@ -1,22 +0,0 @@
-Additional IP Rights Grant (Patents)
-
-"This implementation" means the copyrightable works distributed by
-Google as part of the Go project.
-
-Google hereby grants to You a perpetual, worldwide, non-exclusive,
-no-charge, royalty-free, irrevocable (except as stated in this section)
-patent license to make, have made, use, offer to sell, sell, import,
-transfer and otherwise run, modify and propagate the contents of this
-implementation of Go, where such license applies only to those patent
-claims, both currently owned or controlled by Google and acquired in
-the future, licensable by Google that are necessarily infringed by this
-implementation of Go.  This grant does not include claims that would be
-infringed only as a consequence of further modification of this
-implementation.  If you or your agent or exclusive licensee institute or
-order or agree to the institution of patent litigation against any
-entity (including a cross-claim or counterclaim in a lawsuit) alleging
-that this implementation of Go or any code incorporated within this
-implementation of Go constitutes direct or contributory patent
-infringement, or inducement of patent infringement, then any patent
-rights granted to you under this License for this implementation of Go
-shall terminate as of the date such litigation is filed.
diff --git a/README.md b/README.md
index c97a4aa..2e253e6 100644
--- a/README.md
+++ b/README.md
@@ -1,344 +1,292 @@
-# Go support for Protocol Buffers
+# Go support for Protocol Buffers - Google's data interchange format
 
-[![Go Reference](https://pkg.go.dev/badge/google.golang.org/protobuf.svg)](https://pkg.go.dev/google.golang.org/protobuf)
-[![Build Status](https://travis-ci.org/protocolbuffers/protobuf-go.svg?branch=master)](https://travis-ci.org/protocolbuffers/protobuf-go)
+[![Build Status](https://travis-ci.org/golang/protobuf.svg?branch=master)](https://travis-ci.org/golang/protobuf)
+[![GoDoc](https://godoc.org/github.com/golang/protobuf?status.svg)](https://godoc.org/github.com/golang/protobuf)
 
-This project hosts the Go implementation for
-[protocol buffers](https://developers.google.com/protocol-buffers), which is a
-language-neutral, platform-neutral, extensible mechanism for serializing
-structured data. The protocol buffer language is a language for specifying the
-schema for structured data. This schema is compiled into language specific
-bindings. This project provides both a tool to generate Go code for the
-protocol buffer language, and also the runtime implementation to handle
-serialization of messages in Go. See the
-[protocol buffer developer guide](https://developers.google.com/protocol-buffers/docs/overview)
-for more information about protocol buffers themselves.
+Google's data interchange format.
+Copyright 2010 The Go Authors.
+https://github.com/golang/protobuf
 
-This project is comprised of two components:
+This package and the code it generates requires at least Go 1.9.
 
-*   Code generator: The
-    [`protoc-gen-go`](https://pkg.go.dev/google.golang.org/protobuf/cmd/protoc-gen-go)
-    tool is a compiler plugin to `protoc`, the protocol buffer compiler. It
-    augments the `protoc` compiler so that it knows how to
-    [generate Go specific code for a given `.proto` file](https://developers.google.com/protocol-buffers/docs/reference/go-generated).
+This software implements Go bindings for protocol buffers.  For
+information about protocol buffers themselves, see
+	https://developers.google.com/protocol-buffers/
 
-*   Runtime library: The
-    [`protobuf`](https://pkg.go.dev/mod/google.golang.org/protobuf) module
-    contains a set of Go packages that form the runtime implementation of
-    protobufs in Go. This provides the set of interfaces that
-    [define what a message is](https://pkg.go.dev/google.golang.org/protobuf/reflect/protoreflect)
-    and functionality to serialize message in various formats (e.g.,
-    [wire](https://pkg.go.dev/google.golang.org/protobuf/proto),
-    [JSON](https://pkg.go.dev/google.golang.org/protobuf/encoding/protojson),
-    and
-    [text](https://pkg.go.dev/google.golang.org/protobuf/encoding/prototext)).
+## Installation ##
 
-See the
-[developer guide for protocol buffers in Go](https://developers.google.com/protocol-buffers/docs/gotutorial)
-for a general guide for how to get started using protobufs in Go.
+To use this software, you must:
+- Install the standard C++ implementation of protocol buffers from
+	https://developers.google.com/protocol-buffers/
+- Of course, install the Go compiler and tools from
+	https://golang.org/
+  See
+	https://golang.org/doc/install
+  for details or, if you are using gccgo, follow the instructions at
+	https://golang.org/doc/install/gccgo
+- Grab the code from the repository and install the `proto` package.
+  The simplest way is to run:
+  ```
+  go get -u github.com/golang/protobuf/protoc-gen-go
+  ```
+  The compiler plugin, `protoc-gen-go`, will be installed in `$GOPATH/bin`
+  unless `$GOBIN` is set. It must be in your `$PATH` for the protocol
+  compiler, `protoc`, to find it.
+- If you need a particular version of `protoc-gen-go` (e.g., to match your
+  `proto` package version), one option is
+  ```shell
+  GIT_TAG="v1.2.0" # change as needed
+  go get -d -u github.com/golang/protobuf/protoc-gen-go
+  git -C "$(go env GOPATH)"/src/github.com/golang/protobuf checkout $GIT_TAG
+  go install github.com/golang/protobuf/protoc-gen-go
+  ```
 
-This project is the second major revision of the Go protocol buffer API
-implemented by the
-[`google.golang.org/protobuf`](https://pkg.go.dev/mod/google.golang.org/protobuf)
-module. The first major version is implemented by the
-[`github.com/golang/protobuf`](https://pkg.go.dev/mod/github.com/golang/protobuf)
-module.
+This software has two parts: a 'protocol compiler plugin' that
+generates Go source files that, once compiled, can access and manage
+protocol buffers; and a library that implements run-time support for
+encoding (marshaling), decoding (unmarshaling), and accessing protocol
+buffers.
 
-## Package index
+There is support for gRPC in Go using protocol buffers.
+See the note at the bottom of this file for details.
 
-Summary of the packages provided by this module:
+There are no insertion points in the plugin.
 
-*   [`proto`](https://pkg.go.dev/google.golang.org/protobuf/proto): Package
-    `proto` provides functions operating on protobuf messages such as cloning,
-    merging, and checking equality, as well as binary serialization.
-*   [`encoding/protojson`](https://pkg.go.dev/google.golang.org/protobuf/encoding/protojson):
-    Package `protojson` serializes protobuf messages as JSON.
-*   [`encoding/prototext`](https://pkg.go.dev/google.golang.org/protobuf/encoding/prototext):
-    Package `prototext` serializes protobuf messages as the text format.
-*   [`encoding/protowire`](https://pkg.go.dev/google.golang.org/protobuf/encoding/protowire):
-    Package `protowire` parses and formats the low-level raw wire encoding. Most
-    users should use package `proto` to serialize messages in the wire format.
-*   [`reflect/protoreflect`](https://pkg.go.dev/google.golang.org/protobuf/reflect/protoreflect):
-    Package `protoreflect` provides interfaces to dynamically manipulate
-    protobuf messages.
-*   [`reflect/protoregistry`](https://pkg.go.dev/google.golang.org/protobuf/reflect/protoregistry):
-    Package `protoregistry` provides data structures to register and lookup
-    protobuf descriptor types.
-*   [`reflect/protodesc`](https://pkg.go.dev/google.golang.org/protobuf/reflect/protodesc):
-    Package `protodesc` provides functionality for converting
-    `descriptorpb.FileDescriptorProto` messages to/from the reflective
-    `protoreflect.FileDescriptor`.
-*   [`reflect/protopath`](https://pkg.go.dev/google.golang.org/protobuf/reflect/protopath):
-    Package `protopath` provides a representation of a sequence of
-    protobuf reflection operations on a message.
-*   [`reflect/protorange`](https://pkg.go.dev/google.golang.org/protobuf/reflect/protorange):
-    Package `protorange` provides functionality to traverse a protobuf message.
-*   [`testing/protocmp`](https://pkg.go.dev/google.golang.org/protobuf/testing/protocmp):
-    Package `protocmp` provides protobuf specific options for the `cmp` package.
-*   [`testing/protopack`](https://pkg.go.dev/google.golang.org/protobuf/testing/protopack):
-    Package `protopack` aids manual encoding and decoding of the wire format.
-*   [`testing/prototest`](https://pkg.go.dev/google.golang.org/protobuf/testing/prototest):
-    Package `prototest` exercises the protobuf reflection implementation for
-    concrete message types.
-*   [`types/dynamicpb`](https://pkg.go.dev/google.golang.org/protobuf/types/dynamicpb):
-    Package `dynamicpb` creates protobuf messages at runtime from protobuf
-    descriptors.
-*   [`types/known/anypb`](https://pkg.go.dev/google.golang.org/protobuf/types/known/anypb):
-    Package `anypb` is the generated package for `google/protobuf/any.proto`.
-*   [`types/known/timestamppb`](https://pkg.go.dev/google.golang.org/protobuf/types/known/timestamppb):
-    Package `timestamppb` is the generated package for
-    `google/protobuf/timestamp.proto`.
-*   [`types/known/durationpb`](https://pkg.go.dev/google.golang.org/protobuf/types/known/durationpb):
-    Package `durationpb` is the generated package for
-    `google/protobuf/duration.proto`.
-*   [`types/known/wrapperspb`](https://pkg.go.dev/google.golang.org/protobuf/types/known/wrapperspb):
-    Package `wrapperspb` is the generated package for
-    `google/protobuf/wrappers.proto`.
-*   [`types/known/structpb`](https://pkg.go.dev/google.golang.org/protobuf/types/known/structpb):
-    Package `structpb` is the generated package for
-    `google/protobuf/struct.proto`.
-*   [`types/known/fieldmaskpb`](https://pkg.go.dev/google.golang.org/protobuf/types/known/fieldmaskpb):
-    Package `fieldmaskpb` is the generated package for
-    `google/protobuf/field_mask.proto`.
-*   [`types/known/apipb`](https://pkg.go.dev/google.golang.org/protobuf/types/known/apipb):
-    Package `apipb` is the generated package for
-    `google/protobuf/api.proto`.
-*   [`types/known/typepb`](https://pkg.go.dev/google.golang.org/protobuf/types/known/typepb):
-    Package `typepb` is the generated package for
-    `google/protobuf/type.proto`.
-*   [`types/known/sourcecontextpb`](https://pkg.go.dev/google.golang.org/protobuf/types/known/sourcecontextpb):
-    Package `sourcecontextpb` is the generated package for
-    `google/protobuf/source_context.proto`.
-*   [`types/known/emptypb`](https://pkg.go.dev/google.golang.org/protobuf/types/known/emptypb):
-    Package `emptypb` is the generated package for
-    `google/protobuf/empty.proto`.
-*   [`types/descriptorpb`](https://pkg.go.dev/google.golang.org/protobuf/types/descriptorpb):
-    Package `descriptorpb` is the generated package for
-    `google/protobuf/descriptor.proto`.
-*   [`types/pluginpb`](https://pkg.go.dev/google.golang.org/protobuf/types/pluginpb):
-    Package `pluginpb` is the generated package for
-    `google/protobuf/compiler/plugin.proto`.
-*   [`compiler/protogen`](https://pkg.go.dev/google.golang.org/protobuf/compiler/protogen):
-    Package `protogen` provides support for writing protoc plugins.
-*   [`cmd/protoc-gen-go`](https://pkg.go.dev/google.golang.org/protobuf/cmd/protoc-gen-go):
-    The `protoc-gen-go` binary is a protoc plugin to generate a Go protocol
-    buffer package.
 
-## Reporting issues
+## Using protocol buffers with Go ##
 
-The issue tracker for this project is currently located at
-[golang/protobuf](https://github.com/golang/protobuf/issues).
+Once the software is installed, there are two steps to using it.
+First you must compile the protocol buffer definitions and then import
+them, with the support library, into your program.
 
-Please report any issues there with a sufficient description of the bug or
-feature request. Bug reports should ideally be accompanied by a minimal
-reproduction of the issue. Irreproducible bugs are difficult to diagnose and fix
-(and likely to be closed after some period of time). Bug reports must specify
-the version of the
-[Go protocol buffer module](https://github.com/protocolbuffers/protobuf-go/releases)
-and also the version of the
-[protocol buffer toolchain](https://github.com/protocolbuffers/protobuf/releases)
-being used.
+To compile the protocol buffer definition, run protoc with the --go_out
+parameter set to the directory you want to output the Go code to.
 
-## Contributing
+	protoc --go_out=. *.proto
 
-This project is open-source and accepts contributions. See the
-[contribution guide](https://github.com/protocolbuffers/protobuf-go/blob/master/CONTRIBUTING.md)
-for more information.
+The generated files will be suffixed .pb.go.  See the Test code below
+for an example using such a file.
 
-## Compatibility
+## Packages and input paths ##
 
-This module and the generated code are expected to be stable over time. However,
-we reserve the right to make breaking changes without notice for the following
-reasons:
+The protocol buffer language has a concept of "packages" which does not
+correspond well to the Go notion of packages. In generated Go code,
+each source `.proto` file is associated with a single Go package. The
+name and import path for this package is specified with the `go_package`
+proto option:
 
-*   **Security:** A security issue in the specification or implementation may
-    come to light whose resolution requires breaking compatibility. We reserve
-    the right to address such issues.
-*   **Unspecified behavior:** There are some aspects of the protocol buffer
-    specification that are undefined. Programs that depend on unspecified
-    behavior may break in future releases.
-*   **Specification changes:** It may become necessary to address an
-    inconsistency, incompleteness, or change in the protocol buffer
-    specification, which may affect the behavior of existing programs. We
-    reserve the right to address such changes.
-*   **Bugs:** If a package has a bug that violates correctness, a program
-    depending on the buggy behavior may break if the bug is fixed. We reserve
-    the right to fix such bugs.
-*   **Generated additions**: We reserve the right to add new declarations to
-    generated Go packages of `.proto` files. This includes declared constants,
-    variables, functions, types, fields in structs, and methods on types. This
-    may break attempts at injecting additional code on top of what is generated
-    by `protoc-gen-go`. Such practice is not supported by this project.
-*   **Internal changes**: We reserve the right to add, modify, and remove
-    internal code, which includes all unexported declarations, the
-    [`protoc-gen-go/internal_gengo`](https://pkg.go.dev/google.golang.org/protobuf/cmd/protoc-gen-go/internal_gengo)
-    package, the
-    [`runtime/protoimpl`](https://pkg.go.dev/google.golang.org/protobuf/runtime/protoimpl?tab=doc)
-    package, and all packages under
-    [`internal`](https://pkg.go.dev/google.golang.org/protobuf/internal).
+	option go_package = "github.com/golang/protobuf/ptypes/any";
+
+The protocol buffer compiler will attempt to derive a package name and
+import path if a `go_package` option is not present, but it is
+best to always specify one explicitly.
+
+There is a one-to-one relationship between source `.proto` files and
+generated `.pb.go` files, but any number of `.pb.go` files may be
+contained in the same Go package.
+
+The output name of a generated file is produced by replacing the
+`.proto` suffix with `.pb.go` (e.g., `foo.proto` produces `foo.pb.go`).
+However, the output directory is selected in one of two ways.  Let
+us say we have `inputs/x.proto` with a `go_package` option of
+`github.com/golang/protobuf/p`. The corresponding output file may
+be:
+
+- Relative to the import path:
+
+```shell
+  protoc --go_out=. inputs/x.proto
+  # writes ./github.com/golang/protobuf/p/x.pb.go
+```
+
+  (This can work well with `--go_out=$GOPATH`.)
+
+- Relative to the input file:
+
+```shell
+protoc --go_out=paths=source_relative:. inputs/x.proto
+# generate ./inputs/x.pb.go
+```
+
+## Generated code ##
+
+The package comment for the proto library contains text describing
+the interface provided in Go for protocol buffers. Here is an edited
+version.
+
+The proto package converts data structures to and from the
+wire format of protocol buffers.  It works in concert with the
+Go source code generated for .proto files by the protocol compiler.
+
+A summary of the properties of the protocol buffer interface
+for a protocol buffer variable v:
+
+  - Names are turned from camel_case to CamelCase for export.
+  - There are no methods on v to set fields; just treat
+  	them as structure fields.
+  - There are getters that return a field's value if set,
+	and return the field's default value if unset.
+	The getters work even if the receiver is a nil message.
+  - The zero value for a struct is its correct initialization state.
+	All desired fields must be set before marshaling.
+  - A Reset() method will restore a protobuf struct to its zero state.
+  - Non-repeated fields are pointers to the values; nil means unset.
+	That is, optional or required field int32 f becomes F *int32.
+  - Repeated fields are slices.
+  - Helper functions are available to aid the setting of fields.
+	Helpers for getting values are superseded by the
+	GetFoo methods and their use is deprecated.
+		msg.Foo = proto.String("hello") // set field
+  - Constants are defined to hold the default values of all fields that
+	have them.  They have the form Default_StructName_FieldName.
+	Because the getter methods handle defaulted values,
+	direct use of these constants should be rare.
+  - Enums are given type names and maps from names to values.
+	Enum values are prefixed with the enum's type name. Enum types have
+	a String method, and a Enum method to assist in message construction.
+  - Nested groups and enums have type names prefixed with the name of
+  	the surrounding message type.
+  - Extensions are given descriptor names that start with E_,
+	followed by an underscore-delimited list of the nested messages
+	that contain it (if any) followed by the CamelCased name of the
+	extension field itself.  HasExtension, ClearExtension, GetExtension
+	and SetExtension are functions for manipulating extensions.
+  - Oneof field sets are given a single field in their message,
+	with distinguished wrapper types for each possible field value.
+  - Marshal and Unmarshal are functions to encode and decode the wire format.
+
+When the .proto file specifies `syntax="proto3"`, there are some differences:
+
+  - Non-repeated fields of non-message type are values instead of pointers.
+  - Enum types do not get an Enum method.
+
+Consider file test.proto, containing
+
+```proto
+	syntax = "proto2";
+	package example;
+
+	enum FOO { X = 17; };
+
+	message Test {
+	  required string label = 1;
+	  optional int32 type = 2 [default=77];
+	  repeated int64 reps = 3;
+	}
+```
+
+To create and play with a Test object from the example package,
+
+```go
+	package main
+
+	import (
+		"log"
+
+		"github.com/golang/protobuf/proto"
+		"path/to/example"
+	)
+
+	func main() {
+		test := &example.Test{
+			Label: proto.String("hello"),
+			Type:  proto.Int32(17),
+			Reps:  []int64{1, 2, 3},
+		}
+		data, err := proto.Marshal(test)
+		if err != nil {
+			log.Fatal("marshaling error: ", err)
+		}
+		newTest := &example.Test{}
+		err = proto.Unmarshal(data, newTest)
+		if err != nil {
+			log.Fatal("unmarshaling error: ", err)
+		}
+		// Now test and newTest contain the same data.
+		if test.GetLabel() != newTest.GetLabel() {
+			log.Fatalf("data mismatch %q != %q", test.GetLabel(), newTest.GetLabel())
+		}
+		// etc.
+	}
+```
+
+## Parameters ##
+
+To pass extra parameters to the plugin, use a comma-separated
+parameter list separated from the output directory by a colon:
+
+	protoc --go_out=plugins=grpc,import_path=mypackage:. *.proto
+
+- `paths=(import | source_relative)` - specifies how the paths of
+  generated files are structured. See the "Packages and imports paths"
+  section above. The default is `import`.
+- `plugins=plugin1+plugin2` - specifies the list of sub-plugins to
+  load. The only plugin in this repo is `grpc`.
+- `Mfoo/bar.proto=quux/shme` - declares that foo/bar.proto is
+  associated with Go package quux/shme.  This is subject to the
+  import_prefix parameter.
+
+The following parameters are deprecated and should not be used:
+
+- `import_prefix=xxx` - a prefix that is added onto the beginning of
+  all imports.
+- `import_path=foo/bar` - used as the package if no input files
+  declare `go_package`. If it contains slashes, everything up to the
+  rightmost slash is ignored.
+
+## gRPC Support ##
+
+If a proto file specifies RPC services, protoc-gen-go can be instructed to
+generate code compatible with gRPC (http://www.grpc.io/). To do this, pass
+the `plugins` parameter to protoc-gen-go; the usual way is to insert it into
+the --go_out argument to protoc:
+
+	protoc --go_out=plugins=grpc:. *.proto
+
+## Compatibility ##
+
+The library and the generated code are expected to be stable over time.
+However, we reserve the right to make breaking changes without notice for the
+following reasons:
+
+- Security. A security issue in the specification or implementation may come to
+  light whose resolution requires breaking compatibility. We reserve the right
+  to address such security issues.
+- Unspecified behavior.  There are some aspects of the Protocol Buffers
+  specification that are undefined.  Programs that depend on such unspecified
+  behavior may break in future releases.
+- Specification errors or changes. If it becomes necessary to address an
+  inconsistency, incompleteness, or change in the Protocol Buffers
+  specification, resolving the issue could affect the meaning or legality of
+  existing programs.  We reserve the right to address such issues, including
+  updating the implementations.
+- Bugs.  If the library has a bug that violates the specification, a program
+  that depends on the buggy behavior may break if the bug is fixed.  We reserve
+  the right to fix such bugs.
+- Adding methods or fields to generated structs.  These may conflict with field
+  names that already exist in a schema, causing applications to break.  When the
+  code generator encounters a field in the schema that would collide with a
+  generated field or method name, the code generator will append an underscore
+  to the generated field or method name.
+- Adding, removing, or changing methods or fields in generated structs that
+  start with `XXX`.  These parts of the generated code are exported out of
+  necessity, but should not be considered part of the public API.
+- Adding, removing, or changing unexported symbols in generated code.
 
 Any breaking changes outside of these will be announced 6 months in advance to
-[protobuf@googlegroups.com](https://groups.google.com/forum/#!forum/protobuf).
+protobuf@googlegroups.com.
 
-Users should use generated code produced by a version of
-[`protoc-gen-go`](https://pkg.go.dev/google.golang.org/protobuf/cmd/protoc-gen-go)
-that is identical to the runtime version provided by the
-[protobuf module](https://pkg.go.dev/mod/google.golang.org/protobuf). This
-project promises that the runtime remains compatible with code produced by a
-version of the generator that is no older than 1 year from the version of the
-runtime used, according to the release dates of the minor version. Generated
-code is expected to use a runtime version that is at least as new as the
-generator used to produce it. Generated code contains references to
-[`protoimpl.EnforceVersion`](https://pkg.go.dev/google.golang.org/protobuf/runtime/protoimpl?tab=doc#EnforceVersion)
-to statically ensure that the generated code and runtime do not drift
-sufficiently far apart.
+You should, whenever possible, use generated code created by the `protoc-gen-go`
+tool built at the same commit as the `proto` package.  The `proto` package
+declares package-level constants in the form `ProtoPackageIsVersionX`.
+Application code and generated code may depend on one of these constants to
+ensure that compilation will fail if the available version of the proto library
+is too old.  Whenever we make a change to the generated code that requires newer
+library support, in the same commit we will increment the version number of the
+generated code and declare a new package-level constant whose name incorporates
+the latest version number.  Removing a compatibility constant is considered a
+breaking change and would be subject to the announcement policy stated above.
 
-## Historical legacy
-
-This project is the second major revision
-([released in 2020](https://blog.golang.org/a-new-go-api-for-protocol-buffers))
-of the Go protocol buffer API implemented by the
-[`google.golang.org/protobuf`](https://pkg.go.dev/mod/google.golang.org/protobuf)
-module. The first major version
-([released publicly in 2010](https://blog.golang.org/third-party-libraries-goprotobuf-and))
-is implemented by the
-[`github.com/golang/protobuf`](https://pkg.go.dev/mod/github.com/golang/protobuf)
-module.
-
-The first version predates the release of Go 1 by several years. It has a long
-history as one of the first core pieces of infrastructure software ever written
-in Go. As such, the Go protobuf project was one of many pioneers for determining
-what the Go language should even look like and what would eventually be
-considered good design patterns and “idiomatic” Go (by simultaneously being
-both positive and negative examples of it).
-
-Consider the changing signature of the `proto.Unmarshal` function as an example
-of Go language and library evolution throughout the life of this project:
-
-```go
-// 2007/09/25 - Conception of Go
-
-// 2008/11/12
-export func UnMarshal(r io.Read, pb_e reflect.Empty) *os.Error
-
-// 2008/11/13
-export func UnMarshal(buf *[]byte, pb_e reflect.Empty) *os.Error
-
-// 2008/11/24
-export func UnMarshal(buf *[]byte, pb_e interface{}) *os.Error
-
-// 2008/12/18
-export func UnMarshal(buf []byte, pb_e interface{}) *os.Error
-
-// 2009/01/20
-func UnMarshal(buf []byte, pb_e interface{}) *os.Error
-
-// 2009/04/17
-func UnMarshal(buf []byte, pb_e interface{}) os.Error
-
-// 2009/05/22
-func Unmarshal(buf []byte, pb_e interface{}) os.Error
-
-// 2011/11/03
-func Unmarshal(buf []byte, pb_e interface{}) error
-
-// 2012/03/28 - Release of Go 1
-
-// 2012/06/12
-func Unmarshal(buf []byte, pb Message) error
-```
-
-These changes demonstrate the difficulty of determining what the right API is
-for any new technology. It takes time multiplied by many users to determine what
-is best; even then, “best” is often still somewhere over the horizon.
-
-The change on June 6th, 2012 added a degree of type-safety to Go protobufs by
-declaring a new interface that all protobuf messages were required to implement:
-
-```go
-type Message interface {
-   Reset()
-   String() string
-   ProtoMessage()
-}
-```
-
-This interface reduced the set of types that can be passed to `proto.Unmarshal`
-from the universal set of all possible Go types to those with a special
-`ProtoMessage` marker method. The intention of this change is to limit the
-protobuf API to only operate on protobuf data types (i.e., protobuf messages).
-For example, there is no sensible operation if a Go channel were passed to the
-protobuf API as a channel cannot be serialized. The restricted interface would
-prevent that.
-
-This interface does not behaviorally describe what a protobuf message is, but
-acts as a marker with an undocumented expectation that protobuf messages must be
-a Go struct with a specific layout of fields with formatted tags. This
-expectation is not statically enforced by the Go language, for it is an
-implementation detail checked dynamically at runtime using Go reflection. Back
-in 2012, the only types with this marker were those generated by
-`protoc-gen-go`. Since `protoc-gen-go` would always generate messages with the
-proper layout of fields, this was deemed an acceptable and dramatic improvement
-over `interface{}`.
-
-Over the next 10 years,
-[use of Go would skyrocket](https://blog.golang.org/10years) and use of
-protobufs in Go would skyrocket as well. With increased popularity also came
-more diverse usages and requirements for Go protobufs and an increased number of
-custom `proto.Message` implementations that were not generated by
-`protoc-gen-go`.
-
-The increasingly diverse ecosystem of Go types implementing the `proto.Message`
-interface led to incompatibilities, which often occurred when:
-
-*   **Passing custom `proto.Message` types to the protobuf APIs**: A concrete
-    message implementation might work with some top-level functions (e.g.,
-    `proto.Marshal`), but cause others (e.g., `proto.Equal`) to choke and panic.
-    This occurs because the type only had partial support for being an actual
-    message by only implementing the `proto.Marshaler` interface or having
-    malformed struct field tags that happened to work with one function, but not
-    another.
-
-*   **Using Go reflection on any `proto.Message` types**: A common desire is to
-    write general-purpose code that operates on any protobuf message. For
-    example, a microservice might want to populate a `trace_id` field if it is
-    present in a message. To accomplish this, one would use Go reflection to
-    introspect the message type, and assume it were a pointer to a Go struct
-    with a field named `TraceId` (as would be commonly produced by
-    `protoc-gen-go`). If the concrete message type did not match this
-    expectation, it either failed to work or even resulted in a panic. Such was
-    the case for concrete message types that might be backed by a Go map instead
-    of a Go struct.
-
-Both of these issues are solved by following the idiom that _interfaces should
-describe behavior, not data_. This means that the interface itself should
-provide sufficient functionality through its methods that users can introspect
-and interact with all aspects of a protobuf message through a principled API.
-This feature is called _protobuf reflection_. Just as how Go reflection provides
-an API for programmatically interacting with any arbitrary Go value, protobuf
-reflection provides an API for programmatically interacting with any arbitrary
-protobuf message.
-
-Since an interface cannot be extended in a backwards compatible way, this
-suggested the need for a new major version that defines a new `proto.Message`
-interface:
-
-```go
-type Message interface {
-    ProtoReflect() protoreflect.Message
-}
-```
-
-The new
-[`proto.Message`](https://pkg.go.dev/google.golang.org/protobuf/proto?tab=doc#Message)
-interface contains a single `ProtoReflect` method that returns a
-[`protoreflect.Message`](https://pkg.go.dev/google.golang.org/protobuf/reflect/protoreflect?tab=doc#Message),
-which is a reflective view over a protobuf message. In addition to making a
-breaking change to the `proto.Message` interface, we took this opportunity to
-cleanup the supporting functionality that operate on a `proto.Message`, split up
-complicated functionality apart into manageable packages, and to hide
-implementation details away from the public API.
-
-The goal for this major revision is to improve upon all the benefits of, while
-addressing all the shortcomings of the old API. We hope that it will serve the
-Go ecosystem well for the next 10 years and beyond.
+The `protoc-gen-go/generator` package exposes a plugin interface,
+which is used by the gRPC code generation. This interface is not
+supported and is subject to incompatible changes without notice.
diff --git a/android/android.go b/android/android.go
deleted file mode 100644
index a06e657..0000000
--- a/android/android.go
+++ /dev/null
@@ -1,20 +0,0 @@
-// Package android provides android-specific extensions to the upstream module.
-package android
-
-import "google.golang.org/protobuf/internal/detrand"
-
-// DisableRand disables the randomness introduced into JSON and Text encodings.
-// This function is not concurrent-safe and must be called during program init.
-//
-// This does not guarantee long term stability of the JSON/Text encodings, but
-// that isn't necessary in Soong or similar build tools. They are only
-// interested in longer stable periods, as any change in the output may
-// introduce significant extra building during incremental builds. That price
-// is expected when upgrading library versions (and will be paid then even
-// without a format change, as the reader and writer packages will often both
-// change), but is not desired when changing other parts of the executables.
-//
-// See https://github.com/golang/protobuf/issues/1121 for more discussion.
-func DisableRand() {
-	detrand.Disable()
-}
diff --git a/cmd/protoc-gen-go/annotation_test.go b/cmd/protoc-gen-go/annotation_test.go
deleted file mode 100644
index c0f3c07..0000000
--- a/cmd/protoc-gen-go/annotation_test.go
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-import (
-	"bytes"
-	"io/ioutil"
-	"testing"
-
-	"google.golang.org/protobuf/encoding/prototext"
-	"google.golang.org/protobuf/internal/genid"
-	"google.golang.org/protobuf/proto"
-
-	"google.golang.org/protobuf/types/descriptorpb"
-)
-
-func TestAnnotations(t *testing.T) {
-	sourceFile, err := ioutil.ReadFile("testdata/annotations/annotations.pb.go")
-	if err != nil {
-		t.Fatal(err)
-	}
-	metaFile, err := ioutil.ReadFile("testdata/annotations/annotations.pb.go.meta")
-	if err != nil {
-		t.Fatal(err)
-	}
-	gotInfo := &descriptorpb.GeneratedCodeInfo{}
-	if err := prototext.Unmarshal(metaFile, gotInfo); err != nil {
-		t.Fatalf("can't parse meta file: %v", err)
-	}
-
-	wantInfo := &descriptorpb.GeneratedCodeInfo{}
-	for _, want := range []struct {
-		prefix, text, suffix string
-		path                 []int32
-	}{{
-		"type ", "AnnotationsTestEnum", " int32",
-		[]int32{int32(genid.FileDescriptorProto_EnumType_field_number), 0},
-	}, {
-		"\t", "AnnotationsTestEnum_ANNOTATIONS_TEST_ENUM_VALUE", " AnnotationsTestEnum = 0",
-		[]int32{int32(genid.FileDescriptorProto_EnumType_field_number), 0, int32(genid.EnumDescriptorProto_Value_field_number), 0},
-	}, {
-		"type ", "AnnotationsTestMessage", " struct {",
-		[]int32{int32(genid.FileDescriptorProto_MessageType_field_number), 0},
-	}, {
-		"\t", "AnnotationsTestField", " ",
-		[]int32{int32(genid.FileDescriptorProto_MessageType_field_number), 0, int32(genid.DescriptorProto_Field_field_number), 0},
-	}, {
-		"func (x *AnnotationsTestMessage) ", "GetAnnotationsTestField", "() string {",
-		[]int32{int32(genid.FileDescriptorProto_MessageType_field_number), 0, int32(genid.DescriptorProto_Field_field_number), 0},
-	}} {
-		s := want.prefix + want.text + want.suffix
-		pos := bytes.Index(sourceFile, []byte(s))
-		if pos < 0 {
-			t.Errorf("source file does not contain: %v", s)
-			continue
-		}
-		begin := pos + len(want.prefix)
-		end := begin + len(want.text)
-		wantInfo.Annotation = append(wantInfo.Annotation, &descriptorpb.GeneratedCodeInfo_Annotation{
-			Path:       want.path,
-			Begin:      proto.Int32(int32(begin)),
-			End:        proto.Int32(int32(end)),
-			SourceFile: proto.String("cmd/protoc-gen-go/testdata/annotations/annotations.proto"),
-		})
-	}
-	if !proto.Equal(gotInfo, wantInfo) {
-		t.Errorf("unexpected annotations for annotations.proto; got:\n%v\nwant:\n%v", gotInfo, wantInfo)
-	}
-}
diff --git a/cmd/protoc-gen-go/internal_gengo/init.go b/cmd/protoc-gen-go/internal_gengo/init.go
deleted file mode 100644
index 369df13..0000000
--- a/cmd/protoc-gen-go/internal_gengo/init.go
+++ /dev/null
@@ -1,168 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package internal_gengo
-
-import (
-	"unicode"
-	"unicode/utf8"
-
-	"google.golang.org/protobuf/compiler/protogen"
-	"google.golang.org/protobuf/encoding/protowire"
-
-	"google.golang.org/protobuf/types/descriptorpb"
-)
-
-type fileInfo struct {
-	*protogen.File
-
-	allEnums      []*enumInfo
-	allMessages   []*messageInfo
-	allExtensions []*extensionInfo
-
-	allEnumsByPtr         map[*enumInfo]int    // value is index into allEnums
-	allMessagesByPtr      map[*messageInfo]int // value is index into allMessages
-	allMessageFieldsByPtr map[*messageInfo]*structFields
-
-	// needRawDesc specifies whether the generator should emit logic to provide
-	// the legacy raw descriptor in GZIP'd form.
-	// This is updated by enum and message generation logic as necessary,
-	// and checked at the end of file generation.
-	needRawDesc bool
-}
-
-type structFields struct {
-	count      int
-	unexported map[int]string
-}
-
-func (sf *structFields) append(name string) {
-	if r, _ := utf8.DecodeRuneInString(name); !unicode.IsUpper(r) {
-		if sf.unexported == nil {
-			sf.unexported = make(map[int]string)
-		}
-		sf.unexported[sf.count] = name
-	}
-	sf.count++
-}
-
-func newFileInfo(file *protogen.File) *fileInfo {
-	f := &fileInfo{File: file}
-
-	// Collect all enums, messages, and extensions in "flattened ordering".
-	// See filetype.TypeBuilder.
-	var walkMessages func([]*protogen.Message, func(*protogen.Message))
-	walkMessages = func(messages []*protogen.Message, f func(*protogen.Message)) {
-		for _, m := range messages {
-			f(m)
-			walkMessages(m.Messages, f)
-		}
-	}
-	initEnumInfos := func(enums []*protogen.Enum) {
-		for _, enum := range enums {
-			f.allEnums = append(f.allEnums, newEnumInfo(f, enum))
-		}
-	}
-	initMessageInfos := func(messages []*protogen.Message) {
-		for _, message := range messages {
-			f.allMessages = append(f.allMessages, newMessageInfo(f, message))
-		}
-	}
-	initExtensionInfos := func(extensions []*protogen.Extension) {
-		for _, extension := range extensions {
-			f.allExtensions = append(f.allExtensions, newExtensionInfo(f, extension))
-		}
-	}
-	initEnumInfos(f.Enums)
-	initMessageInfos(f.Messages)
-	initExtensionInfos(f.Extensions)
-	walkMessages(f.Messages, func(m *protogen.Message) {
-		initEnumInfos(m.Enums)
-		initMessageInfos(m.Messages)
-		initExtensionInfos(m.Extensions)
-	})
-
-	// Derive a reverse mapping of enum and message pointers to their index
-	// in allEnums and allMessages.
-	if len(f.allEnums) > 0 {
-		f.allEnumsByPtr = make(map[*enumInfo]int)
-		for i, e := range f.allEnums {
-			f.allEnumsByPtr[e] = i
-		}
-	}
-	if len(f.allMessages) > 0 {
-		f.allMessagesByPtr = make(map[*messageInfo]int)
-		f.allMessageFieldsByPtr = make(map[*messageInfo]*structFields)
-		for i, m := range f.allMessages {
-			f.allMessagesByPtr[m] = i
-			f.allMessageFieldsByPtr[m] = new(structFields)
-		}
-	}
-
-	return f
-}
-
-type enumInfo struct {
-	*protogen.Enum
-
-	genJSONMethod    bool
-	genRawDescMethod bool
-}
-
-func newEnumInfo(f *fileInfo, enum *protogen.Enum) *enumInfo {
-	e := &enumInfo{Enum: enum}
-	e.genJSONMethod = true
-	e.genRawDescMethod = true
-	return e
-}
-
-type messageInfo struct {
-	*protogen.Message
-
-	genRawDescMethod  bool
-	genExtRangeMethod bool
-
-	isTracked bool
-	hasWeak   bool
-}
-
-func newMessageInfo(f *fileInfo, message *protogen.Message) *messageInfo {
-	m := &messageInfo{Message: message}
-	m.genRawDescMethod = true
-	m.genExtRangeMethod = true
-	m.isTracked = isTrackedMessage(m)
-	for _, field := range m.Fields {
-		m.hasWeak = m.hasWeak || field.Desc.IsWeak()
-	}
-	return m
-}
-
-// isTrackedMessage reports whether field tracking is enabled on the message.
-func isTrackedMessage(m *messageInfo) (tracked bool) {
-	const trackFieldUse_fieldNumber = 37383685
-
-	// Decode the option from unknown fields to avoid a dependency on the
-	// annotation proto from protoc-gen-go.
-	b := m.Desc.Options().(*descriptorpb.MessageOptions).ProtoReflect().GetUnknown()
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		if num == trackFieldUse_fieldNumber && typ == protowire.VarintType {
-			v, _ := protowire.ConsumeVarint(b)
-			tracked = protowire.DecodeBool(v)
-		}
-		m := protowire.ConsumeFieldValue(num, typ, b)
-		b = b[m:]
-	}
-	return tracked
-}
-
-type extensionInfo struct {
-	*protogen.Extension
-}
-
-func newExtensionInfo(f *fileInfo, extension *protogen.Extension) *extensionInfo {
-	x := &extensionInfo{Extension: extension}
-	return x
-}
diff --git a/cmd/protoc-gen-go/internal_gengo/main.go b/cmd/protoc-gen-go/internal_gengo/main.go
deleted file mode 100644
index d34efa9..0000000
--- a/cmd/protoc-gen-go/internal_gengo/main.go
+++ /dev/null
@@ -1,884 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package internal_gengo is internal to the protobuf module.
-package internal_gengo
-
-import (
-	"fmt"
-	"go/ast"
-	"go/parser"
-	"go/token"
-	"math"
-	"strconv"
-	"strings"
-	"unicode"
-	"unicode/utf8"
-
-	"google.golang.org/protobuf/compiler/protogen"
-	"google.golang.org/protobuf/internal/encoding/tag"
-	"google.golang.org/protobuf/internal/genid"
-	"google.golang.org/protobuf/internal/version"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/runtime/protoimpl"
-
-	"google.golang.org/protobuf/types/descriptorpb"
-	"google.golang.org/protobuf/types/pluginpb"
-)
-
-// SupportedFeatures reports the set of supported protobuf language features.
-var SupportedFeatures = uint64(pluginpb.CodeGeneratorResponse_FEATURE_PROTO3_OPTIONAL)
-
-// GenerateVersionMarkers specifies whether to generate version markers.
-var GenerateVersionMarkers = true
-
-// Standard library dependencies.
-const (
-	base64Package  = protogen.GoImportPath("encoding/base64")
-	mathPackage    = protogen.GoImportPath("math")
-	reflectPackage = protogen.GoImportPath("reflect")
-	sortPackage    = protogen.GoImportPath("sort")
-	stringsPackage = protogen.GoImportPath("strings")
-	syncPackage    = protogen.GoImportPath("sync")
-	timePackage    = protogen.GoImportPath("time")
-	utf8Package    = protogen.GoImportPath("unicode/utf8")
-)
-
-// Protobuf library dependencies.
-//
-// These are declared as an interface type so that they can be more easily
-// patched to support unique build environments that impose restrictions
-// on the dependencies of generated source code.
-var (
-	protoPackage         goImportPath = protogen.GoImportPath("google.golang.org/protobuf/proto")
-	protoifacePackage    goImportPath = protogen.GoImportPath("google.golang.org/protobuf/runtime/protoiface")
-	protoimplPackage     goImportPath = protogen.GoImportPath("google.golang.org/protobuf/runtime/protoimpl")
-	protojsonPackage     goImportPath = protogen.GoImportPath("google.golang.org/protobuf/encoding/protojson")
-	protoreflectPackage  goImportPath = protogen.GoImportPath("google.golang.org/protobuf/reflect/protoreflect")
-	protoregistryPackage goImportPath = protogen.GoImportPath("google.golang.org/protobuf/reflect/protoregistry")
-)
-
-type goImportPath interface {
-	String() string
-	Ident(string) protogen.GoIdent
-}
-
-// GenerateFile generates the contents of a .pb.go file.
-func GenerateFile(gen *protogen.Plugin, file *protogen.File) *protogen.GeneratedFile {
-	filename := file.GeneratedFilenamePrefix + ".pb.go"
-	g := gen.NewGeneratedFile(filename, file.GoImportPath)
-	f := newFileInfo(file)
-
-	genStandaloneComments(g, f, int32(genid.FileDescriptorProto_Syntax_field_number))
-	genGeneratedHeader(gen, g, f)
-	genStandaloneComments(g, f, int32(genid.FileDescriptorProto_Package_field_number))
-
-	packageDoc := genPackageKnownComment(f)
-	g.P(packageDoc, "package ", f.GoPackageName)
-	g.P()
-
-	// Emit a static check that enforces a minimum version of the proto package.
-	if GenerateVersionMarkers {
-		g.P("const (")
-		g.P("// Verify that this generated code is sufficiently up-to-date.")
-		g.P("_ = ", protoimplPackage.Ident("EnforceVersion"), "(", protoimpl.GenVersion, " - ", protoimplPackage.Ident("MinVersion"), ")")
-		g.P("// Verify that runtime/protoimpl is sufficiently up-to-date.")
-		g.P("_ = ", protoimplPackage.Ident("EnforceVersion"), "(", protoimplPackage.Ident("MaxVersion"), " - ", protoimpl.GenVersion, ")")
-		g.P(")")
-		g.P()
-	}
-
-	for i, imps := 0, f.Desc.Imports(); i < imps.Len(); i++ {
-		genImport(gen, g, f, imps.Get(i))
-	}
-	for _, enum := range f.allEnums {
-		genEnum(g, f, enum)
-	}
-	for _, message := range f.allMessages {
-		genMessage(g, f, message)
-	}
-	genExtensions(g, f)
-
-	genReflectFileDescriptor(gen, g, f)
-
-	return g
-}
-
-// genStandaloneComments prints all leading comments for a FileDescriptorProto
-// location identified by the field number n.
-func genStandaloneComments(g *protogen.GeneratedFile, f *fileInfo, n int32) {
-	loc := f.Desc.SourceLocations().ByPath(protoreflect.SourcePath{n})
-	for _, s := range loc.LeadingDetachedComments {
-		g.P(protogen.Comments(s))
-		g.P()
-	}
-	if s := loc.LeadingComments; s != "" {
-		g.P(protogen.Comments(s))
-		g.P()
-	}
-}
-
-func genGeneratedHeader(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo) {
-	g.P("// Code generated by protoc-gen-go. DO NOT EDIT.")
-
-	if GenerateVersionMarkers {
-		g.P("// versions:")
-		protocGenGoVersion := version.String()
-		protocVersion := "(unknown)"
-		if v := gen.Request.GetCompilerVersion(); v != nil {
-			protocVersion = fmt.Sprintf("v%v.%v.%v", v.GetMajor(), v.GetMinor(), v.GetPatch())
-			if s := v.GetSuffix(); s != "" {
-				protocVersion += "-" + s
-			}
-		}
-		g.P("// \tprotoc-gen-go ", protocGenGoVersion)
-		g.P("// \tprotoc        ", protocVersion)
-	}
-
-	if f.Proto.GetOptions().GetDeprecated() {
-		g.P("// ", f.Desc.Path(), " is a deprecated file.")
-	} else {
-		g.P("// source: ", f.Desc.Path())
-	}
-	g.P()
-}
-
-func genImport(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo, imp protoreflect.FileImport) {
-	impFile, ok := gen.FilesByPath[imp.Path()]
-	if !ok {
-		return
-	}
-	if impFile.GoImportPath == f.GoImportPath {
-		// Don't generate imports or aliases for types in the same Go package.
-		return
-	}
-	// Generate imports for all non-weak dependencies, even if they are not
-	// referenced, because other code and tools depend on having the
-	// full transitive closure of protocol buffer types in the binary.
-	if !imp.IsWeak {
-		g.Import(impFile.GoImportPath)
-	}
-	if !imp.IsPublic {
-		return
-	}
-
-	// Generate public imports by generating the imported file, parsing it,
-	// and extracting every symbol that should receive a forwarding declaration.
-	impGen := GenerateFile(gen, impFile)
-	impGen.Skip()
-	b, err := impGen.Content()
-	if err != nil {
-		gen.Error(err)
-		return
-	}
-	fset := token.NewFileSet()
-	astFile, err := parser.ParseFile(fset, "", b, parser.ParseComments)
-	if err != nil {
-		gen.Error(err)
-		return
-	}
-	genForward := func(tok token.Token, name string, expr ast.Expr) {
-		// Don't import unexported symbols.
-		r, _ := utf8.DecodeRuneInString(name)
-		if !unicode.IsUpper(r) {
-			return
-		}
-		// Don't import the FileDescriptor.
-		if name == impFile.GoDescriptorIdent.GoName {
-			return
-		}
-		// Don't import decls referencing a symbol defined in another package.
-		// i.e., don't import decls which are themselves public imports:
-		//
-		//	type T = somepackage.T
-		if _, ok := expr.(*ast.SelectorExpr); ok {
-			return
-		}
-		g.P(tok, " ", name, " = ", impFile.GoImportPath.Ident(name))
-	}
-	g.P("// Symbols defined in public import of ", imp.Path(), ".")
-	g.P()
-	for _, decl := range astFile.Decls {
-		switch decl := decl.(type) {
-		case *ast.GenDecl:
-			for _, spec := range decl.Specs {
-				switch spec := spec.(type) {
-				case *ast.TypeSpec:
-					genForward(decl.Tok, spec.Name.Name, spec.Type)
-				case *ast.ValueSpec:
-					for i, name := range spec.Names {
-						var expr ast.Expr
-						if i < len(spec.Values) {
-							expr = spec.Values[i]
-						}
-						genForward(decl.Tok, name.Name, expr)
-					}
-				case *ast.ImportSpec:
-				default:
-					panic(fmt.Sprintf("can't generate forward for spec type %T", spec))
-				}
-			}
-		}
-	}
-	g.P()
-}
-
-func genEnum(g *protogen.GeneratedFile, f *fileInfo, e *enumInfo) {
-	// Enum type declaration.
-	g.Annotate(e.GoIdent.GoName, e.Location)
-	leadingComments := appendDeprecationSuffix(e.Comments.Leading,
-		e.Desc.Options().(*descriptorpb.EnumOptions).GetDeprecated())
-	g.P(leadingComments,
-		"type ", e.GoIdent, " int32")
-
-	// Enum value constants.
-	g.P("const (")
-	for _, value := range e.Values {
-		g.Annotate(value.GoIdent.GoName, value.Location)
-		leadingComments := appendDeprecationSuffix(value.Comments.Leading,
-			value.Desc.Options().(*descriptorpb.EnumValueOptions).GetDeprecated())
-		g.P(leadingComments,
-			value.GoIdent, " ", e.GoIdent, " = ", value.Desc.Number(),
-			trailingComment(value.Comments.Trailing))
-	}
-	g.P(")")
-	g.P()
-
-	// Enum value maps.
-	g.P("// Enum value maps for ", e.GoIdent, ".")
-	g.P("var (")
-	g.P(e.GoIdent.GoName+"_name", " = map[int32]string{")
-	for _, value := range e.Values {
-		duplicate := ""
-		if value.Desc != e.Desc.Values().ByNumber(value.Desc.Number()) {
-			duplicate = "// Duplicate value: "
-		}
-		g.P(duplicate, value.Desc.Number(), ": ", strconv.Quote(string(value.Desc.Name())), ",")
-	}
-	g.P("}")
-	g.P(e.GoIdent.GoName+"_value", " = map[string]int32{")
-	for _, value := range e.Values {
-		g.P(strconv.Quote(string(value.Desc.Name())), ": ", value.Desc.Number(), ",")
-	}
-	g.P("}")
-	g.P(")")
-	g.P()
-
-	// Enum method.
-	//
-	// NOTE: A pointer value is needed to represent presence in proto2.
-	// Since a proto2 message can reference a proto3 enum, it is useful to
-	// always generate this method (even on proto3 enums) to support that case.
-	g.P("func (x ", e.GoIdent, ") Enum() *", e.GoIdent, " {")
-	g.P("p := new(", e.GoIdent, ")")
-	g.P("*p = x")
-	g.P("return p")
-	g.P("}")
-	g.P()
-
-	// String method.
-	g.P("func (x ", e.GoIdent, ") String() string {")
-	g.P("return ", protoimplPackage.Ident("X"), ".EnumStringOf(x.Descriptor(), ", protoreflectPackage.Ident("EnumNumber"), "(x))")
-	g.P("}")
-	g.P()
-
-	genEnumReflectMethods(g, f, e)
-
-	// UnmarshalJSON method.
-	if e.genJSONMethod && e.Desc.Syntax() == protoreflect.Proto2 {
-		g.P("// Deprecated: Do not use.")
-		g.P("func (x *", e.GoIdent, ") UnmarshalJSON(b []byte) error {")
-		g.P("num, err := ", protoimplPackage.Ident("X"), ".UnmarshalJSONEnum(x.Descriptor(), b)")
-		g.P("if err != nil {")
-		g.P("return err")
-		g.P("}")
-		g.P("*x = ", e.GoIdent, "(num)")
-		g.P("return nil")
-		g.P("}")
-		g.P()
-	}
-
-	// EnumDescriptor method.
-	if e.genRawDescMethod {
-		var indexes []string
-		for i := 1; i < len(e.Location.Path); i += 2 {
-			indexes = append(indexes, strconv.Itoa(int(e.Location.Path[i])))
-		}
-		g.P("// Deprecated: Use ", e.GoIdent, ".Descriptor instead.")
-		g.P("func (", e.GoIdent, ") EnumDescriptor() ([]byte, []int) {")
-		g.P("return ", rawDescVarName(f), "GZIP(), []int{", strings.Join(indexes, ","), "}")
-		g.P("}")
-		g.P()
-		f.needRawDesc = true
-	}
-}
-
-func genMessage(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo) {
-	if m.Desc.IsMapEntry() {
-		return
-	}
-
-	// Message type declaration.
-	g.Annotate(m.GoIdent.GoName, m.Location)
-	leadingComments := appendDeprecationSuffix(m.Comments.Leading,
-		m.Desc.Options().(*descriptorpb.MessageOptions).GetDeprecated())
-	g.P(leadingComments,
-		"type ", m.GoIdent, " struct {")
-	genMessageFields(g, f, m)
-	g.P("}")
-	g.P()
-
-	genMessageKnownFunctions(g, f, m)
-	genMessageDefaultDecls(g, f, m)
-	genMessageMethods(g, f, m)
-	genMessageOneofWrapperTypes(g, f, m)
-}
-
-func genMessageFields(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo) {
-	sf := f.allMessageFieldsByPtr[m]
-	genMessageInternalFields(g, f, m, sf)
-	for _, field := range m.Fields {
-		genMessageField(g, f, m, field, sf)
-	}
-}
-
-func genMessageInternalFields(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo, sf *structFields) {
-	g.P(genid.State_goname, " ", protoimplPackage.Ident("MessageState"))
-	sf.append(genid.State_goname)
-	g.P(genid.SizeCache_goname, " ", protoimplPackage.Ident("SizeCache"))
-	sf.append(genid.SizeCache_goname)
-	if m.hasWeak {
-		g.P(genid.WeakFields_goname, " ", protoimplPackage.Ident("WeakFields"))
-		sf.append(genid.WeakFields_goname)
-	}
-	g.P(genid.UnknownFields_goname, " ", protoimplPackage.Ident("UnknownFields"))
-	sf.append(genid.UnknownFields_goname)
-	if m.Desc.ExtensionRanges().Len() > 0 {
-		g.P(genid.ExtensionFields_goname, " ", protoimplPackage.Ident("ExtensionFields"))
-		sf.append(genid.ExtensionFields_goname)
-	}
-	if sf.count > 0 {
-		g.P()
-	}
-}
-
-func genMessageField(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo, field *protogen.Field, sf *structFields) {
-	if oneof := field.Oneof; oneof != nil && !oneof.Desc.IsSynthetic() {
-		// It would be a bit simpler to iterate over the oneofs below,
-		// but generating the field here keeps the contents of the Go
-		// struct in the same order as the contents of the source
-		// .proto file.
-		if oneof.Fields[0] != field {
-			return // only generate for first appearance
-		}
-
-		tags := structTags{
-			{"protobuf_oneof", string(oneof.Desc.Name())},
-		}
-		if m.isTracked {
-			tags = append(tags, gotrackTags...)
-		}
-
-		g.Annotate(m.GoIdent.GoName+"."+oneof.GoName, oneof.Location)
-		leadingComments := oneof.Comments.Leading
-		if leadingComments != "" {
-			leadingComments += "\n"
-		}
-		ss := []string{fmt.Sprintf(" Types that are assignable to %s:\n", oneof.GoName)}
-		for _, field := range oneof.Fields {
-			ss = append(ss, "\t*"+field.GoIdent.GoName+"\n")
-		}
-		leadingComments += protogen.Comments(strings.Join(ss, ""))
-		g.P(leadingComments,
-			oneof.GoName, " ", oneofInterfaceName(oneof), tags)
-		sf.append(oneof.GoName)
-		return
-	}
-	goType, pointer := fieldGoType(g, f, field)
-	if pointer {
-		goType = "*" + goType
-	}
-	tags := structTags{
-		{"protobuf", fieldProtobufTagValue(field)},
-		{"json", fieldJSONTagValue(field)},
-	}
-	if field.Desc.IsMap() {
-		key := field.Message.Fields[0]
-		val := field.Message.Fields[1]
-		tags = append(tags, structTags{
-			{"protobuf_key", fieldProtobufTagValue(key)},
-			{"protobuf_val", fieldProtobufTagValue(val)},
-		}...)
-	}
-	if m.isTracked {
-		tags = append(tags, gotrackTags...)
-	}
-
-	name := field.GoName
-	if field.Desc.IsWeak() {
-		name = genid.WeakFieldPrefix_goname + name
-	}
-	g.Annotate(m.GoIdent.GoName+"."+name, field.Location)
-	leadingComments := appendDeprecationSuffix(field.Comments.Leading,
-		field.Desc.Options().(*descriptorpb.FieldOptions).GetDeprecated())
-	g.P(leadingComments,
-		name, " ", goType, tags,
-		trailingComment(field.Comments.Trailing))
-	sf.append(field.GoName)
-}
-
-// genMessageDefaultDecls generates consts and vars holding the default
-// values of fields.
-func genMessageDefaultDecls(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo) {
-	var consts, vars []string
-	for _, field := range m.Fields {
-		if !field.Desc.HasDefault() {
-			continue
-		}
-		name := "Default_" + m.GoIdent.GoName + "_" + field.GoName
-		goType, _ := fieldGoType(g, f, field)
-		defVal := field.Desc.Default()
-		switch field.Desc.Kind() {
-		case protoreflect.StringKind:
-			consts = append(consts, fmt.Sprintf("%s = %s(%q)", name, goType, defVal.String()))
-		case protoreflect.BytesKind:
-			vars = append(vars, fmt.Sprintf("%s = %s(%q)", name, goType, defVal.Bytes()))
-		case protoreflect.EnumKind:
-			idx := field.Desc.DefaultEnumValue().Index()
-			val := field.Enum.Values[idx]
-			if val.GoIdent.GoImportPath == f.GoImportPath {
-				consts = append(consts, fmt.Sprintf("%s = %s", name, g.QualifiedGoIdent(val.GoIdent)))
-			} else {
-				// If the enum value is declared in a different Go package,
-				// reference it by number since the name may not be correct.
-				// See https://github.com/golang/protobuf/issues/513.
-				consts = append(consts, fmt.Sprintf("%s = %s(%d) // %s",
-					name, g.QualifiedGoIdent(field.Enum.GoIdent), val.Desc.Number(), g.QualifiedGoIdent(val.GoIdent)))
-			}
-		case protoreflect.FloatKind, protoreflect.DoubleKind:
-			if f := defVal.Float(); math.IsNaN(f) || math.IsInf(f, 0) {
-				var fn, arg string
-				switch f := defVal.Float(); {
-				case math.IsInf(f, -1):
-					fn, arg = g.QualifiedGoIdent(mathPackage.Ident("Inf")), "-1"
-				case math.IsInf(f, +1):
-					fn, arg = g.QualifiedGoIdent(mathPackage.Ident("Inf")), "+1"
-				case math.IsNaN(f):
-					fn, arg = g.QualifiedGoIdent(mathPackage.Ident("NaN")), ""
-				}
-				vars = append(vars, fmt.Sprintf("%s = %s(%s(%s))", name, goType, fn, arg))
-			} else {
-				consts = append(consts, fmt.Sprintf("%s = %s(%v)", name, goType, f))
-			}
-		default:
-			consts = append(consts, fmt.Sprintf("%s = %s(%v)", name, goType, defVal.Interface()))
-		}
-	}
-	if len(consts) > 0 {
-		g.P("// Default values for ", m.GoIdent, " fields.")
-		g.P("const (")
-		for _, s := range consts {
-			g.P(s)
-		}
-		g.P(")")
-	}
-	if len(vars) > 0 {
-		g.P("// Default values for ", m.GoIdent, " fields.")
-		g.P("var (")
-		for _, s := range vars {
-			g.P(s)
-		}
-		g.P(")")
-	}
-	g.P()
-}
-
-func genMessageMethods(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo) {
-	genMessageBaseMethods(g, f, m)
-	genMessageGetterMethods(g, f, m)
-	genMessageSetterMethods(g, f, m)
-}
-
-func genMessageBaseMethods(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo) {
-	// Reset method.
-	g.P("func (x *", m.GoIdent, ") Reset() {")
-	g.P("*x = ", m.GoIdent, "{}")
-	g.P("if ", protoimplPackage.Ident("UnsafeEnabled"), " {")
-	g.P("mi := &", messageTypesVarName(f), "[", f.allMessagesByPtr[m], "]")
-	g.P("ms := ", protoimplPackage.Ident("X"), ".MessageStateOf(", protoimplPackage.Ident("Pointer"), "(x))")
-	g.P("ms.StoreMessageInfo(mi)")
-	g.P("}")
-	g.P("}")
-	g.P()
-
-	// String method.
-	g.P("func (x *", m.GoIdent, ") String() string {")
-	g.P("return ", protoimplPackage.Ident("X"), ".MessageStringOf(x)")
-	g.P("}")
-	g.P()
-
-	// ProtoMessage method.
-	g.P("func (*", m.GoIdent, ") ProtoMessage() {}")
-	g.P()
-
-	// ProtoReflect method.
-	genMessageReflectMethods(g, f, m)
-
-	// Descriptor method.
-	if m.genRawDescMethod {
-		var indexes []string
-		for i := 1; i < len(m.Location.Path); i += 2 {
-			indexes = append(indexes, strconv.Itoa(int(m.Location.Path[i])))
-		}
-		g.P("// Deprecated: Use ", m.GoIdent, ".ProtoReflect.Descriptor instead.")
-		g.P("func (*", m.GoIdent, ") Descriptor() ([]byte, []int) {")
-		g.P("return ", rawDescVarName(f), "GZIP(), []int{", strings.Join(indexes, ","), "}")
-		g.P("}")
-		g.P()
-		f.needRawDesc = true
-	}
-}
-
-func genMessageGetterMethods(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo) {
-	for _, field := range m.Fields {
-		genNoInterfacePragma(g, m.isTracked)
-
-		// Getter for parent oneof.
-		if oneof := field.Oneof; oneof != nil && oneof.Fields[0] == field && !oneof.Desc.IsSynthetic() {
-			g.Annotate(m.GoIdent.GoName+".Get"+oneof.GoName, oneof.Location)
-			g.P("func (m *", m.GoIdent.GoName, ") Get", oneof.GoName, "() ", oneofInterfaceName(oneof), " {")
-			g.P("if m != nil {")
-			g.P("return m.", oneof.GoName)
-			g.P("}")
-			g.P("return nil")
-			g.P("}")
-			g.P()
-		}
-
-		// Getter for message field.
-		goType, pointer := fieldGoType(g, f, field)
-		defaultValue := fieldDefaultValue(g, f, m, field)
-		g.Annotate(m.GoIdent.GoName+".Get"+field.GoName, field.Location)
-		leadingComments := appendDeprecationSuffix("",
-			field.Desc.Options().(*descriptorpb.FieldOptions).GetDeprecated())
-		switch {
-		case field.Desc.IsWeak():
-			g.P(leadingComments, "func (x *", m.GoIdent, ") Get", field.GoName, "() ", protoPackage.Ident("Message"), "{")
-			g.P("var w ", protoimplPackage.Ident("WeakFields"))
-			g.P("if x != nil {")
-			g.P("w = x.", genid.WeakFields_goname)
-			if m.isTracked {
-				g.P("_ = x.", genid.WeakFieldPrefix_goname+field.GoName)
-			}
-			g.P("}")
-			g.P("return ", protoimplPackage.Ident("X"), ".GetWeak(w, ", field.Desc.Number(), ", ", strconv.Quote(string(field.Message.Desc.FullName())), ")")
-			g.P("}")
-		case field.Oneof != nil && !field.Oneof.Desc.IsSynthetic():
-			g.P(leadingComments, "func (x *", m.GoIdent, ") Get", field.GoName, "() ", goType, " {")
-			g.P("if x, ok := x.Get", field.Oneof.GoName, "().(*", field.GoIdent, "); ok {")
-			g.P("return x.", field.GoName)
-			g.P("}")
-			g.P("return ", defaultValue)
-			g.P("}")
-		default:
-			g.P(leadingComments, "func (x *", m.GoIdent, ") Get", field.GoName, "() ", goType, " {")
-			if !field.Desc.HasPresence() || defaultValue == "nil" {
-				g.P("if x != nil {")
-			} else {
-				g.P("if x != nil && x.", field.GoName, " != nil {")
-			}
-			star := ""
-			if pointer {
-				star = "*"
-			}
-			g.P("return ", star, " x.", field.GoName)
-			g.P("}")
-			g.P("return ", defaultValue)
-			g.P("}")
-		}
-		g.P()
-	}
-}
-
-func genMessageSetterMethods(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo) {
-	for _, field := range m.Fields {
-		if !field.Desc.IsWeak() {
-			continue
-		}
-
-		genNoInterfacePragma(g, m.isTracked)
-
-		g.Annotate(m.GoIdent.GoName+".Set"+field.GoName, field.Location)
-		leadingComments := appendDeprecationSuffix("",
-			field.Desc.Options().(*descriptorpb.FieldOptions).GetDeprecated())
-		g.P(leadingComments, "func (x *", m.GoIdent, ") Set", field.GoName, "(v ", protoPackage.Ident("Message"), ") {")
-		g.P("var w *", protoimplPackage.Ident("WeakFields"))
-		g.P("if x != nil {")
-		g.P("w = &x.", genid.WeakFields_goname)
-		if m.isTracked {
-			g.P("_ = x.", genid.WeakFieldPrefix_goname+field.GoName)
-		}
-		g.P("}")
-		g.P(protoimplPackage.Ident("X"), ".SetWeak(w, ", field.Desc.Number(), ", ", strconv.Quote(string(field.Message.Desc.FullName())), ", v)")
-		g.P("}")
-		g.P()
-	}
-}
-
-// fieldGoType returns the Go type used for a field.
-//
-// If it returns pointer=true, the struct field is a pointer to the type.
-func fieldGoType(g *protogen.GeneratedFile, f *fileInfo, field *protogen.Field) (goType string, pointer bool) {
-	if field.Desc.IsWeak() {
-		return "struct{}", false
-	}
-
-	pointer = field.Desc.HasPresence()
-	switch field.Desc.Kind() {
-	case protoreflect.BoolKind:
-		goType = "bool"
-	case protoreflect.EnumKind:
-		goType = g.QualifiedGoIdent(field.Enum.GoIdent)
-	case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:
-		goType = "int32"
-	case protoreflect.Uint32Kind, protoreflect.Fixed32Kind:
-		goType = "uint32"
-	case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:
-		goType = "int64"
-	case protoreflect.Uint64Kind, protoreflect.Fixed64Kind:
-		goType = "uint64"
-	case protoreflect.FloatKind:
-		goType = "float32"
-	case protoreflect.DoubleKind:
-		goType = "float64"
-	case protoreflect.StringKind:
-		goType = "string"
-	case protoreflect.BytesKind:
-		goType = "[]byte"
-		pointer = false // rely on nullability of slices for presence
-	case protoreflect.MessageKind, protoreflect.GroupKind:
-		goType = "*" + g.QualifiedGoIdent(field.Message.GoIdent)
-		pointer = false // pointer captured as part of the type
-	}
-	switch {
-	case field.Desc.IsList():
-		return "[]" + goType, false
-	case field.Desc.IsMap():
-		keyType, _ := fieldGoType(g, f, field.Message.Fields[0])
-		valType, _ := fieldGoType(g, f, field.Message.Fields[1])
-		return fmt.Sprintf("map[%v]%v", keyType, valType), false
-	}
-	return goType, pointer
-}
-
-func fieldProtobufTagValue(field *protogen.Field) string {
-	var enumName string
-	if field.Desc.Kind() == protoreflect.EnumKind {
-		enumName = protoimpl.X.LegacyEnumName(field.Enum.Desc)
-	}
-	return tag.Marshal(field.Desc, enumName)
-}
-
-func fieldDefaultValue(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo, field *protogen.Field) string {
-	if field.Desc.IsList() {
-		return "nil"
-	}
-	if field.Desc.HasDefault() {
-		defVarName := "Default_" + m.GoIdent.GoName + "_" + field.GoName
-		if field.Desc.Kind() == protoreflect.BytesKind {
-			return "append([]byte(nil), " + defVarName + "...)"
-		}
-		return defVarName
-	}
-	switch field.Desc.Kind() {
-	case protoreflect.BoolKind:
-		return "false"
-	case protoreflect.StringKind:
-		return `""`
-	case protoreflect.MessageKind, protoreflect.GroupKind, protoreflect.BytesKind:
-		return "nil"
-	case protoreflect.EnumKind:
-		val := field.Enum.Values[0]
-		if val.GoIdent.GoImportPath == f.GoImportPath {
-			return g.QualifiedGoIdent(val.GoIdent)
-		} else {
-			// If the enum value is declared in a different Go package,
-			// reference it by number since the name may not be correct.
-			// See https://github.com/golang/protobuf/issues/513.
-			return g.QualifiedGoIdent(field.Enum.GoIdent) + "(" + strconv.FormatInt(int64(val.Desc.Number()), 10) + ")"
-		}
-	default:
-		return "0"
-	}
-}
-
-func fieldJSONTagValue(field *protogen.Field) string {
-	return string(field.Desc.Name()) + ",omitempty"
-}
-
-func genExtensions(g *protogen.GeneratedFile, f *fileInfo) {
-	if len(f.allExtensions) == 0 {
-		return
-	}
-
-	g.P("var ", extensionTypesVarName(f), " = []", protoimplPackage.Ident("ExtensionInfo"), "{")
-	for _, x := range f.allExtensions {
-		g.P("{")
-		g.P("ExtendedType: (*", x.Extendee.GoIdent, ")(nil),")
-		goType, pointer := fieldGoType(g, f, x.Extension)
-		if pointer {
-			goType = "*" + goType
-		}
-		g.P("ExtensionType: (", goType, ")(nil),")
-		g.P("Field: ", x.Desc.Number(), ",")
-		g.P("Name: ", strconv.Quote(string(x.Desc.FullName())), ",")
-		g.P("Tag: ", strconv.Quote(fieldProtobufTagValue(x.Extension)), ",")
-		g.P("Filename: ", strconv.Quote(f.Desc.Path()), ",")
-		g.P("},")
-	}
-	g.P("}")
-	g.P()
-
-	// Group extensions by the target message.
-	var orderedTargets []protogen.GoIdent
-	allExtensionsByTarget := make(map[protogen.GoIdent][]*extensionInfo)
-	allExtensionsByPtr := make(map[*extensionInfo]int)
-	for i, x := range f.allExtensions {
-		target := x.Extendee.GoIdent
-		if len(allExtensionsByTarget[target]) == 0 {
-			orderedTargets = append(orderedTargets, target)
-		}
-		allExtensionsByTarget[target] = append(allExtensionsByTarget[target], x)
-		allExtensionsByPtr[x] = i
-	}
-	for _, target := range orderedTargets {
-		g.P("// Extension fields to ", target, ".")
-		g.P("var (")
-		for _, x := range allExtensionsByTarget[target] {
-			xd := x.Desc
-			typeName := xd.Kind().String()
-			switch xd.Kind() {
-			case protoreflect.EnumKind:
-				typeName = string(xd.Enum().FullName())
-			case protoreflect.MessageKind, protoreflect.GroupKind:
-				typeName = string(xd.Message().FullName())
-			}
-			fieldName := string(xd.Name())
-
-			leadingComments := x.Comments.Leading
-			if leadingComments != "" {
-				leadingComments += "\n"
-			}
-			leadingComments += protogen.Comments(fmt.Sprintf(" %v %v %v = %v;\n",
-				xd.Cardinality(), typeName, fieldName, xd.Number()))
-			leadingComments = appendDeprecationSuffix(leadingComments,
-				x.Desc.Options().(*descriptorpb.FieldOptions).GetDeprecated())
-			g.P(leadingComments,
-				"E_", x.GoIdent, " = &", extensionTypesVarName(f), "[", allExtensionsByPtr[x], "]",
-				trailingComment(x.Comments.Trailing))
-		}
-		g.P(")")
-		g.P()
-	}
-}
-
-// genMessageOneofWrapperTypes generates the oneof wrapper types and
-// associates the types with the parent message type.
-func genMessageOneofWrapperTypes(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo) {
-	for _, oneof := range m.Oneofs {
-		if oneof.Desc.IsSynthetic() {
-			continue
-		}
-		ifName := oneofInterfaceName(oneof)
-		g.P("type ", ifName, " interface {")
-		g.P(ifName, "()")
-		g.P("}")
-		g.P()
-		for _, field := range oneof.Fields {
-			g.Annotate(field.GoIdent.GoName, field.Location)
-			g.Annotate(field.GoIdent.GoName+"."+field.GoName, field.Location)
-			g.P("type ", field.GoIdent, " struct {")
-			goType, _ := fieldGoType(g, f, field)
-			tags := structTags{
-				{"protobuf", fieldProtobufTagValue(field)},
-			}
-			if m.isTracked {
-				tags = append(tags, gotrackTags...)
-			}
-			leadingComments := appendDeprecationSuffix(field.Comments.Leading,
-				field.Desc.Options().(*descriptorpb.FieldOptions).GetDeprecated())
-			g.P(leadingComments,
-				field.GoName, " ", goType, tags,
-				trailingComment(field.Comments.Trailing))
-			g.P("}")
-			g.P()
-		}
-		for _, field := range oneof.Fields {
-			g.P("func (*", field.GoIdent, ") ", ifName, "() {}")
-			g.P()
-		}
-	}
-}
-
-// oneofInterfaceName returns the name of the interface type implemented by
-// the oneof field value types.
-func oneofInterfaceName(oneof *protogen.Oneof) string {
-	return "is" + oneof.GoIdent.GoName
-}
-
-// genNoInterfacePragma generates a standalone "nointerface" pragma to
-// decorate methods with field-tracking support.
-func genNoInterfacePragma(g *protogen.GeneratedFile, tracked bool) {
-	if tracked {
-		g.P("//go:nointerface")
-		g.P()
-	}
-}
-
-var gotrackTags = structTags{{"go", "track"}}
-
-// structTags is a data structure for build idiomatic Go struct tags.
-// Each [2]string is a key-value pair, where value is the unescaped string.
-//
-// Example: structTags{{"key", "value"}}.String() -> `key:"value"`
-type structTags [][2]string
-
-func (tags structTags) String() string {
-	if len(tags) == 0 {
-		return ""
-	}
-	var ss []string
-	for _, tag := range tags {
-		// NOTE: When quoting the value, we need to make sure the backtick
-		// character does not appear. Convert all cases to the escaped hex form.
-		key := tag[0]
-		val := strings.Replace(strconv.Quote(tag[1]), "`", `\x60`, -1)
-		ss = append(ss, fmt.Sprintf("%s:%s", key, val))
-	}
-	return "`" + strings.Join(ss, " ") + "`"
-}
-
-// appendDeprecationSuffix optionally appends a deprecation notice as a suffix.
-func appendDeprecationSuffix(prefix protogen.Comments, deprecated bool) protogen.Comments {
-	if !deprecated {
-		return prefix
-	}
-	if prefix != "" {
-		prefix += "\n"
-	}
-	return prefix + " Deprecated: Do not use.\n"
-}
-
-// trailingComment is like protogen.Comments, but lacks a trailing newline.
-type trailingComment protogen.Comments
-
-func (c trailingComment) String() string {
-	s := strings.TrimSuffix(protogen.Comments(c).String(), "\n")
-	if strings.Contains(s, "\n") {
-		// We don't support multi-lined trailing comments as it is unclear
-		// how to best render them in the generated code.
-		return ""
-	}
-	return s
-}
diff --git a/cmd/protoc-gen-go/internal_gengo/reflect.go b/cmd/protoc-gen-go/internal_gengo/reflect.go
deleted file mode 100644
index 1319a12..0000000
--- a/cmd/protoc-gen-go/internal_gengo/reflect.go
+++ /dev/null
@@ -1,351 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package internal_gengo
-
-import (
-	"fmt"
-	"math"
-	"strings"
-	"unicode/utf8"
-
-	"google.golang.org/protobuf/compiler/protogen"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoreflect"
-
-	"google.golang.org/protobuf/types/descriptorpb"
-)
-
-func genReflectFileDescriptor(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo) {
-	g.P("var ", f.GoDescriptorIdent, " ", protoreflectPackage.Ident("FileDescriptor"))
-	g.P()
-
-	genFileDescriptor(gen, g, f)
-	if len(f.allEnums) > 0 {
-		g.P("var ", enumTypesVarName(f), " = make([]", protoimplPackage.Ident("EnumInfo"), ",", len(f.allEnums), ")")
-	}
-	if len(f.allMessages) > 0 {
-		g.P("var ", messageTypesVarName(f), " = make([]", protoimplPackage.Ident("MessageInfo"), ",", len(f.allMessages), ")")
-	}
-
-	// Generate a unique list of Go types for all declarations and dependencies,
-	// and the associated index into the type list for all dependencies.
-	var goTypes []string
-	var depIdxs []string
-	seen := map[protoreflect.FullName]int{}
-	genDep := func(name protoreflect.FullName, depSource string) {
-		if depSource != "" {
-			line := fmt.Sprintf("%d, // %d: %s -> %s", seen[name], len(depIdxs), depSource, name)
-			depIdxs = append(depIdxs, line)
-		}
-	}
-	genEnum := func(e *protogen.Enum, depSource string) {
-		if e != nil {
-			name := e.Desc.FullName()
-			if _, ok := seen[name]; !ok {
-				line := fmt.Sprintf("(%s)(0), // %d: %s", g.QualifiedGoIdent(e.GoIdent), len(goTypes), name)
-				goTypes = append(goTypes, line)
-				seen[name] = len(seen)
-			}
-			if depSource != "" {
-				genDep(name, depSource)
-			}
-		}
-	}
-	genMessage := func(m *protogen.Message, depSource string) {
-		if m != nil {
-			name := m.Desc.FullName()
-			if _, ok := seen[name]; !ok {
-				line := fmt.Sprintf("(*%s)(nil), // %d: %s", g.QualifiedGoIdent(m.GoIdent), len(goTypes), name)
-				if m.Desc.IsMapEntry() {
-					// Map entry messages have no associated Go type.
-					line = fmt.Sprintf("nil, // %d: %s", len(goTypes), name)
-				}
-				goTypes = append(goTypes, line)
-				seen[name] = len(seen)
-			}
-			if depSource != "" {
-				genDep(name, depSource)
-			}
-		}
-	}
-
-	// This ordering is significant.
-	// See filetype.TypeBuilder.DependencyIndexes.
-	type offsetEntry struct {
-		start int
-		name  string
-	}
-	var depOffsets []offsetEntry
-	for _, enum := range f.allEnums {
-		genEnum(enum.Enum, "")
-	}
-	for _, message := range f.allMessages {
-		genMessage(message.Message, "")
-	}
-	depOffsets = append(depOffsets, offsetEntry{len(depIdxs), "field type_name"})
-	for _, message := range f.allMessages {
-		for _, field := range message.Fields {
-			if field.Desc.IsWeak() {
-				continue
-			}
-			source := string(field.Desc.FullName())
-			genEnum(field.Enum, source+":type_name")
-			genMessage(field.Message, source+":type_name")
-		}
-	}
-	depOffsets = append(depOffsets, offsetEntry{len(depIdxs), "extension extendee"})
-	for _, extension := range f.allExtensions {
-		source := string(extension.Desc.FullName())
-		genMessage(extension.Extendee, source+":extendee")
-	}
-	depOffsets = append(depOffsets, offsetEntry{len(depIdxs), "extension type_name"})
-	for _, extension := range f.allExtensions {
-		source := string(extension.Desc.FullName())
-		genEnum(extension.Enum, source+":type_name")
-		genMessage(extension.Message, source+":type_name")
-	}
-	depOffsets = append(depOffsets, offsetEntry{len(depIdxs), "method input_type"})
-	for _, service := range f.Services {
-		for _, method := range service.Methods {
-			source := string(method.Desc.FullName())
-			genMessage(method.Input, source+":input_type")
-		}
-	}
-	depOffsets = append(depOffsets, offsetEntry{len(depIdxs), "method output_type"})
-	for _, service := range f.Services {
-		for _, method := range service.Methods {
-			source := string(method.Desc.FullName())
-			genMessage(method.Output, source+":output_type")
-		}
-	}
-	depOffsets = append(depOffsets, offsetEntry{len(depIdxs), ""})
-	for i := len(depOffsets) - 2; i >= 0; i-- {
-		curr, next := depOffsets[i], depOffsets[i+1]
-		depIdxs = append(depIdxs, fmt.Sprintf("%d, // [%d:%d] is the sub-list for %s",
-			curr.start, curr.start, next.start, curr.name))
-	}
-	if len(depIdxs) > math.MaxInt32 {
-		panic("too many dependencies") // sanity check
-	}
-
-	g.P("var ", goTypesVarName(f), " = []interface{}{")
-	for _, s := range goTypes {
-		g.P(s)
-	}
-	g.P("}")
-
-	g.P("var ", depIdxsVarName(f), " = []int32{")
-	for _, s := range depIdxs {
-		g.P(s)
-	}
-	g.P("}")
-
-	g.P("func init() { ", initFuncName(f.File), "() }")
-
-	g.P("func ", initFuncName(f.File), "() {")
-	g.P("if ", f.GoDescriptorIdent, " != nil {")
-	g.P("return")
-	g.P("}")
-
-	// Ensure that initialization functions for different files in the same Go
-	// package run in the correct order: Call the init funcs for every .proto file
-	// imported by this one that is in the same Go package.
-	for i, imps := 0, f.Desc.Imports(); i < imps.Len(); i++ {
-		impFile := gen.FilesByPath[imps.Get(i).Path()]
-		if impFile.GoImportPath != f.GoImportPath {
-			continue
-		}
-		g.P(initFuncName(impFile), "()")
-	}
-
-	if len(f.allMessages) > 0 {
-		// Populate MessageInfo.Exporters.
-		g.P("if !", protoimplPackage.Ident("UnsafeEnabled"), " {")
-		for _, message := range f.allMessages {
-			if sf := f.allMessageFieldsByPtr[message]; len(sf.unexported) > 0 {
-				idx := f.allMessagesByPtr[message]
-				typesVar := messageTypesVarName(f)
-
-				g.P(typesVar, "[", idx, "].Exporter = func(v interface{}, i int) interface{} {")
-				g.P("switch v := v.(*", message.GoIdent, "); i {")
-				for i := 0; i < sf.count; i++ {
-					if name := sf.unexported[i]; name != "" {
-						g.P("case ", i, ": return &v.", name)
-					}
-				}
-				g.P("default: return nil")
-				g.P("}")
-				g.P("}")
-			}
-		}
-		g.P("}")
-
-		// Populate MessageInfo.OneofWrappers.
-		for _, message := range f.allMessages {
-			if len(message.Oneofs) > 0 {
-				idx := f.allMessagesByPtr[message]
-				typesVar := messageTypesVarName(f)
-
-				// Associate the wrapper types by directly passing them to the MessageInfo.
-				g.P(typesVar, "[", idx, "].OneofWrappers = []interface{} {")
-				for _, oneof := range message.Oneofs {
-					if !oneof.Desc.IsSynthetic() {
-						for _, field := range oneof.Fields {
-							g.P("(*", field.GoIdent, ")(nil),")
-						}
-					}
-				}
-				g.P("}")
-			}
-		}
-	}
-
-	g.P("type x struct{}")
-	g.P("out := ", protoimplPackage.Ident("TypeBuilder"), "{")
-	g.P("File: ", protoimplPackage.Ident("DescBuilder"), "{")
-	g.P("GoPackagePath: ", reflectPackage.Ident("TypeOf"), "(x{}).PkgPath(),")
-	g.P("RawDescriptor: ", rawDescVarName(f), ",")
-	g.P("NumEnums: ", len(f.allEnums), ",")
-	g.P("NumMessages: ", len(f.allMessages), ",")
-	g.P("NumExtensions: ", len(f.allExtensions), ",")
-	g.P("NumServices: ", len(f.Services), ",")
-	g.P("},")
-	g.P("GoTypes: ", goTypesVarName(f), ",")
-	g.P("DependencyIndexes: ", depIdxsVarName(f), ",")
-	if len(f.allEnums) > 0 {
-		g.P("EnumInfos: ", enumTypesVarName(f), ",")
-	}
-	if len(f.allMessages) > 0 {
-		g.P("MessageInfos: ", messageTypesVarName(f), ",")
-	}
-	if len(f.allExtensions) > 0 {
-		g.P("ExtensionInfos: ", extensionTypesVarName(f), ",")
-	}
-	g.P("}.Build()")
-	g.P(f.GoDescriptorIdent, " = out.File")
-
-	// Set inputs to nil to allow GC to reclaim resources.
-	g.P(rawDescVarName(f), " = nil")
-	g.P(goTypesVarName(f), " = nil")
-	g.P(depIdxsVarName(f), " = nil")
-	g.P("}")
-}
-
-func genFileDescriptor(gen *protogen.Plugin, g *protogen.GeneratedFile, f *fileInfo) {
-	descProto := proto.Clone(f.Proto).(*descriptorpb.FileDescriptorProto)
-	descProto.SourceCodeInfo = nil // drop source code information
-
-	b, err := proto.MarshalOptions{AllowPartial: true, Deterministic: true}.Marshal(descProto)
-	if err != nil {
-		gen.Error(err)
-		return
-	}
-
-	g.P("var ", rawDescVarName(f), " = []byte{")
-	for len(b) > 0 {
-		n := 16
-		if n > len(b) {
-			n = len(b)
-		}
-
-		s := ""
-		for _, c := range b[:n] {
-			s += fmt.Sprintf("0x%02x,", c)
-		}
-		g.P(s)
-
-		b = b[n:]
-	}
-	g.P("}")
-	g.P()
-
-	if f.needRawDesc {
-		onceVar := rawDescVarName(f) + "Once"
-		dataVar := rawDescVarName(f) + "Data"
-		g.P("var (")
-		g.P(onceVar, " ", syncPackage.Ident("Once"))
-		g.P(dataVar, " = ", rawDescVarName(f))
-		g.P(")")
-		g.P()
-
-		g.P("func ", rawDescVarName(f), "GZIP() []byte {")
-		g.P(onceVar, ".Do(func() {")
-		g.P(dataVar, " = ", protoimplPackage.Ident("X"), ".CompressGZIP(", dataVar, ")")
-		g.P("})")
-		g.P("return ", dataVar)
-		g.P("}")
-		g.P()
-	}
-}
-
-func genEnumReflectMethods(g *protogen.GeneratedFile, f *fileInfo, e *enumInfo) {
-	idx := f.allEnumsByPtr[e]
-	typesVar := enumTypesVarName(f)
-
-	// Descriptor method.
-	g.P("func (", e.GoIdent, ") Descriptor() ", protoreflectPackage.Ident("EnumDescriptor"), " {")
-	g.P("return ", typesVar, "[", idx, "].Descriptor()")
-	g.P("}")
-	g.P()
-
-	// Type method.
-	g.P("func (", e.GoIdent, ") Type() ", protoreflectPackage.Ident("EnumType"), " {")
-	g.P("return &", typesVar, "[", idx, "]")
-	g.P("}")
-	g.P()
-
-	// Number method.
-	g.P("func (x ", e.GoIdent, ") Number() ", protoreflectPackage.Ident("EnumNumber"), " {")
-	g.P("return ", protoreflectPackage.Ident("EnumNumber"), "(x)")
-	g.P("}")
-	g.P()
-}
-
-func genMessageReflectMethods(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo) {
-	idx := f.allMessagesByPtr[m]
-	typesVar := messageTypesVarName(f)
-
-	// ProtoReflect method.
-	g.P("func (x *", m.GoIdent, ") ProtoReflect() ", protoreflectPackage.Ident("Message"), " {")
-	g.P("mi := &", typesVar, "[", idx, "]")
-	g.P("if ", protoimplPackage.Ident("UnsafeEnabled"), " && x != nil {")
-	g.P("ms := ", protoimplPackage.Ident("X"), ".MessageStateOf(", protoimplPackage.Ident("Pointer"), "(x))")
-	g.P("if ms.LoadMessageInfo() == nil {")
-	g.P("ms.StoreMessageInfo(mi)")
-	g.P("}")
-	g.P("return ms")
-	g.P("}")
-	g.P("return mi.MessageOf(x)")
-	g.P("}")
-	g.P()
-}
-
-func fileVarName(f *protogen.File, suffix string) string {
-	prefix := f.GoDescriptorIdent.GoName
-	_, n := utf8.DecodeRuneInString(prefix)
-	prefix = strings.ToLower(prefix[:n]) + prefix[n:]
-	return prefix + "_" + suffix
-}
-func rawDescVarName(f *fileInfo) string {
-	return fileVarName(f.File, "rawDesc")
-}
-func goTypesVarName(f *fileInfo) string {
-	return fileVarName(f.File, "goTypes")
-}
-func depIdxsVarName(f *fileInfo) string {
-	return fileVarName(f.File, "depIdxs")
-}
-func enumTypesVarName(f *fileInfo) string {
-	return fileVarName(f.File, "enumTypes")
-}
-func messageTypesVarName(f *fileInfo) string {
-	return fileVarName(f.File, "msgTypes")
-}
-func extensionTypesVarName(f *fileInfo) string {
-	return fileVarName(f.File, "extTypes")
-}
-func initFuncName(f *protogen.File) string {
-	return fileVarName(f, "init")
-}
diff --git a/cmd/protoc-gen-go/internal_gengo/well_known_types.go b/cmd/protoc-gen-go/internal_gengo/well_known_types.go
deleted file mode 100644
index dbaa529..0000000
--- a/cmd/protoc-gen-go/internal_gengo/well_known_types.go
+++ /dev/null
@@ -1,1080 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package internal_gengo
-
-import (
-	"strings"
-
-	"google.golang.org/protobuf/compiler/protogen"
-	"google.golang.org/protobuf/internal/genid"
-)
-
-// Specialized support for well-known types are hard-coded into the generator
-// as opposed to being injected in adjacent .go sources in the generated package
-// in order to support specialized build systems like Bazel that always generate
-// dynamically from the source .proto files.
-
-func genPackageKnownComment(f *fileInfo) protogen.Comments {
-	switch f.Desc.Path() {
-	case genid.File_google_protobuf_any_proto:
-		return ` Package anypb contains generated types for ` + genid.File_google_protobuf_any_proto + `.
-
- The Any message is a dynamic representation of any other message value.
- It is functionally a tuple of the full name of the remote message type and
- the serialized bytes of the remote message value.
-
-
- Constructing an Any
-
- An Any message containing another message value is constructed using New:
-
-	any, err := anypb.New(m)
-	if err != nil {
-		... // handle error
-	}
-	... // make use of any
-
-
- Unmarshaling an Any
-
- With a populated Any message, the underlying message can be serialized into
- a remote concrete message value in a few ways.
-
- If the exact concrete type is known, then a new (or pre-existing) instance
- of that message can be passed to the UnmarshalTo method:
-
-	m := new(foopb.MyMessage)
-	if err := any.UnmarshalTo(m); err != nil {
-		... // handle error
-	}
-	... // make use of m
-
- If the exact concrete type is not known, then the UnmarshalNew method can be
- used to unmarshal the contents into a new instance of the remote message type:
-
-	m, err := any.UnmarshalNew()
-	if err != nil {
-		... // handle error
-	}
-	... // make use of m
-
- UnmarshalNew uses the global type registry to resolve the message type and
- construct a new instance of that message to unmarshal into. In order for a
- message type to appear in the global registry, the Go type representing that
- protobuf message type must be linked into the Go binary. For messages
- generated by protoc-gen-go, this is achieved through an import of the
- generated Go package representing a .proto file.
-
- A common pattern with UnmarshalNew is to use a type switch with the resulting
- proto.Message value:
-
-	switch m := m.(type) {
-	case *foopb.MyMessage:
-		... // make use of m as a *foopb.MyMessage
-	case *barpb.OtherMessage:
-		... // make use of m as a *barpb.OtherMessage
-	case *bazpb.SomeMessage:
-		... // make use of m as a *bazpb.SomeMessage
-	}
-
- This pattern ensures that the generated packages containing the message types
- listed in the case clauses are linked into the Go binary and therefore also
- registered in the global registry.
-
-
- Type checking an Any
-
- In order to type check whether an Any message represents some other message,
- then use the MessageIs method:
-
-	if any.MessageIs((*foopb.MyMessage)(nil)) {
-		... // make use of any, knowing that it contains a foopb.MyMessage
-	}
-
- The MessageIs method can also be used with an allocated instance of the target
- message type if the intention is to unmarshal into it if the type matches:
-
-	m := new(foopb.MyMessage)
-	if any.MessageIs(m) {
-		if err := any.UnmarshalTo(m); err != nil {
-			... // handle error
-		}
-		... // make use of m
-	}
-
-`
-	case genid.File_google_protobuf_timestamp_proto:
-		return ` Package timestamppb contains generated types for ` + genid.File_google_protobuf_timestamp_proto + `.
-
- The Timestamp message represents a timestamp,
- an instant in time since the Unix epoch (January 1st, 1970).
-
-
- Conversion to a Go Time
-
- The AsTime method can be used to convert a Timestamp message to a
- standard Go time.Time value in UTC:
-
-	t := ts.AsTime()
-	... // make use of t as a time.Time
-
- Converting to a time.Time is a common operation so that the extensive
- set of time-based operations provided by the time package can be leveraged.
- See https://golang.org/pkg/time for more information.
-
- The AsTime method performs the conversion on a best-effort basis. Timestamps
- with denormal values (e.g., nanoseconds beyond 0 and 99999999, inclusive)
- are normalized during the conversion to a time.Time. To manually check for
- invalid Timestamps per the documented limitations in timestamp.proto,
- additionally call the CheckValid method:
-
-	if err := ts.CheckValid(); err != nil {
-		... // handle error
-	}
-
-
- Conversion from a Go Time
-
- The timestamppb.New function can be used to construct a Timestamp message
- from a standard Go time.Time value:
-
-	ts := timestamppb.New(t)
-	... // make use of ts as a *timestamppb.Timestamp
-
- In order to construct a Timestamp representing the current time, use Now:
-
-	ts := timestamppb.Now()
-	... // make use of ts as a *timestamppb.Timestamp
-
-`
-	case genid.File_google_protobuf_duration_proto:
-		return ` Package durationpb contains generated types for ` + genid.File_google_protobuf_duration_proto + `.
-
- The Duration message represents a signed span of time.
-
-
- Conversion to a Go Duration
-
- The AsDuration method can be used to convert a Duration message to a
- standard Go time.Duration value:
-
-	d := dur.AsDuration()
-	... // make use of d as a time.Duration
-
- Converting to a time.Duration is a common operation so that the extensive
- set of time-based operations provided by the time package can be leveraged.
- See https://golang.org/pkg/time for more information.
-
- The AsDuration method performs the conversion on a best-effort basis.
- Durations with denormal values (e.g., nanoseconds beyond -99999999 and
- +99999999, inclusive; or seconds and nanoseconds with opposite signs)
- are normalized during the conversion to a time.Duration. To manually check for
- invalid Duration per the documented limitations in duration.proto,
- additionally call the CheckValid method:
-
-	if err := dur.CheckValid(); err != nil {
-		... // handle error
-	}
-
- Note that the documented limitations in duration.proto does not protect a
- Duration from overflowing the representable range of a time.Duration in Go.
- The AsDuration method uses saturation arithmetic such that an overflow clamps
- the resulting value to the closest representable value (e.g., math.MaxInt64
- for positive overflow and math.MinInt64 for negative overflow).
-
-
- Conversion from a Go Duration
-
- The durationpb.New function can be used to construct a Duration message
- from a standard Go time.Duration value:
-
-	dur := durationpb.New(d)
-	... // make use of d as a *durationpb.Duration
-
-`
-	case genid.File_google_protobuf_struct_proto:
-		return ` Package structpb contains generated types for ` + genid.File_google_protobuf_struct_proto + `.
-
- The messages (i.e., Value, Struct, and ListValue) defined in struct.proto are
- used to represent arbitrary JSON. The Value message represents a JSON value,
- the Struct message represents a JSON object, and the ListValue message
- represents a JSON array. See https://json.org for more information.
-
- The Value, Struct, and ListValue types have generated MarshalJSON and
- UnmarshalJSON methods such that they serialize JSON equivalent to what the
- messages themselves represent. Use of these types with the
- "google.golang.org/protobuf/encoding/protojson" package
- ensures that they will be serialized as their JSON equivalent.
-
-
- Conversion to and from a Go interface
-
- The standard Go "encoding/json" package has functionality to serialize
- arbitrary types to a large degree. The Value.AsInterface, Struct.AsMap, and
- ListValue.AsSlice methods can convert the protobuf message representation into
- a form represented by interface{}, map[string]interface{}, and []interface{}.
- This form can be used with other packages that operate on such data structures
- and also directly with the standard json package.
-
- In order to convert the interface{}, map[string]interface{}, and []interface{}
- forms back as Value, Struct, and ListValue messages, use the NewStruct,
- NewList, and NewValue constructor functions.
-
-
- Example usage
-
- Consider the following example JSON object:
-
-	{
-		"firstName": "John",
-		"lastName": "Smith",
-		"isAlive": true,
-		"age": 27,
-		"address": {
-			"streetAddress": "21 2nd Street",
-			"city": "New York",
-			"state": "NY",
-			"postalCode": "10021-3100"
-		},
-		"phoneNumbers": [
-			{
-				"type": "home",
-				"number": "212 555-1234"
-			},
-			{
-				"type": "office",
-				"number": "646 555-4567"
-			}
-		],
-		"children": [],
-		"spouse": null
-	}
-
- To construct a Value message representing the above JSON object:
-
-	m, err := structpb.NewValue(map[string]interface{}{
-		"firstName": "John",
-		"lastName":  "Smith",
-		"isAlive":   true,
-		"age":       27,
-		"address": map[string]interface{}{
-			"streetAddress": "21 2nd Street",
-			"city":          "New York",
-			"state":         "NY",
-			"postalCode":    "10021-3100",
-		},
-		"phoneNumbers": []interface{}{
-			map[string]interface{}{
-				"type":   "home",
-				"number": "212 555-1234",
-			},
-			map[string]interface{}{
-				"type":   "office",
-				"number": "646 555-4567",
-			},
-		},
-		"children": []interface{}{},
-		"spouse":   nil,
-	})
-	if err != nil {
-		... // handle error
-	}
-	... // make use of m as a *structpb.Value
-
-`
-	case genid.File_google_protobuf_field_mask_proto:
-		return ` Package fieldmaskpb contains generated types for ` + genid.File_google_protobuf_field_mask_proto + `.
-
- The FieldMask message represents a set of symbolic field paths.
- The paths are specific to some target message type,
- which is not stored within the FieldMask message itself.
-
-
- Constructing a FieldMask
-
- The New function is used construct a FieldMask:
-
-	var messageType *descriptorpb.DescriptorProto
-	fm, err := fieldmaskpb.New(messageType, "field.name", "field.number")
-	if err != nil {
-		... // handle error
-	}
-	... // make use of fm
-
- The "field.name" and "field.number" paths are valid paths according to the
- google.protobuf.DescriptorProto message. Use of a path that does not correlate
- to valid fields reachable from DescriptorProto would result in an error.
-
- Once a FieldMask message has been constructed,
- the Append method can be used to insert additional paths to the path set:
-
-	var messageType *descriptorpb.DescriptorProto
-	if err := fm.Append(messageType, "options"); err != nil {
-		... // handle error
-	}
-
-
- Type checking a FieldMask
-
- In order to verify that a FieldMask represents a set of fields that are
- reachable from some target message type, use the IsValid method:
-
-	var messageType *descriptorpb.DescriptorProto
-	if fm.IsValid(messageType) {
-		... // make use of fm
-	}
-
- IsValid needs to be passed the target message type as an input since the
- FieldMask message itself does not store the message type that the set of paths
- are for.
-`
-	default:
-		return ""
-	}
-}
-
-func genMessageKnownFunctions(g *protogen.GeneratedFile, f *fileInfo, m *messageInfo) {
-	switch m.Desc.FullName() {
-	case genid.Any_message_fullname:
-		g.P("// New marshals src into a new Any instance.")
-		g.P("func New(src ", protoPackage.Ident("Message"), ") (*Any, error) {")
-		g.P("	dst := new(Any)")
-		g.P("	if err := dst.MarshalFrom(src); err != nil {")
-		g.P("		return nil, err")
-		g.P("	}")
-		g.P("	return dst, nil")
-		g.P("}")
-		g.P()
-
-		g.P("// MarshalFrom marshals src into dst as the underlying message")
-		g.P("// using the provided marshal options.")
-		g.P("//")
-		g.P("// If no options are specified, call dst.MarshalFrom instead.")
-		g.P("func MarshalFrom(dst *Any, src ", protoPackage.Ident("Message"), ", opts ", protoPackage.Ident("MarshalOptions"), ") error {")
-		g.P("	const urlPrefix = \"type.googleapis.com/\"")
-		g.P("	if src == nil {")
-		g.P("		return ", protoimplPackage.Ident("X"), ".NewError(\"invalid nil source message\")")
-		g.P("	}")
-		g.P("	b, err := opts.Marshal(src)")
-		g.P("	if err != nil {")
-		g.P("		return err")
-		g.P("	}")
-		g.P("	dst.TypeUrl = urlPrefix + string(src.ProtoReflect().Descriptor().FullName())")
-		g.P("	dst.Value = b")
-		g.P("	return nil")
-		g.P("}")
-		g.P()
-
-		g.P("// UnmarshalTo unmarshals the underlying message from src into dst")
-		g.P("// using the provided unmarshal options.")
-		g.P("// It reports an error if dst is not of the right message type.")
-		g.P("//")
-		g.P("// If no options are specified, call src.UnmarshalTo instead.")
-		g.P("func UnmarshalTo(src *Any, dst ", protoPackage.Ident("Message"), ", opts ", protoPackage.Ident("UnmarshalOptions"), ") error {")
-		g.P("	if src == nil {")
-		g.P("		return ", protoimplPackage.Ident("X"), ".NewError(\"invalid nil source message\")")
-		g.P("	}")
-		g.P("	if !src.MessageIs(dst) {")
-		g.P("		got := dst.ProtoReflect().Descriptor().FullName()")
-		g.P("		want := src.MessageName()")
-		g.P("		return ", protoimplPackage.Ident("X"), ".NewError(\"mismatched message type: got %q, want %q\", got, want)")
-		g.P("	}")
-		g.P("	return opts.Unmarshal(src.GetValue(), dst)")
-		g.P("}")
-		g.P()
-
-		g.P("// UnmarshalNew unmarshals the underlying message from src into dst,")
-		g.P("// which is newly created message using a type resolved from the type URL.")
-		g.P("// The message type is resolved according to opt.Resolver,")
-		g.P("// which should implement protoregistry.MessageTypeResolver.")
-		g.P("// It reports an error if the underlying message type could not be resolved.")
-		g.P("//")
-		g.P("// If no options are specified, call src.UnmarshalNew instead.")
-		g.P("func UnmarshalNew(src *Any, opts ", protoPackage.Ident("UnmarshalOptions"), ") (dst ", protoPackage.Ident("Message"), ", err error) {")
-		g.P("	if src.GetTypeUrl() == \"\" {")
-		g.P("		return nil, ", protoimplPackage.Ident("X"), ".NewError(\"invalid empty type URL\")")
-		g.P("	}")
-		g.P("	if opts.Resolver == nil {")
-		g.P("		opts.Resolver = ", protoregistryPackage.Ident("GlobalTypes"))
-		g.P("	}")
-		g.P("	r, ok := opts.Resolver.(", protoregistryPackage.Ident("MessageTypeResolver"), ")")
-		g.P("	if !ok {")
-		g.P("		return nil, ", protoregistryPackage.Ident("NotFound"))
-		g.P("	}")
-		g.P("	mt, err := r.FindMessageByURL(src.GetTypeUrl())")
-		g.P("	if err != nil {")
-		g.P("		if err == ", protoregistryPackage.Ident("NotFound"), " {")
-		g.P("			return nil, err")
-		g.P("		}")
-		g.P("		return nil, ", protoimplPackage.Ident("X"), ".NewError(\"could not resolve %q: %v\", src.GetTypeUrl(), err)")
-		g.P("	}")
-		g.P("	dst = mt.New().Interface()")
-		g.P("	return dst, opts.Unmarshal(src.GetValue(), dst)")
-		g.P("}")
-		g.P()
-
-		g.P("// MessageIs reports whether the underlying message is of the same type as m.")
-		g.P("func (x *Any) MessageIs(m ", protoPackage.Ident("Message"), ") bool {")
-		g.P("	if m == nil {")
-		g.P("		return false")
-		g.P("	}")
-		g.P("	url := x.GetTypeUrl()")
-		g.P("	name := string(m.ProtoReflect().Descriptor().FullName())")
-		g.P("	if !", stringsPackage.Ident("HasSuffix"), "(url, name) {")
-		g.P("		return false")
-		g.P("	}")
-		g.P("	return len(url) == len(name) || url[len(url)-len(name)-1] == '/'")
-		g.P("}")
-		g.P()
-
-		g.P("// MessageName reports the full name of the underlying message,")
-		g.P("// returning an empty string if invalid.")
-		g.P("func (x *Any) MessageName() ", protoreflectPackage.Ident("FullName"), " {")
-		g.P("	url := x.GetTypeUrl()")
-		g.P("	name := ", protoreflectPackage.Ident("FullName"), "(url)")
-		g.P("	if i := ", stringsPackage.Ident("LastIndexByte"), "(url, '/'); i >= 0 {")
-		g.P("		name = name[i+len(\"/\"):]")
-		g.P("	}")
-		g.P("	if !name.IsValid() {")
-		g.P("		return \"\"")
-		g.P("	}")
-		g.P("	return name")
-		g.P("}")
-		g.P()
-
-		g.P("// MarshalFrom marshals m into x as the underlying message.")
-		g.P("func (x *Any) MarshalFrom(m ", protoPackage.Ident("Message"), ") error {")
-		g.P("	return MarshalFrom(x, m, ", protoPackage.Ident("MarshalOptions"), "{})")
-		g.P("}")
-		g.P()
-
-		g.P("// UnmarshalTo unmarshals the contents of the underlying message of x into m.")
-		g.P("// It resets m before performing the unmarshal operation.")
-		g.P("// It reports an error if m is not of the right message type.")
-		g.P("func (x *Any) UnmarshalTo(m ", protoPackage.Ident("Message"), ") error {")
-		g.P("	return UnmarshalTo(x, m, ", protoPackage.Ident("UnmarshalOptions"), "{})")
-		g.P("}")
-		g.P()
-
-		g.P("// UnmarshalNew unmarshals the contents of the underlying message of x into")
-		g.P("// a newly allocated message of the specified type.")
-		g.P("// It reports an error if the underlying message type could not be resolved.")
-		g.P("func (x *Any) UnmarshalNew() (", protoPackage.Ident("Message"), ", error) {")
-		g.P("	return UnmarshalNew(x, ", protoPackage.Ident("UnmarshalOptions"), "{})")
-		g.P("}")
-		g.P()
-
-	case genid.Timestamp_message_fullname:
-		g.P("// Now constructs a new Timestamp from the current time.")
-		g.P("func Now() *Timestamp {")
-		g.P("	return New(", timePackage.Ident("Now"), "())")
-		g.P("}")
-		g.P()
-
-		g.P("// New constructs a new Timestamp from the provided time.Time.")
-		g.P("func New(t ", timePackage.Ident("Time"), ") *Timestamp {")
-		g.P("	return &Timestamp{Seconds: int64(t.Unix()), Nanos: int32(t.Nanosecond())}")
-		g.P("}")
-		g.P()
-
-		g.P("// AsTime converts x to a time.Time.")
-		g.P("func (x *Timestamp) AsTime() ", timePackage.Ident("Time"), " {")
-		g.P("	return ", timePackage.Ident("Unix"), "(int64(x.GetSeconds()), int64(x.GetNanos())).UTC()")
-		g.P("}")
-		g.P()
-
-		g.P("// IsValid reports whether the timestamp is valid.")
-		g.P("// It is equivalent to CheckValid == nil.")
-		g.P("func (x *Timestamp) IsValid() bool {")
-		g.P("	return x.check() == 0")
-		g.P("}")
-		g.P()
-
-		g.P("// CheckValid returns an error if the timestamp is invalid.")
-		g.P("// In particular, it checks whether the value represents a date that is")
-		g.P("// in the range of 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.")
-		g.P("// An error is reported for a nil Timestamp.")
-		g.P("func (x *Timestamp) CheckValid() error {")
-		g.P("	switch x.check() {")
-		g.P("	case invalidNil:")
-		g.P("		return ", protoimplPackage.Ident("X"), ".NewError(\"invalid nil Timestamp\")")
-		g.P("	case invalidUnderflow:")
-		g.P("		return ", protoimplPackage.Ident("X"), ".NewError(\"timestamp (%v) before 0001-01-01\", x)")
-		g.P("	case invalidOverflow:")
-		g.P("		return ", protoimplPackage.Ident("X"), ".NewError(\"timestamp (%v) after 9999-12-31\", x)")
-		g.P("	case invalidNanos:")
-		g.P("		return ", protoimplPackage.Ident("X"), ".NewError(\"timestamp (%v) has out-of-range nanos\", x)")
-		g.P("	default:")
-		g.P("		return nil")
-		g.P("	}")
-		g.P("}")
-		g.P()
-
-		g.P("const (")
-		g.P("	_ = iota")
-		g.P("	invalidNil")
-		g.P("	invalidUnderflow")
-		g.P("	invalidOverflow")
-		g.P("	invalidNanos")
-		g.P(")")
-		g.P()
-
-		g.P("func (x *Timestamp) check() uint {")
-		g.P("	const minTimestamp = -62135596800  // Seconds between 1970-01-01T00:00:00Z and 0001-01-01T00:00:00Z, inclusive")
-		g.P("	const maxTimestamp = +253402300799 // Seconds between 1970-01-01T00:00:00Z and 9999-12-31T23:59:59Z, inclusive")
-		g.P("	secs := x.GetSeconds()")
-		g.P("	nanos := x.GetNanos()")
-		g.P("	switch {")
-		g.P("	case x == nil:")
-		g.P("		return invalidNil")
-		g.P("	case secs < minTimestamp:")
-		g.P("		return invalidUnderflow")
-		g.P("	case secs > maxTimestamp:")
-		g.P("		return invalidOverflow")
-		g.P("	case nanos < 0 || nanos >= 1e9:")
-		g.P("		return invalidNanos")
-		g.P("	default:")
-		g.P("		return 0")
-		g.P("	}")
-		g.P("}")
-		g.P()
-
-	case genid.Duration_message_fullname:
-		g.P("// New constructs a new Duration from the provided time.Duration.")
-		g.P("func New(d ", timePackage.Ident("Duration"), ") *Duration {")
-		g.P("	nanos := d.Nanoseconds()")
-		g.P("	secs := nanos / 1e9")
-		g.P("	nanos -= secs * 1e9")
-		g.P("	return &Duration{Seconds: int64(secs), Nanos: int32(nanos)}")
-		g.P("}")
-		g.P()
-
-		g.P("// AsDuration converts x to a time.Duration,")
-		g.P("// returning the closest duration value in the event of overflow.")
-		g.P("func (x *Duration) AsDuration() ", timePackage.Ident("Duration"), " {")
-		g.P("	secs := x.GetSeconds()")
-		g.P("	nanos := x.GetNanos()")
-		g.P("	d := ", timePackage.Ident("Duration"), "(secs) * ", timePackage.Ident("Second"))
-		g.P("	overflow := d/", timePackage.Ident("Second"), " != ", timePackage.Ident("Duration"), "(secs)")
-		g.P("	d += ", timePackage.Ident("Duration"), "(nanos) * ", timePackage.Ident("Nanosecond"))
-		g.P("	overflow = overflow || (secs < 0 && nanos < 0 && d > 0)")
-		g.P("	overflow = overflow || (secs > 0 && nanos > 0 && d < 0)")
-		g.P("	if overflow {")
-		g.P("		switch {")
-		g.P("		case secs < 0:")
-		g.P("			return ", timePackage.Ident("Duration"), "(", mathPackage.Ident("MinInt64"), ")")
-		g.P("		case secs > 0:")
-		g.P("			return ", timePackage.Ident("Duration"), "(", mathPackage.Ident("MaxInt64"), ")")
-		g.P("		}")
-		g.P("	}")
-		g.P("	return d")
-		g.P("}")
-		g.P()
-
-		g.P("// IsValid reports whether the duration is valid.")
-		g.P("// It is equivalent to CheckValid == nil.")
-		g.P("func (x *Duration) IsValid() bool {")
-		g.P("	return x.check() == 0")
-		g.P("}")
-		g.P()
-
-		g.P("// CheckValid returns an error if the duration is invalid.")
-		g.P("// In particular, it checks whether the value is within the range of")
-		g.P("// -10000 years to +10000 years inclusive.")
-		g.P("// An error is reported for a nil Duration.")
-		g.P("func (x *Duration) CheckValid() error {")
-		g.P("	switch x.check() {")
-		g.P("	case invalidNil:")
-		g.P("		return ", protoimplPackage.Ident("X"), ".NewError(\"invalid nil Duration\")")
-		g.P("	case invalidUnderflow:")
-		g.P("		return ", protoimplPackage.Ident("X"), ".NewError(\"duration (%v) exceeds -10000 years\", x)")
-		g.P("	case invalidOverflow:")
-		g.P("		return ", protoimplPackage.Ident("X"), ".NewError(\"duration (%v) exceeds +10000 years\", x)")
-		g.P("	case invalidNanosRange:")
-		g.P("		return ", protoimplPackage.Ident("X"), ".NewError(\"duration (%v) has out-of-range nanos\", x)")
-		g.P("	case invalidNanosSign:")
-		g.P("		return ", protoimplPackage.Ident("X"), ".NewError(\"duration (%v) has seconds and nanos with different signs\", x)")
-		g.P("	default:")
-		g.P("		return nil")
-		g.P("	}")
-		g.P("}")
-		g.P()
-
-		g.P("const (")
-		g.P("	_ = iota")
-		g.P("	invalidNil")
-		g.P("	invalidUnderflow")
-		g.P("	invalidOverflow")
-		g.P("	invalidNanosRange")
-		g.P("	invalidNanosSign")
-		g.P(")")
-		g.P()
-
-		g.P("func (x *Duration) check() uint {")
-		g.P("	const absDuration = 315576000000 // 10000yr * 365.25day/yr * 24hr/day * 60min/hr * 60sec/min")
-		g.P("	secs := x.GetSeconds()")
-		g.P("	nanos := x.GetNanos()")
-		g.P("	switch {")
-		g.P("	case x == nil:")
-		g.P("		return invalidNil")
-		g.P("	case secs < -absDuration:")
-		g.P("		return invalidUnderflow")
-		g.P("	case secs > +absDuration:")
-		g.P("		return invalidOverflow")
-		g.P("	case nanos <= -1e9 || nanos >= +1e9:")
-		g.P("		return invalidNanosRange")
-		g.P("	case (secs > 0 && nanos < 0) || (secs < 0 && nanos > 0):")
-		g.P("		return invalidNanosSign")
-		g.P("	default:")
-		g.P("		return 0")
-		g.P("	}")
-		g.P("}")
-		g.P()
-
-	case genid.Struct_message_fullname:
-		g.P("// NewStruct constructs a Struct from a general-purpose Go map.")
-		g.P("// The map keys must be valid UTF-8.")
-		g.P("// The map values are converted using NewValue.")
-		g.P("func NewStruct(v map[string]interface{}) (*Struct, error) {")
-		g.P("	x := &Struct{Fields: make(map[string]*Value, len(v))}")
-		g.P("	for k, v := range v {")
-		g.P("		if !", utf8Package.Ident("ValidString"), "(k) {")
-		g.P("			return nil, ", protoimplPackage.Ident("X"), ".NewError(\"invalid UTF-8 in string: %q\", k)")
-		g.P("		}")
-		g.P("		var err error")
-		g.P("		x.Fields[k], err = NewValue(v)")
-		g.P("		if err != nil {")
-		g.P("			return nil, err")
-		g.P("		}")
-		g.P("	}")
-		g.P("	return x, nil")
-		g.P("}")
-		g.P()
-
-		g.P("// AsMap converts x to a general-purpose Go map.")
-		g.P("// The map values are converted by calling Value.AsInterface.")
-		g.P("func (x *Struct) AsMap() map[string]interface{} {")
-		g.P("	vs := make(map[string]interface{})")
-		g.P("	for k, v := range x.GetFields() {")
-		g.P("		vs[k] = v.AsInterface()")
-		g.P("	}")
-		g.P("	return vs")
-		g.P("}")
-		g.P()
-
-		g.P("func (x *Struct) MarshalJSON() ([]byte, error) {")
-		g.P("	return ", protojsonPackage.Ident("Marshal"), "(x)")
-		g.P("}")
-		g.P()
-
-		g.P("func (x *Struct) UnmarshalJSON(b []byte) error {")
-		g.P("	return ", protojsonPackage.Ident("Unmarshal"), "(b, x)")
-		g.P("}")
-		g.P()
-
-	case genid.ListValue_message_fullname:
-		g.P("// NewList constructs a ListValue from a general-purpose Go slice.")
-		g.P("// The slice elements are converted using NewValue.")
-		g.P("func NewList(v []interface{}) (*ListValue, error) {")
-		g.P("	x := &ListValue{Values: make([]*Value, len(v))}")
-		g.P("	for i, v := range v {")
-		g.P("		var err error")
-		g.P("		x.Values[i], err = NewValue(v)")
-		g.P("		if err != nil {")
-		g.P("			return nil, err")
-		g.P("		}")
-		g.P("	}")
-		g.P("	return x, nil")
-		g.P("}")
-		g.P()
-
-		g.P("// AsSlice converts x to a general-purpose Go slice.")
-		g.P("// The slice elements are converted by calling Value.AsInterface.")
-		g.P("func (x *ListValue) AsSlice() []interface{} {")
-		g.P("	vs := make([]interface{}, len(x.GetValues()))")
-		g.P("	for i, v := range x.GetValues() {")
-		g.P("		vs[i] = v.AsInterface()")
-		g.P("	}")
-		g.P("	return vs")
-		g.P("}")
-		g.P()
-
-		g.P("func (x *ListValue) MarshalJSON() ([]byte, error) {")
-		g.P("	return ", protojsonPackage.Ident("Marshal"), "(x)")
-		g.P("}")
-		g.P()
-
-		g.P("func (x *ListValue) UnmarshalJSON(b []byte) error {")
-		g.P("	return ", protojsonPackage.Ident("Unmarshal"), "(b, x)")
-		g.P("}")
-		g.P()
-
-	case genid.Value_message_fullname:
-		g.P("// NewValue constructs a Value from a general-purpose Go interface.")
-		g.P("//")
-		g.P("//	╔════════════════════════╤════════════════════════════════════════════╗")
-		g.P("//	║ Go type                │ Conversion                                 ║")
-		g.P("//	╠════════════════════════╪════════════════════════════════════════════╣")
-		g.P("//	║ nil                    │ stored as NullValue                        ║")
-		g.P("//	║ bool                   │ stored as BoolValue                        ║")
-		g.P("//	║ int, int32, int64      │ stored as NumberValue                      ║")
-		g.P("//	║ uint, uint32, uint64   │ stored as NumberValue                      ║")
-		g.P("//	║ float32, float64       │ stored as NumberValue                      ║")
-		g.P("//	║ string                 │ stored as StringValue; must be valid UTF-8 ║")
-		g.P("//	║ []byte                 │ stored as StringValue; base64-encoded      ║")
-		g.P("//	║ map[string]interface{} │ stored as StructValue                      ║")
-		g.P("//	║ []interface{}          │ stored as ListValue                        ║")
-		g.P("//	╚════════════════════════╧════════════════════════════════════════════╝")
-		g.P("//")
-		g.P("// When converting an int64 or uint64 to a NumberValue, numeric precision loss")
-		g.P("// is possible since they are stored as a float64.")
-		g.P("func NewValue(v interface{}) (*Value, error) {")
-		g.P("	switch v := v.(type) {")
-		g.P("	case nil:")
-		g.P("		return NewNullValue(), nil")
-		g.P("	case bool:")
-		g.P("		return NewBoolValue(v), nil")
-		g.P("	case int:")
-		g.P("		return NewNumberValue(float64(v)), nil")
-		g.P("	case int32:")
-		g.P("		return NewNumberValue(float64(v)), nil")
-		g.P("	case int64:")
-		g.P("		return NewNumberValue(float64(v)), nil")
-		g.P("	case uint:")
-		g.P("		return NewNumberValue(float64(v)), nil")
-		g.P("	case uint32:")
-		g.P("		return NewNumberValue(float64(v)), nil")
-		g.P("	case uint64:")
-		g.P("		return NewNumberValue(float64(v)), nil")
-		g.P("	case float32:")
-		g.P("		return NewNumberValue(float64(v)), nil")
-		g.P("	case float64:")
-		g.P("		return NewNumberValue(float64(v)), nil")
-		g.P("	case string:")
-		g.P("		if !", utf8Package.Ident("ValidString"), "(v) {")
-		g.P("			return nil, ", protoimplPackage.Ident("X"), ".NewError(\"invalid UTF-8 in string: %q\", v)")
-		g.P("		}")
-		g.P("		return NewStringValue(v), nil")
-		g.P("	case []byte:")
-		g.P("		s := ", base64Package.Ident("StdEncoding"), ".EncodeToString(v)")
-		g.P("		return NewStringValue(s), nil")
-		g.P("	case map[string]interface{}:")
-		g.P("		v2, err := NewStruct(v)")
-		g.P("		if err != nil {")
-		g.P("			return nil, err")
-		g.P("		}")
-		g.P("		return NewStructValue(v2), nil")
-		g.P("	case []interface{}:")
-		g.P("		v2, err := NewList(v)")
-		g.P("		if err != nil {")
-		g.P("			return nil, err")
-		g.P("		}")
-		g.P("		return NewListValue(v2), nil")
-		g.P("	default:")
-		g.P("		return nil, ", protoimplPackage.Ident("X"), ".NewError(\"invalid type: %T\", v)")
-		g.P("	}")
-		g.P("}")
-		g.P()
-
-		g.P("// NewNullValue constructs a new null Value.")
-		g.P("func NewNullValue() *Value {")
-		g.P("	return &Value{Kind: &Value_NullValue{NullValue: NullValue_NULL_VALUE}}")
-		g.P("}")
-		g.P()
-
-		g.P("// NewBoolValue constructs a new boolean Value.")
-		g.P("func NewBoolValue(v bool) *Value {")
-		g.P("	return &Value{Kind: &Value_BoolValue{BoolValue: v}}")
-		g.P("}")
-		g.P()
-
-		g.P("// NewNumberValue constructs a new number Value.")
-		g.P("func NewNumberValue(v float64) *Value {")
-		g.P("	return &Value{Kind: &Value_NumberValue{NumberValue: v}}")
-		g.P("}")
-		g.P()
-
-		g.P("// NewStringValue constructs a new string Value.")
-		g.P("func NewStringValue(v string) *Value {")
-		g.P("	return &Value{Kind: &Value_StringValue{StringValue: v}}")
-		g.P("}")
-		g.P()
-
-		g.P("// NewStructValue constructs a new struct Value.")
-		g.P("func NewStructValue(v *Struct) *Value {")
-		g.P("	return &Value{Kind: &Value_StructValue{StructValue: v}}")
-		g.P("}")
-		g.P()
-
-		g.P("// NewListValue constructs a new list Value.")
-		g.P("func NewListValue(v *ListValue) *Value {")
-		g.P("	return &Value{Kind: &Value_ListValue{ListValue: v}}")
-		g.P("}")
-		g.P()
-
-		g.P("// AsInterface converts x to a general-purpose Go interface.")
-		g.P("//")
-		g.P("// Calling Value.MarshalJSON and \"encoding/json\".Marshal on this output produce")
-		g.P("// semantically equivalent JSON (assuming no errors occur).")
-		g.P("//")
-		g.P("// Floating-point values (i.e., \"NaN\", \"Infinity\", and \"-Infinity\") are")
-		g.P("// converted as strings to remain compatible with MarshalJSON.")
-		g.P("func (x *Value) AsInterface() interface{} {")
-		g.P("	switch v := x.GetKind().(type) {")
-		g.P("	case *Value_NumberValue:")
-		g.P("		if v != nil {")
-		g.P("			switch {")
-		g.P("			case ", mathPackage.Ident("IsNaN"), "(v.NumberValue):")
-		g.P("				return \"NaN\"")
-		g.P("			case ", mathPackage.Ident("IsInf"), "(v.NumberValue, +1):")
-		g.P("				return \"Infinity\"")
-		g.P("			case ", mathPackage.Ident("IsInf"), "(v.NumberValue, -1):")
-		g.P("				return \"-Infinity\"")
-		g.P("			default:")
-		g.P("				return v.NumberValue")
-		g.P("			}")
-		g.P("		}")
-		g.P("	case *Value_StringValue:")
-		g.P("		if v != nil {")
-		g.P("			return v.StringValue")
-		g.P("		}")
-		g.P("	case *Value_BoolValue:")
-		g.P("		if v != nil {")
-		g.P("			return v.BoolValue")
-		g.P("		}")
-		g.P("	case *Value_StructValue:")
-		g.P("		if v != nil {")
-		g.P("			return v.StructValue.AsMap()")
-		g.P("		}")
-		g.P("	case *Value_ListValue:")
-		g.P("		if v != nil {")
-		g.P("			return v.ListValue.AsSlice()")
-		g.P("		}")
-		g.P("	}")
-		g.P("	return nil")
-		g.P("}")
-		g.P()
-
-		g.P("func (x *Value) MarshalJSON() ([]byte, error) {")
-		g.P("	return ", protojsonPackage.Ident("Marshal"), "(x)")
-		g.P("}")
-		g.P()
-
-		g.P("func (x *Value) UnmarshalJSON(b []byte) error {")
-		g.P("	return ", protojsonPackage.Ident("Unmarshal"), "(b, x)")
-		g.P("}")
-		g.P()
-
-	case genid.FieldMask_message_fullname:
-		g.P("// New constructs a field mask from a list of paths and verifies that")
-		g.P("// each one is valid according to the specified message type.")
-		g.P("func New(m ", protoPackage.Ident("Message"), ", paths ...string) (*FieldMask, error) {")
-		g.P("	x := new(FieldMask)")
-		g.P("	return x, x.Append(m, paths...)")
-		g.P("}")
-		g.P()
-
-		g.P("// Union returns the union of all the paths in the input field masks.")
-		g.P("func Union(mx *FieldMask, my *FieldMask, ms ...*FieldMask) *FieldMask {")
-		g.P("	var out []string")
-		g.P("	out = append(out, mx.GetPaths()...)")
-		g.P("	out = append(out, my.GetPaths()...)")
-		g.P("	for _, m := range ms {")
-		g.P("		out = append(out, m.GetPaths()...)")
-		g.P("	}")
-		g.P("	return &FieldMask{Paths: normalizePaths(out)}")
-		g.P("}")
-		g.P()
-
-		g.P("// Intersect returns the intersection of all the paths in the input field masks.")
-		g.P("func Intersect(mx *FieldMask, my *FieldMask, ms ...*FieldMask) *FieldMask {")
-		g.P("	var ss1, ss2 []string // reused buffers for performance")
-		g.P("	intersect := func(out, in []string) []string {")
-		g.P("		ss1 = normalizePaths(append(ss1[:0], in...))")
-		g.P("		ss2 = normalizePaths(append(ss2[:0], out...))")
-		g.P("		out = out[:0]")
-		g.P("		for i1, i2 := 0, 0; i1 < len(ss1) && i2 < len(ss2); {")
-		g.P("			switch s1, s2 := ss1[i1], ss2[i2]; {")
-		g.P("			case hasPathPrefix(s1, s2):")
-		g.P("				out = append(out, s1)")
-		g.P("				i1++")
-		g.P("			case hasPathPrefix(s2, s1):")
-		g.P("				out = append(out, s2)")
-		g.P("				i2++")
-		g.P("			case lessPath(s1, s2):")
-		g.P("				i1++")
-		g.P("			case lessPath(s2, s1):")
-		g.P("				i2++")
-		g.P("			}")
-		g.P("		}")
-		g.P("		return out")
-		g.P("	}")
-		g.P()
-		g.P("	out := Union(mx, my, ms...).GetPaths()")
-		g.P("	out = intersect(out, mx.GetPaths())")
-		g.P("	out = intersect(out, my.GetPaths())")
-		g.P("	for _, m := range ms {")
-		g.P("		out = intersect(out, m.GetPaths())")
-		g.P("	}")
-		g.P("	return &FieldMask{Paths: normalizePaths(out)}")
-		g.P("}")
-		g.P()
-
-		g.P("// IsValid reports whether all the paths are syntactically valid and")
-		g.P("// refer to known fields in the specified message type.")
-		g.P("// It reports false for a nil FieldMask.")
-		g.P("func (x *FieldMask) IsValid(m ", protoPackage.Ident("Message"), ") bool {")
-		g.P("	paths := x.GetPaths()")
-		g.P("	return x != nil && numValidPaths(m, paths) == len(paths)")
-		g.P("}")
-		g.P()
-
-		g.P("// Append appends a list of paths to the mask and verifies that each one")
-		g.P("// is valid according to the specified message type.")
-		g.P("// An invalid path is not appended and breaks insertion of subsequent paths.")
-		g.P("func (x *FieldMask) Append(m ", protoPackage.Ident("Message"), ", paths ...string) error {")
-		g.P("	numValid := numValidPaths(m, paths)")
-		g.P("	x.Paths = append(x.Paths, paths[:numValid]...)")
-		g.P("	paths = paths[numValid:]")
-		g.P("	if len(paths) > 0 {")
-		g.P("		name := m.ProtoReflect().Descriptor().FullName()")
-		g.P("		return ", protoimplPackage.Ident("X"), ".NewError(\"invalid path %q for message %q\", paths[0], name)")
-		g.P("	}")
-		g.P("	return nil")
-		g.P("}")
-		g.P()
-
-		g.P("func numValidPaths(m ", protoPackage.Ident("Message"), ", paths []string) int {")
-		g.P("	md0 := m.ProtoReflect().Descriptor()")
-		g.P("	for i, path := range paths {")
-		g.P("		md := md0")
-		g.P("		if !rangeFields(path, func(field string) bool {")
-		g.P("			// Search the field within the message.")
-		g.P("			if md == nil {")
-		g.P("				return false // not within a message")
-		g.P("			}")
-		g.P("			fd := md.Fields().ByName(", protoreflectPackage.Ident("Name"), "(field))")
-		g.P("			// The real field name of a group is the message name.")
-		g.P("			if fd == nil {")
-		g.P("				gd := md.Fields().ByName(", protoreflectPackage.Ident("Name"), "(", stringsPackage.Ident("ToLower"), "(field)))")
-		g.P("				if gd != nil && gd.Kind() == ", protoreflectPackage.Ident("GroupKind"), " && string(gd.Message().Name()) == field {")
-		g.P("					fd = gd")
-		g.P("				}")
-		g.P("			} else if fd.Kind() == ", protoreflectPackage.Ident("GroupKind"), " && string(fd.Message().Name()) != field {")
-		g.P("				fd = nil")
-		g.P("			}")
-		g.P("			if fd == nil {")
-		g.P("				return false // message has does not have this field")
-		g.P("			}")
-		g.P()
-		g.P("			// Identify the next message to search within.")
-		g.P("			md = fd.Message() // may be nil")
-		g.P()
-		g.P("			// Repeated fields are only allowed at the last postion.")
-		g.P("			if fd.IsList() || fd.IsMap() {")
-		g.P("				md = nil")
-		g.P("			}")
-		g.P()
-		g.P("			return true")
-		g.P("		}) {")
-		g.P("			return i")
-		g.P("		}")
-		g.P("	}")
-		g.P("	return len(paths)")
-		g.P("}")
-		g.P()
-
-		g.P("// Normalize converts the mask to its canonical form where all paths are sorted")
-		g.P("// and redundant paths are removed.")
-		g.P("func (x *FieldMask) Normalize() {")
-		g.P("	x.Paths = normalizePaths(x.Paths)")
-		g.P("}")
-		g.P()
-		g.P("func normalizePaths(paths []string) []string {")
-		g.P("	", sortPackage.Ident("Slice"), "(paths, func(i, j int) bool {")
-		g.P("		return lessPath(paths[i], paths[j])")
-		g.P("	})")
-		g.P()
-		g.P("	// Elide any path that is a prefix match on the previous.")
-		g.P("	out := paths[:0]")
-		g.P("	for _, path := range paths {")
-		g.P("		if len(out) > 0 && hasPathPrefix(path, out[len(out)-1]) {")
-		g.P("			continue")
-		g.P("		}")
-		g.P("		out = append(out, path)")
-		g.P("	}")
-		g.P("	return out")
-		g.P("}")
-		g.P()
-
-		g.P("// hasPathPrefix is like strings.HasPrefix, but further checks for either")
-		g.P("// an exact matche or that the prefix is delimited by a dot.")
-		g.P("func hasPathPrefix(path, prefix string) bool {")
-		g.P("	return ", stringsPackage.Ident("HasPrefix"), "(path, prefix) && (len(path) == len(prefix) || path[len(prefix)] == '.')")
-		g.P("}")
-		g.P()
-
-		g.P("// lessPath is a lexicographical comparison where dot is specially treated")
-		g.P("// as the smallest symbol.")
-		g.P("func lessPath(x, y string) bool {")
-		g.P("	for i := 0; i < len(x) && i < len(y); i++ {")
-		g.P("		if x[i] != y[i] {")
-		g.P("			return (x[i] - '.') < (y[i] - '.')")
-		g.P("		}")
-		g.P("	}")
-		g.P("	return len(x) < len(y)")
-		g.P("}")
-		g.P()
-
-		g.P("// rangeFields is like strings.Split(path, \".\"), but avoids allocations by")
-		g.P("// iterating over each field in place and calling a iterator function.")
-		g.P("func rangeFields(path string, f func(field string) bool) bool {")
-		g.P("	for {")
-		g.P("		var field string")
-		g.P("		if i := ", stringsPackage.Ident("IndexByte"), "(path, '.'); i >= 0 {")
-		g.P("			field, path = path[:i], path[i:]")
-		g.P("		} else {")
-		g.P("			field, path = path, \"\"")
-		g.P("		}")
-		g.P()
-		g.P("		if !f(field) {")
-		g.P("			return false")
-		g.P("		}")
-		g.P()
-		g.P("		if len(path) == 0 {")
-		g.P("			return true")
-		g.P("		}")
-		g.P("		path = ", stringsPackage.Ident("TrimPrefix"), "(path, \".\")")
-		g.P("	}")
-		g.P("}")
-		g.P()
-
-	case genid.BoolValue_message_fullname,
-		genid.Int32Value_message_fullname,
-		genid.Int64Value_message_fullname,
-		genid.UInt32Value_message_fullname,
-		genid.UInt64Value_message_fullname,
-		genid.FloatValue_message_fullname,
-		genid.DoubleValue_message_fullname,
-		genid.StringValue_message_fullname,
-		genid.BytesValue_message_fullname:
-		funcName := strings.TrimSuffix(m.GoIdent.GoName, "Value")
-		typeName := strings.ToLower(funcName)
-		switch typeName {
-		case "float":
-			typeName = "float32"
-		case "double":
-			typeName = "float64"
-		case "bytes":
-			typeName = "[]byte"
-		}
-
-		g.P("// ", funcName, " stores v in a new ", m.GoIdent, " and returns a pointer to it.")
-		g.P("func ", funcName, "(v ", typeName, ") *", m.GoIdent, " {")
-		g.P("	return &", m.GoIdent, "{Value: v}")
-		g.P("}")
-		g.P()
-	}
-}
diff --git a/cmd/protoc-gen-go/main.go b/cmd/protoc-gen-go/main.go
deleted file mode 100644
index 0559ee3..0000000
--- a/cmd/protoc-gen-go/main.go
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// The protoc-gen-go binary is a protoc plugin to generate Go code for
-// both proto2 and proto3 versions of the protocol buffer language.
-//
-// For more information about the usage of this plugin, see:
-//	https://developers.google.com/protocol-buffers/docs/reference/go-generated
-package main
-
-import (
-	"errors"
-	"flag"
-	"fmt"
-	"os"
-	"path/filepath"
-
-	gengo "google.golang.org/protobuf/cmd/protoc-gen-go/internal_gengo"
-	"google.golang.org/protobuf/compiler/protogen"
-	"google.golang.org/protobuf/internal/version"
-)
-
-const genGoDocURL = "https://developers.google.com/protocol-buffers/docs/reference/go-generated"
-const grpcDocURL = "https://grpc.io/docs/languages/go/quickstart/#regenerate-grpc-code"
-
-func main() {
-	if len(os.Args) == 2 && os.Args[1] == "--version" {
-		fmt.Fprintf(os.Stdout, "%v %v\n", filepath.Base(os.Args[0]), version.String())
-		os.Exit(0)
-	}
-	if len(os.Args) == 2 && os.Args[1] == "--help" {
-		fmt.Fprintf(os.Stdout, "See "+genGoDocURL+" for usage information.\n")
-		os.Exit(0)
-	}
-
-	var (
-		flags   flag.FlagSet
-		plugins = flags.String("plugins", "", "deprecated option")
-	)
-	protogen.Options{
-		ParamFunc: flags.Set,
-	}.Run(func(gen *protogen.Plugin) error {
-		if *plugins != "" {
-			return errors.New("protoc-gen-go: plugins are not supported; use 'protoc --go-grpc_out=...' to generate gRPC\n\n" +
-				"See " + grpcDocURL + " for more information.")
-		}
-		for _, f := range gen.Files {
-			if f.Generate {
-				gengo.GenerateFile(gen, f)
-			}
-		}
-		gen.SupportedFeatures = gengo.SupportedFeatures
-		return nil
-	})
-}
diff --git a/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go b/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go
deleted file mode 100644
index 2a5fd24..0000000
--- a/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go
+++ /dev/null
@@ -1,205 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/annotations/annotations.proto
-
-package annotations
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type AnnotationsTestEnum int32
-
-const (
-	AnnotationsTestEnum_ANNOTATIONS_TEST_ENUM_VALUE AnnotationsTestEnum = 0
-)
-
-// Enum value maps for AnnotationsTestEnum.
-var (
-	AnnotationsTestEnum_name = map[int32]string{
-		0: "ANNOTATIONS_TEST_ENUM_VALUE",
-	}
-	AnnotationsTestEnum_value = map[string]int32{
-		"ANNOTATIONS_TEST_ENUM_VALUE": 0,
-	}
-)
-
-func (x AnnotationsTestEnum) Enum() *AnnotationsTestEnum {
-	p := new(AnnotationsTestEnum)
-	*p = x
-	return p
-}
-
-func (x AnnotationsTestEnum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (AnnotationsTestEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_enumTypes[0].Descriptor()
-}
-
-func (AnnotationsTestEnum) Type() protoreflect.EnumType {
-	return &file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_enumTypes[0]
-}
-
-func (x AnnotationsTestEnum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *AnnotationsTestEnum) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = AnnotationsTestEnum(num)
-	return nil
-}
-
-// Deprecated: Use AnnotationsTestEnum.Descriptor instead.
-func (AnnotationsTestEnum) EnumDescriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDescGZIP(), []int{0}
-}
-
-type AnnotationsTestMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	AnnotationsTestField *string `protobuf:"bytes,1,opt,name=AnnotationsTestField" json:"AnnotationsTestField,omitempty"`
-}
-
-func (x *AnnotationsTestMessage) Reset() {
-	*x = AnnotationsTestMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *AnnotationsTestMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*AnnotationsTestMessage) ProtoMessage() {}
-
-func (x *AnnotationsTestMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use AnnotationsTestMessage.ProtoReflect.Descriptor instead.
-func (*AnnotationsTestMessage) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *AnnotationsTestMessage) GetAnnotationsTestField() string {
-	if x != nil && x.AnnotationsTestField != nil {
-		return *x.AnnotationsTestField
-	}
-	return ""
-}
-
-var File_cmd_protoc_gen_go_testdata_annotations_annotations_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDesc = []byte{
-	0x0a, 0x38, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x61, 0x6e, 0x6e,
-	0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74,
-	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
-	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x4c, 0x0a, 0x16, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61,
-	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x12, 0x32, 0x0a, 0x14, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x54,
-	0x65, 0x73, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14,
-	0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x65, 0x73, 0x74, 0x46,
-	0x69, 0x65, 0x6c, 0x64, 0x2a, 0x36, 0x0a, 0x13, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
-	0x6f, 0x6e, 0x73, 0x54, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x1b, 0x41,
-	0x4e, 0x4e, 0x4f, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x00, 0x42, 0x43, 0x5a, 0x41,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72,
-	0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73,
-	0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x73,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDescData = file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_goTypes = []interface{}{
-	(AnnotationsTestEnum)(0),       // 0: goproto.protoc.annotations.AnnotationsTestEnum
-	(*AnnotationsTestMessage)(nil), // 1: goproto.protoc.annotations.AnnotationsTestMessage
-}
-var file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_init() }
-func file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_annotations_annotations_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*AnnotationsTestMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDesc,
-			NumEnums:      1,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_depIdxs,
-		EnumInfos:         file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_enumTypes,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_annotations_annotations_proto = out.File
-	file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_annotations_annotations_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go.meta b/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go.meta
deleted file mode 100644
index 91f84f3..0000000
--- a/cmd/protoc-gen-go/testdata/annotations/annotations.pb.go.meta
+++ /dev/null
@@ -1 +0,0 @@
-annotation:{path:5 path:0 source_file:"cmd/protoc-gen-go/testdata/annotations/annotations.proto" begin:470 end:489} annotation:{path:5 path:0 path:2 path:0 source_file:"cmd/protoc-gen-go/testdata/annotations/annotations.proto" begin:506 end:553} annotation:{path:4 path:0 source_file:"cmd/protoc-gen-go/testdata/annotations/annotations.proto" begin:1912 end:1934} annotation:{path:4 path:0 path:2 path:0 source_file:"cmd/protoc-gen-go/testdata/annotations/annotations.proto" begin:2058 end:2078} annotation:{path:4 path:0 path:2 path:0 source_file:"cmd/protoc-gen-go/testdata/annotations/annotations.proto" begin:3225 end:3248}
\ No newline at end of file
diff --git a/cmd/protoc-gen-go/testdata/annotations/annotations.proto b/cmd/protoc-gen-go/testdata/annotations/annotations.proto
deleted file mode 100644
index acd7b86..0000000
--- a/cmd/protoc-gen-go/testdata/annotations/annotations.proto
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.protoc.annotations;
-
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/annotations";
-
-message AnnotationsTestMessage {
-  optional string AnnotationsTestField = 1;
-}
-
-enum AnnotationsTestEnum {
-  ANNOTATIONS_TEST_ENUM_VALUE = 0;
-}
diff --git a/cmd/protoc-gen-go/testdata/comments/comments.pb.go b/cmd/protoc-gen-go/testdata/comments/comments.pb.go
deleted file mode 100644
index 5b3fcf4..0000000
--- a/cmd/protoc-gen-go/testdata/comments/comments.pb.go
+++ /dev/null
@@ -1,542 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/comments/comments.proto
-
-// COMMENT: package goproto.protoc.comments;
-
-package comments
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-// COMMENT: Enum1.Leading
-type Enum1 int32
-
-const (
-	// COMMENT: FOO.Leading
-	Enum1_FOO Enum1 = 0 // COMMENT: FOO.InlineTrailing
-	// COMMENT: BAR.Leading
-	Enum1_BAR Enum1 = 1
-)
-
-// Enum value maps for Enum1.
-var (
-	Enum1_name = map[int32]string{
-		0: "FOO",
-		1: "BAR",
-	}
-	Enum1_value = map[string]int32{
-		"FOO": 0,
-		"BAR": 1,
-	}
-)
-
-func (x Enum1) Enum() *Enum1 {
-	p := new(Enum1)
-	*p = x
-	return p
-}
-
-func (x Enum1) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum1) Descriptor() protoreflect.EnumDescriptor {
-	return file_cmd_protoc_gen_go_testdata_comments_comments_proto_enumTypes[0].Descriptor()
-}
-
-func (Enum1) Type() protoreflect.EnumType {
-	return &file_cmd_protoc_gen_go_testdata_comments_comments_proto_enumTypes[0]
-}
-
-func (x Enum1) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum1) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum1(num)
-	return nil
-}
-
-// Deprecated: Use Enum1.Descriptor instead.
-func (Enum1) EnumDescriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescGZIP(), []int{0}
-}
-
-// COMMENT: Message1.Leading
-type Message1 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	// COMMENT: Field1A.Leading
-	Field1A *string `protobuf:"bytes,1,opt,name=Field1A" json:"Field1A,omitempty"` // COMMENT: Field1A.Trailing
-	// COMMENT: Oneof1A.Leading
-	//
-	// Types that are assignable to Oneof1A:
-	//	*Message1_Oneof1AField1
-	Oneof1A isMessage1_Oneof1A `protobuf_oneof:"Oneof1a"`
-}
-
-func (x *Message1) Reset() {
-	*x = Message1{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_comments_comments_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message1) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message1) ProtoMessage() {}
-
-func (x *Message1) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_comments_comments_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message1.ProtoReflect.Descriptor instead.
-func (*Message1) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Message1) GetField1A() string {
-	if x != nil && x.Field1A != nil {
-		return *x.Field1A
-	}
-	return ""
-}
-
-func (m *Message1) GetOneof1A() isMessage1_Oneof1A {
-	if m != nil {
-		return m.Oneof1A
-	}
-	return nil
-}
-
-func (x *Message1) GetOneof1AField1() string {
-	if x, ok := x.GetOneof1A().(*Message1_Oneof1AField1); ok {
-		return x.Oneof1AField1
-	}
-	return ""
-}
-
-type isMessage1_Oneof1A interface {
-	isMessage1_Oneof1A()
-}
-
-type Message1_Oneof1AField1 struct {
-	// COMMENT: Oneof1AField1.Leading
-	Oneof1AField1 string `protobuf:"bytes,2,opt,name=Oneof1AField1,oneof"` // COMMENT: Oneof1AField1.Trailing
-}
-
-func (*Message1_Oneof1AField1) isMessage1_Oneof1A() {}
-
-// COMMENT: Message2
-type Message2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message2) Reset() {
-	*x = Message2{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_comments_comments_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message2) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message2) ProtoMessage() {}
-
-func (x *Message2) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_comments_comments_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message2.ProtoReflect.Descriptor instead.
-func (*Message2) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescGZIP(), []int{1}
-}
-
-// COMMENT: Message1A.Leading
-type Message1_Message1A struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message1_Message1A) Reset() {
-	*x = Message1_Message1A{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_comments_comments_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message1_Message1A) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message1_Message1A) ProtoMessage() {}
-
-func (x *Message1_Message1A) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_comments_comments_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message1_Message1A.ProtoReflect.Descriptor instead.
-func (*Message1_Message1A) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescGZIP(), []int{0, 0}
-}
-
-// COMMENT: Message1B
-type Message1_Message1B struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message1_Message1B) Reset() {
-	*x = Message1_Message1B{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_comments_comments_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message1_Message1B) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message1_Message1B) ProtoMessage() {}
-
-func (x *Message1_Message1B) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_comments_comments_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message1_Message1B.ProtoReflect.Descriptor instead.
-func (*Message1_Message1B) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescGZIP(), []int{0, 1}
-}
-
-// COMMENT: Message2A
-type Message2_Message2A struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message2_Message2A) Reset() {
-	*x = Message2_Message2A{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_comments_comments_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message2_Message2A) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message2_Message2A) ProtoMessage() {}
-
-func (x *Message2_Message2A) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_comments_comments_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message2_Message2A.ProtoReflect.Descriptor instead.
-func (*Message2_Message2A) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescGZIP(), []int{1, 0}
-}
-
-// COMMENT: Message2B
-type Message2_Message2B struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message2_Message2B) Reset() {
-	*x = Message2_Message2B{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_comments_comments_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message2_Message2B) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message2_Message2B) ProtoMessage() {}
-
-func (x *Message2_Message2B) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_comments_comments_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message2_Message2B.ProtoReflect.Descriptor instead.
-func (*Message2_Message2B) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescGZIP(), []int{1, 1}
-}
-
-var file_cmd_protoc_gen_go_testdata_comments_comments_proto_extTypes = []protoimpl.ExtensionInfo{
-	{
-		ExtendedType:  (*Message1)(nil),
-		ExtensionType: (*Message1)(nil),
-		Field:         100,
-		Name:          "goproto.protoc.comments.extension",
-		Tag:           "bytes,100,opt,name=extension",
-		Filename:      "cmd/protoc-gen-go/testdata/comments/comments.proto",
-	},
-}
-
-// Extension fields to Message1.
-var (
-	// COMMENT: Extension.Leading
-	//
-	// optional goproto.protoc.comments.Message1 extension = 100;
-	E_Extension = &file_cmd_protoc_gen_go_testdata_comments_comments_proto_extTypes[0] // COMMENT: Extension.Trailing
-)
-
-var File_cmd_protoc_gen_go_testdata_comments_comments_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDesc = []byte{
-	0x0a, 0x32, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x63, 0x6f, 0x6d,
-	0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0x7b, 0x0a,
-	0x08, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x46, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x41, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x46, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x41, 0x12, 0x26, 0x0a, 0x0d, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x31, 0x41, 0x46, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0d, 0x4f, 0x6e,
-	0x65, 0x6f, 0x66, 0x31, 0x41, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x1a, 0x0b, 0x0a, 0x09, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x41, 0x1a, 0x0b, 0x0a, 0x09, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x42, 0x2a, 0x08, 0x08, 0x64, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x42,
-	0x09, 0x0a, 0x07, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x31, 0x61, 0x22, 0x24, 0x0a, 0x08, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x1a, 0x0b, 0x0a, 0x09, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x32, 0x41, 0x1a, 0x0b, 0x0a, 0x09, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x42,
-	0x2a, 0x19, 0x0a, 0x05, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x12, 0x07, 0x0a, 0x03, 0x46, 0x4f, 0x4f,
-	0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x41, 0x52, 0x10, 0x01, 0x3a, 0x62, 0x0a, 0x09, 0x65,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
-	0x74, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x18, 0x64, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x63, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42,
-	0x40, 0x5a, 0x3e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
-	0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d,
-	0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f,
-	0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74,
-	0x73,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescData = file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_comments_comments_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_cmd_protoc_gen_go_testdata_comments_comments_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
-var file_cmd_protoc_gen_go_testdata_comments_comments_proto_goTypes = []interface{}{
-	(Enum1)(0),                 // 0: goproto.protoc.comments.Enum1
-	(*Message1)(nil),           // 1: goproto.protoc.comments.Message1
-	(*Message2)(nil),           // 2: goproto.protoc.comments.Message2
-	(*Message1_Message1A)(nil), // 3: goproto.protoc.comments.Message1.Message1A
-	(*Message1_Message1B)(nil), // 4: goproto.protoc.comments.Message1.Message1B
-	(*Message2_Message2A)(nil), // 5: goproto.protoc.comments.Message2.Message2A
-	(*Message2_Message2B)(nil), // 6: goproto.protoc.comments.Message2.Message2B
-}
-var file_cmd_protoc_gen_go_testdata_comments_comments_proto_depIdxs = []int32{
-	1, // 0: goproto.protoc.comments.extension:extendee -> goproto.protoc.comments.Message1
-	1, // 1: goproto.protoc.comments.extension:type_name -> goproto.protoc.comments.Message1
-	2, // [2:2] is the sub-list for method output_type
-	2, // [2:2] is the sub-list for method input_type
-	1, // [1:2] is the sub-list for extension type_name
-	0, // [0:1] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_comments_comments_proto_init() }
-func file_cmd_protoc_gen_go_testdata_comments_comments_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_comments_comments_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_comments_comments_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message1); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_comments_comments_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message2); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_comments_comments_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message1_Message1A); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_comments_comments_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message1_Message1B); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_comments_comments_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message2_Message2A); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_comments_comments_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message2_Message2B); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	file_cmd_protoc_gen_go_testdata_comments_comments_proto_msgTypes[0].OneofWrappers = []interface{}{
-		(*Message1_Oneof1AField1)(nil),
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDesc,
-			NumEnums:      1,
-			NumMessages:   6,
-			NumExtensions: 1,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_comments_comments_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_comments_comments_proto_depIdxs,
-		EnumInfos:         file_cmd_protoc_gen_go_testdata_comments_comments_proto_enumTypes,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_comments_comments_proto_msgTypes,
-		ExtensionInfos:    file_cmd_protoc_gen_go_testdata_comments_comments_proto_extTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_comments_comments_proto = out.File
-	file_cmd_protoc_gen_go_testdata_comments_comments_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_comments_comments_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_comments_comments_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/comments/comments.proto b/cmd/protoc-gen-go/testdata/comments/comments.proto
deleted file mode 100644
index 02998ce..0000000
--- a/cmd/protoc-gen-go/testdata/comments/comments.proto
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-// COMMENT: package goproto.protoc.comments;
-package goproto.protoc.comments;
-
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/comments";
-
-// COMMENT: Enum1.Leading
-enum Enum1 {
-  // COMMENT: FOO.Leading
-  FOO = 0; // COMMENT: FOO.InlineTrailing
-  // COMMENT: BAR.Leading
-  BAR = 1;
-  // COMMENT: BAR.Trailing1
-  // COMMENT: BAR.Trailing2
-
-  // COMMENT: Enum1.EndBody
-}
-
-// COMMENT: Message1.Leading
-message Message1 {
-  // COMMENT: Message1A.Leading
-  message Message1A {
-  } // COMMENT: Message1A.Trailing
-
-  // COMMENT: Message1B
-  message Message1B {
-  }
-
-  // COMMENT: Field1A.Leading
-  optional string Field1A = 1; // COMMENT: Field1A.Trailing
-
-  // COMMENT: Oneof1A.Leading
-  oneof Oneof1a {
-    // COMMENT: Oneof1AField1.Leading
-    string Oneof1AField1 = 2; // COMMENT: Oneof1AField1.Trailing
-  } // COMMENT: Oneof1A.Trailing
-
-  extensions 100 to max;
-} // COMMENT: Message1.Trailing
-
-// COMMENT: Extend
-extend Message1 {
-  // COMMENT: Extension.Leading
-  optional Message1 extension = 100; // COMMENT: Extension.Trailing
-}
-
-// COMMENT: Message2
-message Message2 {
-  // COMMENT: Message2A
-  message Message2A {
-  }
-
-  // COMMENT: Message2B
-  message Message2B {
-  }
-}
diff --git a/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go b/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go
deleted file mode 100644
index a23f64c..0000000
--- a/cmd/protoc-gen-go/testdata/comments/deprecated.pb.go
+++ /dev/null
@@ -1,198 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// cmd/protoc-gen-go/testdata/comments/deprecated.proto is a deprecated file.
-
-package comments
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-// Deprecated: Do not use.
-type DeprecatedEnum int32
-
-const (
-	// Deprecated: Do not use.
-	DeprecatedEnum_DEPRECATED DeprecatedEnum = 0
-)
-
-// Enum value maps for DeprecatedEnum.
-var (
-	DeprecatedEnum_name = map[int32]string{
-		0: "DEPRECATED",
-	}
-	DeprecatedEnum_value = map[string]int32{
-		"DEPRECATED": 0,
-	}
-)
-
-func (x DeprecatedEnum) Enum() *DeprecatedEnum {
-	p := new(DeprecatedEnum)
-	*p = x
-	return p
-}
-
-func (x DeprecatedEnum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (DeprecatedEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_enumTypes[0].Descriptor()
-}
-
-func (DeprecatedEnum) Type() protoreflect.EnumType {
-	return &file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_enumTypes[0]
-}
-
-func (x DeprecatedEnum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use DeprecatedEnum.Descriptor instead.
-func (DeprecatedEnum) EnumDescriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDescGZIP(), []int{0}
-}
-
-// Deprecated: Do not use.
-type DeprecatedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Deprecated: Do not use.
-	DeprecatedField string `protobuf:"bytes,1,opt,name=deprecated_field,json=deprecatedField,proto3" json:"deprecated_field,omitempty"`
-}
-
-func (x *DeprecatedMessage) Reset() {
-	*x = DeprecatedMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *DeprecatedMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeprecatedMessage) ProtoMessage() {}
-
-func (x *DeprecatedMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeprecatedMessage.ProtoReflect.Descriptor instead.
-func (*DeprecatedMessage) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDescGZIP(), []int{0}
-}
-
-// Deprecated: Do not use.
-func (x *DeprecatedMessage) GetDeprecatedField() string {
-	if x != nil {
-		return x.DeprecatedField
-	}
-	return ""
-}
-
-var File_cmd_protoc_gen_go_testdata_comments_deprecated_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDesc = []byte{
-	0x0a, 0x34, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x63, 0x6f, 0x6d,
-	0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22,
-	0x46, 0x0a, 0x11, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x10, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74,
-	0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02,
-	0x18, 0x01, 0x52, 0x0f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69,
-	0x65, 0x6c, 0x64, 0x3a, 0x02, 0x18, 0x01, 0x2a, 0x28, 0x0a, 0x0e, 0x44, 0x65, 0x70, 0x72, 0x65,
-	0x63, 0x61, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x0a, 0x44, 0x45, 0x50,
-	0x52, 0x45, 0x43, 0x41, 0x54, 0x45, 0x44, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x1a, 0x02, 0x18,
-	0x01, 0x42, 0x43, 0x5a, 0x3e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61,
-	0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
-	0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67,
-	0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
-	0x6e, 0x74, 0x73, 0xb8, 0x01, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDescData = file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_goTypes = []interface{}{
-	(DeprecatedEnum)(0),       // 0: goproto.protoc.comments.DeprecatedEnum
-	(*DeprecatedMessage)(nil), // 1: goproto.protoc.comments.DeprecatedMessage
-}
-var file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_init() }
-func file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_comments_deprecated_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeprecatedMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDesc,
-			NumEnums:      1,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_depIdxs,
-		EnumInfos:         file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_enumTypes,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_comments_deprecated_proto = out.File
-	file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_comments_deprecated_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/comments/deprecated.proto b/cmd/protoc-gen-go/testdata/comments/deprecated.proto
deleted file mode 100644
index daac493..0000000
--- a/cmd/protoc-gen-go/testdata/comments/deprecated.proto
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-
-package goproto.protoc.comments;
-
-option deprecated = true;
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/comments";
-
-message DeprecatedMessage {
-  option deprecated = true;
-  string deprecated_field = 1 [deprecated=true];
-}
-
-enum DeprecatedEnum {
-  option deprecated = true;
-  DEPRECATED = 0 [deprecated=true];
-}
diff --git a/cmd/protoc-gen-go/testdata/extensions/base/base.pb.go b/cmd/protoc-gen-go/testdata/extensions/base/base.pb.go
deleted file mode 100644
index 4e412ab..0000000
--- a/cmd/protoc-gen-go/testdata/extensions/base/base.pb.go
+++ /dev/null
@@ -1,204 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/extensions/base/base.proto
-
-package base
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type BaseMessage struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	Field *string `protobuf:"bytes,1,opt,name=field" json:"field,omitempty"`
-}
-
-func (x *BaseMessage) Reset() {
-	*x = BaseMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *BaseMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*BaseMessage) ProtoMessage() {}
-
-func (x *BaseMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use BaseMessage.ProtoReflect.Descriptor instead.
-func (*BaseMessage) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *BaseMessage) GetField() string {
-	if x != nil && x.Field != nil {
-		return *x.Field
-	}
-	return ""
-}
-
-type MessageSetWireFormatMessage struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-}
-
-func (x *MessageSetWireFormatMessage) Reset() {
-	*x = MessageSetWireFormatMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *MessageSetWireFormatMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MessageSetWireFormatMessage) ProtoMessage() {}
-
-func (x *MessageSetWireFormatMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use MessageSetWireFormatMessage.ProtoReflect.Descriptor instead.
-func (*MessageSetWireFormatMessage) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDescGZIP(), []int{1}
-}
-
-var File_cmd_protoc_gen_go_testdata_extensions_base_base_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDesc = []byte{
-	0x0a, 0x35, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f, 0x62, 0x61, 0x73,
-	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1d, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x22, 0x33, 0x0a, 0x0b, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x2a, 0x04, 0x08, 0x04, 0x10,
-	0x0a, 0x2a, 0x08, 0x08, 0x10, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x2b, 0x0a, 0x1b, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x57, 0x69, 0x72, 0x65, 0x46, 0x6f, 0x72,
-	0x6d, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2a, 0x08, 0x08, 0x64, 0x10, 0xff,
-	0xff, 0xff, 0xff, 0x07, 0x3a, 0x02, 0x08, 0x01, 0x42, 0x47, 0x5a, 0x45, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74,
-	0x61, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x62, 0x61, 0x73,
-	0x65,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDescData = file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
-var file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_goTypes = []interface{}{
-	(*BaseMessage)(nil),                 // 0: goproto.protoc.extension.base.BaseMessage
-	(*MessageSetWireFormatMessage)(nil), // 1: goproto.protoc.extension.base.MessageSetWireFormatMessage
-}
-var file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_init() }
-func file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_extensions_base_base_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*BaseMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MessageSetWireFormatMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   2,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_depIdxs,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_extensions_base_base_proto = out.File
-	file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_extensions_base_base_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/extensions/base/base.proto b/cmd/protoc-gen-go/testdata/extensions/base/base.proto
deleted file mode 100644
index 32d242e..0000000
--- a/cmd/protoc-gen-go/testdata/extensions/base/base.proto
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.protoc.extension.base;
-
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/extensions/base";
-
-message BaseMessage {
-  optional string field = 1;
-  extensions 4 to 9;
-  extensions 16 to max;
-}
-
-message MessageSetWireFormatMessage {
-  option message_set_wire_format = true;
-  extensions 100 to max;
-}
diff --git a/cmd/protoc-gen-go/testdata/extensions/ext/ext.pb.go b/cmd/protoc-gen-go/testdata/extensions/ext/ext.pb.go
deleted file mode 100644
index c712715..0000000
--- a/cmd/protoc-gen-go/testdata/extensions/ext/ext.pb.go
+++ /dev/null
@@ -1,1402 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/extensions/ext/ext.proto
-
-package ext
-
-import (
-	base "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/extensions/base"
-	extra "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/extensions/extra"
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Enum int32
-
-const (
-	Enum_ZERO Enum = 0
-)
-
-// Enum value maps for Enum.
-var (
-	Enum_name = map[int32]string{
-		0: "ZERO",
-	}
-	Enum_value = map[string]int32{
-		"ZERO": 0,
-	}
-)
-
-func (x Enum) Enum() *Enum {
-	p := new(Enum)
-	*p = x
-	return p
-}
-
-func (x Enum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum) Descriptor() protoreflect.EnumDescriptor {
-	return file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_enumTypes[0].Descriptor()
-}
-
-func (Enum) Type() protoreflect.EnumType {
-	return &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_enumTypes[0]
-}
-
-func (x Enum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum(num)
-	return nil
-}
-
-// Deprecated: Use Enum.Descriptor instead.
-func (Enum) EnumDescriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescGZIP(), []int{0}
-}
-
-type Message struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Data []byte `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"`
-}
-
-func (x *Message) Reset() {
-	*x = Message{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message) ProtoMessage() {}
-
-func (x *Message) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message.ProtoReflect.Descriptor instead.
-func (*Message) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Message) GetData() []byte {
-	if x != nil {
-		return x.Data
-	}
-	return nil
-}
-
-type ExtensionGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ExtensionGroup *string `protobuf:"bytes,120,opt,name=extension_group,json=extensionGroup" json:"extension_group,omitempty"`
-}
-
-func (x *ExtensionGroup) Reset() {
-	*x = ExtensionGroup{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ExtensionGroup) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ExtensionGroup) ProtoMessage() {}
-
-func (x *ExtensionGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ExtensionGroup.ProtoReflect.Descriptor instead.
-func (*ExtensionGroup) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *ExtensionGroup) GetExtensionGroup() string {
-	if x != nil && x.ExtensionGroup != nil {
-		return *x.ExtensionGroup
-	}
-	return ""
-}
-
-// Extend in the scope of another type.
-type ExtendingMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *ExtendingMessage) Reset() {
-	*x = ExtendingMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ExtendingMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ExtendingMessage) ProtoMessage() {}
-
-func (x *ExtendingMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ExtendingMessage.ProtoReflect.Descriptor instead.
-func (*ExtendingMessage) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescGZIP(), []int{2}
-}
-
-type RepeatedGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	RepeatedXGroup []string `protobuf:"bytes,319,rep,name=repeated_x_group,json=repeatedXGroup" json:"repeated_x_group,omitempty"`
-}
-
-func (x *RepeatedGroup) Reset() {
-	*x = RepeatedGroup{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *RepeatedGroup) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RepeatedGroup) ProtoMessage() {}
-
-func (x *RepeatedGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use RepeatedGroup.ProtoReflect.Descriptor instead.
-func (*RepeatedGroup) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *RepeatedGroup) GetRepeatedXGroup() []string {
-	if x != nil {
-		return x.RepeatedXGroup
-	}
-	return nil
-}
-
-// An extension of an extension.
-type Extendable struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-}
-
-func (x *Extendable) Reset() {
-	*x = Extendable{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Extendable) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Extendable) ProtoMessage() {}
-
-func (x *Extendable) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Extendable.ProtoReflect.Descriptor instead.
-func (*Extendable) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescGZIP(), []int{4}
-}
-
-// Message set wire format.
-type MessageSetWireFormatExtension struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *MessageSetWireFormatExtension) Reset() {
-	*x = MessageSetWireFormatExtension{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *MessageSetWireFormatExtension) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MessageSetWireFormatExtension) ProtoMessage() {}
-
-func (x *MessageSetWireFormatExtension) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use MessageSetWireFormatExtension.ProtoReflect.Descriptor instead.
-func (*MessageSetWireFormatExtension) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescGZIP(), []int{5}
-}
-
-type Message_M struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message_M) Reset() {
-	*x = Message_M{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message_M) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message_M) ProtoMessage() {}
-
-func (x *Message_M) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message_M.ProtoReflect.Descriptor instead.
-func (*Message_M) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescGZIP(), []int{0, 0}
-}
-
-type ExtendingMessage_ExtendingMessageSubmessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *ExtendingMessage_ExtendingMessageSubmessage) Reset() {
-	*x = ExtendingMessage_ExtendingMessageSubmessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ExtendingMessage_ExtendingMessageSubmessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ExtendingMessage_ExtendingMessageSubmessage) ProtoMessage() {}
-
-func (x *ExtendingMessage_ExtendingMessageSubmessage) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ExtendingMessage_ExtendingMessageSubmessage.ProtoReflect.Descriptor instead.
-func (*ExtendingMessage_ExtendingMessageSubmessage) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescGZIP(), []int{2, 0}
-}
-
-var file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes = []protoimpl.ExtensionInfo{
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: (*bool)(nil),
-		Field:         101,
-		Name:          "goproto.protoc.extension.ext.extension_bool",
-		Tag:           "varint,101,opt,name=extension_bool",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: (*Enum)(nil),
-		Field:         102,
-		Name:          "goproto.protoc.extension.ext.extension_enum",
-		Tag:           "varint,102,opt,name=extension_enum,enum=goproto.protoc.extension.ext.Enum",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: (*int32)(nil),
-		Field:         103,
-		Name:          "goproto.protoc.extension.ext.extension_int32",
-		Tag:           "varint,103,opt,name=extension_int32",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: (*int32)(nil),
-		Field:         104,
-		Name:          "goproto.protoc.extension.ext.extension_sint32",
-		Tag:           "zigzag32,104,opt,name=extension_sint32",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: (*uint32)(nil),
-		Field:         105,
-		Name:          "goproto.protoc.extension.ext.extension_uint32",
-		Tag:           "varint,105,opt,name=extension_uint32",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: (*int64)(nil),
-		Field:         106,
-		Name:          "goproto.protoc.extension.ext.extension_int64",
-		Tag:           "varint,106,opt,name=extension_int64",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: (*int64)(nil),
-		Field:         107,
-		Name:          "goproto.protoc.extension.ext.extension_sint64",
-		Tag:           "zigzag64,107,opt,name=extension_sint64",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: (*uint64)(nil),
-		Field:         108,
-		Name:          "goproto.protoc.extension.ext.extension_uint64",
-		Tag:           "varint,108,opt,name=extension_uint64",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: (*int32)(nil),
-		Field:         109,
-		Name:          "goproto.protoc.extension.ext.extension_sfixed32",
-		Tag:           "fixed32,109,opt,name=extension_sfixed32",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: (*uint32)(nil),
-		Field:         110,
-		Name:          "goproto.protoc.extension.ext.extension_fixed32",
-		Tag:           "fixed32,110,opt,name=extension_fixed32",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: (*float32)(nil),
-		Field:         111,
-		Name:          "goproto.protoc.extension.ext.extension_float",
-		Tag:           "fixed32,111,opt,name=extension_float",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: (*int64)(nil),
-		Field:         112,
-		Name:          "goproto.protoc.extension.ext.extension_sfixed64",
-		Tag:           "fixed64,112,opt,name=extension_sfixed64",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: (*uint64)(nil),
-		Field:         113,
-		Name:          "goproto.protoc.extension.ext.extension_fixed64",
-		Tag:           "fixed64,113,opt,name=extension_fixed64",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: (*float64)(nil),
-		Field:         114,
-		Name:          "goproto.protoc.extension.ext.extension_double",
-		Tag:           "fixed64,114,opt,name=extension_double",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: (*string)(nil),
-		Field:         115,
-		Name:          "goproto.protoc.extension.ext.extension_string",
-		Tag:           "bytes,115,opt,name=extension_string",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: ([]byte)(nil),
-		Field:         116,
-		Name:          "goproto.protoc.extension.ext.extension_bytes",
-		Tag:           "bytes,116,opt,name=extension_bytes",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: (*Message)(nil),
-		Field:         117,
-		Name:          "goproto.protoc.extension.ext.extension_Message",
-		Tag:           "bytes,117,opt,name=extension_Message",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: (*Message_M)(nil),
-		Field:         118,
-		Name:          "goproto.protoc.extension.ext.extension_MessageM",
-		Tag:           "bytes,118,opt,name=extension_MessageM",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: (*ExtensionGroup)(nil),
-		Field:         119,
-		Name:          "goproto.protoc.extension.ext.extensiongroup",
-		Tag:           "group,119,opt,name=ExtensionGroup",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: (*extra.ExtraMessage)(nil),
-		Field:         9,
-		Name:          "goproto.protoc.extension.ext.extra_message",
-		Tag:           "bytes,9,opt,name=extra_message",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: ([]bool)(nil),
-		Field:         301,
-		Name:          "goproto.protoc.extension.ext.repeated_x_bool",
-		Tag:           "varint,301,rep,name=repeated_x_bool",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: ([]Enum)(nil),
-		Field:         302,
-		Name:          "goproto.protoc.extension.ext.repeated_x_enum",
-		Tag:           "varint,302,rep,name=repeated_x_enum,enum=goproto.protoc.extension.ext.Enum",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: ([]int32)(nil),
-		Field:         303,
-		Name:          "goproto.protoc.extension.ext.repeated_x_int32",
-		Tag:           "varint,303,rep,name=repeated_x_int32",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: ([]int32)(nil),
-		Field:         304,
-		Name:          "goproto.protoc.extension.ext.repeated_x_sint32",
-		Tag:           "zigzag32,304,rep,name=repeated_x_sint32",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: ([]uint32)(nil),
-		Field:         305,
-		Name:          "goproto.protoc.extension.ext.repeated_x_uint32",
-		Tag:           "varint,305,rep,name=repeated_x_uint32",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: ([]int64)(nil),
-		Field:         306,
-		Name:          "goproto.protoc.extension.ext.repeated_x_int64",
-		Tag:           "varint,306,rep,name=repeated_x_int64",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: ([]int64)(nil),
-		Field:         307,
-		Name:          "goproto.protoc.extension.ext.repeated_x_sint64",
-		Tag:           "zigzag64,307,rep,name=repeated_x_sint64",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: ([]uint64)(nil),
-		Field:         308,
-		Name:          "goproto.protoc.extension.ext.repeated_x_uint64",
-		Tag:           "varint,308,rep,name=repeated_x_uint64",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: ([]int32)(nil),
-		Field:         309,
-		Name:          "goproto.protoc.extension.ext.repeated_x_sfixed32",
-		Tag:           "fixed32,309,rep,name=repeated_x_sfixed32",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: ([]uint32)(nil),
-		Field:         310,
-		Name:          "goproto.protoc.extension.ext.repeated_x_fixed32",
-		Tag:           "fixed32,310,rep,name=repeated_x_fixed32",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: ([]float32)(nil),
-		Field:         311,
-		Name:          "goproto.protoc.extension.ext.repeated_x_float",
-		Tag:           "fixed32,311,rep,name=repeated_x_float",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: ([]int64)(nil),
-		Field:         312,
-		Name:          "goproto.protoc.extension.ext.repeated_x_sfixed64",
-		Tag:           "fixed64,312,rep,name=repeated_x_sfixed64",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: ([]uint64)(nil),
-		Field:         313,
-		Name:          "goproto.protoc.extension.ext.repeated_x_fixed64",
-		Tag:           "fixed64,313,rep,name=repeated_x_fixed64",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: ([]float64)(nil),
-		Field:         314,
-		Name:          "goproto.protoc.extension.ext.repeated_x_double",
-		Tag:           "fixed64,314,rep,name=repeated_x_double",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: ([]string)(nil),
-		Field:         315,
-		Name:          "goproto.protoc.extension.ext.repeated_x_string",
-		Tag:           "bytes,315,rep,name=repeated_x_string",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: ([][]byte)(nil),
-		Field:         316,
-		Name:          "goproto.protoc.extension.ext.repeated_x_bytes",
-		Tag:           "bytes,316,rep,name=repeated_x_bytes",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: ([]*Message)(nil),
-		Field:         317,
-		Name:          "goproto.protoc.extension.ext.repeated_x_Message",
-		Tag:           "bytes,317,rep,name=repeated_x_Message",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: ([]*RepeatedGroup)(nil),
-		Field:         318,
-		Name:          "goproto.protoc.extension.ext.repeatedgroup",
-		Tag:           "group,318,rep,name=RepeatedGroup",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: (*Extendable)(nil),
-		Field:         400,
-		Name:          "goproto.protoc.extension.ext.extendable_field",
-		Tag:           "bytes,400,opt,name=extendable_field",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*Extendable)(nil),
-		ExtensionType: (*string)(nil),
-		Field:         1,
-		Name:          "goproto.protoc.extension.ext.extendable_string_field",
-		Tag:           "bytes,1,opt,name=extendable_string_field",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.MessageSetWireFormatMessage)(nil),
-		ExtensionType: (*MessageSetWireFormatExtension)(nil),
-		Field:         101,
-		Name:          "goproto.protoc.extension.ext.message_set_extension",
-		Tag:           "bytes,101,opt,name=message_set_extension",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: (*string)(nil),
-		Field:         200,
-		Name:          "goproto.protoc.extension.ext.ExtendingMessage.extending_message_string",
-		Tag:           "bytes,200,opt,name=extending_message_string",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.BaseMessage)(nil),
-		ExtensionType: (*ExtendingMessage_ExtendingMessageSubmessage)(nil),
-		Field:         201,
-		Name:          "goproto.protoc.extension.ext.ExtendingMessage.extending_message_submessage",
-		Tag:           "bytes,201,opt,name=extending_message_submessage",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-	{
-		ExtendedType:  (*base.MessageSetWireFormatMessage)(nil),
-		ExtensionType: (*MessageSetWireFormatExtension)(nil),
-		Field:         100,
-		Name:          "goproto.protoc.extension.ext.MessageSetWireFormatExtension.message_set_extension",
-		Tag:           "bytes,100,opt,name=message_set_extension",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/ext/ext.proto",
-	},
-}
-
-// Extension fields to base.BaseMessage.
-var (
-	// optional bool extension_bool = 101;
-	E_ExtensionBool = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[0]
-	// optional goproto.protoc.extension.ext.Enum extension_enum = 102;
-	E_ExtensionEnum = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[1]
-	// optional int32 extension_int32 = 103;
-	E_ExtensionInt32 = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[2]
-	// optional sint32 extension_sint32 = 104;
-	E_ExtensionSint32 = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[3]
-	// optional uint32 extension_uint32 = 105;
-	E_ExtensionUint32 = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[4]
-	// optional int64 extension_int64 = 106;
-	E_ExtensionInt64 = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[5]
-	// optional sint64 extension_sint64 = 107;
-	E_ExtensionSint64 = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[6]
-	// optional uint64 extension_uint64 = 108;
-	E_ExtensionUint64 = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[7]
-	// optional sfixed32 extension_sfixed32 = 109;
-	E_ExtensionSfixed32 = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[8]
-	// optional fixed32 extension_fixed32 = 110;
-	E_ExtensionFixed32 = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[9]
-	// optional float extension_float = 111;
-	E_ExtensionFloat = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[10]
-	// optional sfixed64 extension_sfixed64 = 112;
-	E_ExtensionSfixed64 = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[11]
-	// optional fixed64 extension_fixed64 = 113;
-	E_ExtensionFixed64 = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[12]
-	// optional double extension_double = 114;
-	E_ExtensionDouble = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[13]
-	// optional string extension_string = 115;
-	E_ExtensionString = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[14]
-	// optional bytes extension_bytes = 116;
-	E_ExtensionBytes = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[15]
-	// optional goproto.protoc.extension.ext.Message extension_Message = 117;
-	E_Extension_Message = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[16]
-	// optional goproto.protoc.extension.ext.Message.M extension_MessageM = 118;
-	E_Extension_MessageM = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[17]
-	// optional goproto.protoc.extension.ext.ExtensionGroup extensiongroup = 119;
-	E_Extensiongroup = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[18]
-	// optional goproto.protoc.extension.extra.ExtraMessage extra_message = 9;
-	E_ExtraMessage = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[19]
-	// repeated bool repeated_x_bool = 301;
-	E_RepeatedXBool = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[20]
-	// repeated goproto.protoc.extension.ext.Enum repeated_x_enum = 302;
-	E_RepeatedXEnum = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[21]
-	// repeated int32 repeated_x_int32 = 303;
-	E_RepeatedXInt32 = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[22]
-	// repeated sint32 repeated_x_sint32 = 304;
-	E_RepeatedXSint32 = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[23]
-	// repeated uint32 repeated_x_uint32 = 305;
-	E_RepeatedXUint32 = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[24]
-	// repeated int64 repeated_x_int64 = 306;
-	E_RepeatedXInt64 = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[25]
-	// repeated sint64 repeated_x_sint64 = 307;
-	E_RepeatedXSint64 = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[26]
-	// repeated uint64 repeated_x_uint64 = 308;
-	E_RepeatedXUint64 = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[27]
-	// repeated sfixed32 repeated_x_sfixed32 = 309;
-	E_RepeatedXSfixed32 = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[28]
-	// repeated fixed32 repeated_x_fixed32 = 310;
-	E_RepeatedXFixed32 = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[29]
-	// repeated float repeated_x_float = 311;
-	E_RepeatedXFloat = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[30]
-	// repeated sfixed64 repeated_x_sfixed64 = 312;
-	E_RepeatedXSfixed64 = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[31]
-	// repeated fixed64 repeated_x_fixed64 = 313;
-	E_RepeatedXFixed64 = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[32]
-	// repeated double repeated_x_double = 314;
-	E_RepeatedXDouble = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[33]
-	// repeated string repeated_x_string = 315;
-	E_RepeatedXString = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[34]
-	// repeated bytes repeated_x_bytes = 316;
-	E_RepeatedXBytes = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[35]
-	// repeated goproto.protoc.extension.ext.Message repeated_x_Message = 317;
-	E_RepeatedX_Message = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[36]
-	// repeated goproto.protoc.extension.ext.RepeatedGroup repeatedgroup = 318;
-	E_Repeatedgroup = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[37]
-	// optional goproto.protoc.extension.ext.Extendable extendable_field = 400;
-	E_ExtendableField = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[38]
-	// optional string extending_message_string = 200;
-	E_ExtendingMessage_ExtendingMessageString = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[41]
-	// optional goproto.protoc.extension.ext.ExtendingMessage.ExtendingMessageSubmessage extending_message_submessage = 201;
-	E_ExtendingMessage_ExtendingMessageSubmessage = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[42]
-)
-
-// Extension fields to Extendable.
-var (
-	// optional string extendable_string_field = 1;
-	E_ExtendableStringField = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[39]
-)
-
-// Extension fields to base.MessageSetWireFormatMessage.
-var (
-	// optional goproto.protoc.extension.ext.MessageSetWireFormatExtension message_set_extension = 101;
-	E_MessageSetExtension = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[40]
-	// optional goproto.protoc.extension.ext.MessageSetWireFormatExtension message_set_extension = 100;
-	E_MessageSetWireFormatExtension_MessageSetExtension = &file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes[43]
-)
-
-var File_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDesc = []byte{
-	0x0a, 0x33, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x78, 0x74, 0x2f, 0x65, 0x78, 0x74, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e,
-	0x65, 0x78, 0x74, 0x1a, 0x35, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d,
-	0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f,
-	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x62, 0x61, 0x73, 0x65, 0x2f,
-	0x62, 0x61, 0x73, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x37, 0x63, 0x6d, 0x64, 0x2f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65,
-	0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x73, 0x2f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x2f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x22, 0x22, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12,
-	0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61,
-	0x74, 0x61, 0x1a, 0x03, 0x0a, 0x01, 0x4d, 0x22, 0x39, 0x0a, 0x0e, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x27, 0x0a, 0x0f, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x78, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x47, 0x72, 0x6f,
-	0x75, 0x70, 0x22, 0xd2, 0x02, 0x0a, 0x10, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x1c, 0x0a, 0x1a, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x64, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x75, 0x62, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x65, 0x0a, 0x18, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x69,
-	0x6e, 0x67, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73,
-	0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xc8, 0x01,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0xb8, 0x01, 0x0a,
-	0x1c, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x5f, 0x73, 0x75, 0x62, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61,
-	0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xc9, 0x01, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x49, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x65, 0x78, 0x74, 0x2e,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x53, 0x75, 0x62, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x1a, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x75, 0x62,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3a, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x5f, 0x78, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0xbf, 0x02, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x58, 0x47, 0x72,
-	0x6f, 0x75, 0x70, 0x22, 0x16, 0x0a, 0x0a, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x61, 0x62, 0x6c,
-	0x65, 0x2a, 0x08, 0x08, 0x01, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0xcd, 0x01, 0x0a, 0x1d,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x57, 0x69, 0x72, 0x65, 0x46, 0x6f,
-	0x72, 0x6d, 0x61, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0xab, 0x01,
-	0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53,
-	0x65, 0x74, 0x57, 0x69, 0x72, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x65, 0x78, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x53, 0x65, 0x74, 0x57, 0x69, 0x72, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53,
-	0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2a, 0x10, 0x0a, 0x04, 0x45,
-	0x6e, 0x75, 0x6d, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x3a, 0x51, 0x0a,
-	0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12,
-	0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
-	0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e,
-	0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x65, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c,
-	0x3a, 0x75, 0x0a, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e,
-	0x75, 0x6d, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61,
-	0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x66,
-	0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e,
-	0x65, 0x78, 0x74, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x53, 0x0a, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x67, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x65, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x55, 0x0a, 0x10,
-	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65,
-	0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x68, 0x20, 0x01,
-	0x28, 0x11, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x3a, 0x55, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x18, 0x69, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x53, 0x0a, 0x0f, 0x65, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2a, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61,
-	0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a,
-	0x55, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62,
-	0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
-	0x6b, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x55, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x6c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x65, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x59, 0x0a,
-	0x12, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x33, 0x32, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62,
-	0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
-	0x6d, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x11, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x57, 0x0a, 0x11, 0x65, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2a, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61,
-	0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x6e, 0x20, 0x01, 0x28, 0x07, 0x52,
-	0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33,
-	0x32, 0x3a, 0x53, 0x0a, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66,
-	0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e,
-	0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x18, 0x6f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x59, 0x0a, 0x12, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2a, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73,
-	0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x70, 0x20, 0x01, 0x28, 0x10, 0x52, 0x11,
-	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
-	0x34, 0x3a, 0x57, 0x0a, 0x11, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x18, 0x71, 0x20, 0x01, 0x28, 0x06, 0x52, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x55, 0x0a, 0x10, 0x65, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x2a,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e,
-	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42,
-	0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x72, 0x20, 0x01, 0x28, 0x01,
-	0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x75, 0x62, 0x6c,
-	0x65, 0x3a, 0x55, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x18, 0x73, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x53, 0x0a, 0x0f, 0x65, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x74, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x65,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x3a, 0x7e, 0x0a,
-	0x11, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61,
-	0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x75,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e,
-	0x65, 0x78, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x10, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x82, 0x01,
-	0x0a, 0x12, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x4d, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e,
-	0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x18, 0x76, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x2e, 0x65, 0x78, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x52,
-	0x11, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x4d, 0x3a, 0x80, 0x01, 0x0a, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x18, 0x77, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x2e, 0x65, 0x78, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x67, 0x72, 0x6f, 0x75, 0x70, 0x3a, 0x7d, 0x0a, 0x0d, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x2e, 0x65, 0x78, 0x74, 0x72, 0x61, 0x2e, 0x45, 0x78, 0x74, 0x72, 0x61, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x65, 0x78, 0x74, 0x72, 0x61, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x3a, 0x53, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x78, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x18, 0xad, 0x02, 0x20, 0x03, 0x28, 0x08, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x58, 0x42, 0x6f, 0x6f, 0x6c, 0x3a, 0x77, 0x0a, 0x0f, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x78, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x2a, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73,
-	0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xae, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32,
-	0x22, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
-	0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x65, 0x78, 0x74, 0x2e, 0x45,
-	0x6e, 0x75, 0x6d, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x58, 0x45, 0x6e,
-	0x75, 0x6d, 0x3a, 0x55, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x78,
-	0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x18, 0xaf, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x58, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x57, 0x0a, 0x11, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x78, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2a,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e,
-	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42,
-	0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xb0, 0x02, 0x20, 0x03, 0x28,
-	0x11, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x58, 0x53, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x3a, 0x57, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x78,
-	0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x18, 0xb1, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x58, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x55, 0x0a, 0x10, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x78, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
-	0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
-	0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e,
-	0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xb2, 0x02, 0x20, 0x03,
-	0x28, 0x03, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x58, 0x49, 0x6e, 0x74,
-	0x36, 0x34, 0x3a, 0x57, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x78,
-	0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x18, 0xb3, 0x02, 0x20, 0x03, 0x28, 0x12, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x58, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x57, 0x0a, 0x11, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x78, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65,
-	0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xb4, 0x02, 0x20,
-	0x03, 0x28, 0x04, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x58, 0x55, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x3a, 0x5b, 0x0a, 0x13, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x78, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2a, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xb5, 0x02, 0x20, 0x03, 0x28, 0x0f, 0x52, 0x11,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x58, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
-	0x32, 0x3a, 0x59, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x78, 0x5f,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x18, 0xb6, 0x02, 0x20, 0x03, 0x28, 0x07, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x58, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x55, 0x0a, 0x10,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x78, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-	0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65,
-	0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xb7, 0x02, 0x20,
-	0x03, 0x28, 0x02, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x58, 0x46, 0x6c,
-	0x6f, 0x61, 0x74, 0x3a, 0x5b, 0x0a, 0x13, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
-	0x78, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xb8, 0x02, 0x20, 0x03, 0x28, 0x10, 0x52, 0x11, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x58, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
-	0x3a, 0x59, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x78, 0x5f, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x18, 0xb9, 0x02, 0x20, 0x03, 0x28, 0x06, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x58, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x57, 0x0a, 0x11, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x78, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-	0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65,
-	0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xba, 0x02, 0x20,
-	0x03, 0x28, 0x01, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x58, 0x44, 0x6f,
-	0x75, 0x62, 0x6c, 0x65, 0x3a, 0x57, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x78, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xbb, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x58, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x55, 0x0a,
-	0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x78, 0x5f, 0x62, 0x79, 0x74, 0x65,
-	0x73, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73,
-	0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xbc, 0x02,
-	0x20, 0x03, 0x28, 0x0c, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x58, 0x42,
-	0x79, 0x74, 0x65, 0x73, 0x3a, 0x80, 0x01, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x5f, 0x78, 0x5f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xbd, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e,
-	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x65, 0x78, 0x74, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x58,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x7e, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x18, 0xbe, 0x02, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x2b, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x65, 0x78, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x3a, 0x80, 0x01, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65,
-	0x6e, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x2a, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x42, 0x61, 0x73,
-	0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x90, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
-	0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x65, 0x78, 0x74, 0x2e, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e,
-	0x64, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x3a, 0x60, 0x0a, 0x17, 0x65, 0x78,
-	0x74, 0x65, 0x6e, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x2e, 0x65, 0x78, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x61, 0x62, 0x6c, 0x65, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x61, 0x62, 0x6c,
-	0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x3a, 0xab, 0x01, 0x0a,
-	0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65,
-	0x74, 0x57, 0x69, 0x72, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x2e, 0x65, 0x78, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53,
-	0x65, 0x74, 0x57, 0x69, 0x72, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x45, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65,
-	0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x46, 0x5a, 0x44, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64,
-	0x61, 0x74, 0x61, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65,
-	0x78, 0x74,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescData = file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
-var file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_goTypes = []interface{}{
-	(Enum)(0),                             // 0: goproto.protoc.extension.ext.Enum
-	(*Message)(nil),                       // 1: goproto.protoc.extension.ext.Message
-	(*ExtensionGroup)(nil),                // 2: goproto.protoc.extension.ext.ExtensionGroup
-	(*ExtendingMessage)(nil),              // 3: goproto.protoc.extension.ext.ExtendingMessage
-	(*RepeatedGroup)(nil),                 // 4: goproto.protoc.extension.ext.RepeatedGroup
-	(*Extendable)(nil),                    // 5: goproto.protoc.extension.ext.Extendable
-	(*MessageSetWireFormatExtension)(nil), // 6: goproto.protoc.extension.ext.MessageSetWireFormatExtension
-	(*Message_M)(nil),                     // 7: goproto.protoc.extension.ext.Message.M
-	(*ExtendingMessage_ExtendingMessageSubmessage)(nil), // 8: goproto.protoc.extension.ext.ExtendingMessage.ExtendingMessageSubmessage
-	(*base.BaseMessage)(nil),                            // 9: goproto.protoc.extension.base.BaseMessage
-	(*base.MessageSetWireFormatMessage)(nil),            // 10: goproto.protoc.extension.base.MessageSetWireFormatMessage
-	(*extra.ExtraMessage)(nil),                          // 11: goproto.protoc.extension.extra.ExtraMessage
-}
-var file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_depIdxs = []int32{
-	9,  // 0: goproto.protoc.extension.ext.extension_bool:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 1: goproto.protoc.extension.ext.extension_enum:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 2: goproto.protoc.extension.ext.extension_int32:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 3: goproto.protoc.extension.ext.extension_sint32:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 4: goproto.protoc.extension.ext.extension_uint32:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 5: goproto.protoc.extension.ext.extension_int64:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 6: goproto.protoc.extension.ext.extension_sint64:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 7: goproto.protoc.extension.ext.extension_uint64:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 8: goproto.protoc.extension.ext.extension_sfixed32:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 9: goproto.protoc.extension.ext.extension_fixed32:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 10: goproto.protoc.extension.ext.extension_float:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 11: goproto.protoc.extension.ext.extension_sfixed64:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 12: goproto.protoc.extension.ext.extension_fixed64:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 13: goproto.protoc.extension.ext.extension_double:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 14: goproto.protoc.extension.ext.extension_string:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 15: goproto.protoc.extension.ext.extension_bytes:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 16: goproto.protoc.extension.ext.extension_Message:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 17: goproto.protoc.extension.ext.extension_MessageM:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 18: goproto.protoc.extension.ext.extensiongroup:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 19: goproto.protoc.extension.ext.extra_message:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 20: goproto.protoc.extension.ext.repeated_x_bool:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 21: goproto.protoc.extension.ext.repeated_x_enum:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 22: goproto.protoc.extension.ext.repeated_x_int32:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 23: goproto.protoc.extension.ext.repeated_x_sint32:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 24: goproto.protoc.extension.ext.repeated_x_uint32:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 25: goproto.protoc.extension.ext.repeated_x_int64:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 26: goproto.protoc.extension.ext.repeated_x_sint64:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 27: goproto.protoc.extension.ext.repeated_x_uint64:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 28: goproto.protoc.extension.ext.repeated_x_sfixed32:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 29: goproto.protoc.extension.ext.repeated_x_fixed32:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 30: goproto.protoc.extension.ext.repeated_x_float:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 31: goproto.protoc.extension.ext.repeated_x_sfixed64:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 32: goproto.protoc.extension.ext.repeated_x_fixed64:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 33: goproto.protoc.extension.ext.repeated_x_double:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 34: goproto.protoc.extension.ext.repeated_x_string:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 35: goproto.protoc.extension.ext.repeated_x_bytes:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 36: goproto.protoc.extension.ext.repeated_x_Message:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 37: goproto.protoc.extension.ext.repeatedgroup:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 38: goproto.protoc.extension.ext.extendable_field:extendee -> goproto.protoc.extension.base.BaseMessage
-	5,  // 39: goproto.protoc.extension.ext.extendable_string_field:extendee -> goproto.protoc.extension.ext.Extendable
-	10, // 40: goproto.protoc.extension.ext.message_set_extension:extendee -> goproto.protoc.extension.base.MessageSetWireFormatMessage
-	9,  // 41: goproto.protoc.extension.ext.ExtendingMessage.extending_message_string:extendee -> goproto.protoc.extension.base.BaseMessage
-	9,  // 42: goproto.protoc.extension.ext.ExtendingMessage.extending_message_submessage:extendee -> goproto.protoc.extension.base.BaseMessage
-	10, // 43: goproto.protoc.extension.ext.MessageSetWireFormatExtension.message_set_extension:extendee -> goproto.protoc.extension.base.MessageSetWireFormatMessage
-	0,  // 44: goproto.protoc.extension.ext.extension_enum:type_name -> goproto.protoc.extension.ext.Enum
-	1,  // 45: goproto.protoc.extension.ext.extension_Message:type_name -> goproto.protoc.extension.ext.Message
-	7,  // 46: goproto.protoc.extension.ext.extension_MessageM:type_name -> goproto.protoc.extension.ext.Message.M
-	2,  // 47: goproto.protoc.extension.ext.extensiongroup:type_name -> goproto.protoc.extension.ext.ExtensionGroup
-	11, // 48: goproto.protoc.extension.ext.extra_message:type_name -> goproto.protoc.extension.extra.ExtraMessage
-	0,  // 49: goproto.protoc.extension.ext.repeated_x_enum:type_name -> goproto.protoc.extension.ext.Enum
-	1,  // 50: goproto.protoc.extension.ext.repeated_x_Message:type_name -> goproto.protoc.extension.ext.Message
-	4,  // 51: goproto.protoc.extension.ext.repeatedgroup:type_name -> goproto.protoc.extension.ext.RepeatedGroup
-	5,  // 52: goproto.protoc.extension.ext.extendable_field:type_name -> goproto.protoc.extension.ext.Extendable
-	6,  // 53: goproto.protoc.extension.ext.message_set_extension:type_name -> goproto.protoc.extension.ext.MessageSetWireFormatExtension
-	8,  // 54: goproto.protoc.extension.ext.ExtendingMessage.extending_message_submessage:type_name -> goproto.protoc.extension.ext.ExtendingMessage.ExtendingMessageSubmessage
-	6,  // 55: goproto.protoc.extension.ext.MessageSetWireFormatExtension.message_set_extension:type_name -> goproto.protoc.extension.ext.MessageSetWireFormatExtension
-	56, // [56:56] is the sub-list for method output_type
-	56, // [56:56] is the sub-list for method input_type
-	44, // [44:56] is the sub-list for extension type_name
-	0,  // [0:44] is the sub-list for extension extendee
-	0,  // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_init() }
-func file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ExtensionGroup); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ExtendingMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*RepeatedGroup); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Extendable); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MessageSetWireFormatExtension); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message_M); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ExtendingMessage_ExtendingMessageSubmessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDesc,
-			NumEnums:      1,
-			NumMessages:   8,
-			NumExtensions: 44,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_depIdxs,
-		EnumInfos:         file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_enumTypes,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_msgTypes,
-		ExtensionInfos:    file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_extTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto = out.File
-	file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_extensions_ext_ext_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/extensions/ext/ext.proto b/cmd/protoc-gen-go/testdata/extensions/ext/ext.proto
deleted file mode 100644
index 5156c1c..0000000
--- a/cmd/protoc-gen-go/testdata/extensions/ext/ext.proto
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-import "cmd/protoc-gen-go/testdata/extensions/base/base.proto";
-import "cmd/protoc-gen-go/testdata/extensions/extra/extra.proto";
-
-package goproto.protoc.extension.ext;
-
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/extensions/ext";
-
-message Message {
-  optional bytes data = 1;
-
-  message M {}
-}
-
-enum Enum {
-  ZERO = 0;
-}
-
-// Extend with various types.
-extend goproto.protoc.extension.base.BaseMessage {
-  optional bool      extension_bool     = 101;
-  optional Enum      extension_enum     = 102;
-  optional int32     extension_int32    = 103;
-  optional sint32    extension_sint32   = 104;
-  optional uint32    extension_uint32   = 105;
-  optional int64     extension_int64    = 106;
-  optional sint64    extension_sint64   = 107;
-  optional uint64    extension_uint64   = 108;
-  optional sfixed32  extension_sfixed32 = 109;
-  optional fixed32   extension_fixed32  = 110;
-  optional float     extension_float    = 111;
-  optional sfixed64  extension_sfixed64 = 112;
-  optional fixed64   extension_fixed64  = 113;
-  optional double    extension_double   = 114;
-  optional string    extension_string   = 115;
-  optional bytes     extension_bytes    = 116;
-  optional Message   extension_Message  = 117;
-  optional Message.M extension_MessageM = 118;
-  optional group ExtensionGroup = 119 {
-    optional string extension_group = 120;
-  }
-}
-
-// Extend with a foreign message.
-extend goproto.protoc.extension.base.BaseMessage {
-  optional goproto.protoc.extension.extra.ExtraMessage extra_message = 9;
-}
-
-// Extend in the scope of another type.
-message ExtendingMessage {
-  extend goproto.protoc.extension.base.BaseMessage {
-    optional string extending_message_string = 200;
-    optional ExtendingMessageSubmessage extending_message_submessage = 201;
-  }
-  message ExtendingMessageSubmessage {}
-}
-
-// Extend with repeated fields.
-extend goproto.protoc.extension.base.BaseMessage {
-  repeated bool     repeated_x_bool     = 301;
-  repeated Enum     repeated_x_enum     = 302;
-  repeated int32    repeated_x_int32    = 303;
-  repeated sint32   repeated_x_sint32   = 304;
-  repeated uint32   repeated_x_uint32   = 305;
-  repeated int64    repeated_x_int64    = 306;
-  repeated sint64   repeated_x_sint64   = 307;
-  repeated uint64   repeated_x_uint64   = 308;
-  repeated sfixed32 repeated_x_sfixed32 = 309;
-  repeated fixed32  repeated_x_fixed32  = 310;
-  repeated float    repeated_x_float    = 311;
-  repeated sfixed64 repeated_x_sfixed64 = 312;
-  repeated fixed64  repeated_x_fixed64  = 313;
-  repeated double   repeated_x_double   = 314;
-  repeated string   repeated_x_string   = 315;
-  repeated bytes    repeated_x_bytes    = 316;
-  repeated Message  repeated_x_Message  = 317;
-  repeated group RepeatedGroup = 318 {
-    repeated string repeated_x_group = 319;
-  }
-}
-
-// An extension of an extension.
-message Extendable {
-  extensions 1 to max;
-}
-extend goproto.protoc.extension.base.BaseMessage {
-  optional Extendable extendable_field = 400;
-}
-extend Extendable {
-  optional string extendable_string_field = 1;
-}
-
-// Message set wire format.
-message MessageSetWireFormatExtension {
-  extend goproto.protoc.extension.base.MessageSetWireFormatMessage {
-    optional MessageSetWireFormatExtension message_set_extension = 100;
-  }
-}
-
-// Message set extension, not nested in a message.
-extend goproto.protoc.extension.base.MessageSetWireFormatMessage {
-  optional MessageSetWireFormatExtension message_set_extension = 101;
-}
diff --git a/cmd/protoc-gen-go/testdata/extensions/extra/extra.pb.go b/cmd/protoc-gen-go/testdata/extensions/extra/extra.pb.go
deleted file mode 100644
index c056c4b..0000000
--- a/cmd/protoc-gen-go/testdata/extensions/extra/extra.pb.go
+++ /dev/null
@@ -1,143 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/extensions/extra/extra.proto
-
-package extra
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type ExtraMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Data []byte `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"`
-}
-
-func (x *ExtraMessage) Reset() {
-	*x = ExtraMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ExtraMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ExtraMessage) ProtoMessage() {}
-
-func (x *ExtraMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ExtraMessage.ProtoReflect.Descriptor instead.
-func (*ExtraMessage) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *ExtraMessage) GetData() []byte {
-	if x != nil {
-		return x.Data
-	}
-	return nil
-}
-
-var File_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDesc = []byte{
-	0x0a, 0x37, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x2f, 0x65, 0x78,
-	0x74, 0x72, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x2e, 0x65, 0x78, 0x74, 0x72, 0x61, 0x22, 0x22, 0x0a, 0x0c, 0x45, 0x78, 0x74,
-	0x72, 0x61, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74,
-	0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x42, 0x48, 0x5a,
-	0x46, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f,
-	0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65,
-	0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x73, 0x2f, 0x65, 0x78, 0x74, 0x72, 0x61,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDescData = file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_goTypes = []interface{}{
-	(*ExtraMessage)(nil), // 0: goproto.protoc.extension.extra.ExtraMessage
-}
-var file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_init() }
-func file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ExtraMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_depIdxs,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto = out.File
-	file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_extensions_extra_extra_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/extensions/extra/extra.proto b/cmd/protoc-gen-go/testdata/extensions/extra/extra.proto
deleted file mode 100644
index eeea423..0000000
--- a/cmd/protoc-gen-go/testdata/extensions/extra/extra.proto
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.protoc.extension.extra;
-
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/extensions/extra";
-
-message ExtraMessage {
-  optional bytes data = 1;
-}
diff --git a/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go b/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go
deleted file mode 100644
index 586f7c8..0000000
--- a/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.pb.go
+++ /dev/null
@@ -1,762 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto
-
-package proto3
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	descriptorpb "google.golang.org/protobuf/types/descriptorpb"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Enum int32
-
-const (
-	Enum_ZERO Enum = 0
-)
-
-// Enum value maps for Enum.
-var (
-	Enum_name = map[int32]string{
-		0: "ZERO",
-	}
-	Enum_value = map[string]int32{
-		"ZERO": 0,
-	}
-)
-
-func (x Enum) Enum() *Enum {
-	p := new(Enum)
-	*p = x
-	return p
-}
-
-func (x Enum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum) Descriptor() protoreflect.EnumDescriptor {
-	return file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_enumTypes[0].Descriptor()
-}
-
-func (Enum) Type() protoreflect.EnumType {
-	return &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_enumTypes[0]
-}
-
-func (x Enum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Enum.Descriptor instead.
-func (Enum) EnumDescriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDescGZIP(), []int{0}
-}
-
-type Message struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message) Reset() {
-	*x = Message{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message) ProtoMessage() {}
-
-func (x *Message) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message.ProtoReflect.Descriptor instead.
-func (*Message) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDescGZIP(), []int{0}
-}
-
-var file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes = []protoimpl.ExtensionInfo{
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*bool)(nil),
-		Field:         1001,
-		Name:          "goproto.protoc.extension.proto3.extension_bool",
-		Tag:           "varint,1001,opt,name=extension_bool",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*Enum)(nil),
-		Field:         1002,
-		Name:          "goproto.protoc.extension.proto3.extension_enum",
-		Tag:           "varint,1002,opt,name=extension_enum,enum=goproto.protoc.extension.proto3.Enum",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*int32)(nil),
-		Field:         1003,
-		Name:          "goproto.protoc.extension.proto3.extension_int32",
-		Tag:           "varint,1003,opt,name=extension_int32",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*int32)(nil),
-		Field:         1004,
-		Name:          "goproto.protoc.extension.proto3.extension_sint32",
-		Tag:           "zigzag32,1004,opt,name=extension_sint32",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*uint32)(nil),
-		Field:         1005,
-		Name:          "goproto.protoc.extension.proto3.extension_uint32",
-		Tag:           "varint,1005,opt,name=extension_uint32",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*int64)(nil),
-		Field:         1006,
-		Name:          "goproto.protoc.extension.proto3.extension_int64",
-		Tag:           "varint,1006,opt,name=extension_int64",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*int64)(nil),
-		Field:         1007,
-		Name:          "goproto.protoc.extension.proto3.extension_sint64",
-		Tag:           "zigzag64,1007,opt,name=extension_sint64",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*uint64)(nil),
-		Field:         1008,
-		Name:          "goproto.protoc.extension.proto3.extension_uint64",
-		Tag:           "varint,1008,opt,name=extension_uint64",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*int32)(nil),
-		Field:         1009,
-		Name:          "goproto.protoc.extension.proto3.extension_sfixed32",
-		Tag:           "fixed32,1009,opt,name=extension_sfixed32",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*uint32)(nil),
-		Field:         1010,
-		Name:          "goproto.protoc.extension.proto3.extension_fixed32",
-		Tag:           "fixed32,1010,opt,name=extension_fixed32",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*float32)(nil),
-		Field:         1011,
-		Name:          "goproto.protoc.extension.proto3.extension_float",
-		Tag:           "fixed32,1011,opt,name=extension_float",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*int64)(nil),
-		Field:         1012,
-		Name:          "goproto.protoc.extension.proto3.extension_sfixed64",
-		Tag:           "fixed64,1012,opt,name=extension_sfixed64",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*uint64)(nil),
-		Field:         1013,
-		Name:          "goproto.protoc.extension.proto3.extension_fixed64",
-		Tag:           "fixed64,1013,opt,name=extension_fixed64",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*float64)(nil),
-		Field:         1014,
-		Name:          "goproto.protoc.extension.proto3.extension_double",
-		Tag:           "fixed64,1014,opt,name=extension_double",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*string)(nil),
-		Field:         1015,
-		Name:          "goproto.protoc.extension.proto3.extension_string",
-		Tag:           "bytes,1015,opt,name=extension_string",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: ([]byte)(nil),
-		Field:         1016,
-		Name:          "goproto.protoc.extension.proto3.extension_bytes",
-		Tag:           "bytes,1016,opt,name=extension_bytes",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*Message)(nil),
-		Field:         1017,
-		Name:          "goproto.protoc.extension.proto3.extension_Message",
-		Tag:           "bytes,1017,opt,name=extension_Message",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: ([]bool)(nil),
-		Field:         2001,
-		Name:          "goproto.protoc.extension.proto3.repeated_extension_bool",
-		Tag:           "varint,2001,rep,name=repeated_extension_bool",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: ([]Enum)(nil),
-		Field:         2002,
-		Name:          "goproto.protoc.extension.proto3.repeated_extension_enum",
-		Tag:           "varint,2002,rep,name=repeated_extension_enum,enum=goproto.protoc.extension.proto3.Enum",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: ([]int32)(nil),
-		Field:         2003,
-		Name:          "goproto.protoc.extension.proto3.repeated_extension_int32",
-		Tag:           "varint,2003,rep,name=repeated_extension_int32",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: ([]int32)(nil),
-		Field:         2004,
-		Name:          "goproto.protoc.extension.proto3.repeated_extension_sint32",
-		Tag:           "zigzag32,2004,rep,name=repeated_extension_sint32",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: ([]uint32)(nil),
-		Field:         2005,
-		Name:          "goproto.protoc.extension.proto3.repeated_extension_uint32",
-		Tag:           "varint,2005,rep,name=repeated_extension_uint32",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: ([]int64)(nil),
-		Field:         2006,
-		Name:          "goproto.protoc.extension.proto3.repeated_extension_int64",
-		Tag:           "varint,2006,rep,name=repeated_extension_int64",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: ([]int64)(nil),
-		Field:         2007,
-		Name:          "goproto.protoc.extension.proto3.repeated_extension_sint64",
-		Tag:           "zigzag64,2007,rep,name=repeated_extension_sint64",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: ([]uint64)(nil),
-		Field:         2008,
-		Name:          "goproto.protoc.extension.proto3.repeated_extension_uint64",
-		Tag:           "varint,2008,rep,name=repeated_extension_uint64",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: ([]int32)(nil),
-		Field:         2009,
-		Name:          "goproto.protoc.extension.proto3.repeated_extension_sfixed32",
-		Tag:           "fixed32,2009,rep,name=repeated_extension_sfixed32",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: ([]uint32)(nil),
-		Field:         2010,
-		Name:          "goproto.protoc.extension.proto3.repeated_extension_fixed32",
-		Tag:           "fixed32,2010,rep,name=repeated_extension_fixed32",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: ([]float32)(nil),
-		Field:         2011,
-		Name:          "goproto.protoc.extension.proto3.repeated_extension_float",
-		Tag:           "fixed32,2011,rep,name=repeated_extension_float",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: ([]int64)(nil),
-		Field:         2012,
-		Name:          "goproto.protoc.extension.proto3.repeated_extension_sfixed64",
-		Tag:           "fixed64,2012,rep,name=repeated_extension_sfixed64",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: ([]uint64)(nil),
-		Field:         2013,
-		Name:          "goproto.protoc.extension.proto3.repeated_extension_fixed64",
-		Tag:           "fixed64,2013,rep,name=repeated_extension_fixed64",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: ([]float64)(nil),
-		Field:         2014,
-		Name:          "goproto.protoc.extension.proto3.repeated_extension_double",
-		Tag:           "fixed64,2014,rep,name=repeated_extension_double",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: ([]string)(nil),
-		Field:         2015,
-		Name:          "goproto.protoc.extension.proto3.repeated_extension_string",
-		Tag:           "bytes,2015,rep,name=repeated_extension_string",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: ([][]byte)(nil),
-		Field:         2016,
-		Name:          "goproto.protoc.extension.proto3.repeated_extension_bytes",
-		Tag:           "bytes,2016,rep,name=repeated_extension_bytes",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: ([]*Message)(nil),
-		Field:         2017,
-		Name:          "goproto.protoc.extension.proto3.repeated_extension_Message",
-		Tag:           "bytes,2017,rep,name=repeated_extension_Message",
-		Filename:      "cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto",
-	},
-}
-
-// Extension fields to descriptorpb.MessageOptions.
-var (
-	// optional bool extension_bool = 1001;
-	E_ExtensionBool = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[0]
-	// optional goproto.protoc.extension.proto3.Enum extension_enum = 1002;
-	E_ExtensionEnum = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[1]
-	// optional int32 extension_int32 = 1003;
-	E_ExtensionInt32 = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[2]
-	// optional sint32 extension_sint32 = 1004;
-	E_ExtensionSint32 = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[3]
-	// optional uint32 extension_uint32 = 1005;
-	E_ExtensionUint32 = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[4]
-	// optional int64 extension_int64 = 1006;
-	E_ExtensionInt64 = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[5]
-	// optional sint64 extension_sint64 = 1007;
-	E_ExtensionSint64 = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[6]
-	// optional uint64 extension_uint64 = 1008;
-	E_ExtensionUint64 = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[7]
-	// optional sfixed32 extension_sfixed32 = 1009;
-	E_ExtensionSfixed32 = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[8]
-	// optional fixed32 extension_fixed32 = 1010;
-	E_ExtensionFixed32 = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[9]
-	// optional float extension_float = 1011;
-	E_ExtensionFloat = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[10]
-	// optional sfixed64 extension_sfixed64 = 1012;
-	E_ExtensionSfixed64 = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[11]
-	// optional fixed64 extension_fixed64 = 1013;
-	E_ExtensionFixed64 = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[12]
-	// optional double extension_double = 1014;
-	E_ExtensionDouble = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[13]
-	// optional string extension_string = 1015;
-	E_ExtensionString = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[14]
-	// optional bytes extension_bytes = 1016;
-	E_ExtensionBytes = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[15]
-	// optional goproto.protoc.extension.proto3.Message extension_Message = 1017;
-	E_Extension_Message = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[16]
-	// repeated bool repeated_extension_bool = 2001;
-	E_RepeatedExtensionBool = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[17]
-	// repeated goproto.protoc.extension.proto3.Enum repeated_extension_enum = 2002;
-	E_RepeatedExtensionEnum = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[18]
-	// repeated int32 repeated_extension_int32 = 2003;
-	E_RepeatedExtensionInt32 = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[19]
-	// repeated sint32 repeated_extension_sint32 = 2004;
-	E_RepeatedExtensionSint32 = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[20]
-	// repeated uint32 repeated_extension_uint32 = 2005;
-	E_RepeatedExtensionUint32 = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[21]
-	// repeated int64 repeated_extension_int64 = 2006;
-	E_RepeatedExtensionInt64 = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[22]
-	// repeated sint64 repeated_extension_sint64 = 2007;
-	E_RepeatedExtensionSint64 = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[23]
-	// repeated uint64 repeated_extension_uint64 = 2008;
-	E_RepeatedExtensionUint64 = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[24]
-	// repeated sfixed32 repeated_extension_sfixed32 = 2009;
-	E_RepeatedExtensionSfixed32 = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[25]
-	// repeated fixed32 repeated_extension_fixed32 = 2010;
-	E_RepeatedExtensionFixed32 = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[26]
-	// repeated float repeated_extension_float = 2011;
-	E_RepeatedExtensionFloat = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[27]
-	// repeated sfixed64 repeated_extension_sfixed64 = 2012;
-	E_RepeatedExtensionSfixed64 = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[28]
-	// repeated fixed64 repeated_extension_fixed64 = 2013;
-	E_RepeatedExtensionFixed64 = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[29]
-	// repeated double repeated_extension_double = 2014;
-	E_RepeatedExtensionDouble = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[30]
-	// repeated string repeated_extension_string = 2015;
-	E_RepeatedExtensionString = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[31]
-	// repeated bytes repeated_extension_bytes = 2016;
-	E_RepeatedExtensionBytes = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[32]
-	// repeated goproto.protoc.extension.proto3.Message repeated_extension_Message = 2017;
-	E_RepeatedExtension_Message = &file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes[33]
-)
-
-var File_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDesc = []byte{
-	0x0a, 0x37, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2f, 0x65,
-	0x78, 0x74, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1f, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63,
-	0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x09, 0x0a, 0x07,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2a, 0x10, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12,
-	0x08, 0x0a, 0x04, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x3a, 0x47, 0x0a, 0x0e, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x1f, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xe9, 0x07, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f,
-	0x6f, 0x6c, 0x3a, 0x6e, 0x0a, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f,
-	0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x45,
-	0x6e, 0x75, 0x6d, 0x52, 0x0d, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e,
-	0x75, 0x6d, 0x3a, 0x49, 0x0a, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x65,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x4b, 0x0a,
-	0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x73, 0x18, 0xec, 0x07, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x4b, 0x0a, 0x10, 0x65, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1f,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
-	0xed, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x49, 0x0a, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xee, 0x07, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74,
-	0x36, 0x34, 0x3a, 0x4b, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f,
-	0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xef, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0f,
-	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a,
-	0x4b, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x73, 0x18, 0xf0, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x4f, 0x0a, 0x12,
-	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x73, 0x18, 0xf1, 0x07, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x11, 0x65, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x4d, 0x0a,
-	0x11, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x73, 0x18, 0xf2, 0x07, 0x20, 0x01, 0x28, 0x07, 0x52, 0x10, 0x65, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x49, 0x0a, 0x0f,
-	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12,
-	0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x18, 0xf3, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x4f, 0x0a, 0x12, 0x65, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1f, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xf4,
-	0x07, 0x20, 0x01, 0x28, 0x10, 0x52, 0x11, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x4d, 0x0a, 0x11, 0x65, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1f, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xf5,
-	0x07, 0x20, 0x01, 0x28, 0x06, 0x52, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x4b, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xf6, 0x07, 0x20,
-	0x01, 0x28, 0x01, 0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x6f,
-	0x75, 0x62, 0x6c, 0x65, 0x3a, 0x4b, 0x0a, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xf7, 0x07, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x3a, 0x49, 0x0a, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x62,
-	0x79, 0x74, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xf8, 0x07, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0e, 0x65, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x3a, 0x77, 0x0a, 0x11,
-	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x73, 0x18, 0xf9, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x10, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x58, 0x0a, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x62, 0x6f, 0x6f, 0x6c,
-	0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x73, 0x18, 0xd1, 0x0f, 0x20, 0x03, 0x28, 0x08, 0x52, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x6f, 0x6f, 0x6c, 0x3a,
-	0x7f, 0x0a, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xd2, 0x0f, 0x20, 0x03,
-	0x28, 0x0e, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x63, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x75, 0x6d,
-	0x3a, 0x5a, 0x0a, 0x18, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1f, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xd3, 0x0f,
-	0x20, 0x03, 0x28, 0x05, 0x52, 0x16, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x5c, 0x0a, 0x19,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xd4, 0x0f, 0x20, 0x03, 0x28,
-	0x11, 0x52, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x5c, 0x0a, 0x19, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xd5, 0x0f, 0x20, 0x03, 0x28, 0x0d, 0x52,
-	0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x5a, 0x0a, 0x18, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xd6, 0x0f, 0x20, 0x03, 0x28, 0x03, 0x52, 0x16, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x49,
-	0x6e, 0x74, 0x36, 0x34, 0x3a, 0x5c, 0x0a, 0x19, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36,
-	0x34, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x73, 0x18, 0xd7, 0x0f, 0x20, 0x03, 0x28, 0x12, 0x52, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x3a, 0x5c, 0x0a, 0x19, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x65,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
-	0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x18, 0xd8, 0x0f, 0x20, 0x03, 0x28, 0x04, 0x52, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x3a, 0x60, 0x0a, 0x1b, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12,
-	0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x18, 0xd9, 0x0f, 0x20, 0x03, 0x28, 0x0f, 0x52, 0x19, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x3a, 0x5e, 0x0a, 0x1a, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x65,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
-	0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x73, 0x18, 0xda, 0x0f, 0x20, 0x03, 0x28, 0x07, 0x52, 0x18, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x3a, 0x5a, 0x0a, 0x18, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x65,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x1f,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
-	0xdb, 0x0f, 0x20, 0x03, 0x28, 0x02, 0x52, 0x16, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x60,
-	0x0a, 0x1b, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1f, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xdc,
-	0x0f, 0x20, 0x03, 0x28, 0x10, 0x52, 0x19, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
-	0x3a, 0x5e, 0x0a, 0x1a, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1f,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
-	0xdd, 0x0f, 0x20, 0x03, 0x28, 0x06, 0x52, 0x18, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
-	0x3a, 0x5c, 0x0a, 0x19, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x1f, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xde,
-	0x0f, 0x20, 0x03, 0x28, 0x01, 0x52, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x3a, 0x5c,
-	0x0a, 0x19, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1f, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xdf, 0x0f, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x5a, 0x0a, 0x18,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xe0, 0x0f, 0x20, 0x03, 0x28, 0x0c,
-	0x52, 0x16, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x3a, 0x88, 0x01, 0x0a, 0x1a, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xe1, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
-	0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x18, 0x72, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x42, 0x49, 0x5a, 0x47, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f,
-	0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x62, 0x06,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDescData = file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_goTypes = []interface{}{
-	(Enum)(0),                           // 0: goproto.protoc.extension.proto3.Enum
-	(*Message)(nil),                     // 1: goproto.protoc.extension.proto3.Message
-	(*descriptorpb.MessageOptions)(nil), // 2: google.protobuf.MessageOptions
-}
-var file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_depIdxs = []int32{
-	2,  // 0: goproto.protoc.extension.proto3.extension_bool:extendee -> google.protobuf.MessageOptions
-	2,  // 1: goproto.protoc.extension.proto3.extension_enum:extendee -> google.protobuf.MessageOptions
-	2,  // 2: goproto.protoc.extension.proto3.extension_int32:extendee -> google.protobuf.MessageOptions
-	2,  // 3: goproto.protoc.extension.proto3.extension_sint32:extendee -> google.protobuf.MessageOptions
-	2,  // 4: goproto.protoc.extension.proto3.extension_uint32:extendee -> google.protobuf.MessageOptions
-	2,  // 5: goproto.protoc.extension.proto3.extension_int64:extendee -> google.protobuf.MessageOptions
-	2,  // 6: goproto.protoc.extension.proto3.extension_sint64:extendee -> google.protobuf.MessageOptions
-	2,  // 7: goproto.protoc.extension.proto3.extension_uint64:extendee -> google.protobuf.MessageOptions
-	2,  // 8: goproto.protoc.extension.proto3.extension_sfixed32:extendee -> google.protobuf.MessageOptions
-	2,  // 9: goproto.protoc.extension.proto3.extension_fixed32:extendee -> google.protobuf.MessageOptions
-	2,  // 10: goproto.protoc.extension.proto3.extension_float:extendee -> google.protobuf.MessageOptions
-	2,  // 11: goproto.protoc.extension.proto3.extension_sfixed64:extendee -> google.protobuf.MessageOptions
-	2,  // 12: goproto.protoc.extension.proto3.extension_fixed64:extendee -> google.protobuf.MessageOptions
-	2,  // 13: goproto.protoc.extension.proto3.extension_double:extendee -> google.protobuf.MessageOptions
-	2,  // 14: goproto.protoc.extension.proto3.extension_string:extendee -> google.protobuf.MessageOptions
-	2,  // 15: goproto.protoc.extension.proto3.extension_bytes:extendee -> google.protobuf.MessageOptions
-	2,  // 16: goproto.protoc.extension.proto3.extension_Message:extendee -> google.protobuf.MessageOptions
-	2,  // 17: goproto.protoc.extension.proto3.repeated_extension_bool:extendee -> google.protobuf.MessageOptions
-	2,  // 18: goproto.protoc.extension.proto3.repeated_extension_enum:extendee -> google.protobuf.MessageOptions
-	2,  // 19: goproto.protoc.extension.proto3.repeated_extension_int32:extendee -> google.protobuf.MessageOptions
-	2,  // 20: goproto.protoc.extension.proto3.repeated_extension_sint32:extendee -> google.protobuf.MessageOptions
-	2,  // 21: goproto.protoc.extension.proto3.repeated_extension_uint32:extendee -> google.protobuf.MessageOptions
-	2,  // 22: goproto.protoc.extension.proto3.repeated_extension_int64:extendee -> google.protobuf.MessageOptions
-	2,  // 23: goproto.protoc.extension.proto3.repeated_extension_sint64:extendee -> google.protobuf.MessageOptions
-	2,  // 24: goproto.protoc.extension.proto3.repeated_extension_uint64:extendee -> google.protobuf.MessageOptions
-	2,  // 25: goproto.protoc.extension.proto3.repeated_extension_sfixed32:extendee -> google.protobuf.MessageOptions
-	2,  // 26: goproto.protoc.extension.proto3.repeated_extension_fixed32:extendee -> google.protobuf.MessageOptions
-	2,  // 27: goproto.protoc.extension.proto3.repeated_extension_float:extendee -> google.protobuf.MessageOptions
-	2,  // 28: goproto.protoc.extension.proto3.repeated_extension_sfixed64:extendee -> google.protobuf.MessageOptions
-	2,  // 29: goproto.protoc.extension.proto3.repeated_extension_fixed64:extendee -> google.protobuf.MessageOptions
-	2,  // 30: goproto.protoc.extension.proto3.repeated_extension_double:extendee -> google.protobuf.MessageOptions
-	2,  // 31: goproto.protoc.extension.proto3.repeated_extension_string:extendee -> google.protobuf.MessageOptions
-	2,  // 32: goproto.protoc.extension.proto3.repeated_extension_bytes:extendee -> google.protobuf.MessageOptions
-	2,  // 33: goproto.protoc.extension.proto3.repeated_extension_Message:extendee -> google.protobuf.MessageOptions
-	0,  // 34: goproto.protoc.extension.proto3.extension_enum:type_name -> goproto.protoc.extension.proto3.Enum
-	1,  // 35: goproto.protoc.extension.proto3.extension_Message:type_name -> goproto.protoc.extension.proto3.Message
-	0,  // 36: goproto.protoc.extension.proto3.repeated_extension_enum:type_name -> goproto.protoc.extension.proto3.Enum
-	1,  // 37: goproto.protoc.extension.proto3.repeated_extension_Message:type_name -> goproto.protoc.extension.proto3.Message
-	38, // [38:38] is the sub-list for method output_type
-	38, // [38:38] is the sub-list for method input_type
-	34, // [34:38] is the sub-list for extension type_name
-	0,  // [0:34] is the sub-list for extension extendee
-	0,  // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_init() }
-func file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDesc,
-			NumEnums:      1,
-			NumMessages:   1,
-			NumExtensions: 34,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_depIdxs,
-		EnumInfos:         file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_enumTypes,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_msgTypes,
-		ExtensionInfos:    file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_extTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto = out.File
-	file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_extensions_proto3_ext3_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto b/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto
deleted file mode 100644
index 3d48c1f..0000000
--- a/cmd/protoc-gen-go/testdata/extensions/proto3/ext3.proto
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-
-import "google/protobuf/descriptor.proto";
-
-package goproto.protoc.extension.proto3;
-
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/extensions/proto3";
-
-message Message {}
-enum Enum { ZERO = 0; }
-
-// The only types proto3 is allowed to extend are descriptor options.
-extend google.protobuf.MessageOptions {
-  bool     extension_bool     = 1001;
-  Enum     extension_enum     = 1002;
-  int32    extension_int32    = 1003;
-  sint32   extension_sint32   = 1004;
-  uint32   extension_uint32   = 1005;
-  int64    extension_int64    = 1006;
-  sint64   extension_sint64   = 1007;
-  uint64   extension_uint64   = 1008;
-  sfixed32 extension_sfixed32 = 1009;
-  fixed32  extension_fixed32  = 1010;
-  float    extension_float    = 1011;
-  sfixed64 extension_sfixed64 = 1012;
-  fixed64  extension_fixed64  = 1013;
-  double   extension_double   = 1014;
-  string   extension_string   = 1015;
-  bytes    extension_bytes    = 1016;
-  Message  extension_Message  = 1017;
-
-  repeated bool     repeated_extension_bool     = 2001;
-  repeated Enum     repeated_extension_enum     = 2002;
-  repeated int32    repeated_extension_int32    = 2003;
-  repeated sint32   repeated_extension_sint32   = 2004;
-  repeated uint32   repeated_extension_uint32   = 2005;
-  repeated int64    repeated_extension_int64    = 2006;
-  repeated sint64   repeated_extension_sint64   = 2007;
-  repeated uint64   repeated_extension_uint64   = 2008;
-  repeated sfixed32 repeated_extension_sfixed32 = 2009;
-  repeated fixed32  repeated_extension_fixed32  = 2010;
-  repeated float    repeated_extension_float    = 2011;
-  repeated sfixed64 repeated_extension_sfixed64 = 2012;
-  repeated fixed64  repeated_extension_fixed64  = 2013;
-  repeated double   repeated_extension_double   = 2014;
-  repeated string   repeated_extension_string   = 2015;
-  repeated bytes    repeated_extension_bytes    = 2016;
-  repeated Message  repeated_extension_Message  = 2017;
-}
diff --git a/cmd/protoc-gen-go/testdata/fieldnames/fieldnames.pb.go b/cmd/protoc-gen-go/testdata/fieldnames/fieldnames.pb.go
deleted file mode 100644
index ed3e0db..0000000
--- a/cmd/protoc-gen-go/testdata/fieldnames/fieldnames.pb.go
+++ /dev/null
@@ -1,455 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/fieldnames/fieldnames.proto
-
-package fieldnames
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-// Assorted edge cases in field name conflict resolution.
-//
-// Not all (or possibly any) of these behave in an easily-understood fashion.
-// This exists to demonstrate the current behavior and catch unintended
-// changes in it.
-type Message struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Various CamelCase conversions.
-	FieldOne   *string `protobuf:"bytes,1,opt,name=field_one,json=fieldOne" json:"field_one,omitempty"`
-	FieldTwo   *string `protobuf:"bytes,2,opt,name=FieldTwo" json:"FieldTwo,omitempty"`
-	FieldThree *string `protobuf:"bytes,3,opt,name=fieldThree" json:"fieldThree,omitempty"`
-	Field_Four *string `protobuf:"bytes,4,opt,name=field__four,json=fieldFour" json:"field__four,omitempty"`
-	// Field names that conflict with standard methods on the message struct.
-	Descriptor_   *string `protobuf:"bytes,10,opt,name=descriptor" json:"descriptor,omitempty"`
-	Marshal_      *string `protobuf:"bytes,11,opt,name=marshal" json:"marshal,omitempty"`
-	Unmarshal_    *string `protobuf:"bytes,12,opt,name=unmarshal" json:"unmarshal,omitempty"`
-	ProtoMessage_ *string `protobuf:"bytes,13,opt,name=proto_message,json=protoMessage" json:"proto_message,omitempty"`
-	// Field names that conflict with each other after CamelCasing.
-	CamelCase    *string `protobuf:"bytes,20,opt,name=CamelCase" json:"CamelCase,omitempty"`
-	CamelCase_   *string `protobuf:"bytes,21,opt,name=CamelCase_,json=CamelCase" json:"CamelCase_,omitempty"`
-	CamelCase__  *string `protobuf:"bytes,22,opt,name=camel_case,json=camelCase" json:"camel_case,omitempty"`   // conflicts with 20, 21
-	CamelCase___ *string `protobuf:"bytes,23,opt,name=CamelCase__,json=CamelCase" json:"CamelCase__,omitempty"` // conflicts with 21, 21, renamed 22
-	// Field with a getter that conflicts with another field.
-	GetName *string `protobuf:"bytes,30,opt,name=get_name,json=getName" json:"get_name,omitempty"`
-	Name_   *string `protobuf:"bytes,31,opt,name=name" json:"name,omitempty"`
-	// Oneof that conflicts with its first field: The oneof is renamed.
-	//
-	// Types that are assignable to OneofConflictA_:
-	//	*Message_OneofConflictA
-	OneofConflictA_ isMessage_OneofConflictA_ `protobuf_oneof:"oneof_conflict_a"`
-	// Oneof that conflicts with its second field: The field is renamed.
-	//
-	// Types that are assignable to OneofConflictB:
-	//	*Message_OneofNoConflict
-	//	*Message_OneofConflictB_
-	OneofConflictB isMessage_OneofConflictB `protobuf_oneof:"oneof_conflict_b"`
-	// Oneof with a field name that conflicts with a nested message.
-	//
-	// Types that are assignable to OneofConflictC:
-	//	*Message_OneofMessageConflict_
-	OneofConflictC isMessage_OneofConflictC `protobuf_oneof:"oneof_conflict_c"`
-}
-
-func (x *Message) Reset() {
-	*x = Message{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message) ProtoMessage() {}
-
-func (x *Message) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message.ProtoReflect.Descriptor instead.
-func (*Message) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Message) GetFieldOne() string {
-	if x != nil && x.FieldOne != nil {
-		return *x.FieldOne
-	}
-	return ""
-}
-
-func (x *Message) GetFieldTwo() string {
-	if x != nil && x.FieldTwo != nil {
-		return *x.FieldTwo
-	}
-	return ""
-}
-
-func (x *Message) GetFieldThree() string {
-	if x != nil && x.FieldThree != nil {
-		return *x.FieldThree
-	}
-	return ""
-}
-
-func (x *Message) GetField_Four() string {
-	if x != nil && x.Field_Four != nil {
-		return *x.Field_Four
-	}
-	return ""
-}
-
-func (x *Message) GetDescriptor_() string {
-	if x != nil && x.Descriptor_ != nil {
-		return *x.Descriptor_
-	}
-	return ""
-}
-
-func (x *Message) GetMarshal_() string {
-	if x != nil && x.Marshal_ != nil {
-		return *x.Marshal_
-	}
-	return ""
-}
-
-func (x *Message) GetUnmarshal_() string {
-	if x != nil && x.Unmarshal_ != nil {
-		return *x.Unmarshal_
-	}
-	return ""
-}
-
-func (x *Message) GetProtoMessage_() string {
-	if x != nil && x.ProtoMessage_ != nil {
-		return *x.ProtoMessage_
-	}
-	return ""
-}
-
-func (x *Message) GetCamelCase() string {
-	if x != nil && x.CamelCase != nil {
-		return *x.CamelCase
-	}
-	return ""
-}
-
-func (x *Message) GetCamelCase_() string {
-	if x != nil && x.CamelCase_ != nil {
-		return *x.CamelCase_
-	}
-	return ""
-}
-
-func (x *Message) GetCamelCase__() string {
-	if x != nil && x.CamelCase__ != nil {
-		return *x.CamelCase__
-	}
-	return ""
-}
-
-func (x *Message) GetCamelCase___() string {
-	if x != nil && x.CamelCase___ != nil {
-		return *x.CamelCase___
-	}
-	return ""
-}
-
-func (x *Message) GetGetName() string {
-	if x != nil && x.GetName != nil {
-		return *x.GetName
-	}
-	return ""
-}
-
-func (x *Message) GetName_() string {
-	if x != nil && x.Name_ != nil {
-		return *x.Name_
-	}
-	return ""
-}
-
-func (m *Message) GetOneofConflictA_() isMessage_OneofConflictA_ {
-	if m != nil {
-		return m.OneofConflictA_
-	}
-	return nil
-}
-
-func (x *Message) GetOneofConflictA() string {
-	if x, ok := x.GetOneofConflictA_().(*Message_OneofConflictA); ok {
-		return x.OneofConflictA
-	}
-	return ""
-}
-
-func (m *Message) GetOneofConflictB() isMessage_OneofConflictB {
-	if m != nil {
-		return m.OneofConflictB
-	}
-	return nil
-}
-
-func (x *Message) GetOneofNoConflict() string {
-	if x, ok := x.GetOneofConflictB().(*Message_OneofNoConflict); ok {
-		return x.OneofNoConflict
-	}
-	return ""
-}
-
-func (x *Message) GetOneofConflictB_() string {
-	if x, ok := x.GetOneofConflictB().(*Message_OneofConflictB_); ok {
-		return x.OneofConflictB_
-	}
-	return ""
-}
-
-func (m *Message) GetOneofConflictC() isMessage_OneofConflictC {
-	if m != nil {
-		return m.OneofConflictC
-	}
-	return nil
-}
-
-func (x *Message) GetOneofMessageConflict() string {
-	if x, ok := x.GetOneofConflictC().(*Message_OneofMessageConflict_); ok {
-		return x.OneofMessageConflict
-	}
-	return ""
-}
-
-type isMessage_OneofConflictA_ interface {
-	isMessage_OneofConflictA_()
-}
-
-type Message_OneofConflictA struct {
-	OneofConflictA string `protobuf:"bytes,40,opt,name=OneofConflictA,oneof"`
-}
-
-func (*Message_OneofConflictA) isMessage_OneofConflictA_() {}
-
-type isMessage_OneofConflictB interface {
-	isMessage_OneofConflictB()
-}
-
-type Message_OneofNoConflict struct {
-	OneofNoConflict string `protobuf:"bytes,50,opt,name=oneof_no_conflict,json=oneofNoConflict,oneof"`
-}
-
-type Message_OneofConflictB_ struct {
-	OneofConflictB_ string `protobuf:"bytes,51,opt,name=OneofConflictB,oneof"`
-}
-
-func (*Message_OneofNoConflict) isMessage_OneofConflictB() {}
-
-func (*Message_OneofConflictB_) isMessage_OneofConflictB() {}
-
-type isMessage_OneofConflictC interface {
-	isMessage_OneofConflictC()
-}
-
-type Message_OneofMessageConflict_ struct {
-	OneofMessageConflict string `protobuf:"bytes,60,opt,name=oneof_message_conflict,json=oneofMessageConflict,oneof"`
-}
-
-func (*Message_OneofMessageConflict_) isMessage_OneofConflictC() {}
-
-type Message_OneofMessageConflict struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message_OneofMessageConflict) Reset() {
-	*x = Message_OneofMessageConflict{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message_OneofMessageConflict) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message_OneofMessageConflict) ProtoMessage() {}
-
-func (x *Message_OneofMessageConflict) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message_OneofMessageConflict.ProtoReflect.Descriptor instead.
-func (*Message_OneofMessageConflict) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDescGZIP(), []int{0, 0}
-}
-
-var File_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDesc = []byte{
-	0x0a, 0x36, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x6e, 0x61, 0x6d,
-	0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x19, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x6e, 0x61,
-	0x6d, 0x65, 0x73, 0x22, 0xb8, 0x05, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
-	0x1b, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6f, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x6e, 0x65, 0x12, 0x1a, 0x0a, 0x08,
-	0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x77, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
-	0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x77, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x54, 0x68, 0x72, 0x65, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x54, 0x68, 0x72, 0x65, 0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x5f, 0x5f, 0x66, 0x6f, 0x75, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x46, 0x6f, 0x75, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x73, 0x63,
-	0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65,
-	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x72, 0x73,
-	0x68, 0x61, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x61, 0x72, 0x73, 0x68,
-	0x61, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c, 0x18,
-	0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c,
-	0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x61, 0x6d, 0x65, 0x6c, 0x43, 0x61,
-	0x73, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x43, 0x61, 0x6d, 0x65, 0x6c, 0x43,
-	0x61, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x43, 0x61, 0x6d, 0x65, 0x6c, 0x43, 0x61, 0x73, 0x65,
-	0x5f, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x43, 0x61, 0x6d, 0x65, 0x6c, 0x43, 0x61,
-	0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x61, 0x6d, 0x65, 0x6c, 0x5f, 0x63, 0x61, 0x73, 0x65,
-	0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x61, 0x6d, 0x65, 0x6c, 0x43, 0x61, 0x73,
-	0x65, 0x12, 0x1e, 0x0a, 0x0b, 0x43, 0x61, 0x6d, 0x65, 0x6c, 0x43, 0x61, 0x73, 0x65, 0x5f, 0x5f,
-	0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x43, 0x61, 0x6d, 0x65, 0x6c, 0x43, 0x61, 0x73,
-	0x65, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1e, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04,
-	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
-	0x12, 0x28, 0x0a, 0x0e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63,
-	0x74, 0x41, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x4f, 0x6e, 0x65, 0x6f,
-	0x66, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x41, 0x12, 0x2c, 0x0a, 0x11, 0x6f, 0x6e,
-	0x65, 0x6f, 0x66, 0x5f, 0x6e, 0x6f, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18,
-	0x32, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4e, 0x6f,
-	0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x12, 0x28, 0x0a, 0x0e, 0x4f, 0x6e, 0x65, 0x6f,
-	0x66, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x42, 0x18, 0x33, 0x20, 0x01, 0x28, 0x09,
-	0x48, 0x01, 0x52, 0x0e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63,
-	0x74, 0x42, 0x12, 0x36, 0x0a, 0x16, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x18, 0x3c, 0x20, 0x01,
-	0x28, 0x09, 0x48, 0x02, 0x52, 0x14, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x1a, 0x16, 0x0a, 0x14, 0x4f, 0x6e,
-	0x65, 0x6f, 0x66, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x6c, 0x69,
-	0x63, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x66,
-	0x6c, 0x69, 0x63, 0x74, 0x5f, 0x61, 0x42, 0x12, 0x0a, 0x10, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f,
-	0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x5f, 0x62, 0x42, 0x12, 0x0a, 0x10, 0x6f, 0x6e,
-	0x65, 0x6f, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x6c, 0x69, 0x63, 0x74, 0x5f, 0x63, 0x42, 0x42,
-	0x5a, 0x40, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
-	0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64,
-	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74,
-	0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x6e, 0x61, 0x6d,
-	0x65, 0x73,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDescData = file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
-var file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_goTypes = []interface{}{
-	(*Message)(nil),                      // 0: goproto.protoc.fieldnames.Message
-	(*Message_OneofMessageConflict)(nil), // 1: goproto.protoc.fieldnames.Message.OneofMessageConflict
-}
-var file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_init() }
-func file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message_OneofMessageConflict); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_msgTypes[0].OneofWrappers = []interface{}{
-		(*Message_OneofConflictA)(nil),
-		(*Message_OneofNoConflict)(nil),
-		(*Message_OneofConflictB_)(nil),
-		(*Message_OneofMessageConflict_)(nil),
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   2,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_depIdxs,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto = out.File
-	file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_fieldnames_fieldnames_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/fieldnames/fieldnames.proto b/cmd/protoc-gen-go/testdata/fieldnames/fieldnames.proto
deleted file mode 100644
index 00f6752..0000000
--- a/cmd/protoc-gen-go/testdata/fieldnames/fieldnames.proto
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.protoc.fieldnames;
-
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/fieldnames";
-
-// Assorted edge cases in field name conflict resolution.
-//
-// Not all (or possibly any) of these behave in an easily-understood fashion.
-// This exists to demonstrate the current behavior and catch unintended
-// changes in it.
-message Message {
-  // Various CamelCase conversions.
-  optional string field_one = 1;
-  optional string FieldTwo = 2;
-  optional string fieldThree = 3;
-  optional string field__four = 4;
-
-  // Field names that conflict with standard methods on the message struct.
-  optional string descriptor = 10;
-  optional string marshal = 11;
-  optional string unmarshal = 12;
-  optional string proto_message = 13;
-
-  // Field names that conflict with each other after CamelCasing.
-  optional string CamelCase = 20;
-  optional string CamelCase_ = 21;
-  optional string camel_case = 22; // conflicts with 20, 21
-  optional string CamelCase__ = 23; // conflicts with 21, 21, renamed 22
-
-  // Field with a getter that conflicts with another field.
-  optional string get_name = 30;
-  optional string name = 31;
-
-  // Oneof that conflicts with its first field: The oneof is renamed.
-  oneof oneof_conflict_a {
-    string OneofConflictA = 40;
-  }
-
-  // Oneof that conflicts with its second field: The field is renamed.
-  oneof oneof_conflict_b {
-    string oneof_no_conflict = 50;
-    string OneofConflictB = 51;
-  }
-
-  // Oneof with a field name that conflicts with a nested message.
-  oneof oneof_conflict_c {
-    string oneof_message_conflict = 60;
-  }
-  message OneofMessageConflict {}
-}
diff --git a/cmd/protoc-gen-go/testdata/gen_test.go b/cmd/protoc-gen-go/testdata/gen_test.go
deleted file mode 100644
index fa41156..0000000
--- a/cmd/protoc-gen-go/testdata/gen_test.go
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by generate-protos. DO NOT EDIT.
-
-package main
-
-import (
-	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/annotations"
-	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/comments"
-	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/extensions/base"
-	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/extensions/ext"
-	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/extensions/extra"
-	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/extensions/proto3"
-	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/fieldnames"
-	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/import_public"
-	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/import_public/sub"
-	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/import_public/sub2"
-	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/imports"
-	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/imports/fmt"
-	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/imports/test_a_1"
-	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/imports/test_a_2"
-	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/imports/test_b_1"
-	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/issue780_oneof_conflict"
-	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/nopackage"
-	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/proto2"
-	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/proto3"
-)
diff --git a/cmd/protoc-gen-go/testdata/import_public/a.pb.go b/cmd/protoc-gen-go/testdata/import_public/a.pb.go
deleted file mode 100644
index e00b548..0000000
--- a/cmd/protoc-gen-go/testdata/import_public/a.pb.go
+++ /dev/null
@@ -1,219 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/import_public/a.proto
-
-package import_public
-
-import (
-	sub "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/import_public/sub"
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-// Symbols defined in public import of cmd/protoc-gen-go/testdata/import_public/sub/a.proto.
-
-type E = sub.E
-
-const E_ZERO = sub.E_ZERO
-
-var E_name = sub.E_name
-var E_value = sub.E_value
-
-type M_Subenum = sub.M_Subenum
-
-const M_M_ZERO = sub.M_M_ZERO
-
-var M_Subenum_name = sub.M_Subenum_name
-var M_Subenum_value = sub.M_Subenum_value
-
-type M_Submessage_Submessage_Subenum = sub.M_Submessage_Submessage_Subenum
-
-const M_Submessage_M_SUBMESSAGE_ZERO = sub.M_Submessage_M_SUBMESSAGE_ZERO
-
-var M_Submessage_Submessage_Subenum_name = sub.M_Submessage_Submessage_Subenum_name
-var M_Submessage_Submessage_Subenum_value = sub.M_Submessage_Submessage_Subenum_value
-
-type M = sub.M
-
-const Default_M_S = sub.Default_M_S
-
-var Default_M_B = sub.Default_M_B
-var Default_M_F = sub.Default_M_F
-
-type M_OneofInt32 = sub.M_OneofInt32
-type M_OneofInt64 = sub.M_OneofInt64
-type M_Submessage = sub.M_Submessage
-type M_Submessage_SubmessageOneofInt32 = sub.M_Submessage_SubmessageOneofInt32
-type M_Submessage_SubmessageOneofInt64 = sub.M_Submessage_SubmessageOneofInt64
-
-var E_ExtensionField = sub.E_ExtensionField
-
-type Public struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	M     *sub.M `protobuf:"bytes,1,opt,name=m" json:"m,omitempty"`
-	E     *sub.E `protobuf:"varint,2,opt,name=e,enum=goproto.protoc.import_public.sub.E" json:"e,omitempty"`
-	Local *Local `protobuf:"bytes,3,opt,name=local" json:"local,omitempty"`
-}
-
-func (x *Public) Reset() {
-	*x = Public{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_import_public_a_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Public) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Public) ProtoMessage() {}
-
-func (x *Public) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_import_public_a_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Public.ProtoReflect.Descriptor instead.
-func (*Public) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Public) GetM() *sub.M {
-	if x != nil {
-		return x.M
-	}
-	return nil
-}
-
-func (x *Public) GetE() sub.E {
-	if x != nil && x.E != nil {
-		return *x.E
-	}
-	return sub.E(0)
-}
-
-func (x *Public) GetLocal() *Local {
-	if x != nil {
-		return x.Local
-	}
-	return nil
-}
-
-var File_cmd_protoc_gen_go_testdata_import_public_a_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDesc = []byte{
-	0x0a, 0x30, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70,
-	0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f, 0x61, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x12, 0x1c, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x63, 0x2e, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
-	0x1a, 0x34, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70,
-	0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f, 0x73, 0x75, 0x62, 0x2f, 0x61,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x30, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61,
-	0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
-	0x2f, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa9, 0x01, 0x0a, 0x06, 0x50, 0x75, 0x62,
-	0x6c, 0x69, 0x63, 0x12, 0x31, 0x0a, 0x01, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e,
-	0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x73, 0x75,
-	0x62, 0x2e, 0x4d, 0x52, 0x01, 0x6d, 0x12, 0x31, 0x0a, 0x01, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x0e, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x63, 0x2e, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
-	0x2e, 0x73, 0x75, 0x62, 0x2e, 0x45, 0x52, 0x01, 0x65, 0x12, 0x39, 0x0a, 0x05, 0x6c, 0x6f, 0x63,
-	0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74,
-	0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x05, 0x6c,
-	0x6f, 0x63, 0x61, 0x6c, 0x42, 0x45, 0x5a, 0x43, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,
-	0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65,
-	0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d,
-	0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x50, 0x00, 0x50, 0x01,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDescData = file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_import_public_a_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_cmd_protoc_gen_go_testdata_import_public_a_proto_goTypes = []interface{}{
-	(*Public)(nil), // 0: goproto.protoc.import_public.Public
-	(*sub.M)(nil),  // 1: goproto.protoc.import_public.sub.M
-	(sub.E)(0),     // 2: goproto.protoc.import_public.sub.E
-	(*Local)(nil),  // 3: goproto.protoc.import_public.Local
-}
-var file_cmd_protoc_gen_go_testdata_import_public_a_proto_depIdxs = []int32{
-	1, // 0: goproto.protoc.import_public.Public.m:type_name -> goproto.protoc.import_public.sub.M
-	2, // 1: goproto.protoc.import_public.Public.e:type_name -> goproto.protoc.import_public.sub.E
-	3, // 2: goproto.protoc.import_public.Public.local:type_name -> goproto.protoc.import_public.Local
-	3, // [3:3] is the sub-list for method output_type
-	3, // [3:3] is the sub-list for method input_type
-	3, // [3:3] is the sub-list for extension type_name
-	3, // [3:3] is the sub-list for extension extendee
-	0, // [0:3] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_import_public_a_proto_init() }
-func file_cmd_protoc_gen_go_testdata_import_public_a_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_import_public_a_proto != nil {
-		return
-	}
-	file_cmd_protoc_gen_go_testdata_import_public_b_proto_init()
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_import_public_a_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Public); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_import_public_a_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_import_public_a_proto_depIdxs,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_import_public_a_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_import_public_a_proto = out.File
-	file_cmd_protoc_gen_go_testdata_import_public_a_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_import_public_a_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_import_public_a_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/import_public/a.proto b/cmd/protoc-gen-go/testdata/import_public/a.proto
deleted file mode 100644
index 6210125..0000000
--- a/cmd/protoc-gen-go/testdata/import_public/a.proto
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.protoc.import_public;
-
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/import_public";
-
-import public "cmd/protoc-gen-go/testdata/import_public/sub/a.proto";  // Different Go package.
-import public "cmd/protoc-gen-go/testdata/import_public/b.proto";      // Same Go package.
-
-message Public {
-  optional goproto.protoc.import_public.sub.M m = 1;
-  optional goproto.protoc.import_public.sub.E e = 2;
-  optional Local local = 3;
-}
diff --git a/cmd/protoc-gen-go/testdata/import_public/b.pb.go b/cmd/protoc-gen-go/testdata/import_public/b.pb.go
deleted file mode 100644
index 6854157..0000000
--- a/cmd/protoc-gen-go/testdata/import_public/b.pb.go
+++ /dev/null
@@ -1,163 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/import_public/b.proto
-
-package import_public
-
-import (
-	sub "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/import_public/sub"
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Local struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	M *sub.M `protobuf:"bytes,1,opt,name=m" json:"m,omitempty"`
-	E *sub.E `protobuf:"varint,2,opt,name=e,enum=goproto.protoc.import_public.sub.E" json:"e,omitempty"`
-}
-
-func (x *Local) Reset() {
-	*x = Local{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_import_public_b_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Local) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Local) ProtoMessage() {}
-
-func (x *Local) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_import_public_b_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Local.ProtoReflect.Descriptor instead.
-func (*Local) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Local) GetM() *sub.M {
-	if x != nil {
-		return x.M
-	}
-	return nil
-}
-
-func (x *Local) GetE() sub.E {
-	if x != nil && x.E != nil {
-		return *x.E
-	}
-	return sub.E(0)
-}
-
-var File_cmd_protoc_gen_go_testdata_import_public_b_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDesc = []byte{
-	0x0a, 0x30, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70,
-	0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f, 0x62, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x12, 0x1c, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x63, 0x2e, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
-	0x1a, 0x34, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70,
-	0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f, 0x73, 0x75, 0x62, 0x2f, 0x61,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6d, 0x0a, 0x05, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x12,
-	0x31, 0x0a, 0x01, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x69, 0x6d, 0x70, 0x6f,
-	0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x73, 0x75, 0x62, 0x2e, 0x4d, 0x52,
-	0x01, 0x6d, 0x12, 0x31, 0x0a, 0x01, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x69,
-	0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x73, 0x75, 0x62,
-	0x2e, 0x45, 0x52, 0x01, 0x65, 0x42, 0x45, 0x5a, 0x43, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
-	0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67,
-	0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69,
-	0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDescData = file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_import_public_b_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_cmd_protoc_gen_go_testdata_import_public_b_proto_goTypes = []interface{}{
-	(*Local)(nil), // 0: goproto.protoc.import_public.Local
-	(*sub.M)(nil), // 1: goproto.protoc.import_public.sub.M
-	(sub.E)(0),    // 2: goproto.protoc.import_public.sub.E
-}
-var file_cmd_protoc_gen_go_testdata_import_public_b_proto_depIdxs = []int32{
-	1, // 0: goproto.protoc.import_public.Local.m:type_name -> goproto.protoc.import_public.sub.M
-	2, // 1: goproto.protoc.import_public.Local.e:type_name -> goproto.protoc.import_public.sub.E
-	2, // [2:2] is the sub-list for method output_type
-	2, // [2:2] is the sub-list for method input_type
-	2, // [2:2] is the sub-list for extension type_name
-	2, // [2:2] is the sub-list for extension extendee
-	0, // [0:2] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_import_public_b_proto_init() }
-func file_cmd_protoc_gen_go_testdata_import_public_b_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_import_public_b_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_import_public_b_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Local); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_import_public_b_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_import_public_b_proto_depIdxs,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_import_public_b_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_import_public_b_proto = out.File
-	file_cmd_protoc_gen_go_testdata_import_public_b_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_import_public_b_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_import_public_b_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/import_public/b.proto b/cmd/protoc-gen-go/testdata/import_public/b.proto
deleted file mode 100644
index f710dce..0000000
--- a/cmd/protoc-gen-go/testdata/import_public/b.proto
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.protoc.import_public;
-
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/import_public";
-
-import "cmd/protoc-gen-go/testdata/import_public/sub/a.proto";
-
-message Local {
-  optional goproto.protoc.import_public.sub.M m = 1;
-  optional goproto.protoc.import_public.sub.E e = 2;
-}
diff --git a/cmd/protoc-gen-go/testdata/import_public/c.pb.go b/cmd/protoc-gen-go/testdata/import_public/c.pb.go
deleted file mode 100644
index ee2dbea..0000000
--- a/cmd/protoc-gen-go/testdata/import_public/c.pb.go
+++ /dev/null
@@ -1,169 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/import_public/c.proto
-
-package import_public
-
-import (
-	sub2 "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/import_public/sub2"
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type UsingPublicImport struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Local is declared in b.proto, which is a public import of a.proto.
-	Local *Local `protobuf:"bytes,1,opt,name=local" json:"local,omitempty"`
-	// Sub2Message is declared in sub2/a.proto, which is a public import of
-	// sub/a.proto, which is a public import of a.proto.
-	Sub2 *sub2.Sub2Message `protobuf:"bytes,2,opt,name=sub2" json:"sub2,omitempty"` // declared in sub2/a.proto
-}
-
-func (x *UsingPublicImport) Reset() {
-	*x = UsingPublicImport{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_import_public_c_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *UsingPublicImport) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UsingPublicImport) ProtoMessage() {}
-
-func (x *UsingPublicImport) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_import_public_c_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use UsingPublicImport.ProtoReflect.Descriptor instead.
-func (*UsingPublicImport) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *UsingPublicImport) GetLocal() *Local {
-	if x != nil {
-		return x.Local
-	}
-	return nil
-}
-
-func (x *UsingPublicImport) GetSub2() *sub2.Sub2Message {
-	if x != nil {
-		return x.Sub2
-	}
-	return nil
-}
-
-var File_cmd_protoc_gen_go_testdata_import_public_c_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDesc = []byte{
-	0x0a, 0x30, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70,
-	0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f, 0x63, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x12, 0x1c, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x63, 0x2e, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
-	0x1a, 0x30, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70,
-	0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f, 0x61, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x22, 0x92, 0x01, 0x0a, 0x11, 0x55, 0x73, 0x69, 0x6e, 0x67, 0x50, 0x75, 0x62, 0x6c,
-	0x69, 0x63, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x39, 0x0a, 0x05, 0x6c, 0x6f, 0x63, 0x61,
-	0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f,
-	0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x52, 0x05, 0x6c, 0x6f,
-	0x63, 0x61, 0x6c, 0x12, 0x42, 0x0a, 0x04, 0x73, 0x75, 0x62, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x63, 0x2e, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
-	0x2e, 0x73, 0x75, 0x62, 0x32, 0x2e, 0x53, 0x75, 0x62, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x04, 0x73, 0x75, 0x62, 0x32, 0x42, 0x45, 0x5a, 0x43, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
-	0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61,
-	0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDescData = file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_import_public_c_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_cmd_protoc_gen_go_testdata_import_public_c_proto_goTypes = []interface{}{
-	(*UsingPublicImport)(nil), // 0: goproto.protoc.import_public.UsingPublicImport
-	(*Local)(nil),             // 1: goproto.protoc.import_public.Local
-	(*sub2.Sub2Message)(nil),  // 2: goproto.protoc.import_public.sub2.Sub2Message
-}
-var file_cmd_protoc_gen_go_testdata_import_public_c_proto_depIdxs = []int32{
-	1, // 0: goproto.protoc.import_public.UsingPublicImport.local:type_name -> goproto.protoc.import_public.Local
-	2, // 1: goproto.protoc.import_public.UsingPublicImport.sub2:type_name -> goproto.protoc.import_public.sub2.Sub2Message
-	2, // [2:2] is the sub-list for method output_type
-	2, // [2:2] is the sub-list for method input_type
-	2, // [2:2] is the sub-list for extension type_name
-	2, // [2:2] is the sub-list for extension extendee
-	0, // [0:2] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_import_public_c_proto_init() }
-func file_cmd_protoc_gen_go_testdata_import_public_c_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_import_public_c_proto != nil {
-		return
-	}
-	file_cmd_protoc_gen_go_testdata_import_public_a_proto_init()
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_import_public_c_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UsingPublicImport); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_import_public_c_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_import_public_c_proto_depIdxs,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_import_public_c_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_import_public_c_proto = out.File
-	file_cmd_protoc_gen_go_testdata_import_public_c_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_import_public_c_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_import_public_c_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/import_public/c.proto b/cmd/protoc-gen-go/testdata/import_public/c.proto
deleted file mode 100644
index 86b02a3..0000000
--- a/cmd/protoc-gen-go/testdata/import_public/c.proto
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.protoc.import_public;
-
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/import_public";
-
-import "cmd/protoc-gen-go/testdata/import_public/a.proto";
-
-message UsingPublicImport {
-  // Local is declared in b.proto, which is a public import of a.proto.
-  optional Local local = 1;
-  // Sub2Message is declared in sub2/a.proto, which is a public import of
-  // sub/a.proto, which is a public import of a.proto.
-  optional sub2.Sub2Message sub2 = 2; // declared in sub2/a.proto
-}
diff --git a/cmd/protoc-gen-go/testdata/import_public/sub/a.pb.go b/cmd/protoc-gen-go/testdata/import_public/sub/a.pb.go
deleted file mode 100644
index d0897db..0000000
--- a/cmd/protoc-gen-go/testdata/import_public/sub/a.pb.go
+++ /dev/null
@@ -1,554 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/import_public/sub/a.proto
-
-package sub
-
-import (
-	sub2 "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/import_public/sub2"
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	math "math"
-	reflect "reflect"
-	sync "sync"
-)
-
-// Symbols defined in public import of cmd/protoc-gen-go/testdata/import_public/sub2/a.proto.
-
-type Sub2Message = sub2.Sub2Message
-
-type E int32
-
-const (
-	E_ZERO E = 0
-)
-
-// Enum value maps for E.
-var (
-	E_name = map[int32]string{
-		0: "ZERO",
-	}
-	E_value = map[string]int32{
-		"ZERO": 0,
-	}
-)
-
-func (x E) Enum() *E {
-	p := new(E)
-	*p = x
-	return p
-}
-
-func (x E) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (E) Descriptor() protoreflect.EnumDescriptor {
-	return file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_enumTypes[0].Descriptor()
-}
-
-func (E) Type() protoreflect.EnumType {
-	return &file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_enumTypes[0]
-}
-
-func (x E) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *E) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = E(num)
-	return nil
-}
-
-// Deprecated: Use E.Descriptor instead.
-func (E) EnumDescriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescGZIP(), []int{0}
-}
-
-type M_Subenum int32
-
-const (
-	M_M_ZERO M_Subenum = 0
-)
-
-// Enum value maps for M_Subenum.
-var (
-	M_Subenum_name = map[int32]string{
-		0: "M_ZERO",
-	}
-	M_Subenum_value = map[string]int32{
-		"M_ZERO": 0,
-	}
-)
-
-func (x M_Subenum) Enum() *M_Subenum {
-	p := new(M_Subenum)
-	*p = x
-	return p
-}
-
-func (x M_Subenum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (M_Subenum) Descriptor() protoreflect.EnumDescriptor {
-	return file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_enumTypes[1].Descriptor()
-}
-
-func (M_Subenum) Type() protoreflect.EnumType {
-	return &file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_enumTypes[1]
-}
-
-func (x M_Subenum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *M_Subenum) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = M_Subenum(num)
-	return nil
-}
-
-// Deprecated: Use M_Subenum.Descriptor instead.
-func (M_Subenum) EnumDescriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescGZIP(), []int{0, 0}
-}
-
-type M_Submessage_Submessage_Subenum int32
-
-const (
-	M_Submessage_M_SUBMESSAGE_ZERO M_Submessage_Submessage_Subenum = 0
-)
-
-// Enum value maps for M_Submessage_Submessage_Subenum.
-var (
-	M_Submessage_Submessage_Subenum_name = map[int32]string{
-		0: "M_SUBMESSAGE_ZERO",
-	}
-	M_Submessage_Submessage_Subenum_value = map[string]int32{
-		"M_SUBMESSAGE_ZERO": 0,
-	}
-)
-
-func (x M_Submessage_Submessage_Subenum) Enum() *M_Submessage_Submessage_Subenum {
-	p := new(M_Submessage_Submessage_Subenum)
-	*p = x
-	return p
-}
-
-func (x M_Submessage_Submessage_Subenum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (M_Submessage_Submessage_Subenum) Descriptor() protoreflect.EnumDescriptor {
-	return file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_enumTypes[2].Descriptor()
-}
-
-func (M_Submessage_Submessage_Subenum) Type() protoreflect.EnumType {
-	return &file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_enumTypes[2]
-}
-
-func (x M_Submessage_Submessage_Subenum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *M_Submessage_Submessage_Subenum) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = M_Submessage_Submessage_Subenum(num)
-	return nil
-}
-
-// Deprecated: Use M_Submessage_Submessage_Subenum.Descriptor instead.
-func (M_Submessage_Submessage_Subenum) EnumDescriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescGZIP(), []int{0, 0, 0}
-}
-
-type M struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	// Field using a type in the same Go package, but a different source file.
-	M2 *M2      `protobuf:"bytes,1,opt,name=m2" json:"m2,omitempty"`
-	S  *string  `protobuf:"bytes,4,opt,name=s,def=default" json:"s,omitempty"`
-	B  []byte   `protobuf:"bytes,5,opt,name=b,def=default" json:"b,omitempty"`
-	F  *float64 `protobuf:"fixed64,6,opt,name=f,def=nan" json:"f,omitempty"`
-	// Types that are assignable to OneofField:
-	//	*M_OneofInt32
-	//	*M_OneofInt64
-	OneofField isM_OneofField `protobuf_oneof:"oneof_field"`
-}
-
-// Default values for M fields.
-const (
-	Default_M_S = string("default")
-)
-
-// Default values for M fields.
-var (
-	Default_M_B = []byte("default")
-	Default_M_F = float64(math.NaN())
-)
-
-func (x *M) Reset() {
-	*x = M{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *M) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*M) ProtoMessage() {}
-
-func (x *M) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use M.ProtoReflect.Descriptor instead.
-func (*M) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *M) GetM2() *M2 {
-	if x != nil {
-		return x.M2
-	}
-	return nil
-}
-
-func (x *M) GetS() string {
-	if x != nil && x.S != nil {
-		return *x.S
-	}
-	return Default_M_S
-}
-
-func (x *M) GetB() []byte {
-	if x != nil && x.B != nil {
-		return x.B
-	}
-	return append([]byte(nil), Default_M_B...)
-}
-
-func (x *M) GetF() float64 {
-	if x != nil && x.F != nil {
-		return *x.F
-	}
-	return Default_M_F
-}
-
-func (m *M) GetOneofField() isM_OneofField {
-	if m != nil {
-		return m.OneofField
-	}
-	return nil
-}
-
-func (x *M) GetOneofInt32() int32 {
-	if x, ok := x.GetOneofField().(*M_OneofInt32); ok {
-		return x.OneofInt32
-	}
-	return 0
-}
-
-func (x *M) GetOneofInt64() int64 {
-	if x, ok := x.GetOneofField().(*M_OneofInt64); ok {
-		return x.OneofInt64
-	}
-	return 0
-}
-
-type isM_OneofField interface {
-	isM_OneofField()
-}
-
-type M_OneofInt32 struct {
-	OneofInt32 int32 `protobuf:"varint,2,opt,name=oneof_int32,json=oneofInt32,oneof"`
-}
-
-type M_OneofInt64 struct {
-	OneofInt64 int64 `protobuf:"varint,3,opt,name=oneof_int64,json=oneofInt64,oneof"`
-}
-
-func (*M_OneofInt32) isM_OneofField() {}
-
-func (*M_OneofInt64) isM_OneofField() {}
-
-type M_Submessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Types that are assignable to SubmessageOneofField:
-	//	*M_Submessage_SubmessageOneofInt32
-	//	*M_Submessage_SubmessageOneofInt64
-	SubmessageOneofField isM_Submessage_SubmessageOneofField `protobuf_oneof:"submessage_oneof_field"`
-}
-
-func (x *M_Submessage) Reset() {
-	*x = M_Submessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *M_Submessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*M_Submessage) ProtoMessage() {}
-
-func (x *M_Submessage) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use M_Submessage.ProtoReflect.Descriptor instead.
-func (*M_Submessage) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescGZIP(), []int{0, 0}
-}
-
-func (m *M_Submessage) GetSubmessageOneofField() isM_Submessage_SubmessageOneofField {
-	if m != nil {
-		return m.SubmessageOneofField
-	}
-	return nil
-}
-
-func (x *M_Submessage) GetSubmessageOneofInt32() int32 {
-	if x, ok := x.GetSubmessageOneofField().(*M_Submessage_SubmessageOneofInt32); ok {
-		return x.SubmessageOneofInt32
-	}
-	return 0
-}
-
-func (x *M_Submessage) GetSubmessageOneofInt64() int64 {
-	if x, ok := x.GetSubmessageOneofField().(*M_Submessage_SubmessageOneofInt64); ok {
-		return x.SubmessageOneofInt64
-	}
-	return 0
-}
-
-type isM_Submessage_SubmessageOneofField interface {
-	isM_Submessage_SubmessageOneofField()
-}
-
-type M_Submessage_SubmessageOneofInt32 struct {
-	SubmessageOneofInt32 int32 `protobuf:"varint,1,opt,name=submessage_oneof_int32,json=submessageOneofInt32,oneof"`
-}
-
-type M_Submessage_SubmessageOneofInt64 struct {
-	SubmessageOneofInt64 int64 `protobuf:"varint,2,opt,name=submessage_oneof_int64,json=submessageOneofInt64,oneof"`
-}
-
-func (*M_Submessage_SubmessageOneofInt32) isM_Submessage_SubmessageOneofField() {}
-
-func (*M_Submessage_SubmessageOneofInt64) isM_Submessage_SubmessageOneofField() {}
-
-var file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_extTypes = []protoimpl.ExtensionInfo{
-	{
-		ExtendedType:  (*M)(nil),
-		ExtensionType: (*string)(nil),
-		Field:         100,
-		Name:          "goproto.protoc.import_public.sub.extension_field",
-		Tag:           "bytes,100,opt,name=extension_field",
-		Filename:      "cmd/protoc-gen-go/testdata/import_public/sub/a.proto",
-	},
-}
-
-// Extension fields to M.
-var (
-	// optional string extension_field = 100;
-	E_ExtensionField = &file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_extTypes[0]
-)
-
-var File_cmd_protoc_gen_go_testdata_import_public_sub_a_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDesc = []byte{
-	0x0a, 0x34, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70,
-	0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f, 0x73, 0x75, 0x62, 0x2f, 0x61,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x20, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75,
-	0x62, 0x6c, 0x69, 0x63, 0x2e, 0x73, 0x75, 0x62, 0x1a, 0x34, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74,
-	0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c,
-	0x69, 0x63, 0x2f, 0x73, 0x75, 0x62, 0x2f, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x35,
-	0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67,
-	0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72,
-	0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f, 0x73, 0x75, 0x62, 0x32, 0x2f, 0x61, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb6, 0x03, 0x0a, 0x01, 0x4d, 0x12, 0x34, 0x0a, 0x02, 0x6d,
-	0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f,
-	0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x73, 0x75, 0x62, 0x2e, 0x4d, 0x32, 0x52, 0x02, 0x6d,
-	0x32, 0x12, 0x15, 0x0a, 0x01, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x3a, 0x07, 0x64, 0x65,
-	0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x01, 0x73, 0x12, 0x15, 0x0a, 0x01, 0x62, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x0c, 0x3a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x52, 0x01, 0x62, 0x12,
-	0x11, 0x0a, 0x01, 0x66, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x3a, 0x03, 0x6e, 0x61, 0x6e, 0x52,
-	0x01, 0x66, 0x12, 0x21, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
-	0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x21, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e,
-	0x65, 0x6f, 0x66, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x1a, 0xc3, 0x01, 0x0a, 0x0a, 0x53, 0x75, 0x62,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x16, 0x73, 0x75, 0x62, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x14, 0x73, 0x75, 0x62, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12,
-	0x36, 0x0a, 0x16, 0x73, 0x75, 0x62, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x6f, 0x6e,
-	0x65, 0x6f, 0x66, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48,
-	0x00, 0x52, 0x14, 0x73, 0x75, 0x62, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x6e, 0x65,
-	0x6f, 0x66, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x22, 0x2b, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x53, 0x75, 0x62, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x15, 0x0a,
-	0x11, 0x4d, 0x5f, 0x53, 0x55, 0x42, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x5a, 0x45,
-	0x52, 0x4f, 0x10, 0x00, 0x42, 0x18, 0x0a, 0x16, 0x73, 0x75, 0x62, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x15,
-	0x0a, 0x07, 0x53, 0x75, 0x62, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x5f, 0x5a,
-	0x45, 0x52, 0x4f, 0x10, 0x00, 0x2a, 0x08, 0x08, 0x64, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x42,
-	0x0d, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x2a, 0x0d,
-	0x0a, 0x01, 0x45, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x3a, 0x4c, 0x0a,
-	0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x12, 0x23, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x63, 0x2e, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e,
-	0x73, 0x75, 0x62, 0x2e, 0x4d, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x49, 0x5a, 0x47, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67,
-	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74,
-	0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c,
-	0x69, 0x63, 0x2f, 0x73, 0x75, 0x62, 0x50, 0x01,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescData = file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
-var file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
-var file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_goTypes = []interface{}{
-	(E)(0),                               // 0: goproto.protoc.import_public.sub.E
-	(M_Subenum)(0),                       // 1: goproto.protoc.import_public.sub.M.Subenum
-	(M_Submessage_Submessage_Subenum)(0), // 2: goproto.protoc.import_public.sub.M.Submessage.Submessage_Subenum
-	(*M)(nil),                            // 3: goproto.protoc.import_public.sub.M
-	(*M_Submessage)(nil),                 // 4: goproto.protoc.import_public.sub.M.Submessage
-	(*M2)(nil),                           // 5: goproto.protoc.import_public.sub.M2
-}
-var file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_depIdxs = []int32{
-	5, // 0: goproto.protoc.import_public.sub.M.m2:type_name -> goproto.protoc.import_public.sub.M2
-	3, // 1: goproto.protoc.import_public.sub.extension_field:extendee -> goproto.protoc.import_public.sub.M
-	2, // [2:2] is the sub-list for method output_type
-	2, // [2:2] is the sub-list for method input_type
-	2, // [2:2] is the sub-list for extension type_name
-	1, // [1:2] is the sub-list for extension extendee
-	0, // [0:1] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_init() }
-func file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_import_public_sub_a_proto != nil {
-		return
-	}
-	file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_init()
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*M); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*M_Submessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_msgTypes[0].OneofWrappers = []interface{}{
-		(*M_OneofInt32)(nil),
-		(*M_OneofInt64)(nil),
-	}
-	file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_msgTypes[1].OneofWrappers = []interface{}{
-		(*M_Submessage_SubmessageOneofInt32)(nil),
-		(*M_Submessage_SubmessageOneofInt64)(nil),
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDesc,
-			NumEnums:      3,
-			NumMessages:   2,
-			NumExtensions: 1,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_depIdxs,
-		EnumInfos:         file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_enumTypes,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_msgTypes,
-		ExtensionInfos:    file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_extTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_import_public_sub_a_proto = out.File
-	file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_import_public_sub_a_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/import_public/sub/a.proto b/cmd/protoc-gen-go/testdata/import_public/sub/a.proto
deleted file mode 100644
index 9fa4cb8..0000000
--- a/cmd/protoc-gen-go/testdata/import_public/sub/a.proto
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.protoc.import_public.sub;
-
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/import_public/sub";
-
-import "cmd/protoc-gen-go/testdata/import_public/sub/b.proto";
-import public "cmd/protoc-gen-go/testdata/import_public/sub2/a.proto";
-
-message M {
-  // Field using a type in the same Go package, but a different source file.
-  optional M2 m2 = 1;
-  optional string s = 4 [default="default"];
-  optional bytes b = 5 [default="default"];
-  optional double f = 6 [default=nan];
-
-  oneof oneof_field {
-    int32 oneof_int32 = 2;
-    int64 oneof_int64 = 3;
-  }
-
-  message Submessage {
-    enum Submessage_Subenum {
-      M_SUBMESSAGE_ZERO = 0;
-    }
-
-    oneof submessage_oneof_field {
-      int32 submessage_oneof_int32 = 1;
-      int64 submessage_oneof_int64 = 2;
-    }
-  }
-
-  enum Subenum {
-    M_ZERO = 0;
-  }
-
-  extensions 100 to max;
-}
-
-extend M {
-  optional string extension_field = 100;
-}
-
-enum E {
-  ZERO = 0;
-}
diff --git a/cmd/protoc-gen-go/testdata/import_public/sub/b.pb.go b/cmd/protoc-gen-go/testdata/import_public/sub/b.pb.go
deleted file mode 100644
index 5679e95..0000000
--- a/cmd/protoc-gen-go/testdata/import_public/sub/b.pb.go
+++ /dev/null
@@ -1,132 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/import_public/sub/b.proto
-
-package sub
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type M2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *M2) Reset() {
-	*x = M2{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *M2) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*M2) ProtoMessage() {}
-
-func (x *M2) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use M2.ProtoReflect.Descriptor instead.
-func (*M2) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDescGZIP(), []int{0}
-}
-
-var File_cmd_protoc_gen_go_testdata_import_public_sub_b_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDesc = []byte{
-	0x0a, 0x34, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70,
-	0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f, 0x73, 0x75, 0x62, 0x2f, 0x62,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x20, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75,
-	0x62, 0x6c, 0x69, 0x63, 0x2e, 0x73, 0x75, 0x62, 0x22, 0x04, 0x0a, 0x02, 0x4d, 0x32, 0x42, 0x49,
-	0x5a, 0x47, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
-	0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64,
-	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74,
-	0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70,
-	0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f, 0x73, 0x75, 0x62,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDescData = file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_goTypes = []interface{}{
-	(*M2)(nil), // 0: goproto.protoc.import_public.sub.M2
-}
-var file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_init() }
-func file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_import_public_sub_b_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*M2); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_depIdxs,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_import_public_sub_b_proto = out.File
-	file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_import_public_sub_b_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/import_public/sub/b.proto b/cmd/protoc-gen-go/testdata/import_public/sub/b.proto
deleted file mode 100644
index 2f1bb5d..0000000
--- a/cmd/protoc-gen-go/testdata/import_public/sub/b.proto
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.protoc.import_public.sub;
-
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/import_public/sub";
-
-message M2 {
-}
diff --git a/cmd/protoc-gen-go/testdata/import_public/sub2/a.pb.go b/cmd/protoc-gen-go/testdata/import_public/sub2/a.pb.go
deleted file mode 100644
index 98499fd..0000000
--- a/cmd/protoc-gen-go/testdata/import_public/sub2/a.pb.go
+++ /dev/null
@@ -1,133 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/import_public/sub2/a.proto
-
-package sub2
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Sub2Message struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Sub2Message) Reset() {
-	*x = Sub2Message{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Sub2Message) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Sub2Message) ProtoMessage() {}
-
-func (x *Sub2Message) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Sub2Message.ProtoReflect.Descriptor instead.
-func (*Sub2Message) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDescGZIP(), []int{0}
-}
-
-var File_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDesc = []byte{
-	0x0a, 0x35, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70,
-	0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2f, 0x73, 0x75, 0x62, 0x32, 0x2f,
-	0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x21, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70,
-	0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x73, 0x75, 0x62, 0x32, 0x22, 0x0d, 0x0a, 0x0b, 0x53, 0x75,
-	0x62, 0x32, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x4a, 0x5a, 0x48, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61,
-	0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
-	0x2f, 0x73, 0x75, 0x62, 0x32,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDescData = file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_goTypes = []interface{}{
-	(*Sub2Message)(nil), // 0: goproto.protoc.import_public.sub2.Sub2Message
-}
-var file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_init() }
-func file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Sub2Message); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_depIdxs,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto = out.File
-	file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_import_public_sub2_a_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/import_public/sub2/a.proto b/cmd/protoc-gen-go/testdata/import_public/sub2/a.proto
deleted file mode 100644
index ec8aa90..0000000
--- a/cmd/protoc-gen-go/testdata/import_public/sub2/a.proto
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.protoc.import_public.sub2;
-
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/import_public/sub2";
-
-message Sub2Message {}
diff --git a/cmd/protoc-gen-go/testdata/imports/fmt/m.pb.go b/cmd/protoc-gen-go/testdata/imports/fmt/m.pb.go
deleted file mode 100644
index 7d89146..0000000
--- a/cmd/protoc-gen-go/testdata/imports/fmt/m.pb.go
+++ /dev/null
@@ -1,130 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/imports/fmt/m.proto
-
-package fmt
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type M struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *M) Reset() {
-	*x = M{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *M) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*M) ProtoMessage() {}
-
-func (x *M) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use M.ProtoReflect.Descriptor instead.
-func (*M) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDescGZIP(), []int{0}
-}
-
-var File_cmd_protoc_gen_go_testdata_imports_fmt_m_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDesc = []byte{
-	0x0a, 0x2e, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70,
-	0x6f, 0x72, 0x74, 0x73, 0x2f, 0x66, 0x6d, 0x74, 0x2f, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x12, 0x03, 0x66, 0x6d, 0x74, 0x22, 0x03, 0x0a, 0x01, 0x4d, 0x42, 0x43, 0x5a, 0x41, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64,
-	0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x66, 0x6d, 0x74, 0x62,
-	0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDescData = file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_goTypes = []interface{}{
-	(*M)(nil), // 0: fmt.M
-}
-var file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_init() }
-func file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_imports_fmt_m_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*M); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_depIdxs,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_imports_fmt_m_proto = out.File
-	file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_imports_fmt_m_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/imports/fmt/m.proto b/cmd/protoc-gen-go/testdata/imports/fmt/m.proto
deleted file mode 100644
index 580c2b5..0000000
--- a/cmd/protoc-gen-go/testdata/imports/fmt/m.proto
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-package fmt;
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/imports/fmt";
-message M {}
diff --git a/cmd/protoc-gen-go/testdata/imports/test_a_1/m1.pb.go b/cmd/protoc-gen-go/testdata/imports/test_a_1/m1.pb.go
deleted file mode 100644
index 363f0b7..0000000
--- a/cmd/protoc-gen-go/testdata/imports/test_a_1/m1.pb.go
+++ /dev/null
@@ -1,241 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/imports/test_a_1/m1.proto
-
-package test_a_1
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type E1 int32
-
-const (
-	E1_E1_ZERO E1 = 0
-)
-
-// Enum value maps for E1.
-var (
-	E1_name = map[int32]string{
-		0: "E1_ZERO",
-	}
-	E1_value = map[string]int32{
-		"E1_ZERO": 0,
-	}
-)
-
-func (x E1) Enum() *E1 {
-	p := new(E1)
-	*p = x
-	return p
-}
-
-func (x E1) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (E1) Descriptor() protoreflect.EnumDescriptor {
-	return file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_enumTypes[0].Descriptor()
-}
-
-func (E1) Type() protoreflect.EnumType {
-	return &file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_enumTypes[0]
-}
-
-func (x E1) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use E1.Descriptor instead.
-func (E1) EnumDescriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDescGZIP(), []int{0}
-}
-
-type M1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *M1) Reset() {
-	*x = M1{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *M1) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*M1) ProtoMessage() {}
-
-func (x *M1) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use M1.ProtoReflect.Descriptor instead.
-func (*M1) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDescGZIP(), []int{0}
-}
-
-type M1_1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	M1 *M1 `protobuf:"bytes,1,opt,name=m1,proto3" json:"m1,omitempty"`
-}
-
-func (x *M1_1) Reset() {
-	*x = M1_1{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *M1_1) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*M1_1) ProtoMessage() {}
-
-func (x *M1_1) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use M1_1.ProtoReflect.Descriptor instead.
-func (*M1_1) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *M1_1) GetM1() *M1 {
-	if x != nil {
-		return x.M1
-	}
-	return nil
-}
-
-var File_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDesc = []byte{
-	0x0a, 0x34, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70,
-	0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x5f, 0x31, 0x2f, 0x6d, 0x31,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x61, 0x22, 0x04,
-	0x0a, 0x02, 0x4d, 0x31, 0x22, 0x22, 0x0a, 0x04, 0x4d, 0x31, 0x5f, 0x31, 0x12, 0x1a, 0x0a, 0x02,
-	0x6d, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
-	0x61, 0x2e, 0x4d, 0x31, 0x52, 0x02, 0x6d, 0x31, 0x2a, 0x11, 0x0a, 0x02, 0x45, 0x31, 0x12, 0x0b,
-	0x0a, 0x07, 0x45, 0x31, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x42, 0x48, 0x5a, 0x46, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67,
-	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74,
-	0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73,
-	0x74, 0x5f, 0x61, 0x5f, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDescData = file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
-var file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_goTypes = []interface{}{
-	(E1)(0),      // 0: test.a.E1
-	(*M1)(nil),   // 1: test.a.M1
-	(*M1_1)(nil), // 2: test.a.M1_1
-}
-var file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_depIdxs = []int32{
-	1, // 0: test.a.M1_1.m1:type_name -> test.a.M1
-	1, // [1:1] is the sub-list for method output_type
-	1, // [1:1] is the sub-list for method input_type
-	1, // [1:1] is the sub-list for extension type_name
-	1, // [1:1] is the sub-list for extension extendee
-	0, // [0:1] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_init() }
-func file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*M1); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*M1_1); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDesc,
-			NumEnums:      1,
-			NumMessages:   2,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_depIdxs,
-		EnumInfos:         file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_enumTypes,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto = out.File
-	file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_imports_test_a_1_m1_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/imports/test_a_1/m1.proto b/cmd/protoc-gen-go/testdata/imports/test_a_1/m1.proto
deleted file mode 100644
index 0c2f3e1..0000000
--- a/cmd/protoc-gen-go/testdata/imports/test_a_1/m1.proto
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-package test.a;
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/imports/test_a_1";
-
-message M1 {}
-
-message M1_1 {
-  M1 m1 = 1;
-}
-
-enum E1 {
-  E1_ZERO = 0;
-}
diff --git a/cmd/protoc-gen-go/testdata/imports/test_a_1/m2.pb.go b/cmd/protoc-gen-go/testdata/imports/test_a_1/m2.pb.go
deleted file mode 100644
index 9787321..0000000
--- a/cmd/protoc-gen-go/testdata/imports/test_a_1/m2.pb.go
+++ /dev/null
@@ -1,131 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/imports/test_a_1/m2.proto
-
-package test_a_1
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type M2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *M2) Reset() {
-	*x = M2{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *M2) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*M2) ProtoMessage() {}
-
-func (x *M2) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use M2.ProtoReflect.Descriptor instead.
-func (*M2) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDescGZIP(), []int{0}
-}
-
-var File_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDesc = []byte{
-	0x0a, 0x34, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70,
-	0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x5f, 0x31, 0x2f, 0x6d, 0x32,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x61, 0x22, 0x04,
-	0x0a, 0x02, 0x4d, 0x32, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,
-	0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65,
-	0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d,
-	0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x5f, 0x31, 0x62, 0x06,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDescData = file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_goTypes = []interface{}{
-	(*M2)(nil), // 0: test.a.M2
-}
-var file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_init() }
-func file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*M2); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_depIdxs,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto = out.File
-	file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_imports_test_a_1_m2_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/imports/test_a_1/m2.proto b/cmd/protoc-gen-go/testdata/imports/test_a_1/m2.proto
deleted file mode 100644
index 31aa909..0000000
--- a/cmd/protoc-gen-go/testdata/imports/test_a_1/m2.proto
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-package test.a;
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/imports/test_a_1";
-message M2 {}
diff --git a/cmd/protoc-gen-go/testdata/imports/test_a_2/m3.pb.go b/cmd/protoc-gen-go/testdata/imports/test_a_2/m3.pb.go
deleted file mode 100644
index 3eabde1..0000000
--- a/cmd/protoc-gen-go/testdata/imports/test_a_2/m3.pb.go
+++ /dev/null
@@ -1,131 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/imports/test_a_2/m3.proto
-
-package test_a_2
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type M3 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *M3) Reset() {
-	*x = M3{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *M3) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*M3) ProtoMessage() {}
-
-func (x *M3) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use M3.ProtoReflect.Descriptor instead.
-func (*M3) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDescGZIP(), []int{0}
-}
-
-var File_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDesc = []byte{
-	0x0a, 0x34, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70,
-	0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x5f, 0x32, 0x2f, 0x6d, 0x33,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x61, 0x22, 0x04,
-	0x0a, 0x02, 0x4d, 0x33, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,
-	0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65,
-	0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d,
-	0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x5f, 0x32, 0x62, 0x06,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDescData = file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_goTypes = []interface{}{
-	(*M3)(nil), // 0: test.a.M3
-}
-var file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_init() }
-func file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*M3); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_depIdxs,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto = out.File
-	file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_imports_test_a_2_m3_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/imports/test_a_2/m3.proto b/cmd/protoc-gen-go/testdata/imports/test_a_2/m3.proto
deleted file mode 100644
index c9b3f34..0000000
--- a/cmd/protoc-gen-go/testdata/imports/test_a_2/m3.proto
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-package test.a;
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/imports/test_a_2";
-message M3 {}
diff --git a/cmd/protoc-gen-go/testdata/imports/test_a_2/m4.pb.go b/cmd/protoc-gen-go/testdata/imports/test_a_2/m4.pb.go
deleted file mode 100644
index be5ec6c..0000000
--- a/cmd/protoc-gen-go/testdata/imports/test_a_2/m4.pb.go
+++ /dev/null
@@ -1,131 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/imports/test_a_2/m4.proto
-
-package test_a_2
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type M4 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *M4) Reset() {
-	*x = M4{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *M4) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*M4) ProtoMessage() {}
-
-func (x *M4) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use M4.ProtoReflect.Descriptor instead.
-func (*M4) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDescGZIP(), []int{0}
-}
-
-var File_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDesc = []byte{
-	0x0a, 0x34, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70,
-	0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x5f, 0x32, 0x2f, 0x6d, 0x34,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x61, 0x22, 0x04,
-	0x0a, 0x02, 0x4d, 0x34, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,
-	0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65,
-	0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d,
-	0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x5f, 0x32, 0x62, 0x06,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDescData = file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_goTypes = []interface{}{
-	(*M4)(nil), // 0: test.a.M4
-}
-var file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_init() }
-func file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*M4); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_depIdxs,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto = out.File
-	file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_imports_test_a_2_m4_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/imports/test_a_2/m4.proto b/cmd/protoc-gen-go/testdata/imports/test_a_2/m4.proto
deleted file mode 100644
index 248e073..0000000
--- a/cmd/protoc-gen-go/testdata/imports/test_a_2/m4.proto
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-package test.a;
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/imports/test_a_2";
-message M4 {}
diff --git a/cmd/protoc-gen-go/testdata/imports/test_b_1/m1.pb.go b/cmd/protoc-gen-go/testdata/imports/test_b_1/m1.pb.go
deleted file mode 100644
index 238ee72..0000000
--- a/cmd/protoc-gen-go/testdata/imports/test_b_1/m1.pb.go
+++ /dev/null
@@ -1,132 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/imports/test_b_1/m1.proto
-
-package beta
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type M1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *M1) Reset() {
-	*x = M1{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *M1) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*M1) ProtoMessage() {}
-
-func (x *M1) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use M1.ProtoReflect.Descriptor instead.
-func (*M1) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDescGZIP(), []int{0}
-}
-
-var File_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDesc = []byte{
-	0x0a, 0x34, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70,
-	0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x5f, 0x31, 0x2f, 0x6d, 0x31,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x62, 0x2e, 0x70,
-	0x61, 0x72, 0x74, 0x31, 0x22, 0x04, 0x0a, 0x02, 0x4d, 0x31, 0x42, 0x4d, 0x5a, 0x4b, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64,
-	0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74,
-	0x5f, 0x62, 0x5f, 0x31, 0x3b, 0x62, 0x65, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x33,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDescData = file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_goTypes = []interface{}{
-	(*M1)(nil), // 0: test.b.part1.M1
-}
-var file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_init() }
-func file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*M1); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_depIdxs,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto = out.File
-	file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_imports_test_b_1_m1_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/imports/test_b_1/m1.proto b/cmd/protoc-gen-go/testdata/imports/test_b_1/m1.proto
deleted file mode 100644
index 77e0fc6..0000000
--- a/cmd/protoc-gen-go/testdata/imports/test_b_1/m1.proto
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-package test.b.part1;
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/imports/test_b_1;beta";
-message M1 {}
diff --git a/cmd/protoc-gen-go/testdata/imports/test_b_1/m2.pb.go b/cmd/protoc-gen-go/testdata/imports/test_b_1/m2.pb.go
deleted file mode 100644
index 7288013..0000000
--- a/cmd/protoc-gen-go/testdata/imports/test_b_1/m2.pb.go
+++ /dev/null
@@ -1,132 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/imports/test_b_1/m2.proto
-
-package beta
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type M2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *M2) Reset() {
-	*x = M2{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *M2) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*M2) ProtoMessage() {}
-
-func (x *M2) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use M2.ProtoReflect.Descriptor instead.
-func (*M2) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDescGZIP(), []int{0}
-}
-
-var File_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDesc = []byte{
-	0x0a, 0x34, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70,
-	0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x5f, 0x31, 0x2f, 0x6d, 0x32,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x62, 0x2e, 0x70,
-	0x61, 0x72, 0x74, 0x32, 0x22, 0x04, 0x0a, 0x02, 0x4d, 0x32, 0x42, 0x4d, 0x5a, 0x4b, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64,
-	0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74,
-	0x5f, 0x62, 0x5f, 0x31, 0x3b, 0x62, 0x65, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x33,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDescData = file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_goTypes = []interface{}{
-	(*M2)(nil), // 0: test.b.part2.M2
-}
-var file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_init() }
-func file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*M2); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_depIdxs,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto = out.File
-	file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_imports_test_b_1_m2_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/imports/test_b_1/m2.proto b/cmd/protoc-gen-go/testdata/imports/test_b_1/m2.proto
deleted file mode 100644
index ed68630..0000000
--- a/cmd/protoc-gen-go/testdata/imports/test_b_1/m2.proto
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-package test.b.part2;
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/imports/test_b_1;beta";
-message M2 {}
diff --git a/cmd/protoc-gen-go/testdata/imports/test_import_a1m1.pb.go b/cmd/protoc-gen-go/testdata/imports/test_import_a1m1.pb.go
deleted file mode 100644
index 155c285..0000000
--- a/cmd/protoc-gen-go/testdata/imports/test_import_a1m1.pb.go
+++ /dev/null
@@ -1,148 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/imports/test_import_a1m1.proto
-
-package imports
-
-import (
-	test_a_1 "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/imports/test_a_1"
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type A1M1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	F *test_a_1.M1 `protobuf:"bytes,1,opt,name=f,proto3" json:"f,omitempty"`
-}
-
-func (x *A1M1) Reset() {
-	*x = A1M1{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *A1M1) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*A1M1) ProtoMessage() {}
-
-func (x *A1M1) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use A1M1.ProtoReflect.Descriptor instead.
-func (*A1M1) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *A1M1) GetF() *test_a_1.M1 {
-	if x != nil {
-		return x.F
-	}
-	return nil
-}
-
-var File_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDesc = []byte{
-	0x0a, 0x39, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70,
-	0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74,
-	0x5f, 0x61, 0x31, 0x6d, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x74, 0x65, 0x73,
-	0x74, 0x1a, 0x34, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65,
-	0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d,
-	0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x5f, 0x31, 0x2f, 0x6d,
-	0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x20, 0x0a, 0x04, 0x41, 0x31, 0x4d, 0x31, 0x12,
-	0x18, 0x0a, 0x01, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x2e, 0x61, 0x2e, 0x4d, 0x31, 0x52, 0x01, 0x66, 0x42, 0x3f, 0x5a, 0x3d, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61,
-	0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x33,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDescData = file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_goTypes = []interface{}{
-	(*A1M1)(nil),        // 0: test.A1M1
-	(*test_a_1.M1)(nil), // 1: test.a.M1
-}
-var file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_depIdxs = []int32{
-	1, // 0: test.A1M1.f:type_name -> test.a.M1
-	1, // [1:1] is the sub-list for method output_type
-	1, // [1:1] is the sub-list for method input_type
-	1, // [1:1] is the sub-list for extension type_name
-	1, // [1:1] is the sub-list for extension extendee
-	0, // [0:1] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_init() }
-func file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*A1M1); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_depIdxs,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto = out.File
-	file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_imports_test_import_a1m1_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/imports/test_import_a1m1.proto b/cmd/protoc-gen-go/testdata/imports/test_import_a1m1.proto
deleted file mode 100644
index 670e62e..0000000
--- a/cmd/protoc-gen-go/testdata/imports/test_import_a1m1.proto
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-
-package test;
-
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/imports";
-
-import "cmd/protoc-gen-go/testdata/imports/test_a_1/m1.proto";
-
-message A1M1 {
-  test.a.M1 f = 1;
-}
diff --git a/cmd/protoc-gen-go/testdata/imports/test_import_a1m2.pb.go b/cmd/protoc-gen-go/testdata/imports/test_import_a1m2.pb.go
deleted file mode 100644
index bbb0cfb..0000000
--- a/cmd/protoc-gen-go/testdata/imports/test_import_a1m2.pb.go
+++ /dev/null
@@ -1,148 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/imports/test_import_a1m2.proto
-
-package imports
-
-import (
-	test_a_1 "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/imports/test_a_1"
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type A1M2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	F *test_a_1.M2 `protobuf:"bytes,1,opt,name=f,proto3" json:"f,omitempty"`
-}
-
-func (x *A1M2) Reset() {
-	*x = A1M2{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *A1M2) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*A1M2) ProtoMessage() {}
-
-func (x *A1M2) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use A1M2.ProtoReflect.Descriptor instead.
-func (*A1M2) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *A1M2) GetF() *test_a_1.M2 {
-	if x != nil {
-		return x.F
-	}
-	return nil
-}
-
-var File_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDesc = []byte{
-	0x0a, 0x39, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70,
-	0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74,
-	0x5f, 0x61, 0x31, 0x6d, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x74, 0x65, 0x73,
-	0x74, 0x1a, 0x34, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65,
-	0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d,
-	0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x5f, 0x31, 0x2f, 0x6d,
-	0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x20, 0x0a, 0x04, 0x41, 0x31, 0x4d, 0x32, 0x12,
-	0x18, 0x0a, 0x01, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x2e, 0x61, 0x2e, 0x4d, 0x32, 0x52, 0x01, 0x66, 0x42, 0x3f, 0x5a, 0x3d, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61,
-	0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x33,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDescData = file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_goTypes = []interface{}{
-	(*A1M2)(nil),        // 0: test.A1M2
-	(*test_a_1.M2)(nil), // 1: test.a.M2
-}
-var file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_depIdxs = []int32{
-	1, // 0: test.A1M2.f:type_name -> test.a.M2
-	1, // [1:1] is the sub-list for method output_type
-	1, // [1:1] is the sub-list for method input_type
-	1, // [1:1] is the sub-list for extension type_name
-	1, // [1:1] is the sub-list for extension extendee
-	0, // [0:1] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_init() }
-func file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*A1M2); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_depIdxs,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto = out.File
-	file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_imports_test_import_a1m2_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/imports/test_import_a1m2.proto b/cmd/protoc-gen-go/testdata/imports/test_import_a1m2.proto
deleted file mode 100644
index 8cef280..0000000
--- a/cmd/protoc-gen-go/testdata/imports/test_import_a1m2.proto
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-
-package test;
-
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/imports";
-
-import "cmd/protoc-gen-go/testdata/imports/test_a_1/m2.proto";
-
-message A1M2 {
-  test.a.M2 f = 1;
-}
diff --git a/cmd/protoc-gen-go/testdata/imports/test_import_all.pb.go b/cmd/protoc-gen-go/testdata/imports/test_import_all.pb.go
deleted file mode 100644
index 288e524..0000000
--- a/cmd/protoc-gen-go/testdata/imports/test_import_all.pb.go
+++ /dev/null
@@ -1,219 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/imports/test_import_all.proto
-
-package imports
-
-import (
-	fmt "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/imports/fmt"
-	test_a_1 "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/imports/test_a_1"
-	_ "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/imports/test_a_2"
-	test_b_1 "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/imports/test_b_1"
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type All struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Am1 *test_a_1.M1 `protobuf:"bytes,1,opt,name=am1,proto3" json:"am1,omitempty"`
-	Am2 *test_a_1.M2 `protobuf:"bytes,2,opt,name=am2,proto3" json:"am2,omitempty"`
-	Bm1 *test_b_1.M1 `protobuf:"bytes,5,opt,name=bm1,proto3" json:"bm1,omitempty"`
-	Bm2 *test_b_1.M2 `protobuf:"bytes,6,opt,name=bm2,proto3" json:"bm2,omitempty"`
-	Fmt *fmt.M       `protobuf:"bytes,7,opt,name=fmt,proto3" json:"fmt,omitempty"`
-}
-
-func (x *All) Reset() {
-	*x = All{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *All) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*All) ProtoMessage() {}
-
-func (x *All) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use All.ProtoReflect.Descriptor instead.
-func (*All) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *All) GetAm1() *test_a_1.M1 {
-	if x != nil {
-		return x.Am1
-	}
-	return nil
-}
-
-func (x *All) GetAm2() *test_a_1.M2 {
-	if x != nil {
-		return x.Am2
-	}
-	return nil
-}
-
-func (x *All) GetBm1() *test_b_1.M1 {
-	if x != nil {
-		return x.Bm1
-	}
-	return nil
-}
-
-func (x *All) GetBm2() *test_b_1.M2 {
-	if x != nil {
-		return x.Bm2
-	}
-	return nil
-}
-
-func (x *All) GetFmt() *fmt.M {
-	if x != nil {
-		return x.Fmt
-	}
-	return nil
-}
-
-var File_cmd_protoc_gen_go_testdata_imports_test_import_all_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDesc = []byte{
-	0x0a, 0x38, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70,
-	0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74,
-	0x5f, 0x61, 0x6c, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x74, 0x65, 0x73, 0x74,
-	0x1a, 0x34, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70,
-	0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x5f, 0x31, 0x2f, 0x6d, 0x31,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x34, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61,
-	0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f,
-	0x61, 0x5f, 0x31, 0x2f, 0x6d, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x34, 0x63, 0x6d,
-	0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f,
-	0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73,
-	0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x5f, 0x32, 0x2f, 0x6d, 0x33, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x1a, 0x34, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67,
-	0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69,
-	0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x5f, 0x32, 0x2f,
-	0x6d, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x34, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74,
-	0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x74, 0x65, 0x73,
-	0x74, 0x5f, 0x62, 0x5f, 0x31, 0x2f, 0x6d, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x34,
-	0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67,
-	0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72,
-	0x74, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x62, 0x5f, 0x31, 0x2f, 0x6d, 0x32, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
-	0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61,
-	0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x2f, 0x66, 0x6d, 0x74, 0x2f, 0x6d, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa3, 0x01, 0x0a, 0x03, 0x41, 0x6c, 0x6c, 0x12, 0x1c, 0x0a, 0x03,
-	0x61, 0x6d, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x2e, 0x61, 0x2e, 0x4d, 0x31, 0x52, 0x03, 0x61, 0x6d, 0x31, 0x12, 0x1c, 0x0a, 0x03, 0x61, 0x6d,
-	0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x61,
-	0x2e, 0x4d, 0x32, 0x52, 0x03, 0x61, 0x6d, 0x32, 0x12, 0x22, 0x0a, 0x03, 0x62, 0x6d, 0x31, 0x18,
-	0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x62, 0x2e, 0x70,
-	0x61, 0x72, 0x74, 0x31, 0x2e, 0x4d, 0x31, 0x52, 0x03, 0x62, 0x6d, 0x31, 0x12, 0x22, 0x0a, 0x03,
-	0x62, 0x6d, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x2e, 0x62, 0x2e, 0x70, 0x61, 0x72, 0x74, 0x32, 0x2e, 0x4d, 0x32, 0x52, 0x03, 0x62, 0x6d, 0x32,
-	0x12, 0x18, 0x0a, 0x03, 0x66, 0x6d, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x06, 0x2e,
-	0x66, 0x6d, 0x74, 0x2e, 0x4d, 0x52, 0x03, 0x66, 0x6d, 0x74, 0x42, 0x3f, 0x5a, 0x3d, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64,
-	0x61, 0x74, 0x61, 0x2f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x33,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDescData = file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_goTypes = []interface{}{
-	(*All)(nil),         // 0: test.All
-	(*test_a_1.M1)(nil), // 1: test.a.M1
-	(*test_a_1.M2)(nil), // 2: test.a.M2
-	(*test_b_1.M1)(nil), // 3: test.b.part1.M1
-	(*test_b_1.M2)(nil), // 4: test.b.part2.M2
-	(*fmt.M)(nil),       // 5: fmt.M
-}
-var file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_depIdxs = []int32{
-	1, // 0: test.All.am1:type_name -> test.a.M1
-	2, // 1: test.All.am2:type_name -> test.a.M2
-	3, // 2: test.All.bm1:type_name -> test.b.part1.M1
-	4, // 3: test.All.bm2:type_name -> test.b.part2.M2
-	5, // 4: test.All.fmt:type_name -> fmt.M
-	5, // [5:5] is the sub-list for method output_type
-	5, // [5:5] is the sub-list for method input_type
-	5, // [5:5] is the sub-list for extension type_name
-	5, // [5:5] is the sub-list for extension extendee
-	0, // [0:5] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_init() }
-func file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_imports_test_import_all_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*All); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_depIdxs,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_imports_test_import_all_proto = out.File
-	file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_imports_test_import_all_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/imports/test_import_all.proto b/cmd/protoc-gen-go/testdata/imports/test_import_all.proto
deleted file mode 100644
index 3909f2d..0000000
--- a/cmd/protoc-gen-go/testdata/imports/test_import_all.proto
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-
-package test;
-
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/imports";
-
-// test_a_1/m*.proto are in the same Go package and proto package.
-// test_a_*/*.proto are in different Go packages, but the same proto package.
-// test_b_1/*.proto are in the same Go package, but different proto packages.
-// fmt/m.proto has a package name which conflicts with "fmt".
-import "cmd/protoc-gen-go/testdata/imports/test_a_1/m1.proto";
-import "cmd/protoc-gen-go/testdata/imports/test_a_1/m2.proto";
-import "cmd/protoc-gen-go/testdata/imports/test_a_2/m3.proto"; // unused in this file
-import "cmd/protoc-gen-go/testdata/imports/test_a_2/m4.proto"; // unused in this file
-import "cmd/protoc-gen-go/testdata/imports/test_b_1/m1.proto";
-import "cmd/protoc-gen-go/testdata/imports/test_b_1/m2.proto";
-import "cmd/protoc-gen-go/testdata/imports/fmt/m.proto";
-
-message All {
-  test.a.M1 am1 = 1;
-  test.a.M2 am2 = 2;
-  test.b.part1.M1 bm1 = 5;
-  test.b.part2.M2 bm2 = 6;
-  fmt.M fmt = 7;
-}
diff --git a/cmd/protoc-gen-go/testdata/issue780_oneof_conflict/test.pb.go b/cmd/protoc-gen-go/testdata/issue780_oneof_conflict/test.pb.go
deleted file mode 100644
index e4164c5..0000000
--- a/cmd/protoc-gen-go/testdata/issue780_oneof_conflict/test.pb.go
+++ /dev/null
@@ -1,165 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/issue780_oneof_conflict/test.proto
-
-package issue780_oneof_conflict
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Foo struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Types that are assignable to Bar:
-	//	*Foo_GetBar
-	Bar isFoo_Bar `protobuf_oneof:"bar"`
-}
-
-func (x *Foo) Reset() {
-	*x = Foo{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Foo) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Foo) ProtoMessage() {}
-
-func (x *Foo) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Foo.ProtoReflect.Descriptor instead.
-func (*Foo) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDescGZIP(), []int{0}
-}
-
-func (m *Foo) GetBar() isFoo_Bar {
-	if m != nil {
-		return m.Bar
-	}
-	return nil
-}
-
-func (x *Foo) GetGetBar() string {
-	if x, ok := x.GetBar().(*Foo_GetBar); ok {
-		return x.GetBar
-	}
-	return ""
-}
-
-type isFoo_Bar interface {
-	isFoo_Bar()
-}
-
-type Foo_GetBar struct {
-	GetBar string `protobuf:"bytes,1,opt,name=get_bar,json=getBar,oneof"`
-}
-
-func (*Foo_GetBar) isFoo_Bar() {}
-
-var File_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDesc = []byte{
-	0x0a, 0x3d, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x73, 0x73,
-	0x75, 0x65, 0x37, 0x38, 0x30, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x66,
-	0x6c, 0x69, 0x63, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
-	0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x74, 0x65, 0x73, 0x74, 0x22, 0x27, 0x0a, 0x03, 0x46, 0x6f,
-	0x6f, 0x12, 0x19, 0x0a, 0x07, 0x67, 0x65, 0x74, 0x5f, 0x62, 0x61, 0x72, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x67, 0x65, 0x74, 0x42, 0x61, 0x72, 0x42, 0x05, 0x0a, 0x03,
-	0x62, 0x61, 0x72, 0x42, 0x4f, 0x5a, 0x4d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f,
-	0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x69, 0x73, 0x73,
-	0x75, 0x65, 0x37, 0x38, 0x30, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x63, 0x6f, 0x6e, 0x66,
-	0x6c, 0x69, 0x63, 0x74,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDescData = file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_goTypes = []interface{}{
-	(*Foo)(nil), // 0: oneoftest.Foo
-}
-var file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_init() }
-func file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Foo); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_msgTypes[0].OneofWrappers = []interface{}{
-		(*Foo_GetBar)(nil),
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_depIdxs,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto = out.File
-	file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_issue780_oneof_conflict_test_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/issue780_oneof_conflict/test.proto b/cmd/protoc-gen-go/testdata/issue780_oneof_conflict/test.proto
deleted file mode 100644
index d6d269d..0000000
--- a/cmd/protoc-gen-go/testdata/issue780_oneof_conflict/test.proto
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package oneoftest;
-
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/issue780_oneof_conflict";
-
-message Foo {
-	oneof bar { // must be generated as Bar field in Foo struct
-		string get_bar = 1;
-	}
-}
diff --git a/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go b/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go
deleted file mode 100644
index a81e001..0000000
--- a/cmd/protoc-gen-go/testdata/nopackage/nopackage.pb.go
+++ /dev/null
@@ -1,211 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/nopackage/nopackage.proto
-
-package nopackage
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Enum int32
-
-const (
-	Enum_ZERO Enum = 0
-)
-
-// Enum value maps for Enum.
-var (
-	Enum_name = map[int32]string{
-		0: "ZERO",
-	}
-	Enum_value = map[string]int32{
-		"ZERO": 0,
-	}
-)
-
-func (x Enum) Enum() *Enum {
-	p := new(Enum)
-	*p = x
-	return p
-}
-
-func (x Enum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum) Descriptor() protoreflect.EnumDescriptor {
-	return file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_enumTypes[0].Descriptor()
-}
-
-func (Enum) Type() protoreflect.EnumType {
-	return &file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_enumTypes[0]
-}
-
-func (x Enum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum(num)
-	return nil
-}
-
-// Deprecated: Use Enum.Descriptor instead.
-func (Enum) EnumDescriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDescGZIP(), []int{0}
-}
-
-type Message struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	StringField *string `protobuf:"bytes,1,opt,name=string_field,json=stringField" json:"string_field,omitempty"`
-	EnumField   *Enum   `protobuf:"varint,2,opt,name=enum_field,json=enumField,enum=Enum,def=0" json:"enum_field,omitempty"`
-}
-
-// Default values for Message fields.
-const (
-	Default_Message_EnumField = Enum_ZERO
-)
-
-func (x *Message) Reset() {
-	*x = Message{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message) ProtoMessage() {}
-
-func (x *Message) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message.ProtoReflect.Descriptor instead.
-func (*Message) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Message) GetStringField() string {
-	if x != nil && x.StringField != nil {
-		return *x.StringField
-	}
-	return ""
-}
-
-func (x *Message) GetEnumField() Enum {
-	if x != nil && x.EnumField != nil {
-		return *x.EnumField
-	}
-	return Default_Message_EnumField
-}
-
-var File_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDesc = []byte{
-	0x0a, 0x34, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x6e, 0x6f, 0x70,
-	0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2f, 0x6e, 0x6f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x58, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46,
-	0x69, 0x65, 0x6c, 0x64, 0x12, 0x2a, 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x05, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a,
-	0x04, 0x5a, 0x45, 0x52, 0x4f, 0x52, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x46, 0x69, 0x65, 0x6c, 0x64,
-	0x2a, 0x10, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x45, 0x52, 0x4f,
-	0x10, 0x00,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDescData = file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_goTypes = []interface{}{
-	(Enum)(0),       // 0: Enum
-	(*Message)(nil), // 1: Message
-}
-var file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_depIdxs = []int32{
-	0, // 0: Message.enum_field:type_name -> Enum
-	1, // [1:1] is the sub-list for method output_type
-	1, // [1:1] is the sub-list for method input_type
-	1, // [1:1] is the sub-list for extension type_name
-	1, // [1:1] is the sub-list for extension extendee
-	0, // [0:1] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_init() }
-func file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDesc,
-			NumEnums:      1,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_depIdxs,
-		EnumInfos:         file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_enumTypes,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto = out.File
-	file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_nopackage_nopackage_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/nopackage/nopackage.proto b/cmd/protoc-gen-go/testdata/nopackage/nopackage.proto
deleted file mode 100644
index 892bb06..0000000
--- a/cmd/protoc-gen-go/testdata/nopackage/nopackage.proto
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-// File contains no 'package' statement.
-
-enum Enum {
-  ZERO = 0;
-}
-
-message Message {
-  optional string string_field = 1;
-  optional Enum   enum_field   = 2 [default=ZERO];
-}
diff --git a/cmd/protoc-gen-go/testdata/proto2/enum.pb.go b/cmd/protoc-gen-go/testdata/proto2/enum.pb.go
deleted file mode 100644
index c031b39..0000000
--- a/cmd/protoc-gen-go/testdata/proto2/enum.pb.go
+++ /dev/null
@@ -1,577 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/proto2/enum.proto
-
-package proto2
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-// EnumType1 comment.
-type EnumType1 int32
-
-const (
-	// EnumType1_ONE comment.
-	EnumType1_ONE EnumType1 = 1
-	// EnumType1_TWO comment.
-	EnumType1_TWO EnumType1 = 2
-)
-
-// Enum value maps for EnumType1.
-var (
-	EnumType1_name = map[int32]string{
-		1: "ONE",
-		2: "TWO",
-	}
-	EnumType1_value = map[string]int32{
-		"ONE": 1,
-		"TWO": 2,
-	}
-)
-
-func (x EnumType1) Enum() *EnumType1 {
-	p := new(EnumType1)
-	*p = x
-	return p
-}
-
-func (x EnumType1) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (EnumType1) Descriptor() protoreflect.EnumDescriptor {
-	return file_cmd_protoc_gen_go_testdata_proto2_enum_proto_enumTypes[0].Descriptor()
-}
-
-func (EnumType1) Type() protoreflect.EnumType {
-	return &file_cmd_protoc_gen_go_testdata_proto2_enum_proto_enumTypes[0]
-}
-
-func (x EnumType1) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *EnumType1) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = EnumType1(num)
-	return nil
-}
-
-// Deprecated: Use EnumType1.Descriptor instead.
-func (EnumType1) EnumDescriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescGZIP(), []int{0}
-}
-
-type EnumType2 int32
-
-const (
-	EnumType2_duplicate1 EnumType2 = 1
-	EnumType2_duplicate2 EnumType2 = 1
-)
-
-// Enum value maps for EnumType2.
-var (
-	EnumType2_name = map[int32]string{
-		1: "duplicate1",
-		// Duplicate value: 1: "duplicate2",
-	}
-	EnumType2_value = map[string]int32{
-		"duplicate1": 1,
-		"duplicate2": 1,
-	}
-)
-
-func (x EnumType2) Enum() *EnumType2 {
-	p := new(EnumType2)
-	*p = x
-	return p
-}
-
-func (x EnumType2) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (EnumType2) Descriptor() protoreflect.EnumDescriptor {
-	return file_cmd_protoc_gen_go_testdata_proto2_enum_proto_enumTypes[1].Descriptor()
-}
-
-func (EnumType2) Type() protoreflect.EnumType {
-	return &file_cmd_protoc_gen_go_testdata_proto2_enum_proto_enumTypes[1]
-}
-
-func (x EnumType2) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *EnumType2) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = EnumType2(num)
-	return nil
-}
-
-// Deprecated: Use EnumType2.Descriptor instead.
-func (EnumType2) EnumDescriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescGZIP(), []int{1}
-}
-
-// NestedEnumType1A comment.
-type EnumContainerMessage1_NestedEnumType1A int32
-
-const (
-	// NestedEnumType1A_VALUE comment.
-	EnumContainerMessage1_NESTED_1A_VALUE EnumContainerMessage1_NestedEnumType1A = 0
-)
-
-// Enum value maps for EnumContainerMessage1_NestedEnumType1A.
-var (
-	EnumContainerMessage1_NestedEnumType1A_name = map[int32]string{
-		0: "NESTED_1A_VALUE",
-	}
-	EnumContainerMessage1_NestedEnumType1A_value = map[string]int32{
-		"NESTED_1A_VALUE": 0,
-	}
-)
-
-func (x EnumContainerMessage1_NestedEnumType1A) Enum() *EnumContainerMessage1_NestedEnumType1A {
-	p := new(EnumContainerMessage1_NestedEnumType1A)
-	*p = x
-	return p
-}
-
-func (x EnumContainerMessage1_NestedEnumType1A) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (EnumContainerMessage1_NestedEnumType1A) Descriptor() protoreflect.EnumDescriptor {
-	return file_cmd_protoc_gen_go_testdata_proto2_enum_proto_enumTypes[2].Descriptor()
-}
-
-func (EnumContainerMessage1_NestedEnumType1A) Type() protoreflect.EnumType {
-	return &file_cmd_protoc_gen_go_testdata_proto2_enum_proto_enumTypes[2]
-}
-
-func (x EnumContainerMessage1_NestedEnumType1A) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *EnumContainerMessage1_NestedEnumType1A) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = EnumContainerMessage1_NestedEnumType1A(num)
-	return nil
-}
-
-// Deprecated: Use EnumContainerMessage1_NestedEnumType1A.Descriptor instead.
-func (EnumContainerMessage1_NestedEnumType1A) EnumDescriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescGZIP(), []int{0, 0}
-}
-
-type EnumContainerMessage1_NestedEnumType1B int32
-
-const (
-	EnumContainerMessage1_NESTED_1B_VALUE EnumContainerMessage1_NestedEnumType1B = 0
-)
-
-// Enum value maps for EnumContainerMessage1_NestedEnumType1B.
-var (
-	EnumContainerMessage1_NestedEnumType1B_name = map[int32]string{
-		0: "NESTED_1B_VALUE",
-	}
-	EnumContainerMessage1_NestedEnumType1B_value = map[string]int32{
-		"NESTED_1B_VALUE": 0,
-	}
-)
-
-func (x EnumContainerMessage1_NestedEnumType1B) Enum() *EnumContainerMessage1_NestedEnumType1B {
-	p := new(EnumContainerMessage1_NestedEnumType1B)
-	*p = x
-	return p
-}
-
-func (x EnumContainerMessage1_NestedEnumType1B) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (EnumContainerMessage1_NestedEnumType1B) Descriptor() protoreflect.EnumDescriptor {
-	return file_cmd_protoc_gen_go_testdata_proto2_enum_proto_enumTypes[3].Descriptor()
-}
-
-func (EnumContainerMessage1_NestedEnumType1B) Type() protoreflect.EnumType {
-	return &file_cmd_protoc_gen_go_testdata_proto2_enum_proto_enumTypes[3]
-}
-
-func (x EnumContainerMessage1_NestedEnumType1B) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *EnumContainerMessage1_NestedEnumType1B) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = EnumContainerMessage1_NestedEnumType1B(num)
-	return nil
-}
-
-// Deprecated: Use EnumContainerMessage1_NestedEnumType1B.Descriptor instead.
-func (EnumContainerMessage1_NestedEnumType1B) EnumDescriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescGZIP(), []int{0, 1}
-}
-
-// NestedEnumType2A comment.
-type EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A int32
-
-const (
-	// NestedEnumType2A_VALUE comment.
-	EnumContainerMessage1_EnumContainerMessage2_NESTED_2A_VALUE EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A = 0
-)
-
-// Enum value maps for EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A.
-var (
-	EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A_name = map[int32]string{
-		0: "NESTED_2A_VALUE",
-	}
-	EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A_value = map[string]int32{
-		"NESTED_2A_VALUE": 0,
-	}
-)
-
-func (x EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A) Enum() *EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A {
-	p := new(EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A)
-	*p = x
-	return p
-}
-
-func (x EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A) Descriptor() protoreflect.EnumDescriptor {
-	return file_cmd_protoc_gen_go_testdata_proto2_enum_proto_enumTypes[4].Descriptor()
-}
-
-func (EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A) Type() protoreflect.EnumType {
-	return &file_cmd_protoc_gen_go_testdata_proto2_enum_proto_enumTypes[4]
-}
-
-func (x EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A(num)
-	return nil
-}
-
-// Deprecated: Use EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A.Descriptor instead.
-func (EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A) EnumDescriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescGZIP(), []int{0, 0, 0}
-}
-
-type EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B int32
-
-const (
-	EnumContainerMessage1_EnumContainerMessage2_NESTED_2B_VALUE EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B = 0
-)
-
-// Enum value maps for EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B.
-var (
-	EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B_name = map[int32]string{
-		0: "NESTED_2B_VALUE",
-	}
-	EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B_value = map[string]int32{
-		"NESTED_2B_VALUE": 0,
-	}
-)
-
-func (x EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B) Enum() *EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B {
-	p := new(EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B)
-	*p = x
-	return p
-}
-
-func (x EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B) Descriptor() protoreflect.EnumDescriptor {
-	return file_cmd_protoc_gen_go_testdata_proto2_enum_proto_enumTypes[5].Descriptor()
-}
-
-func (EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B) Type() protoreflect.EnumType {
-	return &file_cmd_protoc_gen_go_testdata_proto2_enum_proto_enumTypes[5]
-}
-
-func (x EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B(num)
-	return nil
-}
-
-// Deprecated: Use EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B.Descriptor instead.
-func (EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B) EnumDescriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescGZIP(), []int{0, 0, 1}
-}
-
-type EnumContainerMessage1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	DefaultDuplicate1 *EnumType2 `protobuf:"varint,1,opt,name=default_duplicate1,json=defaultDuplicate1,enum=goproto.protoc.proto2.EnumType2,def=1" json:"default_duplicate1,omitempty"`
-	DefaultDuplicate2 *EnumType2 `protobuf:"varint,2,opt,name=default_duplicate2,json=defaultDuplicate2,enum=goproto.protoc.proto2.EnumType2,def=1" json:"default_duplicate2,omitempty"`
-}
-
-// Default values for EnumContainerMessage1 fields.
-const (
-	Default_EnumContainerMessage1_DefaultDuplicate1 = EnumType2_duplicate1
-	Default_EnumContainerMessage1_DefaultDuplicate2 = EnumType2_duplicate2
-)
-
-func (x *EnumContainerMessage1) Reset() {
-	*x = EnumContainerMessage1{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_proto2_enum_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *EnumContainerMessage1) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*EnumContainerMessage1) ProtoMessage() {}
-
-func (x *EnumContainerMessage1) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_proto2_enum_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use EnumContainerMessage1.ProtoReflect.Descriptor instead.
-func (*EnumContainerMessage1) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *EnumContainerMessage1) GetDefaultDuplicate1() EnumType2 {
-	if x != nil && x.DefaultDuplicate1 != nil {
-		return *x.DefaultDuplicate1
-	}
-	return Default_EnumContainerMessage1_DefaultDuplicate1
-}
-
-func (x *EnumContainerMessage1) GetDefaultDuplicate2() EnumType2 {
-	if x != nil && x.DefaultDuplicate2 != nil {
-		return *x.DefaultDuplicate2
-	}
-	return Default_EnumContainerMessage1_DefaultDuplicate2
-}
-
-type EnumContainerMessage1_EnumContainerMessage2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *EnumContainerMessage1_EnumContainerMessage2) Reset() {
-	*x = EnumContainerMessage1_EnumContainerMessage2{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_proto2_enum_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *EnumContainerMessage1_EnumContainerMessage2) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*EnumContainerMessage1_EnumContainerMessage2) ProtoMessage() {}
-
-func (x *EnumContainerMessage1_EnumContainerMessage2) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_proto2_enum_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use EnumContainerMessage1_EnumContainerMessage2.ProtoReflect.Descriptor instead.
-func (*EnumContainerMessage1_EnumContainerMessage2) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescGZIP(), []int{0, 0}
-}
-
-var File_cmd_protoc_gen_go_testdata_proto2_enum_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDesc = []byte{
-	0x0a, 0x2c, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x32, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x32, 0x22, 0x8e, 0x03, 0x0a, 0x15, 0x45, 0x6e, 0x75, 0x6d, 0x43, 0x6f,
-	0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x12,
-	0x5b, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x64, 0x75, 0x70, 0x6c, 0x69,
-	0x63, 0x61, 0x74, 0x65, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x32, 0x3a, 0x0a, 0x64,
-	0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x31, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75,
-	0x6c, 0x74, 0x44, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x31, 0x12, 0x5b, 0x0a, 0x12,
-	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74,
-	0x65, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32,
-	0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x32, 0x3a, 0x0a, 0x64, 0x75, 0x70, 0x6c,
-	0x69, 0x63, 0x61, 0x74, 0x65, 0x32, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x44,
-	0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x32, 0x1a, 0x69, 0x0a, 0x15, 0x45, 0x6e, 0x75,
-	0x6d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x32, 0x22, 0x27, 0x0a, 0x10, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d,
-	0x54, 0x79, 0x70, 0x65, 0x32, 0x41, 0x12, 0x13, 0x0a, 0x0f, 0x4e, 0x45, 0x53, 0x54, 0x45, 0x44,
-	0x5f, 0x32, 0x41, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x00, 0x22, 0x27, 0x0a, 0x10, 0x4e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x32, 0x42, 0x12,
-	0x13, 0x0a, 0x0f, 0x4e, 0x45, 0x53, 0x54, 0x45, 0x44, 0x5f, 0x32, 0x42, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x10, 0x00, 0x22, 0x27, 0x0a, 0x10, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e,
-	0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x31, 0x41, 0x12, 0x13, 0x0a, 0x0f, 0x4e, 0x45, 0x53, 0x54,
-	0x45, 0x44, 0x5f, 0x31, 0x41, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x00, 0x22, 0x27, 0x0a,
-	0x10, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x31,
-	0x42, 0x12, 0x13, 0x0a, 0x0f, 0x4e, 0x45, 0x53, 0x54, 0x45, 0x44, 0x5f, 0x31, 0x42, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x10, 0x00, 0x2a, 0x1d, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x79,
-	0x70, 0x65, 0x31, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03,
-	0x54, 0x57, 0x4f, 0x10, 0x02, 0x2a, 0x51, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70,
-	0x65, 0x32, 0x12, 0x0e, 0x0a, 0x0a, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x31,
-	0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x65, 0x32,
-	0x10, 0x01, 0x1a, 0x02, 0x10, 0x01, 0x22, 0x04, 0x08, 0x02, 0x10, 0x02, 0x22, 0x04, 0x08, 0x03,
-	0x10, 0x03, 0x2a, 0x09, 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x45, 0x44, 0x31, 0x2a, 0x09, 0x52,
-	0x45, 0x53, 0x45, 0x52, 0x56, 0x45, 0x44, 0x32, 0x42, 0x3e, 0x5a, 0x3c, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74,
-	0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescData = file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_proto2_enum_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
-var file_cmd_protoc_gen_go_testdata_proto2_enum_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
-var file_cmd_protoc_gen_go_testdata_proto2_enum_proto_goTypes = []interface{}{
-	(EnumType1)(0), // 0: goproto.protoc.proto2.EnumType1
-	(EnumType2)(0), // 1: goproto.protoc.proto2.EnumType2
-	(EnumContainerMessage1_NestedEnumType1A)(0),                       // 2: goproto.protoc.proto2.EnumContainerMessage1.NestedEnumType1A
-	(EnumContainerMessage1_NestedEnumType1B)(0),                       // 3: goproto.protoc.proto2.EnumContainerMessage1.NestedEnumType1B
-	(EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2A)(0), // 4: goproto.protoc.proto2.EnumContainerMessage1.EnumContainerMessage2.NestedEnumType2A
-	(EnumContainerMessage1_EnumContainerMessage2_NestedEnumType2B)(0), // 5: goproto.protoc.proto2.EnumContainerMessage1.EnumContainerMessage2.NestedEnumType2B
-	(*EnumContainerMessage1)(nil),                                     // 6: goproto.protoc.proto2.EnumContainerMessage1
-	(*EnumContainerMessage1_EnumContainerMessage2)(nil),               // 7: goproto.protoc.proto2.EnumContainerMessage1.EnumContainerMessage2
-}
-var file_cmd_protoc_gen_go_testdata_proto2_enum_proto_depIdxs = []int32{
-	1, // 0: goproto.protoc.proto2.EnumContainerMessage1.default_duplicate1:type_name -> goproto.protoc.proto2.EnumType2
-	1, // 1: goproto.protoc.proto2.EnumContainerMessage1.default_duplicate2:type_name -> goproto.protoc.proto2.EnumType2
-	2, // [2:2] is the sub-list for method output_type
-	2, // [2:2] is the sub-list for method input_type
-	2, // [2:2] is the sub-list for extension type_name
-	2, // [2:2] is the sub-list for extension extendee
-	0, // [0:2] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_proto2_enum_proto_init() }
-func file_cmd_protoc_gen_go_testdata_proto2_enum_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_proto2_enum_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_proto2_enum_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*EnumContainerMessage1); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_proto2_enum_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*EnumContainerMessage1_EnumContainerMessage2); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDesc,
-			NumEnums:      6,
-			NumMessages:   2,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_proto2_enum_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_proto2_enum_proto_depIdxs,
-		EnumInfos:         file_cmd_protoc_gen_go_testdata_proto2_enum_proto_enumTypes,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_proto2_enum_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_proto2_enum_proto = out.File
-	file_cmd_protoc_gen_go_testdata_proto2_enum_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_proto2_enum_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_proto2_enum_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/proto2/enum.proto b/cmd/protoc-gen-go/testdata/proto2/enum.proto
deleted file mode 100644
index c30c8ec..0000000
--- a/cmd/protoc-gen-go/testdata/proto2/enum.proto
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.protoc.proto2;
-
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/proto2";
-
-// EnumType1 comment.
-enum EnumType1 {
-  // EnumType1_ONE comment.
-  ONE = 1;
-  // EnumType1_TWO comment.
-  TWO = 2;
-}
-
-enum EnumType2 {
-  option allow_alias = true;
-  duplicate1 = 1;
-  duplicate2 = 1;
-
-  reserved "RESERVED1";
-  reserved "RESERVED2";
-  reserved 2, 3;
-}
-
-message EnumContainerMessage1 {
-  optional EnumType2 default_duplicate1 = 1 [default=duplicate1];
-  optional EnumType2 default_duplicate2 = 2 [default=duplicate2];
-
-  // NestedEnumType1A comment.
-  enum NestedEnumType1A {
-    // NestedEnumType1A_VALUE comment.
-    NESTED_1A_VALUE = 0;
-  }
-
-  enum NestedEnumType1B {
-    NESTED_1B_VALUE = 0;
-  }
-
-  message EnumContainerMessage2 {
-    // NestedEnumType2A comment.
-    enum NestedEnumType2A {
-      // NestedEnumType2A_VALUE comment.
-      NESTED_2A_VALUE = 0;
-    }
-
-    enum NestedEnumType2B {
-      NESTED_2B_VALUE = 0;
-    }
-  }
-}
diff --git a/cmd/protoc-gen-go/testdata/proto2/fields.pb.go b/cmd/protoc-gen-go/testdata/proto2/fields.pb.go
deleted file mode 100644
index bb979ac..0000000
--- a/cmd/protoc-gen-go/testdata/proto2/fields.pb.go
+++ /dev/null
@@ -1,1889 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/proto2/fields.proto
-
-package proto2
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	math "math"
-	reflect "reflect"
-	sync "sync"
-)
-
-type FieldTestMessage_Enum int32
-
-const (
-	FieldTestMessage_ZERO FieldTestMessage_Enum = 0
-	FieldTestMessage_ONE  FieldTestMessage_Enum = 1
-)
-
-// Enum value maps for FieldTestMessage_Enum.
-var (
-	FieldTestMessage_Enum_name = map[int32]string{
-		0: "ZERO",
-		1: "ONE",
-	}
-	FieldTestMessage_Enum_value = map[string]int32{
-		"ZERO": 0,
-		"ONE":  1,
-	}
-)
-
-func (x FieldTestMessage_Enum) Enum() *FieldTestMessage_Enum {
-	p := new(FieldTestMessage_Enum)
-	*p = x
-	return p
-}
-
-func (x FieldTestMessage_Enum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (FieldTestMessage_Enum) Descriptor() protoreflect.EnumDescriptor {
-	return file_cmd_protoc_gen_go_testdata_proto2_fields_proto_enumTypes[0].Descriptor()
-}
-
-func (FieldTestMessage_Enum) Type() protoreflect.EnumType {
-	return &file_cmd_protoc_gen_go_testdata_proto2_fields_proto_enumTypes[0]
-}
-
-func (x FieldTestMessage_Enum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *FieldTestMessage_Enum) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = FieldTestMessage_Enum(num)
-	return nil
-}
-
-// Deprecated: Use FieldTestMessage_Enum.Descriptor instead.
-func (FieldTestMessage_Enum) EnumDescriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescGZIP(), []int{0, 0}
-}
-
-type FieldTestMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OptionalBool        *bool                                `protobuf:"varint,1,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
-	OptionalEnum        *FieldTestMessage_Enum               `protobuf:"varint,2,opt,name=optional_enum,json=optionalEnum,enum=goproto.protoc.proto2.FieldTestMessage_Enum" json:"optional_enum,omitempty"`
-	OptionalInt32       *int32                               `protobuf:"varint,3,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
-	OptionalSint32      *int32                               `protobuf:"zigzag32,4,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
-	OptionalUint32      *uint32                              `protobuf:"varint,5,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
-	OptionalInt64       *int64                               `protobuf:"varint,6,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
-	OptionalSint64      *int64                               `protobuf:"zigzag64,7,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
-	OptionalUint64      *uint64                              `protobuf:"varint,8,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
-	OptionalSfixed32    *int32                               `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
-	OptionalFixed32     *uint32                              `protobuf:"fixed32,10,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
-	OptionalFloat       *float32                             `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
-	OptionalSfixed64    *int64                               `protobuf:"fixed64,12,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
-	OptionalFixed64     *uint64                              `protobuf:"fixed64,13,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
-	OptionalDouble      *float64                             `protobuf:"fixed64,14,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
-	OptionalString      *string                              `protobuf:"bytes,15,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
-	OptionalBytes       []byte                               `protobuf:"bytes,16,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
-	Optional_Message    *FieldTestMessage_Message            `protobuf:"bytes,17,opt,name=optional_Message,json=optionalMessage" json:"optional_Message,omitempty"`
-	Optionalgroup       *FieldTestMessage_OptionalGroup      `protobuf:"group,18,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
-	RequiredBool        *bool                                `protobuf:"varint,101,req,name=required_bool,json=requiredBool" json:"required_bool,omitempty"`
-	RequiredEnum        *FieldTestMessage_Enum               `protobuf:"varint,102,req,name=required_enum,json=requiredEnum,enum=goproto.protoc.proto2.FieldTestMessage_Enum" json:"required_enum,omitempty"`
-	RequiredInt32       *int32                               `protobuf:"varint,103,req,name=required_int32,json=requiredInt32" json:"required_int32,omitempty"`
-	RequiredSint32      *int32                               `protobuf:"zigzag32,104,req,name=required_sint32,json=requiredSint32" json:"required_sint32,omitempty"`
-	RequiredUint32      *uint32                              `protobuf:"varint,105,req,name=required_uint32,json=requiredUint32" json:"required_uint32,omitempty"`
-	RequiredInt64       *int64                               `protobuf:"varint,106,req,name=required_int64,json=requiredInt64" json:"required_int64,omitempty"`
-	RequiredSint64      *int64                               `protobuf:"zigzag64,107,req,name=required_sint64,json=requiredSint64" json:"required_sint64,omitempty"`
-	RequiredUint64      *uint64                              `protobuf:"varint,108,req,name=required_uint64,json=requiredUint64" json:"required_uint64,omitempty"`
-	RequiredSfixed32    *int32                               `protobuf:"fixed32,109,req,name=required_sfixed32,json=requiredSfixed32" json:"required_sfixed32,omitempty"`
-	RequiredFixed32     *uint32                              `protobuf:"fixed32,110,req,name=required_fixed32,json=requiredFixed32" json:"required_fixed32,omitempty"`
-	RequiredFloat       *float32                             `protobuf:"fixed32,111,req,name=required_float,json=requiredFloat" json:"required_float,omitempty"`
-	RequiredSfixed64    *int64                               `protobuf:"fixed64,112,req,name=required_sfixed64,json=requiredSfixed64" json:"required_sfixed64,omitempty"`
-	RequiredFixed64     *uint64                              `protobuf:"fixed64,113,req,name=required_fixed64,json=requiredFixed64" json:"required_fixed64,omitempty"`
-	RequiredDouble      *float64                             `protobuf:"fixed64,114,req,name=required_double,json=requiredDouble" json:"required_double,omitempty"`
-	RequiredString      *string                              `protobuf:"bytes,115,req,name=required_string,json=requiredString" json:"required_string,omitempty"`
-	RequiredBytes       []byte                               `protobuf:"bytes,116,req,name=required_bytes,json=requiredBytes" json:"required_bytes,omitempty"`
-	Required_Message    *FieldTestMessage_Message            `protobuf:"bytes,117,req,name=required_Message,json=requiredMessage" json:"required_Message,omitempty"`
-	Requiredgroup       *FieldTestMessage_RequiredGroup      `protobuf:"group,118,req,name=RequiredGroup,json=requiredgroup" json:"requiredgroup,omitempty"`
-	RepeatedBool        []bool                               `protobuf:"varint,201,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
-	RepeatedEnum        []FieldTestMessage_Enum              `protobuf:"varint,202,rep,name=repeated_enum,json=repeatedEnum,enum=goproto.protoc.proto2.FieldTestMessage_Enum" json:"repeated_enum,omitempty"`
-	RepeatedInt32       []int32                              `protobuf:"varint,203,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
-	RepeatedSint32      []int32                              `protobuf:"zigzag32,204,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
-	RepeatedUint32      []uint32                             `protobuf:"varint,205,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
-	RepeatedInt64       []int64                              `protobuf:"varint,206,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
-	RepeatedSint64      []int64                              `protobuf:"zigzag64,207,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
-	RepeatedUint64      []uint64                             `protobuf:"varint,208,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
-	RepeatedSfixed32    []int32                              `protobuf:"fixed32,209,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
-	RepeatedFixed32     []uint32                             `protobuf:"fixed32,210,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
-	RepeatedFloat       []float32                            `protobuf:"fixed32,211,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
-	RepeatedSfixed64    []int64                              `protobuf:"fixed64,212,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
-	RepeatedFixed64     []uint64                             `protobuf:"fixed64,213,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
-	RepeatedDouble      []float64                            `protobuf:"fixed64,214,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
-	RepeatedString      []string                             `protobuf:"bytes,215,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
-	RepeatedBytes       [][]byte                             `protobuf:"bytes,216,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
-	Repeated_Message    []*FieldTestMessage_Message          `protobuf:"bytes,217,rep,name=repeated_Message,json=repeatedMessage" json:"repeated_Message,omitempty"`
-	Repeatedgroup       []*FieldTestMessage_RepeatedGroup    `protobuf:"group,218,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
-	DefaultBool         *bool                                `protobuf:"varint,301,opt,name=default_bool,json=defaultBool,def=1" json:"default_bool,omitempty"`
-	DefaultEnum         *FieldTestMessage_Enum               `protobuf:"varint,302,opt,name=default_enum,json=defaultEnum,enum=goproto.protoc.proto2.FieldTestMessage_Enum,def=1" json:"default_enum,omitempty"`
-	DefaultInt32        *int32                               `protobuf:"varint,303,opt,name=default_int32,json=defaultInt32,def=1" json:"default_int32,omitempty"`
-	DefaultSint32       *int32                               `protobuf:"zigzag32,304,opt,name=default_sint32,json=defaultSint32,def=1" json:"default_sint32,omitempty"`
-	DefaultUint32       *uint32                              `protobuf:"varint,305,opt,name=default_uint32,json=defaultUint32,def=1" json:"default_uint32,omitempty"`
-	DefaultInt64        *int64                               `protobuf:"varint,306,opt,name=default_int64,json=defaultInt64,def=1" json:"default_int64,omitempty"`
-	DefaultSint64       *int64                               `protobuf:"zigzag64,307,opt,name=default_sint64,json=defaultSint64,def=1" json:"default_sint64,omitempty"`
-	DefaultUint64       *uint64                              `protobuf:"varint,308,opt,name=default_uint64,json=defaultUint64,def=1" json:"default_uint64,omitempty"`
-	DefaultSfixed32     *int32                               `protobuf:"fixed32,309,opt,name=default_sfixed32,json=defaultSfixed32,def=1" json:"default_sfixed32,omitempty"`
-	DefaultFixed32      *uint32                              `protobuf:"fixed32,310,opt,name=default_fixed32,json=defaultFixed32,def=1" json:"default_fixed32,omitempty"`
-	DefaultFloat        *float32                             `protobuf:"fixed32,311,opt,name=default_float,json=defaultFloat,def=3.14" json:"default_float,omitempty"`
-	DefaultSfixed64     *int64                               `protobuf:"fixed64,312,opt,name=default_sfixed64,json=defaultSfixed64,def=1" json:"default_sfixed64,omitempty"`
-	DefaultFixed64      *uint64                              `protobuf:"fixed64,313,opt,name=default_fixed64,json=defaultFixed64,def=1" json:"default_fixed64,omitempty"`
-	DefaultDouble       *float64                             `protobuf:"fixed64,314,opt,name=default_double,json=defaultDouble,def=3.1415" json:"default_double,omitempty"`
-	DefaultString       *string                              `protobuf:"bytes,315,opt,name=default_string,json=defaultString,def=hello,\"world!\"\n" json:"default_string,omitempty"`
-	DefaultBytes        []byte                               `protobuf:"bytes,316,opt,name=default_bytes,json=defaultBytes,def=hello,\\336\\255\\276\\357" json:"default_bytes,omitempty"`
-	DefaultZeroString   *string                              `protobuf:"bytes,350,opt,name=default_zero_string,json=defaultZeroString,def=" json:"default_zero_string,omitempty"`
-	DefaultZeroBytes    []byte                               `protobuf:"bytes,351,opt,name=default_zero_bytes,json=defaultZeroBytes,def=" json:"default_zero_bytes,omitempty"`
-	DefaultFloatNeginf  *float32                             `protobuf:"fixed32,400,opt,name=default_float_neginf,json=defaultFloatNeginf,def=-inf" json:"default_float_neginf,omitempty"`
-	DefaultFloatPosinf  *float32                             `protobuf:"fixed32,401,opt,name=default_float_posinf,json=defaultFloatPosinf,def=inf" json:"default_float_posinf,omitempty"`
-	DefaultFloatNan     *float32                             `protobuf:"fixed32,402,opt,name=default_float_nan,json=defaultFloatNan,def=nan" json:"default_float_nan,omitempty"`
-	DefaultDoubleNeginf *float64                             `protobuf:"fixed64,403,opt,name=default_double_neginf,json=defaultDoubleNeginf,def=-inf" json:"default_double_neginf,omitempty"`
-	DefaultDoublePosinf *float64                             `protobuf:"fixed64,404,opt,name=default_double_posinf,json=defaultDoublePosinf,def=inf" json:"default_double_posinf,omitempty"`
-	DefaultDoubleNan    *float64                             `protobuf:"fixed64,405,opt,name=default_double_nan,json=defaultDoubleNan,def=nan" json:"default_double_nan,omitempty"`
-	MapInt32Int64       map[int32]int64                      `protobuf:"bytes,500,rep,name=map_int32_int64,json=mapInt32Int64" json:"map_int32_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapStringMessage    map[string]*FieldTestMessage_Message `protobuf:"bytes,501,rep,name=map_string_message,json=mapStringMessage" json:"map_string_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapFixed64Enum      map[uint64]FieldTestMessage_Enum     `protobuf:"bytes,502,rep,name=map_fixed64_enum,json=mapFixed64Enum" json:"map_fixed64_enum,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=goproto.protoc.proto2.FieldTestMessage_Enum"`
-	// Types that are assignable to OneofField:
-	//	*FieldTestMessage_OneofBool
-	//	*FieldTestMessage_OneofEnum
-	//	*FieldTestMessage_OneofInt32
-	//	*FieldTestMessage_OneofSint32
-	//	*FieldTestMessage_OneofUint32
-	//	*FieldTestMessage_OneofInt64
-	//	*FieldTestMessage_OneofSint64
-	//	*FieldTestMessage_OneofUint64
-	//	*FieldTestMessage_OneofSfixed32
-	//	*FieldTestMessage_OneofFixed32
-	//	*FieldTestMessage_OneofFloat
-	//	*FieldTestMessage_OneofSfixed64
-	//	*FieldTestMessage_OneofFixed64
-	//	*FieldTestMessage_OneofDouble
-	//	*FieldTestMessage_OneofString
-	//	*FieldTestMessage_OneofBytes
-	//	*FieldTestMessage_Oneof_Message
-	//	*FieldTestMessage_Oneofgroup
-	//	*FieldTestMessage_OneofLargestTag
-	OneofField isFieldTestMessage_OneofField `protobuf_oneof:"oneof_field"`
-	// Types that are assignable to OneofTwo:
-	//	*FieldTestMessage_OneofTwo_1
-	//	*FieldTestMessage_OneofTwo_2
-	OneofTwo isFieldTestMessage_OneofTwo `protobuf_oneof:"oneof_two"`
-}
-
-// Default values for FieldTestMessage fields.
-const (
-	Default_FieldTestMessage_DefaultBool       = bool(true)
-	Default_FieldTestMessage_DefaultEnum       = FieldTestMessage_ONE
-	Default_FieldTestMessage_DefaultInt32      = int32(1)
-	Default_FieldTestMessage_DefaultSint32     = int32(1)
-	Default_FieldTestMessage_DefaultUint32     = uint32(1)
-	Default_FieldTestMessage_DefaultInt64      = int64(1)
-	Default_FieldTestMessage_DefaultSint64     = int64(1)
-	Default_FieldTestMessage_DefaultUint64     = uint64(1)
-	Default_FieldTestMessage_DefaultSfixed32   = int32(1)
-	Default_FieldTestMessage_DefaultFixed32    = uint32(1)
-	Default_FieldTestMessage_DefaultFloat      = float32(3.140000104904175)
-	Default_FieldTestMessage_DefaultSfixed64   = int64(1)
-	Default_FieldTestMessage_DefaultFixed64    = uint64(1)
-	Default_FieldTestMessage_DefaultDouble     = float64(3.1415)
-	Default_FieldTestMessage_DefaultString     = string("hello,\"world!\"\n")
-	Default_FieldTestMessage_DefaultZeroString = string("")
-)
-
-// Default values for FieldTestMessage fields.
-var (
-	Default_FieldTestMessage_DefaultBytes        = []byte("hello,ޭ\xbe\xef")
-	Default_FieldTestMessage_DefaultZeroBytes    = []byte("")
-	Default_FieldTestMessage_DefaultFloatNeginf  = float32(math.Inf(-1))
-	Default_FieldTestMessage_DefaultFloatPosinf  = float32(math.Inf(+1))
-	Default_FieldTestMessage_DefaultFloatNan     = float32(math.NaN())
-	Default_FieldTestMessage_DefaultDoubleNeginf = float64(math.Inf(-1))
-	Default_FieldTestMessage_DefaultDoublePosinf = float64(math.Inf(+1))
-	Default_FieldTestMessage_DefaultDoubleNan    = float64(math.NaN())
-)
-
-func (x *FieldTestMessage) Reset() {
-	*x = FieldTestMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_proto2_fields_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *FieldTestMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FieldTestMessage) ProtoMessage() {}
-
-func (x *FieldTestMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_proto2_fields_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use FieldTestMessage.ProtoReflect.Descriptor instead.
-func (*FieldTestMessage) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *FieldTestMessage) GetOptionalBool() bool {
-	if x != nil && x.OptionalBool != nil {
-		return *x.OptionalBool
-	}
-	return false
-}
-
-func (x *FieldTestMessage) GetOptionalEnum() FieldTestMessage_Enum {
-	if x != nil && x.OptionalEnum != nil {
-		return *x.OptionalEnum
-	}
-	return FieldTestMessage_ZERO
-}
-
-func (x *FieldTestMessage) GetOptionalInt32() int32 {
-	if x != nil && x.OptionalInt32 != nil {
-		return *x.OptionalInt32
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalSint32() int32 {
-	if x != nil && x.OptionalSint32 != nil {
-		return *x.OptionalSint32
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalUint32() uint32 {
-	if x != nil && x.OptionalUint32 != nil {
-		return *x.OptionalUint32
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalInt64() int64 {
-	if x != nil && x.OptionalInt64 != nil {
-		return *x.OptionalInt64
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalSint64() int64 {
-	if x != nil && x.OptionalSint64 != nil {
-		return *x.OptionalSint64
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalUint64() uint64 {
-	if x != nil && x.OptionalUint64 != nil {
-		return *x.OptionalUint64
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalSfixed32() int32 {
-	if x != nil && x.OptionalSfixed32 != nil {
-		return *x.OptionalSfixed32
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalFixed32() uint32 {
-	if x != nil && x.OptionalFixed32 != nil {
-		return *x.OptionalFixed32
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalFloat() float32 {
-	if x != nil && x.OptionalFloat != nil {
-		return *x.OptionalFloat
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalSfixed64() int64 {
-	if x != nil && x.OptionalSfixed64 != nil {
-		return *x.OptionalSfixed64
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalFixed64() uint64 {
-	if x != nil && x.OptionalFixed64 != nil {
-		return *x.OptionalFixed64
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalDouble() float64 {
-	if x != nil && x.OptionalDouble != nil {
-		return *x.OptionalDouble
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalString() string {
-	if x != nil && x.OptionalString != nil {
-		return *x.OptionalString
-	}
-	return ""
-}
-
-func (x *FieldTestMessage) GetOptionalBytes() []byte {
-	if x != nil {
-		return x.OptionalBytes
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetOptional_Message() *FieldTestMessage_Message {
-	if x != nil {
-		return x.Optional_Message
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetOptionalgroup() *FieldTestMessage_OptionalGroup {
-	if x != nil {
-		return x.Optionalgroup
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRequiredBool() bool {
-	if x != nil && x.RequiredBool != nil {
-		return *x.RequiredBool
-	}
-	return false
-}
-
-func (x *FieldTestMessage) GetRequiredEnum() FieldTestMessage_Enum {
-	if x != nil && x.RequiredEnum != nil {
-		return *x.RequiredEnum
-	}
-	return FieldTestMessage_ZERO
-}
-
-func (x *FieldTestMessage) GetRequiredInt32() int32 {
-	if x != nil && x.RequiredInt32 != nil {
-		return *x.RequiredInt32
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetRequiredSint32() int32 {
-	if x != nil && x.RequiredSint32 != nil {
-		return *x.RequiredSint32
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetRequiredUint32() uint32 {
-	if x != nil && x.RequiredUint32 != nil {
-		return *x.RequiredUint32
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetRequiredInt64() int64 {
-	if x != nil && x.RequiredInt64 != nil {
-		return *x.RequiredInt64
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetRequiredSint64() int64 {
-	if x != nil && x.RequiredSint64 != nil {
-		return *x.RequiredSint64
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetRequiredUint64() uint64 {
-	if x != nil && x.RequiredUint64 != nil {
-		return *x.RequiredUint64
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetRequiredSfixed32() int32 {
-	if x != nil && x.RequiredSfixed32 != nil {
-		return *x.RequiredSfixed32
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetRequiredFixed32() uint32 {
-	if x != nil && x.RequiredFixed32 != nil {
-		return *x.RequiredFixed32
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetRequiredFloat() float32 {
-	if x != nil && x.RequiredFloat != nil {
-		return *x.RequiredFloat
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetRequiredSfixed64() int64 {
-	if x != nil && x.RequiredSfixed64 != nil {
-		return *x.RequiredSfixed64
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetRequiredFixed64() uint64 {
-	if x != nil && x.RequiredFixed64 != nil {
-		return *x.RequiredFixed64
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetRequiredDouble() float64 {
-	if x != nil && x.RequiredDouble != nil {
-		return *x.RequiredDouble
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetRequiredString() string {
-	if x != nil && x.RequiredString != nil {
-		return *x.RequiredString
-	}
-	return ""
-}
-
-func (x *FieldTestMessage) GetRequiredBytes() []byte {
-	if x != nil {
-		return x.RequiredBytes
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRequired_Message() *FieldTestMessage_Message {
-	if x != nil {
-		return x.Required_Message
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRequiredgroup() *FieldTestMessage_RequiredGroup {
-	if x != nil {
-		return x.Requiredgroup
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedBool() []bool {
-	if x != nil {
-		return x.RepeatedBool
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedEnum() []FieldTestMessage_Enum {
-	if x != nil {
-		return x.RepeatedEnum
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedInt32() []int32 {
-	if x != nil {
-		return x.RepeatedInt32
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedSint32() []int32 {
-	if x != nil {
-		return x.RepeatedSint32
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedUint32() []uint32 {
-	if x != nil {
-		return x.RepeatedUint32
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedInt64() []int64 {
-	if x != nil {
-		return x.RepeatedInt64
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedSint64() []int64 {
-	if x != nil {
-		return x.RepeatedSint64
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedUint64() []uint64 {
-	if x != nil {
-		return x.RepeatedUint64
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedSfixed32() []int32 {
-	if x != nil {
-		return x.RepeatedSfixed32
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedFixed32() []uint32 {
-	if x != nil {
-		return x.RepeatedFixed32
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedFloat() []float32 {
-	if x != nil {
-		return x.RepeatedFloat
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedSfixed64() []int64 {
-	if x != nil {
-		return x.RepeatedSfixed64
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedFixed64() []uint64 {
-	if x != nil {
-		return x.RepeatedFixed64
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedDouble() []float64 {
-	if x != nil {
-		return x.RepeatedDouble
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedString() []string {
-	if x != nil {
-		return x.RepeatedString
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedBytes() [][]byte {
-	if x != nil {
-		return x.RepeatedBytes
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeated_Message() []*FieldTestMessage_Message {
-	if x != nil {
-		return x.Repeated_Message
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedgroup() []*FieldTestMessage_RepeatedGroup {
-	if x != nil {
-		return x.Repeatedgroup
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetDefaultBool() bool {
-	if x != nil && x.DefaultBool != nil {
-		return *x.DefaultBool
-	}
-	return Default_FieldTestMessage_DefaultBool
-}
-
-func (x *FieldTestMessage) GetDefaultEnum() FieldTestMessage_Enum {
-	if x != nil && x.DefaultEnum != nil {
-		return *x.DefaultEnum
-	}
-	return Default_FieldTestMessage_DefaultEnum
-}
-
-func (x *FieldTestMessage) GetDefaultInt32() int32 {
-	if x != nil && x.DefaultInt32 != nil {
-		return *x.DefaultInt32
-	}
-	return Default_FieldTestMessage_DefaultInt32
-}
-
-func (x *FieldTestMessage) GetDefaultSint32() int32 {
-	if x != nil && x.DefaultSint32 != nil {
-		return *x.DefaultSint32
-	}
-	return Default_FieldTestMessage_DefaultSint32
-}
-
-func (x *FieldTestMessage) GetDefaultUint32() uint32 {
-	if x != nil && x.DefaultUint32 != nil {
-		return *x.DefaultUint32
-	}
-	return Default_FieldTestMessage_DefaultUint32
-}
-
-func (x *FieldTestMessage) GetDefaultInt64() int64 {
-	if x != nil && x.DefaultInt64 != nil {
-		return *x.DefaultInt64
-	}
-	return Default_FieldTestMessage_DefaultInt64
-}
-
-func (x *FieldTestMessage) GetDefaultSint64() int64 {
-	if x != nil && x.DefaultSint64 != nil {
-		return *x.DefaultSint64
-	}
-	return Default_FieldTestMessage_DefaultSint64
-}
-
-func (x *FieldTestMessage) GetDefaultUint64() uint64 {
-	if x != nil && x.DefaultUint64 != nil {
-		return *x.DefaultUint64
-	}
-	return Default_FieldTestMessage_DefaultUint64
-}
-
-func (x *FieldTestMessage) GetDefaultSfixed32() int32 {
-	if x != nil && x.DefaultSfixed32 != nil {
-		return *x.DefaultSfixed32
-	}
-	return Default_FieldTestMessage_DefaultSfixed32
-}
-
-func (x *FieldTestMessage) GetDefaultFixed32() uint32 {
-	if x != nil && x.DefaultFixed32 != nil {
-		return *x.DefaultFixed32
-	}
-	return Default_FieldTestMessage_DefaultFixed32
-}
-
-func (x *FieldTestMessage) GetDefaultFloat() float32 {
-	if x != nil && x.DefaultFloat != nil {
-		return *x.DefaultFloat
-	}
-	return Default_FieldTestMessage_DefaultFloat
-}
-
-func (x *FieldTestMessage) GetDefaultSfixed64() int64 {
-	if x != nil && x.DefaultSfixed64 != nil {
-		return *x.DefaultSfixed64
-	}
-	return Default_FieldTestMessage_DefaultSfixed64
-}
-
-func (x *FieldTestMessage) GetDefaultFixed64() uint64 {
-	if x != nil && x.DefaultFixed64 != nil {
-		return *x.DefaultFixed64
-	}
-	return Default_FieldTestMessage_DefaultFixed64
-}
-
-func (x *FieldTestMessage) GetDefaultDouble() float64 {
-	if x != nil && x.DefaultDouble != nil {
-		return *x.DefaultDouble
-	}
-	return Default_FieldTestMessage_DefaultDouble
-}
-
-func (x *FieldTestMessage) GetDefaultString() string {
-	if x != nil && x.DefaultString != nil {
-		return *x.DefaultString
-	}
-	return Default_FieldTestMessage_DefaultString
-}
-
-func (x *FieldTestMessage) GetDefaultBytes() []byte {
-	if x != nil && x.DefaultBytes != nil {
-		return x.DefaultBytes
-	}
-	return append([]byte(nil), Default_FieldTestMessage_DefaultBytes...)
-}
-
-func (x *FieldTestMessage) GetDefaultZeroString() string {
-	if x != nil && x.DefaultZeroString != nil {
-		return *x.DefaultZeroString
-	}
-	return Default_FieldTestMessage_DefaultZeroString
-}
-
-func (x *FieldTestMessage) GetDefaultZeroBytes() []byte {
-	if x != nil && x.DefaultZeroBytes != nil {
-		return x.DefaultZeroBytes
-	}
-	return append([]byte(nil), Default_FieldTestMessage_DefaultZeroBytes...)
-}
-
-func (x *FieldTestMessage) GetDefaultFloatNeginf() float32 {
-	if x != nil && x.DefaultFloatNeginf != nil {
-		return *x.DefaultFloatNeginf
-	}
-	return Default_FieldTestMessage_DefaultFloatNeginf
-}
-
-func (x *FieldTestMessage) GetDefaultFloatPosinf() float32 {
-	if x != nil && x.DefaultFloatPosinf != nil {
-		return *x.DefaultFloatPosinf
-	}
-	return Default_FieldTestMessage_DefaultFloatPosinf
-}
-
-func (x *FieldTestMessage) GetDefaultFloatNan() float32 {
-	if x != nil && x.DefaultFloatNan != nil {
-		return *x.DefaultFloatNan
-	}
-	return Default_FieldTestMessage_DefaultFloatNan
-}
-
-func (x *FieldTestMessage) GetDefaultDoubleNeginf() float64 {
-	if x != nil && x.DefaultDoubleNeginf != nil {
-		return *x.DefaultDoubleNeginf
-	}
-	return Default_FieldTestMessage_DefaultDoubleNeginf
-}
-
-func (x *FieldTestMessage) GetDefaultDoublePosinf() float64 {
-	if x != nil && x.DefaultDoublePosinf != nil {
-		return *x.DefaultDoublePosinf
-	}
-	return Default_FieldTestMessage_DefaultDoublePosinf
-}
-
-func (x *FieldTestMessage) GetDefaultDoubleNan() float64 {
-	if x != nil && x.DefaultDoubleNan != nil {
-		return *x.DefaultDoubleNan
-	}
-	return Default_FieldTestMessage_DefaultDoubleNan
-}
-
-func (x *FieldTestMessage) GetMapInt32Int64() map[int32]int64 {
-	if x != nil {
-		return x.MapInt32Int64
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetMapStringMessage() map[string]*FieldTestMessage_Message {
-	if x != nil {
-		return x.MapStringMessage
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetMapFixed64Enum() map[uint64]FieldTestMessage_Enum {
-	if x != nil {
-		return x.MapFixed64Enum
-	}
-	return nil
-}
-
-func (m *FieldTestMessage) GetOneofField() isFieldTestMessage_OneofField {
-	if m != nil {
-		return m.OneofField
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetOneofBool() bool {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofBool); ok {
-		return x.OneofBool
-	}
-	return false
-}
-
-func (x *FieldTestMessage) GetOneofEnum() FieldTestMessage_Enum {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofEnum); ok {
-		return x.OneofEnum
-	}
-	return FieldTestMessage_ZERO
-}
-
-func (x *FieldTestMessage) GetOneofInt32() int32 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofInt32); ok {
-		return x.OneofInt32
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOneofSint32() int32 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofSint32); ok {
-		return x.OneofSint32
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOneofUint32() uint32 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofUint32); ok {
-		return x.OneofUint32
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOneofInt64() int64 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofInt64); ok {
-		return x.OneofInt64
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOneofSint64() int64 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofSint64); ok {
-		return x.OneofSint64
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOneofUint64() uint64 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofUint64); ok {
-		return x.OneofUint64
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOneofSfixed32() int32 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofSfixed32); ok {
-		return x.OneofSfixed32
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOneofFixed32() uint32 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofFixed32); ok {
-		return x.OneofFixed32
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOneofFloat() float32 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofFloat); ok {
-		return x.OneofFloat
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOneofSfixed64() int64 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofSfixed64); ok {
-		return x.OneofSfixed64
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOneofFixed64() uint64 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofFixed64); ok {
-		return x.OneofFixed64
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOneofDouble() float64 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofDouble); ok {
-		return x.OneofDouble
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOneofString() string {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofString); ok {
-		return x.OneofString
-	}
-	return ""
-}
-
-func (x *FieldTestMessage) GetOneofBytes() []byte {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofBytes); ok {
-		return x.OneofBytes
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetOneof_Message() *FieldTestMessage_Message {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_Oneof_Message); ok {
-		return x.Oneof_Message
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetOneofgroup() *FieldTestMessage_OneofGroup {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_Oneofgroup); ok {
-		return x.Oneofgroup
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetOneofLargestTag() int32 {
-	if x, ok := x.GetOneofField().(*FieldTestMessage_OneofLargestTag); ok {
-		return x.OneofLargestTag
-	}
-	return 0
-}
-
-func (m *FieldTestMessage) GetOneofTwo() isFieldTestMessage_OneofTwo {
-	if m != nil {
-		return m.OneofTwo
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetOneofTwo_1() int32 {
-	if x, ok := x.GetOneofTwo().(*FieldTestMessage_OneofTwo_1); ok {
-		return x.OneofTwo_1
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOneofTwo_2() int64 {
-	if x, ok := x.GetOneofTwo().(*FieldTestMessage_OneofTwo_2); ok {
-		return x.OneofTwo_2
-	}
-	return 0
-}
-
-type isFieldTestMessage_OneofField interface {
-	isFieldTestMessage_OneofField()
-}
-
-type FieldTestMessage_OneofBool struct {
-	OneofBool bool `protobuf:"varint,601,opt,name=oneof_bool,json=oneofBool,oneof"`
-}
-
-type FieldTestMessage_OneofEnum struct {
-	OneofEnum FieldTestMessage_Enum `protobuf:"varint,602,opt,name=oneof_enum,json=oneofEnum,enum=goproto.protoc.proto2.FieldTestMessage_Enum,oneof"`
-}
-
-type FieldTestMessage_OneofInt32 struct {
-	OneofInt32 int32 `protobuf:"varint,603,opt,name=oneof_int32,json=oneofInt32,oneof"`
-}
-
-type FieldTestMessage_OneofSint32 struct {
-	OneofSint32 int32 `protobuf:"zigzag32,604,opt,name=oneof_sint32,json=oneofSint32,oneof"`
-}
-
-type FieldTestMessage_OneofUint32 struct {
-	OneofUint32 uint32 `protobuf:"varint,605,opt,name=oneof_uint32,json=oneofUint32,oneof"`
-}
-
-type FieldTestMessage_OneofInt64 struct {
-	OneofInt64 int64 `protobuf:"varint,606,opt,name=oneof_int64,json=oneofInt64,oneof"`
-}
-
-type FieldTestMessage_OneofSint64 struct {
-	OneofSint64 int64 `protobuf:"zigzag64,607,opt,name=oneof_sint64,json=oneofSint64,oneof"`
-}
-
-type FieldTestMessage_OneofUint64 struct {
-	OneofUint64 uint64 `protobuf:"varint,608,opt,name=oneof_uint64,json=oneofUint64,oneof"`
-}
-
-type FieldTestMessage_OneofSfixed32 struct {
-	OneofSfixed32 int32 `protobuf:"fixed32,609,opt,name=oneof_sfixed32,json=oneofSfixed32,oneof"`
-}
-
-type FieldTestMessage_OneofFixed32 struct {
-	OneofFixed32 uint32 `protobuf:"fixed32,610,opt,name=oneof_fixed32,json=oneofFixed32,oneof"`
-}
-
-type FieldTestMessage_OneofFloat struct {
-	OneofFloat float32 `protobuf:"fixed32,611,opt,name=oneof_float,json=oneofFloat,oneof"`
-}
-
-type FieldTestMessage_OneofSfixed64 struct {
-	OneofSfixed64 int64 `protobuf:"fixed64,612,opt,name=oneof_sfixed64,json=oneofSfixed64,oneof"`
-}
-
-type FieldTestMessage_OneofFixed64 struct {
-	OneofFixed64 uint64 `protobuf:"fixed64,613,opt,name=oneof_fixed64,json=oneofFixed64,oneof"`
-}
-
-type FieldTestMessage_OneofDouble struct {
-	OneofDouble float64 `protobuf:"fixed64,614,opt,name=oneof_double,json=oneofDouble,oneof"`
-}
-
-type FieldTestMessage_OneofString struct {
-	OneofString string `protobuf:"bytes,615,opt,name=oneof_string,json=oneofString,oneof"`
-}
-
-type FieldTestMessage_OneofBytes struct {
-	OneofBytes []byte `protobuf:"bytes,616,opt,name=oneof_bytes,json=oneofBytes,oneof"`
-}
-
-type FieldTestMessage_Oneof_Message struct {
-	Oneof_Message *FieldTestMessage_Message `protobuf:"bytes,617,opt,name=oneof_Message,json=oneofMessage,oneof"`
-}
-
-type FieldTestMessage_Oneofgroup struct {
-	Oneofgroup *FieldTestMessage_OneofGroup `protobuf:"group,618,opt,name=OneofGroup,json=oneofgroup,oneof"`
-}
-
-type FieldTestMessage_OneofLargestTag struct {
-	OneofLargestTag int32 `protobuf:"varint,536870911,opt,name=oneof_largest_tag,json=oneofLargestTag,oneof"`
-}
-
-func (*FieldTestMessage_OneofBool) isFieldTestMessage_OneofField() {}
-
-func (*FieldTestMessage_OneofEnum) isFieldTestMessage_OneofField() {}
-
-func (*FieldTestMessage_OneofInt32) isFieldTestMessage_OneofField() {}
-
-func (*FieldTestMessage_OneofSint32) isFieldTestMessage_OneofField() {}
-
-func (*FieldTestMessage_OneofUint32) isFieldTestMessage_OneofField() {}
-
-func (*FieldTestMessage_OneofInt64) isFieldTestMessage_OneofField() {}
-
-func (*FieldTestMessage_OneofSint64) isFieldTestMessage_OneofField() {}
-
-func (*FieldTestMessage_OneofUint64) isFieldTestMessage_OneofField() {}
-
-func (*FieldTestMessage_OneofSfixed32) isFieldTestMessage_OneofField() {}
-
-func (*FieldTestMessage_OneofFixed32) isFieldTestMessage_OneofField() {}
-
-func (*FieldTestMessage_OneofFloat) isFieldTestMessage_OneofField() {}
-
-func (*FieldTestMessage_OneofSfixed64) isFieldTestMessage_OneofField() {}
-
-func (*FieldTestMessage_OneofFixed64) isFieldTestMessage_OneofField() {}
-
-func (*FieldTestMessage_OneofDouble) isFieldTestMessage_OneofField() {}
-
-func (*FieldTestMessage_OneofString) isFieldTestMessage_OneofField() {}
-
-func (*FieldTestMessage_OneofBytes) isFieldTestMessage_OneofField() {}
-
-func (*FieldTestMessage_Oneof_Message) isFieldTestMessage_OneofField() {}
-
-func (*FieldTestMessage_Oneofgroup) isFieldTestMessage_OneofField() {}
-
-func (*FieldTestMessage_OneofLargestTag) isFieldTestMessage_OneofField() {}
-
-type isFieldTestMessage_OneofTwo interface {
-	isFieldTestMessage_OneofTwo()
-}
-
-type FieldTestMessage_OneofTwo_1 struct {
-	OneofTwo_1 int32 `protobuf:"varint,700,opt,name=oneof_two_1,json=oneofTwo1,oneof"`
-}
-
-type FieldTestMessage_OneofTwo_2 struct {
-	OneofTwo_2 int64 `protobuf:"varint,701,opt,name=oneof_two_2,json=oneofTwo2,oneof"`
-}
-
-func (*FieldTestMessage_OneofTwo_1) isFieldTestMessage_OneofTwo() {}
-
-func (*FieldTestMessage_OneofTwo_2) isFieldTestMessage_OneofTwo() {}
-
-type FieldTestMessage_OptionalGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OptionalGroup *string `protobuf:"bytes,19,opt,name=optional_group,json=optionalGroup" json:"optional_group,omitempty"`
-}
-
-func (x *FieldTestMessage_OptionalGroup) Reset() {
-	*x = FieldTestMessage_OptionalGroup{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_proto2_fields_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *FieldTestMessage_OptionalGroup) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FieldTestMessage_OptionalGroup) ProtoMessage() {}
-
-func (x *FieldTestMessage_OptionalGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_proto2_fields_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use FieldTestMessage_OptionalGroup.ProtoReflect.Descriptor instead.
-func (*FieldTestMessage_OptionalGroup) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescGZIP(), []int{0, 0}
-}
-
-func (x *FieldTestMessage_OptionalGroup) GetOptionalGroup() string {
-	if x != nil && x.OptionalGroup != nil {
-		return *x.OptionalGroup
-	}
-	return ""
-}
-
-type FieldTestMessage_RequiredGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	RequiredGroup *string `protobuf:"bytes,119,req,name=required_group,json=requiredGroup" json:"required_group,omitempty"`
-}
-
-func (x *FieldTestMessage_RequiredGroup) Reset() {
-	*x = FieldTestMessage_RequiredGroup{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_proto2_fields_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *FieldTestMessage_RequiredGroup) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FieldTestMessage_RequiredGroup) ProtoMessage() {}
-
-func (x *FieldTestMessage_RequiredGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_proto2_fields_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use FieldTestMessage_RequiredGroup.ProtoReflect.Descriptor instead.
-func (*FieldTestMessage_RequiredGroup) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescGZIP(), []int{0, 1}
-}
-
-func (x *FieldTestMessage_RequiredGroup) GetRequiredGroup() string {
-	if x != nil && x.RequiredGroup != nil {
-		return *x.RequiredGroup
-	}
-	return ""
-}
-
-type FieldTestMessage_RepeatedGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	RepeatedGroup []string `protobuf:"bytes,219,rep,name=repeated_group,json=repeatedGroup" json:"repeated_group,omitempty"`
-}
-
-func (x *FieldTestMessage_RepeatedGroup) Reset() {
-	*x = FieldTestMessage_RepeatedGroup{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_proto2_fields_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *FieldTestMessage_RepeatedGroup) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FieldTestMessage_RepeatedGroup) ProtoMessage() {}
-
-func (x *FieldTestMessage_RepeatedGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_proto2_fields_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use FieldTestMessage_RepeatedGroup.ProtoReflect.Descriptor instead.
-func (*FieldTestMessage_RepeatedGroup) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescGZIP(), []int{0, 2}
-}
-
-func (x *FieldTestMessage_RepeatedGroup) GetRepeatedGroup() []string {
-	if x != nil {
-		return x.RepeatedGroup
-	}
-	return nil
-}
-
-type FieldTestMessage_OneofGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OneofGroupField *string `protobuf:"bytes,619,opt,name=oneof_group_field,json=oneofGroupField" json:"oneof_group_field,omitempty"`
-}
-
-func (x *FieldTestMessage_OneofGroup) Reset() {
-	*x = FieldTestMessage_OneofGroup{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_proto2_fields_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *FieldTestMessage_OneofGroup) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FieldTestMessage_OneofGroup) ProtoMessage() {}
-
-func (x *FieldTestMessage_OneofGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_proto2_fields_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use FieldTestMessage_OneofGroup.ProtoReflect.Descriptor instead.
-func (*FieldTestMessage_OneofGroup) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescGZIP(), []int{0, 6}
-}
-
-func (x *FieldTestMessage_OneofGroup) GetOneofGroupField() string {
-	if x != nil && x.OneofGroupField != nil {
-		return *x.OneofGroupField
-	}
-	return ""
-}
-
-type FieldTestMessage_Message struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *FieldTestMessage_Message) Reset() {
-	*x = FieldTestMessage_Message{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_proto2_fields_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *FieldTestMessage_Message) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FieldTestMessage_Message) ProtoMessage() {}
-
-func (x *FieldTestMessage_Message) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_proto2_fields_proto_msgTypes[8]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use FieldTestMessage_Message.ProtoReflect.Descriptor instead.
-func (*FieldTestMessage_Message) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescGZIP(), []int{0, 7}
-}
-
-var File_cmd_protoc_gen_go_testdata_proto2_fields_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDesc = []byte{
-	0x0a, 0x2e, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x32, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x12, 0x15, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x22, 0xa7, 0x2d, 0x0a, 0x10, 0x46, 0x69, 0x65, 0x6c,
-	0x64, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x6f, 0x6f,
-	0x6c, 0x12, 0x51, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x65, 0x6e,
-	0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32,
-	0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x45, 0x6e, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x11, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x0a,
-	0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18,
-	0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49,
-	0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a,
-	0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28,
-	0x0f, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0f, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x25,
-	0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-	0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x10,
-	0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x36, 0x34, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0f, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x27, 0x0a,
-	0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-	0x18, 0x0e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12,
-	0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65,
-	0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x5a, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x5f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x65,
-	0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x12, 0x5b, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67, 0x72,
-	0x6f, 0x75, 0x70, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70,
-	0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12,
-	0x23, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c,
-	0x18, 0x65, 0x20, 0x02, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64,
-	0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x51, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64,
-	0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x66, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0c, 0x72, 0x65, 0x71, 0x75, 0x69,
-	0x72, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69,
-	0x72, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x67, 0x20, 0x02, 0x28, 0x05, 0x52,
-	0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27,
-	0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x18, 0x68, 0x20, 0x02, 0x28, 0x11, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
-	0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69,
-	0x72, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x69, 0x20, 0x02, 0x28, 0x0d,
-	0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x18, 0x6a, 0x20, 0x02, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72,
-	0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69,
-	0x72, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x6b, 0x20, 0x02, 0x28, 0x12,
-	0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x18, 0x6c, 0x20, 0x02, 0x28, 0x04, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69,
-	0x72, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x71,
-	0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x6d,
-	0x20, 0x02, 0x28, 0x0f, 0x52, 0x10, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x53, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72,
-	0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x6e, 0x20, 0x02, 0x28, 0x07,
-	0x52, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33,
-	0x32, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x66, 0x6c,
-	0x6f, 0x61, 0x74, 0x18, 0x6f, 0x20, 0x02, 0x28, 0x02, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69,
-	0x72, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x71, 0x75,
-	0x69, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x70, 0x20,
-	0x02, 0x28, 0x10, 0x52, 0x10, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x53, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
-	0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x71, 0x20, 0x02, 0x28, 0x06, 0x52,
-	0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
-	0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75,
-	0x62, 0x6c, 0x65, 0x18, 0x72, 0x20, 0x02, 0x28, 0x01, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69,
-	0x72, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x71,
-	0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x73, 0x20, 0x02,
-	0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x62,
-	0x79, 0x74, 0x65, 0x73, 0x18, 0x74, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75,
-	0x69, 0x72, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x5a, 0x0a, 0x10, 0x72, 0x65, 0x71,
-	0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x75, 0x20,
-	0x02, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c,
-	0x64, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x5b, 0x0a, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
-	0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x76, 0x20, 0x02, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x47, 0x72,
-	0x6f, 0x75, 0x70, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x67, 0x72, 0x6f,
-	0x75, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62,
-	0x6f, 0x6f, 0x6c, 0x18, 0xc9, 0x01, 0x20, 0x03, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x52, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0xca, 0x01, 0x20, 0x03, 0x28, 0x0e,
-	0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x65,
-	0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0c,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x0e,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0xcb,
-	0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49,
-	0x6e, 0x74, 0x33, 0x32, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0xcc, 0x01, 0x20, 0x03, 0x28, 0x11, 0x52, 0x0e,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x28,
-	0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x18, 0xcd, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0xce, 0x01, 0x20, 0x03, 0x28,
-	0x03, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34,
-	0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x18, 0xcf, 0x01, 0x20, 0x03, 0x28, 0x12, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0xd0, 0x01,
-	0x20, 0x03, 0x28, 0x04, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x12, 0x2c, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0xd1, 0x01, 0x20, 0x03, 0x28, 0x0f,
-	0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x12, 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0xd2, 0x01, 0x20, 0x03, 0x28, 0x07, 0x52, 0x0f, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x26,
-	0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-	0x18, 0xd3, 0x01, 0x20, 0x03, 0x28, 0x02, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0xd4, 0x01, 0x20, 0x03,
-	0x28, 0x10, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x12, 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0xd5, 0x01, 0x20, 0x03, 0x28, 0x06, 0x52,
-	0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
-	0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75,
-	0x62, 0x6c, 0x65, 0x18, 0xd6, 0x01, 0x20, 0x03, 0x28, 0x01, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0xd7, 0x01,
-	0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0xd8, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0d, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x5b, 0x0a, 0x10,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x18, 0xd9, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e,
-	0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x5c, 0x0a, 0x0d, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0xda, 0x01, 0x20, 0x03, 0x28,
-	0x0a, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54,
-	0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x28, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75,
-	0x6c, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0xad, 0x02, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x04,
-	0x74, 0x72, 0x75, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x6f, 0x6f,
-	0x6c, 0x12, 0x55, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x65, 0x6e, 0x75,
-	0x6d, 0x18, 0xae, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32,
-	0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x03, 0x4f, 0x4e, 0x45, 0x52, 0x0b, 0x64, 0x65, 0x66,
-	0x61, 0x75, 0x6c, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x27, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61,
-	0x75, 0x6c, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0xaf, 0x02, 0x20, 0x01, 0x28, 0x05,
-	0x3a, 0x01, 0x31, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x33,
-	0x32, 0x12, 0x29, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x18, 0xb0, 0x02, 0x20, 0x01, 0x28, 0x11, 0x3a, 0x01, 0x31, 0x52, 0x0d, 0x64,
-	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x0e,
-	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0xb1,
-	0x02, 0x20, 0x01, 0x28, 0x0d, 0x3a, 0x01, 0x31, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
-	0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75,
-	0x6c, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0xb2, 0x02, 0x20, 0x01, 0x28, 0x03, 0x3a,
-	0x01, 0x31, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34,
-	0x12, 0x29, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x18, 0xb3, 0x02, 0x20, 0x01, 0x28, 0x12, 0x3a, 0x01, 0x31, 0x52, 0x0d, 0x64, 0x65,
-	0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x0e, 0x64,
-	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0xb4, 0x02,
-	0x20, 0x01, 0x28, 0x04, 0x3a, 0x01, 0x31, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
-	0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2d, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
-	0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0xb5, 0x02, 0x20, 0x01, 0x28,
-	0x0f, 0x3a, 0x01, 0x31, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
-	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0xb6, 0x02, 0x20, 0x01, 0x28, 0x07, 0x3a,
-	0x01, 0x31, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x12, 0x2a, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x6c,
-	0x6f, 0x61, 0x74, 0x18, 0xb7, 0x02, 0x20, 0x01, 0x28, 0x02, 0x3a, 0x04, 0x33, 0x2e, 0x31, 0x34,
-	0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2d,
-	0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x36, 0x34, 0x18, 0xb8, 0x02, 0x20, 0x01, 0x28, 0x10, 0x3a, 0x01, 0x31, 0x52, 0x0f, 0x64, 0x65,
-	0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2b, 0x0a,
-	0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
-	0x18, 0xb9, 0x02, 0x20, 0x01, 0x28, 0x06, 0x3a, 0x01, 0x31, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61,
-	0x75, 0x6c, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2e, 0x0a, 0x0e, 0x64, 0x65,
-	0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0xba, 0x02, 0x20,
-	0x01, 0x28, 0x01, 0x3a, 0x06, 0x33, 0x2e, 0x31, 0x34, 0x31, 0x35, 0x52, 0x0d, 0x64, 0x65, 0x66,
-	0x61, 0x75, 0x6c, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x37, 0x0a, 0x0e, 0x64, 0x65,
-	0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0xbb, 0x02, 0x20,
-	0x01, 0x28, 0x09, 0x3a, 0x0f, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x22, 0x77, 0x6f, 0x72, 0x6c,
-	0x64, 0x21, 0x22, 0x0a, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x12, 0x3c, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x62,
-	0x79, 0x74, 0x65, 0x73, 0x18, 0xbc, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x3a, 0x16, 0x68, 0x65, 0x6c,
-	0x6c, 0x6f, 0x2c, 0x5c, 0x33, 0x33, 0x36, 0x5c, 0x32, 0x35, 0x35, 0x5c, 0x32, 0x37, 0x36, 0x5c,
-	0x33, 0x35, 0x37, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x79, 0x74, 0x65,
-	0x73, 0x12, 0x31, 0x0a, 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x7a, 0x65, 0x72,
-	0x6f, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0xde, 0x02, 0x20, 0x01, 0x28, 0x09, 0x3a,
-	0x00, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5a, 0x65, 0x72, 0x6f, 0x53, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x12, 0x2f, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f,
-	0x7a, 0x65, 0x72, 0x6f, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0xdf, 0x02, 0x20, 0x01, 0x28,
-	0x0c, 0x3a, 0x00, 0x52, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5a, 0x65, 0x72, 0x6f,
-	0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
-	0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x6e, 0x65, 0x67, 0x69, 0x6e, 0x66, 0x18, 0x90, 0x03,
-	0x20, 0x01, 0x28, 0x02, 0x3a, 0x04, 0x2d, 0x69, 0x6e, 0x66, 0x52, 0x12, 0x64, 0x65, 0x66, 0x61,
-	0x75, 0x6c, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x4e, 0x65, 0x67, 0x69, 0x6e, 0x66, 0x12, 0x36,
-	0x0a, 0x14, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f,
-	0x70, 0x6f, 0x73, 0x69, 0x6e, 0x66, 0x18, 0x91, 0x03, 0x20, 0x01, 0x28, 0x02, 0x3a, 0x03, 0x69,
-	0x6e, 0x66, 0x52, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74,
-	0x50, 0x6f, 0x73, 0x69, 0x6e, 0x66, 0x12, 0x30, 0x0a, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
-	0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x6e, 0x61, 0x6e, 0x18, 0x92, 0x03, 0x20, 0x01,
-	0x28, 0x02, 0x3a, 0x03, 0x6e, 0x61, 0x6e, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
-	0x46, 0x6c, 0x6f, 0x61, 0x74, 0x4e, 0x61, 0x6e, 0x12, 0x39, 0x0a, 0x15, 0x64, 0x65, 0x66, 0x61,
-	0x75, 0x6c, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x65, 0x67, 0x69, 0x6e,
-	0x66, 0x18, 0x93, 0x03, 0x20, 0x01, 0x28, 0x01, 0x3a, 0x04, 0x2d, 0x69, 0x6e, 0x66, 0x52, 0x13,
-	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x4e, 0x65, 0x67,
-	0x69, 0x6e, 0x66, 0x12, 0x38, 0x0a, 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x64,
-	0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x6e, 0x66, 0x18, 0x94, 0x03, 0x20,
-	0x01, 0x28, 0x01, 0x3a, 0x03, 0x69, 0x6e, 0x66, 0x52, 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
-	0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x6e, 0x66, 0x12, 0x32, 0x0a,
-	0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f,
-	0x6e, 0x61, 0x6e, 0x18, 0x95, 0x03, 0x20, 0x01, 0x28, 0x01, 0x3a, 0x03, 0x6e, 0x61, 0x6e, 0x52,
-	0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x4e, 0x61,
-	0x6e, 0x12, 0x63, 0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x18, 0xf4, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74,
-	0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33,
-	0x32, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x6c, 0x0a, 0x12, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xf5, 0x03, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c,
-	0x64, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x61, 0x70,
-	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74,
-	0x72, 0x79, 0x52, 0x10, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x12, 0x66, 0x0a, 0x10, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x36, 0x34, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0xf6, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x3b, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x65, 0x73,
-	0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65,
-	0x64, 0x36, 0x34, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6d, 0x61,
-	0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0a,
-	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0xd9, 0x04, 0x20, 0x01, 0x28,
-	0x08, 0x48, 0x00, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x4e,
-	0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0xda, 0x04, 0x20,
-	0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c,
-	0x64, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x45, 0x6e, 0x75,
-	0x6d, 0x48, 0x00, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x22,
-	0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0xdb, 0x04,
-	0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x49, 0x6e, 0x74,
-	0x33, 0x32, 0x12, 0x24, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x73, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x18, 0xdc, 0x04, 0x20, 0x01, 0x28, 0x11, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65,
-	0x6f, 0x66, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x24, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f,
-	0x66, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0xdd, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x48,
-	0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x22,
-	0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0xde, 0x04,
-	0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x49, 0x6e, 0x74,
-	0x36, 0x34, 0x12, 0x24, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x73, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x18, 0xdf, 0x04, 0x20, 0x01, 0x28, 0x12, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65,
-	0x6f, 0x66, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x24, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f,
-	0x66, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0xe0, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48,
-	0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x28,
-	0x0a, 0x0e, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
-	0x18, 0xe1, 0x04, 0x20, 0x01, 0x28, 0x0f, 0x48, 0x00, 0x52, 0x0d, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
-	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x26, 0x0a, 0x0d, 0x6f, 0x6e, 0x65, 0x6f,
-	0x66, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0xe2, 0x04, 0x20, 0x01, 0x28, 0x07,
-	0x48, 0x00, 0x52, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
-	0x12, 0x22, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18,
-	0xe3, 0x04, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x46,
-	0x6c, 0x6f, 0x61, 0x74, 0x12, 0x28, 0x0a, 0x0e, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x73, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0xe4, 0x04, 0x20, 0x01, 0x28, 0x10, 0x48, 0x00, 0x52,
-	0x0d, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x26,
-	0x0a, 0x0d, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18,
-	0xe5, 0x04, 0x20, 0x01, 0x28, 0x06, 0x48, 0x00, 0x52, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x46,
-	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x24, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f,
-	0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0xe6, 0x04, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52,
-	0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x24, 0x0a, 0x0c,
-	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0xe7, 0x04, 0x20,
-	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x53, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x12, 0x22, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x62, 0x79, 0x74, 0x65,
-	0x73, 0x18, 0xe8, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f,
-	0x66, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x57, 0x0a, 0x0d, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xe9, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x65, 0x73, 0x74,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48,
-	0x00, 0x52, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
-	0x55, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0xea, 0x04,
-	0x20, 0x01, 0x28, 0x0a, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x46, 0x69, 0x65,
-	0x6c, 0x64, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4f, 0x6e,
-	0x65, 0x6f, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f,
-	0x66, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x30, 0x0a, 0x11, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f,
-	0x6c, 0x61, 0x72, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x18, 0xff, 0xff, 0xff, 0xff,
-	0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4c, 0x61,
-	0x72, 0x67, 0x65, 0x73, 0x74, 0x54, 0x61, 0x67, 0x12, 0x21, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f,
-	0x66, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x31, 0x18, 0xbc, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01,
-	0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x54, 0x77, 0x6f, 0x31, 0x12, 0x21, 0x0a, 0x0b, 0x6f,
-	0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x32, 0x18, 0xbd, 0x05, 0x20, 0x01, 0x28,
-	0x03, 0x48, 0x01, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x54, 0x77, 0x6f, 0x32, 0x1a, 0x36,
-	0x0a, 0x0d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12,
-	0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x67, 0x72, 0x6f, 0x75,
-	0x70, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x36, 0x0a, 0x0d, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72,
-	0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69,
-	0x72, 0x65, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x77, 0x20, 0x02, 0x28, 0x09, 0x52,
-	0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x37,
-	0x0a, 0x0d, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12,
-	0x26, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75,
-	0x70, 0x18, 0xdb, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e,
-	0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
-	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
-	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x74, 0x0a, 0x15, 0x4d, 0x61, 0x70,
-	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74,
-	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x03, 0x6b, 0x65, 0x79, 0x12, 0x45, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x46, 0x69, 0x65, 0x6c,
-	0x64, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
-	0x6f, 0x0a, 0x13, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x75,
-	0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x06, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x42, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e,
-	0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
-	0x1a, 0x39, 0x0a, 0x0a, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2b,
-	0x0a, 0x11, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x18, 0xeb, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x6e, 0x65, 0x6f,
-	0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x1a, 0x09, 0x0a, 0x07, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x19, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x08,
-	0x0a, 0x04, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x4e, 0x45, 0x10,
-	0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x42, 0x0b, 0x0a, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x74, 0x77, 0x6f, 0x4a, 0x06, 0x08,
-	0x90, 0x4e, 0x10, 0x91, 0x4e, 0x4a, 0x06, 0x08, 0x91, 0x4e, 0x10, 0x92, 0x4e, 0x52, 0x0c, 0x54,
-	0x45, 0x4e, 0x5f, 0x54, 0x48, 0x4f, 0x55, 0x53, 0x41, 0x4e, 0x44, 0x52, 0x14, 0x54, 0x45, 0x4e,
-	0x5f, 0x54, 0x48, 0x4f, 0x55, 0x53, 0x41, 0x4e, 0x44, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x4f, 0x4e,
-	0x45, 0x42, 0x3e, 0x5a, 0x3c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61,
-	0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
-	0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67,
-	0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x32,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescData = file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_proto2_fields_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_cmd_protoc_gen_go_testdata_proto2_fields_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
-var file_cmd_protoc_gen_go_testdata_proto2_fields_proto_goTypes = []interface{}{
-	(FieldTestMessage_Enum)(0),             // 0: goproto.protoc.proto2.FieldTestMessage.Enum
-	(*FieldTestMessage)(nil),               // 1: goproto.protoc.proto2.FieldTestMessage
-	(*FieldTestMessage_OptionalGroup)(nil), // 2: goproto.protoc.proto2.FieldTestMessage.OptionalGroup
-	(*FieldTestMessage_RequiredGroup)(nil), // 3: goproto.protoc.proto2.FieldTestMessage.RequiredGroup
-	(*FieldTestMessage_RepeatedGroup)(nil), // 4: goproto.protoc.proto2.FieldTestMessage.RepeatedGroup
-	nil,                                    // 5: goproto.protoc.proto2.FieldTestMessage.MapInt32Int64Entry
-	nil,                                    // 6: goproto.protoc.proto2.FieldTestMessage.MapStringMessageEntry
-	nil,                                    // 7: goproto.protoc.proto2.FieldTestMessage.MapFixed64EnumEntry
-	(*FieldTestMessage_OneofGroup)(nil),    // 8: goproto.protoc.proto2.FieldTestMessage.OneofGroup
-	(*FieldTestMessage_Message)(nil),       // 9: goproto.protoc.proto2.FieldTestMessage.Message
-}
-var file_cmd_protoc_gen_go_testdata_proto2_fields_proto_depIdxs = []int32{
-	0,  // 0: goproto.protoc.proto2.FieldTestMessage.optional_enum:type_name -> goproto.protoc.proto2.FieldTestMessage.Enum
-	9,  // 1: goproto.protoc.proto2.FieldTestMessage.optional_Message:type_name -> goproto.protoc.proto2.FieldTestMessage.Message
-	2,  // 2: goproto.protoc.proto2.FieldTestMessage.optionalgroup:type_name -> goproto.protoc.proto2.FieldTestMessage.OptionalGroup
-	0,  // 3: goproto.protoc.proto2.FieldTestMessage.required_enum:type_name -> goproto.protoc.proto2.FieldTestMessage.Enum
-	9,  // 4: goproto.protoc.proto2.FieldTestMessage.required_Message:type_name -> goproto.protoc.proto2.FieldTestMessage.Message
-	3,  // 5: goproto.protoc.proto2.FieldTestMessage.requiredgroup:type_name -> goproto.protoc.proto2.FieldTestMessage.RequiredGroup
-	0,  // 6: goproto.protoc.proto2.FieldTestMessage.repeated_enum:type_name -> goproto.protoc.proto2.FieldTestMessage.Enum
-	9,  // 7: goproto.protoc.proto2.FieldTestMessage.repeated_Message:type_name -> goproto.protoc.proto2.FieldTestMessage.Message
-	4,  // 8: goproto.protoc.proto2.FieldTestMessage.repeatedgroup:type_name -> goproto.protoc.proto2.FieldTestMessage.RepeatedGroup
-	0,  // 9: goproto.protoc.proto2.FieldTestMessage.default_enum:type_name -> goproto.protoc.proto2.FieldTestMessage.Enum
-	5,  // 10: goproto.protoc.proto2.FieldTestMessage.map_int32_int64:type_name -> goproto.protoc.proto2.FieldTestMessage.MapInt32Int64Entry
-	6,  // 11: goproto.protoc.proto2.FieldTestMessage.map_string_message:type_name -> goproto.protoc.proto2.FieldTestMessage.MapStringMessageEntry
-	7,  // 12: goproto.protoc.proto2.FieldTestMessage.map_fixed64_enum:type_name -> goproto.protoc.proto2.FieldTestMessage.MapFixed64EnumEntry
-	0,  // 13: goproto.protoc.proto2.FieldTestMessage.oneof_enum:type_name -> goproto.protoc.proto2.FieldTestMessage.Enum
-	9,  // 14: goproto.protoc.proto2.FieldTestMessage.oneof_Message:type_name -> goproto.protoc.proto2.FieldTestMessage.Message
-	8,  // 15: goproto.protoc.proto2.FieldTestMessage.oneofgroup:type_name -> goproto.protoc.proto2.FieldTestMessage.OneofGroup
-	9,  // 16: goproto.protoc.proto2.FieldTestMessage.MapStringMessageEntry.value:type_name -> goproto.protoc.proto2.FieldTestMessage.Message
-	0,  // 17: goproto.protoc.proto2.FieldTestMessage.MapFixed64EnumEntry.value:type_name -> goproto.protoc.proto2.FieldTestMessage.Enum
-	18, // [18:18] is the sub-list for method output_type
-	18, // [18:18] is the sub-list for method input_type
-	18, // [18:18] is the sub-list for extension type_name
-	18, // [18:18] is the sub-list for extension extendee
-	0,  // [0:18] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_proto2_fields_proto_init() }
-func file_cmd_protoc_gen_go_testdata_proto2_fields_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_proto2_fields_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_proto2_fields_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FieldTestMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_proto2_fields_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FieldTestMessage_OptionalGroup); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_proto2_fields_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FieldTestMessage_RequiredGroup); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_proto2_fields_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FieldTestMessage_RepeatedGroup); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_proto2_fields_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FieldTestMessage_OneofGroup); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_proto2_fields_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FieldTestMessage_Message); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	file_cmd_protoc_gen_go_testdata_proto2_fields_proto_msgTypes[0].OneofWrappers = []interface{}{
-		(*FieldTestMessage_OneofBool)(nil),
-		(*FieldTestMessage_OneofEnum)(nil),
-		(*FieldTestMessage_OneofInt32)(nil),
-		(*FieldTestMessage_OneofSint32)(nil),
-		(*FieldTestMessage_OneofUint32)(nil),
-		(*FieldTestMessage_OneofInt64)(nil),
-		(*FieldTestMessage_OneofSint64)(nil),
-		(*FieldTestMessage_OneofUint64)(nil),
-		(*FieldTestMessage_OneofSfixed32)(nil),
-		(*FieldTestMessage_OneofFixed32)(nil),
-		(*FieldTestMessage_OneofFloat)(nil),
-		(*FieldTestMessage_OneofSfixed64)(nil),
-		(*FieldTestMessage_OneofFixed64)(nil),
-		(*FieldTestMessage_OneofDouble)(nil),
-		(*FieldTestMessage_OneofString)(nil),
-		(*FieldTestMessage_OneofBytes)(nil),
-		(*FieldTestMessage_Oneof_Message)(nil),
-		(*FieldTestMessage_Oneofgroup)(nil),
-		(*FieldTestMessage_OneofLargestTag)(nil),
-		(*FieldTestMessage_OneofTwo_1)(nil),
-		(*FieldTestMessage_OneofTwo_2)(nil),
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDesc,
-			NumEnums:      1,
-			NumMessages:   9,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_proto2_fields_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_proto2_fields_proto_depIdxs,
-		EnumInfos:         file_cmd_protoc_gen_go_testdata_proto2_fields_proto_enumTypes,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_proto2_fields_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_proto2_fields_proto = out.File
-	file_cmd_protoc_gen_go_testdata_proto2_fields_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_proto2_fields_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_proto2_fields_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/proto2/fields.proto b/cmd/protoc-gen-go/testdata/proto2/fields.proto
deleted file mode 100644
index f3c4c91..0000000
--- a/cmd/protoc-gen-go/testdata/proto2/fields.proto
+++ /dev/null
@@ -1,143 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.protoc.proto2;
-
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/proto2";
-
-message FieldTestMessage {
-  optional bool     optional_bool     = 1;
-  optional Enum     optional_enum     = 2;
-  optional int32    optional_int32    = 3;
-  optional sint32   optional_sint32   = 4;
-  optional uint32   optional_uint32   = 5;
-  optional int64    optional_int64    = 6;
-  optional sint64   optional_sint64   = 7;
-  optional uint64   optional_uint64   = 8;
-  optional sfixed32 optional_sfixed32 = 9;
-  optional fixed32  optional_fixed32  = 10;
-  optional float    optional_float    = 11;
-  optional sfixed64 optional_sfixed64 = 12;
-  optional fixed64  optional_fixed64  = 13;
-  optional double   optional_double   = 14;
-  optional string   optional_string   = 15;
-  optional bytes    optional_bytes    = 16;
-  optional Message  optional_Message  = 17;
-  optional group OptionalGroup = 18 {
-    optional string optional_group = 19;
-  }
-
-  required bool     required_bool     = 101;
-  required Enum     required_enum     = 102;
-  required int32    required_int32    = 103;
-  required sint32   required_sint32   = 104;
-  required uint32   required_uint32   = 105;
-  required int64    required_int64    = 106;
-  required sint64   required_sint64   = 107;
-  required uint64   required_uint64   = 108;
-  required sfixed32 required_sfixed32 = 109;
-  required fixed32  required_fixed32  = 110;
-  required float    required_float    = 111;
-  required sfixed64 required_sfixed64 = 112;
-  required fixed64  required_fixed64  = 113;
-  required double   required_double   = 114;
-  required string   required_string   = 115;
-  required bytes    required_bytes    = 116;
-  required Message  required_Message  = 117;
-  required group RequiredGroup = 118 {
-    required string required_group = 119;
-  }
-
-  repeated bool     repeated_bool     = 201;
-  repeated Enum     repeated_enum     = 202;
-  repeated int32    repeated_int32    = 203;
-  repeated sint32   repeated_sint32   = 204;
-  repeated uint32   repeated_uint32   = 205;
-  repeated int64    repeated_int64    = 206;
-  repeated sint64   repeated_sint64   = 207;
-  repeated uint64   repeated_uint64   = 208;
-  repeated sfixed32 repeated_sfixed32 = 209;
-  repeated fixed32  repeated_fixed32  = 210;
-  repeated float    repeated_float    = 211;
-  repeated sfixed64 repeated_sfixed64 = 212;
-  repeated fixed64  repeated_fixed64  = 213;
-  repeated double   repeated_double   = 214;
-  repeated string   repeated_string   = 215;
-  repeated bytes    repeated_bytes    = 216;
-  repeated Message  repeated_Message  = 217;
-  repeated group RepeatedGroup = 218 {
-    repeated string repeated_group = 219;
-  }
-
-  optional bool     default_bool     = 301 [default=true];
-  optional Enum     default_enum     = 302 [default=ONE];
-  optional int32    default_int32    = 303 [default=1];
-  optional sint32   default_sint32   = 304 [default=1];
-  optional uint32   default_uint32   = 305 [default=1];
-  optional int64    default_int64    = 306 [default=1];
-  optional sint64   default_sint64   = 307 [default=1];
-  optional uint64   default_uint64   = 308 [default=1];
-  optional sfixed32 default_sfixed32 = 309 [default=1];
-  optional fixed32  default_fixed32  = 310 [default=1];
-  optional float    default_float    = 311 [default=3.14];
-  optional sfixed64 default_sfixed64 = 312 [default=1];
-  optional fixed64  default_fixed64  = 313 [default=1];
-  optional double   default_double   = 314 [default=3.1415];
-  optional string   default_string   = 315 [default="hello,\"world!\"\n"];
-  optional bytes    default_bytes    = 316 [default="hello,\xde\xad\xbe\xef"];
-
-  optional string default_zero_string = 350 [default=""];
-  optional bytes  default_zero_bytes  = 351 [default=""];
-
-  optional float  default_float_neginf  = 400 [default=-inf];
-  optional float  default_float_posinf  = 401 [default=inf];
-  optional float  default_float_nan     = 402 [default=nan];
-  optional double default_double_neginf = 403 [default=-inf];
-  optional double default_double_posinf = 404 [default=inf];
-  optional double default_double_nan    = 405 [default=nan];
-
-  map<int32, int64>   map_int32_int64    = 500;
-  map<string,Message> map_string_message = 501;
-  map<fixed64,Enum>   map_fixed64_enum   = 502;
-
-  oneof oneof_field {
-    bool     oneof_bool     = 601;
-    Enum     oneof_enum     = 602;
-    int32    oneof_int32    = 603;
-    sint32   oneof_sint32   = 604;
-    uint32   oneof_uint32   = 605;
-    int64    oneof_int64    = 606;
-    sint64   oneof_sint64   = 607;
-    uint64   oneof_uint64   = 608;
-    sfixed32 oneof_sfixed32 = 609;
-    fixed32  oneof_fixed32  = 610;
-    float    oneof_float    = 611;
-    sfixed64 oneof_sfixed64 = 612;
-    fixed64  oneof_fixed64  = 613;
-    double   oneof_double   = 614;
-    string   oneof_string   = 615;
-    bytes    oneof_bytes    = 616;
-    Message  oneof_Message  = 617;
-    group OneofGroup = 618 {
-      optional string oneof_group_field = 619;
-    }
-    int32 oneof_largest_tag = 536870911;
-  }
-
-  oneof oneof_two {
-    int32 oneof_two_1 = 700;
-    int64 oneof_two_2 = 701;
-  }
-
-  enum Enum {
-    ZERO = 0;
-    ONE = 1;
-  }
-  message Message {}
-
-  reserved 10000, 10001;
-  reserved "TEN_THOUSAND", "TEN_THOUSAND_AND_ONE";
-}
diff --git a/cmd/protoc-gen-go/testdata/proto2/nested_messages.pb.go b/cmd/protoc-gen-go/testdata/proto2/nested_messages.pb.go
deleted file mode 100644
index 9e7137a..0000000
--- a/cmd/protoc-gen-go/testdata/proto2/nested_messages.pb.go
+++ /dev/null
@@ -1,274 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/proto2/nested_messages.proto
-
-package proto2
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Layer1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	L2 *Layer1_Layer2        `protobuf:"bytes,1,opt,name=l2" json:"l2,omitempty"`
-	L3 *Layer1_Layer2_Layer3 `protobuf:"bytes,2,opt,name=l3" json:"l3,omitempty"`
-}
-
-func (x *Layer1) Reset() {
-	*x = Layer1{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Layer1) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Layer1) ProtoMessage() {}
-
-func (x *Layer1) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Layer1.ProtoReflect.Descriptor instead.
-func (*Layer1) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Layer1) GetL2() *Layer1_Layer2 {
-	if x != nil {
-		return x.L2
-	}
-	return nil
-}
-
-func (x *Layer1) GetL3() *Layer1_Layer2_Layer3 {
-	if x != nil {
-		return x.L3
-	}
-	return nil
-}
-
-type Layer1_Layer2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	L3 *Layer1_Layer2_Layer3 `protobuf:"bytes,1,opt,name=l3" json:"l3,omitempty"`
-}
-
-func (x *Layer1_Layer2) Reset() {
-	*x = Layer1_Layer2{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Layer1_Layer2) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Layer1_Layer2) ProtoMessage() {}
-
-func (x *Layer1_Layer2) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Layer1_Layer2.ProtoReflect.Descriptor instead.
-func (*Layer1_Layer2) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDescGZIP(), []int{0, 0}
-}
-
-func (x *Layer1_Layer2) GetL3() *Layer1_Layer2_Layer3 {
-	if x != nil {
-		return x.L3
-	}
-	return nil
-}
-
-type Layer1_Layer2_Layer3 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Layer1_Layer2_Layer3) Reset() {
-	*x = Layer1_Layer2_Layer3{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Layer1_Layer2_Layer3) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Layer1_Layer2_Layer3) ProtoMessage() {}
-
-func (x *Layer1_Layer2_Layer3) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Layer1_Layer2_Layer3.ProtoReflect.Descriptor instead.
-func (*Layer1_Layer2_Layer3) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDescGZIP(), []int{0, 0, 0}
-}
-
-var File_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDesc = []byte{
-	0x0a, 0x37, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x32, 0x2f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32,
-	0x22, 0xcc, 0x01, 0x0a, 0x06, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x31, 0x12, 0x34, 0x0a, 0x02, 0x6c,
-	0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e,
-	0x4c, 0x61, 0x79, 0x65, 0x72, 0x31, 0x2e, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x32, 0x52, 0x02, 0x6c,
-	0x32, 0x12, 0x3b, 0x0a, 0x02, 0x6c, 0x33, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x31, 0x2e, 0x4c, 0x61, 0x79,
-	0x65, 0x72, 0x32, 0x2e, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x33, 0x52, 0x02, 0x6c, 0x33, 0x1a, 0x4f,
-	0x0a, 0x06, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x32, 0x12, 0x3b, 0x0a, 0x02, 0x6c, 0x33, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4c, 0x61, 0x79,
-	0x65, 0x72, 0x31, 0x2e, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x32, 0x2e, 0x4c, 0x61, 0x79, 0x65, 0x72,
-	0x33, 0x52, 0x02, 0x6c, 0x33, 0x1a, 0x08, 0x0a, 0x06, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x33, 0x42,
-	0x3e, 0x5a, 0x3c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
-	0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d,
-	0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f,
-	0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDescData = file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
-var file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_goTypes = []interface{}{
-	(*Layer1)(nil),               // 0: goproto.protoc.proto2.Layer1
-	(*Layer1_Layer2)(nil),        // 1: goproto.protoc.proto2.Layer1.Layer2
-	(*Layer1_Layer2_Layer3)(nil), // 2: goproto.protoc.proto2.Layer1.Layer2.Layer3
-}
-var file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_depIdxs = []int32{
-	1, // 0: goproto.protoc.proto2.Layer1.l2:type_name -> goproto.protoc.proto2.Layer1.Layer2
-	2, // 1: goproto.protoc.proto2.Layer1.l3:type_name -> goproto.protoc.proto2.Layer1.Layer2.Layer3
-	2, // 2: goproto.protoc.proto2.Layer1.Layer2.l3:type_name -> goproto.protoc.proto2.Layer1.Layer2.Layer3
-	3, // [3:3] is the sub-list for method output_type
-	3, // [3:3] is the sub-list for method input_type
-	3, // [3:3] is the sub-list for extension type_name
-	3, // [3:3] is the sub-list for extension extendee
-	0, // [0:3] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_init() }
-func file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Layer1); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Layer1_Layer2); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Layer1_Layer2_Layer3); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   3,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_depIdxs,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto = out.File
-	file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_proto2_nested_messages_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/proto2/nested_messages.proto b/cmd/protoc-gen-go/testdata/proto2/nested_messages.proto
deleted file mode 100644
index e42af75..0000000
--- a/cmd/protoc-gen-go/testdata/proto2/nested_messages.proto
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.protoc.proto2;
-
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/proto2";
-
-message Layer1 {
-  message Layer2 {
-    message Layer3 {
-    }
-    optional Layer3 l3 = 1;
-  }
-  optional Layer2 l2 = 1;
-  optional Layer2.Layer3 l3 = 2;
-}
diff --git a/cmd/protoc-gen-go/testdata/proto2/proto2.pb.go b/cmd/protoc-gen-go/testdata/proto2/proto2.pb.go
deleted file mode 100644
index 5a4f97d..0000000
--- a/cmd/protoc-gen-go/testdata/proto2/proto2.pb.go
+++ /dev/null
@@ -1,153 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/proto2/proto2.proto
-
-package proto2
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Message struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	I32 *int32   `protobuf:"varint,1,opt,name=i32" json:"i32,omitempty"`
-	M   *Message `protobuf:"bytes,2,opt,name=m" json:"m,omitempty"`
-}
-
-func (x *Message) Reset() {
-	*x = Message{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message) ProtoMessage() {}
-
-func (x *Message) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message.ProtoReflect.Descriptor instead.
-func (*Message) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Message) GetI32() int32 {
-	if x != nil && x.I32 != nil {
-		return *x.I32
-	}
-	return 0
-}
-
-func (x *Message) GetM() *Message {
-	if x != nil {
-		return x.M
-	}
-	return nil
-}
-
-var File_cmd_protoc_gen_go_testdata_proto2_proto2_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDesc = []byte{
-	0x0a, 0x2e, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x32, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x12, 0x15, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x22, 0x49, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x33, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x03, 0x69, 0x33, 0x32, 0x12, 0x2c, 0x0a, 0x01, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x1e, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x01, 0x6d, 0x42, 0x3e, 0x5a, 0x3c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c,
-	0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d,
-	0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x32,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDescData = file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_goTypes = []interface{}{
-	(*Message)(nil), // 0: goproto.protoc.proto2.Message
-}
-var file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_depIdxs = []int32{
-	0, // 0: goproto.protoc.proto2.Message.m:type_name -> goproto.protoc.proto2.Message
-	1, // [1:1] is the sub-list for method output_type
-	1, // [1:1] is the sub-list for method input_type
-	1, // [1:1] is the sub-list for extension type_name
-	1, // [1:1] is the sub-list for extension extendee
-	0, // [0:1] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_init() }
-func file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_proto2_proto2_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_depIdxs,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_proto2_proto2_proto = out.File
-	file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_proto2_proto2_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/proto2/proto2.proto b/cmd/protoc-gen-go/testdata/proto2/proto2.proto
deleted file mode 100644
index 55e052e..0000000
--- a/cmd/protoc-gen-go/testdata/proto2/proto2.proto
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.protoc.proto2;
-
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/proto2";
-
-message Message {
-  optional int32 i32 = 1;
-
-  optional Message m = 2;
-}
diff --git a/cmd/protoc-gen-go/testdata/proto3/enum.pb.go b/cmd/protoc-gen-go/testdata/proto3/enum.pb.go
deleted file mode 100644
index 2ff0fee..0000000
--- a/cmd/protoc-gen-go/testdata/proto3/enum.pb.go
+++ /dev/null
@@ -1,130 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/proto3/enum.proto
-
-package proto3
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Enum int32
-
-const (
-	Enum_ZERO Enum = 0
-	Enum_ONE  Enum = 1
-	Enum_TWO  Enum = 2
-)
-
-// Enum value maps for Enum.
-var (
-	Enum_name = map[int32]string{
-		0: "ZERO",
-		1: "ONE",
-		2: "TWO",
-	}
-	Enum_value = map[string]int32{
-		"ZERO": 0,
-		"ONE":  1,
-		"TWO":  2,
-	}
-)
-
-func (x Enum) Enum() *Enum {
-	p := new(Enum)
-	*p = x
-	return p
-}
-
-func (x Enum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum) Descriptor() protoreflect.EnumDescriptor {
-	return file_cmd_protoc_gen_go_testdata_proto3_enum_proto_enumTypes[0].Descriptor()
-}
-
-func (Enum) Type() protoreflect.EnumType {
-	return &file_cmd_protoc_gen_go_testdata_proto3_enum_proto_enumTypes[0]
-}
-
-func (x Enum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Enum.Descriptor instead.
-func (Enum) EnumDescriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDescGZIP(), []int{0}
-}
-
-var File_cmd_protoc_gen_go_testdata_proto3_enum_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDesc = []byte{
-	0x0a, 0x2c, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x33, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2a, 0x22, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x08, 0x0a,
-	0x04, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x4e, 0x45, 0x10, 0x01,
-	0x12, 0x07, 0x0a, 0x03, 0x54, 0x57, 0x4f, 0x10, 0x02, 0x42, 0x3e, 0x5a, 0x3c, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61,
-	0x74, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x33,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDescData = file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_proto3_enum_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_cmd_protoc_gen_go_testdata_proto3_enum_proto_goTypes = []interface{}{
-	(Enum)(0), // 0: goproto.protoc.proto3.Enum
-}
-var file_cmd_protoc_gen_go_testdata_proto3_enum_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_proto3_enum_proto_init() }
-func file_cmd_protoc_gen_go_testdata_proto3_enum_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_proto3_enum_proto != nil {
-		return
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDesc,
-			NumEnums:      1,
-			NumMessages:   0,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_proto3_enum_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_proto3_enum_proto_depIdxs,
-		EnumInfos:         file_cmd_protoc_gen_go_testdata_proto3_enum_proto_enumTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_proto3_enum_proto = out.File
-	file_cmd_protoc_gen_go_testdata_proto3_enum_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_proto3_enum_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_proto3_enum_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/proto3/enum.proto b/cmd/protoc-gen-go/testdata/proto3/enum.proto
deleted file mode 100644
index 595af3d..0000000
--- a/cmd/protoc-gen-go/testdata/proto3/enum.proto
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-
-package goproto.protoc.proto3;
-
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/proto3";
-
-enum Enum {
-  ZERO = 0;
-  ONE = 1;
-  TWO = 2;
-}
diff --git a/cmd/protoc-gen-go/testdata/proto3/fields.pb.go b/cmd/protoc-gen-go/testdata/proto3/fields.pb.go
deleted file mode 100644
index cba44b6..0000000
--- a/cmd/protoc-gen-go/testdata/proto3/fields.pb.go
+++ /dev/null
@@ -1,678 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: cmd/protoc-gen-go/testdata/proto3/fields.proto
-
-package proto3
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type FieldTestMessage_Enum int32
-
-const (
-	FieldTestMessage_ZERO FieldTestMessage_Enum = 0
-)
-
-// Enum value maps for FieldTestMessage_Enum.
-var (
-	FieldTestMessage_Enum_name = map[int32]string{
-		0: "ZERO",
-	}
-	FieldTestMessage_Enum_value = map[string]int32{
-		"ZERO": 0,
-	}
-)
-
-func (x FieldTestMessage_Enum) Enum() *FieldTestMessage_Enum {
-	p := new(FieldTestMessage_Enum)
-	*p = x
-	return p
-}
-
-func (x FieldTestMessage_Enum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (FieldTestMessage_Enum) Descriptor() protoreflect.EnumDescriptor {
-	return file_cmd_protoc_gen_go_testdata_proto3_fields_proto_enumTypes[0].Descriptor()
-}
-
-func (FieldTestMessage_Enum) Type() protoreflect.EnumType {
-	return &file_cmd_protoc_gen_go_testdata_proto3_fields_proto_enumTypes[0]
-}
-
-func (x FieldTestMessage_Enum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use FieldTestMessage_Enum.Descriptor instead.
-func (FieldTestMessage_Enum) EnumDescriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDescGZIP(), []int{0, 0}
-}
-
-type FieldTestMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OptionalBool     string                               `protobuf:"bytes,1,opt,name=optional_bool,json=optionalBool,proto3" json:"optional_bool,omitempty"`
-	OptionalEnum     FieldTestMessage_Enum                `protobuf:"varint,2,opt,name=optional_enum,json=optionalEnum,proto3,enum=goproto.protoc.proto3.FieldTestMessage_Enum" json:"optional_enum,omitempty"`
-	OptionalInt32    int32                                `protobuf:"varint,3,opt,name=optional_int32,json=optionalInt32,proto3" json:"optional_int32,omitempty"`
-	OptionalSint32   int32                                `protobuf:"zigzag32,4,opt,name=optional_sint32,json=optionalSint32,proto3" json:"optional_sint32,omitempty"`
-	OptionalUint32   uint32                               `protobuf:"varint,5,opt,name=optional_uint32,json=optionalUint32,proto3" json:"optional_uint32,omitempty"`
-	OptionalInt64    int64                                `protobuf:"varint,6,opt,name=optional_int64,json=optionalInt64,proto3" json:"optional_int64,omitempty"`
-	OptionalSint64   int64                                `protobuf:"zigzag64,7,opt,name=optional_sint64,json=optionalSint64,proto3" json:"optional_sint64,omitempty"`
-	OptionalUint64   uint64                               `protobuf:"varint,8,opt,name=optional_uint64,json=optionalUint64,proto3" json:"optional_uint64,omitempty"`
-	OptionalSfixed32 int32                                `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32,proto3" json:"optional_sfixed32,omitempty"`
-	OptionalFixed32  uint32                               `protobuf:"fixed32,10,opt,name=optional_fixed32,json=optionalFixed32,proto3" json:"optional_fixed32,omitempty"`
-	OptionalFloat    float32                              `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat,proto3" json:"optional_float,omitempty"`
-	OptionalSfixed64 int64                                `protobuf:"fixed64,12,opt,name=optional_sfixed64,json=optionalSfixed64,proto3" json:"optional_sfixed64,omitempty"`
-	OptionalFixed64  uint64                               `protobuf:"fixed64,13,opt,name=optional_fixed64,json=optionalFixed64,proto3" json:"optional_fixed64,omitempty"`
-	OptionalDouble   float64                              `protobuf:"fixed64,14,opt,name=optional_double,json=optionalDouble,proto3" json:"optional_double,omitempty"`
-	OptionalString   string                               `protobuf:"bytes,15,opt,name=optional_string,json=optionalString,proto3" json:"optional_string,omitempty"`
-	OptionalBytes    []byte                               `protobuf:"bytes,16,opt,name=optional_bytes,json=optionalBytes,proto3" json:"optional_bytes,omitempty"`
-	Optional_Message *FieldTestMessage_Message            `protobuf:"bytes,17,opt,name=optional_Message,json=optionalMessage,proto3" json:"optional_Message,omitempty"`
-	RepeatedBool     []bool                               `protobuf:"varint,201,rep,packed,name=repeated_bool,json=repeatedBool,proto3" json:"repeated_bool,omitempty"`
-	RepeatedEnum     []FieldTestMessage_Enum              `protobuf:"varint,202,rep,packed,name=repeated_enum,json=repeatedEnum,proto3,enum=goproto.protoc.proto3.FieldTestMessage_Enum" json:"repeated_enum,omitempty"`
-	RepeatedInt32    []int32                              `protobuf:"varint,203,rep,packed,name=repeated_int32,json=repeatedInt32,proto3" json:"repeated_int32,omitempty"`
-	RepeatedSint32   []int32                              `protobuf:"zigzag32,204,rep,packed,name=repeated_sint32,json=repeatedSint32,proto3" json:"repeated_sint32,omitempty"`
-	RepeatedUint32   []uint32                             `protobuf:"varint,205,rep,packed,name=repeated_uint32,json=repeatedUint32,proto3" json:"repeated_uint32,omitempty"`
-	RepeatedInt64    []int64                              `protobuf:"varint,206,rep,packed,name=repeated_int64,json=repeatedInt64,proto3" json:"repeated_int64,omitempty"`
-	RepeatedSint64   []int64                              `protobuf:"zigzag64,207,rep,packed,name=repeated_sint64,json=repeatedSint64,proto3" json:"repeated_sint64,omitempty"`
-	RepeatedUint64   []uint64                             `protobuf:"varint,208,rep,packed,name=repeated_uint64,json=repeatedUint64,proto3" json:"repeated_uint64,omitempty"`
-	RepeatedSfixed32 []int32                              `protobuf:"fixed32,209,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32,proto3" json:"repeated_sfixed32,omitempty"`
-	RepeatedFixed32  []uint32                             `protobuf:"fixed32,210,rep,packed,name=repeated_fixed32,json=repeatedFixed32,proto3" json:"repeated_fixed32,omitempty"`
-	RepeatedFloat    []float32                            `protobuf:"fixed32,211,rep,packed,name=repeated_float,json=repeatedFloat,proto3" json:"repeated_float,omitempty"`
-	RepeatedSfixed64 []int64                              `protobuf:"fixed64,212,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64,proto3" json:"repeated_sfixed64,omitempty"`
-	RepeatedFixed64  []uint64                             `protobuf:"fixed64,213,rep,packed,name=repeated_fixed64,json=repeatedFixed64,proto3" json:"repeated_fixed64,omitempty"`
-	RepeatedDouble   []float64                            `protobuf:"fixed64,214,rep,packed,name=repeated_double,json=repeatedDouble,proto3" json:"repeated_double,omitempty"`
-	RepeatedString   []string                             `protobuf:"bytes,215,rep,name=repeated_string,json=repeatedString,proto3" json:"repeated_string,omitempty"`
-	RepeatedBytes    [][]byte                             `protobuf:"bytes,216,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"`
-	Repeated_Message []*FieldTestMessage_Message          `protobuf:"bytes,217,rep,name=repeated_Message,json=repeatedMessage,proto3" json:"repeated_Message,omitempty"`
-	MapInt32Int64    map[int32]int64                      `protobuf:"bytes,500,rep,name=map_int32_int64,json=mapInt32Int64,proto3" json:"map_int32_int64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapStringMessage map[string]*FieldTestMessage_Message `protobuf:"bytes,501,rep,name=map_string_message,json=mapStringMessage,proto3" json:"map_string_message,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapFixed64Enum   map[uint64]FieldTestMessage_Enum     `protobuf:"bytes,502,rep,name=map_fixed64_enum,json=mapFixed64Enum,proto3" json:"map_fixed64_enum,omitempty" protobuf_key:"fixed64,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=goproto.protoc.proto3.FieldTestMessage_Enum"`
-}
-
-func (x *FieldTestMessage) Reset() {
-	*x = FieldTestMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_proto3_fields_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *FieldTestMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FieldTestMessage) ProtoMessage() {}
-
-func (x *FieldTestMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_proto3_fields_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use FieldTestMessage.ProtoReflect.Descriptor instead.
-func (*FieldTestMessage) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *FieldTestMessage) GetOptionalBool() string {
-	if x != nil {
-		return x.OptionalBool
-	}
-	return ""
-}
-
-func (x *FieldTestMessage) GetOptionalEnum() FieldTestMessage_Enum {
-	if x != nil {
-		return x.OptionalEnum
-	}
-	return FieldTestMessage_ZERO
-}
-
-func (x *FieldTestMessage) GetOptionalInt32() int32 {
-	if x != nil {
-		return x.OptionalInt32
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalSint32() int32 {
-	if x != nil {
-		return x.OptionalSint32
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalUint32() uint32 {
-	if x != nil {
-		return x.OptionalUint32
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalInt64() int64 {
-	if x != nil {
-		return x.OptionalInt64
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalSint64() int64 {
-	if x != nil {
-		return x.OptionalSint64
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalUint64() uint64 {
-	if x != nil {
-		return x.OptionalUint64
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalSfixed32() int32 {
-	if x != nil {
-		return x.OptionalSfixed32
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalFixed32() uint32 {
-	if x != nil {
-		return x.OptionalFixed32
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalFloat() float32 {
-	if x != nil {
-		return x.OptionalFloat
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalSfixed64() int64 {
-	if x != nil {
-		return x.OptionalSfixed64
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalFixed64() uint64 {
-	if x != nil {
-		return x.OptionalFixed64
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalDouble() float64 {
-	if x != nil {
-		return x.OptionalDouble
-	}
-	return 0
-}
-
-func (x *FieldTestMessage) GetOptionalString() string {
-	if x != nil {
-		return x.OptionalString
-	}
-	return ""
-}
-
-func (x *FieldTestMessage) GetOptionalBytes() []byte {
-	if x != nil {
-		return x.OptionalBytes
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetOptional_Message() *FieldTestMessage_Message {
-	if x != nil {
-		return x.Optional_Message
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedBool() []bool {
-	if x != nil {
-		return x.RepeatedBool
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedEnum() []FieldTestMessage_Enum {
-	if x != nil {
-		return x.RepeatedEnum
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedInt32() []int32 {
-	if x != nil {
-		return x.RepeatedInt32
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedSint32() []int32 {
-	if x != nil {
-		return x.RepeatedSint32
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedUint32() []uint32 {
-	if x != nil {
-		return x.RepeatedUint32
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedInt64() []int64 {
-	if x != nil {
-		return x.RepeatedInt64
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedSint64() []int64 {
-	if x != nil {
-		return x.RepeatedSint64
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedUint64() []uint64 {
-	if x != nil {
-		return x.RepeatedUint64
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedSfixed32() []int32 {
-	if x != nil {
-		return x.RepeatedSfixed32
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedFixed32() []uint32 {
-	if x != nil {
-		return x.RepeatedFixed32
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedFloat() []float32 {
-	if x != nil {
-		return x.RepeatedFloat
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedSfixed64() []int64 {
-	if x != nil {
-		return x.RepeatedSfixed64
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedFixed64() []uint64 {
-	if x != nil {
-		return x.RepeatedFixed64
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedDouble() []float64 {
-	if x != nil {
-		return x.RepeatedDouble
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedString() []string {
-	if x != nil {
-		return x.RepeatedString
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeatedBytes() [][]byte {
-	if x != nil {
-		return x.RepeatedBytes
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetRepeated_Message() []*FieldTestMessage_Message {
-	if x != nil {
-		return x.Repeated_Message
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetMapInt32Int64() map[int32]int64 {
-	if x != nil {
-		return x.MapInt32Int64
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetMapStringMessage() map[string]*FieldTestMessage_Message {
-	if x != nil {
-		return x.MapStringMessage
-	}
-	return nil
-}
-
-func (x *FieldTestMessage) GetMapFixed64Enum() map[uint64]FieldTestMessage_Enum {
-	if x != nil {
-		return x.MapFixed64Enum
-	}
-	return nil
-}
-
-type FieldTestMessage_Message struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *FieldTestMessage_Message) Reset() {
-	*x = FieldTestMessage_Message{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_cmd_protoc_gen_go_testdata_proto3_fields_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *FieldTestMessage_Message) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FieldTestMessage_Message) ProtoMessage() {}
-
-func (x *FieldTestMessage_Message) ProtoReflect() protoreflect.Message {
-	mi := &file_cmd_protoc_gen_go_testdata_proto3_fields_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use FieldTestMessage_Message.ProtoReflect.Descriptor instead.
-func (*FieldTestMessage_Message) Descriptor() ([]byte, []int) {
-	return file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDescGZIP(), []int{0, 3}
-}
-
-var File_cmd_protoc_gen_go_testdata_proto3_fields_proto protoreflect.FileDescriptor
-
-var file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDesc = []byte{
-	0x0a, 0x2e, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e,
-	0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x33, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x12, 0x15, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x22, 0xd0, 0x11, 0x0a, 0x10, 0x46, 0x69, 0x65, 0x6c,
-	0x64, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x6f, 0x6f,
-	0x6c, 0x12, 0x51, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x65, 0x6e,
-	0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-	0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x45, 0x6e, 0x75, 0x6d, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x11, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x0a,
-	0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18,
-	0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49,
-	0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a,
-	0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28,
-	0x0f, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0f, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x25,
-	0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-	0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x10,
-	0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x36, 0x34, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0f, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x27, 0x0a,
-	0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-	0x18, 0x0e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12,
-	0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65,
-	0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x5a, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x5f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x65,
-	0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62,
-	0x6f, 0x6f, 0x6c, 0x18, 0xc9, 0x01, 0x20, 0x03, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x52, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0xca, 0x01, 0x20, 0x03, 0x28, 0x0e,
-	0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x65,
-	0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0c,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x26, 0x0a, 0x0e,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0xcb,
-	0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49,
-	0x6e, 0x74, 0x33, 0x32, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0xcc, 0x01, 0x20, 0x03, 0x28, 0x11, 0x52, 0x0e,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x28,
-	0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x18, 0xcd, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0xce, 0x01, 0x20, 0x03, 0x28,
-	0x03, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34,
-	0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x18, 0xcf, 0x01, 0x20, 0x03, 0x28, 0x12, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0xd0, 0x01,
-	0x20, 0x03, 0x28, 0x04, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x12, 0x2c, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0xd1, 0x01, 0x20, 0x03, 0x28, 0x0f,
-	0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x12, 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0xd2, 0x01, 0x20, 0x03, 0x28, 0x07, 0x52, 0x0f, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x26,
-	0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-	0x18, 0xd3, 0x01, 0x20, 0x03, 0x28, 0x02, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0xd4, 0x01, 0x20, 0x03,
-	0x28, 0x10, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x12, 0x2a, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0xd5, 0x01, 0x20, 0x03, 0x28, 0x06, 0x52,
-	0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
-	0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75,
-	0x62, 0x6c, 0x65, 0x18, 0xd6, 0x01, 0x20, 0x03, 0x28, 0x01, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0xd7, 0x01,
-	0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0xd8, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0d, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x5b, 0x0a, 0x10,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x18, 0xd9, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e,
-	0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x63, 0x0a, 0x0f, 0x6d, 0x61, 0x70,
-	0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0xf4, 0x03, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x46, 0x69, 0x65, 0x6c,
-	0x64, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x61, 0x70,
-	0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
-	0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x6c,
-	0x0a, 0x12, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x18, 0xf5, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x33, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x6d, 0x61, 0x70, 0x53,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x66, 0x0a, 0x10,
-	0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x5f, 0x65, 0x6e, 0x75, 0x6d,
-	0x18, 0xf6, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e,
-	0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x75, 0x6d, 0x45,
-	0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
-	0x45, 0x6e, 0x75, 0x6d, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32,
-	0x49, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
-	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x74, 0x0a, 0x15, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
-	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
-	0x79, 0x12, 0x45, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x65,
-	0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x6f, 0x0a, 0x13,
-	0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e,
-	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x06,
-	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x42, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x46, 0x69, 0x65,
-	0x6c, 0x64, 0x54, 0x65, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x45, 0x6e,
-	0x75, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x09, 0x0a,
-	0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x10, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d,
-	0x12, 0x08, 0x0a, 0x04, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x42, 0x3e, 0x5a, 0x3c, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x63, 0x6d, 0x64, 0x2f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x67, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x64,
-	0x61, 0x74, 0x61, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x33,
-}
-
-var (
-	file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDescOnce sync.Once
-	file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDescData = file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDesc
-)
-
-func file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDescGZIP() []byte {
-	file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDescOnce.Do(func() {
-		file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDescData = protoimpl.X.CompressGZIP(file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDescData)
-	})
-	return file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDescData
-}
-
-var file_cmd_protoc_gen_go_testdata_proto3_fields_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_cmd_protoc_gen_go_testdata_proto3_fields_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
-var file_cmd_protoc_gen_go_testdata_proto3_fields_proto_goTypes = []interface{}{
-	(FieldTestMessage_Enum)(0),       // 0: goproto.protoc.proto3.FieldTestMessage.Enum
-	(*FieldTestMessage)(nil),         // 1: goproto.protoc.proto3.FieldTestMessage
-	nil,                              // 2: goproto.protoc.proto3.FieldTestMessage.MapInt32Int64Entry
-	nil,                              // 3: goproto.protoc.proto3.FieldTestMessage.MapStringMessageEntry
-	nil,                              // 4: goproto.protoc.proto3.FieldTestMessage.MapFixed64EnumEntry
-	(*FieldTestMessage_Message)(nil), // 5: goproto.protoc.proto3.FieldTestMessage.Message
-}
-var file_cmd_protoc_gen_go_testdata_proto3_fields_proto_depIdxs = []int32{
-	0, // 0: goproto.protoc.proto3.FieldTestMessage.optional_enum:type_name -> goproto.protoc.proto3.FieldTestMessage.Enum
-	5, // 1: goproto.protoc.proto3.FieldTestMessage.optional_Message:type_name -> goproto.protoc.proto3.FieldTestMessage.Message
-	0, // 2: goproto.protoc.proto3.FieldTestMessage.repeated_enum:type_name -> goproto.protoc.proto3.FieldTestMessage.Enum
-	5, // 3: goproto.protoc.proto3.FieldTestMessage.repeated_Message:type_name -> goproto.protoc.proto3.FieldTestMessage.Message
-	2, // 4: goproto.protoc.proto3.FieldTestMessage.map_int32_int64:type_name -> goproto.protoc.proto3.FieldTestMessage.MapInt32Int64Entry
-	3, // 5: goproto.protoc.proto3.FieldTestMessage.map_string_message:type_name -> goproto.protoc.proto3.FieldTestMessage.MapStringMessageEntry
-	4, // 6: goproto.protoc.proto3.FieldTestMessage.map_fixed64_enum:type_name -> goproto.protoc.proto3.FieldTestMessage.MapFixed64EnumEntry
-	5, // 7: goproto.protoc.proto3.FieldTestMessage.MapStringMessageEntry.value:type_name -> goproto.protoc.proto3.FieldTestMessage.Message
-	0, // 8: goproto.protoc.proto3.FieldTestMessage.MapFixed64EnumEntry.value:type_name -> goproto.protoc.proto3.FieldTestMessage.Enum
-	9, // [9:9] is the sub-list for method output_type
-	9, // [9:9] is the sub-list for method input_type
-	9, // [9:9] is the sub-list for extension type_name
-	9, // [9:9] is the sub-list for extension extendee
-	0, // [0:9] is the sub-list for field type_name
-}
-
-func init() { file_cmd_protoc_gen_go_testdata_proto3_fields_proto_init() }
-func file_cmd_protoc_gen_go_testdata_proto3_fields_proto_init() {
-	if File_cmd_protoc_gen_go_testdata_proto3_fields_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_cmd_protoc_gen_go_testdata_proto3_fields_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FieldTestMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_cmd_protoc_gen_go_testdata_proto3_fields_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FieldTestMessage_Message); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDesc,
-			NumEnums:      1,
-			NumMessages:   5,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_cmd_protoc_gen_go_testdata_proto3_fields_proto_goTypes,
-		DependencyIndexes: file_cmd_protoc_gen_go_testdata_proto3_fields_proto_depIdxs,
-		EnumInfos:         file_cmd_protoc_gen_go_testdata_proto3_fields_proto_enumTypes,
-		MessageInfos:      file_cmd_protoc_gen_go_testdata_proto3_fields_proto_msgTypes,
-	}.Build()
-	File_cmd_protoc_gen_go_testdata_proto3_fields_proto = out.File
-	file_cmd_protoc_gen_go_testdata_proto3_fields_proto_rawDesc = nil
-	file_cmd_protoc_gen_go_testdata_proto3_fields_proto_goTypes = nil
-	file_cmd_protoc_gen_go_testdata_proto3_fields_proto_depIdxs = nil
-}
diff --git a/cmd/protoc-gen-go/testdata/proto3/fields.proto b/cmd/protoc-gen-go/testdata/proto3/fields.proto
deleted file mode 100644
index 1dfd705..0000000
--- a/cmd/protoc-gen-go/testdata/proto3/fields.proto
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-
-package goproto.protoc.proto3;
-
-option go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/proto3";
-
-message FieldTestMessage {
-  string   optional_bool     = 1;
-  Enum     optional_enum     = 2;
-  int32    optional_int32    = 3;
-  sint32   optional_sint32   = 4;
-  uint32   optional_uint32   = 5;
-  int64    optional_int64    = 6;
-  sint64   optional_sint64   = 7;
-  uint64   optional_uint64   = 8;
-  sfixed32 optional_sfixed32 = 9;
-  fixed32  optional_fixed32  = 10;
-  float    optional_float    = 11;
-  sfixed64 optional_sfixed64 = 12;
-  fixed64  optional_fixed64  = 13;
-  double   optional_double   = 14;
-  string   optional_string   = 15;
-  bytes    optional_bytes    = 16;
-  Message  optional_Message  = 17;
-
-  repeated bool     repeated_bool     = 201;
-  repeated Enum     repeated_enum     = 202;
-  repeated int32    repeated_int32    = 203;
-  repeated sint32   repeated_sint32   = 204;
-  repeated uint32   repeated_uint32   = 205;
-  repeated int64    repeated_int64    = 206;
-  repeated sint64   repeated_sint64   = 207;
-  repeated uint64   repeated_uint64   = 208;
-  repeated sfixed32 repeated_sfixed32 = 209;
-  repeated fixed32  repeated_fixed32  = 210;
-  repeated float    repeated_float    = 211;
-  repeated sfixed64 repeated_sfixed64 = 212;
-  repeated fixed64  repeated_fixed64  = 213;
-  repeated double   repeated_double   = 214;
-  repeated string   repeated_string   = 215;
-  repeated bytes    repeated_bytes    = 216;
-  repeated Message  repeated_Message  = 217;
-
-  map<int32, int64>   map_int32_int64    = 500;
-  map<string,Message> map_string_message = 501;
-  map<fixed64,Enum>   map_fixed64_enum   = 502;
-
-  enum Enum { ZERO = 0; }
-  message Message {}
-}
-
diff --git a/cmd/protoc-gen-go/testdata/registry_test.go b/cmd/protoc-gen-go/testdata/registry_test.go
deleted file mode 100644
index aca9036..0000000
--- a/cmd/protoc-gen-go/testdata/registry_test.go
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-import (
-	"testing"
-
-	"google.golang.org/protobuf/internal/filedesc"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/reflect/protoregistry"
-)
-
-func TestRegistry(t *testing.T) {
-	var hasFiles bool
-	protoregistry.GlobalFiles.RangeFiles(func(fd protoreflect.FileDescriptor) bool {
-		if fd.(*filedesc.File).L2 != nil {
-			t.Errorf("file %q eagerly went through lazy initialization", fd.Path())
-		}
-		hasFiles = true
-		return true
-	})
-	if !hasFiles {
-		t.Errorf("protoregistry.GlobalFiles is empty")
-	}
-}
diff --git a/compiler/protogen/protogen.go b/compiler/protogen/protogen.go
deleted file mode 100644
index 2ee676f..0000000
--- a/compiler/protogen/protogen.go
+++ /dev/null
@@ -1,1261 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package protogen provides support for writing protoc plugins.
-//
-// Plugins for protoc, the Protocol Buffer compiler,
-// are programs which read a CodeGeneratorRequest message from standard input
-// and write a CodeGeneratorResponse message to standard output.
-// This package provides support for writing plugins which generate Go code.
-package protogen
-
-import (
-	"bufio"
-	"bytes"
-	"fmt"
-	"go/ast"
-	"go/parser"
-	"go/printer"
-	"go/token"
-	"go/types"
-	"io/ioutil"
-	"os"
-	"path"
-	"path/filepath"
-	"sort"
-	"strconv"
-	"strings"
-
-	"google.golang.org/protobuf/encoding/prototext"
-	"google.golang.org/protobuf/internal/genid"
-	"google.golang.org/protobuf/internal/strs"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protodesc"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/reflect/protoregistry"
-
-	"google.golang.org/protobuf/types/descriptorpb"
-	"google.golang.org/protobuf/types/pluginpb"
-)
-
-const goPackageDocURL = "https://developers.google.com/protocol-buffers/docs/reference/go-generated#package"
-
-// Run executes a function as a protoc plugin.
-//
-// It reads a CodeGeneratorRequest message from os.Stdin, invokes the plugin
-// function, and writes a CodeGeneratorResponse message to os.Stdout.
-//
-// If a failure occurs while reading or writing, Run prints an error to
-// os.Stderr and calls os.Exit(1).
-func (opts Options) Run(f func(*Plugin) error) {
-	if err := run(opts, f); err != nil {
-		fmt.Fprintf(os.Stderr, "%s: %v\n", filepath.Base(os.Args[0]), err)
-		os.Exit(1)
-	}
-}
-
-func run(opts Options, f func(*Plugin) error) error {
-	if len(os.Args) > 1 {
-		return fmt.Errorf("unknown argument %q (this program should be run by protoc, not directly)", os.Args[1])
-	}
-	in, err := ioutil.ReadAll(os.Stdin)
-	if err != nil {
-		return err
-	}
-	req := &pluginpb.CodeGeneratorRequest{}
-	if err := proto.Unmarshal(in, req); err != nil {
-		return err
-	}
-	gen, err := opts.New(req)
-	if err != nil {
-		return err
-	}
-	if err := f(gen); err != nil {
-		// Errors from the plugin function are reported by setting the
-		// error field in the CodeGeneratorResponse.
-		//
-		// In contrast, errors that indicate a problem in protoc
-		// itself (unparsable input, I/O errors, etc.) are reported
-		// to stderr.
-		gen.Error(err)
-	}
-	resp := gen.Response()
-	out, err := proto.Marshal(resp)
-	if err != nil {
-		return err
-	}
-	if _, err := os.Stdout.Write(out); err != nil {
-		return err
-	}
-	return nil
-}
-
-// A Plugin is a protoc plugin invocation.
-type Plugin struct {
-	// Request is the CodeGeneratorRequest provided by protoc.
-	Request *pluginpb.CodeGeneratorRequest
-
-	// Files is the set of files to generate and everything they import.
-	// Files appear in topological order, so each file appears before any
-	// file that imports it.
-	Files       []*File
-	FilesByPath map[string]*File
-
-	// SupportedFeatures is the set of protobuf language features supported by
-	// this generator plugin. See the documentation for
-	// google.protobuf.CodeGeneratorResponse.supported_features for details.
-	SupportedFeatures uint64
-
-	fileReg        *protoregistry.Files
-	enumsByName    map[protoreflect.FullName]*Enum
-	messagesByName map[protoreflect.FullName]*Message
-	annotateCode   bool
-	pathType       pathType
-	module         string
-	genFiles       []*GeneratedFile
-	opts           Options
-	err            error
-}
-
-type Options struct {
-	// If ParamFunc is non-nil, it will be called with each unknown
-	// generator parameter.
-	//
-	// Plugins for protoc can accept parameters from the command line,
-	// passed in the --<lang>_out protoc, separated from the output
-	// directory with a colon; e.g.,
-	//
-	//   --go_out=<param1>=<value1>,<param2>=<value2>:<output_directory>
-	//
-	// Parameters passed in this fashion as a comma-separated list of
-	// key=value pairs will be passed to the ParamFunc.
-	//
-	// The (flag.FlagSet).Set method matches this function signature,
-	// so parameters can be converted into flags as in the following:
-	//
-	//   var flags flag.FlagSet
-	//   value := flags.Bool("param", false, "")
-	//   opts := &protogen.Options{
-	//     ParamFunc: flags.Set,
-	//   }
-	//   protogen.Run(opts, func(p *protogen.Plugin) error {
-	//     if *value { ... }
-	//   })
-	ParamFunc func(name, value string) error
-
-	// ImportRewriteFunc is called with the import path of each package
-	// imported by a generated file. It returns the import path to use
-	// for this package.
-	ImportRewriteFunc func(GoImportPath) GoImportPath
-}
-
-// New returns a new Plugin.
-func (opts Options) New(req *pluginpb.CodeGeneratorRequest) (*Plugin, error) {
-	gen := &Plugin{
-		Request:        req,
-		FilesByPath:    make(map[string]*File),
-		fileReg:        new(protoregistry.Files),
-		enumsByName:    make(map[protoreflect.FullName]*Enum),
-		messagesByName: make(map[protoreflect.FullName]*Message),
-		opts:           opts,
-	}
-
-	packageNames := make(map[string]GoPackageName) // filename -> package name
-	importPaths := make(map[string]GoImportPath)   // filename -> import path
-	for _, param := range strings.Split(req.GetParameter(), ",") {
-		var value string
-		if i := strings.Index(param, "="); i >= 0 {
-			value = param[i+1:]
-			param = param[0:i]
-		}
-		switch param {
-		case "":
-			// Ignore.
-		case "module":
-			gen.module = value
-		case "paths":
-			switch value {
-			case "import":
-				gen.pathType = pathTypeImport
-			case "source_relative":
-				gen.pathType = pathTypeSourceRelative
-			default:
-				return nil, fmt.Errorf(`unknown path type %q: want "import" or "source_relative"`, value)
-			}
-		case "annotate_code":
-			switch value {
-			case "true", "":
-				gen.annotateCode = true
-			case "false":
-			default:
-				return nil, fmt.Errorf(`bad value for parameter %q: want "true" or "false"`, param)
-			}
-		default:
-			if param[0] == 'M' {
-				impPath, pkgName := splitImportPathAndPackageName(value)
-				if pkgName != "" {
-					packageNames[param[1:]] = pkgName
-				}
-				if impPath != "" {
-					importPaths[param[1:]] = impPath
-				}
-				continue
-			}
-			if opts.ParamFunc != nil {
-				if err := opts.ParamFunc(param, value); err != nil {
-					return nil, err
-				}
-			}
-		}
-	}
-	// When the module= option is provided, we strip the module name
-	// prefix from generated files. This only makes sense if generated
-	// filenames are based on the import path.
-	if gen.module != "" && gen.pathType == pathTypeSourceRelative {
-		return nil, fmt.Errorf("cannot use module= with paths=source_relative")
-	}
-
-	// Figure out the import path and package name for each file.
-	//
-	// The rules here are complicated and have grown organically over time.
-	// Interactions between different ways of specifying package information
-	// may be surprising.
-	//
-	// The recommended approach is to include a go_package option in every
-	// .proto source file specifying the full import path of the Go package
-	// associated with this file.
-	//
-	//     option go_package = "google.golang.org/protobuf/types/known/anypb";
-	//
-	// Alternatively, build systems which want to exert full control over
-	// import paths may specify M<filename>=<import_path> flags.
-	for _, fdesc := range gen.Request.ProtoFile {
-		// The "M" command-line flags take precedence over
-		// the "go_package" option in the .proto source file.
-		filename := fdesc.GetName()
-		impPath, pkgName := splitImportPathAndPackageName(fdesc.GetOptions().GetGoPackage())
-		if importPaths[filename] == "" && impPath != "" {
-			importPaths[filename] = impPath
-		}
-		if packageNames[filename] == "" && pkgName != "" {
-			packageNames[filename] = pkgName
-		}
-		switch {
-		case importPaths[filename] == "":
-			// The import path must be specified one way or another.
-			return nil, fmt.Errorf(
-				"unable to determine Go import path for %q\n\n"+
-					"Please specify either:\n"+
-					"\t• a \"go_package\" option in the .proto source file, or\n"+
-					"\t• a \"M\" argument on the command line.\n\n"+
-					"See %v for more information.\n",
-				fdesc.GetName(), goPackageDocURL)
-		case !strings.Contains(string(importPaths[filename]), ".") &&
-			!strings.Contains(string(importPaths[filename]), "/"):
-			// Check that import paths contain at least a dot or slash to avoid
-			// a common mistake where import path is confused with package name.
-			return nil, fmt.Errorf(
-				"invalid Go import path %q for %q\n\n"+
-					"The import path must contain at least one period ('.') or forward slash ('/') character.\n\n"+
-					"See %v for more information.\n",
-				string(importPaths[filename]), fdesc.GetName(), goPackageDocURL)
-		case packageNames[filename] == "":
-			// If the package name is not explicitly specified,
-			// then derive a reasonable package name from the import path.
-			//
-			// NOTE: The package name is derived first from the import path in
-			// the "go_package" option (if present) before trying the "M" flag.
-			// The inverted order for this is because the primary use of the "M"
-			// flag is by build systems that have full control over the
-			// import paths all packages, where it is generally expected that
-			// the Go package name still be identical for the Go toolchain and
-			// for custom build systems like Bazel.
-			if impPath == "" {
-				impPath = importPaths[filename]
-			}
-			packageNames[filename] = cleanPackageName(path.Base(string(impPath)))
-		}
-	}
-
-	// Consistency check: Every file with the same Go import path should have
-	// the same Go package name.
-	packageFiles := make(map[GoImportPath][]string)
-	for filename, importPath := range importPaths {
-		if _, ok := packageNames[filename]; !ok {
-			// Skip files mentioned in a M<file>=<import_path> parameter
-			// but which do not appear in the CodeGeneratorRequest.
-			continue
-		}
-		packageFiles[importPath] = append(packageFiles[importPath], filename)
-	}
-	for importPath, filenames := range packageFiles {
-		for i := 1; i < len(filenames); i++ {
-			if a, b := packageNames[filenames[0]], packageNames[filenames[i]]; a != b {
-				return nil, fmt.Errorf("Go package %v has inconsistent names %v (%v) and %v (%v)",
-					importPath, a, filenames[0], b, filenames[i])
-			}
-		}
-	}
-
-	for _, fdesc := range gen.Request.ProtoFile {
-		filename := fdesc.GetName()
-		if gen.FilesByPath[filename] != nil {
-			return nil, fmt.Errorf("duplicate file name: %q", filename)
-		}
-		f, err := newFile(gen, fdesc, packageNames[filename], importPaths[filename])
-		if err != nil {
-			return nil, err
-		}
-		gen.Files = append(gen.Files, f)
-		gen.FilesByPath[filename] = f
-	}
-	for _, filename := range gen.Request.FileToGenerate {
-		f, ok := gen.FilesByPath[filename]
-		if !ok {
-			return nil, fmt.Errorf("no descriptor for generated file: %v", filename)
-		}
-		f.Generate = true
-	}
-	return gen, nil
-}
-
-// Error records an error in code generation. The generator will report the
-// error back to protoc and will not produce output.
-func (gen *Plugin) Error(err error) {
-	if gen.err == nil {
-		gen.err = err
-	}
-}
-
-// Response returns the generator output.
-func (gen *Plugin) Response() *pluginpb.CodeGeneratorResponse {
-	resp := &pluginpb.CodeGeneratorResponse{}
-	if gen.err != nil {
-		resp.Error = proto.String(gen.err.Error())
-		return resp
-	}
-	for _, g := range gen.genFiles {
-		if g.skip {
-			continue
-		}
-		content, err := g.Content()
-		if err != nil {
-			return &pluginpb.CodeGeneratorResponse{
-				Error: proto.String(err.Error()),
-			}
-		}
-		filename := g.filename
-		if gen.module != "" {
-			trim := gen.module + "/"
-			if !strings.HasPrefix(filename, trim) {
-				return &pluginpb.CodeGeneratorResponse{
-					Error: proto.String(fmt.Sprintf("%v: generated file does not match prefix %q", filename, gen.module)),
-				}
-			}
-			filename = strings.TrimPrefix(filename, trim)
-		}
-		resp.File = append(resp.File, &pluginpb.CodeGeneratorResponse_File{
-			Name:    proto.String(filename),
-			Content: proto.String(string(content)),
-		})
-		if gen.annotateCode && strings.HasSuffix(g.filename, ".go") {
-			meta, err := g.metaFile(content)
-			if err != nil {
-				return &pluginpb.CodeGeneratorResponse{
-					Error: proto.String(err.Error()),
-				}
-			}
-			resp.File = append(resp.File, &pluginpb.CodeGeneratorResponse_File{
-				Name:    proto.String(filename + ".meta"),
-				Content: proto.String(meta),
-			})
-		}
-	}
-	if gen.SupportedFeatures > 0 {
-		resp.SupportedFeatures = proto.Uint64(gen.SupportedFeatures)
-	}
-	return resp
-}
-
-// A File describes a .proto source file.
-type File struct {
-	Desc  protoreflect.FileDescriptor
-	Proto *descriptorpb.FileDescriptorProto
-
-	GoDescriptorIdent GoIdent       // name of Go variable for the file descriptor
-	GoPackageName     GoPackageName // name of this file's Go package
-	GoImportPath      GoImportPath  // import path of this file's Go package
-
-	Enums      []*Enum      // top-level enum declarations
-	Messages   []*Message   // top-level message declarations
-	Extensions []*Extension // top-level extension declarations
-	Services   []*Service   // top-level service declarations
-
-	Generate bool // true if we should generate code for this file
-
-	// GeneratedFilenamePrefix is used to construct filenames for generated
-	// files associated with this source file.
-	//
-	// For example, the source file "dir/foo.proto" might have a filename prefix
-	// of "dir/foo". Appending ".pb.go" produces an output file of "dir/foo.pb.go".
-	GeneratedFilenamePrefix string
-
-	location Location
-}
-
-func newFile(gen *Plugin, p *descriptorpb.FileDescriptorProto, packageName GoPackageName, importPath GoImportPath) (*File, error) {
-	desc, err := protodesc.NewFile(p, gen.fileReg)
-	if err != nil {
-		return nil, fmt.Errorf("invalid FileDescriptorProto %q: %v", p.GetName(), err)
-	}
-	if err := gen.fileReg.RegisterFile(desc); err != nil {
-		return nil, fmt.Errorf("cannot register descriptor %q: %v", p.GetName(), err)
-	}
-	f := &File{
-		Desc:          desc,
-		Proto:         p,
-		GoPackageName: packageName,
-		GoImportPath:  importPath,
-		location:      Location{SourceFile: desc.Path()},
-	}
-
-	// Determine the prefix for generated Go files.
-	prefix := p.GetName()
-	if ext := path.Ext(prefix); ext == ".proto" || ext == ".protodevel" {
-		prefix = prefix[:len(prefix)-len(ext)]
-	}
-	switch gen.pathType {
-	case pathTypeImport:
-		// If paths=import, the output filename is derived from the Go import path.
-		prefix = path.Join(string(f.GoImportPath), path.Base(prefix))
-	case pathTypeSourceRelative:
-		// If paths=source_relative, the output filename is derived from
-		// the input filename.
-	}
-	f.GoDescriptorIdent = GoIdent{
-		GoName:       "File_" + strs.GoSanitized(p.GetName()),
-		GoImportPath: f.GoImportPath,
-	}
-	f.GeneratedFilenamePrefix = prefix
-
-	for i, eds := 0, desc.Enums(); i < eds.Len(); i++ {
-		f.Enums = append(f.Enums, newEnum(gen, f, nil, eds.Get(i)))
-	}
-	for i, mds := 0, desc.Messages(); i < mds.Len(); i++ {
-		f.Messages = append(f.Messages, newMessage(gen, f, nil, mds.Get(i)))
-	}
-	for i, xds := 0, desc.Extensions(); i < xds.Len(); i++ {
-		f.Extensions = append(f.Extensions, newField(gen, f, nil, xds.Get(i)))
-	}
-	for i, sds := 0, desc.Services(); i < sds.Len(); i++ {
-		f.Services = append(f.Services, newService(gen, f, sds.Get(i)))
-	}
-	for _, message := range f.Messages {
-		if err := message.resolveDependencies(gen); err != nil {
-			return nil, err
-		}
-	}
-	for _, extension := range f.Extensions {
-		if err := extension.resolveDependencies(gen); err != nil {
-			return nil, err
-		}
-	}
-	for _, service := range f.Services {
-		for _, method := range service.Methods {
-			if err := method.resolveDependencies(gen); err != nil {
-				return nil, err
-			}
-		}
-	}
-	return f, nil
-}
-
-// splitImportPathAndPackageName splits off the optional Go package name
-// from the Go import path when seperated by a ';' delimiter.
-func splitImportPathAndPackageName(s string) (GoImportPath, GoPackageName) {
-	if i := strings.Index(s, ";"); i >= 0 {
-		return GoImportPath(s[:i]), GoPackageName(s[i+1:])
-	}
-	return GoImportPath(s), ""
-}
-
-// An Enum describes an enum.
-type Enum struct {
-	Desc protoreflect.EnumDescriptor
-
-	GoIdent GoIdent // name of the generated Go type
-
-	Values []*EnumValue // enum value declarations
-
-	Location Location   // location of this enum
-	Comments CommentSet // comments associated with this enum
-}
-
-func newEnum(gen *Plugin, f *File, parent *Message, desc protoreflect.EnumDescriptor) *Enum {
-	var loc Location
-	if parent != nil {
-		loc = parent.Location.appendPath(genid.DescriptorProto_EnumType_field_number, desc.Index())
-	} else {
-		loc = f.location.appendPath(genid.FileDescriptorProto_EnumType_field_number, desc.Index())
-	}
-	enum := &Enum{
-		Desc:     desc,
-		GoIdent:  newGoIdent(f, desc),
-		Location: loc,
-		Comments: makeCommentSet(f.Desc.SourceLocations().ByDescriptor(desc)),
-	}
-	gen.enumsByName[desc.FullName()] = enum
-	for i, vds := 0, enum.Desc.Values(); i < vds.Len(); i++ {
-		enum.Values = append(enum.Values, newEnumValue(gen, f, parent, enum, vds.Get(i)))
-	}
-	return enum
-}
-
-// An EnumValue describes an enum value.
-type EnumValue struct {
-	Desc protoreflect.EnumValueDescriptor
-
-	GoIdent GoIdent // name of the generated Go declaration
-
-	Parent *Enum // enum in which this value is declared
-
-	Location Location   // location of this enum value
-	Comments CommentSet // comments associated with this enum value
-}
-
-func newEnumValue(gen *Plugin, f *File, message *Message, enum *Enum, desc protoreflect.EnumValueDescriptor) *EnumValue {
-	// A top-level enum value's name is: EnumName_ValueName
-	// An enum value contained in a message is: MessageName_ValueName
-	//
-	// For historical reasons, enum value names are not camel-cased.
-	parentIdent := enum.GoIdent
-	if message != nil {
-		parentIdent = message.GoIdent
-	}
-	name := parentIdent.GoName + "_" + string(desc.Name())
-	loc := enum.Location.appendPath(genid.EnumDescriptorProto_Value_field_number, desc.Index())
-	return &EnumValue{
-		Desc:     desc,
-		GoIdent:  f.GoImportPath.Ident(name),
-		Parent:   enum,
-		Location: loc,
-		Comments: makeCommentSet(f.Desc.SourceLocations().ByDescriptor(desc)),
-	}
-}
-
-// A Message describes a message.
-type Message struct {
-	Desc protoreflect.MessageDescriptor
-
-	GoIdent GoIdent // name of the generated Go type
-
-	Fields []*Field // message field declarations
-	Oneofs []*Oneof // message oneof declarations
-
-	Enums      []*Enum      // nested enum declarations
-	Messages   []*Message   // nested message declarations
-	Extensions []*Extension // nested extension declarations
-
-	Location Location   // location of this message
-	Comments CommentSet // comments associated with this message
-}
-
-func newMessage(gen *Plugin, f *File, parent *Message, desc protoreflect.MessageDescriptor) *Message {
-	var loc Location
-	if parent != nil {
-		loc = parent.Location.appendPath(genid.DescriptorProto_NestedType_field_number, desc.Index())
-	} else {
-		loc = f.location.appendPath(genid.FileDescriptorProto_MessageType_field_number, desc.Index())
-	}
-	message := &Message{
-		Desc:     desc,
-		GoIdent:  newGoIdent(f, desc),
-		Location: loc,
-		Comments: makeCommentSet(f.Desc.SourceLocations().ByDescriptor(desc)),
-	}
-	gen.messagesByName[desc.FullName()] = message
-	for i, eds := 0, desc.Enums(); i < eds.Len(); i++ {
-		message.Enums = append(message.Enums, newEnum(gen, f, message, eds.Get(i)))
-	}
-	for i, mds := 0, desc.Messages(); i < mds.Len(); i++ {
-		message.Messages = append(message.Messages, newMessage(gen, f, message, mds.Get(i)))
-	}
-	for i, fds := 0, desc.Fields(); i < fds.Len(); i++ {
-		message.Fields = append(message.Fields, newField(gen, f, message, fds.Get(i)))
-	}
-	for i, ods := 0, desc.Oneofs(); i < ods.Len(); i++ {
-		message.Oneofs = append(message.Oneofs, newOneof(gen, f, message, ods.Get(i)))
-	}
-	for i, xds := 0, desc.Extensions(); i < xds.Len(); i++ {
-		message.Extensions = append(message.Extensions, newField(gen, f, message, xds.Get(i)))
-	}
-
-	// Resolve local references between fields and oneofs.
-	for _, field := range message.Fields {
-		if od := field.Desc.ContainingOneof(); od != nil {
-			oneof := message.Oneofs[od.Index()]
-			field.Oneof = oneof
-			oneof.Fields = append(oneof.Fields, field)
-		}
-	}
-
-	// Field name conflict resolution.
-	//
-	// We assume well-known method names that may be attached to a generated
-	// message type, as well as a 'Get*' method for each field. For each
-	// field in turn, we add _s to its name until there are no conflicts.
-	//
-	// Any change to the following set of method names is a potential
-	// incompatible API change because it may change generated field names.
-	//
-	// TODO: If we ever support a 'go_name' option to set the Go name of a
-	// field, we should consider dropping this entirely. The conflict
-	// resolution algorithm is subtle and surprising (changing the order
-	// in which fields appear in the .proto source file can change the
-	// names of fields in generated code), and does not adapt well to
-	// adding new per-field methods such as setters.
-	usedNames := map[string]bool{
-		"Reset":               true,
-		"String":              true,
-		"ProtoMessage":        true,
-		"Marshal":             true,
-		"Unmarshal":           true,
-		"ExtensionRangeArray": true,
-		"ExtensionMap":        true,
-		"Descriptor":          true,
-	}
-	makeNameUnique := func(name string, hasGetter bool) string {
-		for usedNames[name] || (hasGetter && usedNames["Get"+name]) {
-			name += "_"
-		}
-		usedNames[name] = true
-		usedNames["Get"+name] = hasGetter
-		return name
-	}
-	for _, field := range message.Fields {
-		field.GoName = makeNameUnique(field.GoName, true)
-		field.GoIdent.GoName = message.GoIdent.GoName + "_" + field.GoName
-		if field.Oneof != nil && field.Oneof.Fields[0] == field {
-			// Make the name for a oneof unique as well. For historical reasons,
-			// this assumes that a getter method is not generated for oneofs.
-			// This is incorrect, but fixing it breaks existing code.
-			field.Oneof.GoName = makeNameUnique(field.Oneof.GoName, false)
-			field.Oneof.GoIdent.GoName = message.GoIdent.GoName + "_" + field.Oneof.GoName
-		}
-	}
-
-	// Oneof field name conflict resolution.
-	//
-	// This conflict resolution is incomplete as it does not consider collisions
-	// with other oneof field types, but fixing it breaks existing code.
-	for _, field := range message.Fields {
-		if field.Oneof != nil {
-		Loop:
-			for {
-				for _, nestedMessage := range message.Messages {
-					if nestedMessage.GoIdent == field.GoIdent {
-						field.GoIdent.GoName += "_"
-						continue Loop
-					}
-				}
-				for _, nestedEnum := range message.Enums {
-					if nestedEnum.GoIdent == field.GoIdent {
-						field.GoIdent.GoName += "_"
-						continue Loop
-					}
-				}
-				break Loop
-			}
-		}
-	}
-
-	return message
-}
-
-func (message *Message) resolveDependencies(gen *Plugin) error {
-	for _, field := range message.Fields {
-		if err := field.resolveDependencies(gen); err != nil {
-			return err
-		}
-	}
-	for _, message := range message.Messages {
-		if err := message.resolveDependencies(gen); err != nil {
-			return err
-		}
-	}
-	for _, extension := range message.Extensions {
-		if err := extension.resolveDependencies(gen); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-// A Field describes a message field.
-type Field struct {
-	Desc protoreflect.FieldDescriptor
-
-	// GoName is the base name of this field's Go field and methods.
-	// For code generated by protoc-gen-go, this means a field named
-	// '{{GoName}}' and a getter method named 'Get{{GoName}}'.
-	GoName string // e.g., "FieldName"
-
-	// GoIdent is the base name of a top-level declaration for this field.
-	// For code generated by protoc-gen-go, this means a wrapper type named
-	// '{{GoIdent}}' for members fields of a oneof, and a variable named
-	// 'E_{{GoIdent}}' for extension fields.
-	GoIdent GoIdent // e.g., "MessageName_FieldName"
-
-	Parent   *Message // message in which this field is declared; nil if top-level extension
-	Oneof    *Oneof   // containing oneof; nil if not part of a oneof
-	Extendee *Message // extended message for extension fields; nil otherwise
-
-	Enum    *Enum    // type for enum fields; nil otherwise
-	Message *Message // type for message or group fields; nil otherwise
-
-	Location Location   // location of this field
-	Comments CommentSet // comments associated with this field
-}
-
-func newField(gen *Plugin, f *File, message *Message, desc protoreflect.FieldDescriptor) *Field {
-	var loc Location
-	switch {
-	case desc.IsExtension() && message == nil:
-		loc = f.location.appendPath(genid.FileDescriptorProto_Extension_field_number, desc.Index())
-	case desc.IsExtension() && message != nil:
-		loc = message.Location.appendPath(genid.DescriptorProto_Extension_field_number, desc.Index())
-	default:
-		loc = message.Location.appendPath(genid.DescriptorProto_Field_field_number, desc.Index())
-	}
-	camelCased := strs.GoCamelCase(string(desc.Name()))
-	var parentPrefix string
-	if message != nil {
-		parentPrefix = message.GoIdent.GoName + "_"
-	}
-	field := &Field{
-		Desc:   desc,
-		GoName: camelCased,
-		GoIdent: GoIdent{
-			GoImportPath: f.GoImportPath,
-			GoName:       parentPrefix + camelCased,
-		},
-		Parent:   message,
-		Location: loc,
-		Comments: makeCommentSet(f.Desc.SourceLocations().ByDescriptor(desc)),
-	}
-	return field
-}
-
-func (field *Field) resolveDependencies(gen *Plugin) error {
-	desc := field.Desc
-	switch desc.Kind() {
-	case protoreflect.EnumKind:
-		name := field.Desc.Enum().FullName()
-		enum, ok := gen.enumsByName[name]
-		if !ok {
-			return fmt.Errorf("field %v: no descriptor for enum %v", desc.FullName(), name)
-		}
-		field.Enum = enum
-	case protoreflect.MessageKind, protoreflect.GroupKind:
-		name := desc.Message().FullName()
-		message, ok := gen.messagesByName[name]
-		if !ok {
-			return fmt.Errorf("field %v: no descriptor for type %v", desc.FullName(), name)
-		}
-		field.Message = message
-	}
-	if desc.IsExtension() {
-		name := desc.ContainingMessage().FullName()
-		message, ok := gen.messagesByName[name]
-		if !ok {
-			return fmt.Errorf("field %v: no descriptor for type %v", desc.FullName(), name)
-		}
-		field.Extendee = message
-	}
-	return nil
-}
-
-// A Oneof describes a message oneof.
-type Oneof struct {
-	Desc protoreflect.OneofDescriptor
-
-	// GoName is the base name of this oneof's Go field and methods.
-	// For code generated by protoc-gen-go, this means a field named
-	// '{{GoName}}' and a getter method named 'Get{{GoName}}'.
-	GoName string // e.g., "OneofName"
-
-	// GoIdent is the base name of a top-level declaration for this oneof.
-	GoIdent GoIdent // e.g., "MessageName_OneofName"
-
-	Parent *Message // message in which this oneof is declared
-
-	Fields []*Field // fields that are part of this oneof
-
-	Location Location   // location of this oneof
-	Comments CommentSet // comments associated with this oneof
-}
-
-func newOneof(gen *Plugin, f *File, message *Message, desc protoreflect.OneofDescriptor) *Oneof {
-	loc := message.Location.appendPath(genid.DescriptorProto_OneofDecl_field_number, desc.Index())
-	camelCased := strs.GoCamelCase(string(desc.Name()))
-	parentPrefix := message.GoIdent.GoName + "_"
-	return &Oneof{
-		Desc:   desc,
-		Parent: message,
-		GoName: camelCased,
-		GoIdent: GoIdent{
-			GoImportPath: f.GoImportPath,
-			GoName:       parentPrefix + camelCased,
-		},
-		Location: loc,
-		Comments: makeCommentSet(f.Desc.SourceLocations().ByDescriptor(desc)),
-	}
-}
-
-// Extension is an alias of Field for documentation.
-type Extension = Field
-
-// A Service describes a service.
-type Service struct {
-	Desc protoreflect.ServiceDescriptor
-
-	GoName string
-
-	Methods []*Method // service method declarations
-
-	Location Location   // location of this service
-	Comments CommentSet // comments associated with this service
-}
-
-func newService(gen *Plugin, f *File, desc protoreflect.ServiceDescriptor) *Service {
-	loc := f.location.appendPath(genid.FileDescriptorProto_Service_field_number, desc.Index())
-	service := &Service{
-		Desc:     desc,
-		GoName:   strs.GoCamelCase(string(desc.Name())),
-		Location: loc,
-		Comments: makeCommentSet(f.Desc.SourceLocations().ByDescriptor(desc)),
-	}
-	for i, mds := 0, desc.Methods(); i < mds.Len(); i++ {
-		service.Methods = append(service.Methods, newMethod(gen, f, service, mds.Get(i)))
-	}
-	return service
-}
-
-// A Method describes a method in a service.
-type Method struct {
-	Desc protoreflect.MethodDescriptor
-
-	GoName string
-
-	Parent *Service // service in which this method is declared
-
-	Input  *Message
-	Output *Message
-
-	Location Location   // location of this method
-	Comments CommentSet // comments associated with this method
-}
-
-func newMethod(gen *Plugin, f *File, service *Service, desc protoreflect.MethodDescriptor) *Method {
-	loc := service.Location.appendPath(genid.ServiceDescriptorProto_Method_field_number, desc.Index())
-	method := &Method{
-		Desc:     desc,
-		GoName:   strs.GoCamelCase(string(desc.Name())),
-		Parent:   service,
-		Location: loc,
-		Comments: makeCommentSet(f.Desc.SourceLocations().ByDescriptor(desc)),
-	}
-	return method
-}
-
-func (method *Method) resolveDependencies(gen *Plugin) error {
-	desc := method.Desc
-
-	inName := desc.Input().FullName()
-	in, ok := gen.messagesByName[inName]
-	if !ok {
-		return fmt.Errorf("method %v: no descriptor for type %v", desc.FullName(), inName)
-	}
-	method.Input = in
-
-	outName := desc.Output().FullName()
-	out, ok := gen.messagesByName[outName]
-	if !ok {
-		return fmt.Errorf("method %v: no descriptor for type %v", desc.FullName(), outName)
-	}
-	method.Output = out
-
-	return nil
-}
-
-// A GeneratedFile is a generated file.
-type GeneratedFile struct {
-	gen              *Plugin
-	skip             bool
-	filename         string
-	goImportPath     GoImportPath
-	buf              bytes.Buffer
-	packageNames     map[GoImportPath]GoPackageName
-	usedPackageNames map[GoPackageName]bool
-	manualImports    map[GoImportPath]bool
-	annotations      map[string][]Location
-}
-
-// NewGeneratedFile creates a new generated file with the given filename
-// and import path.
-func (gen *Plugin) NewGeneratedFile(filename string, goImportPath GoImportPath) *GeneratedFile {
-	g := &GeneratedFile{
-		gen:              gen,
-		filename:         filename,
-		goImportPath:     goImportPath,
-		packageNames:     make(map[GoImportPath]GoPackageName),
-		usedPackageNames: make(map[GoPackageName]bool),
-		manualImports:    make(map[GoImportPath]bool),
-		annotations:      make(map[string][]Location),
-	}
-
-	// All predeclared identifiers in Go are already used.
-	for _, s := range types.Universe.Names() {
-		g.usedPackageNames[GoPackageName(s)] = true
-	}
-
-	gen.genFiles = append(gen.genFiles, g)
-	return g
-}
-
-// P prints a line to the generated output. It converts each parameter to a
-// string following the same rules as fmt.Print. It never inserts spaces
-// between parameters.
-func (g *GeneratedFile) P(v ...interface{}) {
-	for _, x := range v {
-		switch x := x.(type) {
-		case GoIdent:
-			fmt.Fprint(&g.buf, g.QualifiedGoIdent(x))
-		default:
-			fmt.Fprint(&g.buf, x)
-		}
-	}
-	fmt.Fprintln(&g.buf)
-}
-
-// QualifiedGoIdent returns the string to use for a Go identifier.
-//
-// If the identifier is from a different Go package than the generated file,
-// the returned name will be qualified (package.name) and an import statement
-// for the identifier's package will be included in the file.
-func (g *GeneratedFile) QualifiedGoIdent(ident GoIdent) string {
-	if ident.GoImportPath == g.goImportPath {
-		return ident.GoName
-	}
-	if packageName, ok := g.packageNames[ident.GoImportPath]; ok {
-		return string(packageName) + "." + ident.GoName
-	}
-	packageName := cleanPackageName(path.Base(string(ident.GoImportPath)))
-	for i, orig := 1, packageName; g.usedPackageNames[packageName]; i++ {
-		packageName = orig + GoPackageName(strconv.Itoa(i))
-	}
-	g.packageNames[ident.GoImportPath] = packageName
-	g.usedPackageNames[packageName] = true
-	return string(packageName) + "." + ident.GoName
-}
-
-// Import ensures a package is imported by the generated file.
-//
-// Packages referenced by QualifiedGoIdent are automatically imported.
-// Explicitly importing a package with Import is generally only necessary
-// when the import will be blank (import _ "package").
-func (g *GeneratedFile) Import(importPath GoImportPath) {
-	g.manualImports[importPath] = true
-}
-
-// Write implements io.Writer.
-func (g *GeneratedFile) Write(p []byte) (n int, err error) {
-	return g.buf.Write(p)
-}
-
-// Skip removes the generated file from the plugin output.
-func (g *GeneratedFile) Skip() {
-	g.skip = true
-}
-
-// Unskip reverts a previous call to Skip, re-including the generated file in
-// the plugin output.
-func (g *GeneratedFile) Unskip() {
-	g.skip = false
-}
-
-// Annotate associates a symbol in a generated Go file with a location in a
-// source .proto file.
-//
-// The symbol may refer to a type, constant, variable, function, method, or
-// struct field.  The "T.sel" syntax is used to identify the method or field
-// 'sel' on type 'T'.
-func (g *GeneratedFile) Annotate(symbol string, loc Location) {
-	g.annotations[symbol] = append(g.annotations[symbol], loc)
-}
-
-// Content returns the contents of the generated file.
-func (g *GeneratedFile) Content() ([]byte, error) {
-	if !strings.HasSuffix(g.filename, ".go") {
-		return g.buf.Bytes(), nil
-	}
-
-	// Reformat generated code.
-	original := g.buf.Bytes()
-	fset := token.NewFileSet()
-	file, err := parser.ParseFile(fset, "", original, parser.ParseComments)
-	if err != nil {
-		// Print out the bad code with line numbers.
-		// This should never happen in practice, but it can while changing generated code
-		// so consider this a debugging aid.
-		var src bytes.Buffer
-		s := bufio.NewScanner(bytes.NewReader(original))
-		for line := 1; s.Scan(); line++ {
-			fmt.Fprintf(&src, "%5d\t%s\n", line, s.Bytes())
-		}
-		return nil, fmt.Errorf("%v: unparsable Go source: %v\n%v", g.filename, err, src.String())
-	}
-
-	// Collect a sorted list of all imports.
-	var importPaths [][2]string
-	rewriteImport := func(importPath string) string {
-		if f := g.gen.opts.ImportRewriteFunc; f != nil {
-			return string(f(GoImportPath(importPath)))
-		}
-		return importPath
-	}
-	for importPath := range g.packageNames {
-		pkgName := string(g.packageNames[GoImportPath(importPath)])
-		pkgPath := rewriteImport(string(importPath))
-		importPaths = append(importPaths, [2]string{pkgName, pkgPath})
-	}
-	for importPath := range g.manualImports {
-		if _, ok := g.packageNames[importPath]; !ok {
-			pkgPath := rewriteImport(string(importPath))
-			importPaths = append(importPaths, [2]string{"_", pkgPath})
-		}
-	}
-	sort.Slice(importPaths, func(i, j int) bool {
-		return importPaths[i][1] < importPaths[j][1]
-	})
-
-	// Modify the AST to include a new import block.
-	if len(importPaths) > 0 {
-		// Insert block after package statement or
-		// possible comment attached to the end of the package statement.
-		pos := file.Package
-		tokFile := fset.File(file.Package)
-		pkgLine := tokFile.Line(file.Package)
-		for _, c := range file.Comments {
-			if tokFile.Line(c.Pos()) > pkgLine {
-				break
-			}
-			pos = c.End()
-		}
-
-		// Construct the import block.
-		impDecl := &ast.GenDecl{
-			Tok:    token.IMPORT,
-			TokPos: pos,
-			Lparen: pos,
-			Rparen: pos,
-		}
-		for _, importPath := range importPaths {
-			impDecl.Specs = append(impDecl.Specs, &ast.ImportSpec{
-				Name: &ast.Ident{
-					Name:    importPath[0],
-					NamePos: pos,
-				},
-				Path: &ast.BasicLit{
-					Kind:     token.STRING,
-					Value:    strconv.Quote(importPath[1]),
-					ValuePos: pos,
-				},
-				EndPos: pos,
-			})
-		}
-		file.Decls = append([]ast.Decl{impDecl}, file.Decls...)
-	}
-
-	var out bytes.Buffer
-	if err = (&printer.Config{Mode: printer.TabIndent | printer.UseSpaces, Tabwidth: 8}).Fprint(&out, fset, file); err != nil {
-		return nil, fmt.Errorf("%v: can not reformat Go source: %v", g.filename, err)
-	}
-	return out.Bytes(), nil
-}
-
-// metaFile returns the contents of the file's metadata file, which is a
-// text formatted string of the google.protobuf.GeneratedCodeInfo.
-func (g *GeneratedFile) metaFile(content []byte) (string, error) {
-	fset := token.NewFileSet()
-	astFile, err := parser.ParseFile(fset, "", content, 0)
-	if err != nil {
-		return "", err
-	}
-	info := &descriptorpb.GeneratedCodeInfo{}
-
-	seenAnnotations := make(map[string]bool)
-	annotate := func(s string, ident *ast.Ident) {
-		seenAnnotations[s] = true
-		for _, loc := range g.annotations[s] {
-			info.Annotation = append(info.Annotation, &descriptorpb.GeneratedCodeInfo_Annotation{
-				SourceFile: proto.String(loc.SourceFile),
-				Path:       loc.Path,
-				Begin:      proto.Int32(int32(fset.Position(ident.Pos()).Offset)),
-				End:        proto.Int32(int32(fset.Position(ident.End()).Offset)),
-			})
-		}
-	}
-	for _, decl := range astFile.Decls {
-		switch decl := decl.(type) {
-		case *ast.GenDecl:
-			for _, spec := range decl.Specs {
-				switch spec := spec.(type) {
-				case *ast.TypeSpec:
-					annotate(spec.Name.Name, spec.Name)
-					switch st := spec.Type.(type) {
-					case *ast.StructType:
-						for _, field := range st.Fields.List {
-							for _, name := range field.Names {
-								annotate(spec.Name.Name+"."+name.Name, name)
-							}
-						}
-					case *ast.InterfaceType:
-						for _, field := range st.Methods.List {
-							for _, name := range field.Names {
-								annotate(spec.Name.Name+"."+name.Name, name)
-							}
-						}
-					}
-				case *ast.ValueSpec:
-					for _, name := range spec.Names {
-						annotate(name.Name, name)
-					}
-				}
-			}
-		case *ast.FuncDecl:
-			if decl.Recv == nil {
-				annotate(decl.Name.Name, decl.Name)
-			} else {
-				recv := decl.Recv.List[0].Type
-				if s, ok := recv.(*ast.StarExpr); ok {
-					recv = s.X
-				}
-				if id, ok := recv.(*ast.Ident); ok {
-					annotate(id.Name+"."+decl.Name.Name, decl.Name)
-				}
-			}
-		}
-	}
-	for a := range g.annotations {
-		if !seenAnnotations[a] {
-			return "", fmt.Errorf("%v: no symbol matching annotation %q", g.filename, a)
-		}
-	}
-
-	b, err := prototext.Marshal(info)
-	if err != nil {
-		return "", err
-	}
-	return string(b), nil
-}
-
-// A GoIdent is a Go identifier, consisting of a name and import path.
-// The name is a single identifier and may not be a dot-qualified selector.
-type GoIdent struct {
-	GoName       string
-	GoImportPath GoImportPath
-}
-
-func (id GoIdent) String() string { return fmt.Sprintf("%q.%v", id.GoImportPath, id.GoName) }
-
-// newGoIdent returns the Go identifier for a descriptor.
-func newGoIdent(f *File, d protoreflect.Descriptor) GoIdent {
-	name := strings.TrimPrefix(string(d.FullName()), string(f.Desc.Package())+".")
-	return GoIdent{
-		GoName:       strs.GoCamelCase(name),
-		GoImportPath: f.GoImportPath,
-	}
-}
-
-// A GoImportPath is the import path of a Go package.
-// For example: "google.golang.org/protobuf/compiler/protogen"
-type GoImportPath string
-
-func (p GoImportPath) String() string { return strconv.Quote(string(p)) }
-
-// Ident returns a GoIdent with s as the GoName and p as the GoImportPath.
-func (p GoImportPath) Ident(s string) GoIdent {
-	return GoIdent{GoName: s, GoImportPath: p}
-}
-
-// A GoPackageName is the name of a Go package. e.g., "protobuf".
-type GoPackageName string
-
-// cleanPackageName converts a string to a valid Go package name.
-func cleanPackageName(name string) GoPackageName {
-	return GoPackageName(strs.GoSanitized(name))
-}
-
-type pathType int
-
-const (
-	pathTypeImport pathType = iota
-	pathTypeSourceRelative
-)
-
-// A Location is a location in a .proto source file.
-//
-// See the google.protobuf.SourceCodeInfo documentation in descriptor.proto
-// for details.
-type Location struct {
-	SourceFile string
-	Path       protoreflect.SourcePath
-}
-
-// appendPath add elements to a Location's path, returning a new Location.
-func (loc Location) appendPath(num protoreflect.FieldNumber, idx int) Location {
-	loc.Path = append(protoreflect.SourcePath(nil), loc.Path...) // make copy
-	loc.Path = append(loc.Path, int32(num), int32(idx))
-	return loc
-}
-
-// CommentSet is a set of leading and trailing comments associated
-// with a .proto descriptor declaration.
-type CommentSet struct {
-	LeadingDetached []Comments
-	Leading         Comments
-	Trailing        Comments
-}
-
-func makeCommentSet(loc protoreflect.SourceLocation) CommentSet {
-	var leadingDetached []Comments
-	for _, s := range loc.LeadingDetachedComments {
-		leadingDetached = append(leadingDetached, Comments(s))
-	}
-	return CommentSet{
-		LeadingDetached: leadingDetached,
-		Leading:         Comments(loc.LeadingComments),
-		Trailing:        Comments(loc.TrailingComments),
-	}
-}
-
-// Comments is a comments string as provided by protoc.
-type Comments string
-
-// String formats the comments by inserting // to the start of each line,
-// ensuring that there is a trailing newline.
-// An empty comment is formatted as an empty string.
-func (c Comments) String() string {
-	if c == "" {
-		return ""
-	}
-	var b []byte
-	for _, line := range strings.Split(strings.TrimSuffix(string(c), "\n"), "\n") {
-		b = append(b, "//"...)
-		b = append(b, line...)
-		b = append(b, "\n"...)
-	}
-	return string(b)
-}
diff --git a/compiler/protogen/protogen_test.go b/compiler/protogen/protogen_test.go
deleted file mode 100644
index 4f5ceed..0000000
--- a/compiler/protogen/protogen_test.go
+++ /dev/null
@@ -1,346 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protogen
-
-import (
-	"flag"
-	"fmt"
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoreflect"
-
-	"google.golang.org/protobuf/types/descriptorpb"
-	"google.golang.org/protobuf/types/pluginpb"
-)
-
-func TestPluginParameters(t *testing.T) {
-	var flags flag.FlagSet
-	value := flags.Int("integer", 0, "")
-	const params = "integer=2"
-	_, err := Options{
-		ParamFunc: flags.Set,
-	}.New(&pluginpb.CodeGeneratorRequest{
-		Parameter: proto.String(params),
-	})
-	if err != nil {
-		t.Errorf("New(generator parameters %q): %v", params, err)
-	}
-	if *value != 2 {
-		t.Errorf("New(generator parameters %q): integer=%v, want 2", params, *value)
-	}
-}
-
-func TestPluginParameterErrors(t *testing.T) {
-	for _, parameter := range []string{
-		"unknown=1",
-		"boolean=error",
-	} {
-		var flags flag.FlagSet
-		flags.Bool("boolean", false, "")
-		_, err := Options{
-			ParamFunc: flags.Set,
-		}.New(&pluginpb.CodeGeneratorRequest{
-			Parameter: proto.String(parameter),
-		})
-		if err == nil {
-			t.Errorf("New(generator parameters %q): want error, got nil", parameter)
-		}
-	}
-}
-
-func TestNoGoPackage(t *testing.T) {
-	_, err := Options{}.New(&pluginpb.CodeGeneratorRequest{
-		ProtoFile: []*descriptorpb.FileDescriptorProto{
-			{
-				Name:    proto.String("testdata/go_package/no_go_package.proto"),
-				Syntax:  proto.String(protoreflect.Proto3.String()),
-				Package: proto.String("goproto.testdata"),
-			},
-		},
-	})
-	if err == nil {
-		t.Fatalf("missing go_package option: New(req) = nil, want error")
-	}
-}
-
-func TestInvalidImportPath(t *testing.T) {
-	_, err := Options{}.New(&pluginpb.CodeGeneratorRequest{
-		ProtoFile: []*descriptorpb.FileDescriptorProto{
-			{
-				Name:    proto.String("testdata/go_package/no_go_package.proto"),
-				Syntax:  proto.String(protoreflect.Proto3.String()),
-				Package: proto.String("goproto.testdata"),
-				Options: &descriptorpb.FileOptions{
-					GoPackage: proto.String("foo"),
-				},
-			},
-		},
-	})
-	if err == nil {
-		t.Fatalf("missing go_package option: New(req) = nil, want error")
-	}
-}
-
-func TestPackageNamesAndPaths(t *testing.T) {
-	const (
-		filename         = "dir/filename.proto"
-		protoPackageName = "proto.package"
-	)
-	for _, test := range []struct {
-		desc            string
-		parameter       string
-		goPackageOption string
-		generate        bool
-		wantPackageName GoPackageName
-		wantImportPath  GoImportPath
-		wantFilename    string
-	}{
-		{
-			desc:            "go_package option sets import path",
-			goPackageOption: "golang.org/x/foo",
-			generate:        true,
-			wantPackageName: "foo",
-			wantImportPath:  "golang.org/x/foo",
-			wantFilename:    "golang.org/x/foo/filename",
-		},
-		{
-			desc:            "go_package option sets import path without slashes",
-			goPackageOption: "golang.org;foo",
-			generate:        true,
-			wantPackageName: "foo",
-			wantImportPath:  "golang.org",
-			wantFilename:    "golang.org/filename",
-		},
-		{
-			desc:            "go_package option sets import path and package",
-			goPackageOption: "golang.org/x/foo;bar",
-			generate:        true,
-			wantPackageName: "bar",
-			wantImportPath:  "golang.org/x/foo",
-			wantFilename:    "golang.org/x/foo/filename",
-		},
-		{
-			desc:            "command line sets import path for a file",
-			parameter:       "Mdir/filename.proto=golang.org/x/bar",
-			goPackageOption: "golang.org/x/foo",
-			generate:        true,
-			wantPackageName: "foo",
-			wantImportPath:  "golang.org/x/bar",
-			wantFilename:    "golang.org/x/bar/filename",
-		},
-		{
-			desc:            "command line sets import path for a file with package name specified",
-			parameter:       "Mdir/filename.proto=golang.org/x/bar;bar",
-			goPackageOption: "golang.org/x/foo",
-			generate:        true,
-			wantPackageName: "bar",
-			wantImportPath:  "golang.org/x/bar",
-			wantFilename:    "golang.org/x/bar/filename",
-		},
-		{
-			desc:            "module option set",
-			parameter:       "module=golang.org/x",
-			goPackageOption: "golang.org/x/foo",
-			generate:        false,
-			wantPackageName: "foo",
-			wantImportPath:  "golang.org/x/foo",
-			wantFilename:    "foo/filename",
-		},
-		{
-			desc:            "paths=import uses import path from command line",
-			parameter:       "paths=import,Mdir/filename.proto=golang.org/x/bar",
-			goPackageOption: "golang.org/x/foo",
-			generate:        true,
-			wantPackageName: "foo",
-			wantImportPath:  "golang.org/x/bar",
-			wantFilename:    "golang.org/x/bar/filename",
-		},
-		{
-			desc:            "module option implies paths=import",
-			parameter:       "module=golang.org/x,Mdir/filename.proto=golang.org/x/foo",
-			generate:        false,
-			wantPackageName: "foo",
-			wantImportPath:  "golang.org/x/foo",
-			wantFilename:    "foo/filename",
-		},
-	} {
-		context := fmt.Sprintf(`
-TEST: %v
-  --go_out=%v:.
-  file %q: generate=%v
-  option go_package = %q;
-
-  `,
-			test.desc, test.parameter, filename, test.generate, test.goPackageOption)
-
-		req := &pluginpb.CodeGeneratorRequest{
-			Parameter: proto.String(test.parameter),
-			ProtoFile: []*descriptorpb.FileDescriptorProto{
-				{
-					Name:    proto.String(filename),
-					Package: proto.String(protoPackageName),
-					Options: &descriptorpb.FileOptions{
-						GoPackage: proto.String(test.goPackageOption),
-					},
-				},
-			},
-		}
-		if test.generate {
-			req.FileToGenerate = []string{filename}
-		}
-		gen, err := Options{}.New(req)
-		if err != nil {
-			t.Errorf("%vNew(req) = %v", context, err)
-			continue
-		}
-		gotFile, ok := gen.FilesByPath[filename]
-		if !ok {
-			t.Errorf("%v%v: missing file info", context, filename)
-			continue
-		}
-		if got, want := gotFile.GoPackageName, test.wantPackageName; got != want {
-			t.Errorf("%vGoPackageName=%v, want %v", context, got, want)
-		}
-		if got, want := gotFile.GoImportPath, test.wantImportPath; got != want {
-			t.Errorf("%vGoImportPath=%v, want %v", context, got, want)
-		}
-		gen.NewGeneratedFile(gotFile.GeneratedFilenamePrefix, "")
-		resp := gen.Response()
-		if got, want := resp.File[0].GetName(), test.wantFilename; got != want {
-			t.Errorf("%vgenerated filename=%v, want %v", context, got, want)
-		}
-	}
-}
-
-func TestPackageNameInference(t *testing.T) {
-	gen, err := Options{}.New(&pluginpb.CodeGeneratorRequest{
-		Parameter: proto.String("Mdir/file1.proto=path/to/file1"),
-		ProtoFile: []*descriptorpb.FileDescriptorProto{
-			{
-				Name:    proto.String("dir/file1.proto"),
-				Package: proto.String("proto.package"),
-			},
-			{
-				Name:    proto.String("dir/file2.proto"),
-				Package: proto.String("proto.package"),
-				Options: &descriptorpb.FileOptions{
-					GoPackage: proto.String("path/to/file2"),
-				},
-			},
-		},
-		FileToGenerate: []string{"dir/file1.proto", "dir/file2.proto"},
-	})
-	if err != nil {
-		t.Fatalf("New(req) = %v", err)
-	}
-	if f1, ok := gen.FilesByPath["dir/file1.proto"]; !ok {
-		t.Errorf("missing file info for dir/file1.proto")
-	} else if f1.GoPackageName != "file1" {
-		t.Errorf("dir/file1.proto: GoPackageName=%v, want foo; package name should be derived from dir/file2.proto", f1.GoPackageName)
-	}
-}
-
-func TestInconsistentPackageNames(t *testing.T) {
-	_, err := Options{}.New(&pluginpb.CodeGeneratorRequest{
-		ProtoFile: []*descriptorpb.FileDescriptorProto{
-			{
-				Name:    proto.String("dir/file1.proto"),
-				Package: proto.String("proto.package"),
-				Options: &descriptorpb.FileOptions{
-					GoPackage: proto.String("golang.org/x/foo"),
-				},
-			},
-			{
-				Name:    proto.String("dir/file2.proto"),
-				Package: proto.String("proto.package"),
-				Options: &descriptorpb.FileOptions{
-					GoPackage: proto.String("golang.org/x/foo;bar"),
-				},
-			},
-		},
-		FileToGenerate: []string{"dir/file1.proto", "dir/file2.proto"},
-	})
-	if err == nil {
-		t.Fatalf("inconsistent package names for the same import path: New(req) = nil, want error")
-	}
-}
-
-func TestImports(t *testing.T) {
-	gen, err := Options{}.New(&pluginpb.CodeGeneratorRequest{})
-	if err != nil {
-		t.Fatal(err)
-	}
-	g := gen.NewGeneratedFile("foo.go", "golang.org/x/foo")
-	g.P("package foo")
-	g.P()
-	for _, importPath := range []GoImportPath{
-		"golang.org/x/foo",
-		// Multiple references to the same package.
-		"golang.org/x/bar",
-		"golang.org/x/bar",
-		// Reference to a different package with the same basename.
-		"golang.org/y/bar",
-		"golang.org/x/baz",
-		// Reference to a package conflicting with a predeclared identifier.
-		"golang.org/z/string",
-	} {
-		g.P("var _ = ", GoIdent{GoName: "X", GoImportPath: importPath}, " // ", importPath)
-	}
-	want := `package foo
-
-import (
-	bar "golang.org/x/bar"
-	baz "golang.org/x/baz"
-	bar1 "golang.org/y/bar"
-	string1 "golang.org/z/string"
-)
-
-var _ = X         // "golang.org/x/foo"
-var _ = bar.X     // "golang.org/x/bar"
-var _ = bar.X     // "golang.org/x/bar"
-var _ = bar1.X    // "golang.org/y/bar"
-var _ = baz.X     // "golang.org/x/baz"
-var _ = string1.X // "golang.org/z/string"
-`
-	got, err := g.Content()
-	if err != nil {
-		t.Fatalf("g.Content() = %v", err)
-	}
-	if diff := cmp.Diff(string(want), string(got)); diff != "" {
-		t.Fatalf("content mismatch (-want +got):\n%s", diff)
-	}
-}
-
-func TestImportRewrites(t *testing.T) {
-	gen, err := Options{
-		ImportRewriteFunc: func(i GoImportPath) GoImportPath {
-			return "prefix/" + i
-		},
-	}.New(&pluginpb.CodeGeneratorRequest{})
-	if err != nil {
-		t.Fatal(err)
-	}
-	g := gen.NewGeneratedFile("foo.go", "golang.org/x/foo")
-	g.P("package foo")
-	g.P("var _ = ", GoIdent{GoName: "X", GoImportPath: "golang.org/x/bar"})
-	want := `package foo
-
-import (
-	bar "prefix/golang.org/x/bar"
-)
-
-var _ = bar.X
-`
-	got, err := g.Content()
-	if err != nil {
-		t.Fatalf("g.Content() = %v", err)
-	}
-	if diff := cmp.Diff(string(want), string(got)); diff != "" {
-		t.Fatalf("content mismatch (-want +got):\n%s", diff)
-	}
-}
diff --git a/descriptor/descriptor.go b/descriptor/descriptor.go
new file mode 100644
index 0000000..ac7e51b
--- /dev/null
+++ b/descriptor/descriptor.go
@@ -0,0 +1,93 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2016 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Package descriptor provides functions for obtaining protocol buffer
+// descriptors for generated Go types.
+//
+// These functions cannot go in package proto because they depend on the
+// generated protobuf descriptor messages, which themselves depend on proto.
+package descriptor
+
+import (
+	"bytes"
+	"compress/gzip"
+	"fmt"
+	"io/ioutil"
+
+	"github.com/golang/protobuf/proto"
+	protobuf "github.com/golang/protobuf/protoc-gen-go/descriptor"
+)
+
+// extractFile extracts a FileDescriptorProto from a gzip'd buffer.
+func extractFile(gz []byte) (*protobuf.FileDescriptorProto, error) {
+	r, err := gzip.NewReader(bytes.NewReader(gz))
+	if err != nil {
+		return nil, fmt.Errorf("failed to open gzip reader: %v", err)
+	}
+	defer r.Close()
+
+	b, err := ioutil.ReadAll(r)
+	if err != nil {
+		return nil, fmt.Errorf("failed to uncompress descriptor: %v", err)
+	}
+
+	fd := new(protobuf.FileDescriptorProto)
+	if err := proto.Unmarshal(b, fd); err != nil {
+		return nil, fmt.Errorf("malformed FileDescriptorProto: %v", err)
+	}
+
+	return fd, nil
+}
+
+// Message is a proto.Message with a method to return its descriptor.
+//
+// Message types generated by the protocol compiler always satisfy
+// the Message interface.
+type Message interface {
+	proto.Message
+	Descriptor() ([]byte, []int)
+}
+
+// ForMessage returns a FileDescriptorProto and a DescriptorProto from within it
+// describing the given message.
+func ForMessage(msg Message) (fd *protobuf.FileDescriptorProto, md *protobuf.DescriptorProto) {
+	gz, path := msg.Descriptor()
+	fd, err := extractFile(gz)
+	if err != nil {
+		panic(fmt.Sprintf("invalid FileDescriptorProto for %T: %v", msg, err))
+	}
+
+	md = fd.MessageType[path[0]]
+	for _, i := range path[1:] {
+		md = md.NestedType[i]
+	}
+	return fd, md
+}
diff --git a/descriptor/descriptor_test.go b/descriptor/descriptor_test.go
new file mode 100644
index 0000000..bf5174d
--- /dev/null
+++ b/descriptor/descriptor_test.go
@@ -0,0 +1,32 @@
+package descriptor_test
+
+import (
+	"fmt"
+	"testing"
+
+	"github.com/golang/protobuf/descriptor"
+	tpb "github.com/golang/protobuf/proto/test_proto"
+	protobuf "github.com/golang/protobuf/protoc-gen-go/descriptor"
+)
+
+func TestMessage(t *testing.T) {
+	var msg *protobuf.DescriptorProto
+	fd, md := descriptor.ForMessage(msg)
+	if pkg, want := fd.GetPackage(), "google.protobuf"; pkg != want {
+		t.Errorf("descriptor.ForMessage(%T).GetPackage() = %q; want %q", msg, pkg, want)
+	}
+	if name, want := md.GetName(), "DescriptorProto"; name != want {
+		t.Fatalf("descriptor.ForMessage(%T).GetName() = %q; want %q", msg, name, want)
+	}
+}
+
+func Example_options() {
+	var msg *tpb.MyMessageSet
+	_, md := descriptor.ForMessage(msg)
+	if md.GetOptions().GetMessageSetWireFormat() {
+		fmt.Printf("%v uses option message_set_wire_format.\n", md.GetName())
+	}
+
+	// Output:
+	// MyMessageSet uses option message_set_wire_format.
+}
diff --git a/encoding/bench_test.go b/encoding/bench_test.go
deleted file mode 100644
index 490656b..0000000
--- a/encoding/bench_test.go
+++ /dev/null
@@ -1,175 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package encoding_test
-
-import (
-	"fmt"
-	"testing"
-
-	"google.golang.org/protobuf/encoding/protojson"
-	"google.golang.org/protobuf/encoding/prototext"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-
-	tpb "google.golang.org/protobuf/internal/testprotos/test"
-)
-
-// The results of these microbenchmarks are unlikely to correspond well
-// to real world peformance. They are mainly useful as a quick check to
-// detect unexpected regressions and for profiling specific cases.
-
-const maxRecurseLevel = 3
-
-func makeProto() *tpb.TestAllTypes {
-	m := &tpb.TestAllTypes{}
-	fillMessage(m.ProtoReflect(), 0)
-	return m
-}
-
-func fillMessage(m pref.Message, level int) {
-	if level > maxRecurseLevel {
-		return
-	}
-
-	fieldDescs := m.Descriptor().Fields()
-	for i := 0; i < fieldDescs.Len(); i++ {
-		fd := fieldDescs.Get(i)
-		switch {
-		case fd.IsList():
-			setList(m.Mutable(fd).List(), fd, level)
-		case fd.IsMap():
-			setMap(m.Mutable(fd).Map(), fd, level)
-		default:
-			setScalarField(m, fd, level)
-		}
-	}
-}
-
-func setScalarField(m pref.Message, fd pref.FieldDescriptor, level int) {
-	switch fd.Kind() {
-	case pref.MessageKind, pref.GroupKind:
-		val := m.NewField(fd)
-		fillMessage(val.Message(), level+1)
-		m.Set(fd, val)
-	default:
-		m.Set(fd, scalarField(fd.Kind()))
-	}
-}
-
-func scalarField(kind pref.Kind) pref.Value {
-	switch kind {
-	case pref.BoolKind:
-		return pref.ValueOfBool(true)
-
-	case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
-		return pref.ValueOfInt32(1 << 30)
-
-	case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
-		return pref.ValueOfInt64(1 << 30)
-
-	case pref.Uint32Kind, pref.Fixed32Kind:
-		return pref.ValueOfUint32(1 << 30)
-
-	case pref.Uint64Kind, pref.Fixed64Kind:
-		return pref.ValueOfUint64(1 << 30)
-
-	case pref.FloatKind:
-		return pref.ValueOfFloat32(3.14159265)
-
-	case pref.DoubleKind:
-		return pref.ValueOfFloat64(3.14159265)
-
-	case pref.BytesKind:
-		return pref.ValueOfBytes([]byte("hello world"))
-
-	case pref.StringKind:
-		return pref.ValueOfString("hello world")
-
-	case pref.EnumKind:
-		return pref.ValueOfEnum(42)
-	}
-
-	panic(fmt.Sprintf("FieldDescriptor.Kind %v is not valid", kind))
-}
-
-func setList(list pref.List, fd pref.FieldDescriptor, level int) {
-	switch fd.Kind() {
-	case pref.MessageKind, pref.GroupKind:
-		for i := 0; i < 10; i++ {
-			val := list.NewElement()
-			fillMessage(val.Message(), level+1)
-			list.Append(val)
-		}
-	default:
-		for i := 0; i < 100; i++ {
-			list.Append(scalarField(fd.Kind()))
-		}
-	}
-}
-
-func setMap(mmap pref.Map, fd pref.FieldDescriptor, level int) {
-	fields := fd.Message().Fields()
-	keyDesc := fields.ByNumber(1)
-	valDesc := fields.ByNumber(2)
-
-	pkey := scalarField(keyDesc.Kind())
-	switch kind := valDesc.Kind(); kind {
-	case pref.MessageKind, pref.GroupKind:
-		val := mmap.NewValue()
-		fillMessage(val.Message(), level+1)
-		mmap.Set(pkey.MapKey(), val)
-	default:
-		mmap.Set(pkey.MapKey(), scalarField(kind))
-	}
-}
-
-func BenchmarkTextEncode(b *testing.B) {
-	m := makeProto()
-	for i := 0; i < b.N; i++ {
-		_, err := prototext.MarshalOptions{Indent: "  "}.Marshal(m)
-		if err != nil {
-			b.Fatal(err)
-		}
-	}
-}
-
-func BenchmarkTextDecode(b *testing.B) {
-	m := makeProto()
-	in, err := prototext.MarshalOptions{Indent: "  "}.Marshal(m)
-	if err != nil {
-		b.Fatal(err)
-	}
-
-	for i := 0; i < b.N; i++ {
-		m := &tpb.TestAllTypes{}
-		if err := prototext.Unmarshal(in, m); err != nil {
-			b.Fatal(err)
-		}
-	}
-}
-
-func BenchmarkJSONEncode(b *testing.B) {
-	m := makeProto()
-	for i := 0; i < b.N; i++ {
-		_, err := protojson.MarshalOptions{Indent: "  "}.Marshal(m)
-		if err != nil {
-			b.Fatal(err)
-		}
-	}
-}
-
-func BenchmarkJSONDecode(b *testing.B) {
-	m := makeProto()
-	out, err := protojson.MarshalOptions{Indent: "  "}.Marshal(m)
-	if err != nil {
-		b.Fatal(err)
-	}
-
-	for i := 0; i < b.N; i++ {
-		m := &tpb.TestAllTypes{}
-		if err := protojson.Unmarshal(out, m); err != nil {
-			b.Fatal(err)
-		}
-	}
-}
diff --git a/encoding/protojson/bench_test.go b/encoding/protojson/bench_test.go
deleted file mode 100644
index 8d5a0bb..0000000
--- a/encoding/protojson/bench_test.go
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protojson_test
-
-import (
-	"testing"
-
-	"google.golang.org/protobuf/encoding/protojson"
-
-	"google.golang.org/protobuf/types/known/durationpb"
-)
-
-func BenchmarkUnmarshal_Duration(b *testing.B) {
-	input := []byte(`"-123456789.123456789s"`)
-
-	for i := 0; i < b.N; i++ {
-		err := protojson.Unmarshal(input, &durationpb.Duration{})
-		if err != nil {
-			b.Fatal(err)
-		}
-	}
-}
diff --git a/encoding/protojson/decode.go b/encoding/protojson/decode.go
deleted file mode 100644
index 07da5db..0000000
--- a/encoding/protojson/decode.go
+++ /dev/null
@@ -1,665 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protojson
-
-import (
-	"encoding/base64"
-	"fmt"
-	"math"
-	"strconv"
-	"strings"
-
-	"google.golang.org/protobuf/internal/encoding/json"
-	"google.golang.org/protobuf/internal/encoding/messageset"
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/internal/flags"
-	"google.golang.org/protobuf/internal/genid"
-	"google.golang.org/protobuf/internal/pragma"
-	"google.golang.org/protobuf/internal/set"
-	"google.golang.org/protobuf/proto"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/reflect/protoregistry"
-)
-
-// Unmarshal reads the given []byte into the given proto.Message.
-// The provided message must be mutable (e.g., a non-nil pointer to a message).
-func Unmarshal(b []byte, m proto.Message) error {
-	return UnmarshalOptions{}.Unmarshal(b, m)
-}
-
-// UnmarshalOptions is a configurable JSON format parser.
-type UnmarshalOptions struct {
-	pragma.NoUnkeyedLiterals
-
-	// If AllowPartial is set, input for messages that will result in missing
-	// required fields will not return an error.
-	AllowPartial bool
-
-	// If DiscardUnknown is set, unknown fields are ignored.
-	DiscardUnknown bool
-
-	// Resolver is used for looking up types when unmarshaling
-	// google.protobuf.Any messages or extension fields.
-	// If nil, this defaults to using protoregistry.GlobalTypes.
-	Resolver interface {
-		protoregistry.MessageTypeResolver
-		protoregistry.ExtensionTypeResolver
-	}
-}
-
-// Unmarshal reads the given []byte and populates the given proto.Message
-// using options in the UnmarshalOptions object.
-// It will clear the message first before setting the fields.
-// If it returns an error, the given message may be partially set.
-// The provided message must be mutable (e.g., a non-nil pointer to a message).
-func (o UnmarshalOptions) Unmarshal(b []byte, m proto.Message) error {
-	return o.unmarshal(b, m)
-}
-
-// unmarshal is a centralized function that all unmarshal operations go through.
-// For profiling purposes, avoid changing the name of this function or
-// introducing other code paths for unmarshal that do not go through this.
-func (o UnmarshalOptions) unmarshal(b []byte, m proto.Message) error {
-	proto.Reset(m)
-
-	if o.Resolver == nil {
-		o.Resolver = protoregistry.GlobalTypes
-	}
-
-	dec := decoder{json.NewDecoder(b), o}
-	if err := dec.unmarshalMessage(m.ProtoReflect(), false); err != nil {
-		return err
-	}
-
-	// Check for EOF.
-	tok, err := dec.Read()
-	if err != nil {
-		return err
-	}
-	if tok.Kind() != json.EOF {
-		return dec.unexpectedTokenError(tok)
-	}
-
-	if o.AllowPartial {
-		return nil
-	}
-	return proto.CheckInitialized(m)
-}
-
-type decoder struct {
-	*json.Decoder
-	opts UnmarshalOptions
-}
-
-// newError returns an error object with position info.
-func (d decoder) newError(pos int, f string, x ...interface{}) error {
-	line, column := d.Position(pos)
-	head := fmt.Sprintf("(line %d:%d): ", line, column)
-	return errors.New(head+f, x...)
-}
-
-// unexpectedTokenError returns a syntax error for the given unexpected token.
-func (d decoder) unexpectedTokenError(tok json.Token) error {
-	return d.syntaxError(tok.Pos(), "unexpected token %s", tok.RawString())
-}
-
-// syntaxError returns a syntax error for given position.
-func (d decoder) syntaxError(pos int, f string, x ...interface{}) error {
-	line, column := d.Position(pos)
-	head := fmt.Sprintf("syntax error (line %d:%d): ", line, column)
-	return errors.New(head+f, x...)
-}
-
-// unmarshalMessage unmarshals a message into the given protoreflect.Message.
-func (d decoder) unmarshalMessage(m pref.Message, skipTypeURL bool) error {
-	if unmarshal := wellKnownTypeUnmarshaler(m.Descriptor().FullName()); unmarshal != nil {
-		return unmarshal(d, m)
-	}
-
-	tok, err := d.Read()
-	if err != nil {
-		return err
-	}
-	if tok.Kind() != json.ObjectOpen {
-		return d.unexpectedTokenError(tok)
-	}
-
-	messageDesc := m.Descriptor()
-	if !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) {
-		return errors.New("no support for proto1 MessageSets")
-	}
-
-	var seenNums set.Ints
-	var seenOneofs set.Ints
-	fieldDescs := messageDesc.Fields()
-	for {
-		// Read field name.
-		tok, err := d.Read()
-		if err != nil {
-			return err
-		}
-		switch tok.Kind() {
-		default:
-			return d.unexpectedTokenError(tok)
-		case json.ObjectClose:
-			return nil
-		case json.Name:
-			// Continue below.
-		}
-
-		name := tok.Name()
-		// Unmarshaling a non-custom embedded message in Any will contain the
-		// JSON field "@type" which should be skipped because it is not a field
-		// of the embedded message, but simply an artifact of the Any format.
-		if skipTypeURL && name == "@type" {
-			d.Read()
-			continue
-		}
-
-		// Get the FieldDescriptor.
-		var fd pref.FieldDescriptor
-		if strings.HasPrefix(name, "[") && strings.HasSuffix(name, "]") {
-			// Only extension names are in [name] format.
-			extName := pref.FullName(name[1 : len(name)-1])
-			extType, err := d.opts.Resolver.FindExtensionByName(extName)
-			if err != nil && err != protoregistry.NotFound {
-				return d.newError(tok.Pos(), "unable to resolve %s: %v", tok.RawString(), err)
-			}
-			if extType != nil {
-				fd = extType.TypeDescriptor()
-				if !messageDesc.ExtensionRanges().Has(fd.Number()) || fd.ContainingMessage().FullName() != messageDesc.FullName() {
-					return d.newError(tok.Pos(), "message %v cannot be extended by %v", messageDesc.FullName(), fd.FullName())
-				}
-			}
-		} else {
-			// The name can either be the JSON name or the proto field name.
-			fd = fieldDescs.ByJSONName(name)
-			if fd == nil {
-				fd = fieldDescs.ByTextName(name)
-			}
-		}
-		if flags.ProtoLegacy {
-			if fd != nil && fd.IsWeak() && fd.Message().IsPlaceholder() {
-				fd = nil // reset since the weak reference is not linked in
-			}
-		}
-
-		if fd == nil {
-			// Field is unknown.
-			if d.opts.DiscardUnknown {
-				if err := d.skipJSONValue(); err != nil {
-					return err
-				}
-				continue
-			}
-			return d.newError(tok.Pos(), "unknown field %v", tok.RawString())
-		}
-
-		// Do not allow duplicate fields.
-		num := uint64(fd.Number())
-		if seenNums.Has(num) {
-			return d.newError(tok.Pos(), "duplicate field %v", tok.RawString())
-		}
-		seenNums.Set(num)
-
-		// No need to set values for JSON null unless the field type is
-		// google.protobuf.Value or google.protobuf.NullValue.
-		if tok, _ := d.Peek(); tok.Kind() == json.Null && !isKnownValue(fd) && !isNullValue(fd) {
-			d.Read()
-			continue
-		}
-
-		switch {
-		case fd.IsList():
-			list := m.Mutable(fd).List()
-			if err := d.unmarshalList(list, fd); err != nil {
-				return err
-			}
-		case fd.IsMap():
-			mmap := m.Mutable(fd).Map()
-			if err := d.unmarshalMap(mmap, fd); err != nil {
-				return err
-			}
-		default:
-			// If field is a oneof, check if it has already been set.
-			if od := fd.ContainingOneof(); od != nil {
-				idx := uint64(od.Index())
-				if seenOneofs.Has(idx) {
-					return d.newError(tok.Pos(), "error parsing %s, oneof %v is already set", tok.RawString(), od.FullName())
-				}
-				seenOneofs.Set(idx)
-			}
-
-			// Required or optional fields.
-			if err := d.unmarshalSingular(m, fd); err != nil {
-				return err
-			}
-		}
-	}
-}
-
-func isKnownValue(fd pref.FieldDescriptor) bool {
-	md := fd.Message()
-	return md != nil && md.FullName() == genid.Value_message_fullname
-}
-
-func isNullValue(fd pref.FieldDescriptor) bool {
-	ed := fd.Enum()
-	return ed != nil && ed.FullName() == genid.NullValue_enum_fullname
-}
-
-// unmarshalSingular unmarshals to the non-repeated field specified
-// by the given FieldDescriptor.
-func (d decoder) unmarshalSingular(m pref.Message, fd pref.FieldDescriptor) error {
-	var val pref.Value
-	var err error
-	switch fd.Kind() {
-	case pref.MessageKind, pref.GroupKind:
-		val = m.NewField(fd)
-		err = d.unmarshalMessage(val.Message(), false)
-	default:
-		val, err = d.unmarshalScalar(fd)
-	}
-
-	if err != nil {
-		return err
-	}
-	m.Set(fd, val)
-	return nil
-}
-
-// unmarshalScalar unmarshals to a scalar/enum protoreflect.Value specified by
-// the given FieldDescriptor.
-func (d decoder) unmarshalScalar(fd pref.FieldDescriptor) (pref.Value, error) {
-	const b32 int = 32
-	const b64 int = 64
-
-	tok, err := d.Read()
-	if err != nil {
-		return pref.Value{}, err
-	}
-
-	kind := fd.Kind()
-	switch kind {
-	case pref.BoolKind:
-		if tok.Kind() == json.Bool {
-			return pref.ValueOfBool(tok.Bool()), nil
-		}
-
-	case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
-		if v, ok := unmarshalInt(tok, b32); ok {
-			return v, nil
-		}
-
-	case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
-		if v, ok := unmarshalInt(tok, b64); ok {
-			return v, nil
-		}
-
-	case pref.Uint32Kind, pref.Fixed32Kind:
-		if v, ok := unmarshalUint(tok, b32); ok {
-			return v, nil
-		}
-
-	case pref.Uint64Kind, pref.Fixed64Kind:
-		if v, ok := unmarshalUint(tok, b64); ok {
-			return v, nil
-		}
-
-	case pref.FloatKind:
-		if v, ok := unmarshalFloat(tok, b32); ok {
-			return v, nil
-		}
-
-	case pref.DoubleKind:
-		if v, ok := unmarshalFloat(tok, b64); ok {
-			return v, nil
-		}
-
-	case pref.StringKind:
-		if tok.Kind() == json.String {
-			return pref.ValueOfString(tok.ParsedString()), nil
-		}
-
-	case pref.BytesKind:
-		if v, ok := unmarshalBytes(tok); ok {
-			return v, nil
-		}
-
-	case pref.EnumKind:
-		if v, ok := unmarshalEnum(tok, fd); ok {
-			return v, nil
-		}
-
-	default:
-		panic(fmt.Sprintf("unmarshalScalar: invalid scalar kind %v", kind))
-	}
-
-	return pref.Value{}, d.newError(tok.Pos(), "invalid value for %v type: %v", kind, tok.RawString())
-}
-
-func unmarshalInt(tok json.Token, bitSize int) (pref.Value, bool) {
-	switch tok.Kind() {
-	case json.Number:
-		return getInt(tok, bitSize)
-
-	case json.String:
-		// Decode number from string.
-		s := strings.TrimSpace(tok.ParsedString())
-		if len(s) != len(tok.ParsedString()) {
-			return pref.Value{}, false
-		}
-		dec := json.NewDecoder([]byte(s))
-		tok, err := dec.Read()
-		if err != nil {
-			return pref.Value{}, false
-		}
-		return getInt(tok, bitSize)
-	}
-	return pref.Value{}, false
-}
-
-func getInt(tok json.Token, bitSize int) (pref.Value, bool) {
-	n, ok := tok.Int(bitSize)
-	if !ok {
-		return pref.Value{}, false
-	}
-	if bitSize == 32 {
-		return pref.ValueOfInt32(int32(n)), true
-	}
-	return pref.ValueOfInt64(n), true
-}
-
-func unmarshalUint(tok json.Token, bitSize int) (pref.Value, bool) {
-	switch tok.Kind() {
-	case json.Number:
-		return getUint(tok, bitSize)
-
-	case json.String:
-		// Decode number from string.
-		s := strings.TrimSpace(tok.ParsedString())
-		if len(s) != len(tok.ParsedString()) {
-			return pref.Value{}, false
-		}
-		dec := json.NewDecoder([]byte(s))
-		tok, err := dec.Read()
-		if err != nil {
-			return pref.Value{}, false
-		}
-		return getUint(tok, bitSize)
-	}
-	return pref.Value{}, false
-}
-
-func getUint(tok json.Token, bitSize int) (pref.Value, bool) {
-	n, ok := tok.Uint(bitSize)
-	if !ok {
-		return pref.Value{}, false
-	}
-	if bitSize == 32 {
-		return pref.ValueOfUint32(uint32(n)), true
-	}
-	return pref.ValueOfUint64(n), true
-}
-
-func unmarshalFloat(tok json.Token, bitSize int) (pref.Value, bool) {
-	switch tok.Kind() {
-	case json.Number:
-		return getFloat(tok, bitSize)
-
-	case json.String:
-		s := tok.ParsedString()
-		switch s {
-		case "NaN":
-			if bitSize == 32 {
-				return pref.ValueOfFloat32(float32(math.NaN())), true
-			}
-			return pref.ValueOfFloat64(math.NaN()), true
-		case "Infinity":
-			if bitSize == 32 {
-				return pref.ValueOfFloat32(float32(math.Inf(+1))), true
-			}
-			return pref.ValueOfFloat64(math.Inf(+1)), true
-		case "-Infinity":
-			if bitSize == 32 {
-				return pref.ValueOfFloat32(float32(math.Inf(-1))), true
-			}
-			return pref.ValueOfFloat64(math.Inf(-1)), true
-		}
-
-		// Decode number from string.
-		if len(s) != len(strings.TrimSpace(s)) {
-			return pref.Value{}, false
-		}
-		dec := json.NewDecoder([]byte(s))
-		tok, err := dec.Read()
-		if err != nil {
-			return pref.Value{}, false
-		}
-		return getFloat(tok, bitSize)
-	}
-	return pref.Value{}, false
-}
-
-func getFloat(tok json.Token, bitSize int) (pref.Value, bool) {
-	n, ok := tok.Float(bitSize)
-	if !ok {
-		return pref.Value{}, false
-	}
-	if bitSize == 32 {
-		return pref.ValueOfFloat32(float32(n)), true
-	}
-	return pref.ValueOfFloat64(n), true
-}
-
-func unmarshalBytes(tok json.Token) (pref.Value, bool) {
-	if tok.Kind() != json.String {
-		return pref.Value{}, false
-	}
-
-	s := tok.ParsedString()
-	enc := base64.StdEncoding
-	if strings.ContainsAny(s, "-_") {
-		enc = base64.URLEncoding
-	}
-	if len(s)%4 != 0 {
-		enc = enc.WithPadding(base64.NoPadding)
-	}
-	b, err := enc.DecodeString(s)
-	if err != nil {
-		return pref.Value{}, false
-	}
-	return pref.ValueOfBytes(b), true
-}
-
-func unmarshalEnum(tok json.Token, fd pref.FieldDescriptor) (pref.Value, bool) {
-	switch tok.Kind() {
-	case json.String:
-		// Lookup EnumNumber based on name.
-		s := tok.ParsedString()
-		if enumVal := fd.Enum().Values().ByName(pref.Name(s)); enumVal != nil {
-			return pref.ValueOfEnum(enumVal.Number()), true
-		}
-
-	case json.Number:
-		if n, ok := tok.Int(32); ok {
-			return pref.ValueOfEnum(pref.EnumNumber(n)), true
-		}
-
-	case json.Null:
-		// This is only valid for google.protobuf.NullValue.
-		if isNullValue(fd) {
-			return pref.ValueOfEnum(0), true
-		}
-	}
-
-	return pref.Value{}, false
-}
-
-func (d decoder) unmarshalList(list pref.List, fd pref.FieldDescriptor) error {
-	tok, err := d.Read()
-	if err != nil {
-		return err
-	}
-	if tok.Kind() != json.ArrayOpen {
-		return d.unexpectedTokenError(tok)
-	}
-
-	switch fd.Kind() {
-	case pref.MessageKind, pref.GroupKind:
-		for {
-			tok, err := d.Peek()
-			if err != nil {
-				return err
-			}
-
-			if tok.Kind() == json.ArrayClose {
-				d.Read()
-				return nil
-			}
-
-			val := list.NewElement()
-			if err := d.unmarshalMessage(val.Message(), false); err != nil {
-				return err
-			}
-			list.Append(val)
-		}
-	default:
-		for {
-			tok, err := d.Peek()
-			if err != nil {
-				return err
-			}
-
-			if tok.Kind() == json.ArrayClose {
-				d.Read()
-				return nil
-			}
-
-			val, err := d.unmarshalScalar(fd)
-			if err != nil {
-				return err
-			}
-			list.Append(val)
-		}
-	}
-
-	return nil
-}
-
-func (d decoder) unmarshalMap(mmap pref.Map, fd pref.FieldDescriptor) error {
-	tok, err := d.Read()
-	if err != nil {
-		return err
-	}
-	if tok.Kind() != json.ObjectOpen {
-		return d.unexpectedTokenError(tok)
-	}
-
-	// Determine ahead whether map entry is a scalar type or a message type in
-	// order to call the appropriate unmarshalMapValue func inside the for loop
-	// below.
-	var unmarshalMapValue func() (pref.Value, error)
-	switch fd.MapValue().Kind() {
-	case pref.MessageKind, pref.GroupKind:
-		unmarshalMapValue = func() (pref.Value, error) {
-			val := mmap.NewValue()
-			if err := d.unmarshalMessage(val.Message(), false); err != nil {
-				return pref.Value{}, err
-			}
-			return val, nil
-		}
-	default:
-		unmarshalMapValue = func() (pref.Value, error) {
-			return d.unmarshalScalar(fd.MapValue())
-		}
-	}
-
-Loop:
-	for {
-		// Read field name.
-		tok, err := d.Read()
-		if err != nil {
-			return err
-		}
-		switch tok.Kind() {
-		default:
-			return d.unexpectedTokenError(tok)
-		case json.ObjectClose:
-			break Loop
-		case json.Name:
-			// Continue.
-		}
-
-		// Unmarshal field name.
-		pkey, err := d.unmarshalMapKey(tok, fd.MapKey())
-		if err != nil {
-			return err
-		}
-
-		// Check for duplicate field name.
-		if mmap.Has(pkey) {
-			return d.newError(tok.Pos(), "duplicate map key %v", tok.RawString())
-		}
-
-		// Read and unmarshal field value.
-		pval, err := unmarshalMapValue()
-		if err != nil {
-			return err
-		}
-
-		mmap.Set(pkey, pval)
-	}
-
-	return nil
-}
-
-// unmarshalMapKey converts given token of Name kind into a protoreflect.MapKey.
-// A map key type is any integral or string type.
-func (d decoder) unmarshalMapKey(tok json.Token, fd pref.FieldDescriptor) (pref.MapKey, error) {
-	const b32 = 32
-	const b64 = 64
-	const base10 = 10
-
-	name := tok.Name()
-	kind := fd.Kind()
-	switch kind {
-	case pref.StringKind:
-		return pref.ValueOfString(name).MapKey(), nil
-
-	case pref.BoolKind:
-		switch name {
-		case "true":
-			return pref.ValueOfBool(true).MapKey(), nil
-		case "false":
-			return pref.ValueOfBool(false).MapKey(), nil
-		}
-
-	case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
-		if n, err := strconv.ParseInt(name, base10, b32); err == nil {
-			return pref.ValueOfInt32(int32(n)).MapKey(), nil
-		}
-
-	case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
-		if n, err := strconv.ParseInt(name, base10, b64); err == nil {
-			return pref.ValueOfInt64(int64(n)).MapKey(), nil
-		}
-
-	case pref.Uint32Kind, pref.Fixed32Kind:
-		if n, err := strconv.ParseUint(name, base10, b32); err == nil {
-			return pref.ValueOfUint32(uint32(n)).MapKey(), nil
-		}
-
-	case pref.Uint64Kind, pref.Fixed64Kind:
-		if n, err := strconv.ParseUint(name, base10, b64); err == nil {
-			return pref.ValueOfUint64(uint64(n)).MapKey(), nil
-		}
-
-	default:
-		panic(fmt.Sprintf("invalid kind for map key: %v", kind))
-	}
-
-	return pref.MapKey{}, d.newError(tok.Pos(), "invalid value for %v key: %s", kind, tok.RawString())
-}
diff --git a/encoding/protojson/decode_test.go b/encoding/protojson/decode_test.go
deleted file mode 100644
index 4791f65..0000000
--- a/encoding/protojson/decode_test.go
+++ /dev/null
@@ -1,2480 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protojson_test
-
-import (
-	"math"
-	"strings"
-	"testing"
-
-	"google.golang.org/protobuf/encoding/protojson"
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/internal/flags"
-	"google.golang.org/protobuf/proto"
-	preg "google.golang.org/protobuf/reflect/protoregistry"
-
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-	weakpb "google.golang.org/protobuf/internal/testprotos/test/weak1"
-	pb2 "google.golang.org/protobuf/internal/testprotos/textpb2"
-	pb3 "google.golang.org/protobuf/internal/testprotos/textpb3"
-	"google.golang.org/protobuf/types/known/anypb"
-	"google.golang.org/protobuf/types/known/durationpb"
-	"google.golang.org/protobuf/types/known/emptypb"
-	"google.golang.org/protobuf/types/known/fieldmaskpb"
-	"google.golang.org/protobuf/types/known/structpb"
-	"google.golang.org/protobuf/types/known/timestamppb"
-	"google.golang.org/protobuf/types/known/wrapperspb"
-)
-
-func TestUnmarshal(t *testing.T) {
-	tests := []struct {
-		desc         string
-		umo          protojson.UnmarshalOptions
-		inputMessage proto.Message
-		inputText    string
-		wantMessage  proto.Message
-		wantErr      string // Expected error substring.
-		skip         bool
-	}{{
-		desc:         "proto2 empty message",
-		inputMessage: &pb2.Scalars{},
-		inputText:    "{}",
-		wantMessage:  &pb2.Scalars{},
-	}, {
-		desc:         "unexpected value instead of EOF",
-		inputMessage: &pb2.Scalars{},
-		inputText:    "{} {}",
-		wantErr:      `(line 1:4): unexpected token {`,
-	}, {
-		desc:         "proto2 optional scalars set to zero values",
-		inputMessage: &pb2.Scalars{},
-		inputText: `{
-  "optBool": false,
-  "optInt32": 0,
-  "optInt64": 0,
-  "optUint32": 0,
-  "optUint64": 0,
-  "optSint32": 0,
-  "optSint64": 0,
-  "optFixed32": 0,
-  "optFixed64": 0,
-  "optSfixed32": 0,
-  "optSfixed64": 0,
-  "optFloat": 0,
-  "optDouble": 0,
-  "optBytes": "",
-  "optString": ""
-}`,
-		wantMessage: &pb2.Scalars{
-			OptBool:     proto.Bool(false),
-			OptInt32:    proto.Int32(0),
-			OptInt64:    proto.Int64(0),
-			OptUint32:   proto.Uint32(0),
-			OptUint64:   proto.Uint64(0),
-			OptSint32:   proto.Int32(0),
-			OptSint64:   proto.Int64(0),
-			OptFixed32:  proto.Uint32(0),
-			OptFixed64:  proto.Uint64(0),
-			OptSfixed32: proto.Int32(0),
-			OptSfixed64: proto.Int64(0),
-			OptFloat:    proto.Float32(0),
-			OptDouble:   proto.Float64(0),
-			OptBytes:    []byte{},
-			OptString:   proto.String(""),
-		},
-	}, {
-		desc:         "proto3 scalars set to zero values",
-		inputMessage: &pb3.Scalars{},
-		inputText: `{
-  "sBool": false,
-  "sInt32": 0,
-  "sInt64": 0,
-  "sUint32": 0,
-  "sUint64": 0,
-  "sSint32": 0,
-  "sSint64": 0,
-  "sFixed32": 0,
-  "sFixed64": 0,
-  "sSfixed32": 0,
-  "sSfixed64": 0,
-  "sFloat": 0,
-  "sDouble": 0,
-  "sBytes": "",
-  "sString": ""
-}`,
-		wantMessage: &pb3.Scalars{},
-	}, {
-		desc:         "proto3 optional set to zero values",
-		inputMessage: &pb3.Proto3Optional{},
-		inputText: `{
-  "optBool": false,
-  "optInt32": 0,
-  "optInt64": 0,
-  "optUint32": 0,
-  "optUint64": 0,
-  "optFloat": 0,
-  "optDouble": 0,
-  "optString": "",
-  "optBytes": "",
-  "optEnum": "ZERO",
-  "optMessage": {}
-}`,
-		wantMessage: &pb3.Proto3Optional{
-			OptBool:    proto.Bool(false),
-			OptInt32:   proto.Int32(0),
-			OptInt64:   proto.Int64(0),
-			OptUint32:  proto.Uint32(0),
-			OptUint64:  proto.Uint64(0),
-			OptFloat:   proto.Float32(0),
-			OptDouble:  proto.Float64(0),
-			OptString:  proto.String(""),
-			OptBytes:   []byte{},
-			OptEnum:    pb3.Enum_ZERO.Enum(),
-			OptMessage: &pb3.Nested{},
-		},
-	}, {
-		desc:         "proto2 optional scalars set to null",
-		inputMessage: &pb2.Scalars{},
-		inputText: `{
-  "optBool": null,
-  "optInt32": null,
-  "optInt64": null,
-  "optUint32": null,
-  "optUint64": null,
-  "optSint32": null,
-  "optSint64": null,
-  "optFixed32": null,
-  "optFixed64": null,
-  "optSfixed32": null,
-  "optSfixed64": null,
-  "optFloat": null,
-  "optDouble": null,
-  "optBytes": null,
-  "optString": null
-}`,
-		wantMessage: &pb2.Scalars{},
-	}, {
-		desc:         "proto3 scalars set to null",
-		inputMessage: &pb3.Scalars{},
-		inputText: `{
-  "sBool": null,
-  "sInt32": null,
-  "sInt64": null,
-  "sUint32": null,
-  "sUint64": null,
-  "sSint32": null,
-  "sSint64": null,
-  "sFixed32": null,
-  "sFixed64": null,
-  "sSfixed32": null,
-  "sSfixed64": null,
-  "sFloat": null,
-  "sDouble": null,
-  "sBytes": null,
-  "sString": null
-}`,
-		wantMessage: &pb3.Scalars{},
-	}, {
-		desc:         "boolean",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `{"sBool": true}`,
-		wantMessage: &pb3.Scalars{
-			SBool: true,
-		},
-	}, {
-		desc:         "not boolean",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `{"sBool": "true"}`,
-		wantErr:      `invalid value for bool type: "true"`,
-	}, {
-		desc:         "float and double",
-		inputMessage: &pb3.Scalars{},
-		inputText: `{
-  "sFloat": 1.234,
-  "sDouble": 5.678
-}`,
-		wantMessage: &pb3.Scalars{
-			SFloat:  1.234,
-			SDouble: 5.678,
-		},
-	}, {
-		desc:         "float and double in string",
-		inputMessage: &pb3.Scalars{},
-		inputText: `{
-  "sFloat": "1.234",
-  "sDouble": "5.678"
-}`,
-		wantMessage: &pb3.Scalars{
-			SFloat:  1.234,
-			SDouble: 5.678,
-		},
-	}, {
-		desc:         "float and double in E notation",
-		inputMessage: &pb3.Scalars{},
-		inputText: `{
-  "sFloat": 12.34E-1,
-  "sDouble": 5.678e4
-}`,
-		wantMessage: &pb3.Scalars{
-			SFloat:  1.234,
-			SDouble: 56780,
-		},
-	}, {
-		desc:         "float and double in string E notation",
-		inputMessage: &pb3.Scalars{},
-		inputText: `{
-  "sFloat": "12.34E-1",
-  "sDouble": "5.678e4"
-}`,
-		wantMessage: &pb3.Scalars{
-			SFloat:  1.234,
-			SDouble: 56780,
-		},
-	}, {
-		desc:         "float exceeds limit",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `{"sFloat": 3.4e39}`,
-		wantErr:      `invalid value for float type: 3.4e39`,
-	}, {
-		desc:         "float in string exceeds limit",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `{"sFloat": "-3.4e39"}`,
-		wantErr:      `invalid value for float type: "-3.4e39"`,
-	}, {
-		desc:         "double exceeds limit",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `{"sDouble": -1.79e+309}`,
-		wantErr:      `invalid value for double type: -1.79e+309`,
-	}, {
-		desc:         "double in string exceeds limit",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `{"sDouble": "1.79e+309"}`,
-		wantErr:      `invalid value for double type: "1.79e+309"`,
-	}, {
-		desc:         "infinites",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `{"sFloat": "Infinity", "sDouble": "-Infinity"}`,
-		wantMessage: &pb3.Scalars{
-			SFloat:  float32(math.Inf(+1)),
-			SDouble: math.Inf(-1),
-		},
-	}, {
-		desc:         "float string with leading space",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `{"sFloat": " 1.234"}`,
-		wantErr:      `invalid value for float type: " 1.234"`,
-	}, {
-		desc:         "double string with trailing space",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `{"sDouble": "5.678 "}`,
-		wantErr:      `invalid value for double type: "5.678 "`,
-	}, {
-		desc:         "not float",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `{"sFloat": true}`,
-		wantErr:      `invalid value for float type: true`,
-	}, {
-		desc:         "not double",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `{"sDouble": "not a number"}`,
-		wantErr:      `invalid value for double type: "not a number"`,
-	}, {
-		desc:         "integers",
-		inputMessage: &pb3.Scalars{},
-		inputText: `{
-  "sInt32": 1234,
-  "sInt64": -1234,
-  "sUint32": 1e2,
-  "sUint64": 100E-2,
-  "sSint32": 1.0,
-  "sSint64": -1.0,
-  "sFixed32": 1.234e+5,
-  "sFixed64": 1200E-2,
-  "sSfixed32": -1.234e05,
-  "sSfixed64": -1200e-02
-}`,
-		wantMessage: &pb3.Scalars{
-			SInt32:    1234,
-			SInt64:    -1234,
-			SUint32:   100,
-			SUint64:   1,
-			SSint32:   1,
-			SSint64:   -1,
-			SFixed32:  123400,
-			SFixed64:  12,
-			SSfixed32: -123400,
-			SSfixed64: -12,
-		},
-	}, {
-		desc:         "integers in string",
-		inputMessage: &pb3.Scalars{},
-		inputText: `{
-  "sInt32": "1234",
-  "sInt64": "-1234",
-  "sUint32": "1e2",
-  "sUint64": "100E-2",
-  "sSint32": "1.0",
-  "sSint64": "-1.0",
-  "sFixed32": "1.234e+5",
-  "sFixed64": "1200E-2",
-  "sSfixed32": "-1.234e05",
-  "sSfixed64": "-1200e-02"
-}`,
-		wantMessage: &pb3.Scalars{
-			SInt32:    1234,
-			SInt64:    -1234,
-			SUint32:   100,
-			SUint64:   1,
-			SSint32:   1,
-			SSint64:   -1,
-			SFixed32:  123400,
-			SFixed64:  12,
-			SSfixed32: -123400,
-			SSfixed64: -12,
-		},
-	}, {
-		desc:         "integers in escaped string",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `{"sInt32": "\u0031\u0032"}`,
-		wantMessage: &pb3.Scalars{
-			SInt32: 12,
-		},
-	}, {
-		desc:         "integer string with leading space",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `{"sInt32": " 1234"}`,
-		wantErr:      `invalid value for int32 type: " 1234"`,
-	}, {
-		desc:         "integer string with trailing space",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `{"sUint32": "1e2 "}`,
-		wantErr:      `invalid value for uint32 type: "1e2 "`,
-	}, {
-		desc:         "number is not an integer",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `{"sInt32": 1.001}`,
-		wantErr:      `invalid value for int32 type: 1.001`,
-	}, {
-		desc:         "32-bit int exceeds limit",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `{"sInt32": 2e10}`,
-		wantErr:      `invalid value for int32 type: 2e10`,
-	}, {
-		desc:         "64-bit int exceeds limit",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `{"sSfixed64": -9e19}`,
-		wantErr:      `invalid value for sfixed64 type: -9e19`,
-	}, {
-		desc:         "not integer",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `{"sInt32": "not a number"}`,
-		wantErr:      `invalid value for int32 type: "not a number"`,
-	}, {
-		desc:         "not unsigned integer",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `{"sUint32": "not a number"}`,
-		wantErr:      `invalid value for uint32 type: "not a number"`,
-	}, {
-		desc:         "number is not an unsigned integer",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `{"sUint32": -1}`,
-		wantErr:      `invalid value for uint32 type: -1`,
-	}, {
-		desc:         "string",
-		inputMessage: &pb2.Scalars{},
-		inputText:    `{"optString": "谷歌"}`,
-		wantMessage: &pb2.Scalars{
-			OptString: proto.String("谷歌"),
-		},
-	}, {
-		desc:         "string with invalid UTF-8",
-		inputMessage: &pb3.Scalars{},
-		inputText:    "{\"sString\": \"\xff\"}",
-		wantErr:      `(line 1:13): invalid UTF-8 in string`,
-	}, {
-		desc:         "not string",
-		inputMessage: &pb2.Scalars{},
-		inputText:    `{"optString": 42}`,
-		wantErr:      `invalid value for string type: 42`,
-	}, {
-		desc:         "bytes",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `{"sBytes": "aGVsbG8gd29ybGQ"}`,
-		wantMessage: &pb3.Scalars{
-			SBytes: []byte("hello world"),
-		},
-	}, {
-		desc:         "bytes padded",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `{"sBytes": "aGVsbG8gd29ybGQ="}`,
-		wantMessage: &pb3.Scalars{
-			SBytes: []byte("hello world"),
-		},
-	}, {
-		desc:         "not bytes",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `{"sBytes": true}`,
-		wantErr:      `invalid value for bytes type: true`,
-	}, {
-		desc:         "proto2 enum",
-		inputMessage: &pb2.Enums{},
-		inputText: `{
-  "optEnum": "ONE",
-  "optNestedEnum": "UNO"
-}`,
-		wantMessage: &pb2.Enums{
-			OptEnum:       pb2.Enum_ONE.Enum(),
-			OptNestedEnum: pb2.Enums_UNO.Enum(),
-		},
-	}, {
-		desc:         "proto3 enum",
-		inputMessage: &pb3.Enums{},
-		inputText: `{
-  "sEnum": "ONE",
-  "sNestedEnum": "DIEZ"
-}`,
-		wantMessage: &pb3.Enums{
-			SEnum:       pb3.Enum_ONE,
-			SNestedEnum: pb3.Enums_DIEZ,
-		},
-	}, {
-		desc:         "enum numeric value",
-		inputMessage: &pb3.Enums{},
-		inputText: `{
-  "sEnum": 2,
-  "sNestedEnum": 2
-}`,
-		wantMessage: &pb3.Enums{
-			SEnum:       pb3.Enum_TWO,
-			SNestedEnum: pb3.Enums_DOS,
-		},
-	}, {
-		desc:         "enum unnamed numeric value",
-		inputMessage: &pb3.Enums{},
-		inputText: `{
-  "sEnum": 101,
-  "sNestedEnum": -101
-}`,
-		wantMessage: &pb3.Enums{
-			SEnum:       101,
-			SNestedEnum: -101,
-		},
-	}, {
-		desc:         "enum set to number string",
-		inputMessage: &pb3.Enums{},
-		inputText: `{
-  "sEnum": "1"
-}`,
-		wantErr: `invalid value for enum type: "1"`,
-	}, {
-		desc:         "enum set to invalid named",
-		inputMessage: &pb3.Enums{},
-		inputText: `{
-  "sEnum": "UNNAMED"
-}`,
-		wantErr: `invalid value for enum type: "UNNAMED"`,
-	}, {
-		desc:         "enum set to not enum",
-		inputMessage: &pb3.Enums{},
-		inputText: `{
-  "sEnum": true
-}`,
-		wantErr: `invalid value for enum type: true`,
-	}, {
-		desc:         "enum set to JSON null",
-		inputMessage: &pb3.Enums{},
-		inputText: `{
-  "sEnum": null
-}`,
-		wantMessage: &pb3.Enums{},
-	}, {
-		desc:         "proto name",
-		inputMessage: &pb3.JSONNames{},
-		inputText: `{
-  "s_string": "proto name used"
-}`,
-		wantMessage: &pb3.JSONNames{
-			SString: "proto name used",
-		},
-	}, {
-		desc:         "proto group name",
-		inputMessage: &pb2.Nests{},
-		inputText: `{
-		"OptGroup": {"optString": "hello"},
-		"RptGroup": [{"rptString": ["goodbye"]}]
-	}`,
-		wantMessage: &pb2.Nests{
-			Optgroup: &pb2.Nests_OptGroup{OptString: proto.String("hello")},
-			Rptgroup: []*pb2.Nests_RptGroup{{RptString: []string{"goodbye"}}},
-		},
-	}, {
-		desc:         "json_name",
-		inputMessage: &pb3.JSONNames{},
-		inputText: `{
-  "foo_bar": "json_name used"
-}`,
-		wantMessage: &pb3.JSONNames{
-			SString: "json_name used",
-		},
-	}, {
-		desc:         "camelCase name",
-		inputMessage: &pb3.JSONNames{},
-		inputText: `{
-  "sString": "camelcase used"
-}`,
-		wantErr: `unknown field "sString"`,
-	}, {
-		desc:         "proto name and json_name",
-		inputMessage: &pb3.JSONNames{},
-		inputText: `{
-  "foo_bar": "json_name used",
-  "s_string": "proto name used"
-}`,
-		wantErr: `(line 3:3): duplicate field "s_string"`,
-	}, {
-		desc:         "duplicate field names",
-		inputMessage: &pb3.JSONNames{},
-		inputText: `{
-  "foo_bar": "one",
-  "foo_bar": "two",
-}`,
-		wantErr: `(line 3:3): duplicate field "foo_bar"`,
-	}, {
-		desc:         "null message",
-		inputMessage: &pb2.Nests{},
-		inputText:    "null",
-		wantErr:      `unexpected token null`,
-	}, {
-		desc:         "proto2 nested message not set",
-		inputMessage: &pb2.Nests{},
-		inputText:    "{}",
-		wantMessage:  &pb2.Nests{},
-	}, {
-		desc:         "proto2 nested message set to null",
-		inputMessage: &pb2.Nests{},
-		inputText: `{
-  "optNested": null,
-  "optgroup": null
-}`,
-		wantMessage: &pb2.Nests{},
-	}, {
-		desc:         "proto2 nested message set to empty",
-		inputMessage: &pb2.Nests{},
-		inputText: `{
-  "optNested": {},
-  "optgroup": {}
-}`,
-		wantMessage: &pb2.Nests{
-			OptNested: &pb2.Nested{},
-			Optgroup:  &pb2.Nests_OptGroup{},
-		},
-	}, {
-		desc:         "proto2 nested messages",
-		inputMessage: &pb2.Nests{},
-		inputText: `{
-  "optNested": {
-    "optString": "nested message",
-    "optNested": {
-      "optString": "another nested message"
-    }
-  }
-}`,
-		wantMessage: &pb2.Nests{
-			OptNested: &pb2.Nested{
-				OptString: proto.String("nested message"),
-				OptNested: &pb2.Nested{
-					OptString: proto.String("another nested message"),
-				},
-			},
-		},
-	}, {
-		desc:         "proto2 groups",
-		inputMessage: &pb2.Nests{},
-		inputText: `{
-  "optgroup": {
-    "optString": "inside a group",
-    "optNested": {
-      "optString": "nested message inside a group"
-    },
-    "optnestedgroup": {
-      "optFixed32": 47
-    }
-  }
-}`,
-		wantMessage: &pb2.Nests{
-			Optgroup: &pb2.Nests_OptGroup{
-				OptString: proto.String("inside a group"),
-				OptNested: &pb2.Nested{
-					OptString: proto.String("nested message inside a group"),
-				},
-				Optnestedgroup: &pb2.Nests_OptGroup_OptNestedGroup{
-					OptFixed32: proto.Uint32(47),
-				},
-			},
-		},
-	}, {
-		desc:         "proto3 nested message not set",
-		inputMessage: &pb3.Nests{},
-		inputText:    "{}",
-		wantMessage:  &pb3.Nests{},
-	}, {
-		desc:         "proto3 nested message set to null",
-		inputMessage: &pb3.Nests{},
-		inputText:    `{"sNested": null}`,
-		wantMessage:  &pb3.Nests{},
-	}, {
-		desc:         "proto3 nested message set to empty",
-		inputMessage: &pb3.Nests{},
-		inputText:    `{"sNested": {}}`,
-		wantMessage: &pb3.Nests{
-			SNested: &pb3.Nested{},
-		},
-	}, {
-		desc:         "proto3 nested message",
-		inputMessage: &pb3.Nests{},
-		inputText: `{
-  "sNested": {
-    "sString": "nested message",
-    "sNested": {
-      "sString": "another nested message"
-    }
-  }
-}`,
-		wantMessage: &pb3.Nests{
-			SNested: &pb3.Nested{
-				SString: "nested message",
-				SNested: &pb3.Nested{
-					SString: "another nested message",
-				},
-			},
-		},
-	}, {
-		desc:         "message set to non-message",
-		inputMessage: &pb3.Nests{},
-		inputText:    `"not valid"`,
-		wantErr:      `unexpected token "not valid"`,
-	}, {
-		desc:         "nested message set to non-message",
-		inputMessage: &pb3.Nests{},
-		inputText:    `{"sNested": true}`,
-		wantErr:      `(line 1:13): unexpected token true`,
-	}, {
-		desc:         "oneof not set",
-		inputMessage: &pb3.Oneofs{},
-		inputText:    "{}",
-		wantMessage:  &pb3.Oneofs{},
-	}, {
-		desc:         "oneof set to empty string",
-		inputMessage: &pb3.Oneofs{},
-		inputText:    `{"oneofString": ""}`,
-		wantMessage: &pb3.Oneofs{
-			Union: &pb3.Oneofs_OneofString{},
-		},
-	}, {
-		desc:         "oneof set to string",
-		inputMessage: &pb3.Oneofs{},
-		inputText:    `{"oneofString": "hello"}`,
-		wantMessage: &pb3.Oneofs{
-			Union: &pb3.Oneofs_OneofString{
-				OneofString: "hello",
-			},
-		},
-	}, {
-		desc:         "oneof set to enum",
-		inputMessage: &pb3.Oneofs{},
-		inputText:    `{"oneofEnum": "ZERO"}`,
-		wantMessage: &pb3.Oneofs{
-			Union: &pb3.Oneofs_OneofEnum{
-				OneofEnum: pb3.Enum_ZERO,
-			},
-		},
-	}, {
-		desc:         "oneof set to empty message",
-		inputMessage: &pb3.Oneofs{},
-		inputText:    `{"oneofNested": {}}`,
-		wantMessage: &pb3.Oneofs{
-			Union: &pb3.Oneofs_OneofNested{
-				OneofNested: &pb3.Nested{},
-			},
-		},
-	}, {
-		desc:         "oneof set to message",
-		inputMessage: &pb3.Oneofs{},
-		inputText: `{
-  "oneofNested": {
-    "sString": "nested message"
-  }
-}`,
-		wantMessage: &pb3.Oneofs{
-			Union: &pb3.Oneofs_OneofNested{
-				OneofNested: &pb3.Nested{
-					SString: "nested message",
-				},
-			},
-		},
-	}, {
-		desc:         "oneof set to more than one field",
-		inputMessage: &pb3.Oneofs{},
-		inputText: `{
-  "oneofEnum": "ZERO",
-  "oneofString": "hello"
-}`,
-		wantErr: `(line 3:3): error parsing "oneofString", oneof pb3.Oneofs.union is already set`,
-	}, {
-		desc:         "oneof set to null and value",
-		inputMessage: &pb3.Oneofs{},
-		inputText: `{
-  "oneofEnum": "ZERO",
-  "oneofString": null
-}`,
-		wantMessage: &pb3.Oneofs{
-			Union: &pb3.Oneofs_OneofEnum{
-				OneofEnum: pb3.Enum_ZERO,
-			},
-		},
-	}, {
-		desc:         "repeated null fields",
-		inputMessage: &pb2.Repeats{},
-		inputText: `{
-  "rptString": null,
-  "rptInt32" : null,
-  "rptFloat" : null,
-  "rptBytes" : null
-}`,
-		wantMessage: &pb2.Repeats{},
-	}, {
-		desc:         "repeated scalars",
-		inputMessage: &pb2.Repeats{},
-		inputText: `{
-  "rptString": ["hello", "world"],
-  "rptInt32" : [-1, 0, 1],
-  "rptBool"  : [false, true]
-}`,
-		wantMessage: &pb2.Repeats{
-			RptString: []string{"hello", "world"},
-			RptInt32:  []int32{-1, 0, 1},
-			RptBool:   []bool{false, true},
-		},
-	}, {
-		desc:         "repeated enums",
-		inputMessage: &pb2.Enums{},
-		inputText: `{
-  "rptEnum"      : ["TEN", 1, 42],
-  "rptNestedEnum": ["DOS", 2, -47]
-}`,
-		wantMessage: &pb2.Enums{
-			RptEnum:       []pb2.Enum{pb2.Enum_TEN, pb2.Enum_ONE, 42},
-			RptNestedEnum: []pb2.Enums_NestedEnum{pb2.Enums_DOS, pb2.Enums_DOS, -47},
-		},
-	}, {
-		desc:         "repeated messages",
-		inputMessage: &pb2.Nests{},
-		inputText: `{
-  "rptNested": [
-    {
-      "optString": "repeat nested one"
-    },
-    {
-      "optString": "repeat nested two",
-      "optNested": {
-        "optString": "inside repeat nested two"
-      }
-    },
-    {}
-  ]
-}`,
-		wantMessage: &pb2.Nests{
-			RptNested: []*pb2.Nested{
-				{
-					OptString: proto.String("repeat nested one"),
-				},
-				{
-					OptString: proto.String("repeat nested two"),
-					OptNested: &pb2.Nested{
-						OptString: proto.String("inside repeat nested two"),
-					},
-				},
-				{},
-			},
-		},
-	}, {
-		desc:         "repeated groups",
-		inputMessage: &pb2.Nests{},
-		inputText: `{
-  "rptgroup": [
-    {
-      "rptString": ["hello", "world"]
-    },
-    {}
-  ]
-}
-`,
-		wantMessage: &pb2.Nests{
-			Rptgroup: []*pb2.Nests_RptGroup{
-				{
-					RptString: []string{"hello", "world"},
-				},
-				{},
-			},
-		},
-	}, {
-		desc:         "repeated string contains invalid UTF8",
-		inputMessage: &pb2.Repeats{},
-		inputText:    `{"rptString": ["` + "abc\xff" + `"]}`,
-		wantErr:      `invalid UTF-8`,
-	}, {
-		desc:         "repeated messages contain invalid UTF8",
-		inputMessage: &pb2.Nests{},
-		inputText:    `{"rptNested": [{"optString": "` + "abc\xff" + `"}]}`,
-		wantErr:      `invalid UTF-8`,
-	}, {
-		desc:         "repeated scalars contain invalid type",
-		inputMessage: &pb2.Repeats{},
-		inputText:    `{"rptString": ["hello", null, "world"]}`,
-		wantErr:      `invalid value for string type: null`,
-	}, {
-		desc:         "repeated messages contain invalid type",
-		inputMessage: &pb2.Nests{},
-		inputText:    `{"rptNested": [{}, null]}`,
-		wantErr:      `unexpected token null`,
-	}, {
-		desc:         "map fields 1",
-		inputMessage: &pb3.Maps{},
-		inputText: `{
-  "int32ToStr": {
-    "-101": "-101",
-	"0"   : "zero",
-	"255" : "0xff"
-  },
-  "boolToUint32": {
-    "false": 101,
-	"true" : "42"
-  }
-}`,
-		wantMessage: &pb3.Maps{
-			Int32ToStr: map[int32]string{
-				-101: "-101",
-				0xff: "0xff",
-				0:    "zero",
-			},
-			BoolToUint32: map[bool]uint32{
-				true:  42,
-				false: 101,
-			},
-		},
-	}, {
-		desc:         "map fields 2",
-		inputMessage: &pb3.Maps{},
-		inputText: `{
-  "uint64ToEnum": {
-    "1" : "ONE",
-	"2" : 2,
-	"10": 101
-  }
-}`,
-		wantMessage: &pb3.Maps{
-			Uint64ToEnum: map[uint64]pb3.Enum{
-				1:  pb3.Enum_ONE,
-				2:  pb3.Enum_TWO,
-				10: 101,
-			},
-		},
-	}, {
-		desc:         "map fields 3",
-		inputMessage: &pb3.Maps{},
-		inputText: `{
-  "strToNested": {
-    "nested_one": {
-	  "sString": "nested in a map"
-    },
-    "nested_two": {}
-  }
-}`,
-		wantMessage: &pb3.Maps{
-			StrToNested: map[string]*pb3.Nested{
-				"nested_one": {
-					SString: "nested in a map",
-				},
-				"nested_two": {},
-			},
-		},
-	}, {
-		desc:         "map fields 4",
-		inputMessage: &pb3.Maps{},
-		inputText: `{
-  "strToOneofs": {
-    "nested": {
-	  "oneofNested": {
-	    "sString": "nested oneof in map field value"
-      }
-	},
-	"string": {
-      "oneofString": "hello"
-    }
-  }
-}`,
-		wantMessage: &pb3.Maps{
-			StrToOneofs: map[string]*pb3.Oneofs{
-				"string": {
-					Union: &pb3.Oneofs_OneofString{
-						OneofString: "hello",
-					},
-				},
-				"nested": {
-					Union: &pb3.Oneofs_OneofNested{
-						OneofNested: &pb3.Nested{
-							SString: "nested oneof in map field value",
-						},
-					},
-				},
-			},
-		},
-	}, {
-		desc:         "map contains duplicate keys",
-		inputMessage: &pb3.Maps{},
-		inputText: `{
-  "int32ToStr": {
-    "0": "cero",
-    "0": "zero"
-  }
-}
-`,
-		wantErr: `(line 4:5): duplicate map key "0"`,
-	}, {
-		desc:         "map key empty string",
-		inputMessage: &pb3.Maps{},
-		inputText: `{
-  "strToNested": {
-    "": {}
-  }
-}`,
-		wantMessage: &pb3.Maps{
-			StrToNested: map[string]*pb3.Nested{
-				"": {},
-			},
-		},
-	}, {
-		desc:         "map contains invalid key 1",
-		inputMessage: &pb3.Maps{},
-		inputText: `{
-  "int32ToStr": {
-    "invalid": "cero"
-  }
-}`,
-		wantErr: `invalid value for int32 key: "invalid"`,
-	}, {
-		desc:         "map contains invalid key 2",
-		inputMessage: &pb3.Maps{},
-		inputText: `{
-  "int32ToStr": {
-    "1.02": "float"
-  }
-}`,
-		wantErr: `invalid value for int32 key: "1.02"`,
-	}, {
-		desc:         "map contains invalid key 3",
-		inputMessage: &pb3.Maps{},
-		inputText: `{
-  "int32ToStr": {
-    "2147483648": "exceeds 32-bit integer max limit"
-  }
-}`,
-		wantErr: `invalid value for int32 key: "2147483648"`,
-	}, {
-		desc:         "map contains invalid key 4",
-		inputMessage: &pb3.Maps{},
-		inputText: `{
-  "uint64ToEnum": {
-    "-1": 0
-  }
-}`,
-		wantErr: `invalid value for uint64 key: "-1"`,
-	}, {
-		desc:         "map contains invalid value",
-		inputMessage: &pb3.Maps{},
-		inputText: `{
-  "int32ToStr": {
-    "101": true
-}`,
-		wantErr: `invalid value for string type: true`,
-	}, {
-		desc:         "map contains null for scalar value",
-		inputMessage: &pb3.Maps{},
-		inputText: `{
-  "int32ToStr": {
-    "101": null
-}`,
-		wantErr: `invalid value for string type: null`,
-	}, {
-		desc:         "map contains null for message value",
-		inputMessage: &pb3.Maps{},
-		inputText: `{
-  "strToNested": {
-    "hello": null
-  }
-}`,
-		wantErr: `unexpected token null`,
-	}, {
-		desc:         "map contains contains message value with invalid UTF8",
-		inputMessage: &pb3.Maps{},
-		inputText: `{
-  "strToNested": {
-    "hello": {
-      "sString": "` + "abc\xff" + `"
-	}
-  }
-}`,
-		wantErr: `invalid UTF-8`,
-	}, {
-		desc:         "map key contains invalid UTF8",
-		inputMessage: &pb3.Maps{},
-		inputText: `{
-  "strToNested": {
-    "` + "abc\xff" + `": {}
-  }
-}`,
-		wantErr: `invalid UTF-8`,
-	}, {
-		desc:         "required fields not set",
-		inputMessage: &pb2.Requireds{},
-		inputText:    `{}`,
-		wantErr:      errors.RequiredNotSet("pb2.Requireds.req_bool").Error(),
-	}, {
-		desc:         "required field set",
-		inputMessage: &pb2.PartialRequired{},
-		inputText: `{
-  "reqString": "this is required"
-}`,
-		wantMessage: &pb2.PartialRequired{
-			ReqString: proto.String("this is required"),
-		},
-	}, {
-		desc:         "required fields partially set",
-		inputMessage: &pb2.Requireds{},
-		inputText: `{
-  "reqBool": false,
-  "reqSfixed64": 42,
-  "reqString": "hello",
-  "reqEnum": "ONE"
-}`,
-		wantMessage: &pb2.Requireds{
-			ReqBool:     proto.Bool(false),
-			ReqSfixed64: proto.Int64(42),
-			ReqString:   proto.String("hello"),
-			ReqEnum:     pb2.Enum_ONE.Enum(),
-		},
-		wantErr: errors.RequiredNotSet("pb2.Requireds.req_double").Error(),
-	}, {
-		desc:         "required fields partially set with AllowPartial",
-		umo:          protojson.UnmarshalOptions{AllowPartial: true},
-		inputMessage: &pb2.Requireds{},
-		inputText: `{
-  "reqBool": false,
-  "reqSfixed64": 42,
-  "reqString": "hello",
-  "reqEnum": "ONE"
-}`,
-		wantMessage: &pb2.Requireds{
-			ReqBool:     proto.Bool(false),
-			ReqSfixed64: proto.Int64(42),
-			ReqString:   proto.String("hello"),
-			ReqEnum:     pb2.Enum_ONE.Enum(),
-		},
-	}, {
-		desc:         "required fields all set",
-		inputMessage: &pb2.Requireds{},
-		inputText: `{
-  "reqBool": false,
-  "reqSfixed64": 42,
-  "reqDouble": 1.23,
-  "reqString": "hello",
-  "reqEnum": "ONE",
-  "reqNested": {}
-}`,
-		wantMessage: &pb2.Requireds{
-			ReqBool:     proto.Bool(false),
-			ReqSfixed64: proto.Int64(42),
-			ReqDouble:   proto.Float64(1.23),
-			ReqString:   proto.String("hello"),
-			ReqEnum:     pb2.Enum_ONE.Enum(),
-			ReqNested:   &pb2.Nested{},
-		},
-	}, {
-		desc:         "indirect required field",
-		inputMessage: &pb2.IndirectRequired{},
-		inputText: `{
-  "optNested": {}
-}`,
-		wantMessage: &pb2.IndirectRequired{
-			OptNested: &pb2.NestedWithRequired{},
-		},
-		wantErr: errors.RequiredNotSet("pb2.NestedWithRequired.req_string").Error(),
-	}, {
-		desc:         "indirect required field with AllowPartial",
-		umo:          protojson.UnmarshalOptions{AllowPartial: true},
-		inputMessage: &pb2.IndirectRequired{},
-		inputText: `{
-  "optNested": {}
-}`,
-		wantMessage: &pb2.IndirectRequired{
-			OptNested: &pb2.NestedWithRequired{},
-		},
-	}, {
-		desc:         "indirect required field in repeated",
-		inputMessage: &pb2.IndirectRequired{},
-		inputText: `{
-  "rptNested": [
-    {"reqString": "one"},
-    {}
-  ]
-}`,
-		wantMessage: &pb2.IndirectRequired{
-			RptNested: []*pb2.NestedWithRequired{
-				{
-					ReqString: proto.String("one"),
-				},
-				{},
-			},
-		},
-		wantErr: errors.RequiredNotSet("pb2.NestedWithRequired.req_string").Error(),
-	}, {
-		desc:         "indirect required field in repeated with AllowPartial",
-		umo:          protojson.UnmarshalOptions{AllowPartial: true},
-		inputMessage: &pb2.IndirectRequired{},
-		inputText: `{
-  "rptNested": [
-    {"reqString": "one"},
-    {}
-  ]
-}`,
-		wantMessage: &pb2.IndirectRequired{
-			RptNested: []*pb2.NestedWithRequired{
-				{
-					ReqString: proto.String("one"),
-				},
-				{},
-			},
-		},
-	}, {
-		desc:         "indirect required field in map",
-		inputMessage: &pb2.IndirectRequired{},
-		inputText: `{
-  "strToNested": {
-    "missing": {},
-	"contains": {
-      "reqString": "here"
-    }
-  }
-}`,
-		wantMessage: &pb2.IndirectRequired{
-			StrToNested: map[string]*pb2.NestedWithRequired{
-				"missing": &pb2.NestedWithRequired{},
-				"contains": &pb2.NestedWithRequired{
-					ReqString: proto.String("here"),
-				},
-			},
-		},
-		wantErr: errors.RequiredNotSet("pb2.NestedWithRequired.req_string").Error(),
-	}, {
-		desc:         "indirect required field in map with AllowPartial",
-		umo:          protojson.UnmarshalOptions{AllowPartial: true},
-		inputMessage: &pb2.IndirectRequired{},
-		inputText: `{
-  "strToNested": {
-    "missing": {},
-	"contains": {
-      "reqString": "here"
-    }
-  }
-}`,
-		wantMessage: &pb2.IndirectRequired{
-			StrToNested: map[string]*pb2.NestedWithRequired{
-				"missing": &pb2.NestedWithRequired{},
-				"contains": &pb2.NestedWithRequired{
-					ReqString: proto.String("here"),
-				},
-			},
-		},
-	}, {
-		desc:         "indirect required field in oneof",
-		inputMessage: &pb2.IndirectRequired{},
-		inputText: `{
-  "oneofNested": {}
-}`,
-		wantMessage: &pb2.IndirectRequired{
-			Union: &pb2.IndirectRequired_OneofNested{
-				OneofNested: &pb2.NestedWithRequired{},
-			},
-		},
-		wantErr: errors.RequiredNotSet("pb2.NestedWithRequired.req_string").Error(),
-	}, {
-		desc:         "indirect required field in oneof with AllowPartial",
-		umo:          protojson.UnmarshalOptions{AllowPartial: true},
-		inputMessage: &pb2.IndirectRequired{},
-		inputText: `{
-  "oneofNested": {}
-}`,
-		wantMessage: &pb2.IndirectRequired{
-			Union: &pb2.IndirectRequired_OneofNested{
-				OneofNested: &pb2.NestedWithRequired{},
-			},
-		},
-	}, {
-		desc:         "extensions of non-repeated fields",
-		inputMessage: &pb2.Extensions{},
-		inputText: `{
-  "optString": "non-extension field",
-  "optBool": true,
-  "optInt32": 42,
-  "[pb2.opt_ext_bool]": true,
-  "[pb2.opt_ext_nested]": {
-    "optString": "nested in an extension",
-    "optNested": {
-      "optString": "another nested in an extension"
-    }
-  },
-  "[pb2.opt_ext_string]": "extension field",
-  "[pb2.opt_ext_enum]": "TEN"
-}`,
-		wantMessage: func() proto.Message {
-			m := &pb2.Extensions{
-				OptString: proto.String("non-extension field"),
-				OptBool:   proto.Bool(true),
-				OptInt32:  proto.Int32(42),
-			}
-			proto.SetExtension(m, pb2.E_OptExtBool, true)
-			proto.SetExtension(m, pb2.E_OptExtString, "extension field")
-			proto.SetExtension(m, pb2.E_OptExtEnum, pb2.Enum_TEN)
-			proto.SetExtension(m, pb2.E_OptExtNested, &pb2.Nested{
-				OptString: proto.String("nested in an extension"),
-				OptNested: &pb2.Nested{
-					OptString: proto.String("another nested in an extension"),
-				},
-			})
-			return m
-		}(),
-	}, {
-		desc:         "extensions of repeated fields",
-		inputMessage: &pb2.Extensions{},
-		inputText: `{
-  "[pb2.rpt_ext_enum]": ["TEN", 101, "ONE"],
-  "[pb2.rpt_ext_fixed32]": [42, 47],
-  "[pb2.rpt_ext_nested]": [
-    {"optString": "one"},
-	{"optString": "two"},
-	{"optString": "three"}
-  ]
-}`,
-		wantMessage: func() proto.Message {
-			m := &pb2.Extensions{}
-			proto.SetExtension(m, pb2.E_RptExtEnum, []pb2.Enum{pb2.Enum_TEN, 101, pb2.Enum_ONE})
-			proto.SetExtension(m, pb2.E_RptExtFixed32, []uint32{42, 47})
-			proto.SetExtension(m, pb2.E_RptExtNested, []*pb2.Nested{
-				&pb2.Nested{OptString: proto.String("one")},
-				&pb2.Nested{OptString: proto.String("two")},
-				&pb2.Nested{OptString: proto.String("three")},
-			})
-			return m
-		}(),
-	}, {
-		desc:         "extensions of non-repeated fields in another message",
-		inputMessage: &pb2.Extensions{},
-		inputText: `{
-  "[pb2.ExtensionsContainer.opt_ext_bool]": true,
-  "[pb2.ExtensionsContainer.opt_ext_enum]": "TEN",
-  "[pb2.ExtensionsContainer.opt_ext_nested]": {
-    "optString": "nested in an extension",
-    "optNested": {
-      "optString": "another nested in an extension"
-    }
-  },
-  "[pb2.ExtensionsContainer.opt_ext_string]": "extension field"
-}`,
-		wantMessage: func() proto.Message {
-			m := &pb2.Extensions{}
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_OptExtBool, true)
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_OptExtString, "extension field")
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_OptExtEnum, pb2.Enum_TEN)
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_OptExtNested, &pb2.Nested{
-				OptString: proto.String("nested in an extension"),
-				OptNested: &pb2.Nested{
-					OptString: proto.String("another nested in an extension"),
-				},
-			})
-			return m
-		}(),
-	}, {
-		desc:         "extensions of repeated fields in another message",
-		inputMessage: &pb2.Extensions{},
-		inputText: `{
-  "optString": "non-extension field",
-  "optBool": true,
-  "optInt32": 42,
-  "[pb2.ExtensionsContainer.rpt_ext_nested]": [
-    {"optString": "one"},
-    {"optString": "two"},
-    {"optString": "three"}
-  ],
-  "[pb2.ExtensionsContainer.rpt_ext_enum]": ["TEN", 101, "ONE"],
-  "[pb2.ExtensionsContainer.rpt_ext_string]": ["hello", "world"]
-}`,
-		wantMessage: func() proto.Message {
-			m := &pb2.Extensions{
-				OptString: proto.String("non-extension field"),
-				OptBool:   proto.Bool(true),
-				OptInt32:  proto.Int32(42),
-			}
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_RptExtEnum, []pb2.Enum{pb2.Enum_TEN, 101, pb2.Enum_ONE})
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_RptExtString, []string{"hello", "world"})
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_RptExtNested, []*pb2.Nested{
-				&pb2.Nested{OptString: proto.String("one")},
-				&pb2.Nested{OptString: proto.String("two")},
-				&pb2.Nested{OptString: proto.String("three")},
-			})
-			return m
-		}(),
-	}, {
-		desc:         "invalid extension field name",
-		inputMessage: &pb2.Extensions{},
-		inputText:    `{ "[pb2.invalid_message_field]": true }`,
-		wantErr:      `(line 1:3): unknown field "[pb2.invalid_message_field]"`,
-	}, {
-		desc:         "extensions of repeated field contains null",
-		inputMessage: &pb2.Extensions{},
-		inputText: `{
-  "[pb2.ExtensionsContainer.rpt_ext_nested]": [
-    {"optString": "one"},
-    null,
-    {"optString": "three"}
-  ],
-}`,
-		wantErr: `(line 4:5): unexpected token null`,
-	}, {
-		desc:         "MessageSet",
-		inputMessage: &pb2.MessageSet{},
-		inputText: `{
-  "[pb2.MessageSetExtension]": {
-    "optString": "a messageset extension"
-  },
-  "[pb2.MessageSetExtension.ext_nested]": {
-    "optString": "just a regular extension"
-  },
-  "[pb2.MessageSetExtension.not_message_set_extension]": {
-    "optString": "not a messageset extension"
-  }
-}`,
-		wantMessage: func() proto.Message {
-			m := &pb2.MessageSet{}
-			proto.SetExtension(m, pb2.E_MessageSetExtension_MessageSetExtension, &pb2.MessageSetExtension{
-				OptString: proto.String("a messageset extension"),
-			})
-			proto.SetExtension(m, pb2.E_MessageSetExtension_NotMessageSetExtension, &pb2.MessageSetExtension{
-				OptString: proto.String("not a messageset extension"),
-			})
-			proto.SetExtension(m, pb2.E_MessageSetExtension_ExtNested, &pb2.Nested{
-				OptString: proto.String("just a regular extension"),
-			})
-			return m
-		}(),
-		skip: !flags.ProtoLegacy,
-	}, {
-		desc:         "not real MessageSet 1",
-		inputMessage: &pb2.FakeMessageSet{},
-		inputText: `{
-  "[pb2.FakeMessageSetExtension.message_set_extension]": {
-    "optString": "not a messageset extension"
-  }
-}`,
-		wantMessage: func() proto.Message {
-			m := &pb2.FakeMessageSet{}
-			proto.SetExtension(m, pb2.E_FakeMessageSetExtension_MessageSetExtension, &pb2.FakeMessageSetExtension{
-				OptString: proto.String("not a messageset extension"),
-			})
-			return m
-		}(),
-		skip: !flags.ProtoLegacy,
-	}, {
-		desc:         "not real MessageSet 2",
-		inputMessage: &pb2.FakeMessageSet{},
-		inputText: `{
-  "[pb2.FakeMessageSetExtension]": {
-    "optString": "not a messageset extension"
-  }
-}`,
-		wantErr: `unable to resolve "[pb2.FakeMessageSetExtension]": found wrong type`,
-		skip:    !flags.ProtoLegacy,
-	}, {
-		desc:         "not real MessageSet 3",
-		inputMessage: &pb2.MessageSet{},
-		inputText: `{
-  "[pb2.message_set_extension]": {
-    "optString": "another not a messageset extension"
-  }
-}`,
-		wantMessage: func() proto.Message {
-			m := &pb2.MessageSet{}
-			proto.SetExtension(m, pb2.E_MessageSetExtension, &pb2.FakeMessageSetExtension{
-				OptString: proto.String("another not a messageset extension"),
-			})
-			return m
-		}(),
-		skip: !flags.ProtoLegacy,
-	}, {
-		desc:         "Empty",
-		inputMessage: &emptypb.Empty{},
-		inputText:    `{}`,
-		wantMessage:  &emptypb.Empty{},
-	}, {
-		desc:         "Empty contains unknown",
-		inputMessage: &emptypb.Empty{},
-		inputText:    `{"unknown": null}`,
-		wantErr:      `unknown field "unknown"`,
-	}, {
-		desc:         "BoolValue false",
-		inputMessage: &wrapperspb.BoolValue{},
-		inputText:    `false`,
-		wantMessage:  &wrapperspb.BoolValue{},
-	}, {
-		desc:         "BoolValue true",
-		inputMessage: &wrapperspb.BoolValue{},
-		inputText:    `true`,
-		wantMessage:  &wrapperspb.BoolValue{Value: true},
-	}, {
-		desc:         "BoolValue invalid value",
-		inputMessage: &wrapperspb.BoolValue{},
-		inputText:    `{}`,
-		wantErr:      `invalid value for bool type: {`,
-	}, {
-		desc:         "Int32Value",
-		inputMessage: &wrapperspb.Int32Value{},
-		inputText:    `42`,
-		wantMessage:  &wrapperspb.Int32Value{Value: 42},
-	}, {
-		desc:         "Int32Value in JSON string",
-		inputMessage: &wrapperspb.Int32Value{},
-		inputText:    `"1.23e3"`,
-		wantMessage:  &wrapperspb.Int32Value{Value: 1230},
-	}, {
-		desc:         "Int64Value",
-		inputMessage: &wrapperspb.Int64Value{},
-		inputText:    `"42"`,
-		wantMessage:  &wrapperspb.Int64Value{Value: 42},
-	}, {
-		desc:         "UInt32Value",
-		inputMessage: &wrapperspb.UInt32Value{},
-		inputText:    `42`,
-		wantMessage:  &wrapperspb.UInt32Value{Value: 42},
-	}, {
-		desc:         "UInt64Value",
-		inputMessage: &wrapperspb.UInt64Value{},
-		inputText:    `"42"`,
-		wantMessage:  &wrapperspb.UInt64Value{Value: 42},
-	}, {
-		desc:         "FloatValue",
-		inputMessage: &wrapperspb.FloatValue{},
-		inputText:    `1.02`,
-		wantMessage:  &wrapperspb.FloatValue{Value: 1.02},
-	}, {
-		desc:         "FloatValue exceeds max limit",
-		inputMessage: &wrapperspb.FloatValue{},
-		inputText:    `1.23e+40`,
-		wantErr:      `invalid value for float type: 1.23e+40`,
-	}, {
-		desc:         "FloatValue Infinity",
-		inputMessage: &wrapperspb.FloatValue{},
-		inputText:    `"-Infinity"`,
-		wantMessage:  &wrapperspb.FloatValue{Value: float32(math.Inf(-1))},
-	}, {
-		desc:         "DoubleValue",
-		inputMessage: &wrapperspb.DoubleValue{},
-		inputText:    `1.02`,
-		wantMessage:  &wrapperspb.DoubleValue{Value: 1.02},
-	}, {
-		desc:         "DoubleValue Infinity",
-		inputMessage: &wrapperspb.DoubleValue{},
-		inputText:    `"Infinity"`,
-		wantMessage:  &wrapperspb.DoubleValue{Value: math.Inf(+1)},
-	}, {
-		desc:         "StringValue empty",
-		inputMessage: &wrapperspb.StringValue{},
-		inputText:    `""`,
-		wantMessage:  &wrapperspb.StringValue{},
-	}, {
-		desc:         "StringValue",
-		inputMessage: &wrapperspb.StringValue{},
-		inputText:    `"谷歌"`,
-		wantMessage:  &wrapperspb.StringValue{Value: "谷歌"},
-	}, {
-		desc:         "StringValue with invalid UTF8 error",
-		inputMessage: &wrapperspb.StringValue{},
-		inputText:    "\"abc\xff\"",
-		wantErr:      `invalid UTF-8`,
-	}, {
-		desc:         "StringValue field with invalid UTF8 error",
-		inputMessage: &pb2.KnownTypes{},
-		inputText:    "{\n  \"optString\": \"abc\xff\"\n}",
-		wantErr:      `invalid UTF-8`,
-	}, {
-		desc:         "NullValue field with JSON null",
-		inputMessage: &pb2.KnownTypes{},
-		inputText: `{
-  "optNull": null
-}`,
-		wantMessage: &pb2.KnownTypes{OptNull: new(structpb.NullValue)},
-	}, {
-		desc:         "NullValue field with string",
-		inputMessage: &pb2.KnownTypes{},
-		inputText: `{
-  "optNull": "NULL_VALUE"
-}`,
-		wantMessage: &pb2.KnownTypes{OptNull: new(structpb.NullValue)},
-	}, {
-		desc:         "BytesValue",
-		inputMessage: &wrapperspb.BytesValue{},
-		inputText:    `"aGVsbG8="`,
-		wantMessage:  &wrapperspb.BytesValue{Value: []byte("hello")},
-	}, {
-		desc:         "Value null",
-		inputMessage: &structpb.Value{},
-		inputText:    `null`,
-		wantMessage:  &structpb.Value{Kind: &structpb.Value_NullValue{}},
-	}, {
-		desc:         "Value field null",
-		inputMessage: &pb2.KnownTypes{},
-		inputText: `{
-  "optValue": null
-}`,
-		wantMessage: &pb2.KnownTypes{
-			OptValue: &structpb.Value{Kind: &structpb.Value_NullValue{}},
-		},
-	}, {
-		desc:         "Value bool",
-		inputMessage: &structpb.Value{},
-		inputText:    `false`,
-		wantMessage:  &structpb.Value{Kind: &structpb.Value_BoolValue{}},
-	}, {
-		desc:         "Value field bool",
-		inputMessage: &pb2.KnownTypes{},
-		inputText: `{
-  "optValue": true
-}`,
-		wantMessage: &pb2.KnownTypes{
-			OptValue: &structpb.Value{Kind: &structpb.Value_BoolValue{true}},
-		},
-	}, {
-		desc:         "Value number",
-		inputMessage: &structpb.Value{},
-		inputText:    `1.02`,
-		wantMessage:  &structpb.Value{Kind: &structpb.Value_NumberValue{1.02}},
-	}, {
-		desc:         "Value field number",
-		inputMessage: &pb2.KnownTypes{},
-		inputText: `{
-  "optValue": 1.02
-}`,
-		wantMessage: &pb2.KnownTypes{
-			OptValue: &structpb.Value{Kind: &structpb.Value_NumberValue{1.02}},
-		},
-	}, {
-		desc:         "Value string",
-		inputMessage: &structpb.Value{},
-		inputText:    `"hello"`,
-		wantMessage:  &structpb.Value{Kind: &structpb.Value_StringValue{"hello"}},
-	}, {
-		desc:         "Value string with invalid UTF8",
-		inputMessage: &structpb.Value{},
-		inputText:    "\"\xff\"",
-		wantErr:      `invalid UTF-8`,
-	}, {
-		desc:         "Value field string",
-		inputMessage: &pb2.KnownTypes{},
-		inputText: `{
-  "optValue": "NaN"
-}`,
-		wantMessage: &pb2.KnownTypes{
-			OptValue: &structpb.Value{Kind: &structpb.Value_StringValue{"NaN"}},
-		},
-	}, {
-		desc:         "Value field string with invalid UTF8",
-		inputMessage: &pb2.KnownTypes{},
-		inputText: `{
-  "optValue": "` + "\xff" + `"
-}`,
-		wantErr: `invalid UTF-8`,
-	}, {
-		desc:         "Value empty struct",
-		inputMessage: &structpb.Value{},
-		inputText:    `{}`,
-		wantMessage: &structpb.Value{
-			Kind: &structpb.Value_StructValue{
-				&structpb.Struct{Fields: map[string]*structpb.Value{}},
-			},
-		},
-	}, {
-		desc:         "Value struct",
-		inputMessage: &structpb.Value{},
-		inputText: `{
-  "string": "hello",
-  "number": 123,
-  "null": null,
-  "bool": false,
-  "struct": {
-    "string": "world"
-  },
-  "list": []
-}`,
-		wantMessage: &structpb.Value{
-			Kind: &structpb.Value_StructValue{
-				&structpb.Struct{
-					Fields: map[string]*structpb.Value{
-						"string": {Kind: &structpb.Value_StringValue{"hello"}},
-						"number": {Kind: &structpb.Value_NumberValue{123}},
-						"null":   {Kind: &structpb.Value_NullValue{}},
-						"bool":   {Kind: &structpb.Value_BoolValue{false}},
-						"struct": {
-							Kind: &structpb.Value_StructValue{
-								&structpb.Struct{
-									Fields: map[string]*structpb.Value{
-										"string": {Kind: &structpb.Value_StringValue{"world"}},
-									},
-								},
-							},
-						},
-						"list": {
-							Kind: &structpb.Value_ListValue{&structpb.ListValue{}},
-						},
-					},
-				},
-			},
-		},
-	}, {
-		desc:         "Value struct with invalid UTF8 string",
-		inputMessage: &structpb.Value{},
-		inputText:    "{\"string\": \"abc\xff\"}",
-		wantErr:      `invalid UTF-8`,
-	}, {
-		desc:         "Value field struct",
-		inputMessage: &pb2.KnownTypes{},
-		inputText: `{
-  "optValue": {
-    "string": "hello"
-  }
-}`,
-		wantMessage: &pb2.KnownTypes{
-			OptValue: &structpb.Value{
-				Kind: &structpb.Value_StructValue{
-					&structpb.Struct{
-						Fields: map[string]*structpb.Value{
-							"string": {Kind: &structpb.Value_StringValue{"hello"}},
-						},
-					},
-				},
-			},
-		},
-	}, {
-		desc:         "Value empty list",
-		inputMessage: &structpb.Value{},
-		inputText:    `[]`,
-		wantMessage: &structpb.Value{
-			Kind: &structpb.Value_ListValue{
-				&structpb.ListValue{Values: []*structpb.Value{}},
-			},
-		},
-	}, {
-		desc:         "Value list",
-		inputMessage: &structpb.Value{},
-		inputText: `[
-  "string",
-  123,
-  null,
-  true,
-  {},
-  [
-    "string",
-	1.23,
-	null,
-	false
-  ]
-]`,
-		wantMessage: &structpb.Value{
-			Kind: &structpb.Value_ListValue{
-				&structpb.ListValue{
-					Values: []*structpb.Value{
-						{Kind: &structpb.Value_StringValue{"string"}},
-						{Kind: &structpb.Value_NumberValue{123}},
-						{Kind: &structpb.Value_NullValue{}},
-						{Kind: &structpb.Value_BoolValue{true}},
-						{Kind: &structpb.Value_StructValue{&structpb.Struct{}}},
-						{
-							Kind: &structpb.Value_ListValue{
-								&structpb.ListValue{
-									Values: []*structpb.Value{
-										{Kind: &structpb.Value_StringValue{"string"}},
-										{Kind: &structpb.Value_NumberValue{1.23}},
-										{Kind: &structpb.Value_NullValue{}},
-										{Kind: &structpb.Value_BoolValue{false}},
-									},
-								},
-							},
-						},
-					},
-				},
-			},
-		},
-	}, {
-		desc:         "Value list with invalid UTF8 string",
-		inputMessage: &structpb.Value{},
-		inputText:    "[\"abc\xff\"]",
-		wantErr:      `invalid UTF-8`,
-	}, {
-		desc:         "Value field list with invalid UTF8 string",
-		inputMessage: &pb2.KnownTypes{},
-		inputText: `{
-  "optValue": [ "` + "abc\xff" + `"]
-}`,
-		wantErr: `(line 2:17): invalid UTF-8`,
-	}, {
-		desc:         "Duration empty string",
-		inputMessage: &durationpb.Duration{},
-		inputText:    `""`,
-		wantErr:      `invalid google.protobuf.Duration value ""`,
-	}, {
-		desc:         "Duration with secs",
-		inputMessage: &durationpb.Duration{},
-		inputText:    `"3s"`,
-		wantMessage:  &durationpb.Duration{Seconds: 3},
-	}, {
-		desc:         "Duration with escaped unicode",
-		inputMessage: &durationpb.Duration{},
-		inputText:    `"\u0033s"`,
-		wantMessage:  &durationpb.Duration{Seconds: 3},
-	}, {
-		desc:         "Duration with -secs",
-		inputMessage: &durationpb.Duration{},
-		inputText:    `"-3s"`,
-		wantMessage:  &durationpb.Duration{Seconds: -3},
-	}, {
-		desc:         "Duration with plus sign",
-		inputMessage: &durationpb.Duration{},
-		inputText:    `"+3s"`,
-		wantMessage:  &durationpb.Duration{Seconds: 3},
-	}, {
-		desc:         "Duration with nanos",
-		inputMessage: &durationpb.Duration{},
-		inputText:    `"0.001s"`,
-		wantMessage:  &durationpb.Duration{Nanos: 1e6},
-	}, {
-		desc:         "Duration with -nanos",
-		inputMessage: &durationpb.Duration{},
-		inputText:    `"-0.001s"`,
-		wantMessage:  &durationpb.Duration{Nanos: -1e6},
-	}, {
-		desc:         "Duration with -nanos",
-		inputMessage: &durationpb.Duration{},
-		inputText:    `"-.001s"`,
-		wantMessage:  &durationpb.Duration{Nanos: -1e6},
-	}, {
-		desc:         "Duration with +nanos",
-		inputMessage: &durationpb.Duration{},
-		inputText:    `"+.001s"`,
-		wantMessage:  &durationpb.Duration{Nanos: 1e6},
-	}, {
-		desc:         "Duration with -secs -nanos",
-		inputMessage: &durationpb.Duration{},
-		inputText:    `"-123.000000450s"`,
-		wantMessage:  &durationpb.Duration{Seconds: -123, Nanos: -450},
-	}, {
-		desc:         "Duration with large secs",
-		inputMessage: &durationpb.Duration{},
-		inputText:    `"10000000000.000000001s"`,
-		wantMessage:  &durationpb.Duration{Seconds: 1e10, Nanos: 1},
-	}, {
-		desc:         "Duration with decimal without fractional",
-		inputMessage: &durationpb.Duration{},
-		inputText:    `"3.s"`,
-		wantMessage:  &durationpb.Duration{Seconds: 3},
-	}, {
-		desc:         "Duration with decimal without integer",
-		inputMessage: &durationpb.Duration{},
-		inputText:    `"0.5s"`,
-		wantMessage:  &durationpb.Duration{Nanos: 5e8},
-	}, {
-		desc:         "Duration max value",
-		inputMessage: &durationpb.Duration{},
-		inputText:    `"315576000000.999999999s"`,
-		wantMessage:  &durationpb.Duration{Seconds: 315576000000, Nanos: 999999999},
-	}, {
-		desc:         "Duration min value",
-		inputMessage: &durationpb.Duration{},
-		inputText:    `"-315576000000.999999999s"`,
-		wantMessage:  &durationpb.Duration{Seconds: -315576000000, Nanos: -999999999},
-	}, {
-		desc:         "Duration with +secs out of range",
-		inputMessage: &durationpb.Duration{},
-		inputText:    `"315576000001s"`,
-		wantErr:      `google.protobuf.Duration value out of range: "315576000001s"`,
-	}, {
-		desc:         "Duration with -secs out of range",
-		inputMessage: &durationpb.Duration{},
-		inputText:    `"-315576000001s"`,
-		wantErr:      `google.protobuf.Duration value out of range: "-315576000001s"`,
-	}, {
-		desc:         "Duration with nanos beyond 9 digits",
-		inputMessage: &durationpb.Duration{},
-		inputText:    `"0.1000000000s"`,
-		wantErr:      `invalid google.protobuf.Duration value "0.1000000000s"`,
-	}, {
-		desc:         "Duration without suffix s",
-		inputMessage: &durationpb.Duration{},
-		inputText:    `"123"`,
-		wantErr:      `invalid google.protobuf.Duration value "123"`,
-	}, {
-		desc:         "Duration invalid signed fraction",
-		inputMessage: &durationpb.Duration{},
-		inputText:    `"123.+123s"`,
-		wantErr:      `invalid google.protobuf.Duration value "123.+123s"`,
-	}, {
-		desc:         "Duration invalid multiple .",
-		inputMessage: &durationpb.Duration{},
-		inputText:    `"123.123.s"`,
-		wantErr:      `invalid google.protobuf.Duration value "123.123.s"`,
-	}, {
-		desc:         "Duration invalid integer",
-		inputMessage: &durationpb.Duration{},
-		inputText:    `"01s"`,
-		wantErr:      `invalid google.protobuf.Duration value "01s"`,
-	}, {
-		desc:         "Timestamp zero",
-		inputMessage: &timestamppb.Timestamp{},
-		inputText:    `"1970-01-01T00:00:00Z"`,
-		wantMessage:  &timestamppb.Timestamp{},
-	}, {
-		desc:         "Timestamp with tz adjustment",
-		inputMessage: &timestamppb.Timestamp{},
-		inputText:    `"1970-01-01T00:00:00+01:00"`,
-		wantMessage:  &timestamppb.Timestamp{Seconds: -3600},
-	}, {
-		desc:         "Timestamp UTC",
-		inputMessage: &timestamppb.Timestamp{},
-		inputText:    `"2019-03-19T23:03:21Z"`,
-		wantMessage:  &timestamppb.Timestamp{Seconds: 1553036601},
-	}, {
-		desc:         "Timestamp with escaped unicode",
-		inputMessage: &timestamppb.Timestamp{},
-		inputText:    `"2019-0\u0033-19T23:03:21Z"`,
-		wantMessage:  &timestamppb.Timestamp{Seconds: 1553036601},
-	}, {
-		desc:         "Timestamp with nanos",
-		inputMessage: &timestamppb.Timestamp{},
-		inputText:    `"2019-03-19T23:03:21.000000001Z"`,
-		wantMessage:  &timestamppb.Timestamp{Seconds: 1553036601, Nanos: 1},
-	}, {
-		desc:         "Timestamp max value",
-		inputMessage: &timestamppb.Timestamp{},
-		inputText:    `"9999-12-31T23:59:59.999999999Z"`,
-		wantMessage:  &timestamppb.Timestamp{Seconds: 253402300799, Nanos: 999999999},
-	}, {
-		desc:         "Timestamp above max value",
-		inputMessage: &timestamppb.Timestamp{},
-		inputText:    `"9999-12-31T23:59:59-01:00"`,
-		wantErr:      `google.protobuf.Timestamp value out of range: "9999-12-31T23:59:59-01:00"`,
-	}, {
-		desc:         "Timestamp min value",
-		inputMessage: &timestamppb.Timestamp{},
-		inputText:    `"0001-01-01T00:00:00Z"`,
-		wantMessage:  &timestamppb.Timestamp{Seconds: -62135596800},
-	}, {
-		desc:         "Timestamp below min value",
-		inputMessage: &timestamppb.Timestamp{},
-		inputText:    `"0001-01-01T00:00:00+01:00"`,
-		wantErr:      `google.protobuf.Timestamp value out of range: "0001-01-01T00:00:00+01:00"`,
-	}, {
-		desc:         "Timestamp with nanos beyond 9 digits",
-		inputMessage: &timestamppb.Timestamp{},
-		inputText:    `"1970-01-01T00:00:00.0000000001Z"`,
-		wantErr:      `invalid google.protobuf.Timestamp value`,
-	}, {
-		desc:         "FieldMask empty",
-		inputMessage: &fieldmaskpb.FieldMask{},
-		inputText:    `""`,
-		wantMessage:  &fieldmaskpb.FieldMask{Paths: []string{}},
-	}, {
-		desc:         "FieldMask",
-		inputMessage: &fieldmaskpb.FieldMask{},
-		inputText:    `"foo,fooBar,foo.barQux,Foo"`,
-		wantMessage: &fieldmaskpb.FieldMask{
-			Paths: []string{
-				"foo",
-				"foo_bar",
-				"foo.bar_qux",
-				"_foo",
-			},
-		},
-	}, {
-		desc:         "FieldMask empty path 1",
-		inputMessage: &fieldmaskpb.FieldMask{},
-		inputText:    `"foo,"`,
-		wantErr:      `google.protobuf.FieldMask.paths contains invalid path: ""`,
-	}, {
-		desc:         "FieldMask empty path 2",
-		inputMessage: &fieldmaskpb.FieldMask{},
-		inputText:    `"foo,  ,bar"`,
-		wantErr:      `google.protobuf.FieldMask.paths contains invalid path: "  "`,
-	}, {
-		desc:         "FieldMask invalid char 1",
-		inputMessage: &fieldmaskpb.FieldMask{},
-		inputText:    `"foo_bar"`,
-		wantErr:      `google.protobuf.FieldMask.paths contains invalid path: "foo_bar"`,
-	}, {
-		desc:         "FieldMask invalid char 2",
-		inputMessage: &fieldmaskpb.FieldMask{},
-		inputText:    `"foo@bar"`,
-		wantErr:      `google.protobuf.FieldMask.paths contains invalid path: "foo@bar"`,
-	}, {
-		desc:         "FieldMask field",
-		inputMessage: &pb2.KnownTypes{},
-		inputText: `{
-  "optFieldmask": "foo,qux.fooBar"
-}`,
-		wantMessage: &pb2.KnownTypes{
-			OptFieldmask: &fieldmaskpb.FieldMask{
-				Paths: []string{
-					"foo",
-					"qux.foo_bar",
-				},
-			},
-		},
-	}, {
-		desc:         "Any empty",
-		inputMessage: &anypb.Any{},
-		inputText:    `{}`,
-		wantMessage:  &anypb.Any{},
-	}, {
-		desc:         "Any with non-custom message",
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "@type": "foo/pb2.Nested",
-  "optString": "embedded inside Any",
-  "optNested": {
-    "optString": "inception"
-  }
-}`,
-		wantMessage: func() proto.Message {
-			m := &pb2.Nested{
-				OptString: proto.String("embedded inside Any"),
-				OptNested: &pb2.Nested{
-					OptString: proto.String("inception"),
-				},
-			}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: "foo/pb2.Nested",
-				Value:   b,
-			}
-		}(),
-	}, {
-		desc:         "Any with empty embedded message",
-		inputMessage: &anypb.Any{},
-		inputText:    `{"@type": "foo/pb2.Nested"}`,
-		wantMessage:  &anypb.Any{TypeUrl: "foo/pb2.Nested"},
-	}, {
-		desc:         "Any without registered type",
-		umo:          protojson.UnmarshalOptions{Resolver: new(preg.Types)},
-		inputMessage: &anypb.Any{},
-		inputText:    `{"@type": "foo/pb2.Nested"}`,
-		wantErr:      `(line 1:11): unable to resolve "foo/pb2.Nested":`,
-	}, {
-		desc:         "Any with missing required",
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "@type": "pb2.PartialRequired",
-  "optString": "embedded inside Any"
-}`,
-		wantMessage: func() proto.Message {
-			m := &pb2.PartialRequired{
-				OptString: proto.String("embedded inside Any"),
-			}
-			b, err := proto.MarshalOptions{
-				Deterministic: true,
-				AllowPartial:  true,
-			}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: string(m.ProtoReflect().Descriptor().FullName()),
-				Value:   b,
-			}
-		}(),
-	}, {
-		desc: "Any with partial required and AllowPartial",
-		umo: protojson.UnmarshalOptions{
-			AllowPartial: true,
-		},
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "@type": "pb2.PartialRequired",
-  "optString": "embedded inside Any"
-}`,
-		wantMessage: func() proto.Message {
-			m := &pb2.PartialRequired{
-				OptString: proto.String("embedded inside Any"),
-			}
-			b, err := proto.MarshalOptions{
-				Deterministic: true,
-				AllowPartial:  true,
-			}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: string(m.ProtoReflect().Descriptor().FullName()),
-				Value:   b,
-			}
-		}(),
-	}, {
-		desc:         "Any with invalid UTF8",
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "optString": "` + "abc\xff" + `",
-  "@type": "foo/pb2.Nested"
-}`,
-		wantErr: `(line 2:16): invalid UTF-8`,
-	}, {
-		desc:         "Any with BoolValue",
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "@type": "type.googleapis.com/google.protobuf.BoolValue",
-  "value": true
-}`,
-		wantMessage: func() proto.Message {
-			m := &wrapperspb.BoolValue{Value: true}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: "type.googleapis.com/google.protobuf.BoolValue",
-				Value:   b,
-			}
-		}(),
-	}, {
-		desc:         "Any with Empty",
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "value": {},
-  "@type": "type.googleapis.com/google.protobuf.Empty"
-}`,
-		wantMessage: &anypb.Any{
-			TypeUrl: "type.googleapis.com/google.protobuf.Empty",
-		},
-	}, {
-		desc:         "Any with missing Empty",
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "@type": "type.googleapis.com/google.protobuf.Empty"
-}`,
-		wantErr: `(line 3:1): missing "value" field`,
-	}, {
-		desc:         "Any with StringValue containing invalid UTF8",
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "@type": "google.protobuf.StringValue",
-  "value": "` + "abc\xff" + `"
-}`,
-		wantErr: `(line 3:12): invalid UTF-8`,
-	}, {
-		desc:         "Any with Int64Value",
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "@type": "google.protobuf.Int64Value",
-  "value": "42"
-}`,
-		wantMessage: func() proto.Message {
-			m := &wrapperspb.Int64Value{Value: 42}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: "google.protobuf.Int64Value",
-				Value:   b,
-			}
-		}(),
-	}, {
-		desc:         "Any with invalid Int64Value",
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "@type": "google.protobuf.Int64Value",
-  "value": "forty-two"
-}`,
-		wantErr: `(line 3:12): invalid value for int64 type: "forty-two"`,
-	}, {
-		desc:         "Any with invalid UInt64Value",
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "@type": "google.protobuf.UInt64Value",
-  "value": -42
-}`,
-		wantErr: `(line 3:12): invalid value for uint64 type: -42`,
-	}, {
-		desc:         "Any with Duration",
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "@type": "type.googleapis.com/google.protobuf.Duration",
-  "value": "0s"
-}`,
-		wantMessage: func() proto.Message {
-			m := &durationpb.Duration{}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: "type.googleapis.com/google.protobuf.Duration",
-				Value:   b,
-			}
-		}(),
-	}, {
-		desc:         "Any with Value of StringValue",
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "@type": "google.protobuf.Value",
-  "value": "` + "abc\xff" + `"
-}`,
-		wantErr: `(line 3:12): invalid UTF-8`,
-	}, {
-		desc:         "Any with Value of NullValue",
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "@type": "google.protobuf.Value",
-  "value": null
-}`,
-		wantMessage: func() proto.Message {
-			m := &structpb.Value{Kind: &structpb.Value_NullValue{}}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: "google.protobuf.Value",
-				Value:   b,
-			}
-		}(),
-	}, {
-		desc:         "Any with Struct",
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "@type": "google.protobuf.Struct",
-  "value": {
-    "bool": true,
-    "null": null,
-    "string": "hello",
-    "struct": {
-      "string": "world"
-    }
-  }
-}`,
-		wantMessage: func() proto.Message {
-			m := &structpb.Struct{
-				Fields: map[string]*structpb.Value{
-					"bool":   {Kind: &structpb.Value_BoolValue{true}},
-					"null":   {Kind: &structpb.Value_NullValue{}},
-					"string": {Kind: &structpb.Value_StringValue{"hello"}},
-					"struct": {
-						Kind: &structpb.Value_StructValue{
-							&structpb.Struct{
-								Fields: map[string]*structpb.Value{
-									"string": {Kind: &structpb.Value_StringValue{"world"}},
-								},
-							},
-						},
-					},
-				},
-			}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: "google.protobuf.Struct",
-				Value:   b,
-			}
-		}(),
-	}, {
-		desc:         "Any with missing @type",
-		umo:          protojson.UnmarshalOptions{},
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "value": {}
-}`,
-		wantErr: `(line 1:1): missing "@type" field`,
-	}, {
-		desc:         "Any with empty @type",
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "@type": ""
-}`,
-		wantErr: `(line 2:12): @type field contains empty value`,
-	}, {
-		desc:         "Any with duplicate @type",
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "@type": "google.protobuf.StringValue",
-  "value": "hello",
-  "@type": "pb2.Nested"
-}`,
-		wantErr: `(line 4:3): duplicate "@type" field`,
-	}, {
-		desc:         "Any with duplicate value",
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "@type": "google.protobuf.StringValue",
-  "value": "hello",
-  "value": "world"
-}`,
-		wantErr: `(line 4:3): duplicate "value" field`,
-	}, {
-		desc:         "Any with unknown field",
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "@type": "pb2.Nested",
-  "optString": "hello",
-  "unknown": "world"
-}`,
-		wantErr: `(line 4:3): unknown field "unknown"`,
-	}, {
-		desc:         "Any with embedded type containing Any",
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "@type": "pb2.KnownTypes",
-  "optAny": {
-    "@type": "google.protobuf.StringValue",
-    "value": "` + "abc\xff" + `"
-  }
-}`,
-		wantErr: `(line 5:14): invalid UTF-8`,
-	}, {
-		desc:         "well known types as field values",
-		inputMessage: &pb2.KnownTypes{},
-		inputText: `{
-  "optBool": false,
-  "optInt32": 42,
-  "optInt64": "42",
-  "optUint32": 42,
-  "optUint64": "42",
-  "optFloat": 1.23,
-  "optDouble": 3.1415,
-  "optString": "hello",
-  "optBytes": "aGVsbG8=",
-  "optDuration": "123s",
-  "optTimestamp": "2019-03-19T23:03:21Z",
-  "optStruct": {
-    "string": "hello"
-  },
-  "optList": [
-    null,
-    "",
-    {},
-    []
-  ],
-  "optValue": "world",
-  "optEmpty": {},
-  "optAny": {
-    "@type": "google.protobuf.Empty",
-    "value": {}
-  },
-  "optFieldmask": "fooBar,barFoo"
-}`,
-		wantMessage: &pb2.KnownTypes{
-			OptBool:      &wrapperspb.BoolValue{Value: false},
-			OptInt32:     &wrapperspb.Int32Value{Value: 42},
-			OptInt64:     &wrapperspb.Int64Value{Value: 42},
-			OptUint32:    &wrapperspb.UInt32Value{Value: 42},
-			OptUint64:    &wrapperspb.UInt64Value{Value: 42},
-			OptFloat:     &wrapperspb.FloatValue{Value: 1.23},
-			OptDouble:    &wrapperspb.DoubleValue{Value: 3.1415},
-			OptString:    &wrapperspb.StringValue{Value: "hello"},
-			OptBytes:     &wrapperspb.BytesValue{Value: []byte("hello")},
-			OptDuration:  &durationpb.Duration{Seconds: 123},
-			OptTimestamp: &timestamppb.Timestamp{Seconds: 1553036601},
-			OptStruct: &structpb.Struct{
-				Fields: map[string]*structpb.Value{
-					"string": {Kind: &structpb.Value_StringValue{"hello"}},
-				},
-			},
-			OptList: &structpb.ListValue{
-				Values: []*structpb.Value{
-					{Kind: &structpb.Value_NullValue{}},
-					{Kind: &structpb.Value_StringValue{}},
-					{
-						Kind: &structpb.Value_StructValue{
-							&structpb.Struct{Fields: map[string]*structpb.Value{}},
-						},
-					},
-					{
-						Kind: &structpb.Value_ListValue{
-							&structpb.ListValue{Values: []*structpb.Value{}},
-						},
-					},
-				},
-			},
-			OptValue: &structpb.Value{
-				Kind: &structpb.Value_StringValue{"world"},
-			},
-			OptEmpty: &emptypb.Empty{},
-			OptAny: &anypb.Any{
-				TypeUrl: "google.protobuf.Empty",
-			},
-			OptFieldmask: &fieldmaskpb.FieldMask{
-				Paths: []string{"foo_bar", "bar_foo"},
-			},
-		},
-	}, {
-		desc:         "DiscardUnknown: regular messages",
-		umo:          protojson.UnmarshalOptions{DiscardUnknown: true},
-		inputMessage: &pb3.Nests{},
-		inputText: `{
-  "sNested": {
-    "unknown": {
-      "foo": 1,
-	  "bar": [1, 2, 3]
-    }
-  },
-  "unknown": "not known"
-}`,
-		wantMessage: &pb3.Nests{SNested: &pb3.Nested{}},
-	}, {
-		desc:         "DiscardUnknown: repeated",
-		umo:          protojson.UnmarshalOptions{DiscardUnknown: true},
-		inputMessage: &pb2.Nests{},
-		inputText: `{
-  "rptNested": [
-    {"unknown": "blah"},
-	{"optString": "hello"}
-  ]
-}`,
-		wantMessage: &pb2.Nests{
-			RptNested: []*pb2.Nested{
-				{},
-				{OptString: proto.String("hello")},
-			},
-		},
-	}, {
-		desc:         "DiscardUnknown: map",
-		umo:          protojson.UnmarshalOptions{DiscardUnknown: true},
-		inputMessage: &pb3.Maps{},
-		inputText: `{
-  "strToNested": {
-    "nested_one": {
-	  "unknown": "what you see is not"
-    }
-  }
-}`,
-		wantMessage: &pb3.Maps{
-			StrToNested: map[string]*pb3.Nested{
-				"nested_one": {},
-			},
-		},
-	}, {
-		desc:         "DiscardUnknown: extension",
-		umo:          protojson.UnmarshalOptions{DiscardUnknown: true},
-		inputMessage: &pb2.Extensions{},
-		inputText: `{
-  "[pb2.opt_ext_nested]": {
-	"unknown": []
-  }
-}`,
-		wantMessage: func() proto.Message {
-			m := &pb2.Extensions{}
-			proto.SetExtension(m, pb2.E_OptExtNested, &pb2.Nested{})
-			return m
-		}(),
-	}, {
-		desc:         "DiscardUnknown: Empty",
-		umo:          protojson.UnmarshalOptions{DiscardUnknown: true},
-		inputMessage: &emptypb.Empty{},
-		inputText:    `{"unknown": "something"}`,
-		wantMessage:  &emptypb.Empty{},
-	}, {
-		desc:         "DiscardUnknown: Any without type",
-		umo:          protojson.UnmarshalOptions{DiscardUnknown: true},
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "value": {"foo": "bar"},
-  "unknown": true
-}`,
-		wantMessage: &anypb.Any{},
-	}, {
-		desc: "DiscardUnknown: Any",
-		umo: protojson.UnmarshalOptions{
-			DiscardUnknown: true,
-		},
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "@type": "foo/pb2.Nested",
-  "unknown": "none"
-}`,
-		wantMessage: &anypb.Any{
-			TypeUrl: "foo/pb2.Nested",
-		},
-	}, {
-		desc: "DiscardUnknown: Any with Empty",
-		umo: protojson.UnmarshalOptions{
-			DiscardUnknown: true,
-		},
-		inputMessage: &anypb.Any{},
-		inputText: `{
-  "@type": "type.googleapis.com/google.protobuf.Empty",
-  "value": {"unknown": 47}
-}`,
-		wantMessage: &anypb.Any{
-			TypeUrl: "type.googleapis.com/google.protobuf.Empty",
-		},
-	}, {
-		desc:         "weak fields",
-		inputMessage: &testpb.TestWeak{},
-		inputText:    `{"weak_message1":{"a":1}}`,
-		wantMessage: func() *testpb.TestWeak {
-			m := new(testpb.TestWeak)
-			m.SetWeakMessage1(&weakpb.WeakImportMessage1{A: proto.Int32(1)})
-			return m
-		}(),
-		skip: !flags.ProtoLegacy,
-	}, {
-		desc:         "weak fields; unknown field",
-		inputMessage: &testpb.TestWeak{},
-		inputText:    `{"weak_message1":{"a":1}, "weak_message2":{"a":1}}`,
-		wantErr:      `unknown field "weak_message2"`, // weak_message2 is unknown since the package containing it is not imported
-		skip:         !flags.ProtoLegacy,
-	}}
-
-	for _, tt := range tests {
-		tt := tt
-		if tt.skip {
-			continue
-		}
-		t.Run(tt.desc, func(t *testing.T) {
-			err := tt.umo.Unmarshal([]byte(tt.inputText), tt.inputMessage)
-			if err != nil {
-				if tt.wantErr == "" {
-					t.Errorf("Unmarshal() got unexpected error: %v", err)
-				} else if !strings.Contains(err.Error(), tt.wantErr) {
-					t.Errorf("Unmarshal() error got %q, want %q", err, tt.wantErr)
-				}
-				return
-			}
-			if tt.wantErr != "" {
-				t.Errorf("Unmarshal() got nil error, want error %q", tt.wantErr)
-			}
-			if tt.wantMessage != nil && !proto.Equal(tt.inputMessage, tt.wantMessage) {
-				t.Errorf("Unmarshal()\n<got>\n%v\n<want>\n%v\n", tt.inputMessage, tt.wantMessage)
-			}
-		})
-	}
-}
diff --git a/encoding/protojson/doc.go b/encoding/protojson/doc.go
deleted file mode 100644
index 00ea2fe..0000000
--- a/encoding/protojson/doc.go
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package protojson marshals and unmarshals protocol buffer messages as JSON
-// format. It follows the guide at
-// https://developers.google.com/protocol-buffers/docs/proto3#json.
-//
-// This package produces a different output than the standard "encoding/json"
-// package, which does not operate correctly on protocol buffer messages.
-package protojson
diff --git a/encoding/protojson/encode.go b/encoding/protojson/encode.go
deleted file mode 100644
index ba971f0..0000000
--- a/encoding/protojson/encode.go
+++ /dev/null
@@ -1,344 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protojson
-
-import (
-	"encoding/base64"
-	"fmt"
-
-	"google.golang.org/protobuf/internal/encoding/json"
-	"google.golang.org/protobuf/internal/encoding/messageset"
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/internal/filedesc"
-	"google.golang.org/protobuf/internal/flags"
-	"google.golang.org/protobuf/internal/genid"
-	"google.golang.org/protobuf/internal/order"
-	"google.golang.org/protobuf/internal/pragma"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/reflect/protoregistry"
-)
-
-const defaultIndent = "  "
-
-// Format formats the message as a multiline string.
-// This function is only intended for human consumption and ignores errors.
-// Do not depend on the output being stable. It may change over time across
-// different versions of the program.
-func Format(m proto.Message) string {
-	return MarshalOptions{Multiline: true}.Format(m)
-}
-
-// Marshal writes the given proto.Message in JSON format using default options.
-// Do not depend on the output being stable. It may change over time across
-// different versions of the program.
-func Marshal(m proto.Message) ([]byte, error) {
-	return MarshalOptions{}.Marshal(m)
-}
-
-// MarshalOptions is a configurable JSON format marshaler.
-type MarshalOptions struct {
-	pragma.NoUnkeyedLiterals
-
-	// Multiline specifies whether the marshaler should format the output in
-	// indented-form with every textual element on a new line.
-	// If Indent is an empty string, then an arbitrary indent is chosen.
-	Multiline bool
-
-	// Indent specifies the set of indentation characters to use in a multiline
-	// formatted output such that every entry is preceded by Indent and
-	// terminated by a newline. If non-empty, then Multiline is treated as true.
-	// Indent can only be composed of space or tab characters.
-	Indent string
-
-	// AllowPartial allows messages that have missing required fields to marshal
-	// without returning an error. If AllowPartial is false (the default),
-	// Marshal will return error if there are any missing required fields.
-	AllowPartial bool
-
-	// UseProtoNames uses proto field name instead of lowerCamelCase name in JSON
-	// field names.
-	UseProtoNames bool
-
-	// UseEnumNumbers emits enum values as numbers.
-	UseEnumNumbers bool
-
-	// EmitUnpopulated specifies whether to emit unpopulated fields. It does not
-	// emit unpopulated oneof fields or unpopulated extension fields.
-	// The JSON value emitted for unpopulated fields are as follows:
-	//  ╔═══════╤════════════════════════════╗
-	//  ║ JSON  │ Protobuf field             ║
-	//  ╠═══════╪════════════════════════════╣
-	//  ║ false │ proto3 boolean fields      ║
-	//  ║ 0     │ proto3 numeric fields      ║
-	//  ║ ""    │ proto3 string/bytes fields ║
-	//  ║ null  │ proto2 scalar fields       ║
-	//  ║ null  │ message fields             ║
-	//  ║ []    │ list fields                ║
-	//  ║ {}    │ map fields                 ║
-	//  ╚═══════╧════════════════════════════╝
-	EmitUnpopulated bool
-
-	// Resolver is used for looking up types when expanding google.protobuf.Any
-	// messages. If nil, this defaults to using protoregistry.GlobalTypes.
-	Resolver interface {
-		protoregistry.ExtensionTypeResolver
-		protoregistry.MessageTypeResolver
-	}
-}
-
-// Format formats the message as a string.
-// This method is only intended for human consumption and ignores errors.
-// Do not depend on the output being stable. It may change over time across
-// different versions of the program.
-func (o MarshalOptions) Format(m proto.Message) string {
-	if m == nil || !m.ProtoReflect().IsValid() {
-		return "<nil>" // invalid syntax, but okay since this is for debugging
-	}
-	o.AllowPartial = true
-	b, _ := o.Marshal(m)
-	return string(b)
-}
-
-// Marshal marshals the given proto.Message in the JSON format using options in
-// MarshalOptions. Do not depend on the output being stable. It may change over
-// time across different versions of the program.
-func (o MarshalOptions) Marshal(m proto.Message) ([]byte, error) {
-	return o.marshal(m)
-}
-
-// marshal is a centralized function that all marshal operations go through.
-// For profiling purposes, avoid changing the name of this function or
-// introducing other code paths for marshal that do not go through this.
-func (o MarshalOptions) marshal(m proto.Message) ([]byte, error) {
-	if o.Multiline && o.Indent == "" {
-		o.Indent = defaultIndent
-	}
-	if o.Resolver == nil {
-		o.Resolver = protoregistry.GlobalTypes
-	}
-
-	internalEnc, err := json.NewEncoder(o.Indent)
-	if err != nil {
-		return nil, err
-	}
-
-	// Treat nil message interface as an empty message,
-	// in which case the output in an empty JSON object.
-	if m == nil {
-		return []byte("{}"), nil
-	}
-
-	enc := encoder{internalEnc, o}
-	if err := enc.marshalMessage(m.ProtoReflect(), ""); err != nil {
-		return nil, err
-	}
-	if o.AllowPartial {
-		return enc.Bytes(), nil
-	}
-	return enc.Bytes(), proto.CheckInitialized(m)
-}
-
-type encoder struct {
-	*json.Encoder
-	opts MarshalOptions
-}
-
-// typeFieldDesc is a synthetic field descriptor used for the "@type" field.
-var typeFieldDesc = func() protoreflect.FieldDescriptor {
-	var fd filedesc.Field
-	fd.L0.FullName = "@type"
-	fd.L0.Index = -1
-	fd.L1.Cardinality = protoreflect.Optional
-	fd.L1.Kind = protoreflect.StringKind
-	return &fd
-}()
-
-// typeURLFieldRanger wraps a protoreflect.Message and modifies its Range method
-// to additionally iterate over a synthetic field for the type URL.
-type typeURLFieldRanger struct {
-	order.FieldRanger
-	typeURL string
-}
-
-func (m typeURLFieldRanger) Range(f func(pref.FieldDescriptor, pref.Value) bool) {
-	if !f(typeFieldDesc, pref.ValueOfString(m.typeURL)) {
-		return
-	}
-	m.FieldRanger.Range(f)
-}
-
-// unpopulatedFieldRanger wraps a protoreflect.Message and modifies its Range
-// method to additionally iterate over unpopulated fields.
-type unpopulatedFieldRanger struct{ pref.Message }
-
-func (m unpopulatedFieldRanger) Range(f func(pref.FieldDescriptor, pref.Value) bool) {
-	fds := m.Descriptor().Fields()
-	for i := 0; i < fds.Len(); i++ {
-		fd := fds.Get(i)
-		if m.Has(fd) || fd.ContainingOneof() != nil {
-			continue // ignore populated fields and fields within a oneofs
-		}
-
-		v := m.Get(fd)
-		isProto2Scalar := fd.Syntax() == pref.Proto2 && fd.Default().IsValid()
-		isSingularMessage := fd.Cardinality() != pref.Repeated && fd.Message() != nil
-		if isProto2Scalar || isSingularMessage {
-			v = pref.Value{} // use invalid value to emit null
-		}
-		if !f(fd, v) {
-			return
-		}
-	}
-	m.Message.Range(f)
-}
-
-// marshalMessage marshals the fields in the given protoreflect.Message.
-// If the typeURL is non-empty, then a synthetic "@type" field is injected
-// containing the URL as the value.
-func (e encoder) marshalMessage(m pref.Message, typeURL string) error {
-	if !flags.ProtoLegacy && messageset.IsMessageSet(m.Descriptor()) {
-		return errors.New("no support for proto1 MessageSets")
-	}
-
-	if marshal := wellKnownTypeMarshaler(m.Descriptor().FullName()); marshal != nil {
-		return marshal(e, m)
-	}
-
-	e.StartObject()
-	defer e.EndObject()
-
-	var fields order.FieldRanger = m
-	if e.opts.EmitUnpopulated {
-		fields = unpopulatedFieldRanger{m}
-	}
-	if typeURL != "" {
-		fields = typeURLFieldRanger{fields, typeURL}
-	}
-
-	var err error
-	order.RangeFields(fields, order.IndexNameFieldOrder, func(fd pref.FieldDescriptor, v pref.Value) bool {
-		name := fd.JSONName()
-		if e.opts.UseProtoNames {
-			name = fd.TextName()
-		}
-
-		if err = e.WriteName(name); err != nil {
-			return false
-		}
-		if err = e.marshalValue(v, fd); err != nil {
-			return false
-		}
-		return true
-	})
-	return err
-}
-
-// marshalValue marshals the given protoreflect.Value.
-func (e encoder) marshalValue(val pref.Value, fd pref.FieldDescriptor) error {
-	switch {
-	case fd.IsList():
-		return e.marshalList(val.List(), fd)
-	case fd.IsMap():
-		return e.marshalMap(val.Map(), fd)
-	default:
-		return e.marshalSingular(val, fd)
-	}
-}
-
-// marshalSingular marshals the given non-repeated field value. This includes
-// all scalar types, enums, messages, and groups.
-func (e encoder) marshalSingular(val pref.Value, fd pref.FieldDescriptor) error {
-	if !val.IsValid() {
-		e.WriteNull()
-		return nil
-	}
-
-	switch kind := fd.Kind(); kind {
-	case pref.BoolKind:
-		e.WriteBool(val.Bool())
-
-	case pref.StringKind:
-		if e.WriteString(val.String()) != nil {
-			return errors.InvalidUTF8(string(fd.FullName()))
-		}
-
-	case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
-		e.WriteInt(val.Int())
-
-	case pref.Uint32Kind, pref.Fixed32Kind:
-		e.WriteUint(val.Uint())
-
-	case pref.Int64Kind, pref.Sint64Kind, pref.Uint64Kind,
-		pref.Sfixed64Kind, pref.Fixed64Kind:
-		// 64-bit integers are written out as JSON string.
-		e.WriteString(val.String())
-
-	case pref.FloatKind:
-		// Encoder.WriteFloat handles the special numbers NaN and infinites.
-		e.WriteFloat(val.Float(), 32)
-
-	case pref.DoubleKind:
-		// Encoder.WriteFloat handles the special numbers NaN and infinites.
-		e.WriteFloat(val.Float(), 64)
-
-	case pref.BytesKind:
-		e.WriteString(base64.StdEncoding.EncodeToString(val.Bytes()))
-
-	case pref.EnumKind:
-		if fd.Enum().FullName() == genid.NullValue_enum_fullname {
-			e.WriteNull()
-		} else {
-			desc := fd.Enum().Values().ByNumber(val.Enum())
-			if e.opts.UseEnumNumbers || desc == nil {
-				e.WriteInt(int64(val.Enum()))
-			} else {
-				e.WriteString(string(desc.Name()))
-			}
-		}
-
-	case pref.MessageKind, pref.GroupKind:
-		if err := e.marshalMessage(val.Message(), ""); err != nil {
-			return err
-		}
-
-	default:
-		panic(fmt.Sprintf("%v has unknown kind: %v", fd.FullName(), kind))
-	}
-	return nil
-}
-
-// marshalList marshals the given protoreflect.List.
-func (e encoder) marshalList(list pref.List, fd pref.FieldDescriptor) error {
-	e.StartArray()
-	defer e.EndArray()
-
-	for i := 0; i < list.Len(); i++ {
-		item := list.Get(i)
-		if err := e.marshalSingular(item, fd); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-// marshalMap marshals given protoreflect.Map.
-func (e encoder) marshalMap(mmap pref.Map, fd pref.FieldDescriptor) error {
-	e.StartObject()
-	defer e.EndObject()
-
-	var err error
-	order.RangeEntries(mmap, order.GenericKeyOrder, func(k pref.MapKey, v pref.Value) bool {
-		if err = e.WriteName(k.String()); err != nil {
-			return false
-		}
-		if err = e.marshalSingular(v, fd.MapValue()); err != nil {
-			return false
-		}
-		return true
-	})
-	return err
-}
diff --git a/encoding/protojson/encode_test.go b/encoding/protojson/encode_test.go
deleted file mode 100644
index f1a05fe..0000000
--- a/encoding/protojson/encode_test.go
+++ /dev/null
@@ -1,2312 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protojson_test
-
-import (
-	"bytes"
-	"math"
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-
-	"google.golang.org/protobuf/encoding/protojson"
-	"google.golang.org/protobuf/internal/detrand"
-	"google.golang.org/protobuf/internal/flags"
-	"google.golang.org/protobuf/proto"
-	preg "google.golang.org/protobuf/reflect/protoregistry"
-	"google.golang.org/protobuf/testing/protopack"
-
-	pb2 "google.golang.org/protobuf/internal/testprotos/textpb2"
-	pb3 "google.golang.org/protobuf/internal/testprotos/textpb3"
-	"google.golang.org/protobuf/types/known/anypb"
-	"google.golang.org/protobuf/types/known/durationpb"
-	"google.golang.org/protobuf/types/known/emptypb"
-	"google.golang.org/protobuf/types/known/fieldmaskpb"
-	"google.golang.org/protobuf/types/known/structpb"
-	"google.golang.org/protobuf/types/known/timestamppb"
-	"google.golang.org/protobuf/types/known/wrapperspb"
-)
-
-// Disable detrand to enable direct comparisons on outputs.
-func init() { detrand.Disable() }
-
-func TestMarshal(t *testing.T) {
-	tests := []struct {
-		desc    string
-		mo      protojson.MarshalOptions
-		input   proto.Message
-		want    string
-		wantErr bool // TODO: Verify error message substring.
-		skip    bool
-	}{{
-		desc:  "proto2 optional scalars not set",
-		input: &pb2.Scalars{},
-		want:  "{}",
-	}, {
-		desc:  "proto3 scalars not set",
-		input: &pb3.Scalars{},
-		want:  "{}",
-	}, {
-		desc:  "proto3 optional not set",
-		input: &pb3.Proto3Optional{},
-		want:  "{}",
-	}, {
-		desc: "proto2 optional scalars set to zero values",
-		input: &pb2.Scalars{
-			OptBool:     proto.Bool(false),
-			OptInt32:    proto.Int32(0),
-			OptInt64:    proto.Int64(0),
-			OptUint32:   proto.Uint32(0),
-			OptUint64:   proto.Uint64(0),
-			OptSint32:   proto.Int32(0),
-			OptSint64:   proto.Int64(0),
-			OptFixed32:  proto.Uint32(0),
-			OptFixed64:  proto.Uint64(0),
-			OptSfixed32: proto.Int32(0),
-			OptSfixed64: proto.Int64(0),
-			OptFloat:    proto.Float32(0),
-			OptDouble:   proto.Float64(0),
-			OptBytes:    []byte{},
-			OptString:   proto.String(""),
-		},
-		want: `{
-  "optBool": false,
-  "optInt32": 0,
-  "optInt64": "0",
-  "optUint32": 0,
-  "optUint64": "0",
-  "optSint32": 0,
-  "optSint64": "0",
-  "optFixed32": 0,
-  "optFixed64": "0",
-  "optSfixed32": 0,
-  "optSfixed64": "0",
-  "optFloat": 0,
-  "optDouble": 0,
-  "optBytes": "",
-  "optString": ""
-}`,
-	}, {
-		desc: "proto3 optional set to zero values",
-		input: &pb3.Proto3Optional{
-			OptBool:    proto.Bool(false),
-			OptInt32:   proto.Int32(0),
-			OptInt64:   proto.Int64(0),
-			OptUint32:  proto.Uint32(0),
-			OptUint64:  proto.Uint64(0),
-			OptFloat:   proto.Float32(0),
-			OptDouble:  proto.Float64(0),
-			OptString:  proto.String(""),
-			OptBytes:   []byte{},
-			OptEnum:    pb3.Enum_ZERO.Enum(),
-			OptMessage: &pb3.Nested{},
-		},
-		want: `{
-  "optBool": false,
-  "optInt32": 0,
-  "optInt64": "0",
-  "optUint32": 0,
-  "optUint64": "0",
-  "optFloat": 0,
-  "optDouble": 0,
-  "optString": "",
-  "optBytes": "",
-  "optEnum": "ZERO",
-  "optMessage": {}
-}`,
-	}, {
-		desc: "proto2 optional scalars set to some values",
-		input: &pb2.Scalars{
-			OptBool:     proto.Bool(true),
-			OptInt32:    proto.Int32(0xff),
-			OptInt64:    proto.Int64(0xdeadbeef),
-			OptUint32:   proto.Uint32(47),
-			OptUint64:   proto.Uint64(0xdeadbeef),
-			OptSint32:   proto.Int32(-1001),
-			OptSint64:   proto.Int64(-0xffff),
-			OptFixed64:  proto.Uint64(64),
-			OptSfixed32: proto.Int32(-32),
-			OptFloat:    proto.Float32(1.02),
-			OptDouble:   proto.Float64(1.234),
-			OptBytes:    []byte("谷歌"),
-			OptString:   proto.String("谷歌"),
-		},
-		want: `{
-  "optBool": true,
-  "optInt32": 255,
-  "optInt64": "3735928559",
-  "optUint32": 47,
-  "optUint64": "3735928559",
-  "optSint32": -1001,
-  "optSint64": "-65535",
-  "optFixed64": "64",
-  "optSfixed32": -32,
-  "optFloat": 1.02,
-  "optDouble": 1.234,
-  "optBytes": "6LC35q2M",
-  "optString": "谷歌"
-}`,
-	}, {
-		desc: "string",
-		input: &pb3.Scalars{
-			SString: "谷歌",
-		},
-		want: `{
-  "sString": "谷歌"
-}`,
-	}, {
-		desc: "string with invalid UTF8",
-		input: &pb3.Scalars{
-			SString: "abc\xff",
-		},
-		wantErr: true,
-	}, {
-		desc: "float nan",
-		input: &pb3.Scalars{
-			SFloat: float32(math.NaN()),
-		},
-		want: `{
-  "sFloat": "NaN"
-}`,
-	}, {
-		desc: "float positive infinity",
-		input: &pb3.Scalars{
-			SFloat: float32(math.Inf(1)),
-		},
-		want: `{
-  "sFloat": "Infinity"
-}`,
-	}, {
-		desc: "float negative infinity",
-		input: &pb3.Scalars{
-			SFloat: float32(math.Inf(-1)),
-		},
-		want: `{
-  "sFloat": "-Infinity"
-}`,
-	}, {
-		desc: "double nan",
-		input: &pb3.Scalars{
-			SDouble: math.NaN(),
-		},
-		want: `{
-  "sDouble": "NaN"
-}`,
-	}, {
-		desc: "double positive infinity",
-		input: &pb3.Scalars{
-			SDouble: math.Inf(1),
-		},
-		want: `{
-  "sDouble": "Infinity"
-}`,
-	}, {
-		desc: "double negative infinity",
-		input: &pb3.Scalars{
-			SDouble: math.Inf(-1),
-		},
-		want: `{
-  "sDouble": "-Infinity"
-}`,
-	}, {
-		desc:  "proto2 enum not set",
-		input: &pb2.Enums{},
-		want:  "{}",
-	}, {
-		desc: "proto2 enum set to zero value",
-		input: &pb2.Enums{
-			OptEnum:       pb2.Enum(0).Enum(),
-			OptNestedEnum: pb2.Enums_NestedEnum(0).Enum(),
-		},
-		want: `{
-  "optEnum": 0,
-  "optNestedEnum": 0
-}`,
-	}, {
-		desc: "proto2 enum",
-		input: &pb2.Enums{
-			OptEnum:       pb2.Enum_ONE.Enum(),
-			OptNestedEnum: pb2.Enums_UNO.Enum(),
-		},
-		want: `{
-  "optEnum": "ONE",
-  "optNestedEnum": "UNO"
-}`,
-	}, {
-		desc: "proto2 enum set to numeric values",
-		input: &pb2.Enums{
-			OptEnum:       pb2.Enum(2).Enum(),
-			OptNestedEnum: pb2.Enums_NestedEnum(2).Enum(),
-		},
-		want: `{
-  "optEnum": "TWO",
-  "optNestedEnum": "DOS"
-}`,
-	}, {
-		desc: "proto2 enum set to unnamed numeric values",
-		input: &pb2.Enums{
-			OptEnum:       pb2.Enum(101).Enum(),
-			OptNestedEnum: pb2.Enums_NestedEnum(-101).Enum(),
-		},
-		want: `{
-  "optEnum": 101,
-  "optNestedEnum": -101
-}`,
-	}, {
-		desc:  "proto3 enum not set",
-		input: &pb3.Enums{},
-		want:  "{}",
-	}, {
-		desc: "proto3 enum set to zero value",
-		input: &pb3.Enums{
-			SEnum:       pb3.Enum_ZERO,
-			SNestedEnum: pb3.Enums_CERO,
-		},
-		want: "{}",
-	}, {
-		desc: "proto3 enum",
-		input: &pb3.Enums{
-			SEnum:       pb3.Enum_ONE,
-			SNestedEnum: pb3.Enums_UNO,
-		},
-		want: `{
-  "sEnum": "ONE",
-  "sNestedEnum": "UNO"
-}`,
-	}, {
-		desc: "proto3 enum set to numeric values",
-		input: &pb3.Enums{
-			SEnum:       2,
-			SNestedEnum: 2,
-		},
-		want: `{
-  "sEnum": "TWO",
-  "sNestedEnum": "DOS"
-}`,
-	}, {
-		desc: "proto3 enum set to unnamed numeric values",
-		input: &pb3.Enums{
-			SEnum:       -47,
-			SNestedEnum: 47,
-		},
-		want: `{
-  "sEnum": -47,
-  "sNestedEnum": 47
-}`,
-	}, {
-		desc:  "proto2 nested message not set",
-		input: &pb2.Nests{},
-		want:  "{}",
-	}, {
-		desc: "proto2 nested message set to empty",
-		input: &pb2.Nests{
-			OptNested: &pb2.Nested{},
-			Optgroup:  &pb2.Nests_OptGroup{},
-		},
-		want: `{
-  "optNested": {},
-  "optgroup": {}
-}`,
-	}, {
-		desc: "proto2 nested messages",
-		input: &pb2.Nests{
-			OptNested: &pb2.Nested{
-				OptString: proto.String("nested message"),
-				OptNested: &pb2.Nested{
-					OptString: proto.String("another nested message"),
-				},
-			},
-		},
-		want: `{
-  "optNested": {
-    "optString": "nested message",
-    "optNested": {
-      "optString": "another nested message"
-    }
-  }
-}`,
-	}, {
-		desc: "proto2 groups",
-		input: &pb2.Nests{
-			Optgroup: &pb2.Nests_OptGroup{
-				OptString: proto.String("inside a group"),
-				OptNested: &pb2.Nested{
-					OptString: proto.String("nested message inside a group"),
-				},
-				Optnestedgroup: &pb2.Nests_OptGroup_OptNestedGroup{
-					OptFixed32: proto.Uint32(47),
-				},
-			},
-		},
-		want: `{
-  "optgroup": {
-    "optString": "inside a group",
-    "optNested": {
-      "optString": "nested message inside a group"
-    },
-    "optnestedgroup": {
-      "optFixed32": 47
-    }
-  }
-}`,
-	}, {
-		desc:  "proto3 nested message not set",
-		input: &pb3.Nests{},
-		want:  "{}",
-	}, {
-		desc: "proto3 nested message set to empty",
-		input: &pb3.Nests{
-			SNested: &pb3.Nested{},
-		},
-		want: `{
-  "sNested": {}
-}`,
-	}, {
-		desc: "proto3 nested message",
-		input: &pb3.Nests{
-			SNested: &pb3.Nested{
-				SString: "nested message",
-				SNested: &pb3.Nested{
-					SString: "another nested message",
-				},
-			},
-		},
-		want: `{
-  "sNested": {
-    "sString": "nested message",
-    "sNested": {
-      "sString": "another nested message"
-    }
-  }
-}`,
-	}, {
-		desc:  "oneof not set",
-		input: &pb3.Oneofs{},
-		want:  "{}",
-	}, {
-		desc: "oneof set to empty string",
-		input: &pb3.Oneofs{
-			Union: &pb3.Oneofs_OneofString{},
-		},
-		want: `{
-  "oneofString": ""
-}`,
-	}, {
-		desc: "oneof set to string",
-		input: &pb3.Oneofs{
-			Union: &pb3.Oneofs_OneofString{
-				OneofString: "hello",
-			},
-		},
-		want: `{
-  "oneofString": "hello"
-}`,
-	}, {
-		desc: "oneof set to enum",
-		input: &pb3.Oneofs{
-			Union: &pb3.Oneofs_OneofEnum{
-				OneofEnum: pb3.Enum_ZERO,
-			},
-		},
-		want: `{
-  "oneofEnum": "ZERO"
-}`,
-	}, {
-		desc: "oneof set to empty message",
-		input: &pb3.Oneofs{
-			Union: &pb3.Oneofs_OneofNested{
-				OneofNested: &pb3.Nested{},
-			},
-		},
-		want: `{
-  "oneofNested": {}
-}`,
-	}, {
-		desc: "oneof set to message",
-		input: &pb3.Oneofs{
-			Union: &pb3.Oneofs_OneofNested{
-				OneofNested: &pb3.Nested{
-					SString: "nested message",
-				},
-			},
-		},
-		want: `{
-  "oneofNested": {
-    "sString": "nested message"
-  }
-}`,
-	}, {
-		desc:  "repeated fields not set",
-		input: &pb2.Repeats{},
-		want:  "{}",
-	}, {
-		desc: "repeated fields set to empty slices",
-		input: &pb2.Repeats{
-			RptBool:   []bool{},
-			RptInt32:  []int32{},
-			RptInt64:  []int64{},
-			RptUint32: []uint32{},
-			RptUint64: []uint64{},
-			RptFloat:  []float32{},
-			RptDouble: []float64{},
-			RptBytes:  [][]byte{},
-		},
-		want: "{}",
-	}, {
-		desc: "repeated fields set to some values",
-		input: &pb2.Repeats{
-			RptBool:   []bool{true, false, true, true},
-			RptInt32:  []int32{1, 6, 0, 0},
-			RptInt64:  []int64{-64, 47},
-			RptUint32: []uint32{0xff, 0xffff},
-			RptUint64: []uint64{0xdeadbeef},
-			RptFloat:  []float32{float32(math.NaN()), float32(math.Inf(1)), float32(math.Inf(-1)), 1.034},
-			RptDouble: []float64{math.NaN(), math.Inf(1), math.Inf(-1), 1.23e-308},
-			RptString: []string{"hello", "世界"},
-			RptBytes: [][]byte{
-				[]byte("hello"),
-				[]byte("\xe4\xb8\x96\xe7\x95\x8c"),
-			},
-		},
-		want: `{
-  "rptBool": [
-    true,
-    false,
-    true,
-    true
-  ],
-  "rptInt32": [
-    1,
-    6,
-    0,
-    0
-  ],
-  "rptInt64": [
-    "-64",
-    "47"
-  ],
-  "rptUint32": [
-    255,
-    65535
-  ],
-  "rptUint64": [
-    "3735928559"
-  ],
-  "rptFloat": [
-    "NaN",
-    "Infinity",
-    "-Infinity",
-    1.034
-  ],
-  "rptDouble": [
-    "NaN",
-    "Infinity",
-    "-Infinity",
-    1.23e-308
-  ],
-  "rptString": [
-    "hello",
-    "世界"
-  ],
-  "rptBytes": [
-    "aGVsbG8=",
-    "5LiW55WM"
-  ]
-}`,
-	}, {
-		desc: "repeated enums",
-		input: &pb2.Enums{
-			RptEnum:       []pb2.Enum{pb2.Enum_ONE, 2, pb2.Enum_TEN, 42},
-			RptNestedEnum: []pb2.Enums_NestedEnum{2, 47, 10},
-		},
-		want: `{
-  "rptEnum": [
-    "ONE",
-    "TWO",
-    "TEN",
-    42
-  ],
-  "rptNestedEnum": [
-    "DOS",
-    47,
-    "DIEZ"
-  ]
-}`,
-	}, {
-		desc: "repeated messages set to empty",
-		input: &pb2.Nests{
-			RptNested: []*pb2.Nested{},
-			Rptgroup:  []*pb2.Nests_RptGroup{},
-		},
-		want: "{}",
-	}, {
-		desc: "repeated messages",
-		input: &pb2.Nests{
-			RptNested: []*pb2.Nested{
-				{
-					OptString: proto.String("repeat nested one"),
-				},
-				{
-					OptString: proto.String("repeat nested two"),
-					OptNested: &pb2.Nested{
-						OptString: proto.String("inside repeat nested two"),
-					},
-				},
-				{},
-			},
-		},
-		want: `{
-  "rptNested": [
-    {
-      "optString": "repeat nested one"
-    },
-    {
-      "optString": "repeat nested two",
-      "optNested": {
-        "optString": "inside repeat nested two"
-      }
-    },
-    {}
-  ]
-}`,
-	}, {
-		desc: "repeated messages contains nil value",
-		input: &pb2.Nests{
-			RptNested: []*pb2.Nested{nil, {}},
-		},
-		want: `{
-  "rptNested": [
-    {},
-    {}
-  ]
-}`,
-	}, {
-		desc: "repeated groups",
-		input: &pb2.Nests{
-			Rptgroup: []*pb2.Nests_RptGroup{
-				{
-					RptString: []string{"hello", "world"},
-				},
-				{},
-				nil,
-			},
-		},
-		want: `{
-  "rptgroup": [
-    {
-      "rptString": [
-        "hello",
-        "world"
-      ]
-    },
-    {},
-    {}
-  ]
-}`,
-	}, {
-		desc:  "map fields not set",
-		input: &pb3.Maps{},
-		want:  "{}",
-	}, {
-		desc: "map fields set to empty",
-		input: &pb3.Maps{
-			Int32ToStr:   map[int32]string{},
-			BoolToUint32: map[bool]uint32{},
-			Uint64ToEnum: map[uint64]pb3.Enum{},
-			StrToNested:  map[string]*pb3.Nested{},
-			StrToOneofs:  map[string]*pb3.Oneofs{},
-		},
-		want: "{}",
-	}, {
-		desc: "map fields 1",
-		input: &pb3.Maps{
-			BoolToUint32: map[bool]uint32{
-				true:  42,
-				false: 101,
-			},
-		},
-		want: `{
-  "boolToUint32": {
-    "false": 101,
-    "true": 42
-  }
-}`,
-	}, {
-		desc: "map fields 2",
-		input: &pb3.Maps{
-			Int32ToStr: map[int32]string{
-				-101: "-101",
-				0xff: "0xff",
-				0:    "zero",
-			},
-		},
-		want: `{
-  "int32ToStr": {
-    "-101": "-101",
-    "0": "zero",
-    "255": "0xff"
-  }
-}`,
-	}, {
-		desc: "map fields 3",
-		input: &pb3.Maps{
-			Uint64ToEnum: map[uint64]pb3.Enum{
-				1:  pb3.Enum_ONE,
-				2:  pb3.Enum_TWO,
-				10: pb3.Enum_TEN,
-				47: 47,
-			},
-		},
-		want: `{
-  "uint64ToEnum": {
-    "1": "ONE",
-    "2": "TWO",
-    "10": "TEN",
-    "47": 47
-  }
-}`,
-	}, {
-		desc: "map fields 4",
-		input: &pb3.Maps{
-			StrToNested: map[string]*pb3.Nested{
-				"nested": &pb3.Nested{
-					SString: "nested in a map",
-				},
-			},
-		},
-		want: `{
-  "strToNested": {
-    "nested": {
-      "sString": "nested in a map"
-    }
-  }
-}`,
-	}, {
-		desc: "map fields 5",
-		input: &pb3.Maps{
-			StrToOneofs: map[string]*pb3.Oneofs{
-				"string": &pb3.Oneofs{
-					Union: &pb3.Oneofs_OneofString{
-						OneofString: "hello",
-					},
-				},
-				"nested": &pb3.Oneofs{
-					Union: &pb3.Oneofs_OneofNested{
-						OneofNested: &pb3.Nested{
-							SString: "nested oneof in map field value",
-						},
-					},
-				},
-			},
-		},
-		want: `{
-  "strToOneofs": {
-    "nested": {
-      "oneofNested": {
-        "sString": "nested oneof in map field value"
-      }
-    },
-    "string": {
-      "oneofString": "hello"
-    }
-  }
-}`,
-	}, {
-		desc: "map field contains nil value",
-		input: &pb3.Maps{
-			StrToNested: map[string]*pb3.Nested{
-				"nil": nil,
-			},
-		},
-		want: `{
-  "strToNested": {
-    "nil": {}
-  }
-}`,
-	}, {
-		desc:    "required fields not set",
-		input:   &pb2.Requireds{},
-		want:    `{}`,
-		wantErr: true,
-	}, {
-		desc: "required fields partially set",
-		input: &pb2.Requireds{
-			ReqBool:     proto.Bool(false),
-			ReqSfixed64: proto.Int64(0),
-			ReqDouble:   proto.Float64(1.23),
-			ReqString:   proto.String("hello"),
-			ReqEnum:     pb2.Enum_ONE.Enum(),
-		},
-		want: `{
-  "reqBool": false,
-  "reqSfixed64": "0",
-  "reqDouble": 1.23,
-  "reqString": "hello",
-  "reqEnum": "ONE"
-}`,
-		wantErr: true,
-	}, {
-		desc: "required fields not set with AllowPartial",
-		mo:   protojson.MarshalOptions{AllowPartial: true},
-		input: &pb2.Requireds{
-			ReqBool:     proto.Bool(false),
-			ReqSfixed64: proto.Int64(0),
-			ReqDouble:   proto.Float64(1.23),
-			ReqString:   proto.String("hello"),
-			ReqEnum:     pb2.Enum_ONE.Enum(),
-		},
-		want: `{
-  "reqBool": false,
-  "reqSfixed64": "0",
-  "reqDouble": 1.23,
-  "reqString": "hello",
-  "reqEnum": "ONE"
-}`,
-	}, {
-		desc: "required fields all set",
-		input: &pb2.Requireds{
-			ReqBool:     proto.Bool(false),
-			ReqSfixed64: proto.Int64(0),
-			ReqDouble:   proto.Float64(1.23),
-			ReqString:   proto.String("hello"),
-			ReqEnum:     pb2.Enum_ONE.Enum(),
-			ReqNested:   &pb2.Nested{},
-		},
-		want: `{
-  "reqBool": false,
-  "reqSfixed64": "0",
-  "reqDouble": 1.23,
-  "reqString": "hello",
-  "reqEnum": "ONE",
-  "reqNested": {}
-}`,
-	}, {
-		desc: "indirect required field",
-		input: &pb2.IndirectRequired{
-			OptNested: &pb2.NestedWithRequired{},
-		},
-		want: `{
-  "optNested": {}
-}`,
-		wantErr: true,
-	}, {
-		desc: "indirect required field with AllowPartial",
-		mo:   protojson.MarshalOptions{AllowPartial: true},
-		input: &pb2.IndirectRequired{
-			OptNested: &pb2.NestedWithRequired{},
-		},
-		want: `{
-  "optNested": {}
-}`,
-	}, {
-		desc: "indirect required field in empty repeated",
-		input: &pb2.IndirectRequired{
-			RptNested: []*pb2.NestedWithRequired{},
-		},
-		want: `{}`,
-	}, {
-		desc: "indirect required field in repeated",
-		input: &pb2.IndirectRequired{
-			RptNested: []*pb2.NestedWithRequired{
-				&pb2.NestedWithRequired{},
-			},
-		},
-		want: `{
-  "rptNested": [
-    {}
-  ]
-}`,
-		wantErr: true,
-	}, {
-		desc: "indirect required field in repeated with AllowPartial",
-		mo:   protojson.MarshalOptions{AllowPartial: true},
-		input: &pb2.IndirectRequired{
-			RptNested: []*pb2.NestedWithRequired{
-				&pb2.NestedWithRequired{},
-			},
-		},
-		want: `{
-  "rptNested": [
-    {}
-  ]
-}`,
-	}, {
-		desc: "indirect required field in empty map",
-		input: &pb2.IndirectRequired{
-			StrToNested: map[string]*pb2.NestedWithRequired{},
-		},
-		want: "{}",
-	}, {
-		desc: "indirect required field in map",
-		input: &pb2.IndirectRequired{
-			StrToNested: map[string]*pb2.NestedWithRequired{
-				"fail": &pb2.NestedWithRequired{},
-			},
-		},
-		want: `{
-  "strToNested": {
-    "fail": {}
-  }
-}`,
-		wantErr: true,
-	}, {
-		desc: "indirect required field in map with AllowPartial",
-		mo:   protojson.MarshalOptions{AllowPartial: true},
-		input: &pb2.IndirectRequired{
-			StrToNested: map[string]*pb2.NestedWithRequired{
-				"fail": &pb2.NestedWithRequired{},
-			},
-		},
-		want: `{
-  "strToNested": {
-    "fail": {}
-  }
-}`,
-	}, {
-		desc: "indirect required field in oneof",
-		input: &pb2.IndirectRequired{
-			Union: &pb2.IndirectRequired_OneofNested{
-				OneofNested: &pb2.NestedWithRequired{},
-			},
-		},
-		want: `{
-  "oneofNested": {}
-}`,
-		wantErr: true,
-	}, {
-		desc: "indirect required field in oneof with AllowPartial",
-		mo:   protojson.MarshalOptions{AllowPartial: true},
-		input: &pb2.IndirectRequired{
-			Union: &pb2.IndirectRequired_OneofNested{
-				OneofNested: &pb2.NestedWithRequired{},
-			},
-		},
-		want: `{
-  "oneofNested": {}
-}`,
-	}, {
-		desc: "unknown fields are ignored",
-		input: func() proto.Message {
-			m := &pb2.Scalars{
-				OptString: proto.String("no unknowns"),
-			}
-			m.ProtoReflect().SetUnknown(protopack.Message{
-				protopack.Tag{101, protopack.BytesType}, protopack.String("hello world"),
-			}.Marshal())
-			return m
-		}(),
-		want: `{
-  "optString": "no unknowns"
-}`,
-	}, {
-		desc: "json_name",
-		input: &pb3.JSONNames{
-			SString: "json_name",
-		},
-		want: `{
-  "foo_bar": "json_name"
-}`,
-	}, {
-		desc: "extensions of non-repeated fields",
-		input: func() proto.Message {
-			m := &pb2.Extensions{
-				OptString: proto.String("non-extension field"),
-				OptBool:   proto.Bool(true),
-				OptInt32:  proto.Int32(42),
-			}
-			proto.SetExtension(m, pb2.E_OptExtBool, true)
-			proto.SetExtension(m, pb2.E_OptExtString, "extension field")
-			proto.SetExtension(m, pb2.E_OptExtEnum, pb2.Enum_TEN)
-			proto.SetExtension(m, pb2.E_OptExtNested, &pb2.Nested{
-				OptString: proto.String("nested in an extension"),
-				OptNested: &pb2.Nested{
-					OptString: proto.String("another nested in an extension"),
-				},
-			})
-			return m
-		}(),
-		want: `{
-  "optString": "non-extension field",
-  "optBool": true,
-  "optInt32": 42,
-  "[pb2.opt_ext_bool]": true,
-  "[pb2.opt_ext_enum]": "TEN",
-  "[pb2.opt_ext_nested]": {
-    "optString": "nested in an extension",
-    "optNested": {
-      "optString": "another nested in an extension"
-    }
-  },
-  "[pb2.opt_ext_string]": "extension field"
-}`,
-	}, {
-		desc: "extensions of repeated fields",
-		input: func() proto.Message {
-			m := &pb2.Extensions{}
-			proto.SetExtension(m, pb2.E_RptExtEnum, []pb2.Enum{pb2.Enum_TEN, 101, pb2.Enum_ONE})
-			proto.SetExtension(m, pb2.E_RptExtFixed32, []uint32{42, 47})
-			proto.SetExtension(m, pb2.E_RptExtNested, []*pb2.Nested{
-				&pb2.Nested{OptString: proto.String("one")},
-				&pb2.Nested{OptString: proto.String("two")},
-				&pb2.Nested{OptString: proto.String("three")},
-			})
-			return m
-		}(),
-		want: `{
-  "[pb2.rpt_ext_enum]": [
-    "TEN",
-    101,
-    "ONE"
-  ],
-  "[pb2.rpt_ext_fixed32]": [
-    42,
-    47
-  ],
-  "[pb2.rpt_ext_nested]": [
-    {
-      "optString": "one"
-    },
-    {
-      "optString": "two"
-    },
-    {
-      "optString": "three"
-    }
-  ]
-}`,
-	}, {
-		desc: "extensions of non-repeated fields in another message",
-		input: func() proto.Message {
-			m := &pb2.Extensions{}
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_OptExtBool, true)
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_OptExtString, "extension field")
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_OptExtEnum, pb2.Enum_TEN)
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_OptExtNested, &pb2.Nested{
-				OptString: proto.String("nested in an extension"),
-				OptNested: &pb2.Nested{
-					OptString: proto.String("another nested in an extension"),
-				},
-			})
-			return m
-		}(),
-		want: `{
-  "[pb2.ExtensionsContainer.opt_ext_bool]": true,
-  "[pb2.ExtensionsContainer.opt_ext_enum]": "TEN",
-  "[pb2.ExtensionsContainer.opt_ext_nested]": {
-    "optString": "nested in an extension",
-    "optNested": {
-      "optString": "another nested in an extension"
-    }
-  },
-  "[pb2.ExtensionsContainer.opt_ext_string]": "extension field"
-}`,
-	}, {
-		desc: "extensions of repeated fields in another message",
-		input: func() proto.Message {
-			m := &pb2.Extensions{
-				OptString: proto.String("non-extension field"),
-				OptBool:   proto.Bool(true),
-				OptInt32:  proto.Int32(42),
-			}
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_RptExtEnum, []pb2.Enum{pb2.Enum_TEN, 101, pb2.Enum_ONE})
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_RptExtString, []string{"hello", "world"})
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_RptExtNested, []*pb2.Nested{
-				&pb2.Nested{OptString: proto.String("one")},
-				&pb2.Nested{OptString: proto.String("two")},
-				&pb2.Nested{OptString: proto.String("three")},
-			})
-			return m
-		}(),
-		want: `{
-  "optString": "non-extension field",
-  "optBool": true,
-  "optInt32": 42,
-  "[pb2.ExtensionsContainer.rpt_ext_enum]": [
-    "TEN",
-    101,
-    "ONE"
-  ],
-  "[pb2.ExtensionsContainer.rpt_ext_nested]": [
-    {
-      "optString": "one"
-    },
-    {
-      "optString": "two"
-    },
-    {
-      "optString": "three"
-    }
-  ],
-  "[pb2.ExtensionsContainer.rpt_ext_string]": [
-    "hello",
-    "world"
-  ]
-}`,
-	}, {
-		desc: "MessageSet",
-		input: func() proto.Message {
-			m := &pb2.MessageSet{}
-			proto.SetExtension(m, pb2.E_MessageSetExtension_MessageSetExtension, &pb2.MessageSetExtension{
-				OptString: proto.String("a messageset extension"),
-			})
-			proto.SetExtension(m, pb2.E_MessageSetExtension_NotMessageSetExtension, &pb2.MessageSetExtension{
-				OptString: proto.String("not a messageset extension"),
-			})
-			proto.SetExtension(m, pb2.E_MessageSetExtension_ExtNested, &pb2.Nested{
-				OptString: proto.String("just a regular extension"),
-			})
-			return m
-		}(),
-		want: `{
-  "[pb2.MessageSetExtension.ext_nested]": {
-    "optString": "just a regular extension"
-  },
-  "[pb2.MessageSetExtension]": {
-    "optString": "a messageset extension"
-  },
-  "[pb2.MessageSetExtension.not_message_set_extension]": {
-    "optString": "not a messageset extension"
-  }
-}`,
-		skip: !flags.ProtoLegacy,
-	}, {
-		desc: "not real MessageSet 1",
-		input: func() proto.Message {
-			m := &pb2.FakeMessageSet{}
-			proto.SetExtension(m, pb2.E_FakeMessageSetExtension_MessageSetExtension, &pb2.FakeMessageSetExtension{
-				OptString: proto.String("not a messageset extension"),
-			})
-			return m
-		}(),
-		want: `{
-  "[pb2.FakeMessageSetExtension.message_set_extension]": {
-    "optString": "not a messageset extension"
-  }
-}`,
-		skip: !flags.ProtoLegacy,
-	}, {
-		desc: "not real MessageSet 2",
-		input: func() proto.Message {
-			m := &pb2.MessageSet{}
-			proto.SetExtension(m, pb2.E_MessageSetExtension, &pb2.FakeMessageSetExtension{
-				OptString: proto.String("another not a messageset extension"),
-			})
-			return m
-		}(),
-		want: `{
-  "[pb2.message_set_extension]": {
-    "optString": "another not a messageset extension"
-  }
-}`,
-		skip: !flags.ProtoLegacy,
-	}, {
-		desc:  "BoolValue empty",
-		input: &wrapperspb.BoolValue{},
-		want:  `false`,
-	}, {
-		desc:  "BoolValue",
-		input: &wrapperspb.BoolValue{Value: true},
-		want:  `true`,
-	}, {
-		desc:  "Int32Value empty",
-		input: &wrapperspb.Int32Value{},
-		want:  `0`,
-	}, {
-		desc:  "Int32Value",
-		input: &wrapperspb.Int32Value{Value: 42},
-		want:  `42`,
-	}, {
-		desc:  "Int64Value",
-		input: &wrapperspb.Int64Value{Value: 42},
-		want:  `"42"`,
-	}, {
-		desc:  "UInt32Value",
-		input: &wrapperspb.UInt32Value{Value: 42},
-		want:  `42`,
-	}, {
-		desc:  "UInt64Value",
-		input: &wrapperspb.UInt64Value{Value: 42},
-		want:  `"42"`,
-	}, {
-		desc:  "FloatValue",
-		input: &wrapperspb.FloatValue{Value: 1.02},
-		want:  `1.02`,
-	}, {
-		desc:  "FloatValue Infinity",
-		input: &wrapperspb.FloatValue{Value: float32(math.Inf(-1))},
-		want:  `"-Infinity"`,
-	}, {
-		desc:  "DoubleValue",
-		input: &wrapperspb.DoubleValue{Value: 1.02},
-		want:  `1.02`,
-	}, {
-		desc:  "DoubleValue NaN",
-		input: &wrapperspb.DoubleValue{Value: math.NaN()},
-		want:  `"NaN"`,
-	}, {
-		desc:  "StringValue empty",
-		input: &wrapperspb.StringValue{},
-		want:  `""`,
-	}, {
-		desc:  "StringValue",
-		input: &wrapperspb.StringValue{Value: "谷歌"},
-		want:  `"谷歌"`,
-	}, {
-		desc:    "StringValue with invalid UTF8 error",
-		input:   &wrapperspb.StringValue{Value: "abc\xff"},
-		wantErr: true,
-	}, {
-		desc: "StringValue field with invalid UTF8 error",
-		input: &pb2.KnownTypes{
-			OptString: &wrapperspb.StringValue{Value: "abc\xff"},
-		},
-		wantErr: true,
-	}, {
-		desc:  "BytesValue",
-		input: &wrapperspb.BytesValue{Value: []byte("hello")},
-		want:  `"aGVsbG8="`,
-	}, {
-		desc:  "Empty",
-		input: &emptypb.Empty{},
-		want:  `{}`,
-	}, {
-		desc:  "NullValue field",
-		input: &pb2.KnownTypes{OptNull: new(structpb.NullValue)},
-		want: `{
-  "optNull": null
-}`,
-	}, {
-		desc:    "Value empty",
-		input:   &structpb.Value{},
-		wantErr: true,
-	}, {
-		desc: "Value empty field",
-		input: &pb2.KnownTypes{
-			OptValue: &structpb.Value{},
-		},
-		wantErr: true,
-	}, {
-		desc:  "Value contains NullValue",
-		input: &structpb.Value{Kind: &structpb.Value_NullValue{}},
-		want:  `null`,
-	}, {
-		desc:  "Value contains BoolValue",
-		input: &structpb.Value{Kind: &structpb.Value_BoolValue{}},
-		want:  `false`,
-	}, {
-		desc:  "Value contains NumberValue",
-		input: &structpb.Value{Kind: &structpb.Value_NumberValue{1.02}},
-		want:  `1.02`,
-	}, {
-		desc:  "Value contains StringValue",
-		input: &structpb.Value{Kind: &structpb.Value_StringValue{"hello"}},
-		want:  `"hello"`,
-	}, {
-		desc:    "Value contains StringValue with invalid UTF8",
-		input:   &structpb.Value{Kind: &structpb.Value_StringValue{"\xff"}},
-		wantErr: true,
-	}, {
-		desc: "Value contains Struct",
-		input: &structpb.Value{
-			Kind: &structpb.Value_StructValue{
-				&structpb.Struct{
-					Fields: map[string]*structpb.Value{
-						"null":   {Kind: &structpb.Value_NullValue{}},
-						"number": {Kind: &structpb.Value_NumberValue{}},
-						"string": {Kind: &structpb.Value_StringValue{}},
-						"struct": {Kind: &structpb.Value_StructValue{}},
-						"list":   {Kind: &structpb.Value_ListValue{}},
-						"bool":   {Kind: &structpb.Value_BoolValue{}},
-					},
-				},
-			},
-		},
-		want: `{
-  "bool": false,
-  "list": [],
-  "null": null,
-  "number": 0,
-  "string": "",
-  "struct": {}
-}`,
-	}, {
-		desc: "Value contains ListValue",
-		input: &structpb.Value{
-			Kind: &structpb.Value_ListValue{
-				&structpb.ListValue{
-					Values: []*structpb.Value{
-						{Kind: &structpb.Value_BoolValue{}},
-						{Kind: &structpb.Value_NullValue{}},
-						{Kind: &structpb.Value_NumberValue{}},
-						{Kind: &structpb.Value_StringValue{}},
-						{Kind: &structpb.Value_StructValue{}},
-						{Kind: &structpb.Value_ListValue{}},
-					},
-				},
-			},
-		},
-		want: `[
-  false,
-  null,
-  0,
-  "",
-  {},
-  []
-]`,
-	}, {
-		desc:    "Value with NaN",
-		input:   structpb.NewNumberValue(math.NaN()),
-		wantErr: true,
-	}, {
-		desc:    "Value with -Inf",
-		input:   structpb.NewNumberValue(math.Inf(-1)),
-		wantErr: true,
-	}, {
-		desc:    "Value with +Inf",
-		input:   structpb.NewNumberValue(math.Inf(+1)),
-		wantErr: true,
-	}, {
-		desc:  "Struct with nil map",
-		input: &structpb.Struct{},
-		want:  `{}`,
-	}, {
-		desc: "Struct with empty map",
-		input: &structpb.Struct{
-			Fields: map[string]*structpb.Value{},
-		},
-		want: `{}`,
-	}, {
-		desc: "Struct",
-		input: &structpb.Struct{
-			Fields: map[string]*structpb.Value{
-				"bool":   {Kind: &structpb.Value_BoolValue{true}},
-				"null":   {Kind: &structpb.Value_NullValue{}},
-				"number": {Kind: &structpb.Value_NumberValue{3.1415}},
-				"string": {Kind: &structpb.Value_StringValue{"hello"}},
-				"struct": {
-					Kind: &structpb.Value_StructValue{
-						&structpb.Struct{
-							Fields: map[string]*structpb.Value{
-								"string": {Kind: &structpb.Value_StringValue{"world"}},
-							},
-						},
-					},
-				},
-				"list": {
-					Kind: &structpb.Value_ListValue{
-						&structpb.ListValue{
-							Values: []*structpb.Value{
-								{Kind: &structpb.Value_BoolValue{}},
-								{Kind: &structpb.Value_NullValue{}},
-								{Kind: &structpb.Value_NumberValue{}},
-							},
-						},
-					},
-				},
-			},
-		},
-		want: `{
-  "bool": true,
-  "list": [
-    false,
-    null,
-    0
-  ],
-  "null": null,
-  "number": 3.1415,
-  "string": "hello",
-  "struct": {
-    "string": "world"
-  }
-}`,
-	}, {
-		desc: "Struct message with invalid UTF8 string",
-		input: &structpb.Struct{
-			Fields: map[string]*structpb.Value{
-				"string": {Kind: &structpb.Value_StringValue{"\xff"}},
-			},
-		},
-		wantErr: true,
-	}, {
-		desc:  "ListValue with nil values",
-		input: &structpb.ListValue{},
-		want:  `[]`,
-	}, {
-		desc: "ListValue with empty values",
-		input: &structpb.ListValue{
-			Values: []*structpb.Value{},
-		},
-		want: `[]`,
-	}, {
-		desc: "ListValue",
-		input: &structpb.ListValue{
-			Values: []*structpb.Value{
-				{Kind: &structpb.Value_BoolValue{true}},
-				{Kind: &structpb.Value_NullValue{}},
-				{Kind: &structpb.Value_NumberValue{3.1415}},
-				{Kind: &structpb.Value_StringValue{"hello"}},
-				{
-					Kind: &structpb.Value_ListValue{
-						&structpb.ListValue{
-							Values: []*structpb.Value{
-								{Kind: &structpb.Value_BoolValue{}},
-								{Kind: &structpb.Value_NullValue{}},
-								{Kind: &structpb.Value_NumberValue{}},
-							},
-						},
-					},
-				},
-				{
-					Kind: &structpb.Value_StructValue{
-						&structpb.Struct{
-							Fields: map[string]*structpb.Value{
-								"string": {Kind: &structpb.Value_StringValue{"world"}},
-							},
-						},
-					},
-				},
-			},
-		},
-		want: `[
-  true,
-  null,
-  3.1415,
-  "hello",
-  [
-    false,
-    null,
-    0
-  ],
-  {
-    "string": "world"
-  }
-]`,
-	}, {
-		desc: "ListValue with invalid UTF8 string",
-		input: &structpb.ListValue{
-			Values: []*structpb.Value{
-				{Kind: &structpb.Value_StringValue{"\xff"}},
-			},
-		},
-		wantErr: true,
-	}, {
-		desc:  "Duration empty",
-		input: &durationpb.Duration{},
-		want:  `"0s"`,
-	}, {
-		desc:  "Duration with secs",
-		input: &durationpb.Duration{Seconds: 3},
-		want:  `"3s"`,
-	}, {
-		desc:  "Duration with -secs",
-		input: &durationpb.Duration{Seconds: -3},
-		want:  `"-3s"`,
-	}, {
-		desc:  "Duration with nanos",
-		input: &durationpb.Duration{Nanos: 1e6},
-		want:  `"0.001s"`,
-	}, {
-		desc:  "Duration with -nanos",
-		input: &durationpb.Duration{Nanos: -1e6},
-		want:  `"-0.001s"`,
-	}, {
-		desc:  "Duration with large secs",
-		input: &durationpb.Duration{Seconds: 1e10, Nanos: 1},
-		want:  `"10000000000.000000001s"`,
-	}, {
-		desc:  "Duration with 6-digit nanos",
-		input: &durationpb.Duration{Nanos: 1e4},
-		want:  `"0.000010s"`,
-	}, {
-		desc:  "Duration with 3-digit nanos",
-		input: &durationpb.Duration{Nanos: 1e6},
-		want:  `"0.001s"`,
-	}, {
-		desc:  "Duration with -secs -nanos",
-		input: &durationpb.Duration{Seconds: -123, Nanos: -450},
-		want:  `"-123.000000450s"`,
-	}, {
-		desc:  "Duration max value",
-		input: &durationpb.Duration{Seconds: 315576000000, Nanos: 999999999},
-		want:  `"315576000000.999999999s"`,
-	}, {
-		desc:  "Duration min value",
-		input: &durationpb.Duration{Seconds: -315576000000, Nanos: -999999999},
-		want:  `"-315576000000.999999999s"`,
-	}, {
-		desc:    "Duration with +secs -nanos",
-		input:   &durationpb.Duration{Seconds: 1, Nanos: -1},
-		wantErr: true,
-	}, {
-		desc:    "Duration with -secs +nanos",
-		input:   &durationpb.Duration{Seconds: -1, Nanos: 1},
-		wantErr: true,
-	}, {
-		desc:    "Duration with +secs out of range",
-		input:   &durationpb.Duration{Seconds: 315576000001},
-		wantErr: true,
-	}, {
-		desc:    "Duration with -secs out of range",
-		input:   &durationpb.Duration{Seconds: -315576000001},
-		wantErr: true,
-	}, {
-		desc:    "Duration with +nanos out of range",
-		input:   &durationpb.Duration{Seconds: 0, Nanos: 1e9},
-		wantErr: true,
-	}, {
-		desc:    "Duration with -nanos out of range",
-		input:   &durationpb.Duration{Seconds: 0, Nanos: -1e9},
-		wantErr: true,
-	}, {
-		desc:  "Timestamp zero",
-		input: &timestamppb.Timestamp{},
-		want:  `"1970-01-01T00:00:00Z"`,
-	}, {
-		desc:  "Timestamp",
-		input: &timestamppb.Timestamp{Seconds: 1553036601},
-		want:  `"2019-03-19T23:03:21Z"`,
-	}, {
-		desc:  "Timestamp with nanos",
-		input: &timestamppb.Timestamp{Seconds: 1553036601, Nanos: 1},
-		want:  `"2019-03-19T23:03:21.000000001Z"`,
-	}, {
-		desc:  "Timestamp with 6-digit nanos",
-		input: &timestamppb.Timestamp{Nanos: 1e3},
-		want:  `"1970-01-01T00:00:00.000001Z"`,
-	}, {
-		desc:  "Timestamp with 3-digit nanos",
-		input: &timestamppb.Timestamp{Nanos: 1e7},
-		want:  `"1970-01-01T00:00:00.010Z"`,
-	}, {
-		desc:  "Timestamp max value",
-		input: &timestamppb.Timestamp{Seconds: 253402300799, Nanos: 999999999},
-		want:  `"9999-12-31T23:59:59.999999999Z"`,
-	}, {
-		desc:  "Timestamp min value",
-		input: &timestamppb.Timestamp{Seconds: -62135596800},
-		want:  `"0001-01-01T00:00:00Z"`,
-	}, {
-		desc:    "Timestamp with +secs out of range",
-		input:   &timestamppb.Timestamp{Seconds: 253402300800},
-		wantErr: true,
-	}, {
-		desc:    "Timestamp with -secs out of range",
-		input:   &timestamppb.Timestamp{Seconds: -62135596801},
-		wantErr: true,
-	}, {
-		desc:    "Timestamp with -nanos",
-		input:   &timestamppb.Timestamp{Nanos: -1},
-		wantErr: true,
-	}, {
-		desc:    "Timestamp with +nanos out of range",
-		input:   &timestamppb.Timestamp{Nanos: 1e9},
-		wantErr: true,
-	}, {
-		desc:  "FieldMask empty",
-		input: &fieldmaskpb.FieldMask{},
-		want:  `""`,
-	}, {
-		desc: "FieldMask",
-		input: &fieldmaskpb.FieldMask{
-			Paths: []string{
-				"foo",
-				"foo_bar",
-				"foo.bar_qux",
-				"_foo",
-			},
-		},
-		want: `"foo,fooBar,foo.barQux,Foo"`,
-	}, {
-		desc: "FieldMask empty string path",
-		input: &fieldmaskpb.FieldMask{
-			Paths: []string{""},
-		},
-		wantErr: true,
-	}, {
-		desc: "FieldMask path contains spaces only",
-		input: &fieldmaskpb.FieldMask{
-			Paths: []string{"  "},
-		},
-		wantErr: true,
-	}, {
-		desc: "FieldMask irreversible error 1",
-		input: &fieldmaskpb.FieldMask{
-			Paths: []string{"foo_"},
-		},
-		wantErr: true,
-	}, {
-		desc: "FieldMask irreversible error 2",
-		input: &fieldmaskpb.FieldMask{
-			Paths: []string{"foo__bar"},
-		},
-		wantErr: true,
-	}, {
-		desc: "FieldMask invalid char",
-		input: &fieldmaskpb.FieldMask{
-			Paths: []string{"foo@bar"},
-		},
-		wantErr: true,
-	}, {
-		desc:  "Any empty",
-		input: &anypb.Any{},
-		want:  `{}`,
-	}, {
-		desc: "Any with non-custom message",
-		input: func() proto.Message {
-			m := &pb2.Nested{
-				OptString: proto.String("embedded inside Any"),
-				OptNested: &pb2.Nested{
-					OptString: proto.String("inception"),
-				},
-			}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: "foo/pb2.Nested",
-				Value:   b,
-			}
-		}(),
-		want: `{
-  "@type": "foo/pb2.Nested",
-  "optString": "embedded inside Any",
-  "optNested": {
-    "optString": "inception"
-  }
-}`,
-	}, {
-		desc:  "Any with empty embedded message",
-		input: &anypb.Any{TypeUrl: "foo/pb2.Nested"},
-		want: `{
-  "@type": "foo/pb2.Nested"
-}`,
-	}, {
-		desc:    "Any without registered type",
-		mo:      protojson.MarshalOptions{Resolver: new(preg.Types)},
-		input:   &anypb.Any{TypeUrl: "foo/pb2.Nested"},
-		wantErr: true,
-	}, {
-		desc: "Any with missing required",
-		input: func() proto.Message {
-			m := &pb2.PartialRequired{
-				OptString: proto.String("embedded inside Any"),
-			}
-			b, err := proto.MarshalOptions{
-				AllowPartial:  true,
-				Deterministic: true,
-			}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: string(m.ProtoReflect().Descriptor().FullName()),
-				Value:   b,
-			}
-		}(),
-		want: `{
-  "@type": "pb2.PartialRequired",
-  "optString": "embedded inside Any"
-}`,
-	}, {
-		desc: "Any with partial required and AllowPartial",
-		mo: protojson.MarshalOptions{
-			AllowPartial: true,
-		},
-		input: func() proto.Message {
-			m := &pb2.PartialRequired{
-				OptString: proto.String("embedded inside Any"),
-			}
-			b, err := proto.MarshalOptions{
-				AllowPartial:  true,
-				Deterministic: true,
-			}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: string(m.ProtoReflect().Descriptor().FullName()),
-				Value:   b,
-			}
-		}(),
-		want: `{
-  "@type": "pb2.PartialRequired",
-  "optString": "embedded inside Any"
-}`,
-	}, {
-		desc: "Any with EmitUnpopulated",
-		mo: protojson.MarshalOptions{
-			EmitUnpopulated: true,
-		},
-		input: func() proto.Message {
-			return &anypb.Any{
-				TypeUrl: string(new(pb3.Scalars).ProtoReflect().Descriptor().FullName()),
-			}
-		}(),
-		want: `{
-  "@type": "pb3.Scalars",
-  "sBool": false,
-  "sInt32": 0,
-  "sInt64": "0",
-  "sUint32": 0,
-  "sUint64": "0",
-  "sSint32": 0,
-  "sSint64": "0",
-  "sFixed32": 0,
-  "sFixed64": "0",
-  "sSfixed32": 0,
-  "sSfixed64": "0",
-  "sFloat": 0,
-  "sDouble": 0,
-  "sBytes": "",
-  "sString": ""
-}`,
-	}, {
-		desc: "Any with invalid UTF8",
-		input: func() proto.Message {
-			m := &pb2.Nested{
-				OptString: proto.String("abc\xff"),
-			}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: "foo/pb2.Nested",
-				Value:   b,
-			}
-		}(),
-		wantErr: true,
-	}, {
-		desc: "Any with invalid value",
-		input: &anypb.Any{
-			TypeUrl: "foo/pb2.Nested",
-			Value:   []byte("\x80"),
-		},
-		wantErr: true,
-	}, {
-		desc: "Any with BoolValue",
-		input: func() proto.Message {
-			m := &wrapperspb.BoolValue{Value: true}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: "type.googleapis.com/google.protobuf.BoolValue",
-				Value:   b,
-			}
-		}(),
-		want: `{
-  "@type": "type.googleapis.com/google.protobuf.BoolValue",
-  "value": true
-}`,
-	}, {
-		desc: "Any with Empty",
-		input: func() proto.Message {
-			m := &emptypb.Empty{}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: "type.googleapis.com/google.protobuf.Empty",
-				Value:   b,
-			}
-		}(),
-		want: `{
-  "@type": "type.googleapis.com/google.protobuf.Empty",
-  "value": {}
-}`,
-	}, {
-		desc: "Any with StringValue containing invalid UTF8",
-		input: func() proto.Message {
-			m := &wrapperspb.StringValue{Value: "abcd"}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: "google.protobuf.StringValue",
-				Value:   bytes.Replace(b, []byte("abcd"), []byte("abc\xff"), -1),
-			}
-		}(),
-		wantErr: true,
-	}, {
-		desc: "Any with Int64Value",
-		input: func() proto.Message {
-			m := &wrapperspb.Int64Value{Value: 42}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: "google.protobuf.Int64Value",
-				Value:   b,
-			}
-		}(),
-		want: `{
-  "@type": "google.protobuf.Int64Value",
-  "value": "42"
-}`,
-	}, {
-		desc: "Any with Duration",
-		input: func() proto.Message {
-			m := &durationpb.Duration{}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: "type.googleapis.com/google.protobuf.Duration",
-				Value:   b,
-			}
-		}(),
-		want: `{
-  "@type": "type.googleapis.com/google.protobuf.Duration",
-  "value": "0s"
-}`,
-	}, {
-		desc: "Any with empty Value",
-		input: func() proto.Message {
-			m := &structpb.Value{}
-			b, err := proto.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: "type.googleapis.com/google.protobuf.Value",
-				Value:   b,
-			}
-		}(),
-		wantErr: true,
-	}, {
-		desc: "Any with Value of StringValue",
-		input: func() proto.Message {
-			m := &structpb.Value{Kind: &structpb.Value_StringValue{"abcd"}}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: "type.googleapis.com/google.protobuf.Value",
-				Value:   bytes.Replace(b, []byte("abcd"), []byte("abc\xff"), -1),
-			}
-		}(),
-		wantErr: true,
-	}, {
-		desc: "Any with Value of NullValue",
-		input: func() proto.Message {
-			m := &structpb.Value{Kind: &structpb.Value_NullValue{}}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: "type.googleapis.com/google.protobuf.Value",
-				Value:   b,
-			}
-		}(),
-		want: `{
-  "@type": "type.googleapis.com/google.protobuf.Value",
-  "value": null
-}`,
-	}, {
-		desc: "Any with Struct",
-		input: func() proto.Message {
-			m := &structpb.Struct{
-				Fields: map[string]*structpb.Value{
-					"bool":   {Kind: &structpb.Value_BoolValue{true}},
-					"null":   {Kind: &structpb.Value_NullValue{}},
-					"string": {Kind: &structpb.Value_StringValue{"hello"}},
-					"struct": {
-						Kind: &structpb.Value_StructValue{
-							&structpb.Struct{
-								Fields: map[string]*structpb.Value{
-									"string": {Kind: &structpb.Value_StringValue{"world"}},
-								},
-							},
-						},
-					},
-				},
-			}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: "google.protobuf.Struct",
-				Value:   b,
-			}
-		}(),
-		want: `{
-  "@type": "google.protobuf.Struct",
-  "value": {
-    "bool": true,
-    "null": null,
-    "string": "hello",
-    "struct": {
-      "string": "world"
-    }
-  }
-}`,
-	}, {
-		desc: "Any with missing type_url",
-		input: func() proto.Message {
-			m := &wrapperspb.BoolValue{Value: true}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				Value: b,
-			}
-		}(),
-		wantErr: true,
-	}, {
-		desc: "well known types as field values",
-		input: &pb2.KnownTypes{
-			OptBool:      &wrapperspb.BoolValue{Value: false},
-			OptInt32:     &wrapperspb.Int32Value{Value: 42},
-			OptInt64:     &wrapperspb.Int64Value{Value: 42},
-			OptUint32:    &wrapperspb.UInt32Value{Value: 42},
-			OptUint64:    &wrapperspb.UInt64Value{Value: 42},
-			OptFloat:     &wrapperspb.FloatValue{Value: 1.23},
-			OptDouble:    &wrapperspb.DoubleValue{Value: 3.1415},
-			OptString:    &wrapperspb.StringValue{Value: "hello"},
-			OptBytes:     &wrapperspb.BytesValue{Value: []byte("hello")},
-			OptDuration:  &durationpb.Duration{Seconds: 123},
-			OptTimestamp: &timestamppb.Timestamp{Seconds: 1553036601},
-			OptStruct: &structpb.Struct{
-				Fields: map[string]*structpb.Value{
-					"string": {Kind: &structpb.Value_StringValue{"hello"}},
-				},
-			},
-			OptList: &structpb.ListValue{
-				Values: []*structpb.Value{
-					{Kind: &structpb.Value_NullValue{}},
-					{Kind: &structpb.Value_StringValue{}},
-					{Kind: &structpb.Value_StructValue{}},
-					{Kind: &structpb.Value_ListValue{}},
-				},
-			},
-			OptValue: &structpb.Value{
-				Kind: &structpb.Value_StringValue{"world"},
-			},
-			OptEmpty: &emptypb.Empty{},
-			OptAny: &anypb.Any{
-				TypeUrl: "google.protobuf.Empty",
-			},
-			OptFieldmask: &fieldmaskpb.FieldMask{
-				Paths: []string{"foo_bar", "bar_foo"},
-			},
-		},
-		want: `{
-  "optBool": false,
-  "optInt32": 42,
-  "optInt64": "42",
-  "optUint32": 42,
-  "optUint64": "42",
-  "optFloat": 1.23,
-  "optDouble": 3.1415,
-  "optString": "hello",
-  "optBytes": "aGVsbG8=",
-  "optDuration": "123s",
-  "optTimestamp": "2019-03-19T23:03:21Z",
-  "optStruct": {
-    "string": "hello"
-  },
-  "optList": [
-    null,
-    "",
-    {},
-    []
-  ],
-  "optValue": "world",
-  "optEmpty": {},
-  "optAny": {
-    "@type": "google.protobuf.Empty",
-    "value": {}
-  },
-  "optFieldmask": "fooBar,barFoo"
-}`,
-	}, {
-		desc:  "EmitUnpopulated: proto2 optional scalars",
-		mo:    protojson.MarshalOptions{EmitUnpopulated: true},
-		input: &pb2.Scalars{},
-		want: `{
-  "optBool": null,
-  "optInt32": null,
-  "optInt64": null,
-  "optUint32": null,
-  "optUint64": null,
-  "optSint32": null,
-  "optSint64": null,
-  "optFixed32": null,
-  "optFixed64": null,
-  "optSfixed32": null,
-  "optSfixed64": null,
-  "optFloat": null,
-  "optDouble": null,
-  "optBytes": null,
-  "optString": null
-}`,
-	}, {
-		desc:  "EmitUnpopulated: proto3 scalars",
-		mo:    protojson.MarshalOptions{EmitUnpopulated: true},
-		input: &pb3.Scalars{},
-		want: `{
-  "sBool": false,
-  "sInt32": 0,
-  "sInt64": "0",
-  "sUint32": 0,
-  "sUint64": "0",
-  "sSint32": 0,
-  "sSint64": "0",
-  "sFixed32": 0,
-  "sFixed64": "0",
-  "sSfixed32": 0,
-  "sSfixed64": "0",
-  "sFloat": 0,
-  "sDouble": 0,
-  "sBytes": "",
-  "sString": ""
-}`,
-	}, {
-		desc:  "EmitUnpopulated: proto2 enum",
-		mo:    protojson.MarshalOptions{EmitUnpopulated: true},
-		input: &pb2.Enums{},
-		want: `{
-  "optEnum": null,
-  "rptEnum": [],
-  "optNestedEnum": null,
-  "rptNestedEnum": []
-}`,
-	}, {
-		desc:  "EmitUnpopulated: proto3 enum",
-		mo:    protojson.MarshalOptions{EmitUnpopulated: true},
-		input: &pb3.Enums{},
-		want: `{
-  "sEnum": "ZERO",
-  "sNestedEnum": "CERO"
-}`,
-	}, {
-		desc:  "EmitUnpopulated: proto2 message and group fields",
-		mo:    protojson.MarshalOptions{EmitUnpopulated: true},
-		input: &pb2.Nests{},
-		want: `{
-  "optNested": null,
-  "optgroup": null,
-  "rptNested": [],
-  "rptgroup": []
-}`,
-	}, {
-		desc:  "EmitUnpopulated: proto3 message field",
-		mo:    protojson.MarshalOptions{EmitUnpopulated: true},
-		input: &pb3.Nests{},
-		want: `{
-  "sNested": null
-}`,
-	}, {
-		desc: "EmitUnpopulated: proto2 empty message and group fields",
-		mo:   protojson.MarshalOptions{EmitUnpopulated: true},
-		input: &pb2.Nests{
-			OptNested: &pb2.Nested{},
-			Optgroup:  &pb2.Nests_OptGroup{},
-		},
-		want: `{
-  "optNested": {
-    "optString": null,
-    "optNested": null
-  },
-  "optgroup": {
-    "optString": null,
-    "optNested": null,
-    "optnestedgroup": null
-  },
-  "rptNested": [],
-  "rptgroup": []
-}`,
-	}, {
-		desc: "EmitUnpopulated: proto3 empty message field",
-		mo:   protojson.MarshalOptions{EmitUnpopulated: true},
-		input: &pb3.Nests{
-			SNested: &pb3.Nested{},
-		},
-		want: `{
-  "sNested": {
-    "sString": "",
-    "sNested": null
-  }
-}`,
-	}, {
-		desc: "EmitUnpopulated: proto2 required fields",
-		mo: protojson.MarshalOptions{
-			AllowPartial:    true,
-			EmitUnpopulated: true,
-		},
-		input: &pb2.Requireds{},
-		want: `{
-  "reqBool": null,
-  "reqSfixed64": null,
-  "reqDouble": null,
-  "reqString": null,
-  "reqEnum": null,
-  "reqNested": null
-}`,
-	}, {
-		desc:  "EmitUnpopulated: repeated fields",
-		mo:    protojson.MarshalOptions{EmitUnpopulated: true},
-		input: &pb2.Repeats{},
-		want: `{
-  "rptBool": [],
-  "rptInt32": [],
-  "rptInt64": [],
-  "rptUint32": [],
-  "rptUint64": [],
-  "rptFloat": [],
-  "rptDouble": [],
-  "rptString": [],
-  "rptBytes": []
-}`,
-	}, {
-		desc: "EmitUnpopulated: repeated containing empty message",
-		mo:   protojson.MarshalOptions{EmitUnpopulated: true},
-		input: &pb2.Nests{
-			RptNested: []*pb2.Nested{nil, {}},
-		},
-		want: `{
-  "optNested": null,
-  "optgroup": null,
-  "rptNested": [
-    {
-      "optString": null,
-      "optNested": null
-    },
-    {
-      "optString": null,
-      "optNested": null
-    }
-  ],
-  "rptgroup": []
-}`,
-	}, {
-		desc:  "EmitUnpopulated: map fields",
-		mo:    protojson.MarshalOptions{EmitUnpopulated: true},
-		input: &pb3.Maps{},
-		want: `{
-  "int32ToStr": {},
-  "boolToUint32": {},
-  "uint64ToEnum": {},
-  "strToNested": {},
-  "strToOneofs": {}
-}`,
-	}, {
-		desc: "EmitUnpopulated: map containing empty message",
-		mo:   protojson.MarshalOptions{EmitUnpopulated: true},
-		input: &pb3.Maps{
-			StrToNested: map[string]*pb3.Nested{
-				"nested": &pb3.Nested{},
-			},
-			StrToOneofs: map[string]*pb3.Oneofs{
-				"nested": &pb3.Oneofs{},
-			},
-		},
-		want: `{
-  "int32ToStr": {},
-  "boolToUint32": {},
-  "uint64ToEnum": {},
-  "strToNested": {
-    "nested": {
-      "sString": "",
-      "sNested": null
-    }
-  },
-  "strToOneofs": {
-    "nested": {}
-  }
-}`,
-	}, {
-		desc:  "EmitUnpopulated: oneof fields",
-		mo:    protojson.MarshalOptions{EmitUnpopulated: true},
-		input: &pb3.Oneofs{},
-		want:  `{}`,
-	}, {
-		desc: "EmitUnpopulated: extensions",
-		mo:   protojson.MarshalOptions{EmitUnpopulated: true},
-		input: func() proto.Message {
-			m := &pb2.Extensions{}
-			proto.SetExtension(m, pb2.E_OptExtNested, &pb2.Nested{})
-			proto.SetExtension(m, pb2.E_RptExtNested, []*pb2.Nested{
-				nil,
-				{},
-			})
-			return m
-		}(),
-		want: `{
-  "optString": null,
-  "optBool": null,
-  "optInt32": null,
-  "[pb2.opt_ext_nested]": {
-    "optString": null,
-    "optNested": null
-  },
-  "[pb2.rpt_ext_nested]": [
-    {
-      "optString": null,
-      "optNested": null
-    },
-    {
-      "optString": null,
-      "optNested": null
-    }
-  ]
-}`,
-	}, {
-		desc: "EmitUnpopulated: with populated fields",
-		mo:   protojson.MarshalOptions{EmitUnpopulated: true},
-		input: &pb2.Scalars{
-			OptInt32:    proto.Int32(0xff),
-			OptUint32:   proto.Uint32(47),
-			OptSint32:   proto.Int32(-1001),
-			OptFixed32:  proto.Uint32(32),
-			OptSfixed32: proto.Int32(-32),
-			OptFloat:    proto.Float32(1.02),
-			OptBytes:    []byte("谷歌"),
-		},
-		want: `{
-  "optBool": null,
-  "optInt32": 255,
-  "optInt64": null,
-  "optUint32": 47,
-  "optUint64": null,
-  "optSint32": -1001,
-  "optSint64": null,
-  "optFixed32": 32,
-  "optFixed64": null,
-  "optSfixed32": -32,
-  "optSfixed64": null,
-  "optFloat": 1.02,
-  "optDouble": null,
-  "optBytes": "6LC35q2M",
-  "optString": null
-}`,
-	}, {
-		desc: "UseEnumNumbers in singular field",
-		mo:   protojson.MarshalOptions{UseEnumNumbers: true},
-		input: &pb2.Enums{
-			OptEnum:       pb2.Enum_ONE.Enum(),
-			OptNestedEnum: pb2.Enums_UNO.Enum(),
-		},
-		want: `{
-  "optEnum": 1,
-  "optNestedEnum": 1
-}`,
-	}, {
-		desc: "UseEnumNumbers in repeated field",
-		mo:   protojson.MarshalOptions{UseEnumNumbers: true},
-		input: &pb2.Enums{
-			RptEnum:       []pb2.Enum{pb2.Enum_ONE, 2, pb2.Enum_TEN, 42},
-			RptNestedEnum: []pb2.Enums_NestedEnum{pb2.Enums_UNO, pb2.Enums_DOS, 47},
-		},
-		want: `{
-  "rptEnum": [
-    1,
-    2,
-    10,
-    42
-  ],
-  "rptNestedEnum": [
-    1,
-    2,
-    47
-  ]
-}`,
-	}, {
-		desc: "UseEnumNumbers in map field",
-		mo:   protojson.MarshalOptions{UseEnumNumbers: true},
-		input: &pb3.Maps{
-			Uint64ToEnum: map[uint64]pb3.Enum{
-				1:  pb3.Enum_ONE,
-				2:  pb3.Enum_TWO,
-				10: pb3.Enum_TEN,
-				47: 47,
-			},
-		},
-		want: `{
-  "uint64ToEnum": {
-    "1": 1,
-    "2": 2,
-    "10": 10,
-    "47": 47
-  }
-}`,
-	}, {
-		desc: "UseProtoNames",
-		mo:   protojson.MarshalOptions{UseProtoNames: true},
-		input: &pb2.Nests{
-			OptNested: &pb2.Nested{},
-			Optgroup: &pb2.Nests_OptGroup{
-				OptString: proto.String("inside a group"),
-				OptNested: &pb2.Nested{
-					OptString: proto.String("nested message inside a group"),
-				},
-				Optnestedgroup: &pb2.Nests_OptGroup_OptNestedGroup{
-					OptFixed32: proto.Uint32(47),
-				},
-			},
-			Rptgroup: []*pb2.Nests_RptGroup{
-				{
-					RptString: []string{"hello", "world"},
-				},
-			},
-		},
-		want: `{
-  "opt_nested": {},
-  "OptGroup": {
-    "opt_string": "inside a group",
-    "opt_nested": {
-      "opt_string": "nested message inside a group"
-    },
-    "OptNestedGroup": {
-      "opt_fixed32": 47
-    }
-  },
-  "RptGroup": [
-    {
-      "rpt_string": [
-        "hello",
-        "world"
-      ]
-    }
-  ]
-}`,
-	}}
-
-	for _, tt := range tests {
-		tt := tt
-		if tt.skip {
-			continue
-		}
-		t.Run(tt.desc, func(t *testing.T) {
-			// Use 2-space indentation on all MarshalOptions.
-			tt.mo.Indent = "  "
-			b, err := tt.mo.Marshal(tt.input)
-			if err != nil && !tt.wantErr {
-				t.Errorf("Marshal() returned error: %v\n", err)
-			}
-			if err == nil && tt.wantErr {
-				t.Errorf("Marshal() got nil error, want error\n")
-			}
-			got := string(b)
-			if got != tt.want {
-				t.Errorf("Marshal()\n<got>\n%v\n<want>\n%v\n", got, tt.want)
-				if diff := cmp.Diff(tt.want, got); diff != "" {
-					t.Errorf("Marshal() diff -want +got\n%v\n", diff)
-				}
-			}
-		})
-	}
-}
diff --git a/encoding/protojson/well_known_types.go b/encoding/protojson/well_known_types.go
deleted file mode 100644
index 72924a9..0000000
--- a/encoding/protojson/well_known_types.go
+++ /dev/null
@@ -1,889 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protojson
-
-import (
-	"bytes"
-	"fmt"
-	"math"
-	"strconv"
-	"strings"
-	"time"
-
-	"google.golang.org/protobuf/internal/encoding/json"
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/internal/genid"
-	"google.golang.org/protobuf/internal/strs"
-	"google.golang.org/protobuf/proto"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-type marshalFunc func(encoder, pref.Message) error
-
-// wellKnownTypeMarshaler returns a marshal function if the message type
-// has specialized serialization behavior. It returns nil otherwise.
-func wellKnownTypeMarshaler(name pref.FullName) marshalFunc {
-	if name.Parent() == genid.GoogleProtobuf_package {
-		switch name.Name() {
-		case genid.Any_message_name:
-			return encoder.marshalAny
-		case genid.Timestamp_message_name:
-			return encoder.marshalTimestamp
-		case genid.Duration_message_name:
-			return encoder.marshalDuration
-		case genid.BoolValue_message_name,
-			genid.Int32Value_message_name,
-			genid.Int64Value_message_name,
-			genid.UInt32Value_message_name,
-			genid.UInt64Value_message_name,
-			genid.FloatValue_message_name,
-			genid.DoubleValue_message_name,
-			genid.StringValue_message_name,
-			genid.BytesValue_message_name:
-			return encoder.marshalWrapperType
-		case genid.Struct_message_name:
-			return encoder.marshalStruct
-		case genid.ListValue_message_name:
-			return encoder.marshalListValue
-		case genid.Value_message_name:
-			return encoder.marshalKnownValue
-		case genid.FieldMask_message_name:
-			return encoder.marshalFieldMask
-		case genid.Empty_message_name:
-			return encoder.marshalEmpty
-		}
-	}
-	return nil
-}
-
-type unmarshalFunc func(decoder, pref.Message) error
-
-// wellKnownTypeUnmarshaler returns a unmarshal function if the message type
-// has specialized serialization behavior. It returns nil otherwise.
-func wellKnownTypeUnmarshaler(name pref.FullName) unmarshalFunc {
-	if name.Parent() == genid.GoogleProtobuf_package {
-		switch name.Name() {
-		case genid.Any_message_name:
-			return decoder.unmarshalAny
-		case genid.Timestamp_message_name:
-			return decoder.unmarshalTimestamp
-		case genid.Duration_message_name:
-			return decoder.unmarshalDuration
-		case genid.BoolValue_message_name,
-			genid.Int32Value_message_name,
-			genid.Int64Value_message_name,
-			genid.UInt32Value_message_name,
-			genid.UInt64Value_message_name,
-			genid.FloatValue_message_name,
-			genid.DoubleValue_message_name,
-			genid.StringValue_message_name,
-			genid.BytesValue_message_name:
-			return decoder.unmarshalWrapperType
-		case genid.Struct_message_name:
-			return decoder.unmarshalStruct
-		case genid.ListValue_message_name:
-			return decoder.unmarshalListValue
-		case genid.Value_message_name:
-			return decoder.unmarshalKnownValue
-		case genid.FieldMask_message_name:
-			return decoder.unmarshalFieldMask
-		case genid.Empty_message_name:
-			return decoder.unmarshalEmpty
-		}
-	}
-	return nil
-}
-
-// The JSON representation of an Any message uses the regular representation of
-// the deserialized, embedded message, with an additional field `@type` which
-// contains the type URL. If the embedded message type is well-known and has a
-// custom JSON representation, that representation will be embedded adding a
-// field `value` which holds the custom JSON in addition to the `@type` field.
-
-func (e encoder) marshalAny(m pref.Message) error {
-	fds := m.Descriptor().Fields()
-	fdType := fds.ByNumber(genid.Any_TypeUrl_field_number)
-	fdValue := fds.ByNumber(genid.Any_Value_field_number)
-
-	if !m.Has(fdType) {
-		if !m.Has(fdValue) {
-			// If message is empty, marshal out empty JSON object.
-			e.StartObject()
-			e.EndObject()
-			return nil
-		} else {
-			// Return error if type_url field is not set, but value is set.
-			return errors.New("%s: %v is not set", genid.Any_message_fullname, genid.Any_TypeUrl_field_name)
-		}
-	}
-
-	typeVal := m.Get(fdType)
-	valueVal := m.Get(fdValue)
-
-	// Resolve the type in order to unmarshal value field.
-	typeURL := typeVal.String()
-	emt, err := e.opts.Resolver.FindMessageByURL(typeURL)
-	if err != nil {
-		return errors.New("%s: unable to resolve %q: %v", genid.Any_message_fullname, typeURL, err)
-	}
-
-	em := emt.New()
-	err = proto.UnmarshalOptions{
-		AllowPartial: true, // never check required fields inside an Any
-		Resolver:     e.opts.Resolver,
-	}.Unmarshal(valueVal.Bytes(), em.Interface())
-	if err != nil {
-		return errors.New("%s: unable to unmarshal %q: %v", genid.Any_message_fullname, typeURL, err)
-	}
-
-	// If type of value has custom JSON encoding, marshal out a field "value"
-	// with corresponding custom JSON encoding of the embedded message as a
-	// field.
-	if marshal := wellKnownTypeMarshaler(emt.Descriptor().FullName()); marshal != nil {
-		e.StartObject()
-		defer e.EndObject()
-
-		// Marshal out @type field.
-		e.WriteName("@type")
-		if err := e.WriteString(typeURL); err != nil {
-			return err
-		}
-
-		e.WriteName("value")
-		return marshal(e, em)
-	}
-
-	// Else, marshal out the embedded message's fields in this Any object.
-	if err := e.marshalMessage(em, typeURL); err != nil {
-		return err
-	}
-
-	return nil
-}
-
-func (d decoder) unmarshalAny(m pref.Message) error {
-	// Peek to check for json.ObjectOpen to avoid advancing a read.
-	start, err := d.Peek()
-	if err != nil {
-		return err
-	}
-	if start.Kind() != json.ObjectOpen {
-		return d.unexpectedTokenError(start)
-	}
-
-	// Use another decoder to parse the unread bytes for @type field. This
-	// avoids advancing a read from current decoder because the current JSON
-	// object may contain the fields of the embedded type.
-	dec := decoder{d.Clone(), UnmarshalOptions{}}
-	tok, err := findTypeURL(dec)
-	switch err {
-	case errEmptyObject:
-		// An empty JSON object translates to an empty Any message.
-		d.Read() // Read json.ObjectOpen.
-		d.Read() // Read json.ObjectClose.
-		return nil
-
-	case errMissingType:
-		if d.opts.DiscardUnknown {
-			// Treat all fields as unknowns, similar to an empty object.
-			return d.skipJSONValue()
-		}
-		// Use start.Pos() for line position.
-		return d.newError(start.Pos(), err.Error())
-
-	default:
-		if err != nil {
-			return err
-		}
-	}
-
-	typeURL := tok.ParsedString()
-	emt, err := d.opts.Resolver.FindMessageByURL(typeURL)
-	if err != nil {
-		return d.newError(tok.Pos(), "unable to resolve %v: %q", tok.RawString(), err)
-	}
-
-	// Create new message for the embedded message type and unmarshal into it.
-	em := emt.New()
-	if unmarshal := wellKnownTypeUnmarshaler(emt.Descriptor().FullName()); unmarshal != nil {
-		// If embedded message is a custom type,
-		// unmarshal the JSON "value" field into it.
-		if err := d.unmarshalAnyValue(unmarshal, em); err != nil {
-			return err
-		}
-	} else {
-		// Else unmarshal the current JSON object into it.
-		if err := d.unmarshalMessage(em, true); err != nil {
-			return err
-		}
-	}
-	// Serialize the embedded message and assign the resulting bytes to the
-	// proto value field.
-	b, err := proto.MarshalOptions{
-		AllowPartial:  true, // No need to check required fields inside an Any.
-		Deterministic: true,
-	}.Marshal(em.Interface())
-	if err != nil {
-		return d.newError(start.Pos(), "error in marshaling Any.value field: %v", err)
-	}
-
-	fds := m.Descriptor().Fields()
-	fdType := fds.ByNumber(genid.Any_TypeUrl_field_number)
-	fdValue := fds.ByNumber(genid.Any_Value_field_number)
-
-	m.Set(fdType, pref.ValueOfString(typeURL))
-	m.Set(fdValue, pref.ValueOfBytes(b))
-	return nil
-}
-
-var errEmptyObject = fmt.Errorf(`empty object`)
-var errMissingType = fmt.Errorf(`missing "@type" field`)
-
-// findTypeURL returns the token for the "@type" field value from the given
-// JSON bytes. It is expected that the given bytes start with json.ObjectOpen.
-// It returns errEmptyObject if the JSON object is empty or errMissingType if
-// @type field does not exist. It returns other error if the @type field is not
-// valid or other decoding issues.
-func findTypeURL(d decoder) (json.Token, error) {
-	var typeURL string
-	var typeTok json.Token
-	numFields := 0
-	// Skip start object.
-	d.Read()
-
-Loop:
-	for {
-		tok, err := d.Read()
-		if err != nil {
-			return json.Token{}, err
-		}
-
-		switch tok.Kind() {
-		case json.ObjectClose:
-			if typeURL == "" {
-				// Did not find @type field.
-				if numFields > 0 {
-					return json.Token{}, errMissingType
-				}
-				return json.Token{}, errEmptyObject
-			}
-			break Loop
-
-		case json.Name:
-			numFields++
-			if tok.Name() != "@type" {
-				// Skip value.
-				if err := d.skipJSONValue(); err != nil {
-					return json.Token{}, err
-				}
-				continue
-			}
-
-			// Return error if this was previously set already.
-			if typeURL != "" {
-				return json.Token{}, d.newError(tok.Pos(), `duplicate "@type" field`)
-			}
-			// Read field value.
-			tok, err := d.Read()
-			if err != nil {
-				return json.Token{}, err
-			}
-			if tok.Kind() != json.String {
-				return json.Token{}, d.newError(tok.Pos(), `@type field value is not a string: %v`, tok.RawString())
-			}
-			typeURL = tok.ParsedString()
-			if typeURL == "" {
-				return json.Token{}, d.newError(tok.Pos(), `@type field contains empty value`)
-			}
-			typeTok = tok
-		}
-	}
-
-	return typeTok, nil
-}
-
-// skipJSONValue parses a JSON value (null, boolean, string, number, object and
-// array) in order to advance the read to the next JSON value. It relies on
-// the decoder returning an error if the types are not in valid sequence.
-func (d decoder) skipJSONValue() error {
-	tok, err := d.Read()
-	if err != nil {
-		return err
-	}
-	// Only need to continue reading for objects and arrays.
-	switch tok.Kind() {
-	case json.ObjectOpen:
-		for {
-			tok, err := d.Read()
-			if err != nil {
-				return err
-			}
-			switch tok.Kind() {
-			case json.ObjectClose:
-				return nil
-			case json.Name:
-				// Skip object field value.
-				if err := d.skipJSONValue(); err != nil {
-					return err
-				}
-			}
-		}
-
-	case json.ArrayOpen:
-		for {
-			tok, err := d.Peek()
-			if err != nil {
-				return err
-			}
-			switch tok.Kind() {
-			case json.ArrayClose:
-				d.Read()
-				return nil
-			default:
-				// Skip array item.
-				if err := d.skipJSONValue(); err != nil {
-					return err
-				}
-			}
-		}
-	}
-	return nil
-}
-
-// unmarshalAnyValue unmarshals the given custom-type message from the JSON
-// object's "value" field.
-func (d decoder) unmarshalAnyValue(unmarshal unmarshalFunc, m pref.Message) error {
-	// Skip ObjectOpen, and start reading the fields.
-	d.Read()
-
-	var found bool // Used for detecting duplicate "value".
-	for {
-		tok, err := d.Read()
-		if err != nil {
-			return err
-		}
-		switch tok.Kind() {
-		case json.ObjectClose:
-			if !found {
-				return d.newError(tok.Pos(), `missing "value" field`)
-			}
-			return nil
-
-		case json.Name:
-			switch tok.Name() {
-			case "@type":
-				// Skip the value as this was previously parsed already.
-				d.Read()
-
-			case "value":
-				if found {
-					return d.newError(tok.Pos(), `duplicate "value" field`)
-				}
-				// Unmarshal the field value into the given message.
-				if err := unmarshal(d, m); err != nil {
-					return err
-				}
-				found = true
-
-			default:
-				if d.opts.DiscardUnknown {
-					if err := d.skipJSONValue(); err != nil {
-						return err
-					}
-					continue
-				}
-				return d.newError(tok.Pos(), "unknown field %v", tok.RawString())
-			}
-		}
-	}
-}
-
-// Wrapper types are encoded as JSON primitives like string, number or boolean.
-
-func (e encoder) marshalWrapperType(m pref.Message) error {
-	fd := m.Descriptor().Fields().ByNumber(genid.WrapperValue_Value_field_number)
-	val := m.Get(fd)
-	return e.marshalSingular(val, fd)
-}
-
-func (d decoder) unmarshalWrapperType(m pref.Message) error {
-	fd := m.Descriptor().Fields().ByNumber(genid.WrapperValue_Value_field_number)
-	val, err := d.unmarshalScalar(fd)
-	if err != nil {
-		return err
-	}
-	m.Set(fd, val)
-	return nil
-}
-
-// The JSON representation for Empty is an empty JSON object.
-
-func (e encoder) marshalEmpty(pref.Message) error {
-	e.StartObject()
-	e.EndObject()
-	return nil
-}
-
-func (d decoder) unmarshalEmpty(pref.Message) error {
-	tok, err := d.Read()
-	if err != nil {
-		return err
-	}
-	if tok.Kind() != json.ObjectOpen {
-		return d.unexpectedTokenError(tok)
-	}
-
-	for {
-		tok, err := d.Read()
-		if err != nil {
-			return err
-		}
-		switch tok.Kind() {
-		case json.ObjectClose:
-			return nil
-
-		case json.Name:
-			if d.opts.DiscardUnknown {
-				if err := d.skipJSONValue(); err != nil {
-					return err
-				}
-				continue
-			}
-			return d.newError(tok.Pos(), "unknown field %v", tok.RawString())
-
-		default:
-			return d.unexpectedTokenError(tok)
-		}
-	}
-}
-
-// The JSON representation for Struct is a JSON object that contains the encoded
-// Struct.fields map and follows the serialization rules for a map.
-
-func (e encoder) marshalStruct(m pref.Message) error {
-	fd := m.Descriptor().Fields().ByNumber(genid.Struct_Fields_field_number)
-	return e.marshalMap(m.Get(fd).Map(), fd)
-}
-
-func (d decoder) unmarshalStruct(m pref.Message) error {
-	fd := m.Descriptor().Fields().ByNumber(genid.Struct_Fields_field_number)
-	return d.unmarshalMap(m.Mutable(fd).Map(), fd)
-}
-
-// The JSON representation for ListValue is JSON array that contains the encoded
-// ListValue.values repeated field and follows the serialization rules for a
-// repeated field.
-
-func (e encoder) marshalListValue(m pref.Message) error {
-	fd := m.Descriptor().Fields().ByNumber(genid.ListValue_Values_field_number)
-	return e.marshalList(m.Get(fd).List(), fd)
-}
-
-func (d decoder) unmarshalListValue(m pref.Message) error {
-	fd := m.Descriptor().Fields().ByNumber(genid.ListValue_Values_field_number)
-	return d.unmarshalList(m.Mutable(fd).List(), fd)
-}
-
-// The JSON representation for a Value is dependent on the oneof field that is
-// set. Each of the field in the oneof has its own custom serialization rule. A
-// Value message needs to be a oneof field set, else it is an error.
-
-func (e encoder) marshalKnownValue(m pref.Message) error {
-	od := m.Descriptor().Oneofs().ByName(genid.Value_Kind_oneof_name)
-	fd := m.WhichOneof(od)
-	if fd == nil {
-		return errors.New("%s: none of the oneof fields is set", genid.Value_message_fullname)
-	}
-	if fd.Number() == genid.Value_NumberValue_field_number {
-		if v := m.Get(fd).Float(); math.IsNaN(v) || math.IsInf(v, 0) {
-			return errors.New("%s: invalid %v value", genid.Value_NumberValue_field_fullname, v)
-		}
-	}
-	return e.marshalSingular(m.Get(fd), fd)
-}
-
-func (d decoder) unmarshalKnownValue(m pref.Message) error {
-	tok, err := d.Peek()
-	if err != nil {
-		return err
-	}
-
-	var fd pref.FieldDescriptor
-	var val pref.Value
-	switch tok.Kind() {
-	case json.Null:
-		d.Read()
-		fd = m.Descriptor().Fields().ByNumber(genid.Value_NullValue_field_number)
-		val = pref.ValueOfEnum(0)
-
-	case json.Bool:
-		tok, err := d.Read()
-		if err != nil {
-			return err
-		}
-		fd = m.Descriptor().Fields().ByNumber(genid.Value_BoolValue_field_number)
-		val = pref.ValueOfBool(tok.Bool())
-
-	case json.Number:
-		tok, err := d.Read()
-		if err != nil {
-			return err
-		}
-		fd = m.Descriptor().Fields().ByNumber(genid.Value_NumberValue_field_number)
-		var ok bool
-		val, ok = unmarshalFloat(tok, 64)
-		if !ok {
-			return d.newError(tok.Pos(), "invalid %v: %v", genid.Value_message_fullname, tok.RawString())
-		}
-
-	case json.String:
-		// A JSON string may have been encoded from the number_value field,
-		// e.g. "NaN", "Infinity", etc. Parsing a proto double type also allows
-		// for it to be in JSON string form. Given this custom encoding spec,
-		// however, there is no way to identify that and hence a JSON string is
-		// always assigned to the string_value field, which means that certain
-		// encoding cannot be parsed back to the same field.
-		tok, err := d.Read()
-		if err != nil {
-			return err
-		}
-		fd = m.Descriptor().Fields().ByNumber(genid.Value_StringValue_field_number)
-		val = pref.ValueOfString(tok.ParsedString())
-
-	case json.ObjectOpen:
-		fd = m.Descriptor().Fields().ByNumber(genid.Value_StructValue_field_number)
-		val = m.NewField(fd)
-		if err := d.unmarshalStruct(val.Message()); err != nil {
-			return err
-		}
-
-	case json.ArrayOpen:
-		fd = m.Descriptor().Fields().ByNumber(genid.Value_ListValue_field_number)
-		val = m.NewField(fd)
-		if err := d.unmarshalListValue(val.Message()); err != nil {
-			return err
-		}
-
-	default:
-		return d.newError(tok.Pos(), "invalid %v: %v", genid.Value_message_fullname, tok.RawString())
-	}
-
-	m.Set(fd, val)
-	return nil
-}
-
-// The JSON representation for a Duration is a JSON string that ends in the
-// suffix "s" (indicating seconds) and is preceded by the number of seconds,
-// with nanoseconds expressed as fractional seconds.
-//
-// Durations less than one second are represented with a 0 seconds field and a
-// positive or negative nanos field. For durations of one second or more, a
-// non-zero value for the nanos field must be of the same sign as the seconds
-// field.
-//
-// Duration.seconds must be from -315,576,000,000 to +315,576,000,000 inclusive.
-// Duration.nanos must be from -999,999,999 to +999,999,999 inclusive.
-
-const (
-	secondsInNanos       = 999999999
-	maxSecondsInDuration = 315576000000
-)
-
-func (e encoder) marshalDuration(m pref.Message) error {
-	fds := m.Descriptor().Fields()
-	fdSeconds := fds.ByNumber(genid.Duration_Seconds_field_number)
-	fdNanos := fds.ByNumber(genid.Duration_Nanos_field_number)
-
-	secsVal := m.Get(fdSeconds)
-	nanosVal := m.Get(fdNanos)
-	secs := secsVal.Int()
-	nanos := nanosVal.Int()
-	if secs < -maxSecondsInDuration || secs > maxSecondsInDuration {
-		return errors.New("%s: seconds out of range %v", genid.Duration_message_fullname, secs)
-	}
-	if nanos < -secondsInNanos || nanos > secondsInNanos {
-		return errors.New("%s: nanos out of range %v", genid.Duration_message_fullname, nanos)
-	}
-	if (secs > 0 && nanos < 0) || (secs < 0 && nanos > 0) {
-		return errors.New("%s: signs of seconds and nanos do not match", genid.Duration_message_fullname)
-	}
-	// Generated output always contains 0, 3, 6, or 9 fractional digits,
-	// depending on required precision, followed by the suffix "s".
-	var sign string
-	if secs < 0 || nanos < 0 {
-		sign, secs, nanos = "-", -1*secs, -1*nanos
-	}
-	x := fmt.Sprintf("%s%d.%09d", sign, secs, nanos)
-	x = strings.TrimSuffix(x, "000")
-	x = strings.TrimSuffix(x, "000")
-	x = strings.TrimSuffix(x, ".000")
-	e.WriteString(x + "s")
-	return nil
-}
-
-func (d decoder) unmarshalDuration(m pref.Message) error {
-	tok, err := d.Read()
-	if err != nil {
-		return err
-	}
-	if tok.Kind() != json.String {
-		return d.unexpectedTokenError(tok)
-	}
-
-	secs, nanos, ok := parseDuration(tok.ParsedString())
-	if !ok {
-		return d.newError(tok.Pos(), "invalid %v value %v", genid.Duration_message_fullname, tok.RawString())
-	}
-	// Validate seconds. No need to validate nanos because parseDuration would
-	// have covered that already.
-	if secs < -maxSecondsInDuration || secs > maxSecondsInDuration {
-		return d.newError(tok.Pos(), "%v value out of range: %v", genid.Duration_message_fullname, tok.RawString())
-	}
-
-	fds := m.Descriptor().Fields()
-	fdSeconds := fds.ByNumber(genid.Duration_Seconds_field_number)
-	fdNanos := fds.ByNumber(genid.Duration_Nanos_field_number)
-
-	m.Set(fdSeconds, pref.ValueOfInt64(secs))
-	m.Set(fdNanos, pref.ValueOfInt32(nanos))
-	return nil
-}
-
-// parseDuration parses the given input string for seconds and nanoseconds value
-// for the Duration JSON format. The format is a decimal number with a suffix
-// 's'. It can have optional plus/minus sign. There needs to be at least an
-// integer or fractional part. Fractional part is limited to 9 digits only for
-// nanoseconds precision, regardless of whether there are trailing zero digits.
-// Example values are 1s, 0.1s, 1.s, .1s, +1s, -1s, -.1s.
-func parseDuration(input string) (int64, int32, bool) {
-	b := []byte(input)
-	size := len(b)
-	if size < 2 {
-		return 0, 0, false
-	}
-	if b[size-1] != 's' {
-		return 0, 0, false
-	}
-	b = b[:size-1]
-
-	// Read optional plus/minus symbol.
-	var neg bool
-	switch b[0] {
-	case '-':
-		neg = true
-		b = b[1:]
-	case '+':
-		b = b[1:]
-	}
-	if len(b) == 0 {
-		return 0, 0, false
-	}
-
-	// Read the integer part.
-	var intp []byte
-	switch {
-	case b[0] == '0':
-		b = b[1:]
-
-	case '1' <= b[0] && b[0] <= '9':
-		intp = b[0:]
-		b = b[1:]
-		n := 1
-		for len(b) > 0 && '0' <= b[0] && b[0] <= '9' {
-			n++
-			b = b[1:]
-		}
-		intp = intp[:n]
-
-	case b[0] == '.':
-		// Continue below.
-
-	default:
-		return 0, 0, false
-	}
-
-	hasFrac := false
-	var frac [9]byte
-	if len(b) > 0 {
-		if b[0] != '.' {
-			return 0, 0, false
-		}
-		// Read the fractional part.
-		b = b[1:]
-		n := 0
-		for len(b) > 0 && n < 9 && '0' <= b[0] && b[0] <= '9' {
-			frac[n] = b[0]
-			n++
-			b = b[1:]
-		}
-		// It is not valid if there are more bytes left.
-		if len(b) > 0 {
-			return 0, 0, false
-		}
-		// Pad fractional part with 0s.
-		for i := n; i < 9; i++ {
-			frac[i] = '0'
-		}
-		hasFrac = true
-	}
-
-	var secs int64
-	if len(intp) > 0 {
-		var err error
-		secs, err = strconv.ParseInt(string(intp), 10, 64)
-		if err != nil {
-			return 0, 0, false
-		}
-	}
-
-	var nanos int64
-	if hasFrac {
-		nanob := bytes.TrimLeft(frac[:], "0")
-		if len(nanob) > 0 {
-			var err error
-			nanos, err = strconv.ParseInt(string(nanob), 10, 32)
-			if err != nil {
-				return 0, 0, false
-			}
-		}
-	}
-
-	if neg {
-		if secs > 0 {
-			secs = -secs
-		}
-		if nanos > 0 {
-			nanos = -nanos
-		}
-	}
-	return secs, int32(nanos), true
-}
-
-// The JSON representation for a Timestamp is a JSON string in the RFC 3339
-// format, i.e. "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" where
-// {year} is always expressed using four digits while {month}, {day}, {hour},
-// {min}, and {sec} are zero-padded to two digits each. The fractional seconds,
-// which can go up to 9 digits, up to 1 nanosecond resolution, is optional. The
-// "Z" suffix indicates the timezone ("UTC"); the timezone is required. Encoding
-// should always use UTC (as indicated by "Z") and a decoder should be able to
-// accept both UTC and other timezones (as indicated by an offset).
-//
-// Timestamp.seconds must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z
-// inclusive.
-// Timestamp.nanos must be from 0 to 999,999,999 inclusive.
-
-const (
-	maxTimestampSeconds = 253402300799
-	minTimestampSeconds = -62135596800
-)
-
-func (e encoder) marshalTimestamp(m pref.Message) error {
-	fds := m.Descriptor().Fields()
-	fdSeconds := fds.ByNumber(genid.Timestamp_Seconds_field_number)
-	fdNanos := fds.ByNumber(genid.Timestamp_Nanos_field_number)
-
-	secsVal := m.Get(fdSeconds)
-	nanosVal := m.Get(fdNanos)
-	secs := secsVal.Int()
-	nanos := nanosVal.Int()
-	if secs < minTimestampSeconds || secs > maxTimestampSeconds {
-		return errors.New("%s: seconds out of range %v", genid.Timestamp_message_fullname, secs)
-	}
-	if nanos < 0 || nanos > secondsInNanos {
-		return errors.New("%s: nanos out of range %v", genid.Timestamp_message_fullname, nanos)
-	}
-	// Uses RFC 3339, where generated output will be Z-normalized and uses 0, 3,
-	// 6 or 9 fractional digits.
-	t := time.Unix(secs, nanos).UTC()
-	x := t.Format("2006-01-02T15:04:05.000000000")
-	x = strings.TrimSuffix(x, "000")
-	x = strings.TrimSuffix(x, "000")
-	x = strings.TrimSuffix(x, ".000")
-	e.WriteString(x + "Z")
-	return nil
-}
-
-func (d decoder) unmarshalTimestamp(m pref.Message) error {
-	tok, err := d.Read()
-	if err != nil {
-		return err
-	}
-	if tok.Kind() != json.String {
-		return d.unexpectedTokenError(tok)
-	}
-
-	t, err := time.Parse(time.RFC3339Nano, tok.ParsedString())
-	if err != nil {
-		return d.newError(tok.Pos(), "invalid %v value %v", genid.Timestamp_message_fullname, tok.RawString())
-	}
-	// Validate seconds. No need to validate nanos because time.Parse would have
-	// covered that already.
-	secs := t.Unix()
-	if secs < minTimestampSeconds || secs > maxTimestampSeconds {
-		return d.newError(tok.Pos(), "%v value out of range: %v", genid.Timestamp_message_fullname, tok.RawString())
-	}
-
-	fds := m.Descriptor().Fields()
-	fdSeconds := fds.ByNumber(genid.Timestamp_Seconds_field_number)
-	fdNanos := fds.ByNumber(genid.Timestamp_Nanos_field_number)
-
-	m.Set(fdSeconds, pref.ValueOfInt64(secs))
-	m.Set(fdNanos, pref.ValueOfInt32(int32(t.Nanosecond())))
-	return nil
-}
-
-// The JSON representation for a FieldMask is a JSON string where paths are
-// separated by a comma. Fields name in each path are converted to/from
-// lower-camel naming conventions. Encoding should fail if the path name would
-// end up differently after a round-trip.
-
-func (e encoder) marshalFieldMask(m pref.Message) error {
-	fd := m.Descriptor().Fields().ByNumber(genid.FieldMask_Paths_field_number)
-	list := m.Get(fd).List()
-	paths := make([]string, 0, list.Len())
-
-	for i := 0; i < list.Len(); i++ {
-		s := list.Get(i).String()
-		if !pref.FullName(s).IsValid() {
-			return errors.New("%s contains invalid path: %q", genid.FieldMask_Paths_field_fullname, s)
-		}
-		// Return error if conversion to camelCase is not reversible.
-		cc := strs.JSONCamelCase(s)
-		if s != strs.JSONSnakeCase(cc) {
-			return errors.New("%s contains irreversible value %q", genid.FieldMask_Paths_field_fullname, s)
-		}
-		paths = append(paths, cc)
-	}
-
-	e.WriteString(strings.Join(paths, ","))
-	return nil
-}
-
-func (d decoder) unmarshalFieldMask(m pref.Message) error {
-	tok, err := d.Read()
-	if err != nil {
-		return err
-	}
-	if tok.Kind() != json.String {
-		return d.unexpectedTokenError(tok)
-	}
-	str := strings.TrimSpace(tok.ParsedString())
-	if str == "" {
-		return nil
-	}
-	paths := strings.Split(str, ",")
-
-	fd := m.Descriptor().Fields().ByNumber(genid.FieldMask_Paths_field_number)
-	list := m.Mutable(fd).List()
-
-	for _, s0 := range paths {
-		s := strs.JSONSnakeCase(s0)
-		if strings.Contains(s0, "_") || !pref.FullName(s).IsValid() {
-			return d.newError(tok.Pos(), "%v contains invalid path: %q", genid.FieldMask_Paths_field_fullname, s0)
-		}
-		list.Append(pref.ValueOfString(s))
-	}
-	return nil
-}
diff --git a/encoding/prototext/decode.go b/encoding/prototext/decode.go
deleted file mode 100644
index 179d6e8..0000000
--- a/encoding/prototext/decode.go
+++ /dev/null
@@ -1,770 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package prototext
-
-import (
-	"fmt"
-	"unicode/utf8"
-
-	"google.golang.org/protobuf/internal/encoding/messageset"
-	"google.golang.org/protobuf/internal/encoding/text"
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/internal/flags"
-	"google.golang.org/protobuf/internal/genid"
-	"google.golang.org/protobuf/internal/pragma"
-	"google.golang.org/protobuf/internal/set"
-	"google.golang.org/protobuf/internal/strs"
-	"google.golang.org/protobuf/proto"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/reflect/protoregistry"
-)
-
-// Unmarshal reads the given []byte into the given proto.Message.
-// The provided message must be mutable (e.g., a non-nil pointer to a message).
-func Unmarshal(b []byte, m proto.Message) error {
-	return UnmarshalOptions{}.Unmarshal(b, m)
-}
-
-// UnmarshalOptions is a configurable textproto format unmarshaler.
-type UnmarshalOptions struct {
-	pragma.NoUnkeyedLiterals
-
-	// AllowPartial accepts input for messages that will result in missing
-	// required fields. If AllowPartial is false (the default), Unmarshal will
-	// return error if there are any missing required fields.
-	AllowPartial bool
-
-	// DiscardUnknown specifies whether to ignore unknown fields when parsing.
-	// An unknown field is any field whose field name or field number does not
-	// resolve to any known or extension field in the message.
-	// By default, unmarshal rejects unknown fields as an error.
-	DiscardUnknown bool
-
-	// Resolver is used for looking up types when unmarshaling
-	// google.protobuf.Any messages or extension fields.
-	// If nil, this defaults to using protoregistry.GlobalTypes.
-	Resolver interface {
-		protoregistry.MessageTypeResolver
-		protoregistry.ExtensionTypeResolver
-	}
-}
-
-// Unmarshal reads the given []byte and populates the given proto.Message
-// using options in the UnmarshalOptions object.
-// The provided message must be mutable (e.g., a non-nil pointer to a message).
-func (o UnmarshalOptions) Unmarshal(b []byte, m proto.Message) error {
-	return o.unmarshal(b, m)
-}
-
-// unmarshal is a centralized function that all unmarshal operations go through.
-// For profiling purposes, avoid changing the name of this function or
-// introducing other code paths for unmarshal that do not go through this.
-func (o UnmarshalOptions) unmarshal(b []byte, m proto.Message) error {
-	proto.Reset(m)
-
-	if o.Resolver == nil {
-		o.Resolver = protoregistry.GlobalTypes
-	}
-
-	dec := decoder{text.NewDecoder(b), o}
-	if err := dec.unmarshalMessage(m.ProtoReflect(), false); err != nil {
-		return err
-	}
-	if o.AllowPartial {
-		return nil
-	}
-	return proto.CheckInitialized(m)
-}
-
-type decoder struct {
-	*text.Decoder
-	opts UnmarshalOptions
-}
-
-// newError returns an error object with position info.
-func (d decoder) newError(pos int, f string, x ...interface{}) error {
-	line, column := d.Position(pos)
-	head := fmt.Sprintf("(line %d:%d): ", line, column)
-	return errors.New(head+f, x...)
-}
-
-// unexpectedTokenError returns a syntax error for the given unexpected token.
-func (d decoder) unexpectedTokenError(tok text.Token) error {
-	return d.syntaxError(tok.Pos(), "unexpected token: %s", tok.RawString())
-}
-
-// syntaxError returns a syntax error for given position.
-func (d decoder) syntaxError(pos int, f string, x ...interface{}) error {
-	line, column := d.Position(pos)
-	head := fmt.Sprintf("syntax error (line %d:%d): ", line, column)
-	return errors.New(head+f, x...)
-}
-
-// unmarshalMessage unmarshals into the given protoreflect.Message.
-func (d decoder) unmarshalMessage(m pref.Message, checkDelims bool) error {
-	messageDesc := m.Descriptor()
-	if !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) {
-		return errors.New("no support for proto1 MessageSets")
-	}
-
-	if messageDesc.FullName() == genid.Any_message_fullname {
-		return d.unmarshalAny(m, checkDelims)
-	}
-
-	if checkDelims {
-		tok, err := d.Read()
-		if err != nil {
-			return err
-		}
-
-		if tok.Kind() != text.MessageOpen {
-			return d.unexpectedTokenError(tok)
-		}
-	}
-
-	var seenNums set.Ints
-	var seenOneofs set.Ints
-	fieldDescs := messageDesc.Fields()
-
-	for {
-		// Read field name.
-		tok, err := d.Read()
-		if err != nil {
-			return err
-		}
-		switch typ := tok.Kind(); typ {
-		case text.Name:
-			// Continue below.
-		case text.EOF:
-			if checkDelims {
-				return text.ErrUnexpectedEOF
-			}
-			return nil
-		default:
-			if checkDelims && typ == text.MessageClose {
-				return nil
-			}
-			return d.unexpectedTokenError(tok)
-		}
-
-		// Resolve the field descriptor.
-		var name pref.Name
-		var fd pref.FieldDescriptor
-		var xt pref.ExtensionType
-		var xtErr error
-		var isFieldNumberName bool
-
-		switch tok.NameKind() {
-		case text.IdentName:
-			name = pref.Name(tok.IdentName())
-			fd = fieldDescs.ByTextName(string(name))
-
-		case text.TypeName:
-			// Handle extensions only. This code path is not for Any.
-			xt, xtErr = d.opts.Resolver.FindExtensionByName(pref.FullName(tok.TypeName()))
-
-		case text.FieldNumber:
-			isFieldNumberName = true
-			num := pref.FieldNumber(tok.FieldNumber())
-			if !num.IsValid() {
-				return d.newError(tok.Pos(), "invalid field number: %d", num)
-			}
-			fd = fieldDescs.ByNumber(num)
-			if fd == nil {
-				xt, xtErr = d.opts.Resolver.FindExtensionByNumber(messageDesc.FullName(), num)
-			}
-		}
-
-		if xt != nil {
-			fd = xt.TypeDescriptor()
-			if !messageDesc.ExtensionRanges().Has(fd.Number()) || fd.ContainingMessage().FullName() != messageDesc.FullName() {
-				return d.newError(tok.Pos(), "message %v cannot be extended by %v", messageDesc.FullName(), fd.FullName())
-			}
-		} else if xtErr != nil && xtErr != protoregistry.NotFound {
-			return d.newError(tok.Pos(), "unable to resolve [%s]: %v", tok.RawString(), xtErr)
-		}
-		if flags.ProtoLegacy {
-			if fd != nil && fd.IsWeak() && fd.Message().IsPlaceholder() {
-				fd = nil // reset since the weak reference is not linked in
-			}
-		}
-
-		// Handle unknown fields.
-		if fd == nil {
-			if d.opts.DiscardUnknown || messageDesc.ReservedNames().Has(name) {
-				d.skipValue()
-				continue
-			}
-			return d.newError(tok.Pos(), "unknown field: %v", tok.RawString())
-		}
-
-		// Handle fields identified by field number.
-		if isFieldNumberName {
-			// TODO: Add an option to permit parsing field numbers.
-			//
-			// This requires careful thought as the MarshalOptions.EmitUnknown
-			// option allows formatting unknown fields as the field number and the
-			// best-effort textual representation of the field value.  In that case,
-			// it may not be possible to unmarshal the value from a parser that does
-			// have information about the unknown field.
-			return d.newError(tok.Pos(), "cannot specify field by number: %v", tok.RawString())
-		}
-
-		switch {
-		case fd.IsList():
-			kind := fd.Kind()
-			if kind != pref.MessageKind && kind != pref.GroupKind && !tok.HasSeparator() {
-				return d.syntaxError(tok.Pos(), "missing field separator :")
-			}
-
-			list := m.Mutable(fd).List()
-			if err := d.unmarshalList(fd, list); err != nil {
-				return err
-			}
-
-		case fd.IsMap():
-			mmap := m.Mutable(fd).Map()
-			if err := d.unmarshalMap(fd, mmap); err != nil {
-				return err
-			}
-
-		default:
-			kind := fd.Kind()
-			if kind != pref.MessageKind && kind != pref.GroupKind && !tok.HasSeparator() {
-				return d.syntaxError(tok.Pos(), "missing field separator :")
-			}
-
-			// If field is a oneof, check if it has already been set.
-			if od := fd.ContainingOneof(); od != nil {
-				idx := uint64(od.Index())
-				if seenOneofs.Has(idx) {
-					return d.newError(tok.Pos(), "error parsing %q, oneof %v is already set", tok.RawString(), od.FullName())
-				}
-				seenOneofs.Set(idx)
-			}
-
-			num := uint64(fd.Number())
-			if seenNums.Has(num) {
-				return d.newError(tok.Pos(), "non-repeated field %q is repeated", tok.RawString())
-			}
-
-			if err := d.unmarshalSingular(fd, m); err != nil {
-				return err
-			}
-			seenNums.Set(num)
-		}
-	}
-
-	return nil
-}
-
-// unmarshalSingular unmarshals a non-repeated field value specified by the
-// given FieldDescriptor.
-func (d decoder) unmarshalSingular(fd pref.FieldDescriptor, m pref.Message) error {
-	var val pref.Value
-	var err error
-	switch fd.Kind() {
-	case pref.MessageKind, pref.GroupKind:
-		val = m.NewField(fd)
-		err = d.unmarshalMessage(val.Message(), true)
-	default:
-		val, err = d.unmarshalScalar(fd)
-	}
-	if err == nil {
-		m.Set(fd, val)
-	}
-	return err
-}
-
-// unmarshalScalar unmarshals a scalar/enum protoreflect.Value specified by the
-// given FieldDescriptor.
-func (d decoder) unmarshalScalar(fd pref.FieldDescriptor) (pref.Value, error) {
-	tok, err := d.Read()
-	if err != nil {
-		return pref.Value{}, err
-	}
-
-	if tok.Kind() != text.Scalar {
-		return pref.Value{}, d.unexpectedTokenError(tok)
-	}
-
-	kind := fd.Kind()
-	switch kind {
-	case pref.BoolKind:
-		if b, ok := tok.Bool(); ok {
-			return pref.ValueOfBool(b), nil
-		}
-
-	case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
-		if n, ok := tok.Int32(); ok {
-			return pref.ValueOfInt32(n), nil
-		}
-
-	case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
-		if n, ok := tok.Int64(); ok {
-			return pref.ValueOfInt64(n), nil
-		}
-
-	case pref.Uint32Kind, pref.Fixed32Kind:
-		if n, ok := tok.Uint32(); ok {
-			return pref.ValueOfUint32(n), nil
-		}
-
-	case pref.Uint64Kind, pref.Fixed64Kind:
-		if n, ok := tok.Uint64(); ok {
-			return pref.ValueOfUint64(n), nil
-		}
-
-	case pref.FloatKind:
-		if n, ok := tok.Float32(); ok {
-			return pref.ValueOfFloat32(n), nil
-		}
-
-	case pref.DoubleKind:
-		if n, ok := tok.Float64(); ok {
-			return pref.ValueOfFloat64(n), nil
-		}
-
-	case pref.StringKind:
-		if s, ok := tok.String(); ok {
-			if strs.EnforceUTF8(fd) && !utf8.ValidString(s) {
-				return pref.Value{}, d.newError(tok.Pos(), "contains invalid UTF-8")
-			}
-			return pref.ValueOfString(s), nil
-		}
-
-	case pref.BytesKind:
-		if b, ok := tok.String(); ok {
-			return pref.ValueOfBytes([]byte(b)), nil
-		}
-
-	case pref.EnumKind:
-		if lit, ok := tok.Enum(); ok {
-			// Lookup EnumNumber based on name.
-			if enumVal := fd.Enum().Values().ByName(pref.Name(lit)); enumVal != nil {
-				return pref.ValueOfEnum(enumVal.Number()), nil
-			}
-		}
-		if num, ok := tok.Int32(); ok {
-			return pref.ValueOfEnum(pref.EnumNumber(num)), nil
-		}
-
-	default:
-		panic(fmt.Sprintf("invalid scalar kind %v", kind))
-	}
-
-	return pref.Value{}, d.newError(tok.Pos(), "invalid value for %v type: %v", kind, tok.RawString())
-}
-
-// unmarshalList unmarshals into given protoreflect.List. A list value can
-// either be in [] syntax or simply just a single scalar/message value.
-func (d decoder) unmarshalList(fd pref.FieldDescriptor, list pref.List) error {
-	tok, err := d.Peek()
-	if err != nil {
-		return err
-	}
-
-	switch fd.Kind() {
-	case pref.MessageKind, pref.GroupKind:
-		switch tok.Kind() {
-		case text.ListOpen:
-			d.Read()
-			for {
-				tok, err := d.Peek()
-				if err != nil {
-					return err
-				}
-
-				switch tok.Kind() {
-				case text.ListClose:
-					d.Read()
-					return nil
-				case text.MessageOpen:
-					pval := list.NewElement()
-					if err := d.unmarshalMessage(pval.Message(), true); err != nil {
-						return err
-					}
-					list.Append(pval)
-				default:
-					return d.unexpectedTokenError(tok)
-				}
-			}
-
-		case text.MessageOpen:
-			pval := list.NewElement()
-			if err := d.unmarshalMessage(pval.Message(), true); err != nil {
-				return err
-			}
-			list.Append(pval)
-			return nil
-		}
-
-	default:
-		switch tok.Kind() {
-		case text.ListOpen:
-			d.Read()
-			for {
-				tok, err := d.Peek()
-				if err != nil {
-					return err
-				}
-
-				switch tok.Kind() {
-				case text.ListClose:
-					d.Read()
-					return nil
-				case text.Scalar:
-					pval, err := d.unmarshalScalar(fd)
-					if err != nil {
-						return err
-					}
-					list.Append(pval)
-				default:
-					return d.unexpectedTokenError(tok)
-				}
-			}
-
-		case text.Scalar:
-			pval, err := d.unmarshalScalar(fd)
-			if err != nil {
-				return err
-			}
-			list.Append(pval)
-			return nil
-		}
-	}
-
-	return d.unexpectedTokenError(tok)
-}
-
-// unmarshalMap unmarshals into given protoreflect.Map. A map value is a
-// textproto message containing {key: <kvalue>, value: <mvalue>}.
-func (d decoder) unmarshalMap(fd pref.FieldDescriptor, mmap pref.Map) error {
-	// Determine ahead whether map entry is a scalar type or a message type in
-	// order to call the appropriate unmarshalMapValue func inside
-	// unmarshalMapEntry.
-	var unmarshalMapValue func() (pref.Value, error)
-	switch fd.MapValue().Kind() {
-	case pref.MessageKind, pref.GroupKind:
-		unmarshalMapValue = func() (pref.Value, error) {
-			pval := mmap.NewValue()
-			if err := d.unmarshalMessage(pval.Message(), true); err != nil {
-				return pref.Value{}, err
-			}
-			return pval, nil
-		}
-	default:
-		unmarshalMapValue = func() (pref.Value, error) {
-			return d.unmarshalScalar(fd.MapValue())
-		}
-	}
-
-	tok, err := d.Read()
-	if err != nil {
-		return err
-	}
-	switch tok.Kind() {
-	case text.MessageOpen:
-		return d.unmarshalMapEntry(fd, mmap, unmarshalMapValue)
-
-	case text.ListOpen:
-		for {
-			tok, err := d.Read()
-			if err != nil {
-				return err
-			}
-			switch tok.Kind() {
-			case text.ListClose:
-				return nil
-			case text.MessageOpen:
-				if err := d.unmarshalMapEntry(fd, mmap, unmarshalMapValue); err != nil {
-					return err
-				}
-			default:
-				return d.unexpectedTokenError(tok)
-			}
-		}
-
-	default:
-		return d.unexpectedTokenError(tok)
-	}
-}
-
-// unmarshalMap unmarshals into given protoreflect.Map. A map value is a
-// textproto message containing {key: <kvalue>, value: <mvalue>}.
-func (d decoder) unmarshalMapEntry(fd pref.FieldDescriptor, mmap pref.Map, unmarshalMapValue func() (pref.Value, error)) error {
-	var key pref.MapKey
-	var pval pref.Value
-Loop:
-	for {
-		// Read field name.
-		tok, err := d.Read()
-		if err != nil {
-			return err
-		}
-		switch tok.Kind() {
-		case text.Name:
-			if tok.NameKind() != text.IdentName {
-				if !d.opts.DiscardUnknown {
-					return d.newError(tok.Pos(), "unknown map entry field %q", tok.RawString())
-				}
-				d.skipValue()
-				continue Loop
-			}
-			// Continue below.
-		case text.MessageClose:
-			break Loop
-		default:
-			return d.unexpectedTokenError(tok)
-		}
-
-		switch name := pref.Name(tok.IdentName()); name {
-		case genid.MapEntry_Key_field_name:
-			if !tok.HasSeparator() {
-				return d.syntaxError(tok.Pos(), "missing field separator :")
-			}
-			if key.IsValid() {
-				return d.newError(tok.Pos(), "map entry %q cannot be repeated", name)
-			}
-			val, err := d.unmarshalScalar(fd.MapKey())
-			if err != nil {
-				return err
-			}
-			key = val.MapKey()
-
-		case genid.MapEntry_Value_field_name:
-			if kind := fd.MapValue().Kind(); (kind != pref.MessageKind) && (kind != pref.GroupKind) {
-				if !tok.HasSeparator() {
-					return d.syntaxError(tok.Pos(), "missing field separator :")
-				}
-			}
-			if pval.IsValid() {
-				return d.newError(tok.Pos(), "map entry %q cannot be repeated", name)
-			}
-			pval, err = unmarshalMapValue()
-			if err != nil {
-				return err
-			}
-
-		default:
-			if !d.opts.DiscardUnknown {
-				return d.newError(tok.Pos(), "unknown map entry field %q", name)
-			}
-			d.skipValue()
-		}
-	}
-
-	if !key.IsValid() {
-		key = fd.MapKey().Default().MapKey()
-	}
-	if !pval.IsValid() {
-		switch fd.MapValue().Kind() {
-		case pref.MessageKind, pref.GroupKind:
-			// If value field is not set for message/group types, construct an
-			// empty one as default.
-			pval = mmap.NewValue()
-		default:
-			pval = fd.MapValue().Default()
-		}
-	}
-	mmap.Set(key, pval)
-	return nil
-}
-
-// unmarshalAny unmarshals an Any textproto. It can either be in expanded form
-// or non-expanded form.
-func (d decoder) unmarshalAny(m pref.Message, checkDelims bool) error {
-	var typeURL string
-	var bValue []byte
-	var seenTypeUrl bool
-	var seenValue bool
-	var isExpanded bool
-
-	if checkDelims {
-		tok, err := d.Read()
-		if err != nil {
-			return err
-		}
-
-		if tok.Kind() != text.MessageOpen {
-			return d.unexpectedTokenError(tok)
-		}
-	}
-
-Loop:
-	for {
-		// Read field name. Can only have 3 possible field names, i.e. type_url,
-		// value and type URL name inside [].
-		tok, err := d.Read()
-		if err != nil {
-			return err
-		}
-		if typ := tok.Kind(); typ != text.Name {
-			if checkDelims {
-				if typ == text.MessageClose {
-					break Loop
-				}
-			} else if typ == text.EOF {
-				break Loop
-			}
-			return d.unexpectedTokenError(tok)
-		}
-
-		switch tok.NameKind() {
-		case text.IdentName:
-			// Both type_url and value fields require field separator :.
-			if !tok.HasSeparator() {
-				return d.syntaxError(tok.Pos(), "missing field separator :")
-			}
-
-			switch name := pref.Name(tok.IdentName()); name {
-			case genid.Any_TypeUrl_field_name:
-				if seenTypeUrl {
-					return d.newError(tok.Pos(), "duplicate %v field", genid.Any_TypeUrl_field_fullname)
-				}
-				if isExpanded {
-					return d.newError(tok.Pos(), "conflict with [%s] field", typeURL)
-				}
-				tok, err := d.Read()
-				if err != nil {
-					return err
-				}
-				var ok bool
-				typeURL, ok = tok.String()
-				if !ok {
-					return d.newError(tok.Pos(), "invalid %v field value: %v", genid.Any_TypeUrl_field_fullname, tok.RawString())
-				}
-				seenTypeUrl = true
-
-			case genid.Any_Value_field_name:
-				if seenValue {
-					return d.newError(tok.Pos(), "duplicate %v field", genid.Any_Value_field_fullname)
-				}
-				if isExpanded {
-					return d.newError(tok.Pos(), "conflict with [%s] field", typeURL)
-				}
-				tok, err := d.Read()
-				if err != nil {
-					return err
-				}
-				s, ok := tok.String()
-				if !ok {
-					return d.newError(tok.Pos(), "invalid %v field value: %v", genid.Any_Value_field_fullname, tok.RawString())
-				}
-				bValue = []byte(s)
-				seenValue = true
-
-			default:
-				if !d.opts.DiscardUnknown {
-					return d.newError(tok.Pos(), "invalid field name %q in %v message", tok.RawString(), genid.Any_message_fullname)
-				}
-			}
-
-		case text.TypeName:
-			if isExpanded {
-				return d.newError(tok.Pos(), "cannot have more than one type")
-			}
-			if seenTypeUrl {
-				return d.newError(tok.Pos(), "conflict with type_url field")
-			}
-			typeURL = tok.TypeName()
-			var err error
-			bValue, err = d.unmarshalExpandedAny(typeURL, tok.Pos())
-			if err != nil {
-				return err
-			}
-			isExpanded = true
-
-		default:
-			if !d.opts.DiscardUnknown {
-				return d.newError(tok.Pos(), "invalid field name %q in %v message", tok.RawString(), genid.Any_message_fullname)
-			}
-		}
-	}
-
-	fds := m.Descriptor().Fields()
-	if len(typeURL) > 0 {
-		m.Set(fds.ByNumber(genid.Any_TypeUrl_field_number), pref.ValueOfString(typeURL))
-	}
-	if len(bValue) > 0 {
-		m.Set(fds.ByNumber(genid.Any_Value_field_number), pref.ValueOfBytes(bValue))
-	}
-	return nil
-}
-
-func (d decoder) unmarshalExpandedAny(typeURL string, pos int) ([]byte, error) {
-	mt, err := d.opts.Resolver.FindMessageByURL(typeURL)
-	if err != nil {
-		return nil, d.newError(pos, "unable to resolve message [%v]: %v", typeURL, err)
-	}
-	// Create new message for the embedded message type and unmarshal the value
-	// field into it.
-	m := mt.New()
-	if err := d.unmarshalMessage(m, true); err != nil {
-		return nil, err
-	}
-	// Serialize the embedded message and return the resulting bytes.
-	b, err := proto.MarshalOptions{
-		AllowPartial:  true, // Never check required fields inside an Any.
-		Deterministic: true,
-	}.Marshal(m.Interface())
-	if err != nil {
-		return nil, d.newError(pos, "error in marshaling message into Any.value: %v", err)
-	}
-	return b, nil
-}
-
-// skipValue makes the decoder parse a field value in order to advance the read
-// to the next field. It relies on Read returning an error if the types are not
-// in valid sequence.
-func (d decoder) skipValue() error {
-	tok, err := d.Read()
-	if err != nil {
-		return err
-	}
-	// Only need to continue reading for messages and lists.
-	switch tok.Kind() {
-	case text.MessageOpen:
-		return d.skipMessageValue()
-
-	case text.ListOpen:
-		for {
-			tok, err := d.Read()
-			if err != nil {
-				return err
-			}
-			switch tok.Kind() {
-			case text.ListClose:
-				return nil
-			case text.MessageOpen:
-				return d.skipMessageValue()
-			default:
-				// Skip items. This will not validate whether skipped values are
-				// of the same type or not, same behavior as C++
-				// TextFormat::Parser::AllowUnknownField(true) version 3.8.0.
-			}
-		}
-	}
-	return nil
-}
-
-// skipMessageValue makes the decoder parse and skip over all fields in a
-// message. It assumes that the previous read type is MessageOpen.
-func (d decoder) skipMessageValue() error {
-	for {
-		tok, err := d.Read()
-		if err != nil {
-			return err
-		}
-		switch tok.Kind() {
-		case text.MessageClose:
-			return nil
-		case text.Name:
-			if err := d.skipValue(); err != nil {
-				return err
-			}
-		}
-	}
-}
diff --git a/encoding/prototext/decode_test.go b/encoding/prototext/decode_test.go
deleted file mode 100644
index 2e92dd2..0000000
--- a/encoding/prototext/decode_test.go
+++ /dev/null
@@ -1,1700 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package prototext_test
-
-import (
-	"math"
-	"strings"
-	"testing"
-
-	"google.golang.org/protobuf/encoding/prototext"
-	"google.golang.org/protobuf/internal/flags"
-	"google.golang.org/protobuf/proto"
-	preg "google.golang.org/protobuf/reflect/protoregistry"
-
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-	weakpb "google.golang.org/protobuf/internal/testprotos/test/weak1"
-	pb2 "google.golang.org/protobuf/internal/testprotos/textpb2"
-	pb3 "google.golang.org/protobuf/internal/testprotos/textpb3"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-func TestUnmarshal(t *testing.T) {
-	tests := []struct {
-		desc         string
-		umo          prototext.UnmarshalOptions
-		inputMessage proto.Message
-		inputText    string
-		wantMessage  proto.Message
-		wantErr      string // Expected error substring.
-		skip         bool
-	}{{
-		desc:         "proto2 empty message",
-		inputMessage: &pb2.Scalars{},
-		wantMessage:  &pb2.Scalars{},
-	}, {
-		desc:         "proto2 optional scalars set to zero values",
-		inputMessage: &pb2.Scalars{},
-		inputText: `opt_bool: false
-opt_int32: 0
-opt_int64: 0
-opt_uint32: 0
-opt_uint64: 0
-opt_sint32: 0
-opt_sint64: 0
-opt_fixed32: 0
-opt_fixed64: 0
-opt_sfixed32: 0
-opt_sfixed64: 0
-opt_float: 0
-opt_double: 0
-opt_bytes: ""
-opt_string: ""
-`,
-		wantMessage: &pb2.Scalars{
-			OptBool:     proto.Bool(false),
-			OptInt32:    proto.Int32(0),
-			OptInt64:    proto.Int64(0),
-			OptUint32:   proto.Uint32(0),
-			OptUint64:   proto.Uint64(0),
-			OptSint32:   proto.Int32(0),
-			OptSint64:   proto.Int64(0),
-			OptFixed32:  proto.Uint32(0),
-			OptFixed64:  proto.Uint64(0),
-			OptSfixed32: proto.Int32(0),
-			OptSfixed64: proto.Int64(0),
-			OptFloat:    proto.Float32(0),
-			OptDouble:   proto.Float64(0),
-			OptBytes:    []byte{},
-			OptString:   proto.String(""),
-		},
-	}, {
-		desc:         "proto3 scalars set to zero values",
-		inputMessage: &pb3.Scalars{},
-		inputText: `s_bool: false
-s_int32: 0
-s_int64: 0
-s_uint32: 0
-s_uint64: 0
-s_sint32: 0
-s_sint64: 0
-s_fixed32: 0
-s_fixed64: 0
-s_sfixed32: 0
-s_sfixed64: 0
-s_float: 0
-s_double: 0
-s_bytes: ""
-s_string: ""
-`,
-		wantMessage: &pb3.Scalars{},
-	}, {
-		desc:         "proto3 optional set to zero values",
-		inputMessage: &pb3.Proto3Optional{},
-		inputText: `opt_bool: false
-opt_int32: 0
-opt_int64: 0
-opt_uint32: 0
-opt_uint64: 0
-opt_float: 0
-opt_double: 0
-opt_string: ""
-opt_bytes: ""
-opt_enum: ZERO
-opt_message: {}
-`,
-		wantMessage: &pb3.Proto3Optional{
-			OptBool:    proto.Bool(false),
-			OptInt32:   proto.Int32(0),
-			OptInt64:   proto.Int64(0),
-			OptUint32:  proto.Uint32(0),
-			OptUint64:  proto.Uint64(0),
-			OptFloat:   proto.Float32(0),
-			OptDouble:  proto.Float64(0),
-			OptString:  proto.String(""),
-			OptBytes:   []byte{},
-			OptEnum:    pb3.Enum_ZERO.Enum(),
-			OptMessage: &pb3.Nested{},
-		},
-	}, {
-		desc:         "proto2 optional scalars",
-		inputMessage: &pb2.Scalars{},
-		inputText: `opt_bool: true
-opt_int32: 255
-opt_int64: 3735928559
-opt_uint32: 0xff
-opt_uint64: 0xdeadbeef
-opt_sint32: -1001
-opt_sint64: -0xffff
-opt_fixed64: 64
-opt_sfixed32: -32
-opt_float: 1.234
-opt_double: 1.23e+100
-opt_bytes: "\xe8\xb0\xb7\xe6\xad\x8c"
-opt_string: "谷歌"
-`,
-		wantMessage: &pb2.Scalars{
-			OptBool:     proto.Bool(true),
-			OptInt32:    proto.Int32(0xff),
-			OptInt64:    proto.Int64(0xdeadbeef),
-			OptUint32:   proto.Uint32(0xff),
-			OptUint64:   proto.Uint64(0xdeadbeef),
-			OptSint32:   proto.Int32(-1001),
-			OptSint64:   proto.Int64(-0xffff),
-			OptFixed64:  proto.Uint64(64),
-			OptSfixed32: proto.Int32(-32),
-			OptFloat:    proto.Float32(1.234),
-			OptDouble:   proto.Float64(1.23e100),
-			OptBytes:    []byte("\xe8\xb0\xb7\xe6\xad\x8c"),
-			OptString:   proto.String("谷歌"),
-		},
-	}, {
-		desc:         "case sensitive",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `S_BOOL: true`,
-		wantErr:      "unknown field: S_BOOL",
-	}, {
-		desc:         "proto3 scalars",
-		inputMessage: &pb3.Scalars{},
-		inputText: `s_bool: true
-s_int32: 255
-s_int64: 3735928559
-s_uint32: 0xff
-s_uint64: 0xdeadbeef
-s_sint32: -1001
-s_sint64: -0xffff
-s_fixed64: 64
-s_sfixed32: -32
-s_float: 1.234
-s_double: 1.23e+100
-s_bytes: "\xe8\xb0\xb7\xe6\xad\x8c"
-s_string: "谷歌"
-`,
-		wantMessage: &pb3.Scalars{
-			SBool:     true,
-			SInt32:    0xff,
-			SInt64:    0xdeadbeef,
-			SUint32:   0xff,
-			SUint64:   0xdeadbeef,
-			SSint32:   -1001,
-			SSint64:   -0xffff,
-			SFixed64:  64,
-			SSfixed32: -32,
-			SFloat:    1.234,
-			SDouble:   1.23e100,
-			SBytes:    []byte("\xe8\xb0\xb7\xe6\xad\x8c"),
-			SString:   "谷歌",
-		},
-	}, {
-		desc:         "proto2 string with invalid UTF-8",
-		inputMessage: &pb2.Scalars{},
-		inputText:    `opt_string: "abc\xff"`,
-		wantMessage: &pb2.Scalars{
-			OptString: proto.String("abc\xff"),
-		},
-	}, {
-		desc:         "proto3 string with invalid UTF-8",
-		inputMessage: &pb3.Scalars{},
-		inputText:    `s_string: "abc\xff"`,
-		wantErr:      "(line 1:11): contains invalid UTF-8",
-	}, {
-		desc:         "proto2 message contains unknown field",
-		inputMessage: &pb2.Scalars{},
-		inputText:    "unknown_field: 123",
-		wantErr:      "unknown field",
-	}, {
-		desc:         "proto3 message contains unknown field",
-		inputMessage: &pb3.Scalars{},
-		inputText:    "unknown_field: 456",
-		wantErr:      "unknown field",
-	}, {
-		desc:         "proto2 message contains discarded unknown field",
-		umo:          prototext.UnmarshalOptions{DiscardUnknown: true},
-		inputMessage: &pb2.Scalars{},
-		inputText:    `unknown_field:123 1000:"hello"`,
-	}, {
-		desc:         "proto3 message contains discarded unknown field",
-		umo:          prototext.UnmarshalOptions{DiscardUnknown: true},
-		inputMessage: &pb3.Scalars{},
-		inputText:    `unknown_field:456 1000:"goodbye"`,
-	}, {
-		desc:         "proto2 message cannot parse field number",
-		umo:          prototext.UnmarshalOptions{DiscardUnknown: true},
-		inputMessage: &pb2.Scalars{},
-		inputText:    `13:"hello"`,
-		wantErr:      "cannot specify field by number",
-	}, {
-		desc:         "unknown list field",
-		umo:          prototext.UnmarshalOptions{DiscardUnknown: true},
-		inputMessage: &pb2.Scalars{},
-		inputText:    `unknown_field: { strings: [ "" ] }`,
-	}, {
-		desc:         "unknown list of list field",
-		umo:          prototext.UnmarshalOptions{DiscardUnknown: true},
-		inputMessage: &pb2.Scalars{},
-		inputText:    `unknown_field: { strings: [ [ ] ] }`,
-		wantErr:      `(line 1:29): invalid scalar value: [`,
-	}, {
-		desc:         "proto3 message cannot parse field number",
-		umo:          prototext.UnmarshalOptions{DiscardUnknown: true},
-		inputMessage: &pb3.Scalars{},
-		inputText:    `13:"goodbye"`,
-		wantErr:      "cannot specify field by number",
-	}, {
-		desc:         "proto2 numeric key field",
-		inputMessage: &pb2.Scalars{},
-		inputText:    "1: true",
-		wantErr:      "cannot specify field by number",
-	}, {
-		desc:         "proto3 numeric key field",
-		inputMessage: &pb3.Scalars{},
-		inputText:    "1: true",
-		wantErr:      "cannot specify field by number",
-	}, {
-		desc:         "invalid bool value",
-		inputMessage: &pb3.Scalars{},
-		inputText:    "s_bool: 123",
-		wantErr:      "invalid value for bool",
-	}, {
-		desc:         "invalid int32 value",
-		inputMessage: &pb3.Scalars{},
-		inputText:    "s_int32: not_a_num",
-		wantErr:      "invalid value for int32",
-	}, {
-		desc:         "invalid int64 value",
-		inputMessage: &pb3.Scalars{},
-		inputText:    "s_int64: 'not a num either'",
-		wantErr:      "invalid value for int64",
-	}, {
-		desc:         "invalid uint32 value",
-		inputMessage: &pb3.Scalars{},
-		inputText:    "s_fixed32: -42",
-		wantErr:      "invalid value for fixed32",
-	}, {
-		desc:         "invalid uint64 value",
-		inputMessage: &pb3.Scalars{},
-		inputText:    "s_uint64: -47",
-		wantErr:      "invalid value for uint64",
-	}, {
-		desc:         "invalid sint32 value",
-		inputMessage: &pb3.Scalars{},
-		inputText:    "s_sint32: '42'",
-		wantErr:      "invalid value for sint32",
-	}, {
-		desc:         "invalid sint64 value",
-		inputMessage: &pb3.Scalars{},
-		inputText:    "s_sint64: '-47'",
-		wantErr:      "invalid value for sint64",
-	}, {
-		desc:         "invalid fixed32 value",
-		inputMessage: &pb3.Scalars{},
-		inputText:    "s_fixed32: -42",
-		wantErr:      "invalid value for fixed32",
-	}, {
-		desc:         "invalid fixed64 value",
-		inputMessage: &pb3.Scalars{},
-		inputText:    "s_fixed64: -42",
-		wantErr:      "invalid value for fixed64",
-	}, {
-		desc:         "invalid sfixed32 value",
-		inputMessage: &pb3.Scalars{},
-		inputText:    "s_sfixed32: 'not valid'",
-		wantErr:      "invalid value for sfixed32",
-	}, {
-		desc:         "invalid sfixed64 value",
-		inputMessage: &pb3.Scalars{},
-		inputText:    "s_sfixed64: bad",
-		wantErr:      "invalid value for sfixed64",
-	}, {
-		desc:         "conformance: FloatFieldMaxValue",
-		inputMessage: &pb2.Scalars{},
-		inputText:    `opt_float: 3.4028235e+38`,
-		wantMessage: &pb2.Scalars{
-			OptFloat: proto.Float32(3.40282347e+38),
-		},
-	}, {
-		desc:         "conformance: FloatFieldLargerThanUint64",
-		inputMessage: &pb2.Scalars{},
-		inputText:    `opt_float: 18446744073709551616`,
-		wantMessage: &pb2.Scalars{
-			OptFloat: proto.Float32(1.84467441e+19),
-		},
-	}, {
-		desc:         "conformance: FloatFieldTooLarge",
-		inputMessage: &pb2.Scalars{},
-		inputText:    `opt_float: 3.4028235e+39`,
-		wantMessage: &pb2.Scalars{
-			OptFloat: proto.Float32(float32(math.Inf(1))),
-		},
-	}, {
-		desc:         "invalid string value",
-		inputMessage: &pb3.Scalars{},
-		inputText:    "s_string: invalid_string",
-		wantErr:      "invalid value for string type",
-	}, {
-		desc:         "proto2 bytes set to empty string",
-		inputMessage: &pb2.Scalars{},
-		inputText:    "opt_bytes: ''",
-		wantMessage: &pb2.Scalars{
-			OptBytes: []byte(""),
-		},
-	}, {
-		desc:         "proto3 bytes set to empty string",
-		inputMessage: &pb3.Scalars{},
-		inputText:    "s_bytes: ''",
-		wantMessage:  &pb3.Scalars{},
-	}, {
-		desc:         "proto2 duplicate singular field",
-		inputMessage: &pb2.Scalars{},
-		inputText: `
-opt_bool: true
-opt_bool: false
-`,
-		wantErr: `(line 3:1): non-repeated field "opt_bool" is repeated`,
-	}, {
-		desc:         "proto2 more duplicate singular field",
-		inputMessage: &pb2.Scalars{},
-		inputText: `
-opt_bool: true
-opt_string: "hello"
-opt_bool: false
-`,
-		wantErr: `(line 4:1): non-repeated field "opt_bool" is repeated`,
-	}, {
-		desc:         "proto2 invalid singular field",
-		inputMessage: &pb2.Scalars{},
-		inputText: `
-opt_bool: [true, false]
-`,
-		wantErr: "(line 2:11): unexpected token: [",
-	}, {
-		desc:         "proto3 duplicate singular field",
-		inputMessage: &pb3.Scalars{},
-		inputText: `
-s_bool: false
-s_bool: true
-`,
-		wantErr: `non-repeated field "s_bool" is repeated`,
-	}, {
-		desc:         "proto3 more duplicate singular field",
-		inputMessage: &pb3.Scalars{},
-		inputText: `
-s_bool: false
-s_string: ""
-s_bool: true
-`,
-		wantErr: `non-repeated field "s_bool" is repeated`,
-	}, {
-		desc:         "proto2 enum",
-		inputMessage: &pb2.Enums{},
-		inputText: `
-opt_enum: ONE
-opt_nested_enum: UNO
-`,
-		wantMessage: &pb2.Enums{
-			OptEnum:       pb2.Enum_ONE.Enum(),
-			OptNestedEnum: pb2.Enums_UNO.Enum(),
-		},
-	}, {
-		desc:         "proto2 enum set to numeric values",
-		inputMessage: &pb2.Enums{},
-		inputText: `
-opt_enum: 2
-opt_nested_enum: 2
-`,
-		wantMessage: &pb2.Enums{
-			OptEnum:       pb2.Enum_TWO.Enum(),
-			OptNestedEnum: pb2.Enums_DOS.Enum(),
-		},
-	}, {
-		desc:         "proto2 enum set to unnamed numeric values",
-		inputMessage: &pb2.Enums{},
-		inputText: `
-opt_enum: 101
-opt_nested_enum: -101
-`,
-		wantMessage: &pb2.Enums{
-			OptEnum:       pb2.Enum(101).Enum(),
-			OptNestedEnum: pb2.Enums_NestedEnum(-101).Enum(),
-		},
-	}, {
-		desc:         "proto2 enum set to invalid named",
-		inputMessage: &pb2.Enums{},
-		inputText: `
-opt_enum: UNNAMED
-opt_nested_enum: UNNAMED_TOO
-`,
-		wantErr: "invalid value for enum type: UNNAMED",
-	}, {
-		desc:         "proto3 enum name value",
-		inputMessage: &pb3.Enums{},
-		inputText: `
-s_enum: ONE
-s_nested_enum: DIEZ
-`,
-		wantMessage: &pb3.Enums{
-			SEnum:       pb3.Enum_ONE,
-			SNestedEnum: pb3.Enums_DIEZ,
-		},
-	}, {
-		desc:         "proto3 enum numeric value",
-		inputMessage: &pb3.Enums{},
-		inputText: `
-s_enum: 2
-s_nested_enum: 2
-`,
-		wantMessage: &pb3.Enums{
-			SEnum:       pb3.Enum_TWO,
-			SNestedEnum: pb3.Enums_DOS,
-		},
-	}, {
-		desc:         "proto3 enum unnamed numeric value",
-		inputMessage: &pb3.Enums{},
-		inputText: `
-s_enum: 0x7fffffff
-s_nested_enum: -0x80000000
-`,
-		wantMessage: &pb3.Enums{
-			SEnum:       0x7fffffff,
-			SNestedEnum: -0x80000000,
-		},
-	}, {
-		desc:         "proto2 nested empty messages",
-		inputMessage: &pb2.Nests{},
-		inputText: `
-opt_nested: {}
-OptGroup: {}
-`,
-		wantMessage: &pb2.Nests{
-			OptNested: &pb2.Nested{},
-			Optgroup:  &pb2.Nests_OptGroup{},
-		},
-	}, {
-		desc:         "message fields with no field separator",
-		inputMessage: &pb2.Nests{},
-		inputText: `
-opt_nested {}
-OptGroup {}
-`,
-		wantMessage: &pb2.Nests{
-			OptNested: &pb2.Nested{},
-			Optgroup:  &pb2.Nests_OptGroup{},
-		},
-	}, {
-		desc:         "group field name",
-		inputMessage: &pb2.Nests{},
-		inputText:    `optgroup: {}`,
-		wantErr:      "unknown field: optgroup",
-	}, {
-		desc:         "proto2 nested messages",
-		inputMessage: &pb2.Nests{},
-		inputText: `
-opt_nested: {
-  opt_string: "nested message"
-  opt_nested: {
-    opt_string: "another nested message"
-  }
-}
-`,
-		wantMessage: &pb2.Nests{
-			OptNested: &pb2.Nested{
-				OptString: proto.String("nested message"),
-				OptNested: &pb2.Nested{
-					OptString: proto.String("another nested message"),
-				},
-			},
-		},
-	}, {
-		desc:         "proto3 nested empty message",
-		inputMessage: &pb3.Nests{},
-		inputText:    "s_nested: {}",
-		wantMessage: &pb3.Nests{
-			SNested: &pb3.Nested{},
-		},
-	}, {
-		desc:         "proto3 nested message",
-		inputMessage: &pb3.Nests{},
-		inputText: `
-s_nested: {
-  s_string: "nested message"
-  s_nested: {
-    s_string: "another nested message"
-  }
-}
-`,
-		wantMessage: &pb3.Nests{
-			SNested: &pb3.Nested{
-				SString: "nested message",
-				SNested: &pb3.Nested{
-					SString: "another nested message",
-				},
-			},
-		},
-	}, {
-		desc:         "proto3 nested message contains invalid UTF-8",
-		inputMessage: &pb3.Nests{},
-		inputText: `s_nested: {
-  s_string: "abc\xff"
-}
-`,
-		wantErr: "contains invalid UTF-8",
-	}, {
-		desc:         "oneof set to empty string",
-		inputMessage: &pb3.Oneofs{},
-		inputText:    "oneof_string: ''",
-		wantMessage: &pb3.Oneofs{
-			Union: &pb3.Oneofs_OneofString{},
-		},
-	}, {
-		desc:         "oneof set to string",
-		inputMessage: &pb3.Oneofs{},
-		inputText:    "oneof_string: 'hello'",
-		wantMessage: &pb3.Oneofs{
-			Union: &pb3.Oneofs_OneofString{
-				OneofString: "hello",
-			},
-		},
-	}, {
-		desc:         "oneof set to enum",
-		inputMessage: &pb3.Oneofs{},
-		inputText:    "oneof_enum: TEN",
-		wantMessage: &pb3.Oneofs{
-			Union: &pb3.Oneofs_OneofEnum{
-				OneofEnum: pb3.Enum_TEN,
-			},
-		},
-	}, {
-		desc:         "oneof set to empty message",
-		inputMessage: &pb3.Oneofs{},
-		inputText:    "oneof_nested: {}",
-		wantMessage: &pb3.Oneofs{
-			Union: &pb3.Oneofs_OneofNested{
-				OneofNested: &pb3.Nested{},
-			},
-		},
-	}, {
-		desc:         "oneof set to message",
-		inputMessage: &pb3.Oneofs{},
-		inputText: `
-oneof_nested: {
-  s_string: "nested message"
-}
-`,
-		wantMessage: &pb3.Oneofs{
-			Union: &pb3.Oneofs_OneofNested{
-				OneofNested: &pb3.Nested{
-					SString: "nested message",
-				},
-			},
-		},
-	}, {
-		desc:         "oneof set to more than one field",
-		inputMessage: &pb3.Oneofs{},
-		inputText: `
-oneof_enum: ZERO
-oneof_string: "hello"
-`,
-		wantErr: `error parsing "oneof_string", oneof pb3.Oneofs.union is already set`,
-	}, {
-		desc:         "repeated scalar using same field name",
-		inputMessage: &pb2.Repeats{},
-		inputText: `
-rpt_string: "a"
-rpt_string: "b"
-rpt_int32: 0xff
-rpt_float: 1.23
-rpt_bytes: "bytes"
-`,
-		wantMessage: &pb2.Repeats{
-			RptString: []string{"a", "b"},
-			RptInt32:  []int32{0xff},
-			RptFloat:  []float32{1.23},
-			RptBytes:  [][]byte{[]byte("bytes")},
-		},
-	}, {
-		desc:         "repeated using mix of [] and repeated field name",
-		inputMessage: &pb2.Repeats{},
-		inputText: `
-rpt_string: "a"
-rpt_bool: true
-rpt_string: ["x", "y"]
-rpt_bool: [ false, true ]
-rpt_string: "b"
-`,
-		wantMessage: &pb2.Repeats{
-			RptString: []string{"a", "x", "y", "b"},
-			RptBool:   []bool{true, false, true},
-		},
-	}, {
-		desc:         "repeated proto2 contains invalid UTF-8",
-		inputMessage: &pb2.Repeats{},
-		inputText:    `rpt_string: "abc\xff"`,
-		wantMessage: &pb2.Repeats{
-			RptString: []string{"abc\xff"},
-		},
-	}, {
-		desc:         "repeated proto3 contains invalid UTF-8",
-		inputMessage: &pb3.Repeats{},
-		inputText:    `rpt_string: "abc\xff"`,
-		wantErr:      "contains invalid UTF-8",
-	}, {
-		desc:         "repeated enums",
-		inputMessage: &pb2.Enums{},
-		inputText: `
-rpt_enum: TEN
-rpt_enum: 1
-rpt_nested_enum: [DOS, 2]
-rpt_enum: 42
-rpt_nested_enum: -47
-`,
-		wantMessage: &pb2.Enums{
-			RptEnum:       []pb2.Enum{pb2.Enum_TEN, pb2.Enum_ONE, 42},
-			RptNestedEnum: []pb2.Enums_NestedEnum{pb2.Enums_DOS, pb2.Enums_DOS, -47},
-		},
-	}, {
-		desc:         "repeated nested messages",
-		inputMessage: &pb2.Nests{},
-		inputText: `
-rpt_nested: {
-  opt_string: "repeat nested one"
-}
-rpt_nested: {
-  opt_string: "repeat nested two"
-  opt_nested: {
-    opt_string: "inside repeat nested two"
-  }
-}
-rpt_nested: {}
-`,
-		wantMessage: &pb2.Nests{
-			RptNested: []*pb2.Nested{
-				{
-					OptString: proto.String("repeat nested one"),
-				},
-				{
-					OptString: proto.String("repeat nested two"),
-					OptNested: &pb2.Nested{
-						OptString: proto.String("inside repeat nested two"),
-					},
-				},
-				{},
-			},
-		},
-	}, {
-		desc:         "repeated group fields",
-		inputMessage: &pb2.Nests{},
-		inputText: `
-RptGroup: {
-  rpt_string: "hello"
-  rpt_string: "world"
-}
-RptGroup: {}
-`,
-		wantMessage: &pb2.Nests{
-			Rptgroup: []*pb2.Nests_RptGroup{
-				{
-					RptString: []string{"hello", "world"},
-				},
-				{},
-			},
-		},
-	}, {
-		desc:         "repeated message fields without field separator",
-		inputMessage: &pb2.Nests{},
-		inputText: `
-rpt_nested {
-  opt_string: "repeat nested one"
-}
-rpt_nested: [
-  {
-    opt_string: "repeat nested two"
-  },
-  {}
-]
-`,
-		wantMessage: &pb2.Nests{
-			RptNested: []*pb2.Nested{
-				{
-					OptString: proto.String("repeat nested one"),
-				},
-				{
-					OptString: proto.String("repeat nested two"),
-				},
-				{},
-			},
-		},
-	}, {
-		desc:         "bools",
-		inputMessage: &pb2.Repeats{},
-		inputText: `
-rpt_bool: [ True, true, t, 1, False, false, f, 0 ]
-`,
-		wantMessage: &pb2.Repeats{
-			RptBool: []bool{true, true, true, true, false, false, false, false},
-		},
-	}, {
-		desc:         "special floats and doubles",
-		inputMessage: &pb2.Repeats{},
-		inputText: `
-rpt_float: [ inf, Inf, infinity, InFiniTy, -inf, -inF, -infinitY, -InfinitY, nan, NaN, Nan ],
-rpt_double: [ inf, Inf, infinity, InFiniTy, -inf, -inF, -infinitY, -InfinitY, nan, NaN, Nan ],
-`,
-		wantMessage: &pb2.Repeats{
-			RptFloat: []float32{
-				float32(math.Inf(1)),
-				float32(math.Inf(1)),
-				float32(math.Inf(1)),
-				float32(math.Inf(1)),
-				float32(math.Inf(-1)),
-				float32(math.Inf(-1)),
-				float32(math.Inf(-1)),
-				float32(math.Inf(-1)),
-				float32(math.NaN()),
-				float32(math.NaN()),
-				float32(math.NaN()),
-			},
-			RptDouble: []float64{
-				math.Inf(1),
-				math.Inf(1),
-				math.Inf(1),
-				math.Inf(1),
-				math.Inf(-1),
-				math.Inf(-1),
-				math.Inf(-1),
-				math.Inf(-1),
-				math.NaN(),
-				math.NaN(),
-				math.NaN(),
-			},
-		},
-	}, {
-		desc:         "map fields 1",
-		inputMessage: &pb3.Maps{},
-		inputText: `
-int32_to_str: {
-  key: -101
-  value: "-101"
-}
-int32_to_str {
-  key: 0
-  value: "zero"
-}
-bool_to_uint32: {
-  key: false
-  value: 101
-}
-int32_to_str: {
-  key: 255
-  value: "0xff"
-}
-bool_to_uint32 {
-  key: true
-  value: 42
-}
-`,
-		wantMessage: &pb3.Maps{
-			Int32ToStr: map[int32]string{
-				-101: "-101",
-				0xff: "0xff",
-				0:    "zero",
-			},
-			BoolToUint32: map[bool]uint32{
-				true:  42,
-				false: 101,
-			},
-		},
-	}, {
-		desc:         "map fields 2",
-		inputMessage: &pb3.Maps{},
-		inputText: `
-uint64_to_enum: {
-  key: 1
-  value: ONE
-}
-uint64_to_enum: {
-  key: 2
-  value: 2
-}
-uint64_to_enum: {
-  key: 10
-  value: 101
-}
-`,
-		wantMessage: &pb3.Maps{
-			Uint64ToEnum: map[uint64]pb3.Enum{
-				1:  pb3.Enum_ONE,
-				2:  pb3.Enum_TWO,
-				10: 101,
-			},
-		},
-	}, {
-		desc:         "map fields 3",
-		inputMessage: &pb3.Maps{},
-		inputText: `
-str_to_nested: {
-  key: "nested_one"
-  value {
-    s_string: "nested in a map"
-  }
-}
-`,
-		wantMessage: &pb3.Maps{
-			StrToNested: map[string]*pb3.Nested{
-				"nested_one": &pb3.Nested{
-					SString: "nested in a map",
-				},
-			},
-		},
-	}, {
-		desc:         "map fields 4",
-		inputMessage: &pb3.Maps{},
-		inputText: `
-str_to_oneofs: {
-  key: "nested"
-  value: {
-    oneof_nested: {
-      s_string: "nested oneof in map field value"
-    }
-  }
-}
-str_to_oneofs: {
-  key: "string"
-  value: {
-    oneof_string: "hello"
-  }
-}
-`,
-		wantMessage: &pb3.Maps{
-			StrToOneofs: map[string]*pb3.Oneofs{
-				"string": &pb3.Oneofs{
-					Union: &pb3.Oneofs_OneofString{
-						OneofString: "hello",
-					},
-				},
-				"nested": &pb3.Oneofs{
-					Union: &pb3.Oneofs_OneofNested{
-						OneofNested: &pb3.Nested{
-							SString: "nested oneof in map field value",
-						},
-					},
-				},
-			},
-		},
-	}, {
-		desc:         "map contains duplicate keys",
-		inputMessage: &pb3.Maps{},
-		inputText: `
-int32_to_str: {
-  key: 0
-  value: "cero"
-}
-int32_to_str: {
-  key: 0
-  value: "zero"
-}
-`,
-		wantMessage: &pb3.Maps{
-			Int32ToStr: map[int32]string{
-				0: "zero",
-			},
-		},
-	}, {
-		desc:         "map contains duplicate key fields",
-		inputMessage: &pb3.Maps{},
-		inputText: `
-int32_to_str: {
-  key: 0
-  key: 1
-  value: "cero"
-}
-`,
-		wantErr: `map entry "key" cannot be repeated`,
-	}, {
-		desc:         "map contains duplicate value fields",
-		inputMessage: &pb3.Maps{},
-		inputText: `
-int32_to_str: {
-  key: 1
-  value: "cero"
-  value: "uno"
-}
-`,
-		wantErr: `map entry "value" cannot be repeated`,
-	}, {
-		desc:         "map contains missing key",
-		inputMessage: &pb3.Maps{},
-		inputText: `
-int32_to_str: {
-  value: "zero"
-}
-bool_to_uint32: {
-  value: 47
-}
-str_to_nested: {
-  value: {}
-}
-`,
-		wantMessage: &pb3.Maps{
-			Int32ToStr: map[int32]string{
-				0: "zero",
-			},
-			BoolToUint32: map[bool]uint32{
-				false: 47,
-			},
-			StrToNested: map[string]*pb3.Nested{
-				"": {},
-			},
-		},
-	}, {
-		desc:         "map contains missing value",
-		inputMessage: &pb3.Maps{},
-		inputText: `
-int32_to_str: {
-  key: 100
-}
-bool_to_uint32: {
-  key: true
-}
-uint64_to_enum: {
-  key: 101
-}
-str_to_nested: {
-  key: "hello"
-}
-`,
-		wantMessage: &pb3.Maps{
-			Int32ToStr: map[int32]string{
-				100: "",
-			},
-			BoolToUint32: map[bool]uint32{
-				true: 0,
-			},
-			Uint64ToEnum: map[uint64]pb3.Enum{
-				101: pb3.Enum_ZERO,
-			},
-			StrToNested: map[string]*pb3.Nested{
-				"hello": {},
-			},
-		},
-	}, {
-		desc:         "map contains missing key and value",
-		inputMessage: &pb3.Maps{},
-		inputText: `
-int32_to_str: {}
-bool_to_uint32: {}
-uint64_to_enum: {}
-str_to_nested: {}
-`,
-		wantMessage: &pb3.Maps{
-			Int32ToStr: map[int32]string{
-				0: "",
-			},
-			BoolToUint32: map[bool]uint32{
-				false: 0,
-			},
-			Uint64ToEnum: map[uint64]pb3.Enum{
-				0: pb3.Enum_ZERO,
-			},
-			StrToNested: map[string]*pb3.Nested{
-				"": {},
-			},
-		},
-	}, {
-		desc:         "map contains overriding entries",
-		inputMessage: &pb3.Maps{},
-		inputText: `
-int32_to_str: {
-  key: 0
-}
-int32_to_str: {
-  value: "empty"
-}
-int32_to_str: {}
-`,
-		wantMessage: &pb3.Maps{
-			Int32ToStr: map[int32]string{
-				0: "",
-			},
-		},
-	}, {
-		desc:         "proto2 map field value contains invalid UTF-8",
-		inputMessage: &pb2.Maps{},
-		inputText: `int32_to_str: {
-  key: 101
-  value: "abc\xff"
-}
-`,
-		wantMessage: &pb2.Maps{
-			Int32ToStr: map[int32]string{101: "abc\xff"},
-		},
-	}, {
-		desc:         "proto2 map field key contains invalid UTF-8",
-		inputMessage: &pb2.Maps{},
-		inputText: `str_to_nested: {
-  key: "abc\xff"
-  value: {}
-}
-`,
-		wantMessage: &pb2.Maps{
-			StrToNested: map[string]*pb2.Nested{"abc\xff": {}},
-		},
-	}, {
-		desc:         "proto3 map field value contains invalid UTF-8",
-		inputMessage: &pb3.Maps{},
-		inputText: `int32_to_str: {
-  key: 101
-  value: "abc\xff"
-}
-`,
-		wantErr: "contains invalid UTF-8",
-	}, {
-		desc:         "proto3 map field key contains invalid UTF-8",
-		inputMessage: &pb3.Maps{},
-		inputText: `str_to_nested: {
-  key: "abc\xff"
-  value: {}
-}
-`,
-		wantErr: "contains invalid UTF-8",
-	}, {
-		desc:         "map contains unknown field",
-		inputMessage: &pb3.Maps{},
-		inputText: `
-int32_to_str: {
-  key: 0
-  value: "cero"
-  unknown: "bad"
-}
-`,
-		wantErr: `(line 5:3): unknown map entry field "unknown"`,
-	}, {
-		desc:         "map contains extension-like key field",
-		inputMessage: &pb3.Maps{},
-		inputText: `
-int32_to_str: {
-  [key]: 10
-  value: "ten"
-}
-`,
-		wantErr: `unknown map entry field "[key]"`,
-	}, {
-		desc:         "map contains invalid key",
-		inputMessage: &pb3.Maps{},
-		inputText: `
-int32_to_str: {
-  key: "invalid"
-  value: "cero"
-}
-`,
-		wantErr: "(line 3:8): invalid value for int32 type",
-	}, {
-		desc:         "map contains invalid value",
-		inputMessage: &pb3.Maps{},
-		inputText: `
-int32_to_str: {
-  key: 100
-  value: 101
-}
-`,
-		wantErr: "(line 4:10): invalid value for string type",
-	}, {
-		desc:         "map contains invalid message value",
-		inputMessage: &pb3.Maps{},
-		inputText: `
-str_to_nested: {
-  key: "one"
-  value: 1
-}
-`,
-		wantErr: "syntax error (line 4:10): unexpected token: 1",
-	}, {
-		desc:         "map using mix of [] and repeated",
-		inputMessage: &pb3.Maps{},
-		inputText: `
-int32_to_str: {
-  key: 1
-  value: "one"
-}
-int32_to_str: [
-  {
-    key: 2
-    value: "not this"
-  },
-  {
-  },
-  {
-    key: 3
-    value: "three"
-  }
-]
-int32_to_str: {
-  key: 2
-  value: "two"
-}
-`,
-		wantMessage: &pb3.Maps{
-			Int32ToStr: map[int32]string{
-				0: "",
-				1: "one",
-				2: "two",
-				3: "three",
-			},
-		},
-	}, {
-		desc:         "required fields not set",
-		inputMessage: &pb2.Requireds{},
-		wantErr:      "required field",
-	}, {
-		desc:         "required field set",
-		inputMessage: &pb2.PartialRequired{},
-		inputText:    "req_string: 'this is required'",
-		wantMessage: &pb2.PartialRequired{
-			ReqString: proto.String("this is required"),
-		},
-	}, {
-		desc:         "required fields partially set",
-		inputMessage: &pb2.Requireds{},
-		inputText: `
-req_bool: false
-req_sfixed64: 3203386110
-req_string: "hello"
-req_enum: ONE
-`,
-		wantMessage: &pb2.Requireds{
-			ReqBool:     proto.Bool(false),
-			ReqSfixed64: proto.Int64(0xbeefcafe),
-			ReqString:   proto.String("hello"),
-			ReqEnum:     pb2.Enum_ONE.Enum(),
-		},
-		wantErr: "required field",
-	}, {
-		desc:         "required fields partially set with AllowPartial",
-		umo:          prototext.UnmarshalOptions{AllowPartial: true},
-		inputMessage: &pb2.Requireds{},
-		inputText: `
-req_bool: false
-req_sfixed64: 3203386110
-req_string: "hello"
-req_enum: ONE
-`,
-		wantMessage: &pb2.Requireds{
-			ReqBool:     proto.Bool(false),
-			ReqSfixed64: proto.Int64(0xbeefcafe),
-			ReqString:   proto.String("hello"),
-			ReqEnum:     pb2.Enum_ONE.Enum(),
-		},
-	}, {
-		desc:         "required fields all set",
-		inputMessage: &pb2.Requireds{},
-		inputText: `
-req_bool: false
-req_sfixed64: 0
-req_double: 0
-req_string: ""
-req_enum: ONE
-req_nested: {}
-`,
-		wantMessage: &pb2.Requireds{
-			ReqBool:     proto.Bool(false),
-			ReqSfixed64: proto.Int64(0),
-			ReqDouble:   proto.Float64(0),
-			ReqString:   proto.String(""),
-			ReqEnum:     pb2.Enum_ONE.Enum(),
-			ReqNested:   &pb2.Nested{},
-		},
-	}, {
-		desc:         "indirect required field",
-		inputMessage: &pb2.IndirectRequired{},
-		inputText:    "opt_nested: {}",
-		wantMessage: &pb2.IndirectRequired{
-			OptNested: &pb2.NestedWithRequired{},
-		},
-		wantErr: "required field",
-	}, {
-		desc:         "indirect required field with AllowPartial",
-		umo:          prototext.UnmarshalOptions{AllowPartial: true},
-		inputMessage: &pb2.IndirectRequired{},
-		inputText:    "opt_nested: {}",
-		wantMessage: &pb2.IndirectRequired{
-			OptNested: &pb2.NestedWithRequired{},
-		},
-	}, {
-		desc:         "indirect required field in repeated",
-		inputMessage: &pb2.IndirectRequired{},
-		inputText: `
-rpt_nested: {
-  req_string: "one"
-}
-rpt_nested: {}
-`,
-		wantMessage: &pb2.IndirectRequired{
-			RptNested: []*pb2.NestedWithRequired{
-				{
-					ReqString: proto.String("one"),
-				},
-				{},
-			},
-		},
-		wantErr: "required field",
-	}, {
-		desc:         "indirect required field in repeated with AllowPartial",
-		umo:          prototext.UnmarshalOptions{AllowPartial: true},
-		inputMessage: &pb2.IndirectRequired{},
-		inputText: `
-rpt_nested: {
-  req_string: "one"
-}
-rpt_nested: {}
-`,
-		wantMessage: &pb2.IndirectRequired{
-			RptNested: []*pb2.NestedWithRequired{
-				{
-					ReqString: proto.String("one"),
-				},
-				{},
-			},
-		},
-	}, {
-		desc:         "indirect required field in map",
-		inputMessage: &pb2.IndirectRequired{},
-		inputText: `
-str_to_nested: {
-  key: "missing"
-}
-str_to_nested: {
-  key: "contains"
-  value: {
-    req_string: "here"
-  }
-}
-`,
-		wantMessage: &pb2.IndirectRequired{
-			StrToNested: map[string]*pb2.NestedWithRequired{
-				"missing": &pb2.NestedWithRequired{},
-				"contains": &pb2.NestedWithRequired{
-					ReqString: proto.String("here"),
-				},
-			},
-		},
-		wantErr: "required field",
-	}, {
-		desc:         "indirect required field in map with AllowPartial",
-		umo:          prototext.UnmarshalOptions{AllowPartial: true},
-		inputMessage: &pb2.IndirectRequired{},
-		inputText: `
-str_to_nested: {
-  key: "missing"
-}
-str_to_nested: {
-  key: "contains"
-  value: {
-    req_string: "here"
-  }
-}
-`,
-		wantMessage: &pb2.IndirectRequired{
-			StrToNested: map[string]*pb2.NestedWithRequired{
-				"missing": &pb2.NestedWithRequired{},
-				"contains": &pb2.NestedWithRequired{
-					ReqString: proto.String("here"),
-				},
-			},
-		},
-	}, {
-		desc:         "indirect required field in oneof",
-		inputMessage: &pb2.IndirectRequired{},
-		inputText: `oneof_nested: {}
-`,
-		wantMessage: &pb2.IndirectRequired{
-			Union: &pb2.IndirectRequired_OneofNested{
-				OneofNested: &pb2.NestedWithRequired{},
-			},
-		},
-		wantErr: "required field",
-	}, {
-		desc:         "indirect required field in oneof with AllowPartial",
-		umo:          prototext.UnmarshalOptions{AllowPartial: true},
-		inputMessage: &pb2.IndirectRequired{},
-		inputText: `oneof_nested: {}
-`,
-		wantMessage: &pb2.IndirectRequired{
-			Union: &pb2.IndirectRequired_OneofNested{
-				OneofNested: &pb2.NestedWithRequired{},
-			},
-		},
-	}, {
-		desc:         "ignore reserved field",
-		inputMessage: &pb2.Nests{},
-		inputText:    "reserved_field: 'ignore this'",
-		wantMessage:  &pb2.Nests{},
-	}, {
-		desc:         "extensions of non-repeated fields",
-		inputMessage: &pb2.Extensions{},
-		inputText: `opt_string: "non-extension field"
-[pb2.opt_ext_bool]: true
-opt_bool: true
-[pb2.opt_ext_nested]: {
-  opt_string: "nested in an extension"
-  opt_nested: {
-    opt_string: "another nested in an extension"
-  }
-}
-[pb2.opt_ext_string]: "extension field"
-opt_int32: 42
-[pb2.opt_ext_enum]: TEN
-`,
-		wantMessage: func() proto.Message {
-			m := &pb2.Extensions{
-				OptString: proto.String("non-extension field"),
-				OptBool:   proto.Bool(true),
-				OptInt32:  proto.Int32(42),
-			}
-			proto.SetExtension(m, pb2.E_OptExtBool, true)
-			proto.SetExtension(m, pb2.E_OptExtString, "extension field")
-			proto.SetExtension(m, pb2.E_OptExtEnum, pb2.Enum_TEN)
-			proto.SetExtension(m, pb2.E_OptExtNested, &pb2.Nested{
-				OptString: proto.String("nested in an extension"),
-				OptNested: &pb2.Nested{
-					OptString: proto.String("another nested in an extension"),
-				},
-			})
-			return m
-		}(),
-	}, {
-		desc:         "extension field contains invalid UTF-8",
-		inputMessage: &pb2.Extensions{},
-		inputText:    `[pb2.opt_ext_string]: "abc\xff"`,
-		wantMessage: func() proto.Message {
-			m := &pb2.Extensions{}
-			proto.SetExtension(m, pb2.E_OptExtString, "abc\xff")
-			return m
-		}(),
-	}, {
-		desc:         "extensions of repeated fields",
-		inputMessage: &pb2.Extensions{},
-		inputText: `[pb2.rpt_ext_enum]: TEN
-[pb2.rpt_ext_enum]: 101
-[pb2.rpt_ext_fixed32]: 42
-[pb2.rpt_ext_enum]: ONE
-[pb2.rpt_ext_nested]: {
-  opt_string: "one"
-}
-[pb2.rpt_ext_nested]: {
-  opt_string: "two"
-}
-[pb2.rpt_ext_fixed32]: 47
-[pb2.rpt_ext_nested]: {
-  opt_string: "three"
-}
-`,
-		wantMessage: func() proto.Message {
-			m := &pb2.Extensions{}
-			proto.SetExtension(m, pb2.E_RptExtEnum, []pb2.Enum{pb2.Enum_TEN, 101, pb2.Enum_ONE})
-			proto.SetExtension(m, pb2.E_RptExtFixed32, []uint32{42, 47})
-			proto.SetExtension(m, pb2.E_RptExtNested, []*pb2.Nested{
-				&pb2.Nested{OptString: proto.String("one")},
-				&pb2.Nested{OptString: proto.String("two")},
-				&pb2.Nested{OptString: proto.String("three")},
-			})
-			return m
-		}(),
-	}, {
-		desc:         "extensions of non-repeated fields in another message",
-		inputMessage: &pb2.Extensions{},
-		inputText: `[pb2.ExtensionsContainer.opt_ext_bool]: true
-[pb2.ExtensionsContainer.opt_ext_enum]: TEN
-[pb2.ExtensionsContainer.opt_ext_nested]: {
-  opt_string: "nested in an extension"
-  opt_nested: {
-    opt_string: "another nested in an extension"
-  }
-}
-[pb2.ExtensionsContainer.opt_ext_string]: "extension field"
-`,
-		wantMessage: func() proto.Message {
-			m := &pb2.Extensions{}
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_OptExtBool, true)
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_OptExtString, "extension field")
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_OptExtEnum, pb2.Enum_TEN)
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_OptExtNested, &pb2.Nested{
-				OptString: proto.String("nested in an extension"),
-				OptNested: &pb2.Nested{
-					OptString: proto.String("another nested in an extension"),
-				},
-			})
-			return m
-		}(),
-	}, {
-		desc:         "extensions of repeated fields in another message",
-		inputMessage: &pb2.Extensions{},
-		inputText: `opt_string: "non-extension field"
-opt_bool: true
-opt_int32: 42
-[pb2.ExtensionsContainer.rpt_ext_nested]: {
-  opt_string: "one"
-}
-[pb2.ExtensionsContainer.rpt_ext_enum]: TEN
-[pb2.ExtensionsContainer.rpt_ext_nested]: {
-  opt_string: "two"
-}
-[pb2.ExtensionsContainer.rpt_ext_enum]: 101
-[pb2.ExtensionsContainer.rpt_ext_string]: "hello"
-[pb2.ExtensionsContainer.rpt_ext_enum]: ONE
-[pb2.ExtensionsContainer.rpt_ext_nested]: {
-  opt_string: "three"
-}
-[pb2.ExtensionsContainer.rpt_ext_string]: "world"
-`,
-		wantMessage: func() proto.Message {
-			m := &pb2.Extensions{
-				OptString: proto.String("non-extension field"),
-				OptBool:   proto.Bool(true),
-				OptInt32:  proto.Int32(42),
-			}
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_RptExtEnum, []pb2.Enum{pb2.Enum_TEN, 101, pb2.Enum_ONE})
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_RptExtString, []string{"hello", "world"})
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_RptExtNested, []*pb2.Nested{
-				&pb2.Nested{OptString: proto.String("one")},
-				&pb2.Nested{OptString: proto.String("two")},
-				&pb2.Nested{OptString: proto.String("three")},
-			})
-			return m
-		}(),
-	}, {
-		desc:         "invalid extension field name",
-		inputMessage: &pb2.Extensions{},
-		inputText:    "[pb2.invalid_message_field]: true",
-		wantErr:      "unknown field",
-	}, {
-		desc:         "MessageSet",
-		inputMessage: &pb2.MessageSet{},
-		inputText: `
-[pb2.MessageSetExtension]: {
-  opt_string: "a messageset extension"
-}
-[pb2.MessageSetExtension.ext_nested]: {
-  opt_string: "just a regular extension"
-}
-[pb2.MessageSetExtension.not_message_set_extension]: {
-  opt_string: "not a messageset extension"
-}
-`,
-		wantMessage: func() proto.Message {
-			m := &pb2.MessageSet{}
-			proto.SetExtension(m, pb2.E_MessageSetExtension_MessageSetExtension, &pb2.MessageSetExtension{
-				OptString: proto.String("a messageset extension"),
-			})
-			proto.SetExtension(m, pb2.E_MessageSetExtension_NotMessageSetExtension, &pb2.MessageSetExtension{
-				OptString: proto.String("not a messageset extension"),
-			})
-			proto.SetExtension(m, pb2.E_MessageSetExtension_ExtNested, &pb2.Nested{
-				OptString: proto.String("just a regular extension"),
-			})
-			return m
-		}(),
-		skip: !flags.ProtoLegacy,
-	}, {
-		desc:         "not real MessageSet 1",
-		inputMessage: &pb2.FakeMessageSet{},
-		inputText: `
-[pb2.FakeMessageSetExtension.message_set_extension]: {
-  opt_string: "not a messageset extension"
-}
-`,
-		wantMessage: func() proto.Message {
-			m := &pb2.FakeMessageSet{}
-			proto.SetExtension(m, pb2.E_FakeMessageSetExtension_MessageSetExtension, &pb2.FakeMessageSetExtension{
-				OptString: proto.String("not a messageset extension"),
-			})
-			return m
-		}(),
-		skip: !flags.ProtoLegacy,
-	}, {
-		desc:         "not real MessageSet 2",
-		inputMessage: &pb2.FakeMessageSet{},
-		inputText: `
-[pb2.FakeMessageSetExtension]: {
-  opt_string: "not a messageset extension"
-}
-`,
-		wantErr: `unable to resolve [[pb2.FakeMessageSetExtension]]: found wrong type`,
-		skip:    !flags.ProtoLegacy,
-	}, {
-		desc:         "not real MessageSet 3",
-		inputMessage: &pb2.MessageSet{},
-		inputText: `
-[pb2.message_set_extension]: {
-  opt_string: "another not a messageset extension"
-}`,
-		wantMessage: func() proto.Message {
-			m := &pb2.MessageSet{}
-			proto.SetExtension(m, pb2.E_MessageSetExtension, &pb2.FakeMessageSetExtension{
-				OptString: proto.String("another not a messageset extension"),
-			})
-			return m
-		}(),
-		skip: !flags.ProtoLegacy,
-	}, {
-		desc:         "Any not expanded",
-		inputMessage: &anypb.Any{},
-		inputText: `
-type_url: "pb2.Nested"
-value: "some bytes"
-`,
-		wantMessage: &anypb.Any{
-			TypeUrl: "pb2.Nested",
-			Value:   []byte("some bytes"),
-		},
-	}, {
-		desc:         "Any not expanded missing value",
-		inputMessage: &anypb.Any{},
-		inputText:    `type_url: "pb2.Nested"`,
-		wantMessage: &anypb.Any{
-			TypeUrl: "pb2.Nested",
-		},
-	}, {
-		desc:         "Any not expanded missing type_url",
-		inputMessage: &anypb.Any{},
-		inputText:    `value: "some bytes"`,
-		wantMessage: &anypb.Any{
-			Value: []byte("some bytes"),
-		},
-	}, {
-		desc:         "Any expanded",
-		inputMessage: &anypb.Any{},
-		inputText: `
-[foobar/pb2.Nested]: {
-  opt_string: "embedded inside Any"
-  opt_nested: {
-    opt_string: "inception"
-  }
-}
-`,
-		wantMessage: func() proto.Message {
-			m := &pb2.Nested{
-				OptString: proto.String("embedded inside Any"),
-				OptNested: &pb2.Nested{
-					OptString: proto.String("inception"),
-				},
-			}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: "foobar/pb2.Nested",
-				Value:   b,
-			}
-		}(),
-	}, {
-		desc:         "Any expanded with empty value",
-		inputMessage: &anypb.Any{},
-		inputText:    `[foo.com/pb2.Nested]: {}`,
-		wantMessage: &anypb.Any{
-			TypeUrl: "foo.com/pb2.Nested",
-		},
-	}, {
-		desc:         "Any expanded with missing required",
-		inputMessage: &anypb.Any{},
-		inputText: `
-[pb2.PartialRequired]: {
-  opt_string: "embedded inside Any"
-}
-`,
-		wantMessage: func() proto.Message {
-			m := &pb2.PartialRequired{
-				OptString: proto.String("embedded inside Any"),
-			}
-			b, err := proto.MarshalOptions{
-				AllowPartial:  true,
-				Deterministic: true,
-			}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: "pb2.PartialRequired",
-				Value:   b,
-			}
-		}(),
-	}, {
-		desc:         "Any with invalid UTF-8",
-		inputMessage: &anypb.Any{},
-		inputText: `
-[pb3.Nested]: {
-  s_string: "abc\xff"
-}
-`,
-		wantErr: "contains invalid UTF-8",
-	}, {
-		desc:         "Any expanded with unregistered type",
-		umo:          prototext.UnmarshalOptions{Resolver: new(preg.Types)},
-		inputMessage: &anypb.Any{},
-		inputText:    `[SomeMessage]: {}`,
-		wantErr:      "unable to resolve message [SomeMessage]",
-	}, {
-		desc:         "Any expanded with invalid value",
-		inputMessage: &anypb.Any{},
-		inputText:    `[pb2.Nested]: 123`,
-		wantErr:      "unexpected token: 123",
-	}, {
-		desc:         "Any expanded with unknown fields",
-		inputMessage: &anypb.Any{},
-		inputText: `
-[pb2.Nested]: {}
-unknown: ""
-`,
-		wantErr: `invalid field name "unknown" in google.protobuf.Any message`,
-	}, {
-		desc:         "Any contains expanded and unexpanded fields",
-		inputMessage: &anypb.Any{},
-		inputText: `
-[pb2.Nested]: {}
-type_url: "pb2.Nested"
-`,
-		wantErr: "(line 3:1): conflict with [pb2.Nested] field",
-	}, {
-		desc:         "weak fields",
-		inputMessage: &testpb.TestWeak{},
-		inputText:    `weak_message1:{a:1}`,
-		wantMessage: func() *testpb.TestWeak {
-			m := new(testpb.TestWeak)
-			m.SetWeakMessage1(&weakpb.WeakImportMessage1{A: proto.Int32(1)})
-			return m
-		}(),
-		skip: !flags.ProtoLegacy,
-	}, {
-		desc:         "weak fields; unknown field",
-		inputMessage: &testpb.TestWeak{},
-		inputText:    `weak_message1:{a:1} weak_message2:{a:1}`,
-		wantErr:      "unknown field: weak_message2", // weak_message2 is unknown since the package containing it is not imported
-		skip:         !flags.ProtoLegacy,
-	}}
-
-	for _, tt := range tests {
-		tt := tt
-		if tt.skip {
-			continue
-		}
-		t.Run(tt.desc, func(t *testing.T) {
-			err := tt.umo.Unmarshal([]byte(tt.inputText), tt.inputMessage)
-			if err != nil {
-				if tt.wantErr == "" {
-					t.Errorf("Unmarshal() got unexpected error: %v", err)
-				} else if !strings.Contains(err.Error(), tt.wantErr) {
-					t.Errorf("Unmarshal() error got %q, want %q", err, tt.wantErr)
-				}
-				return
-			}
-			if tt.wantErr != "" {
-				t.Errorf("Unmarshal() got nil error, want error %q", tt.wantErr)
-				return
-			}
-			if tt.wantMessage != nil && !proto.Equal(tt.inputMessage, tt.wantMessage) {
-				t.Errorf("Unmarshal()\n<got>\n%v\n<want>\n%v\n", tt.inputMessage, tt.wantMessage)
-			}
-		})
-	}
-}
diff --git a/encoding/prototext/doc.go b/encoding/prototext/doc.go
deleted file mode 100644
index 162b4f9..0000000
--- a/encoding/prototext/doc.go
+++ /dev/null
@@ -1,7 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package prototext marshals and unmarshals protocol buffer messages as the
-// textproto format.
-package prototext
diff --git a/encoding/prototext/encode.go b/encoding/prototext/encode.go
deleted file mode 100644
index 8d5304d..0000000
--- a/encoding/prototext/encode.go
+++ /dev/null
@@ -1,371 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package prototext
-
-import (
-	"fmt"
-	"strconv"
-	"unicode/utf8"
-
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/encoding/messageset"
-	"google.golang.org/protobuf/internal/encoding/text"
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/internal/flags"
-	"google.golang.org/protobuf/internal/genid"
-	"google.golang.org/protobuf/internal/order"
-	"google.golang.org/protobuf/internal/pragma"
-	"google.golang.org/protobuf/internal/strs"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/reflect/protoregistry"
-)
-
-const defaultIndent = "  "
-
-// Format formats the message as a multiline string.
-// This function is only intended for human consumption and ignores errors.
-// Do not depend on the output being stable. It may change over time across
-// different versions of the program.
-func Format(m proto.Message) string {
-	return MarshalOptions{Multiline: true}.Format(m)
-}
-
-// Marshal writes the given proto.Message in textproto format using default
-// options. Do not depend on the output being stable. It may change over time
-// across different versions of the program.
-func Marshal(m proto.Message) ([]byte, error) {
-	return MarshalOptions{}.Marshal(m)
-}
-
-// MarshalOptions is a configurable text format marshaler.
-type MarshalOptions struct {
-	pragma.NoUnkeyedLiterals
-
-	// Multiline specifies whether the marshaler should format the output in
-	// indented-form with every textual element on a new line.
-	// If Indent is an empty string, then an arbitrary indent is chosen.
-	Multiline bool
-
-	// Indent specifies the set of indentation characters to use in a multiline
-	// formatted output such that every entry is preceded by Indent and
-	// terminated by a newline. If non-empty, then Multiline is treated as true.
-	// Indent can only be composed of space or tab characters.
-	Indent string
-
-	// EmitASCII specifies whether to format strings and bytes as ASCII only
-	// as opposed to using UTF-8 encoding when possible.
-	EmitASCII bool
-
-	// allowInvalidUTF8 specifies whether to permit the encoding of strings
-	// with invalid UTF-8. This is unexported as it is intended to only
-	// be specified by the Format method.
-	allowInvalidUTF8 bool
-
-	// AllowPartial allows messages that have missing required fields to marshal
-	// without returning an error. If AllowPartial is false (the default),
-	// Marshal will return error if there are any missing required fields.
-	AllowPartial bool
-
-	// EmitUnknown specifies whether to emit unknown fields in the output.
-	// If specified, the unmarshaler may be unable to parse the output.
-	// The default is to exclude unknown fields.
-	EmitUnknown bool
-
-	// Resolver is used for looking up types when expanding google.protobuf.Any
-	// messages. If nil, this defaults to using protoregistry.GlobalTypes.
-	Resolver interface {
-		protoregistry.ExtensionTypeResolver
-		protoregistry.MessageTypeResolver
-	}
-}
-
-// Format formats the message as a string.
-// This method is only intended for human consumption and ignores errors.
-// Do not depend on the output being stable. It may change over time across
-// different versions of the program.
-func (o MarshalOptions) Format(m proto.Message) string {
-	if m == nil || !m.ProtoReflect().IsValid() {
-		return "<nil>" // invalid syntax, but okay since this is for debugging
-	}
-	o.allowInvalidUTF8 = true
-	o.AllowPartial = true
-	o.EmitUnknown = true
-	b, _ := o.Marshal(m)
-	return string(b)
-}
-
-// Marshal writes the given proto.Message in textproto format using options in
-// MarshalOptions object. Do not depend on the output being stable. It may
-// change over time across different versions of the program.
-func (o MarshalOptions) Marshal(m proto.Message) ([]byte, error) {
-	return o.marshal(m)
-}
-
-// marshal is a centralized function that all marshal operations go through.
-// For profiling purposes, avoid changing the name of this function or
-// introducing other code paths for marshal that do not go through this.
-func (o MarshalOptions) marshal(m proto.Message) ([]byte, error) {
-	var delims = [2]byte{'{', '}'}
-
-	if o.Multiline && o.Indent == "" {
-		o.Indent = defaultIndent
-	}
-	if o.Resolver == nil {
-		o.Resolver = protoregistry.GlobalTypes
-	}
-
-	internalEnc, err := text.NewEncoder(o.Indent, delims, o.EmitASCII)
-	if err != nil {
-		return nil, err
-	}
-
-	// Treat nil message interface as an empty message,
-	// in which case there is nothing to output.
-	if m == nil {
-		return []byte{}, nil
-	}
-
-	enc := encoder{internalEnc, o}
-	err = enc.marshalMessage(m.ProtoReflect(), false)
-	if err != nil {
-		return nil, err
-	}
-	out := enc.Bytes()
-	if len(o.Indent) > 0 && len(out) > 0 {
-		out = append(out, '\n')
-	}
-	if o.AllowPartial {
-		return out, nil
-	}
-	return out, proto.CheckInitialized(m)
-}
-
-type encoder struct {
-	*text.Encoder
-	opts MarshalOptions
-}
-
-// marshalMessage marshals the given protoreflect.Message.
-func (e encoder) marshalMessage(m pref.Message, inclDelims bool) error {
-	messageDesc := m.Descriptor()
-	if !flags.ProtoLegacy && messageset.IsMessageSet(messageDesc) {
-		return errors.New("no support for proto1 MessageSets")
-	}
-
-	if inclDelims {
-		e.StartMessage()
-		defer e.EndMessage()
-	}
-
-	// Handle Any expansion.
-	if messageDesc.FullName() == genid.Any_message_fullname {
-		if e.marshalAny(m) {
-			return nil
-		}
-		// If unable to expand, continue on to marshal Any as a regular message.
-	}
-
-	// Marshal fields.
-	var err error
-	order.RangeFields(m, order.IndexNameFieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {
-		if err = e.marshalField(fd.TextName(), v, fd); err != nil {
-			return false
-		}
-		return true
-	})
-	if err != nil {
-		return err
-	}
-
-	// Marshal unknown fields.
-	if e.opts.EmitUnknown {
-		e.marshalUnknown(m.GetUnknown())
-	}
-
-	return nil
-}
-
-// marshalField marshals the given field with protoreflect.Value.
-func (e encoder) marshalField(name string, val pref.Value, fd pref.FieldDescriptor) error {
-	switch {
-	case fd.IsList():
-		return e.marshalList(name, val.List(), fd)
-	case fd.IsMap():
-		return e.marshalMap(name, val.Map(), fd)
-	default:
-		e.WriteName(name)
-		return e.marshalSingular(val, fd)
-	}
-}
-
-// marshalSingular marshals the given non-repeated field value. This includes
-// all scalar types, enums, messages, and groups.
-func (e encoder) marshalSingular(val pref.Value, fd pref.FieldDescriptor) error {
-	kind := fd.Kind()
-	switch kind {
-	case pref.BoolKind:
-		e.WriteBool(val.Bool())
-
-	case pref.StringKind:
-		s := val.String()
-		if !e.opts.allowInvalidUTF8 && strs.EnforceUTF8(fd) && !utf8.ValidString(s) {
-			return errors.InvalidUTF8(string(fd.FullName()))
-		}
-		e.WriteString(s)
-
-	case pref.Int32Kind, pref.Int64Kind,
-		pref.Sint32Kind, pref.Sint64Kind,
-		pref.Sfixed32Kind, pref.Sfixed64Kind:
-		e.WriteInt(val.Int())
-
-	case pref.Uint32Kind, pref.Uint64Kind,
-		pref.Fixed32Kind, pref.Fixed64Kind:
-		e.WriteUint(val.Uint())
-
-	case pref.FloatKind:
-		// Encoder.WriteFloat handles the special numbers NaN and infinites.
-		e.WriteFloat(val.Float(), 32)
-
-	case pref.DoubleKind:
-		// Encoder.WriteFloat handles the special numbers NaN and infinites.
-		e.WriteFloat(val.Float(), 64)
-
-	case pref.BytesKind:
-		e.WriteString(string(val.Bytes()))
-
-	case pref.EnumKind:
-		num := val.Enum()
-		if desc := fd.Enum().Values().ByNumber(num); desc != nil {
-			e.WriteLiteral(string(desc.Name()))
-		} else {
-			// Use numeric value if there is no enum description.
-			e.WriteInt(int64(num))
-		}
-
-	case pref.MessageKind, pref.GroupKind:
-		return e.marshalMessage(val.Message(), true)
-
-	default:
-		panic(fmt.Sprintf("%v has unknown kind: %v", fd.FullName(), kind))
-	}
-	return nil
-}
-
-// marshalList marshals the given protoreflect.List as multiple name-value fields.
-func (e encoder) marshalList(name string, list pref.List, fd pref.FieldDescriptor) error {
-	size := list.Len()
-	for i := 0; i < size; i++ {
-		e.WriteName(name)
-		if err := e.marshalSingular(list.Get(i), fd); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-// marshalMap marshals the given protoreflect.Map as multiple name-value fields.
-func (e encoder) marshalMap(name string, mmap pref.Map, fd pref.FieldDescriptor) error {
-	var err error
-	order.RangeEntries(mmap, order.GenericKeyOrder, func(key pref.MapKey, val pref.Value) bool {
-		e.WriteName(name)
-		e.StartMessage()
-		defer e.EndMessage()
-
-		e.WriteName(string(genid.MapEntry_Key_field_name))
-		err = e.marshalSingular(key.Value(), fd.MapKey())
-		if err != nil {
-			return false
-		}
-
-		e.WriteName(string(genid.MapEntry_Value_field_name))
-		err = e.marshalSingular(val, fd.MapValue())
-		if err != nil {
-			return false
-		}
-		return true
-	})
-	return err
-}
-
-// marshalUnknown parses the given []byte and marshals fields out.
-// This function assumes proper encoding in the given []byte.
-func (e encoder) marshalUnknown(b []byte) {
-	const dec = 10
-	const hex = 16
-	for len(b) > 0 {
-		num, wtype, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		e.WriteName(strconv.FormatInt(int64(num), dec))
-
-		switch wtype {
-		case protowire.VarintType:
-			var v uint64
-			v, n = protowire.ConsumeVarint(b)
-			e.WriteUint(v)
-		case protowire.Fixed32Type:
-			var v uint32
-			v, n = protowire.ConsumeFixed32(b)
-			e.WriteLiteral("0x" + strconv.FormatUint(uint64(v), hex))
-		case protowire.Fixed64Type:
-			var v uint64
-			v, n = protowire.ConsumeFixed64(b)
-			e.WriteLiteral("0x" + strconv.FormatUint(v, hex))
-		case protowire.BytesType:
-			var v []byte
-			v, n = protowire.ConsumeBytes(b)
-			e.WriteString(string(v))
-		case protowire.StartGroupType:
-			e.StartMessage()
-			var v []byte
-			v, n = protowire.ConsumeGroup(num, b)
-			e.marshalUnknown(v)
-			e.EndMessage()
-		default:
-			panic(fmt.Sprintf("prototext: error parsing unknown field wire type: %v", wtype))
-		}
-
-		b = b[n:]
-	}
-}
-
-// marshalAny marshals the given google.protobuf.Any message in expanded form.
-// It returns true if it was able to marshal, else false.
-func (e encoder) marshalAny(any pref.Message) bool {
-	// Construct the embedded message.
-	fds := any.Descriptor().Fields()
-	fdType := fds.ByNumber(genid.Any_TypeUrl_field_number)
-	typeURL := any.Get(fdType).String()
-	mt, err := e.opts.Resolver.FindMessageByURL(typeURL)
-	if err != nil {
-		return false
-	}
-	m := mt.New().Interface()
-
-	// Unmarshal bytes into embedded message.
-	fdValue := fds.ByNumber(genid.Any_Value_field_number)
-	value := any.Get(fdValue)
-	err = proto.UnmarshalOptions{
-		AllowPartial: true,
-		Resolver:     e.opts.Resolver,
-	}.Unmarshal(value.Bytes(), m)
-	if err != nil {
-		return false
-	}
-
-	// Get current encoder position. If marshaling fails, reset encoder output
-	// back to this position.
-	pos := e.Snapshot()
-
-	// Field name is the proto field name enclosed in [].
-	e.WriteName("[" + typeURL + "]")
-	err = e.marshalMessage(m.ProtoReflect(), true)
-	if err != nil {
-		e.Reset(pos)
-		return false
-	}
-	return true
-}
diff --git a/encoding/prototext/encode_test.go b/encoding/prototext/encode_test.go
deleted file mode 100644
index 49fba14..0000000
--- a/encoding/prototext/encode_test.go
+++ /dev/null
@@ -1,1437 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package prototext_test
-
-import (
-	"math"
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-
-	"google.golang.org/protobuf/encoding/prototext"
-	"google.golang.org/protobuf/internal/detrand"
-	"google.golang.org/protobuf/internal/flags"
-	"google.golang.org/protobuf/proto"
-	preg "google.golang.org/protobuf/reflect/protoregistry"
-	"google.golang.org/protobuf/testing/protopack"
-
-	pb2 "google.golang.org/protobuf/internal/testprotos/textpb2"
-	pb3 "google.golang.org/protobuf/internal/testprotos/textpb3"
-	"google.golang.org/protobuf/types/known/anypb"
-)
-
-func init() {
-	// Disable detrand to enable direct comparisons on outputs.
-	detrand.Disable()
-}
-
-func TestMarshal(t *testing.T) {
-	tests := []struct {
-		desc    string
-		mo      prototext.MarshalOptions
-		input   proto.Message
-		want    string
-		wantErr bool // TODO: Verify error message content.
-		skip    bool
-	}{{
-		desc:  "proto2 optional scalars not set",
-		input: &pb2.Scalars{},
-		want:  "",
-	}, {
-		desc:  "proto3 scalars not set",
-		input: &pb3.Scalars{},
-		want:  "",
-	}, {
-		desc:  "proto3 optional not set",
-		input: &pb3.Proto3Optional{},
-		want:  "",
-	}, {
-		desc: "proto2 optional scalars set to zero values",
-		input: &pb2.Scalars{
-			OptBool:     proto.Bool(false),
-			OptInt32:    proto.Int32(0),
-			OptInt64:    proto.Int64(0),
-			OptUint32:   proto.Uint32(0),
-			OptUint64:   proto.Uint64(0),
-			OptSint32:   proto.Int32(0),
-			OptSint64:   proto.Int64(0),
-			OptFixed32:  proto.Uint32(0),
-			OptFixed64:  proto.Uint64(0),
-			OptSfixed32: proto.Int32(0),
-			OptSfixed64: proto.Int64(0),
-			OptFloat:    proto.Float32(0),
-			OptDouble:   proto.Float64(0),
-			OptBytes:    []byte{},
-			OptString:   proto.String(""),
-		},
-		want: `opt_bool: false
-opt_int32: 0
-opt_int64: 0
-opt_uint32: 0
-opt_uint64: 0
-opt_sint32: 0
-opt_sint64: 0
-opt_fixed32: 0
-opt_fixed64: 0
-opt_sfixed32: 0
-opt_sfixed64: 0
-opt_float: 0
-opt_double: 0
-opt_bytes: ""
-opt_string: ""
-`,
-	}, {
-		desc: "proto3 optional set to zero values",
-		input: &pb3.Proto3Optional{
-			OptBool:    proto.Bool(false),
-			OptInt32:   proto.Int32(0),
-			OptInt64:   proto.Int64(0),
-			OptUint32:  proto.Uint32(0),
-			OptUint64:  proto.Uint64(0),
-			OptFloat:   proto.Float32(0),
-			OptDouble:  proto.Float64(0),
-			OptString:  proto.String(""),
-			OptBytes:   []byte{},
-			OptEnum:    pb3.Enum_ZERO.Enum(),
-			OptMessage: &pb3.Nested{},
-		},
-		want: `opt_bool: false
-opt_int32: 0
-opt_int64: 0
-opt_uint32: 0
-opt_uint64: 0
-opt_float: 0
-opt_double: 0
-opt_string: ""
-opt_bytes: ""
-opt_enum: ZERO
-opt_message: {}
-`,
-	}, {
-		desc: "proto3 scalars set to zero values",
-		input: &pb3.Scalars{
-			SBool:     false,
-			SInt32:    0,
-			SInt64:    0,
-			SUint32:   0,
-			SUint64:   0,
-			SSint32:   0,
-			SSint64:   0,
-			SFixed32:  0,
-			SFixed64:  0,
-			SSfixed32: 0,
-			SSfixed64: 0,
-			SFloat:    0,
-			SDouble:   0,
-			SBytes:    []byte{},
-			SString:   "",
-		},
-		want: "",
-	}, {
-		desc: "proto2 optional scalars set to some values",
-		input: &pb2.Scalars{
-			OptBool:     proto.Bool(true),
-			OptInt32:    proto.Int32(0xff),
-			OptInt64:    proto.Int64(0xdeadbeef),
-			OptUint32:   proto.Uint32(47),
-			OptUint64:   proto.Uint64(0xdeadbeef),
-			OptSint32:   proto.Int32(-1001),
-			OptSint64:   proto.Int64(-0xffff),
-			OptFixed64:  proto.Uint64(64),
-			OptSfixed32: proto.Int32(-32),
-			OptFloat:    proto.Float32(1.02),
-			OptDouble:   proto.Float64(1.0199999809265137),
-			OptBytes:    []byte("\xe8\xb0\xb7\xe6\xad\x8c"),
-			OptString:   proto.String("谷歌"),
-		},
-		want: `opt_bool: true
-opt_int32: 255
-opt_int64: 3735928559
-opt_uint32: 47
-opt_uint64: 3735928559
-opt_sint32: -1001
-opt_sint64: -65535
-opt_fixed64: 64
-opt_sfixed32: -32
-opt_float: 1.02
-opt_double: 1.0199999809265137
-opt_bytes: "谷歌"
-opt_string: "谷歌"
-`,
-	}, {
-		desc: "proto2 string with invalid UTF-8",
-		input: &pb2.Scalars{
-			OptString: proto.String("abc\xff"),
-		},
-		want: `opt_string: "abc\xff"
-`,
-	}, {
-		desc: "proto3 string with invalid UTF-8",
-		input: &pb3.Scalars{
-			SString: "abc\xff",
-		},
-		wantErr: true,
-	}, {
-		desc: "float nan",
-		input: &pb3.Scalars{
-			SFloat: float32(math.NaN()),
-		},
-		want: "s_float: nan\n",
-	}, {
-		desc: "float positive infinity",
-		input: &pb3.Scalars{
-			SFloat: float32(math.Inf(1)),
-		},
-		want: "s_float: inf\n",
-	}, {
-		desc: "float negative infinity",
-		input: &pb3.Scalars{
-			SFloat: float32(math.Inf(-1)),
-		},
-		want: "s_float: -inf\n",
-	}, {
-		desc: "double nan",
-		input: &pb3.Scalars{
-			SDouble: math.NaN(),
-		},
-		want: "s_double: nan\n",
-	}, {
-		desc: "double positive infinity",
-		input: &pb3.Scalars{
-			SDouble: math.Inf(1),
-		},
-		want: "s_double: inf\n",
-	}, {
-		desc: "double negative infinity",
-		input: &pb3.Scalars{
-			SDouble: math.Inf(-1),
-		},
-		want: "s_double: -inf\n",
-	}, {
-		desc:  "proto2 enum not set",
-		input: &pb2.Enums{},
-		want:  "",
-	}, {
-		desc: "proto2 enum set to zero value",
-		input: &pb2.Enums{
-			OptEnum:       pb2.Enum(0).Enum(),
-			OptNestedEnum: pb2.Enums_NestedEnum(0).Enum(),
-		},
-		want: `opt_enum: 0
-opt_nested_enum: 0
-`,
-	}, {
-		desc: "proto2 enum",
-		input: &pb2.Enums{
-			OptEnum:       pb2.Enum_ONE.Enum(),
-			OptNestedEnum: pb2.Enums_UNO.Enum(),
-		},
-		want: `opt_enum: ONE
-opt_nested_enum: UNO
-`,
-	}, {
-		desc: "proto2 enum set to numeric values",
-		input: &pb2.Enums{
-			OptEnum:       pb2.Enum(2).Enum(),
-			OptNestedEnum: pb2.Enums_NestedEnum(2).Enum(),
-		},
-		want: `opt_enum: TWO
-opt_nested_enum: DOS
-`,
-	}, {
-		desc: "proto2 enum set to unnamed numeric values",
-		input: &pb2.Enums{
-			OptEnum:       pb2.Enum(101).Enum(),
-			OptNestedEnum: pb2.Enums_NestedEnum(-101).Enum(),
-		},
-		want: `opt_enum: 101
-opt_nested_enum: -101
-`,
-	}, {
-		desc:  "proto3 enum not set",
-		input: &pb3.Enums{},
-		want:  "",
-	}, {
-		desc: "proto3 enum set to zero value",
-		input: &pb3.Enums{
-			SEnum:       pb3.Enum_ZERO,
-			SNestedEnum: pb3.Enums_CERO,
-		},
-		want: "",
-	}, {
-		desc: "proto3 enum",
-		input: &pb3.Enums{
-			SEnum:       pb3.Enum_ONE,
-			SNestedEnum: pb3.Enums_UNO,
-		},
-		want: `s_enum: ONE
-s_nested_enum: UNO
-`,
-	}, {
-		desc: "proto3 enum set to numeric values",
-		input: &pb3.Enums{
-			SEnum:       2,
-			SNestedEnum: 2,
-		},
-		want: `s_enum: TWO
-s_nested_enum: DOS
-`,
-	}, {
-		desc: "proto3 enum set to unnamed numeric values",
-		input: &pb3.Enums{
-			SEnum:       -47,
-			SNestedEnum: 47,
-		},
-		want: `s_enum: -47
-s_nested_enum: 47
-`,
-	}, {
-		desc:  "proto2 nested message not set",
-		input: &pb2.Nests{},
-		want:  "",
-	}, {
-		desc: "proto2 nested message set to empty",
-		input: &pb2.Nests{
-			OptNested: &pb2.Nested{},
-			Optgroup:  &pb2.Nests_OptGroup{},
-		},
-		want: `opt_nested: {}
-OptGroup: {}
-`,
-	}, {
-		desc: "proto2 nested messages",
-		input: &pb2.Nests{
-			OptNested: &pb2.Nested{
-				OptString: proto.String("nested message"),
-				OptNested: &pb2.Nested{
-					OptString: proto.String("another nested message"),
-				},
-			},
-		},
-		want: `opt_nested: {
-  opt_string: "nested message"
-  opt_nested: {
-    opt_string: "another nested message"
-  }
-}
-`,
-	}, {
-		desc: "proto2 groups",
-		input: &pb2.Nests{
-			Optgroup: &pb2.Nests_OptGroup{
-				OptString: proto.String("inside a group"),
-				OptNested: &pb2.Nested{
-					OptString: proto.String("nested message inside a group"),
-				},
-				Optnestedgroup: &pb2.Nests_OptGroup_OptNestedGroup{
-					OptFixed32: proto.Uint32(47),
-				},
-			},
-		},
-		want: `OptGroup: {
-  opt_string: "inside a group"
-  opt_nested: {
-    opt_string: "nested message inside a group"
-  }
-  OptNestedGroup: {
-    opt_fixed32: 47
-  }
-}
-`,
-	}, {
-		desc:  "proto3 nested message not set",
-		input: &pb3.Nests{},
-		want:  "",
-	}, {
-		desc: "proto3 nested message set to empty",
-		input: &pb3.Nests{
-			SNested: &pb3.Nested{},
-		},
-		want: "s_nested: {}\n",
-	}, {
-		desc: "proto3 nested message",
-		input: &pb3.Nests{
-			SNested: &pb3.Nested{
-				SString: "nested message",
-				SNested: &pb3.Nested{
-					SString: "another nested message",
-				},
-			},
-		},
-		want: `s_nested: {
-  s_string: "nested message"
-  s_nested: {
-    s_string: "another nested message"
-  }
-}
-`,
-	}, {
-		desc: "proto3 nested message contains invalid UTF-8",
-		input: &pb3.Nests{
-			SNested: &pb3.Nested{
-				SString: "abc\xff",
-			},
-		},
-		wantErr: true,
-	}, {
-		desc:  "oneof not set",
-		input: &pb3.Oneofs{},
-		want:  "",
-	}, {
-		desc: "oneof set to empty string",
-		input: &pb3.Oneofs{
-			Union: &pb3.Oneofs_OneofString{},
-		},
-		want: `oneof_string: ""
-`,
-	}, {
-		desc: "oneof set to string",
-		input: &pb3.Oneofs{
-			Union: &pb3.Oneofs_OneofString{
-				OneofString: "hello",
-			},
-		},
-		want: `oneof_string: "hello"
-`,
-	}, {
-		desc: "oneof set to enum",
-		input: &pb3.Oneofs{
-			Union: &pb3.Oneofs_OneofEnum{
-				OneofEnum: pb3.Enum_ZERO,
-			},
-		},
-		want: `oneof_enum: ZERO
-`,
-	}, {
-		desc: "oneof set to empty message",
-		input: &pb3.Oneofs{
-			Union: &pb3.Oneofs_OneofNested{
-				OneofNested: &pb3.Nested{},
-			},
-		},
-		want: "oneof_nested: {}\n",
-	}, {
-		desc: "oneof set to message",
-		input: &pb3.Oneofs{
-			Union: &pb3.Oneofs_OneofNested{
-				OneofNested: &pb3.Nested{
-					SString: "nested message",
-				},
-			},
-		},
-		want: `oneof_nested: {
-  s_string: "nested message"
-}
-`,
-	}, {
-		desc:  "repeated fields not set",
-		input: &pb2.Repeats{},
-		want:  "",
-	}, {
-		desc: "repeated fields set to empty slices",
-		input: &pb2.Repeats{
-			RptBool:   []bool{},
-			RptInt32:  []int32{},
-			RptInt64:  []int64{},
-			RptUint32: []uint32{},
-			RptUint64: []uint64{},
-			RptFloat:  []float32{},
-			RptDouble: []float64{},
-			RptBytes:  [][]byte{},
-		},
-		want: "",
-	}, {
-		desc: "repeated fields set to some values",
-		input: &pb2.Repeats{
-			RptBool:   []bool{true, false, true, true},
-			RptInt32:  []int32{1, 6, 0, 0},
-			RptInt64:  []int64{-64, 47},
-			RptUint32: []uint32{0xff, 0xffff},
-			RptUint64: []uint64{0xdeadbeef},
-			RptFloat:  []float32{float32(math.NaN()), float32(math.Inf(1)), float32(math.Inf(-1)), 1.034},
-			RptDouble: []float64{math.NaN(), math.Inf(1), math.Inf(-1), 1.23e-308},
-			RptString: []string{"hello", "世界"},
-			RptBytes: [][]byte{
-				[]byte("hello"),
-				[]byte("\xe4\xb8\x96\xe7\x95\x8c"),
-			},
-		},
-		want: `rpt_bool: true
-rpt_bool: false
-rpt_bool: true
-rpt_bool: true
-rpt_int32: 1
-rpt_int32: 6
-rpt_int32: 0
-rpt_int32: 0
-rpt_int64: -64
-rpt_int64: 47
-rpt_uint32: 255
-rpt_uint32: 65535
-rpt_uint64: 3735928559
-rpt_float: nan
-rpt_float: inf
-rpt_float: -inf
-rpt_float: 1.034
-rpt_double: nan
-rpt_double: inf
-rpt_double: -inf
-rpt_double: 1.23e-308
-rpt_string: "hello"
-rpt_string: "世界"
-rpt_bytes: "hello"
-rpt_bytes: "世界"
-`,
-	}, {
-		desc: "repeated proto2 contains invalid UTF-8",
-		input: &pb2.Repeats{
-			RptString: []string{"abc\xff"},
-		},
-		want: `rpt_string: "abc\xff"
-`,
-	}, {
-		desc: "repeated proto3 contains invalid UTF-8",
-		input: &pb3.Repeats{
-			RptString: []string{"abc\xff"},
-		},
-		wantErr: true,
-	}, {
-		desc: "repeated enums",
-		input: &pb2.Enums{
-			RptEnum:       []pb2.Enum{pb2.Enum_ONE, 2, pb2.Enum_TEN, 42},
-			RptNestedEnum: []pb2.Enums_NestedEnum{2, 47, 10},
-		},
-		want: `rpt_enum: ONE
-rpt_enum: TWO
-rpt_enum: TEN
-rpt_enum: 42
-rpt_nested_enum: DOS
-rpt_nested_enum: 47
-rpt_nested_enum: DIEZ
-`,
-	}, {
-		desc: "repeated messages set to empty",
-		input: &pb2.Nests{
-			RptNested: []*pb2.Nested{},
-			Rptgroup:  []*pb2.Nests_RptGroup{},
-		},
-		want: "",
-	}, {
-		desc: "repeated messages",
-		input: &pb2.Nests{
-			RptNested: []*pb2.Nested{
-				{
-					OptString: proto.String("repeat nested one"),
-				},
-				{
-					OptString: proto.String("repeat nested two"),
-					OptNested: &pb2.Nested{
-						OptString: proto.String("inside repeat nested two"),
-					},
-				},
-				{},
-			},
-		},
-		want: `rpt_nested: {
-  opt_string: "repeat nested one"
-}
-rpt_nested: {
-  opt_string: "repeat nested two"
-  opt_nested: {
-    opt_string: "inside repeat nested two"
-  }
-}
-rpt_nested: {}
-`,
-	}, {
-		desc: "repeated messages contains nil value",
-		input: &pb2.Nests{
-			RptNested: []*pb2.Nested{nil, {}},
-		},
-		want: `rpt_nested: {}
-rpt_nested: {}
-`,
-	}, {
-		desc: "repeated groups",
-		input: &pb2.Nests{
-			Rptgroup: []*pb2.Nests_RptGroup{
-				{
-					RptString: []string{"hello", "world"},
-				},
-				{},
-				nil,
-			},
-		},
-		want: `RptGroup: {
-  rpt_string: "hello"
-  rpt_string: "world"
-}
-RptGroup: {}
-RptGroup: {}
-`,
-	}, {
-		desc:  "map fields not set",
-		input: &pb3.Maps{},
-		want:  "",
-	}, {
-		desc: "map fields set to empty",
-		input: &pb3.Maps{
-			Int32ToStr:   map[int32]string{},
-			BoolToUint32: map[bool]uint32{},
-			Uint64ToEnum: map[uint64]pb3.Enum{},
-			StrToNested:  map[string]*pb3.Nested{},
-			StrToOneofs:  map[string]*pb3.Oneofs{},
-		},
-		want: "",
-	}, {
-		desc: "map fields 1",
-		input: &pb3.Maps{
-			Int32ToStr: map[int32]string{
-				-101: "-101",
-				0xff: "0xff",
-				0:    "zero",
-			},
-			BoolToUint32: map[bool]uint32{
-				true:  42,
-				false: 101,
-			},
-		},
-		want: `int32_to_str: {
-  key: -101
-  value: "-101"
-}
-int32_to_str: {
-  key: 0
-  value: "zero"
-}
-int32_to_str: {
-  key: 255
-  value: "0xff"
-}
-bool_to_uint32: {
-  key: false
-  value: 101
-}
-bool_to_uint32: {
-  key: true
-  value: 42
-}
-`,
-	}, {
-		desc: "map fields 2",
-		input: &pb3.Maps{
-			Uint64ToEnum: map[uint64]pb3.Enum{
-				1:  pb3.Enum_ONE,
-				2:  pb3.Enum_TWO,
-				10: pb3.Enum_TEN,
-				47: 47,
-			},
-		},
-		want: `uint64_to_enum: {
-  key: 1
-  value: ONE
-}
-uint64_to_enum: {
-  key: 2
-  value: TWO
-}
-uint64_to_enum: {
-  key: 10
-  value: TEN
-}
-uint64_to_enum: {
-  key: 47
-  value: 47
-}
-`,
-	}, {
-		desc: "map fields 3",
-		input: &pb3.Maps{
-			StrToNested: map[string]*pb3.Nested{
-				"nested": &pb3.Nested{
-					SString: "nested in a map",
-				},
-			},
-		},
-		want: `str_to_nested: {
-  key: "nested"
-  value: {
-    s_string: "nested in a map"
-  }
-}
-`,
-	}, {
-		desc: "map fields 4",
-		input: &pb3.Maps{
-			StrToOneofs: map[string]*pb3.Oneofs{
-				"string": &pb3.Oneofs{
-					Union: &pb3.Oneofs_OneofString{
-						OneofString: "hello",
-					},
-				},
-				"nested": &pb3.Oneofs{
-					Union: &pb3.Oneofs_OneofNested{
-						OneofNested: &pb3.Nested{
-							SString: "nested oneof in map field value",
-						},
-					},
-				},
-			},
-		},
-		want: `str_to_oneofs: {
-  key: "nested"
-  value: {
-    oneof_nested: {
-      s_string: "nested oneof in map field value"
-    }
-  }
-}
-str_to_oneofs: {
-  key: "string"
-  value: {
-    oneof_string: "hello"
-  }
-}
-`,
-	}, {
-		desc: "proto2 map field value contains invalid UTF-8",
-		input: &pb2.Maps{
-			Int32ToStr: map[int32]string{
-				101: "abc\xff",
-			},
-		},
-		want: `int32_to_str: {
-  key: 101
-  value: "abc\xff"
-}
-`,
-	}, {
-		desc: "proto2 map field key contains invalid UTF-8",
-		input: &pb2.Maps{
-			StrToNested: map[string]*pb2.Nested{
-				"abc\xff": {},
-			},
-		},
-		want: `str_to_nested: {
-  key: "abc\xff"
-  value: {}
-}
-`,
-	}, {
-		desc: "proto3 map field value contains invalid UTF-8",
-		input: &pb3.Maps{
-			Int32ToStr: map[int32]string{
-				101: "abc\xff",
-			},
-		},
-		wantErr: true,
-	}, {
-		desc: "proto3 map field key contains invalid UTF-8",
-		input: &pb3.Maps{
-			StrToNested: map[string]*pb3.Nested{
-				"abc\xff": {},
-			},
-		},
-		wantErr: true,
-	}, {
-		desc: "map field contains nil value",
-		input: &pb3.Maps{
-			StrToNested: map[string]*pb3.Nested{
-				"nil": nil,
-			},
-		},
-		want: `str_to_nested: {
-  key: "nil"
-  value: {}
-}
-`,
-	}, {
-		desc:    "required fields not set",
-		input:   &pb2.Requireds{},
-		want:    "",
-		wantErr: true,
-	}, {
-		desc: "required fields partially set",
-		input: &pb2.Requireds{
-			ReqBool:     proto.Bool(false),
-			ReqSfixed64: proto.Int64(0xbeefcafe),
-			ReqDouble:   proto.Float64(math.NaN()),
-			ReqString:   proto.String("hello"),
-			ReqEnum:     pb2.Enum_ONE.Enum(),
-		},
-		want: `req_bool: false
-req_sfixed64: 3203386110
-req_double: nan
-req_string: "hello"
-req_enum: ONE
-`,
-		wantErr: true,
-	}, {
-		desc: "required fields not set with AllowPartial",
-		mo:   prototext.MarshalOptions{AllowPartial: true},
-		input: &pb2.Requireds{
-			ReqBool:     proto.Bool(false),
-			ReqSfixed64: proto.Int64(0xbeefcafe),
-			ReqDouble:   proto.Float64(math.NaN()),
-			ReqString:   proto.String("hello"),
-			ReqEnum:     pb2.Enum_ONE.Enum(),
-		},
-		want: `req_bool: false
-req_sfixed64: 3203386110
-req_double: nan
-req_string: "hello"
-req_enum: ONE
-`,
-	}, {
-		desc: "required fields all set",
-		input: &pb2.Requireds{
-			ReqBool:     proto.Bool(false),
-			ReqSfixed64: proto.Int64(0),
-			ReqDouble:   proto.Float64(1.23),
-			ReqString:   proto.String(""),
-			ReqEnum:     pb2.Enum_ONE.Enum(),
-			ReqNested:   &pb2.Nested{},
-		},
-		want: `req_bool: false
-req_sfixed64: 0
-req_double: 1.23
-req_string: ""
-req_enum: ONE
-req_nested: {}
-`,
-	}, {
-		desc: "indirect required field",
-		input: &pb2.IndirectRequired{
-			OptNested: &pb2.NestedWithRequired{},
-		},
-		want:    "opt_nested: {}\n",
-		wantErr: true,
-	}, {
-		desc: "indirect required field with AllowPartial",
-		mo:   prototext.MarshalOptions{AllowPartial: true},
-		input: &pb2.IndirectRequired{
-			OptNested: &pb2.NestedWithRequired{},
-		},
-		want: "opt_nested: {}\n",
-	}, {
-		desc: "indirect required field in empty repeated",
-		input: &pb2.IndirectRequired{
-			RptNested: []*pb2.NestedWithRequired{},
-		},
-		want: "",
-	}, {
-		desc: "indirect required field in repeated",
-		input: &pb2.IndirectRequired{
-			RptNested: []*pb2.NestedWithRequired{
-				&pb2.NestedWithRequired{},
-			},
-		},
-		want:    "rpt_nested: {}\n",
-		wantErr: true,
-	}, {
-		desc: "indirect required field in repeated with AllowPartial",
-		mo:   prototext.MarshalOptions{AllowPartial: true},
-		input: &pb2.IndirectRequired{
-			RptNested: []*pb2.NestedWithRequired{
-				&pb2.NestedWithRequired{},
-			},
-		},
-		want: "rpt_nested: {}\n",
-	}, {
-		desc: "indirect required field in empty map",
-		input: &pb2.IndirectRequired{
-			StrToNested: map[string]*pb2.NestedWithRequired{},
-		},
-		want: "",
-	}, {
-		desc: "indirect required field in map",
-		input: &pb2.IndirectRequired{
-			StrToNested: map[string]*pb2.NestedWithRequired{
-				"fail": &pb2.NestedWithRequired{},
-			},
-		},
-		want: `str_to_nested: {
-  key: "fail"
-  value: {}
-}
-`,
-		wantErr: true,
-	}, {
-		desc: "indirect required field in map with AllowPartial",
-		mo:   prototext.MarshalOptions{AllowPartial: true},
-		input: &pb2.IndirectRequired{
-			StrToNested: map[string]*pb2.NestedWithRequired{
-				"fail": &pb2.NestedWithRequired{},
-			},
-		},
-		want: `str_to_nested: {
-  key: "fail"
-  value: {}
-}
-`,
-	}, {
-		desc: "indirect required field in oneof",
-		input: &pb2.IndirectRequired{
-			Union: &pb2.IndirectRequired_OneofNested{
-				OneofNested: &pb2.NestedWithRequired{},
-			},
-		},
-		want:    "oneof_nested: {}\n",
-		wantErr: true,
-	}, {
-		desc: "indirect required field in oneof with AllowPartial",
-		mo:   prototext.MarshalOptions{AllowPartial: true},
-		input: &pb2.IndirectRequired{
-			Union: &pb2.IndirectRequired_OneofNested{
-				OneofNested: &pb2.NestedWithRequired{},
-			},
-		},
-		want: "oneof_nested: {}\n",
-	}, {
-		desc: "unknown fields not printed",
-		input: func() proto.Message {
-			m := &pb2.Scalars{
-				OptString: proto.String("this message contains unknown fields"),
-			}
-			m.ProtoReflect().SetUnknown(protopack.Message{
-				protopack.Tag{101, protopack.VarintType}, protopack.Bool(true),
-				protopack.Tag{102, protopack.VarintType}, protopack.Varint(0xff),
-				protopack.Tag{103, protopack.Fixed32Type}, protopack.Uint32(47),
-				protopack.Tag{104, protopack.Fixed64Type}, protopack.Int64(0xdeadbeef),
-			}.Marshal())
-			return m
-		}(),
-		want: `opt_string: "this message contains unknown fields"
-`,
-	}, {
-		desc: "unknown varint and fixed types",
-		mo:   prototext.MarshalOptions{EmitUnknown: true},
-		input: func() proto.Message {
-			m := &pb2.Scalars{
-				OptString: proto.String("this message contains unknown fields"),
-			}
-			m.ProtoReflect().SetUnknown(protopack.Message{
-				protopack.Tag{101, protopack.VarintType}, protopack.Bool(true),
-				protopack.Tag{102, protopack.VarintType}, protopack.Varint(0xff),
-				protopack.Tag{103, protopack.Fixed32Type}, protopack.Uint32(0x47),
-				protopack.Tag{104, protopack.Fixed64Type}, protopack.Int64(0xdeadbeef),
-			}.Marshal())
-			return m
-		}(),
-		want: `opt_string: "this message contains unknown fields"
-101: 1
-102: 255
-103: 0x47
-104: 0xdeadbeef
-`,
-	}, {
-		desc: "unknown length-delimited",
-		mo:   prototext.MarshalOptions{EmitUnknown: true},
-		input: func() proto.Message {
-			m := new(pb2.Scalars)
-			m.ProtoReflect().SetUnknown(protopack.Message{
-				protopack.Tag{101, protopack.BytesType}, protopack.LengthPrefix{protopack.Bool(true), protopack.Bool(false)},
-				protopack.Tag{102, protopack.BytesType}, protopack.String("hello world"),
-				protopack.Tag{103, protopack.BytesType}, protopack.Bytes("\xe4\xb8\x96\xe7\x95\x8c"),
-			}.Marshal())
-			return m
-		}(),
-		want: `101: "\x01\x00"
-102: "hello world"
-103: "世界"
-`,
-	}, {
-		desc: "unknown group type",
-		mo:   prototext.MarshalOptions{EmitUnknown: true},
-		input: func() proto.Message {
-			m := new(pb2.Scalars)
-			m.ProtoReflect().SetUnknown(protopack.Message{
-				protopack.Tag{101, protopack.StartGroupType}, protopack.Tag{101, protopack.EndGroupType},
-				protopack.Tag{102, protopack.StartGroupType},
-				protopack.Tag{101, protopack.VarintType}, protopack.Bool(false),
-				protopack.Tag{102, protopack.BytesType}, protopack.String("inside a group"),
-				protopack.Tag{102, protopack.EndGroupType},
-			}.Marshal())
-			return m
-		}(),
-		want: `101: {}
-102: {
-  101: 0
-  102: "inside a group"
-}
-`,
-	}, {
-		desc: "unknown unpack repeated field",
-		mo:   prototext.MarshalOptions{EmitUnknown: true},
-		input: func() proto.Message {
-			m := new(pb2.Scalars)
-			m.ProtoReflect().SetUnknown(protopack.Message{
-				protopack.Tag{101, protopack.BytesType}, protopack.LengthPrefix{protopack.Bool(true), protopack.Bool(false), protopack.Bool(true)},
-				protopack.Tag{102, protopack.BytesType}, protopack.String("hello"),
-				protopack.Tag{101, protopack.VarintType}, protopack.Bool(true),
-				protopack.Tag{102, protopack.BytesType}, protopack.String("世界"),
-			}.Marshal())
-			return m
-		}(),
-		want: `101: "\x01\x00\x01"
-102: "hello"
-101: 1
-102: "世界"
-`,
-	}, {
-		desc: "extensions of non-repeated fields",
-		input: func() proto.Message {
-			m := &pb2.Extensions{
-				OptString: proto.String("non-extension field"),
-				OptBool:   proto.Bool(true),
-				OptInt32:  proto.Int32(42),
-			}
-			proto.SetExtension(m, pb2.E_OptExtBool, true)
-			proto.SetExtension(m, pb2.E_OptExtString, "extension field")
-			proto.SetExtension(m, pb2.E_OptExtEnum, pb2.Enum_TEN)
-			proto.SetExtension(m, pb2.E_OptExtNested, &pb2.Nested{
-				OptString: proto.String("nested in an extension"),
-				OptNested: &pb2.Nested{
-					OptString: proto.String("another nested in an extension"),
-				},
-			})
-			return m
-		}(),
-		want: `opt_string: "non-extension field"
-opt_bool: true
-opt_int32: 42
-[pb2.opt_ext_bool]: true
-[pb2.opt_ext_enum]: TEN
-[pb2.opt_ext_nested]: {
-  opt_string: "nested in an extension"
-  opt_nested: {
-    opt_string: "another nested in an extension"
-  }
-}
-[pb2.opt_ext_string]: "extension field"
-`,
-	}, {
-		desc: "proto2 extension field contains invalid UTF-8",
-		input: func() proto.Message {
-			m := &pb2.Extensions{}
-			proto.SetExtension(m, pb2.E_OptExtString, "abc\xff")
-			return m
-		}(),
-		want: `[pb2.opt_ext_string]: "abc\xff"
-`,
-	}, {
-		desc: "extension partial returns error",
-		input: func() proto.Message {
-			m := &pb2.Extensions{}
-			proto.SetExtension(m, pb2.E_OptExtPartial, &pb2.PartialRequired{
-				OptString: proto.String("partial1"),
-			})
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_OptExtPartial, &pb2.PartialRequired{
-				OptString: proto.String("partial2"),
-			})
-			return m
-		}(),
-		want: `[pb2.ExtensionsContainer.opt_ext_partial]: {
-  opt_string: "partial2"
-}
-[pb2.opt_ext_partial]: {
-  opt_string: "partial1"
-}
-`,
-		wantErr: true,
-	}, {
-		desc: "extension partial with AllowPartial",
-		mo:   prototext.MarshalOptions{AllowPartial: true},
-		input: func() proto.Message {
-			m := &pb2.Extensions{}
-			proto.SetExtension(m, pb2.E_OptExtPartial, &pb2.PartialRequired{
-				OptString: proto.String("partial1"),
-			})
-			return m
-		}(),
-		want: `[pb2.opt_ext_partial]: {
-  opt_string: "partial1"
-}
-`,
-	}, {
-		desc: "extensions of repeated fields",
-		input: func() proto.Message {
-			m := &pb2.Extensions{}
-			proto.SetExtension(m, pb2.E_RptExtEnum, []pb2.Enum{pb2.Enum_TEN, 101, pb2.Enum_ONE})
-			proto.SetExtension(m, pb2.E_RptExtFixed32, []uint32{42, 47})
-			proto.SetExtension(m, pb2.E_RptExtNested, []*pb2.Nested{
-				&pb2.Nested{OptString: proto.String("one")},
-				&pb2.Nested{OptString: proto.String("two")},
-				&pb2.Nested{OptString: proto.String("three")},
-			})
-			return m
-		}(),
-		want: `[pb2.rpt_ext_enum]: TEN
-[pb2.rpt_ext_enum]: 101
-[pb2.rpt_ext_enum]: ONE
-[pb2.rpt_ext_fixed32]: 42
-[pb2.rpt_ext_fixed32]: 47
-[pb2.rpt_ext_nested]: {
-  opt_string: "one"
-}
-[pb2.rpt_ext_nested]: {
-  opt_string: "two"
-}
-[pb2.rpt_ext_nested]: {
-  opt_string: "three"
-}
-`,
-	}, {
-		desc: "extensions of non-repeated fields in another message",
-		input: func() proto.Message {
-			m := &pb2.Extensions{}
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_OptExtBool, true)
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_OptExtString, "extension field")
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_OptExtEnum, pb2.Enum_TEN)
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_OptExtNested, &pb2.Nested{
-				OptString: proto.String("nested in an extension"),
-				OptNested: &pb2.Nested{
-					OptString: proto.String("another nested in an extension"),
-				},
-			})
-			return m
-		}(),
-		want: `[pb2.ExtensionsContainer.opt_ext_bool]: true
-[pb2.ExtensionsContainer.opt_ext_enum]: TEN
-[pb2.ExtensionsContainer.opt_ext_nested]: {
-  opt_string: "nested in an extension"
-  opt_nested: {
-    opt_string: "another nested in an extension"
-  }
-}
-[pb2.ExtensionsContainer.opt_ext_string]: "extension field"
-`,
-	}, {
-		desc: "extensions of repeated fields in another message",
-		input: func() proto.Message {
-			m := &pb2.Extensions{
-				OptString: proto.String("non-extension field"),
-				OptBool:   proto.Bool(true),
-				OptInt32:  proto.Int32(42),
-			}
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_RptExtEnum, []pb2.Enum{pb2.Enum_TEN, 101, pb2.Enum_ONE})
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_RptExtString, []string{"hello", "world"})
-			proto.SetExtension(m, pb2.E_ExtensionsContainer_RptExtNested, []*pb2.Nested{
-				&pb2.Nested{OptString: proto.String("one")},
-				&pb2.Nested{OptString: proto.String("two")},
-				&pb2.Nested{OptString: proto.String("three")},
-			})
-			return m
-		}(),
-		want: `opt_string: "non-extension field"
-opt_bool: true
-opt_int32: 42
-[pb2.ExtensionsContainer.rpt_ext_enum]: TEN
-[pb2.ExtensionsContainer.rpt_ext_enum]: 101
-[pb2.ExtensionsContainer.rpt_ext_enum]: ONE
-[pb2.ExtensionsContainer.rpt_ext_nested]: {
-  opt_string: "one"
-}
-[pb2.ExtensionsContainer.rpt_ext_nested]: {
-  opt_string: "two"
-}
-[pb2.ExtensionsContainer.rpt_ext_nested]: {
-  opt_string: "three"
-}
-[pb2.ExtensionsContainer.rpt_ext_string]: "hello"
-[pb2.ExtensionsContainer.rpt_ext_string]: "world"
-`,
-	}, {
-		desc: "MessageSet",
-		input: func() proto.Message {
-			m := &pb2.MessageSet{}
-			proto.SetExtension(m, pb2.E_MessageSetExtension_MessageSetExtension, &pb2.MessageSetExtension{
-				OptString: proto.String("a messageset extension"),
-			})
-			proto.SetExtension(m, pb2.E_MessageSetExtension_NotMessageSetExtension, &pb2.MessageSetExtension{
-				OptString: proto.String("not a messageset extension"),
-			})
-			proto.SetExtension(m, pb2.E_MessageSetExtension_ExtNested, &pb2.Nested{
-				OptString: proto.String("just a regular extension"),
-			})
-			return m
-		}(),
-		want: `[pb2.MessageSetExtension.ext_nested]: {
-  opt_string: "just a regular extension"
-}
-[pb2.MessageSetExtension]: {
-  opt_string: "a messageset extension"
-}
-[pb2.MessageSetExtension.not_message_set_extension]: {
-  opt_string: "not a messageset extension"
-}
-`,
-		skip: !flags.ProtoLegacy,
-	}, {
-		desc: "not real MessageSet 1",
-		input: func() proto.Message {
-			m := &pb2.FakeMessageSet{}
-			proto.SetExtension(m, pb2.E_FakeMessageSetExtension_MessageSetExtension, &pb2.FakeMessageSetExtension{
-				OptString: proto.String("not a messageset extension"),
-			})
-			return m
-		}(),
-		want: `[pb2.FakeMessageSetExtension.message_set_extension]: {
-  opt_string: "not a messageset extension"
-}
-`,
-		skip: !flags.ProtoLegacy,
-	}, {
-		desc: "not real MessageSet 2",
-		input: func() proto.Message {
-			m := &pb2.MessageSet{}
-			proto.SetExtension(m, pb2.E_MessageSetExtension, &pb2.FakeMessageSetExtension{
-				OptString: proto.String("another not a messageset extension"),
-			})
-			return m
-		}(),
-		want: `[pb2.message_set_extension]: {
-  opt_string: "another not a messageset extension"
-}
-`,
-		skip: !flags.ProtoLegacy,
-	}, {
-		desc: "Any not expanded",
-		mo: prototext.MarshalOptions{
-			Resolver: new(preg.Types),
-		},
-		input: func() proto.Message {
-			m := &pb2.Nested{
-				OptString: proto.String("embedded inside Any"),
-				OptNested: &pb2.Nested{
-					OptString: proto.String("inception"),
-				},
-			}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: "pb2.Nested",
-				Value:   b,
-			}
-		}(),
-		want: `type_url: "pb2.Nested"
-value: "\n\x13embedded inside Any\x12\x0b\n\tinception"
-`,
-	}, {
-		desc: "Any expanded",
-		input: func() proto.Message {
-			m := &pb2.Nested{
-				OptString: proto.String("embedded inside Any"),
-				OptNested: &pb2.Nested{
-					OptString: proto.String("inception"),
-				},
-			}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: "foo/pb2.Nested",
-				Value:   b,
-			}
-		}(),
-		want: `[foo/pb2.Nested]: {
-  opt_string: "embedded inside Any"
-  opt_nested: {
-    opt_string: "inception"
-  }
-}
-`,
-	}, {
-		desc: "Any expanded with missing required",
-		input: func() proto.Message {
-			m := &pb2.PartialRequired{
-				OptString: proto.String("embedded inside Any"),
-			}
-			b, err := proto.MarshalOptions{
-				AllowPartial:  true,
-				Deterministic: true,
-			}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &anypb.Any{
-				TypeUrl: string(m.ProtoReflect().Descriptor().FullName()),
-				Value:   b,
-			}
-		}(),
-		want: `[pb2.PartialRequired]: {
-  opt_string: "embedded inside Any"
-}
-`,
-	}, {
-		desc: "Any with invalid value",
-		input: &anypb.Any{
-			TypeUrl: "foo/pb2.Nested",
-			Value:   []byte("\x80"),
-		},
-		want: `type_url: "foo/pb2.Nested"
-value: "\x80"
-`,
-	}, {
-		desc: "Any expanded in another message",
-		input: func() *pb2.KnownTypes {
-			m1 := &pb2.Nested{
-				OptString: proto.String("message inside Any of another Any field"),
-			}
-			b1, err := proto.MarshalOptions{Deterministic: true}.Marshal(m1)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			m2 := &anypb.Any{
-				TypeUrl: "pb2.Nested",
-				Value:   b1,
-			}
-			b2, err := proto.MarshalOptions{Deterministic: true}.Marshal(m2)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &pb2.KnownTypes{
-				OptAny: &anypb.Any{
-					TypeUrl: "google.protobuf.Any",
-					Value:   b2,
-				},
-			}
-		}(),
-		want: `opt_any: {
-  [google.protobuf.Any]: {
-    [pb2.Nested]: {
-      opt_string: "message inside Any of another Any field"
-    }
-  }
-}
-`,
-	}, {
-		desc: "Any expanded with invalid UTF-8 in proto2",
-		input: func() *pb2.KnownTypes {
-			m := &pb2.Nested{
-				OptString: proto.String("invalid UTF-8 abc\xff"),
-			}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &pb2.KnownTypes{
-				OptAny: &anypb.Any{
-					TypeUrl: "pb2.Nested",
-					Value:   b,
-				},
-			}
-		}(),
-		want: `opt_any: {
-  [pb2.Nested]: {
-    opt_string: "invalid UTF-8 abc\xff"
-  }
-}
-`,
-	}, {
-		desc: "Any not expanded due to invalid data",
-		mo:   prototext.MarshalOptions{EmitASCII: true},
-		input: func() *pb2.KnownTypes {
-			return &pb2.KnownTypes{
-				OptAny: &anypb.Any{
-					TypeUrl: "pb3.Scalar",
-					Value:   []byte("\xde\xad\xbe\xef"),
-				},
-			}
-		}(),
-		want: `opt_any: {
-  type_url: "pb3.Scalar"
-  value: "\u07ad\xbe\xef"
-}
-`,
-	}, {
-		desc: "Any inside Any expanded",
-		input: func() *pb2.KnownTypes {
-			m1 := &pb2.Nested{
-				OptString: proto.String("invalid UTF-8 abc\xff"),
-			}
-			b1, err := proto.MarshalOptions{Deterministic: true}.Marshal(m1)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			m2 := &anypb.Any{
-				TypeUrl: "pb2.Nested",
-				Value:   b1,
-			}
-			b2, err := proto.MarshalOptions{Deterministic: true}.Marshal(m2)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &pb2.KnownTypes{
-				OptAny: &anypb.Any{
-					TypeUrl: "google.protobuf.Any",
-					Value:   b2,
-				},
-			}
-		}(),
-		want: `opt_any: {
-  [google.protobuf.Any]: {
-    [pb2.Nested]: {
-      opt_string: "invalid UTF-8 abc\xff"
-    }
-  }
-}
-`,
-	}, {
-		desc: "Any inside Any not expanded due to invalid data",
-		mo:   prototext.MarshalOptions{EmitASCII: true},
-		input: func() *pb2.KnownTypes {
-			m := &anypb.Any{
-				TypeUrl: "pb2.Nested",
-				Value:   []byte("\xde\xad\xbe\xef"),
-			}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &pb2.KnownTypes{
-				OptAny: &anypb.Any{
-					TypeUrl: "google.protobuf.Any",
-					Value:   b,
-				},
-			}
-		}(),
-		want: `opt_any: {
-  [google.protobuf.Any]: {
-    type_url: "pb2.Nested"
-    value: "\u07ad\xbe\xef"
-  }
-}
-`,
-	}}
-
-	for _, tt := range tests {
-		tt := tt
-		if tt.skip {
-			continue
-		}
-		t.Run(tt.desc, func(t *testing.T) {
-			// Use 2-space indentation on all MarshalOptions.
-			tt.mo.Indent = "  "
-			b, err := tt.mo.Marshal(tt.input)
-			if err != nil && !tt.wantErr {
-				t.Errorf("Marshal() returned error: %v\n", err)
-			}
-			if err == nil && tt.wantErr {
-				t.Error("Marshal() got nil error, want error\n")
-			}
-			got := string(b)
-			if tt.want != "" && got != tt.want {
-				t.Errorf("Marshal()\n<got>\n%v\n<want>\n%v\n", got, tt.want)
-				if diff := cmp.Diff(tt.want, got); diff != "" {
-					t.Errorf("Marshal() diff -want +got\n%v\n", diff)
-				}
-			}
-		})
-	}
-}
diff --git a/encoding/prototext/other_test.go b/encoding/prototext/other_test.go
deleted file mode 100644
index cb0f35f..0000000
--- a/encoding/prototext/other_test.go
+++ /dev/null
@@ -1,238 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package prototext_test
-
-import (
-	"testing"
-
-	"google.golang.org/protobuf/encoding/prototext"
-	"google.golang.org/protobuf/proto"
-	preg "google.golang.org/protobuf/reflect/protoregistry"
-
-	pb2 "google.golang.org/protobuf/internal/testprotos/textpb2"
-	"google.golang.org/protobuf/types/known/anypb"
-	"google.golang.org/protobuf/types/known/durationpb"
-	"google.golang.org/protobuf/types/known/emptypb"
-	"google.golang.org/protobuf/types/known/structpb"
-	"google.golang.org/protobuf/types/known/timestamppb"
-	"google.golang.org/protobuf/types/known/wrapperspb"
-)
-
-func TestRoundTrip(t *testing.T) {
-	tests := []struct {
-		desc     string
-		resolver *preg.Types
-		message  proto.Message
-	}{{
-		desc: "well-known type fields set to empty messages",
-		message: &pb2.KnownTypes{
-			OptBool:      &wrapperspb.BoolValue{},
-			OptInt32:     &wrapperspb.Int32Value{},
-			OptInt64:     &wrapperspb.Int64Value{},
-			OptUint32:    &wrapperspb.UInt32Value{},
-			OptUint64:    &wrapperspb.UInt64Value{},
-			OptFloat:     &wrapperspb.FloatValue{},
-			OptDouble:    &wrapperspb.DoubleValue{},
-			OptString:    &wrapperspb.StringValue{},
-			OptBytes:     &wrapperspb.BytesValue{},
-			OptDuration:  &durationpb.Duration{},
-			OptTimestamp: &timestamppb.Timestamp{},
-			OptStruct:    &structpb.Struct{},
-			OptList:      &structpb.ListValue{},
-			OptValue:     &structpb.Value{},
-			OptEmpty:     &emptypb.Empty{},
-			OptAny:       &anypb.Any{},
-		},
-	}, {
-		desc: "well-known type scalar fields",
-		message: &pb2.KnownTypes{
-			OptBool: &wrapperspb.BoolValue{
-				Value: true,
-			},
-			OptInt32: &wrapperspb.Int32Value{
-				Value: -42,
-			},
-			OptInt64: &wrapperspb.Int64Value{
-				Value: -42,
-			},
-			OptUint32: &wrapperspb.UInt32Value{
-				Value: 0xff,
-			},
-			OptUint64: &wrapperspb.UInt64Value{
-				Value: 0xffff,
-			},
-			OptFloat: &wrapperspb.FloatValue{
-				Value: 1.234,
-			},
-			OptDouble: &wrapperspb.DoubleValue{
-				Value: 1.23e308,
-			},
-			OptString: &wrapperspb.StringValue{
-				Value: "谷歌",
-			},
-			OptBytes: &wrapperspb.BytesValue{
-				Value: []byte("\xe8\xb0\xb7\xe6\xad\x8c"),
-			},
-		},
-	}, {
-		desc: "well-known type time-related fields",
-		message: &pb2.KnownTypes{
-			OptDuration: &durationpb.Duration{
-				Seconds: -3600,
-				Nanos:   -123,
-			},
-			OptTimestamp: &timestamppb.Timestamp{
-				Seconds: 1257894000,
-				Nanos:   123,
-			},
-		},
-	}, {
-		desc: "Struct field and different Value types",
-		message: &pb2.KnownTypes{
-			OptStruct: &structpb.Struct{
-				Fields: map[string]*structpb.Value{
-					"bool": &structpb.Value{
-						Kind: &structpb.Value_BoolValue{
-							BoolValue: true,
-						},
-					},
-					"double": &structpb.Value{
-						Kind: &structpb.Value_NumberValue{
-							NumberValue: 3.1415,
-						},
-					},
-					"null": &structpb.Value{
-						Kind: &structpb.Value_NullValue{
-							NullValue: structpb.NullValue_NULL_VALUE,
-						},
-					},
-					"string": &structpb.Value{
-						Kind: &structpb.Value_StringValue{
-							StringValue: "string",
-						},
-					},
-					"struct": &structpb.Value{
-						Kind: &structpb.Value_StructValue{
-							StructValue: &structpb.Struct{
-								Fields: map[string]*structpb.Value{
-									"bool": &structpb.Value{
-										Kind: &structpb.Value_BoolValue{
-											BoolValue: false,
-										},
-									},
-								},
-							},
-						},
-					},
-					"list": &structpb.Value{
-						Kind: &structpb.Value_ListValue{
-							ListValue: &structpb.ListValue{
-								Values: []*structpb.Value{
-									{
-										Kind: &structpb.Value_BoolValue{
-											BoolValue: false,
-										},
-									},
-									{
-										Kind: &structpb.Value_StringValue{
-											StringValue: "hello",
-										},
-									},
-								},
-							},
-						},
-					},
-				},
-			},
-		},
-	}, {
-		desc:     "Any field without registered type",
-		resolver: new(preg.Types),
-		message: func() proto.Message {
-			m := &pb2.Nested{
-				OptString: proto.String("embedded inside Any"),
-				OptNested: &pb2.Nested{
-					OptString: proto.String("inception"),
-				},
-			}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &pb2.KnownTypes{
-				OptAny: &anypb.Any{
-					TypeUrl: string(m.ProtoReflect().Descriptor().FullName()),
-					Value:   b,
-				},
-			}
-		}(),
-	}, {
-		desc: "Any field with registered type",
-		message: func() *pb2.KnownTypes {
-			m := &pb2.Nested{
-				OptString: proto.String("embedded inside Any"),
-				OptNested: &pb2.Nested{
-					OptString: proto.String("inception"),
-				},
-			}
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &pb2.KnownTypes{
-				OptAny: &anypb.Any{
-					TypeUrl: string(m.ProtoReflect().Descriptor().FullName()),
-					Value:   b,
-				},
-			}
-		}(),
-	}, {
-		desc: "Any field containing Any message",
-		message: func() *pb2.KnownTypes {
-			m1 := &pb2.Nested{
-				OptString: proto.String("message inside Any of another Any field"),
-			}
-			b1, err := proto.MarshalOptions{Deterministic: true}.Marshal(m1)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			m2 := &anypb.Any{
-				TypeUrl: "pb2.Nested",
-				Value:   b1,
-			}
-			b2, err := proto.MarshalOptions{Deterministic: true}.Marshal(m2)
-			if err != nil {
-				t.Fatalf("error in binary marshaling message for Any.value: %v", err)
-			}
-			return &pb2.KnownTypes{
-				OptAny: &anypb.Any{
-					TypeUrl: "google.protobuf.Any",
-					Value:   b2,
-				},
-			}
-		}(),
-	}}
-
-	for _, tt := range tests {
-		tt := tt
-		t.Run(tt.desc, func(t *testing.T) {
-			t.Parallel()
-			b, err := prototext.MarshalOptions{Resolver: tt.resolver}.Marshal(tt.message)
-			if err != nil {
-				t.Errorf("Marshal() returned error: %v\n\n", err)
-			}
-
-			gotMessage := new(pb2.KnownTypes)
-			err = prototext.UnmarshalOptions{Resolver: tt.resolver}.Unmarshal(b, gotMessage)
-			if err != nil {
-				t.Errorf("Unmarshal() returned error: %v\n\n", err)
-			}
-
-			if !proto.Equal(gotMessage, tt.message) {
-				t.Errorf("Unmarshal()\n<got>\n%v\n<want>\n%v\n", gotMessage, tt.message)
-			}
-		})
-	}
-}
diff --git a/encoding/protowire/wire.go b/encoding/protowire/wire.go
deleted file mode 100644
index 9c61112..0000000
--- a/encoding/protowire/wire.go
+++ /dev/null
@@ -1,547 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package protowire parses and formats the raw wire encoding.
-// See https://developers.google.com/protocol-buffers/docs/encoding.
-//
-// For marshaling and unmarshaling entire protobuf messages,
-// use the "google.golang.org/protobuf/proto" package instead.
-package protowire
-
-import (
-	"io"
-	"math"
-	"math/bits"
-
-	"google.golang.org/protobuf/internal/errors"
-)
-
-// Number represents the field number.
-type Number int32
-
-const (
-	MinValidNumber        Number = 1
-	FirstReservedNumber   Number = 19000
-	LastReservedNumber    Number = 19999
-	MaxValidNumber        Number = 1<<29 - 1
-	DefaultRecursionLimit        = 10000
-)
-
-// IsValid reports whether the field number is semantically valid.
-//
-// Note that while numbers within the reserved range are semantically invalid,
-// they are syntactically valid in the wire format.
-// Implementations may treat records with reserved field numbers as unknown.
-func (n Number) IsValid() bool {
-	return MinValidNumber <= n && n < FirstReservedNumber || LastReservedNumber < n && n <= MaxValidNumber
-}
-
-// Type represents the wire type.
-type Type int8
-
-const (
-	VarintType     Type = 0
-	Fixed32Type    Type = 5
-	Fixed64Type    Type = 1
-	BytesType      Type = 2
-	StartGroupType Type = 3
-	EndGroupType   Type = 4
-)
-
-const (
-	_ = -iota
-	errCodeTruncated
-	errCodeFieldNumber
-	errCodeOverflow
-	errCodeReserved
-	errCodeEndGroup
-	errCodeRecursionDepth
-)
-
-var (
-	errFieldNumber = errors.New("invalid field number")
-	errOverflow    = errors.New("variable length integer overflow")
-	errReserved    = errors.New("cannot parse reserved wire type")
-	errEndGroup    = errors.New("mismatching end group marker")
-	errParse       = errors.New("parse error")
-)
-
-// ParseError converts an error code into an error value.
-// This returns nil if n is a non-negative number.
-func ParseError(n int) error {
-	if n >= 0 {
-		return nil
-	}
-	switch n {
-	case errCodeTruncated:
-		return io.ErrUnexpectedEOF
-	case errCodeFieldNumber:
-		return errFieldNumber
-	case errCodeOverflow:
-		return errOverflow
-	case errCodeReserved:
-		return errReserved
-	case errCodeEndGroup:
-		return errEndGroup
-	default:
-		return errParse
-	}
-}
-
-// ConsumeField parses an entire field record (both tag and value) and returns
-// the field number, the wire type, and the total length.
-// This returns a negative length upon an error (see ParseError).
-//
-// The total length includes the tag header and the end group marker (if the
-// field is a group).
-func ConsumeField(b []byte) (Number, Type, int) {
-	num, typ, n := ConsumeTag(b)
-	if n < 0 {
-		return 0, 0, n // forward error code
-	}
-	m := ConsumeFieldValue(num, typ, b[n:])
-	if m < 0 {
-		return 0, 0, m // forward error code
-	}
-	return num, typ, n + m
-}
-
-// ConsumeFieldValue parses a field value and returns its length.
-// This assumes that the field Number and wire Type have already been parsed.
-// This returns a negative length upon an error (see ParseError).
-//
-// When parsing a group, the length includes the end group marker and
-// the end group is verified to match the starting field number.
-func ConsumeFieldValue(num Number, typ Type, b []byte) (n int) {
-	return consumeFieldValueD(num, typ, b, DefaultRecursionLimit)
-}
-
-func consumeFieldValueD(num Number, typ Type, b []byte, depth int) (n int) {
-	switch typ {
-	case VarintType:
-		_, n = ConsumeVarint(b)
-		return n
-	case Fixed32Type:
-		_, n = ConsumeFixed32(b)
-		return n
-	case Fixed64Type:
-		_, n = ConsumeFixed64(b)
-		return n
-	case BytesType:
-		_, n = ConsumeBytes(b)
-		return n
-	case StartGroupType:
-		if depth < 0 {
-			return errCodeRecursionDepth
-		}
-		n0 := len(b)
-		for {
-			num2, typ2, n := ConsumeTag(b)
-			if n < 0 {
-				return n // forward error code
-			}
-			b = b[n:]
-			if typ2 == EndGroupType {
-				if num != num2 {
-					return errCodeEndGroup
-				}
-				return n0 - len(b)
-			}
-
-			n = consumeFieldValueD(num2, typ2, b, depth-1)
-			if n < 0 {
-				return n // forward error code
-			}
-			b = b[n:]
-		}
-	case EndGroupType:
-		return errCodeEndGroup
-	default:
-		return errCodeReserved
-	}
-}
-
-// AppendTag encodes num and typ as a varint-encoded tag and appends it to b.
-func AppendTag(b []byte, num Number, typ Type) []byte {
-	return AppendVarint(b, EncodeTag(num, typ))
-}
-
-// ConsumeTag parses b as a varint-encoded tag, reporting its length.
-// This returns a negative length upon an error (see ParseError).
-func ConsumeTag(b []byte) (Number, Type, int) {
-	v, n := ConsumeVarint(b)
-	if n < 0 {
-		return 0, 0, n // forward error code
-	}
-	num, typ := DecodeTag(v)
-	if num < MinValidNumber {
-		return 0, 0, errCodeFieldNumber
-	}
-	return num, typ, n
-}
-
-func SizeTag(num Number) int {
-	return SizeVarint(EncodeTag(num, 0)) // wire type has no effect on size
-}
-
-// AppendVarint appends v to b as a varint-encoded uint64.
-func AppendVarint(b []byte, v uint64) []byte {
-	switch {
-	case v < 1<<7:
-		b = append(b, byte(v))
-	case v < 1<<14:
-		b = append(b,
-			byte((v>>0)&0x7f|0x80),
-			byte(v>>7))
-	case v < 1<<21:
-		b = append(b,
-			byte((v>>0)&0x7f|0x80),
-			byte((v>>7)&0x7f|0x80),
-			byte(v>>14))
-	case v < 1<<28:
-		b = append(b,
-			byte((v>>0)&0x7f|0x80),
-			byte((v>>7)&0x7f|0x80),
-			byte((v>>14)&0x7f|0x80),
-			byte(v>>21))
-	case v < 1<<35:
-		b = append(b,
-			byte((v>>0)&0x7f|0x80),
-			byte((v>>7)&0x7f|0x80),
-			byte((v>>14)&0x7f|0x80),
-			byte((v>>21)&0x7f|0x80),
-			byte(v>>28))
-	case v < 1<<42:
-		b = append(b,
-			byte((v>>0)&0x7f|0x80),
-			byte((v>>7)&0x7f|0x80),
-			byte((v>>14)&0x7f|0x80),
-			byte((v>>21)&0x7f|0x80),
-			byte((v>>28)&0x7f|0x80),
-			byte(v>>35))
-	case v < 1<<49:
-		b = append(b,
-			byte((v>>0)&0x7f|0x80),
-			byte((v>>7)&0x7f|0x80),
-			byte((v>>14)&0x7f|0x80),
-			byte((v>>21)&0x7f|0x80),
-			byte((v>>28)&0x7f|0x80),
-			byte((v>>35)&0x7f|0x80),
-			byte(v>>42))
-	case v < 1<<56:
-		b = append(b,
-			byte((v>>0)&0x7f|0x80),
-			byte((v>>7)&0x7f|0x80),
-			byte((v>>14)&0x7f|0x80),
-			byte((v>>21)&0x7f|0x80),
-			byte((v>>28)&0x7f|0x80),
-			byte((v>>35)&0x7f|0x80),
-			byte((v>>42)&0x7f|0x80),
-			byte(v>>49))
-	case v < 1<<63:
-		b = append(b,
-			byte((v>>0)&0x7f|0x80),
-			byte((v>>7)&0x7f|0x80),
-			byte((v>>14)&0x7f|0x80),
-			byte((v>>21)&0x7f|0x80),
-			byte((v>>28)&0x7f|0x80),
-			byte((v>>35)&0x7f|0x80),
-			byte((v>>42)&0x7f|0x80),
-			byte((v>>49)&0x7f|0x80),
-			byte(v>>56))
-	default:
-		b = append(b,
-			byte((v>>0)&0x7f|0x80),
-			byte((v>>7)&0x7f|0x80),
-			byte((v>>14)&0x7f|0x80),
-			byte((v>>21)&0x7f|0x80),
-			byte((v>>28)&0x7f|0x80),
-			byte((v>>35)&0x7f|0x80),
-			byte((v>>42)&0x7f|0x80),
-			byte((v>>49)&0x7f|0x80),
-			byte((v>>56)&0x7f|0x80),
-			1)
-	}
-	return b
-}
-
-// ConsumeVarint parses b as a varint-encoded uint64, reporting its length.
-// This returns a negative length upon an error (see ParseError).
-func ConsumeVarint(b []byte) (v uint64, n int) {
-	var y uint64
-	if len(b) <= 0 {
-		return 0, errCodeTruncated
-	}
-	v = uint64(b[0])
-	if v < 0x80 {
-		return v, 1
-	}
-	v -= 0x80
-
-	if len(b) <= 1 {
-		return 0, errCodeTruncated
-	}
-	y = uint64(b[1])
-	v += y << 7
-	if y < 0x80 {
-		return v, 2
-	}
-	v -= 0x80 << 7
-
-	if len(b) <= 2 {
-		return 0, errCodeTruncated
-	}
-	y = uint64(b[2])
-	v += y << 14
-	if y < 0x80 {
-		return v, 3
-	}
-	v -= 0x80 << 14
-
-	if len(b) <= 3 {
-		return 0, errCodeTruncated
-	}
-	y = uint64(b[3])
-	v += y << 21
-	if y < 0x80 {
-		return v, 4
-	}
-	v -= 0x80 << 21
-
-	if len(b) <= 4 {
-		return 0, errCodeTruncated
-	}
-	y = uint64(b[4])
-	v += y << 28
-	if y < 0x80 {
-		return v, 5
-	}
-	v -= 0x80 << 28
-
-	if len(b) <= 5 {
-		return 0, errCodeTruncated
-	}
-	y = uint64(b[5])
-	v += y << 35
-	if y < 0x80 {
-		return v, 6
-	}
-	v -= 0x80 << 35
-
-	if len(b) <= 6 {
-		return 0, errCodeTruncated
-	}
-	y = uint64(b[6])
-	v += y << 42
-	if y < 0x80 {
-		return v, 7
-	}
-	v -= 0x80 << 42
-
-	if len(b) <= 7 {
-		return 0, errCodeTruncated
-	}
-	y = uint64(b[7])
-	v += y << 49
-	if y < 0x80 {
-		return v, 8
-	}
-	v -= 0x80 << 49
-
-	if len(b) <= 8 {
-		return 0, errCodeTruncated
-	}
-	y = uint64(b[8])
-	v += y << 56
-	if y < 0x80 {
-		return v, 9
-	}
-	v -= 0x80 << 56
-
-	if len(b) <= 9 {
-		return 0, errCodeTruncated
-	}
-	y = uint64(b[9])
-	v += y << 63
-	if y < 2 {
-		return v, 10
-	}
-	return 0, errCodeOverflow
-}
-
-// SizeVarint returns the encoded size of a varint.
-// The size is guaranteed to be within 1 and 10, inclusive.
-func SizeVarint(v uint64) int {
-	// This computes 1 + (bits.Len64(v)-1)/7.
-	// 9/64 is a good enough approximation of 1/7
-	return int(9*uint32(bits.Len64(v))+64) / 64
-}
-
-// AppendFixed32 appends v to b as a little-endian uint32.
-func AppendFixed32(b []byte, v uint32) []byte {
-	return append(b,
-		byte(v>>0),
-		byte(v>>8),
-		byte(v>>16),
-		byte(v>>24))
-}
-
-// ConsumeFixed32 parses b as a little-endian uint32, reporting its length.
-// This returns a negative length upon an error (see ParseError).
-func ConsumeFixed32(b []byte) (v uint32, n int) {
-	if len(b) < 4 {
-		return 0, errCodeTruncated
-	}
-	v = uint32(b[0])<<0 | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24
-	return v, 4
-}
-
-// SizeFixed32 returns the encoded size of a fixed32; which is always 4.
-func SizeFixed32() int {
-	return 4
-}
-
-// AppendFixed64 appends v to b as a little-endian uint64.
-func AppendFixed64(b []byte, v uint64) []byte {
-	return append(b,
-		byte(v>>0),
-		byte(v>>8),
-		byte(v>>16),
-		byte(v>>24),
-		byte(v>>32),
-		byte(v>>40),
-		byte(v>>48),
-		byte(v>>56))
-}
-
-// ConsumeFixed64 parses b as a little-endian uint64, reporting its length.
-// This returns a negative length upon an error (see ParseError).
-func ConsumeFixed64(b []byte) (v uint64, n int) {
-	if len(b) < 8 {
-		return 0, errCodeTruncated
-	}
-	v = uint64(b[0])<<0 | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56
-	return v, 8
-}
-
-// SizeFixed64 returns the encoded size of a fixed64; which is always 8.
-func SizeFixed64() int {
-	return 8
-}
-
-// AppendBytes appends v to b as a length-prefixed bytes value.
-func AppendBytes(b []byte, v []byte) []byte {
-	return append(AppendVarint(b, uint64(len(v))), v...)
-}
-
-// ConsumeBytes parses b as a length-prefixed bytes value, reporting its length.
-// This returns a negative length upon an error (see ParseError).
-func ConsumeBytes(b []byte) (v []byte, n int) {
-	m, n := ConsumeVarint(b)
-	if n < 0 {
-		return nil, n // forward error code
-	}
-	if m > uint64(len(b[n:])) {
-		return nil, errCodeTruncated
-	}
-	return b[n:][:m], n + int(m)
-}
-
-// SizeBytes returns the encoded size of a length-prefixed bytes value,
-// given only the length.
-func SizeBytes(n int) int {
-	return SizeVarint(uint64(n)) + n
-}
-
-// AppendString appends v to b as a length-prefixed bytes value.
-func AppendString(b []byte, v string) []byte {
-	return append(AppendVarint(b, uint64(len(v))), v...)
-}
-
-// ConsumeString parses b as a length-prefixed bytes value, reporting its length.
-// This returns a negative length upon an error (see ParseError).
-func ConsumeString(b []byte) (v string, n int) {
-	bb, n := ConsumeBytes(b)
-	return string(bb), n
-}
-
-// AppendGroup appends v to b as group value, with a trailing end group marker.
-// The value v must not contain the end marker.
-func AppendGroup(b []byte, num Number, v []byte) []byte {
-	return AppendVarint(append(b, v...), EncodeTag(num, EndGroupType))
-}
-
-// ConsumeGroup parses b as a group value until the trailing end group marker,
-// and verifies that the end marker matches the provided num. The value v
-// does not contain the end marker, while the length does contain the end marker.
-// This returns a negative length upon an error (see ParseError).
-func ConsumeGroup(num Number, b []byte) (v []byte, n int) {
-	n = ConsumeFieldValue(num, StartGroupType, b)
-	if n < 0 {
-		return nil, n // forward error code
-	}
-	b = b[:n]
-
-	// Truncate off end group marker, but need to handle denormalized varints.
-	// Assuming end marker is never 0 (which is always the case since
-	// EndGroupType is non-zero), we can truncate all trailing bytes where the
-	// lower 7 bits are all zero (implying that the varint is denormalized).
-	for len(b) > 0 && b[len(b)-1]&0x7f == 0 {
-		b = b[:len(b)-1]
-	}
-	b = b[:len(b)-SizeTag(num)]
-	return b, n
-}
-
-// SizeGroup returns the encoded size of a group, given only the length.
-func SizeGroup(num Number, n int) int {
-	return n + SizeTag(num)
-}
-
-// DecodeTag decodes the field Number and wire Type from its unified form.
-// The Number is -1 if the decoded field number overflows int32.
-// Other than overflow, this does not check for field number validity.
-func DecodeTag(x uint64) (Number, Type) {
-	// NOTE: MessageSet allows for larger field numbers than normal.
-	if x>>3 > uint64(math.MaxInt32) {
-		return -1, 0
-	}
-	return Number(x >> 3), Type(x & 7)
-}
-
-// EncodeTag encodes the field Number and wire Type into its unified form.
-func EncodeTag(num Number, typ Type) uint64 {
-	return uint64(num)<<3 | uint64(typ&7)
-}
-
-// DecodeZigZag decodes a zig-zag-encoded uint64 as an int64.
-//	Input:  {…,  5,  3,  1,  0,  2,  4,  6, …}
-//	Output: {…, -3, -2, -1,  0, +1, +2, +3, …}
-func DecodeZigZag(x uint64) int64 {
-	return int64(x>>1) ^ int64(x)<<63>>63
-}
-
-// EncodeZigZag encodes an int64 as a zig-zag-encoded uint64.
-//	Input:  {…, -3, -2, -1,  0, +1, +2, +3, …}
-//	Output: {…,  5,  3,  1,  0,  2,  4,  6, …}
-func EncodeZigZag(x int64) uint64 {
-	return uint64(x<<1) ^ uint64(x>>63)
-}
-
-// DecodeBool decodes a uint64 as a bool.
-//	Input:  {    0,    1,    2, …}
-//	Output: {false, true, true, …}
-func DecodeBool(x uint64) bool {
-	return x != 0
-}
-
-// EncodeBool encodes a bool as a uint64.
-//	Input:  {false, true}
-//	Output: {    0,    1}
-func EncodeBool(x bool) uint64 {
-	if x {
-		return 1
-	}
-	return 0
-}
diff --git a/encoding/protowire/wire_test.go b/encoding/protowire/wire_test.go
deleted file mode 100644
index 10ec7f8..0000000
--- a/encoding/protowire/wire_test.go
+++ /dev/null
@@ -1,680 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protowire
-
-import (
-	"bytes"
-	"encoding/hex"
-	"io"
-	"math"
-	"strings"
-	"testing"
-)
-
-type (
-	testOps struct {
-		// appendOps is a sequence of append operations, each appending to
-		// the output of the previous append operation.
-		appendOps []appendOp
-
-		// wantRaw (if not nil) is the bytes that the appendOps should produce.
-		wantRaw []byte
-
-		// consumeOps are a sequence of consume operations, each consuming the
-		// remaining output after the previous consume operation.
-		// The first consume operation starts with the output of appendOps.
-		consumeOps []consumeOp
-	}
-
-	// appendOp represents an Append operation.
-	appendOp  = interface{}
-	appendTag struct {
-		inNum  Number
-		inType Type
-	}
-	appendVarint struct {
-		inVal uint64
-	}
-	appendFixed32 struct {
-		inVal uint32
-	}
-	appendFixed64 struct {
-		inVal uint64
-	}
-	appendBytes struct {
-		inVal []byte
-	}
-	appendGroup struct {
-		inNum Number
-		inVal []byte
-	}
-	appendRaw []byte
-
-	// consumeOp represents an Consume operation.
-	consumeOp    = interface{}
-	consumeField struct {
-		wantNum  Number
-		wantType Type
-		wantCnt  int
-		wantErr  error
-	}
-	consumeFieldValue struct {
-		inNum   Number
-		inType  Type
-		wantCnt int
-		wantErr error
-	}
-	consumeTag struct {
-		wantNum  Number
-		wantType Type
-		wantCnt  int
-		wantErr  error
-	}
-	consumeVarint struct {
-		wantVal uint64
-		wantCnt int
-		wantErr error
-	}
-	consumeFixed32 struct {
-		wantVal uint32
-		wantCnt int
-		wantErr error
-	}
-	consumeFixed64 struct {
-		wantVal uint64
-		wantCnt int
-		wantErr error
-	}
-	consumeBytes struct {
-		wantVal []byte
-		wantCnt int
-		wantErr error
-	}
-	consumeGroup struct {
-		inNum   Number
-		wantVal []byte
-		wantCnt int
-		wantErr error
-	}
-
-	ops []interface{}
-)
-
-// dhex decodes a hex-string and returns the bytes and panics if s is invalid.
-func dhex(s string) []byte {
-	b, err := hex.DecodeString(s)
-	if err != nil {
-		panic(err)
-	}
-	return b
-}
-
-func TestTag(t *testing.T) {
-	runTests(t, []testOps{{
-		appendOps:  ops{appendRaw(dhex(""))},
-		consumeOps: ops{consumeTag{wantErr: io.ErrUnexpectedEOF}},
-	}, {
-		appendOps:  ops{appendTag{inNum: 0, inType: Fixed32Type}},
-		wantRaw:    dhex("05"),
-		consumeOps: ops{consumeTag{wantErr: errFieldNumber}},
-	}, {
-		appendOps:  ops{appendTag{inNum: 1, inType: Fixed32Type}},
-		wantRaw:    dhex("0d"),
-		consumeOps: ops{consumeTag{wantNum: 1, wantType: Fixed32Type, wantCnt: 1}},
-	}, {
-		appendOps:  ops{appendTag{inNum: FirstReservedNumber, inType: BytesType}},
-		wantRaw:    dhex("c2a309"),
-		consumeOps: ops{consumeTag{wantNum: FirstReservedNumber, wantType: BytesType, wantCnt: 3}},
-	}, {
-		appendOps:  ops{appendTag{inNum: LastReservedNumber, inType: StartGroupType}},
-		wantRaw:    dhex("fbe109"),
-		consumeOps: ops{consumeTag{wantNum: LastReservedNumber, wantType: StartGroupType, wantCnt: 3}},
-	}, {
-		appendOps:  ops{appendTag{inNum: MaxValidNumber, inType: VarintType}},
-		wantRaw:    dhex("f8ffffff0f"),
-		consumeOps: ops{consumeTag{wantNum: MaxValidNumber, wantType: VarintType, wantCnt: 5}},
-	}, {
-		appendOps:  ops{appendVarint{inVal: ((math.MaxInt32+1)<<3 | uint64(VarintType))}},
-		wantRaw:    dhex("8080808040"),
-		consumeOps: ops{consumeTag{wantErr: errFieldNumber}},
-	}})
-}
-
-func TestVarint(t *testing.T) {
-	runTests(t, []testOps{{
-		appendOps:  ops{appendRaw(dhex(""))},
-		consumeOps: ops{consumeVarint{wantErr: io.ErrUnexpectedEOF}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("80"))},
-		consumeOps: ops{consumeVarint{wantErr: io.ErrUnexpectedEOF}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("8080"))},
-		consumeOps: ops{consumeVarint{wantErr: io.ErrUnexpectedEOF}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("808080"))},
-		consumeOps: ops{consumeVarint{wantErr: io.ErrUnexpectedEOF}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("80808080"))},
-		consumeOps: ops{consumeVarint{wantErr: io.ErrUnexpectedEOF}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("8080808080"))},
-		consumeOps: ops{consumeVarint{wantErr: io.ErrUnexpectedEOF}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("808080808080"))},
-		consumeOps: ops{consumeVarint{wantErr: io.ErrUnexpectedEOF}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("80808080808080"))},
-		consumeOps: ops{consumeVarint{wantErr: io.ErrUnexpectedEOF}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("8080808080808080"))},
-		consumeOps: ops{consumeVarint{wantErr: io.ErrUnexpectedEOF}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("808080808080808080"))},
-		consumeOps: ops{consumeVarint{wantErr: io.ErrUnexpectedEOF}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("80808080808080808080"))},
-		consumeOps: ops{consumeVarint{wantErr: errOverflow}},
-	}, {
-		// Test varints at various boundaries where the length changes.
-		appendOps:  ops{appendVarint{inVal: 0x0}},
-		wantRaw:    dhex("00"),
-		consumeOps: ops{consumeVarint{wantVal: 0, wantCnt: 1}},
-	}, {
-		appendOps:  ops{appendVarint{inVal: 0x1}},
-		wantRaw:    dhex("01"),
-		consumeOps: ops{consumeVarint{wantVal: 1, wantCnt: 1}},
-	}, {
-		appendOps:  ops{appendVarint{inVal: 0x7f}},
-		wantRaw:    dhex("7f"),
-		consumeOps: ops{consumeVarint{wantVal: 0x7f, wantCnt: 1}},
-	}, {
-		appendOps:  ops{appendVarint{inVal: 0x7f + 1}},
-		wantRaw:    dhex("8001"),
-		consumeOps: ops{consumeVarint{wantVal: 0x7f + 1, wantCnt: 2}},
-	}, {
-		appendOps:  ops{appendVarint{inVal: 0x3fff}},
-		wantRaw:    dhex("ff7f"),
-		consumeOps: ops{consumeVarint{wantVal: 0x3fff, wantCnt: 2}},
-	}, {
-		appendOps:  ops{appendVarint{inVal: 0x3fff + 1}},
-		wantRaw:    dhex("808001"),
-		consumeOps: ops{consumeVarint{wantVal: 0x3fff + 1, wantCnt: 3}},
-	}, {
-		appendOps:  ops{appendVarint{inVal: 0x1fffff}},
-		wantRaw:    dhex("ffff7f"),
-		consumeOps: ops{consumeVarint{wantVal: 0x1fffff, wantCnt: 3}},
-	}, {
-		appendOps:  ops{appendVarint{inVal: 0x1fffff + 1}},
-		wantRaw:    dhex("80808001"),
-		consumeOps: ops{consumeVarint{wantVal: 0x1fffff + 1, wantCnt: 4}},
-	}, {
-		appendOps:  ops{appendVarint{inVal: 0xfffffff}},
-		wantRaw:    dhex("ffffff7f"),
-		consumeOps: ops{consumeVarint{wantVal: 0xfffffff, wantCnt: 4}},
-	}, {
-		appendOps:  ops{appendVarint{inVal: 0xfffffff + 1}},
-		wantRaw:    dhex("8080808001"),
-		consumeOps: ops{consumeVarint{wantVal: 0xfffffff + 1, wantCnt: 5}},
-	}, {
-		appendOps:  ops{appendVarint{inVal: 0x7ffffffff}},
-		wantRaw:    dhex("ffffffff7f"),
-		consumeOps: ops{consumeVarint{wantVal: 0x7ffffffff, wantCnt: 5}},
-	}, {
-		appendOps:  ops{appendVarint{inVal: 0x7ffffffff + 1}},
-		wantRaw:    dhex("808080808001"),
-		consumeOps: ops{consumeVarint{wantVal: 0x7ffffffff + 1, wantCnt: 6}},
-	}, {
-		appendOps:  ops{appendVarint{inVal: 0x3ffffffffff}},
-		wantRaw:    dhex("ffffffffff7f"),
-		consumeOps: ops{consumeVarint{wantVal: 0x3ffffffffff, wantCnt: 6}},
-	}, {
-		appendOps:  ops{appendVarint{inVal: 0x3ffffffffff + 1}},
-		wantRaw:    dhex("80808080808001"),
-		consumeOps: ops{consumeVarint{wantVal: 0x3ffffffffff + 1, wantCnt: 7}},
-	}, {
-		appendOps:  ops{appendVarint{inVal: 0x1ffffffffffff}},
-		wantRaw:    dhex("ffffffffffff7f"),
-		consumeOps: ops{consumeVarint{wantVal: 0x1ffffffffffff, wantCnt: 7}},
-	}, {
-		appendOps:  ops{appendVarint{inVal: 0x1ffffffffffff + 1}},
-		wantRaw:    dhex("8080808080808001"),
-		consumeOps: ops{consumeVarint{wantVal: 0x1ffffffffffff + 1, wantCnt: 8}},
-	}, {
-		appendOps:  ops{appendVarint{inVal: 0xffffffffffffff}},
-		wantRaw:    dhex("ffffffffffffff7f"),
-		consumeOps: ops{consumeVarint{wantVal: 0xffffffffffffff, wantCnt: 8}},
-	}, {
-		appendOps:  ops{appendVarint{inVal: 0xffffffffffffff + 1}},
-		wantRaw:    dhex("808080808080808001"),
-		consumeOps: ops{consumeVarint{wantVal: 0xffffffffffffff + 1, wantCnt: 9}},
-	}, {
-		appendOps:  ops{appendVarint{inVal: 0x7fffffffffffffff}},
-		wantRaw:    dhex("ffffffffffffffff7f"),
-		consumeOps: ops{consumeVarint{wantVal: 0x7fffffffffffffff, wantCnt: 9}},
-	}, {
-		appendOps:  ops{appendVarint{inVal: 0x7fffffffffffffff + 1}},
-		wantRaw:    dhex("80808080808080808001"),
-		consumeOps: ops{consumeVarint{wantVal: 0x7fffffffffffffff + 1, wantCnt: 10}},
-	}, {
-		appendOps:  ops{appendVarint{inVal: math.MaxUint64}},
-		wantRaw:    dhex("ffffffffffffffffff01"),
-		consumeOps: ops{consumeVarint{wantVal: math.MaxUint64, wantCnt: 10}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("ffffffffffffffffff02"))},
-		consumeOps: ops{consumeVarint{wantErr: errOverflow}},
-	}, {
-		// Test denormalized varints; where the encoding, while valid, is
-		// larger than necessary.
-		appendOps:  ops{appendRaw(dhex("01"))},
-		consumeOps: ops{consumeVarint{wantVal: 1, wantCnt: 1}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("8100"))},
-		consumeOps: ops{consumeVarint{wantVal: 1, wantCnt: 2}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("818000"))},
-		consumeOps: ops{consumeVarint{wantVal: 1, wantCnt: 3}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("81808000"))},
-		consumeOps: ops{consumeVarint{wantVal: 1, wantCnt: 4}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("8180808000"))},
-		consumeOps: ops{consumeVarint{wantVal: 1, wantCnt: 5}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("818080808000"))},
-		consumeOps: ops{consumeVarint{wantVal: 1, wantCnt: 6}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("81808080808000"))},
-		consumeOps: ops{consumeVarint{wantVal: 1, wantCnt: 7}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("8180808080808000"))},
-		consumeOps: ops{consumeVarint{wantVal: 1, wantCnt: 8}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("818080808080808000"))},
-		consumeOps: ops{consumeVarint{wantVal: 1, wantCnt: 9}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("81808080808080808000"))},
-		consumeOps: ops{consumeVarint{wantVal: 1, wantCnt: 10}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("8180808080808080808000"))},
-		consumeOps: ops{consumeVarint{wantErr: errOverflow}},
-	}})
-}
-
-func TestFixed32(t *testing.T) {
-	runTests(t, []testOps{{
-		appendOps:  ops{appendRaw(dhex(""))},
-		consumeOps: ops{consumeFixed32{wantErr: io.ErrUnexpectedEOF}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("000000"))},
-		consumeOps: ops{consumeFixed32{wantErr: io.ErrUnexpectedEOF}},
-	}, {
-		appendOps:  ops{appendFixed32{0}},
-		wantRaw:    dhex("00000000"),
-		consumeOps: ops{consumeFixed32{wantVal: 0, wantCnt: 4}},
-	}, {
-		appendOps:  ops{appendFixed32{math.MaxUint32}},
-		wantRaw:    dhex("ffffffff"),
-		consumeOps: ops{consumeFixed32{wantVal: math.MaxUint32, wantCnt: 4}},
-	}, {
-		appendOps:  ops{appendFixed32{0xf0e1d2c3}},
-		wantRaw:    dhex("c3d2e1f0"),
-		consumeOps: ops{consumeFixed32{wantVal: 0xf0e1d2c3, wantCnt: 4}},
-	}})
-}
-
-func TestFixed64(t *testing.T) {
-	runTests(t, []testOps{{
-		appendOps:  ops{appendRaw(dhex(""))},
-		consumeOps: ops{consumeFixed64{wantErr: io.ErrUnexpectedEOF}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("00000000000000"))},
-		consumeOps: ops{consumeFixed64{wantErr: io.ErrUnexpectedEOF}},
-	}, {
-		appendOps:  ops{appendFixed64{0}},
-		wantRaw:    dhex("0000000000000000"),
-		consumeOps: ops{consumeFixed64{wantVal: 0, wantCnt: 8}},
-	}, {
-		appendOps:  ops{appendFixed64{math.MaxUint64}},
-		wantRaw:    dhex("ffffffffffffffff"),
-		consumeOps: ops{consumeFixed64{wantVal: math.MaxUint64, wantCnt: 8}},
-	}, {
-		appendOps:  ops{appendFixed64{0xf0e1d2c3b4a59687}},
-		wantRaw:    dhex("8796a5b4c3d2e1f0"),
-		consumeOps: ops{consumeFixed64{wantVal: 0xf0e1d2c3b4a59687, wantCnt: 8}},
-	}})
-}
-
-func TestBytes(t *testing.T) {
-	runTests(t, []testOps{{
-		appendOps:  ops{appendRaw(dhex(""))},
-		consumeOps: ops{consumeBytes{wantErr: io.ErrUnexpectedEOF}},
-	}, {
-		appendOps:  ops{appendRaw(dhex("01"))},
-		consumeOps: ops{consumeBytes{wantErr: io.ErrUnexpectedEOF}},
-	}, {
-		appendOps:  ops{appendVarint{0}, appendRaw("")},
-		wantRaw:    dhex("00"),
-		consumeOps: ops{consumeBytes{wantVal: dhex(""), wantCnt: 1}},
-	}, {
-		appendOps:  ops{appendBytes{[]byte("hello")}},
-		wantRaw:    []byte("\x05hello"),
-		consumeOps: ops{consumeBytes{wantVal: []byte("hello"), wantCnt: 6}},
-	}, {
-		appendOps:  ops{appendBytes{[]byte(strings.Repeat("hello", 50))}},
-		wantRaw:    []byte("\xfa\x01" + strings.Repeat("hello", 50)),
-		consumeOps: ops{consumeBytes{wantVal: []byte(strings.Repeat("hello", 50)), wantCnt: 252}},
-	}, {
-		appendOps:  ops{appendRaw("\x85\x80\x00hello")},
-		consumeOps: ops{consumeBytes{wantVal: []byte("hello"), wantCnt: 8}},
-	}, {
-		appendOps:  ops{appendRaw("\x85\x80\x00hell")},
-		consumeOps: ops{consumeBytes{wantErr: io.ErrUnexpectedEOF}},
-	}})
-}
-
-func TestGroup(t *testing.T) {
-	runTests(t, []testOps{{
-		appendOps:  ops{appendRaw(dhex(""))},
-		consumeOps: ops{consumeGroup{wantErr: io.ErrUnexpectedEOF}},
-	}, {
-		appendOps:  ops{appendTag{inNum: 0, inType: StartGroupType}},
-		consumeOps: ops{consumeGroup{inNum: 1, wantErr: errFieldNumber}},
-	}, {
-		appendOps:  ops{appendTag{inNum: 2, inType: EndGroupType}},
-		consumeOps: ops{consumeGroup{inNum: 1, wantErr: errEndGroup}},
-	}, {
-		appendOps:  ops{appendTag{inNum: 1, inType: EndGroupType}},
-		consumeOps: ops{consumeGroup{inNum: 1, wantCnt: 1}},
-	}, {
-		appendOps: ops{
-			appendTag{inNum: 5, inType: Fixed32Type},
-			appendFixed32{0xf0e1d2c3},
-			appendTag{inNum: 5, inType: EndGroupType},
-		},
-		wantRaw:    dhex("2dc3d2e1f02c"),
-		consumeOps: ops{consumeGroup{inNum: 5, wantVal: dhex("2dc3d2e1f0"), wantCnt: 6}},
-	}, {
-		appendOps: ops{
-			appendTag{inNum: 5, inType: Fixed32Type},
-			appendFixed32{0xf0e1d2c3},
-			appendRaw(dhex("ac808000")),
-		},
-		consumeOps: ops{consumeGroup{inNum: 5, wantVal: dhex("2dc3d2e1f0"), wantCnt: 9}},
-	}})
-}
-
-func TestField(t *testing.T) {
-	runTests(t, []testOps{{
-		appendOps:  ops{appendRaw(dhex(""))},
-		consumeOps: ops{consumeField{wantErr: io.ErrUnexpectedEOF}},
-	}, {
-		appendOps: ops{
-			appendTag{inNum: 5000, inType: StartGroupType},
-			appendTag{inNum: 1, inType: VarintType},
-			appendVarint{123456789},
-			appendTag{inNum: 12, inType: Fixed32Type},
-			appendFixed32{123456789},
-			appendTag{inNum: 123, inType: Fixed64Type},
-			appendFixed64{123456789},
-			appendTag{inNum: 1234, inType: BytesType},
-			appendBytes{[]byte("hello")},
-			appendTag{inNum: 12345, inType: StartGroupType},
-			appendTag{inNum: 11, inType: VarintType},
-			appendVarint{123456789},
-			appendTag{inNum: 1212, inType: Fixed32Type},
-			appendFixed32{123456789},
-			appendTag{inNum: 123123, inType: Fixed64Type},
-			appendFixed64{123456789},
-			appendTag{inNum: 12341234, inType: BytesType},
-			appendBytes{[]byte("goodbye")},
-			appendTag{inNum: 12345, inType: EndGroupType},
-			appendTag{inNum: 5000, inType: EndGroupType},
-		},
-		wantRaw: dhex("c3b80208959aef3a6515cd5b07d90715cd5b0700000000924d0568656c6c6fcb830658959aef3ae54b15cd5b07998f3c15cd5b070000000092ff892f07676f6f64627965cc8306c4b802"),
-		consumeOps: ops{
-			consumeTag{wantNum: 5000, wantType: StartGroupType, wantCnt: 3},
-			consumeTag{wantNum: 1, wantType: VarintType, wantCnt: 1},
-			consumeVarint{wantVal: 123456789, wantCnt: 4},
-			consumeTag{wantNum: 12, wantType: Fixed32Type, wantCnt: 1},
-			consumeFixed32{wantVal: 123456789, wantCnt: 4},
-			consumeTag{wantNum: 123, wantType: Fixed64Type, wantCnt: 2},
-			consumeFixed64{wantVal: 123456789, wantCnt: 8},
-			consumeTag{wantNum: 1234, wantType: BytesType, wantCnt: 2},
-			consumeBytes{wantVal: []byte("hello"), wantCnt: 6},
-			consumeTag{wantNum: 12345, wantType: StartGroupType, wantCnt: 3},
-			consumeTag{wantNum: 11, wantType: VarintType, wantCnt: 1},
-			consumeVarint{wantVal: 123456789, wantCnt: 4},
-			consumeTag{wantNum: 1212, wantType: Fixed32Type, wantCnt: 2},
-			consumeFixed32{wantVal: 123456789, wantCnt: 4},
-			consumeTag{wantNum: 123123, wantType: Fixed64Type, wantCnt: 3},
-			consumeFixed64{wantVal: 123456789, wantCnt: 8},
-			consumeTag{wantNum: 12341234, wantType: BytesType, wantCnt: 4},
-			consumeBytes{wantVal: []byte("goodbye"), wantCnt: 8},
-			consumeTag{wantNum: 12345, wantType: EndGroupType, wantCnt: 3},
-			consumeTag{wantNum: 5000, wantType: EndGroupType, wantCnt: 3},
-		},
-	}, {
-		appendOps:  ops{appendRaw(dhex("c3b80208959aef3a6515cd5b07d90715cd5b0700000000924d0568656c6c6fcb830658959aef3ae54b15cd5b07998f3c15cd5b070000000092ff892f07676f6f64627965cc8306c4b802"))},
-		consumeOps: ops{consumeField{wantNum: 5000, wantType: StartGroupType, wantCnt: 74}},
-	}, {
-		appendOps:  ops{appendTag{inNum: 5, inType: EndGroupType}},
-		wantRaw:    dhex("2c"),
-		consumeOps: ops{consumeField{wantErr: errEndGroup}},
-	}, {
-		appendOps: ops{
-			appendTag{inNum: 1, inType: StartGroupType},
-			appendTag{inNum: 22, inType: StartGroupType},
-			appendTag{inNum: 333, inType: StartGroupType},
-			appendTag{inNum: 4444, inType: StartGroupType},
-			appendTag{inNum: 4444, inType: EndGroupType},
-			appendTag{inNum: 333, inType: EndGroupType},
-			appendTag{inNum: 22, inType: EndGroupType},
-			appendTag{inNum: 1, inType: EndGroupType},
-		},
-		wantRaw:    dhex("0bb301eb14e39502e49502ec14b4010c"),
-		consumeOps: ops{consumeField{wantNum: 1, wantType: StartGroupType, wantCnt: 16}},
-	}, {
-		appendOps: ops{
-			appendTag{inNum: 1, inType: StartGroupType},
-			appendGroup{inNum: 1, inVal: dhex("b301eb14e39502e49502ec14b401")},
-		},
-		wantRaw:    dhex("0b" + "b301eb14e39502e49502ec14b401" + "0c"),
-		consumeOps: ops{consumeField{wantNum: 1, wantType: StartGroupType, wantCnt: 16}},
-	}, {
-		appendOps: ops{
-			appendTag{inNum: 1, inType: StartGroupType},
-			appendTag{inNum: 22, inType: StartGroupType},
-			appendTag{inNum: 333, inType: StartGroupType},
-			appendTag{inNum: 4444, inType: StartGroupType},
-			appendTag{inNum: 333, inType: EndGroupType},
-			appendTag{inNum: 22, inType: EndGroupType},
-			appendTag{inNum: 1, inType: EndGroupType},
-		},
-		consumeOps: ops{consumeField{wantErr: errEndGroup}},
-	}, {
-		appendOps: ops{
-			appendTag{inNum: 1, inType: StartGroupType},
-			appendTag{inNum: 22, inType: StartGroupType},
-			appendTag{inNum: 333, inType: StartGroupType},
-			appendTag{inNum: 4444, inType: StartGroupType},
-			appendTag{inNum: 4444, inType: EndGroupType},
-			appendTag{inNum: 333, inType: EndGroupType},
-			appendTag{inNum: 22, inType: EndGroupType},
-		},
-		consumeOps: ops{consumeField{wantErr: io.ErrUnexpectedEOF}},
-	}, {
-		appendOps: ops{
-			appendTag{inNum: 1, inType: StartGroupType},
-			appendTag{inNum: 22, inType: StartGroupType},
-			appendTag{inNum: 333, inType: StartGroupType},
-			appendTag{inNum: 4444, inType: StartGroupType},
-			appendTag{inNum: 0, inType: VarintType},
-			appendTag{inNum: 4444, inType: EndGroupType},
-			appendTag{inNum: 333, inType: EndGroupType},
-			appendTag{inNum: 22, inType: EndGroupType},
-			appendTag{inNum: 1, inType: EndGroupType},
-		},
-		consumeOps: ops{consumeField{wantErr: errFieldNumber}},
-	}, {
-		appendOps: ops{
-			appendTag{inNum: 1, inType: StartGroupType},
-			appendTag{inNum: 22, inType: StartGroupType},
-			appendTag{inNum: 333, inType: StartGroupType},
-			appendTag{inNum: 4444, inType: StartGroupType},
-			appendTag{inNum: 1, inType: 6},
-			appendTag{inNum: 4444, inType: EndGroupType},
-			appendTag{inNum: 333, inType: EndGroupType},
-			appendTag{inNum: 22, inType: EndGroupType},
-			appendTag{inNum: 1, inType: EndGroupType},
-		},
-		consumeOps: ops{consumeField{wantErr: errReserved}},
-	}})
-}
-
-func runTests(t *testing.T, tests []testOps) {
-	for _, tt := range tests {
-		t.Run("", func(t *testing.T) {
-			var b []byte
-			for _, op := range tt.appendOps {
-				b0 := b
-				switch op := op.(type) {
-				case appendTag:
-					b = AppendTag(b, op.inNum, op.inType)
-				case appendVarint:
-					b = AppendVarint(b, op.inVal)
-				case appendFixed32:
-					b = AppendFixed32(b, op.inVal)
-				case appendFixed64:
-					b = AppendFixed64(b, op.inVal)
-				case appendBytes:
-					b = AppendBytes(b, op.inVal)
-				case appendGroup:
-					b = AppendGroup(b, op.inNum, op.inVal)
-				case appendRaw:
-					b = append(b, op...)
-				}
-
-				check := func(label string, want int) {
-					t.Helper()
-					if got := len(b) - len(b0); got != want {
-						t.Errorf("len(Append%v) and Size%v mismatch: got %v, want %v", label, label, got, want)
-					}
-				}
-				switch op := op.(type) {
-				case appendTag:
-					check("Tag", SizeTag(op.inNum))
-				case appendVarint:
-					check("Varint", SizeVarint(op.inVal))
-				case appendFixed32:
-					check("Fixed32", SizeFixed32())
-				case appendFixed64:
-					check("Fixed64", SizeFixed64())
-				case appendBytes:
-					check("Bytes", SizeBytes(len(op.inVal)))
-				case appendGroup:
-					check("Group", SizeGroup(op.inNum, len(op.inVal)))
-				}
-			}
-
-			if tt.wantRaw != nil && !bytes.Equal(b, tt.wantRaw) {
-				t.Errorf("raw output mismatch:\ngot  %x\nwant %x", b, tt.wantRaw)
-			}
-
-			for _, op := range tt.consumeOps {
-				check := func(label string, gotCnt, wantCnt int, wantErr error) {
-					t.Helper()
-					gotErr := ParseError(gotCnt)
-					if gotCnt < 0 {
-						gotCnt = 0
-					}
-					if gotCnt != wantCnt {
-						t.Errorf("Consume%v(): consumed %d bytes, want %d bytes consumed", label, gotCnt, wantCnt)
-					}
-					if gotErr != wantErr {
-						t.Errorf("Consume%v(): got %v error, want %v error", label, gotErr, wantErr)
-					}
-					b = b[gotCnt:]
-				}
-				switch op := op.(type) {
-				case consumeField:
-					gotNum, gotType, n := ConsumeField(b)
-					if gotNum != op.wantNum || gotType != op.wantType {
-						t.Errorf("ConsumeField() = (%d, %v), want (%d, %v)", gotNum, gotType, op.wantNum, op.wantType)
-					}
-					check("Field", n, op.wantCnt, op.wantErr)
-				case consumeFieldValue:
-					n := ConsumeFieldValue(op.inNum, op.inType, b)
-					check("FieldValue", n, op.wantCnt, op.wantErr)
-				case consumeTag:
-					gotNum, gotType, n := ConsumeTag(b)
-					if gotNum != op.wantNum || gotType != op.wantType {
-						t.Errorf("ConsumeTag() = (%d, %v), want (%d, %v)", gotNum, gotType, op.wantNum, op.wantType)
-					}
-					check("Tag", n, op.wantCnt, op.wantErr)
-				case consumeVarint:
-					gotVal, n := ConsumeVarint(b)
-					if gotVal != op.wantVal {
-						t.Errorf("ConsumeVarint() = %d, want %d", gotVal, op.wantVal)
-					}
-					check("Varint", n, op.wantCnt, op.wantErr)
-				case consumeFixed32:
-					gotVal, n := ConsumeFixed32(b)
-					if gotVal != op.wantVal {
-						t.Errorf("ConsumeFixed32() = %d, want %d", gotVal, op.wantVal)
-					}
-					check("Fixed32", n, op.wantCnt, op.wantErr)
-				case consumeFixed64:
-					gotVal, n := ConsumeFixed64(b)
-					if gotVal != op.wantVal {
-						t.Errorf("ConsumeFixed64() = %d, want %d", gotVal, op.wantVal)
-					}
-					check("Fixed64", n, op.wantCnt, op.wantErr)
-				case consumeBytes:
-					gotVal, n := ConsumeBytes(b)
-					if !bytes.Equal(gotVal, op.wantVal) {
-						t.Errorf("ConsumeBytes() = %x, want %x", gotVal, op.wantVal)
-					}
-					check("Bytes", n, op.wantCnt, op.wantErr)
-				case consumeGroup:
-					gotVal, n := ConsumeGroup(op.inNum, b)
-					if !bytes.Equal(gotVal, op.wantVal) {
-						t.Errorf("ConsumeGroup() = %x, want %x", gotVal, op.wantVal)
-					}
-					check("Group", n, op.wantCnt, op.wantErr)
-				}
-			}
-		})
-	}
-}
-
-func TestZigZag(t *testing.T) {
-	tests := []struct {
-		dec int64
-		enc uint64
-	}{
-		{math.MinInt64 + 0, math.MaxUint64 - 0},
-		{math.MinInt64 + 1, math.MaxUint64 - 2},
-		{math.MinInt64 + 2, math.MaxUint64 - 4},
-		{-3, 5},
-		{-2, 3},
-		{-1, 1},
-		{0, 0},
-		{+1, 2},
-		{+2, 4},
-		{+3, 6},
-		{math.MaxInt64 - 2, math.MaxUint64 - 5},
-		{math.MaxInt64 - 1, math.MaxUint64 - 3},
-		{math.MaxInt64 - 0, math.MaxUint64 - 1},
-	}
-
-	for _, tt := range tests {
-		if enc := EncodeZigZag(tt.dec); enc != tt.enc {
-			t.Errorf("EncodeZigZag(%d) = %d, want %d", tt.dec, enc, tt.enc)
-		}
-		if dec := DecodeZigZag(tt.enc); dec != tt.dec {
-			t.Errorf("DecodeZigZag(%d) = %d, want %d", tt.enc, dec, tt.dec)
-		}
-	}
-}
diff --git a/go.mod b/go.mod
index 8858601..aa05582 100644
--- a/go.mod
+++ b/go.mod
@@ -1,8 +1,3 @@
-module google.golang.org/protobuf
+module github.com/golang/protobuf
 
-go 1.11
-
-require (
-	github.com/golang/protobuf v1.5.0
-	github.com/google/go-cmp v0.5.5
-)
+go 1.9
diff --git a/go.sum b/go.sum
index 6ba6984..e69de29 100644
--- a/go.sum
+++ b/go.sum
@@ -1,7 +0,0 @@
-github.com/golang/protobuf v1.5.0 h1:LUVKkCeviFUMKqHa4tXIIij/lbhnMbP7Fn5wKdKkRh4=
-github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
-github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU=
-github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
diff --git a/integration_test.go b/integration_test.go
deleted file mode 100644
index 8a4f7af..0000000
--- a/integration_test.go
+++ /dev/null
@@ -1,494 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:build ignore
-// +build ignore
-
-package main
-
-import (
-	"archive/tar"
-	"archive/zip"
-	"bytes"
-	"compress/gzip"
-	"crypto/sha256"
-	"flag"
-	"fmt"
-	"io"
-	"io/ioutil"
-	"net/http"
-	"os"
-	"os/exec"
-	"path/filepath"
-	"regexp"
-	"runtime"
-	"strings"
-	"sync"
-	"testing"
-	"time"
-
-	"google.golang.org/protobuf/internal/version"
-)
-
-var (
-	regenerate   = flag.Bool("regenerate", false, "regenerate files")
-	buildRelease = flag.Bool("buildRelease", false, "build release binaries")
-
-	protobufVersion = "3.15.3"
-	protobufSHA256  = "" // ignored if protobufVersion is a git hash
-
-	golangVersions = []string{"1.11.13", "1.12.17", "1.13.15", "1.14.15", "1.15.15", "1.16.10", "1.17.3"}
-	golangLatest   = golangVersions[len(golangVersions)-1]
-
-	staticcheckVersion = "2020.1.4"
-	staticcheckSHA256s = map[string]string{
-		"darwin/amd64": "5706d101426c025e8f165309e0cb2932e54809eb035ff23ebe19df0f810699d8",
-		"linux/386":    "e4dbf94e940678ae7108f0d22c7c2992339bc10a8fb384e7e734b1531a429a1c",
-		"linux/amd64":  "09d2c2002236296de2c757df111fe3ae858b89f9e183f645ad01f8135c83c519",
-	}
-
-	// purgeTimeout determines the maximum age of unused sub-directories.
-	purgeTimeout = 30 * 24 * time.Hour // 1 month
-
-	// Variables initialized by mustInitDeps.
-	goPath       string
-	modulePath   string
-	protobufPath string
-)
-
-func Test(t *testing.T) {
-	mustInitDeps(t)
-	mustHandleFlags(t)
-
-	// Report dirt in the working tree quickly, rather than after
-	// going through all the presubmits.
-	//
-	// Fail the test late, so we can test uncommitted changes with -failfast.
-	gitDiff := mustRunCommand(t, "git", "diff", "HEAD")
-	if strings.TrimSpace(gitDiff) != "" {
-		fmt.Printf("WARNING: working tree contains uncommitted changes:\n%v\n", gitDiff)
-	}
-	gitUntracked := mustRunCommand(t, "git", "ls-files", "--others", "--exclude-standard")
-	if strings.TrimSpace(gitUntracked) != "" {
-		fmt.Printf("WARNING: working tree contains untracked files:\n%v\n", gitUntracked)
-	}
-
-	// Do the relatively fast checks up-front.
-	t.Run("GeneratedGoFiles", func(t *testing.T) {
-		diff := mustRunCommand(t, "go", "run", "-tags", "protolegacy", "./internal/cmd/generate-types")
-		if strings.TrimSpace(diff) != "" {
-			t.Fatalf("stale generated files:\n%v", diff)
-		}
-		diff = mustRunCommand(t, "go", "run", "-tags", "protolegacy", "./internal/cmd/generate-protos")
-		if strings.TrimSpace(diff) != "" {
-			t.Fatalf("stale generated files:\n%v", diff)
-		}
-	})
-	t.Run("FormattedGoFiles", func(t *testing.T) {
-		files := strings.Split(strings.TrimSpace(mustRunCommand(t, "git", "ls-files", "*.go")), "\n")
-		diff := mustRunCommand(t, append([]string{"gofmt", "-d"}, files...)...)
-		if strings.TrimSpace(diff) != "" {
-			t.Fatalf("unformatted source files:\n%v", diff)
-		}
-	})
-	t.Run("CopyrightHeaders", func(t *testing.T) {
-		files := strings.Split(strings.TrimSpace(mustRunCommand(t, "git", "ls-files", "*.go", "*.proto")), "\n")
-		mustHaveCopyrightHeader(t, files)
-	})
-
-	var wg sync.WaitGroup
-	sema := make(chan bool, (runtime.NumCPU()+1)/2)
-	for i := range golangVersions {
-		goVersion := golangVersions[i]
-		goLabel := "Go" + goVersion
-		runGo := func(label string, cmd command, args ...string) {
-			wg.Add(1)
-			sema <- true
-			go func() {
-				defer wg.Done()
-				defer func() { <-sema }()
-				t.Run(goLabel+"/"+label, func(t *testing.T) {
-					args[0] += goVersion
-					cmd.mustRun(t, args...)
-				})
-			}()
-		}
-
-		workDir := filepath.Join(goPath, "src", modulePath)
-		runGo("Normal", command{Dir: workDir}, "go", "test", "-race", "./...")
-		runGo("PureGo", command{Dir: workDir}, "go", "test", "-race", "-tags", "purego", "./...")
-		runGo("Reflect", command{Dir: workDir}, "go", "test", "-race", "-tags", "protoreflect", "./...")
-		if goVersion == golangLatest {
-			runGo("ProtoLegacy", command{Dir: workDir}, "go", "test", "-race", "-tags", "protolegacy", "./...")
-			runGo("ProtocGenGo", command{Dir: "cmd/protoc-gen-go/testdata"}, "go", "test")
-			runGo("Conformance", command{Dir: "internal/conformance"}, "go", "test", "-execute")
-
-			// Only run the 32-bit compatability tests for Linux;
-			// avoid Darwin since 10.15 dropped support i386 code execution.
-			if runtime.GOOS == "linux" {
-				runGo("Arch32Bit", command{Dir: workDir, Env: append(os.Environ(), "GOARCH=386")}, "go", "test", "./...")
-			}
-		}
-	}
-	wg.Wait()
-
-	t.Run("GoStaticCheck", func(t *testing.T) {
-		checks := []string{
-			"all",     // start with all checks enabled
-			"-SA1019", // disable deprecated usage check
-			"-S*",     // disable code simplication checks
-			"-ST*",    // disable coding style checks
-			"-U*",     // disable unused declaration checks
-		}
-		out := mustRunCommand(t, "staticcheck", "-checks="+strings.Join(checks, ","), "-fail=none", "./...")
-
-		// Filter out findings from certain paths.
-		var findings []string
-		for _, finding := range strings.Split(strings.TrimSpace(out), "\n") {
-			switch {
-			case strings.HasPrefix(finding, "internal/testprotos/legacy/"):
-			default:
-				findings = append(findings, finding)
-			}
-		}
-		if len(findings) > 0 {
-			t.Fatalf("staticcheck findings:\n%v", strings.Join(findings, "\n"))
-		}
-	})
-	t.Run("CommittedGitChanges", func(t *testing.T) {
-		if strings.TrimSpace(gitDiff) != "" {
-			t.Fatalf("uncommitted changes")
-		}
-	})
-	t.Run("TrackedGitFiles", func(t *testing.T) {
-		if strings.TrimSpace(gitUntracked) != "" {
-			t.Fatalf("untracked files")
-		}
-	})
-}
-
-func mustInitDeps(t *testing.T) {
-	check := func(err error) {
-		t.Helper()
-		if err != nil {
-			t.Fatal(err)
-		}
-	}
-
-	// Determine the directory to place the test directory.
-	repoRoot, err := os.Getwd()
-	check(err)
-	testDir := filepath.Join(repoRoot, ".cache")
-	check(os.MkdirAll(testDir, 0775))
-
-	// Delete the current directory if non-empty,
-	// which only occurs if a dependency failed to initialize properly.
-	var workingDir string
-	finishedDirs := map[string]bool{}
-	defer func() {
-		if workingDir != "" {
-			os.RemoveAll(workingDir) // best-effort
-		}
-	}()
-	startWork := func(name string) string {
-		workingDir = filepath.Join(testDir, name)
-		return workingDir
-	}
-	finishWork := func() {
-		finishedDirs[workingDir] = true
-		workingDir = ""
-	}
-
-	// Delete other sub-directories that are no longer relevant.
-	defer func() {
-		now := time.Now()
-		fis, _ := ioutil.ReadDir(testDir)
-		for _, fi := range fis {
-			dir := filepath.Join(testDir, fi.Name())
-			if finishedDirs[dir] {
-				os.Chtimes(dir, now, now) // best-effort
-				continue
-			}
-			if now.Sub(fi.ModTime()) < purgeTimeout {
-				continue
-			}
-			fmt.Printf("delete %v\n", fi.Name())
-			os.RemoveAll(dir) // best-effort
-		}
-	}()
-
-	// The bin directory contains symlinks to each tool by version.
-	// It is safe to delete this directory and run the test script from scratch.
-	binPath := startWork("bin")
-	check(os.RemoveAll(binPath))
-	check(os.Mkdir(binPath, 0775))
-	check(os.Setenv("PATH", binPath+":"+os.Getenv("PATH")))
-	registerBinary := func(name, path string) {
-		check(os.Symlink(path, filepath.Join(binPath, name)))
-	}
-	finishWork()
-
-	// Download and build the protobuf toolchain.
-	// We avoid downloading the pre-compiled binaries since they do not contain
-	// the conformance test runner.
-	protobufPath = startWork("protobuf-" + protobufVersion)
-	if _, err := os.Stat(protobufPath); err != nil {
-		fmt.Printf("download %v\n", filepath.Base(protobufPath))
-		if isCommit := strings.Trim(protobufVersion, "0123456789abcdef") == ""; isCommit {
-			command{Dir: testDir}.mustRun(t, "git", "clone", "https://github.com/protocolbuffers/protobuf", "protobuf-"+protobufVersion)
-			command{Dir: protobufPath}.mustRun(t, "git", "checkout", protobufVersion)
-		} else {
-			url := fmt.Sprintf("https://github.com/google/protobuf/releases/download/v%v/protobuf-all-%v.tar.gz", protobufVersion, protobufVersion)
-			downloadArchive(check, protobufPath, url, "protobuf-"+protobufVersion, protobufSHA256)
-		}
-
-		fmt.Printf("build %v\n", filepath.Base(protobufPath))
-		command{Dir: protobufPath}.mustRun(t, "./autogen.sh")
-		command{Dir: protobufPath}.mustRun(t, "./configure")
-		command{Dir: protobufPath}.mustRun(t, "make")
-		command{Dir: filepath.Join(protobufPath, "conformance")}.mustRun(t, "make")
-	}
-	check(os.Setenv("PROTOBUF_ROOT", protobufPath)) // for generate-protos
-	registerBinary("conform-test-runner", filepath.Join(protobufPath, "conformance", "conformance-test-runner"))
-	registerBinary("protoc", filepath.Join(protobufPath, "src", "protoc"))
-	finishWork()
-
-	// Download each Go toolchain version.
-	for _, v := range golangVersions {
-		goDir := startWork("go" + v)
-		if _, err := os.Stat(goDir); err != nil {
-			fmt.Printf("download %v\n", filepath.Base(goDir))
-			url := fmt.Sprintf("https://dl.google.com/go/go%v.%v-%v.tar.gz", v, runtime.GOOS, runtime.GOARCH)
-			downloadArchive(check, goDir, url, "go", "") // skip SHA256 check as we fetch over https from a trusted domain
-		}
-		registerBinary("go"+v, filepath.Join(goDir, "bin", "go"))
-		finishWork()
-	}
-	registerBinary("go", filepath.Join(testDir, "go"+golangLatest, "bin", "go"))
-	registerBinary("gofmt", filepath.Join(testDir, "go"+golangLatest, "bin", "gofmt"))
-
-	// Download the staticcheck tool.
-	checkDir := startWork("staticcheck-" + staticcheckVersion)
-	if _, err := os.Stat(checkDir); err != nil {
-		fmt.Printf("download %v\n", filepath.Base(checkDir))
-		url := fmt.Sprintf("https://github.com/dominikh/go-tools/releases/download/%v/staticcheck_%v_%v.tar.gz", staticcheckVersion, runtime.GOOS, runtime.GOARCH)
-		downloadArchive(check, checkDir, url, "staticcheck", staticcheckSHA256s[runtime.GOOS+"/"+runtime.GOARCH])
-	}
-	registerBinary("staticcheck", filepath.Join(checkDir, "staticcheck"))
-	finishWork()
-
-	// GitHub actions sets GOROOT, which confuses invocations of the Go toolchain.
-	// Explicitly clear GOROOT, so each toolchain uses their default GOROOT.
-	check(os.Unsetenv("GOROOT"))
-
-	// Set a cache directory outside the test directory.
-	check(os.Setenv("GOCACHE", filepath.Join(repoRoot, ".gocache")))
-
-	// Setup GOPATH for pre-module support (i.e., go1.10 and earlier).
-	goPath = startWork("gopath")
-	modulePath = strings.TrimSpace(command{Dir: testDir}.mustRun(t, "go", "list", "-m", "-f", "{{.Path}}"))
-	check(os.RemoveAll(filepath.Join(goPath, "src")))
-	check(os.MkdirAll(filepath.Join(goPath, "src", filepath.Dir(modulePath)), 0775))
-	check(os.Symlink(repoRoot, filepath.Join(goPath, "src", modulePath)))
-	command{Dir: repoRoot}.mustRun(t, "go", "mod", "tidy")
-	command{Dir: repoRoot}.mustRun(t, "go", "mod", "vendor")
-	check(os.Setenv("GOPATH", goPath))
-	finishWork()
-}
-
-func downloadFile(check func(error), dstPath, srcURL string) {
-	resp, err := http.Get(srcURL)
-	check(err)
-	defer resp.Body.Close()
-
-	check(os.MkdirAll(filepath.Dir(dstPath), 0775))
-	f, err := os.Create(dstPath)
-	check(err)
-
-	_, err = io.Copy(f, resp.Body)
-	check(err)
-}
-
-func downloadArchive(check func(error), dstPath, srcURL, skipPrefix, wantSHA256 string) {
-	check(os.RemoveAll(dstPath))
-
-	resp, err := http.Get(srcURL)
-	check(err)
-	defer resp.Body.Close()
-
-	var r io.Reader = resp.Body
-	if wantSHA256 != "" {
-		b, err := ioutil.ReadAll(resp.Body)
-		check(err)
-		r = bytes.NewReader(b)
-
-		if gotSHA256 := fmt.Sprintf("%x", sha256.Sum256(b)); gotSHA256 != wantSHA256 {
-			check(fmt.Errorf("checksum validation error:\ngot  %v\nwant %v", gotSHA256, wantSHA256))
-		}
-	}
-
-	zr, err := gzip.NewReader(r)
-	check(err)
-
-	tr := tar.NewReader(zr)
-	for {
-		h, err := tr.Next()
-		if err == io.EOF {
-			return
-		}
-		check(err)
-
-		// Skip directories or files outside the prefix directory.
-		if len(skipPrefix) > 0 {
-			if !strings.HasPrefix(h.Name, skipPrefix) {
-				continue
-			}
-			if len(h.Name) > len(skipPrefix) && h.Name[len(skipPrefix)] != '/' {
-				continue
-			}
-		}
-
-		path := strings.TrimPrefix(strings.TrimPrefix(h.Name, skipPrefix), "/")
-		path = filepath.Join(dstPath, filepath.FromSlash(path))
-		mode := os.FileMode(h.Mode & 0777)
-		switch h.Typeflag {
-		case tar.TypeReg:
-			b, err := ioutil.ReadAll(tr)
-			check(err)
-			check(ioutil.WriteFile(path, b, mode))
-		case tar.TypeDir:
-			check(os.Mkdir(path, mode))
-		}
-	}
-}
-
-func mustHandleFlags(t *testing.T) {
-	if *regenerate {
-		t.Run("Generate", func(t *testing.T) {
-			fmt.Print(mustRunCommand(t, "go", "run", "-tags", "protolegacy", "./internal/cmd/generate-types", "-execute"))
-			fmt.Print(mustRunCommand(t, "go", "run", "-tags", "protolegacy", "./internal/cmd/generate-protos", "-execute"))
-			files := strings.Split(strings.TrimSpace(mustRunCommand(t, "git", "ls-files", "*.go")), "\n")
-			mustRunCommand(t, append([]string{"gofmt", "-w"}, files...)...)
-		})
-	}
-	if *buildRelease {
-		t.Run("BuildRelease", func(t *testing.T) {
-			v := version.String()
-			for _, goos := range []string{"linux", "darwin", "windows"} {
-				for _, goarch := range []string{"386", "amd64"} {
-					// Avoid Darwin since 10.15 dropped support for i386.
-					if goos == "darwin" && goarch == "386" {
-						continue
-					}
-
-					binPath := filepath.Join("bin", fmt.Sprintf("protoc-gen-go.%v.%v.%v", v, goos, goarch))
-
-					// Build the binary.
-					cmd := command{Env: append(os.Environ(), "GOOS="+goos, "GOARCH="+goarch)}
-					cmd.mustRun(t, "go", "build", "-trimpath", "-ldflags", "-s -w -buildid=", "-o", binPath, "./cmd/protoc-gen-go")
-
-					// Archive and compress the binary.
-					in, err := ioutil.ReadFile(binPath)
-					if err != nil {
-						t.Fatal(err)
-					}
-					out := new(bytes.Buffer)
-					suffix := ""
-					comment := fmt.Sprintf("protoc-gen-go VERSION=%v GOOS=%v GOARCH=%v", v, goos, goarch)
-					switch goos {
-					case "windows":
-						suffix = ".zip"
-						zw := zip.NewWriter(out)
-						zw.SetComment(comment)
-						fw, _ := zw.Create("protoc-gen-go.exe")
-						fw.Write(in)
-						zw.Close()
-					default:
-						suffix = ".tar.gz"
-						gz, _ := gzip.NewWriterLevel(out, gzip.BestCompression)
-						gz.Comment = comment
-						tw := tar.NewWriter(gz)
-						tw.WriteHeader(&tar.Header{
-							Name: "protoc-gen-go",
-							Mode: int64(0775),
-							Size: int64(len(in)),
-						})
-						tw.Write(in)
-						tw.Close()
-						gz.Close()
-					}
-					if err := ioutil.WriteFile(binPath+suffix, out.Bytes(), 0664); err != nil {
-						t.Fatal(err)
-					}
-				}
-			}
-		})
-	}
-	if *regenerate || *buildRelease {
-		t.SkipNow()
-	}
-}
-
-var copyrightRegex = []*regexp.Regexp{
-	regexp.MustCompile(`^// Copyright \d\d\d\d The Go Authors\. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file\.
-`),
-	// Generated .pb.go files from main protobuf repo.
-	regexp.MustCompile(`^// Protocol Buffers - Google's data interchange format
-// Copyright \d\d\d\d Google Inc\.  All rights reserved\.
-`),
-}
-
-func mustHaveCopyrightHeader(t *testing.T, files []string) {
-	var bad []string
-File:
-	for _, file := range files {
-		b, err := ioutil.ReadFile(file)
-		if err != nil {
-			t.Fatal(err)
-		}
-		for _, re := range copyrightRegex {
-			if loc := re.FindIndex(b); loc != nil && loc[0] == 0 {
-				continue File
-			}
-		}
-		bad = append(bad, file)
-	}
-	if len(bad) > 0 {
-		t.Fatalf("files with missing/bad copyright headers:\n  %v", strings.Join(bad, "\n  "))
-	}
-}
-
-type command struct {
-	Dir string
-	Env []string
-}
-
-func (c command) mustRun(t *testing.T, args ...string) string {
-	t.Helper()
-	stdout := new(bytes.Buffer)
-	stderr := new(bytes.Buffer)
-	cmd := exec.Command(args[0], args[1:]...)
-	cmd.Dir = "."
-	if c.Dir != "" {
-		cmd.Dir = c.Dir
-	}
-	cmd.Env = os.Environ()
-	if c.Env != nil {
-		cmd.Env = c.Env
-	}
-	cmd.Env = append(cmd.Env, "PWD="+cmd.Dir)
-	cmd.Stdout = stdout
-	cmd.Stderr = stderr
-	if err := cmd.Run(); err != nil {
-		t.Fatalf("executing (%v): %v\n%s%s", strings.Join(args, " "), err, stdout.String(), stderr.String())
-	}
-	return stdout.String()
-}
-
-func mustRunCommand(t *testing.T, args ...string) string {
-	t.Helper()
-	return command{}.mustRun(t, args...)
-}
diff --git a/internal/benchmarks/bench_test.go b/internal/benchmarks/bench_test.go
deleted file mode 100644
index 33b18fc..0000000
--- a/internal/benchmarks/bench_test.go
+++ /dev/null
@@ -1,216 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package bench_test
-
-import (
-	"flag"
-	"fmt"
-	"io/ioutil"
-	"os"
-	"os/exec"
-	"path/filepath"
-	"strings"
-	"testing"
-	"time"
-
-	"google.golang.org/protobuf/encoding/protojson"
-	"google.golang.org/protobuf/encoding/prototext"
-	"google.golang.org/protobuf/proto"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	preg "google.golang.org/protobuf/reflect/protoregistry"
-
-	benchpb "google.golang.org/protobuf/internal/testprotos/benchmarks"
-	_ "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message1/proto2"
-	_ "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message1/proto3"
-	_ "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message2"
-	_ "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message3"
-	_ "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message4"
-)
-
-func BenchmarkWire(b *testing.B) {
-	bench(b, "Unmarshal", func(ds dataset, pb *testing.PB) {
-		for pb.Next() {
-			for _, p := range ds.wire {
-				m := ds.messageType.New().Interface()
-				if err := proto.Unmarshal(p, m); err != nil {
-					b.Fatal(err)
-				}
-			}
-		}
-	})
-	bench(b, "Marshal", func(ds dataset, pb *testing.PB) {
-		for pb.Next() {
-			for _, m := range ds.messages {
-				if _, err := proto.Marshal(m); err != nil {
-					b.Fatal(err)
-				}
-			}
-		}
-	})
-	bench(b, "Size", func(ds dataset, pb *testing.PB) {
-		for pb.Next() {
-			for _, m := range ds.messages {
-				proto.Size(m)
-			}
-		}
-	})
-}
-
-func BenchmarkText(b *testing.B) {
-	bench(b, "Unmarshal", func(ds dataset, pb *testing.PB) {
-		for pb.Next() {
-			for _, p := range ds.text {
-				m := ds.messageType.New().Interface()
-				if err := prototext.Unmarshal(p, m); err != nil {
-					b.Fatal(err)
-				}
-			}
-		}
-	})
-	bench(b, "Marshal", func(ds dataset, pb *testing.PB) {
-		for pb.Next() {
-			for _, m := range ds.messages {
-				if _, err := prototext.Marshal(m); err != nil {
-					b.Fatal(err)
-				}
-			}
-		}
-	})
-}
-
-func BenchmarkJSON(b *testing.B) {
-	bench(b, "Unmarshal", func(ds dataset, pb *testing.PB) {
-		for pb.Next() {
-			for _, p := range ds.json {
-				m := ds.messageType.New().Interface()
-				if err := protojson.Unmarshal(p, m); err != nil {
-					b.Fatal(err)
-				}
-			}
-		}
-	})
-	bench(b, "Marshal", func(ds dataset, pb *testing.PB) {
-		for pb.Next() {
-			for _, m := range ds.messages {
-				if _, err := protojson.Marshal(m); err != nil {
-					b.Fatal(err)
-				}
-			}
-		}
-	})
-}
-
-func Benchmark(b *testing.B) {
-	bench(b, "Clone", func(ds dataset, pb *testing.PB) {
-		for pb.Next() {
-			for _, src := range ds.messages {
-				proto.Clone(src)
-			}
-		}
-	})
-}
-
-func bench(b *testing.B, name string, f func(dataset, *testing.PB)) {
-	b.Helper()
-	b.Run(name, func(b *testing.B) {
-		for _, ds := range datasets {
-			b.Run(ds.name, func(b *testing.B) {
-				b.RunParallel(func(pb *testing.PB) {
-					f(ds, pb)
-				})
-			})
-		}
-	})
-}
-
-type dataset struct {
-	name        string
-	messageType pref.MessageType
-	messages    []proto.Message
-	wire        [][]byte
-	text        [][]byte
-	json        [][]byte
-}
-
-var datasets []dataset
-
-func TestMain(m *testing.M) {
-	// Load benchmark data early, to avoid including this step in -cpuprofile/-memprofile.
-	//
-	// For the larger benchmark datasets (not downloaded by default), preparing
-	// this data is quite expensive. In addition, keeping the unmarshaled messages
-	// in memory makes GC scans a substantial fraction of runtime CPU cost.
-	//
-	// It would be nice to avoid loading the data we aren't going to use. Unfortunately,
-	// there isn't any simple way to tell what benchmarks are going to run; we can examine
-	// the -test.bench flag, but parsing it is quite complicated.
-	flag.Parse()
-	if v := flag.Lookup("test.bench").Value.(flag.Getter).Get(); v == "" {
-		// Don't bother loading data if we aren't going to run any benchmarks.
-		// Avoids slowing down go test ./...
-		return
-	}
-	if v := flag.Lookup("test.timeout").Value.(flag.Getter).Get().(time.Duration); v != 0 && v <= 10*time.Minute {
-		// The default test timeout of 10m is too short if running all the benchmarks.
-		// It's quite frustrating to discover this 10m through a benchmark run, so
-		// catch the condition.
-		//
-		// The -timeout and -test.timeout flags are handled by the go command, which
-		// forwards them along to the test binary, so we can't just set the default
-		// to something reasonable; the go command will override it with its default.
-		// We also can't ignore the timeout, because the go command kills a test which
-		// runs more than a minute past its deadline.
-		fmt.Fprintf(os.Stderr, "Test timeout of %v is probably too short; set -test.timeout=0.\n", v)
-		os.Exit(1)
-	}
-	out, err := exec.Command("git", "rev-parse", "--show-toplevel").CombinedOutput()
-	if err != nil {
-		panic(err)
-	}
-	repoRoot := strings.TrimSpace(string(out))
-	dataDir := filepath.Join(repoRoot, ".cache", "benchdata")
-	filepath.Walk(dataDir, func(path string, _ os.FileInfo, _ error) error {
-		if filepath.Ext(path) != ".pb" {
-			return nil
-		}
-		raw, err := ioutil.ReadFile(path)
-		if err != nil {
-			panic(err)
-		}
-		dspb := &benchpb.BenchmarkDataset{}
-		if err := proto.Unmarshal(raw, dspb); err != nil {
-			panic(err)
-		}
-		mt, err := preg.GlobalTypes.FindMessageByName(pref.FullName(dspb.MessageName))
-		if err != nil {
-			panic(err)
-		}
-		ds := dataset{
-			name:        dspb.Name,
-			messageType: mt,
-			wire:        dspb.Payload,
-		}
-		for _, payload := range dspb.Payload {
-			m := mt.New().Interface()
-			if err := proto.Unmarshal(payload, m); err != nil {
-				panic(err)
-			}
-			ds.messages = append(ds.messages, m)
-			b, err := prototext.Marshal(m)
-			if err != nil {
-				panic(err)
-			}
-			ds.text = append(ds.text, b)
-			b, err = protojson.Marshal(m)
-			if err != nil {
-				panic(err)
-			}
-			ds.json = append(ds.json, b)
-		}
-		datasets = append(datasets, ds)
-		return nil
-	})
-	os.Exit(m.Run())
-}
diff --git a/internal/benchmarks/download_benchdata.bash b/internal/benchmarks/download_benchdata.bash
deleted file mode 100755
index 30399e7..0000000
--- a/internal/benchmarks/download_benchdata.bash
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-# Copyright 2019 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-cd "$(git rev-parse --show-toplevel)"
-mkdir -p .cache/benchdata
-cd .cache/benchdata
-
-# Download small benchmark datasets.
-PROTOBUF_VERSION=v3.11.4
-curl -s -O https://raw.githubusercontent.com/protocolbuffers/protobuf/$PROTOBUF_VERSION/benchmarks/datasets/google_message1/proto2/dataset.google_message1_proto2.pb
-curl -s -O https://raw.githubusercontent.com/protocolbuffers/protobuf/$PROTOBUF_VERSION/benchmarks/datasets/google_message1/proto3/dataset.google_message1_proto3.pb
-curl -s -O https://raw.githubusercontent.com/protocolbuffers/protobuf/$PROTOBUF_VERSION/benchmarks/datasets/google_message2/dataset.google_message2.pb
-
-# Download large benchmark datasets.
-curl -s https://storage.googleapis.com/protobuf_opensource_benchmark_data/datasets.tar.gz | tar zx
diff --git a/internal/benchmarks/micro/micro_test.go b/internal/benchmarks/micro/micro_test.go
deleted file mode 100644
index dd96744..0000000
--- a/internal/benchmarks/micro/micro_test.go
+++ /dev/null
@@ -1,198 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// This package contains microbenchmarks exercising specific areas of interest.
-// The benchmarks here are not comprehensive and are not necessarily indicative
-// real-world performance.
-
-package micro_test
-
-import (
-	"testing"
-
-	"google.golang.org/protobuf/internal/impl"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/runtime/protoiface"
-	"google.golang.org/protobuf/types/known/emptypb"
-
-	micropb "google.golang.org/protobuf/internal/testprotos/benchmarks/micro"
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-)
-
-// BenchmarkEmptyMessage tests a google.protobuf.Empty.
-//
-// It measures per-operation overhead.
-func BenchmarkEmptyMessage(b *testing.B) {
-	b.Run("Wire/Marshal", func(b *testing.B) {
-		b.RunParallel(func(pb *testing.PB) {
-			m := &emptypb.Empty{}
-			for pb.Next() {
-				if _, err := proto.Marshal(m); err != nil {
-					b.Fatal(err)
-				}
-			}
-		})
-	})
-	b.Run("Wire/Unmarshal", func(b *testing.B) {
-		opts := proto.UnmarshalOptions{
-			Merge: true,
-		}
-		b.RunParallel(func(pb *testing.PB) {
-			m := &emptypb.Empty{}
-			for pb.Next() {
-				if err := opts.Unmarshal([]byte{}, m); err != nil {
-					b.Fatal(err)
-				}
-			}
-		})
-	})
-	b.Run("Wire/Validate", func(b *testing.B) {
-		b.RunParallel(func(pb *testing.PB) {
-			mt := (&emptypb.Empty{}).ProtoReflect().Type()
-			for pb.Next() {
-				_, got := impl.Validate(mt, protoiface.UnmarshalInput{})
-				want := impl.ValidationValid
-				if got != want {
-					b.Fatalf("Validate = %v, want %v", got, want)
-				}
-			}
-		})
-	})
-	b.Run("Clone", func(b *testing.B) {
-		b.RunParallel(func(pb *testing.PB) {
-			m := &emptypb.Empty{}
-			for pb.Next() {
-				proto.Clone(m)
-			}
-		})
-	})
-}
-
-// BenchmarkRepeatedInt32 tests a message containing 500 non-packed repeated int32s.
-//
-// For unmarshal operations, it measures the cost of the field decode loop, since each
-// item in the repeated field has an individual tag and value.
-func BenchmarkRepeatedInt32(b *testing.B) {
-	m := &testpb.TestAllTypes{}
-	for i := int32(0); i < 500; i++ {
-		m.RepeatedInt32 = append(m.RepeatedInt32, i)
-	}
-	w, err := proto.Marshal(m)
-	if err != nil {
-		b.Fatal(err)
-	}
-	b.Run("Wire/Marshal", func(b *testing.B) {
-		b.RunParallel(func(pb *testing.PB) {
-			for pb.Next() {
-				if _, err := proto.Marshal(m); err != nil {
-					b.Fatal(err)
-				}
-			}
-		})
-	})
-	b.Run("Wire/Unmarshal", func(b *testing.B) {
-		opts := proto.UnmarshalOptions{
-			Merge: true,
-		}
-		b.RunParallel(func(pb *testing.PB) {
-			m := &testpb.TestAllTypes{}
-			for pb.Next() {
-				m.RepeatedInt32 = m.RepeatedInt32[:0]
-				if err := opts.Unmarshal(w, m); err != nil {
-					b.Fatal(err)
-				}
-			}
-		})
-	})
-	b.Run("Wire/Validate", func(b *testing.B) {
-		b.RunParallel(func(pb *testing.PB) {
-			mt := (&testpb.TestAllTypes{}).ProtoReflect().Type()
-			for pb.Next() {
-				_, got := impl.Validate(mt, protoiface.UnmarshalInput{
-					Buf: w,
-				})
-				want := impl.ValidationValid
-				if got != want {
-					b.Fatalf("Validate = %v, want %v", got, want)
-				}
-			}
-		})
-	})
-	b.Run("Clone", func(b *testing.B) {
-		b.RunParallel(func(pb *testing.PB) {
-			for pb.Next() {
-				proto.Clone(m)
-			}
-		})
-	})
-}
-
-// BenchmarkRequired tests a message containing a required field.
-func BenchmarkRequired(b *testing.B) {
-	m := &micropb.SixteenRequired{
-		F1:  proto.Int32(1),
-		F2:  proto.Int32(1),
-		F3:  proto.Int32(1),
-		F4:  proto.Int32(1),
-		F5:  proto.Int32(1),
-		F6:  proto.Int32(1),
-		F7:  proto.Int32(1),
-		F8:  proto.Int32(1),
-		F9:  proto.Int32(1),
-		F10: proto.Int32(1),
-		F11: proto.Int32(1),
-		F12: proto.Int32(1),
-		F13: proto.Int32(1),
-		F14: proto.Int32(1),
-		F15: proto.Int32(1),
-		F16: proto.Int32(1),
-	}
-	w, err := proto.Marshal(m)
-	if err != nil {
-		b.Fatal(err)
-	}
-	b.Run("Wire/Marshal", func(b *testing.B) {
-		b.RunParallel(func(pb *testing.PB) {
-			for pb.Next() {
-				if _, err := proto.Marshal(m); err != nil {
-					b.Fatal(err)
-				}
-			}
-		})
-	})
-	b.Run("Wire/Unmarshal", func(b *testing.B) {
-		opts := proto.UnmarshalOptions{
-			Merge: true,
-		}
-		b.RunParallel(func(pb *testing.PB) {
-			m := &micropb.SixteenRequired{}
-			for pb.Next() {
-				if err := opts.Unmarshal(w, m); err != nil {
-					b.Fatal(err)
-				}
-			}
-		})
-	})
-	b.Run("Wire/Validate", func(b *testing.B) {
-		b.RunParallel(func(pb *testing.PB) {
-			mt := (&micropb.SixteenRequired{}).ProtoReflect().Type()
-			for pb.Next() {
-				_, got := impl.Validate(mt, protoiface.UnmarshalInput{
-					Buf: w,
-				})
-				want := impl.ValidationValid
-				if got != want {
-					b.Fatalf("Validate = %v, want %v", got, want)
-				}
-			}
-		})
-	})
-	b.Run("Clone", func(b *testing.B) {
-		b.RunParallel(func(pb *testing.PB) {
-			for pb.Next() {
-				proto.Clone(m)
-			}
-		})
-	})
-}
diff --git a/internal/cmd/generate-corpus/main.go b/internal/cmd/generate-corpus/main.go
deleted file mode 100644
index 8f77dea..0000000
--- a/internal/cmd/generate-corpus/main.go
+++ /dev/null
@@ -1,137 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Program generate-corpus generates a seed corpus for the fuzzers.
-//
-// This command is not run automatically because its output is not stable.
-// It's present in source control mainly as documentation of where the seed
-// corpus came from.
-package main
-
-import (
-	"crypto/sha1"
-	"fmt"
-	"io/ioutil"
-	"log"
-
-	"google.golang.org/protobuf/encoding/protojson"
-	"google.golang.org/protobuf/encoding/prototext"
-	"google.golang.org/protobuf/proto"
-
-	fuzzpb "google.golang.org/protobuf/internal/testprotos/fuzz"
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-)
-
-var messages = []proto.Message{
-	&fuzzpb.Fuzz{
-		TestAllTypes: &testpb.TestAllTypes{
-			OptionalInt32:      proto.Int32(1001),
-			OptionalInt64:      proto.Int64(1002),
-			OptionalUint32:     proto.Uint32(1003),
-			OptionalUint64:     proto.Uint64(1004),
-			OptionalSint32:     proto.Int32(1005),
-			OptionalSint64:     proto.Int64(1006),
-			OptionalFixed32:    proto.Uint32(1007),
-			OptionalFixed64:    proto.Uint64(1008),
-			OptionalSfixed32:   proto.Int32(1009),
-			OptionalSfixed64:   proto.Int64(1010),
-			OptionalFloat:      proto.Float32(1011.5),
-			OptionalDouble:     proto.Float64(1012.5),
-			OptionalBool:       proto.Bool(true),
-			OptionalString:     proto.String("string"),
-			OptionalBytes:      []byte("bytes"),
-			OptionalNestedEnum: testpb.TestAllTypes_BAR.Enum(),
-			Optionalgroup: &testpb.TestAllTypes_OptionalGroup{
-				A: proto.Int32(1017),
-			},
-			OptionalNestedMessage: &testpb.TestAllTypes_NestedMessage{
-				A: proto.Int32(42),
-				Corecursive: &testpb.TestAllTypes{
-					OptionalInt32: proto.Int32(43),
-				},
-			},
-			RepeatedInt32:    []int32{1001, 2001},
-			RepeatedInt64:    []int64{1002, 2002},
-			RepeatedUint32:   []uint32{1003, 2003},
-			RepeatedUint64:   []uint64{1004, 2004},
-			RepeatedSint32:   []int32{1005, 2005},
-			RepeatedSint64:   []int64{1006, 2006},
-			RepeatedFixed32:  []uint32{1007, 2007},
-			RepeatedFixed64:  []uint64{1008, 2008},
-			RepeatedSfixed32: []int32{1009, 2009},
-			RepeatedSfixed64: []int64{1010, 2010},
-			RepeatedFloat:    []float32{1011.5, 2011.5},
-			RepeatedDouble:   []float64{1012.5, 2012.5},
-			RepeatedBool:     []bool{true, false},
-			RepeatedString:   []string{"foo", "bar"},
-			RepeatedBytes:    [][]byte{[]byte("FOO"), []byte("BAR")},
-			RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{
-				testpb.TestAllTypes_FOO,
-				testpb.TestAllTypes_BAR,
-			},
-			RepeatedNestedMessage: []*testpb.TestAllTypes_NestedMessage{
-				{A: proto.Int32(1)},
-				nil,
-				{A: proto.Int32(2)},
-			},
-			Repeatedgroup: []*testpb.TestAllTypes_RepeatedGroup{
-				{A: proto.Int32(1017)},
-				nil,
-				{A: proto.Int32(2017)},
-			},
-			MapInt32Int32:       map[int32]int32{1056: 1156, 2056: 2156},
-			MapInt64Int64:       map[int64]int64{1057: 1157, 2057: 2157},
-			MapUint32Uint32:     map[uint32]uint32{1058: 1158, 2058: 2158},
-			MapUint64Uint64:     map[uint64]uint64{1059: 1159, 2059: 2159},
-			MapSint32Sint32:     map[int32]int32{1060: 1160, 2060: 2160},
-			MapSint64Sint64:     map[int64]int64{1061: 1161, 2061: 2161},
-			MapFixed32Fixed32:   map[uint32]uint32{1062: 1162, 2062: 2162},
-			MapFixed64Fixed64:   map[uint64]uint64{1063: 1163, 2063: 2163},
-			MapSfixed32Sfixed32: map[int32]int32{1064: 1164, 2064: 2164},
-			MapSfixed64Sfixed64: map[int64]int64{1065: 1165, 2065: 2165},
-			MapInt32Float:       map[int32]float32{1066: 1166.5, 2066: 2166.5},
-			MapInt32Double:      map[int32]float64{1067: 1167.5, 2067: 2167.5},
-			MapBoolBool:         map[bool]bool{true: false, false: true},
-			MapStringString:     map[string]string{"69.1.key": "69.1.val", "69.2.key": "69.2.val"},
-			MapStringBytes:      map[string][]byte{"70.1.key": []byte("70.1.val"), "70.2.key": []byte("70.2.val")},
-			MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{
-				"71.1.key": {A: proto.Int32(1171)},
-				"71.2.key": {A: proto.Int32(2171)},
-			},
-			MapStringNestedEnum: map[string]testpb.TestAllTypes_NestedEnum{
-				"73.1.key": testpb.TestAllTypes_FOO,
-				"73.2.key": testpb.TestAllTypes_BAR,
-			},
-			OneofField: &testpb.TestAllTypes_OneofUint32{1111},
-		},
-	},
-}
-
-func main() {
-	for _, m := range messages {
-		wire, err := proto.Marshal(m)
-		if err != nil {
-			log.Fatal(err)
-		}
-		if err := ioutil.WriteFile(fmt.Sprintf("internal/fuzz/wirefuzz/corpus/%x", sha1.Sum(wire)), wire, 0777); err != nil {
-			log.Fatal(err)
-		}
-
-		text, err := prototext.Marshal(m)
-		if err != nil {
-			log.Fatal(err)
-		}
-		if err := ioutil.WriteFile(fmt.Sprintf("internal/fuzz/textfuzz/corpus/%x", sha1.Sum(text)), text, 0777); err != nil {
-			log.Fatal(err)
-		}
-
-		json, err := protojson.Marshal(m)
-		if err != nil {
-			log.Fatal(err)
-		}
-		if err := ioutil.WriteFile(fmt.Sprintf("internal/fuzz/jsonfuzz/corpus/%x", sha1.Sum(json)), json, 0777); err != nil {
-			log.Fatal(err)
-		}
-	}
-}
diff --git a/internal/cmd/generate-protos/main.go b/internal/cmd/generate-protos/main.go
deleted file mode 100644
index fbb1be9..0000000
--- a/internal/cmd/generate-protos/main.go
+++ /dev/null
@@ -1,425 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:generate go run . -execute
-
-package main
-
-import (
-	"bytes"
-	"flag"
-	"fmt"
-	"go/format"
-	"io/ioutil"
-	"os"
-	"os/exec"
-	"path"
-	"path/filepath"
-	"regexp"
-	"sort"
-	"strconv"
-	"strings"
-
-	gengo "google.golang.org/protobuf/cmd/protoc-gen-go/internal_gengo"
-	"google.golang.org/protobuf/compiler/protogen"
-	"google.golang.org/protobuf/internal/detrand"
-)
-
-func init() {
-	// Determine repository root path.
-	out, err := exec.Command("git", "rev-parse", "--show-toplevel").CombinedOutput()
-	check(err)
-	repoRoot = strings.TrimSpace(string(out))
-
-	// Determine the module path.
-	cmd := exec.Command("go", "list", "-m", "-f", "{{.Path}}")
-	cmd.Dir = repoRoot
-	out, err = cmd.CombinedOutput()
-	check(err)
-	modulePath = strings.TrimSpace(string(out))
-
-	// When the environment variable RUN_AS_PROTOC_PLUGIN is set,
-	// we skip running main and instead act as a protoc plugin.
-	// This allows the binary to pass itself to protoc.
-	if plugin := os.Getenv("RUN_AS_PROTOC_PLUGIN"); plugin != "" {
-		// Disable deliberate output instability for generated files.
-		// This is reasonable since we fully control the output.
-		detrand.Disable()
-
-		protogen.Options{}.Run(func(gen *protogen.Plugin) error {
-			for _, file := range gen.Files {
-				if file.Generate {
-					gengo.GenerateVersionMarkers = false
-					gengo.GenerateFile(gen, file)
-					generateIdentifiers(gen, file)
-					generateSouceContextStringer(gen, file)
-				}
-			}
-			gen.SupportedFeatures = gengo.SupportedFeatures
-			return nil
-		})
-		os.Exit(0)
-	}
-}
-
-var (
-	run        bool
-	protoRoot  string
-	repoRoot   string
-	modulePath string
-
-	generatedPreamble = []string{
-		"// Copyright 2019 The Go Authors. All rights reserved.",
-		"// Use of this source code is governed by a BSD-style",
-		"// license that can be found in the LICENSE file.",
-		"",
-		"// Code generated by generate-protos. DO NOT EDIT.",
-		"",
-	}
-)
-
-func main() {
-	flag.BoolVar(&run, "execute", false, "Write generated files to destination.")
-	flag.StringVar(&protoRoot, "protoroot", os.Getenv("PROTOBUF_ROOT"), "The root of the protobuf source tree.")
-	flag.Parse()
-	if protoRoot == "" {
-		panic("protobuf source root is not set")
-	}
-
-	generateLocalProtos()
-	generateRemoteProtos()
-}
-
-func generateLocalProtos() {
-	tmpDir, err := ioutil.TempDir(repoRoot, "tmp")
-	check(err)
-	defer os.RemoveAll(tmpDir)
-
-	// Generate all local proto files (except version-locked files).
-	dirs := []struct {
-		path     string
-		pkgPaths map[string]string // mapping of .proto path to Go package path
-		annotate map[string]bool   // .proto files to annotate
-		exclude  map[string]bool   // .proto files to exclude from generation
-	}{{
-		path:     "cmd/protoc-gen-go/testdata",
-		pkgPaths: map[string]string{"cmd/protoc-gen-go/testdata/nopackage/nopackage.proto": "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/nopackage"},
-		annotate: map[string]bool{"cmd/protoc-gen-go/testdata/annotations/annotations.proto": true},
-	}, {
-		path:    "internal/testprotos",
-		exclude: map[string]bool{"internal/testprotos/irregular/irregular.proto": true},
-	}}
-	excludeRx := regexp.MustCompile(`legacy/.*/`)
-	for _, d := range dirs {
-		subDirs := map[string]bool{}
-
-		srcDir := filepath.Join(repoRoot, filepath.FromSlash(d.path))
-		filepath.Walk(srcDir, func(srcPath string, _ os.FileInfo, _ error) error {
-			if !strings.HasSuffix(srcPath, ".proto") || excludeRx.MatchString(srcPath) {
-				return nil
-			}
-			relPath, err := filepath.Rel(repoRoot, srcPath)
-			check(err)
-
-			srcRelPath, err := filepath.Rel(srcDir, srcPath)
-			check(err)
-			subDirs[filepath.Dir(srcRelPath)] = true
-
-			if d.exclude[filepath.ToSlash(relPath)] {
-				return nil
-			}
-
-			opts := "module=" + modulePath
-			for protoPath, goPkgPath := range d.pkgPaths {
-				opts += fmt.Sprintf(",M%v=%v", protoPath, goPkgPath)
-			}
-			if d.annotate[filepath.ToSlash(relPath)] {
-				opts += ",annotate_code"
-			}
-			protoc("-I"+filepath.Join(protoRoot, "src"), "-I"+repoRoot, "--go_out="+opts+":"+tmpDir, relPath)
-			return nil
-		})
-
-		// For directories in testdata, generate a test that links in all
-		// generated packages to ensure that it builds and initializes properly.
-		// This is done because "go build ./..." does not build sub-packages
-		// under testdata.
-		if filepath.Base(d.path) == "testdata" {
-			var imports []string
-			for sd := range subDirs {
-				imports = append(imports, fmt.Sprintf("_ %q", path.Join(modulePath, d.path, filepath.ToSlash(sd))))
-			}
-			sort.Strings(imports)
-
-			s := strings.Join(append(generatedPreamble, []string{
-				"package main",
-				"",
-				"import (" + strings.Join(imports, "\n") + ")",
-			}...), "\n")
-			b, err := format.Source([]byte(s))
-			check(err)
-			check(ioutil.WriteFile(filepath.Join(tmpDir, filepath.FromSlash(d.path+"/gen_test.go")), b, 0664))
-		}
-	}
-
-	syncOutput(repoRoot, tmpDir)
-}
-
-func generateRemoteProtos() {
-	tmpDir, err := ioutil.TempDir(repoRoot, "tmp")
-	check(err)
-	defer os.RemoveAll(tmpDir)
-
-	// Generate all remote proto files.
-	files := []struct{ prefix, path, goPkgPath string }{
-		// Well-known protos.
-		{"src", "google/protobuf/any.proto", ""},
-		{"src", "google/protobuf/api.proto", ""},
-		{"src", "google/protobuf/duration.proto", ""},
-		{"src", "google/protobuf/empty.proto", ""},
-		{"src", "google/protobuf/field_mask.proto", ""},
-		{"src", "google/protobuf/source_context.proto", ""},
-		{"src", "google/protobuf/struct.proto", ""},
-		{"src", "google/protobuf/timestamp.proto", ""},
-		{"src", "google/protobuf/type.proto", ""},
-		{"src", "google/protobuf/wrappers.proto", ""},
-
-		// Compiler protos.
-		{"src", "google/protobuf/compiler/plugin.proto", ""},
-		{"src", "google/protobuf/descriptor.proto", ""},
-
-		// Conformance protos.
-		{"", "conformance/conformance.proto", "google.golang.org/protobuf/internal/testprotos/conformance;conformance"},
-		{"src", "google/protobuf/test_messages_proto2.proto", "google.golang.org/protobuf/internal/testprotos/conformance;conformance"},
-		{"src", "google/protobuf/test_messages_proto3.proto", "google.golang.org/protobuf/internal/testprotos/conformance;conformance"},
-
-		// Benchmark protos.
-		{"benchmarks", "benchmarks.proto", "google.golang.org/protobuf/internal/testprotos/benchmarks;benchmarks"},
-		{"benchmarks", "datasets/google_message1/proto2/benchmark_message1_proto2.proto", "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message1/proto2;proto2"},
-		{"benchmarks", "datasets/google_message1/proto3/benchmark_message1_proto3.proto", "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message1/proto3;proto3"},
-		{"benchmarks", "datasets/google_message2/benchmark_message2.proto", "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message2;google_message2"},
-		{"benchmarks", "datasets/google_message3/benchmark_message3.proto", "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message3;google_message3"},
-		{"benchmarks", "datasets/google_message3/benchmark_message3_1.proto", "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message3;google_message3"},
-		{"benchmarks", "datasets/google_message3/benchmark_message3_2.proto", "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message3;google_message3"},
-		{"benchmarks", "datasets/google_message3/benchmark_message3_3.proto", "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message3;google_message3"},
-		{"benchmarks", "datasets/google_message3/benchmark_message3_4.proto", "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message3;google_message3"},
-		{"benchmarks", "datasets/google_message3/benchmark_message3_5.proto", "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message3;google_message3"},
-		{"benchmarks", "datasets/google_message3/benchmark_message3_6.proto", "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message3;google_message3"},
-		{"benchmarks", "datasets/google_message3/benchmark_message3_7.proto", "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message3;google_message3"},
-		{"benchmarks", "datasets/google_message3/benchmark_message3_8.proto", "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message3;google_message3"},
-		{"benchmarks", "datasets/google_message4/benchmark_message4.proto", "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message4;google_message4"},
-		{"benchmarks", "datasets/google_message4/benchmark_message4_1.proto", "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message4;google_message4"},
-		{"benchmarks", "datasets/google_message4/benchmark_message4_2.proto", "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message4;google_message4"},
-		{"benchmarks", "datasets/google_message4/benchmark_message4_3.proto", "google.golang.org/protobuf/internal/testprotos/benchmarks/datasets/google_message4;google_message4"},
-	}
-
-	opts := "module=" + modulePath
-	for _, file := range files {
-		if file.goPkgPath != "" {
-			opts += fmt.Sprintf(",M%v=%v", file.path, file.goPkgPath)
-		}
-	}
-	for _, f := range files {
-		protoc("-I"+filepath.Join(protoRoot, f.prefix), "--go_out="+opts+":"+tmpDir, f.path)
-	}
-
-	syncOutput(repoRoot, tmpDir)
-}
-
-func protoc(args ...string) {
-	// TODO: Remove --experimental_allow_proto3_optional flag.
-	cmd := exec.Command("protoc", "--plugin=protoc-gen-go="+os.Args[0], "--experimental_allow_proto3_optional")
-	cmd.Args = append(cmd.Args, args...)
-	cmd.Env = append(os.Environ(), "RUN_AS_PROTOC_PLUGIN=1")
-	out, err := cmd.CombinedOutput()
-	if err != nil {
-		fmt.Printf("executing: %v\n%s\n", strings.Join(cmd.Args, " "), out)
-	}
-	check(err)
-}
-
-// generateIdentifiers generates an internal package for descriptor.proto
-// and well-known types.
-func generateIdentifiers(gen *protogen.Plugin, file *protogen.File) {
-	if file.Desc.Package() != "google.protobuf" {
-		return
-	}
-
-	importPath := modulePath + "/internal/genid"
-	base := strings.TrimSuffix(path.Base(file.Desc.Path()), ".proto")
-	g := gen.NewGeneratedFile(importPath+"/"+base+"_gen.go", protogen.GoImportPath(importPath))
-	for _, s := range generatedPreamble {
-		g.P(s)
-	}
-	g.P("package ", path.Base(importPath))
-	g.P()
-
-	g.P("const ", file.GoDescriptorIdent.GoName, " = ", strconv.Quote(file.Desc.Path()))
-	g.P()
-
-	var processEnums func([]*protogen.Enum)
-	var processMessages func([]*protogen.Message)
-	const protoreflectPackage = protogen.GoImportPath("google.golang.org/protobuf/reflect/protoreflect")
-	processEnums = func(enums []*protogen.Enum) {
-		for _, enum := range enums {
-			g.P("// Full and short names for ", enum.Desc.FullName(), ".")
-			g.P("const (")
-			g.P(enum.GoIdent.GoName, "_enum_fullname = ", strconv.Quote(string(enum.Desc.FullName())))
-			g.P(enum.GoIdent.GoName, "_enum_name = ", strconv.Quote(string(enum.Desc.Name())))
-			g.P(")")
-			g.P()
-		}
-	}
-	processMessages = func(messages []*protogen.Message) {
-		for _, message := range messages {
-			g.P("// Names for ", message.Desc.FullName(), ".")
-			g.P("const (")
-			g.P(message.GoIdent.GoName, "_message_name ", protoreflectPackage.Ident("Name"), " = ", strconv.Quote(string(message.Desc.Name())))
-			g.P(message.GoIdent.GoName, "_message_fullname ", protoreflectPackage.Ident("FullName"), " = ", strconv.Quote(string(message.Desc.FullName())))
-			g.P(")")
-			g.P()
-
-			if len(message.Fields) > 0 {
-				g.P("// Field names for ", message.Desc.FullName(), ".")
-				g.P("const (")
-				for _, field := range message.Fields {
-					g.P(message.GoIdent.GoName, "_", field.GoName, "_field_name ", protoreflectPackage.Ident("Name"), " = ", strconv.Quote(string(field.Desc.Name())))
-				}
-				g.P()
-				for _, field := range message.Fields {
-					g.P(message.GoIdent.GoName, "_", field.GoName, "_field_fullname ", protoreflectPackage.Ident("FullName"), " = ", strconv.Quote(string(field.Desc.FullName())))
-				}
-				g.P(")")
-				g.P()
-
-				g.P("// Field numbers for ", message.Desc.FullName(), ".")
-				g.P("const (")
-				for _, field := range message.Fields {
-					g.P(message.GoIdent.GoName, "_", field.GoName, "_field_number ", protoreflectPackage.Ident("FieldNumber"), " = ", field.Desc.Number())
-				}
-				g.P(")")
-				g.P()
-			}
-
-			if len(message.Oneofs) > 0 {
-				g.P("// Oneof names for ", message.Desc.FullName(), ".")
-				g.P("const (")
-				for _, oneof := range message.Oneofs {
-					g.P(message.GoIdent.GoName, "_", oneof.GoName, "_oneof_name ", protoreflectPackage.Ident("Name"), " = ", strconv.Quote(string(oneof.Desc.Name())))
-				}
-				g.P()
-				for _, oneof := range message.Oneofs {
-					g.P(message.GoIdent.GoName, "_", oneof.GoName, "_oneof_fullname ", protoreflectPackage.Ident("FullName"), " = ", strconv.Quote(string(oneof.Desc.FullName())))
-				}
-				g.P(")")
-				g.P()
-			}
-
-			processEnums(message.Enums)
-			processMessages(message.Messages)
-		}
-	}
-	processEnums(file.Enums)
-	processMessages(file.Messages)
-}
-
-// generateSouceContextStringer generates the implementation for the
-// protoreflect.SourcePath.String method by using information present
-// in the descriptor.proto.
-func generateSouceContextStringer(gen *protogen.Plugin, file *protogen.File) {
-	if file.Desc.Path() != "google/protobuf/descriptor.proto" {
-		return
-	}
-
-	importPath := modulePath + "/reflect/protoreflect"
-	g := gen.NewGeneratedFile(importPath+"/source_gen.go", protogen.GoImportPath(importPath))
-	for _, s := range generatedPreamble {
-		g.P(s)
-	}
-	g.P("package ", path.Base(importPath))
-	g.P()
-
-	var messages []*protogen.Message
-	for _, message := range file.Messages {
-		if message.Desc.Name() == "FileDescriptorProto" {
-			messages = append(messages, message)
-		}
-	}
-	seen := make(map[*protogen.Message]bool)
-
-	for len(messages) > 0 {
-		m := messages[0]
-		messages = messages[1:]
-		if seen[m] {
-			continue
-		}
-		seen[m] = true
-
-		g.P("func (p *SourcePath) append", m.GoIdent.GoName, "(b []byte) []byte {")
-		g.P("if len(*p) == 0 { return b }")
-		g.P("switch (*p)[0] {")
-		for _, f := range m.Fields {
-			g.P("case ", f.Desc.Number(), ":")
-			var cardinality string
-			switch {
-			case f.Desc.IsMap():
-				panic("maps are not supported")
-			case f.Desc.IsList():
-				cardinality = "Repeated"
-			default:
-				cardinality = "Singular"
-			}
-			nextAppender := "nil"
-			if f.Message != nil {
-				nextAppender = "(*SourcePath).append" + f.Message.GoIdent.GoName
-				messages = append(messages, f.Message)
-			}
-			g.P("b = p.append", cardinality, "Field(b, ", strconv.Quote(string(f.Desc.Name())), ", ", nextAppender, ")")
-		}
-		g.P("}")
-		g.P("return b")
-		g.P("}")
-		g.P()
-	}
-}
-
-func syncOutput(dstDir, srcDir string) {
-	filepath.Walk(srcDir, func(srcPath string, _ os.FileInfo, _ error) error {
-		if !strings.HasSuffix(srcPath, ".go") && !strings.HasSuffix(srcPath, ".meta") {
-			return nil
-		}
-		relPath, err := filepath.Rel(srcDir, srcPath)
-		check(err)
-		dstPath := filepath.Join(dstDir, relPath)
-
-		if run {
-			if copyFile(dstPath, srcPath) {
-				fmt.Println("#", relPath)
-			}
-		} else {
-			cmd := exec.Command("diff", dstPath, srcPath, "-N", "-u")
-			cmd.Stdout = os.Stdout
-			cmd.Run()
-		}
-		return nil
-	})
-}
-
-func copyFile(dstPath, srcPath string) (changed bool) {
-	src, err := ioutil.ReadFile(srcPath)
-	check(err)
-	check(os.MkdirAll(filepath.Dir(dstPath), 0775))
-	dst, _ := ioutil.ReadFile(dstPath)
-	if bytes.Equal(src, dst) {
-		return false
-	}
-	check(ioutil.WriteFile(dstPath, src, 0664))
-	return true
-}
-
-func check(err error) {
-	if err != nil {
-		panic(err)
-	}
-}
diff --git a/internal/cmd/generate-types/impl.go b/internal/cmd/generate-types/impl.go
deleted file mode 100644
index 07657c4..0000000
--- a/internal/cmd/generate-types/impl.go
+++ /dev/null
@@ -1,872 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-import (
-	"text/template"
-)
-
-func generateImplCodec() string {
-	return mustExecute(implCodecTemplate, ProtoKinds)
-}
-
-var implCodecTemplate = template.Must(template.New("").Parse(`
-{{- /*
-  IsZero is an expression testing if 'v' is the zero value.
-*/ -}}
-{{- define "IsZero" -}}
-{{if eq .WireType "Bytes" -}}
-len(v) == 0
-{{- else if or (eq .Name "Double") (eq .Name "Float") -}}
-v == 0 && !math.Signbit(float64(v))
-{{- else -}}
-v == {{.GoType.Zero}}
-{{- end -}}
-{{- end -}}
-
-{{- /*
-  Size is an expression computing the size of 'v'.
-*/ -}}
-{{- define "Size" -}}
-{{- if .WireType.ConstSize -}}
-protowire.Size{{.WireType}}()
-{{- else if eq .WireType "Bytes" -}}
-protowire.SizeBytes(len({{.FromGoType}}))
-{{- else -}}
-protowire.Size{{.WireType}}({{.FromGoType}})
-{{- end -}}
-{{- end -}}
-
-{{- define "SizeValue" -}}
-{{- if .WireType.ConstSize -}}
-protowire.Size{{.WireType}}()
-{{- else if eq .WireType "Bytes" -}}
-protowire.SizeBytes(len({{.FromValue}}))
-{{- else -}}
-protowire.Size{{.WireType}}({{.FromValue}})
-{{- end -}}
-{{- end -}}
-
-{{- /*
-  Append is a set of statements appending 'v' to 'b'.
-*/ -}}
-{{- define "Append" -}}
-{{- if eq .Name "String" -}}
-b = protowire.AppendString(b, {{.FromGoType}})
-{{- else -}}
-b = protowire.Append{{.WireType}}(b, {{.FromGoType}})
-{{- end -}}
-{{- end -}}
-
-{{- define "AppendValue" -}}
-{{- if eq .Name "String" -}}
-b = protowire.AppendString(b, {{.FromValue}})
-{{- else -}}
-b = protowire.Append{{.WireType}}(b, {{.FromValue}})
-{{- end -}}
-{{- end -}}
-
-{{- define "Consume" -}}
-{{- if eq .WireType "Varint" -}}
-var v uint64
-var n int
-if len(b) >= 1 && b[0] < 0x80 {
-	v = uint64(b[0])
-	n = 1
-} else if len(b) >= 2 && b[1] < 128 {
-	v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-	n = 2
-} else {
-	v, n = protowire.ConsumeVarint(b)
-}
-{{- else -}}
-v, n := protowire.Consume{{.WireType}}(b)
-{{- end -}}
-{{- end -}}
-
-{{- range .}}
-
-{{- if .FromGoType }}
-// size{{.Name}} returns the size of wire encoding a {{.GoType}} pointer as a {{.Name}}.
-func size{{.Name}}(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	{{if not .WireType.ConstSize -}}
-	v := *p.{{.GoType.PointerMethod}}()
-	{{- end}}
-	return f.tagsize + {{template "Size" .}}
-}
-
-// append{{.Name}} wire encodes a {{.GoType}} pointer as a {{.Name}}.
-func append{{.Name}}(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.{{.GoType.PointerMethod}}()
-	b = protowire.AppendVarint(b, f.wiretag)
-	{{template "Append" .}}
-	return b, nil
-}
-
-// consume{{.Name}} wire decodes a {{.GoType}} pointer as a {{.Name}}.
-func consume{{.Name}}(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != {{.WireType.Expr}} {
-		return out, errUnknown
-	}
-	{{template "Consume" .}}
-	if n < 0 {
-		return out, errDecode
-	}
-	*p.{{.GoType.PointerMethod}}() = {{.ToGoType}}
-	out.n = n
-	return out, nil
-}
-
-var coder{{.Name}} = pointerCoderFuncs{
-	size:      size{{.Name}},
-	marshal:   append{{.Name}},
-	unmarshal: consume{{.Name}},
-	merge:     merge{{.GoType.PointerMethod}},
-}
-
-{{if or (eq .Name "Bytes") (eq .Name "String")}}
-// append{{.Name}}ValidateUTF8 wire encodes a {{.GoType}} pointer as a {{.Name}}.
-func append{{.Name}}ValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.{{.GoType.PointerMethod}}()
-	b = protowire.AppendVarint(b, f.wiretag)
-	{{template "Append" .}}
-	if !utf8.Valid{{if eq .Name "String"}}String{{end}}(v) {
-		return b, errInvalidUTF8{}
-	}
-	return b, nil
-}
-
-// consume{{.Name}}ValidateUTF8 wire decodes a {{.GoType}} pointer as a {{.Name}}.
-func consume{{.Name}}ValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != {{.WireType.Expr}} {
-		return out, errUnknown
-	}
-	{{template "Consume" .}}
-	if n < 0 {
-		return out, errDecode
-	}
-	if !utf8.Valid(v) {
-		return out, errInvalidUTF8{}
-	}
-	*p.{{.GoType.PointerMethod}}() = {{.ToGoType}}
-	out.n = n
-	return out, nil
-}
-
-var coder{{.Name}}ValidateUTF8 = pointerCoderFuncs{
-	size:      size{{.Name}},
-	marshal:   append{{.Name}}ValidateUTF8,
-	unmarshal: consume{{.Name}}ValidateUTF8,
-	merge:     merge{{.GoType.PointerMethod}},
-}
-{{end}}
-
-// size{{.Name}}NoZero returns the size of wire encoding a {{.GoType}} pointer as a {{.Name}}.
-// The zero value is not encoded.
-func size{{.Name}}NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.{{.GoType.PointerMethod}}()
-	if {{template "IsZero" .}} {
-		return 0
-	}
-	return f.tagsize + {{template "Size" .}}
-}
-
-// append{{.Name}}NoZero wire encodes a {{.GoType}} pointer as a {{.Name}}.
-// The zero value is not encoded.
-func append{{.Name}}NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.{{.GoType.PointerMethod}}()
-	if {{template "IsZero" .}} {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	{{template "Append" .}}
-	return b, nil
-}
-
-{{if .ToGoTypeNoZero}}
-// consume{{.Name}}NoZero wire decodes a {{.GoType}} pointer as a {{.Name}}.
-// The zero value is not decoded.
-func consume{{.Name}}NoZero(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != {{.WireType.Expr}} {
-		return out, errUnknown
-	}
-	{{template "Consume" .}}
-	if n < 0 {
-		return out, errDecode
-	}
-	*p.{{.GoType.PointerMethod}}() = {{.ToGoTypeNoZero}}
-	out.n = n
-	return out, nil
-}
-{{end}}
-
-var coder{{.Name}}NoZero = pointerCoderFuncs{
-	size:      size{{.Name}}NoZero,
-	marshal:   append{{.Name}}NoZero,
-	unmarshal: consume{{.Name}}{{if .ToGoTypeNoZero}}NoZero{{end}},
-	merge:     merge{{.GoType.PointerMethod}}NoZero,
-}
-
-{{if or (eq .Name "Bytes") (eq .Name "String")}}
-// append{{.Name}}NoZeroValidateUTF8 wire encodes a {{.GoType}} pointer as a {{.Name}}.
-// The zero value is not encoded.
-func append{{.Name}}NoZeroValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.{{.GoType.PointerMethod}}()
-	if {{template "IsZero" .}} {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	{{template "Append" .}}
-	if !utf8.Valid{{if eq .Name "String"}}String{{end}}(v) {
-		return b, errInvalidUTF8{}
-	}
-	return b, nil
-}
-
-{{if .ToGoTypeNoZero}}
-// consume{{.Name}}NoZeroValidateUTF8 wire decodes a {{.GoType}} pointer as a {{.Name}}.
-func consume{{.Name}}NoZeroValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != {{.WireType.Expr}} {
-		return out, errUnknown
-	}
-	{{template "Consume" .}}
-	if n < 0 {
-		return out, errDecode
-	}
-	if !utf8.Valid(v) {
-		return out, errInvalidUTF8{}
-	}
-	*p.{{.GoType.PointerMethod}}() = {{.ToGoTypeNoZero}}
-	out.n = n
-	return out, nil
-}
-{{end}}
-
-var coder{{.Name}}NoZeroValidateUTF8 = pointerCoderFuncs{
-	size:      size{{.Name}}NoZero,
-	marshal:   append{{.Name}}NoZeroValidateUTF8,
-	unmarshal: consume{{.Name}}{{if .ToGoTypeNoZero}}NoZero{{end}}ValidateUTF8,
-	merge:     merge{{.GoType.PointerMethod}}NoZero,
-}
-{{end}}
-
-{{- if not .NoPointer}}
-// size{{.Name}}Ptr returns the size of wire encoding a *{{.GoType}} pointer as a {{.Name}}.
-// It panics if the pointer is nil.
-func size{{.Name}}Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	{{if not .WireType.ConstSize -}}
-	v := **p.{{.GoType.PointerMethod}}Ptr()
-	{{end -}}
-	return f.tagsize + {{template "Size" .}}
-}
-
-// append{{.Name}}Ptr wire encodes a *{{.GoType}} pointer as a {{.Name}}.
-// It panics if the pointer is nil.
-func append{{.Name}}Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := **p.{{.GoType.PointerMethod}}Ptr()
-	b = protowire.AppendVarint(b, f.wiretag)
-	{{template "Append" .}}
-	return b, nil
-}
-
-// consume{{.Name}}Ptr wire decodes a *{{.GoType}} pointer as a {{.Name}}.
-func consume{{.Name}}Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != {{.WireType.Expr}} {
-		return out, errUnknown
-	}
-	{{template "Consume" .}}
-	if n < 0 {
-		return out, errDecode
-	}
-	vp := p.{{.GoType.PointerMethod}}Ptr()
-	if *vp == nil {
-		*vp = new({{.GoType}})
-	}
-	**vp = {{.ToGoType}}
-	out.n = n
-	return out, nil
-}
-
-var coder{{.Name}}Ptr = pointerCoderFuncs{
-	size:      size{{.Name}}Ptr,
-	marshal:   append{{.Name}}Ptr,
-	unmarshal: consume{{.Name}}Ptr,
-	merge:     merge{{.GoType.PointerMethod}}Ptr,
-}
-{{end}}
-
-{{if (eq .Name "String")}}
-// append{{.Name}}PtrValidateUTF8 wire encodes a *{{.GoType}} pointer as a {{.Name}}.
-// It panics if the pointer is nil.
-func append{{.Name}}PtrValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := **p.{{.GoType.PointerMethod}}Ptr()
-	b = protowire.AppendVarint(b, f.wiretag)
-	{{template "Append" .}}
-	if !utf8.Valid{{if eq .Name "String"}}String{{end}}(v) {
-		return b, errInvalidUTF8{}
-	}
-	return b, nil
-}
-
-// consume{{.Name}}PtrValidateUTF8 wire decodes a *{{.GoType}} pointer as a {{.Name}}.
-func consume{{.Name}}PtrValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != {{.WireType.Expr}} {
-		return out, errUnknown
-	}
-	{{template "Consume" .}}
-	if n < 0 {
-		return out, errDecode
-	}
-	if !utf8.Valid(v) {
-		return out, errInvalidUTF8{}
-	}
-	vp := p.{{.GoType.PointerMethod}}Ptr()
-	if *vp == nil {
-		*vp = new({{.GoType}})
-	}
-	**vp = {{.ToGoType}}
-	out.n = n
-	return out, nil
-}
-
-var coder{{.Name}}PtrValidateUTF8 = pointerCoderFuncs{
-	size:      size{{.Name}}Ptr,
-	marshal:   append{{.Name}}PtrValidateUTF8,
-	unmarshal: consume{{.Name}}PtrValidateUTF8,
-	merge:     merge{{.GoType.PointerMethod}}Ptr,
-}
-{{end}}
-
-// size{{.Name}}Slice returns the size of wire encoding a []{{.GoType}} pointer as a repeated {{.Name}}.
-func size{{.Name}}Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.{{.GoType.PointerMethod}}Slice()
-	{{if .WireType.ConstSize -}}
-	size = len(s) * (f.tagsize + {{template "Size" .}})
-	{{- else -}}
-	for _, v := range s {
-		size += f.tagsize + {{template "Size" .}}
-	}
-	{{- end}}
-	return size
-}
-
-// append{{.Name}}Slice encodes a []{{.GoType}} pointer as a repeated {{.Name}}.
-func append{{.Name}}Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.{{.GoType.PointerMethod}}Slice()
-	for _, v := range s {
-		b = protowire.AppendVarint(b, f.wiretag)
-		{{template "Append" .}}
-	}
-	return b, nil
-}
-
-// consume{{.Name}}Slice wire decodes a []{{.GoType}} pointer as a repeated {{.Name}}.
-func consume{{.Name}}Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	sp := p.{{.GoType.PointerMethod}}Slice()
-	{{- if .WireType.Packable}}
-	if wtyp == protowire.BytesType {
-		s := *sp
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return out, errDecode
-		}
-		for len(b) > 0 {
-			{{template "Consume" .}}
-			if n < 0 {
-				return out, errDecode
-			}
-			s = append(s, {{.ToGoType}})
-			b = b[n:]
-		}
-		*sp = s
-		out.n = n
-		return out, nil
-	}
-	{{- end}}
-	if wtyp != {{.WireType.Expr}} {
-		return out, errUnknown
-	}
-	{{template "Consume" .}}
-	if n < 0 {
-		return out, errDecode
-	}
-	*sp = append(*sp, {{.ToGoType}})
-	out.n = n
-	return out, nil
-}
-
-var coder{{.Name}}Slice = pointerCoderFuncs{
-	size:      size{{.Name}}Slice,
-	marshal:   append{{.Name}}Slice,
-	unmarshal: consume{{.Name}}Slice,
-	merge:     merge{{.GoType.PointerMethod}}Slice,
-}
-
-{{if or (eq .Name "Bytes") (eq .Name "String")}}
-// append{{.Name}}SliceValidateUTF8 encodes a []{{.GoType}} pointer as a repeated {{.Name}}.
-func append{{.Name}}SliceValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.{{.GoType.PointerMethod}}Slice()
-	for _, v := range s {
-		b = protowire.AppendVarint(b, f.wiretag)
-		{{template "Append" .}}
-		if !utf8.Valid{{if eq .Name "String"}}String{{end}}(v) {
-			return b, errInvalidUTF8{}
-		}
-	}
-	return b, nil
-}
-
-// consume{{.Name}}SliceValidateUTF8 wire decodes a []{{.GoType}} pointer as a repeated {{.Name}}.
-func consume{{.Name}}SliceValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != {{.WireType.Expr}} {
-		return out, errUnknown
-	}
-	{{template "Consume" .}}
-	if n < 0 {
-		return out, errDecode
-	}
-	if !utf8.Valid(v) {
-		return out, errInvalidUTF8{}
-	}
-	sp := p.{{.GoType.PointerMethod}}Slice()
-	*sp = append(*sp, {{.ToGoType}})
-	out.n = n
-	return out, nil
-}
-
-var coder{{.Name}}SliceValidateUTF8 = pointerCoderFuncs{
-	size:      size{{.Name}}Slice,
-	marshal:   append{{.Name}}SliceValidateUTF8,
-	unmarshal: consume{{.Name}}SliceValidateUTF8,
-	merge:     merge{{.GoType.PointerMethod}}Slice,
-}
-{{end}}
-
-{{if or (eq .WireType "Varint") (eq .WireType "Fixed32") (eq .WireType "Fixed64")}}
-// size{{.Name}}PackedSlice returns the size of wire encoding a []{{.GoType}} pointer as a packed repeated {{.Name}}.
-func size{{.Name}}PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.{{.GoType.PointerMethod}}Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	{{if .WireType.ConstSize -}}
-	n := len(s) * {{template "Size" .}}
-	{{- else -}}
-	n := 0
-	for _, v := range s {
-		n += {{template "Size" .}}
-	}
-	{{- end}}
-	return f.tagsize + protowire.SizeBytes(n)
-}
-
-// append{{.Name}}PackedSlice encodes a []{{.GoType}} pointer as a packed repeated {{.Name}}.
-func append{{.Name}}PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.{{.GoType.PointerMethod}}Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	{{if .WireType.ConstSize -}}
-	n := len(s) * {{template "Size" .}}
-	{{- else -}}
-	n := 0
-	for _, v := range s {
-		n += {{template "Size" .}}
-	}
-	{{- end}}
-	b = protowire.AppendVarint(b, uint64(n))
-	for _, v := range s {
-		{{template "Append" .}}
-	}
-	return b, nil
-}
-
-var coder{{.Name}}PackedSlice = pointerCoderFuncs{
-	size:      size{{.Name}}PackedSlice,
-	marshal:   append{{.Name}}PackedSlice,
-	unmarshal: consume{{.Name}}Slice,
-	merge:     merge{{.GoType.PointerMethod}}Slice,
-}
-{{end}}
-
-{{end -}}
-
-{{- if not .NoValueCodec}}
-// size{{.Name}}Value returns the size of wire encoding a {{.GoType}} value as a {{.Name}}.
-func size{{.Name}}Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {
-	return tagsize + {{template "SizeValue" .}}
-}
-
-// append{{.Name}}Value encodes a {{.GoType}} value as a {{.Name}}.
-func append{{.Name}}Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	b = protowire.AppendVarint(b, wiretag)
-	{{template "AppendValue" .}}
-	return b, nil
-}
-
-// consume{{.Name}}Value decodes a {{.GoType}} value as a {{.Name}}.
-func consume{{.Name}}Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	if wtyp != {{.WireType.Expr}} {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	{{template "Consume" .}}
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	out.n = n
-	return {{.ToValue}}, out, nil
-}
-
-var coder{{.Name}}Value = valueCoderFuncs{
-	size:      size{{.Name}}Value,
-	marshal:   append{{.Name}}Value,
-	unmarshal: consume{{.Name}}Value,
-{{- if (eq .Name "Bytes")}}
-	merge:     mergeBytesValue,
-{{- else}}
-	merge:     mergeScalarValue,
-{{- end}}
-}
-
-{{if (eq .Name "String")}}
-// append{{.Name}}ValueValidateUTF8 encodes a {{.GoType}} value as a {{.Name}}.
-func append{{.Name}}ValueValidateUTF8(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	b = protowire.AppendVarint(b, wiretag)
-	{{template "AppendValue" .}}
-	if !utf8.ValidString({{.FromValue}}) {
-		return b, errInvalidUTF8{}
-	}
-	return b, nil
-}
-
-// consume{{.Name}}ValueValidateUTF8 decodes a {{.GoType}} value as a {{.Name}}.
-func consume{{.Name}}ValueValidateUTF8(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	if wtyp != {{.WireType.Expr}} {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	{{template "Consume" .}}
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	if !utf8.Valid(v) {
-		return protoreflect.Value{}, out, errInvalidUTF8{}
-	}
-	out.n = n
-	return {{.ToValue}}, out, nil
-}
-
-var coder{{.Name}}ValueValidateUTF8 = valueCoderFuncs{
-	size:      size{{.Name}}Value,
-	marshal:   append{{.Name}}ValueValidateUTF8,
-	unmarshal: consume{{.Name}}ValueValidateUTF8,
-	merge:     mergeScalarValue,
-}
-{{end}}
-
-// size{{.Name}}SliceValue returns the size of wire encoding a []{{.GoType}} value as a repeated {{.Name}}.
-func size{{.Name}}SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	{{if .WireType.ConstSize -}}
-	size = list.Len() * (tagsize + {{template "SizeValue" .}})
-	{{- else -}}
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		size += tagsize + {{template "SizeValue" .}}
-	}
-	{{- end}}
-	return size
-}
-
-// append{{.Name}}SliceValue encodes a []{{.GoType}} value as a repeated {{.Name}}.
-func append{{.Name}}SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, wiretag)
-		{{template "AppendValue" .}}
-	}
-	return b, nil
-}
-
-// consume{{.Name}}SliceValue wire decodes a []{{.GoType}} value as a repeated {{.Name}}.
-func consume{{.Name}}SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	list := listv.List()
-	{{- if .WireType.Packable}}
-	if wtyp == protowire.BytesType {
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return protoreflect.Value{}, out, errDecode
-		}
-		for len(b) > 0 {
-			{{template "Consume" .}}
-			if n < 0 {
-				return protoreflect.Value{}, out, errDecode
-			}
-			list.Append({{.ToValue}})
-			b = b[n:]
-		}
-		out.n = n
-		return listv, out, nil
-	}
-	{{- end}}
-	if wtyp != {{.WireType.Expr}} {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	{{template "Consume" .}}
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	list.Append({{.ToValue}})
-	out.n = n
-	return listv, out, nil
-}
-
-var coder{{.Name}}SliceValue = valueCoderFuncs{
-	size:      size{{.Name}}SliceValue,
-	marshal:   append{{.Name}}SliceValue,
-	unmarshal: consume{{.Name}}SliceValue,
-{{- if (eq .Name "Bytes")}}
-	merge:     mergeBytesListValue,
-{{- else}}
-	merge:     mergeListValue,
-{{- end}}
-}
-
-{{if or (eq .WireType "Varint") (eq .WireType "Fixed32") (eq .WireType "Fixed64")}}
-// size{{.Name}}PackedSliceValue returns the size of wire encoding a []{{.GoType}} value as a packed repeated {{.Name}}.
-func size{{.Name}}PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return 0
-	}
-	{{if .WireType.ConstSize -}}
-	n := llen * {{template "SizeValue" .}}
-	{{- else -}}
-	n := 0
-	for i, llen := 0, llen; i < llen; i++ {
-		v := list.Get(i)
-		n += {{template "SizeValue" .}}
-	}
-	{{- end}}
-	return tagsize + protowire.SizeBytes(n)
-}
-
-// append{{.Name}}PackedSliceValue encodes a []{{.GoType}} value as a packed repeated {{.Name}}.
-func append{{.Name}}PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, wiretag)
-	{{if .WireType.ConstSize -}}
-	n := llen * {{template "SizeValue" .}}
-	{{- else -}}
-	n := 0
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		n += {{template "SizeValue" .}}
-	}
-	{{- end}}
-	b = protowire.AppendVarint(b, uint64(n))
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		{{template "AppendValue" .}}
-	}
-	return b, nil
-}
-
-var coder{{.Name}}PackedSliceValue = valueCoderFuncs{
-	size:      size{{.Name}}PackedSliceValue,
-	marshal:   append{{.Name}}PackedSliceValue,
-	unmarshal: consume{{.Name}}SliceValue,
-	merge:     mergeListValue,
-}
-{{end}}
-
-{{- end}}{{/* if not .NoValueCodec */}}
-
-{{end -}}
-
-// We append to an empty array rather than a nil []byte to get non-nil zero-length byte slices.
-var emptyBuf [0]byte
-
-var wireTypes = map[protoreflect.Kind]protowire.Type{
-{{range . -}}
-	protoreflect.{{.Name}}Kind: {{.WireType.Expr}},
-{{end}}
-}
-`))
-
-func generateImplMessage() string {
-	return mustExecute(implMessageTemplate, []string{"messageState", "messageReflectWrapper"})
-}
-
-var implMessageTemplate = template.Must(template.New("").Parse(`
-{{range . -}}
-func (m *{{.}}) Descriptor() protoreflect.MessageDescriptor {
-	return m.messageInfo().Desc
-}
-func (m *{{.}}) Type() protoreflect.MessageType {
-	return m.messageInfo()
-}
-func (m *{{.}}) New() protoreflect.Message {
-	return m.messageInfo().New()
-}
-func (m *{{.}}) Interface() protoreflect.ProtoMessage {
-	{{if eq . "messageState" -}}
-	return m.protoUnwrap().(protoreflect.ProtoMessage)
-	{{- else -}}
-	if m, ok := m.protoUnwrap().(protoreflect.ProtoMessage); ok {
-		return m
-	}
-	return (*messageIfaceWrapper)(m)
-	{{- end -}}
-}
-func (m *{{.}}) protoUnwrap() interface{} {
-	return m.pointer().AsIfaceOf(m.messageInfo().GoReflectType.Elem())
-}
-func (m *{{.}}) ProtoMethods() *protoiface.Methods {
-	m.messageInfo().init()
-	return &m.messageInfo().methods
-}
-
-// ProtoMessageInfo is a pseudo-internal API for allowing the v1 code
-// to be able to retrieve a v2 MessageInfo struct.
-//
-// WARNING: This method is exempt from the compatibility promise and
-// may be removed in the future without warning.
-func (m *{{.}}) ProtoMessageInfo() *MessageInfo {
-	return m.messageInfo()
-}
-
-func (m *{{.}}) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
-	m.messageInfo().init()
-	for _, ri := range m.messageInfo().rangeInfos {
-		switch ri := ri.(type) {
-		case *fieldInfo:
-			if ri.has(m.pointer()) {
-				if !f(ri.fieldDesc, ri.get(m.pointer())) {
-					return
-				}
-			}
-		case *oneofInfo:
-			if n := ri.which(m.pointer()); n > 0 {
-				fi := m.messageInfo().fields[n]
-				if !f(fi.fieldDesc, fi.get(m.pointer())) {
-					return
-				}
-			}
-		}
-	}
-	m.messageInfo().extensionMap(m.pointer()).Range(f)
-}
-func (m *{{.}}) Has(fd protoreflect.FieldDescriptor) bool {
-	m.messageInfo().init()
-	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
-		return fi.has(m.pointer())
-	} else {
-		return m.messageInfo().extensionMap(m.pointer()).Has(xt)
-	}
-}
-func (m *{{.}}) Clear(fd protoreflect.FieldDescriptor) {
-	m.messageInfo().init()
-	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
-		fi.clear(m.pointer())
-	} else {
-		m.messageInfo().extensionMap(m.pointer()).Clear(xt)
-	}
-}
-func (m *{{.}}) Get(fd protoreflect.FieldDescriptor) protoreflect.Value {
-	m.messageInfo().init()
-	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
-		return fi.get(m.pointer())
-	} else {
-		return m.messageInfo().extensionMap(m.pointer()).Get(xt)
-	}
-}
-func (m *{{.}}) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) {
-	m.messageInfo().init()
-	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
-		fi.set(m.pointer(), v)
-	} else {
-		m.messageInfo().extensionMap(m.pointer()).Set(xt, v)
-	}
-}
-func (m *{{.}}) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
-	m.messageInfo().init()
-	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
-		return fi.mutable(m.pointer())
-	} else {
-		return m.messageInfo().extensionMap(m.pointer()).Mutable(xt)
-	}
-}
-func (m *{{.}}) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
-	m.messageInfo().init()
-	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
-		return fi.newField()
-	} else {
-		return xt.New()
-	}
-}
-func (m *{{.}}) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
-	m.messageInfo().init()
-	if oi := m.messageInfo().oneofs[od.Name()]; oi != nil && oi.oneofDesc == od {
-		return od.Fields().ByNumber(oi.which(m.pointer()))
-	}
-	panic("invalid oneof descriptor " + string(od.FullName()) + " for message " + string(m.Descriptor().FullName()))
-}
-func (m *{{.}}) GetUnknown() protoreflect.RawFields {
-	m.messageInfo().init()
-	return m.messageInfo().getUnknown(m.pointer())
-}
-func (m *{{.}}) SetUnknown(b protoreflect.RawFields) {
-	m.messageInfo().init()
-	m.messageInfo().setUnknown(m.pointer(), b)
-}
-func (m *{{.}}) IsValid() bool {
-	return !m.pointer().IsNil()
-}
-
-{{end}}
-`))
-
-func generateImplMerge() string {
-	return mustExecute(implMergeTemplate, GoTypes)
-}
-
-var implMergeTemplate = template.Must(template.New("").Parse(`
-{{range .}}
-{{if ne . "[]byte"}}
-func merge{{.PointerMethod}}(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	*dst.{{.PointerMethod}}() = *src.{{.PointerMethod}}()
-}
-
-func merge{{.PointerMethod}}NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	v := *src.{{.PointerMethod}}()
-	if v != {{.Zero}} {
-		*dst.{{.PointerMethod}}() = v
-	}
-}
-
-func merge{{.PointerMethod}}Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	p := *src.{{.PointerMethod}}Ptr()
-	if p != nil {
-		v := *p
-		*dst.{{.PointerMethod}}Ptr() = &v
-	}
-}
-
-func merge{{.PointerMethod}}Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	ds := dst.{{.PointerMethod}}Slice()
-	ss := src.{{.PointerMethod}}Slice()
-	*ds = append(*ds, *ss...)
-}
-
-{{end}}
-{{end}}
-`))
diff --git a/internal/cmd/generate-types/main.go b/internal/cmd/generate-types/main.go
deleted file mode 100644
index c525067..0000000
--- a/internal/cmd/generate-types/main.go
+++ /dev/null
@@ -1,271 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:generate go run . -execute
-
-package main
-
-import (
-	"bytes"
-	"flag"
-	"fmt"
-	"go/format"
-	"io/ioutil"
-	"os"
-	"os/exec"
-	"path"
-	"path/filepath"
-	"regexp"
-	"strconv"
-	"strings"
-	"text/template"
-)
-
-var (
-	run      bool
-	outfile  string
-	repoRoot string
-)
-
-func main() {
-	flag.BoolVar(&run, "execute", false, "Write generated files to destination.")
-	flag.StringVar(&outfile, "outfile", "", "Write this specific file to stdout.")
-	flag.Parse()
-
-	// Determine repository root path.
-	if outfile == "" {
-		out, err := exec.Command("git", "rev-parse", "--show-toplevel").CombinedOutput()
-		check(err)
-		repoRoot = strings.TrimSpace(string(out))
-		chdirRoot()
-	}
-
-	writeSource("internal/filedesc/desc_list_gen.go", generateDescListTypes())
-	writeSource("internal/impl/codec_gen.go", generateImplCodec())
-	writeSource("internal/impl/message_reflect_gen.go", generateImplMessage())
-	writeSource("internal/impl/merge_gen.go", generateImplMerge())
-	writeSource("proto/decode_gen.go", generateProtoDecode())
-	writeSource("proto/encode_gen.go", generateProtoEncode())
-	writeSource("proto/size_gen.go", generateProtoSize())
-}
-
-// chdirRoot changes the working directory to the repository root.
-func chdirRoot() {
-	out, err := exec.Command("git", "rev-parse", "--show-toplevel").CombinedOutput()
-	check(err)
-	check(os.Chdir(strings.TrimSpace(string(out))))
-}
-
-// Expr is a single line Go expression.
-type Expr string
-
-type DescriptorType string
-
-const (
-	MessageDesc   DescriptorType = "Message"
-	FieldDesc     DescriptorType = "Field"
-	OneofDesc     DescriptorType = "Oneof"
-	ExtensionDesc DescriptorType = "Extension"
-	EnumDesc      DescriptorType = "Enum"
-	EnumValueDesc DescriptorType = "EnumValue"
-	ServiceDesc   DescriptorType = "Service"
-	MethodDesc    DescriptorType = "Method"
-)
-
-func (d DescriptorType) Expr() Expr {
-	return "protoreflect." + Expr(d) + "Descriptor"
-}
-func (d DescriptorType) NumberExpr() Expr {
-	switch d {
-	case FieldDesc:
-		return "protoreflect.FieldNumber"
-	case EnumValueDesc:
-		return "protoreflect.EnumNumber"
-	default:
-		return ""
-	}
-}
-
-func generateDescListTypes() string {
-	return mustExecute(descListTypesTemplate, []DescriptorType{
-		EnumDesc, EnumValueDesc, MessageDesc, FieldDesc, OneofDesc, ExtensionDesc, ServiceDesc, MethodDesc,
-	})
-}
-
-var descListTypesTemplate = template.Must(template.New("").Parse(`
-	{{- range .}}
-	{{$nameList := (printf "%ss" .)}} {{/* e.g., "Messages" */}}
-	{{$nameDesc := (printf "%s"  .)}} {{/* e.g., "Message" */}}
-
-	type {{$nameList}} struct {
-		List   []{{$nameDesc}}
-		once   sync.Once
-		byName map[protoreflect.Name]*{{$nameDesc}} // protected by once
-		{{- if (eq . "Field")}}
-		byJSON map[string]*{{$nameDesc}}            // protected by once
-		byText map[string]*{{$nameDesc}}            // protected by once
-		{{- end}}
-		{{- if .NumberExpr}}
-		byNum  map[{{.NumberExpr}}]*{{$nameDesc}}   // protected by once
-		{{- end}}
-	}
-
-	func (p *{{$nameList}}) Len() int {
-		return len(p.List)
-	}
-	func (p *{{$nameList}}) Get(i int) {{.Expr}} {
-		return &p.List[i]
-	}
-	func (p *{{$nameList}}) ByName(s protoreflect.Name) {{.Expr}} {
-		if d := p.lazyInit().byName[s]; d != nil {
-			return d
-		}
-		return nil
-	}
-	{{- if (eq . "Field")}}
-	func (p *{{$nameList}}) ByJSONName(s string) {{.Expr}} {
-		if d := p.lazyInit().byJSON[s]; d != nil {
-			return d
-		}
-		return nil
-	}
-	func (p *{{$nameList}}) ByTextName(s string) {{.Expr}} {
-		if d := p.lazyInit().byText[s]; d != nil {
-			return d
-		}
-		return nil
-	}
-	{{- end}}
-	{{- if .NumberExpr}}
-	func (p *{{$nameList}}) ByNumber(n {{.NumberExpr}}) {{.Expr}} {
-		if d := p.lazyInit().byNum[n]; d != nil {
-			return d
-		}
-		return nil
-	}
-	{{- end}}
-	func (p *{{$nameList}}) Format(s fmt.State, r rune) {
-		descfmt.FormatList(s, r, p)
-	}
-	func (p *{{$nameList}}) ProtoInternal(pragma.DoNotImplement) {}
-	func (p *{{$nameList}}) lazyInit() *{{$nameList}} {
-		p.once.Do(func() {
-			if len(p.List) > 0 {
-				p.byName = make(map[protoreflect.Name]*{{$nameDesc}}, len(p.List))
-				{{- if (eq . "Field")}}
-				p.byJSON = make(map[string]*{{$nameDesc}}, len(p.List))
-				p.byText = make(map[string]*{{$nameDesc}}, len(p.List))
-				{{- end}}
-				{{- if .NumberExpr}}
-				p.byNum = make(map[{{.NumberExpr}}]*{{$nameDesc}}, len(p.List))
-				{{- end}}
-				for i := range p.List {
-					d := &p.List[i]
-					if _, ok := p.byName[d.Name()]; !ok {
-						p.byName[d.Name()] = d
-					}
-					{{- if (eq . "Field")}}
-					if _, ok := p.byJSON[d.JSONName()]; !ok {
-						p.byJSON[d.JSONName()] = d
-					}
-					if _, ok := p.byText[d.TextName()]; !ok {
-						p.byText[d.TextName()] = d
-					}
-					{{- end}}
-					{{- if .NumberExpr}}
-					if _, ok := p.byNum[d.Number()]; !ok {
-						p.byNum[d.Number()] = d
-					}
-					{{- end}}
-				}
-			}
-		})
-		return p
-	}
-	{{- end}}
-`))
-
-func mustExecute(t *template.Template, data interface{}) string {
-	var b bytes.Buffer
-	if err := t.Execute(&b, data); err != nil {
-		panic(err)
-	}
-	return b.String()
-}
-
-func writeSource(file, src string) {
-	// Crude but effective way to detect used imports.
-	var imports []string
-	for _, pkg := range []string{
-		"fmt",
-		"math",
-		"reflect",
-		"sync",
-		"unicode/utf8",
-		"",
-		"google.golang.org/protobuf/internal/descfmt",
-		"google.golang.org/protobuf/encoding/protowire",
-		"google.golang.org/protobuf/internal/errors",
-		"google.golang.org/protobuf/internal/strs",
-		"google.golang.org/protobuf/internal/pragma",
-		"google.golang.org/protobuf/reflect/protoreflect",
-		"google.golang.org/protobuf/runtime/protoiface",
-	} {
-		if pkg == "" {
-			imports = append(imports, "") // blank line between stdlib and proto packages
-		} else if regexp.MustCompile(`[^\pL_0-9]` + path.Base(pkg) + `\.`).MatchString(src) {
-			imports = append(imports, strconv.Quote(pkg))
-		}
-	}
-
-	s := strings.Join([]string{
-		"// Copyright 2018 The Go Authors. All rights reserved.",
-		"// Use of this source code is governed by a BSD-style",
-		"// license that can be found in the LICENSE file.",
-		"",
-		"// Code generated by generate-types. DO NOT EDIT.",
-		"",
-		"package " + path.Base(path.Dir(path.Join("proto", file))),
-		"",
-		"import (" + strings.Join(imports, "\n") + ")",
-		"",
-		src,
-	}, "\n")
-	b, err := format.Source([]byte(s))
-	if err != nil {
-		// Just print the error and output the unformatted file for examination.
-		fmt.Fprintf(os.Stderr, "%v:%v\n", file, err)
-		b = []byte(s)
-	}
-
-	if outfile != "" {
-		if outfile == file {
-			os.Stdout.Write(b)
-		}
-		return
-	}
-
-	absFile := filepath.Join(repoRoot, file)
-	if run {
-		prev, _ := ioutil.ReadFile(absFile)
-		if !bytes.Equal(b, prev) {
-			fmt.Println("#", file)
-			check(ioutil.WriteFile(absFile, b, 0664))
-		}
-	} else {
-		check(ioutil.WriteFile(absFile+".tmp", b, 0664))
-		defer os.Remove(absFile + ".tmp")
-
-		cmd := exec.Command("diff", file, file+".tmp", "-N", "-u")
-		cmd.Dir = repoRoot
-		cmd.Stdout = os.Stdout
-		cmd.Run()
-	}
-}
-
-func check(err error) {
-	if err != nil {
-		panic(err)
-	}
-}
diff --git a/internal/cmd/generate-types/proto.go b/internal/cmd/generate-types/proto.go
deleted file mode 100644
index c70cc21..0000000
--- a/internal/cmd/generate-types/proto.go
+++ /dev/null
@@ -1,436 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-import (
-	"strings"
-	"text/template"
-)
-
-type WireType string
-
-const (
-	WireVarint  WireType = "Varint"
-	WireFixed32 WireType = "Fixed32"
-	WireFixed64 WireType = "Fixed64"
-	WireBytes   WireType = "Bytes"
-	WireGroup   WireType = "Group"
-)
-
-func (w WireType) Expr() Expr {
-	if w == WireGroup {
-		return "protowire.StartGroupType"
-	}
-	return "protowire." + Expr(w) + "Type"
-}
-
-func (w WireType) Packable() bool {
-	return w == WireVarint || w == WireFixed32 || w == WireFixed64
-}
-
-func (w WireType) ConstSize() bool {
-	return w == WireFixed32 || w == WireFixed64
-}
-
-type GoType string
-
-var GoTypes = []GoType{
-	GoBool,
-	GoInt32,
-	GoUint32,
-	GoInt64,
-	GoUint64,
-	GoFloat32,
-	GoFloat64,
-	GoString,
-	GoBytes,
-}
-
-const (
-	GoBool    = "bool"
-	GoInt32   = "int32"
-	GoUint32  = "uint32"
-	GoInt64   = "int64"
-	GoUint64  = "uint64"
-	GoFloat32 = "float32"
-	GoFloat64 = "float64"
-	GoString  = "string"
-	GoBytes   = "[]byte"
-)
-
-func (g GoType) Zero() Expr {
-	switch g {
-	case GoBool:
-		return "false"
-	case GoString:
-		return `""`
-	case GoBytes:
-		return "nil"
-	}
-	return "0"
-}
-
-// Kind is the reflect.Kind of the type.
-func (g GoType) Kind() Expr {
-	if g == "" || g == GoBytes {
-		return ""
-	}
-	return "reflect." + Expr(strings.ToUpper(string(g[:1]))+string(g[1:]))
-}
-
-// PointerMethod is the "internal/impl".pointer method used to access a pointer to this type.
-func (g GoType) PointerMethod() Expr {
-	if g == GoBytes {
-		return "Bytes"
-	}
-	return Expr(strings.ToUpper(string(g[:1])) + string(g[1:]))
-}
-
-type ProtoKind struct {
-	Name     string
-	WireType WireType
-
-	// Conversions to/from protoreflect.Value.
-	ToValue   Expr
-	FromValue Expr
-
-	// Conversions to/from generated structures.
-	GoType         GoType
-	ToGoType       Expr
-	ToGoTypeNoZero Expr
-	FromGoType     Expr
-	NoPointer      bool
-	NoValueCodec   bool
-}
-
-func (k ProtoKind) Expr() Expr {
-	return "protoreflect." + Expr(k.Name) + "Kind"
-}
-
-var ProtoKinds = []ProtoKind{
-	{
-		Name:       "Bool",
-		WireType:   WireVarint,
-		ToValue:    "protoreflect.ValueOfBool(protowire.DecodeBool(v))",
-		FromValue:  "protowire.EncodeBool(v.Bool())",
-		GoType:     GoBool,
-		ToGoType:   "protowire.DecodeBool(v)",
-		FromGoType: "protowire.EncodeBool(v)",
-	},
-	{
-		Name:      "Enum",
-		WireType:  WireVarint,
-		ToValue:   "protoreflect.ValueOfEnum(protoreflect.EnumNumber(v))",
-		FromValue: "uint64(v.Enum())",
-	},
-	{
-		Name:       "Int32",
-		WireType:   WireVarint,
-		ToValue:    "protoreflect.ValueOfInt32(int32(v))",
-		FromValue:  "uint64(int32(v.Int()))",
-		GoType:     GoInt32,
-		ToGoType:   "int32(v)",
-		FromGoType: "uint64(v)",
-	},
-	{
-		Name:       "Sint32",
-		WireType:   WireVarint,
-		ToValue:    "protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32)))",
-		FromValue:  "protowire.EncodeZigZag(int64(int32(v.Int())))",
-		GoType:     GoInt32,
-		ToGoType:   "int32(protowire.DecodeZigZag(v & math.MaxUint32))",
-		FromGoType: "protowire.EncodeZigZag(int64(v))",
-	},
-	{
-		Name:       "Uint32",
-		WireType:   WireVarint,
-		ToValue:    "protoreflect.ValueOfUint32(uint32(v))",
-		FromValue:  "uint64(uint32(v.Uint()))",
-		GoType:     GoUint32,
-		ToGoType:   "uint32(v)",
-		FromGoType: "uint64(v)",
-	},
-	{
-		Name:       "Int64",
-		WireType:   WireVarint,
-		ToValue:    "protoreflect.ValueOfInt64(int64(v))",
-		FromValue:  "uint64(v.Int())",
-		GoType:     GoInt64,
-		ToGoType:   "int64(v)",
-		FromGoType: "uint64(v)",
-	},
-	{
-		Name:       "Sint64",
-		WireType:   WireVarint,
-		ToValue:    "protoreflect.ValueOfInt64(protowire.DecodeZigZag(v))",
-		FromValue:  "protowire.EncodeZigZag(v.Int())",
-		GoType:     GoInt64,
-		ToGoType:   "protowire.DecodeZigZag(v)",
-		FromGoType: "protowire.EncodeZigZag(v)",
-	},
-	{
-		Name:       "Uint64",
-		WireType:   WireVarint,
-		ToValue:    "protoreflect.ValueOfUint64(v)",
-		FromValue:  "v.Uint()",
-		GoType:     GoUint64,
-		ToGoType:   "v",
-		FromGoType: "v",
-	},
-	{
-		Name:       "Sfixed32",
-		WireType:   WireFixed32,
-		ToValue:    "protoreflect.ValueOfInt32(int32(v))",
-		FromValue:  "uint32(v.Int())",
-		GoType:     GoInt32,
-		ToGoType:   "int32(v)",
-		FromGoType: "uint32(v)",
-	},
-	{
-		Name:       "Fixed32",
-		WireType:   WireFixed32,
-		ToValue:    "protoreflect.ValueOfUint32(uint32(v))",
-		FromValue:  "uint32(v.Uint())",
-		GoType:     GoUint32,
-		ToGoType:   "v",
-		FromGoType: "v",
-	},
-	{
-		Name:       "Float",
-		WireType:   WireFixed32,
-		ToValue:    "protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v)))",
-		FromValue:  "math.Float32bits(float32(v.Float()))",
-		GoType:     GoFloat32,
-		ToGoType:   "math.Float32frombits(v)",
-		FromGoType: "math.Float32bits(v)",
-	},
-	{
-		Name:       "Sfixed64",
-		WireType:   WireFixed64,
-		ToValue:    "protoreflect.ValueOfInt64(int64(v))",
-		FromValue:  "uint64(v.Int())",
-		GoType:     GoInt64,
-		ToGoType:   "int64(v)",
-		FromGoType: "uint64(v)",
-	},
-	{
-		Name:       "Fixed64",
-		WireType:   WireFixed64,
-		ToValue:    "protoreflect.ValueOfUint64(v)",
-		FromValue:  "v.Uint()",
-		GoType:     GoUint64,
-		ToGoType:   "v",
-		FromGoType: "v",
-	},
-	{
-		Name:       "Double",
-		WireType:   WireFixed64,
-		ToValue:    "protoreflect.ValueOfFloat64(math.Float64frombits(v))",
-		FromValue:  "math.Float64bits(v.Float())",
-		GoType:     GoFloat64,
-		ToGoType:   "math.Float64frombits(v)",
-		FromGoType: "math.Float64bits(v)",
-	},
-	{
-		Name:       "String",
-		WireType:   WireBytes,
-		ToValue:    "protoreflect.ValueOfString(string(v))",
-		FromValue:  "v.String()",
-		GoType:     GoString,
-		ToGoType:   "string(v)",
-		FromGoType: "v",
-	},
-	{
-		Name:           "Bytes",
-		WireType:       WireBytes,
-		ToValue:        "protoreflect.ValueOfBytes(append(emptyBuf[:], v...))",
-		FromValue:      "v.Bytes()",
-		GoType:         GoBytes,
-		ToGoType:       "append(emptyBuf[:], v...)",
-		ToGoTypeNoZero: "append(([]byte)(nil), v...)",
-		FromGoType:     "v",
-		NoPointer:      true,
-	},
-	{
-		Name:         "Message",
-		WireType:     WireBytes,
-		ToValue:      "protoreflect.ValueOfBytes(v)",
-		FromValue:    "v",
-		NoValueCodec: true,
-	},
-	{
-		Name:         "Group",
-		WireType:     WireGroup,
-		ToValue:      "protoreflect.ValueOfBytes(v)",
-		FromValue:    "v",
-		NoValueCodec: true,
-	},
-}
-
-func generateProtoDecode() string {
-	return mustExecute(protoDecodeTemplate, ProtoKinds)
-}
-
-var protoDecodeTemplate = template.Must(template.New("").Parse(`
-// unmarshalScalar decodes a value of the given kind.
-//
-// Message values are decoded into a []byte which aliases the input data.
-func (o UnmarshalOptions) unmarshalScalar(b []byte, wtyp protowire.Type, fd protoreflect.FieldDescriptor) (val protoreflect.Value, n int, err error) {
-	switch fd.Kind() {
-	{{- range .}}
-	case {{.Expr}}:
-		if wtyp != {{.WireType.Expr}} {
-			return val, 0, errUnknown
-		}
-		{{if (eq .WireType "Group") -}}
-		v, n := protowire.ConsumeGroup(fd.Number(), b)
-		{{- else -}}
-		v, n := protowire.Consume{{.WireType}}(b)
-		{{- end}}
-		if n < 0 {
-			return val, 0, errDecode
-		}
-		{{if (eq .Name "String") -}}
-		if strs.EnforceUTF8(fd) && !utf8.Valid(v) {
-			return protoreflect.Value{}, 0, errors.InvalidUTF8(string(fd.FullName()))
-		}
-		{{end -}}
-		return {{.ToValue}}, n, nil
-	{{- end}}
-	default:
-		return val, 0, errUnknown
-	}
-}
-
-func (o UnmarshalOptions) unmarshalList(b []byte, wtyp protowire.Type, list protoreflect.List, fd protoreflect.FieldDescriptor) (n int, err error) {
-	switch fd.Kind() {
-	{{- range .}}
-	case {{.Expr}}:
-		{{- if .WireType.Packable}}
-		if wtyp == protowire.BytesType {
-			buf, n := protowire.ConsumeBytes(b)
-			if n < 0 {
-				return 0, errDecode
-			}
-			for len(buf) > 0 {
-				v, n := protowire.Consume{{.WireType}}(buf)
-				if n < 0 {
-					return 0, errDecode
-				}
-				buf = buf[n:]
-				list.Append({{.ToValue}})
-			}
-			return n, nil
-		}
-		{{- end}}
-		if wtyp != {{.WireType.Expr}} {
-			return 0, errUnknown
-		}
-		{{if (eq .WireType "Group") -}}
-		v, n := protowire.ConsumeGroup(fd.Number(), b)
-		{{- else -}}
-		v, n := protowire.Consume{{.WireType}}(b)
-		{{- end}}
-		if n < 0 {
-			return 0, errDecode
-		}
-		{{if (eq .Name "String") -}}
-		if strs.EnforceUTF8(fd) && !utf8.Valid(v) {
-			return 0, errors.InvalidUTF8(string(fd.FullName()))
-		}
-		{{end -}}
-		{{if or (eq .Name "Message") (eq .Name "Group") -}}
-		m := list.NewElement()
-		if err := o.unmarshalMessage(v, m.Message()); err != nil {
-			return 0, err
-		}
-		list.Append(m)
-		{{- else -}}
-		list.Append({{.ToValue}})
-		{{- end}}
-		return n, nil
-	{{- end}}
-	default:
-		return 0, errUnknown
-	}
-}
-
-// We append to an empty array rather than a nil []byte to get non-nil zero-length byte slices.
-var emptyBuf [0]byte
-`))
-
-func generateProtoEncode() string {
-	return mustExecute(protoEncodeTemplate, ProtoKinds)
-}
-
-var protoEncodeTemplate = template.Must(template.New("").Parse(`
-var wireTypes = map[protoreflect.Kind]protowire.Type{
-{{- range .}}
-	{{.Expr}}: {{.WireType.Expr}},
-{{- end}}
-}
-
-func (o MarshalOptions) marshalSingular(b []byte, fd protoreflect.FieldDescriptor, v protoreflect.Value) ([]byte, error) {
-	switch fd.Kind() {
-	{{- range .}}
-	case {{.Expr}}:
-		{{- if (eq .Name "String") }}
-		if strs.EnforceUTF8(fd) && !utf8.ValidString(v.String()) {
-			return b, errors.InvalidUTF8(string(fd.FullName()))
-		}
-		b = protowire.AppendString(b, {{.FromValue}})
-		{{- else if (eq .Name "Message") -}}
-		var pos int
-		var err error
-		b, pos = appendSpeculativeLength(b)
-		b, err = o.marshalMessage(b, v.Message())
-		if err != nil {
-			return b, err
-		}
-		b = finishSpeculativeLength(b, pos)
-		{{- else if (eq .Name "Group") -}}
-		var err error
-		b, err = o.marshalMessage(b, v.Message())
-		if err != nil {
-			return b, err
-		}
-		b = protowire.AppendVarint(b, protowire.EncodeTag(fd.Number(), protowire.EndGroupType))
-		{{- else -}}
-		b = protowire.Append{{.WireType}}(b, {{.FromValue}})
-		{{- end}}
-	{{- end}}
-	default:
-		return b, errors.New("invalid kind %v", fd.Kind())
-	}
-	return b, nil
-}
-`))
-
-func generateProtoSize() string {
-	return mustExecute(protoSizeTemplate, ProtoKinds)
-}
-
-var protoSizeTemplate = template.Must(template.New("").Parse(`
-func (o MarshalOptions) sizeSingular(num protowire.Number, kind protoreflect.Kind, v protoreflect.Value) int {
-	switch kind {
-	{{- range .}}
-	case {{.Expr}}:
-		{{if (eq .Name "Message") -}}
-		return protowire.SizeBytes(o.size(v.Message()))
-		{{- else if or (eq .WireType "Fixed32") (eq .WireType "Fixed64") -}}
-		return protowire.Size{{.WireType}}()
-		{{- else if (eq .WireType "Bytes") -}}
-		return protowire.Size{{.WireType}}(len({{.FromValue}}))
-		{{- else if (eq .WireType "Group") -}}
-		return protowire.Size{{.WireType}}(num, o.size(v.Message()))
-		{{- else -}}
-		return protowire.Size{{.WireType}}({{.FromValue}})
-		{{- end}}
-	{{- end}}
-	default:
-		return 0
-	}
-}
-`))
diff --git a/internal/cmd/pbdump/pbdump.go b/internal/cmd/pbdump/pbdump.go
deleted file mode 100644
index befb831..0000000
--- a/internal/cmd/pbdump/pbdump.go
+++ /dev/null
@@ -1,262 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// pbdump is a tool for decoding the wire format for protocol buffer messages.
-package main
-
-import (
-	"bytes"
-	"flag"
-	"fmt"
-	"io/ioutil"
-	"log"
-	"os"
-	"path/filepath"
-	"sort"
-	"strconv"
-	"strings"
-
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protodesc"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/testing/protopack"
-
-	"google.golang.org/protobuf/types/descriptorpb"
-)
-
-func main() {
-	log.SetFlags(0)
-	log.SetOutput(os.Stderr)
-
-	var fs fields
-	var flagUsages []string
-	flagVar := func(value flag.Value, name, usage string) {
-		flagUsages = append(flagUsages, fmt.Sprintf("  -%-16v  %v", name+" "+value.String(), usage))
-		flag.Var(value, name, usage)
-	}
-	flagBool := func(name, usage string) *bool {
-		flagUsages = append(flagUsages, fmt.Sprintf("  -%-16v  %v", name, usage))
-		return flag.Bool(name, false, usage)
-	}
-	flagVar(fieldsFlag{&fs, protoreflect.BoolKind}, "bools", "List of bool fields")
-	flagVar(fieldsFlag{&fs, protoreflect.Int64Kind}, "ints", "List of int32 or int64 fields")
-	flagVar(fieldsFlag{&fs, protoreflect.Sint64Kind}, "sints", "List of sint32 or sint64 fields")
-	flagVar(fieldsFlag{&fs, protoreflect.Uint64Kind}, "uints", "List of enum, uint32, or uint64 fields")
-	flagVar(fieldsFlag{&fs, protoreflect.Fixed32Kind}, "uint32s", "List of fixed32 fields")
-	flagVar(fieldsFlag{&fs, protoreflect.Sfixed32Kind}, "int32s", "List of sfixed32 fields")
-	flagVar(fieldsFlag{&fs, protoreflect.FloatKind}, "float32s", "List of float fields")
-	flagVar(fieldsFlag{&fs, protoreflect.Fixed64Kind}, "uint64s", "List of fixed64 fields")
-	flagVar(fieldsFlag{&fs, protoreflect.Sfixed64Kind}, "int64s", "List of sfixed64 fields")
-	flagVar(fieldsFlag{&fs, protoreflect.DoubleKind}, "float64s", "List of double fields")
-	flagVar(fieldsFlag{&fs, protoreflect.StringKind}, "strings", "List of string fields")
-	flagVar(fieldsFlag{&fs, protoreflect.BytesKind}, "bytes", "List of bytes fields")
-	flagVar(fieldsFlag{&fs, protoreflect.MessageKind}, "messages", "List of message fields")
-	flagVar(fieldsFlag{&fs, protoreflect.GroupKind}, "groups", "List of group fields")
-	printDesc := flagBool("print_descriptor", "Print the message descriptor")
-	printSource := flagBool("print_source", "Print the output in valid Go syntax")
-	flag.Usage = func() {
-		fmt.Printf("Usage: %s [OPTIONS]... [INPUTS]...\n\n%s\n", filepath.Base(os.Args[0]), strings.Join(append([]string{
-			"Print structured representations of encoded protocol buffer messages.",
-			"Since the protobuf wire format is not fully self-describing, type information",
-			"about the proto message can be provided using flags (e.g., -messages).",
-			"Each field list is a comma-separated list of field identifiers,",
-			"where each field identifier is a dot-separated list of field numbers,",
-			"identifying each field relative to the root message.",
-			"",
-			"For example, \"-messages 1,3,3.1 -float32s 1.2 -bools 3.1.2\" represents:",
-			"",
-			"    message M {",
-			"        optional M1 f1 = 1;           // -messages 1",
-			"        message M1 {",
-			"            repeated float f2 = 2;    // -float32s 1.2",
-			"        }",
-			"        optional M3 f3 = 3;           // -messages 3",
-			"        message M3 {",
-			"            optional M1 f1 = 1;       // -messages 3.1",
-			"            message M1 {",
-			"                repeated bool f2 = 2; // -bools 3.1.2",
-			"            }",
-			"        }",
-			"    }",
-			"",
-			"Arbitrarily complex message schemas can be represented using these flags.",
-			"Scalar field types are marked as repeated so that pbdump can decode",
-			"the packed representations of such field types.",
-			"",
-			"If no inputs are specified, the wire data is read in from stdin, otherwise",
-			"the contents of each specified input file is concatenated and",
-			"treated as one large message.",
-			"",
-			"Options:",
-		}, flagUsages...), "\n"))
-	}
-	flag.Parse()
-
-	// Create message types.
-	var desc protoreflect.MessageDescriptor
-	if len(fs) > 0 {
-		var err error
-		desc, err = fs.Descriptor()
-		if err != nil {
-			log.Fatalf("Descriptor error: %v", err)
-		}
-		if *printDesc {
-			fmt.Printf("%#v\n", desc)
-		}
-	}
-
-	// Read message input.
-	var buf []byte
-	if flag.NArg() == 0 {
-		b, err := ioutil.ReadAll(os.Stdin)
-		if err != nil {
-			log.Fatalf("ReadAll error: %v", err)
-		}
-		buf = b
-	}
-	for _, f := range flag.Args() {
-		b, err := ioutil.ReadFile(f)
-		if err != nil {
-			log.Fatalf("ReadFile error: %v", err)
-		}
-		buf = append(buf, b...)
-	}
-
-	// Parse and print message structure.
-	defer log.Printf("fatal input: %q", buf) // debug printout if panic occurs
-	var m protopack.Message
-	m.UnmarshalAbductive(buf, desc)
-	if *printSource {
-		fmt.Printf("%#v\n", m)
-	} else {
-		fmt.Printf("%+v\n", m)
-	}
-	if !bytes.Equal(buf, m.Marshal()) || len(buf) != m.Size() {
-		log.Fatalf("roundtrip mismatch:\n\tgot:  %d %x\n\twant: %d %x", m.Size(), m, len(buf), buf)
-	}
-	os.Exit(0) // exit cleanly, avoid debug printout
-}
-
-// fields is a tree of fields, keyed by a field number.
-// Fields representing messages or groups have sub-fields.
-type fields map[protowire.Number]*field
-type field struct {
-	kind protoreflect.Kind
-	sub  fields // only for MessageKind or GroupKind
-}
-
-// Set parses s as a comma-separated list (see the help above for the format)
-// and treats each field identifier as the specified kind.
-func (fs *fields) Set(s string, k protoreflect.Kind) error {
-	if *fs == nil {
-		*fs = make(fields)
-	}
-	for _, s := range strings.Split(s, ",") {
-		if err := fs.set("", strings.TrimSpace(s), k); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-func (fs fields) set(prefix, s string, k protoreflect.Kind) error {
-	if s == "" {
-		return nil
-	}
-
-	// Parse next field number.
-	i := strings.IndexByte(s, '.')
-	if i < 0 {
-		i = len(s)
-	}
-	prefix = strings.TrimPrefix(prefix+"."+s[:i], ".")
-	n, _ := strconv.ParseInt(s[:i], 10, 32)
-	num := protowire.Number(n)
-	if num < protowire.MinValidNumber || protowire.MaxValidNumber < num {
-		return errors.New("invalid field: %v", prefix)
-	}
-	s = strings.TrimPrefix(s[i:], ".")
-
-	// Handle the current field.
-	if fs[num] == nil {
-		fs[num] = &field{0, make(fields)}
-	}
-	if len(s) == 0 {
-		if fs[num].kind.IsValid() {
-			return errors.New("field %v already set as %v type", prefix, fs[num].kind)
-		}
-		fs[num].kind = k
-	}
-	if err := fs[num].sub.set(prefix, s, k); err != nil {
-		return err
-	}
-
-	// Verify that only messages or groups can have sub-fields.
-	k2 := fs[num].kind
-	if k2 > 0 && k2 != protoreflect.MessageKind && k2 != protoreflect.GroupKind && len(fs[num].sub) > 0 {
-		return errors.New("field %v of %v type cannot have sub-fields", prefix, k2)
-	}
-	return nil
-}
-
-// Descriptor returns the field tree as a message descriptor.
-func (fs fields) Descriptor() (protoreflect.MessageDescriptor, error) {
-	fd, err := protodesc.NewFile(&descriptorpb.FileDescriptorProto{
-		Name:        proto.String("dump.proto"),
-		Syntax:      proto.String("proto2"),
-		MessageType: []*descriptorpb.DescriptorProto{fs.messageDescriptor("X")},
-	}, nil)
-	if err != nil {
-		return nil, err
-	}
-	return fd.Messages().Get(0), nil
-}
-func (fs fields) messageDescriptor(name protoreflect.FullName) *descriptorpb.DescriptorProto {
-	m := &descriptorpb.DescriptorProto{Name: proto.String(string(name.Name()))}
-	for _, n := range fs.sortedNums() {
-		k := fs[n].kind
-		if !k.IsValid() {
-			k = protoreflect.MessageKind
-		}
-		f := &descriptorpb.FieldDescriptorProto{
-			Name:   proto.String(fmt.Sprintf("x%d", n)),
-			Number: proto.Int32(int32(n)),
-			Label:  descriptorpb.FieldDescriptorProto_LABEL_OPTIONAL.Enum(),
-			Type:   descriptorpb.FieldDescriptorProto_Type(k).Enum(),
-		}
-		switch k {
-		case protoreflect.BoolKind, protoreflect.EnumKind,
-			protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Uint32Kind,
-			protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Uint64Kind,
-			protoreflect.Sfixed32Kind, protoreflect.Fixed32Kind, protoreflect.FloatKind,
-			protoreflect.Sfixed64Kind, protoreflect.Fixed64Kind, protoreflect.DoubleKind:
-			f.Label = descriptorpb.FieldDescriptorProto_LABEL_REPEATED.Enum()
-			f.Options = &descriptorpb.FieldOptions{Packed: proto.Bool(true)}
-		case protoreflect.MessageKind, protoreflect.GroupKind:
-			s := name.Append(protoreflect.Name(fmt.Sprintf("X%d", n)))
-			f.TypeName = proto.String(string("." + s))
-			m.NestedType = append(m.NestedType, fs[n].sub.messageDescriptor(s))
-		}
-		m.Field = append(m.Field, f)
-	}
-	return m
-}
-
-func (fs fields) sortedNums() (ns []protowire.Number) {
-	for n := range fs {
-		ns = append(ns, n)
-	}
-	sort.Slice(ns, func(i, j int) bool { return ns[i] < ns[j] })
-	return ns
-}
-
-// fieldsFlag is an implementation of flag.Value that is keyed a specific kind.
-type fieldsFlag struct {
-	f *fields
-	k protoreflect.Kind
-}
-
-func (fs fieldsFlag) String() string     { return "FIELDS" }
-func (fs fieldsFlag) Set(s string) error { return fs.f.Set(s, fs.k) }
diff --git a/internal/cmd/pbdump/pbdump_test.go b/internal/cmd/pbdump/pbdump_test.go
deleted file mode 100644
index 567cea0..0000000
--- a/internal/cmd/pbdump/pbdump_test.go
+++ /dev/null
@@ -1,115 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package main
-
-import (
-	"fmt"
-	"strings"
-	"testing"
-
-	"google.golang.org/protobuf/encoding/prototext"
-	"google.golang.org/protobuf/proto"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-
-	"google.golang.org/protobuf/types/descriptorpb"
-)
-
-func mustMakeMessage(s string) *descriptorpb.DescriptorProto {
-	s = fmt.Sprintf(`name:"test.proto" syntax:"proto2" message_type:[{%s}]`, s)
-	pb := new(descriptorpb.FileDescriptorProto)
-	if err := prototext.Unmarshal([]byte(s), pb); err != nil {
-		panic(err)
-	}
-	return pb.MessageType[0]
-}
-
-func TestFields(t *testing.T) {
-	type fieldsKind struct {
-		kind   pref.Kind
-		fields string
-	}
-	tests := []struct {
-		inFields []fieldsKind
-		wantMsg  *descriptorpb.DescriptorProto
-		wantErr  string
-	}{{
-		inFields: []fieldsKind{{pref.MessageKind, ""}},
-		wantMsg:  mustMakeMessage(`name:"X"`),
-	}, {
-		inFields: []fieldsKind{{pref.MessageKind, "987654321"}},
-		wantErr:  "invalid field: 987654321",
-	}, {
-		inFields: []fieldsKind{{pref.MessageKind, "-1"}},
-		wantErr:  "invalid field: -1",
-	}, {
-		inFields: []fieldsKind{{pref.MessageKind, "k"}},
-		wantErr:  "invalid field: k",
-	}, {
-		inFields: []fieldsKind{{pref.MessageKind, "1.2"}, {pref.Int32Kind, "1"}},
-		wantErr:  "field 1 of int32 type cannot have sub-fields",
-	}, {
-		inFields: []fieldsKind{{pref.Int32Kind, "1"}, {pref.MessageKind, "1.2"}},
-		wantErr:  "field 1 of int32 type cannot have sub-fields",
-	}, {
-		inFields: []fieldsKind{{pref.Int32Kind, "30"}, {pref.Int32Kind, "30"}},
-		wantErr:  "field 30 already set as int32 type",
-	}, {
-		inFields: []fieldsKind{
-			{pref.Int32Kind, "10.20.31"},
-			{pref.MessageKind, "  10.20.30, 10.21   "},
-			{pref.GroupKind, "10"},
-		},
-		wantMsg: mustMakeMessage(`
-			name: "X"
-			field: [
-				{name:"x10" number:10 label:LABEL_OPTIONAL type:TYPE_GROUP type_name:".X.X10"}
-			]
-			nested_type: [{
-				name: "X10"
-				field: [
-					{name:"x20" number:20 label:LABEL_OPTIONAL type:TYPE_MESSAGE type_name:".X.X10.X20"},
-					{name:"x21" number:21 label:LABEL_OPTIONAL type:TYPE_MESSAGE type_name:".X.X10.X21"}
-				]
-				nested_type: [{
-					name: "X20"
-					field:[
-						{name:"x30" number:30 label:LABEL_OPTIONAL type:TYPE_MESSAGE, type_name:".X.X10.X20.X30"},
-						{name:"x31" number:31 label:LABEL_REPEATED type:TYPE_INT32 options:{packed:true}}
-					]
-					nested_type: [{
-						name: "X30"
-					}]
-				}, {
-					name: "X21"
-				}]
-			}]
-		`),
-	}}
-
-	for _, tt := range tests {
-		t.Run("", func(t *testing.T) {
-			var fields fields
-			for i, tc := range tt.inFields {
-				gotErr := fields.Set(tc.fields, tc.kind)
-				if gotErr != nil {
-					if tt.wantErr == "" || !strings.Contains(fmt.Sprint(gotErr), tt.wantErr) {
-						t.Fatalf("fields %d, Set(%q, %v) = %v, want %v", i, tc.fields, tc.kind, gotErr, tt.wantErr)
-					}
-					return
-				}
-			}
-			if tt.wantErr != "" {
-				t.Errorf("all Set calls succeeded, want %v error", tt.wantErr)
-			}
-			gotMsg := fields.messageDescriptor("X")
-			if !proto.Equal(gotMsg, tt.wantMsg) {
-				t.Errorf("messageDescriptor() mismatch:\ngot  %v\nwant %v", gotMsg, tt.wantMsg)
-			}
-			if _, err := fields.Descriptor(); err != nil {
-				t.Errorf("Descriptor() = %v, want nil error", err)
-			}
-		})
-	}
-}
diff --git a/internal/conformance/conformance_test.go b/internal/conformance/conformance_test.go
deleted file mode 100644
index 1202050..0000000
--- a/internal/conformance/conformance_test.go
+++ /dev/null
@@ -1,169 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package conformance_test
-
-import (
-	"encoding/binary"
-	"flag"
-	"io"
-	"log"
-	"os"
-	"os/exec"
-	"path/filepath"
-	"testing"
-
-	"google.golang.org/protobuf/encoding/protojson"
-	"google.golang.org/protobuf/encoding/prototext"
-	"google.golang.org/protobuf/proto"
-
-	pb "google.golang.org/protobuf/internal/testprotos/conformance"
-)
-
-func init() {
-	// When the environment variable RUN_AS_CONFORMANCE_PLUGIN is set,
-	// we skip running the tests and instead act as a conformance plugin.
-	// This allows the binary to pass itself to conformance.
-	if os.Getenv("RUN_AS_CONFORMANCE_PLUGIN") == "1" {
-		main()
-		os.Exit(0)
-	}
-}
-
-var (
-	execute   = flag.Bool("execute", false, "execute the conformance test")
-	protoRoot = flag.String("protoroot", os.Getenv("PROTOBUF_ROOT"), "The root of the protobuf source tree.")
-)
-
-func Test(t *testing.T) {
-	if !*execute {
-		t.SkipNow()
-	}
-	binPath := filepath.Join(*protoRoot, "conformance", "conformance-test-runner")
-	cmd := exec.Command(binPath,
-		"--failure_list", "failing_tests.txt",
-		"--text_format_failure_list", "failing_tests_text_format.txt",
-		"--enforce_recommended",
-		os.Args[0])
-	cmd.Env = append(os.Environ(), "RUN_AS_CONFORMANCE_PLUGIN=1")
-	out, err := cmd.CombinedOutput()
-	if err != nil {
-		t.Fatalf("execution error: %v\n\n%s", err, out)
-	}
-}
-
-func main() {
-	var sizeBuf [4]byte
-	inbuf := make([]byte, 0, 4096)
-	for {
-		_, err := io.ReadFull(os.Stdin, sizeBuf[:])
-		if err == io.EOF {
-			break
-		}
-		if err != nil {
-			log.Fatalf("conformance: read request: %v", err)
-		}
-		size := binary.LittleEndian.Uint32(sizeBuf[:])
-		if int(size) > cap(inbuf) {
-			inbuf = make([]byte, size)
-		}
-		inbuf = inbuf[:size]
-		if _, err := io.ReadFull(os.Stdin, inbuf); err != nil {
-			log.Fatalf("conformance: read request: %v", err)
-		}
-
-		req := &pb.ConformanceRequest{}
-		if err := proto.Unmarshal(inbuf, req); err != nil {
-			log.Fatalf("conformance: parse request: %v", err)
-		}
-		res := handle(req)
-
-		out, err := proto.Marshal(res)
-		if err != nil {
-			log.Fatalf("conformance: marshal response: %v", err)
-		}
-		binary.LittleEndian.PutUint32(sizeBuf[:], uint32(len(out)))
-		if _, err := os.Stdout.Write(sizeBuf[:]); err != nil {
-			log.Fatalf("conformance: write response: %v", err)
-		}
-		if _, err := os.Stdout.Write(out); err != nil {
-			log.Fatalf("conformance: write response: %v", err)
-		}
-	}
-}
-
-func handle(req *pb.ConformanceRequest) (res *pb.ConformanceResponse) {
-	var msg proto.Message = &pb.TestAllTypesProto2{}
-	if req.GetMessageType() == "protobuf_test_messages.proto3.TestAllTypesProto3" {
-		msg = &pb.TestAllTypesProto3{}
-	}
-
-	// Unmarshal the test message.
-	var err error
-	switch p := req.Payload.(type) {
-	case *pb.ConformanceRequest_ProtobufPayload:
-		err = proto.Unmarshal(p.ProtobufPayload, msg)
-	case *pb.ConformanceRequest_JsonPayload:
-		err = protojson.UnmarshalOptions{
-			DiscardUnknown: req.TestCategory == pb.TestCategory_JSON_IGNORE_UNKNOWN_PARSING_TEST,
-		}.Unmarshal([]byte(p.JsonPayload), msg)
-	case *pb.ConformanceRequest_TextPayload:
-		err = prototext.Unmarshal([]byte(p.TextPayload), msg)
-	default:
-		return &pb.ConformanceResponse{
-			Result: &pb.ConformanceResponse_RuntimeError{
-				RuntimeError: "unknown request payload type",
-			},
-		}
-	}
-	if err != nil {
-		return &pb.ConformanceResponse{
-			Result: &pb.ConformanceResponse_ParseError{
-				ParseError: err.Error(),
-			},
-		}
-	}
-
-	// Marshal the test message.
-	var b []byte
-	switch req.RequestedOutputFormat {
-	case pb.WireFormat_PROTOBUF:
-		b, err = proto.Marshal(msg)
-		res = &pb.ConformanceResponse{
-			Result: &pb.ConformanceResponse_ProtobufPayload{
-				ProtobufPayload: b,
-			},
-		}
-	case pb.WireFormat_JSON:
-		b, err = protojson.Marshal(msg)
-		res = &pb.ConformanceResponse{
-			Result: &pb.ConformanceResponse_JsonPayload{
-				JsonPayload: string(b),
-			},
-		}
-	case pb.WireFormat_TEXT_FORMAT:
-		b, err = prototext.MarshalOptions{
-			EmitUnknown: req.PrintUnknownFields,
-		}.Marshal(msg)
-		res = &pb.ConformanceResponse{
-			Result: &pb.ConformanceResponse_TextPayload{
-				TextPayload: string(b),
-			},
-		}
-	default:
-		return &pb.ConformanceResponse{
-			Result: &pb.ConformanceResponse_RuntimeError{
-				RuntimeError: "unknown output format",
-			},
-		}
-	}
-	if err != nil {
-		return &pb.ConformanceResponse{
-			Result: &pb.ConformanceResponse_SerializeError{
-				SerializeError: err.Error(),
-			},
-		}
-	}
-	return res
-}
diff --git a/internal/conformance/failing_tests.txt b/internal/conformance/failing_tests.txt
deleted file mode 100644
index e69de29..0000000
--- a/internal/conformance/failing_tests.txt
+++ /dev/null
diff --git a/internal/conformance/failing_tests_text_format.txt b/internal/conformance/failing_tests_text_format.txt
deleted file mode 100644
index 9c26750..0000000
--- a/internal/conformance/failing_tests_text_format.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-Recommended.Proto3.ProtobufInput.MessageUnknownFields_Print.TextFormatOutput
-Recommended.Proto3.TextFormatInput.StringLiteralShortUnicodeEscapeSurrogatePairBytes
-Recommended.Proto3.TextFormatInput.StringLiteralShortUnicodeEscapeSurrogatePairString
-Recommended.Proto3.TextFormatInput.StringLiteralUnicodeEscapeSurrogatePairLongShortBytes
-Recommended.Proto3.TextFormatInput.StringLiteralUnicodeEscapeSurrogatePairLongShortString
diff --git a/internal/descfmt/desc_test.go b/internal/descfmt/desc_test.go
deleted file mode 100644
index c9b92f5..0000000
--- a/internal/descfmt/desc_test.go
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package descfmt
-
-import (
-	"testing"
-)
-
-// TestDescriptorAccessors tests that descriptorAccessors is up-to-date.
-func TestDescriptorAccessors(t *testing.T) {
-	ignore := map[string]bool{
-		"ParentFile":    true,
-		"Parent":        true,
-		"Index":         true,
-		"Syntax":        true,
-		"Name":          true,
-		"FullName":      true,
-		"IsPlaceholder": true,
-		"Options":       true,
-		"ProtoInternal": true,
-		"ProtoType":     true,
-
-		"TextName":           true, // derived from other fields
-		"HasOptionalKeyword": true, // captured by HasPresence
-		"IsSynthetic":        true, // captured by HasPresence
-
-		"SourceLocations":       true, // specific to FileDescriptor
-		"ExtensionRangeOptions": true, // specific to MessageDescriptor
-		"DefaultEnumValue":      true, // specific to FieldDescriptor
-		"MapKey":                true, // specific to FieldDescriptor
-		"MapValue":              true, // specific to FieldDescriptor
-	}
-
-	for rt, m := range descriptorAccessors {
-		got := map[string]bool{}
-		for _, s := range m {
-			got[s] = true
-		}
-		want := map[string]bool{}
-		for i := 0; i < rt.NumMethod(); i++ {
-			want[rt.Method(i).Name] = true
-		}
-
-		// Check if descriptorAccessors contains a non-existent accessor.
-		// If this test fails, remove the accessor from descriptorAccessors.
-		for s := range got {
-			if !want[s] && !ignore[s] {
-				t.Errorf("%v.%v does not exist", rt, s)
-			}
-		}
-
-		// Check if there are new protoreflect interface methods that are not
-		// handled by the formatter. If this fails, either add the method to
-		// ignore or add them to descriptorAccessors.
-		for s := range want {
-			if !got[s] && !ignore[s] {
-				t.Errorf("%v.%v is not called by formatter", rt, s)
-			}
-		}
-	}
-}
diff --git a/internal/descfmt/stringer.go b/internal/descfmt/stringer.go
deleted file mode 100644
index 360c633..0000000
--- a/internal/descfmt/stringer.go
+++ /dev/null
@@ -1,318 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package descfmt provides functionality to format descriptors.
-package descfmt
-
-import (
-	"fmt"
-	"io"
-	"reflect"
-	"strconv"
-	"strings"
-
-	"google.golang.org/protobuf/internal/detrand"
-	"google.golang.org/protobuf/internal/pragma"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-type list interface {
-	Len() int
-	pragma.DoNotImplement
-}
-
-func FormatList(s fmt.State, r rune, vs list) {
-	io.WriteString(s, formatListOpt(vs, true, r == 'v' && (s.Flag('+') || s.Flag('#'))))
-}
-func formatListOpt(vs list, isRoot, allowMulti bool) string {
-	start, end := "[", "]"
-	if isRoot {
-		var name string
-		switch vs.(type) {
-		case pref.Names:
-			name = "Names"
-		case pref.FieldNumbers:
-			name = "FieldNumbers"
-		case pref.FieldRanges:
-			name = "FieldRanges"
-		case pref.EnumRanges:
-			name = "EnumRanges"
-		case pref.FileImports:
-			name = "FileImports"
-		case pref.Descriptor:
-			name = reflect.ValueOf(vs).MethodByName("Get").Type().Out(0).Name() + "s"
-		default:
-			name = reflect.ValueOf(vs).Elem().Type().Name()
-		}
-		start, end = name+"{", "}"
-	}
-
-	var ss []string
-	switch vs := vs.(type) {
-	case pref.Names:
-		for i := 0; i < vs.Len(); i++ {
-			ss = append(ss, fmt.Sprint(vs.Get(i)))
-		}
-		return start + joinStrings(ss, false) + end
-	case pref.FieldNumbers:
-		for i := 0; i < vs.Len(); i++ {
-			ss = append(ss, fmt.Sprint(vs.Get(i)))
-		}
-		return start + joinStrings(ss, false) + end
-	case pref.FieldRanges:
-		for i := 0; i < vs.Len(); i++ {
-			r := vs.Get(i)
-			if r[0]+1 == r[1] {
-				ss = append(ss, fmt.Sprintf("%d", r[0]))
-			} else {
-				ss = append(ss, fmt.Sprintf("%d:%d", r[0], r[1])) // enum ranges are end exclusive
-			}
-		}
-		return start + joinStrings(ss, false) + end
-	case pref.EnumRanges:
-		for i := 0; i < vs.Len(); i++ {
-			r := vs.Get(i)
-			if r[0] == r[1] {
-				ss = append(ss, fmt.Sprintf("%d", r[0]))
-			} else {
-				ss = append(ss, fmt.Sprintf("%d:%d", r[0], int64(r[1])+1)) // enum ranges are end inclusive
-			}
-		}
-		return start + joinStrings(ss, false) + end
-	case pref.FileImports:
-		for i := 0; i < vs.Len(); i++ {
-			var rs records
-			rs.Append(reflect.ValueOf(vs.Get(i)), "Path", "Package", "IsPublic", "IsWeak")
-			ss = append(ss, "{"+rs.Join()+"}")
-		}
-		return start + joinStrings(ss, allowMulti) + end
-	default:
-		_, isEnumValue := vs.(pref.EnumValueDescriptors)
-		for i := 0; i < vs.Len(); i++ {
-			m := reflect.ValueOf(vs).MethodByName("Get")
-			v := m.Call([]reflect.Value{reflect.ValueOf(i)})[0].Interface()
-			ss = append(ss, formatDescOpt(v.(pref.Descriptor), false, allowMulti && !isEnumValue))
-		}
-		return start + joinStrings(ss, allowMulti && isEnumValue) + end
-	}
-}
-
-// descriptorAccessors is a list of accessors to print for each descriptor.
-//
-// Do not print all accessors since some contain redundant information,
-// while others are pointers that we do not want to follow since the descriptor
-// is actually a cyclic graph.
-//
-// Using a list allows us to print the accessors in a sensible order.
-var descriptorAccessors = map[reflect.Type][]string{
-	reflect.TypeOf((*pref.FileDescriptor)(nil)).Elem():      {"Path", "Package", "Imports", "Messages", "Enums", "Extensions", "Services"},
-	reflect.TypeOf((*pref.MessageDescriptor)(nil)).Elem():   {"IsMapEntry", "Fields", "Oneofs", "ReservedNames", "ReservedRanges", "RequiredNumbers", "ExtensionRanges", "Messages", "Enums", "Extensions"},
-	reflect.TypeOf((*pref.FieldDescriptor)(nil)).Elem():     {"Number", "Cardinality", "Kind", "HasJSONName", "JSONName", "HasPresence", "IsExtension", "IsPacked", "IsWeak", "IsList", "IsMap", "MapKey", "MapValue", "HasDefault", "Default", "ContainingOneof", "ContainingMessage", "Message", "Enum"},
-	reflect.TypeOf((*pref.OneofDescriptor)(nil)).Elem():     {"Fields"}, // not directly used; must keep in sync with formatDescOpt
-	reflect.TypeOf((*pref.EnumDescriptor)(nil)).Elem():      {"Values", "ReservedNames", "ReservedRanges"},
-	reflect.TypeOf((*pref.EnumValueDescriptor)(nil)).Elem(): {"Number"},
-	reflect.TypeOf((*pref.ServiceDescriptor)(nil)).Elem():   {"Methods"},
-	reflect.TypeOf((*pref.MethodDescriptor)(nil)).Elem():    {"Input", "Output", "IsStreamingClient", "IsStreamingServer"},
-}
-
-func FormatDesc(s fmt.State, r rune, t pref.Descriptor) {
-	io.WriteString(s, formatDescOpt(t, true, r == 'v' && (s.Flag('+') || s.Flag('#'))))
-}
-func formatDescOpt(t pref.Descriptor, isRoot, allowMulti bool) string {
-	rv := reflect.ValueOf(t)
-	rt := rv.MethodByName("ProtoType").Type().In(0)
-
-	start, end := "{", "}"
-	if isRoot {
-		start = rt.Name() + "{"
-	}
-
-	_, isFile := t.(pref.FileDescriptor)
-	rs := records{allowMulti: allowMulti}
-	if t.IsPlaceholder() {
-		if isFile {
-			rs.Append(rv, "Path", "Package", "IsPlaceholder")
-		} else {
-			rs.Append(rv, "FullName", "IsPlaceholder")
-		}
-	} else {
-		switch {
-		case isFile:
-			rs.Append(rv, "Syntax")
-		case isRoot:
-			rs.Append(rv, "Syntax", "FullName")
-		default:
-			rs.Append(rv, "Name")
-		}
-		switch t := t.(type) {
-		case pref.FieldDescriptor:
-			for _, s := range descriptorAccessors[rt] {
-				switch s {
-				case "MapKey":
-					if k := t.MapKey(); k != nil {
-						rs.recs = append(rs.recs, [2]string{"MapKey", k.Kind().String()})
-					}
-				case "MapValue":
-					if v := t.MapValue(); v != nil {
-						switch v.Kind() {
-						case pref.EnumKind:
-							rs.recs = append(rs.recs, [2]string{"MapValue", string(v.Enum().FullName())})
-						case pref.MessageKind, pref.GroupKind:
-							rs.recs = append(rs.recs, [2]string{"MapValue", string(v.Message().FullName())})
-						default:
-							rs.recs = append(rs.recs, [2]string{"MapValue", v.Kind().String()})
-						}
-					}
-				case "ContainingOneof":
-					if od := t.ContainingOneof(); od != nil {
-						rs.recs = append(rs.recs, [2]string{"Oneof", string(od.Name())})
-					}
-				case "ContainingMessage":
-					if t.IsExtension() {
-						rs.recs = append(rs.recs, [2]string{"Extendee", string(t.ContainingMessage().FullName())})
-					}
-				case "Message":
-					if !t.IsMap() {
-						rs.Append(rv, s)
-					}
-				default:
-					rs.Append(rv, s)
-				}
-			}
-		case pref.OneofDescriptor:
-			var ss []string
-			fs := t.Fields()
-			for i := 0; i < fs.Len(); i++ {
-				ss = append(ss, string(fs.Get(i).Name()))
-			}
-			if len(ss) > 0 {
-				rs.recs = append(rs.recs, [2]string{"Fields", "[" + joinStrings(ss, false) + "]"})
-			}
-		default:
-			rs.Append(rv, descriptorAccessors[rt]...)
-		}
-		if rv.MethodByName("GoType").IsValid() {
-			rs.Append(rv, "GoType")
-		}
-	}
-	return start + rs.Join() + end
-}
-
-type records struct {
-	recs       [][2]string
-	allowMulti bool
-}
-
-func (rs *records) Append(v reflect.Value, accessors ...string) {
-	for _, a := range accessors {
-		var rv reflect.Value
-		if m := v.MethodByName(a); m.IsValid() {
-			rv = m.Call(nil)[0]
-		}
-		if v.Kind() == reflect.Struct && !rv.IsValid() {
-			rv = v.FieldByName(a)
-		}
-		if !rv.IsValid() {
-			panic(fmt.Sprintf("unknown accessor: %v.%s", v.Type(), a))
-		}
-		if _, ok := rv.Interface().(pref.Value); ok {
-			rv = rv.MethodByName("Interface").Call(nil)[0]
-			if !rv.IsNil() {
-				rv = rv.Elem()
-			}
-		}
-
-		// Ignore zero values.
-		var isZero bool
-		switch rv.Kind() {
-		case reflect.Interface, reflect.Slice:
-			isZero = rv.IsNil()
-		case reflect.Bool:
-			isZero = rv.Bool() == false
-		case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
-			isZero = rv.Int() == 0
-		case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
-			isZero = rv.Uint() == 0
-		case reflect.String:
-			isZero = rv.String() == ""
-		}
-		if n, ok := rv.Interface().(list); ok {
-			isZero = n.Len() == 0
-		}
-		if isZero {
-			continue
-		}
-
-		// Format the value.
-		var s string
-		v := rv.Interface()
-		switch v := v.(type) {
-		case list:
-			s = formatListOpt(v, false, rs.allowMulti)
-		case pref.FieldDescriptor, pref.OneofDescriptor, pref.EnumValueDescriptor, pref.MethodDescriptor:
-			s = string(v.(pref.Descriptor).Name())
-		case pref.Descriptor:
-			s = string(v.FullName())
-		case string:
-			s = strconv.Quote(v)
-		case []byte:
-			s = fmt.Sprintf("%q", v)
-		default:
-			s = fmt.Sprint(v)
-		}
-		rs.recs = append(rs.recs, [2]string{a, s})
-	}
-}
-
-func (rs *records) Join() string {
-	var ss []string
-
-	// In single line mode, simply join all records with commas.
-	if !rs.allowMulti {
-		for _, r := range rs.recs {
-			ss = append(ss, r[0]+formatColon(0)+r[1])
-		}
-		return joinStrings(ss, false)
-	}
-
-	// In allowMulti line mode, align single line records for more readable output.
-	var maxLen int
-	flush := func(i int) {
-		for _, r := range rs.recs[len(ss):i] {
-			ss = append(ss, r[0]+formatColon(maxLen-len(r[0]))+r[1])
-		}
-		maxLen = 0
-	}
-	for i, r := range rs.recs {
-		if isMulti := strings.Contains(r[1], "\n"); isMulti {
-			flush(i)
-			ss = append(ss, r[0]+formatColon(0)+strings.Join(strings.Split(r[1], "\n"), "\n\t"))
-		} else if maxLen < len(r[0]) {
-			maxLen = len(r[0])
-		}
-	}
-	flush(len(rs.recs))
-	return joinStrings(ss, true)
-}
-
-func formatColon(padding int) string {
-	// Deliberately introduce instability into the debug output to
-	// discourage users from performing string comparisons.
-	// This provides us flexibility to change the output in the future.
-	if detrand.Bool() {
-		return ":" + strings.Repeat(" ", 1+padding) // use non-breaking spaces (U+00a0)
-	} else {
-		return ":" + strings.Repeat(" ", 1+padding) // use regular spaces (U+0020)
-	}
-}
-
-func joinStrings(ss []string, isMulti bool) string {
-	if len(ss) == 0 {
-		return ""
-	}
-	if isMulti {
-		return "\n\t" + strings.Join(ss, "\n\t") + "\n"
-	}
-	return strings.Join(ss, ", ")
-}
diff --git a/internal/descopts/options.go b/internal/descopts/options.go
deleted file mode 100644
index 8401be8..0000000
--- a/internal/descopts/options.go
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package descopts contains the nil pointers to concrete descriptor options.
-//
-// This package exists as a form of reverse dependency injection so that certain
-// packages (e.g., internal/filedesc and internal/filetype can avoid a direct
-// dependency on the descriptor proto package).
-package descopts
-
-import pref "google.golang.org/protobuf/reflect/protoreflect"
-
-// These variables are set by the init function in descriptor.pb.go via logic
-// in internal/filetype. In other words, so long as the descriptor proto package
-// is linked in, these variables will be populated.
-//
-// Each variable is populated with a nil pointer to the options struct.
-var (
-	File           pref.ProtoMessage
-	Enum           pref.ProtoMessage
-	EnumValue      pref.ProtoMessage
-	Message        pref.ProtoMessage
-	Field          pref.ProtoMessage
-	Oneof          pref.ProtoMessage
-	ExtensionRange pref.ProtoMessage
-	Service        pref.ProtoMessage
-	Method         pref.ProtoMessage
-)
diff --git a/internal/detrand/rand.go b/internal/detrand/rand.go
deleted file mode 100644
index 49c8676..0000000
--- a/internal/detrand/rand.go
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package detrand provides deterministically random functionality.
-//
-// The pseudo-randomness of these functions is seeded by the program binary
-// itself and guarantees that the output does not change within a program,
-// while ensuring that the output is unstable across different builds.
-package detrand
-
-import (
-	"encoding/binary"
-	"hash/fnv"
-	"os"
-)
-
-// Disable disables detrand such that all functions returns the zero value.
-// This function is not concurrent-safe and must be called during program init.
-func Disable() {
-	randSeed = 0
-}
-
-// Bool returns a deterministically random boolean.
-func Bool() bool {
-	return randSeed%2 == 1
-}
-
-// Intn returns a deterministically random integer between 0 and n-1, inclusive.
-func Intn(n int) int {
-	if n <= 0 {
-		panic("must be positive")
-	}
-	return int(randSeed % uint64(n))
-}
-
-// randSeed is a best-effort at an approximate hash of the Go binary.
-var randSeed = binaryHash()
-
-func binaryHash() uint64 {
-	// Open the Go binary.
-	s, err := os.Executable()
-	if err != nil {
-		return 0
-	}
-	f, err := os.Open(s)
-	if err != nil {
-		return 0
-	}
-	defer f.Close()
-
-	// Hash the size and several samples of the Go binary.
-	const numSamples = 8
-	var buf [64]byte
-	h := fnv.New64()
-	fi, err := f.Stat()
-	if err != nil {
-		return 0
-	}
-	binary.LittleEndian.PutUint64(buf[:8], uint64(fi.Size()))
-	h.Write(buf[:8])
-	for i := int64(0); i < numSamples; i++ {
-		if _, err := f.ReadAt(buf[:], i*fi.Size()/numSamples); err != nil {
-			return 0
-		}
-		h.Write(buf[:])
-	}
-	return h.Sum64()
-}
diff --git a/internal/detrand/rand_test.go b/internal/detrand/rand_test.go
deleted file mode 100644
index 68c55d2..0000000
--- a/internal/detrand/rand_test.go
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package detrand
-
-import "testing"
-
-func Benchmark(b *testing.B) {
-	b.ReportAllocs()
-	for i := 0; i < b.N; i++ {
-		binaryHash()
-	}
-}
diff --git a/internal/encoding/defval/default.go b/internal/encoding/defval/default.go
deleted file mode 100644
index fdd9b13..0000000
--- a/internal/encoding/defval/default.go
+++ /dev/null
@@ -1,213 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package defval marshals and unmarshals textual forms of default values.
-//
-// This package handles both the form historically used in Go struct field tags
-// and also the form used by google.protobuf.FieldDescriptorProto.default_value
-// since they differ in superficial ways.
-package defval
-
-import (
-	"fmt"
-	"math"
-	"strconv"
-
-	ptext "google.golang.org/protobuf/internal/encoding/text"
-	errors "google.golang.org/protobuf/internal/errors"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-// Format is the serialization format used to represent the default value.
-type Format int
-
-const (
-	_ Format = iota
-
-	// Descriptor uses the serialization format that protoc uses with the
-	// google.protobuf.FieldDescriptorProto.default_value field.
-	Descriptor
-
-	// GoTag uses the historical serialization format in Go struct field tags.
-	GoTag
-)
-
-// Unmarshal deserializes the default string s according to the given kind k.
-// When k is an enum, a list of enum value descriptors must be provided.
-func Unmarshal(s string, k pref.Kind, evs pref.EnumValueDescriptors, f Format) (pref.Value, pref.EnumValueDescriptor, error) {
-	switch k {
-	case pref.BoolKind:
-		if f == GoTag {
-			switch s {
-			case "1":
-				return pref.ValueOfBool(true), nil, nil
-			case "0":
-				return pref.ValueOfBool(false), nil, nil
-			}
-		} else {
-			switch s {
-			case "true":
-				return pref.ValueOfBool(true), nil, nil
-			case "false":
-				return pref.ValueOfBool(false), nil, nil
-			}
-		}
-	case pref.EnumKind:
-		if f == GoTag {
-			// Go tags use the numeric form of the enum value.
-			if n, err := strconv.ParseInt(s, 10, 32); err == nil {
-				if ev := evs.ByNumber(pref.EnumNumber(n)); ev != nil {
-					return pref.ValueOfEnum(ev.Number()), ev, nil
-				}
-			}
-		} else {
-			// Descriptor default_value use the enum identifier.
-			ev := evs.ByName(pref.Name(s))
-			if ev != nil {
-				return pref.ValueOfEnum(ev.Number()), ev, nil
-			}
-		}
-	case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
-		if v, err := strconv.ParseInt(s, 10, 32); err == nil {
-			return pref.ValueOfInt32(int32(v)), nil, nil
-		}
-	case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
-		if v, err := strconv.ParseInt(s, 10, 64); err == nil {
-			return pref.ValueOfInt64(int64(v)), nil, nil
-		}
-	case pref.Uint32Kind, pref.Fixed32Kind:
-		if v, err := strconv.ParseUint(s, 10, 32); err == nil {
-			return pref.ValueOfUint32(uint32(v)), nil, nil
-		}
-	case pref.Uint64Kind, pref.Fixed64Kind:
-		if v, err := strconv.ParseUint(s, 10, 64); err == nil {
-			return pref.ValueOfUint64(uint64(v)), nil, nil
-		}
-	case pref.FloatKind, pref.DoubleKind:
-		var v float64
-		var err error
-		switch s {
-		case "-inf":
-			v = math.Inf(-1)
-		case "inf":
-			v = math.Inf(+1)
-		case "nan":
-			v = math.NaN()
-		default:
-			v, err = strconv.ParseFloat(s, 64)
-		}
-		if err == nil {
-			if k == pref.FloatKind {
-				return pref.ValueOfFloat32(float32(v)), nil, nil
-			} else {
-				return pref.ValueOfFloat64(float64(v)), nil, nil
-			}
-		}
-	case pref.StringKind:
-		// String values are already unescaped and can be used as is.
-		return pref.ValueOfString(s), nil, nil
-	case pref.BytesKind:
-		if b, ok := unmarshalBytes(s); ok {
-			return pref.ValueOfBytes(b), nil, nil
-		}
-	}
-	return pref.Value{}, nil, errors.New("could not parse value for %v: %q", k, s)
-}
-
-// Marshal serializes v as the default string according to the given kind k.
-// When specifying the Descriptor format for an enum kind, the associated
-// enum value descriptor must be provided.
-func Marshal(v pref.Value, ev pref.EnumValueDescriptor, k pref.Kind, f Format) (string, error) {
-	switch k {
-	case pref.BoolKind:
-		if f == GoTag {
-			if v.Bool() {
-				return "1", nil
-			} else {
-				return "0", nil
-			}
-		} else {
-			if v.Bool() {
-				return "true", nil
-			} else {
-				return "false", nil
-			}
-		}
-	case pref.EnumKind:
-		if f == GoTag {
-			return strconv.FormatInt(int64(v.Enum()), 10), nil
-		} else {
-			return string(ev.Name()), nil
-		}
-	case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind, pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
-		return strconv.FormatInt(v.Int(), 10), nil
-	case pref.Uint32Kind, pref.Fixed32Kind, pref.Uint64Kind, pref.Fixed64Kind:
-		return strconv.FormatUint(v.Uint(), 10), nil
-	case pref.FloatKind, pref.DoubleKind:
-		f := v.Float()
-		switch {
-		case math.IsInf(f, -1):
-			return "-inf", nil
-		case math.IsInf(f, +1):
-			return "inf", nil
-		case math.IsNaN(f):
-			return "nan", nil
-		default:
-			if k == pref.FloatKind {
-				return strconv.FormatFloat(f, 'g', -1, 32), nil
-			} else {
-				return strconv.FormatFloat(f, 'g', -1, 64), nil
-			}
-		}
-	case pref.StringKind:
-		// String values are serialized as is without any escaping.
-		return v.String(), nil
-	case pref.BytesKind:
-		if s, ok := marshalBytes(v.Bytes()); ok {
-			return s, nil
-		}
-	}
-	return "", errors.New("could not format value for %v: %v", k, v)
-}
-
-// unmarshalBytes deserializes bytes by applying C unescaping.
-func unmarshalBytes(s string) ([]byte, bool) {
-	// Bytes values use the same escaping as the text format,
-	// however they lack the surrounding double quotes.
-	v, err := ptext.UnmarshalString(`"` + s + `"`)
-	if err != nil {
-		return nil, false
-	}
-	return []byte(v), true
-}
-
-// marshalBytes serializes bytes by using C escaping.
-// To match the exact output of protoc, this is identical to the
-// CEscape function in strutil.cc of the protoc source code.
-func marshalBytes(b []byte) (string, bool) {
-	var s []byte
-	for _, c := range b {
-		switch c {
-		case '\n':
-			s = append(s, `\n`...)
-		case '\r':
-			s = append(s, `\r`...)
-		case '\t':
-			s = append(s, `\t`...)
-		case '"':
-			s = append(s, `\"`...)
-		case '\'':
-			s = append(s, `\'`...)
-		case '\\':
-			s = append(s, `\\`...)
-		default:
-			if printableASCII := c >= 0x20 && c <= 0x7e; printableASCII {
-				s = append(s, c)
-			} else {
-				s = append(s, fmt.Sprintf(`\%03o`, c)...)
-			}
-		}
-	}
-	return string(s), true
-}
diff --git a/internal/encoding/defval/default_test.go b/internal/encoding/defval/default_test.go
deleted file mode 100644
index d81150d..0000000
--- a/internal/encoding/defval/default_test.go
+++ /dev/null
@@ -1,105 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package defval_test
-
-import (
-	"math"
-	"reflect"
-	"testing"
-
-	"google.golang.org/protobuf/internal/encoding/defval"
-	fdesc "google.golang.org/protobuf/internal/filedesc"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-func Test(t *testing.T) {
-	evs := fdesc.EnumValues{List: []fdesc.EnumValue{{}}}
-	evs.List[0].L0.ParentFile = fdesc.SurrogateProto2
-	evs.List[0].L0.FullName = "ALPHA"
-	evs.List[0].L1.Number = 1
-
-	V := pref.ValueOf
-	tests := []struct {
-		val   pref.Value
-		enum  pref.EnumValueDescriptor
-		enums pref.EnumValueDescriptors
-		kind  pref.Kind
-		strPB string
-		strGo string
-	}{{
-		val:   V(bool(true)),
-		enum:  nil,
-		enums: nil,
-		kind:  pref.BoolKind,
-		strPB: "true",
-		strGo: "1",
-	}, {
-		val:   V(int32(-0x1234)),
-		enum:  nil,
-		enums: nil,
-		kind:  pref.Int32Kind,
-		strPB: "-4660",
-		strGo: "-4660",
-	}, {
-		val:   V(float32(math.Pi)),
-		enum:  nil,
-		enums: nil,
-		kind:  pref.FloatKind,
-		strPB: "3.1415927",
-		strGo: "3.1415927",
-	}, {
-		val:   V(float64(math.Pi)),
-		enum:  nil,
-		enums: nil,
-		kind:  pref.DoubleKind,
-		strPB: "3.141592653589793",
-		strGo: "3.141592653589793",
-	}, {
-		val:   V(string("hello, \xde\xad\xbe\xef\n")),
-		enum:  nil,
-		enums: nil,
-		kind:  pref.StringKind,
-		strPB: "hello, \xde\xad\xbe\xef\n",
-		strGo: "hello, \xde\xad\xbe\xef\n",
-	}, {
-		val:   V([]byte("hello, \xde\xad\xbe\xef\n")),
-		enum:  nil,
-		enums: nil,
-		kind:  pref.BytesKind,
-		strPB: "hello, \\336\\255\\276\\357\\n",
-		strGo: "hello, \\336\\255\\276\\357\\n",
-	}, {
-		val:   V(pref.EnumNumber(1)),
-		enum:  &evs.List[0],
-		enums: &evs,
-		kind:  pref.EnumKind,
-		strPB: "ALPHA",
-		strGo: "1",
-	}}
-
-	for _, tt := range tests {
-		t.Run("", func(t *testing.T) {
-			gotStr, _ := defval.Marshal(tt.val, tt.enum, tt.kind, defval.Descriptor)
-			if gotStr != tt.strPB {
-				t.Errorf("Marshal(%v, %v, Descriptor) = %q, want %q", tt.val, tt.kind, gotStr, tt.strPB)
-			}
-
-			gotStr, _ = defval.Marshal(tt.val, tt.enum, tt.kind, defval.GoTag)
-			if gotStr != tt.strGo {
-				t.Errorf("Marshal(%v, %v, GoTag) = %q, want %q", tt.val, tt.kind, gotStr, tt.strGo)
-			}
-
-			gotVal, gotEnum, _ := defval.Unmarshal(tt.strPB, tt.kind, tt.enums, defval.Descriptor)
-			if !reflect.DeepEqual(gotVal.Interface(), tt.val.Interface()) || gotEnum != tt.enum {
-				t.Errorf("Unmarshal(%v, %v, Descriptor) = (%q, %v), want (%q, %v)", tt.strPB, tt.kind, gotVal, gotEnum, tt.val, tt.enum)
-			}
-
-			gotVal, gotEnum, _ = defval.Unmarshal(tt.strGo, tt.kind, tt.enums, defval.GoTag)
-			if !reflect.DeepEqual(gotVal.Interface(), tt.val.Interface()) || gotEnum != tt.enum {
-				t.Errorf("Unmarshal(%v, %v, GoTag) = (%q, %v), want (%q, %v)", tt.strGo, tt.kind, gotVal, gotEnum, tt.val, tt.enum)
-			}
-		})
-	}
-}
diff --git a/internal/encoding/json/bench_test.go b/internal/encoding/json/bench_test.go
deleted file mode 100644
index bee8545..0000000
--- a/internal/encoding/json/bench_test.go
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package json_test
-
-import (
-	"testing"
-
-	"google.golang.org/protobuf/internal/encoding/json"
-)
-
-func BenchmarkFloat(b *testing.B) {
-	input := []byte(`1.797693134862315708145274237317043567981e+308`)
-	for i := 0; i < b.N; i++ {
-		dec := json.NewDecoder(input)
-		val, err := dec.Read()
-		if err != nil {
-			b.Fatal(err)
-		}
-		if _, ok := val.Float(64); !ok {
-			b.Fatal("not a flaot")
-		}
-	}
-}
-
-func BenchmarkInt(b *testing.B) {
-	input := []byte(`922337203.6854775807e+10`)
-	for i := 0; i < b.N; i++ {
-		dec := json.NewDecoder(input)
-		val, err := dec.Read()
-		if err != nil {
-			b.Fatal(err)
-		}
-		if _, ok := val.Int(64); !ok {
-			b.Fatal("not an int64")
-		}
-	}
-}
-
-func BenchmarkString(b *testing.B) {
-	input := []byte(`"abcdefghijklmnopqrstuvwxyz0123456789\\n\\t"`)
-	for i := 0; i < b.N; i++ {
-		dec := json.NewDecoder(input)
-		val, err := dec.Read()
-		if err != nil {
-			b.Fatal(err)
-		}
-		_ = val.ParsedString()
-	}
-}
-
-func BenchmarkBool(b *testing.B) {
-	input := []byte(`true`)
-	for i := 0; i < b.N; i++ {
-		dec := json.NewDecoder(input)
-		val, err := dec.Read()
-		if err != nil {
-			b.Fatal(err)
-		}
-		_ = val.Bool()
-	}
-}
diff --git a/internal/encoding/json/decode.go b/internal/encoding/json/decode.go
deleted file mode 100644
index b13fd29..0000000
--- a/internal/encoding/json/decode.go
+++ /dev/null
@@ -1,340 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package json
-
-import (
-	"bytes"
-	"fmt"
-	"io"
-	"regexp"
-	"unicode/utf8"
-
-	"google.golang.org/protobuf/internal/errors"
-)
-
-// call specifies which Decoder method was invoked.
-type call uint8
-
-const (
-	readCall call = iota
-	peekCall
-)
-
-const unexpectedFmt = "unexpected token %s"
-
-// ErrUnexpectedEOF means that EOF was encountered in the middle of the input.
-var ErrUnexpectedEOF = errors.New("%v", io.ErrUnexpectedEOF)
-
-// Decoder is a token-based JSON decoder.
-type Decoder struct {
-	// lastCall is last method called, either readCall or peekCall.
-	// Initial value is readCall.
-	lastCall call
-
-	// lastToken contains the last read token.
-	lastToken Token
-
-	// lastErr contains the last read error.
-	lastErr error
-
-	// openStack is a stack containing ObjectOpen and ArrayOpen values. The
-	// top of stack represents the object or the array the current value is
-	// directly located in.
-	openStack []Kind
-
-	// orig is used in reporting line and column.
-	orig []byte
-	// in contains the unconsumed input.
-	in []byte
-}
-
-// NewDecoder returns a Decoder to read the given []byte.
-func NewDecoder(b []byte) *Decoder {
-	return &Decoder{orig: b, in: b}
-}
-
-// Peek looks ahead and returns the next token kind without advancing a read.
-func (d *Decoder) Peek() (Token, error) {
-	defer func() { d.lastCall = peekCall }()
-	if d.lastCall == readCall {
-		d.lastToken, d.lastErr = d.Read()
-	}
-	return d.lastToken, d.lastErr
-}
-
-// Read returns the next JSON token.
-// It will return an error if there is no valid token.
-func (d *Decoder) Read() (Token, error) {
-	const scalar = Null | Bool | Number | String
-
-	defer func() { d.lastCall = readCall }()
-	if d.lastCall == peekCall {
-		return d.lastToken, d.lastErr
-	}
-
-	tok, err := d.parseNext()
-	if err != nil {
-		return Token{}, err
-	}
-
-	switch tok.kind {
-	case EOF:
-		if len(d.openStack) != 0 ||
-			d.lastToken.kind&scalar|ObjectClose|ArrayClose == 0 {
-			return Token{}, ErrUnexpectedEOF
-		}
-
-	case Null:
-		if !d.isValueNext() {
-			return Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString())
-		}
-
-	case Bool, Number:
-		if !d.isValueNext() {
-			return Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString())
-		}
-
-	case String:
-		if d.isValueNext() {
-			break
-		}
-		// This string token should only be for a field name.
-		if d.lastToken.kind&(ObjectOpen|comma) == 0 {
-			return Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString())
-		}
-		if len(d.in) == 0 {
-			return Token{}, ErrUnexpectedEOF
-		}
-		if c := d.in[0]; c != ':' {
-			return Token{}, d.newSyntaxError(d.currPos(), `unexpected character %s, missing ":" after field name`, string(c))
-		}
-		tok.kind = Name
-		d.consume(1)
-
-	case ObjectOpen, ArrayOpen:
-		if !d.isValueNext() {
-			return Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString())
-		}
-		d.openStack = append(d.openStack, tok.kind)
-
-	case ObjectClose:
-		if len(d.openStack) == 0 ||
-			d.lastToken.kind == comma ||
-			d.openStack[len(d.openStack)-1] != ObjectOpen {
-			return Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString())
-		}
-		d.openStack = d.openStack[:len(d.openStack)-1]
-
-	case ArrayClose:
-		if len(d.openStack) == 0 ||
-			d.lastToken.kind == comma ||
-			d.openStack[len(d.openStack)-1] != ArrayOpen {
-			return Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString())
-		}
-		d.openStack = d.openStack[:len(d.openStack)-1]
-
-	case comma:
-		if len(d.openStack) == 0 ||
-			d.lastToken.kind&(scalar|ObjectClose|ArrayClose) == 0 {
-			return Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString())
-		}
-	}
-
-	// Update d.lastToken only after validating token to be in the right sequence.
-	d.lastToken = tok
-
-	if d.lastToken.kind == comma {
-		return d.Read()
-	}
-	return tok, nil
-}
-
-// Any sequence that looks like a non-delimiter (for error reporting).
-var errRegexp = regexp.MustCompile(`^([-+._a-zA-Z0-9]{1,32}|.)`)
-
-// parseNext parses for the next JSON token. It returns a Token object for
-// different types, except for Name. It does not handle whether the next token
-// is in a valid sequence or not.
-func (d *Decoder) parseNext() (Token, error) {
-	// Trim leading spaces.
-	d.consume(0)
-
-	in := d.in
-	if len(in) == 0 {
-		return d.consumeToken(EOF, 0), nil
-	}
-
-	switch in[0] {
-	case 'n':
-		if n := matchWithDelim("null", in); n != 0 {
-			return d.consumeToken(Null, n), nil
-		}
-
-	case 't':
-		if n := matchWithDelim("true", in); n != 0 {
-			return d.consumeBoolToken(true, n), nil
-		}
-
-	case 'f':
-		if n := matchWithDelim("false", in); n != 0 {
-			return d.consumeBoolToken(false, n), nil
-		}
-
-	case '-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
-		if n, ok := parseNumber(in); ok {
-			return d.consumeToken(Number, n), nil
-		}
-
-	case '"':
-		s, n, err := d.parseString(in)
-		if err != nil {
-			return Token{}, err
-		}
-		return d.consumeStringToken(s, n), nil
-
-	case '{':
-		return d.consumeToken(ObjectOpen, 1), nil
-
-	case '}':
-		return d.consumeToken(ObjectClose, 1), nil
-
-	case '[':
-		return d.consumeToken(ArrayOpen, 1), nil
-
-	case ']':
-		return d.consumeToken(ArrayClose, 1), nil
-
-	case ',':
-		return d.consumeToken(comma, 1), nil
-	}
-	return Token{}, d.newSyntaxError(d.currPos(), "invalid value %s", errRegexp.Find(in))
-}
-
-// newSyntaxError returns an error with line and column information useful for
-// syntax errors.
-func (d *Decoder) newSyntaxError(pos int, f string, x ...interface{}) error {
-	e := errors.New(f, x...)
-	line, column := d.Position(pos)
-	return errors.New("syntax error (line %d:%d): %v", line, column, e)
-}
-
-// Position returns line and column number of given index of the original input.
-// It will panic if index is out of range.
-func (d *Decoder) Position(idx int) (line int, column int) {
-	b := d.orig[:idx]
-	line = bytes.Count(b, []byte("\n")) + 1
-	if i := bytes.LastIndexByte(b, '\n'); i >= 0 {
-		b = b[i+1:]
-	}
-	column = utf8.RuneCount(b) + 1 // ignore multi-rune characters
-	return line, column
-}
-
-// currPos returns the current index position of d.in from d.orig.
-func (d *Decoder) currPos() int {
-	return len(d.orig) - len(d.in)
-}
-
-// matchWithDelim matches s with the input b and verifies that the match
-// terminates with a delimiter of some form (e.g., r"[^-+_.a-zA-Z0-9]").
-// As a special case, EOF is considered a delimiter. It returns the length of s
-// if there is a match, else 0.
-func matchWithDelim(s string, b []byte) int {
-	if !bytes.HasPrefix(b, []byte(s)) {
-		return 0
-	}
-
-	n := len(s)
-	if n < len(b) && isNotDelim(b[n]) {
-		return 0
-	}
-	return n
-}
-
-// isNotDelim returns true if given byte is a not delimiter character.
-func isNotDelim(c byte) bool {
-	return (c == '-' || c == '+' || c == '.' || c == '_' ||
-		('a' <= c && c <= 'z') ||
-		('A' <= c && c <= 'Z') ||
-		('0' <= c && c <= '9'))
-}
-
-// consume consumes n bytes of input and any subsequent whitespace.
-func (d *Decoder) consume(n int) {
-	d.in = d.in[n:]
-	for len(d.in) > 0 {
-		switch d.in[0] {
-		case ' ', '\n', '\r', '\t':
-			d.in = d.in[1:]
-		default:
-			return
-		}
-	}
-}
-
-// isValueNext returns true if next type should be a JSON value: Null,
-// Number, String or Bool.
-func (d *Decoder) isValueNext() bool {
-	if len(d.openStack) == 0 {
-		return d.lastToken.kind == 0
-	}
-
-	start := d.openStack[len(d.openStack)-1]
-	switch start {
-	case ObjectOpen:
-		return d.lastToken.kind&Name != 0
-	case ArrayOpen:
-		return d.lastToken.kind&(ArrayOpen|comma) != 0
-	}
-	panic(fmt.Sprintf(
-		"unreachable logic in Decoder.isValueNext, lastToken.kind: %v, openStack: %v",
-		d.lastToken.kind, start))
-}
-
-// consumeToken constructs a Token for given Kind with raw value derived from
-// current d.in and given size, and consumes the given size-lenght of it.
-func (d *Decoder) consumeToken(kind Kind, size int) Token {
-	tok := Token{
-		kind: kind,
-		raw:  d.in[:size],
-		pos:  len(d.orig) - len(d.in),
-	}
-	d.consume(size)
-	return tok
-}
-
-// consumeBoolToken constructs a Token for a Bool kind with raw value derived from
-// current d.in and given size.
-func (d *Decoder) consumeBoolToken(b bool, size int) Token {
-	tok := Token{
-		kind: Bool,
-		raw:  d.in[:size],
-		pos:  len(d.orig) - len(d.in),
-		boo:  b,
-	}
-	d.consume(size)
-	return tok
-}
-
-// consumeStringToken constructs a Token for a String kind with raw value derived
-// from current d.in and given size.
-func (d *Decoder) consumeStringToken(s string, size int) Token {
-	tok := Token{
-		kind: String,
-		raw:  d.in[:size],
-		pos:  len(d.orig) - len(d.in),
-		str:  s,
-	}
-	d.consume(size)
-	return tok
-}
-
-// Clone returns a copy of the Decoder for use in reading ahead the next JSON
-// object, array or other values without affecting current Decoder.
-func (d *Decoder) Clone() *Decoder {
-	ret := *d
-	ret.openStack = append([]Kind(nil), ret.openStack...)
-	return &ret
-}
diff --git a/internal/encoding/json/decode_number.go b/internal/encoding/json/decode_number.go
deleted file mode 100644
index 2999d71..0000000
--- a/internal/encoding/json/decode_number.go
+++ /dev/null
@@ -1,254 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package json
-
-import (
-	"bytes"
-	"strconv"
-)
-
-// parseNumber reads the given []byte for a valid JSON number. If it is valid,
-// it returns the number of bytes.  Parsing logic follows the definition in
-// https://tools.ietf.org/html/rfc7159#section-6, and is based off
-// encoding/json.isValidNumber function.
-func parseNumber(input []byte) (int, bool) {
-	var n int
-
-	s := input
-	if len(s) == 0 {
-		return 0, false
-	}
-
-	// Optional -
-	if s[0] == '-' {
-		s = s[1:]
-		n++
-		if len(s) == 0 {
-			return 0, false
-		}
-	}
-
-	// Digits
-	switch {
-	case s[0] == '0':
-		s = s[1:]
-		n++
-
-	case '1' <= s[0] && s[0] <= '9':
-		s = s[1:]
-		n++
-		for len(s) > 0 && '0' <= s[0] && s[0] <= '9' {
-			s = s[1:]
-			n++
-		}
-
-	default:
-		return 0, false
-	}
-
-	// . followed by 1 or more digits.
-	if len(s) >= 2 && s[0] == '.' && '0' <= s[1] && s[1] <= '9' {
-		s = s[2:]
-		n += 2
-		for len(s) > 0 && '0' <= s[0] && s[0] <= '9' {
-			s = s[1:]
-			n++
-		}
-	}
-
-	// e or E followed by an optional - or + and
-	// 1 or more digits.
-	if len(s) >= 2 && (s[0] == 'e' || s[0] == 'E') {
-		s = s[1:]
-		n++
-		if s[0] == '+' || s[0] == '-' {
-			s = s[1:]
-			n++
-			if len(s) == 0 {
-				return 0, false
-			}
-		}
-		for len(s) > 0 && '0' <= s[0] && s[0] <= '9' {
-			s = s[1:]
-			n++
-		}
-	}
-
-	// Check that next byte is a delimiter or it is at the end.
-	if n < len(input) && isNotDelim(input[n]) {
-		return 0, false
-	}
-
-	return n, true
-}
-
-// numberParts is the result of parsing out a valid JSON number. It contains
-// the parts of a number. The parts are used for integer conversion.
-type numberParts struct {
-	neg  bool
-	intp []byte
-	frac []byte
-	exp  []byte
-}
-
-// parseNumber constructs numberParts from given []byte. The logic here is
-// similar to consumeNumber above with the difference of having to construct
-// numberParts. The slice fields in numberParts are subslices of the input.
-func parseNumberParts(input []byte) (numberParts, bool) {
-	var neg bool
-	var intp []byte
-	var frac []byte
-	var exp []byte
-
-	s := input
-	if len(s) == 0 {
-		return numberParts{}, false
-	}
-
-	// Optional -
-	if s[0] == '-' {
-		neg = true
-		s = s[1:]
-		if len(s) == 0 {
-			return numberParts{}, false
-		}
-	}
-
-	// Digits
-	switch {
-	case s[0] == '0':
-		// Skip first 0 and no need to store.
-		s = s[1:]
-
-	case '1' <= s[0] && s[0] <= '9':
-		intp = s
-		n := 1
-		s = s[1:]
-		for len(s) > 0 && '0' <= s[0] && s[0] <= '9' {
-			s = s[1:]
-			n++
-		}
-		intp = intp[:n]
-
-	default:
-		return numberParts{}, false
-	}
-
-	// . followed by 1 or more digits.
-	if len(s) >= 2 && s[0] == '.' && '0' <= s[1] && s[1] <= '9' {
-		frac = s[1:]
-		n := 1
-		s = s[2:]
-		for len(s) > 0 && '0' <= s[0] && s[0] <= '9' {
-			s = s[1:]
-			n++
-		}
-		frac = frac[:n]
-	}
-
-	// e or E followed by an optional - or + and
-	// 1 or more digits.
-	if len(s) >= 2 && (s[0] == 'e' || s[0] == 'E') {
-		s = s[1:]
-		exp = s
-		n := 0
-		if s[0] == '+' || s[0] == '-' {
-			s = s[1:]
-			n++
-			if len(s) == 0 {
-				return numberParts{}, false
-			}
-		}
-		for len(s) > 0 && '0' <= s[0] && s[0] <= '9' {
-			s = s[1:]
-			n++
-		}
-		exp = exp[:n]
-	}
-
-	return numberParts{
-		neg:  neg,
-		intp: intp,
-		frac: bytes.TrimRight(frac, "0"), // Remove unnecessary 0s to the right.
-		exp:  exp,
-	}, true
-}
-
-// normalizeToIntString returns an integer string in normal form without the
-// E-notation for given numberParts. It will return false if it is not an
-// integer or if the exponent exceeds than max/min int value.
-func normalizeToIntString(n numberParts) (string, bool) {
-	intpSize := len(n.intp)
-	fracSize := len(n.frac)
-
-	if intpSize == 0 && fracSize == 0 {
-		return "0", true
-	}
-
-	var exp int
-	if len(n.exp) > 0 {
-		i, err := strconv.ParseInt(string(n.exp), 10, 32)
-		if err != nil {
-			return "", false
-		}
-		exp = int(i)
-	}
-
-	var num []byte
-	if exp >= 0 {
-		// For positive E, shift fraction digits into integer part and also pad
-		// with zeroes as needed.
-
-		// If there are more digits in fraction than the E value, then the
-		// number is not an integer.
-		if fracSize > exp {
-			return "", false
-		}
-
-		// Make sure resulting digits are within max value limit to avoid
-		// unnecessarily constructing a large byte slice that may simply fail
-		// later on.
-		const maxDigits = 20 // Max uint64 value has 20 decimal digits.
-		if intpSize+exp > maxDigits {
-			return "", false
-		}
-
-		// Set cap to make a copy of integer part when appended.
-		num = n.intp[:len(n.intp):len(n.intp)]
-		num = append(num, n.frac...)
-		for i := 0; i < exp-fracSize; i++ {
-			num = append(num, '0')
-		}
-	} else {
-		// For negative E, shift digits in integer part out.
-
-		// If there are fractions, then the number is not an integer.
-		if fracSize > 0 {
-			return "", false
-		}
-
-		// index is where the decimal point will be after adjusting for negative
-		// exponent.
-		index := intpSize + exp
-		if index < 0 {
-			return "", false
-		}
-
-		num = n.intp
-		// If any of the digits being shifted to the right of the decimal point
-		// is non-zero, then the number is not an integer.
-		for i := index; i < intpSize; i++ {
-			if num[i] != '0' {
-				return "", false
-			}
-		}
-		num = num[:index]
-	}
-
-	if n.neg {
-		return "-" + string(num), true
-	}
-	return string(num), true
-}
diff --git a/internal/encoding/json/decode_string.go b/internal/encoding/json/decode_string.go
deleted file mode 100644
index f7fea7d..0000000
--- a/internal/encoding/json/decode_string.go
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package json
-
-import (
-	"strconv"
-	"unicode"
-	"unicode/utf16"
-	"unicode/utf8"
-
-	"google.golang.org/protobuf/internal/strs"
-)
-
-func (d *Decoder) parseString(in []byte) (string, int, error) {
-	in0 := in
-	if len(in) == 0 {
-		return "", 0, ErrUnexpectedEOF
-	}
-	if in[0] != '"' {
-		return "", 0, d.newSyntaxError(d.currPos(), "invalid character %q at start of string", in[0])
-	}
-	in = in[1:]
-	i := indexNeedEscapeInBytes(in)
-	in, out := in[i:], in[:i:i] // set cap to prevent mutations
-	for len(in) > 0 {
-		switch r, n := utf8.DecodeRune(in); {
-		case r == utf8.RuneError && n == 1:
-			return "", 0, d.newSyntaxError(d.currPos(), "invalid UTF-8 in string")
-		case r < ' ':
-			return "", 0, d.newSyntaxError(d.currPos(), "invalid character %q in string", r)
-		case r == '"':
-			in = in[1:]
-			n := len(in0) - len(in)
-			return string(out), n, nil
-		case r == '\\':
-			if len(in) < 2 {
-				return "", 0, ErrUnexpectedEOF
-			}
-			switch r := in[1]; r {
-			case '"', '\\', '/':
-				in, out = in[2:], append(out, r)
-			case 'b':
-				in, out = in[2:], append(out, '\b')
-			case 'f':
-				in, out = in[2:], append(out, '\f')
-			case 'n':
-				in, out = in[2:], append(out, '\n')
-			case 'r':
-				in, out = in[2:], append(out, '\r')
-			case 't':
-				in, out = in[2:], append(out, '\t')
-			case 'u':
-				if len(in) < 6 {
-					return "", 0, ErrUnexpectedEOF
-				}
-				v, err := strconv.ParseUint(string(in[2:6]), 16, 16)
-				if err != nil {
-					return "", 0, d.newSyntaxError(d.currPos(), "invalid escape code %q in string", in[:6])
-				}
-				in = in[6:]
-
-				r := rune(v)
-				if utf16.IsSurrogate(r) {
-					if len(in) < 6 {
-						return "", 0, ErrUnexpectedEOF
-					}
-					v, err := strconv.ParseUint(string(in[2:6]), 16, 16)
-					r = utf16.DecodeRune(r, rune(v))
-					if in[0] != '\\' || in[1] != 'u' ||
-						r == unicode.ReplacementChar || err != nil {
-						return "", 0, d.newSyntaxError(d.currPos(), "invalid escape code %q in string", in[:6])
-					}
-					in = in[6:]
-				}
-				out = append(out, string(r)...)
-			default:
-				return "", 0, d.newSyntaxError(d.currPos(), "invalid escape code %q in string", in[:2])
-			}
-		default:
-			i := indexNeedEscapeInBytes(in[n:])
-			in, out = in[n+i:], append(out, in[:n+i]...)
-		}
-	}
-	return "", 0, ErrUnexpectedEOF
-}
-
-// indexNeedEscapeInBytes returns the index of the character that needs
-// escaping. If no characters need escaping, this returns the input length.
-func indexNeedEscapeInBytes(b []byte) int { return indexNeedEscapeInString(strs.UnsafeString(b)) }
diff --git a/internal/encoding/json/decode_test.go b/internal/encoding/json/decode_test.go
deleted file mode 100644
index d70c3de..0000000
--- a/internal/encoding/json/decode_test.go
+++ /dev/null
@@ -1,1414 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package json_test
-
-import (
-	"fmt"
-	"math"
-	"strings"
-	"testing"
-	"unicode/utf8"
-
-	"github.com/google/go-cmp/cmp"
-
-	"google.golang.org/protobuf/internal/encoding/json"
-)
-
-type R struct {
-	// E is expected error substring from calling Decoder.Read if set.
-	E string
-	// V is one of the checker implementations that validates the token value.
-	V checker
-	// P is expected Token.Pos() if set > 0.
-	P int
-	// RS is expected result from Token.RawString() if not empty.
-	RS string
-}
-
-// checker defines API for Token validation.
-type checker interface {
-	// check checks and expects for token API call to return and compare
-	// against implementation-stored value. Returns empty string if success,
-	// else returns error message describing the error.
-	check(json.Token) string
-}
-
-// checkers that checks the token kind only.
-var (
-	EOF         = kindOnly{json.EOF}
-	Null        = kindOnly{json.Null}
-	ObjectOpen  = kindOnly{json.ObjectOpen}
-	ObjectClose = kindOnly{json.ObjectClose}
-	ArrayOpen   = kindOnly{json.ArrayOpen}
-	ArrayClose  = kindOnly{json.ArrayClose}
-)
-
-type kindOnly struct {
-	want json.Kind
-}
-
-func (x kindOnly) check(tok json.Token) string {
-	if got := tok.Kind(); got != x.want {
-		return fmt.Sprintf("Token.Kind(): got %v, want %v", got, x.want)
-	}
-	return ""
-}
-
-type Name struct {
-	val string
-}
-
-func (x Name) check(tok json.Token) string {
-	if got := tok.Kind(); got != json.Name {
-		return fmt.Sprintf("Token.Kind(): got %v, want %v", got, json.Name)
-	}
-
-	if got := tok.Name(); got != x.val {
-		return fmt.Sprintf("Token.Name(): got %v, want %v", got, x.val)
-	}
-	return ""
-}
-
-type Bool struct {
-	val bool
-}
-
-func (x Bool) check(tok json.Token) string {
-	if got := tok.Kind(); got != json.Bool {
-		return fmt.Sprintf("Token.Kind(): got %v, want %v", got, json.Bool)
-	}
-
-	if got := tok.Bool(); got != x.val {
-		return fmt.Sprintf("Token.Bool(): got %v, want %v", got, x.val)
-	}
-	return ""
-}
-
-type Str struct {
-	val string
-}
-
-func (x Str) check(tok json.Token) string {
-	if got := tok.Kind(); got != json.String {
-		return fmt.Sprintf("Token.Kind(): got %v, want %v", got, json.String)
-	}
-
-	if got := tok.ParsedString(); got != x.val {
-		return fmt.Sprintf("Token.ParsedString(): got %v, want %v", got, x.val)
-	}
-	return ""
-}
-
-type F64 struct {
-	val float64
-}
-
-func (x F64) check(tok json.Token) string {
-	if got := tok.Kind(); got != json.Number {
-		return fmt.Sprintf("Token.Kind(): got %v, want %v", got, json.Number)
-	}
-
-	got, ok := tok.Float(64)
-	if !ok {
-		return fmt.Sprintf("Token.Float(64): returned not ok")
-	}
-	if got != x.val {
-		return fmt.Sprintf("Token.Float(64): got %v, want %v", got, x.val)
-	}
-	return ""
-}
-
-type F32 struct {
-	val float32
-}
-
-func (x F32) check(tok json.Token) string {
-	if got := tok.Kind(); got != json.Number {
-		return fmt.Sprintf("Token.Kind(): got %v, want %v", got, json.Number)
-	}
-
-	got, ok := tok.Float(32)
-	if !ok {
-		return fmt.Sprintf("Token.Float(32): returned not ok")
-	}
-	if float32(got) != x.val {
-		return fmt.Sprintf("Token.Float(32): got %v, want %v", got, x.val)
-	}
-	return ""
-}
-
-// NotF64 is a checker to validate a Number token where Token.Float(64) returns not ok.
-var NotF64 = xf64{}
-
-type xf64 struct{}
-
-func (x xf64) check(tok json.Token) string {
-	if got := tok.Kind(); got != json.Number {
-		return fmt.Sprintf("Token.Kind(): got %v, want %v", got, json.Number)
-	}
-
-	_, ok := tok.Float(64)
-	if ok {
-		return fmt.Sprintf("Token.Float(64): returned ok")
-	}
-	return ""
-}
-
-// NotF32 is a checker to validate a Number token where Token.Float(32) returns not ok.
-var NotF32 = xf32{}
-
-type xf32 struct{}
-
-func (x xf32) check(tok json.Token) string {
-	if got := tok.Kind(); got != json.Number {
-		return fmt.Sprintf("Token.Kind(): got %v, want %v", got, json.Number)
-	}
-
-	_, ok := tok.Float(32)
-	if ok {
-		return fmt.Sprintf("Token.Float(32): returned ok")
-	}
-	return ""
-}
-
-type I64 struct {
-	val int64
-}
-
-func (x I64) check(tok json.Token) string {
-	if got := tok.Kind(); got != json.Number {
-		return fmt.Sprintf("Token.Kind(): got %v, want %v", got, json.Number)
-	}
-
-	got, ok := tok.Int(64)
-	if !ok {
-		return fmt.Sprintf("Token.Int(64): returned not ok")
-	}
-	if got != x.val {
-		return fmt.Sprintf("Token.Int(64): got %v, want %v", got, x.val)
-	}
-	return ""
-}
-
-type I32 struct {
-	val int32
-}
-
-func (x I32) check(tok json.Token) string {
-	if got := tok.Kind(); got != json.Number {
-		return fmt.Sprintf("Token.Kind(): got %v, want %v", got, json.Number)
-	}
-
-	got, ok := tok.Int(32)
-	if !ok {
-		return fmt.Sprintf("Token.Int(32): returned not ok")
-	}
-	if int32(got) != x.val {
-		return fmt.Sprintf("Token.Int(32): got %v, want %v", got, x.val)
-	}
-	return ""
-}
-
-// NotI64 is a checker to validate a Number token where Token.Int(64) returns not ok.
-var NotI64 = xi64{}
-
-type xi64 struct{}
-
-func (x xi64) check(tok json.Token) string {
-	if got := tok.Kind(); got != json.Number {
-		return fmt.Sprintf("Token.Kind(): got %v, want %v", got, json.Number)
-	}
-
-	_, ok := tok.Int(64)
-	if ok {
-		return fmt.Sprintf("Token.Int(64): returned ok")
-	}
-	return ""
-}
-
-// NotI32 is a checker to validate a Number token where Token.Int(32) returns not ok.
-var NotI32 = xi32{}
-
-type xi32 struct{}
-
-func (x xi32) check(tok json.Token) string {
-	if got := tok.Kind(); got != json.Number {
-		return fmt.Sprintf("Token.Kind(): got %v, want %v", got, json.Number)
-	}
-
-	_, ok := tok.Int(32)
-	if ok {
-		return fmt.Sprintf("Token.Int(32): returned ok")
-	}
-	return ""
-}
-
-type Ui64 struct {
-	val uint64
-}
-
-func (x Ui64) check(tok json.Token) string {
-	if got := tok.Kind(); got != json.Number {
-		return fmt.Sprintf("Token.Kind(): got %v, want %v", got, json.Number)
-	}
-
-	got, ok := tok.Uint(64)
-	if !ok {
-		return fmt.Sprintf("Token.Uint(64): returned not ok")
-	}
-	if got != x.val {
-		return fmt.Sprintf("Token.Uint(64): got %v, want %v", got, x.val)
-	}
-	return ""
-}
-
-type Ui32 struct {
-	val uint32
-}
-
-func (x Ui32) check(tok json.Token) string {
-	if got := tok.Kind(); got != json.Number {
-		return fmt.Sprintf("Token.Kind(): got %v, want %v", got, json.Number)
-	}
-
-	got, ok := tok.Uint(32)
-	if !ok {
-		return fmt.Sprintf("Token.Uint(32): returned not ok")
-	}
-	if uint32(got) != x.val {
-		return fmt.Sprintf("Token.Uint(32): got %v, want %v", got, x.val)
-	}
-	return ""
-}
-
-// NotUi64 is a checker to validate a Number token where Token.Uint(64) returns not ok.
-var NotUi64 = xui64{}
-
-type xui64 struct{}
-
-func (x xui64) check(tok json.Token) string {
-	if got := tok.Kind(); got != json.Number {
-		return fmt.Sprintf("Token.Kind(): got %v, want %v", got, json.Number)
-	}
-
-	_, ok := tok.Uint(64)
-	if ok {
-		return fmt.Sprintf("Token.Uint(64): returned ok")
-	}
-	return ""
-}
-
-// NotI32 is a checker to validate a Number token where Token.Uint(32) returns not ok.
-var NotUi32 = xui32{}
-
-type xui32 struct{}
-
-func (x xui32) check(tok json.Token) string {
-	if got := tok.Kind(); got != json.Number {
-		return fmt.Sprintf("Token.Kind(): got %v, want %v", got, json.Number)
-	}
-
-	_, ok := tok.Uint(32)
-	if ok {
-		return fmt.Sprintf("Token.Uint(32): returned ok")
-	}
-	return ""
-}
-
-var errEOF = json.ErrUnexpectedEOF.Error()
-
-func TestDecoder(t *testing.T) {
-	const space = " \n\r\t"
-
-	tests := []struct {
-		in string
-		// want is a list of expected values returned from calling
-		// Decoder.Read. An item makes the test code invoke
-		// Decoder.Read and compare against R.E for error returned or use R.V to
-		// validate the returned Token object.
-		want []R
-	}{
-		{
-			in:   ``,
-			want: []R{{V: EOF}},
-		},
-		{
-			in:   space,
-			want: []R{{V: EOF}},
-		},
-		{
-			// Calling Read after EOF will keep returning EOF for
-			// succeeding Read calls.
-			in: space,
-			want: []R{
-				{V: EOF},
-				{V: EOF},
-				{V: EOF},
-			},
-		},
-
-		// JSON literals.
-		{
-			in: space + `null` + space,
-			want: []R{
-				{V: Null, P: len(space), RS: `null`},
-				{V: EOF},
-			},
-		},
-		{
-			in: space + `true` + space,
-			want: []R{
-				{V: Bool{true}},
-				{V: EOF},
-			},
-		},
-		{
-			in: space + `false` + space,
-			want: []R{
-				{V: Bool{false}},
-				{V: EOF},
-			},
-		},
-		{
-			// Error returned will produce the same error again.
-			in: space + `foo` + space,
-			want: []R{
-				{E: `invalid value foo`},
-				{E: `invalid value foo`},
-			},
-		},
-
-		// JSON strings.
-		{
-			in: space + `""` + space,
-			want: []R{
-				{V: Str{}},
-				{V: EOF},
-			},
-		},
-		{
-			in: space + `"hello"` + space,
-			want: []R{
-				{V: Str{"hello"}, RS: `"hello"`},
-				{V: EOF},
-			},
-		},
-		{
-			in:   `"hello`,
-			want: []R{{E: errEOF}},
-		},
-		{
-			in:   "\"\x00\"",
-			want: []R{{E: `invalid character '\x00' in string`}},
-		},
-		{
-			in: "\"\u0031\u0032\"",
-			want: []R{
-				{V: Str{"12"}, RS: "\"\u0031\u0032\""},
-				{V: EOF},
-			},
-		},
-		{
-			// Invalid UTF-8 error is returned in ReadString instead of Read.
-			in:   "\"\xff\"",
-			want: []R{{E: `syntax error (line 1:1): invalid UTF-8 in string`}},
-		},
-		{
-			in: `"` + string(utf8.RuneError) + `"`,
-			want: []R{
-				{V: Str{string(utf8.RuneError)}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `"\uFFFD"`,
-			want: []R{
-				{V: Str{string(utf8.RuneError)}},
-				{V: EOF},
-			},
-		},
-		{
-			in:   `"\x"`,
-			want: []R{{E: `invalid escape code "\\x" in string`}},
-		},
-		{
-			in:   `"\uXXXX"`,
-			want: []R{{E: `invalid escape code "\\uXXXX" in string`}},
-		},
-		{
-			in:   `"\uDEAD"`, // unmatched surrogate pair
-			want: []R{{E: errEOF}},
-		},
-		{
-			in:   `"\uDEAD\uBEEF"`, // invalid surrogate half
-			want: []R{{E: `invalid escape code "\\uBEEF" in string`}},
-		},
-		{
-			in: `"\uD800\udead"`, // valid surrogate pair
-			want: []R{
-				{V: Str{`𐊭`}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `"\u0000\"\\\/\b\f\n\r\t"`,
-			want: []R{
-				{V: Str{"\u0000\"\\/\b\f\n\r\t"}},
-				{V: EOF},
-			},
-		},
-
-		// Invalid JSON numbers.
-		{
-			in:   `-`,
-			want: []R{{E: `invalid value -`}},
-		},
-		{
-			in:   `+0`,
-			want: []R{{E: `invalid value +0`}},
-		},
-		{
-			in:   `-+`,
-			want: []R{{E: `invalid value -+`}},
-		},
-		{
-			in:   `0.`,
-			want: []R{{E: `invalid value 0.`}},
-		},
-		{
-			in:   `.1`,
-			want: []R{{E: `invalid value .1`}},
-		},
-		{
-			in:   `1.0.1`,
-			want: []R{{E: `invalid value 1.0.1`}},
-		},
-		{
-			in:   `1..1`,
-			want: []R{{E: `invalid value 1..1`}},
-		},
-		{
-			in:   `-1-2`,
-			want: []R{{E: `invalid value -1-2`}},
-		},
-		{
-			in:   `01`,
-			want: []R{{E: `invalid value 01`}},
-		},
-		{
-			in:   `1e`,
-			want: []R{{E: `invalid value 1e`}},
-		},
-		{
-			in:   `1e1.2`,
-			want: []R{{E: `invalid value 1e1.2`}},
-		},
-		{
-			in:   `1Ee`,
-			want: []R{{E: `invalid value 1Ee`}},
-		},
-		{
-			in:   `1.e1`,
-			want: []R{{E: `invalid value 1.e1`}},
-		},
-		{
-			in:   `1.e+`,
-			want: []R{{E: `invalid value 1.e+`}},
-		},
-		{
-			in:   `1e+-2`,
-			want: []R{{E: `invalid value 1e+-2`}},
-		},
-		{
-			in:   `1e--2`,
-			want: []R{{E: `invalid value 1e--2`}},
-		},
-		{
-			in:   `1.0true`,
-			want: []R{{E: `invalid value 1.0true`}},
-		},
-
-		// JSON numbers as floating point.
-		{
-			in: space + `0.0` + space,
-			want: []R{
-				{V: F32{0}, P: len(space), RS: `0.0`},
-				{V: EOF},
-			},
-		},
-		{
-			in: space + `0` + space,
-			want: []R{
-				{V: F32{0}},
-				{V: EOF},
-			},
-		},
-		{
-			in: space + `-0` + space,
-			want: []R{
-				{V: F32{float32(math.Copysign(0, -1))}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `-0`,
-			want: []R{
-				{V: F64{math.Copysign(0, -1)}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `-0.0`,
-			want: []R{
-				{V: F32{float32(math.Copysign(0, -1))}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `-0.0`,
-			want: []R{
-				{V: F64{math.Copysign(0, -1)}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `-1.02`,
-			want: []R{
-				{V: F32{-1.02}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `1.020000`,
-			want: []R{
-				{V: F32{1.02}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `-1.0e0`,
-			want: []R{
-				{V: F32{-1}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `1.0e-000`,
-			want: []R{
-				{V: F32{1}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `1e+00`,
-			want: []R{
-				{V: F32{1}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `1.02e3`,
-			want: []R{
-				{V: F32{1.02e3}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `-1.02E03`,
-			want: []R{
-				{V: F32{-1.02e3}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `1.0200e+3`,
-			want: []R{
-				{V: F32{1.02e3}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `-1.0200E+03`,
-			want: []R{
-				{V: F32{-1.02e3}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `1.0200e-3`,
-			want: []R{
-				{V: F32{1.02e-3}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `-1.0200E-03`,
-			want: []R{
-				{V: F32{-1.02e-3}},
-				{V: EOF},
-			},
-		},
-		{
-			// Exceeds max float32 limit, but should be ok for float64.
-			in: `3.4e39`,
-			want: []R{
-				{V: F64{3.4e39}},
-				{V: EOF},
-			},
-		},
-
-		{
-			// Exceeds max float32 limit.
-			in: `3.4e39`,
-			want: []R{
-				{V: NotF32},
-				{V: EOF},
-			},
-		},
-		{
-			// Less than negative max float32 limit.
-			in: `-3.4e39`,
-			want: []R{
-				{V: NotF32},
-				{V: EOF},
-			},
-		},
-		{
-			// Exceeds max float64 limit.
-			in: `1.79e+309`,
-			want: []R{
-				{V: NotF64},
-				{V: EOF},
-			},
-		},
-		{
-			// Less than negative max float64 limit.
-			in: `-1.79e+309`,
-			want: []R{
-				{V: NotF64},
-				{V: EOF},
-			},
-		},
-
-		// JSON numbers as signed integers.
-		{
-			in: space + `0` + space,
-			want: []R{
-				{V: I32{0}},
-				{V: EOF},
-			},
-		},
-		{
-			in: space + `-0` + space,
-			want: []R{
-				{V: I32{0}},
-				{V: EOF},
-			},
-		},
-		{
-			// Fractional part equals 0 is ok.
-			in: `1.00000`,
-			want: []R{
-				{V: I32{1}},
-				{V: EOF},
-			},
-		},
-		{
-			// Fractional part not equals 0 returns error.
-			in: `1.0000000001`,
-			want: []R{
-				{V: NotI32},
-				{V: EOF},
-			},
-		},
-		{
-			in: `0e0`,
-			want: []R{
-				{V: I32{0}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `0.0E0`,
-			want: []R{
-				{V: I32{0}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `0.0E10`,
-			want: []R{
-				{V: I32{0}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `-1`,
-			want: []R{
-				{V: I32{-1}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `1.0e+0`,
-			want: []R{
-				{V: I32{1}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `-1E-0`,
-			want: []R{
-				{V: I32{-1}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `1E1`,
-			want: []R{
-				{V: I32{10}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `-100.00e-02`,
-			want: []R{
-				{V: I32{-1}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `0.1200E+02`,
-			want: []R{
-				{V: I64{12}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `0.012e2`,
-			want: []R{
-				{V: NotI32},
-				{V: EOF},
-			},
-		},
-		{
-			in: `12e-2`,
-			want: []R{
-				{V: NotI32},
-				{V: EOF},
-			},
-		},
-		{
-			// Exceeds math.MaxInt32.
-			in: `2147483648`,
-			want: []R{
-				{V: NotI32},
-				{V: EOF},
-			},
-		},
-		{
-			// Exceeds math.MinInt32.
-			in: `-2147483649`,
-			want: []R{
-				{V: NotI32},
-				{V: EOF},
-			},
-		},
-		{
-			// Exceeds math.MaxInt32, but ok for int64.
-			in: `2147483648`,
-			want: []R{
-				{V: I64{2147483648}},
-				{V: EOF},
-			},
-		},
-		{
-			// Exceeds math.MinInt32, but ok for int64.
-			in: `-2147483649`,
-			want: []R{
-				{V: I64{-2147483649}},
-				{V: EOF},
-			},
-		},
-		{
-			// Exceeds math.MaxInt64.
-			in: `9223372036854775808`,
-			want: []R{
-				{V: NotI64},
-				{V: EOF},
-			},
-		},
-		{
-			// Exceeds math.MinInt64.
-			in: `-9223372036854775809`,
-			want: []R{
-				{V: NotI64},
-				{V: EOF},
-			},
-		},
-
-		// JSON numbers as unsigned integers.
-		{
-			in: space + `0` + space,
-			want: []R{
-				{V: Ui32{0}},
-				{V: EOF},
-			},
-		},
-		{
-			in: space + `-0` + space,
-			want: []R{
-				{V: Ui32{0}},
-				{V: EOF},
-			},
-		},
-		{
-			in: `-1`,
-			want: []R{
-				{V: NotUi32},
-				{V: EOF},
-			},
-		},
-		{
-			// Exceeds math.MaxUint32.
-			in: `4294967296`,
-			want: []R{
-				{V: NotUi32},
-				{V: EOF},
-			},
-		},
-		{
-			// Exceeds math.MaxUint64.
-			in: `18446744073709551616`,
-			want: []R{
-				{V: NotUi64},
-				{V: EOF},
-			},
-		},
-
-		// JSON sequence of values.
-		{
-			in: `true null`,
-			want: []R{
-				{V: Bool{true}},
-				{E: `(line 1:6): unexpected token null`},
-			},
-		},
-		{
-			in: "null false",
-			want: []R{
-				{V: Null},
-				{E: `unexpected token false`},
-			},
-		},
-		{
-			in: `true,false`,
-			want: []R{
-				{V: Bool{true}},
-				{E: `unexpected token ,`},
-			},
-		},
-		{
-			in: `47"hello"`,
-			want: []R{
-				{V: I32{47}},
-				{E: `unexpected token "hello"`},
-			},
-		},
-		{
-			in: `47 "hello"`,
-			want: []R{
-				{V: I32{47}},
-				{E: `unexpected token "hello"`},
-			},
-		},
-		{
-			in: `true 42`,
-			want: []R{
-				{V: Bool{true}},
-				{E: `unexpected token 42`},
-			},
-		},
-
-		// JSON arrays.
-		{
-			in: space + `[]` + space,
-			want: []R{
-				{V: ArrayOpen},
-				{V: ArrayClose},
-				{V: EOF},
-			},
-		},
-		{
-			in: space + `[` + space + `]` + space,
-			want: []R{
-				{V: ArrayOpen, P: len(space), RS: `[`},
-				{V: ArrayClose},
-				{V: EOF},
-			},
-		},
-		{
-			in: space + `[` + space,
-			want: []R{
-				{V: ArrayOpen},
-				{E: errEOF},
-			},
-		},
-		{
-			in:   space + `]` + space,
-			want: []R{{E: `unexpected token ]`}},
-		},
-		{
-			in: `[null,true,false,  1e1, "hello"   ]`,
-			want: []R{
-				{V: ArrayOpen},
-				{V: Null},
-				{V: Bool{true}},
-				{V: Bool{false}},
-				{V: I32{10}},
-				{V: Str{"hello"}},
-				{V: ArrayClose},
-				{V: EOF},
-			},
-		},
-		{
-			in: `[` + space + `true` + space + `,` + space + `"hello"` + space + `]`,
-			want: []R{
-				{V: ArrayOpen},
-				{V: Bool{true}},
-				{V: Str{"hello"}},
-				{V: ArrayClose},
-				{V: EOF},
-			},
-		},
-		{
-			in: `[` + space + `true` + space + `,` + space + `]`,
-			want: []R{
-				{V: ArrayOpen},
-				{V: Bool{true}},
-				{E: `unexpected token ]`},
-			},
-		},
-		{
-			in: `[` + space + `false` + space + `]`,
-			want: []R{
-				{V: ArrayOpen},
-				{V: Bool{false}},
-				{V: ArrayClose},
-				{V: EOF},
-			},
-		},
-		{
-			in: `[` + space + `1` + space + `0` + space + `]`,
-			want: []R{
-				{V: ArrayOpen},
-				{V: I64{1}},
-				{E: `unexpected token 0`},
-			},
-		},
-		{
-			in: `[null`,
-			want: []R{
-				{V: ArrayOpen},
-				{V: Null},
-				{E: errEOF},
-			},
-		},
-		{
-			in: `[foo]`,
-			want: []R{
-				{V: ArrayOpen},
-				{E: `invalid value foo`},
-			},
-		},
-		{
-			in: `[{}, "hello", [true, false], null]`,
-			want: []R{
-				{V: ArrayOpen},
-				{V: ObjectOpen},
-				{V: ObjectClose},
-				{V: Str{"hello"}},
-				{V: ArrayOpen},
-				{V: Bool{true}},
-				{V: Bool{false}},
-				{V: ArrayClose},
-				{V: Null},
-				{V: ArrayClose},
-				{V: EOF},
-			},
-		},
-		{
-			in: `[{ ]`,
-			want: []R{
-				{V: ArrayOpen},
-				{V: ObjectOpen},
-				{E: `unexpected token ]`},
-			},
-		},
-		{
-			in: `[[ ]`,
-			want: []R{
-				{V: ArrayOpen},
-				{V: ArrayOpen},
-				{V: ArrayClose},
-				{E: errEOF},
-			},
-		},
-		{
-			in: `[,]`,
-			want: []R{
-				{V: ArrayOpen},
-				{E: `unexpected token ,`},
-			},
-		},
-		{
-			in: `[true "hello"]`,
-			want: []R{
-				{V: ArrayOpen},
-				{V: Bool{true}},
-				{E: `unexpected token "hello"`},
-			},
-		},
-		{
-			in: `[] null`,
-			want: []R{
-				{V: ArrayOpen},
-				{V: ArrayClose},
-				{E: `unexpected token null`},
-			},
-		},
-		{
-			in: `true []`,
-			want: []R{
-				{V: Bool{true}},
-				{E: `unexpected token [`},
-			},
-		},
-
-		// JSON objects.
-		{
-			in: space + `{}` + space,
-			want: []R{
-				{V: ObjectOpen},
-				{V: ObjectClose},
-				{V: EOF},
-			},
-		},
-		{
-			in: space + `{` + space + `}` + space,
-			want: []R{
-				{V: ObjectOpen},
-				{V: ObjectClose},
-				{V: EOF},
-			},
-		},
-		{
-			in: space + `{` + space,
-			want: []R{
-				{V: ObjectOpen},
-				{E: errEOF},
-			},
-		},
-		{
-			in:   space + `}` + space,
-			want: []R{{E: `unexpected token }`}},
-		},
-		{
-			in: `{` + space + `null` + space + `}`,
-			want: []R{
-				{V: ObjectOpen},
-				{E: `unexpected token null`},
-			},
-		},
-		{
-			in: `{[]}`,
-			want: []R{
-				{V: ObjectOpen},
-				{E: `(line 1:2): unexpected token [`},
-			},
-		},
-		{
-			in: `{,}`,
-			want: []R{
-				{V: ObjectOpen},
-				{E: `unexpected token ,`},
-			},
-		},
-		{
-			in: `{"345678"}`,
-			want: []R{
-				{V: ObjectOpen},
-				{E: `(line 1:10): unexpected character }, missing ":" after field name`},
-			},
-		},
-		{
-			in: `{` + space + `"hello"` + space + `:` + space + `"world"` + space + `}`,
-			want: []R{
-				{V: ObjectOpen},
-				{V: Name{"hello"}, P: len(space) + 1, RS: `"hello"`},
-				{V: Str{"world"}, RS: `"world"`},
-				{V: ObjectClose},
-				{V: EOF},
-			},
-		},
-		{
-			in: `{"hello" "world"}`,
-			want: []R{
-				{V: ObjectOpen},
-				{E: `(line 1:10): unexpected character ", missing ":" after field name`},
-			},
-		},
-		{
-			in: `{"hello":`,
-			want: []R{
-				{V: ObjectOpen},
-				{V: Name{"hello"}},
-				{E: errEOF},
-			},
-		},
-		{
-			in: `{"hello":"world"`,
-			want: []R{
-				{V: ObjectOpen},
-				{V: Name{"hello"}},
-				{V: Str{"world"}},
-				{E: errEOF},
-			},
-		},
-		{
-			in: `{"hello":"world",`,
-			want: []R{
-				{V: ObjectOpen},
-				{V: Name{"hello"}},
-				{V: Str{"world"}},
-				{E: errEOF},
-			},
-		},
-		{
-			in: `{""`,
-			want: []R{
-				{V: ObjectOpen},
-				{E: errEOF},
-			},
-		},
-		{
-			in: `{"34":"89",}`,
-			want: []R{
-				{V: ObjectOpen},
-				{V: Name{"34"}, RS: `"34"`},
-				{V: Str{"89"}},
-				{E: `syntax error (line 1:12): unexpected token }`},
-			},
-		},
-		{
-			in: `{
-			  "number": 123e2,
-			  "bool"  : false,
-			  "object": {"string": "world"},
-			  "null"  : null,
-			  "array" : [1.01, "hello", true],
-			  "string": "hello"
-			}`,
-			want: []R{
-				{V: ObjectOpen},
-
-				{V: Name{"number"}},
-				{V: I32{12300}},
-
-				{V: Name{"bool"}},
-				{V: Bool{false}},
-
-				{V: Name{"object"}},
-				{V: ObjectOpen},
-				{V: Name{"string"}},
-				{V: Str{"world"}},
-				{V: ObjectClose},
-
-				{V: Name{"null"}},
-				{V: Null},
-
-				{V: Name{"array"}},
-				{V: ArrayOpen},
-				{V: F32{1.01}},
-				{V: Str{"hello"}},
-				{V: Bool{true}},
-				{V: ArrayClose},
-
-				{V: Name{"string"}},
-				{V: Str{"hello"}},
-
-				{V: ObjectClose},
-				{V: EOF},
-			},
-		},
-		{
-			in: `[
-			  {"object": {"number": 47}},
-			  ["list"],
-			  null
-			]`,
-			want: []R{
-				{V: ArrayOpen},
-
-				{V: ObjectOpen},
-				{V: Name{"object"}},
-				{V: ObjectOpen},
-				{V: Name{"number"}},
-				{V: I32{47}},
-				{V: ObjectClose},
-				{V: ObjectClose},
-
-				{V: ArrayOpen},
-				{V: Str{"list"}},
-				{V: ArrayClose},
-
-				{V: Null},
-
-				{V: ArrayClose},
-				{V: EOF},
-			},
-		},
-
-		// Tests for line and column info.
-		{
-			in: `12345678 x`,
-			want: []R{
-				{V: I64{12345678}},
-				{E: `syntax error (line 1:10): invalid value x`},
-			},
-		},
-		{
-			in: "\ntrue\n   x",
-			want: []R{
-				{V: Bool{true}},
-				{E: `syntax error (line 3:4): invalid value x`},
-			},
-		},
-		{
-			in: `"💩"x`,
-			want: []R{
-				{V: Str{"💩"}},
-				{E: `syntax error (line 1:4): invalid value x`},
-			},
-		},
-		{
-			in: "\n\n[\"🔥🔥🔥\"x",
-			want: []R{
-				{V: ArrayOpen},
-				{V: Str{"🔥🔥🔥"}},
-				{E: `syntax error (line 3:7): invalid value x`},
-			},
-		},
-		{
-			// Multi-rune emojis.
-			in: `["👍🏻👍🏿"x`,
-			want: []R{
-				{V: ArrayOpen},
-				{V: Str{"👍🏻👍🏿"}},
-				{E: `syntax error (line 1:8): invalid value x`},
-			},
-		},
-	}
-
-	for _, tc := range tests {
-		tc := tc
-		t.Run("", func(t *testing.T) {
-			dec := json.NewDecoder([]byte(tc.in))
-			for i, want := range tc.want {
-				peekTok, peekErr := dec.Peek()
-				tok, err := dec.Read()
-				if err != nil {
-					if want.E == "" {
-						errorf(t, tc.in, "want#%d: Read() got unexpected error: %v", i, err)
-					} else if !strings.Contains(err.Error(), want.E) {
-						errorf(t, tc.in, "want#%d: Read() got %q, want %q", i, err, want.E)
-					}
-					return
-				}
-				if want.E != "" {
-					errorf(t, tc.in, "want#%d: Read() got nil error, want %q", i, want.E)
-					return
-				}
-				checkToken(t, tok, i, want, tc.in)
-				if !cmp.Equal(tok, peekTok, cmp.Comparer(json.TokenEquals)) {
-					errorf(t, tc.in, "want#%d: Peek() %+v != Read() token %+v", i, peekTok, tok)
-				}
-				if err != peekErr {
-					errorf(t, tc.in, "want#%d: Peek() error %v != Read() error %v", i, err, peekErr)
-				}
-			}
-		})
-	}
-}
-
-func checkToken(t *testing.T, tok json.Token, idx int, r R, in string) {
-	// Validate Token.Pos() if R.P is set.
-	if r.P > 0 {
-		got := tok.Pos()
-		if got != r.P {
-			errorf(t, in, "want#%d: Token.Pos() got %v want %v", idx, got, r.P)
-		}
-	}
-	// Validate Token.RawString if R.RS is set.
-	if len(r.RS) > 0 {
-		got := tok.RawString()
-		if got != r.RS {
-			errorf(t, in, "want#%d: Token.RawString() got %v want %v", idx, got, r.P)
-		}
-	}
-
-	// Skip checking for Token details if r.V is not set.
-	if r.V == nil {
-		return
-	}
-
-	if err := r.V.check(tok); err != "" {
-		errorf(t, in, "want#%d: %s", idx, err)
-	}
-	return
-}
-
-func errorf(t *testing.T, in string, fmtStr string, args ...interface{}) {
-	t.Helper()
-	vargs := []interface{}{in}
-	for _, arg := range args {
-		vargs = append(vargs, arg)
-	}
-	t.Errorf("input:\n%s\n~end~\n"+fmtStr, vargs...)
-}
-
-func TestClone(t *testing.T) {
-	input := `{"outer":{"str":"hello", "number": 123}}`
-	dec := json.NewDecoder([]byte(input))
-
-	// Clone at the start should produce the same reads as the original.
-	clone := dec.Clone()
-	compareDecoders(t, dec, clone)
-
-	// Advance to inner object, clone and compare again.
-	dec.Read() // Read ObjectOpen.
-	dec.Read() // Read Name.
-	clone = dec.Clone()
-	compareDecoders(t, dec, clone)
-}
-
-func compareDecoders(t *testing.T, d1 *json.Decoder, d2 *json.Decoder) {
-	for {
-		tok1, err1 := d1.Read()
-		tok2, err2 := d2.Read()
-		if tok1.Kind() != tok2.Kind() {
-			t.Errorf("cloned decoder: got Kind %v, want %v", tok2.Kind(), tok1.Kind())
-		}
-		if tok1.RawString() != tok2.RawString() {
-			t.Errorf("cloned decoder: got RawString %v, want %v", tok2.RawString(), tok1.RawString())
-		}
-		if err1 != err2 {
-			t.Errorf("cloned decoder: got error %v, want %v", err2, err1)
-		}
-		if tok1.Kind() == json.EOF {
-			break
-		}
-	}
-}
diff --git a/internal/encoding/json/decode_token.go b/internal/encoding/json/decode_token.go
deleted file mode 100644
index 50578d6..0000000
--- a/internal/encoding/json/decode_token.go
+++ /dev/null
@@ -1,192 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package json
-
-import (
-	"bytes"
-	"fmt"
-	"strconv"
-)
-
-// Kind represents a token kind expressible in the JSON format.
-type Kind uint16
-
-const (
-	Invalid Kind = (1 << iota) / 2
-	EOF
-	Null
-	Bool
-	Number
-	String
-	Name
-	ObjectOpen
-	ObjectClose
-	ArrayOpen
-	ArrayClose
-
-	// comma is only for parsing in between tokens and
-	// does not need to be exported.
-	comma
-)
-
-func (k Kind) String() string {
-	switch k {
-	case EOF:
-		return "eof"
-	case Null:
-		return "null"
-	case Bool:
-		return "bool"
-	case Number:
-		return "number"
-	case String:
-		return "string"
-	case ObjectOpen:
-		return "{"
-	case ObjectClose:
-		return "}"
-	case Name:
-		return "name"
-	case ArrayOpen:
-		return "["
-	case ArrayClose:
-		return "]"
-	case comma:
-		return ","
-	}
-	return "<invalid>"
-}
-
-// Token provides a parsed token kind and value.
-//
-// Values are provided by the difference accessor methods. The accessor methods
-// Name, Bool, and ParsedString will panic if called on the wrong kind. There
-// are different accessor methods for the Number kind for converting to the
-// appropriate Go numeric type and those methods have the ok return value.
-type Token struct {
-	// Token kind.
-	kind Kind
-	// pos provides the position of the token in the original input.
-	pos int
-	// raw bytes of the serialized token.
-	// This is a subslice into the original input.
-	raw []byte
-	// boo is parsed boolean value.
-	boo bool
-	// str is parsed string value.
-	str string
-}
-
-// Kind returns the token kind.
-func (t Token) Kind() Kind {
-	return t.kind
-}
-
-// RawString returns the read value in string.
-func (t Token) RawString() string {
-	return string(t.raw)
-}
-
-// Pos returns the token position from the input.
-func (t Token) Pos() int {
-	return t.pos
-}
-
-// Name returns the object name if token is Name, else it panics.
-func (t Token) Name() string {
-	if t.kind == Name {
-		return t.str
-	}
-	panic(fmt.Sprintf("Token is not a Name: %v", t.RawString()))
-}
-
-// Bool returns the bool value if token kind is Bool, else it panics.
-func (t Token) Bool() bool {
-	if t.kind == Bool {
-		return t.boo
-	}
-	panic(fmt.Sprintf("Token is not a Bool: %v", t.RawString()))
-}
-
-// ParsedString returns the string value for a JSON string token or the read
-// value in string if token is not a string.
-func (t Token) ParsedString() string {
-	if t.kind == String {
-		return t.str
-	}
-	panic(fmt.Sprintf("Token is not a String: %v", t.RawString()))
-}
-
-// Float returns the floating-point number if token kind is Number.
-//
-// The floating-point precision is specified by the bitSize parameter: 32 for
-// float32 or 64 for float64. If bitSize=32, the result still has type float64,
-// but it will be convertible to float32 without changing its value. It will
-// return false if the number exceeds the floating point limits for given
-// bitSize.
-func (t Token) Float(bitSize int) (float64, bool) {
-	if t.kind != Number {
-		return 0, false
-	}
-	f, err := strconv.ParseFloat(t.RawString(), bitSize)
-	if err != nil {
-		return 0, false
-	}
-	return f, true
-}
-
-// Int returns the signed integer number if token is Number.
-//
-// The given bitSize specifies the integer type that the result must fit into.
-// It returns false if the number is not an integer value or if the result
-// exceeds the limits for given bitSize.
-func (t Token) Int(bitSize int) (int64, bool) {
-	s, ok := t.getIntStr()
-	if !ok {
-		return 0, false
-	}
-	n, err := strconv.ParseInt(s, 10, bitSize)
-	if err != nil {
-		return 0, false
-	}
-	return n, true
-}
-
-// Uint returns the signed integer number if token is Number.
-//
-// The given bitSize specifies the unsigned integer type that the result must
-// fit into. It returns false if the number is not an unsigned integer value
-// or if the result exceeds the limits for given bitSize.
-func (t Token) Uint(bitSize int) (uint64, bool) {
-	s, ok := t.getIntStr()
-	if !ok {
-		return 0, false
-	}
-	n, err := strconv.ParseUint(s, 10, bitSize)
-	if err != nil {
-		return 0, false
-	}
-	return n, true
-}
-
-func (t Token) getIntStr() (string, bool) {
-	if t.kind != Number {
-		return "", false
-	}
-	parts, ok := parseNumberParts(t.raw)
-	if !ok {
-		return "", false
-	}
-	return normalizeToIntString(parts)
-}
-
-// TokenEquals returns true if given Tokens are equal, else false.
-func TokenEquals(x, y Token) bool {
-	return x.kind == y.kind &&
-		x.pos == y.pos &&
-		bytes.Equal(x.raw, y.raw) &&
-		x.boo == y.boo &&
-		x.str == y.str
-}
diff --git a/internal/encoding/json/encode.go b/internal/encoding/json/encode.go
deleted file mode 100644
index fbdf348..0000000
--- a/internal/encoding/json/encode.go
+++ /dev/null
@@ -1,276 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package json
-
-import (
-	"math"
-	"math/bits"
-	"strconv"
-	"strings"
-	"unicode/utf8"
-
-	"google.golang.org/protobuf/internal/detrand"
-	"google.golang.org/protobuf/internal/errors"
-)
-
-// kind represents an encoding type.
-type kind uint8
-
-const (
-	_ kind = (1 << iota) / 2
-	name
-	scalar
-	objectOpen
-	objectClose
-	arrayOpen
-	arrayClose
-)
-
-// Encoder provides methods to write out JSON constructs and values. The user is
-// responsible for producing valid sequences of JSON constructs and values.
-type Encoder struct {
-	indent   string
-	lastKind kind
-	indents  []byte
-	out      []byte
-}
-
-// NewEncoder returns an Encoder.
-//
-// If indent is a non-empty string, it causes every entry for an Array or Object
-// to be preceded by the indent and trailed by a newline.
-func NewEncoder(indent string) (*Encoder, error) {
-	e := &Encoder{}
-	if len(indent) > 0 {
-		if strings.Trim(indent, " \t") != "" {
-			return nil, errors.New("indent may only be composed of space or tab characters")
-		}
-		e.indent = indent
-	}
-	return e, nil
-}
-
-// Bytes returns the content of the written bytes.
-func (e *Encoder) Bytes() []byte {
-	return e.out
-}
-
-// WriteNull writes out the null value.
-func (e *Encoder) WriteNull() {
-	e.prepareNext(scalar)
-	e.out = append(e.out, "null"...)
-}
-
-// WriteBool writes out the given boolean value.
-func (e *Encoder) WriteBool(b bool) {
-	e.prepareNext(scalar)
-	if b {
-		e.out = append(e.out, "true"...)
-	} else {
-		e.out = append(e.out, "false"...)
-	}
-}
-
-// WriteString writes out the given string in JSON string value. Returns error
-// if input string contains invalid UTF-8.
-func (e *Encoder) WriteString(s string) error {
-	e.prepareNext(scalar)
-	var err error
-	if e.out, err = appendString(e.out, s); err != nil {
-		return err
-	}
-	return nil
-}
-
-// Sentinel error used for indicating invalid UTF-8.
-var errInvalidUTF8 = errors.New("invalid UTF-8")
-
-func appendString(out []byte, in string) ([]byte, error) {
-	out = append(out, '"')
-	i := indexNeedEscapeInString(in)
-	in, out = in[i:], append(out, in[:i]...)
-	for len(in) > 0 {
-		switch r, n := utf8.DecodeRuneInString(in); {
-		case r == utf8.RuneError && n == 1:
-			return out, errInvalidUTF8
-		case r < ' ' || r == '"' || r == '\\':
-			out = append(out, '\\')
-			switch r {
-			case '"', '\\':
-				out = append(out, byte(r))
-			case '\b':
-				out = append(out, 'b')
-			case '\f':
-				out = append(out, 'f')
-			case '\n':
-				out = append(out, 'n')
-			case '\r':
-				out = append(out, 'r')
-			case '\t':
-				out = append(out, 't')
-			default:
-				out = append(out, 'u')
-				out = append(out, "0000"[1+(bits.Len32(uint32(r))-1)/4:]...)
-				out = strconv.AppendUint(out, uint64(r), 16)
-			}
-			in = in[n:]
-		default:
-			i := indexNeedEscapeInString(in[n:])
-			in, out = in[n+i:], append(out, in[:n+i]...)
-		}
-	}
-	out = append(out, '"')
-	return out, nil
-}
-
-// indexNeedEscapeInString returns the index of the character that needs
-// escaping. If no characters need escaping, this returns the input length.
-func indexNeedEscapeInString(s string) int {
-	for i, r := range s {
-		if r < ' ' || r == '\\' || r == '"' || r == utf8.RuneError {
-			return i
-		}
-	}
-	return len(s)
-}
-
-// WriteFloat writes out the given float and bitSize in JSON number value.
-func (e *Encoder) WriteFloat(n float64, bitSize int) {
-	e.prepareNext(scalar)
-	e.out = appendFloat(e.out, n, bitSize)
-}
-
-// appendFloat formats given float in bitSize, and appends to the given []byte.
-func appendFloat(out []byte, n float64, bitSize int) []byte {
-	switch {
-	case math.IsNaN(n):
-		return append(out, `"NaN"`...)
-	case math.IsInf(n, +1):
-		return append(out, `"Infinity"`...)
-	case math.IsInf(n, -1):
-		return append(out, `"-Infinity"`...)
-	}
-
-	// JSON number formatting logic based on encoding/json.
-	// See floatEncoder.encode for reference.
-	fmt := byte('f')
-	if abs := math.Abs(n); abs != 0 {
-		if bitSize == 64 && (abs < 1e-6 || abs >= 1e21) ||
-			bitSize == 32 && (float32(abs) < 1e-6 || float32(abs) >= 1e21) {
-			fmt = 'e'
-		}
-	}
-	out = strconv.AppendFloat(out, n, fmt, -1, bitSize)
-	if fmt == 'e' {
-		n := len(out)
-		if n >= 4 && out[n-4] == 'e' && out[n-3] == '-' && out[n-2] == '0' {
-			out[n-2] = out[n-1]
-			out = out[:n-1]
-		}
-	}
-	return out
-}
-
-// WriteInt writes out the given signed integer in JSON number value.
-func (e *Encoder) WriteInt(n int64) {
-	e.prepareNext(scalar)
-	e.out = append(e.out, strconv.FormatInt(n, 10)...)
-}
-
-// WriteUint writes out the given unsigned integer in JSON number value.
-func (e *Encoder) WriteUint(n uint64) {
-	e.prepareNext(scalar)
-	e.out = append(e.out, strconv.FormatUint(n, 10)...)
-}
-
-// StartObject writes out the '{' symbol.
-func (e *Encoder) StartObject() {
-	e.prepareNext(objectOpen)
-	e.out = append(e.out, '{')
-}
-
-// EndObject writes out the '}' symbol.
-func (e *Encoder) EndObject() {
-	e.prepareNext(objectClose)
-	e.out = append(e.out, '}')
-}
-
-// WriteName writes out the given string in JSON string value and the name
-// separator ':'. Returns error if input string contains invalid UTF-8, which
-// should not be likely as protobuf field names should be valid.
-func (e *Encoder) WriteName(s string) error {
-	e.prepareNext(name)
-	var err error
-	// Append to output regardless of error.
-	e.out, err = appendString(e.out, s)
-	e.out = append(e.out, ':')
-	return err
-}
-
-// StartArray writes out the '[' symbol.
-func (e *Encoder) StartArray() {
-	e.prepareNext(arrayOpen)
-	e.out = append(e.out, '[')
-}
-
-// EndArray writes out the ']' symbol.
-func (e *Encoder) EndArray() {
-	e.prepareNext(arrayClose)
-	e.out = append(e.out, ']')
-}
-
-// prepareNext adds possible comma and indentation for the next value based
-// on last type and indent option. It also updates lastKind to next.
-func (e *Encoder) prepareNext(next kind) {
-	defer func() {
-		// Set lastKind to next.
-		e.lastKind = next
-	}()
-
-	if len(e.indent) == 0 {
-		// Need to add comma on the following condition.
-		if e.lastKind&(scalar|objectClose|arrayClose) != 0 &&
-			next&(name|scalar|objectOpen|arrayOpen) != 0 {
-			e.out = append(e.out, ',')
-			// For single-line output, add a random extra space after each
-			// comma to make output unstable.
-			if detrand.Bool() {
-				e.out = append(e.out, ' ')
-			}
-		}
-		return
-	}
-
-	switch {
-	case e.lastKind&(objectOpen|arrayOpen) != 0:
-		// If next type is NOT closing, add indent and newline.
-		if next&(objectClose|arrayClose) == 0 {
-			e.indents = append(e.indents, e.indent...)
-			e.out = append(e.out, '\n')
-			e.out = append(e.out, e.indents...)
-		}
-
-	case e.lastKind&(scalar|objectClose|arrayClose) != 0:
-		switch {
-		// If next type is either a value or name, add comma and newline.
-		case next&(name|scalar|objectOpen|arrayOpen) != 0:
-			e.out = append(e.out, ',', '\n')
-
-		// If next type is a closing object or array, adjust indentation.
-		case next&(objectClose|arrayClose) != 0:
-			e.indents = e.indents[:len(e.indents)-len(e.indent)]
-			e.out = append(e.out, '\n')
-		}
-		e.out = append(e.out, e.indents...)
-
-	case e.lastKind&name != 0:
-		e.out = append(e.out, ' ')
-		// For multi-line output, add a random extra space after key: to make
-		// output unstable.
-		if detrand.Bool() {
-			e.out = append(e.out, ' ')
-		}
-	}
-}
diff --git a/internal/encoding/json/encode_test.go b/internal/encoding/json/encode_test.go
deleted file mode 100644
index 5370f8b..0000000
--- a/internal/encoding/json/encode_test.go
+++ /dev/null
@@ -1,399 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package json_test
-
-import (
-	"math"
-	"strings"
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-	"github.com/google/go-cmp/cmp/cmpopts"
-
-	"google.golang.org/protobuf/internal/detrand"
-	"google.golang.org/protobuf/internal/encoding/json"
-)
-
-// Disable detrand to enable direct comparisons on outputs.
-func init() { detrand.Disable() }
-
-// splitLines is a cmpopts.Option for comparing strings with line breaks.
-var splitLines = cmpopts.AcyclicTransformer("SplitLines", func(s string) []string {
-	return strings.Split(s, "\n")
-})
-
-func TestEncoder(t *testing.T) {
-	tests := []struct {
-		desc          string
-		write         func(*json.Encoder)
-		wantOut       string
-		wantOutIndent string
-	}{
-		{
-			desc: "null",
-			write: func(e *json.Encoder) {
-				e.WriteNull()
-			},
-			wantOut: `null`,
-		},
-		{
-			desc: "true",
-			write: func(e *json.Encoder) {
-				e.WriteBool(true)
-			},
-			wantOut: `true`,
-		},
-		{
-			desc: "false",
-			write: func(e *json.Encoder) {
-				e.WriteBool(false)
-			},
-			wantOut: `false`,
-		},
-		{
-			desc: "string",
-			write: func(e *json.Encoder) {
-				e.WriteString("hello world")
-			},
-			wantOut: `"hello world"`,
-		},
-		{
-			desc: "string contains escaped characters",
-			write: func(e *json.Encoder) {
-				e.WriteString("\u0000\"\\/\b\f\n\r\t")
-			},
-			wantOut: `"\u0000\"\\/\b\f\n\r\t"`,
-		},
-		{
-			desc: "float64",
-			write: func(e *json.Encoder) {
-				e.WriteFloat(1.0199999809265137, 64)
-			},
-			wantOut: `1.0199999809265137`,
-		},
-		{
-			desc: "float64 max value",
-			write: func(e *json.Encoder) {
-				e.WriteFloat(math.MaxFloat64, 64)
-			},
-			wantOut: `1.7976931348623157e+308`,
-		},
-		{
-			desc: "float64 min value",
-			write: func(e *json.Encoder) {
-				e.WriteFloat(-math.MaxFloat64, 64)
-			},
-			wantOut: `-1.7976931348623157e+308`,
-		},
-		{
-			desc: "float64 NaN",
-			write: func(e *json.Encoder) {
-				e.WriteFloat(math.NaN(), 64)
-			},
-			wantOut: `"NaN"`,
-		},
-		{
-			desc: "float64 Infinity",
-			write: func(e *json.Encoder) {
-				e.WriteFloat(math.Inf(+1), 64)
-			},
-			wantOut: `"Infinity"`,
-		},
-		{
-			desc: "float64 -Infinity",
-			write: func(e *json.Encoder) {
-				e.WriteFloat(math.Inf(-1), 64)
-			},
-			wantOut: `"-Infinity"`,
-		},
-		{
-			desc: "float64 negative zero",
-			write: func(e *json.Encoder) {
-				e.WriteFloat(math.Copysign(0, -1), 64)
-			},
-			wantOut: `-0`,
-		},
-		{
-			desc: "float32",
-			write: func(e *json.Encoder) {
-				e.WriteFloat(1.02, 32)
-			},
-			wantOut: `1.02`,
-		},
-		{
-			desc: "float32 max value",
-			write: func(e *json.Encoder) {
-				e.WriteFloat(math.MaxFloat32, 32)
-			},
-			wantOut: `3.4028235e+38`,
-		},
-		{
-			desc: "float32 min value",
-			write: func(e *json.Encoder) {
-				e.WriteFloat(-math.MaxFloat32, 32)
-			},
-			wantOut: `-3.4028235e+38`,
-		},
-		{
-			desc: "float32 negative zero",
-			write: func(e *json.Encoder) {
-				e.WriteFloat(math.Copysign(0, -1), 32)
-			},
-			wantOut: `-0`,
-		},
-		{
-			desc: "int",
-			write: func(e *json.Encoder) {
-				e.WriteInt(-math.MaxInt64)
-			},
-			wantOut: `-9223372036854775807`,
-		},
-		{
-			desc: "uint",
-			write: func(e *json.Encoder) {
-				e.WriteUint(math.MaxUint64)
-			},
-			wantOut: `18446744073709551615`,
-		},
-		{
-			desc: "empty object",
-			write: func(e *json.Encoder) {
-				e.StartObject()
-				e.EndObject()
-			},
-			wantOut: `{}`,
-		},
-		{
-			desc: "empty array",
-			write: func(e *json.Encoder) {
-				e.StartArray()
-				e.EndArray()
-			},
-			wantOut: `[]`,
-		},
-		{
-			desc: "object with one member",
-			write: func(e *json.Encoder) {
-				e.StartObject()
-				e.WriteName("hello")
-				e.WriteString("world")
-				e.EndObject()
-			},
-			wantOut: `{"hello":"world"}`,
-			wantOutIndent: `{
-	"hello": "world"
-}`,
-		},
-		{
-			desc: "array with one member",
-			write: func(e *json.Encoder) {
-				e.StartArray()
-				e.WriteNull()
-				e.EndArray()
-			},
-			wantOut: `[null]`,
-			wantOutIndent: `[
-	null
-]`,
-		},
-		{
-			desc: "simple object",
-			write: func(e *json.Encoder) {
-				e.StartObject()
-				{
-					e.WriteName("null")
-					e.WriteNull()
-				}
-				{
-					e.WriteName("bool")
-					e.WriteBool(true)
-				}
-				{
-					e.WriteName("string")
-					e.WriteString("hello")
-				}
-				{
-					e.WriteName("float")
-					e.WriteFloat(6.28318, 64)
-				}
-				{
-					e.WriteName("int")
-					e.WriteInt(42)
-				}
-				{
-					e.WriteName("uint")
-					e.WriteUint(47)
-				}
-				e.EndObject()
-			},
-			wantOut: `{"null":null,"bool":true,"string":"hello","float":6.28318,"int":42,"uint":47}`,
-			wantOutIndent: `{
-	"null": null,
-	"bool": true,
-	"string": "hello",
-	"float": 6.28318,
-	"int": 42,
-	"uint": 47
-}`,
-		},
-		{
-			desc: "simple array",
-			write: func(e *json.Encoder) {
-				e.StartArray()
-				{
-					e.WriteString("hello")
-					e.WriteFloat(6.28318, 32)
-					e.WriteInt(42)
-					e.WriteUint(47)
-					e.WriteBool(true)
-					e.WriteNull()
-				}
-				e.EndArray()
-			},
-			wantOut: `["hello",6.28318,42,47,true,null]`,
-			wantOutIndent: `[
-	"hello",
-	6.28318,
-	42,
-	47,
-	true,
-	null
-]`,
-		},
-		{
-			desc: "fancy object",
-			write: func(e *json.Encoder) {
-				e.StartObject()
-				{
-					e.WriteName("object0")
-					e.StartObject()
-					e.EndObject()
-				}
-				{
-					e.WriteName("array0")
-					e.StartArray()
-					e.EndArray()
-				}
-				{
-					e.WriteName("object1")
-					e.StartObject()
-					{
-						e.WriteName("null")
-						e.WriteNull()
-					}
-					{
-						e.WriteName("object1-1")
-						e.StartObject()
-						{
-							e.WriteName("bool")
-							e.WriteBool(false)
-						}
-						{
-							e.WriteName("float")
-							e.WriteFloat(3.14159, 32)
-						}
-						e.EndObject()
-					}
-					e.EndObject()
-				}
-				{
-					e.WriteName("array1")
-					e.StartArray()
-					{
-						e.WriteNull()
-						e.StartObject()
-						e.EndObject()
-						e.StartObject()
-						{
-							e.WriteName("hello")
-							e.WriteString("world")
-						}
-						{
-							e.WriteName("hola")
-							e.WriteString("mundo")
-						}
-						e.EndObject()
-						e.StartArray()
-						{
-							e.WriteUint(1)
-							e.WriteUint(0)
-							e.WriteUint(1)
-						}
-						e.EndArray()
-					}
-					e.EndArray()
-				}
-				e.EndObject()
-			},
-			wantOutIndent: `{
-	"object0": {},
-	"array0": [],
-	"object1": {
-		"null": null,
-		"object1-1": {
-			"bool": false,
-			"float": 3.14159
-		}
-	},
-	"array1": [
-		null,
-		{},
-		{
-			"hello": "world",
-			"hola": "mundo"
-		},
-		[
-			1,
-			0,
-			1
-		]
-	]
-}`,
-		}}
-
-	for _, tc := range tests {
-		t.Run(tc.desc, func(t *testing.T) {
-			if tc.wantOut != "" {
-				enc, err := json.NewEncoder("")
-				if err != nil {
-					t.Fatalf("NewEncoder() returned error: %v", err)
-				}
-				tc.write(enc)
-				got := string(enc.Bytes())
-				if got != tc.wantOut {
-					t.Errorf("%s:\n<got>:\n%v\n<want>\n%v\n", tc.desc, got, tc.wantOut)
-				}
-			}
-			if tc.wantOutIndent != "" {
-				enc, err := json.NewEncoder("\t")
-				if err != nil {
-					t.Fatalf("NewEncoder() returned error: %v", err)
-				}
-				tc.write(enc)
-				got, want := string(enc.Bytes()), tc.wantOutIndent
-				if got != want {
-					t.Errorf("%s(indent):\n<got>:\n%v\n<want>\n%v\n<diff -want +got>\n%v\n",
-						tc.desc, got, want, cmp.Diff(want, got, splitLines))
-				}
-			}
-		})
-	}
-}
-
-func TestWriteStringError(t *testing.T) {
-	tests := []string{"abc\xff"}
-
-	for _, in := range tests {
-		t.Run(in, func(t *testing.T) {
-			enc, err := json.NewEncoder("")
-			if err != nil {
-				t.Fatalf("NewEncoder() returned error: %v", err)
-			}
-			if err := enc.WriteString(in); err == nil {
-				t.Errorf("WriteString(%v): got nil error, want error", in)
-			}
-		})
-	}
-}
diff --git a/internal/encoding/messageset/messageset.go b/internal/encoding/messageset/messageset.go
deleted file mode 100644
index c1866f3..0000000
--- a/internal/encoding/messageset/messageset.go
+++ /dev/null
@@ -1,241 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package messageset encodes and decodes the obsolete MessageSet wire format.
-package messageset
-
-import (
-	"math"
-
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/errors"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-// The MessageSet wire format is equivalent to a message defined as follows,
-// where each Item defines an extension field with a field number of 'type_id'
-// and content of 'message'. MessageSet extensions must be non-repeated message
-// fields.
-//
-//	message MessageSet {
-//		repeated group Item = 1 {
-//			required int32 type_id = 2;
-//			required string message = 3;
-//		}
-//	}
-const (
-	FieldItem    = protowire.Number(1)
-	FieldTypeID  = protowire.Number(2)
-	FieldMessage = protowire.Number(3)
-)
-
-// ExtensionName is the field name for extensions of MessageSet.
-//
-// A valid MessageSet extension must be of the form:
-//	message MyMessage {
-//		extend proto2.bridge.MessageSet {
-//			optional MyMessage message_set_extension = 1234;
-//		}
-//		...
-//	}
-const ExtensionName = "message_set_extension"
-
-// IsMessageSet returns whether the message uses the MessageSet wire format.
-func IsMessageSet(md pref.MessageDescriptor) bool {
-	xmd, ok := md.(interface{ IsMessageSet() bool })
-	return ok && xmd.IsMessageSet()
-}
-
-// IsMessageSetExtension reports this field properly extends a MessageSet.
-func IsMessageSetExtension(fd pref.FieldDescriptor) bool {
-	switch {
-	case fd.Name() != ExtensionName:
-		return false
-	case !IsMessageSet(fd.ContainingMessage()):
-		return false
-	case fd.FullName().Parent() != fd.Message().FullName():
-		return false
-	}
-	return true
-}
-
-// SizeField returns the size of a MessageSet item field containing an extension
-// with the given field number, not counting the contents of the message subfield.
-func SizeField(num protowire.Number) int {
-	return 2*protowire.SizeTag(FieldItem) + protowire.SizeTag(FieldTypeID) + protowire.SizeVarint(uint64(num))
-}
-
-// Unmarshal parses a MessageSet.
-//
-// It calls fn with the type ID and value of each item in the MessageSet.
-// Unknown fields are discarded.
-//
-// If wantLen is true, the item values include the varint length prefix.
-// This is ugly, but simplifies the fast-path decoder in internal/impl.
-func Unmarshal(b []byte, wantLen bool, fn func(typeID protowire.Number, value []byte) error) error {
-	for len(b) > 0 {
-		num, wtyp, n := protowire.ConsumeTag(b)
-		if n < 0 {
-			return protowire.ParseError(n)
-		}
-		b = b[n:]
-		if num != FieldItem || wtyp != protowire.StartGroupType {
-			n := protowire.ConsumeFieldValue(num, wtyp, b)
-			if n < 0 {
-				return protowire.ParseError(n)
-			}
-			b = b[n:]
-			continue
-		}
-		typeID, value, n, err := ConsumeFieldValue(b, wantLen)
-		if err != nil {
-			return err
-		}
-		b = b[n:]
-		if typeID == 0 {
-			continue
-		}
-		if err := fn(typeID, value); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-// ConsumeFieldValue parses b as a MessageSet item field value until and including
-// the trailing end group marker. It assumes the start group tag has already been parsed.
-// It returns the contents of the type_id and message subfields and the total
-// item length.
-//
-// If wantLen is true, the returned message value includes the length prefix.
-func ConsumeFieldValue(b []byte, wantLen bool) (typeid protowire.Number, message []byte, n int, err error) {
-	ilen := len(b)
-	for {
-		num, wtyp, n := protowire.ConsumeTag(b)
-		if n < 0 {
-			return 0, nil, 0, protowire.ParseError(n)
-		}
-		b = b[n:]
-		switch {
-		case num == FieldItem && wtyp == protowire.EndGroupType:
-			if wantLen && len(message) == 0 {
-				// The message field was missing, which should never happen.
-				// Be prepared for this case anyway.
-				message = protowire.AppendVarint(message, 0)
-			}
-			return typeid, message, ilen - len(b), nil
-		case num == FieldTypeID && wtyp == protowire.VarintType:
-			v, n := protowire.ConsumeVarint(b)
-			if n < 0 {
-				return 0, nil, 0, protowire.ParseError(n)
-			}
-			b = b[n:]
-			if v < 1 || v > math.MaxInt32 {
-				return 0, nil, 0, errors.New("invalid type_id in message set")
-			}
-			typeid = protowire.Number(v)
-		case num == FieldMessage && wtyp == protowire.BytesType:
-			m, n := protowire.ConsumeBytes(b)
-			if n < 0 {
-				return 0, nil, 0, protowire.ParseError(n)
-			}
-			if message == nil {
-				if wantLen {
-					message = b[:n:n]
-				} else {
-					message = m[:len(m):len(m)]
-				}
-			} else {
-				// This case should never happen in practice, but handle it for
-				// correctness: The MessageSet item contains multiple message
-				// fields, which need to be merged.
-				//
-				// In the case where we're returning the length, this becomes
-				// quite inefficient since we need to strip the length off
-				// the existing data and reconstruct it with the combined length.
-				if wantLen {
-					_, nn := protowire.ConsumeVarint(message)
-					m0 := message[nn:]
-					message = nil
-					message = protowire.AppendVarint(message, uint64(len(m0)+len(m)))
-					message = append(message, m0...)
-					message = append(message, m...)
-				} else {
-					message = append(message, m...)
-				}
-			}
-			b = b[n:]
-		default:
-			// We have no place to put it, so we just ignore unknown fields.
-			n := protowire.ConsumeFieldValue(num, wtyp, b)
-			if n < 0 {
-				return 0, nil, 0, protowire.ParseError(n)
-			}
-			b = b[n:]
-		}
-	}
-}
-
-// AppendFieldStart appends the start of a MessageSet item field containing
-// an extension with the given number. The caller must add the message
-// subfield (including the tag).
-func AppendFieldStart(b []byte, num protowire.Number) []byte {
-	b = protowire.AppendTag(b, FieldItem, protowire.StartGroupType)
-	b = protowire.AppendTag(b, FieldTypeID, protowire.VarintType)
-	b = protowire.AppendVarint(b, uint64(num))
-	return b
-}
-
-// AppendFieldEnd appends the trailing end group marker for a MessageSet item field.
-func AppendFieldEnd(b []byte) []byte {
-	return protowire.AppendTag(b, FieldItem, protowire.EndGroupType)
-}
-
-// SizeUnknown returns the size of an unknown fields section in MessageSet format.
-//
-// See AppendUnknown.
-func SizeUnknown(unknown []byte) (size int) {
-	for len(unknown) > 0 {
-		num, typ, n := protowire.ConsumeTag(unknown)
-		if n < 0 || typ != protowire.BytesType {
-			return 0
-		}
-		unknown = unknown[n:]
-		_, n = protowire.ConsumeBytes(unknown)
-		if n < 0 {
-			return 0
-		}
-		unknown = unknown[n:]
-		size += SizeField(num) + protowire.SizeTag(FieldMessage) + n
-	}
-	return size
-}
-
-// AppendUnknown appends unknown fields to b in MessageSet format.
-//
-// For historic reasons, unresolved items in a MessageSet are stored in a
-// message's unknown fields section in non-MessageSet format. That is, an
-// unknown item with typeID T and value V appears in the unknown fields as
-// a field with number T and value V.
-//
-// This function converts the unknown fields back into MessageSet form.
-func AppendUnknown(b, unknown []byte) ([]byte, error) {
-	for len(unknown) > 0 {
-		num, typ, n := protowire.ConsumeTag(unknown)
-		if n < 0 || typ != protowire.BytesType {
-			return nil, errors.New("invalid data in message set unknown fields")
-		}
-		unknown = unknown[n:]
-		_, n = protowire.ConsumeBytes(unknown)
-		if n < 0 {
-			return nil, errors.New("invalid data in message set unknown fields")
-		}
-		b = AppendFieldStart(b, num)
-		b = protowire.AppendTag(b, FieldMessage, protowire.BytesType)
-		b = append(b, unknown[:n]...)
-		b = AppendFieldEnd(b)
-		unknown = unknown[n:]
-	}
-	return b, nil
-}
diff --git a/internal/encoding/tag/tag.go b/internal/encoding/tag/tag.go
deleted file mode 100644
index 38f1931..0000000
--- a/internal/encoding/tag/tag.go
+++ /dev/null
@@ -1,207 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package tag marshals and unmarshals the legacy struct tags as generated
-// by historical versions of protoc-gen-go.
-package tag
-
-import (
-	"reflect"
-	"strconv"
-	"strings"
-
-	defval "google.golang.org/protobuf/internal/encoding/defval"
-	fdesc "google.golang.org/protobuf/internal/filedesc"
-	"google.golang.org/protobuf/internal/strs"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-var byteType = reflect.TypeOf(byte(0))
-
-// Unmarshal decodes the tag into a prototype.Field.
-//
-// The goType is needed to determine the original protoreflect.Kind since the
-// tag does not record sufficient information to determine that.
-// The type is the underlying field type (e.g., a repeated field may be
-// represented by []T, but the Go type passed in is just T).
-// A list of enum value descriptors must be provided for enum fields.
-// This does not populate the Enum or Message (except for weak message).
-//
-// This function is a best effort attempt; parsing errors are ignored.
-func Unmarshal(tag string, goType reflect.Type, evs pref.EnumValueDescriptors) pref.FieldDescriptor {
-	f := new(fdesc.Field)
-	f.L0.ParentFile = fdesc.SurrogateProto2
-	for len(tag) > 0 {
-		i := strings.IndexByte(tag, ',')
-		if i < 0 {
-			i = len(tag)
-		}
-		switch s := tag[:i]; {
-		case strings.HasPrefix(s, "name="):
-			f.L0.FullName = pref.FullName(s[len("name="):])
-		case strings.Trim(s, "0123456789") == "":
-			n, _ := strconv.ParseUint(s, 10, 32)
-			f.L1.Number = pref.FieldNumber(n)
-		case s == "opt":
-			f.L1.Cardinality = pref.Optional
-		case s == "req":
-			f.L1.Cardinality = pref.Required
-		case s == "rep":
-			f.L1.Cardinality = pref.Repeated
-		case s == "varint":
-			switch goType.Kind() {
-			case reflect.Bool:
-				f.L1.Kind = pref.BoolKind
-			case reflect.Int32:
-				f.L1.Kind = pref.Int32Kind
-			case reflect.Int64:
-				f.L1.Kind = pref.Int64Kind
-			case reflect.Uint32:
-				f.L1.Kind = pref.Uint32Kind
-			case reflect.Uint64:
-				f.L1.Kind = pref.Uint64Kind
-			}
-		case s == "zigzag32":
-			if goType.Kind() == reflect.Int32 {
-				f.L1.Kind = pref.Sint32Kind
-			}
-		case s == "zigzag64":
-			if goType.Kind() == reflect.Int64 {
-				f.L1.Kind = pref.Sint64Kind
-			}
-		case s == "fixed32":
-			switch goType.Kind() {
-			case reflect.Int32:
-				f.L1.Kind = pref.Sfixed32Kind
-			case reflect.Uint32:
-				f.L1.Kind = pref.Fixed32Kind
-			case reflect.Float32:
-				f.L1.Kind = pref.FloatKind
-			}
-		case s == "fixed64":
-			switch goType.Kind() {
-			case reflect.Int64:
-				f.L1.Kind = pref.Sfixed64Kind
-			case reflect.Uint64:
-				f.L1.Kind = pref.Fixed64Kind
-			case reflect.Float64:
-				f.L1.Kind = pref.DoubleKind
-			}
-		case s == "bytes":
-			switch {
-			case goType.Kind() == reflect.String:
-				f.L1.Kind = pref.StringKind
-			case goType.Kind() == reflect.Slice && goType.Elem() == byteType:
-				f.L1.Kind = pref.BytesKind
-			default:
-				f.L1.Kind = pref.MessageKind
-			}
-		case s == "group":
-			f.L1.Kind = pref.GroupKind
-		case strings.HasPrefix(s, "enum="):
-			f.L1.Kind = pref.EnumKind
-		case strings.HasPrefix(s, "json="):
-			jsonName := s[len("json="):]
-			if jsonName != strs.JSONCamelCase(string(f.L0.FullName.Name())) {
-				f.L1.StringName.InitJSON(jsonName)
-			}
-		case s == "packed":
-			f.L1.HasPacked = true
-			f.L1.IsPacked = true
-		case strings.HasPrefix(s, "weak="):
-			f.L1.IsWeak = true
-			f.L1.Message = fdesc.PlaceholderMessage(pref.FullName(s[len("weak="):]))
-		case strings.HasPrefix(s, "def="):
-			// The default tag is special in that everything afterwards is the
-			// default regardless of the presence of commas.
-			s, i = tag[len("def="):], len(tag)
-			v, ev, _ := defval.Unmarshal(s, f.L1.Kind, evs, defval.GoTag)
-			f.L1.Default = fdesc.DefaultValue(v, ev)
-		case s == "proto3":
-			f.L0.ParentFile = fdesc.SurrogateProto3
-		}
-		tag = strings.TrimPrefix(tag[i:], ",")
-	}
-
-	// The generator uses the group message name instead of the field name.
-	// We obtain the real field name by lowercasing the group name.
-	if f.L1.Kind == pref.GroupKind {
-		f.L0.FullName = pref.FullName(strings.ToLower(string(f.L0.FullName)))
-	}
-	return f
-}
-
-// Marshal encodes the protoreflect.FieldDescriptor as a tag.
-//
-// The enumName must be provided if the kind is an enum.
-// Historically, the formulation of the enum "name" was the proto package
-// dot-concatenated with the generated Go identifier for the enum type.
-// Depending on the context on how Marshal is called, there are different ways
-// through which that information is determined. As such it is the caller's
-// responsibility to provide a function to obtain that information.
-func Marshal(fd pref.FieldDescriptor, enumName string) string {
-	var tag []string
-	switch fd.Kind() {
-	case pref.BoolKind, pref.EnumKind, pref.Int32Kind, pref.Uint32Kind, pref.Int64Kind, pref.Uint64Kind:
-		tag = append(tag, "varint")
-	case pref.Sint32Kind:
-		tag = append(tag, "zigzag32")
-	case pref.Sint64Kind:
-		tag = append(tag, "zigzag64")
-	case pref.Sfixed32Kind, pref.Fixed32Kind, pref.FloatKind:
-		tag = append(tag, "fixed32")
-	case pref.Sfixed64Kind, pref.Fixed64Kind, pref.DoubleKind:
-		tag = append(tag, "fixed64")
-	case pref.StringKind, pref.BytesKind, pref.MessageKind:
-		tag = append(tag, "bytes")
-	case pref.GroupKind:
-		tag = append(tag, "group")
-	}
-	tag = append(tag, strconv.Itoa(int(fd.Number())))
-	switch fd.Cardinality() {
-	case pref.Optional:
-		tag = append(tag, "opt")
-	case pref.Required:
-		tag = append(tag, "req")
-	case pref.Repeated:
-		tag = append(tag, "rep")
-	}
-	if fd.IsPacked() {
-		tag = append(tag, "packed")
-	}
-	name := string(fd.Name())
-	if fd.Kind() == pref.GroupKind {
-		// The name of the FieldDescriptor for a group field is
-		// lowercased. To find the original capitalization, we
-		// look in the field's MessageType.
-		name = string(fd.Message().Name())
-	}
-	tag = append(tag, "name="+name)
-	if jsonName := fd.JSONName(); jsonName != "" && jsonName != name && !fd.IsExtension() {
-		// NOTE: The jsonName != name condition is suspect, but it preserve
-		// the exact same semantics from the previous generator.
-		tag = append(tag, "json="+jsonName)
-	}
-	if fd.IsWeak() {
-		tag = append(tag, "weak="+string(fd.Message().FullName()))
-	}
-	// The previous implementation does not tag extension fields as proto3,
-	// even when the field is defined in a proto3 file. Match that behavior
-	// for consistency.
-	if fd.Syntax() == pref.Proto3 && !fd.IsExtension() {
-		tag = append(tag, "proto3")
-	}
-	if fd.Kind() == pref.EnumKind && enumName != "" {
-		tag = append(tag, "enum="+enumName)
-	}
-	if fd.ContainingOneof() != nil {
-		tag = append(tag, "oneof")
-	}
-	// This must appear last in the tag, since commas in strings aren't escaped.
-	if fd.HasDefault() {
-		def, _ := defval.Marshal(fd.Default(), fd.DefaultEnumValue(), fd.Kind(), defval.GoTag)
-		tag = append(tag, "def="+def)
-	}
-	return strings.Join(tag, ",")
-}
diff --git a/internal/encoding/tag/tag_test.go b/internal/encoding/tag/tag_test.go
deleted file mode 100644
index 9f22521..0000000
--- a/internal/encoding/tag/tag_test.go
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package tag_test
-
-import (
-	"reflect"
-	"testing"
-
-	"google.golang.org/protobuf/internal/encoding/tag"
-	fdesc "google.golang.org/protobuf/internal/filedesc"
-	"google.golang.org/protobuf/proto"
-	pdesc "google.golang.org/protobuf/reflect/protodesc"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-func Test(t *testing.T) {
-	fd := new(fdesc.Field)
-	fd.L0.ParentFile = fdesc.SurrogateProto3
-	fd.L0.FullName = "foo_field"
-	fd.L1.Number = 1337
-	fd.L1.Cardinality = pref.Repeated
-	fd.L1.Kind = pref.BytesKind
-	fd.L1.Default = fdesc.DefaultValue(pref.ValueOf([]byte("hello, \xde\xad\xbe\xef\n")), nil)
-
-	// Marshal test.
-	gotTag := tag.Marshal(fd, "")
-	wantTag := `bytes,1337,rep,name=foo_field,json=fooField,proto3,def=hello, \336\255\276\357\n`
-	if gotTag != wantTag {
-		t.Errorf("Marshal() = `%v`, want `%v`", gotTag, wantTag)
-	}
-
-	// Unmarshal test.
-	gotFD := tag.Unmarshal(wantTag, reflect.TypeOf([]byte{}), nil)
-	wantFD := fd
-	if !proto.Equal(pdesc.ToFieldDescriptorProto(gotFD), pdesc.ToFieldDescriptorProto(wantFD)) {
-		t.Errorf("Umarshal() mismatch:\ngot  %v\nwant %v", gotFD, wantFD)
-	}
-}
diff --git a/internal/encoding/text/decode.go b/internal/encoding/text/decode.go
deleted file mode 100644
index 3780377..0000000
--- a/internal/encoding/text/decode.go
+++ /dev/null
@@ -1,665 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package text
-
-import (
-	"bytes"
-	"fmt"
-	"io"
-	"regexp"
-	"strconv"
-	"unicode/utf8"
-
-	"google.golang.org/protobuf/internal/errors"
-)
-
-// Decoder is a token-based textproto decoder.
-type Decoder struct {
-	// lastCall is last method called, either readCall or peekCall.
-	// Initial value is readCall.
-	lastCall call
-
-	// lastToken contains the last read token.
-	lastToken Token
-
-	// lastErr contains the last read error.
-	lastErr error
-
-	// openStack is a stack containing the byte characters for MessageOpen and
-	// ListOpen kinds. The top of stack represents the message or the list that
-	// the current token is nested in. An empty stack means the current token is
-	// at the top level message. The characters '{' and '<' both represent the
-	// MessageOpen kind.
-	openStack []byte
-
-	// orig is used in reporting line and column.
-	orig []byte
-	// in contains the unconsumed input.
-	in []byte
-}
-
-// NewDecoder returns a Decoder to read the given []byte.
-func NewDecoder(b []byte) *Decoder {
-	return &Decoder{orig: b, in: b}
-}
-
-// ErrUnexpectedEOF means that EOF was encountered in the middle of the input.
-var ErrUnexpectedEOF = errors.New("%v", io.ErrUnexpectedEOF)
-
-// call specifies which Decoder method was invoked.
-type call uint8
-
-const (
-	readCall call = iota
-	peekCall
-)
-
-// Peek looks ahead and returns the next token and error without advancing a read.
-func (d *Decoder) Peek() (Token, error) {
-	defer func() { d.lastCall = peekCall }()
-	if d.lastCall == readCall {
-		d.lastToken, d.lastErr = d.Read()
-	}
-	return d.lastToken, d.lastErr
-}
-
-// Read returns the next token.
-// It will return an error if there is no valid token.
-func (d *Decoder) Read() (Token, error) {
-	defer func() { d.lastCall = readCall }()
-	if d.lastCall == peekCall {
-		return d.lastToken, d.lastErr
-	}
-
-	tok, err := d.parseNext(d.lastToken.kind)
-	if err != nil {
-		return Token{}, err
-	}
-
-	switch tok.kind {
-	case comma, semicolon:
-		tok, err = d.parseNext(tok.kind)
-		if err != nil {
-			return Token{}, err
-		}
-	}
-	d.lastToken = tok
-	return tok, nil
-}
-
-const (
-	mismatchedFmt = "mismatched close character %q"
-	unexpectedFmt = "unexpected character %q"
-)
-
-// parseNext parses the next Token based on given last kind.
-func (d *Decoder) parseNext(lastKind Kind) (Token, error) {
-	// Trim leading spaces.
-	d.consume(0)
-	isEOF := false
-	if len(d.in) == 0 {
-		isEOF = true
-	}
-
-	switch lastKind {
-	case EOF:
-		return d.consumeToken(EOF, 0, 0), nil
-
-	case bof:
-		// Start of top level message. Next token can be EOF or Name.
-		if isEOF {
-			return d.consumeToken(EOF, 0, 0), nil
-		}
-		return d.parseFieldName()
-
-	case Name:
-		// Next token can be MessageOpen, ListOpen or Scalar.
-		if isEOF {
-			return Token{}, ErrUnexpectedEOF
-		}
-		switch ch := d.in[0]; ch {
-		case '{', '<':
-			d.pushOpenStack(ch)
-			return d.consumeToken(MessageOpen, 1, 0), nil
-		case '[':
-			d.pushOpenStack(ch)
-			return d.consumeToken(ListOpen, 1, 0), nil
-		default:
-			return d.parseScalar()
-		}
-
-	case Scalar:
-		openKind, closeCh := d.currentOpenKind()
-		switch openKind {
-		case bof:
-			// Top level message.
-			// 	Next token can be EOF, comma, semicolon or Name.
-			if isEOF {
-				return d.consumeToken(EOF, 0, 0), nil
-			}
-			switch d.in[0] {
-			case ',':
-				return d.consumeToken(comma, 1, 0), nil
-			case ';':
-				return d.consumeToken(semicolon, 1, 0), nil
-			default:
-				return d.parseFieldName()
-			}
-
-		case MessageOpen:
-			// Next token can be MessageClose, comma, semicolon or Name.
-			if isEOF {
-				return Token{}, ErrUnexpectedEOF
-			}
-			switch ch := d.in[0]; ch {
-			case closeCh:
-				d.popOpenStack()
-				return d.consumeToken(MessageClose, 1, 0), nil
-			case otherCloseChar[closeCh]:
-				return Token{}, d.newSyntaxError(mismatchedFmt, ch)
-			case ',':
-				return d.consumeToken(comma, 1, 0), nil
-			case ';':
-				return d.consumeToken(semicolon, 1, 0), nil
-			default:
-				return d.parseFieldName()
-			}
-
-		case ListOpen:
-			// Next token can be ListClose or comma.
-			if isEOF {
-				return Token{}, ErrUnexpectedEOF
-			}
-			switch ch := d.in[0]; ch {
-			case ']':
-				d.popOpenStack()
-				return d.consumeToken(ListClose, 1, 0), nil
-			case ',':
-				return d.consumeToken(comma, 1, 0), nil
-			default:
-				return Token{}, d.newSyntaxError(unexpectedFmt, ch)
-			}
-		}
-
-	case MessageOpen:
-		// Next token can be MessageClose or Name.
-		if isEOF {
-			return Token{}, ErrUnexpectedEOF
-		}
-		_, closeCh := d.currentOpenKind()
-		switch ch := d.in[0]; ch {
-		case closeCh:
-			d.popOpenStack()
-			return d.consumeToken(MessageClose, 1, 0), nil
-		case otherCloseChar[closeCh]:
-			return Token{}, d.newSyntaxError(mismatchedFmt, ch)
-		default:
-			return d.parseFieldName()
-		}
-
-	case MessageClose:
-		openKind, closeCh := d.currentOpenKind()
-		switch openKind {
-		case bof:
-			// Top level message.
-			// Next token can be EOF, comma, semicolon or Name.
-			if isEOF {
-				return d.consumeToken(EOF, 0, 0), nil
-			}
-			switch ch := d.in[0]; ch {
-			case ',':
-				return d.consumeToken(comma, 1, 0), nil
-			case ';':
-				return d.consumeToken(semicolon, 1, 0), nil
-			default:
-				return d.parseFieldName()
-			}
-
-		case MessageOpen:
-			// Next token can be MessageClose, comma, semicolon or Name.
-			if isEOF {
-				return Token{}, ErrUnexpectedEOF
-			}
-			switch ch := d.in[0]; ch {
-			case closeCh:
-				d.popOpenStack()
-				return d.consumeToken(MessageClose, 1, 0), nil
-			case otherCloseChar[closeCh]:
-				return Token{}, d.newSyntaxError(mismatchedFmt, ch)
-			case ',':
-				return d.consumeToken(comma, 1, 0), nil
-			case ';':
-				return d.consumeToken(semicolon, 1, 0), nil
-			default:
-				return d.parseFieldName()
-			}
-
-		case ListOpen:
-			// Next token can be ListClose or comma
-			if isEOF {
-				return Token{}, ErrUnexpectedEOF
-			}
-			switch ch := d.in[0]; ch {
-			case closeCh:
-				d.popOpenStack()
-				return d.consumeToken(ListClose, 1, 0), nil
-			case ',':
-				return d.consumeToken(comma, 1, 0), nil
-			default:
-				return Token{}, d.newSyntaxError(unexpectedFmt, ch)
-			}
-		}
-
-	case ListOpen:
-		// Next token can be ListClose, MessageStart or Scalar.
-		if isEOF {
-			return Token{}, ErrUnexpectedEOF
-		}
-		switch ch := d.in[0]; ch {
-		case ']':
-			d.popOpenStack()
-			return d.consumeToken(ListClose, 1, 0), nil
-		case '{', '<':
-			d.pushOpenStack(ch)
-			return d.consumeToken(MessageOpen, 1, 0), nil
-		default:
-			return d.parseScalar()
-		}
-
-	case ListClose:
-		openKind, closeCh := d.currentOpenKind()
-		switch openKind {
-		case bof:
-			// Top level message.
-			// Next token can be EOF, comma, semicolon or Name.
-			if isEOF {
-				return d.consumeToken(EOF, 0, 0), nil
-			}
-			switch ch := d.in[0]; ch {
-			case ',':
-				return d.consumeToken(comma, 1, 0), nil
-			case ';':
-				return d.consumeToken(semicolon, 1, 0), nil
-			default:
-				return d.parseFieldName()
-			}
-
-		case MessageOpen:
-			// Next token can be MessageClose, comma, semicolon or Name.
-			if isEOF {
-				return Token{}, ErrUnexpectedEOF
-			}
-			switch ch := d.in[0]; ch {
-			case closeCh:
-				d.popOpenStack()
-				return d.consumeToken(MessageClose, 1, 0), nil
-			case otherCloseChar[closeCh]:
-				return Token{}, d.newSyntaxError(mismatchedFmt, ch)
-			case ',':
-				return d.consumeToken(comma, 1, 0), nil
-			case ';':
-				return d.consumeToken(semicolon, 1, 0), nil
-			default:
-				return d.parseFieldName()
-			}
-
-		default:
-			// It is not possible to have this case. Let it panic below.
-		}
-
-	case comma, semicolon:
-		openKind, closeCh := d.currentOpenKind()
-		switch openKind {
-		case bof:
-			// Top level message. Next token can be EOF or Name.
-			if isEOF {
-				return d.consumeToken(EOF, 0, 0), nil
-			}
-			return d.parseFieldName()
-
-		case MessageOpen:
-			// Next token can be MessageClose or Name.
-			if isEOF {
-				return Token{}, ErrUnexpectedEOF
-			}
-			switch ch := d.in[0]; ch {
-			case closeCh:
-				d.popOpenStack()
-				return d.consumeToken(MessageClose, 1, 0), nil
-			case otherCloseChar[closeCh]:
-				return Token{}, d.newSyntaxError(mismatchedFmt, ch)
-			default:
-				return d.parseFieldName()
-			}
-
-		case ListOpen:
-			if lastKind == semicolon {
-				// It is not be possible to have this case as logic here
-				// should not have produced a semicolon Token when inside a
-				// list. Let it panic below.
-				break
-			}
-			// Next token can be MessageOpen or Scalar.
-			if isEOF {
-				return Token{}, ErrUnexpectedEOF
-			}
-			switch ch := d.in[0]; ch {
-			case '{', '<':
-				d.pushOpenStack(ch)
-				return d.consumeToken(MessageOpen, 1, 0), nil
-			default:
-				return d.parseScalar()
-			}
-		}
-	}
-
-	line, column := d.Position(len(d.orig) - len(d.in))
-	panic(fmt.Sprintf("Decoder.parseNext: bug at handling line %d:%d with lastKind=%v", line, column, lastKind))
-}
-
-var otherCloseChar = map[byte]byte{
-	'}': '>',
-	'>': '}',
-}
-
-// currentOpenKind indicates whether current position is inside a message, list
-// or top-level message by returning MessageOpen, ListOpen or bof respectively.
-// If the returned kind is either a MessageOpen or ListOpen, it also returns the
-// corresponding closing character.
-func (d *Decoder) currentOpenKind() (Kind, byte) {
-	if len(d.openStack) == 0 {
-		return bof, 0
-	}
-	openCh := d.openStack[len(d.openStack)-1]
-	switch openCh {
-	case '{':
-		return MessageOpen, '}'
-	case '<':
-		return MessageOpen, '>'
-	case '[':
-		return ListOpen, ']'
-	}
-	panic(fmt.Sprintf("Decoder: openStack contains invalid byte %c", openCh))
-}
-
-func (d *Decoder) pushOpenStack(ch byte) {
-	d.openStack = append(d.openStack, ch)
-}
-
-func (d *Decoder) popOpenStack() {
-	d.openStack = d.openStack[:len(d.openStack)-1]
-}
-
-// parseFieldName parses field name and separator.
-func (d *Decoder) parseFieldName() (tok Token, err error) {
-	defer func() {
-		if err == nil && d.tryConsumeChar(':') {
-			tok.attrs |= hasSeparator
-		}
-	}()
-
-	// Extension or Any type URL.
-	if d.in[0] == '[' {
-		return d.parseTypeName()
-	}
-
-	// Identifier.
-	if size := parseIdent(d.in, false); size > 0 {
-		return d.consumeToken(Name, size, uint8(IdentName)), nil
-	}
-
-	// Field number. Identify if input is a valid number that is not negative
-	// and is decimal integer within 32-bit range.
-	if num := parseNumber(d.in); num.size > 0 {
-		if !num.neg && num.kind == numDec {
-			if _, err := strconv.ParseInt(string(d.in[:num.size]), 10, 32); err == nil {
-				return d.consumeToken(Name, num.size, uint8(FieldNumber)), nil
-			}
-		}
-		return Token{}, d.newSyntaxError("invalid field number: %s", d.in[:num.size])
-	}
-
-	return Token{}, d.newSyntaxError("invalid field name: %s", errRegexp.Find(d.in))
-}
-
-// parseTypeName parses Any type URL or extension field name. The name is
-// enclosed in [ and ] characters. The C++ parser does not handle many legal URL
-// strings. This implementation is more liberal and allows for the pattern
-// ^[-_a-zA-Z0-9]+([./][-_a-zA-Z0-9]+)*`). Whitespaces and comments are allowed
-// in between [ ], '.', '/' and the sub names.
-func (d *Decoder) parseTypeName() (Token, error) {
-	startPos := len(d.orig) - len(d.in)
-	// Use alias s to advance first in order to use d.in for error handling.
-	// Caller already checks for [ as first character.
-	s := consume(d.in[1:], 0)
-	if len(s) == 0 {
-		return Token{}, ErrUnexpectedEOF
-	}
-
-	var name []byte
-	for len(s) > 0 && isTypeNameChar(s[0]) {
-		name = append(name, s[0])
-		s = s[1:]
-	}
-	s = consume(s, 0)
-
-	var closed bool
-	for len(s) > 0 && !closed {
-		switch {
-		case s[0] == ']':
-			s = s[1:]
-			closed = true
-
-		case s[0] == '/', s[0] == '.':
-			if len(name) > 0 && (name[len(name)-1] == '/' || name[len(name)-1] == '.') {
-				return Token{}, d.newSyntaxError("invalid type URL/extension field name: %s",
-					d.orig[startPos:len(d.orig)-len(s)+1])
-			}
-			name = append(name, s[0])
-			s = s[1:]
-			s = consume(s, 0)
-			for len(s) > 0 && isTypeNameChar(s[0]) {
-				name = append(name, s[0])
-				s = s[1:]
-			}
-			s = consume(s, 0)
-
-		default:
-			return Token{}, d.newSyntaxError(
-				"invalid type URL/extension field name: %s", d.orig[startPos:len(d.orig)-len(s)+1])
-		}
-	}
-
-	if !closed {
-		return Token{}, ErrUnexpectedEOF
-	}
-
-	// First character cannot be '.'. Last character cannot be '.' or '/'.
-	size := len(name)
-	if size == 0 || name[0] == '.' || name[size-1] == '.' || name[size-1] == '/' {
-		return Token{}, d.newSyntaxError("invalid type URL/extension field name: %s",
-			d.orig[startPos:len(d.orig)-len(s)])
-	}
-
-	d.in = s
-	endPos := len(d.orig) - len(d.in)
-	d.consume(0)
-
-	return Token{
-		kind:  Name,
-		attrs: uint8(TypeName),
-		pos:   startPos,
-		raw:   d.orig[startPos:endPos],
-		str:   string(name),
-	}, nil
-}
-
-func isTypeNameChar(b byte) bool {
-	return (b == '-' || b == '_' ||
-		('0' <= b && b <= '9') ||
-		('a' <= b && b <= 'z') ||
-		('A' <= b && b <= 'Z'))
-}
-
-func isWhiteSpace(b byte) bool {
-	switch b {
-	case ' ', '\n', '\r', '\t':
-		return true
-	default:
-		return false
-	}
-}
-
-// parseIdent parses an unquoted proto identifier and returns size.
-// If allowNeg is true, it allows '-' to be the first character in the
-// identifier. This is used when parsing literal values like -infinity, etc.
-// Regular expression matches an identifier: `^[_a-zA-Z][_a-zA-Z0-9]*`
-func parseIdent(input []byte, allowNeg bool) int {
-	var size int
-
-	s := input
-	if len(s) == 0 {
-		return 0
-	}
-
-	if allowNeg && s[0] == '-' {
-		s = s[1:]
-		size++
-		if len(s) == 0 {
-			return 0
-		}
-	}
-
-	switch {
-	case s[0] == '_',
-		'a' <= s[0] && s[0] <= 'z',
-		'A' <= s[0] && s[0] <= 'Z':
-		s = s[1:]
-		size++
-	default:
-		return 0
-	}
-
-	for len(s) > 0 && (s[0] == '_' ||
-		'a' <= s[0] && s[0] <= 'z' ||
-		'A' <= s[0] && s[0] <= 'Z' ||
-		'0' <= s[0] && s[0] <= '9') {
-		s = s[1:]
-		size++
-	}
-
-	if len(s) > 0 && !isDelim(s[0]) {
-		return 0
-	}
-
-	return size
-}
-
-// parseScalar parses for a string, literal or number value.
-func (d *Decoder) parseScalar() (Token, error) {
-	if d.in[0] == '"' || d.in[0] == '\'' {
-		return d.parseStringValue()
-	}
-
-	if tok, ok := d.parseLiteralValue(); ok {
-		return tok, nil
-	}
-
-	if tok, ok := d.parseNumberValue(); ok {
-		return tok, nil
-	}
-
-	return Token{}, d.newSyntaxError("invalid scalar value: %s", errRegexp.Find(d.in))
-}
-
-// parseLiteralValue parses a literal value. A literal value is used for
-// bools, special floats and enums. This function simply identifies that the
-// field value is a literal.
-func (d *Decoder) parseLiteralValue() (Token, bool) {
-	size := parseIdent(d.in, true)
-	if size == 0 {
-		return Token{}, false
-	}
-	return d.consumeToken(Scalar, size, literalValue), true
-}
-
-// consumeToken constructs a Token for given Kind from d.in and consumes given
-// size-length from it.
-func (d *Decoder) consumeToken(kind Kind, size int, attrs uint8) Token {
-	// Important to compute raw and pos before consuming.
-	tok := Token{
-		kind:  kind,
-		attrs: attrs,
-		pos:   len(d.orig) - len(d.in),
-		raw:   d.in[:size],
-	}
-	d.consume(size)
-	return tok
-}
-
-// newSyntaxError returns a syntax error with line and column information for
-// current position.
-func (d *Decoder) newSyntaxError(f string, x ...interface{}) error {
-	e := errors.New(f, x...)
-	line, column := d.Position(len(d.orig) - len(d.in))
-	return errors.New("syntax error (line %d:%d): %v", line, column, e)
-}
-
-// Position returns line and column number of given index of the original input.
-// It will panic if index is out of range.
-func (d *Decoder) Position(idx int) (line int, column int) {
-	b := d.orig[:idx]
-	line = bytes.Count(b, []byte("\n")) + 1
-	if i := bytes.LastIndexByte(b, '\n'); i >= 0 {
-		b = b[i+1:]
-	}
-	column = utf8.RuneCount(b) + 1 // ignore multi-rune characters
-	return line, column
-}
-
-func (d *Decoder) tryConsumeChar(c byte) bool {
-	if len(d.in) > 0 && d.in[0] == c {
-		d.consume(1)
-		return true
-	}
-	return false
-}
-
-// consume consumes n bytes of input and any subsequent whitespace or comments.
-func (d *Decoder) consume(n int) {
-	d.in = consume(d.in, n)
-	return
-}
-
-// consume consumes n bytes of input and any subsequent whitespace or comments.
-func consume(b []byte, n int) []byte {
-	b = b[n:]
-	for len(b) > 0 {
-		switch b[0] {
-		case ' ', '\n', '\r', '\t':
-			b = b[1:]
-		case '#':
-			if i := bytes.IndexByte(b, '\n'); i >= 0 {
-				b = b[i+len("\n"):]
-			} else {
-				b = nil
-			}
-		default:
-			return b
-		}
-	}
-	return b
-}
-
-// Any sequence that looks like a non-delimiter (for error reporting).
-var errRegexp = regexp.MustCompile(`^([-+._a-zA-Z0-9\/]+|.)`)
-
-// isDelim returns true if given byte is a delimiter character.
-func isDelim(c byte) bool {
-	return !(c == '-' || c == '+' || c == '.' || c == '_' ||
-		('a' <= c && c <= 'z') ||
-		('A' <= c && c <= 'Z') ||
-		('0' <= c && c <= '9'))
-}
diff --git a/internal/encoding/text/decode_number.go b/internal/encoding/text/decode_number.go
deleted file mode 100644
index f2d90b7..0000000
--- a/internal/encoding/text/decode_number.go
+++ /dev/null
@@ -1,190 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package text
-
-// parseNumberValue parses a number from the input and returns a Token object.
-func (d *Decoder) parseNumberValue() (Token, bool) {
-	in := d.in
-	num := parseNumber(in)
-	if num.size == 0 {
-		return Token{}, false
-	}
-	numAttrs := num.kind
-	if num.neg {
-		numAttrs |= isNegative
-	}
-	strSize := num.size
-	last := num.size - 1
-	if num.kind == numFloat && (d.in[last] == 'f' || d.in[last] == 'F') {
-		strSize = last
-	}
-	tok := Token{
-		kind:     Scalar,
-		attrs:    numberValue,
-		pos:      len(d.orig) - len(d.in),
-		raw:      d.in[:num.size],
-		str:      string(d.in[:strSize]),
-		numAttrs: numAttrs,
-	}
-	d.consume(num.size)
-	return tok, true
-}
-
-const (
-	numDec uint8 = (1 << iota) / 2
-	numHex
-	numOct
-	numFloat
-)
-
-// number is the result of parsing out a valid number from parseNumber. It
-// contains data for doing float or integer conversion via the strconv package
-// in conjunction with the input bytes.
-type number struct {
-	kind uint8
-	neg  bool
-	size int
-}
-
-// parseNumber constructs a number object from given input. It allows for the
-// following patterns:
-//   integer: ^-?([1-9][0-9]*|0[xX][0-9a-fA-F]+|0[0-7]*)
-//   float: ^-?((0|[1-9][0-9]*)?([.][0-9]*)?([eE][+-]?[0-9]+)?[fF]?)
-// It also returns the number of parsed bytes for the given number, 0 if it is
-// not a number.
-func parseNumber(input []byte) number {
-	kind := numDec
-	var size int
-	var neg bool
-
-	s := input
-	if len(s) == 0 {
-		return number{}
-	}
-
-	// Optional -
-	if s[0] == '-' {
-		neg = true
-		s = s[1:]
-		size++
-		if len(s) == 0 {
-			return number{}
-		}
-	}
-
-	// C++ allows for whitespace and comments in between the negative sign and
-	// the rest of the number. This logic currently does not but is consistent
-	// with v1.
-
-	switch {
-	case s[0] == '0':
-		if len(s) > 1 {
-			switch {
-			case s[1] == 'x' || s[1] == 'X':
-				// Parse as hex number.
-				kind = numHex
-				n := 2
-				s = s[2:]
-				for len(s) > 0 && (('0' <= s[0] && s[0] <= '9') ||
-					('a' <= s[0] && s[0] <= 'f') ||
-					('A' <= s[0] && s[0] <= 'F')) {
-					s = s[1:]
-					n++
-				}
-				if n == 2 {
-					return number{}
-				}
-				size += n
-
-			case '0' <= s[1] && s[1] <= '7':
-				// Parse as octal number.
-				kind = numOct
-				n := 2
-				s = s[2:]
-				for len(s) > 0 && '0' <= s[0] && s[0] <= '7' {
-					s = s[1:]
-					n++
-				}
-				size += n
-			}
-
-			if kind&(numHex|numOct) > 0 {
-				if len(s) > 0 && !isDelim(s[0]) {
-					return number{}
-				}
-				return number{kind: kind, neg: neg, size: size}
-			}
-		}
-		s = s[1:]
-		size++
-
-	case '1' <= s[0] && s[0] <= '9':
-		n := 1
-		s = s[1:]
-		for len(s) > 0 && '0' <= s[0] && s[0] <= '9' {
-			s = s[1:]
-			n++
-		}
-		size += n
-
-	case s[0] == '.':
-		// Set kind to numFloat to signify the intent to parse as float. And
-		// that it needs to have other digits after '.'.
-		kind = numFloat
-
-	default:
-		return number{}
-	}
-
-	// . followed by 0 or more digits.
-	if len(s) > 0 && s[0] == '.' {
-		n := 1
-		s = s[1:]
-		// If decimal point was before any digits, it should be followed by
-		// other digits.
-		if len(s) == 0 && kind == numFloat {
-			return number{}
-		}
-		for len(s) > 0 && '0' <= s[0] && s[0] <= '9' {
-			s = s[1:]
-			n++
-		}
-		size += n
-		kind = numFloat
-	}
-
-	// e or E followed by an optional - or + and 1 or more digits.
-	if len(s) >= 2 && (s[0] == 'e' || s[0] == 'E') {
-		kind = numFloat
-		s = s[1:]
-		n := 1
-		if s[0] == '+' || s[0] == '-' {
-			s = s[1:]
-			n++
-			if len(s) == 0 {
-				return number{}
-			}
-		}
-		for len(s) > 0 && '0' <= s[0] && s[0] <= '9' {
-			s = s[1:]
-			n++
-		}
-		size += n
-	}
-
-	// Optional suffix f or F for floats.
-	if len(s) > 0 && (s[0] == 'f' || s[0] == 'F') {
-		kind = numFloat
-		s = s[1:]
-		size++
-	}
-
-	// Check that next byte is a delimiter or it is at the end.
-	if len(s) > 0 && !isDelim(s[0]) {
-		return number{}
-	}
-
-	return number{kind: kind, neg: neg, size: size}
-}
diff --git a/internal/encoding/text/decode_string.go b/internal/encoding/text/decode_string.go
deleted file mode 100644
index d4d3490..0000000
--- a/internal/encoding/text/decode_string.go
+++ /dev/null
@@ -1,161 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package text
-
-import (
-	"bytes"
-	"strconv"
-	"strings"
-	"unicode"
-	"unicode/utf16"
-	"unicode/utf8"
-
-	"google.golang.org/protobuf/internal/strs"
-)
-
-// parseStringValue parses string field token.
-// This differs from parseString since the text format allows
-// multiple back-to-back string literals where they are semantically treated
-// as a single large string with all values concatenated.
-//
-// E.g., `"foo" "bar" "baz"` => "foobarbaz"
-func (d *Decoder) parseStringValue() (Token, error) {
-	// Note that the ending quote is sufficient to unambiguously mark the end
-	// of a string. Thus, the text grammar does not require intervening
-	// whitespace or control characters in-between strings.
-	// Thus, the following is valid:
-	//	`"foo"'bar'"baz"` => "foobarbaz"
-	in0 := d.in
-	var ss []string
-	for len(d.in) > 0 && (d.in[0] == '"' || d.in[0] == '\'') {
-		s, err := d.parseString()
-		if err != nil {
-			return Token{}, err
-		}
-		ss = append(ss, s)
-	}
-	// d.in already points to the end of the value at this point.
-	return Token{
-		kind:  Scalar,
-		attrs: stringValue,
-		pos:   len(d.orig) - len(in0),
-		raw:   in0[:len(in0)-len(d.in)],
-		str:   strings.Join(ss, ""),
-	}, nil
-}
-
-// parseString parses a string value enclosed in " or '.
-func (d *Decoder) parseString() (string, error) {
-	in := d.in
-	if len(in) == 0 {
-		return "", ErrUnexpectedEOF
-	}
-	quote := in[0]
-	in = in[1:]
-	i := indexNeedEscapeInBytes(in)
-	in, out := in[i:], in[:i:i] // set cap to prevent mutations
-	for len(in) > 0 {
-		switch r, n := utf8.DecodeRune(in); {
-		case r == utf8.RuneError && n == 1:
-			return "", d.newSyntaxError("invalid UTF-8 detected")
-		case r == 0 || r == '\n':
-			return "", d.newSyntaxError("invalid character %q in string", r)
-		case r == rune(quote):
-			in = in[1:]
-			d.consume(len(d.in) - len(in))
-			return string(out), nil
-		case r == '\\':
-			if len(in) < 2 {
-				return "", ErrUnexpectedEOF
-			}
-			switch r := in[1]; r {
-			case '"', '\'', '\\', '?':
-				in, out = in[2:], append(out, r)
-			case 'a':
-				in, out = in[2:], append(out, '\a')
-			case 'b':
-				in, out = in[2:], append(out, '\b')
-			case 'n':
-				in, out = in[2:], append(out, '\n')
-			case 'r':
-				in, out = in[2:], append(out, '\r')
-			case 't':
-				in, out = in[2:], append(out, '\t')
-			case 'v':
-				in, out = in[2:], append(out, '\v')
-			case 'f':
-				in, out = in[2:], append(out, '\f')
-			case '0', '1', '2', '3', '4', '5', '6', '7':
-				// One, two, or three octal characters.
-				n := len(in[1:]) - len(bytes.TrimLeft(in[1:], "01234567"))
-				if n > 3 {
-					n = 3
-				}
-				v, err := strconv.ParseUint(string(in[1:1+n]), 8, 8)
-				if err != nil {
-					return "", d.newSyntaxError("invalid octal escape code %q in string", in[:1+n])
-				}
-				in, out = in[1+n:], append(out, byte(v))
-			case 'x':
-				// One or two hexadecimal characters.
-				n := len(in[2:]) - len(bytes.TrimLeft(in[2:], "0123456789abcdefABCDEF"))
-				if n > 2 {
-					n = 2
-				}
-				v, err := strconv.ParseUint(string(in[2:2+n]), 16, 8)
-				if err != nil {
-					return "", d.newSyntaxError("invalid hex escape code %q in string", in[:2+n])
-				}
-				in, out = in[2+n:], append(out, byte(v))
-			case 'u', 'U':
-				// Four or eight hexadecimal characters
-				n := 6
-				if r == 'U' {
-					n = 10
-				}
-				if len(in) < n {
-					return "", ErrUnexpectedEOF
-				}
-				v, err := strconv.ParseUint(string(in[2:n]), 16, 32)
-				if utf8.MaxRune < v || err != nil {
-					return "", d.newSyntaxError("invalid Unicode escape code %q in string", in[:n])
-				}
-				in = in[n:]
-
-				r := rune(v)
-				if utf16.IsSurrogate(r) {
-					if len(in) < 6 {
-						return "", ErrUnexpectedEOF
-					}
-					v, err := strconv.ParseUint(string(in[2:6]), 16, 16)
-					r = utf16.DecodeRune(r, rune(v))
-					if in[0] != '\\' || in[1] != 'u' || r == unicode.ReplacementChar || err != nil {
-						return "", d.newSyntaxError("invalid Unicode escape code %q in string", in[:6])
-					}
-					in = in[6:]
-				}
-				out = append(out, string(r)...)
-			default:
-				return "", d.newSyntaxError("invalid escape code %q in string", in[:2])
-			}
-		default:
-			i := indexNeedEscapeInBytes(in[n:])
-			in, out = in[n+i:], append(out, in[:n+i]...)
-		}
-	}
-	return "", ErrUnexpectedEOF
-}
-
-// indexNeedEscapeInString returns the index of the character that needs
-// escaping. If no characters need escaping, this returns the input length.
-func indexNeedEscapeInBytes(b []byte) int { return indexNeedEscapeInString(strs.UnsafeString(b)) }
-
-// UnmarshalString returns an unescaped string given a textproto string value.
-// String value needs to contain single or double quotes. This is only used by
-// internal/encoding/defval package for unmarshaling bytes.
-func UnmarshalString(s string) (string, error) {
-	d := NewDecoder([]byte(s))
-	return d.parseString()
-}
diff --git a/internal/encoding/text/decode_test.go b/internal/encoding/text/decode_test.go
deleted file mode 100644
index 9e38cb3..0000000
--- a/internal/encoding/text/decode_test.go
+++ /dev/null
@@ -1,1917 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package text_test
-
-import (
-	"fmt"
-	"math"
-	"strings"
-	"testing"
-	"unicode/utf8"
-
-	"github.com/google/go-cmp/cmp"
-
-	"google.golang.org/protobuf/internal/encoding/text"
-	"google.golang.org/protobuf/internal/flags"
-)
-
-var eofErr = text.ErrUnexpectedEOF.Error()
-
-type R struct {
-	// K is expected Kind of the returned Token object from calling Decoder.Read.
-	K text.Kind
-	// E is expected error substring from calling Decoder.Read if set.
-	E string
-	// T contains NT (if K is Name) or ST (if K is Scalar) or nil (others)
-	T interface{}
-	// P is expected Token.Pos if set > 0.
-	P int
-	// RS is expected result from Token.RawString() if not empty.
-	RS string
-}
-
-// NT contains data for checking against a name token.
-type NT struct {
-	K text.NameKind
-	// Sep is true if name token should have separator character, else false.
-	Sep bool
-	// If K is IdentName or TypeName, invoke corresponding getter and compare against this field.
-	S string
-	// If K is FieldNumber, invoke getter and compare against this field.
-	N int32
-}
-
-// ST contains data for checking against a scalar token.
-type ST struct {
-	// checker that is expected to return OK.
-	ok checker
-	// checker that is expected to return not OK.
-	nok checker
-}
-
-// checker provides API for the token wrapper API call types Str, Enum, Bool,
-// Uint64, Uint32, Int64, Int32, Float64, Float32.
-type checker interface {
-	// checkOk checks and expects for token API call to return ok and compare
-	// against implementation-stored value. Returns empty string if success,
-	// else returns error message describing the error.
-	checkOk(text.Token) string
-	// checkNok checks and expects for token API call to return not ok. Returns
-	// empty string if success, else returns error message describing the error.
-	checkNok(text.Token) string
-}
-
-type Str struct {
-	val string
-}
-
-func (s Str) checkOk(tok text.Token) string {
-	got, ok := tok.String()
-	if !ok {
-		return fmt.Sprintf("Token.String() returned not OK for token: %v", tok.RawString())
-	}
-	if got != s.val {
-		return fmt.Sprintf("Token.String() got %q want %q for token: %v", got, s.val, tok.RawString())
-	}
-	return ""
-}
-
-func (s Str) checkNok(tok text.Token) string {
-	if _, ok := tok.String(); ok {
-		return fmt.Sprintf("Token.String() returned OK for token: %v", tok.RawString())
-	}
-	return ""
-}
-
-type Enum struct {
-	val string
-}
-
-func (e Enum) checkOk(tok text.Token) string {
-	got, ok := tok.Enum()
-	if !ok {
-		return fmt.Sprintf("Token.Enum() returned not OK for token: %v", tok.RawString())
-	}
-	if got != e.val {
-		return fmt.Sprintf("Token.Enum() got %q want %q for token: %v", got, e.val, tok.RawString())
-	}
-	return ""
-}
-
-func (e Enum) checkNok(tok text.Token) string {
-	if _, ok := tok.Enum(); ok {
-		return fmt.Sprintf("Token.Enum() returned OK for token: %v", tok.RawString())
-	}
-	return ""
-}
-
-type Bool struct {
-	val bool
-}
-
-func (b Bool) checkOk(tok text.Token) string {
-	got, ok := tok.Bool()
-	if !ok {
-		return fmt.Sprintf("Token.Bool() returned not OK for token: %v", tok.RawString())
-	}
-	if got != b.val {
-		return fmt.Sprintf("Token.Bool() got %v want %v for token: %v", got, b.val, tok.RawString())
-	}
-	return ""
-}
-
-func (b Bool) checkNok(tok text.Token) string {
-	if _, ok := tok.Bool(); ok {
-		return fmt.Sprintf("Token.Bool() returned OK for token: %v", tok.RawString())
-	}
-	return ""
-}
-
-type Uint64 struct {
-	val uint64
-}
-
-func (n Uint64) checkOk(tok text.Token) string {
-	got, ok := tok.Uint64()
-	if !ok {
-		return fmt.Sprintf("Token.Uint64() returned not OK for token: %v", tok.RawString())
-	}
-	if got != n.val {
-		return fmt.Sprintf("Token.Uint64() got %v want %v for token: %v", got, n.val, tok.RawString())
-	}
-	return ""
-}
-
-func (n Uint64) checkNok(tok text.Token) string {
-	if _, ok := tok.Uint64(); ok {
-		return fmt.Sprintf("Token.Uint64() returned OK for token: %v", tok.RawString())
-	}
-	return ""
-}
-
-type Uint32 struct {
-	val uint32
-}
-
-func (n Uint32) checkOk(tok text.Token) string {
-	got, ok := tok.Uint32()
-	if !ok {
-		return fmt.Sprintf("Token.Uint32() returned not OK for token: %v", tok.RawString())
-	}
-	if got != n.val {
-		return fmt.Sprintf("Token.Uint32() got %v want %v for token: %v", got, n.val, tok.RawString())
-	}
-	return ""
-}
-
-func (n Uint32) checkNok(tok text.Token) string {
-	if _, ok := tok.Uint32(); ok {
-		return fmt.Sprintf("Token.Uint32() returned OK for token: %v", tok.RawString())
-	}
-	return ""
-}
-
-type Int64 struct {
-	val int64
-}
-
-func (n Int64) checkOk(tok text.Token) string {
-	got, ok := tok.Int64()
-	if !ok {
-		return fmt.Sprintf("Token.Int64() returned not OK for token: %v", tok.RawString())
-	}
-	if got != n.val {
-		return fmt.Sprintf("Token.Int64() got %v want %v for token: %v", got, n.val, tok.RawString())
-	}
-	return ""
-}
-
-func (n Int64) checkNok(tok text.Token) string {
-	if _, ok := tok.Int64(); ok {
-		return fmt.Sprintf("Token.Int64() returned OK for token: %v", tok.RawString())
-	}
-	return ""
-}
-
-type Int32 struct {
-	val int32
-}
-
-func (n Int32) checkOk(tok text.Token) string {
-	got, ok := tok.Int32()
-	if !ok {
-		return fmt.Sprintf("Token.Int32() returned not OK for token: %v", tok.RawString())
-	}
-	if got != n.val {
-		return fmt.Sprintf("Token.Int32() got %v want %v for token: %v", got, n.val, tok.RawString())
-	}
-	return ""
-}
-
-func (n Int32) checkNok(tok text.Token) string {
-	if _, ok := tok.Int32(); ok {
-		return fmt.Sprintf("Token.Int32() returned OK for token: %v", tok.RawString())
-	}
-	return ""
-}
-
-type Float64 struct {
-	val float64
-}
-
-func (n Float64) checkOk(tok text.Token) string {
-	got, ok := tok.Float64()
-	if !ok {
-		return fmt.Sprintf("Token.Float64() returned not OK for token: %v", tok.RawString())
-	}
-	if math.IsNaN(got) && math.IsNaN(n.val) {
-		return ""
-	}
-	if got != n.val {
-		return fmt.Sprintf("Token.Float64() got %v want %v for token: %v", got, n.val, tok.RawString())
-	}
-	return ""
-}
-
-func (n Float64) checkNok(tok text.Token) string {
-	if _, ok := tok.Float64(); ok {
-		return fmt.Sprintf("Token.Float64() returned OK for token: %v", tok.RawString())
-	}
-	return ""
-}
-
-type Float32 struct {
-	val float32
-}
-
-func (n Float32) checkOk(tok text.Token) string {
-	got, ok := tok.Float32()
-	if !ok {
-		return fmt.Sprintf("Token.Float32() returned not OK for token: %v", tok.RawString())
-	}
-	if math.IsNaN(float64(got)) && math.IsNaN(float64(n.val)) {
-		return ""
-	}
-	if got != n.val {
-		return fmt.Sprintf("Token.Float32() got %v want %v for token: %v", got, n.val, tok.RawString())
-	}
-	return ""
-}
-
-func (n Float32) checkNok(tok text.Token) string {
-	if _, ok := tok.Float32(); ok {
-		return fmt.Sprintf("Token.Float32() returned OK for token: %v", tok.RawString())
-	}
-	return ""
-}
-
-func TestDecoder(t *testing.T) {
-	const space = " \n\r\t"
-	tests := []struct {
-		in string
-		// want is a list of expected Tokens returned from calling Decoder.Read.
-		// An item makes the test code invoke Decoder.Read and compare against
-		// R.K and R.E. If R.K is Name, it compares
-		want []R
-	}{
-		{
-			in:   "",
-			want: []R{{K: text.EOF}},
-		},
-		{
-			in:   "# comment",
-			want: []R{{K: text.EOF}},
-		},
-		{
-			in:   space + "# comment" + space,
-			want: []R{{K: text.EOF}},
-		},
-		{
-			in:   space,
-			want: []R{{K: text.EOF, P: len(space)}},
-		},
-		{
-			// Calling Read after EOF will keep returning EOF for
-			// succeeding Read calls.
-			in: space,
-			want: []R{
-				{K: text.EOF},
-				{K: text.EOF},
-				{K: text.EOF},
-			},
-		},
-		{
-			// NUL is an invalid whitespace since C++ uses C-strings.
-			in:   "\x00",
-			want: []R{{E: "invalid field name: \x00"}},
-		},
-
-		// Field names.
-		{
-			in: "name",
-			want: []R{
-				{K: text.Name, T: NT{K: text.IdentName, S: "name"}, RS: "name"},
-				{E: eofErr},
-			},
-		},
-		{
-			in: space + "name:" + space,
-			want: []R{
-				{K: text.Name, T: NT{K: text.IdentName, Sep: true, S: "name"}},
-				{E: eofErr},
-			},
-		},
-		{
-			in: space + "name" + space + ":" + space,
-			want: []R{
-				{K: text.Name, T: NT{K: text.IdentName, Sep: true, S: "name"}},
-				{E: eofErr},
-			},
-		},
-		{
-			in: "name # comment",
-			want: []R{
-				{K: text.Name, T: NT{K: text.IdentName, S: "name"}},
-				{E: eofErr},
-			},
-		},
-		{
-			// Comments only extend until the newline.
-			in: "# comment \nname",
-			want: []R{
-				{K: text.Name, T: NT{K: text.IdentName, S: "name"}, P: 11},
-			},
-		},
-		{
-			in: "name # comment \n:",
-			want: []R{
-				{K: text.Name, T: NT{K: text.IdentName, Sep: true, S: "name"}},
-			},
-		},
-		{
-			in: "name123",
-			want: []R{
-				{K: text.Name, T: NT{K: text.IdentName, S: "name123"}},
-			},
-		},
-		{
-			in: "name_123",
-			want: []R{
-				{K: text.Name, T: NT{K: text.IdentName, S: "name_123"}},
-			},
-		},
-		{
-			in: "_123",
-			want: []R{
-				{K: text.Name, T: NT{K: text.IdentName, S: "_123"}},
-			},
-		},
-		{
-			in:   ":",
-			want: []R{{E: "syntax error (line 1:1): invalid field name: :"}},
-		},
-		{
-			in:   "\n\n\n {",
-			want: []R{{E: "syntax error (line 4:2): invalid field name: {"}},
-		},
-		{
-			in:   "123name",
-			want: []R{{E: "invalid field name: 123name"}},
-		},
-		{
-			in: "[type]",
-			want: []R{
-				{K: text.Name, T: NT{K: text.TypeName, S: "type"}, RS: "[type]"},
-			},
-		},
-		{
-			// V1 allows this syntax. C++ does not, however, C++ also fails if
-			// field is Any and does not contain '/'.
-			in: "[/type]",
-			want: []R{
-				{K: text.Name, T: NT{K: text.TypeName, S: "/type"}},
-			},
-		},
-		{
-			in:   "[.type]",
-			want: []R{{E: "invalid type URL/extension field name: [.type]"}},
-		},
-		{
-			in: "[pkg.Foo.extension_field]",
-			want: []R{
-				{K: text.Name, T: NT{K: text.TypeName, S: "pkg.Foo.extension_field"}},
-			},
-		},
-		{
-			in: "[domain.com/type]",
-			want: []R{
-				{K: text.Name, T: NT{K: text.TypeName, S: "domain.com/type"}},
-			},
-		},
-		{
-			in: "[domain.com/pkg.type]",
-			want: []R{
-				{K: text.Name, T: NT{K: text.TypeName, S: "domain.com/pkg.type"}},
-			},
-		},
-		{
-			in: "[sub.domain.com\x2fpath\x2fto\x2fproto.package.name]",
-			want: []R{
-				{
-					K: text.Name,
-					T: NT{
-						K: text.TypeName,
-						S: "sub.domain.com/path/to/proto.package.name",
-					},
-					RS: "[sub.domain.com\x2fpath\x2fto\x2fproto.package.name]",
-				},
-			},
-		},
-		{
-			// V2 no longer allows a quoted string for the Any type URL.
-			in:   `["domain.com/pkg.type"]`,
-			want: []R{{E: `invalid type URL/extension field name: ["`}},
-		},
-		{
-			// V2 no longer allows a quoted string for the Any type URL.
-			in:   `['domain.com/pkg.type']`,
-			want: []R{{E: `invalid type URL/extension field name: ['`}},
-		},
-		{
-			in:   "[pkg.Foo.extension_field:",
-			want: []R{{E: "invalid type URL/extension field name: [pkg.Foo.extension_field:"}},
-		},
-		{
-			// V2 no longer allows whitespace within identifier "word".
-			in:   "[proto.packa ge.field]",
-			want: []R{{E: "invalid type URL/extension field name: [proto.packa g"}},
-		},
-		{
-			// V2 no longer allows comments within identifier "word".
-			in:   "[proto.packa # comment\n ge.field]",
-			want: []R{{E: "invalid type URL/extension field name: [proto.packa # comment\n g"}},
-		},
-		{
-			in:   "[proto.package.]",
-			want: []R{{E: "invalid type URL/extension field name: [proto.package."}},
-		},
-		{
-			in:   "[proto.package/]",
-			want: []R{{E: "invalid type URL/extension field name: [proto.package/"}},
-		},
-		{
-			in: `message_field{[bad@]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.MessageOpen},
-				{E: `invalid type URL/extension field name: [bad@`},
-			},
-		},
-		{
-			in: `message_field{[invalid//type]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.MessageOpen},
-				{E: `invalid type URL/extension field name: [invalid//`},
-			},
-		},
-		{
-			in: `message_field{[proto.package.]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.MessageOpen},
-				{E: `invalid type URL/extension field name: [proto.package.`},
-			},
-		},
-		{
-			in:   "[proto.package",
-			want: []R{{E: eofErr}},
-		},
-		{
-			in: "[" + space + "type" + space + "]" + space + ":",
-			want: []R{
-				{
-					K: text.Name,
-					T: NT{
-						K:   text.TypeName,
-						Sep: true,
-						S:   "type",
-					},
-					RS: "[" + space + "type" + space + "]",
-				},
-			},
-		},
-		{
-			// Whitespaces/comments are only allowed betweeb
-			in: "[" + space + "domain" + space + "." + space + "com # comment\n" +
-				"/" + "pkg" + space + "." + space + "type" + space + "]",
-			want: []R{
-				{K: text.Name, T: NT{K: text.TypeName, S: "domain.com/pkg.type"}},
-			},
-		},
-		{
-			in: "42",
-			want: []R{
-				{K: text.Name, T: NT{K: text.FieldNumber, N: 42}},
-			},
-		},
-		{
-			in:   "0x42:",
-			want: []R{{E: "invalid field number: 0x42"}},
-		},
-		{
-			in:   "042:",
-			want: []R{{E: "invalid field number: 042"}},
-		},
-		{
-			in:   "123.456:",
-			want: []R{{E: "invalid field number: 123.456"}},
-		},
-		{
-			in:   "-123",
-			want: []R{{E: "invalid field number: -123"}},
-		},
-		{
-			// Field number > math.MaxInt32.
-			in:   "2147483648:",
-			want: []R{{E: "invalid field number: 2147483648"}},
-		},
-
-		// String field value. More string parsing specific testing in
-		// TestUnmarshalString.
-		{
-			in: `name: "hello world"`,
-			want: []R{
-				{K: text.Name},
-				{
-					K:  text.Scalar,
-					T:  ST{ok: Str{"hello world"}, nok: Enum{}},
-					RS: `"hello world"`,
-				},
-				{K: text.EOF},
-			},
-		},
-		{
-			in: `name: 'hello'`,
-			want: []R{
-				{K: text.Name},
-				{K: text.Scalar, T: ST{ok: Str{"hello"}}},
-			},
-		},
-		{
-			in: `name: "hello'`,
-			want: []R{
-				{K: text.Name},
-				{E: eofErr},
-			},
-		},
-		{
-			in: `name: 'hello`,
-			want: []R{
-				{K: text.Name},
-				{E: eofErr},
-			},
-		},
-		{
-			// Field name without separator is ok. prototext package will need
-			// to determine that this is not valid for scalar values.
-			in: space + `name` + space + `"hello"` + space,
-			want: []R{
-				{K: text.Name},
-				{K: text.Scalar, T: ST{ok: Str{"hello"}}},
-			},
-		},
-		{
-			in: `name'hello'`,
-			want: []R{
-				{K: text.Name},
-				{K: text.Scalar, T: ST{ok: Str{"hello"}}},
-			},
-		},
-		{
-			in: `name: ` + space + `"hello"` + space + `,`,
-			want: []R{
-				{K: text.Name},
-				{K: text.Scalar, T: ST{ok: Str{"hello"}}},
-				{K: text.EOF},
-			},
-		},
-		{
-			in: `name` + space + `:` + `"hello"` + space + `;` + space,
-			want: []R{
-				{K: text.Name},
-				{K: text.Scalar, T: ST{ok: Str{"hello"}}},
-				{K: text.EOF},
-			},
-		},
-		{
-			in: `name:"hello" , ,`,
-			want: []R{
-				{K: text.Name},
-				{K: text.Scalar},
-				{E: "(line 1:16): invalid field name: ,"},
-			},
-		},
-		{
-			in: `name:"hello" , ;`,
-			want: []R{
-				{K: text.Name},
-				{K: text.Scalar},
-				{E: "(line 1:16): invalid field name: ;"},
-			},
-		},
-		{
-			in: `name:"hello" name:'world'`,
-			want: []R{
-				{K: text.Name},
-				{K: text.Scalar, T: ST{ok: Str{"hello"}}},
-				{K: text.Name},
-				{K: text.Scalar, T: ST{ok: Str{"world"}}},
-				{K: text.EOF},
-			},
-		},
-		{
-			in: `name:"hello", name:"world"`,
-			want: []R{
-				{K: text.Name},
-				{K: text.Scalar, T: ST{ok: Str{"hello"}}},
-				{K: text.Name},
-				{K: text.Scalar, T: ST{ok: Str{"world"}}},
-				{K: text.EOF},
-			},
-		},
-		{
-			in: `name:"hello"; name:"world",`,
-			want: []R{
-				{K: text.Name},
-				{K: text.Scalar, T: ST{ok: Str{"hello"}}},
-				{K: text.Name},
-				{K: text.Scalar, T: ST{ok: Str{"world"}}},
-				{K: text.EOF},
-			},
-		},
-		{
-			in: `foo:"hello"bar:"world"`,
-			want: []R{
-				{K: text.Name, T: NT{K: text.IdentName, Sep: true, S: "foo"}},
-				{K: text.Scalar, T: ST{ok: Str{"hello"}}},
-				{K: text.Name, T: NT{K: text.IdentName, Sep: true, S: "bar"}},
-				{K: text.Scalar, T: ST{ok: Str{"world"}}},
-				{K: text.EOF},
-			},
-		},
-		{
-			in: `foo:"hello"[bar]:"world"`,
-			want: []R{
-				{K: text.Name, T: NT{K: text.IdentName, Sep: true, S: "foo"}},
-				{K: text.Scalar, T: ST{ok: Str{"hello"}}},
-				{K: text.Name, T: NT{K: text.TypeName, Sep: true, S: "bar"}},
-				{K: text.Scalar, T: ST{ok: Str{"world"}}},
-				{K: text.EOF},
-			},
-		},
-		{
-			in: `name:"foo"` + space + `"bar"` + space + `'qux'`,
-			want: []R{
-				{K: text.Name, T: NT{K: text.IdentName, Sep: true, S: "name"}},
-				{K: text.Scalar, T: ST{ok: Str{"foobarqux"}}},
-				{K: text.EOF},
-			},
-		},
-		{
-			in: `name:"foo"'bar'"qux"`,
-			want: []R{
-				{K: text.Name, T: NT{K: text.IdentName, Sep: true, S: "name"}},
-				{K: text.Scalar, T: ST{ok: Str{"foobarqux"}}},
-				{K: text.EOF},
-			},
-		},
-		{
-			in: `name:"foo"` + space + `"bar" # comment` + "\n'qux' # comment",
-			want: []R{
-				{K: text.Name, T: NT{K: text.IdentName, Sep: true, S: "name"}},
-				{K: text.Scalar, T: ST{ok: Str{"foobarqux"}}},
-				{K: text.EOF},
-			},
-		},
-
-		// Lists.
-		{
-			in: `name: [`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{E: eofErr},
-			},
-		},
-		{
-			in: `name: []`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.ListClose},
-				{K: text.EOF},
-			},
-		},
-		{
-			in: `name []`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.ListClose},
-				{K: text.EOF},
-			},
-		},
-		{
-			in: `name: [,`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{E: `(line 1:8): invalid scalar value: ,`},
-			},
-		},
-		{
-			in: `name: [0`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar},
-				{E: eofErr},
-			},
-		},
-		{
-			in: `name: [` + space + `"hello"` + space + `]` + space,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Str{"hello"}}, P: len(space) + 7},
-				{K: text.ListClose},
-				{K: text.EOF},
-			},
-		},
-		{
-			in: `name: ["hello",]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Str{"hello"}}},
-				{E: `invalid scalar value: ]`},
-			},
-		},
-		{
-			in: `name: ["foo"` + space + `'bar' "qux"]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Str{"foobarqux"}}},
-				{K: text.ListClose},
-				{K: text.EOF},
-			},
-		},
-		{
-			in: `name:` + space + `["foo",` + space + "'bar', # comment\n\n" + `"qux"]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Str{"foo"}}},
-				{K: text.Scalar, T: ST{ok: Str{"bar"}}},
-				{K: text.Scalar, T: ST{ok: Str{"qux"}}},
-				{K: text.ListClose},
-				{K: text.EOF},
-			},
-		},
-
-		{
-			// List within list is not allowed.
-			in: `name: [[]]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{E: `syntax error (line 1:8): invalid scalar value: [`},
-			},
-		},
-		{
-			// List items need to be separated by ,.
-			in: `name: ["foo" true]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Str{"foo"}}},
-				{E: `syntax error (line 1:14): unexpected character 't'`},
-			},
-		},
-		{
-			in: `name: ["foo"; "bar"]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Str{"foo"}}},
-				{E: `syntax error (line 1:13): unexpected character ';'`},
-			},
-		},
-		{
-			in: `name: ["foo", true, ENUM, 1.0]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Str{"foo"}}},
-				{K: text.Scalar, T: ST{ok: Enum{"true"}}},
-				{K: text.Scalar, T: ST{ok: Enum{"ENUM"}}},
-				{K: text.Scalar, T: ST{ok: Float32{1.0}}},
-				{K: text.ListClose},
-			},
-		},
-
-		// Boolean literal values.
-		{
-			in: `name: True`,
-			want: []R{
-				{K: text.Name},
-				{
-					K: text.Scalar,
-					T: ST{ok: Bool{true}},
-				},
-				{K: text.EOF},
-			},
-		},
-		{
-			in: `name false`,
-			want: []R{
-				{K: text.Name},
-				{
-					K: text.Scalar,
-					T: ST{ok: Bool{false}},
-				},
-				{K: text.EOF},
-			},
-		},
-		{
-			in: `name: [t, f, True, False, true, false, 1, 0, 0x01, 0x00, 01, 00]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Bool{true}}},
-				{K: text.Scalar, T: ST{ok: Bool{false}}},
-				{K: text.Scalar, T: ST{ok: Bool{true}}},
-				{K: text.Scalar, T: ST{ok: Bool{false}}},
-				{K: text.Scalar, T: ST{ok: Bool{true}}},
-				{K: text.Scalar, T: ST{ok: Bool{false}}},
-				{K: text.Scalar, T: ST{ok: Bool{true}}},
-				{K: text.Scalar, T: ST{ok: Bool{false}}},
-				{K: text.Scalar, T: ST{ok: Bool{true}}},
-				{K: text.Scalar, T: ST{ok: Bool{false}}},
-				{K: text.Scalar, T: ST{ok: Bool{true}}},
-				{K: text.Scalar, T: ST{ok: Bool{false}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			// Looks like boolean but not.
-			in: `name: [tRUe, falSE, -1, -0, -0x01, -0x00, -01, -00, 0.0]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{nok: Bool{}}},
-				{K: text.Scalar, T: ST{nok: Bool{}}},
-				{K: text.Scalar, T: ST{nok: Bool{}}},
-				{K: text.Scalar, T: ST{nok: Bool{}}},
-				{K: text.Scalar, T: ST{nok: Bool{}}},
-				{K: text.Scalar, T: ST{nok: Bool{}}},
-				{K: text.Scalar, T: ST{nok: Bool{}}},
-				{K: text.Scalar, T: ST{nok: Bool{}}},
-				{K: text.Scalar, T: ST{nok: Bool{}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			in: `foo: true[bar] false`,
-			want: []R{
-				{K: text.Name},
-				{K: text.Scalar, T: ST{ok: Bool{true}}},
-				{K: text.Name},
-				{K: text.Scalar, T: ST{ok: Bool{false}}},
-			},
-		},
-
-		// Enum field values.
-		{
-			in: space + `name: ENUM`,
-			want: []R{
-				{K: text.Name},
-				{K: text.Scalar, T: ST{ok: Enum{"ENUM"}}},
-			},
-		},
-		{
-			in: space + `name:[TRUE, FALSE, T, F, t, f]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Enum{"TRUE"}}},
-				{K: text.Scalar, T: ST{ok: Enum{"FALSE"}}},
-				{K: text.Scalar, T: ST{ok: Enum{"T"}}},
-				{K: text.Scalar, T: ST{ok: Enum{"F"}}},
-				{K: text.Scalar, T: ST{ok: Enum{"t"}}},
-				{K: text.Scalar, T: ST{ok: Enum{"f"}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			in: `foo: Enum1[bar]:Enum2`,
-			want: []R{
-				{K: text.Name},
-				{K: text.Scalar, T: ST{ok: Enum{"Enum1"}}},
-				{K: text.Name},
-				{K: text.Scalar, T: ST{ok: Enum{"Enum2"}}},
-			},
-		},
-		{
-			// Invalid enum values.
-			in: `name: [-inf, -foo, "string", 42, 1.0, 0x47]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{nok: Enum{}}},
-				{K: text.Scalar, T: ST{nok: Enum{}}},
-				{K: text.Scalar, T: ST{nok: Enum{}}},
-				{K: text.Scalar, T: ST{nok: Enum{}}},
-				{K: text.Scalar, T: ST{nok: Enum{}}},
-				{K: text.Scalar, T: ST{nok: Enum{}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			in: `name: true.`,
-			want: []R{
-				{K: text.Name},
-				{E: `invalid scalar value: true.`},
-			},
-		},
-
-		// Numeric values.
-		{
-			in: `nums:42 nums:0x2A nums:052`,
-			want: []R{
-				{K: text.Name},
-				{K: text.Scalar, T: ST{ok: Uint64{42}}},
-				{K: text.Name},
-				{K: text.Scalar, T: ST{ok: Uint64{42}}},
-				{K: text.Name},
-				{K: text.Scalar, T: ST{ok: Uint64{42}}},
-			},
-		},
-		{
-			in: `nums:[-42, -0x2a, -052]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{nok: Uint64{}}},
-				{K: text.Scalar, T: ST{nok: Uint64{}}},
-				{K: text.Scalar, T: ST{nok: Uint64{}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			in: `nums:[-42, -0x2a, -052]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Int64{-42}}},
-				{K: text.Scalar, T: ST{ok: Int64{-42}}},
-				{K: text.Scalar, T: ST{ok: Int64{-42}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			in: `nums: [0,0x0,00,-9876543210,9876543210,0x0123456789abcdef,-0x0123456789abcdef,01234567,-01234567]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Uint64{0}}},
-				{K: text.Scalar, T: ST{ok: Int64{0}}},
-				{K: text.Scalar, T: ST{ok: Uint64{0}}},
-				{K: text.Scalar, T: ST{ok: Int64{-9876543210}}},
-				{K: text.Scalar, T: ST{ok: Uint64{9876543210}}},
-				{K: text.Scalar, T: ST{ok: Uint64{0x0123456789abcdef}}},
-				{K: text.Scalar, T: ST{ok: Int64{-0x0123456789abcdef}}},
-				{K: text.Scalar, T: ST{ok: Uint64{01234567}}},
-				{K: text.Scalar, T: ST{ok: Int64{-01234567}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			in: `nums: [0,0x0,00,-876543210,876543210,0x01234,-0x01234,01234567,-01234567]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Uint32{0}}},
-				{K: text.Scalar, T: ST{ok: Int32{0}}},
-				{K: text.Scalar, T: ST{ok: Uint32{0}}},
-				{K: text.Scalar, T: ST{ok: Int32{-876543210}}},
-				{K: text.Scalar, T: ST{ok: Uint32{876543210}}},
-				{K: text.Scalar, T: ST{ok: Uint32{0x01234}}},
-				{K: text.Scalar, T: ST{ok: Int32{-0x01234}}},
-				{K: text.Scalar, T: ST{ok: Uint32{01234567}}},
-				{K: text.Scalar, T: ST{ok: Int32{-01234567}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			in: `nums: [` +
-				fmt.Sprintf("%d", uint64(math.MaxUint64)) + `,` +
-				fmt.Sprintf("%d", uint32(math.MaxUint32)) + `,` +
-				fmt.Sprintf("%d", int64(math.MaxInt64)) + `,` +
-				fmt.Sprintf("%d", int64(math.MinInt64)) + `,` +
-				fmt.Sprintf("%d", int32(math.MaxInt32)) + `,` +
-				fmt.Sprintf("%d", int32(math.MinInt32)) +
-				`]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Uint64{math.MaxUint64}}},
-				{K: text.Scalar, T: ST{ok: Uint32{math.MaxUint32}}},
-				{K: text.Scalar, T: ST{ok: Int64{math.MaxInt64}}},
-				{K: text.Scalar, T: ST{ok: Int64{math.MinInt64}}},
-				{K: text.Scalar, T: ST{ok: Int32{math.MaxInt32}}},
-				{K: text.Scalar, T: ST{ok: Int32{math.MinInt32}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			// Integer exceeds range.
-			in: `nums: [` +
-				`18446744073709551616,` + // max uint64 + 1
-				fmt.Sprintf("%d", uint64(math.MaxUint32+1)) + `,` +
-				fmt.Sprintf("%d", uint64(math.MaxInt64+1)) + `,` +
-				`-9223372036854775809,` + // min int64 - 1
-				fmt.Sprintf("%d", uint64(math.MaxInt32+1)) + `,` +
-				fmt.Sprintf("%d", int64(math.MinInt32-1)) + `` +
-				`]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{nok: Uint64{}}},
-				{K: text.Scalar, T: ST{nok: Uint32{}}},
-				{K: text.Scalar, T: ST{nok: Int64{}}},
-				{K: text.Scalar, T: ST{nok: Int64{}}},
-				{K: text.Scalar, T: ST{nok: Int32{}}},
-				{K: text.Scalar, T: ST{nok: Int32{}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			in: `nums: [0xbeefbeef, 0xbeefbeefbeefbeef]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{
-					K: text.Scalar,
-					T: func() ST {
-						if flags.ProtoLegacy {
-							return ST{ok: Int32{-1091584273}}
-						}
-						return ST{nok: Int32{}}
-					}(),
-				},
-				{
-					K: text.Scalar,
-					T: func() ST {
-						if flags.ProtoLegacy {
-							return ST{ok: Int64{-4688318750159552785}}
-						}
-						return ST{nok: Int64{}}
-					}(),
-				},
-				{K: text.ListClose},
-			},
-		},
-		{
-			in: `nums: [0.,0f,1f,10f,-0f,-1f,-10f,1.0,0.1e-3,1.5e+5,1e10,.0]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Float64{0.0}}},
-				{K: text.Scalar, T: ST{ok: Float64{0.0}}},
-				{K: text.Scalar, T: ST{ok: Float64{1.0}}},
-				{K: text.Scalar, T: ST{ok: Float64{10.0}}},
-				{K: text.Scalar, T: ST{ok: Float64{-0.0}}},
-				{K: text.Scalar, T: ST{ok: Float64{-1.0}}},
-				{K: text.Scalar, T: ST{ok: Float64{-10.0}}},
-				{K: text.Scalar, T: ST{ok: Float64{1.0}}},
-				{K: text.Scalar, T: ST{ok: Float64{0.1e-3}}},
-				{K: text.Scalar, T: ST{ok: Float64{1.5e+5}}},
-				{K: text.Scalar, T: ST{ok: Float64{1.0e+10}}},
-				{K: text.Scalar, T: ST{ok: Float64{0.0}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			in: `nums: [0.,0f,1f,10f,-0f,-1f,-10f,1.0,0.1e-3,1.5e+5,1e10,.0]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Float32{0.0}}},
-				{K: text.Scalar, T: ST{ok: Float32{0.0}}},
-				{K: text.Scalar, T: ST{ok: Float32{1.0}}},
-				{K: text.Scalar, T: ST{ok: Float32{10.0}}},
-				{K: text.Scalar, T: ST{ok: Float32{-0.0}}},
-				{K: text.Scalar, T: ST{ok: Float32{-1.0}}},
-				{K: text.Scalar, T: ST{ok: Float32{-10.0}}},
-				{K: text.Scalar, T: ST{ok: Float32{1.0}}},
-				{K: text.Scalar, T: ST{ok: Float32{0.1e-3}}},
-				{K: text.Scalar, T: ST{ok: Float32{1.5e+5}}},
-				{K: text.Scalar, T: ST{ok: Float32{1.0e+10}}},
-				{K: text.Scalar, T: ST{ok: Float32{0.0}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			in: `nums: [0.,1f,10F,1e1,1.10]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{nok: Int64{}}},
-				{K: text.Scalar, T: ST{nok: Int64{}}},
-				{K: text.Scalar, T: ST{nok: Int64{}}},
-				{K: text.Scalar, T: ST{nok: Int64{}}},
-				{K: text.Scalar, T: ST{nok: Int64{}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			in: `nums: [0.,1f,10F,1e1,1.10]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{nok: Int32{}}},
-				{K: text.Scalar, T: ST{nok: Int32{}}},
-				{K: text.Scalar, T: ST{nok: Int32{}}},
-				{K: text.Scalar, T: ST{nok: Int32{}}},
-				{K: text.Scalar, T: ST{nok: Int32{}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			in: `nums: [0.,1f,10F,1e1,1.10]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{nok: Uint64{}}},
-				{K: text.Scalar, T: ST{nok: Uint64{}}},
-				{K: text.Scalar, T: ST{nok: Uint64{}}},
-				{K: text.Scalar, T: ST{nok: Uint64{}}},
-				{K: text.Scalar, T: ST{nok: Uint64{}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			in: `nums: [0.,1f,10F,1e1,1.10]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{nok: Uint32{}}},
-				{K: text.Scalar, T: ST{nok: Uint32{}}},
-				{K: text.Scalar, T: ST{nok: Uint32{}}},
-				{K: text.Scalar, T: ST{nok: Uint32{}}},
-				{K: text.Scalar, T: ST{nok: Uint32{}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			in: `nums: [` +
-				fmt.Sprintf("%g", math.MaxFloat32) + `,` +
-				fmt.Sprintf("%g", -math.MaxFloat32) + `,` +
-				fmt.Sprintf("%g", math.MaxFloat32*2) + `,` +
-				fmt.Sprintf("%g", -math.MaxFloat32*2) + `,` +
-				`3.59539e+308,` + // math.MaxFloat64 * 2
-				`-3.59539e+308,` + // -math.MaxFloat64 * 2
-				fmt.Sprintf("%d000", uint64(math.MaxUint64)) +
-				`]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Float32{float32(math.MaxFloat32)}}},
-				{K: text.Scalar, T: ST{ok: Float32{float32(-math.MaxFloat32)}}},
-				{K: text.Scalar, T: ST{ok: Float32{float32(math.Inf(1))}}},
-				{K: text.Scalar, T: ST{ok: Float32{float32(math.Inf(-1))}}},
-				{K: text.Scalar, T: ST{ok: Float32{float32(math.Inf(1))}}},
-				{K: text.Scalar, T: ST{ok: Float32{float32(math.Inf(-1))}}},
-				{K: text.Scalar, T: ST{ok: Float32{float32(math.MaxUint64) * 1000}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			in: `nums: [` +
-				fmt.Sprintf("%g", math.MaxFloat64) + `,` +
-				fmt.Sprintf("%g", -math.MaxFloat64) + `,` +
-				`3.59539e+308,` + // math.MaxFloat64 * 2
-				`-3.59539e+308,` + // -math.MaxFloat64 * 2
-				fmt.Sprintf("%d000", uint64(math.MaxUint64)) +
-				`]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Float64{math.MaxFloat64}}},
-				{K: text.Scalar, T: ST{ok: Float64{-math.MaxFloat64}}},
-				{K: text.Scalar, T: ST{ok: Float64{math.Inf(1)}}},
-				{K: text.Scalar, T: ST{ok: Float64{math.Inf(-1)}}},
-				{K: text.Scalar, T: ST{ok: Float64{float64(math.MaxUint64) * 1000}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			// -0 is only valid for signed types. It is not valid for unsigned types.
-			in: `num: [-0, -0]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{nok: Uint32{}}},
-				{K: text.Scalar, T: ST{nok: Uint64{}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			// -0 is only valid for signed types. It is not valid for unsigned types.
-			in: `num: [-0, -0]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Int32{0}}},
-				{K: text.Scalar, T: ST{ok: Int64{0}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			// Negative zeros on float64 should preserve sign bit.
-			in: `num: [-0, -.0]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Float64{math.Copysign(0, -1)}}},
-				{K: text.Scalar, T: ST{ok: Float64{math.Copysign(0, -1)}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			// Negative zeros on float32 should preserve sign bit.
-			in: `num: [-0, -.0]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Float32{float32(math.Copysign(0, -1))}}},
-				{K: text.Scalar, T: ST{ok: Float32{float32(math.Copysign(0, -1))}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			in: `num: +0`,
-			want: []R{
-				{K: text.Name},
-				{E: `invalid scalar value: +`},
-			},
-		},
-		{
-			in: `num: 01.1234`,
-			want: []R{
-				{K: text.Name},
-				{E: `invalid scalar value: 01.1234`},
-			},
-		},
-		{
-			in: `num: 0x`,
-			want: []R{
-				{K: text.Name},
-				{E: `invalid scalar value: 0x`},
-			},
-		},
-		{
-			in: `num: 0xX`,
-			want: []R{
-				{K: text.Name},
-				{E: `invalid scalar value: 0xX`},
-			},
-		},
-		{
-			in: `num: 0800`,
-			want: []R{
-				{K: text.Name},
-				{E: `invalid scalar value: 0800`},
-			},
-		},
-		{
-			in: `num: 1.`,
-			want: []R{
-				{K: text.Name},
-				{K: text.Scalar, T: ST{ok: Float32{1.0}}},
-			},
-		},
-		{
-			in: `num: -.`,
-			want: []R{
-				{K: text.Name},
-				{E: `invalid scalar value: -.`},
-			},
-		},
-
-		// Float special literal values, case-insensitive match.
-		{
-			in: `name:[nan, NaN, Nan, NAN]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Float64{math.NaN()}}},
-				{K: text.Scalar, T: ST{ok: Float64{math.NaN()}}},
-				{K: text.Scalar, T: ST{ok: Float64{math.NaN()}}},
-				{K: text.Scalar, T: ST{ok: Float64{math.NaN()}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			in: `name:[inf, INF, infinity, Infinity, INFinity]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Float64{math.Inf(1)}}},
-				{K: text.Scalar, T: ST{ok: Float64{math.Inf(1)}}},
-				{K: text.Scalar, T: ST{ok: Float64{math.Inf(1)}}},
-				{K: text.Scalar, T: ST{ok: Float64{math.Inf(1)}}},
-				{K: text.Scalar, T: ST{ok: Float64{math.Inf(1)}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			in: `name:[-inf, -INF, -infinity, -Infinity, -INFinity]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Float64{math.Inf(-1)}}},
-				{K: text.Scalar, T: ST{ok: Float64{math.Inf(-1)}}},
-				{K: text.Scalar, T: ST{ok: Float64{math.Inf(-1)}}},
-				{K: text.Scalar, T: ST{ok: Float64{math.Inf(-1)}}},
-				{K: text.Scalar, T: ST{ok: Float64{math.Inf(-1)}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			in: `name:[nan, NaN, Nan, NAN]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Float32{float32(math.NaN())}}},
-				{K: text.Scalar, T: ST{ok: Float32{float32(math.NaN())}}},
-				{K: text.Scalar, T: ST{ok: Float32{float32(math.NaN())}}},
-				{K: text.Scalar, T: ST{ok: Float32{float32(math.NaN())}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			in: `name:[inf, INF, infinity, Infinity, INFinity]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Float32{float32(math.Inf(1))}}},
-				{K: text.Scalar, T: ST{ok: Float32{float32(math.Inf(1))}}},
-				{K: text.Scalar, T: ST{ok: Float32{float32(math.Inf(1))}}},
-				{K: text.Scalar, T: ST{ok: Float32{float32(math.Inf(1))}}},
-				{K: text.Scalar, T: ST{ok: Float32{float32(math.Inf(1))}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			in: `name:[-inf, -INF, -infinity, -Infinity, -INFinity]`,
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Float32{float32(math.Inf(-1))}}},
-				{K: text.Scalar, T: ST{ok: Float32{float32(math.Inf(-1))}}},
-				{K: text.Scalar, T: ST{ok: Float32{float32(math.Inf(-1))}}},
-				{K: text.Scalar, T: ST{ok: Float32{float32(math.Inf(-1))}}},
-				{K: text.Scalar, T: ST{ok: Float32{float32(math.Inf(-1))}}},
-				{K: text.ListClose},
-			},
-		},
-		{
-			// C++ permits this, but we currently reject this. It is easy to add
-			// if needed.
-			in: `name: -nan`,
-			want: []R{
-				{K: text.Name},
-				{K: text.Scalar, T: ST{nok: Float64{}}},
-			},
-		},
-		// Messages.
-		{
-			in: `m: {}`,
-			want: []R{
-				{K: text.Name},
-				{K: text.MessageOpen},
-				{K: text.MessageClose},
-				{K: text.EOF},
-			},
-		},
-		{
-			in: `m: <>`,
-			want: []R{
-				{K: text.Name},
-				{K: text.MessageOpen},
-				{K: text.MessageClose},
-				{K: text.EOF},
-			},
-		},
-		{
-			in: space + `m {` + space + "\n# comment\n" + `}` + space,
-			want: []R{
-				{K: text.Name},
-				{K: text.MessageOpen},
-				{K: text.MessageClose},
-			},
-		},
-		{
-			in: `m { foo: < bar: "hello" > }`,
-			want: []R{
-				{K: text.Name, RS: "m"},
-				{K: text.MessageOpen},
-
-				{K: text.Name, RS: "foo"},
-				{K: text.MessageOpen},
-
-				{K: text.Name, RS: "bar"},
-				{K: text.Scalar, T: ST{ok: Str{"hello"}}},
-
-				{K: text.MessageClose},
-
-				{K: text.MessageClose},
-			},
-		},
-		{
-			in: `list [ <s:"hello">, {s:"world"} ]`,
-			want: []R{
-				{K: text.Name, RS: "list"},
-				{K: text.ListOpen},
-
-				{K: text.MessageOpen},
-				{K: text.Name, RS: "s"},
-				{K: text.Scalar, T: ST{ok: Str{"hello"}}},
-				{K: text.MessageClose},
-
-				{K: text.MessageOpen},
-				{K: text.Name, RS: "s"},
-				{K: text.Scalar, T: ST{ok: Str{"world"}}},
-				{K: text.MessageClose},
-
-				{K: text.ListClose},
-				{K: text.EOF},
-			},
-		},
-		{
-			in: `m: { >`,
-			want: []R{
-				{K: text.Name},
-				{K: text.MessageOpen},
-				{E: `mismatched close character '>'`},
-			},
-		},
-		{
-			in: `m: <s: "hello"}`,
-			want: []R{
-				{K: text.Name},
-				{K: text.MessageOpen},
-
-				{K: text.Name},
-				{K: text.Scalar, T: ST{ok: Str{"hello"}}},
-
-				{E: `mismatched close character '}'`},
-			},
-		},
-		{
-			in:   `{}`,
-			want: []R{{E: `invalid field name: {`}},
-		},
-		{
-			in: `
-m: {
-  foo: true;
-  bar: {
-	enum: ENUM
-	list: [ < >, { } ] ;
-  }
-  [qux]: "end"
-}
-				`,
-			want: []R{
-				{K: text.Name},
-				{K: text.MessageOpen},
-
-				{K: text.Name, RS: "foo"},
-				{K: text.Scalar, T: ST{ok: Bool{true}}},
-
-				{K: text.Name, RS: "bar"},
-				{K: text.MessageOpen},
-
-				{K: text.Name, RS: "enum"},
-				{K: text.Scalar, T: ST{ok: Enum{"ENUM"}}},
-
-				{K: text.Name, RS: "list"},
-				{K: text.ListOpen},
-				{K: text.MessageOpen},
-				{K: text.MessageClose},
-				{K: text.MessageOpen},
-				{K: text.MessageClose},
-				{K: text.ListClose},
-
-				{K: text.MessageClose},
-
-				{K: text.Name, RS: "[qux]"},
-				{K: text.Scalar, T: ST{ok: Str{"end"}}},
-
-				{K: text.MessageClose},
-				{K: text.EOF},
-			},
-		},
-
-		// Other syntax errors.
-		{
-			in: "x: -",
-			want: []R{
-				{K: text.Name},
-				{E: `syntax error (line 1:4): invalid scalar value: -`},
-			},
-		},
-		{
-			in: "x:[\"💩\"x",
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Str{"💩"}}, P: 3},
-				{E: `syntax error (line 1:7)`},
-			},
-		},
-		{
-			in: "x:\n\n[\"🔥🔥🔥\"x",
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Str{"🔥🔥🔥"}}, P: 5},
-				{E: `syntax error (line 3:7)`},
-			},
-		},
-		{
-			// multi-rune emojis; could be column:8
-			in: "x:[\"👍🏻👍🏿\"x",
-			want: []R{
-				{K: text.Name},
-				{K: text.ListOpen},
-				{K: text.Scalar, T: ST{ok: Str{"👍🏻👍🏿"}}, P: 3},
-				{E: `syntax error (line 1:10)`},
-			},
-		},
-	}
-
-	for _, tc := range tests {
-		t.Run("", func(t *testing.T) {
-			tc := tc
-			in := []byte(tc.in)
-			dec := text.NewDecoder(in[:len(in):len(in)])
-			for i, want := range tc.want {
-				peekTok, peekErr := dec.Peek()
-				tok, err := dec.Read()
-				if err != nil {
-					if want.E == "" {
-						errorf(t, tc.in, "Read() got unexpected error: %v", err)
-					} else if !strings.Contains(err.Error(), want.E) {
-						errorf(t, tc.in, "Read() got %q, want %q", err, want.E)
-					}
-					return
-				}
-				if want.E != "" {
-					errorf(t, tc.in, "Read() got nil error, want %q", want.E)
-					return
-				}
-				gotK := tok.Kind()
-				if gotK != want.K {
-					errorf(t, tc.in, "Read() got %v, want %v", gotK, want.K)
-					return
-				}
-				checkToken(t, tok, i, want, tc.in)
-				if !cmp.Equal(tok, peekTok, cmp.Comparer(text.TokenEquals)) {
-					errorf(t, tc.in, "Peek() %+v != Read() token %+v", peekTok, tok)
-				}
-				if err != peekErr {
-					errorf(t, tc.in, "Peek() error %v != Read() error %v", err, peekErr)
-				}
-			}
-		})
-	}
-}
-
-func checkToken(t *testing.T, tok text.Token, idx int, r R, in string) {
-	// Validate Token.Pos() if R.P is set.
-	if r.P > 0 {
-		got := tok.Pos()
-		if got != r.P {
-			errorf(t, in, "want#%d: Token.Pos() got %v want %v", idx, got, r.P)
-		}
-	}
-
-	// Validate Token.RawString if R.RS is set.
-	if len(r.RS) > 0 {
-		got := tok.RawString()
-		if got != r.RS {
-			errorf(t, in, "want#%d: Token.RawString() got %v want %v", idx, got, r.P)
-		}
-	}
-
-	// Skip checking for Token details if r.T is not set.
-	if r.T == nil {
-		return
-	}
-
-	switch tok.Kind() {
-	case text.Name:
-		want := r.T.(NT)
-		kind := tok.NameKind()
-		if kind != want.K {
-			errorf(t, in, "want#%d: Token.NameKind() got %v want %v", idx, kind, want.K)
-			return
-		}
-		switch kind {
-		case text.IdentName:
-			got := tok.IdentName()
-			if got != want.S {
-				errorf(t, in, "want#%d: Token.IdentName() got %v want %v", idx, got, want.S)
-			}
-		case text.TypeName:
-			got := tok.TypeName()
-			if got != want.S {
-				errorf(t, in, "want#%d: Token.TypeName() got %v want %v", idx, got, want.S)
-			}
-		case text.FieldNumber:
-			got := tok.FieldNumber()
-			if got != want.N {
-				errorf(t, in, "want#%d: Token.FieldNumber() got %v want %v", idx, got, want.N)
-			}
-		}
-
-	case text.Scalar:
-		want := r.T.(ST)
-		if ok := want.ok; ok != nil {
-			if err := ok.checkOk(tok); err != "" {
-				errorf(t, in, "want#%d: %s", idx, err)
-			}
-		}
-		if nok := want.nok; nok != nil {
-			if err := nok.checkNok(tok); err != "" {
-				errorf(t, in, "want#%d: %s", idx, err)
-			}
-		}
-	}
-}
-
-func errorf(t *testing.T, in string, fmtStr string, args ...interface{}) {
-	t.Helper()
-	vargs := []interface{}{in}
-	for _, arg := range args {
-		vargs = append(vargs, arg)
-	}
-	t.Errorf("input:\n%s\n~end~\n"+fmtStr, vargs...)
-}
-
-func TestUnmarshalString(t *testing.T) {
-	tests := []struct {
-		in string
-		// want is expected string result.
-		want string
-		// err is expected error substring from calling DecodeString if set.
-		err string
-	}{
-		{
-			in: func() string {
-				var b []byte
-				for i := 0; i < utf8.RuneSelf; i++ {
-					switch i {
-					case 0, '\\', '\n', '\'': // these must be escaped, so ignore them
-					default:
-						b = append(b, byte(i))
-					}
-				}
-				return "'" + string(b) + "'"
-			}(),
-			want: "\x01\x02\x03\x04\x05\x06\a\b\t\v\f\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007f",
-		},
-		{
-			in:  "'\xde\xad\xbe\xef'",
-			err: `invalid UTF-8 detected`,
-		},
-		{
-			// Valid UTF-8 wire encoding, but sub-optimal encoding.
-			in:  "'\xc0\x80'",
-			err: "invalid UTF-8 detected",
-		},
-		{
-			// Valid UTF-8 wire encoding, but invalid rune (surrogate pair).
-			in:  "'\xed\xa0\x80'",
-			err: "invalid UTF-8 detected",
-		},
-		{
-			// Valid UTF-8 wire encoding, but invalid rune (above max rune).
-			in:  "'\xf7\xbf\xbf\xbf'",
-			err: "invalid UTF-8 detected",
-		},
-		{
-			// Valid UTF-8 wire encoding of the RuneError rune.
-			in:   "'\xef\xbf\xbd'",
-			want: string(utf8.RuneError),
-		},
-		{
-			in:   "'hello\u1234world'",
-			want: "hello\u1234world",
-		},
-		{
-			in:   `'\"\'\\\?\a\b\n\r\t\v\f\1\12\123\xA\xaB\x12\uAb8f\U0010FFFF'`,
-			want: "\"'\\?\a\b\n\r\t\v\f\x01\nS\n\xab\x12\uab8f\U0010ffff",
-		},
-		{
-			in:  `str: '\8'`,
-			err: `invalid escape code "\\8" in string`,
-		},
-		{
-			in:   `'\1x'`,
-			want: "\001x",
-		},
-		{
-			in:   `'\12x'`,
-			want: "\012x",
-		},
-		{
-			in:   `'\123x'`,
-			want: "\123x",
-		},
-		{
-			in:   `'\1234x'`,
-			want: "\1234x",
-		},
-		{
-			in:   `'\1'`,
-			want: "\001",
-		},
-		{
-			in:   `'\12'`,
-			want: "\012",
-		},
-		{
-			in:   `'\123'`,
-			want: "\123",
-		},
-		{
-			in:   `'\1234'`,
-			want: "\1234",
-		},
-		{
-			in:   `'\377'`,
-			want: "\377",
-		},
-		{
-			// Overflow octal escape.
-			in:  `'\400'`,
-			err: `invalid octal escape code "\\400" in string`,
-		},
-		{
-			in:   `'\xfx'`,
-			want: "\x0fx",
-		},
-		{
-			in:   `'\xffx'`,
-			want: "\xffx",
-		},
-		{
-			in:   `'\xfffx'`,
-			want: "\xfffx",
-		},
-		{
-			in:   `'\xf'`,
-			want: "\x0f",
-		},
-		{
-			in:   `'\xff'`,
-			want: "\xff",
-		},
-		{
-			in:   `'\xfff'`,
-			want: "\xfff",
-		},
-		{
-			in:  `'\xz'`,
-			err: `invalid hex escape code "\\x" in string`,
-		},
-		{
-			in:  `'\uPo'`,
-			err: eofErr,
-		},
-		{
-			in:  `'\uPoo'`,
-			err: `invalid Unicode escape code "\\uPoo'" in string`,
-		},
-		{
-			in:  `str: '\uPoop'`,
-			err: `invalid Unicode escape code "\\uPoop" in string`,
-		},
-		{
-			// Unmatched surrogate pair.
-			in:  `str: '\uDEAD'`,
-			err: `unexpected EOF`, // trying to reader other half
-		},
-		{
-			// Surrogate pair with invalid other half.
-			in:  `str: '\uDEAD\u0000'`,
-			err: `invalid Unicode escape code "\\u0000" in string`,
-		},
-		{
-			// Properly matched surrogate pair.
-			in:   `'\uD800\uDEAD'`,
-			want: "𐊭",
-		},
-		{
-			// Overflow on Unicode rune.
-			in:  `'\U00110000'`,
-			err: `invalid Unicode escape code "\\U00110000" in string`,
-		},
-		{
-			in:  `'\z'`,
-			err: `invalid escape code "\\z" in string`,
-		},
-		{
-			// Strings cannot have NUL literal since C-style strings forbid them.
-			in:  "'\x00'",
-			err: `invalid character '\x00' in string`,
-		},
-		{
-			// Strings cannot have newline literal. The C++ permits them if an
-			// option is specified to allow them. In Go, we always forbid them.
-			in:  "'\n'",
-			err: `invalid character '\n' in string`,
-		},
-	}
-
-	for _, tc := range tests {
-		t.Run("", func(t *testing.T) {
-			got, err := text.UnmarshalString(tc.in)
-			if err != nil {
-				if tc.err == "" {
-					errorf(t, tc.in, "UnmarshalString() got unexpected error: %q", err)
-				} else if !strings.Contains(err.Error(), tc.err) {
-					errorf(t, tc.in, "UnmarshalString() error got %q, want %q", err, tc.err)
-				}
-				return
-			}
-			if tc.err != "" {
-				errorf(t, tc.in, "UnmarshalString() got nil error, want %q", tc.err)
-				return
-			}
-			if got != tc.want {
-				errorf(t, tc.in, "UnmarshalString()\n[got]\n%s\n[want]\n%s", got, tc.want)
-			}
-		})
-	}
-}
-
-// Tests line and column number produced by Decoder.Position.
-func TestPosition(t *testing.T) {
-	dec := text.NewDecoder([]byte("0123456789\n12345\n789"))
-
-	tests := []struct {
-		pos int
-		row int
-		col int
-	}{
-		{
-			pos: 0,
-			row: 1,
-			col: 1,
-		},
-		{
-			pos: 10,
-			row: 1,
-			col: 11,
-		},
-		{
-			pos: 11,
-			row: 2,
-			col: 1,
-		},
-		{
-			pos: 18,
-			row: 3,
-			col: 2,
-		},
-	}
-
-	for _, tc := range tests {
-		t.Run("", func(t *testing.T) {
-			row, col := dec.Position(tc.pos)
-			if row != tc.row || col != tc.col {
-				t.Errorf("Position(%d) got (%d,%d) want (%d,%d)", tc.pos, row, col, tc.row, tc.col)
-			}
-		})
-	}
-}
diff --git a/internal/encoding/text/decode_token.go b/internal/encoding/text/decode_token.go
deleted file mode 100644
index 83d2b0d..0000000
--- a/internal/encoding/text/decode_token.go
+++ /dev/null
@@ -1,373 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package text
-
-import (
-	"bytes"
-	"fmt"
-	"math"
-	"strconv"
-	"strings"
-
-	"google.golang.org/protobuf/internal/flags"
-)
-
-// Kind represents a token kind expressible in the textproto format.
-type Kind uint8
-
-// Kind values.
-const (
-	Invalid Kind = iota
-	EOF
-	Name   // Name indicates the field name.
-	Scalar // Scalar are scalar values, e.g. "string", 47, ENUM_LITERAL, true.
-	MessageOpen
-	MessageClose
-	ListOpen
-	ListClose
-
-	// comma and semi-colon are only for parsing in between values and should not be exposed.
-	comma
-	semicolon
-
-	// bof indicates beginning of file, which is the default token
-	// kind at the beginning of parsing.
-	bof = Invalid
-)
-
-func (t Kind) String() string {
-	switch t {
-	case Invalid:
-		return "<invalid>"
-	case EOF:
-		return "eof"
-	case Scalar:
-		return "scalar"
-	case Name:
-		return "name"
-	case MessageOpen:
-		return "{"
-	case MessageClose:
-		return "}"
-	case ListOpen:
-		return "["
-	case ListClose:
-		return "]"
-	case comma:
-		return ","
-	case semicolon:
-		return ";"
-	default:
-		return fmt.Sprintf("<invalid:%v>", uint8(t))
-	}
-}
-
-// NameKind represents different types of field names.
-type NameKind uint8
-
-// NameKind values.
-const (
-	IdentName NameKind = iota + 1
-	TypeName
-	FieldNumber
-)
-
-func (t NameKind) String() string {
-	switch t {
-	case IdentName:
-		return "IdentName"
-	case TypeName:
-		return "TypeName"
-	case FieldNumber:
-		return "FieldNumber"
-	default:
-		return fmt.Sprintf("<invalid:%v>", uint8(t))
-	}
-}
-
-// Bit mask in Token.attrs to indicate if a Name token is followed by the
-// separator char ':'. The field name separator char is optional for message
-// field or repeated message field, but required for all other types. Decoder
-// simply indicates whether a Name token is followed by separator or not.  It is
-// up to the prototext package to validate.
-const hasSeparator = 1 << 7
-
-// Scalar value types.
-const (
-	numberValue = iota + 1
-	stringValue
-	literalValue
-)
-
-// Bit mask in Token.numAttrs to indicate that the number is a negative.
-const isNegative = 1 << 7
-
-// Token provides a parsed token kind and value. Values are provided by the
-// different accessor methods.
-type Token struct {
-	// Kind of the Token object.
-	kind Kind
-	// attrs contains metadata for the following Kinds:
-	// Name: hasSeparator bit and one of NameKind.
-	// Scalar: one of numberValue, stringValue, literalValue.
-	attrs uint8
-	// numAttrs contains metadata for numberValue:
-	// - highest bit is whether negative or positive.
-	// - lower bits indicate one of numDec, numHex, numOct, numFloat.
-	numAttrs uint8
-	// pos provides the position of the token in the original input.
-	pos int
-	// raw bytes of the serialized token.
-	// This is a subslice into the original input.
-	raw []byte
-	// str contains parsed string for the following:
-	// - stringValue of Scalar kind
-	// - numberValue of Scalar kind
-	// - TypeName of Name kind
-	str string
-}
-
-// Kind returns the token kind.
-func (t Token) Kind() Kind {
-	return t.kind
-}
-
-// RawString returns the read value in string.
-func (t Token) RawString() string {
-	return string(t.raw)
-}
-
-// Pos returns the token position from the input.
-func (t Token) Pos() int {
-	return t.pos
-}
-
-// NameKind returns IdentName, TypeName or FieldNumber.
-// It panics if type is not Name.
-func (t Token) NameKind() NameKind {
-	if t.kind == Name {
-		return NameKind(t.attrs &^ hasSeparator)
-	}
-	panic(fmt.Sprintf("Token is not a Name type: %s", t.kind))
-}
-
-// HasSeparator returns true if the field name is followed by the separator char
-// ':', else false. It panics if type is not Name.
-func (t Token) HasSeparator() bool {
-	if t.kind == Name {
-		return t.attrs&hasSeparator != 0
-	}
-	panic(fmt.Sprintf("Token is not a Name type: %s", t.kind))
-}
-
-// IdentName returns the value for IdentName type.
-func (t Token) IdentName() string {
-	if t.kind == Name && t.attrs&uint8(IdentName) != 0 {
-		return string(t.raw)
-	}
-	panic(fmt.Sprintf("Token is not an IdentName: %s:%s", t.kind, NameKind(t.attrs&^hasSeparator)))
-}
-
-// TypeName returns the value for TypeName type.
-func (t Token) TypeName() string {
-	if t.kind == Name && t.attrs&uint8(TypeName) != 0 {
-		return t.str
-	}
-	panic(fmt.Sprintf("Token is not a TypeName: %s:%s", t.kind, NameKind(t.attrs&^hasSeparator)))
-}
-
-// FieldNumber returns the value for FieldNumber type. It returns a
-// non-negative int32 value. Caller will still need to validate for the correct
-// field number range.
-func (t Token) FieldNumber() int32 {
-	if t.kind != Name || t.attrs&uint8(FieldNumber) == 0 {
-		panic(fmt.Sprintf("Token is not a FieldNumber: %s:%s", t.kind, NameKind(t.attrs&^hasSeparator)))
-	}
-	// Following should not return an error as it had already been called right
-	// before this Token was constructed.
-	num, _ := strconv.ParseInt(string(t.raw), 10, 32)
-	return int32(num)
-}
-
-// String returns the string value for a Scalar type.
-func (t Token) String() (string, bool) {
-	if t.kind != Scalar || t.attrs != stringValue {
-		return "", false
-	}
-	return t.str, true
-}
-
-// Enum returns the literal value for a Scalar type for use as enum literals.
-func (t Token) Enum() (string, bool) {
-	if t.kind != Scalar || t.attrs != literalValue || (len(t.raw) > 0 && t.raw[0] == '-') {
-		return "", false
-	}
-	return string(t.raw), true
-}
-
-// Bool returns the bool value for a Scalar type.
-func (t Token) Bool() (bool, bool) {
-	if t.kind != Scalar {
-		return false, false
-	}
-	switch t.attrs {
-	case literalValue:
-		if b, ok := boolLits[string(t.raw)]; ok {
-			return b, true
-		}
-	case numberValue:
-		// Unsigned integer representation of 0 or 1 is permitted: 00, 0x0, 01,
-		// 0x1, etc.
-		n, err := strconv.ParseUint(t.str, 0, 64)
-		if err == nil {
-			switch n {
-			case 0:
-				return false, true
-			case 1:
-				return true, true
-			}
-		}
-	}
-	return false, false
-}
-
-// These exact boolean literals are the ones supported in C++.
-var boolLits = map[string]bool{
-	"t":     true,
-	"true":  true,
-	"True":  true,
-	"f":     false,
-	"false": false,
-	"False": false,
-}
-
-// Uint64 returns the uint64 value for a Scalar type.
-func (t Token) Uint64() (uint64, bool) {
-	if t.kind != Scalar || t.attrs != numberValue ||
-		t.numAttrs&isNegative > 0 || t.numAttrs&numFloat > 0 {
-		return 0, false
-	}
-	n, err := strconv.ParseUint(t.str, 0, 64)
-	if err != nil {
-		return 0, false
-	}
-	return n, true
-}
-
-// Uint32 returns the uint32 value for a Scalar type.
-func (t Token) Uint32() (uint32, bool) {
-	if t.kind != Scalar || t.attrs != numberValue ||
-		t.numAttrs&isNegative > 0 || t.numAttrs&numFloat > 0 {
-		return 0, false
-	}
-	n, err := strconv.ParseUint(t.str, 0, 32)
-	if err != nil {
-		return 0, false
-	}
-	return uint32(n), true
-}
-
-// Int64 returns the int64 value for a Scalar type.
-func (t Token) Int64() (int64, bool) {
-	if t.kind != Scalar || t.attrs != numberValue || t.numAttrs&numFloat > 0 {
-		return 0, false
-	}
-	if n, err := strconv.ParseInt(t.str, 0, 64); err == nil {
-		return n, true
-	}
-	// C++ accepts large positive hex numbers as negative values.
-	// This feature is here for proto1 backwards compatibility purposes.
-	if flags.ProtoLegacy && (t.numAttrs == numHex) {
-		if n, err := strconv.ParseUint(t.str, 0, 64); err == nil {
-			return int64(n), true
-		}
-	}
-	return 0, false
-}
-
-// Int32 returns the int32 value for a Scalar type.
-func (t Token) Int32() (int32, bool) {
-	if t.kind != Scalar || t.attrs != numberValue || t.numAttrs&numFloat > 0 {
-		return 0, false
-	}
-	if n, err := strconv.ParseInt(t.str, 0, 32); err == nil {
-		return int32(n), true
-	}
-	// C++ accepts large positive hex numbers as negative values.
-	// This feature is here for proto1 backwards compatibility purposes.
-	if flags.ProtoLegacy && (t.numAttrs == numHex) {
-		if n, err := strconv.ParseUint(t.str, 0, 32); err == nil {
-			return int32(n), true
-		}
-	}
-	return 0, false
-}
-
-// Float64 returns the float64 value for a Scalar type.
-func (t Token) Float64() (float64, bool) {
-	if t.kind != Scalar {
-		return 0, false
-	}
-	switch t.attrs {
-	case literalValue:
-		if f, ok := floatLits[strings.ToLower(string(t.raw))]; ok {
-			return f, true
-		}
-	case numberValue:
-		n, err := strconv.ParseFloat(t.str, 64)
-		if err == nil {
-			return n, true
-		}
-		nerr := err.(*strconv.NumError)
-		if nerr.Err == strconv.ErrRange {
-			return n, true
-		}
-	}
-	return 0, false
-}
-
-// Float32 returns the float32 value for a Scalar type.
-func (t Token) Float32() (float32, bool) {
-	if t.kind != Scalar {
-		return 0, false
-	}
-	switch t.attrs {
-	case literalValue:
-		if f, ok := floatLits[strings.ToLower(string(t.raw))]; ok {
-			return float32(f), true
-		}
-	case numberValue:
-		n, err := strconv.ParseFloat(t.str, 64)
-		if err == nil {
-			// Overflows are treated as (-)infinity.
-			return float32(n), true
-		}
-		nerr := err.(*strconv.NumError)
-		if nerr.Err == strconv.ErrRange {
-			return float32(n), true
-		}
-	}
-	return 0, false
-}
-
-// These are the supported float literals which C++ permits case-insensitive
-// variants of these.
-var floatLits = map[string]float64{
-	"nan":       math.NaN(),
-	"inf":       math.Inf(1),
-	"infinity":  math.Inf(1),
-	"-inf":      math.Inf(-1),
-	"-infinity": math.Inf(-1),
-}
-
-// TokenEquals returns true if given Tokens are equal, else false.
-func TokenEquals(x, y Token) bool {
-	return x.kind == y.kind &&
-		x.attrs == y.attrs &&
-		x.numAttrs == y.numAttrs &&
-		x.pos == y.pos &&
-		bytes.Equal(x.raw, y.raw) &&
-		x.str == y.str
-}
diff --git a/internal/encoding/text/doc.go b/internal/encoding/text/doc.go
deleted file mode 100644
index 0ce8d6f..0000000
--- a/internal/encoding/text/doc.go
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package text implements the text format for protocol buffers.
-// This package has no semantic understanding for protocol buffers and is only
-// a parser and composer for the format.
-//
-// There is no formal specification for the protobuf text format, as such the
-// C++ implementation (see google::protobuf::TextFormat) is the reference
-// implementation of the text format.
-//
-// This package is neither a superset nor a subset of the C++ implementation.
-// This implementation permits a more liberal grammar in some cases to be
-// backwards compatible with the historical Go implementation.
-// Future parsings unique to Go should not be added.
-// Some grammars allowed by the C++ implementation are deliberately
-// not implemented here because they are considered a bug by the protobuf team
-// and should not be replicated.
-//
-// The Go implementation should implement a sufficient amount of the C++
-// grammar such that the default text serialization by C++ can be parsed by Go.
-// However, just because the C++ parser accepts some input does not mean that
-// the Go implementation should as well.
-//
-// The text format is almost a superset of JSON except:
-//	* message keys are not quoted strings, but identifiers
-//	* the top-level value must be a message without the delimiters
-package text
diff --git a/internal/encoding/text/encode.go b/internal/encoding/text/encode.go
deleted file mode 100644
index da289cc..0000000
--- a/internal/encoding/text/encode.go
+++ /dev/null
@@ -1,270 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package text
-
-import (
-	"math"
-	"math/bits"
-	"strconv"
-	"strings"
-	"unicode/utf8"
-
-	"google.golang.org/protobuf/internal/detrand"
-	"google.golang.org/protobuf/internal/errors"
-)
-
-// encType represents an encoding type.
-type encType uint8
-
-const (
-	_ encType = (1 << iota) / 2
-	name
-	scalar
-	messageOpen
-	messageClose
-)
-
-// Encoder provides methods to write out textproto constructs and values. The user is
-// responsible for producing valid sequences of constructs and values.
-type Encoder struct {
-	encoderState
-
-	indent      string
-	delims      [2]byte
-	outputASCII bool
-}
-
-type encoderState struct {
-	lastType encType
-	indents  []byte
-	out      []byte
-}
-
-// NewEncoder returns an Encoder.
-//
-// If indent is a non-empty string, it causes every entry in a List or Message
-// to be preceded by the indent and trailed by a newline.
-//
-// If delims is not the zero value, it controls the delimiter characters used
-// for messages (e.g., "{}" vs "<>").
-//
-// If outputASCII is true, strings will be serialized in such a way that
-// multi-byte UTF-8 sequences are escaped. This property ensures that the
-// overall output is ASCII (as opposed to UTF-8).
-func NewEncoder(indent string, delims [2]byte, outputASCII bool) (*Encoder, error) {
-	e := &Encoder{}
-	if len(indent) > 0 {
-		if strings.Trim(indent, " \t") != "" {
-			return nil, errors.New("indent may only be composed of space and tab characters")
-		}
-		e.indent = indent
-	}
-	switch delims {
-	case [2]byte{0, 0}:
-		e.delims = [2]byte{'{', '}'}
-	case [2]byte{'{', '}'}, [2]byte{'<', '>'}:
-		e.delims = delims
-	default:
-		return nil, errors.New("delimiters may only be \"{}\" or \"<>\"")
-	}
-	e.outputASCII = outputASCII
-
-	return e, nil
-}
-
-// Bytes returns the content of the written bytes.
-func (e *Encoder) Bytes() []byte {
-	return e.out
-}
-
-// StartMessage writes out the '{' or '<' symbol.
-func (e *Encoder) StartMessage() {
-	e.prepareNext(messageOpen)
-	e.out = append(e.out, e.delims[0])
-}
-
-// EndMessage writes out the '}' or '>' symbol.
-func (e *Encoder) EndMessage() {
-	e.prepareNext(messageClose)
-	e.out = append(e.out, e.delims[1])
-}
-
-// WriteName writes out the field name and the separator ':'.
-func (e *Encoder) WriteName(s string) {
-	e.prepareNext(name)
-	e.out = append(e.out, s...)
-	e.out = append(e.out, ':')
-}
-
-// WriteBool writes out the given boolean value.
-func (e *Encoder) WriteBool(b bool) {
-	if b {
-		e.WriteLiteral("true")
-	} else {
-		e.WriteLiteral("false")
-	}
-}
-
-// WriteString writes out the given string value.
-func (e *Encoder) WriteString(s string) {
-	e.prepareNext(scalar)
-	e.out = appendString(e.out, s, e.outputASCII)
-}
-
-func appendString(out []byte, in string, outputASCII bool) []byte {
-	out = append(out, '"')
-	i := indexNeedEscapeInString(in)
-	in, out = in[i:], append(out, in[:i]...)
-	for len(in) > 0 {
-		switch r, n := utf8.DecodeRuneInString(in); {
-		case r == utf8.RuneError && n == 1:
-			// We do not report invalid UTF-8 because strings in the text format
-			// are used to represent both the proto string and bytes type.
-			r = rune(in[0])
-			fallthrough
-		case r < ' ' || r == '"' || r == '\\' || r == 0x7f:
-			out = append(out, '\\')
-			switch r {
-			case '"', '\\':
-				out = append(out, byte(r))
-			case '\n':
-				out = append(out, 'n')
-			case '\r':
-				out = append(out, 'r')
-			case '\t':
-				out = append(out, 't')
-			default:
-				out = append(out, 'x')
-				out = append(out, "00"[1+(bits.Len32(uint32(r))-1)/4:]...)
-				out = strconv.AppendUint(out, uint64(r), 16)
-			}
-			in = in[n:]
-		case r >= utf8.RuneSelf && (outputASCII || r <= 0x009f):
-			out = append(out, '\\')
-			if r <= math.MaxUint16 {
-				out = append(out, 'u')
-				out = append(out, "0000"[1+(bits.Len32(uint32(r))-1)/4:]...)
-				out = strconv.AppendUint(out, uint64(r), 16)
-			} else {
-				out = append(out, 'U')
-				out = append(out, "00000000"[1+(bits.Len32(uint32(r))-1)/4:]...)
-				out = strconv.AppendUint(out, uint64(r), 16)
-			}
-			in = in[n:]
-		default:
-			i := indexNeedEscapeInString(in[n:])
-			in, out = in[n+i:], append(out, in[:n+i]...)
-		}
-	}
-	out = append(out, '"')
-	return out
-}
-
-// indexNeedEscapeInString returns the index of the character that needs
-// escaping. If no characters need escaping, this returns the input length.
-func indexNeedEscapeInString(s string) int {
-	for i := 0; i < len(s); i++ {
-		if c := s[i]; c < ' ' || c == '"' || c == '\'' || c == '\\' || c >= 0x7f {
-			return i
-		}
-	}
-	return len(s)
-}
-
-// WriteFloat writes out the given float value for given bitSize.
-func (e *Encoder) WriteFloat(n float64, bitSize int) {
-	e.prepareNext(scalar)
-	e.out = appendFloat(e.out, n, bitSize)
-}
-
-func appendFloat(out []byte, n float64, bitSize int) []byte {
-	switch {
-	case math.IsNaN(n):
-		return append(out, "nan"...)
-	case math.IsInf(n, +1):
-		return append(out, "inf"...)
-	case math.IsInf(n, -1):
-		return append(out, "-inf"...)
-	default:
-		return strconv.AppendFloat(out, n, 'g', -1, bitSize)
-	}
-}
-
-// WriteInt writes out the given signed integer value.
-func (e *Encoder) WriteInt(n int64) {
-	e.prepareNext(scalar)
-	e.out = append(e.out, strconv.FormatInt(n, 10)...)
-}
-
-// WriteUint writes out the given unsigned integer value.
-func (e *Encoder) WriteUint(n uint64) {
-	e.prepareNext(scalar)
-	e.out = append(e.out, strconv.FormatUint(n, 10)...)
-}
-
-// WriteLiteral writes out the given string as a literal value without quotes.
-// This is used for writing enum literal strings.
-func (e *Encoder) WriteLiteral(s string) {
-	e.prepareNext(scalar)
-	e.out = append(e.out, s...)
-}
-
-// prepareNext adds possible space and indentation for the next value based
-// on last encType and indent option. It also updates e.lastType to next.
-func (e *Encoder) prepareNext(next encType) {
-	defer func() {
-		e.lastType = next
-	}()
-
-	// Single line.
-	if len(e.indent) == 0 {
-		// Add space after each field before the next one.
-		if e.lastType&(scalar|messageClose) != 0 && next == name {
-			e.out = append(e.out, ' ')
-			// Add a random extra space to make output unstable.
-			if detrand.Bool() {
-				e.out = append(e.out, ' ')
-			}
-		}
-		return
-	}
-
-	// Multi-line.
-	switch {
-	case e.lastType == name:
-		e.out = append(e.out, ' ')
-		// Add a random extra space after name: to make output unstable.
-		if detrand.Bool() {
-			e.out = append(e.out, ' ')
-		}
-
-	case e.lastType == messageOpen && next != messageClose:
-		e.indents = append(e.indents, e.indent...)
-		e.out = append(e.out, '\n')
-		e.out = append(e.out, e.indents...)
-
-	case e.lastType&(scalar|messageClose) != 0:
-		if next == messageClose {
-			e.indents = e.indents[:len(e.indents)-len(e.indent)]
-		}
-		e.out = append(e.out, '\n')
-		e.out = append(e.out, e.indents...)
-	}
-}
-
-// Snapshot returns the current snapshot for use in Reset.
-func (e *Encoder) Snapshot() encoderState {
-	return e.encoderState
-}
-
-// Reset resets the Encoder to the given encoderState from a Snapshot.
-func (e *Encoder) Reset(es encoderState) {
-	e.encoderState = es
-}
-
-// AppendString appends the escaped form of the input string to b.
-func AppendString(b []byte, s string) []byte {
-	return appendString(b, s, false)
-}
diff --git a/internal/encoding/text/encode_test.go b/internal/encoding/text/encode_test.go
deleted file mode 100644
index af74690..0000000
--- a/internal/encoding/text/encode_test.go
+++ /dev/null
@@ -1,557 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package text_test
-
-import (
-	"math"
-	"strings"
-	"testing"
-	"unicode/utf8"
-
-	"github.com/google/go-cmp/cmp"
-
-	"google.golang.org/protobuf/internal/detrand"
-	"google.golang.org/protobuf/internal/encoding/text"
-)
-
-// Disable detrand to enable direct comparisons on outputs.
-func init() { detrand.Disable() }
-
-func TestEncoder(t *testing.T) {
-	tests := []encoderTestCase{
-		{
-			desc:          "no-opt",
-			write:         func(e *text.Encoder) {},
-			wantOut:       ``,
-			wantOutIndent: ``,
-		},
-		{
-			desc: "true",
-			write: func(e *text.Encoder) {
-				e.WriteName("bool")
-				e.WriteBool(true)
-			},
-			wantOut:       `bool:true`,
-			wantOutIndent: `bool: true`,
-		},
-		{
-			desc: "false",
-			write: func(e *text.Encoder) {
-				e.WriteName("bool")
-				e.WriteBool(false)
-			},
-			wantOut:       `bool:false`,
-			wantOutIndent: `bool: false`,
-		},
-		{
-			desc: "bracket name",
-			write: func(e *text.Encoder) {
-				e.WriteName("[extension]")
-				e.WriteString("hello")
-			},
-			wantOut:       `[extension]:"hello"`,
-			wantOutIndent: `[extension]: "hello"`,
-		},
-		{
-			desc: "numeric name",
-			write: func(e *text.Encoder) {
-				e.WriteName("01234")
-				e.WriteString("hello")
-			},
-			wantOut:       `01234:"hello"`,
-			wantOutIndent: `01234: "hello"`,
-		},
-		{
-			desc: "string",
-			write: func(e *text.Encoder) {
-				e.WriteName("str")
-				e.WriteString("hello world")
-			},
-			wantOut:       `str:"hello world"`,
-			wantOutIndent: `str: "hello world"`,
-		},
-		{
-			desc: "enum",
-			write: func(e *text.Encoder) {
-				e.WriteName("enum")
-				e.WriteLiteral("ENUM_VALUE")
-			},
-			wantOut:       `enum:ENUM_VALUE`,
-			wantOutIndent: `enum: ENUM_VALUE`,
-		},
-		{
-			desc: "float64",
-			write: func(e *text.Encoder) {
-				e.WriteName("float64")
-				e.WriteFloat(1.0199999809265137, 64)
-			},
-			wantOut:       `float64:1.0199999809265137`,
-			wantOutIndent: `float64: 1.0199999809265137`,
-		},
-		{
-			desc: "float64 max value",
-			write: func(e *text.Encoder) {
-				e.WriteName("float64")
-				e.WriteFloat(math.MaxFloat64, 64)
-			},
-			wantOut:       `float64:1.7976931348623157e+308`,
-			wantOutIndent: `float64: 1.7976931348623157e+308`,
-		},
-		{
-			desc: "float64 min value",
-			write: func(e *text.Encoder) {
-				e.WriteName("float64")
-				e.WriteFloat(-math.MaxFloat64, 64)
-			},
-			wantOut:       `float64:-1.7976931348623157e+308`,
-			wantOutIndent: `float64: -1.7976931348623157e+308`,
-		},
-		{
-			desc: "float64 nan",
-			write: func(e *text.Encoder) {
-				e.WriteName("float64")
-				e.WriteFloat(math.NaN(), 64)
-			},
-			wantOut:       `float64:nan`,
-			wantOutIndent: `float64: nan`,
-		},
-		{
-			desc: "float64 inf",
-			write: func(e *text.Encoder) {
-				e.WriteName("float64")
-				e.WriteFloat(math.Inf(+1), 64)
-			},
-			wantOut:       `float64:inf`,
-			wantOutIndent: `float64: inf`,
-		},
-		{
-			desc: "float64 -inf",
-			write: func(e *text.Encoder) {
-				e.WriteName("float64")
-				e.WriteFloat(math.Inf(-1), 64)
-			},
-			wantOut:       `float64:-inf`,
-			wantOutIndent: `float64: -inf`,
-		},
-		{
-			desc: "float64 negative zero",
-			write: func(e *text.Encoder) {
-				e.WriteName("float64")
-				e.WriteFloat(math.Copysign(0, -1), 64)
-			},
-			wantOut:       `float64:-0`,
-			wantOutIndent: `float64: -0`,
-		},
-		{
-			desc: "float32",
-			write: func(e *text.Encoder) {
-				e.WriteName("float")
-				e.WriteFloat(1.02, 32)
-			},
-			wantOut:       `float:1.02`,
-			wantOutIndent: `float: 1.02`,
-		},
-		{
-			desc: "float32 max value",
-			write: func(e *text.Encoder) {
-				e.WriteName("float32")
-				e.WriteFloat(math.MaxFloat32, 32)
-			},
-			wantOut:       `float32:3.4028235e+38`,
-			wantOutIndent: `float32: 3.4028235e+38`,
-		},
-		{
-			desc: "float32 nan",
-			write: func(e *text.Encoder) {
-				e.WriteName("float32")
-				e.WriteFloat(math.NaN(), 32)
-			},
-			wantOut:       `float32:nan`,
-			wantOutIndent: `float32: nan`,
-		},
-		{
-			desc: "float32 inf",
-			write: func(e *text.Encoder) {
-				e.WriteName("float32")
-				e.WriteFloat(math.Inf(+1), 32)
-			},
-			wantOut:       `float32:inf`,
-			wantOutIndent: `float32: inf`,
-		},
-		{
-			desc: "float32 -inf",
-			write: func(e *text.Encoder) {
-				e.WriteName("float32")
-				e.WriteFloat(math.Inf(-1), 32)
-			},
-			wantOut:       `float32:-inf`,
-			wantOutIndent: `float32: -inf`,
-		},
-		{
-			desc: "float32 negative zero",
-			write: func(e *text.Encoder) {
-				e.WriteName("float32")
-				e.WriteFloat(math.Copysign(0, -1), 32)
-			},
-			wantOut:       `float32:-0`,
-			wantOutIndent: `float32: -0`,
-		},
-		{
-			desc: "int64 max value",
-			write: func(e *text.Encoder) {
-				e.WriteName("int")
-				e.WriteInt(math.MaxInt64)
-			},
-			wantOut:       `int:9223372036854775807`,
-			wantOutIndent: `int: 9223372036854775807`,
-		},
-		{
-			desc: "int64 min value",
-			write: func(e *text.Encoder) {
-				e.WriteName("int")
-				e.WriteInt(math.MinInt64)
-			},
-			wantOut:       `int:-9223372036854775808`,
-			wantOutIndent: `int: -9223372036854775808`,
-		},
-		{
-			desc: "uint",
-			write: func(e *text.Encoder) {
-				e.WriteName("uint")
-				e.WriteUint(math.MaxUint64)
-			},
-			wantOut:       `uint:18446744073709551615`,
-			wantOutIndent: `uint: 18446744073709551615`,
-		},
-		{
-			desc: "empty message field",
-			write: func(e *text.Encoder) {
-				e.WriteName("m")
-				e.StartMessage()
-				e.EndMessage()
-			},
-			wantOut:       `m:{}`,
-			wantOutIndent: `m: {}`,
-		},
-		{
-			desc: "multiple fields",
-			write: func(e *text.Encoder) {
-				e.WriteName("bool")
-				e.WriteBool(true)
-				e.WriteName("str")
-				e.WriteString("hello")
-				e.WriteName("str")
-				e.WriteString("world")
-				e.WriteName("m")
-				e.StartMessage()
-				e.EndMessage()
-				e.WriteName("[int]")
-				e.WriteInt(49)
-				e.WriteName("float64")
-				e.WriteFloat(1.00023e4, 64)
-				e.WriteName("101")
-				e.WriteString("unknown")
-			},
-			wantOut: `bool:true str:"hello" str:"world" m:{} [int]:49 float64:10002.3 101:"unknown"`,
-			wantOutIndent: `bool: true
-str: "hello"
-str: "world"
-m: {}
-[int]: 49
-float64: 10002.3
-101: "unknown"`,
-		},
-		{
-			desc: "populated message fields",
-			write: func(e *text.Encoder) {
-				e.WriteName("m1")
-				e.StartMessage()
-				{
-					e.WriteName("str")
-					e.WriteString("hello")
-				}
-				e.EndMessage()
-
-				e.WriteName("bool")
-				e.WriteBool(true)
-
-				e.WriteName("m2")
-				e.StartMessage()
-				{
-					e.WriteName("str")
-					e.WriteString("world")
-					e.WriteName("m2-1")
-					e.StartMessage()
-					e.EndMessage()
-					e.WriteName("m2-2")
-					e.StartMessage()
-					{
-						e.WriteName("[int]")
-						e.WriteInt(49)
-					}
-					e.EndMessage()
-					e.WriteName("float64")
-					e.WriteFloat(1.00023e4, 64)
-				}
-				e.EndMessage()
-
-				e.WriteName("101")
-				e.WriteString("unknown")
-			},
-			wantOut: `m1:{str:"hello"} bool:true m2:{str:"world" m2-1:{} m2-2:{[int]:49} float64:10002.3} 101:"unknown"`,
-			wantOutIndent: `m1: {
-	str: "hello"
-}
-bool: true
-m2: {
-	str: "world"
-	m2-1: {}
-	m2-2: {
-		[int]: 49
-	}
-	float64: 10002.3
-}
-101: "unknown"`,
-		},
-	}
-
-	for _, tc := range tests {
-		t.Run(tc.desc, func(t *testing.T) {
-			runEncoderTest(t, tc, [2]byte{})
-
-			// Test using the angle brackets.
-			// Testcases should not contain characters '{' and '}'.
-			tc.wantOut = replaceDelims(tc.wantOut)
-			tc.wantOutIndent = replaceDelims(tc.wantOutIndent)
-			runEncoderTest(t, tc, [2]byte{'<', '>'})
-		})
-	}
-}
-
-type encoderTestCase struct {
-	desc          string
-	write         func(*text.Encoder)
-	wantOut       string
-	wantOutIndent string
-}
-
-func runEncoderTest(t *testing.T, tc encoderTestCase, delims [2]byte) {
-	t.Helper()
-
-	if tc.wantOut != "" {
-		enc, err := text.NewEncoder("", delims, false)
-		if err != nil {
-			t.Fatalf("NewEncoder returned error: %v", err)
-		}
-		tc.write(enc)
-		got := string(enc.Bytes())
-		if got != tc.wantOut {
-			t.Errorf("(compact)\n<got>\n%v\n<want>\n%v\n", got, tc.wantOut)
-		}
-	}
-	if tc.wantOutIndent != "" {
-		enc, err := text.NewEncoder("\t", delims, false)
-		if err != nil {
-			t.Fatalf("NewEncoder returned error: %v", err)
-		}
-		tc.write(enc)
-		got, want := string(enc.Bytes()), tc.wantOutIndent
-		if got != want {
-			t.Errorf("(multi-line)\n<got>\n%v\n<want>\n%v\n<diff -want +got>\n%v\n",
-				got, want, cmp.Diff(want, got))
-		}
-	}
-}
-
-func replaceDelims(s string) string {
-	s = strings.Replace(s, "{", "<", -1)
-	return strings.Replace(s, "}", ">", -1)
-}
-
-// Test for UTF-8 and ASCII outputs.
-func TestEncodeStrings(t *testing.T) {
-	tests := []struct {
-		in           string
-		wantOut      string
-		wantOutASCII string
-	}{
-		{
-			in:      `"`,
-			wantOut: `"\""`,
-		},
-		{
-			in:      `'`,
-			wantOut: `"'"`,
-		},
-		{
-			in:           "hello\u1234world",
-			wantOut:      "\"hello\u1234world\"",
-			wantOutASCII: `"hello\u1234world"`,
-		},
-		{
-			// String that has as few escaped characters as possible.
-			in: func() string {
-				var b []byte
-				for i := rune(0); i <= 0x00a0; i++ {
-					switch i {
-					case 0, '\\', '\n', '\'': // these must be escaped, so ignore them
-					default:
-						var r [utf8.UTFMax]byte
-						n := utf8.EncodeRune(r[:], i)
-						b = append(b, r[:n]...)
-					}
-				}
-				return string(b)
-			}(),
-			wantOut:      `"\x01\x02\x03\x04\x05\x06\x07\x08\t\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_` + "`" + `abcdefghijklmnopqrstuvwxyz{|}~\x7f\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008a\u008b\u008c\u008d\u008e\u008f\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009d\u009e\u009f` + "\u00a0" + `"`,
-			wantOutASCII: `"\x01\x02\x03\x04\x05\x06\x07\x08\t\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f !\"#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_` + "`" + `abcdefghijklmnopqrstuvwxyz{|}~\x7f\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008a\u008b\u008c\u008d\u008e\u008f\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009d\u009e\u009f\u00a0"`,
-		},
-		{
-			// Valid UTF-8 wire encoding of the RuneError rune.
-			in:           string(utf8.RuneError),
-			wantOut:      `"` + string(utf8.RuneError) + `"`,
-			wantOutASCII: `"\ufffd"`,
-		},
-		{
-			in:           "\"'\\?\a\b\n\r\t\v\f\x01\nS\n\xab\x12\uab8f\U0010ffff",
-			wantOut:      `"\"'\\?\x07\x08\n\r\t\x0b\x0c\x01\nS\n\xab\x12` + "\uab8f\U0010ffff" + `"`,
-			wantOutASCII: `"\"'\\?\x07\x08\n\r\t\x0b\x0c\x01\nS\n\xab\x12\uab8f\U0010ffff"`,
-		},
-		{
-			in:           "\001x",
-			wantOut:      `"\x01x"`,
-			wantOutASCII: `"\x01x"`,
-		},
-		{
-			in:           "\012x",
-			wantOut:      `"\nx"`,
-			wantOutASCII: `"\nx"`,
-		},
-		{
-			in:           "\123x",
-			wantOut:      `"Sx"`,
-			wantOutASCII: `"Sx"`,
-		},
-		{
-			in:           "\1234x",
-			wantOut:      `"S4x"`,
-			wantOutASCII: `"S4x"`,
-		},
-		{
-			in:           "\001",
-			wantOut:      `"\x01"`,
-			wantOutASCII: `"\x01"`,
-		},
-		{
-			in:           "\012",
-			wantOut:      `"\n"`,
-			wantOutASCII: `"\n"`,
-		},
-		{
-			in:           "\123",
-			wantOut:      `"S"`,
-			wantOutASCII: `"S"`,
-		},
-		{
-			in:           "\1234",
-			wantOut:      `"S4"`,
-			wantOutASCII: `"S4"`,
-		},
-		{
-			in:           "\377",
-			wantOut:      `"\xff"`,
-			wantOutASCII: `"\xff"`,
-		},
-		{
-			in:           "\x0fx",
-			wantOut:      `"\x0fx"`,
-			wantOutASCII: `"\x0fx"`,
-		},
-		{
-			in:           "\xffx",
-			wantOut:      `"\xffx"`,
-			wantOutASCII: `"\xffx"`,
-		},
-		{
-			in:           "\xfffx",
-			wantOut:      `"\xfffx"`,
-			wantOutASCII: `"\xfffx"`,
-		},
-		{
-			in:           "\x0f",
-			wantOut:      `"\x0f"`,
-			wantOutASCII: `"\x0f"`,
-		},
-		{
-			in:           "\x7f",
-			wantOut:      `"\x7f"`,
-			wantOutASCII: `"\x7f"`,
-		},
-		{
-			in:           "\xff",
-			wantOut:      `"\xff"`,
-			wantOutASCII: `"\xff"`,
-		},
-		{
-			in:           "\xfff",
-			wantOut:      `"\xfff"`,
-			wantOutASCII: `"\xfff"`,
-		},
-	}
-	for _, tc := range tests {
-		t.Run("", func(t *testing.T) {
-			if tc.wantOut != "" {
-				runEncodeStringsTest(t, tc.in, tc.wantOut, false)
-			}
-			if tc.wantOutASCII != "" {
-				runEncodeStringsTest(t, tc.in, tc.wantOutASCII, true)
-			}
-		})
-	}
-}
-
-func runEncodeStringsTest(t *testing.T, in string, want string, outputASCII bool) {
-	t.Helper()
-
-	charType := "UTF-8"
-	if outputASCII {
-		charType = "ASCII"
-	}
-
-	enc, err := text.NewEncoder("", [2]byte{}, outputASCII)
-	if err != nil {
-		t.Fatalf("[%s] NewEncoder returned error: %v", charType, err)
-	}
-	enc.WriteString(in)
-	got := string(enc.Bytes())
-	if got != want {
-		t.Errorf("[%s] WriteString(%q)\n<got>\n%v\n<want>\n%v\n", charType, in, got, want)
-	}
-}
-
-func TestReset(t *testing.T) {
-	enc, err := text.NewEncoder("\t", [2]byte{}, false)
-	if err != nil {
-		t.Fatalf("NewEncoder returned error: %v", err)
-	}
-
-	enc.WriteName("foo")
-	pos := enc.Snapshot()
-
-	// Attempt to write a message value.
-	enc.StartMessage()
-	enc.WriteName("bar")
-	enc.WriteUint(10)
-
-	// Reset the value and decided to write a string value instead.
-	enc.Reset(pos)
-	enc.WriteString("0123456789")
-
-	got := string(enc.Bytes())
-	want := `foo: "0123456789"`
-	if got != want {
-		t.Errorf("Reset did not restore given position:\n<got>\n%v\n<want>\n%v\n", got, want)
-	}
-}
diff --git a/internal/errors/errors.go b/internal/errors/errors.go
deleted file mode 100644
index 20c17b3..0000000
--- a/internal/errors/errors.go
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package errors implements functions to manipulate errors.
-package errors
-
-import (
-	"errors"
-	"fmt"
-
-	"google.golang.org/protobuf/internal/detrand"
-)
-
-// Error is a sentinel matching all errors produced by this package.
-var Error = errors.New("protobuf error")
-
-// New formats a string according to the format specifier and arguments and
-// returns an error that has a "proto" prefix.
-func New(f string, x ...interface{}) error {
-	return &prefixError{s: format(f, x...)}
-}
-
-type prefixError struct{ s string }
-
-var prefix = func() string {
-	// Deliberately introduce instability into the error message string to
-	// discourage users from performing error string comparisons.
-	if detrand.Bool() {
-		return "proto: " // use non-breaking spaces (U+00a0)
-	} else {
-		return "proto: " // use regular spaces (U+0020)
-	}
-}()
-
-func (e *prefixError) Error() string {
-	return prefix + e.s
-}
-
-func (e *prefixError) Unwrap() error {
-	return Error
-}
-
-// Wrap returns an error that has a "proto" prefix, the formatted string described
-// by the format specifier and arguments, and a suffix of err. The error wraps err.
-func Wrap(err error, f string, x ...interface{}) error {
-	return &wrapError{
-		s:   format(f, x...),
-		err: err,
-	}
-}
-
-type wrapError struct {
-	s   string
-	err error
-}
-
-func (e *wrapError) Error() string {
-	return format("%v%v: %v", prefix, e.s, e.err)
-}
-
-func (e *wrapError) Unwrap() error {
-	return e.err
-}
-
-func (e *wrapError) Is(target error) bool {
-	return target == Error
-}
-
-func format(f string, x ...interface{}) string {
-	// avoid "proto: " prefix when chaining
-	for i := 0; i < len(x); i++ {
-		switch e := x[i].(type) {
-		case *prefixError:
-			x[i] = e.s
-		case *wrapError:
-			x[i] = format("%v: %v", e.s, e.err)
-		}
-	}
-	return fmt.Sprintf(f, x...)
-}
-
-func InvalidUTF8(name string) error {
-	return New("field %v contains invalid UTF-8", name)
-}
-
-func RequiredNotSet(name string) error {
-	return New("required field %v not set", name)
-}
diff --git a/internal/errors/errors_test.go b/internal/errors/errors_test.go
deleted file mode 100644
index 804eb96..0000000
--- a/internal/errors/errors_test.go
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package errors
-
-import (
-	"errors"
-	"strings"
-	"testing"
-)
-
-func TestErrors(t *testing.T) {
-	var sentinel = New("sentinel")
-	var foreign = errors.New("foreign")
-	for _, test := range []struct {
-		what     string
-		err      error
-		wantText string
-		is       []error
-		isNot    []error
-	}{{
-		what:     `New("abc")`,
-		err:      New("abc"),
-		wantText: "abc",
-	}, {
-		what:     `New("%v", sentinel)`,
-		err:      New("%v", sentinel),
-		wantText: "sentinel",
-		isNot:    []error{sentinel},
-	}, {
-		what:     `Wrap(sentinel, "%v", "text")`,
-		err:      Wrap(sentinel, "%v", "text"),
-		wantText: "text: sentinel",
-		is:       []error{sentinel},
-	}, {
-		what:     `New("%v", foreign)`,
-		err:      New("%v", foreign),
-		wantText: "foreign",
-		isNot:    []error{foreign},
-	}, {
-		what:     `Wrap(foreign, "%v", "text")`,
-		err:      Wrap(foreign, "%v", "text"),
-		wantText: "text: foreign",
-		is:       []error{foreign},
-	}} {
-		if got, want := test.err.Error(), prefix; !strings.HasPrefix(got, want) {
-			t.Errorf("%v.Error() = %q, want prefix %q", test.what, got, want)
-		}
-		if got, want := test.err.Error(), prefix+test.wantText; got != want {
-			t.Errorf("%v.Error() = %q, want %q", test.what, got, want)
-		}
-		if got, want := Is(test.err, Error), true; got != want {
-			t.Errorf("errors.Is(%v, errors.Error) = %v, want %v", test.what, got, want)
-		}
-		for _, err := range test.is {
-			if got, want := Is(test.err, err), true; got != want {
-				t.Errorf("errors.Is(%v, %v) = %v, want %v", test.what, err, got, want)
-			}
-		}
-		for _, err := range test.isNot {
-			if got, want := Is(test.err, err), false; got != want {
-				t.Errorf("errors.Is(%v, %v) = %v, want %v", test.what, err, got, want)
-			}
-		}
-	}
-}
diff --git a/internal/errors/is_go112.go b/internal/errors/is_go112.go
deleted file mode 100644
index fbcd349..0000000
--- a/internal/errors/is_go112.go
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:build !go1.13
-// +build !go1.13
-
-package errors
-
-import "reflect"
-
-// Is is a copy of Go 1.13's errors.Is for use with older Go versions.
-func Is(err, target error) bool {
-	if target == nil {
-		return err == target
-	}
-
-	isComparable := reflect.TypeOf(target).Comparable()
-	for {
-		if isComparable && err == target {
-			return true
-		}
-		if x, ok := err.(interface{ Is(error) bool }); ok && x.Is(target) {
-			return true
-		}
-		if err = unwrap(err); err == nil {
-			return false
-		}
-	}
-}
-
-func unwrap(err error) error {
-	u, ok := err.(interface {
-		Unwrap() error
-	})
-	if !ok {
-		return nil
-	}
-	return u.Unwrap()
-}
diff --git a/internal/errors/is_go113.go b/internal/errors/is_go113.go
deleted file mode 100644
index 5e72f1c..0000000
--- a/internal/errors/is_go113.go
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:build go1.13
-// +build go1.13
-
-package errors
-
-import "errors"
-
-// Is is errors.Is.
-func Is(err, target error) bool { return errors.Is(err, target) }
diff --git a/internal/filedesc/build.go b/internal/filedesc/build.go
deleted file mode 100644
index b293b69..0000000
--- a/internal/filedesc/build.go
+++ /dev/null
@@ -1,158 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package filedesc provides functionality for constructing descriptors.
-//
-// The types in this package implement interfaces in the protoreflect package
-// related to protobuf descripriptors.
-package filedesc
-
-import (
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/genid"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	preg "google.golang.org/protobuf/reflect/protoregistry"
-)
-
-// Builder construct a protoreflect.FileDescriptor from the raw descriptor.
-type Builder struct {
-	// GoPackagePath is the Go package path that is invoking this builder.
-	GoPackagePath string
-
-	// RawDescriptor is the wire-encoded bytes of FileDescriptorProto
-	// and must be populated.
-	RawDescriptor []byte
-
-	// NumEnums is the total number of enums declared in the file.
-	NumEnums int32
-	// NumMessages is the total number of messages declared in the file.
-	// It includes the implicit message declarations for map entries.
-	NumMessages int32
-	// NumExtensions is the total number of extensions declared in the file.
-	NumExtensions int32
-	// NumServices is the total number of services declared in the file.
-	NumServices int32
-
-	// TypeResolver resolves extension field types for descriptor options.
-	// If nil, it uses protoregistry.GlobalTypes.
-	TypeResolver interface {
-		preg.ExtensionTypeResolver
-	}
-
-	// FileRegistry is use to lookup file, enum, and message dependencies.
-	// Once constructed, the file descriptor is registered here.
-	// If nil, it uses protoregistry.GlobalFiles.
-	FileRegistry interface {
-		FindFileByPath(string) (protoreflect.FileDescriptor, error)
-		FindDescriptorByName(pref.FullName) (pref.Descriptor, error)
-		RegisterFile(pref.FileDescriptor) error
-	}
-}
-
-// resolverByIndex is an interface Builder.FileRegistry may implement.
-// If so, it permits looking up an enum or message dependency based on the
-// sub-list and element index into filetype.Builder.DependencyIndexes.
-type resolverByIndex interface {
-	FindEnumByIndex(int32, int32, []Enum, []Message) pref.EnumDescriptor
-	FindMessageByIndex(int32, int32, []Enum, []Message) pref.MessageDescriptor
-}
-
-// Indexes of each sub-list in filetype.Builder.DependencyIndexes.
-const (
-	listFieldDeps int32 = iota
-	listExtTargets
-	listExtDeps
-	listMethInDeps
-	listMethOutDeps
-)
-
-// Out is the output of the Builder.
-type Out struct {
-	File pref.FileDescriptor
-
-	// Enums is all enum descriptors in "flattened ordering".
-	Enums []Enum
-	// Messages is all message descriptors in "flattened ordering".
-	// It includes the implicit message declarations for map entries.
-	Messages []Message
-	// Extensions is all extension descriptors in "flattened ordering".
-	Extensions []Extension
-	// Service is all service descriptors in "flattened ordering".
-	Services []Service
-}
-
-// Build constructs a FileDescriptor given the parameters set in Builder.
-// It assumes that the inputs are well-formed and panics if any inconsistencies
-// are encountered.
-//
-// If NumEnums+NumMessages+NumExtensions+NumServices is zero,
-// then Build automatically derives them from the raw descriptor.
-func (db Builder) Build() (out Out) {
-	// Populate the counts if uninitialized.
-	if db.NumEnums+db.NumMessages+db.NumExtensions+db.NumServices == 0 {
-		db.unmarshalCounts(db.RawDescriptor, true)
-	}
-
-	// Initialize resolvers and registries if unpopulated.
-	if db.TypeResolver == nil {
-		db.TypeResolver = preg.GlobalTypes
-	}
-	if db.FileRegistry == nil {
-		db.FileRegistry = preg.GlobalFiles
-	}
-
-	fd := newRawFile(db)
-	out.File = fd
-	out.Enums = fd.allEnums
-	out.Messages = fd.allMessages
-	out.Extensions = fd.allExtensions
-	out.Services = fd.allServices
-
-	if err := db.FileRegistry.RegisterFile(fd); err != nil {
-		panic(err)
-	}
-	return out
-}
-
-// unmarshalCounts counts the number of enum, message, extension, and service
-// declarations in the raw message, which is either a FileDescriptorProto
-// or a MessageDescriptorProto depending on whether isFile is set.
-func (db *Builder) unmarshalCounts(b []byte, isFile bool) {
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.BytesType:
-			v, m := protowire.ConsumeBytes(b)
-			b = b[m:]
-			if isFile {
-				switch num {
-				case genid.FileDescriptorProto_EnumType_field_number:
-					db.NumEnums++
-				case genid.FileDescriptorProto_MessageType_field_number:
-					db.unmarshalCounts(v, false)
-					db.NumMessages++
-				case genid.FileDescriptorProto_Extension_field_number:
-					db.NumExtensions++
-				case genid.FileDescriptorProto_Service_field_number:
-					db.NumServices++
-				}
-			} else {
-				switch num {
-				case genid.DescriptorProto_EnumType_field_number:
-					db.NumEnums++
-				case genid.DescriptorProto_NestedType_field_number:
-					db.unmarshalCounts(v, false)
-					db.NumMessages++
-				case genid.DescriptorProto_Extension_field_number:
-					db.NumExtensions++
-				}
-			}
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-		}
-	}
-}
diff --git a/internal/filedesc/build_test.go b/internal/filedesc/build_test.go
deleted file mode 100644
index f8007a0..0000000
--- a/internal/filedesc/build_test.go
+++ /dev/null
@@ -1,135 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package filedesc_test
-
-import (
-	"bytes"
-	"compress/gzip"
-	"io/ioutil"
-	"testing"
-
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protodesc"
-	"google.golang.org/protobuf/reflect/protoreflect"
-
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-	_ "google.golang.org/protobuf/internal/testprotos/test/weak1"
-	"google.golang.org/protobuf/types/descriptorpb"
-)
-
-var testFile = new(testpb.TestAllTypes).ProtoReflect().Descriptor().ParentFile()
-
-func TestInit(t *testing.T) {
-	// Compare the FileDescriptorProto for the same test file from two different sources:
-	//
-	// 1. The result of passing the filedesc-produced FileDescriptor through protodesc.
-	// 2. The protoc-generated wire-encoded message.
-	//
-	// This serves as a test of both filedesc and protodesc.
-	got := protodesc.ToFileDescriptorProto(testFile)
-
-	want := &descriptorpb.FileDescriptorProto{}
-	zb, _ := (&testpb.TestAllTypes{}).Descriptor()
-	r, _ := gzip.NewReader(bytes.NewBuffer(zb))
-	b, _ := ioutil.ReadAll(r)
-	if err := proto.Unmarshal(b, want); err != nil {
-		t.Fatal(err)
-	}
-
-	if !proto.Equal(got, want) {
-		t.Errorf("protodesc.ToFileDescriptorProto(testpb.Test_protoFile) is not equal to the protoc-generated FileDescriptorProto for internal/testprotos/test/test.proto")
-	}
-
-	// Verify that the test proto file provides exhaustive coverage of all descriptor fields.
-	seen := make(map[protoreflect.FullName]bool)
-	visitFields(want.ProtoReflect(), func(field protoreflect.FieldDescriptor) {
-		seen[field.FullName()] = true
-	})
-	descFile := new(descriptorpb.DescriptorProto).ProtoReflect().Descriptor().ParentFile()
-	descPkg := descFile.Package()
-	ignore := map[protoreflect.FullName]bool{
-		// The protoreflect descriptors don't include source info.
-		descPkg.Append("FileDescriptorProto.source_code_info"): true,
-		descPkg.Append("FileDescriptorProto.syntax"):           true,
-
-		// Impossible to test proto3 optional in a proto2 file.
-		descPkg.Append("FieldDescriptorProto.proto3_optional"): true,
-
-		// TODO: Test oneof and extension options. Testing these requires extending the
-		// options messages (because they contain no user-settable fields), but importing
-		// decriptor.proto from test.proto currently causes an import cycle. Add test
-		// cases when that import cycle has been fixed.
-		descPkg.Append("OneofDescriptorProto.options"): true,
-	}
-	for _, messageName := range []protoreflect.Name{
-		"FileDescriptorProto",
-		"DescriptorProto",
-		"FieldDescriptorProto",
-		"OneofDescriptorProto",
-		"EnumDescriptorProto",
-		"EnumValueDescriptorProto",
-	} {
-		message := descFile.Messages().ByName(messageName)
-		for i, fields := 0, message.Fields(); i < fields.Len(); i++ {
-			if name := fields.Get(i).FullName(); !seen[name] && !ignore[name] {
-				t.Errorf("No test for descriptor field: %v", name)
-			}
-		}
-	}
-
-	// Verify that message descriptors for map entries have no Go type info.
-	mapEntryName := protoreflect.FullName("goproto.proto.test.TestAllTypes.MapInt32Int32Entry")
-	d := testFile.Messages().ByName("TestAllTypes").Fields().ByName("map_int32_int32").Message()
-	if gotName, wantName := d.FullName(), mapEntryName; gotName != wantName {
-		t.Fatalf("looked up wrong descriptor: got %v, want %v", gotName, wantName)
-	}
-	if _, ok := d.(protoreflect.MessageType); ok {
-		t.Errorf("message descriptor for %v must not implement protoreflect.MessageType", mapEntryName)
-	}
-}
-
-// visitFields calls f for every field set in m and its children.
-func visitFields(m protoreflect.Message, f func(protoreflect.FieldDescriptor)) {
-	m.Range(func(fd protoreflect.FieldDescriptor, value protoreflect.Value) bool {
-		f(fd)
-		switch fd.Kind() {
-		case protoreflect.MessageKind, protoreflect.GroupKind:
-			if fd.IsList() {
-				for i, list := 0, value.List(); i < list.Len(); i++ {
-					visitFields(list.Get(i).Message(), f)
-				}
-			} else {
-				visitFields(value.Message(), f)
-			}
-		}
-		return true
-	})
-}
-
-func TestWeakInit(t *testing.T) {
-	// We do not expect to get a placeholder since weak1 is imported.
-	fd1 := testFile.Messages().ByName("TestWeak").Fields().ByName("weak_message1")
-	if got, want := fd1.IsWeak(), true; got != want {
-		t.Errorf("field %v: IsWeak() = %v, want %v", fd1.FullName(), got, want)
-	}
-	if got, want := fd1.Message().IsPlaceholder(), false; got != want {
-		t.Errorf("field %v: Message.IsPlaceholder() = %v, want %v", fd1.FullName(), got, want)
-	}
-	if got, want := fd1.Message().Fields().Len(), 1; got != want {
-		t.Errorf("field %v: Message().Fields().Len() == %d, want %d", fd1.FullName(), got, want)
-	}
-
-	// We do expect to get a placeholder since weak2 is not imported.
-	fd2 := testFile.Messages().ByName("TestWeak").Fields().ByName("weak_message2")
-	if got, want := fd2.IsWeak(), true; got != want {
-		t.Errorf("field %v: IsWeak() = %v, want %v", fd2.FullName(), got, want)
-	}
-	if got, want := fd2.Message().IsPlaceholder(), true; got != want {
-		t.Errorf("field %v: Message.IsPlaceholder() = %v, want %v", fd2.FullName(), got, want)
-	}
-	if got, want := fd2.Message().Fields().Len(), 0; got != want {
-		t.Errorf("field %v: Message().Fields().Len() == %d, want %d", fd2.FullName(), got, want)
-	}
-}
diff --git a/internal/filedesc/desc.go b/internal/filedesc/desc.go
deleted file mode 100644
index 98ab142..0000000
--- a/internal/filedesc/desc.go
+++ /dev/null
@@ -1,631 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package filedesc
-
-import (
-	"bytes"
-	"fmt"
-	"sync"
-	"sync/atomic"
-
-	"google.golang.org/protobuf/internal/descfmt"
-	"google.golang.org/protobuf/internal/descopts"
-	"google.golang.org/protobuf/internal/encoding/defval"
-	"google.golang.org/protobuf/internal/encoding/messageset"
-	"google.golang.org/protobuf/internal/genid"
-	"google.golang.org/protobuf/internal/pragma"
-	"google.golang.org/protobuf/internal/strs"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/reflect/protoregistry"
-)
-
-// The types in this file may have a suffix:
-//	• L0: Contains fields common to all descriptors (except File) and
-//	must be initialized up front.
-//	• L1: Contains fields specific to a descriptor and
-//	must be initialized up front.
-//	• L2: Contains fields that are lazily initialized when constructing
-//	from the raw file descriptor. When constructing as a literal, the L2
-//	fields must be initialized up front.
-//
-// The types are exported so that packages like reflect/protodesc can
-// directly construct descriptors.
-
-type (
-	File struct {
-		fileRaw
-		L1 FileL1
-
-		once uint32     // atomically set if L2 is valid
-		mu   sync.Mutex // protects L2
-		L2   *FileL2
-	}
-	FileL1 struct {
-		Syntax  pref.Syntax
-		Path    string
-		Package pref.FullName
-
-		Enums      Enums
-		Messages   Messages
-		Extensions Extensions
-		Services   Services
-	}
-	FileL2 struct {
-		Options   func() pref.ProtoMessage
-		Imports   FileImports
-		Locations SourceLocations
-	}
-)
-
-func (fd *File) ParentFile() pref.FileDescriptor { return fd }
-func (fd *File) Parent() pref.Descriptor         { return nil }
-func (fd *File) Index() int                      { return 0 }
-func (fd *File) Syntax() pref.Syntax             { return fd.L1.Syntax }
-func (fd *File) Name() pref.Name                 { return fd.L1.Package.Name() }
-func (fd *File) FullName() pref.FullName         { return fd.L1.Package }
-func (fd *File) IsPlaceholder() bool             { return false }
-func (fd *File) Options() pref.ProtoMessage {
-	if f := fd.lazyInit().Options; f != nil {
-		return f()
-	}
-	return descopts.File
-}
-func (fd *File) Path() string                          { return fd.L1.Path }
-func (fd *File) Package() pref.FullName                { return fd.L1.Package }
-func (fd *File) Imports() pref.FileImports             { return &fd.lazyInit().Imports }
-func (fd *File) Enums() pref.EnumDescriptors           { return &fd.L1.Enums }
-func (fd *File) Messages() pref.MessageDescriptors     { return &fd.L1.Messages }
-func (fd *File) Extensions() pref.ExtensionDescriptors { return &fd.L1.Extensions }
-func (fd *File) Services() pref.ServiceDescriptors     { return &fd.L1.Services }
-func (fd *File) SourceLocations() pref.SourceLocations { return &fd.lazyInit().Locations }
-func (fd *File) Format(s fmt.State, r rune)            { descfmt.FormatDesc(s, r, fd) }
-func (fd *File) ProtoType(pref.FileDescriptor)         {}
-func (fd *File) ProtoInternal(pragma.DoNotImplement)   {}
-
-func (fd *File) lazyInit() *FileL2 {
-	if atomic.LoadUint32(&fd.once) == 0 {
-		fd.lazyInitOnce()
-	}
-	return fd.L2
-}
-
-func (fd *File) lazyInitOnce() {
-	fd.mu.Lock()
-	if fd.L2 == nil {
-		fd.lazyRawInit() // recursively initializes all L2 structures
-	}
-	atomic.StoreUint32(&fd.once, 1)
-	fd.mu.Unlock()
-}
-
-// GoPackagePath is a pseudo-internal API for determining the Go package path
-// that this file descriptor is declared in.
-//
-// WARNING: This method is exempt from the compatibility promise and may be
-// removed in the future without warning.
-func (fd *File) GoPackagePath() string {
-	return fd.builder.GoPackagePath
-}
-
-type (
-	Enum struct {
-		Base
-		L1 EnumL1
-		L2 *EnumL2 // protected by fileDesc.once
-	}
-	EnumL1 struct {
-		eagerValues bool // controls whether EnumL2.Values is already populated
-	}
-	EnumL2 struct {
-		Options        func() pref.ProtoMessage
-		Values         EnumValues
-		ReservedNames  Names
-		ReservedRanges EnumRanges
-	}
-
-	EnumValue struct {
-		Base
-		L1 EnumValueL1
-	}
-	EnumValueL1 struct {
-		Options func() pref.ProtoMessage
-		Number  pref.EnumNumber
-	}
-)
-
-func (ed *Enum) Options() pref.ProtoMessage {
-	if f := ed.lazyInit().Options; f != nil {
-		return f()
-	}
-	return descopts.Enum
-}
-func (ed *Enum) Values() pref.EnumValueDescriptors {
-	if ed.L1.eagerValues {
-		return &ed.L2.Values
-	}
-	return &ed.lazyInit().Values
-}
-func (ed *Enum) ReservedNames() pref.Names       { return &ed.lazyInit().ReservedNames }
-func (ed *Enum) ReservedRanges() pref.EnumRanges { return &ed.lazyInit().ReservedRanges }
-func (ed *Enum) Format(s fmt.State, r rune)      { descfmt.FormatDesc(s, r, ed) }
-func (ed *Enum) ProtoType(pref.EnumDescriptor)   {}
-func (ed *Enum) lazyInit() *EnumL2 {
-	ed.L0.ParentFile.lazyInit() // implicitly initializes L2
-	return ed.L2
-}
-
-func (ed *EnumValue) Options() pref.ProtoMessage {
-	if f := ed.L1.Options; f != nil {
-		return f()
-	}
-	return descopts.EnumValue
-}
-func (ed *EnumValue) Number() pref.EnumNumber            { return ed.L1.Number }
-func (ed *EnumValue) Format(s fmt.State, r rune)         { descfmt.FormatDesc(s, r, ed) }
-func (ed *EnumValue) ProtoType(pref.EnumValueDescriptor) {}
-
-type (
-	Message struct {
-		Base
-		L1 MessageL1
-		L2 *MessageL2 // protected by fileDesc.once
-	}
-	MessageL1 struct {
-		Enums        Enums
-		Messages     Messages
-		Extensions   Extensions
-		IsMapEntry   bool // promoted from google.protobuf.MessageOptions
-		IsMessageSet bool // promoted from google.protobuf.MessageOptions
-	}
-	MessageL2 struct {
-		Options               func() pref.ProtoMessage
-		Fields                Fields
-		Oneofs                Oneofs
-		ReservedNames         Names
-		ReservedRanges        FieldRanges
-		RequiredNumbers       FieldNumbers // must be consistent with Fields.Cardinality
-		ExtensionRanges       FieldRanges
-		ExtensionRangeOptions []func() pref.ProtoMessage // must be same length as ExtensionRanges
-	}
-
-	Field struct {
-		Base
-		L1 FieldL1
-	}
-	FieldL1 struct {
-		Options          func() pref.ProtoMessage
-		Number           pref.FieldNumber
-		Cardinality      pref.Cardinality // must be consistent with Message.RequiredNumbers
-		Kind             pref.Kind
-		StringName       stringName
-		IsProto3Optional bool // promoted from google.protobuf.FieldDescriptorProto
-		IsWeak           bool // promoted from google.protobuf.FieldOptions
-		HasPacked        bool // promoted from google.protobuf.FieldOptions
-		IsPacked         bool // promoted from google.protobuf.FieldOptions
-		HasEnforceUTF8   bool // promoted from google.protobuf.FieldOptions
-		EnforceUTF8      bool // promoted from google.protobuf.FieldOptions
-		Default          defaultValue
-		ContainingOneof  pref.OneofDescriptor // must be consistent with Message.Oneofs.Fields
-		Enum             pref.EnumDescriptor
-		Message          pref.MessageDescriptor
-	}
-
-	Oneof struct {
-		Base
-		L1 OneofL1
-	}
-	OneofL1 struct {
-		Options func() pref.ProtoMessage
-		Fields  OneofFields // must be consistent with Message.Fields.ContainingOneof
-	}
-)
-
-func (md *Message) Options() pref.ProtoMessage {
-	if f := md.lazyInit().Options; f != nil {
-		return f()
-	}
-	return descopts.Message
-}
-func (md *Message) IsMapEntry() bool                   { return md.L1.IsMapEntry }
-func (md *Message) Fields() pref.FieldDescriptors      { return &md.lazyInit().Fields }
-func (md *Message) Oneofs() pref.OneofDescriptors      { return &md.lazyInit().Oneofs }
-func (md *Message) ReservedNames() pref.Names          { return &md.lazyInit().ReservedNames }
-func (md *Message) ReservedRanges() pref.FieldRanges   { return &md.lazyInit().ReservedRanges }
-func (md *Message) RequiredNumbers() pref.FieldNumbers { return &md.lazyInit().RequiredNumbers }
-func (md *Message) ExtensionRanges() pref.FieldRanges  { return &md.lazyInit().ExtensionRanges }
-func (md *Message) ExtensionRangeOptions(i int) pref.ProtoMessage {
-	if f := md.lazyInit().ExtensionRangeOptions[i]; f != nil {
-		return f()
-	}
-	return descopts.ExtensionRange
-}
-func (md *Message) Enums() pref.EnumDescriptors           { return &md.L1.Enums }
-func (md *Message) Messages() pref.MessageDescriptors     { return &md.L1.Messages }
-func (md *Message) Extensions() pref.ExtensionDescriptors { return &md.L1.Extensions }
-func (md *Message) ProtoType(pref.MessageDescriptor)      {}
-func (md *Message) Format(s fmt.State, r rune)            { descfmt.FormatDesc(s, r, md) }
-func (md *Message) lazyInit() *MessageL2 {
-	md.L0.ParentFile.lazyInit() // implicitly initializes L2
-	return md.L2
-}
-
-// IsMessageSet is a pseudo-internal API for checking whether a message
-// should serialize in the proto1 message format.
-//
-// WARNING: This method is exempt from the compatibility promise and may be
-// removed in the future without warning.
-func (md *Message) IsMessageSet() bool {
-	return md.L1.IsMessageSet
-}
-
-func (fd *Field) Options() pref.ProtoMessage {
-	if f := fd.L1.Options; f != nil {
-		return f()
-	}
-	return descopts.Field
-}
-func (fd *Field) Number() pref.FieldNumber      { return fd.L1.Number }
-func (fd *Field) Cardinality() pref.Cardinality { return fd.L1.Cardinality }
-func (fd *Field) Kind() pref.Kind               { return fd.L1.Kind }
-func (fd *Field) HasJSONName() bool             { return fd.L1.StringName.hasJSON }
-func (fd *Field) JSONName() string              { return fd.L1.StringName.getJSON(fd) }
-func (fd *Field) TextName() string              { return fd.L1.StringName.getText(fd) }
-func (fd *Field) HasPresence() bool {
-	return fd.L1.Cardinality != pref.Repeated && (fd.L0.ParentFile.L1.Syntax == pref.Proto2 || fd.L1.Message != nil || fd.L1.ContainingOneof != nil)
-}
-func (fd *Field) HasOptionalKeyword() bool {
-	return (fd.L0.ParentFile.L1.Syntax == pref.Proto2 && fd.L1.Cardinality == pref.Optional && fd.L1.ContainingOneof == nil) || fd.L1.IsProto3Optional
-}
-func (fd *Field) IsPacked() bool {
-	if !fd.L1.HasPacked && fd.L0.ParentFile.L1.Syntax != pref.Proto2 && fd.L1.Cardinality == pref.Repeated {
-		switch fd.L1.Kind {
-		case pref.StringKind, pref.BytesKind, pref.MessageKind, pref.GroupKind:
-		default:
-			return true
-		}
-	}
-	return fd.L1.IsPacked
-}
-func (fd *Field) IsExtension() bool { return false }
-func (fd *Field) IsWeak() bool      { return fd.L1.IsWeak }
-func (fd *Field) IsList() bool      { return fd.Cardinality() == pref.Repeated && !fd.IsMap() }
-func (fd *Field) IsMap() bool       { return fd.Message() != nil && fd.Message().IsMapEntry() }
-func (fd *Field) MapKey() pref.FieldDescriptor {
-	if !fd.IsMap() {
-		return nil
-	}
-	return fd.Message().Fields().ByNumber(genid.MapEntry_Key_field_number)
-}
-func (fd *Field) MapValue() pref.FieldDescriptor {
-	if !fd.IsMap() {
-		return nil
-	}
-	return fd.Message().Fields().ByNumber(genid.MapEntry_Value_field_number)
-}
-func (fd *Field) HasDefault() bool                           { return fd.L1.Default.has }
-func (fd *Field) Default() pref.Value                        { return fd.L1.Default.get(fd) }
-func (fd *Field) DefaultEnumValue() pref.EnumValueDescriptor { return fd.L1.Default.enum }
-func (fd *Field) ContainingOneof() pref.OneofDescriptor      { return fd.L1.ContainingOneof }
-func (fd *Field) ContainingMessage() pref.MessageDescriptor {
-	return fd.L0.Parent.(pref.MessageDescriptor)
-}
-func (fd *Field) Enum() pref.EnumDescriptor {
-	return fd.L1.Enum
-}
-func (fd *Field) Message() pref.MessageDescriptor {
-	if fd.L1.IsWeak {
-		if d, _ := protoregistry.GlobalFiles.FindDescriptorByName(fd.L1.Message.FullName()); d != nil {
-			return d.(pref.MessageDescriptor)
-		}
-	}
-	return fd.L1.Message
-}
-func (fd *Field) Format(s fmt.State, r rune)     { descfmt.FormatDesc(s, r, fd) }
-func (fd *Field) ProtoType(pref.FieldDescriptor) {}
-
-// EnforceUTF8 is a pseudo-internal API to determine whether to enforce UTF-8
-// validation for the string field. This exists for Google-internal use only
-// since proto3 did not enforce UTF-8 validity prior to the open-source release.
-// If this method does not exist, the default is to enforce valid UTF-8.
-//
-// WARNING: This method is exempt from the compatibility promise and may be
-// removed in the future without warning.
-func (fd *Field) EnforceUTF8() bool {
-	if fd.L1.HasEnforceUTF8 {
-		return fd.L1.EnforceUTF8
-	}
-	return fd.L0.ParentFile.L1.Syntax == pref.Proto3
-}
-
-func (od *Oneof) IsSynthetic() bool {
-	return od.L0.ParentFile.L1.Syntax == pref.Proto3 && len(od.L1.Fields.List) == 1 && od.L1.Fields.List[0].HasOptionalKeyword()
-}
-func (od *Oneof) Options() pref.ProtoMessage {
-	if f := od.L1.Options; f != nil {
-		return f()
-	}
-	return descopts.Oneof
-}
-func (od *Oneof) Fields() pref.FieldDescriptors  { return &od.L1.Fields }
-func (od *Oneof) Format(s fmt.State, r rune)     { descfmt.FormatDesc(s, r, od) }
-func (od *Oneof) ProtoType(pref.OneofDescriptor) {}
-
-type (
-	Extension struct {
-		Base
-		L1 ExtensionL1
-		L2 *ExtensionL2 // protected by fileDesc.once
-	}
-	ExtensionL1 struct {
-		Number      pref.FieldNumber
-		Extendee    pref.MessageDescriptor
-		Cardinality pref.Cardinality
-		Kind        pref.Kind
-	}
-	ExtensionL2 struct {
-		Options          func() pref.ProtoMessage
-		StringName       stringName
-		IsProto3Optional bool // promoted from google.protobuf.FieldDescriptorProto
-		IsPacked         bool // promoted from google.protobuf.FieldOptions
-		Default          defaultValue
-		Enum             pref.EnumDescriptor
-		Message          pref.MessageDescriptor
-	}
-)
-
-func (xd *Extension) Options() pref.ProtoMessage {
-	if f := xd.lazyInit().Options; f != nil {
-		return f()
-	}
-	return descopts.Field
-}
-func (xd *Extension) Number() pref.FieldNumber      { return xd.L1.Number }
-func (xd *Extension) Cardinality() pref.Cardinality { return xd.L1.Cardinality }
-func (xd *Extension) Kind() pref.Kind               { return xd.L1.Kind }
-func (xd *Extension) HasJSONName() bool             { return xd.lazyInit().StringName.hasJSON }
-func (xd *Extension) JSONName() string              { return xd.lazyInit().StringName.getJSON(xd) }
-func (xd *Extension) TextName() string              { return xd.lazyInit().StringName.getText(xd) }
-func (xd *Extension) HasPresence() bool             { return xd.L1.Cardinality != pref.Repeated }
-func (xd *Extension) HasOptionalKeyword() bool {
-	return (xd.L0.ParentFile.L1.Syntax == pref.Proto2 && xd.L1.Cardinality == pref.Optional) || xd.lazyInit().IsProto3Optional
-}
-func (xd *Extension) IsPacked() bool                             { return xd.lazyInit().IsPacked }
-func (xd *Extension) IsExtension() bool                          { return true }
-func (xd *Extension) IsWeak() bool                               { return false }
-func (xd *Extension) IsList() bool                               { return xd.Cardinality() == pref.Repeated }
-func (xd *Extension) IsMap() bool                                { return false }
-func (xd *Extension) MapKey() pref.FieldDescriptor               { return nil }
-func (xd *Extension) MapValue() pref.FieldDescriptor             { return nil }
-func (xd *Extension) HasDefault() bool                           { return xd.lazyInit().Default.has }
-func (xd *Extension) Default() pref.Value                        { return xd.lazyInit().Default.get(xd) }
-func (xd *Extension) DefaultEnumValue() pref.EnumValueDescriptor { return xd.lazyInit().Default.enum }
-func (xd *Extension) ContainingOneof() pref.OneofDescriptor      { return nil }
-func (xd *Extension) ContainingMessage() pref.MessageDescriptor  { return xd.L1.Extendee }
-func (xd *Extension) Enum() pref.EnumDescriptor                  { return xd.lazyInit().Enum }
-func (xd *Extension) Message() pref.MessageDescriptor            { return xd.lazyInit().Message }
-func (xd *Extension) Format(s fmt.State, r rune)                 { descfmt.FormatDesc(s, r, xd) }
-func (xd *Extension) ProtoType(pref.FieldDescriptor)             {}
-func (xd *Extension) ProtoInternal(pragma.DoNotImplement)        {}
-func (xd *Extension) lazyInit() *ExtensionL2 {
-	xd.L0.ParentFile.lazyInit() // implicitly initializes L2
-	return xd.L2
-}
-
-type (
-	Service struct {
-		Base
-		L1 ServiceL1
-		L2 *ServiceL2 // protected by fileDesc.once
-	}
-	ServiceL1 struct{}
-	ServiceL2 struct {
-		Options func() pref.ProtoMessage
-		Methods Methods
-	}
-
-	Method struct {
-		Base
-		L1 MethodL1
-	}
-	MethodL1 struct {
-		Options           func() pref.ProtoMessage
-		Input             pref.MessageDescriptor
-		Output            pref.MessageDescriptor
-		IsStreamingClient bool
-		IsStreamingServer bool
-	}
-)
-
-func (sd *Service) Options() pref.ProtoMessage {
-	if f := sd.lazyInit().Options; f != nil {
-		return f()
-	}
-	return descopts.Service
-}
-func (sd *Service) Methods() pref.MethodDescriptors     { return &sd.lazyInit().Methods }
-func (sd *Service) Format(s fmt.State, r rune)          { descfmt.FormatDesc(s, r, sd) }
-func (sd *Service) ProtoType(pref.ServiceDescriptor)    {}
-func (sd *Service) ProtoInternal(pragma.DoNotImplement) {}
-func (sd *Service) lazyInit() *ServiceL2 {
-	sd.L0.ParentFile.lazyInit() // implicitly initializes L2
-	return sd.L2
-}
-
-func (md *Method) Options() pref.ProtoMessage {
-	if f := md.L1.Options; f != nil {
-		return f()
-	}
-	return descopts.Method
-}
-func (md *Method) Input() pref.MessageDescriptor       { return md.L1.Input }
-func (md *Method) Output() pref.MessageDescriptor      { return md.L1.Output }
-func (md *Method) IsStreamingClient() bool             { return md.L1.IsStreamingClient }
-func (md *Method) IsStreamingServer() bool             { return md.L1.IsStreamingServer }
-func (md *Method) Format(s fmt.State, r rune)          { descfmt.FormatDesc(s, r, md) }
-func (md *Method) ProtoType(pref.MethodDescriptor)     {}
-func (md *Method) ProtoInternal(pragma.DoNotImplement) {}
-
-// Surrogate files are can be used to create standalone descriptors
-// where the syntax is only information derived from the parent file.
-var (
-	SurrogateProto2 = &File{L1: FileL1{Syntax: pref.Proto2}, L2: &FileL2{}}
-	SurrogateProto3 = &File{L1: FileL1{Syntax: pref.Proto3}, L2: &FileL2{}}
-)
-
-type (
-	Base struct {
-		L0 BaseL0
-	}
-	BaseL0 struct {
-		FullName   pref.FullName // must be populated
-		ParentFile *File         // must be populated
-		Parent     pref.Descriptor
-		Index      int
-	}
-)
-
-func (d *Base) Name() pref.Name         { return d.L0.FullName.Name() }
-func (d *Base) FullName() pref.FullName { return d.L0.FullName }
-func (d *Base) ParentFile() pref.FileDescriptor {
-	if d.L0.ParentFile == SurrogateProto2 || d.L0.ParentFile == SurrogateProto3 {
-		return nil // surrogate files are not real parents
-	}
-	return d.L0.ParentFile
-}
-func (d *Base) Parent() pref.Descriptor             { return d.L0.Parent }
-func (d *Base) Index() int                          { return d.L0.Index }
-func (d *Base) Syntax() pref.Syntax                 { return d.L0.ParentFile.Syntax() }
-func (d *Base) IsPlaceholder() bool                 { return false }
-func (d *Base) ProtoInternal(pragma.DoNotImplement) {}
-
-type stringName struct {
-	hasJSON  bool
-	once     sync.Once
-	nameJSON string
-	nameText string
-}
-
-// InitJSON initializes the name. It is exported for use by other internal packages.
-func (s *stringName) InitJSON(name string) {
-	s.hasJSON = true
-	s.nameJSON = name
-}
-
-func (s *stringName) lazyInit(fd pref.FieldDescriptor) *stringName {
-	s.once.Do(func() {
-		if fd.IsExtension() {
-			// For extensions, JSON and text are formatted the same way.
-			var name string
-			if messageset.IsMessageSetExtension(fd) {
-				name = string("[" + fd.FullName().Parent() + "]")
-			} else {
-				name = string("[" + fd.FullName() + "]")
-			}
-			s.nameJSON = name
-			s.nameText = name
-		} else {
-			// Format the JSON name.
-			if !s.hasJSON {
-				s.nameJSON = strs.JSONCamelCase(string(fd.Name()))
-			}
-
-			// Format the text name.
-			s.nameText = string(fd.Name())
-			if fd.Kind() == pref.GroupKind {
-				s.nameText = string(fd.Message().Name())
-			}
-		}
-	})
-	return s
-}
-
-func (s *stringName) getJSON(fd pref.FieldDescriptor) string { return s.lazyInit(fd).nameJSON }
-func (s *stringName) getText(fd pref.FieldDescriptor) string { return s.lazyInit(fd).nameText }
-
-func DefaultValue(v pref.Value, ev pref.EnumValueDescriptor) defaultValue {
-	dv := defaultValue{has: v.IsValid(), val: v, enum: ev}
-	if b, ok := v.Interface().([]byte); ok {
-		// Store a copy of the default bytes, so that we can detect
-		// accidental mutations of the original value.
-		dv.bytes = append([]byte(nil), b...)
-	}
-	return dv
-}
-
-func unmarshalDefault(b []byte, k pref.Kind, pf *File, ed pref.EnumDescriptor) defaultValue {
-	var evs pref.EnumValueDescriptors
-	if k == pref.EnumKind {
-		// If the enum is declared within the same file, be careful not to
-		// blindly call the Values method, lest we bind ourselves in a deadlock.
-		if e, ok := ed.(*Enum); ok && e.L0.ParentFile == pf {
-			evs = &e.L2.Values
-		} else {
-			evs = ed.Values()
-		}
-
-		// If we are unable to resolve the enum dependency, use a placeholder
-		// enum value since we will not be able to parse the default value.
-		if ed.IsPlaceholder() && pref.Name(b).IsValid() {
-			v := pref.ValueOfEnum(0)
-			ev := PlaceholderEnumValue(ed.FullName().Parent().Append(pref.Name(b)))
-			return DefaultValue(v, ev)
-		}
-	}
-
-	v, ev, err := defval.Unmarshal(string(b), k, evs, defval.Descriptor)
-	if err != nil {
-		panic(err)
-	}
-	return DefaultValue(v, ev)
-}
-
-type defaultValue struct {
-	has   bool
-	val   pref.Value
-	enum  pref.EnumValueDescriptor
-	bytes []byte
-}
-
-func (dv *defaultValue) get(fd pref.FieldDescriptor) pref.Value {
-	// Return the zero value as the default if unpopulated.
-	if !dv.has {
-		if fd.Cardinality() == pref.Repeated {
-			return pref.Value{}
-		}
-		switch fd.Kind() {
-		case pref.BoolKind:
-			return pref.ValueOfBool(false)
-		case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
-			return pref.ValueOfInt32(0)
-		case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
-			return pref.ValueOfInt64(0)
-		case pref.Uint32Kind, pref.Fixed32Kind:
-			return pref.ValueOfUint32(0)
-		case pref.Uint64Kind, pref.Fixed64Kind:
-			return pref.ValueOfUint64(0)
-		case pref.FloatKind:
-			return pref.ValueOfFloat32(0)
-		case pref.DoubleKind:
-			return pref.ValueOfFloat64(0)
-		case pref.StringKind:
-			return pref.ValueOfString("")
-		case pref.BytesKind:
-			return pref.ValueOfBytes(nil)
-		case pref.EnumKind:
-			if evs := fd.Enum().Values(); evs.Len() > 0 {
-				return pref.ValueOfEnum(evs.Get(0).Number())
-			}
-			return pref.ValueOfEnum(0)
-		}
-	}
-
-	if len(dv.bytes) > 0 && !bytes.Equal(dv.bytes, dv.val.Bytes()) {
-		// TODO: Avoid panic if we're running with the race detector
-		// and instead spawn a goroutine that periodically resets
-		// this value back to the original to induce a race.
-		panic(fmt.Sprintf("detected mutation on the default bytes for %v", fd.FullName()))
-	}
-	return dv.val
-}
diff --git a/internal/filedesc/desc_init.go b/internal/filedesc/desc_init.go
deleted file mode 100644
index 66e1fee..0000000
--- a/internal/filedesc/desc_init.go
+++ /dev/null
@@ -1,471 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package filedesc
-
-import (
-	"sync"
-
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/genid"
-	"google.golang.org/protobuf/internal/strs"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-// fileRaw is a data struct used when initializing a file descriptor from
-// a raw FileDescriptorProto.
-type fileRaw struct {
-	builder       Builder
-	allEnums      []Enum
-	allMessages   []Message
-	allExtensions []Extension
-	allServices   []Service
-}
-
-func newRawFile(db Builder) *File {
-	fd := &File{fileRaw: fileRaw{builder: db}}
-	fd.initDecls(db.NumEnums, db.NumMessages, db.NumExtensions, db.NumServices)
-	fd.unmarshalSeed(db.RawDescriptor)
-
-	// Extended message targets are eagerly resolved since registration
-	// needs this information at program init time.
-	for i := range fd.allExtensions {
-		xd := &fd.allExtensions[i]
-		xd.L1.Extendee = fd.resolveMessageDependency(xd.L1.Extendee, listExtTargets, int32(i))
-	}
-
-	fd.checkDecls()
-	return fd
-}
-
-// initDecls pre-allocates slices for the exact number of enums, messages
-// (including map entries), extensions, and services declared in the proto file.
-// This is done to avoid regrowing the slice, which would change the address
-// for any previously seen declaration.
-//
-// The alloc methods "allocates" slices by pulling from the capacity.
-func (fd *File) initDecls(numEnums, numMessages, numExtensions, numServices int32) {
-	fd.allEnums = make([]Enum, 0, numEnums)
-	fd.allMessages = make([]Message, 0, numMessages)
-	fd.allExtensions = make([]Extension, 0, numExtensions)
-	fd.allServices = make([]Service, 0, numServices)
-}
-
-func (fd *File) allocEnums(n int) []Enum {
-	total := len(fd.allEnums)
-	es := fd.allEnums[total : total+n]
-	fd.allEnums = fd.allEnums[:total+n]
-	return es
-}
-func (fd *File) allocMessages(n int) []Message {
-	total := len(fd.allMessages)
-	ms := fd.allMessages[total : total+n]
-	fd.allMessages = fd.allMessages[:total+n]
-	return ms
-}
-func (fd *File) allocExtensions(n int) []Extension {
-	total := len(fd.allExtensions)
-	xs := fd.allExtensions[total : total+n]
-	fd.allExtensions = fd.allExtensions[:total+n]
-	return xs
-}
-func (fd *File) allocServices(n int) []Service {
-	total := len(fd.allServices)
-	xs := fd.allServices[total : total+n]
-	fd.allServices = fd.allServices[:total+n]
-	return xs
-}
-
-// checkDecls performs a sanity check that the expected number of expected
-// declarations matches the number that were found in the descriptor proto.
-func (fd *File) checkDecls() {
-	switch {
-	case len(fd.allEnums) != cap(fd.allEnums):
-	case len(fd.allMessages) != cap(fd.allMessages):
-	case len(fd.allExtensions) != cap(fd.allExtensions):
-	case len(fd.allServices) != cap(fd.allServices):
-	default:
-		return
-	}
-	panic("mismatching cardinality")
-}
-
-func (fd *File) unmarshalSeed(b []byte) {
-	sb := getBuilder()
-	defer putBuilder(sb)
-
-	var prevField pref.FieldNumber
-	var numEnums, numMessages, numExtensions, numServices int
-	var posEnums, posMessages, posExtensions, posServices int
-	b0 := b
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.BytesType:
-			v, m := protowire.ConsumeBytes(b)
-			b = b[m:]
-			switch num {
-			case genid.FileDescriptorProto_Syntax_field_number:
-				switch string(v) {
-				case "proto2":
-					fd.L1.Syntax = pref.Proto2
-				case "proto3":
-					fd.L1.Syntax = pref.Proto3
-				default:
-					panic("invalid syntax")
-				}
-			case genid.FileDescriptorProto_Name_field_number:
-				fd.L1.Path = sb.MakeString(v)
-			case genid.FileDescriptorProto_Package_field_number:
-				fd.L1.Package = pref.FullName(sb.MakeString(v))
-			case genid.FileDescriptorProto_EnumType_field_number:
-				if prevField != genid.FileDescriptorProto_EnumType_field_number {
-					if numEnums > 0 {
-						panic("non-contiguous repeated field")
-					}
-					posEnums = len(b0) - len(b) - n - m
-				}
-				numEnums++
-			case genid.FileDescriptorProto_MessageType_field_number:
-				if prevField != genid.FileDescriptorProto_MessageType_field_number {
-					if numMessages > 0 {
-						panic("non-contiguous repeated field")
-					}
-					posMessages = len(b0) - len(b) - n - m
-				}
-				numMessages++
-			case genid.FileDescriptorProto_Extension_field_number:
-				if prevField != genid.FileDescriptorProto_Extension_field_number {
-					if numExtensions > 0 {
-						panic("non-contiguous repeated field")
-					}
-					posExtensions = len(b0) - len(b) - n - m
-				}
-				numExtensions++
-			case genid.FileDescriptorProto_Service_field_number:
-				if prevField != genid.FileDescriptorProto_Service_field_number {
-					if numServices > 0 {
-						panic("non-contiguous repeated field")
-					}
-					posServices = len(b0) - len(b) - n - m
-				}
-				numServices++
-			}
-			prevField = num
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-			prevField = -1 // ignore known field numbers of unknown wire type
-		}
-	}
-
-	// If syntax is missing, it is assumed to be proto2.
-	if fd.L1.Syntax == 0 {
-		fd.L1.Syntax = pref.Proto2
-	}
-
-	// Must allocate all declarations before parsing each descriptor type
-	// to ensure we handled all descriptors in "flattened ordering".
-	if numEnums > 0 {
-		fd.L1.Enums.List = fd.allocEnums(numEnums)
-	}
-	if numMessages > 0 {
-		fd.L1.Messages.List = fd.allocMessages(numMessages)
-	}
-	if numExtensions > 0 {
-		fd.L1.Extensions.List = fd.allocExtensions(numExtensions)
-	}
-	if numServices > 0 {
-		fd.L1.Services.List = fd.allocServices(numServices)
-	}
-
-	if numEnums > 0 {
-		b := b0[posEnums:]
-		for i := range fd.L1.Enums.List {
-			_, n := protowire.ConsumeVarint(b)
-			v, m := protowire.ConsumeBytes(b[n:])
-			fd.L1.Enums.List[i].unmarshalSeed(v, sb, fd, fd, i)
-			b = b[n+m:]
-		}
-	}
-	if numMessages > 0 {
-		b := b0[posMessages:]
-		for i := range fd.L1.Messages.List {
-			_, n := protowire.ConsumeVarint(b)
-			v, m := protowire.ConsumeBytes(b[n:])
-			fd.L1.Messages.List[i].unmarshalSeed(v, sb, fd, fd, i)
-			b = b[n+m:]
-		}
-	}
-	if numExtensions > 0 {
-		b := b0[posExtensions:]
-		for i := range fd.L1.Extensions.List {
-			_, n := protowire.ConsumeVarint(b)
-			v, m := protowire.ConsumeBytes(b[n:])
-			fd.L1.Extensions.List[i].unmarshalSeed(v, sb, fd, fd, i)
-			b = b[n+m:]
-		}
-	}
-	if numServices > 0 {
-		b := b0[posServices:]
-		for i := range fd.L1.Services.List {
-			_, n := protowire.ConsumeVarint(b)
-			v, m := protowire.ConsumeBytes(b[n:])
-			fd.L1.Services.List[i].unmarshalSeed(v, sb, fd, fd, i)
-			b = b[n+m:]
-		}
-	}
-}
-
-func (ed *Enum) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd pref.Descriptor, i int) {
-	ed.L0.ParentFile = pf
-	ed.L0.Parent = pd
-	ed.L0.Index = i
-
-	var numValues int
-	for b := b; len(b) > 0; {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.BytesType:
-			v, m := protowire.ConsumeBytes(b)
-			b = b[m:]
-			switch num {
-			case genid.EnumDescriptorProto_Name_field_number:
-				ed.L0.FullName = appendFullName(sb, pd.FullName(), v)
-			case genid.EnumDescriptorProto_Value_field_number:
-				numValues++
-			}
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-		}
-	}
-
-	// Only construct enum value descriptors for top-level enums since
-	// they are needed for registration.
-	if pd != pf {
-		return
-	}
-	ed.L1.eagerValues = true
-	ed.L2 = new(EnumL2)
-	ed.L2.Values.List = make([]EnumValue, numValues)
-	for i := 0; len(b) > 0; {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.BytesType:
-			v, m := protowire.ConsumeBytes(b)
-			b = b[m:]
-			switch num {
-			case genid.EnumDescriptorProto_Value_field_number:
-				ed.L2.Values.List[i].unmarshalFull(v, sb, pf, ed, i)
-				i++
-			}
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-		}
-	}
-}
-
-func (md *Message) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd pref.Descriptor, i int) {
-	md.L0.ParentFile = pf
-	md.L0.Parent = pd
-	md.L0.Index = i
-
-	var prevField pref.FieldNumber
-	var numEnums, numMessages, numExtensions int
-	var posEnums, posMessages, posExtensions int
-	b0 := b
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.BytesType:
-			v, m := protowire.ConsumeBytes(b)
-			b = b[m:]
-			switch num {
-			case genid.DescriptorProto_Name_field_number:
-				md.L0.FullName = appendFullName(sb, pd.FullName(), v)
-			case genid.DescriptorProto_EnumType_field_number:
-				if prevField != genid.DescriptorProto_EnumType_field_number {
-					if numEnums > 0 {
-						panic("non-contiguous repeated field")
-					}
-					posEnums = len(b0) - len(b) - n - m
-				}
-				numEnums++
-			case genid.DescriptorProto_NestedType_field_number:
-				if prevField != genid.DescriptorProto_NestedType_field_number {
-					if numMessages > 0 {
-						panic("non-contiguous repeated field")
-					}
-					posMessages = len(b0) - len(b) - n - m
-				}
-				numMessages++
-			case genid.DescriptorProto_Extension_field_number:
-				if prevField != genid.DescriptorProto_Extension_field_number {
-					if numExtensions > 0 {
-						panic("non-contiguous repeated field")
-					}
-					posExtensions = len(b0) - len(b) - n - m
-				}
-				numExtensions++
-			case genid.DescriptorProto_Options_field_number:
-				md.unmarshalSeedOptions(v)
-			}
-			prevField = num
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-			prevField = -1 // ignore known field numbers of unknown wire type
-		}
-	}
-
-	// Must allocate all declarations before parsing each descriptor type
-	// to ensure we handled all descriptors in "flattened ordering".
-	if numEnums > 0 {
-		md.L1.Enums.List = pf.allocEnums(numEnums)
-	}
-	if numMessages > 0 {
-		md.L1.Messages.List = pf.allocMessages(numMessages)
-	}
-	if numExtensions > 0 {
-		md.L1.Extensions.List = pf.allocExtensions(numExtensions)
-	}
-
-	if numEnums > 0 {
-		b := b0[posEnums:]
-		for i := range md.L1.Enums.List {
-			_, n := protowire.ConsumeVarint(b)
-			v, m := protowire.ConsumeBytes(b[n:])
-			md.L1.Enums.List[i].unmarshalSeed(v, sb, pf, md, i)
-			b = b[n+m:]
-		}
-	}
-	if numMessages > 0 {
-		b := b0[posMessages:]
-		for i := range md.L1.Messages.List {
-			_, n := protowire.ConsumeVarint(b)
-			v, m := protowire.ConsumeBytes(b[n:])
-			md.L1.Messages.List[i].unmarshalSeed(v, sb, pf, md, i)
-			b = b[n+m:]
-		}
-	}
-	if numExtensions > 0 {
-		b := b0[posExtensions:]
-		for i := range md.L1.Extensions.List {
-			_, n := protowire.ConsumeVarint(b)
-			v, m := protowire.ConsumeBytes(b[n:])
-			md.L1.Extensions.List[i].unmarshalSeed(v, sb, pf, md, i)
-			b = b[n+m:]
-		}
-	}
-}
-
-func (md *Message) unmarshalSeedOptions(b []byte) {
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.VarintType:
-			v, m := protowire.ConsumeVarint(b)
-			b = b[m:]
-			switch num {
-			case genid.MessageOptions_MapEntry_field_number:
-				md.L1.IsMapEntry = protowire.DecodeBool(v)
-			case genid.MessageOptions_MessageSetWireFormat_field_number:
-				md.L1.IsMessageSet = protowire.DecodeBool(v)
-			}
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-		}
-	}
-}
-
-func (xd *Extension) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd pref.Descriptor, i int) {
-	xd.L0.ParentFile = pf
-	xd.L0.Parent = pd
-	xd.L0.Index = i
-
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.VarintType:
-			v, m := protowire.ConsumeVarint(b)
-			b = b[m:]
-			switch num {
-			case genid.FieldDescriptorProto_Number_field_number:
-				xd.L1.Number = pref.FieldNumber(v)
-			case genid.FieldDescriptorProto_Label_field_number:
-				xd.L1.Cardinality = pref.Cardinality(v)
-			case genid.FieldDescriptorProto_Type_field_number:
-				xd.L1.Kind = pref.Kind(v)
-			}
-		case protowire.BytesType:
-			v, m := protowire.ConsumeBytes(b)
-			b = b[m:]
-			switch num {
-			case genid.FieldDescriptorProto_Name_field_number:
-				xd.L0.FullName = appendFullName(sb, pd.FullName(), v)
-			case genid.FieldDescriptorProto_Extendee_field_number:
-				xd.L1.Extendee = PlaceholderMessage(makeFullName(sb, v))
-			}
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-		}
-	}
-}
-
-func (sd *Service) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd pref.Descriptor, i int) {
-	sd.L0.ParentFile = pf
-	sd.L0.Parent = pd
-	sd.L0.Index = i
-
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.BytesType:
-			v, m := protowire.ConsumeBytes(b)
-			b = b[m:]
-			switch num {
-			case genid.ServiceDescriptorProto_Name_field_number:
-				sd.L0.FullName = appendFullName(sb, pd.FullName(), v)
-			}
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-		}
-	}
-}
-
-var nameBuilderPool = sync.Pool{
-	New: func() interface{} { return new(strs.Builder) },
-}
-
-func getBuilder() *strs.Builder {
-	return nameBuilderPool.Get().(*strs.Builder)
-}
-func putBuilder(b *strs.Builder) {
-	nameBuilderPool.Put(b)
-}
-
-// makeFullName converts b to a protoreflect.FullName,
-// where b must start with a leading dot.
-func makeFullName(sb *strs.Builder, b []byte) pref.FullName {
-	if len(b) == 0 || b[0] != '.' {
-		panic("name reference must be fully qualified")
-	}
-	return pref.FullName(sb.MakeString(b[1:]))
-}
-
-func appendFullName(sb *strs.Builder, prefix pref.FullName, suffix []byte) pref.FullName {
-	return sb.AppendFullName(prefix, pref.Name(strs.UnsafeString(suffix)))
-}
diff --git a/internal/filedesc/desc_lazy.go b/internal/filedesc/desc_lazy.go
deleted file mode 100644
index 198451e..0000000
--- a/internal/filedesc/desc_lazy.go
+++ /dev/null
@@ -1,704 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package filedesc
-
-import (
-	"reflect"
-	"sync"
-
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/descopts"
-	"google.golang.org/protobuf/internal/genid"
-	"google.golang.org/protobuf/internal/strs"
-	"google.golang.org/protobuf/proto"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-func (fd *File) lazyRawInit() {
-	fd.unmarshalFull(fd.builder.RawDescriptor)
-	fd.resolveMessages()
-	fd.resolveExtensions()
-	fd.resolveServices()
-}
-
-func (file *File) resolveMessages() {
-	var depIdx int32
-	for i := range file.allMessages {
-		md := &file.allMessages[i]
-
-		// Resolve message field dependencies.
-		for j := range md.L2.Fields.List {
-			fd := &md.L2.Fields.List[j]
-
-			// Weak fields are resolved upon actual use.
-			if fd.L1.IsWeak {
-				continue
-			}
-
-			// Resolve message field dependency.
-			switch fd.L1.Kind {
-			case pref.EnumKind:
-				fd.L1.Enum = file.resolveEnumDependency(fd.L1.Enum, listFieldDeps, depIdx)
-				depIdx++
-			case pref.MessageKind, pref.GroupKind:
-				fd.L1.Message = file.resolveMessageDependency(fd.L1.Message, listFieldDeps, depIdx)
-				depIdx++
-			}
-
-			// Default is resolved here since it depends on Enum being resolved.
-			if v := fd.L1.Default.val; v.IsValid() {
-				fd.L1.Default = unmarshalDefault(v.Bytes(), fd.L1.Kind, file, fd.L1.Enum)
-			}
-		}
-	}
-}
-
-func (file *File) resolveExtensions() {
-	var depIdx int32
-	for i := range file.allExtensions {
-		xd := &file.allExtensions[i]
-
-		// Resolve extension field dependency.
-		switch xd.L1.Kind {
-		case pref.EnumKind:
-			xd.L2.Enum = file.resolveEnumDependency(xd.L2.Enum, listExtDeps, depIdx)
-			depIdx++
-		case pref.MessageKind, pref.GroupKind:
-			xd.L2.Message = file.resolveMessageDependency(xd.L2.Message, listExtDeps, depIdx)
-			depIdx++
-		}
-
-		// Default is resolved here since it depends on Enum being resolved.
-		if v := xd.L2.Default.val; v.IsValid() {
-			xd.L2.Default = unmarshalDefault(v.Bytes(), xd.L1.Kind, file, xd.L2.Enum)
-		}
-	}
-}
-
-func (file *File) resolveServices() {
-	var depIdx int32
-	for i := range file.allServices {
-		sd := &file.allServices[i]
-
-		// Resolve method dependencies.
-		for j := range sd.L2.Methods.List {
-			md := &sd.L2.Methods.List[j]
-			md.L1.Input = file.resolveMessageDependency(md.L1.Input, listMethInDeps, depIdx)
-			md.L1.Output = file.resolveMessageDependency(md.L1.Output, listMethOutDeps, depIdx)
-			depIdx++
-		}
-	}
-}
-
-func (file *File) resolveEnumDependency(ed pref.EnumDescriptor, i, j int32) pref.EnumDescriptor {
-	r := file.builder.FileRegistry
-	if r, ok := r.(resolverByIndex); ok {
-		if ed2 := r.FindEnumByIndex(i, j, file.allEnums, file.allMessages); ed2 != nil {
-			return ed2
-		}
-	}
-	for i := range file.allEnums {
-		if ed2 := &file.allEnums[i]; ed2.L0.FullName == ed.FullName() {
-			return ed2
-		}
-	}
-	if d, _ := r.FindDescriptorByName(ed.FullName()); d != nil {
-		return d.(pref.EnumDescriptor)
-	}
-	return ed
-}
-
-func (file *File) resolveMessageDependency(md pref.MessageDescriptor, i, j int32) pref.MessageDescriptor {
-	r := file.builder.FileRegistry
-	if r, ok := r.(resolverByIndex); ok {
-		if md2 := r.FindMessageByIndex(i, j, file.allEnums, file.allMessages); md2 != nil {
-			return md2
-		}
-	}
-	for i := range file.allMessages {
-		if md2 := &file.allMessages[i]; md2.L0.FullName == md.FullName() {
-			return md2
-		}
-	}
-	if d, _ := r.FindDescriptorByName(md.FullName()); d != nil {
-		return d.(pref.MessageDescriptor)
-	}
-	return md
-}
-
-func (fd *File) unmarshalFull(b []byte) {
-	sb := getBuilder()
-	defer putBuilder(sb)
-
-	var enumIdx, messageIdx, extensionIdx, serviceIdx int
-	var rawOptions []byte
-	fd.L2 = new(FileL2)
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.VarintType:
-			v, m := protowire.ConsumeVarint(b)
-			b = b[m:]
-			switch num {
-			case genid.FileDescriptorProto_PublicDependency_field_number:
-				fd.L2.Imports[v].IsPublic = true
-			case genid.FileDescriptorProto_WeakDependency_field_number:
-				fd.L2.Imports[v].IsWeak = true
-			}
-		case protowire.BytesType:
-			v, m := protowire.ConsumeBytes(b)
-			b = b[m:]
-			switch num {
-			case genid.FileDescriptorProto_Dependency_field_number:
-				path := sb.MakeString(v)
-				imp, _ := fd.builder.FileRegistry.FindFileByPath(path)
-				if imp == nil {
-					imp = PlaceholderFile(path)
-				}
-				fd.L2.Imports = append(fd.L2.Imports, pref.FileImport{FileDescriptor: imp})
-			case genid.FileDescriptorProto_EnumType_field_number:
-				fd.L1.Enums.List[enumIdx].unmarshalFull(v, sb)
-				enumIdx++
-			case genid.FileDescriptorProto_MessageType_field_number:
-				fd.L1.Messages.List[messageIdx].unmarshalFull(v, sb)
-				messageIdx++
-			case genid.FileDescriptorProto_Extension_field_number:
-				fd.L1.Extensions.List[extensionIdx].unmarshalFull(v, sb)
-				extensionIdx++
-			case genid.FileDescriptorProto_Service_field_number:
-				fd.L1.Services.List[serviceIdx].unmarshalFull(v, sb)
-				serviceIdx++
-			case genid.FileDescriptorProto_Options_field_number:
-				rawOptions = appendOptions(rawOptions, v)
-			}
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-		}
-	}
-	fd.L2.Options = fd.builder.optionsUnmarshaler(&descopts.File, rawOptions)
-}
-
-func (ed *Enum) unmarshalFull(b []byte, sb *strs.Builder) {
-	var rawValues [][]byte
-	var rawOptions []byte
-	if !ed.L1.eagerValues {
-		ed.L2 = new(EnumL2)
-	}
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.BytesType:
-			v, m := protowire.ConsumeBytes(b)
-			b = b[m:]
-			switch num {
-			case genid.EnumDescriptorProto_Value_field_number:
-				rawValues = append(rawValues, v)
-			case genid.EnumDescriptorProto_ReservedName_field_number:
-				ed.L2.ReservedNames.List = append(ed.L2.ReservedNames.List, pref.Name(sb.MakeString(v)))
-			case genid.EnumDescriptorProto_ReservedRange_field_number:
-				ed.L2.ReservedRanges.List = append(ed.L2.ReservedRanges.List, unmarshalEnumReservedRange(v))
-			case genid.EnumDescriptorProto_Options_field_number:
-				rawOptions = appendOptions(rawOptions, v)
-			}
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-		}
-	}
-	if !ed.L1.eagerValues && len(rawValues) > 0 {
-		ed.L2.Values.List = make([]EnumValue, len(rawValues))
-		for i, b := range rawValues {
-			ed.L2.Values.List[i].unmarshalFull(b, sb, ed.L0.ParentFile, ed, i)
-		}
-	}
-	ed.L2.Options = ed.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Enum, rawOptions)
-}
-
-func unmarshalEnumReservedRange(b []byte) (r [2]pref.EnumNumber) {
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.VarintType:
-			v, m := protowire.ConsumeVarint(b)
-			b = b[m:]
-			switch num {
-			case genid.EnumDescriptorProto_EnumReservedRange_Start_field_number:
-				r[0] = pref.EnumNumber(v)
-			case genid.EnumDescriptorProto_EnumReservedRange_End_field_number:
-				r[1] = pref.EnumNumber(v)
-			}
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-		}
-	}
-	return r
-}
-
-func (vd *EnumValue) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd pref.Descriptor, i int) {
-	vd.L0.ParentFile = pf
-	vd.L0.Parent = pd
-	vd.L0.Index = i
-
-	var rawOptions []byte
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.VarintType:
-			v, m := protowire.ConsumeVarint(b)
-			b = b[m:]
-			switch num {
-			case genid.EnumValueDescriptorProto_Number_field_number:
-				vd.L1.Number = pref.EnumNumber(v)
-			}
-		case protowire.BytesType:
-			v, m := protowire.ConsumeBytes(b)
-			b = b[m:]
-			switch num {
-			case genid.EnumValueDescriptorProto_Name_field_number:
-				// NOTE: Enum values are in the same scope as the enum parent.
-				vd.L0.FullName = appendFullName(sb, pd.Parent().FullName(), v)
-			case genid.EnumValueDescriptorProto_Options_field_number:
-				rawOptions = appendOptions(rawOptions, v)
-			}
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-		}
-	}
-	vd.L1.Options = pf.builder.optionsUnmarshaler(&descopts.EnumValue, rawOptions)
-}
-
-func (md *Message) unmarshalFull(b []byte, sb *strs.Builder) {
-	var rawFields, rawOneofs [][]byte
-	var enumIdx, messageIdx, extensionIdx int
-	var rawOptions []byte
-	md.L2 = new(MessageL2)
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.BytesType:
-			v, m := protowire.ConsumeBytes(b)
-			b = b[m:]
-			switch num {
-			case genid.DescriptorProto_Field_field_number:
-				rawFields = append(rawFields, v)
-			case genid.DescriptorProto_OneofDecl_field_number:
-				rawOneofs = append(rawOneofs, v)
-			case genid.DescriptorProto_ReservedName_field_number:
-				md.L2.ReservedNames.List = append(md.L2.ReservedNames.List, pref.Name(sb.MakeString(v)))
-			case genid.DescriptorProto_ReservedRange_field_number:
-				md.L2.ReservedRanges.List = append(md.L2.ReservedRanges.List, unmarshalMessageReservedRange(v))
-			case genid.DescriptorProto_ExtensionRange_field_number:
-				r, rawOptions := unmarshalMessageExtensionRange(v)
-				opts := md.L0.ParentFile.builder.optionsUnmarshaler(&descopts.ExtensionRange, rawOptions)
-				md.L2.ExtensionRanges.List = append(md.L2.ExtensionRanges.List, r)
-				md.L2.ExtensionRangeOptions = append(md.L2.ExtensionRangeOptions, opts)
-			case genid.DescriptorProto_EnumType_field_number:
-				md.L1.Enums.List[enumIdx].unmarshalFull(v, sb)
-				enumIdx++
-			case genid.DescriptorProto_NestedType_field_number:
-				md.L1.Messages.List[messageIdx].unmarshalFull(v, sb)
-				messageIdx++
-			case genid.DescriptorProto_Extension_field_number:
-				md.L1.Extensions.List[extensionIdx].unmarshalFull(v, sb)
-				extensionIdx++
-			case genid.DescriptorProto_Options_field_number:
-				md.unmarshalOptions(v)
-				rawOptions = appendOptions(rawOptions, v)
-			}
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-		}
-	}
-	if len(rawFields) > 0 || len(rawOneofs) > 0 {
-		md.L2.Fields.List = make([]Field, len(rawFields))
-		md.L2.Oneofs.List = make([]Oneof, len(rawOneofs))
-		for i, b := range rawFields {
-			fd := &md.L2.Fields.List[i]
-			fd.unmarshalFull(b, sb, md.L0.ParentFile, md, i)
-			if fd.L1.Cardinality == pref.Required {
-				md.L2.RequiredNumbers.List = append(md.L2.RequiredNumbers.List, fd.L1.Number)
-			}
-		}
-		for i, b := range rawOneofs {
-			od := &md.L2.Oneofs.List[i]
-			od.unmarshalFull(b, sb, md.L0.ParentFile, md, i)
-		}
-	}
-	md.L2.Options = md.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Message, rawOptions)
-}
-
-func (md *Message) unmarshalOptions(b []byte) {
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.VarintType:
-			v, m := protowire.ConsumeVarint(b)
-			b = b[m:]
-			switch num {
-			case genid.MessageOptions_MapEntry_field_number:
-				md.L1.IsMapEntry = protowire.DecodeBool(v)
-			case genid.MessageOptions_MessageSetWireFormat_field_number:
-				md.L1.IsMessageSet = protowire.DecodeBool(v)
-			}
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-		}
-	}
-}
-
-func unmarshalMessageReservedRange(b []byte) (r [2]pref.FieldNumber) {
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.VarintType:
-			v, m := protowire.ConsumeVarint(b)
-			b = b[m:]
-			switch num {
-			case genid.DescriptorProto_ReservedRange_Start_field_number:
-				r[0] = pref.FieldNumber(v)
-			case genid.DescriptorProto_ReservedRange_End_field_number:
-				r[1] = pref.FieldNumber(v)
-			}
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-		}
-	}
-	return r
-}
-
-func unmarshalMessageExtensionRange(b []byte) (r [2]pref.FieldNumber, rawOptions []byte) {
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.VarintType:
-			v, m := protowire.ConsumeVarint(b)
-			b = b[m:]
-			switch num {
-			case genid.DescriptorProto_ExtensionRange_Start_field_number:
-				r[0] = pref.FieldNumber(v)
-			case genid.DescriptorProto_ExtensionRange_End_field_number:
-				r[1] = pref.FieldNumber(v)
-			}
-		case protowire.BytesType:
-			v, m := protowire.ConsumeBytes(b)
-			b = b[m:]
-			switch num {
-			case genid.DescriptorProto_ExtensionRange_Options_field_number:
-				rawOptions = appendOptions(rawOptions, v)
-			}
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-		}
-	}
-	return r, rawOptions
-}
-
-func (fd *Field) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd pref.Descriptor, i int) {
-	fd.L0.ParentFile = pf
-	fd.L0.Parent = pd
-	fd.L0.Index = i
-
-	var rawTypeName []byte
-	var rawOptions []byte
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.VarintType:
-			v, m := protowire.ConsumeVarint(b)
-			b = b[m:]
-			switch num {
-			case genid.FieldDescriptorProto_Number_field_number:
-				fd.L1.Number = pref.FieldNumber(v)
-			case genid.FieldDescriptorProto_Label_field_number:
-				fd.L1.Cardinality = pref.Cardinality(v)
-			case genid.FieldDescriptorProto_Type_field_number:
-				fd.L1.Kind = pref.Kind(v)
-			case genid.FieldDescriptorProto_OneofIndex_field_number:
-				// In Message.unmarshalFull, we allocate slices for both
-				// the field and oneof descriptors before unmarshaling either
-				// of them. This ensures pointers to slice elements are stable.
-				od := &pd.(*Message).L2.Oneofs.List[v]
-				od.L1.Fields.List = append(od.L1.Fields.List, fd)
-				if fd.L1.ContainingOneof != nil {
-					panic("oneof type already set")
-				}
-				fd.L1.ContainingOneof = od
-			case genid.FieldDescriptorProto_Proto3Optional_field_number:
-				fd.L1.IsProto3Optional = protowire.DecodeBool(v)
-			}
-		case protowire.BytesType:
-			v, m := protowire.ConsumeBytes(b)
-			b = b[m:]
-			switch num {
-			case genid.FieldDescriptorProto_Name_field_number:
-				fd.L0.FullName = appendFullName(sb, pd.FullName(), v)
-			case genid.FieldDescriptorProto_JsonName_field_number:
-				fd.L1.StringName.InitJSON(sb.MakeString(v))
-			case genid.FieldDescriptorProto_DefaultValue_field_number:
-				fd.L1.Default.val = pref.ValueOfBytes(v) // temporarily store as bytes; later resolved in resolveMessages
-			case genid.FieldDescriptorProto_TypeName_field_number:
-				rawTypeName = v
-			case genid.FieldDescriptorProto_Options_field_number:
-				fd.unmarshalOptions(v)
-				rawOptions = appendOptions(rawOptions, v)
-			}
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-		}
-	}
-	if rawTypeName != nil {
-		name := makeFullName(sb, rawTypeName)
-		switch fd.L1.Kind {
-		case pref.EnumKind:
-			fd.L1.Enum = PlaceholderEnum(name)
-		case pref.MessageKind, pref.GroupKind:
-			fd.L1.Message = PlaceholderMessage(name)
-		}
-	}
-	fd.L1.Options = pf.builder.optionsUnmarshaler(&descopts.Field, rawOptions)
-}
-
-func (fd *Field) unmarshalOptions(b []byte) {
-	const FieldOptions_EnforceUTF8 = 13
-
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.VarintType:
-			v, m := protowire.ConsumeVarint(b)
-			b = b[m:]
-			switch num {
-			case genid.FieldOptions_Packed_field_number:
-				fd.L1.HasPacked = true
-				fd.L1.IsPacked = protowire.DecodeBool(v)
-			case genid.FieldOptions_Weak_field_number:
-				fd.L1.IsWeak = protowire.DecodeBool(v)
-			case FieldOptions_EnforceUTF8:
-				fd.L1.HasEnforceUTF8 = true
-				fd.L1.EnforceUTF8 = protowire.DecodeBool(v)
-			}
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-		}
-	}
-}
-
-func (od *Oneof) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd pref.Descriptor, i int) {
-	od.L0.ParentFile = pf
-	od.L0.Parent = pd
-	od.L0.Index = i
-
-	var rawOptions []byte
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.BytesType:
-			v, m := protowire.ConsumeBytes(b)
-			b = b[m:]
-			switch num {
-			case genid.OneofDescriptorProto_Name_field_number:
-				od.L0.FullName = appendFullName(sb, pd.FullName(), v)
-			case genid.OneofDescriptorProto_Options_field_number:
-				rawOptions = appendOptions(rawOptions, v)
-			}
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-		}
-	}
-	od.L1.Options = pf.builder.optionsUnmarshaler(&descopts.Oneof, rawOptions)
-}
-
-func (xd *Extension) unmarshalFull(b []byte, sb *strs.Builder) {
-	var rawTypeName []byte
-	var rawOptions []byte
-	xd.L2 = new(ExtensionL2)
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.VarintType:
-			v, m := protowire.ConsumeVarint(b)
-			b = b[m:]
-			switch num {
-			case genid.FieldDescriptorProto_Proto3Optional_field_number:
-				xd.L2.IsProto3Optional = protowire.DecodeBool(v)
-			}
-		case protowire.BytesType:
-			v, m := protowire.ConsumeBytes(b)
-			b = b[m:]
-			switch num {
-			case genid.FieldDescriptorProto_JsonName_field_number:
-				xd.L2.StringName.InitJSON(sb.MakeString(v))
-			case genid.FieldDescriptorProto_DefaultValue_field_number:
-				xd.L2.Default.val = pref.ValueOfBytes(v) // temporarily store as bytes; later resolved in resolveExtensions
-			case genid.FieldDescriptorProto_TypeName_field_number:
-				rawTypeName = v
-			case genid.FieldDescriptorProto_Options_field_number:
-				xd.unmarshalOptions(v)
-				rawOptions = appendOptions(rawOptions, v)
-			}
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-		}
-	}
-	if rawTypeName != nil {
-		name := makeFullName(sb, rawTypeName)
-		switch xd.L1.Kind {
-		case pref.EnumKind:
-			xd.L2.Enum = PlaceholderEnum(name)
-		case pref.MessageKind, pref.GroupKind:
-			xd.L2.Message = PlaceholderMessage(name)
-		}
-	}
-	xd.L2.Options = xd.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Field, rawOptions)
-}
-
-func (xd *Extension) unmarshalOptions(b []byte) {
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.VarintType:
-			v, m := protowire.ConsumeVarint(b)
-			b = b[m:]
-			switch num {
-			case genid.FieldOptions_Packed_field_number:
-				xd.L2.IsPacked = protowire.DecodeBool(v)
-			}
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-		}
-	}
-}
-
-func (sd *Service) unmarshalFull(b []byte, sb *strs.Builder) {
-	var rawMethods [][]byte
-	var rawOptions []byte
-	sd.L2 = new(ServiceL2)
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.BytesType:
-			v, m := protowire.ConsumeBytes(b)
-			b = b[m:]
-			switch num {
-			case genid.ServiceDescriptorProto_Method_field_number:
-				rawMethods = append(rawMethods, v)
-			case genid.ServiceDescriptorProto_Options_field_number:
-				rawOptions = appendOptions(rawOptions, v)
-			}
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-		}
-	}
-	if len(rawMethods) > 0 {
-		sd.L2.Methods.List = make([]Method, len(rawMethods))
-		for i, b := range rawMethods {
-			sd.L2.Methods.List[i].unmarshalFull(b, sb, sd.L0.ParentFile, sd, i)
-		}
-	}
-	sd.L2.Options = sd.L0.ParentFile.builder.optionsUnmarshaler(&descopts.Service, rawOptions)
-}
-
-func (md *Method) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd pref.Descriptor, i int) {
-	md.L0.ParentFile = pf
-	md.L0.Parent = pd
-	md.L0.Index = i
-
-	var rawOptions []byte
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		b = b[n:]
-		switch typ {
-		case protowire.VarintType:
-			v, m := protowire.ConsumeVarint(b)
-			b = b[m:]
-			switch num {
-			case genid.MethodDescriptorProto_ClientStreaming_field_number:
-				md.L1.IsStreamingClient = protowire.DecodeBool(v)
-			case genid.MethodDescriptorProto_ServerStreaming_field_number:
-				md.L1.IsStreamingServer = protowire.DecodeBool(v)
-			}
-		case protowire.BytesType:
-			v, m := protowire.ConsumeBytes(b)
-			b = b[m:]
-			switch num {
-			case genid.MethodDescriptorProto_Name_field_number:
-				md.L0.FullName = appendFullName(sb, pd.FullName(), v)
-			case genid.MethodDescriptorProto_InputType_field_number:
-				md.L1.Input = PlaceholderMessage(makeFullName(sb, v))
-			case genid.MethodDescriptorProto_OutputType_field_number:
-				md.L1.Output = PlaceholderMessage(makeFullName(sb, v))
-			case genid.MethodDescriptorProto_Options_field_number:
-				rawOptions = appendOptions(rawOptions, v)
-			}
-		default:
-			m := protowire.ConsumeFieldValue(num, typ, b)
-			b = b[m:]
-		}
-	}
-	md.L1.Options = pf.builder.optionsUnmarshaler(&descopts.Method, rawOptions)
-}
-
-// appendOptions appends src to dst, where the returned slice is never nil.
-// This is necessary to distinguish between empty and unpopulated options.
-func appendOptions(dst, src []byte) []byte {
-	if dst == nil {
-		dst = []byte{}
-	}
-	return append(dst, src...)
-}
-
-// optionsUnmarshaler constructs a lazy unmarshal function for an options message.
-//
-// The type of message to unmarshal to is passed as a pointer since the
-// vars in descopts may not yet be populated at the time this function is called.
-func (db *Builder) optionsUnmarshaler(p *pref.ProtoMessage, b []byte) func() pref.ProtoMessage {
-	if b == nil {
-		return nil
-	}
-	var opts pref.ProtoMessage
-	var once sync.Once
-	return func() pref.ProtoMessage {
-		once.Do(func() {
-			if *p == nil {
-				panic("Descriptor.Options called without importing the descriptor package")
-			}
-			opts = reflect.New(reflect.TypeOf(*p).Elem()).Interface().(pref.ProtoMessage)
-			if err := (proto.UnmarshalOptions{
-				AllowPartial: true,
-				Resolver:     db.TypeResolver,
-			}).Unmarshal(b, opts); err != nil {
-				panic(err)
-			}
-		})
-		return opts
-	}
-}
diff --git a/internal/filedesc/desc_list.go b/internal/filedesc/desc_list.go
deleted file mode 100644
index aa294ff..0000000
--- a/internal/filedesc/desc_list.go
+++ /dev/null
@@ -1,450 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package filedesc
-
-import (
-	"fmt"
-	"math"
-	"sort"
-	"sync"
-
-	"google.golang.org/protobuf/internal/genid"
-
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/descfmt"
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/internal/pragma"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-type FileImports []pref.FileImport
-
-func (p *FileImports) Len() int                            { return len(*p) }
-func (p *FileImports) Get(i int) pref.FileImport           { return (*p)[i] }
-func (p *FileImports) Format(s fmt.State, r rune)          { descfmt.FormatList(s, r, p) }
-func (p *FileImports) ProtoInternal(pragma.DoNotImplement) {}
-
-type Names struct {
-	List []pref.Name
-	once sync.Once
-	has  map[pref.Name]int // protected by once
-}
-
-func (p *Names) Len() int                            { return len(p.List) }
-func (p *Names) Get(i int) pref.Name                 { return p.List[i] }
-func (p *Names) Has(s pref.Name) bool                { return p.lazyInit().has[s] > 0 }
-func (p *Names) Format(s fmt.State, r rune)          { descfmt.FormatList(s, r, p) }
-func (p *Names) ProtoInternal(pragma.DoNotImplement) {}
-func (p *Names) lazyInit() *Names {
-	p.once.Do(func() {
-		if len(p.List) > 0 {
-			p.has = make(map[pref.Name]int, len(p.List))
-			for _, s := range p.List {
-				p.has[s] = p.has[s] + 1
-			}
-		}
-	})
-	return p
-}
-
-// CheckValid reports any errors with the set of names with an error message
-// that completes the sentence: "ranges is invalid because it has ..."
-func (p *Names) CheckValid() error {
-	for s, n := range p.lazyInit().has {
-		switch {
-		case n > 1:
-			return errors.New("duplicate name: %q", s)
-		case false && !s.IsValid():
-			// NOTE: The C++ implementation does not validate the identifier.
-			// See https://github.com/protocolbuffers/protobuf/issues/6335.
-			return errors.New("invalid name: %q", s)
-		}
-	}
-	return nil
-}
-
-type EnumRanges struct {
-	List   [][2]pref.EnumNumber // start inclusive; end inclusive
-	once   sync.Once
-	sorted [][2]pref.EnumNumber // protected by once
-}
-
-func (p *EnumRanges) Len() int                     { return len(p.List) }
-func (p *EnumRanges) Get(i int) [2]pref.EnumNumber { return p.List[i] }
-func (p *EnumRanges) Has(n pref.EnumNumber) bool {
-	for ls := p.lazyInit().sorted; len(ls) > 0; {
-		i := len(ls) / 2
-		switch r := enumRange(ls[i]); {
-		case n < r.Start():
-			ls = ls[:i] // search lower
-		case n > r.End():
-			ls = ls[i+1:] // search upper
-		default:
-			return true
-		}
-	}
-	return false
-}
-func (p *EnumRanges) Format(s fmt.State, r rune)          { descfmt.FormatList(s, r, p) }
-func (p *EnumRanges) ProtoInternal(pragma.DoNotImplement) {}
-func (p *EnumRanges) lazyInit() *EnumRanges {
-	p.once.Do(func() {
-		p.sorted = append(p.sorted, p.List...)
-		sort.Slice(p.sorted, func(i, j int) bool {
-			return p.sorted[i][0] < p.sorted[j][0]
-		})
-	})
-	return p
-}
-
-// CheckValid reports any errors with the set of names with an error message
-// that completes the sentence: "ranges is invalid because it has ..."
-func (p *EnumRanges) CheckValid() error {
-	var rp enumRange
-	for i, r := range p.lazyInit().sorted {
-		r := enumRange(r)
-		switch {
-		case !(r.Start() <= r.End()):
-			return errors.New("invalid range: %v", r)
-		case !(rp.End() < r.Start()) && i > 0:
-			return errors.New("overlapping ranges: %v with %v", rp, r)
-		}
-		rp = r
-	}
-	return nil
-}
-
-type enumRange [2]protoreflect.EnumNumber
-
-func (r enumRange) Start() protoreflect.EnumNumber { return r[0] } // inclusive
-func (r enumRange) End() protoreflect.EnumNumber   { return r[1] } // inclusive
-func (r enumRange) String() string {
-	if r.Start() == r.End() {
-		return fmt.Sprintf("%d", r.Start())
-	}
-	return fmt.Sprintf("%d to %d", r.Start(), r.End())
-}
-
-type FieldRanges struct {
-	List   [][2]pref.FieldNumber // start inclusive; end exclusive
-	once   sync.Once
-	sorted [][2]pref.FieldNumber // protected by once
-}
-
-func (p *FieldRanges) Len() int                      { return len(p.List) }
-func (p *FieldRanges) Get(i int) [2]pref.FieldNumber { return p.List[i] }
-func (p *FieldRanges) Has(n pref.FieldNumber) bool {
-	for ls := p.lazyInit().sorted; len(ls) > 0; {
-		i := len(ls) / 2
-		switch r := fieldRange(ls[i]); {
-		case n < r.Start():
-			ls = ls[:i] // search lower
-		case n > r.End():
-			ls = ls[i+1:] // search upper
-		default:
-			return true
-		}
-	}
-	return false
-}
-func (p *FieldRanges) Format(s fmt.State, r rune)          { descfmt.FormatList(s, r, p) }
-func (p *FieldRanges) ProtoInternal(pragma.DoNotImplement) {}
-func (p *FieldRanges) lazyInit() *FieldRanges {
-	p.once.Do(func() {
-		p.sorted = append(p.sorted, p.List...)
-		sort.Slice(p.sorted, func(i, j int) bool {
-			return p.sorted[i][0] < p.sorted[j][0]
-		})
-	})
-	return p
-}
-
-// CheckValid reports any errors with the set of ranges with an error message
-// that completes the sentence: "ranges is invalid because it has ..."
-func (p *FieldRanges) CheckValid(isMessageSet bool) error {
-	var rp fieldRange
-	for i, r := range p.lazyInit().sorted {
-		r := fieldRange(r)
-		switch {
-		case !isValidFieldNumber(r.Start(), isMessageSet):
-			return errors.New("invalid field number: %d", r.Start())
-		case !isValidFieldNumber(r.End(), isMessageSet):
-			return errors.New("invalid field number: %d", r.End())
-		case !(r.Start() <= r.End()):
-			return errors.New("invalid range: %v", r)
-		case !(rp.End() < r.Start()) && i > 0:
-			return errors.New("overlapping ranges: %v with %v", rp, r)
-		}
-		rp = r
-	}
-	return nil
-}
-
-// isValidFieldNumber reports whether the field number is valid.
-// Unlike the FieldNumber.IsValid method, it allows ranges that cover the
-// reserved number range.
-func isValidFieldNumber(n protoreflect.FieldNumber, isMessageSet bool) bool {
-	return protowire.MinValidNumber <= n && (n <= protowire.MaxValidNumber || isMessageSet)
-}
-
-// CheckOverlap reports an error if p and q overlap.
-func (p *FieldRanges) CheckOverlap(q *FieldRanges) error {
-	rps := p.lazyInit().sorted
-	rqs := q.lazyInit().sorted
-	for pi, qi := 0, 0; pi < len(rps) && qi < len(rqs); {
-		rp := fieldRange(rps[pi])
-		rq := fieldRange(rqs[qi])
-		if !(rp.End() < rq.Start() || rq.End() < rp.Start()) {
-			return errors.New("overlapping ranges: %v with %v", rp, rq)
-		}
-		if rp.Start() < rq.Start() {
-			pi++
-		} else {
-			qi++
-		}
-	}
-	return nil
-}
-
-type fieldRange [2]protoreflect.FieldNumber
-
-func (r fieldRange) Start() protoreflect.FieldNumber { return r[0] }     // inclusive
-func (r fieldRange) End() protoreflect.FieldNumber   { return r[1] - 1 } // inclusive
-func (r fieldRange) String() string {
-	if r.Start() == r.End() {
-		return fmt.Sprintf("%d", r.Start())
-	}
-	return fmt.Sprintf("%d to %d", r.Start(), r.End())
-}
-
-type FieldNumbers struct {
-	List []pref.FieldNumber
-	once sync.Once
-	has  map[pref.FieldNumber]struct{} // protected by once
-}
-
-func (p *FieldNumbers) Len() int                   { return len(p.List) }
-func (p *FieldNumbers) Get(i int) pref.FieldNumber { return p.List[i] }
-func (p *FieldNumbers) Has(n pref.FieldNumber) bool {
-	p.once.Do(func() {
-		if len(p.List) > 0 {
-			p.has = make(map[pref.FieldNumber]struct{}, len(p.List))
-			for _, n := range p.List {
-				p.has[n] = struct{}{}
-			}
-		}
-	})
-	_, ok := p.has[n]
-	return ok
-}
-func (p *FieldNumbers) Format(s fmt.State, r rune)          { descfmt.FormatList(s, r, p) }
-func (p *FieldNumbers) ProtoInternal(pragma.DoNotImplement) {}
-
-type OneofFields struct {
-	List   []pref.FieldDescriptor
-	once   sync.Once
-	byName map[pref.Name]pref.FieldDescriptor        // protected by once
-	byJSON map[string]pref.FieldDescriptor           // protected by once
-	byText map[string]pref.FieldDescriptor           // protected by once
-	byNum  map[pref.FieldNumber]pref.FieldDescriptor // protected by once
-}
-
-func (p *OneofFields) Len() int                                         { return len(p.List) }
-func (p *OneofFields) Get(i int) pref.FieldDescriptor                   { return p.List[i] }
-func (p *OneofFields) ByName(s pref.Name) pref.FieldDescriptor          { return p.lazyInit().byName[s] }
-func (p *OneofFields) ByJSONName(s string) pref.FieldDescriptor         { return p.lazyInit().byJSON[s] }
-func (p *OneofFields) ByTextName(s string) pref.FieldDescriptor         { return p.lazyInit().byText[s] }
-func (p *OneofFields) ByNumber(n pref.FieldNumber) pref.FieldDescriptor { return p.lazyInit().byNum[n] }
-func (p *OneofFields) Format(s fmt.State, r rune)                       { descfmt.FormatList(s, r, p) }
-func (p *OneofFields) ProtoInternal(pragma.DoNotImplement)              {}
-
-func (p *OneofFields) lazyInit() *OneofFields {
-	p.once.Do(func() {
-		if len(p.List) > 0 {
-			p.byName = make(map[pref.Name]pref.FieldDescriptor, len(p.List))
-			p.byJSON = make(map[string]pref.FieldDescriptor, len(p.List))
-			p.byText = make(map[string]pref.FieldDescriptor, len(p.List))
-			p.byNum = make(map[pref.FieldNumber]pref.FieldDescriptor, len(p.List))
-			for _, f := range p.List {
-				// Field names and numbers are guaranteed to be unique.
-				p.byName[f.Name()] = f
-				p.byJSON[f.JSONName()] = f
-				p.byText[f.TextName()] = f
-				p.byNum[f.Number()] = f
-			}
-		}
-	})
-	return p
-}
-
-type SourceLocations struct {
-	// List is a list of SourceLocations.
-	// The SourceLocation.Next field does not need to be populated
-	// as it will be lazily populated upon first need.
-	List []pref.SourceLocation
-
-	// File is the parent file descriptor that these locations are relative to.
-	// If non-nil, ByDescriptor verifies that the provided descriptor
-	// is a child of this file descriptor.
-	File pref.FileDescriptor
-
-	once   sync.Once
-	byPath map[pathKey]int
-}
-
-func (p *SourceLocations) Len() int                      { return len(p.List) }
-func (p *SourceLocations) Get(i int) pref.SourceLocation { return p.lazyInit().List[i] }
-func (p *SourceLocations) byKey(k pathKey) pref.SourceLocation {
-	if i, ok := p.lazyInit().byPath[k]; ok {
-		return p.List[i]
-	}
-	return pref.SourceLocation{}
-}
-func (p *SourceLocations) ByPath(path pref.SourcePath) pref.SourceLocation {
-	return p.byKey(newPathKey(path))
-}
-func (p *SourceLocations) ByDescriptor(desc pref.Descriptor) pref.SourceLocation {
-	if p.File != nil && desc != nil && p.File != desc.ParentFile() {
-		return pref.SourceLocation{} // mismatching parent files
-	}
-	var pathArr [16]int32
-	path := pathArr[:0]
-	for {
-		switch desc.(type) {
-		case pref.FileDescriptor:
-			// Reverse the path since it was constructed in reverse.
-			for i, j := 0, len(path)-1; i < j; i, j = i+1, j-1 {
-				path[i], path[j] = path[j], path[i]
-			}
-			return p.byKey(newPathKey(path))
-		case pref.MessageDescriptor:
-			path = append(path, int32(desc.Index()))
-			desc = desc.Parent()
-			switch desc.(type) {
-			case pref.FileDescriptor:
-				path = append(path, int32(genid.FileDescriptorProto_MessageType_field_number))
-			case pref.MessageDescriptor:
-				path = append(path, int32(genid.DescriptorProto_NestedType_field_number))
-			default:
-				return pref.SourceLocation{}
-			}
-		case pref.FieldDescriptor:
-			isExtension := desc.(pref.FieldDescriptor).IsExtension()
-			path = append(path, int32(desc.Index()))
-			desc = desc.Parent()
-			if isExtension {
-				switch desc.(type) {
-				case pref.FileDescriptor:
-					path = append(path, int32(genid.FileDescriptorProto_Extension_field_number))
-				case pref.MessageDescriptor:
-					path = append(path, int32(genid.DescriptorProto_Extension_field_number))
-				default:
-					return pref.SourceLocation{}
-				}
-			} else {
-				switch desc.(type) {
-				case pref.MessageDescriptor:
-					path = append(path, int32(genid.DescriptorProto_Field_field_number))
-				default:
-					return pref.SourceLocation{}
-				}
-			}
-		case pref.OneofDescriptor:
-			path = append(path, int32(desc.Index()))
-			desc = desc.Parent()
-			switch desc.(type) {
-			case pref.MessageDescriptor:
-				path = append(path, int32(genid.DescriptorProto_OneofDecl_field_number))
-			default:
-				return pref.SourceLocation{}
-			}
-		case pref.EnumDescriptor:
-			path = append(path, int32(desc.Index()))
-			desc = desc.Parent()
-			switch desc.(type) {
-			case pref.FileDescriptor:
-				path = append(path, int32(genid.FileDescriptorProto_EnumType_field_number))
-			case pref.MessageDescriptor:
-				path = append(path, int32(genid.DescriptorProto_EnumType_field_number))
-			default:
-				return pref.SourceLocation{}
-			}
-		case pref.EnumValueDescriptor:
-			path = append(path, int32(desc.Index()))
-			desc = desc.Parent()
-			switch desc.(type) {
-			case pref.EnumDescriptor:
-				path = append(path, int32(genid.EnumDescriptorProto_Value_field_number))
-			default:
-				return pref.SourceLocation{}
-			}
-		case pref.ServiceDescriptor:
-			path = append(path, int32(desc.Index()))
-			desc = desc.Parent()
-			switch desc.(type) {
-			case pref.FileDescriptor:
-				path = append(path, int32(genid.FileDescriptorProto_Service_field_number))
-			default:
-				return pref.SourceLocation{}
-			}
-		case pref.MethodDescriptor:
-			path = append(path, int32(desc.Index()))
-			desc = desc.Parent()
-			switch desc.(type) {
-			case pref.ServiceDescriptor:
-				path = append(path, int32(genid.ServiceDescriptorProto_Method_field_number))
-			default:
-				return pref.SourceLocation{}
-			}
-		default:
-			return pref.SourceLocation{}
-		}
-	}
-}
-func (p *SourceLocations) lazyInit() *SourceLocations {
-	p.once.Do(func() {
-		if len(p.List) > 0 {
-			// Collect all the indexes for a given path.
-			pathIdxs := make(map[pathKey][]int, len(p.List))
-			for i, l := range p.List {
-				k := newPathKey(l.Path)
-				pathIdxs[k] = append(pathIdxs[k], i)
-			}
-
-			// Update the next index for all locations.
-			p.byPath = make(map[pathKey]int, len(p.List))
-			for k, idxs := range pathIdxs {
-				for i := 0; i < len(idxs)-1; i++ {
-					p.List[idxs[i]].Next = idxs[i+1]
-				}
-				p.List[idxs[len(idxs)-1]].Next = 0
-				p.byPath[k] = idxs[0] // record the first location for this path
-			}
-		}
-	})
-	return p
-}
-func (p *SourceLocations) ProtoInternal(pragma.DoNotImplement) {}
-
-// pathKey is a comparable representation of protoreflect.SourcePath.
-type pathKey struct {
-	arr [16]uint8 // first n-1 path segments; last element is the length
-	str string    // used if the path does not fit in arr
-}
-
-func newPathKey(p pref.SourcePath) (k pathKey) {
-	if len(p) < len(k.arr) {
-		for i, ps := range p {
-			if ps < 0 || math.MaxUint8 <= ps {
-				return pathKey{str: p.String()}
-			}
-			k.arr[i] = uint8(ps)
-		}
-		k.arr[len(k.arr)-1] = uint8(len(p))
-		return k
-	}
-	return pathKey{str: p.String()}
-}
diff --git a/internal/filedesc/desc_list_gen.go b/internal/filedesc/desc_list_gen.go
deleted file mode 100644
index 30db19f..0000000
--- a/internal/filedesc/desc_list_gen.go
+++ /dev/null
@@ -1,356 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by generate-types. DO NOT EDIT.
-
-package filedesc
-
-import (
-	"fmt"
-	"sync"
-
-	"google.golang.org/protobuf/internal/descfmt"
-	"google.golang.org/protobuf/internal/pragma"
-	"google.golang.org/protobuf/reflect/protoreflect"
-)
-
-type Enums struct {
-	List   []Enum
-	once   sync.Once
-	byName map[protoreflect.Name]*Enum // protected by once
-}
-
-func (p *Enums) Len() int {
-	return len(p.List)
-}
-func (p *Enums) Get(i int) protoreflect.EnumDescriptor {
-	return &p.List[i]
-}
-func (p *Enums) ByName(s protoreflect.Name) protoreflect.EnumDescriptor {
-	if d := p.lazyInit().byName[s]; d != nil {
-		return d
-	}
-	return nil
-}
-func (p *Enums) Format(s fmt.State, r rune) {
-	descfmt.FormatList(s, r, p)
-}
-func (p *Enums) ProtoInternal(pragma.DoNotImplement) {}
-func (p *Enums) lazyInit() *Enums {
-	p.once.Do(func() {
-		if len(p.List) > 0 {
-			p.byName = make(map[protoreflect.Name]*Enum, len(p.List))
-			for i := range p.List {
-				d := &p.List[i]
-				if _, ok := p.byName[d.Name()]; !ok {
-					p.byName[d.Name()] = d
-				}
-			}
-		}
-	})
-	return p
-}
-
-type EnumValues struct {
-	List   []EnumValue
-	once   sync.Once
-	byName map[protoreflect.Name]*EnumValue       // protected by once
-	byNum  map[protoreflect.EnumNumber]*EnumValue // protected by once
-}
-
-func (p *EnumValues) Len() int {
-	return len(p.List)
-}
-func (p *EnumValues) Get(i int) protoreflect.EnumValueDescriptor {
-	return &p.List[i]
-}
-func (p *EnumValues) ByName(s protoreflect.Name) protoreflect.EnumValueDescriptor {
-	if d := p.lazyInit().byName[s]; d != nil {
-		return d
-	}
-	return nil
-}
-func (p *EnumValues) ByNumber(n protoreflect.EnumNumber) protoreflect.EnumValueDescriptor {
-	if d := p.lazyInit().byNum[n]; d != nil {
-		return d
-	}
-	return nil
-}
-func (p *EnumValues) Format(s fmt.State, r rune) {
-	descfmt.FormatList(s, r, p)
-}
-func (p *EnumValues) ProtoInternal(pragma.DoNotImplement) {}
-func (p *EnumValues) lazyInit() *EnumValues {
-	p.once.Do(func() {
-		if len(p.List) > 0 {
-			p.byName = make(map[protoreflect.Name]*EnumValue, len(p.List))
-			p.byNum = make(map[protoreflect.EnumNumber]*EnumValue, len(p.List))
-			for i := range p.List {
-				d := &p.List[i]
-				if _, ok := p.byName[d.Name()]; !ok {
-					p.byName[d.Name()] = d
-				}
-				if _, ok := p.byNum[d.Number()]; !ok {
-					p.byNum[d.Number()] = d
-				}
-			}
-		}
-	})
-	return p
-}
-
-type Messages struct {
-	List   []Message
-	once   sync.Once
-	byName map[protoreflect.Name]*Message // protected by once
-}
-
-func (p *Messages) Len() int {
-	return len(p.List)
-}
-func (p *Messages) Get(i int) protoreflect.MessageDescriptor {
-	return &p.List[i]
-}
-func (p *Messages) ByName(s protoreflect.Name) protoreflect.MessageDescriptor {
-	if d := p.lazyInit().byName[s]; d != nil {
-		return d
-	}
-	return nil
-}
-func (p *Messages) Format(s fmt.State, r rune) {
-	descfmt.FormatList(s, r, p)
-}
-func (p *Messages) ProtoInternal(pragma.DoNotImplement) {}
-func (p *Messages) lazyInit() *Messages {
-	p.once.Do(func() {
-		if len(p.List) > 0 {
-			p.byName = make(map[protoreflect.Name]*Message, len(p.List))
-			for i := range p.List {
-				d := &p.List[i]
-				if _, ok := p.byName[d.Name()]; !ok {
-					p.byName[d.Name()] = d
-				}
-			}
-		}
-	})
-	return p
-}
-
-type Fields struct {
-	List   []Field
-	once   sync.Once
-	byName map[protoreflect.Name]*Field        // protected by once
-	byJSON map[string]*Field                   // protected by once
-	byText map[string]*Field                   // protected by once
-	byNum  map[protoreflect.FieldNumber]*Field // protected by once
-}
-
-func (p *Fields) Len() int {
-	return len(p.List)
-}
-func (p *Fields) Get(i int) protoreflect.FieldDescriptor {
-	return &p.List[i]
-}
-func (p *Fields) ByName(s protoreflect.Name) protoreflect.FieldDescriptor {
-	if d := p.lazyInit().byName[s]; d != nil {
-		return d
-	}
-	return nil
-}
-func (p *Fields) ByJSONName(s string) protoreflect.FieldDescriptor {
-	if d := p.lazyInit().byJSON[s]; d != nil {
-		return d
-	}
-	return nil
-}
-func (p *Fields) ByTextName(s string) protoreflect.FieldDescriptor {
-	if d := p.lazyInit().byText[s]; d != nil {
-		return d
-	}
-	return nil
-}
-func (p *Fields) ByNumber(n protoreflect.FieldNumber) protoreflect.FieldDescriptor {
-	if d := p.lazyInit().byNum[n]; d != nil {
-		return d
-	}
-	return nil
-}
-func (p *Fields) Format(s fmt.State, r rune) {
-	descfmt.FormatList(s, r, p)
-}
-func (p *Fields) ProtoInternal(pragma.DoNotImplement) {}
-func (p *Fields) lazyInit() *Fields {
-	p.once.Do(func() {
-		if len(p.List) > 0 {
-			p.byName = make(map[protoreflect.Name]*Field, len(p.List))
-			p.byJSON = make(map[string]*Field, len(p.List))
-			p.byText = make(map[string]*Field, len(p.List))
-			p.byNum = make(map[protoreflect.FieldNumber]*Field, len(p.List))
-			for i := range p.List {
-				d := &p.List[i]
-				if _, ok := p.byName[d.Name()]; !ok {
-					p.byName[d.Name()] = d
-				}
-				if _, ok := p.byJSON[d.JSONName()]; !ok {
-					p.byJSON[d.JSONName()] = d
-				}
-				if _, ok := p.byText[d.TextName()]; !ok {
-					p.byText[d.TextName()] = d
-				}
-				if _, ok := p.byNum[d.Number()]; !ok {
-					p.byNum[d.Number()] = d
-				}
-			}
-		}
-	})
-	return p
-}
-
-type Oneofs struct {
-	List   []Oneof
-	once   sync.Once
-	byName map[protoreflect.Name]*Oneof // protected by once
-}
-
-func (p *Oneofs) Len() int {
-	return len(p.List)
-}
-func (p *Oneofs) Get(i int) protoreflect.OneofDescriptor {
-	return &p.List[i]
-}
-func (p *Oneofs) ByName(s protoreflect.Name) protoreflect.OneofDescriptor {
-	if d := p.lazyInit().byName[s]; d != nil {
-		return d
-	}
-	return nil
-}
-func (p *Oneofs) Format(s fmt.State, r rune) {
-	descfmt.FormatList(s, r, p)
-}
-func (p *Oneofs) ProtoInternal(pragma.DoNotImplement) {}
-func (p *Oneofs) lazyInit() *Oneofs {
-	p.once.Do(func() {
-		if len(p.List) > 0 {
-			p.byName = make(map[protoreflect.Name]*Oneof, len(p.List))
-			for i := range p.List {
-				d := &p.List[i]
-				if _, ok := p.byName[d.Name()]; !ok {
-					p.byName[d.Name()] = d
-				}
-			}
-		}
-	})
-	return p
-}
-
-type Extensions struct {
-	List   []Extension
-	once   sync.Once
-	byName map[protoreflect.Name]*Extension // protected by once
-}
-
-func (p *Extensions) Len() int {
-	return len(p.List)
-}
-func (p *Extensions) Get(i int) protoreflect.ExtensionDescriptor {
-	return &p.List[i]
-}
-func (p *Extensions) ByName(s protoreflect.Name) protoreflect.ExtensionDescriptor {
-	if d := p.lazyInit().byName[s]; d != nil {
-		return d
-	}
-	return nil
-}
-func (p *Extensions) Format(s fmt.State, r rune) {
-	descfmt.FormatList(s, r, p)
-}
-func (p *Extensions) ProtoInternal(pragma.DoNotImplement) {}
-func (p *Extensions) lazyInit() *Extensions {
-	p.once.Do(func() {
-		if len(p.List) > 0 {
-			p.byName = make(map[protoreflect.Name]*Extension, len(p.List))
-			for i := range p.List {
-				d := &p.List[i]
-				if _, ok := p.byName[d.Name()]; !ok {
-					p.byName[d.Name()] = d
-				}
-			}
-		}
-	})
-	return p
-}
-
-type Services struct {
-	List   []Service
-	once   sync.Once
-	byName map[protoreflect.Name]*Service // protected by once
-}
-
-func (p *Services) Len() int {
-	return len(p.List)
-}
-func (p *Services) Get(i int) protoreflect.ServiceDescriptor {
-	return &p.List[i]
-}
-func (p *Services) ByName(s protoreflect.Name) protoreflect.ServiceDescriptor {
-	if d := p.lazyInit().byName[s]; d != nil {
-		return d
-	}
-	return nil
-}
-func (p *Services) Format(s fmt.State, r rune) {
-	descfmt.FormatList(s, r, p)
-}
-func (p *Services) ProtoInternal(pragma.DoNotImplement) {}
-func (p *Services) lazyInit() *Services {
-	p.once.Do(func() {
-		if len(p.List) > 0 {
-			p.byName = make(map[protoreflect.Name]*Service, len(p.List))
-			for i := range p.List {
-				d := &p.List[i]
-				if _, ok := p.byName[d.Name()]; !ok {
-					p.byName[d.Name()] = d
-				}
-			}
-		}
-	})
-	return p
-}
-
-type Methods struct {
-	List   []Method
-	once   sync.Once
-	byName map[protoreflect.Name]*Method // protected by once
-}
-
-func (p *Methods) Len() int {
-	return len(p.List)
-}
-func (p *Methods) Get(i int) protoreflect.MethodDescriptor {
-	return &p.List[i]
-}
-func (p *Methods) ByName(s protoreflect.Name) protoreflect.MethodDescriptor {
-	if d := p.lazyInit().byName[s]; d != nil {
-		return d
-	}
-	return nil
-}
-func (p *Methods) Format(s fmt.State, r rune) {
-	descfmt.FormatList(s, r, p)
-}
-func (p *Methods) ProtoInternal(pragma.DoNotImplement) {}
-func (p *Methods) lazyInit() *Methods {
-	p.once.Do(func() {
-		if len(p.List) > 0 {
-			p.byName = make(map[protoreflect.Name]*Method, len(p.List))
-			for i := range p.List {
-				d := &p.List[i]
-				if _, ok := p.byName[d.Name()]; !ok {
-					p.byName[d.Name()] = d
-				}
-			}
-		}
-	})
-	return p
-}
diff --git a/internal/filedesc/desc_test.go b/internal/filedesc/desc_test.go
deleted file mode 100644
index 4f204f8..0000000
--- a/internal/filedesc/desc_test.go
+++ /dev/null
@@ -1,850 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package filedesc_test
-
-import (
-	"fmt"
-	"reflect"
-	"regexp"
-	"strconv"
-	"strings"
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-
-	detrand "google.golang.org/protobuf/internal/detrand"
-	"google.golang.org/protobuf/internal/filedesc"
-	"google.golang.org/protobuf/proto"
-	pdesc "google.golang.org/protobuf/reflect/protodesc"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-
-	"google.golang.org/protobuf/types/descriptorpb"
-)
-
-func init() {
-	// Disable detrand to enable direct comparisons on outputs.
-	detrand.Disable()
-}
-
-// TODO: Test protodesc.NewFile with imported files.
-
-func TestFile(t *testing.T) {
-	f1 := &descriptorpb.FileDescriptorProto{
-		Syntax:  proto.String("proto2"),
-		Name:    proto.String("path/to/file.proto"),
-		Package: proto.String("test"),
-		Options: &descriptorpb.FileOptions{Deprecated: proto.Bool(true)},
-		MessageType: []*descriptorpb.DescriptorProto{{
-			Name: proto.String("A"),
-			Options: &descriptorpb.MessageOptions{
-				Deprecated: proto.Bool(true),
-			},
-		}, {
-			Name: proto.String("B"),
-			Field: []*descriptorpb.FieldDescriptorProto{{
-				Name:         proto.String("field_one"),
-				Number:       proto.Int32(1),
-				Label:        descriptorpb.FieldDescriptorProto_Label(pref.Optional).Enum(),
-				Type:         descriptorpb.FieldDescriptorProto_Type(pref.StringKind).Enum(),
-				DefaultValue: proto.String("hello, \"world!\"\n"),
-				OneofIndex:   proto.Int32(0),
-			}, {
-				Name:         proto.String("field_two"),
-				JsonName:     proto.String("Field2"),
-				Number:       proto.Int32(2),
-				Label:        descriptorpb.FieldDescriptorProto_Label(pref.Optional).Enum(),
-				Type:         descriptorpb.FieldDescriptorProto_Type(pref.EnumKind).Enum(),
-				DefaultValue: proto.String("BAR"),
-				TypeName:     proto.String(".test.E1"),
-				OneofIndex:   proto.Int32(1),
-			}, {
-				Name:       proto.String("field_three"),
-				Number:     proto.Int32(3),
-				Label:      descriptorpb.FieldDescriptorProto_Label(pref.Optional).Enum(),
-				Type:       descriptorpb.FieldDescriptorProto_Type(pref.MessageKind).Enum(),
-				TypeName:   proto.String(".test.C"),
-				OneofIndex: proto.Int32(1),
-			}, {
-				Name:     proto.String("field_four"),
-				JsonName: proto.String("Field4"),
-				Number:   proto.Int32(4),
-				Label:    descriptorpb.FieldDescriptorProto_Label(pref.Repeated).Enum(),
-				Type:     descriptorpb.FieldDescriptorProto_Type(pref.MessageKind).Enum(),
-				TypeName: proto.String(".test.B.FieldFourEntry"),
-			}, {
-				Name:    proto.String("field_five"),
-				Number:  proto.Int32(5),
-				Label:   descriptorpb.FieldDescriptorProto_Label(pref.Repeated).Enum(),
-				Type:    descriptorpb.FieldDescriptorProto_Type(pref.Int32Kind).Enum(),
-				Options: &descriptorpb.FieldOptions{Packed: proto.Bool(true)},
-			}, {
-				Name:   proto.String("field_six"),
-				Number: proto.Int32(6),
-				Label:  descriptorpb.FieldDescriptorProto_Label(pref.Required).Enum(),
-				Type:   descriptorpb.FieldDescriptorProto_Type(pref.BytesKind).Enum(),
-			}},
-			OneofDecl: []*descriptorpb.OneofDescriptorProto{
-				{
-					Name: proto.String("O1"),
-					Options: &descriptorpb.OneofOptions{
-						UninterpretedOption: []*descriptorpb.UninterpretedOption{
-							{StringValue: []byte("option")},
-						},
-					},
-				},
-				{Name: proto.String("O2")},
-			},
-			ReservedName: []string{"fizz", "buzz"},
-			ReservedRange: []*descriptorpb.DescriptorProto_ReservedRange{
-				{Start: proto.Int32(100), End: proto.Int32(200)},
-				{Start: proto.Int32(300), End: proto.Int32(301)},
-			},
-			ExtensionRange: []*descriptorpb.DescriptorProto_ExtensionRange{
-				{Start: proto.Int32(1000), End: proto.Int32(2000)},
-				{Start: proto.Int32(3000), End: proto.Int32(3001), Options: new(descriptorpb.ExtensionRangeOptions)},
-			},
-			NestedType: []*descriptorpb.DescriptorProto{{
-				Name: proto.String("FieldFourEntry"),
-				Field: []*descriptorpb.FieldDescriptorProto{{
-					Name:   proto.String("key"),
-					Number: proto.Int32(1),
-					Label:  descriptorpb.FieldDescriptorProto_Label(pref.Optional).Enum(),
-					Type:   descriptorpb.FieldDescriptorProto_Type(pref.StringKind).Enum(),
-				}, {
-					Name:     proto.String("value"),
-					Number:   proto.Int32(2),
-					Label:    descriptorpb.FieldDescriptorProto_Label(pref.Optional).Enum(),
-					Type:     descriptorpb.FieldDescriptorProto_Type(pref.MessageKind).Enum(),
-					TypeName: proto.String(".test.B"),
-				}},
-				Options: &descriptorpb.MessageOptions{
-					MapEntry: proto.Bool(true),
-				},
-			}},
-		}, {
-			Name: proto.String("C"),
-			NestedType: []*descriptorpb.DescriptorProto{{
-				Name: proto.String("A"),
-				Field: []*descriptorpb.FieldDescriptorProto{{
-					Name:         proto.String("F"),
-					Number:       proto.Int32(1),
-					Label:        descriptorpb.FieldDescriptorProto_Label(pref.Required).Enum(),
-					Type:         descriptorpb.FieldDescriptorProto_Type(pref.BytesKind).Enum(),
-					DefaultValue: proto.String(`dead\276\357`),
-				}},
-			}},
-			EnumType: []*descriptorpb.EnumDescriptorProto{{
-				Name: proto.String("E1"),
-				Value: []*descriptorpb.EnumValueDescriptorProto{
-					{Name: proto.String("FOO"), Number: proto.Int32(0)},
-					{Name: proto.String("BAR"), Number: proto.Int32(1)},
-				},
-			}},
-			Extension: []*descriptorpb.FieldDescriptorProto{{
-				Name:     proto.String("X"),
-				Number:   proto.Int32(1000),
-				Label:    descriptorpb.FieldDescriptorProto_Label(pref.Repeated).Enum(),
-				Type:     descriptorpb.FieldDescriptorProto_Type(pref.MessageKind).Enum(),
-				TypeName: proto.String(".test.C"),
-				Extendee: proto.String(".test.B"),
-			}},
-		}},
-		EnumType: []*descriptorpb.EnumDescriptorProto{{
-			Name:    proto.String("E1"),
-			Options: &descriptorpb.EnumOptions{Deprecated: proto.Bool(true)},
-			Value: []*descriptorpb.EnumValueDescriptorProto{
-				{
-					Name:    proto.String("FOO"),
-					Number:  proto.Int32(0),
-					Options: &descriptorpb.EnumValueOptions{Deprecated: proto.Bool(true)},
-				},
-				{Name: proto.String("BAR"), Number: proto.Int32(1)},
-			},
-			ReservedName: []string{"FIZZ", "BUZZ"},
-			ReservedRange: []*descriptorpb.EnumDescriptorProto_EnumReservedRange{
-				{Start: proto.Int32(10), End: proto.Int32(19)},
-				{Start: proto.Int32(30), End: proto.Int32(30)},
-			},
-		}},
-		Extension: []*descriptorpb.FieldDescriptorProto{{
-			Name:     proto.String("X"),
-			Number:   proto.Int32(1000),
-			Label:    descriptorpb.FieldDescriptorProto_Label(pref.Repeated).Enum(),
-			Type:     descriptorpb.FieldDescriptorProto_Type(pref.EnumKind).Enum(),
-			Options:  &descriptorpb.FieldOptions{Packed: proto.Bool(true)},
-			TypeName: proto.String(".test.E1"),
-			Extendee: proto.String(".test.B"),
-		}},
-		Service: []*descriptorpb.ServiceDescriptorProto{{
-			Name:    proto.String("S"),
-			Options: &descriptorpb.ServiceOptions{Deprecated: proto.Bool(true)},
-			Method: []*descriptorpb.MethodDescriptorProto{{
-				Name:            proto.String("M"),
-				InputType:       proto.String(".test.A"),
-				OutputType:      proto.String(".test.C.A"),
-				ClientStreaming: proto.Bool(true),
-				ServerStreaming: proto.Bool(true),
-				Options:         &descriptorpb.MethodOptions{Deprecated: proto.Bool(true)},
-			}},
-		}},
-	}
-	fd1, err := pdesc.NewFile(f1, nil)
-	if err != nil {
-		t.Fatalf("protodesc.NewFile() error: %v", err)
-	}
-
-	b, err := proto.Marshal(f1)
-	if err != nil {
-		t.Fatalf("proto.Marshal() error: %v", err)
-	}
-	fd2 := filedesc.Builder{RawDescriptor: b}.Build().File
-
-	tests := []struct {
-		name string
-		desc pref.FileDescriptor
-	}{
-		{"protodesc.NewFile", fd1},
-		{"filedesc.Builder.Build", fd2},
-	}
-	for _, tt := range tests {
-		tt := tt
-		t.Run(tt.name, func(t *testing.T) {
-			// Run sub-tests in parallel to induce potential races.
-			for i := 0; i < 2; i++ {
-				t.Run("Accessors", func(t *testing.T) { t.Parallel(); testFileAccessors(t, tt.desc) })
-				t.Run("Format", func(t *testing.T) { t.Parallel(); testFileFormat(t, tt.desc) })
-			}
-		})
-	}
-}
-
-func testFileAccessors(t *testing.T, fd pref.FileDescriptor) {
-	// Represent the descriptor as a map where each key is an accessor method
-	// and the value is either the wanted tail value or another accessor map.
-	type M = map[string]interface{}
-	want := M{
-		"Parent":        nil,
-		"Index":         0,
-		"Syntax":        pref.Proto2,
-		"Name":          pref.Name("test"),
-		"FullName":      pref.FullName("test"),
-		"Path":          "path/to/file.proto",
-		"Package":       pref.FullName("test"),
-		"IsPlaceholder": false,
-		"Options":       &descriptorpb.FileOptions{Deprecated: proto.Bool(true)},
-		"Messages": M{
-			"Len": 3,
-			"Get:0": M{
-				"Parent":        M{"FullName": pref.FullName("test")},
-				"Index":         0,
-				"Syntax":        pref.Proto2,
-				"Name":          pref.Name("A"),
-				"FullName":      pref.FullName("test.A"),
-				"IsPlaceholder": false,
-				"IsMapEntry":    false,
-				"Options": &descriptorpb.MessageOptions{
-					Deprecated: proto.Bool(true),
-				},
-				"Oneofs":          M{"Len": 0},
-				"RequiredNumbers": M{"Len": 0},
-				"ExtensionRanges": M{"Len": 0},
-				"Messages":        M{"Len": 0},
-				"Enums":           M{"Len": 0},
-				"Extensions":      M{"Len": 0},
-			},
-			"ByName:B": M{
-				"Name":  pref.Name("B"),
-				"Index": 1,
-				"Fields": M{
-					"Len":                  6,
-					"ByJSONName:field_one": nil,
-					"ByJSONName:fieldOne": M{
-						"Name":              pref.Name("field_one"),
-						"Index":             0,
-						"JSONName":          "fieldOne",
-						"Default":           "hello, \"world!\"\n",
-						"ContainingOneof":   M{"Name": pref.Name("O1"), "IsPlaceholder": false},
-						"ContainingMessage": M{"FullName": pref.FullName("test.B")},
-					},
-					"ByJSONName:fieldTwo": nil,
-					"ByJSONName:Field2": M{
-						"Name":            pref.Name("field_two"),
-						"Index":           1,
-						"HasJSONName":     true,
-						"JSONName":        "Field2",
-						"Default":         pref.EnumNumber(1),
-						"ContainingOneof": M{"Name": pref.Name("O2"), "IsPlaceholder": false},
-					},
-					"ByName:fieldThree": nil,
-					"ByName:field_three": M{
-						"IsExtension":       false,
-						"IsMap":             false,
-						"MapKey":            nil,
-						"MapValue":          nil,
-						"Message":           M{"FullName": pref.FullName("test.C"), "IsPlaceholder": false},
-						"ContainingOneof":   M{"Name": pref.Name("O2"), "IsPlaceholder": false},
-						"ContainingMessage": M{"FullName": pref.FullName("test.B")},
-					},
-					"ByNumber:12": nil,
-					"ByNumber:4": M{
-						"Cardinality": pref.Repeated,
-						"IsExtension": false,
-						"IsList":      false,
-						"IsMap":       true,
-						"MapKey":      M{"Kind": pref.StringKind},
-						"MapValue":    M{"Kind": pref.MessageKind, "Message": M{"FullName": pref.FullName("test.B")}},
-						"Default":     nil,
-						"Message":     M{"FullName": pref.FullName("test.B.FieldFourEntry"), "IsPlaceholder": false},
-					},
-					"ByNumber:5": M{
-						"Cardinality": pref.Repeated,
-						"Kind":        pref.Int32Kind,
-						"IsPacked":    true,
-						"IsList":      true,
-						"IsMap":       false,
-						"Default":     nil,
-					},
-					"ByNumber:6": M{
-						"Cardinality":     pref.Required,
-						"Default":         []byte(nil),
-						"ContainingOneof": nil,
-					},
-				},
-				"Oneofs": M{
-					"Len":       2,
-					"ByName:O0": nil,
-					"ByName:O1": M{
-						"FullName": pref.FullName("test.B.O1"),
-						"Index":    0,
-						"Options": &descriptorpb.OneofOptions{
-							UninterpretedOption: []*descriptorpb.UninterpretedOption{
-								{StringValue: []byte("option")},
-							},
-						},
-						"Fields": M{
-							"Len":   1,
-							"Get:0": M{"FullName": pref.FullName("test.B.field_one")},
-						},
-					},
-					"Get:1": M{
-						"FullName": pref.FullName("test.B.O2"),
-						"Index":    1,
-						"Fields": M{
-							"Len":              2,
-							"ByName:field_two": M{"Name": pref.Name("field_two")},
-							"Get:1":            M{"Name": pref.Name("field_three")},
-						},
-					},
-				},
-				"ReservedNames": M{
-					"Len":         2,
-					"Get:0":       pref.Name("fizz"),
-					"Has:buzz":    true,
-					"Has:noexist": false,
-				},
-				"ReservedRanges": M{
-					"Len":     2,
-					"Get:0":   [2]pref.FieldNumber{100, 200},
-					"Has:99":  false,
-					"Has:100": true,
-					"Has:150": true,
-					"Has:199": true,
-					"Has:200": false,
-					"Has:300": true,
-					"Has:301": false,
-				},
-				"RequiredNumbers": M{
-					"Len":   1,
-					"Get:0": pref.FieldNumber(6),
-					"Has:1": false,
-					"Has:6": true,
-				},
-				"ExtensionRanges": M{
-					"Len":      2,
-					"Get:0":    [2]pref.FieldNumber{1000, 2000},
-					"Has:999":  false,
-					"Has:1000": true,
-					"Has:1500": true,
-					"Has:1999": true,
-					"Has:2000": false,
-					"Has:3000": true,
-					"Has:3001": false,
-				},
-				"ExtensionRangeOptions:0": (*descriptorpb.ExtensionRangeOptions)(nil),
-				"ExtensionRangeOptions:1": new(descriptorpb.ExtensionRangeOptions),
-				"Messages": M{
-					"Get:0": M{
-						"Fields": M{
-							"Len": 2,
-							"ByNumber:1": M{
-								"Parent":            M{"FullName": pref.FullName("test.B.FieldFourEntry")},
-								"Index":             0,
-								"Name":              pref.Name("key"),
-								"FullName":          pref.FullName("test.B.FieldFourEntry.key"),
-								"Number":            pref.FieldNumber(1),
-								"Cardinality":       pref.Optional,
-								"Kind":              pref.StringKind,
-								"Options":           (*descriptorpb.FieldOptions)(nil),
-								"HasJSONName":       false,
-								"JSONName":          "key",
-								"IsPacked":          false,
-								"IsList":            false,
-								"IsMap":             false,
-								"IsExtension":       false,
-								"IsWeak":            false,
-								"Default":           "",
-								"ContainingOneof":   nil,
-								"ContainingMessage": M{"FullName": pref.FullName("test.B.FieldFourEntry")},
-								"Message":           nil,
-								"Enum":              nil,
-							},
-							"ByNumber:2": M{
-								"Parent":            M{"FullName": pref.FullName("test.B.FieldFourEntry")},
-								"Index":             1,
-								"Name":              pref.Name("value"),
-								"FullName":          pref.FullName("test.B.FieldFourEntry.value"),
-								"Number":            pref.FieldNumber(2),
-								"Cardinality":       pref.Optional,
-								"Kind":              pref.MessageKind,
-								"JSONName":          "value",
-								"IsPacked":          false,
-								"IsList":            false,
-								"IsMap":             false,
-								"IsExtension":       false,
-								"IsWeak":            false,
-								"Default":           nil,
-								"ContainingOneof":   nil,
-								"ContainingMessage": M{"FullName": pref.FullName("test.B.FieldFourEntry")},
-								"Message":           M{"FullName": pref.FullName("test.B"), "IsPlaceholder": false},
-								"Enum":              nil,
-							},
-							"ByNumber:3": nil,
-						},
-					},
-				},
-			},
-			"Get:2": M{
-				"Name":  pref.Name("C"),
-				"Index": 2,
-				"Messages": M{
-					"Len":   1,
-					"Get:0": M{"FullName": pref.FullName("test.C.A")},
-				},
-				"Enums": M{
-					"Len":   1,
-					"Get:0": M{"FullName": pref.FullName("test.C.E1")},
-				},
-				"Extensions": M{
-					"Len":   1,
-					"Get:0": M{"FullName": pref.FullName("test.C.X")},
-				},
-			},
-		},
-		"Enums": M{
-			"Len": 1,
-			"Get:0": M{
-				"Name":    pref.Name("E1"),
-				"Options": &descriptorpb.EnumOptions{Deprecated: proto.Bool(true)},
-				"Values": M{
-					"Len":        2,
-					"ByName:Foo": nil,
-					"ByName:FOO": M{
-						"FullName": pref.FullName("test.FOO"),
-						"Options":  &descriptorpb.EnumValueOptions{Deprecated: proto.Bool(true)},
-					},
-					"ByNumber:2": nil,
-					"ByNumber:1": M{"FullName": pref.FullName("test.BAR")},
-				},
-				"ReservedNames": M{
-					"Len":         2,
-					"Get:0":       pref.Name("FIZZ"),
-					"Has:BUZZ":    true,
-					"Has:NOEXIST": false,
-				},
-				"ReservedRanges": M{
-					"Len":    2,
-					"Get:0":  [2]pref.EnumNumber{10, 19},
-					"Has:9":  false,
-					"Has:10": true,
-					"Has:15": true,
-					"Has:19": true,
-					"Has:20": false,
-					"Has:30": true,
-					"Has:31": false,
-				},
-			},
-		},
-		"Extensions": M{
-			"Len": 1,
-			"ByName:X": M{
-				"Name":              pref.Name("X"),
-				"Number":            pref.FieldNumber(1000),
-				"Cardinality":       pref.Repeated,
-				"Kind":              pref.EnumKind,
-				"IsExtension":       true,
-				"IsPacked":          true,
-				"IsList":            true,
-				"IsMap":             false,
-				"MapKey":            nil,
-				"MapValue":          nil,
-				"ContainingOneof":   nil,
-				"ContainingMessage": M{"FullName": pref.FullName("test.B"), "IsPlaceholder": false},
-				"Enum":              M{"FullName": pref.FullName("test.E1"), "IsPlaceholder": false},
-				"Options":           &descriptorpb.FieldOptions{Packed: proto.Bool(true)},
-			},
-		},
-		"Services": M{
-			"Len":      1,
-			"ByName:s": nil,
-			"ByName:S": M{
-				"Parent":   M{"FullName": pref.FullName("test")},
-				"Name":     pref.Name("S"),
-				"FullName": pref.FullName("test.S"),
-				"Options":  &descriptorpb.ServiceOptions{Deprecated: proto.Bool(true)},
-				"Methods": M{
-					"Len": 1,
-					"Get:0": M{
-						"Parent":            M{"FullName": pref.FullName("test.S")},
-						"Name":              pref.Name("M"),
-						"FullName":          pref.FullName("test.S.M"),
-						"Input":             M{"FullName": pref.FullName("test.A"), "IsPlaceholder": false},
-						"Output":            M{"FullName": pref.FullName("test.C.A"), "IsPlaceholder": false},
-						"IsStreamingClient": true,
-						"IsStreamingServer": true,
-						"Options":           &descriptorpb.MethodOptions{Deprecated: proto.Bool(true)},
-					},
-				},
-			},
-		},
-	}
-	checkAccessors(t, "", reflect.ValueOf(fd), want)
-}
-func checkAccessors(t *testing.T, p string, rv reflect.Value, want map[string]interface{}) {
-	p0 := p
-	defer func() {
-		if ex := recover(); ex != nil {
-			t.Errorf("panic at %v: %v", p, ex)
-		}
-	}()
-
-	if rv.Interface() == nil {
-		t.Errorf("%v is nil, want non-nil", p)
-		return
-	}
-	for s, v := range want {
-		// Call the accessor method.
-		p = p0 + "." + s
-		var rets []reflect.Value
-		if i := strings.IndexByte(s, ':'); i >= 0 {
-			// Accessor method takes in a single argument, which is encoded
-			// after the accessor name, separated by a ':' delimiter.
-			fnc := rv.MethodByName(s[:i])
-			arg := reflect.New(fnc.Type().In(0)).Elem()
-			s = s[i+len(":"):]
-			switch arg.Kind() {
-			case reflect.String:
-				arg.SetString(s)
-			case reflect.Int32, reflect.Int:
-				n, _ := strconv.ParseInt(s, 0, 64)
-				arg.SetInt(n)
-			}
-			rets = fnc.Call([]reflect.Value{arg})
-		} else {
-			rets = rv.MethodByName(s).Call(nil)
-		}
-
-		// Check that (val, ok) pattern is internally consistent.
-		if len(rets) == 2 {
-			if rets[0].IsNil() && rets[1].Bool() {
-				t.Errorf("%v = (nil, true), want (nil, false)", p)
-			}
-			if !rets[0].IsNil() && !rets[1].Bool() {
-				t.Errorf("%v = (non-nil, false), want (non-nil, true)", p)
-			}
-		}
-
-		// Check that the accessor output matches.
-		if want, ok := v.(map[string]interface{}); ok {
-			checkAccessors(t, p, rets[0], want)
-			continue
-		}
-
-		got := rets[0].Interface()
-		if pv, ok := got.(pref.Value); ok {
-			got = pv.Interface()
-		}
-
-		// Compare with proto.Equal if possible.
-		gotMsg, gotMsgOK := got.(proto.Message)
-		wantMsg, wantMsgOK := v.(proto.Message)
-		if gotMsgOK && wantMsgOK {
-			gotNil := reflect.ValueOf(gotMsg).IsNil()
-			wantNil := reflect.ValueOf(wantMsg).IsNil()
-			switch {
-			case !gotNil && wantNil:
-				t.Errorf("%v = non-nil, want nil", p)
-			case gotNil && !wantNil:
-				t.Errorf("%v = nil, want non-nil", p)
-			case !proto.Equal(gotMsg, wantMsg):
-				t.Errorf("%v = %v, want %v", p, gotMsg, wantMsg)
-			}
-			continue
-		}
-
-		if want := v; !reflect.DeepEqual(got, want) {
-			t.Errorf("%v = %T(%v), want %T(%v)", p, got, got, want, want)
-		}
-	}
-}
-
-func testFileFormat(t *testing.T, fd pref.FileDescriptor) {
-	const wantFileDescriptor = `FileDescriptor{
-	Syntax:  proto2
-	Path:    "path/to/file.proto"
-	Package: test
-	Messages: [{
-		Name: A
-	}, {
-		Name: B
-		Fields: [{
-			Name:        field_one
-			Number:      1
-			Cardinality: optional
-			Kind:        string
-			JSONName:    "fieldOne"
-			HasPresence: true
-			HasDefault:  true
-			Default:     "hello, \"world!\"\n"
-			Oneof:       O1
-		}, {
-			Name:        field_two
-			Number:      2
-			Cardinality: optional
-			Kind:        enum
-			HasJSONName: true
-			JSONName:    "Field2"
-			HasPresence: true
-			HasDefault:  true
-			Default:     1
-			Oneof:       O2
-			Enum:        test.E1
-		}, {
-			Name:        field_three
-			Number:      3
-			Cardinality: optional
-			Kind:        message
-			JSONName:    "fieldThree"
-			HasPresence: true
-			Oneof:       O2
-			Message:     test.C
-		}, {
-			Name:        field_four
-			Number:      4
-			Cardinality: repeated
-			Kind:        message
-			HasJSONName: true
-			JSONName:    "Field4"
-			IsMap:       true
-			MapKey:      string
-			MapValue:    test.B
-		}, {
-			Name:        field_five
-			Number:      5
-			Cardinality: repeated
-			Kind:        int32
-			JSONName:    "fieldFive"
-			IsPacked:    true
-			IsList:      true
-		}, {
-			Name:        field_six
-			Number:      6
-			Cardinality: required
-			Kind:        bytes
-			JSONName:    "fieldSix"
-			HasPresence: true
-		}]
-		Oneofs: [{
-			Name:   O1
-			Fields: [field_one]
-		}, {
-			Name:   O2
-			Fields: [field_two, field_three]
-		}]
-		ReservedNames:   [fizz, buzz]
-		ReservedRanges:  [100:200, 300]
-		RequiredNumbers: [6]
-		ExtensionRanges: [1000:2000, 3000]
-		Messages: [{
-			Name:       FieldFourEntry
-			IsMapEntry: true
-			Fields: [{
-				Name:        key
-				Number:      1
-				Cardinality: optional
-				Kind:        string
-				JSONName:    "key"
-				HasPresence: true
-			}, {
-				Name:        value
-				Number:      2
-				Cardinality: optional
-				Kind:        message
-				JSONName:    "value"
-				HasPresence: true
-				Message:     test.B
-			}]
-		}]
-	}, {
-		Name: C
-		Messages: [{
-			Name: A
-			Fields: [{
-				Name:        F
-				Number:      1
-				Cardinality: required
-				Kind:        bytes
-				JSONName:    "F"
-				HasPresence: true
-				HasDefault:  true
-				Default:     "dead\xbe\xef"
-			}]
-			RequiredNumbers: [1]
-		}]
-		Enums: [{
-			Name: E1
-			Values: [
-				{Name: FOO}
-				{Name: BAR, Number: 1}
-			]
-		}]
-		Extensions: [{
-			Name:        X
-			Number:      1000
-			Cardinality: repeated
-			Kind:        message
-			JSONName:    "[test.C.X]"
-			IsExtension: true
-			IsList:      true
-			Extendee:    test.B
-			Message:     test.C
-		}]
-	}]
-	Enums: [{
-		Name: E1
-		Values: [
-			{Name: FOO}
-			{Name: BAR, Number: 1}
-		]
-		ReservedNames:  [FIZZ, BUZZ]
-		ReservedRanges: [10:20, 30]
-	}]
-	Extensions: [{
-		Name:        X
-		Number:      1000
-		Cardinality: repeated
-		Kind:        enum
-		JSONName:    "[test.X]"
-		IsExtension: true
-		IsPacked:    true
-		IsList:      true
-		Extendee:    test.B
-		Enum:        test.E1
-	}]
-	Services: [{
-		Name: S
-		Methods: [{
-			Name:              M
-			Input:             test.A
-			Output:            test.C.A
-			IsStreamingClient: true
-			IsStreamingServer: true
-		}]
-	}]
-}`
-
-	const wantEnums = `Enums{{
-	Name: E1
-	Values: [
-		{Name: FOO}
-		{Name: BAR, Number: 1}
-	]
-	ReservedNames:  [FIZZ, BUZZ]
-	ReservedRanges: [10:20, 30]
-}}`
-
-	const wantExtensions = `Extensions{{
-	Name:        X
-	Number:      1000
-	Cardinality: repeated
-	Kind:        enum
-	JSONName:    "[test.X]"
-	IsExtension: true
-	IsPacked:    true
-	IsList:      true
-	Extendee:    test.B
-	Enum:        test.E1
-}}`
-
-	const wantImports = `FileImports{}`
-
-	const wantReservedNames = "Names{fizz, buzz}"
-
-	const wantReservedRanges = "FieldRanges{100:200, 300}"
-
-	const wantServices = `Services{{
-	Name: S
-	Methods: [{
-		Name:              M
-		Input:             test.A
-		Output:            test.C.A
-		IsStreamingClient: true
-		IsStreamingServer: true
-	}]
-}}`
-
-	tests := []struct {
-		path string
-		fmt  string
-		want string
-		val  interface{}
-	}{
-		{"fd", "%v", compactMultiFormat(wantFileDescriptor), fd},
-		{"fd", "%+v", wantFileDescriptor, fd},
-		{"fd.Enums()", "%v", compactMultiFormat(wantEnums), fd.Enums()},
-		{"fd.Enums()", "%+v", wantEnums, fd.Enums()},
-		{"fd.Extensions()", "%v", compactMultiFormat(wantExtensions), fd.Extensions()},
-		{"fd.Extensions()", "%+v", wantExtensions, fd.Extensions()},
-		{"fd.Imports()", "%v", compactMultiFormat(wantImports), fd.Imports()},
-		{"fd.Imports()", "%+v", wantImports, fd.Imports()},
-		{"fd.Messages(B).ReservedNames()", "%v", compactMultiFormat(wantReservedNames), fd.Messages().ByName("B").ReservedNames()},
-		{"fd.Messages(B).ReservedNames()", "%+v", wantReservedNames, fd.Messages().ByName("B").ReservedNames()},
-		{"fd.Messages(B).ReservedRanges()", "%v", compactMultiFormat(wantReservedRanges), fd.Messages().ByName("B").ReservedRanges()},
-		{"fd.Messages(B).ReservedRanges()", "%+v", wantReservedRanges, fd.Messages().ByName("B").ReservedRanges()},
-		{"fd.Services()", "%v", compactMultiFormat(wantServices), fd.Services()},
-		{"fd.Services()", "%+v", wantServices, fd.Services()},
-	}
-	for _, tt := range tests {
-		got := fmt.Sprintf(tt.fmt, tt.val)
-		if diff := cmp.Diff(got, tt.want); diff != "" {
-			t.Errorf("fmt.Sprintf(%q, %s) mismatch (-got +want):\n%s", tt.fmt, tt.path, diff)
-		}
-	}
-}
-
-// compactMultiFormat returns the single line form of a multi line output.
-func compactMultiFormat(s string) string {
-	var b []byte
-	for _, s := range strings.Split(s, "\n") {
-		s = strings.TrimSpace(s)
-		s = regexp.MustCompile(": +").ReplaceAllString(s, ": ")
-		prevWord := len(b) > 0 && b[len(b)-1] != '[' && b[len(b)-1] != '{'
-		nextWord := len(s) > 0 && s[0] != ']' && s[0] != '}'
-		if prevWord && nextWord {
-			b = append(b, ", "...)
-		}
-		b = append(b, s...)
-	}
-	return string(b)
-}
diff --git a/internal/filedesc/placeholder.go b/internal/filedesc/placeholder.go
deleted file mode 100644
index dbf2c60..0000000
--- a/internal/filedesc/placeholder.go
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package filedesc
-
-import (
-	"google.golang.org/protobuf/internal/descopts"
-	"google.golang.org/protobuf/internal/pragma"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-var (
-	emptyNames           = new(Names)
-	emptyEnumRanges      = new(EnumRanges)
-	emptyFieldRanges     = new(FieldRanges)
-	emptyFieldNumbers    = new(FieldNumbers)
-	emptySourceLocations = new(SourceLocations)
-
-	emptyFiles      = new(FileImports)
-	emptyMessages   = new(Messages)
-	emptyFields     = new(Fields)
-	emptyOneofs     = new(Oneofs)
-	emptyEnums      = new(Enums)
-	emptyEnumValues = new(EnumValues)
-	emptyExtensions = new(Extensions)
-	emptyServices   = new(Services)
-)
-
-// PlaceholderFile is a placeholder, representing only the file path.
-type PlaceholderFile string
-
-func (f PlaceholderFile) ParentFile() pref.FileDescriptor       { return f }
-func (f PlaceholderFile) Parent() pref.Descriptor               { return nil }
-func (f PlaceholderFile) Index() int                            { return 0 }
-func (f PlaceholderFile) Syntax() pref.Syntax                   { return 0 }
-func (f PlaceholderFile) Name() pref.Name                       { return "" }
-func (f PlaceholderFile) FullName() pref.FullName               { return "" }
-func (f PlaceholderFile) IsPlaceholder() bool                   { return true }
-func (f PlaceholderFile) Options() pref.ProtoMessage            { return descopts.File }
-func (f PlaceholderFile) Path() string                          { return string(f) }
-func (f PlaceholderFile) Package() pref.FullName                { return "" }
-func (f PlaceholderFile) Imports() pref.FileImports             { return emptyFiles }
-func (f PlaceholderFile) Messages() pref.MessageDescriptors     { return emptyMessages }
-func (f PlaceholderFile) Enums() pref.EnumDescriptors           { return emptyEnums }
-func (f PlaceholderFile) Extensions() pref.ExtensionDescriptors { return emptyExtensions }
-func (f PlaceholderFile) Services() pref.ServiceDescriptors     { return emptyServices }
-func (f PlaceholderFile) SourceLocations() pref.SourceLocations { return emptySourceLocations }
-func (f PlaceholderFile) ProtoType(pref.FileDescriptor)         { return }
-func (f PlaceholderFile) ProtoInternal(pragma.DoNotImplement)   { return }
-
-// PlaceholderEnum is a placeholder, representing only the full name.
-type PlaceholderEnum pref.FullName
-
-func (e PlaceholderEnum) ParentFile() pref.FileDescriptor     { return nil }
-func (e PlaceholderEnum) Parent() pref.Descriptor             { return nil }
-func (e PlaceholderEnum) Index() int                          { return 0 }
-func (e PlaceholderEnum) Syntax() pref.Syntax                 { return 0 }
-func (e PlaceholderEnum) Name() pref.Name                     { return pref.FullName(e).Name() }
-func (e PlaceholderEnum) FullName() pref.FullName             { return pref.FullName(e) }
-func (e PlaceholderEnum) IsPlaceholder() bool                 { return true }
-func (e PlaceholderEnum) Options() pref.ProtoMessage          { return descopts.Enum }
-func (e PlaceholderEnum) Values() pref.EnumValueDescriptors   { return emptyEnumValues }
-func (e PlaceholderEnum) ReservedNames() pref.Names           { return emptyNames }
-func (e PlaceholderEnum) ReservedRanges() pref.EnumRanges     { return emptyEnumRanges }
-func (e PlaceholderEnum) ProtoType(pref.EnumDescriptor)       { return }
-func (e PlaceholderEnum) ProtoInternal(pragma.DoNotImplement) { return }
-
-// PlaceholderEnumValue is a placeholder, representing only the full name.
-type PlaceholderEnumValue pref.FullName
-
-func (e PlaceholderEnumValue) ParentFile() pref.FileDescriptor     { return nil }
-func (e PlaceholderEnumValue) Parent() pref.Descriptor             { return nil }
-func (e PlaceholderEnumValue) Index() int                          { return 0 }
-func (e PlaceholderEnumValue) Syntax() pref.Syntax                 { return 0 }
-func (e PlaceholderEnumValue) Name() pref.Name                     { return pref.FullName(e).Name() }
-func (e PlaceholderEnumValue) FullName() pref.FullName             { return pref.FullName(e) }
-func (e PlaceholderEnumValue) IsPlaceholder() bool                 { return true }
-func (e PlaceholderEnumValue) Options() pref.ProtoMessage          { return descopts.EnumValue }
-func (e PlaceholderEnumValue) Number() pref.EnumNumber             { return 0 }
-func (e PlaceholderEnumValue) ProtoType(pref.EnumValueDescriptor)  { return }
-func (e PlaceholderEnumValue) ProtoInternal(pragma.DoNotImplement) { return }
-
-// PlaceholderMessage is a placeholder, representing only the full name.
-type PlaceholderMessage pref.FullName
-
-func (m PlaceholderMessage) ParentFile() pref.FileDescriptor             { return nil }
-func (m PlaceholderMessage) Parent() pref.Descriptor                     { return nil }
-func (m PlaceholderMessage) Index() int                                  { return 0 }
-func (m PlaceholderMessage) Syntax() pref.Syntax                         { return 0 }
-func (m PlaceholderMessage) Name() pref.Name                             { return pref.FullName(m).Name() }
-func (m PlaceholderMessage) FullName() pref.FullName                     { return pref.FullName(m) }
-func (m PlaceholderMessage) IsPlaceholder() bool                         { return true }
-func (m PlaceholderMessage) Options() pref.ProtoMessage                  { return descopts.Message }
-func (m PlaceholderMessage) IsMapEntry() bool                            { return false }
-func (m PlaceholderMessage) Fields() pref.FieldDescriptors               { return emptyFields }
-func (m PlaceholderMessage) Oneofs() pref.OneofDescriptors               { return emptyOneofs }
-func (m PlaceholderMessage) ReservedNames() pref.Names                   { return emptyNames }
-func (m PlaceholderMessage) ReservedRanges() pref.FieldRanges            { return emptyFieldRanges }
-func (m PlaceholderMessage) RequiredNumbers() pref.FieldNumbers          { return emptyFieldNumbers }
-func (m PlaceholderMessage) ExtensionRanges() pref.FieldRanges           { return emptyFieldRanges }
-func (m PlaceholderMessage) ExtensionRangeOptions(int) pref.ProtoMessage { panic("index out of range") }
-func (m PlaceholderMessage) Messages() pref.MessageDescriptors           { return emptyMessages }
-func (m PlaceholderMessage) Enums() pref.EnumDescriptors                 { return emptyEnums }
-func (m PlaceholderMessage) Extensions() pref.ExtensionDescriptors       { return emptyExtensions }
-func (m PlaceholderMessage) ProtoType(pref.MessageDescriptor)            { return }
-func (m PlaceholderMessage) ProtoInternal(pragma.DoNotImplement)         { return }
diff --git a/internal/filetype/build.go b/internal/filetype/build.go
deleted file mode 100644
index 0a0dd35..0000000
--- a/internal/filetype/build.go
+++ /dev/null
@@ -1,297 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package filetype provides functionality for wrapping descriptors
-// with Go type information.
-package filetype
-
-import (
-	"reflect"
-
-	"google.golang.org/protobuf/internal/descopts"
-	fdesc "google.golang.org/protobuf/internal/filedesc"
-	pimpl "google.golang.org/protobuf/internal/impl"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	preg "google.golang.org/protobuf/reflect/protoregistry"
-)
-
-// Builder constructs type descriptors from a raw file descriptor
-// and associated Go types for each enum and message declaration.
-//
-//
-// Flattened Ordering
-//
-// The protobuf type system represents declarations as a tree. Certain nodes in
-// the tree require us to either associate it with a concrete Go type or to
-// resolve a dependency, which is information that must be provided separately
-// since it cannot be derived from the file descriptor alone.
-//
-// However, representing a tree as Go literals is difficult to simply do in a
-// space and time efficient way. Thus, we store them as a flattened list of
-// objects where the serialization order from the tree-based form is important.
-//
-// The "flattened ordering" is defined as a tree traversal of all enum, message,
-// extension, and service declarations using the following algorithm:
-//
-//	def VisitFileDecls(fd):
-//		for e in fd.Enums:      yield e
-//		for m in fd.Messages:   yield m
-//		for x in fd.Extensions: yield x
-//		for s in fd.Services:   yield s
-//		for m in fd.Messages:   yield from VisitMessageDecls(m)
-//
-//	def VisitMessageDecls(md):
-//		for e in md.Enums:      yield e
-//		for m in md.Messages:   yield m
-//		for x in md.Extensions: yield x
-//		for m in md.Messages:   yield from VisitMessageDecls(m)
-//
-// The traversal starts at the root file descriptor and yields each direct
-// declaration within each node before traversing into sub-declarations
-// that children themselves may have.
-type Builder struct {
-	// File is the underlying file descriptor builder.
-	File fdesc.Builder
-
-	// GoTypes is a unique set of the Go types for all declarations and
-	// dependencies. Each type is represented as a zero value of the Go type.
-	//
-	// Declarations are Go types generated for enums and messages directly
-	// declared (not publicly imported) in the proto source file.
-	// Messages for map entries are accounted for, but represented by nil.
-	// Enum declarations in "flattened ordering" come first, followed by
-	// message declarations in "flattened ordering".
-	//
-	// Dependencies are Go types for enums or messages referenced by
-	// message fields (excluding weak fields), for parent extended messages of
-	// extension fields, for enums or messages referenced by extension fields,
-	// and for input and output messages referenced by service methods.
-	// Dependencies must come after declarations, but the ordering of
-	// dependencies themselves is unspecified.
-	GoTypes []interface{}
-
-	// DependencyIndexes is an ordered list of indexes into GoTypes for the
-	// dependencies of messages, extensions, or services.
-	//
-	// There are 5 sub-lists in "flattened ordering" concatenated back-to-back:
-	//	0. Message field dependencies: list of the enum or message type
-	//	referred to by every message field.
-	//	1. Extension field targets: list of the extended parent message of
-	//	every extension.
-	//	2. Extension field dependencies: list of the enum or message type
-	//	referred to by every extension field.
-	//	3. Service method inputs: list of the input message type
-	//	referred to by every service method.
-	//	4. Service method outputs: list of the output message type
-	//	referred to by every service method.
-	//
-	// The offset into DependencyIndexes for the start of each sub-list
-	// is appended to the end in reverse order.
-	DependencyIndexes []int32
-
-	// EnumInfos is a list of enum infos in "flattened ordering".
-	EnumInfos []pimpl.EnumInfo
-
-	// MessageInfos is a list of message infos in "flattened ordering".
-	// If provided, the GoType and PBType for each element is populated.
-	//
-	// Requirement: len(MessageInfos) == len(Build.Messages)
-	MessageInfos []pimpl.MessageInfo
-
-	// ExtensionInfos is a list of extension infos in "flattened ordering".
-	// Each element is initialized and registered with the protoregistry package.
-	//
-	// Requirement: len(LegacyExtensions) == len(Build.Extensions)
-	ExtensionInfos []pimpl.ExtensionInfo
-
-	// TypeRegistry is the registry to register each type descriptor.
-	// If nil, it uses protoregistry.GlobalTypes.
-	TypeRegistry interface {
-		RegisterMessage(pref.MessageType) error
-		RegisterEnum(pref.EnumType) error
-		RegisterExtension(pref.ExtensionType) error
-	}
-}
-
-// Out is the output of the builder.
-type Out struct {
-	File pref.FileDescriptor
-}
-
-func (tb Builder) Build() (out Out) {
-	// Replace the resolver with one that resolves dependencies by index,
-	// which is faster and more reliable than relying on the global registry.
-	if tb.File.FileRegistry == nil {
-		tb.File.FileRegistry = preg.GlobalFiles
-	}
-	tb.File.FileRegistry = &resolverByIndex{
-		goTypes:      tb.GoTypes,
-		depIdxs:      tb.DependencyIndexes,
-		fileRegistry: tb.File.FileRegistry,
-	}
-
-	// Initialize registry if unpopulated.
-	if tb.TypeRegistry == nil {
-		tb.TypeRegistry = preg.GlobalTypes
-	}
-
-	fbOut := tb.File.Build()
-	out.File = fbOut.File
-
-	// Process enums.
-	enumGoTypes := tb.GoTypes[:len(fbOut.Enums)]
-	if len(tb.EnumInfos) != len(fbOut.Enums) {
-		panic("mismatching enum lengths")
-	}
-	if len(fbOut.Enums) > 0 {
-		for i := range fbOut.Enums {
-			tb.EnumInfos[i] = pimpl.EnumInfo{
-				GoReflectType: reflect.TypeOf(enumGoTypes[i]),
-				Desc:          &fbOut.Enums[i],
-			}
-			// Register enum types.
-			if err := tb.TypeRegistry.RegisterEnum(&tb.EnumInfos[i]); err != nil {
-				panic(err)
-			}
-		}
-	}
-
-	// Process messages.
-	messageGoTypes := tb.GoTypes[len(fbOut.Enums):][:len(fbOut.Messages)]
-	if len(tb.MessageInfos) != len(fbOut.Messages) {
-		panic("mismatching message lengths")
-	}
-	if len(fbOut.Messages) > 0 {
-		for i := range fbOut.Messages {
-			if messageGoTypes[i] == nil {
-				continue // skip map entry
-			}
-
-			tb.MessageInfos[i].GoReflectType = reflect.TypeOf(messageGoTypes[i])
-			tb.MessageInfos[i].Desc = &fbOut.Messages[i]
-
-			// Register message types.
-			if err := tb.TypeRegistry.RegisterMessage(&tb.MessageInfos[i]); err != nil {
-				panic(err)
-			}
-		}
-
-		// As a special-case for descriptor.proto,
-		// locally register concrete message type for the options.
-		if out.File.Path() == "google/protobuf/descriptor.proto" && out.File.Package() == "google.protobuf" {
-			for i := range fbOut.Messages {
-				switch fbOut.Messages[i].Name() {
-				case "FileOptions":
-					descopts.File = messageGoTypes[i].(pref.ProtoMessage)
-				case "EnumOptions":
-					descopts.Enum = messageGoTypes[i].(pref.ProtoMessage)
-				case "EnumValueOptions":
-					descopts.EnumValue = messageGoTypes[i].(pref.ProtoMessage)
-				case "MessageOptions":
-					descopts.Message = messageGoTypes[i].(pref.ProtoMessage)
-				case "FieldOptions":
-					descopts.Field = messageGoTypes[i].(pref.ProtoMessage)
-				case "OneofOptions":
-					descopts.Oneof = messageGoTypes[i].(pref.ProtoMessage)
-				case "ExtensionRangeOptions":
-					descopts.ExtensionRange = messageGoTypes[i].(pref.ProtoMessage)
-				case "ServiceOptions":
-					descopts.Service = messageGoTypes[i].(pref.ProtoMessage)
-				case "MethodOptions":
-					descopts.Method = messageGoTypes[i].(pref.ProtoMessage)
-				}
-			}
-		}
-	}
-
-	// Process extensions.
-	if len(tb.ExtensionInfos) != len(fbOut.Extensions) {
-		panic("mismatching extension lengths")
-	}
-	var depIdx int32
-	for i := range fbOut.Extensions {
-		// For enum and message kinds, determine the referent Go type so
-		// that we can construct their constructors.
-		const listExtDeps = 2
-		var goType reflect.Type
-		switch fbOut.Extensions[i].L1.Kind {
-		case pref.EnumKind:
-			j := depIdxs.Get(tb.DependencyIndexes, listExtDeps, depIdx)
-			goType = reflect.TypeOf(tb.GoTypes[j])
-			depIdx++
-		case pref.MessageKind, pref.GroupKind:
-			j := depIdxs.Get(tb.DependencyIndexes, listExtDeps, depIdx)
-			goType = reflect.TypeOf(tb.GoTypes[j])
-			depIdx++
-		default:
-			goType = goTypeForPBKind[fbOut.Extensions[i].L1.Kind]
-		}
-		if fbOut.Extensions[i].IsList() {
-			goType = reflect.SliceOf(goType)
-		}
-
-		pimpl.InitExtensionInfo(&tb.ExtensionInfos[i], &fbOut.Extensions[i], goType)
-
-		// Register extension types.
-		if err := tb.TypeRegistry.RegisterExtension(&tb.ExtensionInfos[i]); err != nil {
-			panic(err)
-		}
-	}
-
-	return out
-}
-
-var goTypeForPBKind = map[pref.Kind]reflect.Type{
-	pref.BoolKind:     reflect.TypeOf(bool(false)),
-	pref.Int32Kind:    reflect.TypeOf(int32(0)),
-	pref.Sint32Kind:   reflect.TypeOf(int32(0)),
-	pref.Sfixed32Kind: reflect.TypeOf(int32(0)),
-	pref.Int64Kind:    reflect.TypeOf(int64(0)),
-	pref.Sint64Kind:   reflect.TypeOf(int64(0)),
-	pref.Sfixed64Kind: reflect.TypeOf(int64(0)),
-	pref.Uint32Kind:   reflect.TypeOf(uint32(0)),
-	pref.Fixed32Kind:  reflect.TypeOf(uint32(0)),
-	pref.Uint64Kind:   reflect.TypeOf(uint64(0)),
-	pref.Fixed64Kind:  reflect.TypeOf(uint64(0)),
-	pref.FloatKind:    reflect.TypeOf(float32(0)),
-	pref.DoubleKind:   reflect.TypeOf(float64(0)),
-	pref.StringKind:   reflect.TypeOf(string("")),
-	pref.BytesKind:    reflect.TypeOf([]byte(nil)),
-}
-
-type depIdxs []int32
-
-// Get retrieves the jth element of the ith sub-list.
-func (x depIdxs) Get(i, j int32) int32 {
-	return x[x[int32(len(x))-i-1]+j]
-}
-
-type (
-	resolverByIndex struct {
-		goTypes []interface{}
-		depIdxs depIdxs
-		fileRegistry
-	}
-	fileRegistry interface {
-		FindFileByPath(string) (pref.FileDescriptor, error)
-		FindDescriptorByName(pref.FullName) (pref.Descriptor, error)
-		RegisterFile(pref.FileDescriptor) error
-	}
-)
-
-func (r *resolverByIndex) FindEnumByIndex(i, j int32, es []fdesc.Enum, ms []fdesc.Message) pref.EnumDescriptor {
-	if depIdx := int(r.depIdxs.Get(i, j)); int(depIdx) < len(es)+len(ms) {
-		return &es[depIdx]
-	} else {
-		return pimpl.Export{}.EnumDescriptorOf(r.goTypes[depIdx])
-	}
-}
-
-func (r *resolverByIndex) FindMessageByIndex(i, j int32, es []fdesc.Enum, ms []fdesc.Message) pref.MessageDescriptor {
-	if depIdx := int(r.depIdxs.Get(i, j)); depIdx < len(es)+len(ms) {
-		return &ms[depIdx-len(es)]
-	} else {
-		return pimpl.Export{}.MessageDescriptorOf(r.goTypes[depIdx])
-	}
-}
diff --git a/internal/flags/flags.go b/internal/flags/flags.go
deleted file mode 100644
index 58372dd..0000000
--- a/internal/flags/flags.go
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package flags provides a set of flags controlled by build tags.
-package flags
-
-// ProtoLegacy specifies whether to enable support for legacy functionality
-// such as MessageSets, weak fields, and various other obscure behavior
-// that is necessary to maintain backwards compatibility with proto1 or
-// the pre-release variants of proto2 and proto3.
-//
-// This is disabled by default unless built with the "protolegacy" tag.
-//
-// WARNING: The compatibility agreement covers nothing provided by this flag.
-// As such, functionality may suddenly be removed or changed at our discretion.
-const ProtoLegacy = protoLegacy
-
-// LazyUnmarshalExtensions specifies whether to lazily unmarshal extensions.
-//
-// Lazy extension unmarshaling validates the contents of message-valued
-// extension fields at unmarshal time, but defers creating the message
-// structure until the extension is first accessed.
-const LazyUnmarshalExtensions = ProtoLegacy
diff --git a/internal/flags/proto_legacy_disable.go b/internal/flags/proto_legacy_disable.go
deleted file mode 100644
index bda8e8c..0000000
--- a/internal/flags/proto_legacy_disable.go
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:build !protolegacy
-// +build !protolegacy
-
-package flags
-
-const protoLegacy = false
diff --git a/internal/flags/proto_legacy_enable.go b/internal/flags/proto_legacy_enable.go
deleted file mode 100644
index 6d8d9bd..0000000
--- a/internal/flags/proto_legacy_enable.go
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:build protolegacy
-// +build protolegacy
-
-package flags
-
-const protoLegacy = true
diff --git a/internal/fuzz/README.md b/internal/fuzz/README.md
deleted file mode 100644
index 62793fe..0000000
--- a/internal/fuzz/README.md
+++ /dev/null
@@ -1,26 +0,0 @@
-# Fuzzing
-
-Fuzzing support using [go-fuzz](https://github.com/dvyukov/go-fuzz).
-
-Basic operation:
-
-```sh
-$ go install github.com/dvyukov/go-fuzz/go-fuzz
-$ go install github.com/mdempsky/go114-fuzz-build
-$ cd internal/fuzz/{fuzzer}
-$ go114-fuzz-build google.golang.org/protobuf/internal/fuzz/{fuzzer}
-$ go-fuzz
-```
-
-## OSS-Fuzz
-
-Fuzzers are automatically run by
-[OSS-Fuzz](https://github.com/google/oss-fuzz).
-
-The OSS-Fuzz
-[configuration](https://github.com/google/oss-fuzz/blob/master/projects/golang-protobuf/build.sh)
-currently builds fuzzers in every directory under internal/fuzz.
-Only add fuzzers (not support packages) in this directory.
-
-Fuzzing results are available at the [OSS-Fuzz console](https://oss-fuzz.com/),
-under `golang-protobuf`.
diff --git a/internal/fuzz/jsonfuzz/corpus/e619335648415cae976b3200d5a291e8da4b4866 b/internal/fuzz/jsonfuzz/corpus/e619335648415cae976b3200d5a291e8da4b4866
deleted file mode 100755
index f8b6e00..0000000
--- a/internal/fuzz/jsonfuzz/corpus/e619335648415cae976b3200d5a291e8da4b4866
+++ /dev/null
@@ -1 +0,0 @@
-{"testAllTypes":{"optionalInt32":1001, "optionalInt64":"1002", "optionalUint32":1003, "optionalUint64":"1004", "optionalSint32":1005, "optionalSint64":"1006", "optionalFixed32":1007, "optionalFixed64":"1008", "optionalSfixed32":1009, "optionalSfixed64":"1010", "optionalFloat":1011.5, "optionalDouble":1012.5, "optionalBool":true, "optionalString":"string", "optionalBytes":"Ynl0ZXM=", "optionalgroup":{"a":1017}, "optionalNestedMessage":{"a":42, "corecursive":{"optionalInt32":43}}, "optionalNestedEnum":"BAR", "repeatedInt32":[1001, 2001], "repeatedInt64":["1002", "2002"], "repeatedUint32":[1003, 2003], "repeatedUint64":["1004", "2004"], "repeatedSint32":[1005, 2005], "repeatedSint64":["1006", "2006"], "repeatedFixed32":[1007, 2007], "repeatedFixed64":["1008", "2008"], "repeatedSfixed32":[1009, 2009], "repeatedSfixed64":["1010", "2010"], "repeatedFloat":[1011.5, 2011.5], "repeatedDouble":[1012.5, 2012.5], "repeatedBool":[true, false], "repeatedString":["foo", "bar"], "repeatedBytes":["Rk9P", "QkFS"], "repeatedgroup":[{"a":1017}, {}, {"a":2017}], "repeatedNestedMessage":[{"a":1}, {}, {"a":2}], "repeatedNestedEnum":["FOO", "BAR"], "mapInt32Int32":{"1056":1156, "2056":2156}, "mapInt64Int64":{"1057":"1157", "2057":"2157"}, "mapUint32Uint32":{"1058":1158, "2058":2158}, "mapUint64Uint64":{"1059":"1159", "2059":"2159"}, "mapSint32Sint32":{"1060":1160, "2060":2160}, "mapSint64Sint64":{"1061":"1161", "2061":"2161"}, "mapFixed32Fixed32":{"1062":1162, "2062":2162}, "mapFixed64Fixed64":{"1063":"1163", "2063":"2163"}, "mapSfixed32Sfixed32":{"1064":1164, "2064":2164}, "mapSfixed64Sfixed64":{"1065":"1165", "2065":"2165"}, "mapInt32Float":{"1066":1166.5, "2066":2166.5}, "mapInt32Double":{"1067":1167.5, "2067":2167.5}, "mapBoolBool":{"false":true, "true":false}, "mapStringString":{"69.1.key":"69.1.val", "69.2.key":"69.2.val"}, "mapStringBytes":{"70.1.key":"NzAuMS52YWw=", "70.2.key":"NzAuMi52YWw="}, "mapStringNestedMessage":{"71.1.key":{"a":1171}, "71.2.key":{"a":2171}}, "mapStringNestedEnum":{"73.1.key":"FOO", "73.2.key":"BAR"}, "oneofUint32":1111}}
\ No newline at end of file
diff --git a/internal/fuzz/jsonfuzz/fuzz.go b/internal/fuzz/jsonfuzz/fuzz.go
deleted file mode 100644
index b990346..0000000
--- a/internal/fuzz/jsonfuzz/fuzz.go
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package jsonfuzz includes fuzzers for protojson.Marshal and protojson.Unmarshal.
-package jsonfuzz
-
-import (
-	"google.golang.org/protobuf/encoding/protojson"
-	"google.golang.org/protobuf/proto"
-
-	fuzzpb "google.golang.org/protobuf/internal/testprotos/fuzz"
-)
-
-// Fuzz is a fuzzer for proto.Marshal and proto.Unmarshal.
-func Fuzz(data []byte) (score int) {
-	m1 := &fuzzpb.Fuzz{}
-	if err := (protojson.UnmarshalOptions{
-		AllowPartial: true,
-	}).Unmarshal(data, m1); err != nil {
-		return 0
-	}
-	data1, err := protojson.MarshalOptions{
-		AllowPartial: true,
-	}.Marshal(m1)
-	if err != nil {
-		panic(err)
-	}
-	m2 := &fuzzpb.Fuzz{}
-	if err := (protojson.UnmarshalOptions{
-		AllowPartial: true,
-	}).Unmarshal(data1, m2); err != nil {
-		return 0
-	}
-	if !proto.Equal(m1, m2) {
-		panic("not equal")
-	}
-	return 1
-}
diff --git a/internal/fuzz/jsonfuzz/fuzz_test.go b/internal/fuzz/jsonfuzz/fuzz_test.go
deleted file mode 100644
index 1c81e6f..0000000
--- a/internal/fuzz/jsonfuzz/fuzz_test.go
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package jsonfuzz
-
-import (
-	"testing"
-
-	"google.golang.org/protobuf/internal/fuzztest"
-)
-
-func Test(t *testing.T) {
-	fuzztest.Test(t, Fuzz)
-}
diff --git a/internal/fuzz/oss-fuzz-build.sh b/internal/fuzz/oss-fuzz-build.sh
deleted file mode 100644
index 459d102..0000000
--- a/internal/fuzz/oss-fuzz-build.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright 2020 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-# This script is executed by OSS-Fuzz's build to create fuzzer binaries.
-
-for x in internal/fuzz/*; do
-  if [ -d $x/corpus ]; then
-    name=$(basename $x)
-    compile_go_fuzzer google.golang.org/protobuf/$x Fuzz $name protolegacy
-    zip -jr $OUT/${name}_seed_corpus.zip $x/corpus
-  fi
-done
diff --git a/internal/fuzz/textfuzz/corpus/a950e4f0890f34717c5c9beffe1bd0cee33e5a2b b/internal/fuzz/textfuzz/corpus/a950e4f0890f34717c5c9beffe1bd0cee33e5a2b
deleted file mode 100755
index 84107dd..0000000
--- a/internal/fuzz/textfuzz/corpus/a950e4f0890f34717c5c9beffe1bd0cee33e5a2b
+++ /dev/null
@@ -1 +0,0 @@
-test_all_types:{optional_int32:1001  optional_int64:1002  optional_uint32:1003  optional_uint64:1004  optional_sint32:1005  optional_sint64:1006  optional_fixed32:1007  optional_fixed64:1008  optional_sfixed32:1009  optional_sfixed64:1010  optional_float:1011.5  optional_double:1012.5  optional_bool:true  optional_string:"string"  optional_bytes:"bytes"  OptionalGroup:{a:1017}  optional_nested_message:{a:42  corecursive:{optional_int32:43}}  optional_nested_enum:BAR  repeated_int32:1001  repeated_int32:2001  repeated_int64:1002  repeated_int64:2002  repeated_uint32:1003  repeated_uint32:2003  repeated_uint64:1004  repeated_uint64:2004  repeated_sint32:1005  repeated_sint32:2005  repeated_sint64:1006  repeated_sint64:2006  repeated_fixed32:1007  repeated_fixed32:2007  repeated_fixed64:1008  repeated_fixed64:2008  repeated_sfixed32:1009  repeated_sfixed32:2009  repeated_sfixed64:1010  repeated_sfixed64:2010  repeated_float:1011.5  repeated_float:2011.5  repeated_double:1012.5  repeated_double:2012.5  repeated_bool:true  repeated_bool:false  repeated_string:"foo"  repeated_string:"bar"  repeated_bytes:"FOO"  repeated_bytes:"BAR"  RepeatedGroup:{a:1017}  RepeatedGroup:{}  RepeatedGroup:{a:2017}  repeated_nested_message:{a:1}  repeated_nested_message:{}  repeated_nested_message:{a:2}  repeated_nested_enum:FOO  repeated_nested_enum:BAR  map_int32_int32:{key:1056  value:1156}  map_int32_int32:{key:2056  value:2156}  map_int64_int64:{key:1057  value:1157}  map_int64_int64:{key:2057  value:2157}  map_uint32_uint32:{key:1058  value:1158}  map_uint32_uint32:{key:2058  value:2158}  map_uint64_uint64:{key:1059  value:1159}  map_uint64_uint64:{key:2059  value:2159}  map_sint32_sint32:{key:1060  value:1160}  map_sint32_sint32:{key:2060  value:2160}  map_sint64_sint64:{key:1061  value:1161}  map_sint64_sint64:{key:2061  value:2161}  map_fixed32_fixed32:{key:1062  value:1162}  map_fixed32_fixed32:{key:2062  value:2162}  map_fixed64_fixed64:{key:1063  value:1163}  map_fixed64_fixed64:{key:2063  value:2163}  map_sfixed32_sfixed32:{key:1064  value:1164}  map_sfixed32_sfixed32:{key:2064  value:2164}  map_sfixed64_sfixed64:{key:1065  value:1165}  map_sfixed64_sfixed64:{key:2065  value:2165}  map_int32_float:{key:1066  value:1166.5}  map_int32_float:{key:2066  value:2166.5}  map_int32_double:{key:1067  value:1167.5}  map_int32_double:{key:2067  value:2167.5}  map_bool_bool:{key:false  value:true}  map_bool_bool:{key:true  value:false}  map_string_string:{key:"69.1.key"  value:"69.1.val"}  map_string_string:{key:"69.2.key"  value:"69.2.val"}  map_string_bytes:{key:"70.1.key"  value:"70.1.val"}  map_string_bytes:{key:"70.2.key"  value:"70.2.val"}  map_string_nested_message:{key:"71.1.key"  value:{a:1171}}  map_string_nested_message:{key:"71.2.key"  value:{a:2171}}  map_string_nested_enum:{key:"73.1.key"  value:FOO}  map_string_nested_enum:{key:"73.2.key"  value:BAR}  oneof_uint32:1111}
\ No newline at end of file
diff --git a/internal/fuzz/textfuzz/fuzz.go b/internal/fuzz/textfuzz/fuzz.go
deleted file mode 100644
index 242e4b6..0000000
--- a/internal/fuzz/textfuzz/fuzz.go
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package textfuzz includes fuzzers for prototext.Marshal and prototext.Unmarshal.
-package textfuzz
-
-import (
-	"google.golang.org/protobuf/encoding/prototext"
-	"google.golang.org/protobuf/proto"
-
-	fuzzpb "google.golang.org/protobuf/internal/testprotos/fuzz"
-)
-
-// Fuzz is a fuzzer for proto.Marshal and proto.Unmarshal.
-func Fuzz(data []byte) (score int) {
-	m1 := &fuzzpb.Fuzz{}
-	if err := (prototext.UnmarshalOptions{
-		AllowPartial: true,
-	}).Unmarshal(data, m1); err != nil {
-		return 0
-	}
-	data1, err := prototext.MarshalOptions{
-		AllowPartial: true,
-	}.Marshal(m1)
-	if err != nil {
-		panic(err)
-	}
-	m2 := &fuzzpb.Fuzz{}
-	if err := (prototext.UnmarshalOptions{
-		AllowPartial: true,
-	}).Unmarshal(data1, m2); err != nil {
-		return 0
-	}
-	if !proto.Equal(m1, m2) {
-		panic("not equal")
-	}
-	return 1
-}
diff --git a/internal/fuzz/textfuzz/fuzz_test.go b/internal/fuzz/textfuzz/fuzz_test.go
deleted file mode 100644
index af27f06..0000000
--- a/internal/fuzz/textfuzz/fuzz_test.go
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package textfuzz
-
-import (
-	"testing"
-
-	"google.golang.org/protobuf/internal/fuzztest"
-)
-
-func Test(t *testing.T) {
-	fuzztest.Test(t, Fuzz)
-}
diff --git a/internal/fuzz/wirefuzz/corpus/20019c4ef10ebf8031c8d204bdd0ae1ec214bf90 b/internal/fuzz/wirefuzz/corpus/20019c4ef10ebf8031c8d204bdd0ae1ec214bf90
deleted file mode 100755
index 59e5662..0000000
--- a/internal/fuzz/wirefuzz/corpus/20019c4ef10ebf8031c8d204bdd0ae1ec214bf90
+++ /dev/null
Binary files differ
diff --git a/internal/fuzz/wirefuzz/fuzz.go b/internal/fuzz/wirefuzz/fuzz.go
deleted file mode 100644
index fd27cca..0000000
--- a/internal/fuzz/wirefuzz/fuzz.go
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package wirefuzz includes a fuzzer for the wire marshaler and unmarshaler.
-package wirefuzz
-
-import (
-	"fmt"
-
-	"google.golang.org/protobuf/internal/impl"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoregistry"
-	piface "google.golang.org/protobuf/runtime/protoiface"
-
-	fuzzpb "google.golang.org/protobuf/internal/testprotos/fuzz"
-)
-
-// Fuzz is a fuzzer for proto.Marshal and proto.Unmarshal.
-func Fuzz(data []byte) (score int) {
-	// Unmarshal and Validate should agree about the validity of the message.
-	m1 := &fuzzpb.Fuzz{}
-	mt := m1.ProtoReflect().Type()
-	_, valid := impl.Validate(mt, piface.UnmarshalInput{Buf: data})
-	if err := (proto.UnmarshalOptions{AllowPartial: true}).Unmarshal(data, m1); err != nil {
-		switch valid {
-		case impl.ValidationUnknown:
-		case impl.ValidationInvalid:
-		default:
-			panic("unmarshal error with validation status: " + valid.String())
-		}
-		return 0
-	}
-	switch valid {
-	case impl.ValidationUnknown:
-	case impl.ValidationValid:
-	default:
-		panic("unmarshal ok with validation status: " + valid.String())
-	}
-
-	// Unmarshal, Validate, and CheckInitialized should agree about initialization.
-	checkInit := proto.CheckInitialized(m1) == nil
-	methods := m1.ProtoReflect().ProtoMethods()
-	in := piface.UnmarshalInput{Message: mt.New(), Resolver: protoregistry.GlobalTypes, Depth: 10000}
-	if checkInit {
-		// If the message initialized, the both Unmarshal and Validate should
-		// report it as such. False negatives are tolerated, but have a
-		// significant impact on performance. In general, they should always
-		// properly determine initialization for any normalized message,
-		// we produce by re-marshaling the message.
-		in.Buf, _ = proto.Marshal(m1)
-		if out, _ := methods.Unmarshal(in); out.Flags&piface.UnmarshalInitialized == 0 {
-			panic("unmarshal reports initialized message as partial")
-		}
-		if out, _ := impl.Validate(mt, in); out.Flags&piface.UnmarshalInitialized == 0 {
-			panic("validate reports initialized message as partial")
-		}
-	} else {
-		// If the message is partial, then neither Unmarshal nor Validate
-		// should ever report it as such. False positives are unacceptable.
-		in.Buf = data
-		if out, _ := methods.Unmarshal(in); out.Flags&piface.UnmarshalInitialized != 0 {
-			panic("unmarshal reports partial message as initialized")
-		}
-		if out, _ := impl.Validate(mt, in); out.Flags&piface.UnmarshalInitialized != 0 {
-			panic("validate reports partial message as initialized")
-		}
-	}
-
-	// Round-trip Marshal and Unmarshal should produce the same messages.
-	data1, err := proto.MarshalOptions{AllowPartial: !checkInit}.Marshal(m1)
-	if err != nil {
-		panic(err)
-	}
-	if proto.Size(m1) != len(data1) {
-		panic(fmt.Errorf("size does not match output: %d != %d", proto.Size(m1), len(data1)))
-	}
-	m2 := &fuzzpb.Fuzz{}
-	if err := (proto.UnmarshalOptions{AllowPartial: !checkInit}).Unmarshal(data1, m2); err != nil {
-		panic(err)
-	}
-	if !proto.Equal(m1, m2) {
-		panic("not equal")
-	}
-	return 1
-}
diff --git a/internal/fuzz/wirefuzz/fuzz_test.go b/internal/fuzz/wirefuzz/fuzz_test.go
deleted file mode 100644
index d4510d2..0000000
--- a/internal/fuzz/wirefuzz/fuzz_test.go
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package wirefuzz
-
-import (
-	"testing"
-
-	"google.golang.org/protobuf/internal/fuzztest"
-)
-
-func Test(t *testing.T) {
-	fuzztest.Test(t, Fuzz)
-}
diff --git a/internal/fuzztest/fuzztest.go b/internal/fuzztest/fuzztest.go
deleted file mode 100644
index 2b54eb5..0000000
--- a/internal/fuzztest/fuzztest.go
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package fuzztest contains a common fuzzer test.
-package fuzztest
-
-import (
-	"flag"
-	"io/ioutil"
-	"os"
-	"path/filepath"
-	"sort"
-	"testing"
-)
-
-var corpus = flag.String("corpus", "corpus", "directory containing the fuzzer corpus")
-
-// Test executes a fuzz function for every entry in the corpus.
-func Test(t *testing.T, fuzz func(b []byte) int) {
-	dir, err := os.Open(*corpus)
-	if err != nil {
-		t.Fatal(err)
-	}
-	infos, err := dir.Readdir(0)
-	if err != nil {
-		t.Fatal(err)
-
-	}
-	var names []string
-	for _, info := range infos {
-		names = append(names, info.Name())
-	}
-	sort.Strings(names)
-	for _, name := range names {
-		t.Run(name, func(t *testing.T) {
-			b, err := ioutil.ReadFile(filepath.Join(*corpus, name))
-			if err != nil {
-				t.Fatal(err)
-			}
-			b = b[:len(b):len(b)] // set cap to len
-			fuzz(b)
-		})
-	}
-}
diff --git a/internal/genid/any_gen.go b/internal/genid/any_gen.go
deleted file mode 100644
index e6f7d47..0000000
--- a/internal/genid/any_gen.go
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by generate-protos. DO NOT EDIT.
-
-package genid
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-const File_google_protobuf_any_proto = "google/protobuf/any.proto"
-
-// Names for google.protobuf.Any.
-const (
-	Any_message_name     protoreflect.Name     = "Any"
-	Any_message_fullname protoreflect.FullName = "google.protobuf.Any"
-)
-
-// Field names for google.protobuf.Any.
-const (
-	Any_TypeUrl_field_name protoreflect.Name = "type_url"
-	Any_Value_field_name   protoreflect.Name = "value"
-
-	Any_TypeUrl_field_fullname protoreflect.FullName = "google.protobuf.Any.type_url"
-	Any_Value_field_fullname   protoreflect.FullName = "google.protobuf.Any.value"
-)
-
-// Field numbers for google.protobuf.Any.
-const (
-	Any_TypeUrl_field_number protoreflect.FieldNumber = 1
-	Any_Value_field_number   protoreflect.FieldNumber = 2
-)
diff --git a/internal/genid/api_gen.go b/internal/genid/api_gen.go
deleted file mode 100644
index df8f918..0000000
--- a/internal/genid/api_gen.go
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by generate-protos. DO NOT EDIT.
-
-package genid
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-const File_google_protobuf_api_proto = "google/protobuf/api.proto"
-
-// Names for google.protobuf.Api.
-const (
-	Api_message_name     protoreflect.Name     = "Api"
-	Api_message_fullname protoreflect.FullName = "google.protobuf.Api"
-)
-
-// Field names for google.protobuf.Api.
-const (
-	Api_Name_field_name          protoreflect.Name = "name"
-	Api_Methods_field_name       protoreflect.Name = "methods"
-	Api_Options_field_name       protoreflect.Name = "options"
-	Api_Version_field_name       protoreflect.Name = "version"
-	Api_SourceContext_field_name protoreflect.Name = "source_context"
-	Api_Mixins_field_name        protoreflect.Name = "mixins"
-	Api_Syntax_field_name        protoreflect.Name = "syntax"
-
-	Api_Name_field_fullname          protoreflect.FullName = "google.protobuf.Api.name"
-	Api_Methods_field_fullname       protoreflect.FullName = "google.protobuf.Api.methods"
-	Api_Options_field_fullname       protoreflect.FullName = "google.protobuf.Api.options"
-	Api_Version_field_fullname       protoreflect.FullName = "google.protobuf.Api.version"
-	Api_SourceContext_field_fullname protoreflect.FullName = "google.protobuf.Api.source_context"
-	Api_Mixins_field_fullname        protoreflect.FullName = "google.protobuf.Api.mixins"
-	Api_Syntax_field_fullname        protoreflect.FullName = "google.protobuf.Api.syntax"
-)
-
-// Field numbers for google.protobuf.Api.
-const (
-	Api_Name_field_number          protoreflect.FieldNumber = 1
-	Api_Methods_field_number       protoreflect.FieldNumber = 2
-	Api_Options_field_number       protoreflect.FieldNumber = 3
-	Api_Version_field_number       protoreflect.FieldNumber = 4
-	Api_SourceContext_field_number protoreflect.FieldNumber = 5
-	Api_Mixins_field_number        protoreflect.FieldNumber = 6
-	Api_Syntax_field_number        protoreflect.FieldNumber = 7
-)
-
-// Names for google.protobuf.Method.
-const (
-	Method_message_name     protoreflect.Name     = "Method"
-	Method_message_fullname protoreflect.FullName = "google.protobuf.Method"
-)
-
-// Field names for google.protobuf.Method.
-const (
-	Method_Name_field_name              protoreflect.Name = "name"
-	Method_RequestTypeUrl_field_name    protoreflect.Name = "request_type_url"
-	Method_RequestStreaming_field_name  protoreflect.Name = "request_streaming"
-	Method_ResponseTypeUrl_field_name   protoreflect.Name = "response_type_url"
-	Method_ResponseStreaming_field_name protoreflect.Name = "response_streaming"
-	Method_Options_field_name           protoreflect.Name = "options"
-	Method_Syntax_field_name            protoreflect.Name = "syntax"
-
-	Method_Name_field_fullname              protoreflect.FullName = "google.protobuf.Method.name"
-	Method_RequestTypeUrl_field_fullname    protoreflect.FullName = "google.protobuf.Method.request_type_url"
-	Method_RequestStreaming_field_fullname  protoreflect.FullName = "google.protobuf.Method.request_streaming"
-	Method_ResponseTypeUrl_field_fullname   protoreflect.FullName = "google.protobuf.Method.response_type_url"
-	Method_ResponseStreaming_field_fullname protoreflect.FullName = "google.protobuf.Method.response_streaming"
-	Method_Options_field_fullname           protoreflect.FullName = "google.protobuf.Method.options"
-	Method_Syntax_field_fullname            protoreflect.FullName = "google.protobuf.Method.syntax"
-)
-
-// Field numbers for google.protobuf.Method.
-const (
-	Method_Name_field_number              protoreflect.FieldNumber = 1
-	Method_RequestTypeUrl_field_number    protoreflect.FieldNumber = 2
-	Method_RequestStreaming_field_number  protoreflect.FieldNumber = 3
-	Method_ResponseTypeUrl_field_number   protoreflect.FieldNumber = 4
-	Method_ResponseStreaming_field_number protoreflect.FieldNumber = 5
-	Method_Options_field_number           protoreflect.FieldNumber = 6
-	Method_Syntax_field_number            protoreflect.FieldNumber = 7
-)
-
-// Names for google.protobuf.Mixin.
-const (
-	Mixin_message_name     protoreflect.Name     = "Mixin"
-	Mixin_message_fullname protoreflect.FullName = "google.protobuf.Mixin"
-)
-
-// Field names for google.protobuf.Mixin.
-const (
-	Mixin_Name_field_name protoreflect.Name = "name"
-	Mixin_Root_field_name protoreflect.Name = "root"
-
-	Mixin_Name_field_fullname protoreflect.FullName = "google.protobuf.Mixin.name"
-	Mixin_Root_field_fullname protoreflect.FullName = "google.protobuf.Mixin.root"
-)
-
-// Field numbers for google.protobuf.Mixin.
-const (
-	Mixin_Name_field_number protoreflect.FieldNumber = 1
-	Mixin_Root_field_number protoreflect.FieldNumber = 2
-)
diff --git a/internal/genid/descriptor_gen.go b/internal/genid/descriptor_gen.go
deleted file mode 100644
index e3cdf1c..0000000
--- a/internal/genid/descriptor_gen.go
+++ /dev/null
@@ -1,829 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by generate-protos. DO NOT EDIT.
-
-package genid
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-const File_google_protobuf_descriptor_proto = "google/protobuf/descriptor.proto"
-
-// Names for google.protobuf.FileDescriptorSet.
-const (
-	FileDescriptorSet_message_name     protoreflect.Name     = "FileDescriptorSet"
-	FileDescriptorSet_message_fullname protoreflect.FullName = "google.protobuf.FileDescriptorSet"
-)
-
-// Field names for google.protobuf.FileDescriptorSet.
-const (
-	FileDescriptorSet_File_field_name protoreflect.Name = "file"
-
-	FileDescriptorSet_File_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorSet.file"
-)
-
-// Field numbers for google.protobuf.FileDescriptorSet.
-const (
-	FileDescriptorSet_File_field_number protoreflect.FieldNumber = 1
-)
-
-// Names for google.protobuf.FileDescriptorProto.
-const (
-	FileDescriptorProto_message_name     protoreflect.Name     = "FileDescriptorProto"
-	FileDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto"
-)
-
-// Field names for google.protobuf.FileDescriptorProto.
-const (
-	FileDescriptorProto_Name_field_name             protoreflect.Name = "name"
-	FileDescriptorProto_Package_field_name          protoreflect.Name = "package"
-	FileDescriptorProto_Dependency_field_name       protoreflect.Name = "dependency"
-	FileDescriptorProto_PublicDependency_field_name protoreflect.Name = "public_dependency"
-	FileDescriptorProto_WeakDependency_field_name   protoreflect.Name = "weak_dependency"
-	FileDescriptorProto_MessageType_field_name      protoreflect.Name = "message_type"
-	FileDescriptorProto_EnumType_field_name         protoreflect.Name = "enum_type"
-	FileDescriptorProto_Service_field_name          protoreflect.Name = "service"
-	FileDescriptorProto_Extension_field_name        protoreflect.Name = "extension"
-	FileDescriptorProto_Options_field_name          protoreflect.Name = "options"
-	FileDescriptorProto_SourceCodeInfo_field_name   protoreflect.Name = "source_code_info"
-	FileDescriptorProto_Syntax_field_name           protoreflect.Name = "syntax"
-
-	FileDescriptorProto_Name_field_fullname             protoreflect.FullName = "google.protobuf.FileDescriptorProto.name"
-	FileDescriptorProto_Package_field_fullname          protoreflect.FullName = "google.protobuf.FileDescriptorProto.package"
-	FileDescriptorProto_Dependency_field_fullname       protoreflect.FullName = "google.protobuf.FileDescriptorProto.dependency"
-	FileDescriptorProto_PublicDependency_field_fullname protoreflect.FullName = "google.protobuf.FileDescriptorProto.public_dependency"
-	FileDescriptorProto_WeakDependency_field_fullname   protoreflect.FullName = "google.protobuf.FileDescriptorProto.weak_dependency"
-	FileDescriptorProto_MessageType_field_fullname      protoreflect.FullName = "google.protobuf.FileDescriptorProto.message_type"
-	FileDescriptorProto_EnumType_field_fullname         protoreflect.FullName = "google.protobuf.FileDescriptorProto.enum_type"
-	FileDescriptorProto_Service_field_fullname          protoreflect.FullName = "google.protobuf.FileDescriptorProto.service"
-	FileDescriptorProto_Extension_field_fullname        protoreflect.FullName = "google.protobuf.FileDescriptorProto.extension"
-	FileDescriptorProto_Options_field_fullname          protoreflect.FullName = "google.protobuf.FileDescriptorProto.options"
-	FileDescriptorProto_SourceCodeInfo_field_fullname   protoreflect.FullName = "google.protobuf.FileDescriptorProto.source_code_info"
-	FileDescriptorProto_Syntax_field_fullname           protoreflect.FullName = "google.protobuf.FileDescriptorProto.syntax"
-)
-
-// Field numbers for google.protobuf.FileDescriptorProto.
-const (
-	FileDescriptorProto_Name_field_number             protoreflect.FieldNumber = 1
-	FileDescriptorProto_Package_field_number          protoreflect.FieldNumber = 2
-	FileDescriptorProto_Dependency_field_number       protoreflect.FieldNumber = 3
-	FileDescriptorProto_PublicDependency_field_number protoreflect.FieldNumber = 10
-	FileDescriptorProto_WeakDependency_field_number   protoreflect.FieldNumber = 11
-	FileDescriptorProto_MessageType_field_number      protoreflect.FieldNumber = 4
-	FileDescriptorProto_EnumType_field_number         protoreflect.FieldNumber = 5
-	FileDescriptorProto_Service_field_number          protoreflect.FieldNumber = 6
-	FileDescriptorProto_Extension_field_number        protoreflect.FieldNumber = 7
-	FileDescriptorProto_Options_field_number          protoreflect.FieldNumber = 8
-	FileDescriptorProto_SourceCodeInfo_field_number   protoreflect.FieldNumber = 9
-	FileDescriptorProto_Syntax_field_number           protoreflect.FieldNumber = 12
-)
-
-// Names for google.protobuf.DescriptorProto.
-const (
-	DescriptorProto_message_name     protoreflect.Name     = "DescriptorProto"
-	DescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.DescriptorProto"
-)
-
-// Field names for google.protobuf.DescriptorProto.
-const (
-	DescriptorProto_Name_field_name           protoreflect.Name = "name"
-	DescriptorProto_Field_field_name          protoreflect.Name = "field"
-	DescriptorProto_Extension_field_name      protoreflect.Name = "extension"
-	DescriptorProto_NestedType_field_name     protoreflect.Name = "nested_type"
-	DescriptorProto_EnumType_field_name       protoreflect.Name = "enum_type"
-	DescriptorProto_ExtensionRange_field_name protoreflect.Name = "extension_range"
-	DescriptorProto_OneofDecl_field_name      protoreflect.Name = "oneof_decl"
-	DescriptorProto_Options_field_name        protoreflect.Name = "options"
-	DescriptorProto_ReservedRange_field_name  protoreflect.Name = "reserved_range"
-	DescriptorProto_ReservedName_field_name   protoreflect.Name = "reserved_name"
-
-	DescriptorProto_Name_field_fullname           protoreflect.FullName = "google.protobuf.DescriptorProto.name"
-	DescriptorProto_Field_field_fullname          protoreflect.FullName = "google.protobuf.DescriptorProto.field"
-	DescriptorProto_Extension_field_fullname      protoreflect.FullName = "google.protobuf.DescriptorProto.extension"
-	DescriptorProto_NestedType_field_fullname     protoreflect.FullName = "google.protobuf.DescriptorProto.nested_type"
-	DescriptorProto_EnumType_field_fullname       protoreflect.FullName = "google.protobuf.DescriptorProto.enum_type"
-	DescriptorProto_ExtensionRange_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.extension_range"
-	DescriptorProto_OneofDecl_field_fullname      protoreflect.FullName = "google.protobuf.DescriptorProto.oneof_decl"
-	DescriptorProto_Options_field_fullname        protoreflect.FullName = "google.protobuf.DescriptorProto.options"
-	DescriptorProto_ReservedRange_field_fullname  protoreflect.FullName = "google.protobuf.DescriptorProto.reserved_range"
-	DescriptorProto_ReservedName_field_fullname   protoreflect.FullName = "google.protobuf.DescriptorProto.reserved_name"
-)
-
-// Field numbers for google.protobuf.DescriptorProto.
-const (
-	DescriptorProto_Name_field_number           protoreflect.FieldNumber = 1
-	DescriptorProto_Field_field_number          protoreflect.FieldNumber = 2
-	DescriptorProto_Extension_field_number      protoreflect.FieldNumber = 6
-	DescriptorProto_NestedType_field_number     protoreflect.FieldNumber = 3
-	DescriptorProto_EnumType_field_number       protoreflect.FieldNumber = 4
-	DescriptorProto_ExtensionRange_field_number protoreflect.FieldNumber = 5
-	DescriptorProto_OneofDecl_field_number      protoreflect.FieldNumber = 8
-	DescriptorProto_Options_field_number        protoreflect.FieldNumber = 7
-	DescriptorProto_ReservedRange_field_number  protoreflect.FieldNumber = 9
-	DescriptorProto_ReservedName_field_number   protoreflect.FieldNumber = 10
-)
-
-// Names for google.protobuf.DescriptorProto.ExtensionRange.
-const (
-	DescriptorProto_ExtensionRange_message_name     protoreflect.Name     = "ExtensionRange"
-	DescriptorProto_ExtensionRange_message_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ExtensionRange"
-)
-
-// Field names for google.protobuf.DescriptorProto.ExtensionRange.
-const (
-	DescriptorProto_ExtensionRange_Start_field_name   protoreflect.Name = "start"
-	DescriptorProto_ExtensionRange_End_field_name     protoreflect.Name = "end"
-	DescriptorProto_ExtensionRange_Options_field_name protoreflect.Name = "options"
-
-	DescriptorProto_ExtensionRange_Start_field_fullname   protoreflect.FullName = "google.protobuf.DescriptorProto.ExtensionRange.start"
-	DescriptorProto_ExtensionRange_End_field_fullname     protoreflect.FullName = "google.protobuf.DescriptorProto.ExtensionRange.end"
-	DescriptorProto_ExtensionRange_Options_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ExtensionRange.options"
-)
-
-// Field numbers for google.protobuf.DescriptorProto.ExtensionRange.
-const (
-	DescriptorProto_ExtensionRange_Start_field_number   protoreflect.FieldNumber = 1
-	DescriptorProto_ExtensionRange_End_field_number     protoreflect.FieldNumber = 2
-	DescriptorProto_ExtensionRange_Options_field_number protoreflect.FieldNumber = 3
-)
-
-// Names for google.protobuf.DescriptorProto.ReservedRange.
-const (
-	DescriptorProto_ReservedRange_message_name     protoreflect.Name     = "ReservedRange"
-	DescriptorProto_ReservedRange_message_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ReservedRange"
-)
-
-// Field names for google.protobuf.DescriptorProto.ReservedRange.
-const (
-	DescriptorProto_ReservedRange_Start_field_name protoreflect.Name = "start"
-	DescriptorProto_ReservedRange_End_field_name   protoreflect.Name = "end"
-
-	DescriptorProto_ReservedRange_Start_field_fullname protoreflect.FullName = "google.protobuf.DescriptorProto.ReservedRange.start"
-	DescriptorProto_ReservedRange_End_field_fullname   protoreflect.FullName = "google.protobuf.DescriptorProto.ReservedRange.end"
-)
-
-// Field numbers for google.protobuf.DescriptorProto.ReservedRange.
-const (
-	DescriptorProto_ReservedRange_Start_field_number protoreflect.FieldNumber = 1
-	DescriptorProto_ReservedRange_End_field_number   protoreflect.FieldNumber = 2
-)
-
-// Names for google.protobuf.ExtensionRangeOptions.
-const (
-	ExtensionRangeOptions_message_name     protoreflect.Name     = "ExtensionRangeOptions"
-	ExtensionRangeOptions_message_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions"
-)
-
-// Field names for google.protobuf.ExtensionRangeOptions.
-const (
-	ExtensionRangeOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option"
-
-	ExtensionRangeOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.ExtensionRangeOptions.uninterpreted_option"
-)
-
-// Field numbers for google.protobuf.ExtensionRangeOptions.
-const (
-	ExtensionRangeOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999
-)
-
-// Names for google.protobuf.FieldDescriptorProto.
-const (
-	FieldDescriptorProto_message_name     protoreflect.Name     = "FieldDescriptorProto"
-	FieldDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto"
-)
-
-// Field names for google.protobuf.FieldDescriptorProto.
-const (
-	FieldDescriptorProto_Name_field_name           protoreflect.Name = "name"
-	FieldDescriptorProto_Number_field_name         protoreflect.Name = "number"
-	FieldDescriptorProto_Label_field_name          protoreflect.Name = "label"
-	FieldDescriptorProto_Type_field_name           protoreflect.Name = "type"
-	FieldDescriptorProto_TypeName_field_name       protoreflect.Name = "type_name"
-	FieldDescriptorProto_Extendee_field_name       protoreflect.Name = "extendee"
-	FieldDescriptorProto_DefaultValue_field_name   protoreflect.Name = "default_value"
-	FieldDescriptorProto_OneofIndex_field_name     protoreflect.Name = "oneof_index"
-	FieldDescriptorProto_JsonName_field_name       protoreflect.Name = "json_name"
-	FieldDescriptorProto_Options_field_name        protoreflect.Name = "options"
-	FieldDescriptorProto_Proto3Optional_field_name protoreflect.Name = "proto3_optional"
-
-	FieldDescriptorProto_Name_field_fullname           protoreflect.FullName = "google.protobuf.FieldDescriptorProto.name"
-	FieldDescriptorProto_Number_field_fullname         protoreflect.FullName = "google.protobuf.FieldDescriptorProto.number"
-	FieldDescriptorProto_Label_field_fullname          protoreflect.FullName = "google.protobuf.FieldDescriptorProto.label"
-	FieldDescriptorProto_Type_field_fullname           protoreflect.FullName = "google.protobuf.FieldDescriptorProto.type"
-	FieldDescriptorProto_TypeName_field_fullname       protoreflect.FullName = "google.protobuf.FieldDescriptorProto.type_name"
-	FieldDescriptorProto_Extendee_field_fullname       protoreflect.FullName = "google.protobuf.FieldDescriptorProto.extendee"
-	FieldDescriptorProto_DefaultValue_field_fullname   protoreflect.FullName = "google.protobuf.FieldDescriptorProto.default_value"
-	FieldDescriptorProto_OneofIndex_field_fullname     protoreflect.FullName = "google.protobuf.FieldDescriptorProto.oneof_index"
-	FieldDescriptorProto_JsonName_field_fullname       protoreflect.FullName = "google.protobuf.FieldDescriptorProto.json_name"
-	FieldDescriptorProto_Options_field_fullname        protoreflect.FullName = "google.protobuf.FieldDescriptorProto.options"
-	FieldDescriptorProto_Proto3Optional_field_fullname protoreflect.FullName = "google.protobuf.FieldDescriptorProto.proto3_optional"
-)
-
-// Field numbers for google.protobuf.FieldDescriptorProto.
-const (
-	FieldDescriptorProto_Name_field_number           protoreflect.FieldNumber = 1
-	FieldDescriptorProto_Number_field_number         protoreflect.FieldNumber = 3
-	FieldDescriptorProto_Label_field_number          protoreflect.FieldNumber = 4
-	FieldDescriptorProto_Type_field_number           protoreflect.FieldNumber = 5
-	FieldDescriptorProto_TypeName_field_number       protoreflect.FieldNumber = 6
-	FieldDescriptorProto_Extendee_field_number       protoreflect.FieldNumber = 2
-	FieldDescriptorProto_DefaultValue_field_number   protoreflect.FieldNumber = 7
-	FieldDescriptorProto_OneofIndex_field_number     protoreflect.FieldNumber = 9
-	FieldDescriptorProto_JsonName_field_number       protoreflect.FieldNumber = 10
-	FieldDescriptorProto_Options_field_number        protoreflect.FieldNumber = 8
-	FieldDescriptorProto_Proto3Optional_field_number protoreflect.FieldNumber = 17
-)
-
-// Full and short names for google.protobuf.FieldDescriptorProto.Type.
-const (
-	FieldDescriptorProto_Type_enum_fullname = "google.protobuf.FieldDescriptorProto.Type"
-	FieldDescriptorProto_Type_enum_name     = "Type"
-)
-
-// Full and short names for google.protobuf.FieldDescriptorProto.Label.
-const (
-	FieldDescriptorProto_Label_enum_fullname = "google.protobuf.FieldDescriptorProto.Label"
-	FieldDescriptorProto_Label_enum_name     = "Label"
-)
-
-// Names for google.protobuf.OneofDescriptorProto.
-const (
-	OneofDescriptorProto_message_name     protoreflect.Name     = "OneofDescriptorProto"
-	OneofDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.OneofDescriptorProto"
-)
-
-// Field names for google.protobuf.OneofDescriptorProto.
-const (
-	OneofDescriptorProto_Name_field_name    protoreflect.Name = "name"
-	OneofDescriptorProto_Options_field_name protoreflect.Name = "options"
-
-	OneofDescriptorProto_Name_field_fullname    protoreflect.FullName = "google.protobuf.OneofDescriptorProto.name"
-	OneofDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.OneofDescriptorProto.options"
-)
-
-// Field numbers for google.protobuf.OneofDescriptorProto.
-const (
-	OneofDescriptorProto_Name_field_number    protoreflect.FieldNumber = 1
-	OneofDescriptorProto_Options_field_number protoreflect.FieldNumber = 2
-)
-
-// Names for google.protobuf.EnumDescriptorProto.
-const (
-	EnumDescriptorProto_message_name     protoreflect.Name     = "EnumDescriptorProto"
-	EnumDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto"
-)
-
-// Field names for google.protobuf.EnumDescriptorProto.
-const (
-	EnumDescriptorProto_Name_field_name          protoreflect.Name = "name"
-	EnumDescriptorProto_Value_field_name         protoreflect.Name = "value"
-	EnumDescriptorProto_Options_field_name       protoreflect.Name = "options"
-	EnumDescriptorProto_ReservedRange_field_name protoreflect.Name = "reserved_range"
-	EnumDescriptorProto_ReservedName_field_name  protoreflect.Name = "reserved_name"
-
-	EnumDescriptorProto_Name_field_fullname          protoreflect.FullName = "google.protobuf.EnumDescriptorProto.name"
-	EnumDescriptorProto_Value_field_fullname         protoreflect.FullName = "google.protobuf.EnumDescriptorProto.value"
-	EnumDescriptorProto_Options_field_fullname       protoreflect.FullName = "google.protobuf.EnumDescriptorProto.options"
-	EnumDescriptorProto_ReservedRange_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.reserved_range"
-	EnumDescriptorProto_ReservedName_field_fullname  protoreflect.FullName = "google.protobuf.EnumDescriptorProto.reserved_name"
-)
-
-// Field numbers for google.protobuf.EnumDescriptorProto.
-const (
-	EnumDescriptorProto_Name_field_number          protoreflect.FieldNumber = 1
-	EnumDescriptorProto_Value_field_number         protoreflect.FieldNumber = 2
-	EnumDescriptorProto_Options_field_number       protoreflect.FieldNumber = 3
-	EnumDescriptorProto_ReservedRange_field_number protoreflect.FieldNumber = 4
-	EnumDescriptorProto_ReservedName_field_number  protoreflect.FieldNumber = 5
-)
-
-// Names for google.protobuf.EnumDescriptorProto.EnumReservedRange.
-const (
-	EnumDescriptorProto_EnumReservedRange_message_name     protoreflect.Name     = "EnumReservedRange"
-	EnumDescriptorProto_EnumReservedRange_message_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.EnumReservedRange"
-)
-
-// Field names for google.protobuf.EnumDescriptorProto.EnumReservedRange.
-const (
-	EnumDescriptorProto_EnumReservedRange_Start_field_name protoreflect.Name = "start"
-	EnumDescriptorProto_EnumReservedRange_End_field_name   protoreflect.Name = "end"
-
-	EnumDescriptorProto_EnumReservedRange_Start_field_fullname protoreflect.FullName = "google.protobuf.EnumDescriptorProto.EnumReservedRange.start"
-	EnumDescriptorProto_EnumReservedRange_End_field_fullname   protoreflect.FullName = "google.protobuf.EnumDescriptorProto.EnumReservedRange.end"
-)
-
-// Field numbers for google.protobuf.EnumDescriptorProto.EnumReservedRange.
-const (
-	EnumDescriptorProto_EnumReservedRange_Start_field_number protoreflect.FieldNumber = 1
-	EnumDescriptorProto_EnumReservedRange_End_field_number   protoreflect.FieldNumber = 2
-)
-
-// Names for google.protobuf.EnumValueDescriptorProto.
-const (
-	EnumValueDescriptorProto_message_name     protoreflect.Name     = "EnumValueDescriptorProto"
-	EnumValueDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.EnumValueDescriptorProto"
-)
-
-// Field names for google.protobuf.EnumValueDescriptorProto.
-const (
-	EnumValueDescriptorProto_Name_field_name    protoreflect.Name = "name"
-	EnumValueDescriptorProto_Number_field_name  protoreflect.Name = "number"
-	EnumValueDescriptorProto_Options_field_name protoreflect.Name = "options"
-
-	EnumValueDescriptorProto_Name_field_fullname    protoreflect.FullName = "google.protobuf.EnumValueDescriptorProto.name"
-	EnumValueDescriptorProto_Number_field_fullname  protoreflect.FullName = "google.protobuf.EnumValueDescriptorProto.number"
-	EnumValueDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.EnumValueDescriptorProto.options"
-)
-
-// Field numbers for google.protobuf.EnumValueDescriptorProto.
-const (
-	EnumValueDescriptorProto_Name_field_number    protoreflect.FieldNumber = 1
-	EnumValueDescriptorProto_Number_field_number  protoreflect.FieldNumber = 2
-	EnumValueDescriptorProto_Options_field_number protoreflect.FieldNumber = 3
-)
-
-// Names for google.protobuf.ServiceDescriptorProto.
-const (
-	ServiceDescriptorProto_message_name     protoreflect.Name     = "ServiceDescriptorProto"
-	ServiceDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.ServiceDescriptorProto"
-)
-
-// Field names for google.protobuf.ServiceDescriptorProto.
-const (
-	ServiceDescriptorProto_Name_field_name    protoreflect.Name = "name"
-	ServiceDescriptorProto_Method_field_name  protoreflect.Name = "method"
-	ServiceDescriptorProto_Options_field_name protoreflect.Name = "options"
-
-	ServiceDescriptorProto_Name_field_fullname    protoreflect.FullName = "google.protobuf.ServiceDescriptorProto.name"
-	ServiceDescriptorProto_Method_field_fullname  protoreflect.FullName = "google.protobuf.ServiceDescriptorProto.method"
-	ServiceDescriptorProto_Options_field_fullname protoreflect.FullName = "google.protobuf.ServiceDescriptorProto.options"
-)
-
-// Field numbers for google.protobuf.ServiceDescriptorProto.
-const (
-	ServiceDescriptorProto_Name_field_number    protoreflect.FieldNumber = 1
-	ServiceDescriptorProto_Method_field_number  protoreflect.FieldNumber = 2
-	ServiceDescriptorProto_Options_field_number protoreflect.FieldNumber = 3
-)
-
-// Names for google.protobuf.MethodDescriptorProto.
-const (
-	MethodDescriptorProto_message_name     protoreflect.Name     = "MethodDescriptorProto"
-	MethodDescriptorProto_message_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto"
-)
-
-// Field names for google.protobuf.MethodDescriptorProto.
-const (
-	MethodDescriptorProto_Name_field_name            protoreflect.Name = "name"
-	MethodDescriptorProto_InputType_field_name       protoreflect.Name = "input_type"
-	MethodDescriptorProto_OutputType_field_name      protoreflect.Name = "output_type"
-	MethodDescriptorProto_Options_field_name         protoreflect.Name = "options"
-	MethodDescriptorProto_ClientStreaming_field_name protoreflect.Name = "client_streaming"
-	MethodDescriptorProto_ServerStreaming_field_name protoreflect.Name = "server_streaming"
-
-	MethodDescriptorProto_Name_field_fullname            protoreflect.FullName = "google.protobuf.MethodDescriptorProto.name"
-	MethodDescriptorProto_InputType_field_fullname       protoreflect.FullName = "google.protobuf.MethodDescriptorProto.input_type"
-	MethodDescriptorProto_OutputType_field_fullname      protoreflect.FullName = "google.protobuf.MethodDescriptorProto.output_type"
-	MethodDescriptorProto_Options_field_fullname         protoreflect.FullName = "google.protobuf.MethodDescriptorProto.options"
-	MethodDescriptorProto_ClientStreaming_field_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto.client_streaming"
-	MethodDescriptorProto_ServerStreaming_field_fullname protoreflect.FullName = "google.protobuf.MethodDescriptorProto.server_streaming"
-)
-
-// Field numbers for google.protobuf.MethodDescriptorProto.
-const (
-	MethodDescriptorProto_Name_field_number            protoreflect.FieldNumber = 1
-	MethodDescriptorProto_InputType_field_number       protoreflect.FieldNumber = 2
-	MethodDescriptorProto_OutputType_field_number      protoreflect.FieldNumber = 3
-	MethodDescriptorProto_Options_field_number         protoreflect.FieldNumber = 4
-	MethodDescriptorProto_ClientStreaming_field_number protoreflect.FieldNumber = 5
-	MethodDescriptorProto_ServerStreaming_field_number protoreflect.FieldNumber = 6
-)
-
-// Names for google.protobuf.FileOptions.
-const (
-	FileOptions_message_name     protoreflect.Name     = "FileOptions"
-	FileOptions_message_fullname protoreflect.FullName = "google.protobuf.FileOptions"
-)
-
-// Field names for google.protobuf.FileOptions.
-const (
-	FileOptions_JavaPackage_field_name               protoreflect.Name = "java_package"
-	FileOptions_JavaOuterClassname_field_name        protoreflect.Name = "java_outer_classname"
-	FileOptions_JavaMultipleFiles_field_name         protoreflect.Name = "java_multiple_files"
-	FileOptions_JavaGenerateEqualsAndHash_field_name protoreflect.Name = "java_generate_equals_and_hash"
-	FileOptions_JavaStringCheckUtf8_field_name       protoreflect.Name = "java_string_check_utf8"
-	FileOptions_OptimizeFor_field_name               protoreflect.Name = "optimize_for"
-	FileOptions_GoPackage_field_name                 protoreflect.Name = "go_package"
-	FileOptions_CcGenericServices_field_name         protoreflect.Name = "cc_generic_services"
-	FileOptions_JavaGenericServices_field_name       protoreflect.Name = "java_generic_services"
-	FileOptions_PyGenericServices_field_name         protoreflect.Name = "py_generic_services"
-	FileOptions_PhpGenericServices_field_name        protoreflect.Name = "php_generic_services"
-	FileOptions_Deprecated_field_name                protoreflect.Name = "deprecated"
-	FileOptions_CcEnableArenas_field_name            protoreflect.Name = "cc_enable_arenas"
-	FileOptions_ObjcClassPrefix_field_name           protoreflect.Name = "objc_class_prefix"
-	FileOptions_CsharpNamespace_field_name           protoreflect.Name = "csharp_namespace"
-	FileOptions_SwiftPrefix_field_name               protoreflect.Name = "swift_prefix"
-	FileOptions_PhpClassPrefix_field_name            protoreflect.Name = "php_class_prefix"
-	FileOptions_PhpNamespace_field_name              protoreflect.Name = "php_namespace"
-	FileOptions_PhpMetadataNamespace_field_name      protoreflect.Name = "php_metadata_namespace"
-	FileOptions_RubyPackage_field_name               protoreflect.Name = "ruby_package"
-	FileOptions_UninterpretedOption_field_name       protoreflect.Name = "uninterpreted_option"
-
-	FileOptions_JavaPackage_field_fullname               protoreflect.FullName = "google.protobuf.FileOptions.java_package"
-	FileOptions_JavaOuterClassname_field_fullname        protoreflect.FullName = "google.protobuf.FileOptions.java_outer_classname"
-	FileOptions_JavaMultipleFiles_field_fullname         protoreflect.FullName = "google.protobuf.FileOptions.java_multiple_files"
-	FileOptions_JavaGenerateEqualsAndHash_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.java_generate_equals_and_hash"
-	FileOptions_JavaStringCheckUtf8_field_fullname       protoreflect.FullName = "google.protobuf.FileOptions.java_string_check_utf8"
-	FileOptions_OptimizeFor_field_fullname               protoreflect.FullName = "google.protobuf.FileOptions.optimize_for"
-	FileOptions_GoPackage_field_fullname                 protoreflect.FullName = "google.protobuf.FileOptions.go_package"
-	FileOptions_CcGenericServices_field_fullname         protoreflect.FullName = "google.protobuf.FileOptions.cc_generic_services"
-	FileOptions_JavaGenericServices_field_fullname       protoreflect.FullName = "google.protobuf.FileOptions.java_generic_services"
-	FileOptions_PyGenericServices_field_fullname         protoreflect.FullName = "google.protobuf.FileOptions.py_generic_services"
-	FileOptions_PhpGenericServices_field_fullname        protoreflect.FullName = "google.protobuf.FileOptions.php_generic_services"
-	FileOptions_Deprecated_field_fullname                protoreflect.FullName = "google.protobuf.FileOptions.deprecated"
-	FileOptions_CcEnableArenas_field_fullname            protoreflect.FullName = "google.protobuf.FileOptions.cc_enable_arenas"
-	FileOptions_ObjcClassPrefix_field_fullname           protoreflect.FullName = "google.protobuf.FileOptions.objc_class_prefix"
-	FileOptions_CsharpNamespace_field_fullname           protoreflect.FullName = "google.protobuf.FileOptions.csharp_namespace"
-	FileOptions_SwiftPrefix_field_fullname               protoreflect.FullName = "google.protobuf.FileOptions.swift_prefix"
-	FileOptions_PhpClassPrefix_field_fullname            protoreflect.FullName = "google.protobuf.FileOptions.php_class_prefix"
-	FileOptions_PhpNamespace_field_fullname              protoreflect.FullName = "google.protobuf.FileOptions.php_namespace"
-	FileOptions_PhpMetadataNamespace_field_fullname      protoreflect.FullName = "google.protobuf.FileOptions.php_metadata_namespace"
-	FileOptions_RubyPackage_field_fullname               protoreflect.FullName = "google.protobuf.FileOptions.ruby_package"
-	FileOptions_UninterpretedOption_field_fullname       protoreflect.FullName = "google.protobuf.FileOptions.uninterpreted_option"
-)
-
-// Field numbers for google.protobuf.FileOptions.
-const (
-	FileOptions_JavaPackage_field_number               protoreflect.FieldNumber = 1
-	FileOptions_JavaOuterClassname_field_number        protoreflect.FieldNumber = 8
-	FileOptions_JavaMultipleFiles_field_number         protoreflect.FieldNumber = 10
-	FileOptions_JavaGenerateEqualsAndHash_field_number protoreflect.FieldNumber = 20
-	FileOptions_JavaStringCheckUtf8_field_number       protoreflect.FieldNumber = 27
-	FileOptions_OptimizeFor_field_number               protoreflect.FieldNumber = 9
-	FileOptions_GoPackage_field_number                 protoreflect.FieldNumber = 11
-	FileOptions_CcGenericServices_field_number         protoreflect.FieldNumber = 16
-	FileOptions_JavaGenericServices_field_number       protoreflect.FieldNumber = 17
-	FileOptions_PyGenericServices_field_number         protoreflect.FieldNumber = 18
-	FileOptions_PhpGenericServices_field_number        protoreflect.FieldNumber = 42
-	FileOptions_Deprecated_field_number                protoreflect.FieldNumber = 23
-	FileOptions_CcEnableArenas_field_number            protoreflect.FieldNumber = 31
-	FileOptions_ObjcClassPrefix_field_number           protoreflect.FieldNumber = 36
-	FileOptions_CsharpNamespace_field_number           protoreflect.FieldNumber = 37
-	FileOptions_SwiftPrefix_field_number               protoreflect.FieldNumber = 39
-	FileOptions_PhpClassPrefix_field_number            protoreflect.FieldNumber = 40
-	FileOptions_PhpNamespace_field_number              protoreflect.FieldNumber = 41
-	FileOptions_PhpMetadataNamespace_field_number      protoreflect.FieldNumber = 44
-	FileOptions_RubyPackage_field_number               protoreflect.FieldNumber = 45
-	FileOptions_UninterpretedOption_field_number       protoreflect.FieldNumber = 999
-)
-
-// Full and short names for google.protobuf.FileOptions.OptimizeMode.
-const (
-	FileOptions_OptimizeMode_enum_fullname = "google.protobuf.FileOptions.OptimizeMode"
-	FileOptions_OptimizeMode_enum_name     = "OptimizeMode"
-)
-
-// Names for google.protobuf.MessageOptions.
-const (
-	MessageOptions_message_name     protoreflect.Name     = "MessageOptions"
-	MessageOptions_message_fullname protoreflect.FullName = "google.protobuf.MessageOptions"
-)
-
-// Field names for google.protobuf.MessageOptions.
-const (
-	MessageOptions_MessageSetWireFormat_field_name         protoreflect.Name = "message_set_wire_format"
-	MessageOptions_NoStandardDescriptorAccessor_field_name protoreflect.Name = "no_standard_descriptor_accessor"
-	MessageOptions_Deprecated_field_name                   protoreflect.Name = "deprecated"
-	MessageOptions_MapEntry_field_name                     protoreflect.Name = "map_entry"
-	MessageOptions_UninterpretedOption_field_name          protoreflect.Name = "uninterpreted_option"
-
-	MessageOptions_MessageSetWireFormat_field_fullname         protoreflect.FullName = "google.protobuf.MessageOptions.message_set_wire_format"
-	MessageOptions_NoStandardDescriptorAccessor_field_fullname protoreflect.FullName = "google.protobuf.MessageOptions.no_standard_descriptor_accessor"
-	MessageOptions_Deprecated_field_fullname                   protoreflect.FullName = "google.protobuf.MessageOptions.deprecated"
-	MessageOptions_MapEntry_field_fullname                     protoreflect.FullName = "google.protobuf.MessageOptions.map_entry"
-	MessageOptions_UninterpretedOption_field_fullname          protoreflect.FullName = "google.protobuf.MessageOptions.uninterpreted_option"
-)
-
-// Field numbers for google.protobuf.MessageOptions.
-const (
-	MessageOptions_MessageSetWireFormat_field_number         protoreflect.FieldNumber = 1
-	MessageOptions_NoStandardDescriptorAccessor_field_number protoreflect.FieldNumber = 2
-	MessageOptions_Deprecated_field_number                   protoreflect.FieldNumber = 3
-	MessageOptions_MapEntry_field_number                     protoreflect.FieldNumber = 7
-	MessageOptions_UninterpretedOption_field_number          protoreflect.FieldNumber = 999
-)
-
-// Names for google.protobuf.FieldOptions.
-const (
-	FieldOptions_message_name     protoreflect.Name     = "FieldOptions"
-	FieldOptions_message_fullname protoreflect.FullName = "google.protobuf.FieldOptions"
-)
-
-// Field names for google.protobuf.FieldOptions.
-const (
-	FieldOptions_Ctype_field_name               protoreflect.Name = "ctype"
-	FieldOptions_Packed_field_name              protoreflect.Name = "packed"
-	FieldOptions_Jstype_field_name              protoreflect.Name = "jstype"
-	FieldOptions_Lazy_field_name                protoreflect.Name = "lazy"
-	FieldOptions_Deprecated_field_name          protoreflect.Name = "deprecated"
-	FieldOptions_Weak_field_name                protoreflect.Name = "weak"
-	FieldOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option"
-
-	FieldOptions_Ctype_field_fullname               protoreflect.FullName = "google.protobuf.FieldOptions.ctype"
-	FieldOptions_Packed_field_fullname              protoreflect.FullName = "google.protobuf.FieldOptions.packed"
-	FieldOptions_Jstype_field_fullname              protoreflect.FullName = "google.protobuf.FieldOptions.jstype"
-	FieldOptions_Lazy_field_fullname                protoreflect.FullName = "google.protobuf.FieldOptions.lazy"
-	FieldOptions_Deprecated_field_fullname          protoreflect.FullName = "google.protobuf.FieldOptions.deprecated"
-	FieldOptions_Weak_field_fullname                protoreflect.FullName = "google.protobuf.FieldOptions.weak"
-	FieldOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.FieldOptions.uninterpreted_option"
-)
-
-// Field numbers for google.protobuf.FieldOptions.
-const (
-	FieldOptions_Ctype_field_number               protoreflect.FieldNumber = 1
-	FieldOptions_Packed_field_number              protoreflect.FieldNumber = 2
-	FieldOptions_Jstype_field_number              protoreflect.FieldNumber = 6
-	FieldOptions_Lazy_field_number                protoreflect.FieldNumber = 5
-	FieldOptions_Deprecated_field_number          protoreflect.FieldNumber = 3
-	FieldOptions_Weak_field_number                protoreflect.FieldNumber = 10
-	FieldOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999
-)
-
-// Full and short names for google.protobuf.FieldOptions.CType.
-const (
-	FieldOptions_CType_enum_fullname = "google.protobuf.FieldOptions.CType"
-	FieldOptions_CType_enum_name     = "CType"
-)
-
-// Full and short names for google.protobuf.FieldOptions.JSType.
-const (
-	FieldOptions_JSType_enum_fullname = "google.protobuf.FieldOptions.JSType"
-	FieldOptions_JSType_enum_name     = "JSType"
-)
-
-// Names for google.protobuf.OneofOptions.
-const (
-	OneofOptions_message_name     protoreflect.Name     = "OneofOptions"
-	OneofOptions_message_fullname protoreflect.FullName = "google.protobuf.OneofOptions"
-)
-
-// Field names for google.protobuf.OneofOptions.
-const (
-	OneofOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option"
-
-	OneofOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.OneofOptions.uninterpreted_option"
-)
-
-// Field numbers for google.protobuf.OneofOptions.
-const (
-	OneofOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999
-)
-
-// Names for google.protobuf.EnumOptions.
-const (
-	EnumOptions_message_name     protoreflect.Name     = "EnumOptions"
-	EnumOptions_message_fullname protoreflect.FullName = "google.protobuf.EnumOptions"
-)
-
-// Field names for google.protobuf.EnumOptions.
-const (
-	EnumOptions_AllowAlias_field_name          protoreflect.Name = "allow_alias"
-	EnumOptions_Deprecated_field_name          protoreflect.Name = "deprecated"
-	EnumOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option"
-
-	EnumOptions_AllowAlias_field_fullname          protoreflect.FullName = "google.protobuf.EnumOptions.allow_alias"
-	EnumOptions_Deprecated_field_fullname          protoreflect.FullName = "google.protobuf.EnumOptions.deprecated"
-	EnumOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.EnumOptions.uninterpreted_option"
-)
-
-// Field numbers for google.protobuf.EnumOptions.
-const (
-	EnumOptions_AllowAlias_field_number          protoreflect.FieldNumber = 2
-	EnumOptions_Deprecated_field_number          protoreflect.FieldNumber = 3
-	EnumOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999
-)
-
-// Names for google.protobuf.EnumValueOptions.
-const (
-	EnumValueOptions_message_name     protoreflect.Name     = "EnumValueOptions"
-	EnumValueOptions_message_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions"
-)
-
-// Field names for google.protobuf.EnumValueOptions.
-const (
-	EnumValueOptions_Deprecated_field_name          protoreflect.Name = "deprecated"
-	EnumValueOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option"
-
-	EnumValueOptions_Deprecated_field_fullname          protoreflect.FullName = "google.protobuf.EnumValueOptions.deprecated"
-	EnumValueOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.EnumValueOptions.uninterpreted_option"
-)
-
-// Field numbers for google.protobuf.EnumValueOptions.
-const (
-	EnumValueOptions_Deprecated_field_number          protoreflect.FieldNumber = 1
-	EnumValueOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999
-)
-
-// Names for google.protobuf.ServiceOptions.
-const (
-	ServiceOptions_message_name     protoreflect.Name     = "ServiceOptions"
-	ServiceOptions_message_fullname protoreflect.FullName = "google.protobuf.ServiceOptions"
-)
-
-// Field names for google.protobuf.ServiceOptions.
-const (
-	ServiceOptions_Deprecated_field_name          protoreflect.Name = "deprecated"
-	ServiceOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option"
-
-	ServiceOptions_Deprecated_field_fullname          protoreflect.FullName = "google.protobuf.ServiceOptions.deprecated"
-	ServiceOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.ServiceOptions.uninterpreted_option"
-)
-
-// Field numbers for google.protobuf.ServiceOptions.
-const (
-	ServiceOptions_Deprecated_field_number          protoreflect.FieldNumber = 33
-	ServiceOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999
-)
-
-// Names for google.protobuf.MethodOptions.
-const (
-	MethodOptions_message_name     protoreflect.Name     = "MethodOptions"
-	MethodOptions_message_fullname protoreflect.FullName = "google.protobuf.MethodOptions"
-)
-
-// Field names for google.protobuf.MethodOptions.
-const (
-	MethodOptions_Deprecated_field_name          protoreflect.Name = "deprecated"
-	MethodOptions_IdempotencyLevel_field_name    protoreflect.Name = "idempotency_level"
-	MethodOptions_UninterpretedOption_field_name protoreflect.Name = "uninterpreted_option"
-
-	MethodOptions_Deprecated_field_fullname          protoreflect.FullName = "google.protobuf.MethodOptions.deprecated"
-	MethodOptions_IdempotencyLevel_field_fullname    protoreflect.FullName = "google.protobuf.MethodOptions.idempotency_level"
-	MethodOptions_UninterpretedOption_field_fullname protoreflect.FullName = "google.protobuf.MethodOptions.uninterpreted_option"
-)
-
-// Field numbers for google.protobuf.MethodOptions.
-const (
-	MethodOptions_Deprecated_field_number          protoreflect.FieldNumber = 33
-	MethodOptions_IdempotencyLevel_field_number    protoreflect.FieldNumber = 34
-	MethodOptions_UninterpretedOption_field_number protoreflect.FieldNumber = 999
-)
-
-// Full and short names for google.protobuf.MethodOptions.IdempotencyLevel.
-const (
-	MethodOptions_IdempotencyLevel_enum_fullname = "google.protobuf.MethodOptions.IdempotencyLevel"
-	MethodOptions_IdempotencyLevel_enum_name     = "IdempotencyLevel"
-)
-
-// Names for google.protobuf.UninterpretedOption.
-const (
-	UninterpretedOption_message_name     protoreflect.Name     = "UninterpretedOption"
-	UninterpretedOption_message_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption"
-)
-
-// Field names for google.protobuf.UninterpretedOption.
-const (
-	UninterpretedOption_Name_field_name             protoreflect.Name = "name"
-	UninterpretedOption_IdentifierValue_field_name  protoreflect.Name = "identifier_value"
-	UninterpretedOption_PositiveIntValue_field_name protoreflect.Name = "positive_int_value"
-	UninterpretedOption_NegativeIntValue_field_name protoreflect.Name = "negative_int_value"
-	UninterpretedOption_DoubleValue_field_name      protoreflect.Name = "double_value"
-	UninterpretedOption_StringValue_field_name      protoreflect.Name = "string_value"
-	UninterpretedOption_AggregateValue_field_name   protoreflect.Name = "aggregate_value"
-
-	UninterpretedOption_Name_field_fullname             protoreflect.FullName = "google.protobuf.UninterpretedOption.name"
-	UninterpretedOption_IdentifierValue_field_fullname  protoreflect.FullName = "google.protobuf.UninterpretedOption.identifier_value"
-	UninterpretedOption_PositiveIntValue_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.positive_int_value"
-	UninterpretedOption_NegativeIntValue_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.negative_int_value"
-	UninterpretedOption_DoubleValue_field_fullname      protoreflect.FullName = "google.protobuf.UninterpretedOption.double_value"
-	UninterpretedOption_StringValue_field_fullname      protoreflect.FullName = "google.protobuf.UninterpretedOption.string_value"
-	UninterpretedOption_AggregateValue_field_fullname   protoreflect.FullName = "google.protobuf.UninterpretedOption.aggregate_value"
-)
-
-// Field numbers for google.protobuf.UninterpretedOption.
-const (
-	UninterpretedOption_Name_field_number             protoreflect.FieldNumber = 2
-	UninterpretedOption_IdentifierValue_field_number  protoreflect.FieldNumber = 3
-	UninterpretedOption_PositiveIntValue_field_number protoreflect.FieldNumber = 4
-	UninterpretedOption_NegativeIntValue_field_number protoreflect.FieldNumber = 5
-	UninterpretedOption_DoubleValue_field_number      protoreflect.FieldNumber = 6
-	UninterpretedOption_StringValue_field_number      protoreflect.FieldNumber = 7
-	UninterpretedOption_AggregateValue_field_number   protoreflect.FieldNumber = 8
-)
-
-// Names for google.protobuf.UninterpretedOption.NamePart.
-const (
-	UninterpretedOption_NamePart_message_name     protoreflect.Name     = "NamePart"
-	UninterpretedOption_NamePart_message_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.NamePart"
-)
-
-// Field names for google.protobuf.UninterpretedOption.NamePart.
-const (
-	UninterpretedOption_NamePart_NamePart_field_name    protoreflect.Name = "name_part"
-	UninterpretedOption_NamePart_IsExtension_field_name protoreflect.Name = "is_extension"
-
-	UninterpretedOption_NamePart_NamePart_field_fullname    protoreflect.FullName = "google.protobuf.UninterpretedOption.NamePart.name_part"
-	UninterpretedOption_NamePart_IsExtension_field_fullname protoreflect.FullName = "google.protobuf.UninterpretedOption.NamePart.is_extension"
-)
-
-// Field numbers for google.protobuf.UninterpretedOption.NamePart.
-const (
-	UninterpretedOption_NamePart_NamePart_field_number    protoreflect.FieldNumber = 1
-	UninterpretedOption_NamePart_IsExtension_field_number protoreflect.FieldNumber = 2
-)
-
-// Names for google.protobuf.SourceCodeInfo.
-const (
-	SourceCodeInfo_message_name     protoreflect.Name     = "SourceCodeInfo"
-	SourceCodeInfo_message_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo"
-)
-
-// Field names for google.protobuf.SourceCodeInfo.
-const (
-	SourceCodeInfo_Location_field_name protoreflect.Name = "location"
-
-	SourceCodeInfo_Location_field_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.location"
-)
-
-// Field numbers for google.protobuf.SourceCodeInfo.
-const (
-	SourceCodeInfo_Location_field_number protoreflect.FieldNumber = 1
-)
-
-// Names for google.protobuf.SourceCodeInfo.Location.
-const (
-	SourceCodeInfo_Location_message_name     protoreflect.Name     = "Location"
-	SourceCodeInfo_Location_message_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location"
-)
-
-// Field names for google.protobuf.SourceCodeInfo.Location.
-const (
-	SourceCodeInfo_Location_Path_field_name                    protoreflect.Name = "path"
-	SourceCodeInfo_Location_Span_field_name                    protoreflect.Name = "span"
-	SourceCodeInfo_Location_LeadingComments_field_name         protoreflect.Name = "leading_comments"
-	SourceCodeInfo_Location_TrailingComments_field_name        protoreflect.Name = "trailing_comments"
-	SourceCodeInfo_Location_LeadingDetachedComments_field_name protoreflect.Name = "leading_detached_comments"
-
-	SourceCodeInfo_Location_Path_field_fullname                    protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location.path"
-	SourceCodeInfo_Location_Span_field_fullname                    protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location.span"
-	SourceCodeInfo_Location_LeadingComments_field_fullname         protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location.leading_comments"
-	SourceCodeInfo_Location_TrailingComments_field_fullname        protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location.trailing_comments"
-	SourceCodeInfo_Location_LeadingDetachedComments_field_fullname protoreflect.FullName = "google.protobuf.SourceCodeInfo.Location.leading_detached_comments"
-)
-
-// Field numbers for google.protobuf.SourceCodeInfo.Location.
-const (
-	SourceCodeInfo_Location_Path_field_number                    protoreflect.FieldNumber = 1
-	SourceCodeInfo_Location_Span_field_number                    protoreflect.FieldNumber = 2
-	SourceCodeInfo_Location_LeadingComments_field_number         protoreflect.FieldNumber = 3
-	SourceCodeInfo_Location_TrailingComments_field_number        protoreflect.FieldNumber = 4
-	SourceCodeInfo_Location_LeadingDetachedComments_field_number protoreflect.FieldNumber = 6
-)
-
-// Names for google.protobuf.GeneratedCodeInfo.
-const (
-	GeneratedCodeInfo_message_name     protoreflect.Name     = "GeneratedCodeInfo"
-	GeneratedCodeInfo_message_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo"
-)
-
-// Field names for google.protobuf.GeneratedCodeInfo.
-const (
-	GeneratedCodeInfo_Annotation_field_name protoreflect.Name = "annotation"
-
-	GeneratedCodeInfo_Annotation_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.annotation"
-)
-
-// Field numbers for google.protobuf.GeneratedCodeInfo.
-const (
-	GeneratedCodeInfo_Annotation_field_number protoreflect.FieldNumber = 1
-)
-
-// Names for google.protobuf.GeneratedCodeInfo.Annotation.
-const (
-	GeneratedCodeInfo_Annotation_message_name     protoreflect.Name     = "Annotation"
-	GeneratedCodeInfo_Annotation_message_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation"
-)
-
-// Field names for google.protobuf.GeneratedCodeInfo.Annotation.
-const (
-	GeneratedCodeInfo_Annotation_Path_field_name       protoreflect.Name = "path"
-	GeneratedCodeInfo_Annotation_SourceFile_field_name protoreflect.Name = "source_file"
-	GeneratedCodeInfo_Annotation_Begin_field_name      protoreflect.Name = "begin"
-	GeneratedCodeInfo_Annotation_End_field_name        protoreflect.Name = "end"
-
-	GeneratedCodeInfo_Annotation_Path_field_fullname       protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.path"
-	GeneratedCodeInfo_Annotation_SourceFile_field_fullname protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.source_file"
-	GeneratedCodeInfo_Annotation_Begin_field_fullname      protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.begin"
-	GeneratedCodeInfo_Annotation_End_field_fullname        protoreflect.FullName = "google.protobuf.GeneratedCodeInfo.Annotation.end"
-)
-
-// Field numbers for google.protobuf.GeneratedCodeInfo.Annotation.
-const (
-	GeneratedCodeInfo_Annotation_Path_field_number       protoreflect.FieldNumber = 1
-	GeneratedCodeInfo_Annotation_SourceFile_field_number protoreflect.FieldNumber = 2
-	GeneratedCodeInfo_Annotation_Begin_field_number      protoreflect.FieldNumber = 3
-	GeneratedCodeInfo_Annotation_End_field_number        protoreflect.FieldNumber = 4
-)
diff --git a/internal/genid/doc.go b/internal/genid/doc.go
deleted file mode 100644
index 45ccd01..0000000
--- a/internal/genid/doc.go
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package genid contains constants for declarations in descriptor.proto
-// and the well-known types.
-package genid
-
-import protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-
-const GoogleProtobuf_package protoreflect.FullName = "google.protobuf"
diff --git a/internal/genid/duration_gen.go b/internal/genid/duration_gen.go
deleted file mode 100644
index b070ef4..0000000
--- a/internal/genid/duration_gen.go
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by generate-protos. DO NOT EDIT.
-
-package genid
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-const File_google_protobuf_duration_proto = "google/protobuf/duration.proto"
-
-// Names for google.protobuf.Duration.
-const (
-	Duration_message_name     protoreflect.Name     = "Duration"
-	Duration_message_fullname protoreflect.FullName = "google.protobuf.Duration"
-)
-
-// Field names for google.protobuf.Duration.
-const (
-	Duration_Seconds_field_name protoreflect.Name = "seconds"
-	Duration_Nanos_field_name   protoreflect.Name = "nanos"
-
-	Duration_Seconds_field_fullname protoreflect.FullName = "google.protobuf.Duration.seconds"
-	Duration_Nanos_field_fullname   protoreflect.FullName = "google.protobuf.Duration.nanos"
-)
-
-// Field numbers for google.protobuf.Duration.
-const (
-	Duration_Seconds_field_number protoreflect.FieldNumber = 1
-	Duration_Nanos_field_number   protoreflect.FieldNumber = 2
-)
diff --git a/internal/genid/empty_gen.go b/internal/genid/empty_gen.go
deleted file mode 100644
index 762abb3..0000000
--- a/internal/genid/empty_gen.go
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by generate-protos. DO NOT EDIT.
-
-package genid
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-const File_google_protobuf_empty_proto = "google/protobuf/empty.proto"
-
-// Names for google.protobuf.Empty.
-const (
-	Empty_message_name     protoreflect.Name     = "Empty"
-	Empty_message_fullname protoreflect.FullName = "google.protobuf.Empty"
-)
diff --git a/internal/genid/field_mask_gen.go b/internal/genid/field_mask_gen.go
deleted file mode 100644
index 70bed45..0000000
--- a/internal/genid/field_mask_gen.go
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by generate-protos. DO NOT EDIT.
-
-package genid
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-const File_google_protobuf_field_mask_proto = "google/protobuf/field_mask.proto"
-
-// Names for google.protobuf.FieldMask.
-const (
-	FieldMask_message_name     protoreflect.Name     = "FieldMask"
-	FieldMask_message_fullname protoreflect.FullName = "google.protobuf.FieldMask"
-)
-
-// Field names for google.protobuf.FieldMask.
-const (
-	FieldMask_Paths_field_name protoreflect.Name = "paths"
-
-	FieldMask_Paths_field_fullname protoreflect.FullName = "google.protobuf.FieldMask.paths"
-)
-
-// Field numbers for google.protobuf.FieldMask.
-const (
-	FieldMask_Paths_field_number protoreflect.FieldNumber = 1
-)
diff --git a/internal/genid/goname.go b/internal/genid/goname.go
deleted file mode 100644
index 693d2e9..0000000
--- a/internal/genid/goname.go
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package genid
-
-// Go names of implementation-specific struct fields in generated messages.
-const (
-	State_goname = "state"
-
-	SizeCache_goname  = "sizeCache"
-	SizeCacheA_goname = "XXX_sizecache"
-
-	WeakFields_goname  = "weakFields"
-	WeakFieldsA_goname = "XXX_weak"
-
-	UnknownFields_goname  = "unknownFields"
-	UnknownFieldsA_goname = "XXX_unrecognized"
-
-	ExtensionFields_goname  = "extensionFields"
-	ExtensionFieldsA_goname = "XXX_InternalExtensions"
-	ExtensionFieldsB_goname = "XXX_extensions"
-
-	WeakFieldPrefix_goname = "XXX_weak_"
-)
diff --git a/internal/genid/map_entry.go b/internal/genid/map_entry.go
deleted file mode 100644
index 8f9ea02..0000000
--- a/internal/genid/map_entry.go
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package genid
-
-import protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-
-// Generic field names and numbers for synthetic map entry messages.
-const (
-	MapEntry_Key_field_name   protoreflect.Name = "key"
-	MapEntry_Value_field_name protoreflect.Name = "value"
-
-	MapEntry_Key_field_number   protoreflect.FieldNumber = 1
-	MapEntry_Value_field_number protoreflect.FieldNumber = 2
-)
diff --git a/internal/genid/source_context_gen.go b/internal/genid/source_context_gen.go
deleted file mode 100644
index 3e99ae1..0000000
--- a/internal/genid/source_context_gen.go
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by generate-protos. DO NOT EDIT.
-
-package genid
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-const File_google_protobuf_source_context_proto = "google/protobuf/source_context.proto"
-
-// Names for google.protobuf.SourceContext.
-const (
-	SourceContext_message_name     protoreflect.Name     = "SourceContext"
-	SourceContext_message_fullname protoreflect.FullName = "google.protobuf.SourceContext"
-)
-
-// Field names for google.protobuf.SourceContext.
-const (
-	SourceContext_FileName_field_name protoreflect.Name = "file_name"
-
-	SourceContext_FileName_field_fullname protoreflect.FullName = "google.protobuf.SourceContext.file_name"
-)
-
-// Field numbers for google.protobuf.SourceContext.
-const (
-	SourceContext_FileName_field_number protoreflect.FieldNumber = 1
-)
diff --git a/internal/genid/struct_gen.go b/internal/genid/struct_gen.go
deleted file mode 100644
index 1a38944..0000000
--- a/internal/genid/struct_gen.go
+++ /dev/null
@@ -1,116 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by generate-protos. DO NOT EDIT.
-
-package genid
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-const File_google_protobuf_struct_proto = "google/protobuf/struct.proto"
-
-// Full and short names for google.protobuf.NullValue.
-const (
-	NullValue_enum_fullname = "google.protobuf.NullValue"
-	NullValue_enum_name     = "NullValue"
-)
-
-// Names for google.protobuf.Struct.
-const (
-	Struct_message_name     protoreflect.Name     = "Struct"
-	Struct_message_fullname protoreflect.FullName = "google.protobuf.Struct"
-)
-
-// Field names for google.protobuf.Struct.
-const (
-	Struct_Fields_field_name protoreflect.Name = "fields"
-
-	Struct_Fields_field_fullname protoreflect.FullName = "google.protobuf.Struct.fields"
-)
-
-// Field numbers for google.protobuf.Struct.
-const (
-	Struct_Fields_field_number protoreflect.FieldNumber = 1
-)
-
-// Names for google.protobuf.Struct.FieldsEntry.
-const (
-	Struct_FieldsEntry_message_name     protoreflect.Name     = "FieldsEntry"
-	Struct_FieldsEntry_message_fullname protoreflect.FullName = "google.protobuf.Struct.FieldsEntry"
-)
-
-// Field names for google.protobuf.Struct.FieldsEntry.
-const (
-	Struct_FieldsEntry_Key_field_name   protoreflect.Name = "key"
-	Struct_FieldsEntry_Value_field_name protoreflect.Name = "value"
-
-	Struct_FieldsEntry_Key_field_fullname   protoreflect.FullName = "google.protobuf.Struct.FieldsEntry.key"
-	Struct_FieldsEntry_Value_field_fullname protoreflect.FullName = "google.protobuf.Struct.FieldsEntry.value"
-)
-
-// Field numbers for google.protobuf.Struct.FieldsEntry.
-const (
-	Struct_FieldsEntry_Key_field_number   protoreflect.FieldNumber = 1
-	Struct_FieldsEntry_Value_field_number protoreflect.FieldNumber = 2
-)
-
-// Names for google.protobuf.Value.
-const (
-	Value_message_name     protoreflect.Name     = "Value"
-	Value_message_fullname protoreflect.FullName = "google.protobuf.Value"
-)
-
-// Field names for google.protobuf.Value.
-const (
-	Value_NullValue_field_name   protoreflect.Name = "null_value"
-	Value_NumberValue_field_name protoreflect.Name = "number_value"
-	Value_StringValue_field_name protoreflect.Name = "string_value"
-	Value_BoolValue_field_name   protoreflect.Name = "bool_value"
-	Value_StructValue_field_name protoreflect.Name = "struct_value"
-	Value_ListValue_field_name   protoreflect.Name = "list_value"
-
-	Value_NullValue_field_fullname   protoreflect.FullName = "google.protobuf.Value.null_value"
-	Value_NumberValue_field_fullname protoreflect.FullName = "google.protobuf.Value.number_value"
-	Value_StringValue_field_fullname protoreflect.FullName = "google.protobuf.Value.string_value"
-	Value_BoolValue_field_fullname   protoreflect.FullName = "google.protobuf.Value.bool_value"
-	Value_StructValue_field_fullname protoreflect.FullName = "google.protobuf.Value.struct_value"
-	Value_ListValue_field_fullname   protoreflect.FullName = "google.protobuf.Value.list_value"
-)
-
-// Field numbers for google.protobuf.Value.
-const (
-	Value_NullValue_field_number   protoreflect.FieldNumber = 1
-	Value_NumberValue_field_number protoreflect.FieldNumber = 2
-	Value_StringValue_field_number protoreflect.FieldNumber = 3
-	Value_BoolValue_field_number   protoreflect.FieldNumber = 4
-	Value_StructValue_field_number protoreflect.FieldNumber = 5
-	Value_ListValue_field_number   protoreflect.FieldNumber = 6
-)
-
-// Oneof names for google.protobuf.Value.
-const (
-	Value_Kind_oneof_name protoreflect.Name = "kind"
-
-	Value_Kind_oneof_fullname protoreflect.FullName = "google.protobuf.Value.kind"
-)
-
-// Names for google.protobuf.ListValue.
-const (
-	ListValue_message_name     protoreflect.Name     = "ListValue"
-	ListValue_message_fullname protoreflect.FullName = "google.protobuf.ListValue"
-)
-
-// Field names for google.protobuf.ListValue.
-const (
-	ListValue_Values_field_name protoreflect.Name = "values"
-
-	ListValue_Values_field_fullname protoreflect.FullName = "google.protobuf.ListValue.values"
-)
-
-// Field numbers for google.protobuf.ListValue.
-const (
-	ListValue_Values_field_number protoreflect.FieldNumber = 1
-)
diff --git a/internal/genid/timestamp_gen.go b/internal/genid/timestamp_gen.go
deleted file mode 100644
index f5cd563..0000000
--- a/internal/genid/timestamp_gen.go
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by generate-protos. DO NOT EDIT.
-
-package genid
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-const File_google_protobuf_timestamp_proto = "google/protobuf/timestamp.proto"
-
-// Names for google.protobuf.Timestamp.
-const (
-	Timestamp_message_name     protoreflect.Name     = "Timestamp"
-	Timestamp_message_fullname protoreflect.FullName = "google.protobuf.Timestamp"
-)
-
-// Field names for google.protobuf.Timestamp.
-const (
-	Timestamp_Seconds_field_name protoreflect.Name = "seconds"
-	Timestamp_Nanos_field_name   protoreflect.Name = "nanos"
-
-	Timestamp_Seconds_field_fullname protoreflect.FullName = "google.protobuf.Timestamp.seconds"
-	Timestamp_Nanos_field_fullname   protoreflect.FullName = "google.protobuf.Timestamp.nanos"
-)
-
-// Field numbers for google.protobuf.Timestamp.
-const (
-	Timestamp_Seconds_field_number protoreflect.FieldNumber = 1
-	Timestamp_Nanos_field_number   protoreflect.FieldNumber = 2
-)
diff --git a/internal/genid/type_gen.go b/internal/genid/type_gen.go
deleted file mode 100644
index 3bc7101..0000000
--- a/internal/genid/type_gen.go
+++ /dev/null
@@ -1,184 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by generate-protos. DO NOT EDIT.
-
-package genid
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-const File_google_protobuf_type_proto = "google/protobuf/type.proto"
-
-// Full and short names for google.protobuf.Syntax.
-const (
-	Syntax_enum_fullname = "google.protobuf.Syntax"
-	Syntax_enum_name     = "Syntax"
-)
-
-// Names for google.protobuf.Type.
-const (
-	Type_message_name     protoreflect.Name     = "Type"
-	Type_message_fullname protoreflect.FullName = "google.protobuf.Type"
-)
-
-// Field names for google.protobuf.Type.
-const (
-	Type_Name_field_name          protoreflect.Name = "name"
-	Type_Fields_field_name        protoreflect.Name = "fields"
-	Type_Oneofs_field_name        protoreflect.Name = "oneofs"
-	Type_Options_field_name       protoreflect.Name = "options"
-	Type_SourceContext_field_name protoreflect.Name = "source_context"
-	Type_Syntax_field_name        protoreflect.Name = "syntax"
-
-	Type_Name_field_fullname          protoreflect.FullName = "google.protobuf.Type.name"
-	Type_Fields_field_fullname        protoreflect.FullName = "google.protobuf.Type.fields"
-	Type_Oneofs_field_fullname        protoreflect.FullName = "google.protobuf.Type.oneofs"
-	Type_Options_field_fullname       protoreflect.FullName = "google.protobuf.Type.options"
-	Type_SourceContext_field_fullname protoreflect.FullName = "google.protobuf.Type.source_context"
-	Type_Syntax_field_fullname        protoreflect.FullName = "google.protobuf.Type.syntax"
-)
-
-// Field numbers for google.protobuf.Type.
-const (
-	Type_Name_field_number          protoreflect.FieldNumber = 1
-	Type_Fields_field_number        protoreflect.FieldNumber = 2
-	Type_Oneofs_field_number        protoreflect.FieldNumber = 3
-	Type_Options_field_number       protoreflect.FieldNumber = 4
-	Type_SourceContext_field_number protoreflect.FieldNumber = 5
-	Type_Syntax_field_number        protoreflect.FieldNumber = 6
-)
-
-// Names for google.protobuf.Field.
-const (
-	Field_message_name     protoreflect.Name     = "Field"
-	Field_message_fullname protoreflect.FullName = "google.protobuf.Field"
-)
-
-// Field names for google.protobuf.Field.
-const (
-	Field_Kind_field_name         protoreflect.Name = "kind"
-	Field_Cardinality_field_name  protoreflect.Name = "cardinality"
-	Field_Number_field_name       protoreflect.Name = "number"
-	Field_Name_field_name         protoreflect.Name = "name"
-	Field_TypeUrl_field_name      protoreflect.Name = "type_url"
-	Field_OneofIndex_field_name   protoreflect.Name = "oneof_index"
-	Field_Packed_field_name       protoreflect.Name = "packed"
-	Field_Options_field_name      protoreflect.Name = "options"
-	Field_JsonName_field_name     protoreflect.Name = "json_name"
-	Field_DefaultValue_field_name protoreflect.Name = "default_value"
-
-	Field_Kind_field_fullname         protoreflect.FullName = "google.protobuf.Field.kind"
-	Field_Cardinality_field_fullname  protoreflect.FullName = "google.protobuf.Field.cardinality"
-	Field_Number_field_fullname       protoreflect.FullName = "google.protobuf.Field.number"
-	Field_Name_field_fullname         protoreflect.FullName = "google.protobuf.Field.name"
-	Field_TypeUrl_field_fullname      protoreflect.FullName = "google.protobuf.Field.type_url"
-	Field_OneofIndex_field_fullname   protoreflect.FullName = "google.protobuf.Field.oneof_index"
-	Field_Packed_field_fullname       protoreflect.FullName = "google.protobuf.Field.packed"
-	Field_Options_field_fullname      protoreflect.FullName = "google.protobuf.Field.options"
-	Field_JsonName_field_fullname     protoreflect.FullName = "google.protobuf.Field.json_name"
-	Field_DefaultValue_field_fullname protoreflect.FullName = "google.protobuf.Field.default_value"
-)
-
-// Field numbers for google.protobuf.Field.
-const (
-	Field_Kind_field_number         protoreflect.FieldNumber = 1
-	Field_Cardinality_field_number  protoreflect.FieldNumber = 2
-	Field_Number_field_number       protoreflect.FieldNumber = 3
-	Field_Name_field_number         protoreflect.FieldNumber = 4
-	Field_TypeUrl_field_number      protoreflect.FieldNumber = 6
-	Field_OneofIndex_field_number   protoreflect.FieldNumber = 7
-	Field_Packed_field_number       protoreflect.FieldNumber = 8
-	Field_Options_field_number      protoreflect.FieldNumber = 9
-	Field_JsonName_field_number     protoreflect.FieldNumber = 10
-	Field_DefaultValue_field_number protoreflect.FieldNumber = 11
-)
-
-// Full and short names for google.protobuf.Field.Kind.
-const (
-	Field_Kind_enum_fullname = "google.protobuf.Field.Kind"
-	Field_Kind_enum_name     = "Kind"
-)
-
-// Full and short names for google.protobuf.Field.Cardinality.
-const (
-	Field_Cardinality_enum_fullname = "google.protobuf.Field.Cardinality"
-	Field_Cardinality_enum_name     = "Cardinality"
-)
-
-// Names for google.protobuf.Enum.
-const (
-	Enum_message_name     protoreflect.Name     = "Enum"
-	Enum_message_fullname protoreflect.FullName = "google.protobuf.Enum"
-)
-
-// Field names for google.protobuf.Enum.
-const (
-	Enum_Name_field_name          protoreflect.Name = "name"
-	Enum_Enumvalue_field_name     protoreflect.Name = "enumvalue"
-	Enum_Options_field_name       protoreflect.Name = "options"
-	Enum_SourceContext_field_name protoreflect.Name = "source_context"
-	Enum_Syntax_field_name        protoreflect.Name = "syntax"
-
-	Enum_Name_field_fullname          protoreflect.FullName = "google.protobuf.Enum.name"
-	Enum_Enumvalue_field_fullname     protoreflect.FullName = "google.protobuf.Enum.enumvalue"
-	Enum_Options_field_fullname       protoreflect.FullName = "google.protobuf.Enum.options"
-	Enum_SourceContext_field_fullname protoreflect.FullName = "google.protobuf.Enum.source_context"
-	Enum_Syntax_field_fullname        protoreflect.FullName = "google.protobuf.Enum.syntax"
-)
-
-// Field numbers for google.protobuf.Enum.
-const (
-	Enum_Name_field_number          protoreflect.FieldNumber = 1
-	Enum_Enumvalue_field_number     protoreflect.FieldNumber = 2
-	Enum_Options_field_number       protoreflect.FieldNumber = 3
-	Enum_SourceContext_field_number protoreflect.FieldNumber = 4
-	Enum_Syntax_field_number        protoreflect.FieldNumber = 5
-)
-
-// Names for google.protobuf.EnumValue.
-const (
-	EnumValue_message_name     protoreflect.Name     = "EnumValue"
-	EnumValue_message_fullname protoreflect.FullName = "google.protobuf.EnumValue"
-)
-
-// Field names for google.protobuf.EnumValue.
-const (
-	EnumValue_Name_field_name    protoreflect.Name = "name"
-	EnumValue_Number_field_name  protoreflect.Name = "number"
-	EnumValue_Options_field_name protoreflect.Name = "options"
-
-	EnumValue_Name_field_fullname    protoreflect.FullName = "google.protobuf.EnumValue.name"
-	EnumValue_Number_field_fullname  protoreflect.FullName = "google.protobuf.EnumValue.number"
-	EnumValue_Options_field_fullname protoreflect.FullName = "google.protobuf.EnumValue.options"
-)
-
-// Field numbers for google.protobuf.EnumValue.
-const (
-	EnumValue_Name_field_number    protoreflect.FieldNumber = 1
-	EnumValue_Number_field_number  protoreflect.FieldNumber = 2
-	EnumValue_Options_field_number protoreflect.FieldNumber = 3
-)
-
-// Names for google.protobuf.Option.
-const (
-	Option_message_name     protoreflect.Name     = "Option"
-	Option_message_fullname protoreflect.FullName = "google.protobuf.Option"
-)
-
-// Field names for google.protobuf.Option.
-const (
-	Option_Name_field_name  protoreflect.Name = "name"
-	Option_Value_field_name protoreflect.Name = "value"
-
-	Option_Name_field_fullname  protoreflect.FullName = "google.protobuf.Option.name"
-	Option_Value_field_fullname protoreflect.FullName = "google.protobuf.Option.value"
-)
-
-// Field numbers for google.protobuf.Option.
-const (
-	Option_Name_field_number  protoreflect.FieldNumber = 1
-	Option_Value_field_number protoreflect.FieldNumber = 2
-)
diff --git a/internal/genid/wrappers.go b/internal/genid/wrappers.go
deleted file mode 100644
index 429384b..0000000
--- a/internal/genid/wrappers.go
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package genid
-
-import protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-
-// Generic field name and number for messages in wrappers.proto.
-const (
-	WrapperValue_Value_field_name   protoreflect.Name        = "value"
-	WrapperValue_Value_field_number protoreflect.FieldNumber = 1
-)
diff --git a/internal/genid/wrappers_gen.go b/internal/genid/wrappers_gen.go
deleted file mode 100644
index 72527d2..0000000
--- a/internal/genid/wrappers_gen.go
+++ /dev/null
@@ -1,175 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by generate-protos. DO NOT EDIT.
-
-package genid
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-const File_google_protobuf_wrappers_proto = "google/protobuf/wrappers.proto"
-
-// Names for google.protobuf.DoubleValue.
-const (
-	DoubleValue_message_name     protoreflect.Name     = "DoubleValue"
-	DoubleValue_message_fullname protoreflect.FullName = "google.protobuf.DoubleValue"
-)
-
-// Field names for google.protobuf.DoubleValue.
-const (
-	DoubleValue_Value_field_name protoreflect.Name = "value"
-
-	DoubleValue_Value_field_fullname protoreflect.FullName = "google.protobuf.DoubleValue.value"
-)
-
-// Field numbers for google.protobuf.DoubleValue.
-const (
-	DoubleValue_Value_field_number protoreflect.FieldNumber = 1
-)
-
-// Names for google.protobuf.FloatValue.
-const (
-	FloatValue_message_name     protoreflect.Name     = "FloatValue"
-	FloatValue_message_fullname protoreflect.FullName = "google.protobuf.FloatValue"
-)
-
-// Field names for google.protobuf.FloatValue.
-const (
-	FloatValue_Value_field_name protoreflect.Name = "value"
-
-	FloatValue_Value_field_fullname protoreflect.FullName = "google.protobuf.FloatValue.value"
-)
-
-// Field numbers for google.protobuf.FloatValue.
-const (
-	FloatValue_Value_field_number protoreflect.FieldNumber = 1
-)
-
-// Names for google.protobuf.Int64Value.
-const (
-	Int64Value_message_name     protoreflect.Name     = "Int64Value"
-	Int64Value_message_fullname protoreflect.FullName = "google.protobuf.Int64Value"
-)
-
-// Field names for google.protobuf.Int64Value.
-const (
-	Int64Value_Value_field_name protoreflect.Name = "value"
-
-	Int64Value_Value_field_fullname protoreflect.FullName = "google.protobuf.Int64Value.value"
-)
-
-// Field numbers for google.protobuf.Int64Value.
-const (
-	Int64Value_Value_field_number protoreflect.FieldNumber = 1
-)
-
-// Names for google.protobuf.UInt64Value.
-const (
-	UInt64Value_message_name     protoreflect.Name     = "UInt64Value"
-	UInt64Value_message_fullname protoreflect.FullName = "google.protobuf.UInt64Value"
-)
-
-// Field names for google.protobuf.UInt64Value.
-const (
-	UInt64Value_Value_field_name protoreflect.Name = "value"
-
-	UInt64Value_Value_field_fullname protoreflect.FullName = "google.protobuf.UInt64Value.value"
-)
-
-// Field numbers for google.protobuf.UInt64Value.
-const (
-	UInt64Value_Value_field_number protoreflect.FieldNumber = 1
-)
-
-// Names for google.protobuf.Int32Value.
-const (
-	Int32Value_message_name     protoreflect.Name     = "Int32Value"
-	Int32Value_message_fullname protoreflect.FullName = "google.protobuf.Int32Value"
-)
-
-// Field names for google.protobuf.Int32Value.
-const (
-	Int32Value_Value_field_name protoreflect.Name = "value"
-
-	Int32Value_Value_field_fullname protoreflect.FullName = "google.protobuf.Int32Value.value"
-)
-
-// Field numbers for google.protobuf.Int32Value.
-const (
-	Int32Value_Value_field_number protoreflect.FieldNumber = 1
-)
-
-// Names for google.protobuf.UInt32Value.
-const (
-	UInt32Value_message_name     protoreflect.Name     = "UInt32Value"
-	UInt32Value_message_fullname protoreflect.FullName = "google.protobuf.UInt32Value"
-)
-
-// Field names for google.protobuf.UInt32Value.
-const (
-	UInt32Value_Value_field_name protoreflect.Name = "value"
-
-	UInt32Value_Value_field_fullname protoreflect.FullName = "google.protobuf.UInt32Value.value"
-)
-
-// Field numbers for google.protobuf.UInt32Value.
-const (
-	UInt32Value_Value_field_number protoreflect.FieldNumber = 1
-)
-
-// Names for google.protobuf.BoolValue.
-const (
-	BoolValue_message_name     protoreflect.Name     = "BoolValue"
-	BoolValue_message_fullname protoreflect.FullName = "google.protobuf.BoolValue"
-)
-
-// Field names for google.protobuf.BoolValue.
-const (
-	BoolValue_Value_field_name protoreflect.Name = "value"
-
-	BoolValue_Value_field_fullname protoreflect.FullName = "google.protobuf.BoolValue.value"
-)
-
-// Field numbers for google.protobuf.BoolValue.
-const (
-	BoolValue_Value_field_number protoreflect.FieldNumber = 1
-)
-
-// Names for google.protobuf.StringValue.
-const (
-	StringValue_message_name     protoreflect.Name     = "StringValue"
-	StringValue_message_fullname protoreflect.FullName = "google.protobuf.StringValue"
-)
-
-// Field names for google.protobuf.StringValue.
-const (
-	StringValue_Value_field_name protoreflect.Name = "value"
-
-	StringValue_Value_field_fullname protoreflect.FullName = "google.protobuf.StringValue.value"
-)
-
-// Field numbers for google.protobuf.StringValue.
-const (
-	StringValue_Value_field_number protoreflect.FieldNumber = 1
-)
-
-// Names for google.protobuf.BytesValue.
-const (
-	BytesValue_message_name     protoreflect.Name     = "BytesValue"
-	BytesValue_message_fullname protoreflect.FullName = "google.protobuf.BytesValue"
-)
-
-// Field names for google.protobuf.BytesValue.
-const (
-	BytesValue_Value_field_name protoreflect.Name = "value"
-
-	BytesValue_Value_field_fullname protoreflect.FullName = "google.protobuf.BytesValue.value"
-)
-
-// Field numbers for google.protobuf.BytesValue.
-const (
-	BytesValue_Value_field_number protoreflect.FieldNumber = 1
-)
diff --git a/internal/impl/api_export.go b/internal/impl/api_export.go
deleted file mode 100644
index abee5f3..0000000
--- a/internal/impl/api_export.go
+++ /dev/null
@@ -1,177 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"fmt"
-	"reflect"
-	"strconv"
-
-	"google.golang.org/protobuf/encoding/prototext"
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/proto"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	piface "google.golang.org/protobuf/runtime/protoiface"
-)
-
-// Export is a zero-length named type that exists only to export a set of
-// functions that we do not want to appear in godoc.
-type Export struct{}
-
-// NewError formats a string according to the format specifier and arguments and
-// returns an error that has a "proto" prefix.
-func (Export) NewError(f string, x ...interface{}) error {
-	return errors.New(f, x...)
-}
-
-// enum is any enum type generated by protoc-gen-go
-// and must be a named int32 type.
-type enum = interface{}
-
-// EnumOf returns the protoreflect.Enum interface over e.
-// It returns nil if e is nil.
-func (Export) EnumOf(e enum) pref.Enum {
-	switch e := e.(type) {
-	case nil:
-		return nil
-	case pref.Enum:
-		return e
-	default:
-		return legacyWrapEnum(reflect.ValueOf(e))
-	}
-}
-
-// EnumDescriptorOf returns the protoreflect.EnumDescriptor for e.
-// It returns nil if e is nil.
-func (Export) EnumDescriptorOf(e enum) pref.EnumDescriptor {
-	switch e := e.(type) {
-	case nil:
-		return nil
-	case pref.Enum:
-		return e.Descriptor()
-	default:
-		return LegacyLoadEnumDesc(reflect.TypeOf(e))
-	}
-}
-
-// EnumTypeOf returns the protoreflect.EnumType for e.
-// It returns nil if e is nil.
-func (Export) EnumTypeOf(e enum) pref.EnumType {
-	switch e := e.(type) {
-	case nil:
-		return nil
-	case pref.Enum:
-		return e.Type()
-	default:
-		return legacyLoadEnumType(reflect.TypeOf(e))
-	}
-}
-
-// EnumStringOf returns the enum value as a string, either as the name if
-// the number is resolvable, or the number formatted as a string.
-func (Export) EnumStringOf(ed pref.EnumDescriptor, n pref.EnumNumber) string {
-	ev := ed.Values().ByNumber(n)
-	if ev != nil {
-		return string(ev.Name())
-	}
-	return strconv.Itoa(int(n))
-}
-
-// message is any message type generated by protoc-gen-go
-// and must be a pointer to a named struct type.
-type message = interface{}
-
-// legacyMessageWrapper wraps a v2 message as a v1 message.
-type legacyMessageWrapper struct{ m pref.ProtoMessage }
-
-func (m legacyMessageWrapper) Reset()         { proto.Reset(m.m) }
-func (m legacyMessageWrapper) String() string { return Export{}.MessageStringOf(m.m) }
-func (m legacyMessageWrapper) ProtoMessage()  {}
-
-// ProtoMessageV1Of converts either a v1 or v2 message to a v1 message.
-// It returns nil if m is nil.
-func (Export) ProtoMessageV1Of(m message) piface.MessageV1 {
-	switch mv := m.(type) {
-	case nil:
-		return nil
-	case piface.MessageV1:
-		return mv
-	case unwrapper:
-		return Export{}.ProtoMessageV1Of(mv.protoUnwrap())
-	case pref.ProtoMessage:
-		return legacyMessageWrapper{mv}
-	default:
-		panic(fmt.Sprintf("message %T is neither a v1 or v2 Message", m))
-	}
-}
-
-func (Export) protoMessageV2Of(m message) pref.ProtoMessage {
-	switch mv := m.(type) {
-	case nil:
-		return nil
-	case pref.ProtoMessage:
-		return mv
-	case legacyMessageWrapper:
-		return mv.m
-	case piface.MessageV1:
-		return nil
-	default:
-		panic(fmt.Sprintf("message %T is neither a v1 or v2 Message", m))
-	}
-}
-
-// ProtoMessageV2Of converts either a v1 or v2 message to a v2 message.
-// It returns nil if m is nil.
-func (Export) ProtoMessageV2Of(m message) pref.ProtoMessage {
-	if m == nil {
-		return nil
-	}
-	if mv := (Export{}).protoMessageV2Of(m); mv != nil {
-		return mv
-	}
-	return legacyWrapMessage(reflect.ValueOf(m)).Interface()
-}
-
-// MessageOf returns the protoreflect.Message interface over m.
-// It returns nil if m is nil.
-func (Export) MessageOf(m message) pref.Message {
-	if m == nil {
-		return nil
-	}
-	if mv := (Export{}).protoMessageV2Of(m); mv != nil {
-		return mv.ProtoReflect()
-	}
-	return legacyWrapMessage(reflect.ValueOf(m))
-}
-
-// MessageDescriptorOf returns the protoreflect.MessageDescriptor for m.
-// It returns nil if m is nil.
-func (Export) MessageDescriptorOf(m message) pref.MessageDescriptor {
-	if m == nil {
-		return nil
-	}
-	if mv := (Export{}).protoMessageV2Of(m); mv != nil {
-		return mv.ProtoReflect().Descriptor()
-	}
-	return LegacyLoadMessageDesc(reflect.TypeOf(m))
-}
-
-// MessageTypeOf returns the protoreflect.MessageType for m.
-// It returns nil if m is nil.
-func (Export) MessageTypeOf(m message) pref.MessageType {
-	if m == nil {
-		return nil
-	}
-	if mv := (Export{}).protoMessageV2Of(m); mv != nil {
-		return mv.ProtoReflect().Type()
-	}
-	return legacyLoadMessageType(reflect.TypeOf(m), "")
-}
-
-// MessageStringOf returns the message value as a string,
-// which is the message serialized in the protobuf text format.
-func (Export) MessageStringOf(m pref.ProtoMessage) string {
-	return prototext.MarshalOptions{Multiline: false}.Format(m)
-}
diff --git a/internal/impl/checkinit.go b/internal/impl/checkinit.go
deleted file mode 100644
index b82341e..0000000
--- a/internal/impl/checkinit.go
+++ /dev/null
@@ -1,141 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"sync"
-
-	"google.golang.org/protobuf/internal/errors"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	piface "google.golang.org/protobuf/runtime/protoiface"
-)
-
-func (mi *MessageInfo) checkInitialized(in piface.CheckInitializedInput) (piface.CheckInitializedOutput, error) {
-	var p pointer
-	if ms, ok := in.Message.(*messageState); ok {
-		p = ms.pointer()
-	} else {
-		p = in.Message.(*messageReflectWrapper).pointer()
-	}
-	return piface.CheckInitializedOutput{}, mi.checkInitializedPointer(p)
-}
-
-func (mi *MessageInfo) checkInitializedPointer(p pointer) error {
-	mi.init()
-	if !mi.needsInitCheck {
-		return nil
-	}
-	if p.IsNil() {
-		for _, f := range mi.orderedCoderFields {
-			if f.isRequired {
-				return errors.RequiredNotSet(string(mi.Desc.Fields().ByNumber(f.num).FullName()))
-			}
-		}
-		return nil
-	}
-	if mi.extensionOffset.IsValid() {
-		e := p.Apply(mi.extensionOffset).Extensions()
-		if err := mi.isInitExtensions(e); err != nil {
-			return err
-		}
-	}
-	for _, f := range mi.orderedCoderFields {
-		if !f.isRequired && f.funcs.isInit == nil {
-			continue
-		}
-		fptr := p.Apply(f.offset)
-		if f.isPointer && fptr.Elem().IsNil() {
-			if f.isRequired {
-				return errors.RequiredNotSet(string(mi.Desc.Fields().ByNumber(f.num).FullName()))
-			}
-			continue
-		}
-		if f.funcs.isInit == nil {
-			continue
-		}
-		if err := f.funcs.isInit(fptr, f); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func (mi *MessageInfo) isInitExtensions(ext *map[int32]ExtensionField) error {
-	if ext == nil {
-		return nil
-	}
-	for _, x := range *ext {
-		ei := getExtensionFieldInfo(x.Type())
-		if ei.funcs.isInit == nil {
-			continue
-		}
-		v := x.Value()
-		if !v.IsValid() {
-			continue
-		}
-		if err := ei.funcs.isInit(v); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-var (
-	needsInitCheckMu  sync.Mutex
-	needsInitCheckMap sync.Map
-)
-
-// needsInitCheck reports whether a message needs to be checked for partial initialization.
-//
-// It returns true if the message transitively includes any required or extension fields.
-func needsInitCheck(md pref.MessageDescriptor) bool {
-	if v, ok := needsInitCheckMap.Load(md); ok {
-		if has, ok := v.(bool); ok {
-			return has
-		}
-	}
-	needsInitCheckMu.Lock()
-	defer needsInitCheckMu.Unlock()
-	return needsInitCheckLocked(md)
-}
-
-func needsInitCheckLocked(md pref.MessageDescriptor) (has bool) {
-	if v, ok := needsInitCheckMap.Load(md); ok {
-		// If has is true, we've previously determined that this message
-		// needs init checks.
-		//
-		// If has is false, we've previously determined that it can never
-		// be uninitialized.
-		//
-		// If has is not a bool, we've just encountered a cycle in the
-		// message graph. In this case, it is safe to return false: If
-		// the message does have required fields, we'll detect them later
-		// in the graph traversal.
-		has, ok := v.(bool)
-		return ok && has
-	}
-	needsInitCheckMap.Store(md, struct{}{}) // avoid cycles while descending into this message
-	defer func() {
-		needsInitCheckMap.Store(md, has)
-	}()
-	if md.RequiredNumbers().Len() > 0 {
-		return true
-	}
-	if md.ExtensionRanges().Len() > 0 {
-		return true
-	}
-	for i := 0; i < md.Fields().Len(); i++ {
-		fd := md.Fields().Get(i)
-		// Map keys are never messages, so just consider the map value.
-		if fd.IsMap() {
-			fd = fd.MapValue()
-		}
-		fmd := fd.Message()
-		if fmd != nil && needsInitCheckLocked(fmd) {
-			return true
-		}
-	}
-	return false
-}
diff --git a/internal/impl/codec_extension.go b/internal/impl/codec_extension.go
deleted file mode 100644
index 08d3517..0000000
--- a/internal/impl/codec_extension.go
+++ /dev/null
@@ -1,223 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"sync"
-	"sync/atomic"
-
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/errors"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-type extensionFieldInfo struct {
-	wiretag             uint64
-	tagsize             int
-	unmarshalNeedsValue bool
-	funcs               valueCoderFuncs
-	validation          validationInfo
-}
-
-var legacyExtensionFieldInfoCache sync.Map // map[protoreflect.ExtensionType]*extensionFieldInfo
-
-func getExtensionFieldInfo(xt pref.ExtensionType) *extensionFieldInfo {
-	if xi, ok := xt.(*ExtensionInfo); ok {
-		xi.lazyInit()
-		return xi.info
-	}
-	return legacyLoadExtensionFieldInfo(xt)
-}
-
-// legacyLoadExtensionFieldInfo dynamically loads a *ExtensionInfo for xt.
-func legacyLoadExtensionFieldInfo(xt pref.ExtensionType) *extensionFieldInfo {
-	if xi, ok := legacyExtensionFieldInfoCache.Load(xt); ok {
-		return xi.(*extensionFieldInfo)
-	}
-	e := makeExtensionFieldInfo(xt.TypeDescriptor())
-	if e, ok := legacyMessageTypeCache.LoadOrStore(xt, e); ok {
-		return e.(*extensionFieldInfo)
-	}
-	return e
-}
-
-func makeExtensionFieldInfo(xd pref.ExtensionDescriptor) *extensionFieldInfo {
-	var wiretag uint64
-	if !xd.IsPacked() {
-		wiretag = protowire.EncodeTag(xd.Number(), wireTypes[xd.Kind()])
-	} else {
-		wiretag = protowire.EncodeTag(xd.Number(), protowire.BytesType)
-	}
-	e := &extensionFieldInfo{
-		wiretag: wiretag,
-		tagsize: protowire.SizeVarint(wiretag),
-		funcs:   encoderFuncsForValue(xd),
-	}
-	// Does the unmarshal function need a value passed to it?
-	// This is true for composite types, where we pass in a message, list, or map to fill in,
-	// and for enums, where we pass in a prototype value to specify the concrete enum type.
-	switch xd.Kind() {
-	case pref.MessageKind, pref.GroupKind, pref.EnumKind:
-		e.unmarshalNeedsValue = true
-	default:
-		if xd.Cardinality() == pref.Repeated {
-			e.unmarshalNeedsValue = true
-		}
-	}
-	return e
-}
-
-type lazyExtensionValue struct {
-	atomicOnce uint32 // atomically set if value is valid
-	mu         sync.Mutex
-	xi         *extensionFieldInfo
-	value      pref.Value
-	b          []byte
-	fn         func() pref.Value
-}
-
-type ExtensionField struct {
-	typ pref.ExtensionType
-
-	// value is either the value of GetValue,
-	// or a *lazyExtensionValue that then returns the value of GetValue.
-	value pref.Value
-	lazy  *lazyExtensionValue
-}
-
-func (f *ExtensionField) appendLazyBytes(xt pref.ExtensionType, xi *extensionFieldInfo, num protowire.Number, wtyp protowire.Type, b []byte) {
-	if f.lazy == nil {
-		f.lazy = &lazyExtensionValue{xi: xi}
-	}
-	f.typ = xt
-	f.lazy.xi = xi
-	f.lazy.b = protowire.AppendTag(f.lazy.b, num, wtyp)
-	f.lazy.b = append(f.lazy.b, b...)
-}
-
-func (f *ExtensionField) canLazy(xt pref.ExtensionType) bool {
-	if f.typ == nil {
-		return true
-	}
-	if f.typ == xt && f.lazy != nil && atomic.LoadUint32(&f.lazy.atomicOnce) == 0 {
-		return true
-	}
-	return false
-}
-
-func (f *ExtensionField) lazyInit() {
-	f.lazy.mu.Lock()
-	defer f.lazy.mu.Unlock()
-	if atomic.LoadUint32(&f.lazy.atomicOnce) == 1 {
-		return
-	}
-	if f.lazy.xi != nil {
-		b := f.lazy.b
-		val := f.typ.New()
-		for len(b) > 0 {
-			var tag uint64
-			if b[0] < 0x80 {
-				tag = uint64(b[0])
-				b = b[1:]
-			} else if len(b) >= 2 && b[1] < 128 {
-				tag = uint64(b[0]&0x7f) + uint64(b[1])<<7
-				b = b[2:]
-			} else {
-				var n int
-				tag, n = protowire.ConsumeVarint(b)
-				if n < 0 {
-					panic(errors.New("bad tag in lazy extension decoding"))
-				}
-				b = b[n:]
-			}
-			num := protowire.Number(tag >> 3)
-			wtyp := protowire.Type(tag & 7)
-			var out unmarshalOutput
-			var err error
-			val, out, err = f.lazy.xi.funcs.unmarshal(b, val, num, wtyp, lazyUnmarshalOptions)
-			if err != nil {
-				panic(errors.New("decode failure in lazy extension decoding: %v", err))
-			}
-			b = b[out.n:]
-		}
-		f.lazy.value = val
-	} else {
-		f.lazy.value = f.lazy.fn()
-	}
-	f.lazy.xi = nil
-	f.lazy.fn = nil
-	f.lazy.b = nil
-	atomic.StoreUint32(&f.lazy.atomicOnce, 1)
-}
-
-// Set sets the type and value of the extension field.
-// This must not be called concurrently.
-func (f *ExtensionField) Set(t pref.ExtensionType, v pref.Value) {
-	f.typ = t
-	f.value = v
-	f.lazy = nil
-}
-
-// SetLazy sets the type and a value that is to be lazily evaluated upon first use.
-// This must not be called concurrently.
-func (f *ExtensionField) SetLazy(t pref.ExtensionType, fn func() pref.Value) {
-	f.typ = t
-	f.lazy = &lazyExtensionValue{fn: fn}
-}
-
-// Value returns the value of the extension field.
-// This may be called concurrently.
-func (f *ExtensionField) Value() pref.Value {
-	if f.lazy != nil {
-		if atomic.LoadUint32(&f.lazy.atomicOnce) == 0 {
-			f.lazyInit()
-		}
-		return f.lazy.value
-	}
-	return f.value
-}
-
-// Type returns the type of the extension field.
-// This may be called concurrently.
-func (f ExtensionField) Type() pref.ExtensionType {
-	return f.typ
-}
-
-// IsSet returns whether the extension field is set.
-// This may be called concurrently.
-func (f ExtensionField) IsSet() bool {
-	return f.typ != nil
-}
-
-// IsLazy reports whether a field is lazily encoded.
-// It is exported for testing.
-func IsLazy(m pref.Message, fd pref.FieldDescriptor) bool {
-	var mi *MessageInfo
-	var p pointer
-	switch m := m.(type) {
-	case *messageState:
-		mi = m.messageInfo()
-		p = m.pointer()
-	case *messageReflectWrapper:
-		mi = m.messageInfo()
-		p = m.pointer()
-	default:
-		return false
-	}
-	xd, ok := fd.(pref.ExtensionTypeDescriptor)
-	if !ok {
-		return false
-	}
-	xt := xd.Type()
-	ext := mi.extensionMap(p)
-	if ext == nil {
-		return false
-	}
-	f, ok := (*ext)[int32(fd.Number())]
-	if !ok {
-		return false
-	}
-	return f.typ == xt && f.lazy != nil && atomic.LoadUint32(&f.lazy.atomicOnce) == 0
-}
diff --git a/internal/impl/codec_field.go b/internal/impl/codec_field.go
deleted file mode 100644
index cb4b482..0000000
--- a/internal/impl/codec_field.go
+++ /dev/null
@@ -1,830 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"fmt"
-	"reflect"
-	"sync"
-
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/proto"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	preg "google.golang.org/protobuf/reflect/protoregistry"
-	piface "google.golang.org/protobuf/runtime/protoiface"
-)
-
-type errInvalidUTF8 struct{}
-
-func (errInvalidUTF8) Error() string     { return "string field contains invalid UTF-8" }
-func (errInvalidUTF8) InvalidUTF8() bool { return true }
-func (errInvalidUTF8) Unwrap() error     { return errors.Error }
-
-// initOneofFieldCoders initializes the fast-path functions for the fields in a oneof.
-//
-// For size, marshal, and isInit operations, functions are set only on the first field
-// in the oneof. The functions are called when the oneof is non-nil, and will dispatch
-// to the appropriate field-specific function as necessary.
-//
-// The unmarshal function is set on each field individually as usual.
-func (mi *MessageInfo) initOneofFieldCoders(od pref.OneofDescriptor, si structInfo) {
-	fs := si.oneofsByName[od.Name()]
-	ft := fs.Type
-	oneofFields := make(map[reflect.Type]*coderFieldInfo)
-	needIsInit := false
-	fields := od.Fields()
-	for i, lim := 0, fields.Len(); i < lim; i++ {
-		fd := od.Fields().Get(i)
-		num := fd.Number()
-		// Make a copy of the original coderFieldInfo for use in unmarshaling.
-		//
-		// oneofFields[oneofType].funcs.marshal is the field-specific marshal function.
-		//
-		// mi.coderFields[num].marshal is set on only the first field in the oneof,
-		// and dispatches to the field-specific marshaler in oneofFields.
-		cf := *mi.coderFields[num]
-		ot := si.oneofWrappersByNumber[num]
-		cf.ft = ot.Field(0).Type
-		cf.mi, cf.funcs = fieldCoder(fd, cf.ft)
-		oneofFields[ot] = &cf
-		if cf.funcs.isInit != nil {
-			needIsInit = true
-		}
-		mi.coderFields[num].funcs.unmarshal = func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {
-			var vw reflect.Value         // pointer to wrapper type
-			vi := p.AsValueOf(ft).Elem() // oneof field value of interface kind
-			if !vi.IsNil() && !vi.Elem().IsNil() && vi.Elem().Elem().Type() == ot {
-				vw = vi.Elem()
-			} else {
-				vw = reflect.New(ot)
-			}
-			out, err := cf.funcs.unmarshal(b, pointerOfValue(vw).Apply(zeroOffset), wtyp, &cf, opts)
-			if err != nil {
-				return out, err
-			}
-			vi.Set(vw)
-			return out, nil
-		}
-	}
-	getInfo := func(p pointer) (pointer, *coderFieldInfo) {
-		v := p.AsValueOf(ft).Elem()
-		if v.IsNil() {
-			return pointer{}, nil
-		}
-		v = v.Elem() // interface -> *struct
-		if v.IsNil() {
-			return pointer{}, nil
-		}
-		return pointerOfValue(v).Apply(zeroOffset), oneofFields[v.Elem().Type()]
-	}
-	first := mi.coderFields[od.Fields().Get(0).Number()]
-	first.funcs.size = func(p pointer, _ *coderFieldInfo, opts marshalOptions) int {
-		p, info := getInfo(p)
-		if info == nil || info.funcs.size == nil {
-			return 0
-		}
-		return info.funcs.size(p, info, opts)
-	}
-	first.funcs.marshal = func(b []byte, p pointer, _ *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-		p, info := getInfo(p)
-		if info == nil || info.funcs.marshal == nil {
-			return b, nil
-		}
-		return info.funcs.marshal(b, p, info, opts)
-	}
-	first.funcs.merge = func(dst, src pointer, _ *coderFieldInfo, opts mergeOptions) {
-		srcp, srcinfo := getInfo(src)
-		if srcinfo == nil || srcinfo.funcs.merge == nil {
-			return
-		}
-		dstp, dstinfo := getInfo(dst)
-		if dstinfo != srcinfo {
-			dst.AsValueOf(ft).Elem().Set(reflect.New(src.AsValueOf(ft).Elem().Elem().Elem().Type()))
-			dstp = pointerOfValue(dst.AsValueOf(ft).Elem().Elem()).Apply(zeroOffset)
-		}
-		srcinfo.funcs.merge(dstp, srcp, srcinfo, opts)
-	}
-	if needIsInit {
-		first.funcs.isInit = func(p pointer, _ *coderFieldInfo) error {
-			p, info := getInfo(p)
-			if info == nil || info.funcs.isInit == nil {
-				return nil
-			}
-			return info.funcs.isInit(p, info)
-		}
-	}
-}
-
-func makeWeakMessageFieldCoder(fd pref.FieldDescriptor) pointerCoderFuncs {
-	var once sync.Once
-	var messageType pref.MessageType
-	lazyInit := func() {
-		once.Do(func() {
-			messageName := fd.Message().FullName()
-			messageType, _ = preg.GlobalTypes.FindMessageByName(messageName)
-		})
-	}
-
-	return pointerCoderFuncs{
-		size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {
-			m, ok := p.WeakFields().get(f.num)
-			if !ok {
-				return 0
-			}
-			lazyInit()
-			if messageType == nil {
-				panic(fmt.Sprintf("weak message %v is not linked in", fd.Message().FullName()))
-			}
-			return sizeMessage(m, f.tagsize, opts)
-		},
-		marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-			m, ok := p.WeakFields().get(f.num)
-			if !ok {
-				return b, nil
-			}
-			lazyInit()
-			if messageType == nil {
-				panic(fmt.Sprintf("weak message %v is not linked in", fd.Message().FullName()))
-			}
-			return appendMessage(b, m, f.wiretag, opts)
-		},
-		unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {
-			fs := p.WeakFields()
-			m, ok := fs.get(f.num)
-			if !ok {
-				lazyInit()
-				if messageType == nil {
-					return unmarshalOutput{}, errUnknown
-				}
-				m = messageType.New().Interface()
-				fs.set(f.num, m)
-			}
-			return consumeMessage(b, m, wtyp, opts)
-		},
-		isInit: func(p pointer, f *coderFieldInfo) error {
-			m, ok := p.WeakFields().get(f.num)
-			if !ok {
-				return nil
-			}
-			return proto.CheckInitialized(m)
-		},
-		merge: func(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {
-			sm, ok := src.WeakFields().get(f.num)
-			if !ok {
-				return
-			}
-			dm, ok := dst.WeakFields().get(f.num)
-			if !ok {
-				lazyInit()
-				if messageType == nil {
-					panic(fmt.Sprintf("weak message %v is not linked in", fd.Message().FullName()))
-				}
-				dm = messageType.New().Interface()
-				dst.WeakFields().set(f.num, dm)
-			}
-			opts.Merge(dm, sm)
-		},
-	}
-}
-
-func makeMessageFieldCoder(fd pref.FieldDescriptor, ft reflect.Type) pointerCoderFuncs {
-	if mi := getMessageInfo(ft); mi != nil {
-		funcs := pointerCoderFuncs{
-			size:      sizeMessageInfo,
-			marshal:   appendMessageInfo,
-			unmarshal: consumeMessageInfo,
-			merge:     mergeMessage,
-		}
-		if needsInitCheck(mi.Desc) {
-			funcs.isInit = isInitMessageInfo
-		}
-		return funcs
-	} else {
-		return pointerCoderFuncs{
-			size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {
-				m := asMessage(p.AsValueOf(ft).Elem())
-				return sizeMessage(m, f.tagsize, opts)
-			},
-			marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-				m := asMessage(p.AsValueOf(ft).Elem())
-				return appendMessage(b, m, f.wiretag, opts)
-			},
-			unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {
-				mp := p.AsValueOf(ft).Elem()
-				if mp.IsNil() {
-					mp.Set(reflect.New(ft.Elem()))
-				}
-				return consumeMessage(b, asMessage(mp), wtyp, opts)
-			},
-			isInit: func(p pointer, f *coderFieldInfo) error {
-				m := asMessage(p.AsValueOf(ft).Elem())
-				return proto.CheckInitialized(m)
-			},
-			merge: mergeMessage,
-		}
-	}
-}
-
-func sizeMessageInfo(p pointer, f *coderFieldInfo, opts marshalOptions) int {
-	return protowire.SizeBytes(f.mi.sizePointer(p.Elem(), opts)) + f.tagsize
-}
-
-func appendMessageInfo(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendVarint(b, uint64(f.mi.sizePointer(p.Elem(), opts)))
-	return f.mi.marshalAppendPointer(b, p.Elem(), opts)
-}
-
-func consumeMessageInfo(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.BytesType {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	if p.Elem().IsNil() {
-		p.SetPointer(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))
-	}
-	o, err := f.mi.unmarshalPointer(v, p.Elem(), 0, opts)
-	if err != nil {
-		return out, err
-	}
-	out.n = n
-	out.initialized = o.initialized
-	return out, nil
-}
-
-func isInitMessageInfo(p pointer, f *coderFieldInfo) error {
-	return f.mi.checkInitializedPointer(p.Elem())
-}
-
-func sizeMessage(m proto.Message, tagsize int, _ marshalOptions) int {
-	return protowire.SizeBytes(proto.Size(m)) + tagsize
-}
-
-func appendMessage(b []byte, m proto.Message, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	b = protowire.AppendVarint(b, wiretag)
-	b = protowire.AppendVarint(b, uint64(proto.Size(m)))
-	return opts.Options().MarshalAppend(b, m)
-}
-
-func consumeMessage(b []byte, m proto.Message, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.BytesType {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	o, err := opts.Options().UnmarshalState(piface.UnmarshalInput{
-		Buf:     v,
-		Message: m.ProtoReflect(),
-	})
-	if err != nil {
-		return out, err
-	}
-	out.n = n
-	out.initialized = o.Flags&piface.UnmarshalInitialized != 0
-	return out, nil
-}
-
-func sizeMessageValue(v pref.Value, tagsize int, opts marshalOptions) int {
-	m := v.Message().Interface()
-	return sizeMessage(m, tagsize, opts)
-}
-
-func appendMessageValue(b []byte, v pref.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	m := v.Message().Interface()
-	return appendMessage(b, m, wiretag, opts)
-}
-
-func consumeMessageValue(b []byte, v pref.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (pref.Value, unmarshalOutput, error) {
-	m := v.Message().Interface()
-	out, err := consumeMessage(b, m, wtyp, opts)
-	return v, out, err
-}
-
-func isInitMessageValue(v pref.Value) error {
-	m := v.Message().Interface()
-	return proto.CheckInitialized(m)
-}
-
-var coderMessageValue = valueCoderFuncs{
-	size:      sizeMessageValue,
-	marshal:   appendMessageValue,
-	unmarshal: consumeMessageValue,
-	isInit:    isInitMessageValue,
-	merge:     mergeMessageValue,
-}
-
-func sizeGroupValue(v pref.Value, tagsize int, opts marshalOptions) int {
-	m := v.Message().Interface()
-	return sizeGroup(m, tagsize, opts)
-}
-
-func appendGroupValue(b []byte, v pref.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	m := v.Message().Interface()
-	return appendGroup(b, m, wiretag, opts)
-}
-
-func consumeGroupValue(b []byte, v pref.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (pref.Value, unmarshalOutput, error) {
-	m := v.Message().Interface()
-	out, err := consumeGroup(b, m, num, wtyp, opts)
-	return v, out, err
-}
-
-var coderGroupValue = valueCoderFuncs{
-	size:      sizeGroupValue,
-	marshal:   appendGroupValue,
-	unmarshal: consumeGroupValue,
-	isInit:    isInitMessageValue,
-	merge:     mergeMessageValue,
-}
-
-func makeGroupFieldCoder(fd pref.FieldDescriptor, ft reflect.Type) pointerCoderFuncs {
-	num := fd.Number()
-	if mi := getMessageInfo(ft); mi != nil {
-		funcs := pointerCoderFuncs{
-			size:      sizeGroupType,
-			marshal:   appendGroupType,
-			unmarshal: consumeGroupType,
-			merge:     mergeMessage,
-		}
-		if needsInitCheck(mi.Desc) {
-			funcs.isInit = isInitMessageInfo
-		}
-		return funcs
-	} else {
-		return pointerCoderFuncs{
-			size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {
-				m := asMessage(p.AsValueOf(ft).Elem())
-				return sizeGroup(m, f.tagsize, opts)
-			},
-			marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-				m := asMessage(p.AsValueOf(ft).Elem())
-				return appendGroup(b, m, f.wiretag, opts)
-			},
-			unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {
-				mp := p.AsValueOf(ft).Elem()
-				if mp.IsNil() {
-					mp.Set(reflect.New(ft.Elem()))
-				}
-				return consumeGroup(b, asMessage(mp), num, wtyp, opts)
-			},
-			isInit: func(p pointer, f *coderFieldInfo) error {
-				m := asMessage(p.AsValueOf(ft).Elem())
-				return proto.CheckInitialized(m)
-			},
-			merge: mergeMessage,
-		}
-	}
-}
-
-func sizeGroupType(p pointer, f *coderFieldInfo, opts marshalOptions) int {
-	return 2*f.tagsize + f.mi.sizePointer(p.Elem(), opts)
-}
-
-func appendGroupType(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	b = protowire.AppendVarint(b, f.wiretag) // start group
-	b, err := f.mi.marshalAppendPointer(b, p.Elem(), opts)
-	b = protowire.AppendVarint(b, f.wiretag+1) // end group
-	return b, err
-}
-
-func consumeGroupType(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.StartGroupType {
-		return out, errUnknown
-	}
-	if p.Elem().IsNil() {
-		p.SetPointer(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))
-	}
-	return f.mi.unmarshalPointer(b, p.Elem(), f.num, opts)
-}
-
-func sizeGroup(m proto.Message, tagsize int, _ marshalOptions) int {
-	return 2*tagsize + proto.Size(m)
-}
-
-func appendGroup(b []byte, m proto.Message, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	b = protowire.AppendVarint(b, wiretag) // start group
-	b, err := opts.Options().MarshalAppend(b, m)
-	b = protowire.AppendVarint(b, wiretag+1) // end group
-	return b, err
-}
-
-func consumeGroup(b []byte, m proto.Message, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.StartGroupType {
-		return out, errUnknown
-	}
-	b, n := protowire.ConsumeGroup(num, b)
-	if n < 0 {
-		return out, errDecode
-	}
-	o, err := opts.Options().UnmarshalState(piface.UnmarshalInput{
-		Buf:     b,
-		Message: m.ProtoReflect(),
-	})
-	if err != nil {
-		return out, err
-	}
-	out.n = n
-	out.initialized = o.Flags&piface.UnmarshalInitialized != 0
-	return out, nil
-}
-
-func makeMessageSliceFieldCoder(fd pref.FieldDescriptor, ft reflect.Type) pointerCoderFuncs {
-	if mi := getMessageInfo(ft); mi != nil {
-		funcs := pointerCoderFuncs{
-			size:      sizeMessageSliceInfo,
-			marshal:   appendMessageSliceInfo,
-			unmarshal: consumeMessageSliceInfo,
-			merge:     mergeMessageSlice,
-		}
-		if needsInitCheck(mi.Desc) {
-			funcs.isInit = isInitMessageSliceInfo
-		}
-		return funcs
-	}
-	return pointerCoderFuncs{
-		size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {
-			return sizeMessageSlice(p, ft, f.tagsize, opts)
-		},
-		marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-			return appendMessageSlice(b, p, f.wiretag, ft, opts)
-		},
-		unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {
-			return consumeMessageSlice(b, p, ft, wtyp, opts)
-		},
-		isInit: func(p pointer, f *coderFieldInfo) error {
-			return isInitMessageSlice(p, ft)
-		},
-		merge: mergeMessageSlice,
-	}
-}
-
-func sizeMessageSliceInfo(p pointer, f *coderFieldInfo, opts marshalOptions) int {
-	s := p.PointerSlice()
-	n := 0
-	for _, v := range s {
-		n += protowire.SizeBytes(f.mi.sizePointer(v, opts)) + f.tagsize
-	}
-	return n
-}
-
-func appendMessageSliceInfo(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := p.PointerSlice()
-	var err error
-	for _, v := range s {
-		b = protowire.AppendVarint(b, f.wiretag)
-		siz := f.mi.sizePointer(v, opts)
-		b = protowire.AppendVarint(b, uint64(siz))
-		b, err = f.mi.marshalAppendPointer(b, v, opts)
-		if err != nil {
-			return b, err
-		}
-	}
-	return b, nil
-}
-
-func consumeMessageSliceInfo(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.BytesType {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	m := reflect.New(f.mi.GoReflectType.Elem()).Interface()
-	mp := pointerOfIface(m)
-	o, err := f.mi.unmarshalPointer(v, mp, 0, opts)
-	if err != nil {
-		return out, err
-	}
-	p.AppendPointerSlice(mp)
-	out.n = n
-	out.initialized = o.initialized
-	return out, nil
-}
-
-func isInitMessageSliceInfo(p pointer, f *coderFieldInfo) error {
-	s := p.PointerSlice()
-	for _, v := range s {
-		if err := f.mi.checkInitializedPointer(v); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func sizeMessageSlice(p pointer, goType reflect.Type, tagsize int, _ marshalOptions) int {
-	s := p.PointerSlice()
-	n := 0
-	for _, v := range s {
-		m := asMessage(v.AsValueOf(goType.Elem()))
-		n += protowire.SizeBytes(proto.Size(m)) + tagsize
-	}
-	return n
-}
-
-func appendMessageSlice(b []byte, p pointer, wiretag uint64, goType reflect.Type, opts marshalOptions) ([]byte, error) {
-	s := p.PointerSlice()
-	var err error
-	for _, v := range s {
-		m := asMessage(v.AsValueOf(goType.Elem()))
-		b = protowire.AppendVarint(b, wiretag)
-		siz := proto.Size(m)
-		b = protowire.AppendVarint(b, uint64(siz))
-		b, err = opts.Options().MarshalAppend(b, m)
-		if err != nil {
-			return b, err
-		}
-	}
-	return b, nil
-}
-
-func consumeMessageSlice(b []byte, p pointer, goType reflect.Type, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.BytesType {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	mp := reflect.New(goType.Elem())
-	o, err := opts.Options().UnmarshalState(piface.UnmarshalInput{
-		Buf:     v,
-		Message: asMessage(mp).ProtoReflect(),
-	})
-	if err != nil {
-		return out, err
-	}
-	p.AppendPointerSlice(pointerOfValue(mp))
-	out.n = n
-	out.initialized = o.Flags&piface.UnmarshalInitialized != 0
-	return out, nil
-}
-
-func isInitMessageSlice(p pointer, goType reflect.Type) error {
-	s := p.PointerSlice()
-	for _, v := range s {
-		m := asMessage(v.AsValueOf(goType.Elem()))
-		if err := proto.CheckInitialized(m); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-// Slices of messages
-
-func sizeMessageSliceValue(listv pref.Value, tagsize int, opts marshalOptions) int {
-	list := listv.List()
-	n := 0
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		m := list.Get(i).Message().Interface()
-		n += protowire.SizeBytes(proto.Size(m)) + tagsize
-	}
-	return n
-}
-
-func appendMessageSliceValue(b []byte, listv pref.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	mopts := opts.Options()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		m := list.Get(i).Message().Interface()
-		b = protowire.AppendVarint(b, wiretag)
-		siz := proto.Size(m)
-		b = protowire.AppendVarint(b, uint64(siz))
-		var err error
-		b, err = mopts.MarshalAppend(b, m)
-		if err != nil {
-			return b, err
-		}
-	}
-	return b, nil
-}
-
-func consumeMessageSliceValue(b []byte, listv pref.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ pref.Value, out unmarshalOutput, err error) {
-	list := listv.List()
-	if wtyp != protowire.BytesType {
-		return pref.Value{}, out, errUnknown
-	}
-	v, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return pref.Value{}, out, errDecode
-	}
-	m := list.NewElement()
-	o, err := opts.Options().UnmarshalState(piface.UnmarshalInput{
-		Buf:     v,
-		Message: m.Message(),
-	})
-	if err != nil {
-		return pref.Value{}, out, err
-	}
-	list.Append(m)
-	out.n = n
-	out.initialized = o.Flags&piface.UnmarshalInitialized != 0
-	return listv, out, nil
-}
-
-func isInitMessageSliceValue(listv pref.Value) error {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		m := list.Get(i).Message().Interface()
-		if err := proto.CheckInitialized(m); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-var coderMessageSliceValue = valueCoderFuncs{
-	size:      sizeMessageSliceValue,
-	marshal:   appendMessageSliceValue,
-	unmarshal: consumeMessageSliceValue,
-	isInit:    isInitMessageSliceValue,
-	merge:     mergeMessageListValue,
-}
-
-func sizeGroupSliceValue(listv pref.Value, tagsize int, opts marshalOptions) int {
-	list := listv.List()
-	n := 0
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		m := list.Get(i).Message().Interface()
-		n += 2*tagsize + proto.Size(m)
-	}
-	return n
-}
-
-func appendGroupSliceValue(b []byte, listv pref.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	mopts := opts.Options()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		m := list.Get(i).Message().Interface()
-		b = protowire.AppendVarint(b, wiretag) // start group
-		var err error
-		b, err = mopts.MarshalAppend(b, m)
-		if err != nil {
-			return b, err
-		}
-		b = protowire.AppendVarint(b, wiretag+1) // end group
-	}
-	return b, nil
-}
-
-func consumeGroupSliceValue(b []byte, listv pref.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ pref.Value, out unmarshalOutput, err error) {
-	list := listv.List()
-	if wtyp != protowire.StartGroupType {
-		return pref.Value{}, out, errUnknown
-	}
-	b, n := protowire.ConsumeGroup(num, b)
-	if n < 0 {
-		return pref.Value{}, out, errDecode
-	}
-	m := list.NewElement()
-	o, err := opts.Options().UnmarshalState(piface.UnmarshalInput{
-		Buf:     b,
-		Message: m.Message(),
-	})
-	if err != nil {
-		return pref.Value{}, out, err
-	}
-	list.Append(m)
-	out.n = n
-	out.initialized = o.Flags&piface.UnmarshalInitialized != 0
-	return listv, out, nil
-}
-
-var coderGroupSliceValue = valueCoderFuncs{
-	size:      sizeGroupSliceValue,
-	marshal:   appendGroupSliceValue,
-	unmarshal: consumeGroupSliceValue,
-	isInit:    isInitMessageSliceValue,
-	merge:     mergeMessageListValue,
-}
-
-func makeGroupSliceFieldCoder(fd pref.FieldDescriptor, ft reflect.Type) pointerCoderFuncs {
-	num := fd.Number()
-	if mi := getMessageInfo(ft); mi != nil {
-		funcs := pointerCoderFuncs{
-			size:      sizeGroupSliceInfo,
-			marshal:   appendGroupSliceInfo,
-			unmarshal: consumeGroupSliceInfo,
-			merge:     mergeMessageSlice,
-		}
-		if needsInitCheck(mi.Desc) {
-			funcs.isInit = isInitMessageSliceInfo
-		}
-		return funcs
-	}
-	return pointerCoderFuncs{
-		size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {
-			return sizeGroupSlice(p, ft, f.tagsize, opts)
-		},
-		marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-			return appendGroupSlice(b, p, f.wiretag, ft, opts)
-		},
-		unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {
-			return consumeGroupSlice(b, p, num, wtyp, ft, opts)
-		},
-		isInit: func(p pointer, f *coderFieldInfo) error {
-			return isInitMessageSlice(p, ft)
-		},
-		merge: mergeMessageSlice,
-	}
-}
-
-func sizeGroupSlice(p pointer, messageType reflect.Type, tagsize int, _ marshalOptions) int {
-	s := p.PointerSlice()
-	n := 0
-	for _, v := range s {
-		m := asMessage(v.AsValueOf(messageType.Elem()))
-		n += 2*tagsize + proto.Size(m)
-	}
-	return n
-}
-
-func appendGroupSlice(b []byte, p pointer, wiretag uint64, messageType reflect.Type, opts marshalOptions) ([]byte, error) {
-	s := p.PointerSlice()
-	var err error
-	for _, v := range s {
-		m := asMessage(v.AsValueOf(messageType.Elem()))
-		b = protowire.AppendVarint(b, wiretag) // start group
-		b, err = opts.Options().MarshalAppend(b, m)
-		if err != nil {
-			return b, err
-		}
-		b = protowire.AppendVarint(b, wiretag+1) // end group
-	}
-	return b, nil
-}
-
-func consumeGroupSlice(b []byte, p pointer, num protowire.Number, wtyp protowire.Type, goType reflect.Type, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.StartGroupType {
-		return out, errUnknown
-	}
-	b, n := protowire.ConsumeGroup(num, b)
-	if n < 0 {
-		return out, errDecode
-	}
-	mp := reflect.New(goType.Elem())
-	o, err := opts.Options().UnmarshalState(piface.UnmarshalInput{
-		Buf:     b,
-		Message: asMessage(mp).ProtoReflect(),
-	})
-	if err != nil {
-		return out, err
-	}
-	p.AppendPointerSlice(pointerOfValue(mp))
-	out.n = n
-	out.initialized = o.Flags&piface.UnmarshalInitialized != 0
-	return out, nil
-}
-
-func sizeGroupSliceInfo(p pointer, f *coderFieldInfo, opts marshalOptions) int {
-	s := p.PointerSlice()
-	n := 0
-	for _, v := range s {
-		n += 2*f.tagsize + f.mi.sizePointer(v, opts)
-	}
-	return n
-}
-
-func appendGroupSliceInfo(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := p.PointerSlice()
-	var err error
-	for _, v := range s {
-		b = protowire.AppendVarint(b, f.wiretag) // start group
-		b, err = f.mi.marshalAppendPointer(b, v, opts)
-		if err != nil {
-			return b, err
-		}
-		b = protowire.AppendVarint(b, f.wiretag+1) // end group
-	}
-	return b, nil
-}
-
-func consumeGroupSliceInfo(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {
-	if wtyp != protowire.StartGroupType {
-		return unmarshalOutput{}, errUnknown
-	}
-	m := reflect.New(f.mi.GoReflectType.Elem()).Interface()
-	mp := pointerOfIface(m)
-	out, err := f.mi.unmarshalPointer(b, mp, f.num, opts)
-	if err != nil {
-		return out, err
-	}
-	p.AppendPointerSlice(mp)
-	return out, nil
-}
-
-func asMessage(v reflect.Value) pref.ProtoMessage {
-	if m, ok := v.Interface().(pref.ProtoMessage); ok {
-		return m
-	}
-	return legacyWrapMessage(v).Interface()
-}
diff --git a/internal/impl/codec_gen.go b/internal/impl/codec_gen.go
deleted file mode 100644
index 1a509b6..0000000
--- a/internal/impl/codec_gen.go
+++ /dev/null
@@ -1,5637 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by generate-types. DO NOT EDIT.
-
-package impl
-
-import (
-	"math"
-	"unicode/utf8"
-
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/reflect/protoreflect"
-)
-
-// sizeBool returns the size of wire encoding a bool pointer as a Bool.
-func sizeBool(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.Bool()
-	return f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v))
-}
-
-// appendBool wire encodes a bool pointer as a Bool.
-func appendBool(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Bool()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendVarint(b, protowire.EncodeBool(v))
-	return b, nil
-}
-
-// consumeBool wire decodes a bool pointer as a Bool.
-func consumeBool(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return out, errDecode
-	}
-	*p.Bool() = protowire.DecodeBool(v)
-	out.n = n
-	return out, nil
-}
-
-var coderBool = pointerCoderFuncs{
-	size:      sizeBool,
-	marshal:   appendBool,
-	unmarshal: consumeBool,
-	merge:     mergeBool,
-}
-
-// sizeBoolNoZero returns the size of wire encoding a bool pointer as a Bool.
-// The zero value is not encoded.
-func sizeBoolNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.Bool()
-	if v == false {
-		return 0
-	}
-	return f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v))
-}
-
-// appendBoolNoZero wire encodes a bool pointer as a Bool.
-// The zero value is not encoded.
-func appendBoolNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Bool()
-	if v == false {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendVarint(b, protowire.EncodeBool(v))
-	return b, nil
-}
-
-var coderBoolNoZero = pointerCoderFuncs{
-	size:      sizeBoolNoZero,
-	marshal:   appendBoolNoZero,
-	unmarshal: consumeBool,
-	merge:     mergeBoolNoZero,
-}
-
-// sizeBoolPtr returns the size of wire encoding a *bool pointer as a Bool.
-// It panics if the pointer is nil.
-func sizeBoolPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := **p.BoolPtr()
-	return f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v))
-}
-
-// appendBoolPtr wire encodes a *bool pointer as a Bool.
-// It panics if the pointer is nil.
-func appendBoolPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := **p.BoolPtr()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendVarint(b, protowire.EncodeBool(v))
-	return b, nil
-}
-
-// consumeBoolPtr wire decodes a *bool pointer as a Bool.
-func consumeBoolPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return out, errDecode
-	}
-	vp := p.BoolPtr()
-	if *vp == nil {
-		*vp = new(bool)
-	}
-	**vp = protowire.DecodeBool(v)
-	out.n = n
-	return out, nil
-}
-
-var coderBoolPtr = pointerCoderFuncs{
-	size:      sizeBoolPtr,
-	marshal:   appendBoolPtr,
-	unmarshal: consumeBoolPtr,
-	merge:     mergeBoolPtr,
-}
-
-// sizeBoolSlice returns the size of wire encoding a []bool pointer as a repeated Bool.
-func sizeBoolSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.BoolSlice()
-	for _, v := range s {
-		size += f.tagsize + protowire.SizeVarint(protowire.EncodeBool(v))
-	}
-	return size
-}
-
-// appendBoolSlice encodes a []bool pointer as a repeated Bool.
-func appendBoolSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.BoolSlice()
-	for _, v := range s {
-		b = protowire.AppendVarint(b, f.wiretag)
-		b = protowire.AppendVarint(b, protowire.EncodeBool(v))
-	}
-	return b, nil
-}
-
-// consumeBoolSlice wire decodes a []bool pointer as a repeated Bool.
-func consumeBoolSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	sp := p.BoolSlice()
-	if wtyp == protowire.BytesType {
-		s := *sp
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return out, errDecode
-		}
-		for len(b) > 0 {
-			var v uint64
-			var n int
-			if len(b) >= 1 && b[0] < 0x80 {
-				v = uint64(b[0])
-				n = 1
-			} else if len(b) >= 2 && b[1] < 128 {
-				v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-				n = 2
-			} else {
-				v, n = protowire.ConsumeVarint(b)
-			}
-			if n < 0 {
-				return out, errDecode
-			}
-			s = append(s, protowire.DecodeBool(v))
-			b = b[n:]
-		}
-		*sp = s
-		out.n = n
-		return out, nil
-	}
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return out, errDecode
-	}
-	*sp = append(*sp, protowire.DecodeBool(v))
-	out.n = n
-	return out, nil
-}
-
-var coderBoolSlice = pointerCoderFuncs{
-	size:      sizeBoolSlice,
-	marshal:   appendBoolSlice,
-	unmarshal: consumeBoolSlice,
-	merge:     mergeBoolSlice,
-}
-
-// sizeBoolPackedSlice returns the size of wire encoding a []bool pointer as a packed repeated Bool.
-func sizeBoolPackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.BoolSlice()
-	if len(s) == 0 {
-		return 0
-	}
-	n := 0
-	for _, v := range s {
-		n += protowire.SizeVarint(protowire.EncodeBool(v))
-	}
-	return f.tagsize + protowire.SizeBytes(n)
-}
-
-// appendBoolPackedSlice encodes a []bool pointer as a packed repeated Bool.
-func appendBoolPackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.BoolSlice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	n := 0
-	for _, v := range s {
-		n += protowire.SizeVarint(protowire.EncodeBool(v))
-	}
-	b = protowire.AppendVarint(b, uint64(n))
-	for _, v := range s {
-		b = protowire.AppendVarint(b, protowire.EncodeBool(v))
-	}
-	return b, nil
-}
-
-var coderBoolPackedSlice = pointerCoderFuncs{
-	size:      sizeBoolPackedSlice,
-	marshal:   appendBoolPackedSlice,
-	unmarshal: consumeBoolSlice,
-	merge:     mergeBoolSlice,
-}
-
-// sizeBoolValue returns the size of wire encoding a bool value as a Bool.
-func sizeBoolValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {
-	return tagsize + protowire.SizeVarint(protowire.EncodeBool(v.Bool()))
-}
-
-// appendBoolValue encodes a bool value as a Bool.
-func appendBoolValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	b = protowire.AppendVarint(b, wiretag)
-	b = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool()))
-	return b, nil
-}
-
-// consumeBoolValue decodes a bool value as a Bool.
-func consumeBoolValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	out.n = n
-	return protoreflect.ValueOfBool(protowire.DecodeBool(v)), out, nil
-}
-
-var coderBoolValue = valueCoderFuncs{
-	size:      sizeBoolValue,
-	marshal:   appendBoolValue,
-	unmarshal: consumeBoolValue,
-	merge:     mergeScalarValue,
-}
-
-// sizeBoolSliceValue returns the size of wire encoding a []bool value as a repeated Bool.
-func sizeBoolSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		size += tagsize + protowire.SizeVarint(protowire.EncodeBool(v.Bool()))
-	}
-	return size
-}
-
-// appendBoolSliceValue encodes a []bool value as a repeated Bool.
-func appendBoolSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, wiretag)
-		b = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool()))
-	}
-	return b, nil
-}
-
-// consumeBoolSliceValue wire decodes a []bool value as a repeated Bool.
-func consumeBoolSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	list := listv.List()
-	if wtyp == protowire.BytesType {
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return protoreflect.Value{}, out, errDecode
-		}
-		for len(b) > 0 {
-			var v uint64
-			var n int
-			if len(b) >= 1 && b[0] < 0x80 {
-				v = uint64(b[0])
-				n = 1
-			} else if len(b) >= 2 && b[1] < 128 {
-				v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-				n = 2
-			} else {
-				v, n = protowire.ConsumeVarint(b)
-			}
-			if n < 0 {
-				return protoreflect.Value{}, out, errDecode
-			}
-			list.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v)))
-			b = b[n:]
-		}
-		out.n = n
-		return listv, out, nil
-	}
-	if wtyp != protowire.VarintType {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	list.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v)))
-	out.n = n
-	return listv, out, nil
-}
-
-var coderBoolSliceValue = valueCoderFuncs{
-	size:      sizeBoolSliceValue,
-	marshal:   appendBoolSliceValue,
-	unmarshal: consumeBoolSliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeBoolPackedSliceValue returns the size of wire encoding a []bool value as a packed repeated Bool.
-func sizeBoolPackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return 0
-	}
-	n := 0
-	for i, llen := 0, llen; i < llen; i++ {
-		v := list.Get(i)
-		n += protowire.SizeVarint(protowire.EncodeBool(v.Bool()))
-	}
-	return tagsize + protowire.SizeBytes(n)
-}
-
-// appendBoolPackedSliceValue encodes a []bool value as a packed repeated Bool.
-func appendBoolPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, wiretag)
-	n := 0
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		n += protowire.SizeVarint(protowire.EncodeBool(v.Bool()))
-	}
-	b = protowire.AppendVarint(b, uint64(n))
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool()))
-	}
-	return b, nil
-}
-
-var coderBoolPackedSliceValue = valueCoderFuncs{
-	size:      sizeBoolPackedSliceValue,
-	marshal:   appendBoolPackedSliceValue,
-	unmarshal: consumeBoolSliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeEnumValue returns the size of wire encoding a  value as a Enum.
-func sizeEnumValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {
-	return tagsize + protowire.SizeVarint(uint64(v.Enum()))
-}
-
-// appendEnumValue encodes a  value as a Enum.
-func appendEnumValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	b = protowire.AppendVarint(b, wiretag)
-	b = protowire.AppendVarint(b, uint64(v.Enum()))
-	return b, nil
-}
-
-// consumeEnumValue decodes a  value as a Enum.
-func consumeEnumValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	out.n = n
-	return protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)), out, nil
-}
-
-var coderEnumValue = valueCoderFuncs{
-	size:      sizeEnumValue,
-	marshal:   appendEnumValue,
-	unmarshal: consumeEnumValue,
-	merge:     mergeScalarValue,
-}
-
-// sizeEnumSliceValue returns the size of wire encoding a [] value as a repeated Enum.
-func sizeEnumSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		size += tagsize + protowire.SizeVarint(uint64(v.Enum()))
-	}
-	return size
-}
-
-// appendEnumSliceValue encodes a [] value as a repeated Enum.
-func appendEnumSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, wiretag)
-		b = protowire.AppendVarint(b, uint64(v.Enum()))
-	}
-	return b, nil
-}
-
-// consumeEnumSliceValue wire decodes a [] value as a repeated Enum.
-func consumeEnumSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	list := listv.List()
-	if wtyp == protowire.BytesType {
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return protoreflect.Value{}, out, errDecode
-		}
-		for len(b) > 0 {
-			var v uint64
-			var n int
-			if len(b) >= 1 && b[0] < 0x80 {
-				v = uint64(b[0])
-				n = 1
-			} else if len(b) >= 2 && b[1] < 128 {
-				v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-				n = 2
-			} else {
-				v, n = protowire.ConsumeVarint(b)
-			}
-			if n < 0 {
-				return protoreflect.Value{}, out, errDecode
-			}
-			list.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)))
-			b = b[n:]
-		}
-		out.n = n
-		return listv, out, nil
-	}
-	if wtyp != protowire.VarintType {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	list.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)))
-	out.n = n
-	return listv, out, nil
-}
-
-var coderEnumSliceValue = valueCoderFuncs{
-	size:      sizeEnumSliceValue,
-	marshal:   appendEnumSliceValue,
-	unmarshal: consumeEnumSliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeEnumPackedSliceValue returns the size of wire encoding a [] value as a packed repeated Enum.
-func sizeEnumPackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return 0
-	}
-	n := 0
-	for i, llen := 0, llen; i < llen; i++ {
-		v := list.Get(i)
-		n += protowire.SizeVarint(uint64(v.Enum()))
-	}
-	return tagsize + protowire.SizeBytes(n)
-}
-
-// appendEnumPackedSliceValue encodes a [] value as a packed repeated Enum.
-func appendEnumPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, wiretag)
-	n := 0
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		n += protowire.SizeVarint(uint64(v.Enum()))
-	}
-	b = protowire.AppendVarint(b, uint64(n))
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, uint64(v.Enum()))
-	}
-	return b, nil
-}
-
-var coderEnumPackedSliceValue = valueCoderFuncs{
-	size:      sizeEnumPackedSliceValue,
-	marshal:   appendEnumPackedSliceValue,
-	unmarshal: consumeEnumSliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeInt32 returns the size of wire encoding a int32 pointer as a Int32.
-func sizeInt32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.Int32()
-	return f.tagsize + protowire.SizeVarint(uint64(v))
-}
-
-// appendInt32 wire encodes a int32 pointer as a Int32.
-func appendInt32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Int32()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendVarint(b, uint64(v))
-	return b, nil
-}
-
-// consumeInt32 wire decodes a int32 pointer as a Int32.
-func consumeInt32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return out, errDecode
-	}
-	*p.Int32() = int32(v)
-	out.n = n
-	return out, nil
-}
-
-var coderInt32 = pointerCoderFuncs{
-	size:      sizeInt32,
-	marshal:   appendInt32,
-	unmarshal: consumeInt32,
-	merge:     mergeInt32,
-}
-
-// sizeInt32NoZero returns the size of wire encoding a int32 pointer as a Int32.
-// The zero value is not encoded.
-func sizeInt32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.Int32()
-	if v == 0 {
-		return 0
-	}
-	return f.tagsize + protowire.SizeVarint(uint64(v))
-}
-
-// appendInt32NoZero wire encodes a int32 pointer as a Int32.
-// The zero value is not encoded.
-func appendInt32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Int32()
-	if v == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendVarint(b, uint64(v))
-	return b, nil
-}
-
-var coderInt32NoZero = pointerCoderFuncs{
-	size:      sizeInt32NoZero,
-	marshal:   appendInt32NoZero,
-	unmarshal: consumeInt32,
-	merge:     mergeInt32NoZero,
-}
-
-// sizeInt32Ptr returns the size of wire encoding a *int32 pointer as a Int32.
-// It panics if the pointer is nil.
-func sizeInt32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := **p.Int32Ptr()
-	return f.tagsize + protowire.SizeVarint(uint64(v))
-}
-
-// appendInt32Ptr wire encodes a *int32 pointer as a Int32.
-// It panics if the pointer is nil.
-func appendInt32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := **p.Int32Ptr()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendVarint(b, uint64(v))
-	return b, nil
-}
-
-// consumeInt32Ptr wire decodes a *int32 pointer as a Int32.
-func consumeInt32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return out, errDecode
-	}
-	vp := p.Int32Ptr()
-	if *vp == nil {
-		*vp = new(int32)
-	}
-	**vp = int32(v)
-	out.n = n
-	return out, nil
-}
-
-var coderInt32Ptr = pointerCoderFuncs{
-	size:      sizeInt32Ptr,
-	marshal:   appendInt32Ptr,
-	unmarshal: consumeInt32Ptr,
-	merge:     mergeInt32Ptr,
-}
-
-// sizeInt32Slice returns the size of wire encoding a []int32 pointer as a repeated Int32.
-func sizeInt32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Int32Slice()
-	for _, v := range s {
-		size += f.tagsize + protowire.SizeVarint(uint64(v))
-	}
-	return size
-}
-
-// appendInt32Slice encodes a []int32 pointer as a repeated Int32.
-func appendInt32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Int32Slice()
-	for _, v := range s {
-		b = protowire.AppendVarint(b, f.wiretag)
-		b = protowire.AppendVarint(b, uint64(v))
-	}
-	return b, nil
-}
-
-// consumeInt32Slice wire decodes a []int32 pointer as a repeated Int32.
-func consumeInt32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	sp := p.Int32Slice()
-	if wtyp == protowire.BytesType {
-		s := *sp
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return out, errDecode
-		}
-		for len(b) > 0 {
-			var v uint64
-			var n int
-			if len(b) >= 1 && b[0] < 0x80 {
-				v = uint64(b[0])
-				n = 1
-			} else if len(b) >= 2 && b[1] < 128 {
-				v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-				n = 2
-			} else {
-				v, n = protowire.ConsumeVarint(b)
-			}
-			if n < 0 {
-				return out, errDecode
-			}
-			s = append(s, int32(v))
-			b = b[n:]
-		}
-		*sp = s
-		out.n = n
-		return out, nil
-	}
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return out, errDecode
-	}
-	*sp = append(*sp, int32(v))
-	out.n = n
-	return out, nil
-}
-
-var coderInt32Slice = pointerCoderFuncs{
-	size:      sizeInt32Slice,
-	marshal:   appendInt32Slice,
-	unmarshal: consumeInt32Slice,
-	merge:     mergeInt32Slice,
-}
-
-// sizeInt32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Int32.
-func sizeInt32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Int32Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	n := 0
-	for _, v := range s {
-		n += protowire.SizeVarint(uint64(v))
-	}
-	return f.tagsize + protowire.SizeBytes(n)
-}
-
-// appendInt32PackedSlice encodes a []int32 pointer as a packed repeated Int32.
-func appendInt32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Int32Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	n := 0
-	for _, v := range s {
-		n += protowire.SizeVarint(uint64(v))
-	}
-	b = protowire.AppendVarint(b, uint64(n))
-	for _, v := range s {
-		b = protowire.AppendVarint(b, uint64(v))
-	}
-	return b, nil
-}
-
-var coderInt32PackedSlice = pointerCoderFuncs{
-	size:      sizeInt32PackedSlice,
-	marshal:   appendInt32PackedSlice,
-	unmarshal: consumeInt32Slice,
-	merge:     mergeInt32Slice,
-}
-
-// sizeInt32Value returns the size of wire encoding a int32 value as a Int32.
-func sizeInt32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {
-	return tagsize + protowire.SizeVarint(uint64(int32(v.Int())))
-}
-
-// appendInt32Value encodes a int32 value as a Int32.
-func appendInt32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	b = protowire.AppendVarint(b, wiretag)
-	b = protowire.AppendVarint(b, uint64(int32(v.Int())))
-	return b, nil
-}
-
-// consumeInt32Value decodes a int32 value as a Int32.
-func consumeInt32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	out.n = n
-	return protoreflect.ValueOfInt32(int32(v)), out, nil
-}
-
-var coderInt32Value = valueCoderFuncs{
-	size:      sizeInt32Value,
-	marshal:   appendInt32Value,
-	unmarshal: consumeInt32Value,
-	merge:     mergeScalarValue,
-}
-
-// sizeInt32SliceValue returns the size of wire encoding a []int32 value as a repeated Int32.
-func sizeInt32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		size += tagsize + protowire.SizeVarint(uint64(int32(v.Int())))
-	}
-	return size
-}
-
-// appendInt32SliceValue encodes a []int32 value as a repeated Int32.
-func appendInt32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, wiretag)
-		b = protowire.AppendVarint(b, uint64(int32(v.Int())))
-	}
-	return b, nil
-}
-
-// consumeInt32SliceValue wire decodes a []int32 value as a repeated Int32.
-func consumeInt32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	list := listv.List()
-	if wtyp == protowire.BytesType {
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return protoreflect.Value{}, out, errDecode
-		}
-		for len(b) > 0 {
-			var v uint64
-			var n int
-			if len(b) >= 1 && b[0] < 0x80 {
-				v = uint64(b[0])
-				n = 1
-			} else if len(b) >= 2 && b[1] < 128 {
-				v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-				n = 2
-			} else {
-				v, n = protowire.ConsumeVarint(b)
-			}
-			if n < 0 {
-				return protoreflect.Value{}, out, errDecode
-			}
-			list.Append(protoreflect.ValueOfInt32(int32(v)))
-			b = b[n:]
-		}
-		out.n = n
-		return listv, out, nil
-	}
-	if wtyp != protowire.VarintType {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	list.Append(protoreflect.ValueOfInt32(int32(v)))
-	out.n = n
-	return listv, out, nil
-}
-
-var coderInt32SliceValue = valueCoderFuncs{
-	size:      sizeInt32SliceValue,
-	marshal:   appendInt32SliceValue,
-	unmarshal: consumeInt32SliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeInt32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Int32.
-func sizeInt32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return 0
-	}
-	n := 0
-	for i, llen := 0, llen; i < llen; i++ {
-		v := list.Get(i)
-		n += protowire.SizeVarint(uint64(int32(v.Int())))
-	}
-	return tagsize + protowire.SizeBytes(n)
-}
-
-// appendInt32PackedSliceValue encodes a []int32 value as a packed repeated Int32.
-func appendInt32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, wiretag)
-	n := 0
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		n += protowire.SizeVarint(uint64(int32(v.Int())))
-	}
-	b = protowire.AppendVarint(b, uint64(n))
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, uint64(int32(v.Int())))
-	}
-	return b, nil
-}
-
-var coderInt32PackedSliceValue = valueCoderFuncs{
-	size:      sizeInt32PackedSliceValue,
-	marshal:   appendInt32PackedSliceValue,
-	unmarshal: consumeInt32SliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeSint32 returns the size of wire encoding a int32 pointer as a Sint32.
-func sizeSint32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.Int32()
-	return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))
-}
-
-// appendSint32 wire encodes a int32 pointer as a Sint32.
-func appendSint32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Int32()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v)))
-	return b, nil
-}
-
-// consumeSint32 wire decodes a int32 pointer as a Sint32.
-func consumeSint32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return out, errDecode
-	}
-	*p.Int32() = int32(protowire.DecodeZigZag(v & math.MaxUint32))
-	out.n = n
-	return out, nil
-}
-
-var coderSint32 = pointerCoderFuncs{
-	size:      sizeSint32,
-	marshal:   appendSint32,
-	unmarshal: consumeSint32,
-	merge:     mergeInt32,
-}
-
-// sizeSint32NoZero returns the size of wire encoding a int32 pointer as a Sint32.
-// The zero value is not encoded.
-func sizeSint32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.Int32()
-	if v == 0 {
-		return 0
-	}
-	return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))
-}
-
-// appendSint32NoZero wire encodes a int32 pointer as a Sint32.
-// The zero value is not encoded.
-func appendSint32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Int32()
-	if v == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v)))
-	return b, nil
-}
-
-var coderSint32NoZero = pointerCoderFuncs{
-	size:      sizeSint32NoZero,
-	marshal:   appendSint32NoZero,
-	unmarshal: consumeSint32,
-	merge:     mergeInt32NoZero,
-}
-
-// sizeSint32Ptr returns the size of wire encoding a *int32 pointer as a Sint32.
-// It panics if the pointer is nil.
-func sizeSint32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := **p.Int32Ptr()
-	return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))
-}
-
-// appendSint32Ptr wire encodes a *int32 pointer as a Sint32.
-// It panics if the pointer is nil.
-func appendSint32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := **p.Int32Ptr()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v)))
-	return b, nil
-}
-
-// consumeSint32Ptr wire decodes a *int32 pointer as a Sint32.
-func consumeSint32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return out, errDecode
-	}
-	vp := p.Int32Ptr()
-	if *vp == nil {
-		*vp = new(int32)
-	}
-	**vp = int32(protowire.DecodeZigZag(v & math.MaxUint32))
-	out.n = n
-	return out, nil
-}
-
-var coderSint32Ptr = pointerCoderFuncs{
-	size:      sizeSint32Ptr,
-	marshal:   appendSint32Ptr,
-	unmarshal: consumeSint32Ptr,
-	merge:     mergeInt32Ptr,
-}
-
-// sizeSint32Slice returns the size of wire encoding a []int32 pointer as a repeated Sint32.
-func sizeSint32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Int32Slice()
-	for _, v := range s {
-		size += f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))
-	}
-	return size
-}
-
-// appendSint32Slice encodes a []int32 pointer as a repeated Sint32.
-func appendSint32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Int32Slice()
-	for _, v := range s {
-		b = protowire.AppendVarint(b, f.wiretag)
-		b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v)))
-	}
-	return b, nil
-}
-
-// consumeSint32Slice wire decodes a []int32 pointer as a repeated Sint32.
-func consumeSint32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	sp := p.Int32Slice()
-	if wtyp == protowire.BytesType {
-		s := *sp
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return out, errDecode
-		}
-		for len(b) > 0 {
-			var v uint64
-			var n int
-			if len(b) >= 1 && b[0] < 0x80 {
-				v = uint64(b[0])
-				n = 1
-			} else if len(b) >= 2 && b[1] < 128 {
-				v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-				n = 2
-			} else {
-				v, n = protowire.ConsumeVarint(b)
-			}
-			if n < 0 {
-				return out, errDecode
-			}
-			s = append(s, int32(protowire.DecodeZigZag(v&math.MaxUint32)))
-			b = b[n:]
-		}
-		*sp = s
-		out.n = n
-		return out, nil
-	}
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return out, errDecode
-	}
-	*sp = append(*sp, int32(protowire.DecodeZigZag(v&math.MaxUint32)))
-	out.n = n
-	return out, nil
-}
-
-var coderSint32Slice = pointerCoderFuncs{
-	size:      sizeSint32Slice,
-	marshal:   appendSint32Slice,
-	unmarshal: consumeSint32Slice,
-	merge:     mergeInt32Slice,
-}
-
-// sizeSint32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Sint32.
-func sizeSint32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Int32Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	n := 0
-	for _, v := range s {
-		n += protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))
-	}
-	return f.tagsize + protowire.SizeBytes(n)
-}
-
-// appendSint32PackedSlice encodes a []int32 pointer as a packed repeated Sint32.
-func appendSint32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Int32Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	n := 0
-	for _, v := range s {
-		n += protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))
-	}
-	b = protowire.AppendVarint(b, uint64(n))
-	for _, v := range s {
-		b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(v)))
-	}
-	return b, nil
-}
-
-var coderSint32PackedSlice = pointerCoderFuncs{
-	size:      sizeSint32PackedSlice,
-	marshal:   appendSint32PackedSlice,
-	unmarshal: consumeSint32Slice,
-	merge:     mergeInt32Slice,
-}
-
-// sizeSint32Value returns the size of wire encoding a int32 value as a Sint32.
-func sizeSint32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {
-	return tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int()))))
-}
-
-// appendSint32Value encodes a int32 value as a Sint32.
-func appendSint32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	b = protowire.AppendVarint(b, wiretag)
-	b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int()))))
-	return b, nil
-}
-
-// consumeSint32Value decodes a int32 value as a Sint32.
-func consumeSint32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	out.n = n
-	return protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))), out, nil
-}
-
-var coderSint32Value = valueCoderFuncs{
-	size:      sizeSint32Value,
-	marshal:   appendSint32Value,
-	unmarshal: consumeSint32Value,
-	merge:     mergeScalarValue,
-}
-
-// sizeSint32SliceValue returns the size of wire encoding a []int32 value as a repeated Sint32.
-func sizeSint32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		size += tagsize + protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int()))))
-	}
-	return size
-}
-
-// appendSint32SliceValue encodes a []int32 value as a repeated Sint32.
-func appendSint32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, wiretag)
-		b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int()))))
-	}
-	return b, nil
-}
-
-// consumeSint32SliceValue wire decodes a []int32 value as a repeated Sint32.
-func consumeSint32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	list := listv.List()
-	if wtyp == protowire.BytesType {
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return protoreflect.Value{}, out, errDecode
-		}
-		for len(b) > 0 {
-			var v uint64
-			var n int
-			if len(b) >= 1 && b[0] < 0x80 {
-				v = uint64(b[0])
-				n = 1
-			} else if len(b) >= 2 && b[1] < 128 {
-				v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-				n = 2
-			} else {
-				v, n = protowire.ConsumeVarint(b)
-			}
-			if n < 0 {
-				return protoreflect.Value{}, out, errDecode
-			}
-			list.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))))
-			b = b[n:]
-		}
-		out.n = n
-		return listv, out, nil
-	}
-	if wtyp != protowire.VarintType {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	list.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))))
-	out.n = n
-	return listv, out, nil
-}
-
-var coderSint32SliceValue = valueCoderFuncs{
-	size:      sizeSint32SliceValue,
-	marshal:   appendSint32SliceValue,
-	unmarshal: consumeSint32SliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeSint32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Sint32.
-func sizeSint32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return 0
-	}
-	n := 0
-	for i, llen := 0, llen; i < llen; i++ {
-		v := list.Get(i)
-		n += protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int()))))
-	}
-	return tagsize + protowire.SizeBytes(n)
-}
-
-// appendSint32PackedSliceValue encodes a []int32 value as a packed repeated Sint32.
-func appendSint32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, wiretag)
-	n := 0
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		n += protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int()))))
-	}
-	b = protowire.AppendVarint(b, uint64(n))
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int()))))
-	}
-	return b, nil
-}
-
-var coderSint32PackedSliceValue = valueCoderFuncs{
-	size:      sizeSint32PackedSliceValue,
-	marshal:   appendSint32PackedSliceValue,
-	unmarshal: consumeSint32SliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeUint32 returns the size of wire encoding a uint32 pointer as a Uint32.
-func sizeUint32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.Uint32()
-	return f.tagsize + protowire.SizeVarint(uint64(v))
-}
-
-// appendUint32 wire encodes a uint32 pointer as a Uint32.
-func appendUint32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Uint32()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendVarint(b, uint64(v))
-	return b, nil
-}
-
-// consumeUint32 wire decodes a uint32 pointer as a Uint32.
-func consumeUint32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return out, errDecode
-	}
-	*p.Uint32() = uint32(v)
-	out.n = n
-	return out, nil
-}
-
-var coderUint32 = pointerCoderFuncs{
-	size:      sizeUint32,
-	marshal:   appendUint32,
-	unmarshal: consumeUint32,
-	merge:     mergeUint32,
-}
-
-// sizeUint32NoZero returns the size of wire encoding a uint32 pointer as a Uint32.
-// The zero value is not encoded.
-func sizeUint32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.Uint32()
-	if v == 0 {
-		return 0
-	}
-	return f.tagsize + protowire.SizeVarint(uint64(v))
-}
-
-// appendUint32NoZero wire encodes a uint32 pointer as a Uint32.
-// The zero value is not encoded.
-func appendUint32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Uint32()
-	if v == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendVarint(b, uint64(v))
-	return b, nil
-}
-
-var coderUint32NoZero = pointerCoderFuncs{
-	size:      sizeUint32NoZero,
-	marshal:   appendUint32NoZero,
-	unmarshal: consumeUint32,
-	merge:     mergeUint32NoZero,
-}
-
-// sizeUint32Ptr returns the size of wire encoding a *uint32 pointer as a Uint32.
-// It panics if the pointer is nil.
-func sizeUint32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := **p.Uint32Ptr()
-	return f.tagsize + protowire.SizeVarint(uint64(v))
-}
-
-// appendUint32Ptr wire encodes a *uint32 pointer as a Uint32.
-// It panics if the pointer is nil.
-func appendUint32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := **p.Uint32Ptr()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendVarint(b, uint64(v))
-	return b, nil
-}
-
-// consumeUint32Ptr wire decodes a *uint32 pointer as a Uint32.
-func consumeUint32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return out, errDecode
-	}
-	vp := p.Uint32Ptr()
-	if *vp == nil {
-		*vp = new(uint32)
-	}
-	**vp = uint32(v)
-	out.n = n
-	return out, nil
-}
-
-var coderUint32Ptr = pointerCoderFuncs{
-	size:      sizeUint32Ptr,
-	marshal:   appendUint32Ptr,
-	unmarshal: consumeUint32Ptr,
-	merge:     mergeUint32Ptr,
-}
-
-// sizeUint32Slice returns the size of wire encoding a []uint32 pointer as a repeated Uint32.
-func sizeUint32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Uint32Slice()
-	for _, v := range s {
-		size += f.tagsize + protowire.SizeVarint(uint64(v))
-	}
-	return size
-}
-
-// appendUint32Slice encodes a []uint32 pointer as a repeated Uint32.
-func appendUint32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Uint32Slice()
-	for _, v := range s {
-		b = protowire.AppendVarint(b, f.wiretag)
-		b = protowire.AppendVarint(b, uint64(v))
-	}
-	return b, nil
-}
-
-// consumeUint32Slice wire decodes a []uint32 pointer as a repeated Uint32.
-func consumeUint32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	sp := p.Uint32Slice()
-	if wtyp == protowire.BytesType {
-		s := *sp
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return out, errDecode
-		}
-		for len(b) > 0 {
-			var v uint64
-			var n int
-			if len(b) >= 1 && b[0] < 0x80 {
-				v = uint64(b[0])
-				n = 1
-			} else if len(b) >= 2 && b[1] < 128 {
-				v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-				n = 2
-			} else {
-				v, n = protowire.ConsumeVarint(b)
-			}
-			if n < 0 {
-				return out, errDecode
-			}
-			s = append(s, uint32(v))
-			b = b[n:]
-		}
-		*sp = s
-		out.n = n
-		return out, nil
-	}
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return out, errDecode
-	}
-	*sp = append(*sp, uint32(v))
-	out.n = n
-	return out, nil
-}
-
-var coderUint32Slice = pointerCoderFuncs{
-	size:      sizeUint32Slice,
-	marshal:   appendUint32Slice,
-	unmarshal: consumeUint32Slice,
-	merge:     mergeUint32Slice,
-}
-
-// sizeUint32PackedSlice returns the size of wire encoding a []uint32 pointer as a packed repeated Uint32.
-func sizeUint32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Uint32Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	n := 0
-	for _, v := range s {
-		n += protowire.SizeVarint(uint64(v))
-	}
-	return f.tagsize + protowire.SizeBytes(n)
-}
-
-// appendUint32PackedSlice encodes a []uint32 pointer as a packed repeated Uint32.
-func appendUint32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Uint32Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	n := 0
-	for _, v := range s {
-		n += protowire.SizeVarint(uint64(v))
-	}
-	b = protowire.AppendVarint(b, uint64(n))
-	for _, v := range s {
-		b = protowire.AppendVarint(b, uint64(v))
-	}
-	return b, nil
-}
-
-var coderUint32PackedSlice = pointerCoderFuncs{
-	size:      sizeUint32PackedSlice,
-	marshal:   appendUint32PackedSlice,
-	unmarshal: consumeUint32Slice,
-	merge:     mergeUint32Slice,
-}
-
-// sizeUint32Value returns the size of wire encoding a uint32 value as a Uint32.
-func sizeUint32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {
-	return tagsize + protowire.SizeVarint(uint64(uint32(v.Uint())))
-}
-
-// appendUint32Value encodes a uint32 value as a Uint32.
-func appendUint32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	b = protowire.AppendVarint(b, wiretag)
-	b = protowire.AppendVarint(b, uint64(uint32(v.Uint())))
-	return b, nil
-}
-
-// consumeUint32Value decodes a uint32 value as a Uint32.
-func consumeUint32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	out.n = n
-	return protoreflect.ValueOfUint32(uint32(v)), out, nil
-}
-
-var coderUint32Value = valueCoderFuncs{
-	size:      sizeUint32Value,
-	marshal:   appendUint32Value,
-	unmarshal: consumeUint32Value,
-	merge:     mergeScalarValue,
-}
-
-// sizeUint32SliceValue returns the size of wire encoding a []uint32 value as a repeated Uint32.
-func sizeUint32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		size += tagsize + protowire.SizeVarint(uint64(uint32(v.Uint())))
-	}
-	return size
-}
-
-// appendUint32SliceValue encodes a []uint32 value as a repeated Uint32.
-func appendUint32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, wiretag)
-		b = protowire.AppendVarint(b, uint64(uint32(v.Uint())))
-	}
-	return b, nil
-}
-
-// consumeUint32SliceValue wire decodes a []uint32 value as a repeated Uint32.
-func consumeUint32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	list := listv.List()
-	if wtyp == protowire.BytesType {
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return protoreflect.Value{}, out, errDecode
-		}
-		for len(b) > 0 {
-			var v uint64
-			var n int
-			if len(b) >= 1 && b[0] < 0x80 {
-				v = uint64(b[0])
-				n = 1
-			} else if len(b) >= 2 && b[1] < 128 {
-				v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-				n = 2
-			} else {
-				v, n = protowire.ConsumeVarint(b)
-			}
-			if n < 0 {
-				return protoreflect.Value{}, out, errDecode
-			}
-			list.Append(protoreflect.ValueOfUint32(uint32(v)))
-			b = b[n:]
-		}
-		out.n = n
-		return listv, out, nil
-	}
-	if wtyp != protowire.VarintType {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	list.Append(protoreflect.ValueOfUint32(uint32(v)))
-	out.n = n
-	return listv, out, nil
-}
-
-var coderUint32SliceValue = valueCoderFuncs{
-	size:      sizeUint32SliceValue,
-	marshal:   appendUint32SliceValue,
-	unmarshal: consumeUint32SliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeUint32PackedSliceValue returns the size of wire encoding a []uint32 value as a packed repeated Uint32.
-func sizeUint32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return 0
-	}
-	n := 0
-	for i, llen := 0, llen; i < llen; i++ {
-		v := list.Get(i)
-		n += protowire.SizeVarint(uint64(uint32(v.Uint())))
-	}
-	return tagsize + protowire.SizeBytes(n)
-}
-
-// appendUint32PackedSliceValue encodes a []uint32 value as a packed repeated Uint32.
-func appendUint32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, wiretag)
-	n := 0
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		n += protowire.SizeVarint(uint64(uint32(v.Uint())))
-	}
-	b = protowire.AppendVarint(b, uint64(n))
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, uint64(uint32(v.Uint())))
-	}
-	return b, nil
-}
-
-var coderUint32PackedSliceValue = valueCoderFuncs{
-	size:      sizeUint32PackedSliceValue,
-	marshal:   appendUint32PackedSliceValue,
-	unmarshal: consumeUint32SliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeInt64 returns the size of wire encoding a int64 pointer as a Int64.
-func sizeInt64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.Int64()
-	return f.tagsize + protowire.SizeVarint(uint64(v))
-}
-
-// appendInt64 wire encodes a int64 pointer as a Int64.
-func appendInt64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Int64()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendVarint(b, uint64(v))
-	return b, nil
-}
-
-// consumeInt64 wire decodes a int64 pointer as a Int64.
-func consumeInt64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return out, errDecode
-	}
-	*p.Int64() = int64(v)
-	out.n = n
-	return out, nil
-}
-
-var coderInt64 = pointerCoderFuncs{
-	size:      sizeInt64,
-	marshal:   appendInt64,
-	unmarshal: consumeInt64,
-	merge:     mergeInt64,
-}
-
-// sizeInt64NoZero returns the size of wire encoding a int64 pointer as a Int64.
-// The zero value is not encoded.
-func sizeInt64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.Int64()
-	if v == 0 {
-		return 0
-	}
-	return f.tagsize + protowire.SizeVarint(uint64(v))
-}
-
-// appendInt64NoZero wire encodes a int64 pointer as a Int64.
-// The zero value is not encoded.
-func appendInt64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Int64()
-	if v == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendVarint(b, uint64(v))
-	return b, nil
-}
-
-var coderInt64NoZero = pointerCoderFuncs{
-	size:      sizeInt64NoZero,
-	marshal:   appendInt64NoZero,
-	unmarshal: consumeInt64,
-	merge:     mergeInt64NoZero,
-}
-
-// sizeInt64Ptr returns the size of wire encoding a *int64 pointer as a Int64.
-// It panics if the pointer is nil.
-func sizeInt64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := **p.Int64Ptr()
-	return f.tagsize + protowire.SizeVarint(uint64(v))
-}
-
-// appendInt64Ptr wire encodes a *int64 pointer as a Int64.
-// It panics if the pointer is nil.
-func appendInt64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := **p.Int64Ptr()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendVarint(b, uint64(v))
-	return b, nil
-}
-
-// consumeInt64Ptr wire decodes a *int64 pointer as a Int64.
-func consumeInt64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return out, errDecode
-	}
-	vp := p.Int64Ptr()
-	if *vp == nil {
-		*vp = new(int64)
-	}
-	**vp = int64(v)
-	out.n = n
-	return out, nil
-}
-
-var coderInt64Ptr = pointerCoderFuncs{
-	size:      sizeInt64Ptr,
-	marshal:   appendInt64Ptr,
-	unmarshal: consumeInt64Ptr,
-	merge:     mergeInt64Ptr,
-}
-
-// sizeInt64Slice returns the size of wire encoding a []int64 pointer as a repeated Int64.
-func sizeInt64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Int64Slice()
-	for _, v := range s {
-		size += f.tagsize + protowire.SizeVarint(uint64(v))
-	}
-	return size
-}
-
-// appendInt64Slice encodes a []int64 pointer as a repeated Int64.
-func appendInt64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Int64Slice()
-	for _, v := range s {
-		b = protowire.AppendVarint(b, f.wiretag)
-		b = protowire.AppendVarint(b, uint64(v))
-	}
-	return b, nil
-}
-
-// consumeInt64Slice wire decodes a []int64 pointer as a repeated Int64.
-func consumeInt64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	sp := p.Int64Slice()
-	if wtyp == protowire.BytesType {
-		s := *sp
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return out, errDecode
-		}
-		for len(b) > 0 {
-			var v uint64
-			var n int
-			if len(b) >= 1 && b[0] < 0x80 {
-				v = uint64(b[0])
-				n = 1
-			} else if len(b) >= 2 && b[1] < 128 {
-				v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-				n = 2
-			} else {
-				v, n = protowire.ConsumeVarint(b)
-			}
-			if n < 0 {
-				return out, errDecode
-			}
-			s = append(s, int64(v))
-			b = b[n:]
-		}
-		*sp = s
-		out.n = n
-		return out, nil
-	}
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return out, errDecode
-	}
-	*sp = append(*sp, int64(v))
-	out.n = n
-	return out, nil
-}
-
-var coderInt64Slice = pointerCoderFuncs{
-	size:      sizeInt64Slice,
-	marshal:   appendInt64Slice,
-	unmarshal: consumeInt64Slice,
-	merge:     mergeInt64Slice,
-}
-
-// sizeInt64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Int64.
-func sizeInt64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Int64Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	n := 0
-	for _, v := range s {
-		n += protowire.SizeVarint(uint64(v))
-	}
-	return f.tagsize + protowire.SizeBytes(n)
-}
-
-// appendInt64PackedSlice encodes a []int64 pointer as a packed repeated Int64.
-func appendInt64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Int64Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	n := 0
-	for _, v := range s {
-		n += protowire.SizeVarint(uint64(v))
-	}
-	b = protowire.AppendVarint(b, uint64(n))
-	for _, v := range s {
-		b = protowire.AppendVarint(b, uint64(v))
-	}
-	return b, nil
-}
-
-var coderInt64PackedSlice = pointerCoderFuncs{
-	size:      sizeInt64PackedSlice,
-	marshal:   appendInt64PackedSlice,
-	unmarshal: consumeInt64Slice,
-	merge:     mergeInt64Slice,
-}
-
-// sizeInt64Value returns the size of wire encoding a int64 value as a Int64.
-func sizeInt64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {
-	return tagsize + protowire.SizeVarint(uint64(v.Int()))
-}
-
-// appendInt64Value encodes a int64 value as a Int64.
-func appendInt64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	b = protowire.AppendVarint(b, wiretag)
-	b = protowire.AppendVarint(b, uint64(v.Int()))
-	return b, nil
-}
-
-// consumeInt64Value decodes a int64 value as a Int64.
-func consumeInt64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	out.n = n
-	return protoreflect.ValueOfInt64(int64(v)), out, nil
-}
-
-var coderInt64Value = valueCoderFuncs{
-	size:      sizeInt64Value,
-	marshal:   appendInt64Value,
-	unmarshal: consumeInt64Value,
-	merge:     mergeScalarValue,
-}
-
-// sizeInt64SliceValue returns the size of wire encoding a []int64 value as a repeated Int64.
-func sizeInt64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		size += tagsize + protowire.SizeVarint(uint64(v.Int()))
-	}
-	return size
-}
-
-// appendInt64SliceValue encodes a []int64 value as a repeated Int64.
-func appendInt64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, wiretag)
-		b = protowire.AppendVarint(b, uint64(v.Int()))
-	}
-	return b, nil
-}
-
-// consumeInt64SliceValue wire decodes a []int64 value as a repeated Int64.
-func consumeInt64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	list := listv.List()
-	if wtyp == protowire.BytesType {
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return protoreflect.Value{}, out, errDecode
-		}
-		for len(b) > 0 {
-			var v uint64
-			var n int
-			if len(b) >= 1 && b[0] < 0x80 {
-				v = uint64(b[0])
-				n = 1
-			} else if len(b) >= 2 && b[1] < 128 {
-				v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-				n = 2
-			} else {
-				v, n = protowire.ConsumeVarint(b)
-			}
-			if n < 0 {
-				return protoreflect.Value{}, out, errDecode
-			}
-			list.Append(protoreflect.ValueOfInt64(int64(v)))
-			b = b[n:]
-		}
-		out.n = n
-		return listv, out, nil
-	}
-	if wtyp != protowire.VarintType {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	list.Append(protoreflect.ValueOfInt64(int64(v)))
-	out.n = n
-	return listv, out, nil
-}
-
-var coderInt64SliceValue = valueCoderFuncs{
-	size:      sizeInt64SliceValue,
-	marshal:   appendInt64SliceValue,
-	unmarshal: consumeInt64SliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeInt64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Int64.
-func sizeInt64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return 0
-	}
-	n := 0
-	for i, llen := 0, llen; i < llen; i++ {
-		v := list.Get(i)
-		n += protowire.SizeVarint(uint64(v.Int()))
-	}
-	return tagsize + protowire.SizeBytes(n)
-}
-
-// appendInt64PackedSliceValue encodes a []int64 value as a packed repeated Int64.
-func appendInt64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, wiretag)
-	n := 0
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		n += protowire.SizeVarint(uint64(v.Int()))
-	}
-	b = protowire.AppendVarint(b, uint64(n))
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, uint64(v.Int()))
-	}
-	return b, nil
-}
-
-var coderInt64PackedSliceValue = valueCoderFuncs{
-	size:      sizeInt64PackedSliceValue,
-	marshal:   appendInt64PackedSliceValue,
-	unmarshal: consumeInt64SliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeSint64 returns the size of wire encoding a int64 pointer as a Sint64.
-func sizeSint64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.Int64()
-	return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v))
-}
-
-// appendSint64 wire encodes a int64 pointer as a Sint64.
-func appendSint64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Int64()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendVarint(b, protowire.EncodeZigZag(v))
-	return b, nil
-}
-
-// consumeSint64 wire decodes a int64 pointer as a Sint64.
-func consumeSint64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return out, errDecode
-	}
-	*p.Int64() = protowire.DecodeZigZag(v)
-	out.n = n
-	return out, nil
-}
-
-var coderSint64 = pointerCoderFuncs{
-	size:      sizeSint64,
-	marshal:   appendSint64,
-	unmarshal: consumeSint64,
-	merge:     mergeInt64,
-}
-
-// sizeSint64NoZero returns the size of wire encoding a int64 pointer as a Sint64.
-// The zero value is not encoded.
-func sizeSint64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.Int64()
-	if v == 0 {
-		return 0
-	}
-	return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v))
-}
-
-// appendSint64NoZero wire encodes a int64 pointer as a Sint64.
-// The zero value is not encoded.
-func appendSint64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Int64()
-	if v == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendVarint(b, protowire.EncodeZigZag(v))
-	return b, nil
-}
-
-var coderSint64NoZero = pointerCoderFuncs{
-	size:      sizeSint64NoZero,
-	marshal:   appendSint64NoZero,
-	unmarshal: consumeSint64,
-	merge:     mergeInt64NoZero,
-}
-
-// sizeSint64Ptr returns the size of wire encoding a *int64 pointer as a Sint64.
-// It panics if the pointer is nil.
-func sizeSint64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := **p.Int64Ptr()
-	return f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v))
-}
-
-// appendSint64Ptr wire encodes a *int64 pointer as a Sint64.
-// It panics if the pointer is nil.
-func appendSint64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := **p.Int64Ptr()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendVarint(b, protowire.EncodeZigZag(v))
-	return b, nil
-}
-
-// consumeSint64Ptr wire decodes a *int64 pointer as a Sint64.
-func consumeSint64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return out, errDecode
-	}
-	vp := p.Int64Ptr()
-	if *vp == nil {
-		*vp = new(int64)
-	}
-	**vp = protowire.DecodeZigZag(v)
-	out.n = n
-	return out, nil
-}
-
-var coderSint64Ptr = pointerCoderFuncs{
-	size:      sizeSint64Ptr,
-	marshal:   appendSint64Ptr,
-	unmarshal: consumeSint64Ptr,
-	merge:     mergeInt64Ptr,
-}
-
-// sizeSint64Slice returns the size of wire encoding a []int64 pointer as a repeated Sint64.
-func sizeSint64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Int64Slice()
-	for _, v := range s {
-		size += f.tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v))
-	}
-	return size
-}
-
-// appendSint64Slice encodes a []int64 pointer as a repeated Sint64.
-func appendSint64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Int64Slice()
-	for _, v := range s {
-		b = protowire.AppendVarint(b, f.wiretag)
-		b = protowire.AppendVarint(b, protowire.EncodeZigZag(v))
-	}
-	return b, nil
-}
-
-// consumeSint64Slice wire decodes a []int64 pointer as a repeated Sint64.
-func consumeSint64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	sp := p.Int64Slice()
-	if wtyp == protowire.BytesType {
-		s := *sp
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return out, errDecode
-		}
-		for len(b) > 0 {
-			var v uint64
-			var n int
-			if len(b) >= 1 && b[0] < 0x80 {
-				v = uint64(b[0])
-				n = 1
-			} else if len(b) >= 2 && b[1] < 128 {
-				v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-				n = 2
-			} else {
-				v, n = protowire.ConsumeVarint(b)
-			}
-			if n < 0 {
-				return out, errDecode
-			}
-			s = append(s, protowire.DecodeZigZag(v))
-			b = b[n:]
-		}
-		*sp = s
-		out.n = n
-		return out, nil
-	}
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return out, errDecode
-	}
-	*sp = append(*sp, protowire.DecodeZigZag(v))
-	out.n = n
-	return out, nil
-}
-
-var coderSint64Slice = pointerCoderFuncs{
-	size:      sizeSint64Slice,
-	marshal:   appendSint64Slice,
-	unmarshal: consumeSint64Slice,
-	merge:     mergeInt64Slice,
-}
-
-// sizeSint64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Sint64.
-func sizeSint64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Int64Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	n := 0
-	for _, v := range s {
-		n += protowire.SizeVarint(protowire.EncodeZigZag(v))
-	}
-	return f.tagsize + protowire.SizeBytes(n)
-}
-
-// appendSint64PackedSlice encodes a []int64 pointer as a packed repeated Sint64.
-func appendSint64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Int64Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	n := 0
-	for _, v := range s {
-		n += protowire.SizeVarint(protowire.EncodeZigZag(v))
-	}
-	b = protowire.AppendVarint(b, uint64(n))
-	for _, v := range s {
-		b = protowire.AppendVarint(b, protowire.EncodeZigZag(v))
-	}
-	return b, nil
-}
-
-var coderSint64PackedSlice = pointerCoderFuncs{
-	size:      sizeSint64PackedSlice,
-	marshal:   appendSint64PackedSlice,
-	unmarshal: consumeSint64Slice,
-	merge:     mergeInt64Slice,
-}
-
-// sizeSint64Value returns the size of wire encoding a int64 value as a Sint64.
-func sizeSint64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {
-	return tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v.Int()))
-}
-
-// appendSint64Value encodes a int64 value as a Sint64.
-func appendSint64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	b = protowire.AppendVarint(b, wiretag)
-	b = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int()))
-	return b, nil
-}
-
-// consumeSint64Value decodes a int64 value as a Sint64.
-func consumeSint64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	out.n = n
-	return protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)), out, nil
-}
-
-var coderSint64Value = valueCoderFuncs{
-	size:      sizeSint64Value,
-	marshal:   appendSint64Value,
-	unmarshal: consumeSint64Value,
-	merge:     mergeScalarValue,
-}
-
-// sizeSint64SliceValue returns the size of wire encoding a []int64 value as a repeated Sint64.
-func sizeSint64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		size += tagsize + protowire.SizeVarint(protowire.EncodeZigZag(v.Int()))
-	}
-	return size
-}
-
-// appendSint64SliceValue encodes a []int64 value as a repeated Sint64.
-func appendSint64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, wiretag)
-		b = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int()))
-	}
-	return b, nil
-}
-
-// consumeSint64SliceValue wire decodes a []int64 value as a repeated Sint64.
-func consumeSint64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	list := listv.List()
-	if wtyp == protowire.BytesType {
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return protoreflect.Value{}, out, errDecode
-		}
-		for len(b) > 0 {
-			var v uint64
-			var n int
-			if len(b) >= 1 && b[0] < 0x80 {
-				v = uint64(b[0])
-				n = 1
-			} else if len(b) >= 2 && b[1] < 128 {
-				v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-				n = 2
-			} else {
-				v, n = protowire.ConsumeVarint(b)
-			}
-			if n < 0 {
-				return protoreflect.Value{}, out, errDecode
-			}
-			list.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)))
-			b = b[n:]
-		}
-		out.n = n
-		return listv, out, nil
-	}
-	if wtyp != protowire.VarintType {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	list.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)))
-	out.n = n
-	return listv, out, nil
-}
-
-var coderSint64SliceValue = valueCoderFuncs{
-	size:      sizeSint64SliceValue,
-	marshal:   appendSint64SliceValue,
-	unmarshal: consumeSint64SliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeSint64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Sint64.
-func sizeSint64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return 0
-	}
-	n := 0
-	for i, llen := 0, llen; i < llen; i++ {
-		v := list.Get(i)
-		n += protowire.SizeVarint(protowire.EncodeZigZag(v.Int()))
-	}
-	return tagsize + protowire.SizeBytes(n)
-}
-
-// appendSint64PackedSliceValue encodes a []int64 value as a packed repeated Sint64.
-func appendSint64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, wiretag)
-	n := 0
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		n += protowire.SizeVarint(protowire.EncodeZigZag(v.Int()))
-	}
-	b = protowire.AppendVarint(b, uint64(n))
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int()))
-	}
-	return b, nil
-}
-
-var coderSint64PackedSliceValue = valueCoderFuncs{
-	size:      sizeSint64PackedSliceValue,
-	marshal:   appendSint64PackedSliceValue,
-	unmarshal: consumeSint64SliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeUint64 returns the size of wire encoding a uint64 pointer as a Uint64.
-func sizeUint64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.Uint64()
-	return f.tagsize + protowire.SizeVarint(v)
-}
-
-// appendUint64 wire encodes a uint64 pointer as a Uint64.
-func appendUint64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Uint64()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendVarint(b, v)
-	return b, nil
-}
-
-// consumeUint64 wire decodes a uint64 pointer as a Uint64.
-func consumeUint64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return out, errDecode
-	}
-	*p.Uint64() = v
-	out.n = n
-	return out, nil
-}
-
-var coderUint64 = pointerCoderFuncs{
-	size:      sizeUint64,
-	marshal:   appendUint64,
-	unmarshal: consumeUint64,
-	merge:     mergeUint64,
-}
-
-// sizeUint64NoZero returns the size of wire encoding a uint64 pointer as a Uint64.
-// The zero value is not encoded.
-func sizeUint64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.Uint64()
-	if v == 0 {
-		return 0
-	}
-	return f.tagsize + protowire.SizeVarint(v)
-}
-
-// appendUint64NoZero wire encodes a uint64 pointer as a Uint64.
-// The zero value is not encoded.
-func appendUint64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Uint64()
-	if v == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendVarint(b, v)
-	return b, nil
-}
-
-var coderUint64NoZero = pointerCoderFuncs{
-	size:      sizeUint64NoZero,
-	marshal:   appendUint64NoZero,
-	unmarshal: consumeUint64,
-	merge:     mergeUint64NoZero,
-}
-
-// sizeUint64Ptr returns the size of wire encoding a *uint64 pointer as a Uint64.
-// It panics if the pointer is nil.
-func sizeUint64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := **p.Uint64Ptr()
-	return f.tagsize + protowire.SizeVarint(v)
-}
-
-// appendUint64Ptr wire encodes a *uint64 pointer as a Uint64.
-// It panics if the pointer is nil.
-func appendUint64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := **p.Uint64Ptr()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendVarint(b, v)
-	return b, nil
-}
-
-// consumeUint64Ptr wire decodes a *uint64 pointer as a Uint64.
-func consumeUint64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return out, errDecode
-	}
-	vp := p.Uint64Ptr()
-	if *vp == nil {
-		*vp = new(uint64)
-	}
-	**vp = v
-	out.n = n
-	return out, nil
-}
-
-var coderUint64Ptr = pointerCoderFuncs{
-	size:      sizeUint64Ptr,
-	marshal:   appendUint64Ptr,
-	unmarshal: consumeUint64Ptr,
-	merge:     mergeUint64Ptr,
-}
-
-// sizeUint64Slice returns the size of wire encoding a []uint64 pointer as a repeated Uint64.
-func sizeUint64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Uint64Slice()
-	for _, v := range s {
-		size += f.tagsize + protowire.SizeVarint(v)
-	}
-	return size
-}
-
-// appendUint64Slice encodes a []uint64 pointer as a repeated Uint64.
-func appendUint64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Uint64Slice()
-	for _, v := range s {
-		b = protowire.AppendVarint(b, f.wiretag)
-		b = protowire.AppendVarint(b, v)
-	}
-	return b, nil
-}
-
-// consumeUint64Slice wire decodes a []uint64 pointer as a repeated Uint64.
-func consumeUint64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	sp := p.Uint64Slice()
-	if wtyp == protowire.BytesType {
-		s := *sp
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return out, errDecode
-		}
-		for len(b) > 0 {
-			var v uint64
-			var n int
-			if len(b) >= 1 && b[0] < 0x80 {
-				v = uint64(b[0])
-				n = 1
-			} else if len(b) >= 2 && b[1] < 128 {
-				v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-				n = 2
-			} else {
-				v, n = protowire.ConsumeVarint(b)
-			}
-			if n < 0 {
-				return out, errDecode
-			}
-			s = append(s, v)
-			b = b[n:]
-		}
-		*sp = s
-		out.n = n
-		return out, nil
-	}
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return out, errDecode
-	}
-	*sp = append(*sp, v)
-	out.n = n
-	return out, nil
-}
-
-var coderUint64Slice = pointerCoderFuncs{
-	size:      sizeUint64Slice,
-	marshal:   appendUint64Slice,
-	unmarshal: consumeUint64Slice,
-	merge:     mergeUint64Slice,
-}
-
-// sizeUint64PackedSlice returns the size of wire encoding a []uint64 pointer as a packed repeated Uint64.
-func sizeUint64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Uint64Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	n := 0
-	for _, v := range s {
-		n += protowire.SizeVarint(v)
-	}
-	return f.tagsize + protowire.SizeBytes(n)
-}
-
-// appendUint64PackedSlice encodes a []uint64 pointer as a packed repeated Uint64.
-func appendUint64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Uint64Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	n := 0
-	for _, v := range s {
-		n += protowire.SizeVarint(v)
-	}
-	b = protowire.AppendVarint(b, uint64(n))
-	for _, v := range s {
-		b = protowire.AppendVarint(b, v)
-	}
-	return b, nil
-}
-
-var coderUint64PackedSlice = pointerCoderFuncs{
-	size:      sizeUint64PackedSlice,
-	marshal:   appendUint64PackedSlice,
-	unmarshal: consumeUint64Slice,
-	merge:     mergeUint64Slice,
-}
-
-// sizeUint64Value returns the size of wire encoding a uint64 value as a Uint64.
-func sizeUint64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {
-	return tagsize + protowire.SizeVarint(v.Uint())
-}
-
-// appendUint64Value encodes a uint64 value as a Uint64.
-func appendUint64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	b = protowire.AppendVarint(b, wiretag)
-	b = protowire.AppendVarint(b, v.Uint())
-	return b, nil
-}
-
-// consumeUint64Value decodes a uint64 value as a Uint64.
-func consumeUint64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	out.n = n
-	return protoreflect.ValueOfUint64(v), out, nil
-}
-
-var coderUint64Value = valueCoderFuncs{
-	size:      sizeUint64Value,
-	marshal:   appendUint64Value,
-	unmarshal: consumeUint64Value,
-	merge:     mergeScalarValue,
-}
-
-// sizeUint64SliceValue returns the size of wire encoding a []uint64 value as a repeated Uint64.
-func sizeUint64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		size += tagsize + protowire.SizeVarint(v.Uint())
-	}
-	return size
-}
-
-// appendUint64SliceValue encodes a []uint64 value as a repeated Uint64.
-func appendUint64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, wiretag)
-		b = protowire.AppendVarint(b, v.Uint())
-	}
-	return b, nil
-}
-
-// consumeUint64SliceValue wire decodes a []uint64 value as a repeated Uint64.
-func consumeUint64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	list := listv.List()
-	if wtyp == protowire.BytesType {
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return protoreflect.Value{}, out, errDecode
-		}
-		for len(b) > 0 {
-			var v uint64
-			var n int
-			if len(b) >= 1 && b[0] < 0x80 {
-				v = uint64(b[0])
-				n = 1
-			} else if len(b) >= 2 && b[1] < 128 {
-				v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-				n = 2
-			} else {
-				v, n = protowire.ConsumeVarint(b)
-			}
-			if n < 0 {
-				return protoreflect.Value{}, out, errDecode
-			}
-			list.Append(protoreflect.ValueOfUint64(v))
-			b = b[n:]
-		}
-		out.n = n
-		return listv, out, nil
-	}
-	if wtyp != protowire.VarintType {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	var v uint64
-	var n int
-	if len(b) >= 1 && b[0] < 0x80 {
-		v = uint64(b[0])
-		n = 1
-	} else if len(b) >= 2 && b[1] < 128 {
-		v = uint64(b[0]&0x7f) + uint64(b[1])<<7
-		n = 2
-	} else {
-		v, n = protowire.ConsumeVarint(b)
-	}
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	list.Append(protoreflect.ValueOfUint64(v))
-	out.n = n
-	return listv, out, nil
-}
-
-var coderUint64SliceValue = valueCoderFuncs{
-	size:      sizeUint64SliceValue,
-	marshal:   appendUint64SliceValue,
-	unmarshal: consumeUint64SliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeUint64PackedSliceValue returns the size of wire encoding a []uint64 value as a packed repeated Uint64.
-func sizeUint64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return 0
-	}
-	n := 0
-	for i, llen := 0, llen; i < llen; i++ {
-		v := list.Get(i)
-		n += protowire.SizeVarint(v.Uint())
-	}
-	return tagsize + protowire.SizeBytes(n)
-}
-
-// appendUint64PackedSliceValue encodes a []uint64 value as a packed repeated Uint64.
-func appendUint64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, wiretag)
-	n := 0
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		n += protowire.SizeVarint(v.Uint())
-	}
-	b = protowire.AppendVarint(b, uint64(n))
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, v.Uint())
-	}
-	return b, nil
-}
-
-var coderUint64PackedSliceValue = valueCoderFuncs{
-	size:      sizeUint64PackedSliceValue,
-	marshal:   appendUint64PackedSliceValue,
-	unmarshal: consumeUint64SliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeSfixed32 returns the size of wire encoding a int32 pointer as a Sfixed32.
-func sizeSfixed32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-
-	return f.tagsize + protowire.SizeFixed32()
-}
-
-// appendSfixed32 wire encodes a int32 pointer as a Sfixed32.
-func appendSfixed32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Int32()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendFixed32(b, uint32(v))
-	return b, nil
-}
-
-// consumeSfixed32 wire decodes a int32 pointer as a Sfixed32.
-func consumeSfixed32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.Fixed32Type {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed32(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	*p.Int32() = int32(v)
-	out.n = n
-	return out, nil
-}
-
-var coderSfixed32 = pointerCoderFuncs{
-	size:      sizeSfixed32,
-	marshal:   appendSfixed32,
-	unmarshal: consumeSfixed32,
-	merge:     mergeInt32,
-}
-
-// sizeSfixed32NoZero returns the size of wire encoding a int32 pointer as a Sfixed32.
-// The zero value is not encoded.
-func sizeSfixed32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.Int32()
-	if v == 0 {
-		return 0
-	}
-	return f.tagsize + protowire.SizeFixed32()
-}
-
-// appendSfixed32NoZero wire encodes a int32 pointer as a Sfixed32.
-// The zero value is not encoded.
-func appendSfixed32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Int32()
-	if v == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendFixed32(b, uint32(v))
-	return b, nil
-}
-
-var coderSfixed32NoZero = pointerCoderFuncs{
-	size:      sizeSfixed32NoZero,
-	marshal:   appendSfixed32NoZero,
-	unmarshal: consumeSfixed32,
-	merge:     mergeInt32NoZero,
-}
-
-// sizeSfixed32Ptr returns the size of wire encoding a *int32 pointer as a Sfixed32.
-// It panics if the pointer is nil.
-func sizeSfixed32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	return f.tagsize + protowire.SizeFixed32()
-}
-
-// appendSfixed32Ptr wire encodes a *int32 pointer as a Sfixed32.
-// It panics if the pointer is nil.
-func appendSfixed32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := **p.Int32Ptr()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendFixed32(b, uint32(v))
-	return b, nil
-}
-
-// consumeSfixed32Ptr wire decodes a *int32 pointer as a Sfixed32.
-func consumeSfixed32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.Fixed32Type {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed32(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	vp := p.Int32Ptr()
-	if *vp == nil {
-		*vp = new(int32)
-	}
-	**vp = int32(v)
-	out.n = n
-	return out, nil
-}
-
-var coderSfixed32Ptr = pointerCoderFuncs{
-	size:      sizeSfixed32Ptr,
-	marshal:   appendSfixed32Ptr,
-	unmarshal: consumeSfixed32Ptr,
-	merge:     mergeInt32Ptr,
-}
-
-// sizeSfixed32Slice returns the size of wire encoding a []int32 pointer as a repeated Sfixed32.
-func sizeSfixed32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Int32Slice()
-	size = len(s) * (f.tagsize + protowire.SizeFixed32())
-	return size
-}
-
-// appendSfixed32Slice encodes a []int32 pointer as a repeated Sfixed32.
-func appendSfixed32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Int32Slice()
-	for _, v := range s {
-		b = protowire.AppendVarint(b, f.wiretag)
-		b = protowire.AppendFixed32(b, uint32(v))
-	}
-	return b, nil
-}
-
-// consumeSfixed32Slice wire decodes a []int32 pointer as a repeated Sfixed32.
-func consumeSfixed32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	sp := p.Int32Slice()
-	if wtyp == protowire.BytesType {
-		s := *sp
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return out, errDecode
-		}
-		for len(b) > 0 {
-			v, n := protowire.ConsumeFixed32(b)
-			if n < 0 {
-				return out, errDecode
-			}
-			s = append(s, int32(v))
-			b = b[n:]
-		}
-		*sp = s
-		out.n = n
-		return out, nil
-	}
-	if wtyp != protowire.Fixed32Type {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed32(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	*sp = append(*sp, int32(v))
-	out.n = n
-	return out, nil
-}
-
-var coderSfixed32Slice = pointerCoderFuncs{
-	size:      sizeSfixed32Slice,
-	marshal:   appendSfixed32Slice,
-	unmarshal: consumeSfixed32Slice,
-	merge:     mergeInt32Slice,
-}
-
-// sizeSfixed32PackedSlice returns the size of wire encoding a []int32 pointer as a packed repeated Sfixed32.
-func sizeSfixed32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Int32Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	n := len(s) * protowire.SizeFixed32()
-	return f.tagsize + protowire.SizeBytes(n)
-}
-
-// appendSfixed32PackedSlice encodes a []int32 pointer as a packed repeated Sfixed32.
-func appendSfixed32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Int32Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	n := len(s) * protowire.SizeFixed32()
-	b = protowire.AppendVarint(b, uint64(n))
-	for _, v := range s {
-		b = protowire.AppendFixed32(b, uint32(v))
-	}
-	return b, nil
-}
-
-var coderSfixed32PackedSlice = pointerCoderFuncs{
-	size:      sizeSfixed32PackedSlice,
-	marshal:   appendSfixed32PackedSlice,
-	unmarshal: consumeSfixed32Slice,
-	merge:     mergeInt32Slice,
-}
-
-// sizeSfixed32Value returns the size of wire encoding a int32 value as a Sfixed32.
-func sizeSfixed32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {
-	return tagsize + protowire.SizeFixed32()
-}
-
-// appendSfixed32Value encodes a int32 value as a Sfixed32.
-func appendSfixed32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	b = protowire.AppendVarint(b, wiretag)
-	b = protowire.AppendFixed32(b, uint32(v.Int()))
-	return b, nil
-}
-
-// consumeSfixed32Value decodes a int32 value as a Sfixed32.
-func consumeSfixed32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	if wtyp != protowire.Fixed32Type {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed32(b)
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	out.n = n
-	return protoreflect.ValueOfInt32(int32(v)), out, nil
-}
-
-var coderSfixed32Value = valueCoderFuncs{
-	size:      sizeSfixed32Value,
-	marshal:   appendSfixed32Value,
-	unmarshal: consumeSfixed32Value,
-	merge:     mergeScalarValue,
-}
-
-// sizeSfixed32SliceValue returns the size of wire encoding a []int32 value as a repeated Sfixed32.
-func sizeSfixed32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	size = list.Len() * (tagsize + protowire.SizeFixed32())
-	return size
-}
-
-// appendSfixed32SliceValue encodes a []int32 value as a repeated Sfixed32.
-func appendSfixed32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, wiretag)
-		b = protowire.AppendFixed32(b, uint32(v.Int()))
-	}
-	return b, nil
-}
-
-// consumeSfixed32SliceValue wire decodes a []int32 value as a repeated Sfixed32.
-func consumeSfixed32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	list := listv.List()
-	if wtyp == protowire.BytesType {
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return protoreflect.Value{}, out, errDecode
-		}
-		for len(b) > 0 {
-			v, n := protowire.ConsumeFixed32(b)
-			if n < 0 {
-				return protoreflect.Value{}, out, errDecode
-			}
-			list.Append(protoreflect.ValueOfInt32(int32(v)))
-			b = b[n:]
-		}
-		out.n = n
-		return listv, out, nil
-	}
-	if wtyp != protowire.Fixed32Type {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed32(b)
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	list.Append(protoreflect.ValueOfInt32(int32(v)))
-	out.n = n
-	return listv, out, nil
-}
-
-var coderSfixed32SliceValue = valueCoderFuncs{
-	size:      sizeSfixed32SliceValue,
-	marshal:   appendSfixed32SliceValue,
-	unmarshal: consumeSfixed32SliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeSfixed32PackedSliceValue returns the size of wire encoding a []int32 value as a packed repeated Sfixed32.
-func sizeSfixed32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return 0
-	}
-	n := llen * protowire.SizeFixed32()
-	return tagsize + protowire.SizeBytes(n)
-}
-
-// appendSfixed32PackedSliceValue encodes a []int32 value as a packed repeated Sfixed32.
-func appendSfixed32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, wiretag)
-	n := llen * protowire.SizeFixed32()
-	b = protowire.AppendVarint(b, uint64(n))
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendFixed32(b, uint32(v.Int()))
-	}
-	return b, nil
-}
-
-var coderSfixed32PackedSliceValue = valueCoderFuncs{
-	size:      sizeSfixed32PackedSliceValue,
-	marshal:   appendSfixed32PackedSliceValue,
-	unmarshal: consumeSfixed32SliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeFixed32 returns the size of wire encoding a uint32 pointer as a Fixed32.
-func sizeFixed32(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-
-	return f.tagsize + protowire.SizeFixed32()
-}
-
-// appendFixed32 wire encodes a uint32 pointer as a Fixed32.
-func appendFixed32(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Uint32()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendFixed32(b, v)
-	return b, nil
-}
-
-// consumeFixed32 wire decodes a uint32 pointer as a Fixed32.
-func consumeFixed32(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.Fixed32Type {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed32(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	*p.Uint32() = v
-	out.n = n
-	return out, nil
-}
-
-var coderFixed32 = pointerCoderFuncs{
-	size:      sizeFixed32,
-	marshal:   appendFixed32,
-	unmarshal: consumeFixed32,
-	merge:     mergeUint32,
-}
-
-// sizeFixed32NoZero returns the size of wire encoding a uint32 pointer as a Fixed32.
-// The zero value is not encoded.
-func sizeFixed32NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.Uint32()
-	if v == 0 {
-		return 0
-	}
-	return f.tagsize + protowire.SizeFixed32()
-}
-
-// appendFixed32NoZero wire encodes a uint32 pointer as a Fixed32.
-// The zero value is not encoded.
-func appendFixed32NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Uint32()
-	if v == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendFixed32(b, v)
-	return b, nil
-}
-
-var coderFixed32NoZero = pointerCoderFuncs{
-	size:      sizeFixed32NoZero,
-	marshal:   appendFixed32NoZero,
-	unmarshal: consumeFixed32,
-	merge:     mergeUint32NoZero,
-}
-
-// sizeFixed32Ptr returns the size of wire encoding a *uint32 pointer as a Fixed32.
-// It panics if the pointer is nil.
-func sizeFixed32Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	return f.tagsize + protowire.SizeFixed32()
-}
-
-// appendFixed32Ptr wire encodes a *uint32 pointer as a Fixed32.
-// It panics if the pointer is nil.
-func appendFixed32Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := **p.Uint32Ptr()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendFixed32(b, v)
-	return b, nil
-}
-
-// consumeFixed32Ptr wire decodes a *uint32 pointer as a Fixed32.
-func consumeFixed32Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.Fixed32Type {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed32(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	vp := p.Uint32Ptr()
-	if *vp == nil {
-		*vp = new(uint32)
-	}
-	**vp = v
-	out.n = n
-	return out, nil
-}
-
-var coderFixed32Ptr = pointerCoderFuncs{
-	size:      sizeFixed32Ptr,
-	marshal:   appendFixed32Ptr,
-	unmarshal: consumeFixed32Ptr,
-	merge:     mergeUint32Ptr,
-}
-
-// sizeFixed32Slice returns the size of wire encoding a []uint32 pointer as a repeated Fixed32.
-func sizeFixed32Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Uint32Slice()
-	size = len(s) * (f.tagsize + protowire.SizeFixed32())
-	return size
-}
-
-// appendFixed32Slice encodes a []uint32 pointer as a repeated Fixed32.
-func appendFixed32Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Uint32Slice()
-	for _, v := range s {
-		b = protowire.AppendVarint(b, f.wiretag)
-		b = protowire.AppendFixed32(b, v)
-	}
-	return b, nil
-}
-
-// consumeFixed32Slice wire decodes a []uint32 pointer as a repeated Fixed32.
-func consumeFixed32Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	sp := p.Uint32Slice()
-	if wtyp == protowire.BytesType {
-		s := *sp
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return out, errDecode
-		}
-		for len(b) > 0 {
-			v, n := protowire.ConsumeFixed32(b)
-			if n < 0 {
-				return out, errDecode
-			}
-			s = append(s, v)
-			b = b[n:]
-		}
-		*sp = s
-		out.n = n
-		return out, nil
-	}
-	if wtyp != protowire.Fixed32Type {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed32(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	*sp = append(*sp, v)
-	out.n = n
-	return out, nil
-}
-
-var coderFixed32Slice = pointerCoderFuncs{
-	size:      sizeFixed32Slice,
-	marshal:   appendFixed32Slice,
-	unmarshal: consumeFixed32Slice,
-	merge:     mergeUint32Slice,
-}
-
-// sizeFixed32PackedSlice returns the size of wire encoding a []uint32 pointer as a packed repeated Fixed32.
-func sizeFixed32PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Uint32Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	n := len(s) * protowire.SizeFixed32()
-	return f.tagsize + protowire.SizeBytes(n)
-}
-
-// appendFixed32PackedSlice encodes a []uint32 pointer as a packed repeated Fixed32.
-func appendFixed32PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Uint32Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	n := len(s) * protowire.SizeFixed32()
-	b = protowire.AppendVarint(b, uint64(n))
-	for _, v := range s {
-		b = protowire.AppendFixed32(b, v)
-	}
-	return b, nil
-}
-
-var coderFixed32PackedSlice = pointerCoderFuncs{
-	size:      sizeFixed32PackedSlice,
-	marshal:   appendFixed32PackedSlice,
-	unmarshal: consumeFixed32Slice,
-	merge:     mergeUint32Slice,
-}
-
-// sizeFixed32Value returns the size of wire encoding a uint32 value as a Fixed32.
-func sizeFixed32Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {
-	return tagsize + protowire.SizeFixed32()
-}
-
-// appendFixed32Value encodes a uint32 value as a Fixed32.
-func appendFixed32Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	b = protowire.AppendVarint(b, wiretag)
-	b = protowire.AppendFixed32(b, uint32(v.Uint()))
-	return b, nil
-}
-
-// consumeFixed32Value decodes a uint32 value as a Fixed32.
-func consumeFixed32Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	if wtyp != protowire.Fixed32Type {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed32(b)
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	out.n = n
-	return protoreflect.ValueOfUint32(uint32(v)), out, nil
-}
-
-var coderFixed32Value = valueCoderFuncs{
-	size:      sizeFixed32Value,
-	marshal:   appendFixed32Value,
-	unmarshal: consumeFixed32Value,
-	merge:     mergeScalarValue,
-}
-
-// sizeFixed32SliceValue returns the size of wire encoding a []uint32 value as a repeated Fixed32.
-func sizeFixed32SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	size = list.Len() * (tagsize + protowire.SizeFixed32())
-	return size
-}
-
-// appendFixed32SliceValue encodes a []uint32 value as a repeated Fixed32.
-func appendFixed32SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, wiretag)
-		b = protowire.AppendFixed32(b, uint32(v.Uint()))
-	}
-	return b, nil
-}
-
-// consumeFixed32SliceValue wire decodes a []uint32 value as a repeated Fixed32.
-func consumeFixed32SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	list := listv.List()
-	if wtyp == protowire.BytesType {
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return protoreflect.Value{}, out, errDecode
-		}
-		for len(b) > 0 {
-			v, n := protowire.ConsumeFixed32(b)
-			if n < 0 {
-				return protoreflect.Value{}, out, errDecode
-			}
-			list.Append(protoreflect.ValueOfUint32(uint32(v)))
-			b = b[n:]
-		}
-		out.n = n
-		return listv, out, nil
-	}
-	if wtyp != protowire.Fixed32Type {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed32(b)
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	list.Append(protoreflect.ValueOfUint32(uint32(v)))
-	out.n = n
-	return listv, out, nil
-}
-
-var coderFixed32SliceValue = valueCoderFuncs{
-	size:      sizeFixed32SliceValue,
-	marshal:   appendFixed32SliceValue,
-	unmarshal: consumeFixed32SliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeFixed32PackedSliceValue returns the size of wire encoding a []uint32 value as a packed repeated Fixed32.
-func sizeFixed32PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return 0
-	}
-	n := llen * protowire.SizeFixed32()
-	return tagsize + protowire.SizeBytes(n)
-}
-
-// appendFixed32PackedSliceValue encodes a []uint32 value as a packed repeated Fixed32.
-func appendFixed32PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, wiretag)
-	n := llen * protowire.SizeFixed32()
-	b = protowire.AppendVarint(b, uint64(n))
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendFixed32(b, uint32(v.Uint()))
-	}
-	return b, nil
-}
-
-var coderFixed32PackedSliceValue = valueCoderFuncs{
-	size:      sizeFixed32PackedSliceValue,
-	marshal:   appendFixed32PackedSliceValue,
-	unmarshal: consumeFixed32SliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeFloat returns the size of wire encoding a float32 pointer as a Float.
-func sizeFloat(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-
-	return f.tagsize + protowire.SizeFixed32()
-}
-
-// appendFloat wire encodes a float32 pointer as a Float.
-func appendFloat(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Float32()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendFixed32(b, math.Float32bits(v))
-	return b, nil
-}
-
-// consumeFloat wire decodes a float32 pointer as a Float.
-func consumeFloat(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.Fixed32Type {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed32(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	*p.Float32() = math.Float32frombits(v)
-	out.n = n
-	return out, nil
-}
-
-var coderFloat = pointerCoderFuncs{
-	size:      sizeFloat,
-	marshal:   appendFloat,
-	unmarshal: consumeFloat,
-	merge:     mergeFloat32,
-}
-
-// sizeFloatNoZero returns the size of wire encoding a float32 pointer as a Float.
-// The zero value is not encoded.
-func sizeFloatNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.Float32()
-	if v == 0 && !math.Signbit(float64(v)) {
-		return 0
-	}
-	return f.tagsize + protowire.SizeFixed32()
-}
-
-// appendFloatNoZero wire encodes a float32 pointer as a Float.
-// The zero value is not encoded.
-func appendFloatNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Float32()
-	if v == 0 && !math.Signbit(float64(v)) {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendFixed32(b, math.Float32bits(v))
-	return b, nil
-}
-
-var coderFloatNoZero = pointerCoderFuncs{
-	size:      sizeFloatNoZero,
-	marshal:   appendFloatNoZero,
-	unmarshal: consumeFloat,
-	merge:     mergeFloat32NoZero,
-}
-
-// sizeFloatPtr returns the size of wire encoding a *float32 pointer as a Float.
-// It panics if the pointer is nil.
-func sizeFloatPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	return f.tagsize + protowire.SizeFixed32()
-}
-
-// appendFloatPtr wire encodes a *float32 pointer as a Float.
-// It panics if the pointer is nil.
-func appendFloatPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := **p.Float32Ptr()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendFixed32(b, math.Float32bits(v))
-	return b, nil
-}
-
-// consumeFloatPtr wire decodes a *float32 pointer as a Float.
-func consumeFloatPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.Fixed32Type {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed32(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	vp := p.Float32Ptr()
-	if *vp == nil {
-		*vp = new(float32)
-	}
-	**vp = math.Float32frombits(v)
-	out.n = n
-	return out, nil
-}
-
-var coderFloatPtr = pointerCoderFuncs{
-	size:      sizeFloatPtr,
-	marshal:   appendFloatPtr,
-	unmarshal: consumeFloatPtr,
-	merge:     mergeFloat32Ptr,
-}
-
-// sizeFloatSlice returns the size of wire encoding a []float32 pointer as a repeated Float.
-func sizeFloatSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Float32Slice()
-	size = len(s) * (f.tagsize + protowire.SizeFixed32())
-	return size
-}
-
-// appendFloatSlice encodes a []float32 pointer as a repeated Float.
-func appendFloatSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Float32Slice()
-	for _, v := range s {
-		b = protowire.AppendVarint(b, f.wiretag)
-		b = protowire.AppendFixed32(b, math.Float32bits(v))
-	}
-	return b, nil
-}
-
-// consumeFloatSlice wire decodes a []float32 pointer as a repeated Float.
-func consumeFloatSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	sp := p.Float32Slice()
-	if wtyp == protowire.BytesType {
-		s := *sp
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return out, errDecode
-		}
-		for len(b) > 0 {
-			v, n := protowire.ConsumeFixed32(b)
-			if n < 0 {
-				return out, errDecode
-			}
-			s = append(s, math.Float32frombits(v))
-			b = b[n:]
-		}
-		*sp = s
-		out.n = n
-		return out, nil
-	}
-	if wtyp != protowire.Fixed32Type {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed32(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	*sp = append(*sp, math.Float32frombits(v))
-	out.n = n
-	return out, nil
-}
-
-var coderFloatSlice = pointerCoderFuncs{
-	size:      sizeFloatSlice,
-	marshal:   appendFloatSlice,
-	unmarshal: consumeFloatSlice,
-	merge:     mergeFloat32Slice,
-}
-
-// sizeFloatPackedSlice returns the size of wire encoding a []float32 pointer as a packed repeated Float.
-func sizeFloatPackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Float32Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	n := len(s) * protowire.SizeFixed32()
-	return f.tagsize + protowire.SizeBytes(n)
-}
-
-// appendFloatPackedSlice encodes a []float32 pointer as a packed repeated Float.
-func appendFloatPackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Float32Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	n := len(s) * protowire.SizeFixed32()
-	b = protowire.AppendVarint(b, uint64(n))
-	for _, v := range s {
-		b = protowire.AppendFixed32(b, math.Float32bits(v))
-	}
-	return b, nil
-}
-
-var coderFloatPackedSlice = pointerCoderFuncs{
-	size:      sizeFloatPackedSlice,
-	marshal:   appendFloatPackedSlice,
-	unmarshal: consumeFloatSlice,
-	merge:     mergeFloat32Slice,
-}
-
-// sizeFloatValue returns the size of wire encoding a float32 value as a Float.
-func sizeFloatValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {
-	return tagsize + protowire.SizeFixed32()
-}
-
-// appendFloatValue encodes a float32 value as a Float.
-func appendFloatValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	b = protowire.AppendVarint(b, wiretag)
-	b = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float())))
-	return b, nil
-}
-
-// consumeFloatValue decodes a float32 value as a Float.
-func consumeFloatValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	if wtyp != protowire.Fixed32Type {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed32(b)
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	out.n = n
-	return protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))), out, nil
-}
-
-var coderFloatValue = valueCoderFuncs{
-	size:      sizeFloatValue,
-	marshal:   appendFloatValue,
-	unmarshal: consumeFloatValue,
-	merge:     mergeScalarValue,
-}
-
-// sizeFloatSliceValue returns the size of wire encoding a []float32 value as a repeated Float.
-func sizeFloatSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	size = list.Len() * (tagsize + protowire.SizeFixed32())
-	return size
-}
-
-// appendFloatSliceValue encodes a []float32 value as a repeated Float.
-func appendFloatSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, wiretag)
-		b = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float())))
-	}
-	return b, nil
-}
-
-// consumeFloatSliceValue wire decodes a []float32 value as a repeated Float.
-func consumeFloatSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	list := listv.List()
-	if wtyp == protowire.BytesType {
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return protoreflect.Value{}, out, errDecode
-		}
-		for len(b) > 0 {
-			v, n := protowire.ConsumeFixed32(b)
-			if n < 0 {
-				return protoreflect.Value{}, out, errDecode
-			}
-			list.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))))
-			b = b[n:]
-		}
-		out.n = n
-		return listv, out, nil
-	}
-	if wtyp != protowire.Fixed32Type {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed32(b)
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	list.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))))
-	out.n = n
-	return listv, out, nil
-}
-
-var coderFloatSliceValue = valueCoderFuncs{
-	size:      sizeFloatSliceValue,
-	marshal:   appendFloatSliceValue,
-	unmarshal: consumeFloatSliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeFloatPackedSliceValue returns the size of wire encoding a []float32 value as a packed repeated Float.
-func sizeFloatPackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return 0
-	}
-	n := llen * protowire.SizeFixed32()
-	return tagsize + protowire.SizeBytes(n)
-}
-
-// appendFloatPackedSliceValue encodes a []float32 value as a packed repeated Float.
-func appendFloatPackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, wiretag)
-	n := llen * protowire.SizeFixed32()
-	b = protowire.AppendVarint(b, uint64(n))
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float())))
-	}
-	return b, nil
-}
-
-var coderFloatPackedSliceValue = valueCoderFuncs{
-	size:      sizeFloatPackedSliceValue,
-	marshal:   appendFloatPackedSliceValue,
-	unmarshal: consumeFloatSliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeSfixed64 returns the size of wire encoding a int64 pointer as a Sfixed64.
-func sizeSfixed64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-
-	return f.tagsize + protowire.SizeFixed64()
-}
-
-// appendSfixed64 wire encodes a int64 pointer as a Sfixed64.
-func appendSfixed64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Int64()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendFixed64(b, uint64(v))
-	return b, nil
-}
-
-// consumeSfixed64 wire decodes a int64 pointer as a Sfixed64.
-func consumeSfixed64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.Fixed64Type {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed64(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	*p.Int64() = int64(v)
-	out.n = n
-	return out, nil
-}
-
-var coderSfixed64 = pointerCoderFuncs{
-	size:      sizeSfixed64,
-	marshal:   appendSfixed64,
-	unmarshal: consumeSfixed64,
-	merge:     mergeInt64,
-}
-
-// sizeSfixed64NoZero returns the size of wire encoding a int64 pointer as a Sfixed64.
-// The zero value is not encoded.
-func sizeSfixed64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.Int64()
-	if v == 0 {
-		return 0
-	}
-	return f.tagsize + protowire.SizeFixed64()
-}
-
-// appendSfixed64NoZero wire encodes a int64 pointer as a Sfixed64.
-// The zero value is not encoded.
-func appendSfixed64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Int64()
-	if v == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendFixed64(b, uint64(v))
-	return b, nil
-}
-
-var coderSfixed64NoZero = pointerCoderFuncs{
-	size:      sizeSfixed64NoZero,
-	marshal:   appendSfixed64NoZero,
-	unmarshal: consumeSfixed64,
-	merge:     mergeInt64NoZero,
-}
-
-// sizeSfixed64Ptr returns the size of wire encoding a *int64 pointer as a Sfixed64.
-// It panics if the pointer is nil.
-func sizeSfixed64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	return f.tagsize + protowire.SizeFixed64()
-}
-
-// appendSfixed64Ptr wire encodes a *int64 pointer as a Sfixed64.
-// It panics if the pointer is nil.
-func appendSfixed64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := **p.Int64Ptr()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendFixed64(b, uint64(v))
-	return b, nil
-}
-
-// consumeSfixed64Ptr wire decodes a *int64 pointer as a Sfixed64.
-func consumeSfixed64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.Fixed64Type {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed64(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	vp := p.Int64Ptr()
-	if *vp == nil {
-		*vp = new(int64)
-	}
-	**vp = int64(v)
-	out.n = n
-	return out, nil
-}
-
-var coderSfixed64Ptr = pointerCoderFuncs{
-	size:      sizeSfixed64Ptr,
-	marshal:   appendSfixed64Ptr,
-	unmarshal: consumeSfixed64Ptr,
-	merge:     mergeInt64Ptr,
-}
-
-// sizeSfixed64Slice returns the size of wire encoding a []int64 pointer as a repeated Sfixed64.
-func sizeSfixed64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Int64Slice()
-	size = len(s) * (f.tagsize + protowire.SizeFixed64())
-	return size
-}
-
-// appendSfixed64Slice encodes a []int64 pointer as a repeated Sfixed64.
-func appendSfixed64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Int64Slice()
-	for _, v := range s {
-		b = protowire.AppendVarint(b, f.wiretag)
-		b = protowire.AppendFixed64(b, uint64(v))
-	}
-	return b, nil
-}
-
-// consumeSfixed64Slice wire decodes a []int64 pointer as a repeated Sfixed64.
-func consumeSfixed64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	sp := p.Int64Slice()
-	if wtyp == protowire.BytesType {
-		s := *sp
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return out, errDecode
-		}
-		for len(b) > 0 {
-			v, n := protowire.ConsumeFixed64(b)
-			if n < 0 {
-				return out, errDecode
-			}
-			s = append(s, int64(v))
-			b = b[n:]
-		}
-		*sp = s
-		out.n = n
-		return out, nil
-	}
-	if wtyp != protowire.Fixed64Type {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed64(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	*sp = append(*sp, int64(v))
-	out.n = n
-	return out, nil
-}
-
-var coderSfixed64Slice = pointerCoderFuncs{
-	size:      sizeSfixed64Slice,
-	marshal:   appendSfixed64Slice,
-	unmarshal: consumeSfixed64Slice,
-	merge:     mergeInt64Slice,
-}
-
-// sizeSfixed64PackedSlice returns the size of wire encoding a []int64 pointer as a packed repeated Sfixed64.
-func sizeSfixed64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Int64Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	n := len(s) * protowire.SizeFixed64()
-	return f.tagsize + protowire.SizeBytes(n)
-}
-
-// appendSfixed64PackedSlice encodes a []int64 pointer as a packed repeated Sfixed64.
-func appendSfixed64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Int64Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	n := len(s) * protowire.SizeFixed64()
-	b = protowire.AppendVarint(b, uint64(n))
-	for _, v := range s {
-		b = protowire.AppendFixed64(b, uint64(v))
-	}
-	return b, nil
-}
-
-var coderSfixed64PackedSlice = pointerCoderFuncs{
-	size:      sizeSfixed64PackedSlice,
-	marshal:   appendSfixed64PackedSlice,
-	unmarshal: consumeSfixed64Slice,
-	merge:     mergeInt64Slice,
-}
-
-// sizeSfixed64Value returns the size of wire encoding a int64 value as a Sfixed64.
-func sizeSfixed64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {
-	return tagsize + protowire.SizeFixed64()
-}
-
-// appendSfixed64Value encodes a int64 value as a Sfixed64.
-func appendSfixed64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	b = protowire.AppendVarint(b, wiretag)
-	b = protowire.AppendFixed64(b, uint64(v.Int()))
-	return b, nil
-}
-
-// consumeSfixed64Value decodes a int64 value as a Sfixed64.
-func consumeSfixed64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	if wtyp != protowire.Fixed64Type {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed64(b)
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	out.n = n
-	return protoreflect.ValueOfInt64(int64(v)), out, nil
-}
-
-var coderSfixed64Value = valueCoderFuncs{
-	size:      sizeSfixed64Value,
-	marshal:   appendSfixed64Value,
-	unmarshal: consumeSfixed64Value,
-	merge:     mergeScalarValue,
-}
-
-// sizeSfixed64SliceValue returns the size of wire encoding a []int64 value as a repeated Sfixed64.
-func sizeSfixed64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	size = list.Len() * (tagsize + protowire.SizeFixed64())
-	return size
-}
-
-// appendSfixed64SliceValue encodes a []int64 value as a repeated Sfixed64.
-func appendSfixed64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, wiretag)
-		b = protowire.AppendFixed64(b, uint64(v.Int()))
-	}
-	return b, nil
-}
-
-// consumeSfixed64SliceValue wire decodes a []int64 value as a repeated Sfixed64.
-func consumeSfixed64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	list := listv.List()
-	if wtyp == protowire.BytesType {
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return protoreflect.Value{}, out, errDecode
-		}
-		for len(b) > 0 {
-			v, n := protowire.ConsumeFixed64(b)
-			if n < 0 {
-				return protoreflect.Value{}, out, errDecode
-			}
-			list.Append(protoreflect.ValueOfInt64(int64(v)))
-			b = b[n:]
-		}
-		out.n = n
-		return listv, out, nil
-	}
-	if wtyp != protowire.Fixed64Type {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed64(b)
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	list.Append(protoreflect.ValueOfInt64(int64(v)))
-	out.n = n
-	return listv, out, nil
-}
-
-var coderSfixed64SliceValue = valueCoderFuncs{
-	size:      sizeSfixed64SliceValue,
-	marshal:   appendSfixed64SliceValue,
-	unmarshal: consumeSfixed64SliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeSfixed64PackedSliceValue returns the size of wire encoding a []int64 value as a packed repeated Sfixed64.
-func sizeSfixed64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return 0
-	}
-	n := llen * protowire.SizeFixed64()
-	return tagsize + protowire.SizeBytes(n)
-}
-
-// appendSfixed64PackedSliceValue encodes a []int64 value as a packed repeated Sfixed64.
-func appendSfixed64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, wiretag)
-	n := llen * protowire.SizeFixed64()
-	b = protowire.AppendVarint(b, uint64(n))
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendFixed64(b, uint64(v.Int()))
-	}
-	return b, nil
-}
-
-var coderSfixed64PackedSliceValue = valueCoderFuncs{
-	size:      sizeSfixed64PackedSliceValue,
-	marshal:   appendSfixed64PackedSliceValue,
-	unmarshal: consumeSfixed64SliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeFixed64 returns the size of wire encoding a uint64 pointer as a Fixed64.
-func sizeFixed64(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-
-	return f.tagsize + protowire.SizeFixed64()
-}
-
-// appendFixed64 wire encodes a uint64 pointer as a Fixed64.
-func appendFixed64(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Uint64()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendFixed64(b, v)
-	return b, nil
-}
-
-// consumeFixed64 wire decodes a uint64 pointer as a Fixed64.
-func consumeFixed64(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.Fixed64Type {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed64(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	*p.Uint64() = v
-	out.n = n
-	return out, nil
-}
-
-var coderFixed64 = pointerCoderFuncs{
-	size:      sizeFixed64,
-	marshal:   appendFixed64,
-	unmarshal: consumeFixed64,
-	merge:     mergeUint64,
-}
-
-// sizeFixed64NoZero returns the size of wire encoding a uint64 pointer as a Fixed64.
-// The zero value is not encoded.
-func sizeFixed64NoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.Uint64()
-	if v == 0 {
-		return 0
-	}
-	return f.tagsize + protowire.SizeFixed64()
-}
-
-// appendFixed64NoZero wire encodes a uint64 pointer as a Fixed64.
-// The zero value is not encoded.
-func appendFixed64NoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Uint64()
-	if v == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendFixed64(b, v)
-	return b, nil
-}
-
-var coderFixed64NoZero = pointerCoderFuncs{
-	size:      sizeFixed64NoZero,
-	marshal:   appendFixed64NoZero,
-	unmarshal: consumeFixed64,
-	merge:     mergeUint64NoZero,
-}
-
-// sizeFixed64Ptr returns the size of wire encoding a *uint64 pointer as a Fixed64.
-// It panics if the pointer is nil.
-func sizeFixed64Ptr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	return f.tagsize + protowire.SizeFixed64()
-}
-
-// appendFixed64Ptr wire encodes a *uint64 pointer as a Fixed64.
-// It panics if the pointer is nil.
-func appendFixed64Ptr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := **p.Uint64Ptr()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendFixed64(b, v)
-	return b, nil
-}
-
-// consumeFixed64Ptr wire decodes a *uint64 pointer as a Fixed64.
-func consumeFixed64Ptr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.Fixed64Type {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed64(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	vp := p.Uint64Ptr()
-	if *vp == nil {
-		*vp = new(uint64)
-	}
-	**vp = v
-	out.n = n
-	return out, nil
-}
-
-var coderFixed64Ptr = pointerCoderFuncs{
-	size:      sizeFixed64Ptr,
-	marshal:   appendFixed64Ptr,
-	unmarshal: consumeFixed64Ptr,
-	merge:     mergeUint64Ptr,
-}
-
-// sizeFixed64Slice returns the size of wire encoding a []uint64 pointer as a repeated Fixed64.
-func sizeFixed64Slice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Uint64Slice()
-	size = len(s) * (f.tagsize + protowire.SizeFixed64())
-	return size
-}
-
-// appendFixed64Slice encodes a []uint64 pointer as a repeated Fixed64.
-func appendFixed64Slice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Uint64Slice()
-	for _, v := range s {
-		b = protowire.AppendVarint(b, f.wiretag)
-		b = protowire.AppendFixed64(b, v)
-	}
-	return b, nil
-}
-
-// consumeFixed64Slice wire decodes a []uint64 pointer as a repeated Fixed64.
-func consumeFixed64Slice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	sp := p.Uint64Slice()
-	if wtyp == protowire.BytesType {
-		s := *sp
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return out, errDecode
-		}
-		for len(b) > 0 {
-			v, n := protowire.ConsumeFixed64(b)
-			if n < 0 {
-				return out, errDecode
-			}
-			s = append(s, v)
-			b = b[n:]
-		}
-		*sp = s
-		out.n = n
-		return out, nil
-	}
-	if wtyp != protowire.Fixed64Type {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed64(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	*sp = append(*sp, v)
-	out.n = n
-	return out, nil
-}
-
-var coderFixed64Slice = pointerCoderFuncs{
-	size:      sizeFixed64Slice,
-	marshal:   appendFixed64Slice,
-	unmarshal: consumeFixed64Slice,
-	merge:     mergeUint64Slice,
-}
-
-// sizeFixed64PackedSlice returns the size of wire encoding a []uint64 pointer as a packed repeated Fixed64.
-func sizeFixed64PackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Uint64Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	n := len(s) * protowire.SizeFixed64()
-	return f.tagsize + protowire.SizeBytes(n)
-}
-
-// appendFixed64PackedSlice encodes a []uint64 pointer as a packed repeated Fixed64.
-func appendFixed64PackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Uint64Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	n := len(s) * protowire.SizeFixed64()
-	b = protowire.AppendVarint(b, uint64(n))
-	for _, v := range s {
-		b = protowire.AppendFixed64(b, v)
-	}
-	return b, nil
-}
-
-var coderFixed64PackedSlice = pointerCoderFuncs{
-	size:      sizeFixed64PackedSlice,
-	marshal:   appendFixed64PackedSlice,
-	unmarshal: consumeFixed64Slice,
-	merge:     mergeUint64Slice,
-}
-
-// sizeFixed64Value returns the size of wire encoding a uint64 value as a Fixed64.
-func sizeFixed64Value(v protoreflect.Value, tagsize int, opts marshalOptions) int {
-	return tagsize + protowire.SizeFixed64()
-}
-
-// appendFixed64Value encodes a uint64 value as a Fixed64.
-func appendFixed64Value(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	b = protowire.AppendVarint(b, wiretag)
-	b = protowire.AppendFixed64(b, v.Uint())
-	return b, nil
-}
-
-// consumeFixed64Value decodes a uint64 value as a Fixed64.
-func consumeFixed64Value(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	if wtyp != protowire.Fixed64Type {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed64(b)
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	out.n = n
-	return protoreflect.ValueOfUint64(v), out, nil
-}
-
-var coderFixed64Value = valueCoderFuncs{
-	size:      sizeFixed64Value,
-	marshal:   appendFixed64Value,
-	unmarshal: consumeFixed64Value,
-	merge:     mergeScalarValue,
-}
-
-// sizeFixed64SliceValue returns the size of wire encoding a []uint64 value as a repeated Fixed64.
-func sizeFixed64SliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	size = list.Len() * (tagsize + protowire.SizeFixed64())
-	return size
-}
-
-// appendFixed64SliceValue encodes a []uint64 value as a repeated Fixed64.
-func appendFixed64SliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, wiretag)
-		b = protowire.AppendFixed64(b, v.Uint())
-	}
-	return b, nil
-}
-
-// consumeFixed64SliceValue wire decodes a []uint64 value as a repeated Fixed64.
-func consumeFixed64SliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	list := listv.List()
-	if wtyp == protowire.BytesType {
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return protoreflect.Value{}, out, errDecode
-		}
-		for len(b) > 0 {
-			v, n := protowire.ConsumeFixed64(b)
-			if n < 0 {
-				return protoreflect.Value{}, out, errDecode
-			}
-			list.Append(protoreflect.ValueOfUint64(v))
-			b = b[n:]
-		}
-		out.n = n
-		return listv, out, nil
-	}
-	if wtyp != protowire.Fixed64Type {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed64(b)
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	list.Append(protoreflect.ValueOfUint64(v))
-	out.n = n
-	return listv, out, nil
-}
-
-var coderFixed64SliceValue = valueCoderFuncs{
-	size:      sizeFixed64SliceValue,
-	marshal:   appendFixed64SliceValue,
-	unmarshal: consumeFixed64SliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeFixed64PackedSliceValue returns the size of wire encoding a []uint64 value as a packed repeated Fixed64.
-func sizeFixed64PackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return 0
-	}
-	n := llen * protowire.SizeFixed64()
-	return tagsize + protowire.SizeBytes(n)
-}
-
-// appendFixed64PackedSliceValue encodes a []uint64 value as a packed repeated Fixed64.
-func appendFixed64PackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, wiretag)
-	n := llen * protowire.SizeFixed64()
-	b = protowire.AppendVarint(b, uint64(n))
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendFixed64(b, v.Uint())
-	}
-	return b, nil
-}
-
-var coderFixed64PackedSliceValue = valueCoderFuncs{
-	size:      sizeFixed64PackedSliceValue,
-	marshal:   appendFixed64PackedSliceValue,
-	unmarshal: consumeFixed64SliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeDouble returns the size of wire encoding a float64 pointer as a Double.
-func sizeDouble(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-
-	return f.tagsize + protowire.SizeFixed64()
-}
-
-// appendDouble wire encodes a float64 pointer as a Double.
-func appendDouble(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Float64()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendFixed64(b, math.Float64bits(v))
-	return b, nil
-}
-
-// consumeDouble wire decodes a float64 pointer as a Double.
-func consumeDouble(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.Fixed64Type {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed64(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	*p.Float64() = math.Float64frombits(v)
-	out.n = n
-	return out, nil
-}
-
-var coderDouble = pointerCoderFuncs{
-	size:      sizeDouble,
-	marshal:   appendDouble,
-	unmarshal: consumeDouble,
-	merge:     mergeFloat64,
-}
-
-// sizeDoubleNoZero returns the size of wire encoding a float64 pointer as a Double.
-// The zero value is not encoded.
-func sizeDoubleNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.Float64()
-	if v == 0 && !math.Signbit(float64(v)) {
-		return 0
-	}
-	return f.tagsize + protowire.SizeFixed64()
-}
-
-// appendDoubleNoZero wire encodes a float64 pointer as a Double.
-// The zero value is not encoded.
-func appendDoubleNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Float64()
-	if v == 0 && !math.Signbit(float64(v)) {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendFixed64(b, math.Float64bits(v))
-	return b, nil
-}
-
-var coderDoubleNoZero = pointerCoderFuncs{
-	size:      sizeDoubleNoZero,
-	marshal:   appendDoubleNoZero,
-	unmarshal: consumeDouble,
-	merge:     mergeFloat64NoZero,
-}
-
-// sizeDoublePtr returns the size of wire encoding a *float64 pointer as a Double.
-// It panics if the pointer is nil.
-func sizeDoublePtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	return f.tagsize + protowire.SizeFixed64()
-}
-
-// appendDoublePtr wire encodes a *float64 pointer as a Double.
-// It panics if the pointer is nil.
-func appendDoublePtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := **p.Float64Ptr()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendFixed64(b, math.Float64bits(v))
-	return b, nil
-}
-
-// consumeDoublePtr wire decodes a *float64 pointer as a Double.
-func consumeDoublePtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.Fixed64Type {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed64(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	vp := p.Float64Ptr()
-	if *vp == nil {
-		*vp = new(float64)
-	}
-	**vp = math.Float64frombits(v)
-	out.n = n
-	return out, nil
-}
-
-var coderDoublePtr = pointerCoderFuncs{
-	size:      sizeDoublePtr,
-	marshal:   appendDoublePtr,
-	unmarshal: consumeDoublePtr,
-	merge:     mergeFloat64Ptr,
-}
-
-// sizeDoubleSlice returns the size of wire encoding a []float64 pointer as a repeated Double.
-func sizeDoubleSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Float64Slice()
-	size = len(s) * (f.tagsize + protowire.SizeFixed64())
-	return size
-}
-
-// appendDoubleSlice encodes a []float64 pointer as a repeated Double.
-func appendDoubleSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Float64Slice()
-	for _, v := range s {
-		b = protowire.AppendVarint(b, f.wiretag)
-		b = protowire.AppendFixed64(b, math.Float64bits(v))
-	}
-	return b, nil
-}
-
-// consumeDoubleSlice wire decodes a []float64 pointer as a repeated Double.
-func consumeDoubleSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	sp := p.Float64Slice()
-	if wtyp == protowire.BytesType {
-		s := *sp
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return out, errDecode
-		}
-		for len(b) > 0 {
-			v, n := protowire.ConsumeFixed64(b)
-			if n < 0 {
-				return out, errDecode
-			}
-			s = append(s, math.Float64frombits(v))
-			b = b[n:]
-		}
-		*sp = s
-		out.n = n
-		return out, nil
-	}
-	if wtyp != protowire.Fixed64Type {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed64(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	*sp = append(*sp, math.Float64frombits(v))
-	out.n = n
-	return out, nil
-}
-
-var coderDoubleSlice = pointerCoderFuncs{
-	size:      sizeDoubleSlice,
-	marshal:   appendDoubleSlice,
-	unmarshal: consumeDoubleSlice,
-	merge:     mergeFloat64Slice,
-}
-
-// sizeDoublePackedSlice returns the size of wire encoding a []float64 pointer as a packed repeated Double.
-func sizeDoublePackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.Float64Slice()
-	if len(s) == 0 {
-		return 0
-	}
-	n := len(s) * protowire.SizeFixed64()
-	return f.tagsize + protowire.SizeBytes(n)
-}
-
-// appendDoublePackedSlice encodes a []float64 pointer as a packed repeated Double.
-func appendDoublePackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.Float64Slice()
-	if len(s) == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	n := len(s) * protowire.SizeFixed64()
-	b = protowire.AppendVarint(b, uint64(n))
-	for _, v := range s {
-		b = protowire.AppendFixed64(b, math.Float64bits(v))
-	}
-	return b, nil
-}
-
-var coderDoublePackedSlice = pointerCoderFuncs{
-	size:      sizeDoublePackedSlice,
-	marshal:   appendDoublePackedSlice,
-	unmarshal: consumeDoubleSlice,
-	merge:     mergeFloat64Slice,
-}
-
-// sizeDoubleValue returns the size of wire encoding a float64 value as a Double.
-func sizeDoubleValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {
-	return tagsize + protowire.SizeFixed64()
-}
-
-// appendDoubleValue encodes a float64 value as a Double.
-func appendDoubleValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	b = protowire.AppendVarint(b, wiretag)
-	b = protowire.AppendFixed64(b, math.Float64bits(v.Float()))
-	return b, nil
-}
-
-// consumeDoubleValue decodes a float64 value as a Double.
-func consumeDoubleValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	if wtyp != protowire.Fixed64Type {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed64(b)
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	out.n = n
-	return protoreflect.ValueOfFloat64(math.Float64frombits(v)), out, nil
-}
-
-var coderDoubleValue = valueCoderFuncs{
-	size:      sizeDoubleValue,
-	marshal:   appendDoubleValue,
-	unmarshal: consumeDoubleValue,
-	merge:     mergeScalarValue,
-}
-
-// sizeDoubleSliceValue returns the size of wire encoding a []float64 value as a repeated Double.
-func sizeDoubleSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	size = list.Len() * (tagsize + protowire.SizeFixed64())
-	return size
-}
-
-// appendDoubleSliceValue encodes a []float64 value as a repeated Double.
-func appendDoubleSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, wiretag)
-		b = protowire.AppendFixed64(b, math.Float64bits(v.Float()))
-	}
-	return b, nil
-}
-
-// consumeDoubleSliceValue wire decodes a []float64 value as a repeated Double.
-func consumeDoubleSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	list := listv.List()
-	if wtyp == protowire.BytesType {
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return protoreflect.Value{}, out, errDecode
-		}
-		for len(b) > 0 {
-			v, n := protowire.ConsumeFixed64(b)
-			if n < 0 {
-				return protoreflect.Value{}, out, errDecode
-			}
-			list.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v)))
-			b = b[n:]
-		}
-		out.n = n
-		return listv, out, nil
-	}
-	if wtyp != protowire.Fixed64Type {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	v, n := protowire.ConsumeFixed64(b)
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	list.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v)))
-	out.n = n
-	return listv, out, nil
-}
-
-var coderDoubleSliceValue = valueCoderFuncs{
-	size:      sizeDoubleSliceValue,
-	marshal:   appendDoubleSliceValue,
-	unmarshal: consumeDoubleSliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeDoublePackedSliceValue returns the size of wire encoding a []float64 value as a packed repeated Double.
-func sizeDoublePackedSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return 0
-	}
-	n := llen * protowire.SizeFixed64()
-	return tagsize + protowire.SizeBytes(n)
-}
-
-// appendDoublePackedSliceValue encodes a []float64 value as a packed repeated Double.
-func appendDoublePackedSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	llen := list.Len()
-	if llen == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, wiretag)
-	n := llen * protowire.SizeFixed64()
-	b = protowire.AppendVarint(b, uint64(n))
-	for i := 0; i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendFixed64(b, math.Float64bits(v.Float()))
-	}
-	return b, nil
-}
-
-var coderDoublePackedSliceValue = valueCoderFuncs{
-	size:      sizeDoublePackedSliceValue,
-	marshal:   appendDoublePackedSliceValue,
-	unmarshal: consumeDoubleSliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeString returns the size of wire encoding a string pointer as a String.
-func sizeString(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.String()
-	return f.tagsize + protowire.SizeBytes(len(v))
-}
-
-// appendString wire encodes a string pointer as a String.
-func appendString(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.String()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendString(b, v)
-	return b, nil
-}
-
-// consumeString wire decodes a string pointer as a String.
-func consumeString(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.BytesType {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	*p.String() = string(v)
-	out.n = n
-	return out, nil
-}
-
-var coderString = pointerCoderFuncs{
-	size:      sizeString,
-	marshal:   appendString,
-	unmarshal: consumeString,
-	merge:     mergeString,
-}
-
-// appendStringValidateUTF8 wire encodes a string pointer as a String.
-func appendStringValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.String()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendString(b, v)
-	if !utf8.ValidString(v) {
-		return b, errInvalidUTF8{}
-	}
-	return b, nil
-}
-
-// consumeStringValidateUTF8 wire decodes a string pointer as a String.
-func consumeStringValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.BytesType {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	if !utf8.Valid(v) {
-		return out, errInvalidUTF8{}
-	}
-	*p.String() = string(v)
-	out.n = n
-	return out, nil
-}
-
-var coderStringValidateUTF8 = pointerCoderFuncs{
-	size:      sizeString,
-	marshal:   appendStringValidateUTF8,
-	unmarshal: consumeStringValidateUTF8,
-	merge:     mergeString,
-}
-
-// sizeStringNoZero returns the size of wire encoding a string pointer as a String.
-// The zero value is not encoded.
-func sizeStringNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.String()
-	if len(v) == 0 {
-		return 0
-	}
-	return f.tagsize + protowire.SizeBytes(len(v))
-}
-
-// appendStringNoZero wire encodes a string pointer as a String.
-// The zero value is not encoded.
-func appendStringNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.String()
-	if len(v) == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendString(b, v)
-	return b, nil
-}
-
-var coderStringNoZero = pointerCoderFuncs{
-	size:      sizeStringNoZero,
-	marshal:   appendStringNoZero,
-	unmarshal: consumeString,
-	merge:     mergeStringNoZero,
-}
-
-// appendStringNoZeroValidateUTF8 wire encodes a string pointer as a String.
-// The zero value is not encoded.
-func appendStringNoZeroValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.String()
-	if len(v) == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendString(b, v)
-	if !utf8.ValidString(v) {
-		return b, errInvalidUTF8{}
-	}
-	return b, nil
-}
-
-var coderStringNoZeroValidateUTF8 = pointerCoderFuncs{
-	size:      sizeStringNoZero,
-	marshal:   appendStringNoZeroValidateUTF8,
-	unmarshal: consumeStringValidateUTF8,
-	merge:     mergeStringNoZero,
-}
-
-// sizeStringPtr returns the size of wire encoding a *string pointer as a String.
-// It panics if the pointer is nil.
-func sizeStringPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := **p.StringPtr()
-	return f.tagsize + protowire.SizeBytes(len(v))
-}
-
-// appendStringPtr wire encodes a *string pointer as a String.
-// It panics if the pointer is nil.
-func appendStringPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := **p.StringPtr()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendString(b, v)
-	return b, nil
-}
-
-// consumeStringPtr wire decodes a *string pointer as a String.
-func consumeStringPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.BytesType {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	vp := p.StringPtr()
-	if *vp == nil {
-		*vp = new(string)
-	}
-	**vp = string(v)
-	out.n = n
-	return out, nil
-}
-
-var coderStringPtr = pointerCoderFuncs{
-	size:      sizeStringPtr,
-	marshal:   appendStringPtr,
-	unmarshal: consumeStringPtr,
-	merge:     mergeStringPtr,
-}
-
-// appendStringPtrValidateUTF8 wire encodes a *string pointer as a String.
-// It panics if the pointer is nil.
-func appendStringPtrValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := **p.StringPtr()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendString(b, v)
-	if !utf8.ValidString(v) {
-		return b, errInvalidUTF8{}
-	}
-	return b, nil
-}
-
-// consumeStringPtrValidateUTF8 wire decodes a *string pointer as a String.
-func consumeStringPtrValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.BytesType {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	if !utf8.Valid(v) {
-		return out, errInvalidUTF8{}
-	}
-	vp := p.StringPtr()
-	if *vp == nil {
-		*vp = new(string)
-	}
-	**vp = string(v)
-	out.n = n
-	return out, nil
-}
-
-var coderStringPtrValidateUTF8 = pointerCoderFuncs{
-	size:      sizeStringPtr,
-	marshal:   appendStringPtrValidateUTF8,
-	unmarshal: consumeStringPtrValidateUTF8,
-	merge:     mergeStringPtr,
-}
-
-// sizeStringSlice returns the size of wire encoding a []string pointer as a repeated String.
-func sizeStringSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.StringSlice()
-	for _, v := range s {
-		size += f.tagsize + protowire.SizeBytes(len(v))
-	}
-	return size
-}
-
-// appendStringSlice encodes a []string pointer as a repeated String.
-func appendStringSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.StringSlice()
-	for _, v := range s {
-		b = protowire.AppendVarint(b, f.wiretag)
-		b = protowire.AppendString(b, v)
-	}
-	return b, nil
-}
-
-// consumeStringSlice wire decodes a []string pointer as a repeated String.
-func consumeStringSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	sp := p.StringSlice()
-	if wtyp != protowire.BytesType {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	*sp = append(*sp, string(v))
-	out.n = n
-	return out, nil
-}
-
-var coderStringSlice = pointerCoderFuncs{
-	size:      sizeStringSlice,
-	marshal:   appendStringSlice,
-	unmarshal: consumeStringSlice,
-	merge:     mergeStringSlice,
-}
-
-// appendStringSliceValidateUTF8 encodes a []string pointer as a repeated String.
-func appendStringSliceValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.StringSlice()
-	for _, v := range s {
-		b = protowire.AppendVarint(b, f.wiretag)
-		b = protowire.AppendString(b, v)
-		if !utf8.ValidString(v) {
-			return b, errInvalidUTF8{}
-		}
-	}
-	return b, nil
-}
-
-// consumeStringSliceValidateUTF8 wire decodes a []string pointer as a repeated String.
-func consumeStringSliceValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.BytesType {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	if !utf8.Valid(v) {
-		return out, errInvalidUTF8{}
-	}
-	sp := p.StringSlice()
-	*sp = append(*sp, string(v))
-	out.n = n
-	return out, nil
-}
-
-var coderStringSliceValidateUTF8 = pointerCoderFuncs{
-	size:      sizeStringSlice,
-	marshal:   appendStringSliceValidateUTF8,
-	unmarshal: consumeStringSliceValidateUTF8,
-	merge:     mergeStringSlice,
-}
-
-// sizeStringValue returns the size of wire encoding a string value as a String.
-func sizeStringValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {
-	return tagsize + protowire.SizeBytes(len(v.String()))
-}
-
-// appendStringValue encodes a string value as a String.
-func appendStringValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	b = protowire.AppendVarint(b, wiretag)
-	b = protowire.AppendString(b, v.String())
-	return b, nil
-}
-
-// consumeStringValue decodes a string value as a String.
-func consumeStringValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	if wtyp != protowire.BytesType {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	v, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	out.n = n
-	return protoreflect.ValueOfString(string(v)), out, nil
-}
-
-var coderStringValue = valueCoderFuncs{
-	size:      sizeStringValue,
-	marshal:   appendStringValue,
-	unmarshal: consumeStringValue,
-	merge:     mergeScalarValue,
-}
-
-// appendStringValueValidateUTF8 encodes a string value as a String.
-func appendStringValueValidateUTF8(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	b = protowire.AppendVarint(b, wiretag)
-	b = protowire.AppendString(b, v.String())
-	if !utf8.ValidString(v.String()) {
-		return b, errInvalidUTF8{}
-	}
-	return b, nil
-}
-
-// consumeStringValueValidateUTF8 decodes a string value as a String.
-func consumeStringValueValidateUTF8(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	if wtyp != protowire.BytesType {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	v, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	if !utf8.Valid(v) {
-		return protoreflect.Value{}, out, errInvalidUTF8{}
-	}
-	out.n = n
-	return protoreflect.ValueOfString(string(v)), out, nil
-}
-
-var coderStringValueValidateUTF8 = valueCoderFuncs{
-	size:      sizeStringValue,
-	marshal:   appendStringValueValidateUTF8,
-	unmarshal: consumeStringValueValidateUTF8,
-	merge:     mergeScalarValue,
-}
-
-// sizeStringSliceValue returns the size of wire encoding a []string value as a repeated String.
-func sizeStringSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		size += tagsize + protowire.SizeBytes(len(v.String()))
-	}
-	return size
-}
-
-// appendStringSliceValue encodes a []string value as a repeated String.
-func appendStringSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, wiretag)
-		b = protowire.AppendString(b, v.String())
-	}
-	return b, nil
-}
-
-// consumeStringSliceValue wire decodes a []string value as a repeated String.
-func consumeStringSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	list := listv.List()
-	if wtyp != protowire.BytesType {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	v, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	list.Append(protoreflect.ValueOfString(string(v)))
-	out.n = n
-	return listv, out, nil
-}
-
-var coderStringSliceValue = valueCoderFuncs{
-	size:      sizeStringSliceValue,
-	marshal:   appendStringSliceValue,
-	unmarshal: consumeStringSliceValue,
-	merge:     mergeListValue,
-}
-
-// sizeBytes returns the size of wire encoding a []byte pointer as a Bytes.
-func sizeBytes(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.Bytes()
-	return f.tagsize + protowire.SizeBytes(len(v))
-}
-
-// appendBytes wire encodes a []byte pointer as a Bytes.
-func appendBytes(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Bytes()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendBytes(b, v)
-	return b, nil
-}
-
-// consumeBytes wire decodes a []byte pointer as a Bytes.
-func consumeBytes(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.BytesType {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	*p.Bytes() = append(emptyBuf[:], v...)
-	out.n = n
-	return out, nil
-}
-
-var coderBytes = pointerCoderFuncs{
-	size:      sizeBytes,
-	marshal:   appendBytes,
-	unmarshal: consumeBytes,
-	merge:     mergeBytes,
-}
-
-// appendBytesValidateUTF8 wire encodes a []byte pointer as a Bytes.
-func appendBytesValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Bytes()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendBytes(b, v)
-	if !utf8.Valid(v) {
-		return b, errInvalidUTF8{}
-	}
-	return b, nil
-}
-
-// consumeBytesValidateUTF8 wire decodes a []byte pointer as a Bytes.
-func consumeBytesValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.BytesType {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	if !utf8.Valid(v) {
-		return out, errInvalidUTF8{}
-	}
-	*p.Bytes() = append(emptyBuf[:], v...)
-	out.n = n
-	return out, nil
-}
-
-var coderBytesValidateUTF8 = pointerCoderFuncs{
-	size:      sizeBytes,
-	marshal:   appendBytesValidateUTF8,
-	unmarshal: consumeBytesValidateUTF8,
-	merge:     mergeBytes,
-}
-
-// sizeBytesNoZero returns the size of wire encoding a []byte pointer as a Bytes.
-// The zero value is not encoded.
-func sizeBytesNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	v := *p.Bytes()
-	if len(v) == 0 {
-		return 0
-	}
-	return f.tagsize + protowire.SizeBytes(len(v))
-}
-
-// appendBytesNoZero wire encodes a []byte pointer as a Bytes.
-// The zero value is not encoded.
-func appendBytesNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Bytes()
-	if len(v) == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendBytes(b, v)
-	return b, nil
-}
-
-// consumeBytesNoZero wire decodes a []byte pointer as a Bytes.
-// The zero value is not decoded.
-func consumeBytesNoZero(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.BytesType {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	*p.Bytes() = append(([]byte)(nil), v...)
-	out.n = n
-	return out, nil
-}
-
-var coderBytesNoZero = pointerCoderFuncs{
-	size:      sizeBytesNoZero,
-	marshal:   appendBytesNoZero,
-	unmarshal: consumeBytesNoZero,
-	merge:     mergeBytesNoZero,
-}
-
-// appendBytesNoZeroValidateUTF8 wire encodes a []byte pointer as a Bytes.
-// The zero value is not encoded.
-func appendBytesNoZeroValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := *p.Bytes()
-	if len(v) == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendBytes(b, v)
-	if !utf8.Valid(v) {
-		return b, errInvalidUTF8{}
-	}
-	return b, nil
-}
-
-// consumeBytesNoZeroValidateUTF8 wire decodes a []byte pointer as a Bytes.
-func consumeBytesNoZeroValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.BytesType {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	if !utf8.Valid(v) {
-		return out, errInvalidUTF8{}
-	}
-	*p.Bytes() = append(([]byte)(nil), v...)
-	out.n = n
-	return out, nil
-}
-
-var coderBytesNoZeroValidateUTF8 = pointerCoderFuncs{
-	size:      sizeBytesNoZero,
-	marshal:   appendBytesNoZeroValidateUTF8,
-	unmarshal: consumeBytesNoZeroValidateUTF8,
-	merge:     mergeBytesNoZero,
-}
-
-// sizeBytesSlice returns the size of wire encoding a [][]byte pointer as a repeated Bytes.
-func sizeBytesSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := *p.BytesSlice()
-	for _, v := range s {
-		size += f.tagsize + protowire.SizeBytes(len(v))
-	}
-	return size
-}
-
-// appendBytesSlice encodes a [][]byte pointer as a repeated Bytes.
-func appendBytesSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.BytesSlice()
-	for _, v := range s {
-		b = protowire.AppendVarint(b, f.wiretag)
-		b = protowire.AppendBytes(b, v)
-	}
-	return b, nil
-}
-
-// consumeBytesSlice wire decodes a [][]byte pointer as a repeated Bytes.
-func consumeBytesSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	sp := p.BytesSlice()
-	if wtyp != protowire.BytesType {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	*sp = append(*sp, append(emptyBuf[:], v...))
-	out.n = n
-	return out, nil
-}
-
-var coderBytesSlice = pointerCoderFuncs{
-	size:      sizeBytesSlice,
-	marshal:   appendBytesSlice,
-	unmarshal: consumeBytesSlice,
-	merge:     mergeBytesSlice,
-}
-
-// appendBytesSliceValidateUTF8 encodes a [][]byte pointer as a repeated Bytes.
-func appendBytesSliceValidateUTF8(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := *p.BytesSlice()
-	for _, v := range s {
-		b = protowire.AppendVarint(b, f.wiretag)
-		b = protowire.AppendBytes(b, v)
-		if !utf8.Valid(v) {
-			return b, errInvalidUTF8{}
-		}
-	}
-	return b, nil
-}
-
-// consumeBytesSliceValidateUTF8 wire decodes a [][]byte pointer as a repeated Bytes.
-func consumeBytesSliceValidateUTF8(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.BytesType {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	if !utf8.Valid(v) {
-		return out, errInvalidUTF8{}
-	}
-	sp := p.BytesSlice()
-	*sp = append(*sp, append(emptyBuf[:], v...))
-	out.n = n
-	return out, nil
-}
-
-var coderBytesSliceValidateUTF8 = pointerCoderFuncs{
-	size:      sizeBytesSlice,
-	marshal:   appendBytesSliceValidateUTF8,
-	unmarshal: consumeBytesSliceValidateUTF8,
-	merge:     mergeBytesSlice,
-}
-
-// sizeBytesValue returns the size of wire encoding a []byte value as a Bytes.
-func sizeBytesValue(v protoreflect.Value, tagsize int, opts marshalOptions) int {
-	return tagsize + protowire.SizeBytes(len(v.Bytes()))
-}
-
-// appendBytesValue encodes a []byte value as a Bytes.
-func appendBytesValue(b []byte, v protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	b = protowire.AppendVarint(b, wiretag)
-	b = protowire.AppendBytes(b, v.Bytes())
-	return b, nil
-}
-
-// consumeBytesValue decodes a []byte value as a Bytes.
-func consumeBytesValue(b []byte, _ protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	if wtyp != protowire.BytesType {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	v, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	out.n = n
-	return protoreflect.ValueOfBytes(append(emptyBuf[:], v...)), out, nil
-}
-
-var coderBytesValue = valueCoderFuncs{
-	size:      sizeBytesValue,
-	marshal:   appendBytesValue,
-	unmarshal: consumeBytesValue,
-	merge:     mergeBytesValue,
-}
-
-// sizeBytesSliceValue returns the size of wire encoding a [][]byte value as a repeated Bytes.
-func sizeBytesSliceValue(listv protoreflect.Value, tagsize int, opts marshalOptions) (size int) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		size += tagsize + protowire.SizeBytes(len(v.Bytes()))
-	}
-	return size
-}
-
-// appendBytesSliceValue encodes a [][]byte value as a repeated Bytes.
-func appendBytesSliceValue(b []byte, listv protoreflect.Value, wiretag uint64, opts marshalOptions) ([]byte, error) {
-	list := listv.List()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		v := list.Get(i)
-		b = protowire.AppendVarint(b, wiretag)
-		b = protowire.AppendBytes(b, v.Bytes())
-	}
-	return b, nil
-}
-
-// consumeBytesSliceValue wire decodes a [][]byte value as a repeated Bytes.
-func consumeBytesSliceValue(b []byte, listv protoreflect.Value, _ protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (_ protoreflect.Value, out unmarshalOutput, err error) {
-	list := listv.List()
-	if wtyp != protowire.BytesType {
-		return protoreflect.Value{}, out, errUnknown
-	}
-	v, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return protoreflect.Value{}, out, errDecode
-	}
-	list.Append(protoreflect.ValueOfBytes(append(emptyBuf[:], v...)))
-	out.n = n
-	return listv, out, nil
-}
-
-var coderBytesSliceValue = valueCoderFuncs{
-	size:      sizeBytesSliceValue,
-	marshal:   appendBytesSliceValue,
-	unmarshal: consumeBytesSliceValue,
-	merge:     mergeBytesListValue,
-}
-
-// We append to an empty array rather than a nil []byte to get non-nil zero-length byte slices.
-var emptyBuf [0]byte
-
-var wireTypes = map[protoreflect.Kind]protowire.Type{
-	protoreflect.BoolKind:     protowire.VarintType,
-	protoreflect.EnumKind:     protowire.VarintType,
-	protoreflect.Int32Kind:    protowire.VarintType,
-	protoreflect.Sint32Kind:   protowire.VarintType,
-	protoreflect.Uint32Kind:   protowire.VarintType,
-	protoreflect.Int64Kind:    protowire.VarintType,
-	protoreflect.Sint64Kind:   protowire.VarintType,
-	protoreflect.Uint64Kind:   protowire.VarintType,
-	protoreflect.Sfixed32Kind: protowire.Fixed32Type,
-	protoreflect.Fixed32Kind:  protowire.Fixed32Type,
-	protoreflect.FloatKind:    protowire.Fixed32Type,
-	protoreflect.Sfixed64Kind: protowire.Fixed64Type,
-	protoreflect.Fixed64Kind:  protowire.Fixed64Type,
-	protoreflect.DoubleKind:   protowire.Fixed64Type,
-	protoreflect.StringKind:   protowire.BytesType,
-	protoreflect.BytesKind:    protowire.BytesType,
-	protoreflect.MessageKind:  protowire.BytesType,
-	protoreflect.GroupKind:    protowire.StartGroupType,
-}
diff --git a/internal/impl/codec_map.go b/internal/impl/codec_map.go
deleted file mode 100644
index c1245fe..0000000
--- a/internal/impl/codec_map.go
+++ /dev/null
@@ -1,388 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"reflect"
-	"sort"
-
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/genid"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-type mapInfo struct {
-	goType     reflect.Type
-	keyWiretag uint64
-	valWiretag uint64
-	keyFuncs   valueCoderFuncs
-	valFuncs   valueCoderFuncs
-	keyZero    pref.Value
-	keyKind    pref.Kind
-	conv       *mapConverter
-}
-
-func encoderFuncsForMap(fd pref.FieldDescriptor, ft reflect.Type) (valueMessage *MessageInfo, funcs pointerCoderFuncs) {
-	// TODO: Consider generating specialized map coders.
-	keyField := fd.MapKey()
-	valField := fd.MapValue()
-	keyWiretag := protowire.EncodeTag(1, wireTypes[keyField.Kind()])
-	valWiretag := protowire.EncodeTag(2, wireTypes[valField.Kind()])
-	keyFuncs := encoderFuncsForValue(keyField)
-	valFuncs := encoderFuncsForValue(valField)
-	conv := newMapConverter(ft, fd)
-
-	mapi := &mapInfo{
-		goType:     ft,
-		keyWiretag: keyWiretag,
-		valWiretag: valWiretag,
-		keyFuncs:   keyFuncs,
-		valFuncs:   valFuncs,
-		keyZero:    keyField.Default(),
-		keyKind:    keyField.Kind(),
-		conv:       conv,
-	}
-	if valField.Kind() == pref.MessageKind {
-		valueMessage = getMessageInfo(ft.Elem())
-	}
-
-	funcs = pointerCoderFuncs{
-		size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {
-			return sizeMap(p.AsValueOf(ft).Elem(), mapi, f, opts)
-		},
-		marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-			return appendMap(b, p.AsValueOf(ft).Elem(), mapi, f, opts)
-		},
-		unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {
-			mp := p.AsValueOf(ft)
-			if mp.Elem().IsNil() {
-				mp.Elem().Set(reflect.MakeMap(mapi.goType))
-			}
-			if f.mi == nil {
-				return consumeMap(b, mp.Elem(), wtyp, mapi, f, opts)
-			} else {
-				return consumeMapOfMessage(b, mp.Elem(), wtyp, mapi, f, opts)
-			}
-		},
-	}
-	switch valField.Kind() {
-	case pref.MessageKind:
-		funcs.merge = mergeMapOfMessage
-	case pref.BytesKind:
-		funcs.merge = mergeMapOfBytes
-	default:
-		funcs.merge = mergeMap
-	}
-	if valFuncs.isInit != nil {
-		funcs.isInit = func(p pointer, f *coderFieldInfo) error {
-			return isInitMap(p.AsValueOf(ft).Elem(), mapi, f)
-		}
-	}
-	return valueMessage, funcs
-}
-
-const (
-	mapKeyTagSize = 1 // field 1, tag size 1.
-	mapValTagSize = 1 // field 2, tag size 2.
-)
-
-func sizeMap(mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) int {
-	if mapv.Len() == 0 {
-		return 0
-	}
-	n := 0
-	iter := mapRange(mapv)
-	for iter.Next() {
-		key := mapi.conv.keyConv.PBValueOf(iter.Key()).MapKey()
-		keySize := mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts)
-		var valSize int
-		value := mapi.conv.valConv.PBValueOf(iter.Value())
-		if f.mi == nil {
-			valSize = mapi.valFuncs.size(value, mapValTagSize, opts)
-		} else {
-			p := pointerOfValue(iter.Value())
-			valSize += mapValTagSize
-			valSize += protowire.SizeBytes(f.mi.sizePointer(p, opts))
-		}
-		n += f.tagsize + protowire.SizeBytes(keySize+valSize)
-	}
-	return n
-}
-
-func consumeMap(b []byte, mapv reflect.Value, wtyp protowire.Type, mapi *mapInfo, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.BytesType {
-		return out, errUnknown
-	}
-	b, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	var (
-		key = mapi.keyZero
-		val = mapi.conv.valConv.New()
-	)
-	for len(b) > 0 {
-		num, wtyp, n := protowire.ConsumeTag(b)
-		if n < 0 {
-			return out, errDecode
-		}
-		if num > protowire.MaxValidNumber {
-			return out, errDecode
-		}
-		b = b[n:]
-		err := errUnknown
-		switch num {
-		case genid.MapEntry_Key_field_number:
-			var v pref.Value
-			var o unmarshalOutput
-			v, o, err = mapi.keyFuncs.unmarshal(b, key, num, wtyp, opts)
-			if err != nil {
-				break
-			}
-			key = v
-			n = o.n
-		case genid.MapEntry_Value_field_number:
-			var v pref.Value
-			var o unmarshalOutput
-			v, o, err = mapi.valFuncs.unmarshal(b, val, num, wtyp, opts)
-			if err != nil {
-				break
-			}
-			val = v
-			n = o.n
-		}
-		if err == errUnknown {
-			n = protowire.ConsumeFieldValue(num, wtyp, b)
-			if n < 0 {
-				return out, errDecode
-			}
-		} else if err != nil {
-			return out, err
-		}
-		b = b[n:]
-	}
-	mapv.SetMapIndex(mapi.conv.keyConv.GoValueOf(key), mapi.conv.valConv.GoValueOf(val))
-	out.n = n
-	return out, nil
-}
-
-func consumeMapOfMessage(b []byte, mapv reflect.Value, wtyp protowire.Type, mapi *mapInfo, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.BytesType {
-		return out, errUnknown
-	}
-	b, n := protowire.ConsumeBytes(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	var (
-		key = mapi.keyZero
-		val = reflect.New(f.mi.GoReflectType.Elem())
-	)
-	for len(b) > 0 {
-		num, wtyp, n := protowire.ConsumeTag(b)
-		if n < 0 {
-			return out, errDecode
-		}
-		if num > protowire.MaxValidNumber {
-			return out, errDecode
-		}
-		b = b[n:]
-		err := errUnknown
-		switch num {
-		case 1:
-			var v pref.Value
-			var o unmarshalOutput
-			v, o, err = mapi.keyFuncs.unmarshal(b, key, num, wtyp, opts)
-			if err != nil {
-				break
-			}
-			key = v
-			n = o.n
-		case 2:
-			if wtyp != protowire.BytesType {
-				break
-			}
-			var v []byte
-			v, n = protowire.ConsumeBytes(b)
-			if n < 0 {
-				return out, errDecode
-			}
-			var o unmarshalOutput
-			o, err = f.mi.unmarshalPointer(v, pointerOfValue(val), 0, opts)
-			if o.initialized {
-				// Consider this map item initialized so long as we see
-				// an initialized value.
-				out.initialized = true
-			}
-		}
-		if err == errUnknown {
-			n = protowire.ConsumeFieldValue(num, wtyp, b)
-			if n < 0 {
-				return out, errDecode
-			}
-		} else if err != nil {
-			return out, err
-		}
-		b = b[n:]
-	}
-	mapv.SetMapIndex(mapi.conv.keyConv.GoValueOf(key), val)
-	out.n = n
-	return out, nil
-}
-
-func appendMapItem(b []byte, keyrv, valrv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	if f.mi == nil {
-		key := mapi.conv.keyConv.PBValueOf(keyrv).MapKey()
-		val := mapi.conv.valConv.PBValueOf(valrv)
-		size := 0
-		size += mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts)
-		size += mapi.valFuncs.size(val, mapValTagSize, opts)
-		b = protowire.AppendVarint(b, uint64(size))
-		b, err := mapi.keyFuncs.marshal(b, key.Value(), mapi.keyWiretag, opts)
-		if err != nil {
-			return nil, err
-		}
-		return mapi.valFuncs.marshal(b, val, mapi.valWiretag, opts)
-	} else {
-		key := mapi.conv.keyConv.PBValueOf(keyrv).MapKey()
-		val := pointerOfValue(valrv)
-		valSize := f.mi.sizePointer(val, opts)
-		size := 0
-		size += mapi.keyFuncs.size(key.Value(), mapKeyTagSize, opts)
-		size += mapValTagSize + protowire.SizeBytes(valSize)
-		b = protowire.AppendVarint(b, uint64(size))
-		b, err := mapi.keyFuncs.marshal(b, key.Value(), mapi.keyWiretag, opts)
-		if err != nil {
-			return nil, err
-		}
-		b = protowire.AppendVarint(b, mapi.valWiretag)
-		b = protowire.AppendVarint(b, uint64(valSize))
-		return f.mi.marshalAppendPointer(b, val, opts)
-	}
-}
-
-func appendMap(b []byte, mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	if mapv.Len() == 0 {
-		return b, nil
-	}
-	if opts.Deterministic() {
-		return appendMapDeterministic(b, mapv, mapi, f, opts)
-	}
-	iter := mapRange(mapv)
-	for iter.Next() {
-		var err error
-		b = protowire.AppendVarint(b, f.wiretag)
-		b, err = appendMapItem(b, iter.Key(), iter.Value(), mapi, f, opts)
-		if err != nil {
-			return b, err
-		}
-	}
-	return b, nil
-}
-
-func appendMapDeterministic(b []byte, mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	keys := mapv.MapKeys()
-	sort.Slice(keys, func(i, j int) bool {
-		switch keys[i].Kind() {
-		case reflect.Bool:
-			return !keys[i].Bool() && keys[j].Bool()
-		case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
-			return keys[i].Int() < keys[j].Int()
-		case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
-			return keys[i].Uint() < keys[j].Uint()
-		case reflect.Float32, reflect.Float64:
-			return keys[i].Float() < keys[j].Float()
-		case reflect.String:
-			return keys[i].String() < keys[j].String()
-		default:
-			panic("invalid kind: " + keys[i].Kind().String())
-		}
-	})
-	for _, key := range keys {
-		var err error
-		b = protowire.AppendVarint(b, f.wiretag)
-		b, err = appendMapItem(b, key, mapv.MapIndex(key), mapi, f, opts)
-		if err != nil {
-			return b, err
-		}
-	}
-	return b, nil
-}
-
-func isInitMap(mapv reflect.Value, mapi *mapInfo, f *coderFieldInfo) error {
-	if mi := f.mi; mi != nil {
-		mi.init()
-		if !mi.needsInitCheck {
-			return nil
-		}
-		iter := mapRange(mapv)
-		for iter.Next() {
-			val := pointerOfValue(iter.Value())
-			if err := mi.checkInitializedPointer(val); err != nil {
-				return err
-			}
-		}
-	} else {
-		iter := mapRange(mapv)
-		for iter.Next() {
-			val := mapi.conv.valConv.PBValueOf(iter.Value())
-			if err := mapi.valFuncs.isInit(val); err != nil {
-				return err
-			}
-		}
-	}
-	return nil
-}
-
-func mergeMap(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {
-	dstm := dst.AsValueOf(f.ft).Elem()
-	srcm := src.AsValueOf(f.ft).Elem()
-	if srcm.Len() == 0 {
-		return
-	}
-	if dstm.IsNil() {
-		dstm.Set(reflect.MakeMap(f.ft))
-	}
-	iter := mapRange(srcm)
-	for iter.Next() {
-		dstm.SetMapIndex(iter.Key(), iter.Value())
-	}
-}
-
-func mergeMapOfBytes(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {
-	dstm := dst.AsValueOf(f.ft).Elem()
-	srcm := src.AsValueOf(f.ft).Elem()
-	if srcm.Len() == 0 {
-		return
-	}
-	if dstm.IsNil() {
-		dstm.Set(reflect.MakeMap(f.ft))
-	}
-	iter := mapRange(srcm)
-	for iter.Next() {
-		dstm.SetMapIndex(iter.Key(), reflect.ValueOf(append(emptyBuf[:], iter.Value().Bytes()...)))
-	}
-}
-
-func mergeMapOfMessage(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {
-	dstm := dst.AsValueOf(f.ft).Elem()
-	srcm := src.AsValueOf(f.ft).Elem()
-	if srcm.Len() == 0 {
-		return
-	}
-	if dstm.IsNil() {
-		dstm.Set(reflect.MakeMap(f.ft))
-	}
-	iter := mapRange(srcm)
-	for iter.Next() {
-		val := reflect.New(f.ft.Elem().Elem())
-		if f.mi != nil {
-			f.mi.mergePointer(pointerOfValue(val), pointerOfValue(iter.Value()), opts)
-		} else {
-			opts.Merge(asMessage(val), asMessage(iter.Value()))
-		}
-		dstm.SetMapIndex(iter.Key(), val)
-	}
-}
diff --git a/internal/impl/codec_map_go111.go b/internal/impl/codec_map_go111.go
deleted file mode 100644
index 4b15493..0000000
--- a/internal/impl/codec_map_go111.go
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:build !go1.12
-// +build !go1.12
-
-package impl
-
-import "reflect"
-
-type mapIter struct {
-	v    reflect.Value
-	keys []reflect.Value
-}
-
-// mapRange provides a less-efficient equivalent to
-// the Go 1.12 reflect.Value.MapRange method.
-func mapRange(v reflect.Value) *mapIter {
-	return &mapIter{v: v}
-}
-
-func (i *mapIter) Next() bool {
-	if i.keys == nil {
-		i.keys = i.v.MapKeys()
-	} else {
-		i.keys = i.keys[1:]
-	}
-	return len(i.keys) > 0
-}
-
-func (i *mapIter) Key() reflect.Value {
-	return i.keys[0]
-}
-
-func (i *mapIter) Value() reflect.Value {
-	return i.v.MapIndex(i.keys[0])
-}
diff --git a/internal/impl/codec_map_go112.go b/internal/impl/codec_map_go112.go
deleted file mode 100644
index 0b31b66..0000000
--- a/internal/impl/codec_map_go112.go
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:build go1.12
-// +build go1.12
-
-package impl
-
-import "reflect"
-
-func mapRange(v reflect.Value) *reflect.MapIter { return v.MapRange() }
diff --git a/internal/impl/codec_message.go b/internal/impl/codec_message.go
deleted file mode 100644
index cd40527..0000000
--- a/internal/impl/codec_message.go
+++ /dev/null
@@ -1,217 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"fmt"
-	"reflect"
-	"sort"
-
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/encoding/messageset"
-	"google.golang.org/protobuf/internal/order"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	piface "google.golang.org/protobuf/runtime/protoiface"
-)
-
-// coderMessageInfo contains per-message information used by the fast-path functions.
-// This is a different type from MessageInfo to keep MessageInfo as general-purpose as
-// possible.
-type coderMessageInfo struct {
-	methods piface.Methods
-
-	orderedCoderFields []*coderFieldInfo
-	denseCoderFields   []*coderFieldInfo
-	coderFields        map[protowire.Number]*coderFieldInfo
-	sizecacheOffset    offset
-	unknownOffset      offset
-	unknownPtrKind     bool
-	extensionOffset    offset
-	needsInitCheck     bool
-	isMessageSet       bool
-	numRequiredFields  uint8
-}
-
-type coderFieldInfo struct {
-	funcs      pointerCoderFuncs // fast-path per-field functions
-	mi         *MessageInfo      // field's message
-	ft         reflect.Type
-	validation validationInfo   // information used by message validation
-	num        pref.FieldNumber // field number
-	offset     offset           // struct field offset
-	wiretag    uint64           // field tag (number + wire type)
-	tagsize    int              // size of the varint-encoded tag
-	isPointer  bool             // true if IsNil may be called on the struct field
-	isRequired bool             // true if field is required
-}
-
-func (mi *MessageInfo) makeCoderMethods(t reflect.Type, si structInfo) {
-	mi.sizecacheOffset = invalidOffset
-	mi.unknownOffset = invalidOffset
-	mi.extensionOffset = invalidOffset
-
-	if si.sizecacheOffset.IsValid() && si.sizecacheType == sizecacheType {
-		mi.sizecacheOffset = si.sizecacheOffset
-	}
-	if si.unknownOffset.IsValid() && (si.unknownType == unknownFieldsAType || si.unknownType == unknownFieldsBType) {
-		mi.unknownOffset = si.unknownOffset
-		mi.unknownPtrKind = si.unknownType.Kind() == reflect.Ptr
-	}
-	if si.extensionOffset.IsValid() && si.extensionType == extensionFieldsType {
-		mi.extensionOffset = si.extensionOffset
-	}
-
-	mi.coderFields = make(map[protowire.Number]*coderFieldInfo)
-	fields := mi.Desc.Fields()
-	preallocFields := make([]coderFieldInfo, fields.Len())
-	for i := 0; i < fields.Len(); i++ {
-		fd := fields.Get(i)
-
-		fs := si.fieldsByNumber[fd.Number()]
-		isOneof := fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic()
-		if isOneof {
-			fs = si.oneofsByName[fd.ContainingOneof().Name()]
-		}
-		ft := fs.Type
-		var wiretag uint64
-		if !fd.IsPacked() {
-			wiretag = protowire.EncodeTag(fd.Number(), wireTypes[fd.Kind()])
-		} else {
-			wiretag = protowire.EncodeTag(fd.Number(), protowire.BytesType)
-		}
-		var fieldOffset offset
-		var funcs pointerCoderFuncs
-		var childMessage *MessageInfo
-		switch {
-		case ft == nil:
-			// This never occurs for generated message types.
-			// It implies that a hand-crafted type has missing Go fields
-			// for specific protobuf message fields.
-			funcs = pointerCoderFuncs{
-				size: func(p pointer, f *coderFieldInfo, opts marshalOptions) int {
-					return 0
-				},
-				marshal: func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-					return nil, nil
-				},
-				unmarshal: func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error) {
-					panic("missing Go struct field for " + string(fd.FullName()))
-				},
-				isInit: func(p pointer, f *coderFieldInfo) error {
-					panic("missing Go struct field for " + string(fd.FullName()))
-				},
-				merge: func(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {
-					panic("missing Go struct field for " + string(fd.FullName()))
-				},
-			}
-		case isOneof:
-			fieldOffset = offsetOf(fs, mi.Exporter)
-		case fd.IsWeak():
-			fieldOffset = si.weakOffset
-			funcs = makeWeakMessageFieldCoder(fd)
-		default:
-			fieldOffset = offsetOf(fs, mi.Exporter)
-			childMessage, funcs = fieldCoder(fd, ft)
-		}
-		cf := &preallocFields[i]
-		*cf = coderFieldInfo{
-			num:        fd.Number(),
-			offset:     fieldOffset,
-			wiretag:    wiretag,
-			ft:         ft,
-			tagsize:    protowire.SizeVarint(wiretag),
-			funcs:      funcs,
-			mi:         childMessage,
-			validation: newFieldValidationInfo(mi, si, fd, ft),
-			isPointer:  fd.Cardinality() == pref.Repeated || fd.HasPresence(),
-			isRequired: fd.Cardinality() == pref.Required,
-		}
-		mi.orderedCoderFields = append(mi.orderedCoderFields, cf)
-		mi.coderFields[cf.num] = cf
-	}
-	for i, oneofs := 0, mi.Desc.Oneofs(); i < oneofs.Len(); i++ {
-		if od := oneofs.Get(i); !od.IsSynthetic() {
-			mi.initOneofFieldCoders(od, si)
-		}
-	}
-	if messageset.IsMessageSet(mi.Desc) {
-		if !mi.extensionOffset.IsValid() {
-			panic(fmt.Sprintf("%v: MessageSet with no extensions field", mi.Desc.FullName()))
-		}
-		if !mi.unknownOffset.IsValid() {
-			panic(fmt.Sprintf("%v: MessageSet with no unknown field", mi.Desc.FullName()))
-		}
-		mi.isMessageSet = true
-	}
-	sort.Slice(mi.orderedCoderFields, func(i, j int) bool {
-		return mi.orderedCoderFields[i].num < mi.orderedCoderFields[j].num
-	})
-
-	var maxDense pref.FieldNumber
-	for _, cf := range mi.orderedCoderFields {
-		if cf.num >= 16 && cf.num >= 2*maxDense {
-			break
-		}
-		maxDense = cf.num
-	}
-	mi.denseCoderFields = make([]*coderFieldInfo, maxDense+1)
-	for _, cf := range mi.orderedCoderFields {
-		if int(cf.num) >= len(mi.denseCoderFields) {
-			break
-		}
-		mi.denseCoderFields[cf.num] = cf
-	}
-
-	// To preserve compatibility with historic wire output, marshal oneofs last.
-	if mi.Desc.Oneofs().Len() > 0 {
-		sort.Slice(mi.orderedCoderFields, func(i, j int) bool {
-			fi := fields.ByNumber(mi.orderedCoderFields[i].num)
-			fj := fields.ByNumber(mi.orderedCoderFields[j].num)
-			return order.LegacyFieldOrder(fi, fj)
-		})
-	}
-
-	mi.needsInitCheck = needsInitCheck(mi.Desc)
-	if mi.methods.Marshal == nil && mi.methods.Size == nil {
-		mi.methods.Flags |= piface.SupportMarshalDeterministic
-		mi.methods.Marshal = mi.marshal
-		mi.methods.Size = mi.size
-	}
-	if mi.methods.Unmarshal == nil {
-		mi.methods.Flags |= piface.SupportUnmarshalDiscardUnknown
-		mi.methods.Unmarshal = mi.unmarshal
-	}
-	if mi.methods.CheckInitialized == nil {
-		mi.methods.CheckInitialized = mi.checkInitialized
-	}
-	if mi.methods.Merge == nil {
-		mi.methods.Merge = mi.merge
-	}
-}
-
-// getUnknownBytes returns a *[]byte for the unknown fields.
-// It is the caller's responsibility to check whether the pointer is nil.
-// This function is specially designed to be inlineable.
-func (mi *MessageInfo) getUnknownBytes(p pointer) *[]byte {
-	if mi.unknownPtrKind {
-		return *p.Apply(mi.unknownOffset).BytesPtr()
-	} else {
-		return p.Apply(mi.unknownOffset).Bytes()
-	}
-}
-
-// mutableUnknownBytes returns a *[]byte for the unknown fields.
-// The returned pointer is guaranteed to not be nil.
-func (mi *MessageInfo) mutableUnknownBytes(p pointer) *[]byte {
-	if mi.unknownPtrKind {
-		bp := p.Apply(mi.unknownOffset).BytesPtr()
-		if *bp == nil {
-			*bp = new([]byte)
-		}
-		return *bp
-	} else {
-		return p.Apply(mi.unknownOffset).Bytes()
-	}
-}
diff --git a/internal/impl/codec_messageset.go b/internal/impl/codec_messageset.go
deleted file mode 100644
index b7a23fa..0000000
--- a/internal/impl/codec_messageset.go
+++ /dev/null
@@ -1,123 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"sort"
-
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/encoding/messageset"
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/internal/flags"
-)
-
-func sizeMessageSet(mi *MessageInfo, p pointer, opts marshalOptions) (size int) {
-	if !flags.ProtoLegacy {
-		return 0
-	}
-
-	ext := *p.Apply(mi.extensionOffset).Extensions()
-	for _, x := range ext {
-		xi := getExtensionFieldInfo(x.Type())
-		if xi.funcs.size == nil {
-			continue
-		}
-		num, _ := protowire.DecodeTag(xi.wiretag)
-		size += messageset.SizeField(num)
-		size += xi.funcs.size(x.Value(), protowire.SizeTag(messageset.FieldMessage), opts)
-	}
-
-	if u := mi.getUnknownBytes(p); u != nil {
-		size += messageset.SizeUnknown(*u)
-	}
-
-	return size
-}
-
-func marshalMessageSet(mi *MessageInfo, b []byte, p pointer, opts marshalOptions) ([]byte, error) {
-	if !flags.ProtoLegacy {
-		return b, errors.New("no support for message_set_wire_format")
-	}
-
-	ext := *p.Apply(mi.extensionOffset).Extensions()
-	switch len(ext) {
-	case 0:
-	case 1:
-		// Fast-path for one extension: Don't bother sorting the keys.
-		for _, x := range ext {
-			var err error
-			b, err = marshalMessageSetField(mi, b, x, opts)
-			if err != nil {
-				return b, err
-			}
-		}
-	default:
-		// Sort the keys to provide a deterministic encoding.
-		// Not sure this is required, but the old code does it.
-		keys := make([]int, 0, len(ext))
-		for k := range ext {
-			keys = append(keys, int(k))
-		}
-		sort.Ints(keys)
-		for _, k := range keys {
-			var err error
-			b, err = marshalMessageSetField(mi, b, ext[int32(k)], opts)
-			if err != nil {
-				return b, err
-			}
-		}
-	}
-
-	if u := mi.getUnknownBytes(p); u != nil {
-		var err error
-		b, err = messageset.AppendUnknown(b, *u)
-		if err != nil {
-			return b, err
-		}
-	}
-
-	return b, nil
-}
-
-func marshalMessageSetField(mi *MessageInfo, b []byte, x ExtensionField, opts marshalOptions) ([]byte, error) {
-	xi := getExtensionFieldInfo(x.Type())
-	num, _ := protowire.DecodeTag(xi.wiretag)
-	b = messageset.AppendFieldStart(b, num)
-	b, err := xi.funcs.marshal(b, x.Value(), protowire.EncodeTag(messageset.FieldMessage, protowire.BytesType), opts)
-	if err != nil {
-		return b, err
-	}
-	b = messageset.AppendFieldEnd(b)
-	return b, nil
-}
-
-func unmarshalMessageSet(mi *MessageInfo, b []byte, p pointer, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if !flags.ProtoLegacy {
-		return out, errors.New("no support for message_set_wire_format")
-	}
-
-	ep := p.Apply(mi.extensionOffset).Extensions()
-	if *ep == nil {
-		*ep = make(map[int32]ExtensionField)
-	}
-	ext := *ep
-	initialized := true
-	err = messageset.Unmarshal(b, true, func(num protowire.Number, v []byte) error {
-		o, err := mi.unmarshalExtension(v, num, protowire.BytesType, ext, opts)
-		if err == errUnknown {
-			u := mi.mutableUnknownBytes(p)
-			*u = protowire.AppendTag(*u, num, protowire.BytesType)
-			*u = append(*u, v...)
-			return nil
-		}
-		if !o.initialized {
-			initialized = false
-		}
-		return err
-	})
-	out.n = len(b)
-	out.initialized = initialized
-	return out, err
-}
diff --git a/internal/impl/codec_reflect.go b/internal/impl/codec_reflect.go
deleted file mode 100644
index 145c577..0000000
--- a/internal/impl/codec_reflect.go
+++ /dev/null
@@ -1,210 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:build purego || appengine
-// +build purego appengine
-
-package impl
-
-import (
-	"reflect"
-
-	"google.golang.org/protobuf/encoding/protowire"
-)
-
-func sizeEnum(p pointer, f *coderFieldInfo, _ marshalOptions) (size int) {
-	v := p.v.Elem().Int()
-	return f.tagsize + protowire.SizeVarint(uint64(v))
-}
-
-func appendEnum(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	v := p.v.Elem().Int()
-	b = protowire.AppendVarint(b, f.wiretag)
-	b = protowire.AppendVarint(b, uint64(v))
-	return b, nil
-}
-
-func consumeEnum(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, _ unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeVarint(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	p.v.Elem().SetInt(int64(v))
-	out.n = n
-	return out, nil
-}
-
-func mergeEnum(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	dst.v.Elem().Set(src.v.Elem())
-}
-
-var coderEnum = pointerCoderFuncs{
-	size:      sizeEnum,
-	marshal:   appendEnum,
-	unmarshal: consumeEnum,
-	merge:     mergeEnum,
-}
-
-func sizeEnumNoZero(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	if p.v.Elem().Int() == 0 {
-		return 0
-	}
-	return sizeEnum(p, f, opts)
-}
-
-func appendEnumNoZero(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	if p.v.Elem().Int() == 0 {
-		return b, nil
-	}
-	return appendEnum(b, p, f, opts)
-}
-
-func mergeEnumNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	if src.v.Elem().Int() != 0 {
-		dst.v.Elem().Set(src.v.Elem())
-	}
-}
-
-var coderEnumNoZero = pointerCoderFuncs{
-	size:      sizeEnumNoZero,
-	marshal:   appendEnumNoZero,
-	unmarshal: consumeEnum,
-	merge:     mergeEnumNoZero,
-}
-
-func sizeEnumPtr(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	return sizeEnum(pointer{p.v.Elem()}, f, opts)
-}
-
-func appendEnumPtr(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	return appendEnum(b, pointer{p.v.Elem()}, f, opts)
-}
-
-func consumeEnumPtr(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	if p.v.Elem().IsNil() {
-		p.v.Elem().Set(reflect.New(p.v.Elem().Type().Elem()))
-	}
-	return consumeEnum(b, pointer{p.v.Elem()}, wtyp, f, opts)
-}
-
-func mergeEnumPtr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	if !src.v.Elem().IsNil() {
-		v := reflect.New(dst.v.Type().Elem().Elem())
-		v.Elem().Set(src.v.Elem().Elem())
-		dst.v.Elem().Set(v)
-	}
-}
-
-var coderEnumPtr = pointerCoderFuncs{
-	size:      sizeEnumPtr,
-	marshal:   appendEnumPtr,
-	unmarshal: consumeEnumPtr,
-	merge:     mergeEnumPtr,
-}
-
-func sizeEnumSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := p.v.Elem()
-	for i, llen := 0, s.Len(); i < llen; i++ {
-		size += protowire.SizeVarint(uint64(s.Index(i).Int())) + f.tagsize
-	}
-	return size
-}
-
-func appendEnumSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := p.v.Elem()
-	for i, llen := 0, s.Len(); i < llen; i++ {
-		b = protowire.AppendVarint(b, f.wiretag)
-		b = protowire.AppendVarint(b, uint64(s.Index(i).Int()))
-	}
-	return b, nil
-}
-
-func consumeEnumSlice(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	s := p.v.Elem()
-	if wtyp == protowire.BytesType {
-		b, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return out, errDecode
-		}
-		for len(b) > 0 {
-			v, n := protowire.ConsumeVarint(b)
-			if n < 0 {
-				return out, errDecode
-			}
-			rv := reflect.New(s.Type().Elem()).Elem()
-			rv.SetInt(int64(v))
-			s.Set(reflect.Append(s, rv))
-			b = b[n:]
-		}
-		out.n = n
-		return out, nil
-	}
-	if wtyp != protowire.VarintType {
-		return out, errUnknown
-	}
-	v, n := protowire.ConsumeVarint(b)
-	if n < 0 {
-		return out, errDecode
-	}
-	rv := reflect.New(s.Type().Elem()).Elem()
-	rv.SetInt(int64(v))
-	s.Set(reflect.Append(s, rv))
-	out.n = n
-	return out, nil
-}
-
-func mergeEnumSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	dst.v.Elem().Set(reflect.AppendSlice(dst.v.Elem(), src.v.Elem()))
-}
-
-var coderEnumSlice = pointerCoderFuncs{
-	size:      sizeEnumSlice,
-	marshal:   appendEnumSlice,
-	unmarshal: consumeEnumSlice,
-	merge:     mergeEnumSlice,
-}
-
-func sizeEnumPackedSlice(p pointer, f *coderFieldInfo, opts marshalOptions) (size int) {
-	s := p.v.Elem()
-	llen := s.Len()
-	if llen == 0 {
-		return 0
-	}
-	n := 0
-	for i := 0; i < llen; i++ {
-		n += protowire.SizeVarint(uint64(s.Index(i).Int()))
-	}
-	return f.tagsize + protowire.SizeBytes(n)
-}
-
-func appendEnumPackedSlice(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error) {
-	s := p.v.Elem()
-	llen := s.Len()
-	if llen == 0 {
-		return b, nil
-	}
-	b = protowire.AppendVarint(b, f.wiretag)
-	n := 0
-	for i := 0; i < llen; i++ {
-		n += protowire.SizeVarint(uint64(s.Index(i).Int()))
-	}
-	b = protowire.AppendVarint(b, uint64(n))
-	for i := 0; i < llen; i++ {
-		b = protowire.AppendVarint(b, uint64(s.Index(i).Int()))
-	}
-	return b, nil
-}
-
-var coderEnumPackedSlice = pointerCoderFuncs{
-	size:      sizeEnumPackedSlice,
-	marshal:   appendEnumPackedSlice,
-	unmarshal: consumeEnumSlice,
-	merge:     mergeEnumSlice,
-}
diff --git a/internal/impl/codec_tables.go b/internal/impl/codec_tables.go
deleted file mode 100644
index e899712..0000000
--- a/internal/impl/codec_tables.go
+++ /dev/null
@@ -1,557 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"fmt"
-	"reflect"
-
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/strs"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-// pointerCoderFuncs is a set of pointer encoding functions.
-type pointerCoderFuncs struct {
-	mi        *MessageInfo
-	size      func(p pointer, f *coderFieldInfo, opts marshalOptions) int
-	marshal   func(b []byte, p pointer, f *coderFieldInfo, opts marshalOptions) ([]byte, error)
-	unmarshal func(b []byte, p pointer, wtyp protowire.Type, f *coderFieldInfo, opts unmarshalOptions) (unmarshalOutput, error)
-	isInit    func(p pointer, f *coderFieldInfo) error
-	merge     func(dst, src pointer, f *coderFieldInfo, opts mergeOptions)
-}
-
-// valueCoderFuncs is a set of protoreflect.Value encoding functions.
-type valueCoderFuncs struct {
-	size      func(v pref.Value, tagsize int, opts marshalOptions) int
-	marshal   func(b []byte, v pref.Value, wiretag uint64, opts marshalOptions) ([]byte, error)
-	unmarshal func(b []byte, v pref.Value, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (pref.Value, unmarshalOutput, error)
-	isInit    func(v pref.Value) error
-	merge     func(dst, src pref.Value, opts mergeOptions) pref.Value
-}
-
-// fieldCoder returns pointer functions for a field, used for operating on
-// struct fields.
-func fieldCoder(fd pref.FieldDescriptor, ft reflect.Type) (*MessageInfo, pointerCoderFuncs) {
-	switch {
-	case fd.IsMap():
-		return encoderFuncsForMap(fd, ft)
-	case fd.Cardinality() == pref.Repeated && !fd.IsPacked():
-		// Repeated fields (not packed).
-		if ft.Kind() != reflect.Slice {
-			break
-		}
-		ft := ft.Elem()
-		switch fd.Kind() {
-		case pref.BoolKind:
-			if ft.Kind() == reflect.Bool {
-				return nil, coderBoolSlice
-			}
-		case pref.EnumKind:
-			if ft.Kind() == reflect.Int32 {
-				return nil, coderEnumSlice
-			}
-		case pref.Int32Kind:
-			if ft.Kind() == reflect.Int32 {
-				return nil, coderInt32Slice
-			}
-		case pref.Sint32Kind:
-			if ft.Kind() == reflect.Int32 {
-				return nil, coderSint32Slice
-			}
-		case pref.Uint32Kind:
-			if ft.Kind() == reflect.Uint32 {
-				return nil, coderUint32Slice
-			}
-		case pref.Int64Kind:
-			if ft.Kind() == reflect.Int64 {
-				return nil, coderInt64Slice
-			}
-		case pref.Sint64Kind:
-			if ft.Kind() == reflect.Int64 {
-				return nil, coderSint64Slice
-			}
-		case pref.Uint64Kind:
-			if ft.Kind() == reflect.Uint64 {
-				return nil, coderUint64Slice
-			}
-		case pref.Sfixed32Kind:
-			if ft.Kind() == reflect.Int32 {
-				return nil, coderSfixed32Slice
-			}
-		case pref.Fixed32Kind:
-			if ft.Kind() == reflect.Uint32 {
-				return nil, coderFixed32Slice
-			}
-		case pref.FloatKind:
-			if ft.Kind() == reflect.Float32 {
-				return nil, coderFloatSlice
-			}
-		case pref.Sfixed64Kind:
-			if ft.Kind() == reflect.Int64 {
-				return nil, coderSfixed64Slice
-			}
-		case pref.Fixed64Kind:
-			if ft.Kind() == reflect.Uint64 {
-				return nil, coderFixed64Slice
-			}
-		case pref.DoubleKind:
-			if ft.Kind() == reflect.Float64 {
-				return nil, coderDoubleSlice
-			}
-		case pref.StringKind:
-			if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) {
-				return nil, coderStringSliceValidateUTF8
-			}
-			if ft.Kind() == reflect.String {
-				return nil, coderStringSlice
-			}
-			if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) {
-				return nil, coderBytesSliceValidateUTF8
-			}
-			if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {
-				return nil, coderBytesSlice
-			}
-		case pref.BytesKind:
-			if ft.Kind() == reflect.String {
-				return nil, coderStringSlice
-			}
-			if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {
-				return nil, coderBytesSlice
-			}
-		case pref.MessageKind:
-			return getMessageInfo(ft), makeMessageSliceFieldCoder(fd, ft)
-		case pref.GroupKind:
-			return getMessageInfo(ft), makeGroupSliceFieldCoder(fd, ft)
-		}
-	case fd.Cardinality() == pref.Repeated && fd.IsPacked():
-		// Packed repeated fields.
-		//
-		// Only repeated fields of primitive numeric types
-		// (Varint, Fixed32, or Fixed64 wire type) can be packed.
-		if ft.Kind() != reflect.Slice {
-			break
-		}
-		ft := ft.Elem()
-		switch fd.Kind() {
-		case pref.BoolKind:
-			if ft.Kind() == reflect.Bool {
-				return nil, coderBoolPackedSlice
-			}
-		case pref.EnumKind:
-			if ft.Kind() == reflect.Int32 {
-				return nil, coderEnumPackedSlice
-			}
-		case pref.Int32Kind:
-			if ft.Kind() == reflect.Int32 {
-				return nil, coderInt32PackedSlice
-			}
-		case pref.Sint32Kind:
-			if ft.Kind() == reflect.Int32 {
-				return nil, coderSint32PackedSlice
-			}
-		case pref.Uint32Kind:
-			if ft.Kind() == reflect.Uint32 {
-				return nil, coderUint32PackedSlice
-			}
-		case pref.Int64Kind:
-			if ft.Kind() == reflect.Int64 {
-				return nil, coderInt64PackedSlice
-			}
-		case pref.Sint64Kind:
-			if ft.Kind() == reflect.Int64 {
-				return nil, coderSint64PackedSlice
-			}
-		case pref.Uint64Kind:
-			if ft.Kind() == reflect.Uint64 {
-				return nil, coderUint64PackedSlice
-			}
-		case pref.Sfixed32Kind:
-			if ft.Kind() == reflect.Int32 {
-				return nil, coderSfixed32PackedSlice
-			}
-		case pref.Fixed32Kind:
-			if ft.Kind() == reflect.Uint32 {
-				return nil, coderFixed32PackedSlice
-			}
-		case pref.FloatKind:
-			if ft.Kind() == reflect.Float32 {
-				return nil, coderFloatPackedSlice
-			}
-		case pref.Sfixed64Kind:
-			if ft.Kind() == reflect.Int64 {
-				return nil, coderSfixed64PackedSlice
-			}
-		case pref.Fixed64Kind:
-			if ft.Kind() == reflect.Uint64 {
-				return nil, coderFixed64PackedSlice
-			}
-		case pref.DoubleKind:
-			if ft.Kind() == reflect.Float64 {
-				return nil, coderDoublePackedSlice
-			}
-		}
-	case fd.Kind() == pref.MessageKind:
-		return getMessageInfo(ft), makeMessageFieldCoder(fd, ft)
-	case fd.Kind() == pref.GroupKind:
-		return getMessageInfo(ft), makeGroupFieldCoder(fd, ft)
-	case fd.Syntax() == pref.Proto3 && fd.ContainingOneof() == nil:
-		// Populated oneof fields always encode even if set to the zero value,
-		// which normally are not encoded in proto3.
-		switch fd.Kind() {
-		case pref.BoolKind:
-			if ft.Kind() == reflect.Bool {
-				return nil, coderBoolNoZero
-			}
-		case pref.EnumKind:
-			if ft.Kind() == reflect.Int32 {
-				return nil, coderEnumNoZero
-			}
-		case pref.Int32Kind:
-			if ft.Kind() == reflect.Int32 {
-				return nil, coderInt32NoZero
-			}
-		case pref.Sint32Kind:
-			if ft.Kind() == reflect.Int32 {
-				return nil, coderSint32NoZero
-			}
-		case pref.Uint32Kind:
-			if ft.Kind() == reflect.Uint32 {
-				return nil, coderUint32NoZero
-			}
-		case pref.Int64Kind:
-			if ft.Kind() == reflect.Int64 {
-				return nil, coderInt64NoZero
-			}
-		case pref.Sint64Kind:
-			if ft.Kind() == reflect.Int64 {
-				return nil, coderSint64NoZero
-			}
-		case pref.Uint64Kind:
-			if ft.Kind() == reflect.Uint64 {
-				return nil, coderUint64NoZero
-			}
-		case pref.Sfixed32Kind:
-			if ft.Kind() == reflect.Int32 {
-				return nil, coderSfixed32NoZero
-			}
-		case pref.Fixed32Kind:
-			if ft.Kind() == reflect.Uint32 {
-				return nil, coderFixed32NoZero
-			}
-		case pref.FloatKind:
-			if ft.Kind() == reflect.Float32 {
-				return nil, coderFloatNoZero
-			}
-		case pref.Sfixed64Kind:
-			if ft.Kind() == reflect.Int64 {
-				return nil, coderSfixed64NoZero
-			}
-		case pref.Fixed64Kind:
-			if ft.Kind() == reflect.Uint64 {
-				return nil, coderFixed64NoZero
-			}
-		case pref.DoubleKind:
-			if ft.Kind() == reflect.Float64 {
-				return nil, coderDoubleNoZero
-			}
-		case pref.StringKind:
-			if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) {
-				return nil, coderStringNoZeroValidateUTF8
-			}
-			if ft.Kind() == reflect.String {
-				return nil, coderStringNoZero
-			}
-			if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) {
-				return nil, coderBytesNoZeroValidateUTF8
-			}
-			if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {
-				return nil, coderBytesNoZero
-			}
-		case pref.BytesKind:
-			if ft.Kind() == reflect.String {
-				return nil, coderStringNoZero
-			}
-			if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {
-				return nil, coderBytesNoZero
-			}
-		}
-	case ft.Kind() == reflect.Ptr:
-		ft := ft.Elem()
-		switch fd.Kind() {
-		case pref.BoolKind:
-			if ft.Kind() == reflect.Bool {
-				return nil, coderBoolPtr
-			}
-		case pref.EnumKind:
-			if ft.Kind() == reflect.Int32 {
-				return nil, coderEnumPtr
-			}
-		case pref.Int32Kind:
-			if ft.Kind() == reflect.Int32 {
-				return nil, coderInt32Ptr
-			}
-		case pref.Sint32Kind:
-			if ft.Kind() == reflect.Int32 {
-				return nil, coderSint32Ptr
-			}
-		case pref.Uint32Kind:
-			if ft.Kind() == reflect.Uint32 {
-				return nil, coderUint32Ptr
-			}
-		case pref.Int64Kind:
-			if ft.Kind() == reflect.Int64 {
-				return nil, coderInt64Ptr
-			}
-		case pref.Sint64Kind:
-			if ft.Kind() == reflect.Int64 {
-				return nil, coderSint64Ptr
-			}
-		case pref.Uint64Kind:
-			if ft.Kind() == reflect.Uint64 {
-				return nil, coderUint64Ptr
-			}
-		case pref.Sfixed32Kind:
-			if ft.Kind() == reflect.Int32 {
-				return nil, coderSfixed32Ptr
-			}
-		case pref.Fixed32Kind:
-			if ft.Kind() == reflect.Uint32 {
-				return nil, coderFixed32Ptr
-			}
-		case pref.FloatKind:
-			if ft.Kind() == reflect.Float32 {
-				return nil, coderFloatPtr
-			}
-		case pref.Sfixed64Kind:
-			if ft.Kind() == reflect.Int64 {
-				return nil, coderSfixed64Ptr
-			}
-		case pref.Fixed64Kind:
-			if ft.Kind() == reflect.Uint64 {
-				return nil, coderFixed64Ptr
-			}
-		case pref.DoubleKind:
-			if ft.Kind() == reflect.Float64 {
-				return nil, coderDoublePtr
-			}
-		case pref.StringKind:
-			if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) {
-				return nil, coderStringPtrValidateUTF8
-			}
-			if ft.Kind() == reflect.String {
-				return nil, coderStringPtr
-			}
-		case pref.BytesKind:
-			if ft.Kind() == reflect.String {
-				return nil, coderStringPtr
-			}
-		}
-	default:
-		switch fd.Kind() {
-		case pref.BoolKind:
-			if ft.Kind() == reflect.Bool {
-				return nil, coderBool
-			}
-		case pref.EnumKind:
-			if ft.Kind() == reflect.Int32 {
-				return nil, coderEnum
-			}
-		case pref.Int32Kind:
-			if ft.Kind() == reflect.Int32 {
-				return nil, coderInt32
-			}
-		case pref.Sint32Kind:
-			if ft.Kind() == reflect.Int32 {
-				return nil, coderSint32
-			}
-		case pref.Uint32Kind:
-			if ft.Kind() == reflect.Uint32 {
-				return nil, coderUint32
-			}
-		case pref.Int64Kind:
-			if ft.Kind() == reflect.Int64 {
-				return nil, coderInt64
-			}
-		case pref.Sint64Kind:
-			if ft.Kind() == reflect.Int64 {
-				return nil, coderSint64
-			}
-		case pref.Uint64Kind:
-			if ft.Kind() == reflect.Uint64 {
-				return nil, coderUint64
-			}
-		case pref.Sfixed32Kind:
-			if ft.Kind() == reflect.Int32 {
-				return nil, coderSfixed32
-			}
-		case pref.Fixed32Kind:
-			if ft.Kind() == reflect.Uint32 {
-				return nil, coderFixed32
-			}
-		case pref.FloatKind:
-			if ft.Kind() == reflect.Float32 {
-				return nil, coderFloat
-			}
-		case pref.Sfixed64Kind:
-			if ft.Kind() == reflect.Int64 {
-				return nil, coderSfixed64
-			}
-		case pref.Fixed64Kind:
-			if ft.Kind() == reflect.Uint64 {
-				return nil, coderFixed64
-			}
-		case pref.DoubleKind:
-			if ft.Kind() == reflect.Float64 {
-				return nil, coderDouble
-			}
-		case pref.StringKind:
-			if ft.Kind() == reflect.String && strs.EnforceUTF8(fd) {
-				return nil, coderStringValidateUTF8
-			}
-			if ft.Kind() == reflect.String {
-				return nil, coderString
-			}
-			if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 && strs.EnforceUTF8(fd) {
-				return nil, coderBytesValidateUTF8
-			}
-			if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {
-				return nil, coderBytes
-			}
-		case pref.BytesKind:
-			if ft.Kind() == reflect.String {
-				return nil, coderString
-			}
-			if ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 {
-				return nil, coderBytes
-			}
-		}
-	}
-	panic(fmt.Sprintf("invalid type: no encoder for %v %v %v/%v", fd.FullName(), fd.Cardinality(), fd.Kind(), ft))
-}
-
-// encoderFuncsForValue returns value functions for a field, used for
-// extension values and map encoding.
-func encoderFuncsForValue(fd pref.FieldDescriptor) valueCoderFuncs {
-	switch {
-	case fd.Cardinality() == pref.Repeated && !fd.IsPacked():
-		switch fd.Kind() {
-		case pref.BoolKind:
-			return coderBoolSliceValue
-		case pref.EnumKind:
-			return coderEnumSliceValue
-		case pref.Int32Kind:
-			return coderInt32SliceValue
-		case pref.Sint32Kind:
-			return coderSint32SliceValue
-		case pref.Uint32Kind:
-			return coderUint32SliceValue
-		case pref.Int64Kind:
-			return coderInt64SliceValue
-		case pref.Sint64Kind:
-			return coderSint64SliceValue
-		case pref.Uint64Kind:
-			return coderUint64SliceValue
-		case pref.Sfixed32Kind:
-			return coderSfixed32SliceValue
-		case pref.Fixed32Kind:
-			return coderFixed32SliceValue
-		case pref.FloatKind:
-			return coderFloatSliceValue
-		case pref.Sfixed64Kind:
-			return coderSfixed64SliceValue
-		case pref.Fixed64Kind:
-			return coderFixed64SliceValue
-		case pref.DoubleKind:
-			return coderDoubleSliceValue
-		case pref.StringKind:
-			// We don't have a UTF-8 validating coder for repeated string fields.
-			// Value coders are used for extensions and maps.
-			// Extensions are never proto3, and maps never contain lists.
-			return coderStringSliceValue
-		case pref.BytesKind:
-			return coderBytesSliceValue
-		case pref.MessageKind:
-			return coderMessageSliceValue
-		case pref.GroupKind:
-			return coderGroupSliceValue
-		}
-	case fd.Cardinality() == pref.Repeated && fd.IsPacked():
-		switch fd.Kind() {
-		case pref.BoolKind:
-			return coderBoolPackedSliceValue
-		case pref.EnumKind:
-			return coderEnumPackedSliceValue
-		case pref.Int32Kind:
-			return coderInt32PackedSliceValue
-		case pref.Sint32Kind:
-			return coderSint32PackedSliceValue
-		case pref.Uint32Kind:
-			return coderUint32PackedSliceValue
-		case pref.Int64Kind:
-			return coderInt64PackedSliceValue
-		case pref.Sint64Kind:
-			return coderSint64PackedSliceValue
-		case pref.Uint64Kind:
-			return coderUint64PackedSliceValue
-		case pref.Sfixed32Kind:
-			return coderSfixed32PackedSliceValue
-		case pref.Fixed32Kind:
-			return coderFixed32PackedSliceValue
-		case pref.FloatKind:
-			return coderFloatPackedSliceValue
-		case pref.Sfixed64Kind:
-			return coderSfixed64PackedSliceValue
-		case pref.Fixed64Kind:
-			return coderFixed64PackedSliceValue
-		case pref.DoubleKind:
-			return coderDoublePackedSliceValue
-		}
-	default:
-		switch fd.Kind() {
-		default:
-		case pref.BoolKind:
-			return coderBoolValue
-		case pref.EnumKind:
-			return coderEnumValue
-		case pref.Int32Kind:
-			return coderInt32Value
-		case pref.Sint32Kind:
-			return coderSint32Value
-		case pref.Uint32Kind:
-			return coderUint32Value
-		case pref.Int64Kind:
-			return coderInt64Value
-		case pref.Sint64Kind:
-			return coderSint64Value
-		case pref.Uint64Kind:
-			return coderUint64Value
-		case pref.Sfixed32Kind:
-			return coderSfixed32Value
-		case pref.Fixed32Kind:
-			return coderFixed32Value
-		case pref.FloatKind:
-			return coderFloatValue
-		case pref.Sfixed64Kind:
-			return coderSfixed64Value
-		case pref.Fixed64Kind:
-			return coderFixed64Value
-		case pref.DoubleKind:
-			return coderDoubleValue
-		case pref.StringKind:
-			if strs.EnforceUTF8(fd) {
-				return coderStringValueValidateUTF8
-			}
-			return coderStringValue
-		case pref.BytesKind:
-			return coderBytesValue
-		case pref.MessageKind:
-			return coderMessageValue
-		case pref.GroupKind:
-			return coderGroupValue
-		}
-	}
-	panic(fmt.Sprintf("invalid field: no encoder for %v %v %v", fd.FullName(), fd.Cardinality(), fd.Kind()))
-}
diff --git a/internal/impl/codec_unsafe.go b/internal/impl/codec_unsafe.go
deleted file mode 100644
index 757642e..0000000
--- a/internal/impl/codec_unsafe.go
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:build !purego && !appengine
-// +build !purego,!appengine
-
-package impl
-
-// When using unsafe pointers, we can just treat enum values as int32s.
-
-var (
-	coderEnumNoZero      = coderInt32NoZero
-	coderEnum            = coderInt32
-	coderEnumPtr         = coderInt32Ptr
-	coderEnumSlice       = coderInt32Slice
-	coderEnumPackedSlice = coderInt32PackedSlice
-)
diff --git a/internal/impl/convert.go b/internal/impl/convert.go
deleted file mode 100644
index acd61bb..0000000
--- a/internal/impl/convert.go
+++ /dev/null
@@ -1,496 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"fmt"
-	"reflect"
-
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-// unwrapper unwraps the value to the underlying value.
-// This is implemented by List and Map.
-type unwrapper interface {
-	protoUnwrap() interface{}
-}
-
-// A Converter coverts to/from Go reflect.Value types and protobuf protoreflect.Value types.
-type Converter interface {
-	// PBValueOf converts a reflect.Value to a protoreflect.Value.
-	PBValueOf(reflect.Value) pref.Value
-
-	// GoValueOf converts a protoreflect.Value to a reflect.Value.
-	GoValueOf(pref.Value) reflect.Value
-
-	// IsValidPB returns whether a protoreflect.Value is compatible with this type.
-	IsValidPB(pref.Value) bool
-
-	// IsValidGo returns whether a reflect.Value is compatible with this type.
-	IsValidGo(reflect.Value) bool
-
-	// New returns a new field value.
-	// For scalars, it returns the default value of the field.
-	// For composite types, it returns a new mutable value.
-	New() pref.Value
-
-	// Zero returns a new field value.
-	// For scalars, it returns the default value of the field.
-	// For composite types, it returns an immutable, empty value.
-	Zero() pref.Value
-}
-
-// NewConverter matches a Go type with a protobuf field and returns a Converter
-// that converts between the two. Enums must be a named int32 kind that
-// implements protoreflect.Enum, and messages must be pointer to a named
-// struct type that implements protoreflect.ProtoMessage.
-//
-// This matcher deliberately supports a wider range of Go types than what
-// protoc-gen-go historically generated to be able to automatically wrap some
-// v1 messages generated by other forks of protoc-gen-go.
-func NewConverter(t reflect.Type, fd pref.FieldDescriptor) Converter {
-	switch {
-	case fd.IsList():
-		return newListConverter(t, fd)
-	case fd.IsMap():
-		return newMapConverter(t, fd)
-	default:
-		return newSingularConverter(t, fd)
-	}
-	panic(fmt.Sprintf("invalid Go type %v for field %v", t, fd.FullName()))
-}
-
-var (
-	boolType    = reflect.TypeOf(bool(false))
-	int32Type   = reflect.TypeOf(int32(0))
-	int64Type   = reflect.TypeOf(int64(0))
-	uint32Type  = reflect.TypeOf(uint32(0))
-	uint64Type  = reflect.TypeOf(uint64(0))
-	float32Type = reflect.TypeOf(float32(0))
-	float64Type = reflect.TypeOf(float64(0))
-	stringType  = reflect.TypeOf(string(""))
-	bytesType   = reflect.TypeOf([]byte(nil))
-	byteType    = reflect.TypeOf(byte(0))
-)
-
-var (
-	boolZero    = pref.ValueOfBool(false)
-	int32Zero   = pref.ValueOfInt32(0)
-	int64Zero   = pref.ValueOfInt64(0)
-	uint32Zero  = pref.ValueOfUint32(0)
-	uint64Zero  = pref.ValueOfUint64(0)
-	float32Zero = pref.ValueOfFloat32(0)
-	float64Zero = pref.ValueOfFloat64(0)
-	stringZero  = pref.ValueOfString("")
-	bytesZero   = pref.ValueOfBytes(nil)
-)
-
-func newSingularConverter(t reflect.Type, fd pref.FieldDescriptor) Converter {
-	defVal := func(fd pref.FieldDescriptor, zero pref.Value) pref.Value {
-		if fd.Cardinality() == pref.Repeated {
-			// Default isn't defined for repeated fields.
-			return zero
-		}
-		return fd.Default()
-	}
-	switch fd.Kind() {
-	case pref.BoolKind:
-		if t.Kind() == reflect.Bool {
-			return &boolConverter{t, defVal(fd, boolZero)}
-		}
-	case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
-		if t.Kind() == reflect.Int32 {
-			return &int32Converter{t, defVal(fd, int32Zero)}
-		}
-	case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
-		if t.Kind() == reflect.Int64 {
-			return &int64Converter{t, defVal(fd, int64Zero)}
-		}
-	case pref.Uint32Kind, pref.Fixed32Kind:
-		if t.Kind() == reflect.Uint32 {
-			return &uint32Converter{t, defVal(fd, uint32Zero)}
-		}
-	case pref.Uint64Kind, pref.Fixed64Kind:
-		if t.Kind() == reflect.Uint64 {
-			return &uint64Converter{t, defVal(fd, uint64Zero)}
-		}
-	case pref.FloatKind:
-		if t.Kind() == reflect.Float32 {
-			return &float32Converter{t, defVal(fd, float32Zero)}
-		}
-	case pref.DoubleKind:
-		if t.Kind() == reflect.Float64 {
-			return &float64Converter{t, defVal(fd, float64Zero)}
-		}
-	case pref.StringKind:
-		if t.Kind() == reflect.String || (t.Kind() == reflect.Slice && t.Elem() == byteType) {
-			return &stringConverter{t, defVal(fd, stringZero)}
-		}
-	case pref.BytesKind:
-		if t.Kind() == reflect.String || (t.Kind() == reflect.Slice && t.Elem() == byteType) {
-			return &bytesConverter{t, defVal(fd, bytesZero)}
-		}
-	case pref.EnumKind:
-		// Handle enums, which must be a named int32 type.
-		if t.Kind() == reflect.Int32 {
-			return newEnumConverter(t, fd)
-		}
-	case pref.MessageKind, pref.GroupKind:
-		return newMessageConverter(t)
-	}
-	panic(fmt.Sprintf("invalid Go type %v for field %v", t, fd.FullName()))
-}
-
-type boolConverter struct {
-	goType reflect.Type
-	def    pref.Value
-}
-
-func (c *boolConverter) PBValueOf(v reflect.Value) pref.Value {
-	if v.Type() != c.goType {
-		panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType))
-	}
-	return pref.ValueOfBool(v.Bool())
-}
-func (c *boolConverter) GoValueOf(v pref.Value) reflect.Value {
-	return reflect.ValueOf(v.Bool()).Convert(c.goType)
-}
-func (c *boolConverter) IsValidPB(v pref.Value) bool {
-	_, ok := v.Interface().(bool)
-	return ok
-}
-func (c *boolConverter) IsValidGo(v reflect.Value) bool {
-	return v.IsValid() && v.Type() == c.goType
-}
-func (c *boolConverter) New() pref.Value  { return c.def }
-func (c *boolConverter) Zero() pref.Value { return c.def }
-
-type int32Converter struct {
-	goType reflect.Type
-	def    pref.Value
-}
-
-func (c *int32Converter) PBValueOf(v reflect.Value) pref.Value {
-	if v.Type() != c.goType {
-		panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType))
-	}
-	return pref.ValueOfInt32(int32(v.Int()))
-}
-func (c *int32Converter) GoValueOf(v pref.Value) reflect.Value {
-	return reflect.ValueOf(int32(v.Int())).Convert(c.goType)
-}
-func (c *int32Converter) IsValidPB(v pref.Value) bool {
-	_, ok := v.Interface().(int32)
-	return ok
-}
-func (c *int32Converter) IsValidGo(v reflect.Value) bool {
-	return v.IsValid() && v.Type() == c.goType
-}
-func (c *int32Converter) New() pref.Value  { return c.def }
-func (c *int32Converter) Zero() pref.Value { return c.def }
-
-type int64Converter struct {
-	goType reflect.Type
-	def    pref.Value
-}
-
-func (c *int64Converter) PBValueOf(v reflect.Value) pref.Value {
-	if v.Type() != c.goType {
-		panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType))
-	}
-	return pref.ValueOfInt64(int64(v.Int()))
-}
-func (c *int64Converter) GoValueOf(v pref.Value) reflect.Value {
-	return reflect.ValueOf(int64(v.Int())).Convert(c.goType)
-}
-func (c *int64Converter) IsValidPB(v pref.Value) bool {
-	_, ok := v.Interface().(int64)
-	return ok
-}
-func (c *int64Converter) IsValidGo(v reflect.Value) bool {
-	return v.IsValid() && v.Type() == c.goType
-}
-func (c *int64Converter) New() pref.Value  { return c.def }
-func (c *int64Converter) Zero() pref.Value { return c.def }
-
-type uint32Converter struct {
-	goType reflect.Type
-	def    pref.Value
-}
-
-func (c *uint32Converter) PBValueOf(v reflect.Value) pref.Value {
-	if v.Type() != c.goType {
-		panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType))
-	}
-	return pref.ValueOfUint32(uint32(v.Uint()))
-}
-func (c *uint32Converter) GoValueOf(v pref.Value) reflect.Value {
-	return reflect.ValueOf(uint32(v.Uint())).Convert(c.goType)
-}
-func (c *uint32Converter) IsValidPB(v pref.Value) bool {
-	_, ok := v.Interface().(uint32)
-	return ok
-}
-func (c *uint32Converter) IsValidGo(v reflect.Value) bool {
-	return v.IsValid() && v.Type() == c.goType
-}
-func (c *uint32Converter) New() pref.Value  { return c.def }
-func (c *uint32Converter) Zero() pref.Value { return c.def }
-
-type uint64Converter struct {
-	goType reflect.Type
-	def    pref.Value
-}
-
-func (c *uint64Converter) PBValueOf(v reflect.Value) pref.Value {
-	if v.Type() != c.goType {
-		panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType))
-	}
-	return pref.ValueOfUint64(uint64(v.Uint()))
-}
-func (c *uint64Converter) GoValueOf(v pref.Value) reflect.Value {
-	return reflect.ValueOf(uint64(v.Uint())).Convert(c.goType)
-}
-func (c *uint64Converter) IsValidPB(v pref.Value) bool {
-	_, ok := v.Interface().(uint64)
-	return ok
-}
-func (c *uint64Converter) IsValidGo(v reflect.Value) bool {
-	return v.IsValid() && v.Type() == c.goType
-}
-func (c *uint64Converter) New() pref.Value  { return c.def }
-func (c *uint64Converter) Zero() pref.Value { return c.def }
-
-type float32Converter struct {
-	goType reflect.Type
-	def    pref.Value
-}
-
-func (c *float32Converter) PBValueOf(v reflect.Value) pref.Value {
-	if v.Type() != c.goType {
-		panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType))
-	}
-	return pref.ValueOfFloat32(float32(v.Float()))
-}
-func (c *float32Converter) GoValueOf(v pref.Value) reflect.Value {
-	return reflect.ValueOf(float32(v.Float())).Convert(c.goType)
-}
-func (c *float32Converter) IsValidPB(v pref.Value) bool {
-	_, ok := v.Interface().(float32)
-	return ok
-}
-func (c *float32Converter) IsValidGo(v reflect.Value) bool {
-	return v.IsValid() && v.Type() == c.goType
-}
-func (c *float32Converter) New() pref.Value  { return c.def }
-func (c *float32Converter) Zero() pref.Value { return c.def }
-
-type float64Converter struct {
-	goType reflect.Type
-	def    pref.Value
-}
-
-func (c *float64Converter) PBValueOf(v reflect.Value) pref.Value {
-	if v.Type() != c.goType {
-		panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType))
-	}
-	return pref.ValueOfFloat64(float64(v.Float()))
-}
-func (c *float64Converter) GoValueOf(v pref.Value) reflect.Value {
-	return reflect.ValueOf(float64(v.Float())).Convert(c.goType)
-}
-func (c *float64Converter) IsValidPB(v pref.Value) bool {
-	_, ok := v.Interface().(float64)
-	return ok
-}
-func (c *float64Converter) IsValidGo(v reflect.Value) bool {
-	return v.IsValid() && v.Type() == c.goType
-}
-func (c *float64Converter) New() pref.Value  { return c.def }
-func (c *float64Converter) Zero() pref.Value { return c.def }
-
-type stringConverter struct {
-	goType reflect.Type
-	def    pref.Value
-}
-
-func (c *stringConverter) PBValueOf(v reflect.Value) pref.Value {
-	if v.Type() != c.goType {
-		panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType))
-	}
-	return pref.ValueOfString(v.Convert(stringType).String())
-}
-func (c *stringConverter) GoValueOf(v pref.Value) reflect.Value {
-	// pref.Value.String never panics, so we go through an interface
-	// conversion here to check the type.
-	s := v.Interface().(string)
-	if c.goType.Kind() == reflect.Slice && s == "" {
-		return reflect.Zero(c.goType) // ensure empty string is []byte(nil)
-	}
-	return reflect.ValueOf(s).Convert(c.goType)
-}
-func (c *stringConverter) IsValidPB(v pref.Value) bool {
-	_, ok := v.Interface().(string)
-	return ok
-}
-func (c *stringConverter) IsValidGo(v reflect.Value) bool {
-	return v.IsValid() && v.Type() == c.goType
-}
-func (c *stringConverter) New() pref.Value  { return c.def }
-func (c *stringConverter) Zero() pref.Value { return c.def }
-
-type bytesConverter struct {
-	goType reflect.Type
-	def    pref.Value
-}
-
-func (c *bytesConverter) PBValueOf(v reflect.Value) pref.Value {
-	if v.Type() != c.goType {
-		panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType))
-	}
-	if c.goType.Kind() == reflect.String && v.Len() == 0 {
-		return pref.ValueOfBytes(nil) // ensure empty string is []byte(nil)
-	}
-	return pref.ValueOfBytes(v.Convert(bytesType).Bytes())
-}
-func (c *bytesConverter) GoValueOf(v pref.Value) reflect.Value {
-	return reflect.ValueOf(v.Bytes()).Convert(c.goType)
-}
-func (c *bytesConverter) IsValidPB(v pref.Value) bool {
-	_, ok := v.Interface().([]byte)
-	return ok
-}
-func (c *bytesConverter) IsValidGo(v reflect.Value) bool {
-	return v.IsValid() && v.Type() == c.goType
-}
-func (c *bytesConverter) New() pref.Value  { return c.def }
-func (c *bytesConverter) Zero() pref.Value { return c.def }
-
-type enumConverter struct {
-	goType reflect.Type
-	def    pref.Value
-}
-
-func newEnumConverter(goType reflect.Type, fd pref.FieldDescriptor) Converter {
-	var def pref.Value
-	if fd.Cardinality() == pref.Repeated {
-		def = pref.ValueOfEnum(fd.Enum().Values().Get(0).Number())
-	} else {
-		def = fd.Default()
-	}
-	return &enumConverter{goType, def}
-}
-
-func (c *enumConverter) PBValueOf(v reflect.Value) pref.Value {
-	if v.Type() != c.goType {
-		panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType))
-	}
-	return pref.ValueOfEnum(pref.EnumNumber(v.Int()))
-}
-
-func (c *enumConverter) GoValueOf(v pref.Value) reflect.Value {
-	return reflect.ValueOf(v.Enum()).Convert(c.goType)
-}
-
-func (c *enumConverter) IsValidPB(v pref.Value) bool {
-	_, ok := v.Interface().(pref.EnumNumber)
-	return ok
-}
-
-func (c *enumConverter) IsValidGo(v reflect.Value) bool {
-	return v.IsValid() && v.Type() == c.goType
-}
-
-func (c *enumConverter) New() pref.Value {
-	return c.def
-}
-
-func (c *enumConverter) Zero() pref.Value {
-	return c.def
-}
-
-type messageConverter struct {
-	goType reflect.Type
-}
-
-func newMessageConverter(goType reflect.Type) Converter {
-	return &messageConverter{goType}
-}
-
-func (c *messageConverter) PBValueOf(v reflect.Value) pref.Value {
-	if v.Type() != c.goType {
-		panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType))
-	}
-	if c.isNonPointer() {
-		if v.CanAddr() {
-			v = v.Addr() // T => *T
-		} else {
-			v = reflect.Zero(reflect.PtrTo(v.Type()))
-		}
-	}
-	if m, ok := v.Interface().(pref.ProtoMessage); ok {
-		return pref.ValueOfMessage(m.ProtoReflect())
-	}
-	return pref.ValueOfMessage(legacyWrapMessage(v))
-}
-
-func (c *messageConverter) GoValueOf(v pref.Value) reflect.Value {
-	m := v.Message()
-	var rv reflect.Value
-	if u, ok := m.(unwrapper); ok {
-		rv = reflect.ValueOf(u.protoUnwrap())
-	} else {
-		rv = reflect.ValueOf(m.Interface())
-	}
-	if c.isNonPointer() {
-		if rv.Type() != reflect.PtrTo(c.goType) {
-			panic(fmt.Sprintf("invalid type: got %v, want %v", rv.Type(), reflect.PtrTo(c.goType)))
-		}
-		if !rv.IsNil() {
-			rv = rv.Elem() // *T => T
-		} else {
-			rv = reflect.Zero(rv.Type().Elem())
-		}
-	}
-	if rv.Type() != c.goType {
-		panic(fmt.Sprintf("invalid type: got %v, want %v", rv.Type(), c.goType))
-	}
-	return rv
-}
-
-func (c *messageConverter) IsValidPB(v pref.Value) bool {
-	m := v.Message()
-	var rv reflect.Value
-	if u, ok := m.(unwrapper); ok {
-		rv = reflect.ValueOf(u.protoUnwrap())
-	} else {
-		rv = reflect.ValueOf(m.Interface())
-	}
-	if c.isNonPointer() {
-		return rv.Type() == reflect.PtrTo(c.goType)
-	}
-	return rv.Type() == c.goType
-}
-
-func (c *messageConverter) IsValidGo(v reflect.Value) bool {
-	return v.IsValid() && v.Type() == c.goType
-}
-
-func (c *messageConverter) New() pref.Value {
-	if c.isNonPointer() {
-		return c.PBValueOf(reflect.New(c.goType).Elem())
-	}
-	return c.PBValueOf(reflect.New(c.goType.Elem()))
-}
-
-func (c *messageConverter) Zero() pref.Value {
-	return c.PBValueOf(reflect.Zero(c.goType))
-}
-
-// isNonPointer reports whether the type is a non-pointer type.
-// This never occurs for generated message types.
-func (c *messageConverter) isNonPointer() bool {
-	return c.goType.Kind() != reflect.Ptr
-}
diff --git a/internal/impl/convert_list.go b/internal/impl/convert_list.go
deleted file mode 100644
index 6fccab5..0000000
--- a/internal/impl/convert_list.go
+++ /dev/null
@@ -1,141 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"fmt"
-	"reflect"
-
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-func newListConverter(t reflect.Type, fd pref.FieldDescriptor) Converter {
-	switch {
-	case t.Kind() == reflect.Ptr && t.Elem().Kind() == reflect.Slice:
-		return &listPtrConverter{t, newSingularConverter(t.Elem().Elem(), fd)}
-	case t.Kind() == reflect.Slice:
-		return &listConverter{t, newSingularConverter(t.Elem(), fd)}
-	}
-	panic(fmt.Sprintf("invalid Go type %v for field %v", t, fd.FullName()))
-}
-
-type listConverter struct {
-	goType reflect.Type // []T
-	c      Converter
-}
-
-func (c *listConverter) PBValueOf(v reflect.Value) pref.Value {
-	if v.Type() != c.goType {
-		panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType))
-	}
-	pv := reflect.New(c.goType)
-	pv.Elem().Set(v)
-	return pref.ValueOfList(&listReflect{pv, c.c})
-}
-
-func (c *listConverter) GoValueOf(v pref.Value) reflect.Value {
-	rv := v.List().(*listReflect).v
-	if rv.IsNil() {
-		return reflect.Zero(c.goType)
-	}
-	return rv.Elem()
-}
-
-func (c *listConverter) IsValidPB(v pref.Value) bool {
-	list, ok := v.Interface().(*listReflect)
-	if !ok {
-		return false
-	}
-	return list.v.Type().Elem() == c.goType
-}
-
-func (c *listConverter) IsValidGo(v reflect.Value) bool {
-	return v.IsValid() && v.Type() == c.goType
-}
-
-func (c *listConverter) New() pref.Value {
-	return pref.ValueOfList(&listReflect{reflect.New(c.goType), c.c})
-}
-
-func (c *listConverter) Zero() pref.Value {
-	return pref.ValueOfList(&listReflect{reflect.Zero(reflect.PtrTo(c.goType)), c.c})
-}
-
-type listPtrConverter struct {
-	goType reflect.Type // *[]T
-	c      Converter
-}
-
-func (c *listPtrConverter) PBValueOf(v reflect.Value) pref.Value {
-	if v.Type() != c.goType {
-		panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType))
-	}
-	return pref.ValueOfList(&listReflect{v, c.c})
-}
-
-func (c *listPtrConverter) GoValueOf(v pref.Value) reflect.Value {
-	return v.List().(*listReflect).v
-}
-
-func (c *listPtrConverter) IsValidPB(v pref.Value) bool {
-	list, ok := v.Interface().(*listReflect)
-	if !ok {
-		return false
-	}
-	return list.v.Type() == c.goType
-}
-
-func (c *listPtrConverter) IsValidGo(v reflect.Value) bool {
-	return v.IsValid() && v.Type() == c.goType
-}
-
-func (c *listPtrConverter) New() pref.Value {
-	return c.PBValueOf(reflect.New(c.goType.Elem()))
-}
-
-func (c *listPtrConverter) Zero() pref.Value {
-	return c.PBValueOf(reflect.Zero(c.goType))
-}
-
-type listReflect struct {
-	v    reflect.Value // *[]T
-	conv Converter
-}
-
-func (ls *listReflect) Len() int {
-	if ls.v.IsNil() {
-		return 0
-	}
-	return ls.v.Elem().Len()
-}
-func (ls *listReflect) Get(i int) pref.Value {
-	return ls.conv.PBValueOf(ls.v.Elem().Index(i))
-}
-func (ls *listReflect) Set(i int, v pref.Value) {
-	ls.v.Elem().Index(i).Set(ls.conv.GoValueOf(v))
-}
-func (ls *listReflect) Append(v pref.Value) {
-	ls.v.Elem().Set(reflect.Append(ls.v.Elem(), ls.conv.GoValueOf(v)))
-}
-func (ls *listReflect) AppendMutable() pref.Value {
-	if _, ok := ls.conv.(*messageConverter); !ok {
-		panic("invalid AppendMutable on list with non-message type")
-	}
-	v := ls.NewElement()
-	ls.Append(v)
-	return v
-}
-func (ls *listReflect) Truncate(i int) {
-	ls.v.Elem().Set(ls.v.Elem().Slice(0, i))
-}
-func (ls *listReflect) NewElement() pref.Value {
-	return ls.conv.New()
-}
-func (ls *listReflect) IsValid() bool {
-	return !ls.v.IsNil()
-}
-func (ls *listReflect) protoUnwrap() interface{} {
-	return ls.v.Interface()
-}
diff --git a/internal/impl/convert_map.go b/internal/impl/convert_map.go
deleted file mode 100644
index de06b25..0000000
--- a/internal/impl/convert_map.go
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"fmt"
-	"reflect"
-
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-type mapConverter struct {
-	goType           reflect.Type // map[K]V
-	keyConv, valConv Converter
-}
-
-func newMapConverter(t reflect.Type, fd pref.FieldDescriptor) *mapConverter {
-	if t.Kind() != reflect.Map {
-		panic(fmt.Sprintf("invalid Go type %v for field %v", t, fd.FullName()))
-	}
-	return &mapConverter{
-		goType:  t,
-		keyConv: newSingularConverter(t.Key(), fd.MapKey()),
-		valConv: newSingularConverter(t.Elem(), fd.MapValue()),
-	}
-}
-
-func (c *mapConverter) PBValueOf(v reflect.Value) pref.Value {
-	if v.Type() != c.goType {
-		panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType))
-	}
-	return pref.ValueOfMap(&mapReflect{v, c.keyConv, c.valConv})
-}
-
-func (c *mapConverter) GoValueOf(v pref.Value) reflect.Value {
-	return v.Map().(*mapReflect).v
-}
-
-func (c *mapConverter) IsValidPB(v pref.Value) bool {
-	mapv, ok := v.Interface().(*mapReflect)
-	if !ok {
-		return false
-	}
-	return mapv.v.Type() == c.goType
-}
-
-func (c *mapConverter) IsValidGo(v reflect.Value) bool {
-	return v.IsValid() && v.Type() == c.goType
-}
-
-func (c *mapConverter) New() pref.Value {
-	return c.PBValueOf(reflect.MakeMap(c.goType))
-}
-
-func (c *mapConverter) Zero() pref.Value {
-	return c.PBValueOf(reflect.Zero(c.goType))
-}
-
-type mapReflect struct {
-	v       reflect.Value // map[K]V
-	keyConv Converter
-	valConv Converter
-}
-
-func (ms *mapReflect) Len() int {
-	return ms.v.Len()
-}
-func (ms *mapReflect) Has(k pref.MapKey) bool {
-	rk := ms.keyConv.GoValueOf(k.Value())
-	rv := ms.v.MapIndex(rk)
-	return rv.IsValid()
-}
-func (ms *mapReflect) Get(k pref.MapKey) pref.Value {
-	rk := ms.keyConv.GoValueOf(k.Value())
-	rv := ms.v.MapIndex(rk)
-	if !rv.IsValid() {
-		return pref.Value{}
-	}
-	return ms.valConv.PBValueOf(rv)
-}
-func (ms *mapReflect) Set(k pref.MapKey, v pref.Value) {
-	rk := ms.keyConv.GoValueOf(k.Value())
-	rv := ms.valConv.GoValueOf(v)
-	ms.v.SetMapIndex(rk, rv)
-}
-func (ms *mapReflect) Clear(k pref.MapKey) {
-	rk := ms.keyConv.GoValueOf(k.Value())
-	ms.v.SetMapIndex(rk, reflect.Value{})
-}
-func (ms *mapReflect) Mutable(k pref.MapKey) pref.Value {
-	if _, ok := ms.valConv.(*messageConverter); !ok {
-		panic("invalid Mutable on map with non-message value type")
-	}
-	v := ms.Get(k)
-	if !v.IsValid() {
-		v = ms.NewValue()
-		ms.Set(k, v)
-	}
-	return v
-}
-func (ms *mapReflect) Range(f func(pref.MapKey, pref.Value) bool) {
-	iter := mapRange(ms.v)
-	for iter.Next() {
-		k := ms.keyConv.PBValueOf(iter.Key()).MapKey()
-		v := ms.valConv.PBValueOf(iter.Value())
-		if !f(k, v) {
-			return
-		}
-	}
-}
-func (ms *mapReflect) NewValue() pref.Value {
-	return ms.valConv.New()
-}
-func (ms *mapReflect) IsValid() bool {
-	return !ms.v.IsNil()
-}
-func (ms *mapReflect) protoUnwrap() interface{} {
-	return ms.v.Interface()
-}
diff --git a/internal/impl/decode.go b/internal/impl/decode.go
deleted file mode 100644
index c65b032..0000000
--- a/internal/impl/decode.go
+++ /dev/null
@@ -1,284 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"math/bits"
-
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/internal/flags"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	preg "google.golang.org/protobuf/reflect/protoregistry"
-	"google.golang.org/protobuf/runtime/protoiface"
-	piface "google.golang.org/protobuf/runtime/protoiface"
-)
-
-var errDecode = errors.New("cannot parse invalid wire-format data")
-var errRecursionDepth = errors.New("exceeded maximum recursion depth")
-
-type unmarshalOptions struct {
-	flags    protoiface.UnmarshalInputFlags
-	resolver interface {
-		FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error)
-		FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error)
-	}
-	depth int
-}
-
-func (o unmarshalOptions) Options() proto.UnmarshalOptions {
-	return proto.UnmarshalOptions{
-		Merge:          true,
-		AllowPartial:   true,
-		DiscardUnknown: o.DiscardUnknown(),
-		Resolver:       o.resolver,
-	}
-}
-
-func (o unmarshalOptions) DiscardUnknown() bool { return o.flags&piface.UnmarshalDiscardUnknown != 0 }
-
-func (o unmarshalOptions) IsDefault() bool {
-	return o.flags == 0 && o.resolver == preg.GlobalTypes
-}
-
-var lazyUnmarshalOptions = unmarshalOptions{
-	resolver: preg.GlobalTypes,
-	depth:    protowire.DefaultRecursionLimit,
-}
-
-type unmarshalOutput struct {
-	n           int // number of bytes consumed
-	initialized bool
-}
-
-// unmarshal is protoreflect.Methods.Unmarshal.
-func (mi *MessageInfo) unmarshal(in piface.UnmarshalInput) (piface.UnmarshalOutput, error) {
-	var p pointer
-	if ms, ok := in.Message.(*messageState); ok {
-		p = ms.pointer()
-	} else {
-		p = in.Message.(*messageReflectWrapper).pointer()
-	}
-	out, err := mi.unmarshalPointer(in.Buf, p, 0, unmarshalOptions{
-		flags:    in.Flags,
-		resolver: in.Resolver,
-		depth:    in.Depth,
-	})
-	var flags piface.UnmarshalOutputFlags
-	if out.initialized {
-		flags |= piface.UnmarshalInitialized
-	}
-	return piface.UnmarshalOutput{
-		Flags: flags,
-	}, err
-}
-
-// errUnknown is returned during unmarshaling to indicate a parse error that
-// should result in a field being placed in the unknown fields section (for example,
-// when the wire type doesn't match) as opposed to the entire unmarshal operation
-// failing (for example, when a field extends past the available input).
-//
-// This is a sentinel error which should never be visible to the user.
-var errUnknown = errors.New("unknown")
-
-func (mi *MessageInfo) unmarshalPointer(b []byte, p pointer, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	mi.init()
-	opts.depth--
-	if opts.depth < 0 {
-		return out, errRecursionDepth
-	}
-	if flags.ProtoLegacy && mi.isMessageSet {
-		return unmarshalMessageSet(mi, b, p, opts)
-	}
-	initialized := true
-	var requiredMask uint64
-	var exts *map[int32]ExtensionField
-	start := len(b)
-	for len(b) > 0 {
-		// Parse the tag (field number and wire type).
-		var tag uint64
-		if b[0] < 0x80 {
-			tag = uint64(b[0])
-			b = b[1:]
-		} else if len(b) >= 2 && b[1] < 128 {
-			tag = uint64(b[0]&0x7f) + uint64(b[1])<<7
-			b = b[2:]
-		} else {
-			var n int
-			tag, n = protowire.ConsumeVarint(b)
-			if n < 0 {
-				return out, errDecode
-			}
-			b = b[n:]
-		}
-		var num protowire.Number
-		if n := tag >> 3; n < uint64(protowire.MinValidNumber) || n > uint64(protowire.MaxValidNumber) {
-			return out, errDecode
-		} else {
-			num = protowire.Number(n)
-		}
-		wtyp := protowire.Type(tag & 7)
-
-		if wtyp == protowire.EndGroupType {
-			if num != groupTag {
-				return out, errDecode
-			}
-			groupTag = 0
-			break
-		}
-
-		var f *coderFieldInfo
-		if int(num) < len(mi.denseCoderFields) {
-			f = mi.denseCoderFields[num]
-		} else {
-			f = mi.coderFields[num]
-		}
-		var n int
-		err := errUnknown
-		switch {
-		case f != nil:
-			if f.funcs.unmarshal == nil {
-				break
-			}
-			var o unmarshalOutput
-			o, err = f.funcs.unmarshal(b, p.Apply(f.offset), wtyp, f, opts)
-			n = o.n
-			if err != nil {
-				break
-			}
-			requiredMask |= f.validation.requiredBit
-			if f.funcs.isInit != nil && !o.initialized {
-				initialized = false
-			}
-		default:
-			// Possible extension.
-			if exts == nil && mi.extensionOffset.IsValid() {
-				exts = p.Apply(mi.extensionOffset).Extensions()
-				if *exts == nil {
-					*exts = make(map[int32]ExtensionField)
-				}
-			}
-			if exts == nil {
-				break
-			}
-			var o unmarshalOutput
-			o, err = mi.unmarshalExtension(b, num, wtyp, *exts, opts)
-			if err != nil {
-				break
-			}
-			n = o.n
-			if !o.initialized {
-				initialized = false
-			}
-		}
-		if err != nil {
-			if err != errUnknown {
-				return out, err
-			}
-			n = protowire.ConsumeFieldValue(num, wtyp, b)
-			if n < 0 {
-				return out, errDecode
-			}
-			if !opts.DiscardUnknown() && mi.unknownOffset.IsValid() {
-				u := mi.mutableUnknownBytes(p)
-				*u = protowire.AppendTag(*u, num, wtyp)
-				*u = append(*u, b[:n]...)
-			}
-		}
-		b = b[n:]
-	}
-	if groupTag != 0 {
-		return out, errDecode
-	}
-	if mi.numRequiredFields > 0 && bits.OnesCount64(requiredMask) != int(mi.numRequiredFields) {
-		initialized = false
-	}
-	if initialized {
-		out.initialized = true
-	}
-	out.n = start - len(b)
-	return out, nil
-}
-
-func (mi *MessageInfo) unmarshalExtension(b []byte, num protowire.Number, wtyp protowire.Type, exts map[int32]ExtensionField, opts unmarshalOptions) (out unmarshalOutput, err error) {
-	x := exts[int32(num)]
-	xt := x.Type()
-	if xt == nil {
-		var err error
-		xt, err = opts.resolver.FindExtensionByNumber(mi.Desc.FullName(), num)
-		if err != nil {
-			if err == preg.NotFound {
-				return out, errUnknown
-			}
-			return out, errors.New("%v: unable to resolve extension %v: %v", mi.Desc.FullName(), num, err)
-		}
-	}
-	xi := getExtensionFieldInfo(xt)
-	if xi.funcs.unmarshal == nil {
-		return out, errUnknown
-	}
-	if flags.LazyUnmarshalExtensions {
-		if opts.IsDefault() && x.canLazy(xt) {
-			out, valid := skipExtension(b, xi, num, wtyp, opts)
-			switch valid {
-			case ValidationValid:
-				if out.initialized {
-					x.appendLazyBytes(xt, xi, num, wtyp, b[:out.n])
-					exts[int32(num)] = x
-					return out, nil
-				}
-			case ValidationInvalid:
-				return out, errDecode
-			case ValidationUnknown:
-			}
-		}
-	}
-	ival := x.Value()
-	if !ival.IsValid() && xi.unmarshalNeedsValue {
-		// Create a new message, list, or map value to fill in.
-		// For enums, create a prototype value to let the unmarshal func know the
-		// concrete type.
-		ival = xt.New()
-	}
-	v, out, err := xi.funcs.unmarshal(b, ival, num, wtyp, opts)
-	if err != nil {
-		return out, err
-	}
-	if xi.funcs.isInit == nil {
-		out.initialized = true
-	}
-	x.Set(xt, v)
-	exts[int32(num)] = x
-	return out, nil
-}
-
-func skipExtension(b []byte, xi *extensionFieldInfo, num protowire.Number, wtyp protowire.Type, opts unmarshalOptions) (out unmarshalOutput, _ ValidationStatus) {
-	if xi.validation.mi == nil {
-		return out, ValidationUnknown
-	}
-	xi.validation.mi.init()
-	switch xi.validation.typ {
-	case validationTypeMessage:
-		if wtyp != protowire.BytesType {
-			return out, ValidationUnknown
-		}
-		v, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return out, ValidationUnknown
-		}
-		out, st := xi.validation.mi.validate(v, 0, opts)
-		out.n = n
-		return out, st
-	case validationTypeGroup:
-		if wtyp != protowire.StartGroupType {
-			return out, ValidationUnknown
-		}
-		out, st := xi.validation.mi.validate(b, num, opts)
-		return out, st
-	default:
-		return out, ValidationUnknown
-	}
-}
diff --git a/internal/impl/encode.go b/internal/impl/encode.go
deleted file mode 100644
index 845c67d..0000000
--- a/internal/impl/encode.go
+++ /dev/null
@@ -1,201 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"math"
-	"sort"
-	"sync/atomic"
-
-	"google.golang.org/protobuf/internal/flags"
-	proto "google.golang.org/protobuf/proto"
-	piface "google.golang.org/protobuf/runtime/protoiface"
-)
-
-type marshalOptions struct {
-	flags piface.MarshalInputFlags
-}
-
-func (o marshalOptions) Options() proto.MarshalOptions {
-	return proto.MarshalOptions{
-		AllowPartial:  true,
-		Deterministic: o.Deterministic(),
-		UseCachedSize: o.UseCachedSize(),
-	}
-}
-
-func (o marshalOptions) Deterministic() bool { return o.flags&piface.MarshalDeterministic != 0 }
-func (o marshalOptions) UseCachedSize() bool { return o.flags&piface.MarshalUseCachedSize != 0 }
-
-// size is protoreflect.Methods.Size.
-func (mi *MessageInfo) size(in piface.SizeInput) piface.SizeOutput {
-	var p pointer
-	if ms, ok := in.Message.(*messageState); ok {
-		p = ms.pointer()
-	} else {
-		p = in.Message.(*messageReflectWrapper).pointer()
-	}
-	size := mi.sizePointer(p, marshalOptions{
-		flags: in.Flags,
-	})
-	return piface.SizeOutput{Size: size}
-}
-
-func (mi *MessageInfo) sizePointer(p pointer, opts marshalOptions) (size int) {
-	mi.init()
-	if p.IsNil() {
-		return 0
-	}
-	if opts.UseCachedSize() && mi.sizecacheOffset.IsValid() {
-		if size := atomic.LoadInt32(p.Apply(mi.sizecacheOffset).Int32()); size >= 0 {
-			return int(size)
-		}
-	}
-	return mi.sizePointerSlow(p, opts)
-}
-
-func (mi *MessageInfo) sizePointerSlow(p pointer, opts marshalOptions) (size int) {
-	if flags.ProtoLegacy && mi.isMessageSet {
-		size = sizeMessageSet(mi, p, opts)
-		if mi.sizecacheOffset.IsValid() {
-			atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), int32(size))
-		}
-		return size
-	}
-	if mi.extensionOffset.IsValid() {
-		e := p.Apply(mi.extensionOffset).Extensions()
-		size += mi.sizeExtensions(e, opts)
-	}
-	for _, f := range mi.orderedCoderFields {
-		if f.funcs.size == nil {
-			continue
-		}
-		fptr := p.Apply(f.offset)
-		if f.isPointer && fptr.Elem().IsNil() {
-			continue
-		}
-		size += f.funcs.size(fptr, f, opts)
-	}
-	if mi.unknownOffset.IsValid() {
-		if u := mi.getUnknownBytes(p); u != nil {
-			size += len(*u)
-		}
-	}
-	if mi.sizecacheOffset.IsValid() {
-		if size > math.MaxInt32 {
-			// The size is too large for the int32 sizecache field.
-			// We will need to recompute the size when encoding;
-			// unfortunately expensive, but better than invalid output.
-			atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), -1)
-		} else {
-			atomic.StoreInt32(p.Apply(mi.sizecacheOffset).Int32(), int32(size))
-		}
-	}
-	return size
-}
-
-// marshal is protoreflect.Methods.Marshal.
-func (mi *MessageInfo) marshal(in piface.MarshalInput) (out piface.MarshalOutput, err error) {
-	var p pointer
-	if ms, ok := in.Message.(*messageState); ok {
-		p = ms.pointer()
-	} else {
-		p = in.Message.(*messageReflectWrapper).pointer()
-	}
-	b, err := mi.marshalAppendPointer(in.Buf, p, marshalOptions{
-		flags: in.Flags,
-	})
-	return piface.MarshalOutput{Buf: b}, err
-}
-
-func (mi *MessageInfo) marshalAppendPointer(b []byte, p pointer, opts marshalOptions) ([]byte, error) {
-	mi.init()
-	if p.IsNil() {
-		return b, nil
-	}
-	if flags.ProtoLegacy && mi.isMessageSet {
-		return marshalMessageSet(mi, b, p, opts)
-	}
-	var err error
-	// The old marshaler encodes extensions at beginning.
-	if mi.extensionOffset.IsValid() {
-		e := p.Apply(mi.extensionOffset).Extensions()
-		// TODO: Special handling for MessageSet?
-		b, err = mi.appendExtensions(b, e, opts)
-		if err != nil {
-			return b, err
-		}
-	}
-	for _, f := range mi.orderedCoderFields {
-		if f.funcs.marshal == nil {
-			continue
-		}
-		fptr := p.Apply(f.offset)
-		if f.isPointer && fptr.Elem().IsNil() {
-			continue
-		}
-		b, err = f.funcs.marshal(b, fptr, f, opts)
-		if err != nil {
-			return b, err
-		}
-	}
-	if mi.unknownOffset.IsValid() && !mi.isMessageSet {
-		if u := mi.getUnknownBytes(p); u != nil {
-			b = append(b, (*u)...)
-		}
-	}
-	return b, nil
-}
-
-func (mi *MessageInfo) sizeExtensions(ext *map[int32]ExtensionField, opts marshalOptions) (n int) {
-	if ext == nil {
-		return 0
-	}
-	for _, x := range *ext {
-		xi := getExtensionFieldInfo(x.Type())
-		if xi.funcs.size == nil {
-			continue
-		}
-		n += xi.funcs.size(x.Value(), xi.tagsize, opts)
-	}
-	return n
-}
-
-func (mi *MessageInfo) appendExtensions(b []byte, ext *map[int32]ExtensionField, opts marshalOptions) ([]byte, error) {
-	if ext == nil {
-		return b, nil
-	}
-
-	switch len(*ext) {
-	case 0:
-		return b, nil
-	case 1:
-		// Fast-path for one extension: Don't bother sorting the keys.
-		var err error
-		for _, x := range *ext {
-			xi := getExtensionFieldInfo(x.Type())
-			b, err = xi.funcs.marshal(b, x.Value(), xi.wiretag, opts)
-		}
-		return b, err
-	default:
-		// Sort the keys to provide a deterministic encoding.
-		// Not sure this is required, but the old code does it.
-		keys := make([]int, 0, len(*ext))
-		for k := range *ext {
-			keys = append(keys, int(k))
-		}
-		sort.Ints(keys)
-		var err error
-		for _, k := range keys {
-			x := (*ext)[int32(k)]
-			xi := getExtensionFieldInfo(x.Type())
-			b, err = xi.funcs.marshal(b, x.Value(), xi.wiretag, opts)
-			if err != nil {
-				return b, err
-			}
-		}
-		return b, nil
-	}
-}
diff --git a/internal/impl/enum.go b/internal/impl/enum.go
deleted file mode 100644
index 8c1eab4..0000000
--- a/internal/impl/enum.go
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"reflect"
-
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-type EnumInfo struct {
-	GoReflectType reflect.Type // int32 kind
-	Desc          pref.EnumDescriptor
-}
-
-func (t *EnumInfo) New(n pref.EnumNumber) pref.Enum {
-	return reflect.ValueOf(n).Convert(t.GoReflectType).Interface().(pref.Enum)
-}
-func (t *EnumInfo) Descriptor() pref.EnumDescriptor { return t.Desc }
diff --git a/internal/impl/enum_test.go b/internal/impl/enum_test.go
deleted file mode 100644
index 7e04500..0000000
--- a/internal/impl/enum_test.go
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl_test
-
-import (
-	"testing"
-
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-)
-
-func TestEnum(t *testing.T) {
-	et := testpb.ForeignEnum_FOREIGN_FOO.Type()
-	if got, want := et.New(pref.EnumNumber(testpb.ForeignEnum_FOREIGN_FOO)), pref.Enum(testpb.ForeignEnum_FOREIGN_FOO); got != want {
-		t.Errorf("testpb.ForeignEnum_FOREIGN_FOO.Type().New() = %[1]T(%[1]v), want %[2]T(%[2]v)", got, want)
-	}
-}
diff --git a/internal/impl/extension.go b/internal/impl/extension.go
deleted file mode 100644
index e904fd9..0000000
--- a/internal/impl/extension.go
+++ /dev/null
@@ -1,156 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"reflect"
-	"sync"
-	"sync/atomic"
-
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	piface "google.golang.org/protobuf/runtime/protoiface"
-)
-
-// ExtensionInfo implements ExtensionType.
-//
-// This type contains a number of exported fields for legacy compatibility.
-// The only non-deprecated use of this type is through the methods of the
-// ExtensionType interface.
-type ExtensionInfo struct {
-	// An ExtensionInfo may exist in several stages of initialization.
-	//
-	// extensionInfoUninitialized: Some or all of the legacy exported
-	// fields may be set, but none of the unexported fields have been
-	// initialized. This is the starting state for an ExtensionInfo
-	// in legacy generated code.
-	//
-	// extensionInfoDescInit: The desc field is set, but other unexported fields
-	// may not be initialized. Legacy exported fields may or may not be set.
-	// This is the starting state for an ExtensionInfo in newly generated code.
-	//
-	// extensionInfoFullInit: The ExtensionInfo is fully initialized.
-	// This state is only entered after lazy initialization is complete.
-	init uint32
-	mu   sync.Mutex
-
-	goType reflect.Type
-	desc   extensionTypeDescriptor
-	conv   Converter
-	info   *extensionFieldInfo // for fast-path method implementations
-
-	// ExtendedType is a typed nil-pointer to the parent message type that
-	// is being extended. It is possible for this to be unpopulated in v2
-	// since the message may no longer implement the MessageV1 interface.
-	//
-	// Deprecated: Use the ExtendedType method instead.
-	ExtendedType piface.MessageV1
-
-	// ExtensionType is the zero value of the extension type.
-	//
-	// For historical reasons, reflect.TypeOf(ExtensionType) and the
-	// type returned by InterfaceOf may not be identical.
-	//
-	// Deprecated: Use InterfaceOf(xt.Zero()) instead.
-	ExtensionType interface{}
-
-	// Field is the field number of the extension.
-	//
-	// Deprecated: Use the Descriptor().Number method instead.
-	Field int32
-
-	// Name is the fully qualified name of extension.
-	//
-	// Deprecated: Use the Descriptor().FullName method instead.
-	Name string
-
-	// Tag is the protobuf struct tag used in the v1 API.
-	//
-	// Deprecated: Do not use.
-	Tag string
-
-	// Filename is the proto filename in which the extension is defined.
-	//
-	// Deprecated: Use Descriptor().ParentFile().Path() instead.
-	Filename string
-}
-
-// Stages of initialization: See the ExtensionInfo.init field.
-const (
-	extensionInfoUninitialized = 0
-	extensionInfoDescInit      = 1
-	extensionInfoFullInit      = 2
-)
-
-func InitExtensionInfo(xi *ExtensionInfo, xd pref.ExtensionDescriptor, goType reflect.Type) {
-	xi.goType = goType
-	xi.desc = extensionTypeDescriptor{xd, xi}
-	xi.init = extensionInfoDescInit
-}
-
-func (xi *ExtensionInfo) New() pref.Value {
-	return xi.lazyInit().New()
-}
-func (xi *ExtensionInfo) Zero() pref.Value {
-	return xi.lazyInit().Zero()
-}
-func (xi *ExtensionInfo) ValueOf(v interface{}) pref.Value {
-	return xi.lazyInit().PBValueOf(reflect.ValueOf(v))
-}
-func (xi *ExtensionInfo) InterfaceOf(v pref.Value) interface{} {
-	return xi.lazyInit().GoValueOf(v).Interface()
-}
-func (xi *ExtensionInfo) IsValidValue(v pref.Value) bool {
-	return xi.lazyInit().IsValidPB(v)
-}
-func (xi *ExtensionInfo) IsValidInterface(v interface{}) bool {
-	return xi.lazyInit().IsValidGo(reflect.ValueOf(v))
-}
-func (xi *ExtensionInfo) TypeDescriptor() pref.ExtensionTypeDescriptor {
-	if atomic.LoadUint32(&xi.init) < extensionInfoDescInit {
-		xi.lazyInitSlow()
-	}
-	return &xi.desc
-}
-
-func (xi *ExtensionInfo) lazyInit() Converter {
-	if atomic.LoadUint32(&xi.init) < extensionInfoFullInit {
-		xi.lazyInitSlow()
-	}
-	return xi.conv
-}
-
-func (xi *ExtensionInfo) lazyInitSlow() {
-	xi.mu.Lock()
-	defer xi.mu.Unlock()
-
-	if xi.init == extensionInfoFullInit {
-		return
-	}
-	defer atomic.StoreUint32(&xi.init, extensionInfoFullInit)
-
-	if xi.desc.ExtensionDescriptor == nil {
-		xi.initFromLegacy()
-	}
-	if !xi.desc.ExtensionDescriptor.IsPlaceholder() {
-		if xi.ExtensionType == nil {
-			xi.initToLegacy()
-		}
-		xi.conv = NewConverter(xi.goType, xi.desc.ExtensionDescriptor)
-		xi.info = makeExtensionFieldInfo(xi.desc.ExtensionDescriptor)
-		xi.info.validation = newValidationInfo(xi.desc.ExtensionDescriptor, xi.goType)
-	}
-}
-
-type extensionTypeDescriptor struct {
-	pref.ExtensionDescriptor
-	xi *ExtensionInfo
-}
-
-func (xtd *extensionTypeDescriptor) Type() pref.ExtensionType {
-	return xtd.xi
-}
-func (xtd *extensionTypeDescriptor) Descriptor() pref.ExtensionDescriptor {
-	return xtd.ExtensionDescriptor
-}
diff --git a/internal/impl/extension_test.go b/internal/impl/extension_test.go
deleted file mode 100644
index 171f312..0000000
--- a/internal/impl/extension_test.go
+++ /dev/null
@@ -1,132 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl_test
-
-import (
-	"fmt"
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-
-	"google.golang.org/protobuf/proto"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-)
-
-func TestExtensionType(t *testing.T) {
-	cmpOpts := cmp.Options{
-		cmp.Comparer(func(x, y proto.Message) bool {
-			return proto.Equal(x, y)
-		}),
-	}
-	for _, test := range []struct {
-		xt    pref.ExtensionType
-		value interface{}
-	}{
-		{
-			xt:    testpb.E_OptionalInt32,
-			value: int32(0),
-		},
-		{
-			xt:    testpb.E_OptionalInt64,
-			value: int64(0),
-		},
-		{
-			xt:    testpb.E_OptionalUint32,
-			value: uint32(0),
-		},
-		{
-			xt:    testpb.E_OptionalUint64,
-			value: uint64(0),
-		},
-		{
-			xt:    testpb.E_OptionalFloat,
-			value: float32(0),
-		},
-		{
-			xt:    testpb.E_OptionalDouble,
-			value: float64(0),
-		},
-		{
-			xt:    testpb.E_OptionalBool,
-			value: true,
-		},
-		{
-			xt:    testpb.E_OptionalString,
-			value: "",
-		},
-		{
-			xt:    testpb.E_OptionalBytes,
-			value: []byte{},
-		},
-		{
-			xt:    testpb.E_OptionalNestedMessage,
-			value: &testpb.TestAllExtensions_NestedMessage{},
-		},
-		{
-			xt:    testpb.E_OptionalNestedEnum,
-			value: testpb.TestAllTypes_FOO,
-		},
-		{
-			xt:    testpb.E_RepeatedInt32,
-			value: []int32{0},
-		},
-		{
-			xt:    testpb.E_RepeatedInt64,
-			value: []int64{0},
-		},
-		{
-			xt:    testpb.E_RepeatedUint32,
-			value: []uint32{0},
-		},
-		{
-			xt:    testpb.E_RepeatedUint64,
-			value: []uint64{0},
-		},
-		{
-			xt:    testpb.E_RepeatedFloat,
-			value: []float32{0},
-		},
-		{
-			xt:    testpb.E_RepeatedDouble,
-			value: []float64{0},
-		},
-		{
-			xt:    testpb.E_RepeatedBool,
-			value: []bool{true},
-		},
-		{
-			xt:    testpb.E_RepeatedString,
-			value: []string{""},
-		},
-		{
-			xt:    testpb.E_RepeatedBytes,
-			value: [][]byte{nil},
-		},
-		{
-			xt:    testpb.E_RepeatedNestedMessage,
-			value: []*testpb.TestAllExtensions_NestedMessage{{}},
-		},
-		{
-			xt:    testpb.E_RepeatedNestedEnum,
-			value: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_FOO},
-		},
-	} {
-		name := test.xt.TypeDescriptor().FullName()
-		t.Run(fmt.Sprint(name), func(t *testing.T) {
-			if !test.xt.IsValidInterface(test.value) {
-				t.Fatalf("IsValidInterface(%[1]T(%[1]v)) = false, want true", test.value)
-			}
-			v := test.xt.ValueOf(test.value)
-			if !test.xt.IsValidValue(v) {
-				t.Fatalf("IsValidValue(%[1]T(%[1]v)) = false, want true", v)
-			}
-			if got, want := test.xt.InterfaceOf(v), test.value; !cmp.Equal(got, want, cmpOpts) {
-				t.Fatalf("round trip InterfaceOf(ValueOf(x)) = %v, want %v", got, want)
-			}
-		})
-	}
-}
diff --git a/internal/impl/lazy_test.go b/internal/impl/lazy_test.go
deleted file mode 100644
index 3a52f87..0000000
--- a/internal/impl/lazy_test.go
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl_test
-
-import (
-	"testing"
-
-	"google.golang.org/protobuf/internal/flags"
-	"google.golang.org/protobuf/internal/impl"
-	"google.golang.org/protobuf/internal/protobuild"
-	"google.golang.org/protobuf/proto"
-
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-)
-
-func TestLazyExtensions(t *testing.T) {
-	checkLazy := func(when string, m *testpb.TestAllExtensions, want bool) {
-		xd := testpb.E_OptionalNestedMessage.TypeDescriptor()
-		if got := impl.IsLazy(m.ProtoReflect(), xd); got != want {
-			t.Errorf("%v: m.optional_nested_message lazy=%v, want %v", when, got, want)
-		}
-		e := proto.GetExtension(m, testpb.E_OptionalNestedMessage).(*testpb.TestAllExtensions_NestedMessage).Corecursive
-		if got := impl.IsLazy(e.ProtoReflect(), xd); got != want {
-			t.Errorf("%v: m.optional_nested_message.corecursive.optional_nested_message lazy=%v, want %v", when, got, want)
-		}
-	}
-
-	m1 := &testpb.TestAllExtensions{}
-	protobuild.Message{
-		"optional_nested_message": protobuild.Message{
-			"a": 1,
-			"corecursive": protobuild.Message{
-				"optional_nested_message": protobuild.Message{
-					"a": 2,
-				},
-			},
-		},
-	}.Build(m1.ProtoReflect())
-	checkLazy("before unmarshal", m1, false)
-
-	w, err := proto.Marshal(m1)
-	if err != nil {
-		t.Fatal(err)
-	}
-	m := &testpb.TestAllExtensions{}
-	if err := proto.Unmarshal(w, m); err != nil {
-		t.Fatal(err)
-	}
-	checkLazy("after unmarshal", m, flags.LazyUnmarshalExtensions)
-}
diff --git a/internal/impl/legacy_aberrant_test.go b/internal/impl/legacy_aberrant_test.go
deleted file mode 100644
index 905981a..0000000
--- a/internal/impl/legacy_aberrant_test.go
+++ /dev/null
@@ -1,358 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl_test
-
-import (
-	"io"
-	"reflect"
-	"sync"
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-
-	"google.golang.org/protobuf/encoding/prototext"
-	"google.golang.org/protobuf/internal/impl"
-	"google.golang.org/protobuf/reflect/protodesc"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/runtime/protoiface"
-	"google.golang.org/protobuf/testing/protocmp"
-
-	"google.golang.org/protobuf/types/descriptorpb"
-)
-
-type AberrantMessage struct {
-	OptionalBool     *bool            `protobuf:"varint,1,opt,name=opt_bool,def=1"`
-	OptionalInt32    *int32           `protobuf:"varint,2,opt,name=opt_int32,def=-12345"`
-	OptionalSint32   *int32           `protobuf:"zigzag32,3,opt,name=opt_sint32,def=-3200"`
-	OptionalUint32   *uint32          `protobuf:"varint,4,opt,name=opt_uint32,def=3200"`
-	OptionalInt64    *int64           `protobuf:"varint,5,opt,name=opt_int64,def=-123456789"`
-	OptionalSint64   *int64           `protobuf:"zigzag64,6,opt,name=opt_sint64,def=-6400"`
-	OptionalUint64   *uint64          `protobuf:"varint,7,opt,name=opt_uint64,def=6400"`
-	OptionalFixed32  *uint32          `protobuf:"fixed32,8,opt,name=opt_fixed32,def=320000"`
-	OptionalSfixed32 *int32           `protobuf:"fixed32,9,opt,name=opt_sfixed32,def=-320000"`
-	OptionalFloat    *float32         `protobuf:"fixed32,10,opt,name=opt_float,def=3.14159"`
-	OptionalFixed64  *uint64          `protobuf:"fixed64,11,opt,name=opt_fixed64,def=640000"`
-	OptionalSfixed64 *int64           `protobuf:"fixed64,12,opt,name=opt_sfixed64,def=-640000"`
-	OptionalDouble   *float64         `protobuf:"fixed64,13,opt,name=opt_double,def=3.14159265359"`
-	OptionalString   *string          `protobuf:"bytes,14,opt,name=opt_string,def=hello, \"world!\"\n"`
-	OptionalBytes    []byte           `protobuf:"bytes,15,opt,name=opt_bytes,def=dead\\336\\255\\276\\357beef"`
-	OptionalEnum     *AberrantEnum    `protobuf:"varint,16,opt,name=opt_enum,enum=google.golang.org.example.AberrantEnum,def=0"`
-	OptionalMessage  *AberrantMessage `protobuf:"bytes,17,opt,name=opt_message"`
-
-	RepeatedBool     []bool             `protobuf:"varint,18,rep,packed,name=rep_bool"`
-	RepeatedInt32    []int32            `protobuf:"varint,19,rep,packed,name=rep_int32"`
-	RepeatedSint32   []int32            `protobuf:"zigzag32,20,rep,packed,name=rep_sint32"`
-	RepeatedUint32   []uint32           `protobuf:"varint,21,rep,packed,name=rep_uint32"`
-	RepeatedInt64    []int64            `protobuf:"varint,22,rep,packed,name=rep_int64"`
-	RepeatedSint64   []int64            `protobuf:"zigzag64,23,rep,packed,name=rep_sint64"`
-	RepeatedUint64   []uint64           `protobuf:"varint,24,rep,packed,name=rep_uint64"`
-	RepeatedFixed32  []uint32           `protobuf:"fixed32,25,rep,packed,name=rep_fixed32"`
-	RepeatedSfixed32 []int32            `protobuf:"fixed32,26,rep,packed,name=rep_sfixed32"`
-	RepeatedFloat    []float32          `protobuf:"fixed32,27,rep,packed,name=rep_float"`
-	RepeatedFixed64  []uint64           `protobuf:"fixed64,28,rep,packed,name=rep_fixed64"`
-	RepeatedSfixed64 []int64            `protobuf:"fixed64,29,rep,packed,name=rep_sfixed64"`
-	RepeatedDouble   []float64          `protobuf:"fixed64,30,rep,packed,name=rep_double"`
-	RepeatedString   []string           `protobuf:"bytes,31,rep,name=rep_string"`
-	RepeatedBytes    [][]byte           `protobuf:"bytes,32,rep,name=rep_bytes"`
-	RepeatedEnum     []AberrantEnum     `protobuf:"varint,33,rep,name=rep_enum,enum=google.golang.org.example.AberrantEnum"`
-	RepeatedMessage  []*AberrantMessage `protobuf:"bytes,34,rep,name=rep_message"`
-
-	MapStringBool     map[string]bool             `protobuf:"bytes,35,rep,name=map_string_bool"     protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapStringInt32    map[string]int32            `protobuf:"bytes,36,rep,name=map_string_int32"    protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapStringSint32   map[string]int32            `protobuf:"bytes,37,rep,name=map_string_sint32"   protobuf_key:"bytes,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
-	MapStringUint32   map[string]uint32           `protobuf:"bytes,38,rep,name=map_string_uint32"   protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapStringInt64    map[string]int64            `protobuf:"bytes,39,rep,name=map_string_int64"    protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapStringSint64   map[string]int64            `protobuf:"bytes,40,rep,name=map_string_sint64"   protobuf_key:"bytes,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
-	MapStringUint64   map[string]uint64           `protobuf:"bytes,41,rep,name=map_string_uint64"   protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapStringFixed32  map[string]uint32           `protobuf:"bytes,42,rep,name=map_string_fixed32"  protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapStringSfixed32 map[string]int32            `protobuf:"bytes,43,rep,name=map_string_sfixed32" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapStringFloat    map[string]float32          `protobuf:"bytes,44,rep,name=map_string_float"    protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapStringFixed64  map[string]uint64           `protobuf:"bytes,45,rep,name=map_string_fixed64"  protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapStringSfixed64 map[string]int64            `protobuf:"bytes,46,rep,name=map_string_sfixed64" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapStringDouble   map[string]float64          `protobuf:"bytes,47,rep,name=map_string_double"   protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapStringString   map[string]string           `protobuf:"bytes,48,rep,name=map_string_string"   protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapStringBytes    map[string][]byte           `protobuf:"bytes,49,rep,name=map_string_bytes"    protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapStringEnum     map[string]AberrantEnum     `protobuf:"bytes,50,rep,name=map_string_enum"     protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.example.AberrantEnum"`
-	MapStringMessage  map[string]*AberrantMessage `protobuf:"bytes,51,rep,name=map_string_message"  protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-
-	OneofUnion isOneofUnion `protobuf_oneof:"oneof_union"`
-
-	Ignored io.Reader
-}
-
-func (m *AberrantMessage) ExtensionRangeArray() []protoiface.ExtensionRangeV1 {
-	return []protoiface.ExtensionRangeV1{{Start: 10, End: 100}}
-}
-
-func (m *AberrantMessage) XXX_OneofFuncs() []interface{} {
-	return []interface{}{
-		(*OneofBool)(nil),
-		(*OneofInt32)(nil),
-		(*OneofSint32)(nil),
-		(*OneofUint32)(nil),
-		(*OneofInt64)(nil),
-		(*OneofSint64)(nil),
-		(*OneofUint64)(nil),
-		(*OneofFixed32)(nil),
-		(*OneofSfixed32)(nil),
-		(*OneofFloat)(nil),
-		(*OneofFixed64)(nil),
-		(*OneofSfixed64)(nil),
-		(*OneofDouble)(nil),
-		(*OneofString)(nil),
-		(*OneofBytes)(nil),
-		(*OneofEnum)(nil),
-		(*OneofMessage)(nil),
-	}
-}
-
-type isOneofUnion interface{ isOneofUnion() }
-
-type OneofBool struct {
-	OneofBool bool `protobuf:"varint,52,opt,name=oneof_bool,oneof,def=1"`
-}
-type OneofInt32 struct {
-	OneofInt32 int32 `protobuf:"varint,53,opt,name=oneof_int32,oneof,def=-12345"`
-}
-type OneofSint32 struct {
-	OneofSint32 int32 `protobuf:"zigzag32,54,opt,name=oneof_sint32,oneof,def=-3200"`
-}
-type OneofUint32 struct {
-	OneofUint32 uint32 `protobuf:"varint,55,opt,name=oneof_uint32,oneof,def=3200"`
-}
-type OneofInt64 struct {
-	OneofInt64 int64 `protobuf:"varint,56,opt,name=oneof_int64,oneof,def=-123456789"`
-}
-type OneofSint64 struct {
-	OneofSint64 int64 `protobuf:"zigzag64,57,opt,name=oneof_sint64,oneof,def=-6400"`
-}
-type OneofUint64 struct {
-	OneofUint64 uint64 `protobuf:"varint,58,opt,name=oneof_uint64,oneof,def=6400"`
-}
-type OneofFixed32 struct {
-	OneofFixed32 uint32 `protobuf:"fixed32,59,opt,name=oneof_fixed32,oneof,def=320000"`
-}
-type OneofSfixed32 struct {
-	OneofSfixed32 int32 `protobuf:"fixed32,60,opt,name=oneof_sfixed32,oneof,def=-320000"`
-}
-type OneofFloat struct {
-	OneofFloat float32 `protobuf:"fixed32,61,opt,name=oneof_float,oneof,def=3.14159"`
-}
-type OneofFixed64 struct {
-	OneofFixed64 uint64 `protobuf:"fixed64,62,opt,name=oneof_fixed64,oneof,def=640000"`
-}
-type OneofSfixed64 struct {
-	OneofSfixed64 int64 `protobuf:"fixed64,63,opt,name=oneof_sfixed64,oneof,def=-640000"`
-}
-type OneofDouble struct {
-	OneofDouble float64 `protobuf:"fixed64,64,opt,name=oneof_double,oneof,def=3.14159265359"`
-}
-type OneofString struct {
-	OneofString string `protobuf:"bytes,65,opt,name=oneof_string,oneof,def=hello, \"world!\"\n"`
-}
-type OneofBytes struct {
-	OneofBytes []byte `protobuf:"bytes,66,opt,name=oneof_bytes,oneof,def=dead\\336\\255\\276\\357beef"`
-}
-type OneofEnum struct {
-	OneofEnum AberrantEnum `protobuf:"varint,67,opt,name=oneof_enum,enum=google.golang.org.example.AberrantEnum,oneof,def=0"`
-}
-type OneofMessage struct {
-	OneofMessage *AberrantMessage `protobuf:"bytes,68,opt,name=oneof_message,oneof"`
-}
-
-func (OneofBool) isOneofUnion()     {}
-func (OneofInt32) isOneofUnion()    {}
-func (OneofSint32) isOneofUnion()   {}
-func (OneofUint32) isOneofUnion()   {}
-func (OneofInt64) isOneofUnion()    {}
-func (OneofSint64) isOneofUnion()   {}
-func (OneofUint64) isOneofUnion()   {}
-func (OneofFixed32) isOneofUnion()  {}
-func (OneofSfixed32) isOneofUnion() {}
-func (OneofFloat) isOneofUnion()    {}
-func (OneofFixed64) isOneofUnion()  {}
-func (OneofSfixed64) isOneofUnion() {}
-func (OneofDouble) isOneofUnion()   {}
-func (OneofString) isOneofUnion()   {}
-func (OneofBytes) isOneofUnion()    {}
-func (OneofEnum) isOneofUnion()     {}
-func (OneofMessage) isOneofUnion()  {}
-
-type AberrantEnum int32
-
-func TestAberrantMessages(t *testing.T) {
-	enumName := impl.AberrantDeriveFullName(reflect.TypeOf(AberrantEnum(0)))
-	messageName := impl.AberrantDeriveFullName(reflect.TypeOf(AberrantMessage{}))
-
-	want := new(descriptorpb.DescriptorProto)
-	if err := prototext.Unmarshal([]byte(`
-		name: "AberrantMessage"
-		field: [
-			{name:"opt_bool"     number:1  label:LABEL_OPTIONAL type:TYPE_BOOL     default_value:"true"},
-			{name:"opt_int32"    number:2  label:LABEL_OPTIONAL type:TYPE_INT32    default_value:"-12345"},
-			{name:"opt_sint32"   number:3  label:LABEL_OPTIONAL type:TYPE_SINT32   default_value:"-3200"},
-			{name:"opt_uint32"   number:4  label:LABEL_OPTIONAL type:TYPE_UINT32   default_value:"3200"},
-			{name:"opt_int64"    number:5  label:LABEL_OPTIONAL type:TYPE_INT64    default_value:"-123456789"},
-			{name:"opt_sint64"   number:6  label:LABEL_OPTIONAL type:TYPE_SINT64   default_value:"-6400"},
-			{name:"opt_uint64"   number:7  label:LABEL_OPTIONAL type:TYPE_UINT64   default_value:"6400"},
-			{name:"opt_fixed32"  number:8  label:LABEL_OPTIONAL type:TYPE_FIXED32  default_value:"320000"},
-			{name:"opt_sfixed32" number:9  label:LABEL_OPTIONAL type:TYPE_SFIXED32 default_value:"-320000"},
-			{name:"opt_float"    number:10 label:LABEL_OPTIONAL type:TYPE_FLOAT    default_value:"3.14159"},
-			{name:"opt_fixed64"  number:11 label:LABEL_OPTIONAL type:TYPE_FIXED64  default_value:"640000"},
-			{name:"opt_sfixed64" number:12 label:LABEL_OPTIONAL type:TYPE_SFIXED64 default_value:"-640000"},
-			{name:"opt_double"   number:13 label:LABEL_OPTIONAL type:TYPE_DOUBLE   default_value:"3.14159265359"},
-			{name:"opt_string"   number:14 label:LABEL_OPTIONAL type:TYPE_STRING   default_value:"hello, \"world!\"\n"},
-			{name:"opt_bytes"    number:15 label:LABEL_OPTIONAL type:TYPE_BYTES    default_value:"dead\\336\\255\\276\\357beef"},
-			{name:"opt_enum"     number:16 label:LABEL_OPTIONAL type:TYPE_ENUM     type_name:".`+enumName+`" default_value:"UNKNOWN_0"},
-			{name:"opt_message"  number:17 label:LABEL_OPTIONAL type:TYPE_MESSAGE  type_name:".`+messageName+`"},
-
-			{name:"rep_bool"     number:18 label:LABEL_REPEATED type:TYPE_BOOL     options:{packed:true}},
-			{name:"rep_int32"    number:19 label:LABEL_REPEATED type:TYPE_INT32    options:{packed:true}},
-			{name:"rep_sint32"   number:20 label:LABEL_REPEATED type:TYPE_SINT32   options:{packed:true}},
-			{name:"rep_uint32"   number:21 label:LABEL_REPEATED type:TYPE_UINT32   options:{packed:true}},
-			{name:"rep_int64"    number:22 label:LABEL_REPEATED type:TYPE_INT64    options:{packed:true}},
-			{name:"rep_sint64"   number:23 label:LABEL_REPEATED type:TYPE_SINT64   options:{packed:true}},
-			{name:"rep_uint64"   number:24 label:LABEL_REPEATED type:TYPE_UINT64   options:{packed:true}},
-			{name:"rep_fixed32"  number:25 label:LABEL_REPEATED type:TYPE_FIXED32  options:{packed:true}},
-			{name:"rep_sfixed32" number:26 label:LABEL_REPEATED type:TYPE_SFIXED32 options:{packed:true}},
-			{name:"rep_float"    number:27 label:LABEL_REPEATED type:TYPE_FLOAT    options:{packed:true}},
-			{name:"rep_fixed64"  number:28 label:LABEL_REPEATED type:TYPE_FIXED64  options:{packed:true}},
-			{name:"rep_sfixed64" number:29 label:LABEL_REPEATED type:TYPE_SFIXED64 options:{packed:true}},
-			{name:"rep_double"   number:30 label:LABEL_REPEATED type:TYPE_DOUBLE   options:{packed:true}},
-			{name:"rep_string"   number:31 label:LABEL_REPEATED type:TYPE_STRING},
-			{name:"rep_bytes"    number:32 label:LABEL_REPEATED type:TYPE_BYTES},
-			{name:"rep_enum"     number:33 label:LABEL_REPEATED type:TYPE_ENUM     type_name:".`+enumName+`"},
-			{name:"rep_message"  number:34 label:LABEL_REPEATED type:TYPE_MESSAGE  type_name:".`+messageName+`"},
-
-			{name:"map_string_bool"     number:35 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".`+messageName+`.MapStringBoolEntry"},
-			{name:"map_string_int32"    number:36 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".`+messageName+`.MapStringInt32Entry"},
-			{name:"map_string_sint32"   number:37 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".`+messageName+`.MapStringSint32Entry"},
-			{name:"map_string_uint32"   number:38 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".`+messageName+`.MapStringUint32Entry"},
-			{name:"map_string_int64"    number:39 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".`+messageName+`.MapStringInt64Entry"},
-			{name:"map_string_sint64"   number:40 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".`+messageName+`.MapStringSint64Entry"},
-			{name:"map_string_uint64"   number:41 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".`+messageName+`.MapStringUint64Entry"},
-			{name:"map_string_fixed32"  number:42 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".`+messageName+`.MapStringFixed32Entry"},
-			{name:"map_string_sfixed32" number:43 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".`+messageName+`.MapStringSfixed32Entry"},
-			{name:"map_string_float"    number:44 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".`+messageName+`.MapStringFloatEntry"},
-			{name:"map_string_fixed64"  number:45 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".`+messageName+`.MapStringFixed64Entry"},
-			{name:"map_string_sfixed64" number:46 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".`+messageName+`.MapStringSfixed64Entry"},
-			{name:"map_string_double"   number:47 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".`+messageName+`.MapStringDoubleEntry"},
-			{name:"map_string_string"   number:48 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".`+messageName+`.MapStringStringEntry"},
-			{name:"map_string_bytes"    number:49 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".`+messageName+`.MapStringBytesEntry"},
-			{name:"map_string_enum"     number:50 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".`+messageName+`.MapStringEnumEntry"},
-			{name:"map_string_message"  number:51 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".`+messageName+`.MapStringMessageEntry"},
-
-			{name:"oneof_bool"     number:52 label:LABEL_OPTIONAL type:TYPE_BOOL     oneof_index:0 default_value:"true"},
-			{name:"oneof_int32"    number:53 label:LABEL_OPTIONAL type:TYPE_INT32    oneof_index:0 default_value:"-12345"},
-			{name:"oneof_sint32"   number:54 label:LABEL_OPTIONAL type:TYPE_SINT32   oneof_index:0 default_value:"-3200"},
-			{name:"oneof_uint32"   number:55 label:LABEL_OPTIONAL type:TYPE_UINT32   oneof_index:0 default_value:"3200"},
-			{name:"oneof_int64"    number:56 label:LABEL_OPTIONAL type:TYPE_INT64    oneof_index:0 default_value:"-123456789"},
-			{name:"oneof_sint64"   number:57 label:LABEL_OPTIONAL type:TYPE_SINT64   oneof_index:0 default_value:"-6400"},
-			{name:"oneof_uint64"   number:58 label:LABEL_OPTIONAL type:TYPE_UINT64   oneof_index:0 default_value:"6400"},
-			{name:"oneof_fixed32"  number:59 label:LABEL_OPTIONAL type:TYPE_FIXED32  oneof_index:0 default_value:"320000"},
-			{name:"oneof_sfixed32" number:60 label:LABEL_OPTIONAL type:TYPE_SFIXED32 oneof_index:0 default_value:"-320000"},
-			{name:"oneof_float"    number:61 label:LABEL_OPTIONAL type:TYPE_FLOAT    oneof_index:0 default_value:"3.14159"},
-			{name:"oneof_fixed64"  number:62 label:LABEL_OPTIONAL type:TYPE_FIXED64  oneof_index:0 default_value:"640000"},
-			{name:"oneof_sfixed64" number:63 label:LABEL_OPTIONAL type:TYPE_SFIXED64 oneof_index:0 default_value:"-640000"},
-			{name:"oneof_double"   number:64 label:LABEL_OPTIONAL type:TYPE_DOUBLE   oneof_index:0 default_value:"3.14159265359"},
-			{name:"oneof_string"   number:65 label:LABEL_OPTIONAL type:TYPE_STRING   oneof_index:0 default_value:"hello, \"world!\"\n"},
-			{name:"oneof_bytes"    number:66 label:LABEL_OPTIONAL type:TYPE_BYTES    oneof_index:0 default_value:"dead\\336\\255\\276\\357beef"},
-			{name:"oneof_enum"     number:67 label:LABEL_OPTIONAL type:TYPE_ENUM     oneof_index:0 type_name:".`+enumName+`" default_value:"UNKNOWN_0"},
-			{name:"oneof_message"  number:68 label:LABEL_OPTIONAL type:TYPE_MESSAGE  oneof_index:0 type_name:".`+messageName+`"}
-		]
-		oneof_decl: [{name:"oneof_union"}]
-		extension_range: [{start:10 end:101}]
-		nested_type: [
-			{name:"MapStringBoolEntry"     field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_BOOL}]     options:{map_entry:true}},
-			{name:"MapStringInt32Entry"    field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_INT32}]    options:{map_entry:true}},
-			{name:"MapStringSint32Entry"   field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_SINT32}]   options:{map_entry:true}},
-			{name:"MapStringUint32Entry"   field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_UINT32}]   options:{map_entry:true}},
-			{name:"MapStringInt64Entry"    field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_INT64}]    options:{map_entry:true}},
-			{name:"MapStringSint64Entry"   field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_SINT64}]   options:{map_entry:true}},
-			{name:"MapStringUint64Entry"   field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_UINT64}]   options:{map_entry:true}},
-			{name:"MapStringFixed32Entry"  field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_FIXED32}]  options:{map_entry:true}},
-			{name:"MapStringSfixed32Entry" field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_SFIXED32}] options:{map_entry:true}},
-			{name:"MapStringFloatEntry"    field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_FLOAT}]    options:{map_entry:true}},
-			{name:"MapStringFixed64Entry"  field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_FIXED64}]  options:{map_entry:true}},
-			{name:"MapStringSfixed64Entry" field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_SFIXED64}] options:{map_entry:true}},
-			{name:"MapStringDoubleEntry"   field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_DOUBLE}]   options:{map_entry:true}},
-			{name:"MapStringStringEntry"   field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_STRING}]   options:{map_entry:true}},
-			{name:"MapStringBytesEntry"    field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_BYTES}]    options:{map_entry:true}},
-			{name:"MapStringEnumEntry"     field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_ENUM    type_name:".`+enumName+`"}] options:{map_entry:true}},
-			{name:"MapStringMessageEntry"  field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_MESSAGE type_name:".`+messageName+`"}]                  options:{map_entry:true}}
-		]
-	`), want); err != nil {
-		t.Fatalf("prototext.Unmarshal() error: %v", err)
-	}
-
-	md := impl.LegacyLoadMessageDesc(reflect.TypeOf(&AberrantMessage{}))
-	got := protodesc.ToDescriptorProto(md)
-	if diff := cmp.Diff(want, got, protocmp.Transform()); diff != "" {
-		t.Errorf("mismatching descriptor (-want +got):\n%s", diff)
-	}
-}
-
-type AberrantMessage1 struct {
-	M *AberrantMessage2 `protobuf:"bytes,1,opt,name=message"`
-}
-
-type AberrantMessage2 struct {
-	M *AberrantMessage1 `protobuf:"bytes,1,opt,name=message"`
-}
-
-func TestAberrantRace(t *testing.T) {
-	var gotMD1, wantMD1, gotMD2, wantMD2 protoreflect.MessageDescriptor
-
-	var wg sync.WaitGroup
-	wg.Add(2)
-	go func() {
-		defer wg.Done()
-		md := impl.LegacyLoadMessageDesc(reflect.TypeOf(&AberrantMessage1{}))
-		wantMD2 = md.Fields().Get(0).Message()
-		gotMD2 = wantMD2.Fields().Get(0).Message().Fields().Get(0).Message()
-	}()
-	go func() {
-		defer wg.Done()
-		md := impl.LegacyLoadMessageDesc(reflect.TypeOf(&AberrantMessage2{}))
-		wantMD1 = md.Fields().Get(0).Message()
-		gotMD1 = wantMD1.Fields().Get(0).Message().Fields().Get(0).Message()
-	}()
-	wg.Wait()
-
-	if gotMD1 != wantMD1 || gotMD2 != wantMD2 {
-		t.Errorf("mismatching exact message descriptors")
-	}
-}
-
-func TestAberrantExtensions(t *testing.T) {
-	tests := []struct {
-		in              *impl.ExtensionInfo
-		wantName        protoreflect.FullName
-		wantNumber      protoreflect.FieldNumber
-		wantPlaceholder bool
-	}{{
-		in:              &impl.ExtensionInfo{Field: 500},
-		wantNumber:      500,
-		wantPlaceholder: true,
-	}, {
-		in:              &impl.ExtensionInfo{Name: "foo.bar.baz"},
-		wantName:        "foo.bar.baz",
-		wantPlaceholder: true,
-	}}
-
-	for _, tt := range tests {
-		t.Run("", func(t *testing.T) {
-			xtd := tt.in.TypeDescriptor()
-			switch {
-			case xtd.FullName() != tt.wantName:
-				t.Errorf("FullName() = %v, want %v", xtd.FullName(), tt.wantName)
-			case xtd.Number() != tt.wantNumber:
-				t.Errorf("Number() = %v, want %v", xtd.Number(), tt.wantNumber)
-			case xtd.IsPlaceholder() != tt.wantPlaceholder:
-				t.Errorf("IsPlaceholder() = %v, want %v", xtd.IsPlaceholder(), tt.wantPlaceholder)
-			}
-		})
-	}
-}
diff --git a/internal/impl/legacy_enum.go b/internal/impl/legacy_enum.go
deleted file mode 100644
index f7d7ffb..0000000
--- a/internal/impl/legacy_enum.go
+++ /dev/null
@@ -1,219 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"fmt"
-	"reflect"
-	"strings"
-	"sync"
-
-	"google.golang.org/protobuf/internal/filedesc"
-	"google.golang.org/protobuf/internal/strs"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-// legacyEnumName returns the name of enums used in legacy code.
-// It is neither the protobuf full name nor the qualified Go name,
-// but rather an odd hybrid of both.
-func legacyEnumName(ed pref.EnumDescriptor) string {
-	var protoPkg string
-	enumName := string(ed.FullName())
-	if fd := ed.ParentFile(); fd != nil {
-		protoPkg = string(fd.Package())
-		enumName = strings.TrimPrefix(enumName, protoPkg+".")
-	}
-	if protoPkg == "" {
-		return strs.GoCamelCase(enumName)
-	}
-	return protoPkg + "." + strs.GoCamelCase(enumName)
-}
-
-// legacyWrapEnum wraps v as a protoreflect.Enum,
-// where v must be a int32 kind and not implement the v2 API already.
-func legacyWrapEnum(v reflect.Value) pref.Enum {
-	et := legacyLoadEnumType(v.Type())
-	return et.New(pref.EnumNumber(v.Int()))
-}
-
-var legacyEnumTypeCache sync.Map // map[reflect.Type]protoreflect.EnumType
-
-// legacyLoadEnumType dynamically loads a protoreflect.EnumType for t,
-// where t must be an int32 kind and not implement the v2 API already.
-func legacyLoadEnumType(t reflect.Type) pref.EnumType {
-	// Fast-path: check if a EnumType is cached for this concrete type.
-	if et, ok := legacyEnumTypeCache.Load(t); ok {
-		return et.(pref.EnumType)
-	}
-
-	// Slow-path: derive enum descriptor and initialize EnumType.
-	var et pref.EnumType
-	ed := LegacyLoadEnumDesc(t)
-	et = &legacyEnumType{
-		desc:   ed,
-		goType: t,
-	}
-	if et, ok := legacyEnumTypeCache.LoadOrStore(t, et); ok {
-		return et.(pref.EnumType)
-	}
-	return et
-}
-
-type legacyEnumType struct {
-	desc   pref.EnumDescriptor
-	goType reflect.Type
-	m      sync.Map // map[protoreflect.EnumNumber]proto.Enum
-}
-
-func (t *legacyEnumType) New(n pref.EnumNumber) pref.Enum {
-	if e, ok := t.m.Load(n); ok {
-		return e.(pref.Enum)
-	}
-	e := &legacyEnumWrapper{num: n, pbTyp: t, goTyp: t.goType}
-	t.m.Store(n, e)
-	return e
-}
-func (t *legacyEnumType) Descriptor() pref.EnumDescriptor {
-	return t.desc
-}
-
-type legacyEnumWrapper struct {
-	num   pref.EnumNumber
-	pbTyp pref.EnumType
-	goTyp reflect.Type
-}
-
-func (e *legacyEnumWrapper) Descriptor() pref.EnumDescriptor {
-	return e.pbTyp.Descriptor()
-}
-func (e *legacyEnumWrapper) Type() pref.EnumType {
-	return e.pbTyp
-}
-func (e *legacyEnumWrapper) Number() pref.EnumNumber {
-	return e.num
-}
-func (e *legacyEnumWrapper) ProtoReflect() pref.Enum {
-	return e
-}
-func (e *legacyEnumWrapper) protoUnwrap() interface{} {
-	v := reflect.New(e.goTyp).Elem()
-	v.SetInt(int64(e.num))
-	return v.Interface()
-}
-
-var (
-	_ pref.Enum = (*legacyEnumWrapper)(nil)
-	_ unwrapper = (*legacyEnumWrapper)(nil)
-)
-
-var legacyEnumDescCache sync.Map // map[reflect.Type]protoreflect.EnumDescriptor
-
-// LegacyLoadEnumDesc returns an EnumDescriptor derived from the Go type,
-// which must be an int32 kind and not implement the v2 API already.
-//
-// This is exported for testing purposes.
-func LegacyLoadEnumDesc(t reflect.Type) pref.EnumDescriptor {
-	// Fast-path: check if an EnumDescriptor is cached for this concrete type.
-	if ed, ok := legacyEnumDescCache.Load(t); ok {
-		return ed.(pref.EnumDescriptor)
-	}
-
-	// Slow-path: initialize EnumDescriptor from the raw descriptor.
-	ev := reflect.Zero(t).Interface()
-	if _, ok := ev.(pref.Enum); ok {
-		panic(fmt.Sprintf("%v already implements proto.Enum", t))
-	}
-	edV1, ok := ev.(enumV1)
-	if !ok {
-		return aberrantLoadEnumDesc(t)
-	}
-	b, idxs := edV1.EnumDescriptor()
-
-	var ed pref.EnumDescriptor
-	if len(idxs) == 1 {
-		ed = legacyLoadFileDesc(b).Enums().Get(idxs[0])
-	} else {
-		md := legacyLoadFileDesc(b).Messages().Get(idxs[0])
-		for _, i := range idxs[1 : len(idxs)-1] {
-			md = md.Messages().Get(i)
-		}
-		ed = md.Enums().Get(idxs[len(idxs)-1])
-	}
-	if ed, ok := legacyEnumDescCache.LoadOrStore(t, ed); ok {
-		return ed.(protoreflect.EnumDescriptor)
-	}
-	return ed
-}
-
-var aberrantEnumDescCache sync.Map // map[reflect.Type]protoreflect.EnumDescriptor
-
-// aberrantLoadEnumDesc returns an EnumDescriptor derived from the Go type,
-// which must not implement protoreflect.Enum or enumV1.
-//
-// If the type does not implement enumV1, then there is no reliable
-// way to derive the original protobuf type information.
-// We are unable to use the global enum registry since it is
-// unfortunately keyed by the protobuf full name, which we also do not know.
-// Thus, this produces some bogus enum descriptor based on the Go type name.
-func aberrantLoadEnumDesc(t reflect.Type) pref.EnumDescriptor {
-	// Fast-path: check if an EnumDescriptor is cached for this concrete type.
-	if ed, ok := aberrantEnumDescCache.Load(t); ok {
-		return ed.(pref.EnumDescriptor)
-	}
-
-	// Slow-path: construct a bogus, but unique EnumDescriptor.
-	ed := &filedesc.Enum{L2: new(filedesc.EnumL2)}
-	ed.L0.FullName = AberrantDeriveFullName(t) // e.g., github_com.user.repo.MyEnum
-	ed.L0.ParentFile = filedesc.SurrogateProto3
-	ed.L2.Values.List = append(ed.L2.Values.List, filedesc.EnumValue{})
-
-	// TODO: Use the presence of a UnmarshalJSON method to determine proto2?
-
-	vd := &ed.L2.Values.List[0]
-	vd.L0.FullName = ed.L0.FullName + "_UNKNOWN" // e.g., github_com.user.repo.MyEnum_UNKNOWN
-	vd.L0.ParentFile = ed.L0.ParentFile
-	vd.L0.Parent = ed
-
-	// TODO: We could use the String method to obtain some enum value names by
-	// starting at 0 and print the enum until it produces invalid identifiers.
-	// An exhaustive query is clearly impractical, but can be best-effort.
-
-	if ed, ok := aberrantEnumDescCache.LoadOrStore(t, ed); ok {
-		return ed.(pref.EnumDescriptor)
-	}
-	return ed
-}
-
-// AberrantDeriveFullName derives a fully qualified protobuf name for the given Go type
-// The provided name is not guaranteed to be stable nor universally unique.
-// It should be sufficiently unique within a program.
-//
-// This is exported for testing purposes.
-func AberrantDeriveFullName(t reflect.Type) pref.FullName {
-	sanitize := func(r rune) rune {
-		switch {
-		case r == '/':
-			return '.'
-		case 'a' <= r && r <= 'z', 'A' <= r && r <= 'Z', '0' <= r && r <= '9':
-			return r
-		default:
-			return '_'
-		}
-	}
-	prefix := strings.Map(sanitize, t.PkgPath())
-	suffix := strings.Map(sanitize, t.Name())
-	if suffix == "" {
-		suffix = fmt.Sprintf("UnknownX%X", reflect.ValueOf(t).Pointer())
-	}
-
-	ss := append(strings.Split(prefix, "."), suffix)
-	for i, s := range ss {
-		if s == "" || ('0' <= s[0] && s[0] <= '9') {
-			ss[i] = "x" + s
-		}
-	}
-	return pref.FullName(strings.Join(ss, "."))
-}
diff --git a/internal/impl/legacy_export.go b/internal/impl/legacy_export.go
deleted file mode 100644
index e3fb0b5..0000000
--- a/internal/impl/legacy_export.go
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"encoding/binary"
-	"encoding/json"
-	"hash/crc32"
-	"math"
-	"reflect"
-
-	"google.golang.org/protobuf/internal/errors"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	piface "google.golang.org/protobuf/runtime/protoiface"
-)
-
-// These functions exist to support exported APIs in generated protobufs.
-// While these are deprecated, they cannot be removed for compatibility reasons.
-
-// LegacyEnumName returns the name of enums used in legacy code.
-func (Export) LegacyEnumName(ed pref.EnumDescriptor) string {
-	return legacyEnumName(ed)
-}
-
-// LegacyMessageTypeOf returns the protoreflect.MessageType for m,
-// with name used as the message name if necessary.
-func (Export) LegacyMessageTypeOf(m piface.MessageV1, name pref.FullName) pref.MessageType {
-	if mv := (Export{}).protoMessageV2Of(m); mv != nil {
-		return mv.ProtoReflect().Type()
-	}
-	return legacyLoadMessageType(reflect.TypeOf(m), name)
-}
-
-// UnmarshalJSONEnum unmarshals an enum from a JSON-encoded input.
-// The input can either be a string representing the enum value by name,
-// or a number representing the enum number itself.
-func (Export) UnmarshalJSONEnum(ed pref.EnumDescriptor, b []byte) (pref.EnumNumber, error) {
-	if b[0] == '"' {
-		var name pref.Name
-		if err := json.Unmarshal(b, &name); err != nil {
-			return 0, errors.New("invalid input for enum %v: %s", ed.FullName(), b)
-		}
-		ev := ed.Values().ByName(name)
-		if ev == nil {
-			return 0, errors.New("invalid value for enum %v: %s", ed.FullName(), name)
-		}
-		return ev.Number(), nil
-	} else {
-		var num pref.EnumNumber
-		if err := json.Unmarshal(b, &num); err != nil {
-			return 0, errors.New("invalid input for enum %v: %s", ed.FullName(), b)
-		}
-		return num, nil
-	}
-}
-
-// CompressGZIP compresses the input as a GZIP-encoded file.
-// The current implementation does no compression.
-func (Export) CompressGZIP(in []byte) (out []byte) {
-	// RFC 1952, section 2.3.1.
-	var gzipHeader = [10]byte{0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff}
-
-	// RFC 1951, section 3.2.4.
-	var blockHeader [5]byte
-	const maxBlockSize = math.MaxUint16
-	numBlocks := 1 + len(in)/maxBlockSize
-
-	// RFC 1952, section 2.3.1.
-	var gzipFooter [8]byte
-	binary.LittleEndian.PutUint32(gzipFooter[0:4], crc32.ChecksumIEEE(in))
-	binary.LittleEndian.PutUint32(gzipFooter[4:8], uint32(len(in)))
-
-	// Encode the input without compression using raw DEFLATE blocks.
-	out = make([]byte, 0, len(gzipHeader)+len(blockHeader)*numBlocks+len(in)+len(gzipFooter))
-	out = append(out, gzipHeader[:]...)
-	for blockHeader[0] == 0 {
-		blockSize := maxBlockSize
-		if blockSize > len(in) {
-			blockHeader[0] = 0x01 // final bit per RFC 1951, section 3.2.3.
-			blockSize = len(in)
-		}
-		binary.LittleEndian.PutUint16(blockHeader[1:3], uint16(blockSize)^0x0000)
-		binary.LittleEndian.PutUint16(blockHeader[3:5], uint16(blockSize)^0xffff)
-		out = append(out, blockHeader[:]...)
-		out = append(out, in[:blockSize]...)
-		in = in[blockSize:]
-	}
-	out = append(out, gzipFooter[:]...)
-	return out
-}
diff --git a/internal/impl/legacy_export_test.go b/internal/impl/legacy_export_test.go
deleted file mode 100644
index e1d2c08..0000000
--- a/internal/impl/legacy_export_test.go
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"bytes"
-	"compress/gzip"
-	"io/ioutil"
-	"math"
-	"strings"
-	"testing"
-)
-
-func TestCompressGZIP(t *testing.T) {
-	tests := []string{
-		"",
-		"a",
-		"ab",
-		"abc",
-		strings.Repeat("a", math.MaxUint16-1),
-		strings.Repeat("b", math.MaxUint16),
-		strings.Repeat("c", math.MaxUint16+1),
-		strings.Repeat("abcdefghijklmnopqrstuvwxyz", math.MaxUint16-13),
-	}
-	for _, want := range tests {
-		rb := bytes.NewReader(Export{}.CompressGZIP([]byte(want)))
-		zr, err := gzip.NewReader(rb)
-		if err != nil {
-			t.Errorf("unexpected gzip.NewReader error: %v", err)
-		}
-		b, err := ioutil.ReadAll(zr)
-		if err != nil {
-			t.Errorf("unexpected ioutil.ReadAll error: %v", err)
-		}
-		if got := string(b); got != want {
-			t.Errorf("output mismatch: got %q, want %q", got, want)
-		}
-	}
-}
diff --git a/internal/impl/legacy_extension.go b/internal/impl/legacy_extension.go
deleted file mode 100644
index 49e7231..0000000
--- a/internal/impl/legacy_extension.go
+++ /dev/null
@@ -1,176 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"reflect"
-
-	"google.golang.org/protobuf/internal/descopts"
-	"google.golang.org/protobuf/internal/encoding/messageset"
-	ptag "google.golang.org/protobuf/internal/encoding/tag"
-	"google.golang.org/protobuf/internal/filedesc"
-	"google.golang.org/protobuf/internal/pragma"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	preg "google.golang.org/protobuf/reflect/protoregistry"
-	piface "google.golang.org/protobuf/runtime/protoiface"
-)
-
-func (xi *ExtensionInfo) initToLegacy() {
-	xd := xi.desc
-	var parent piface.MessageV1
-	messageName := xd.ContainingMessage().FullName()
-	if mt, _ := preg.GlobalTypes.FindMessageByName(messageName); mt != nil {
-		// Create a new parent message and unwrap it if possible.
-		mv := mt.New().Interface()
-		t := reflect.TypeOf(mv)
-		if mv, ok := mv.(unwrapper); ok {
-			t = reflect.TypeOf(mv.protoUnwrap())
-		}
-
-		// Check whether the message implements the legacy v1 Message interface.
-		mz := reflect.Zero(t).Interface()
-		if mz, ok := mz.(piface.MessageV1); ok {
-			parent = mz
-		}
-	}
-
-	// Determine the v1 extension type, which is unfortunately not the same as
-	// the v2 ExtensionType.GoType.
-	extType := xi.goType
-	switch extType.Kind() {
-	case reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String:
-		extType = reflect.PtrTo(extType) // T -> *T for singular scalar fields
-	}
-
-	// Reconstruct the legacy enum full name.
-	var enumName string
-	if xd.Kind() == pref.EnumKind {
-		enumName = legacyEnumName(xd.Enum())
-	}
-
-	// Derive the proto file that the extension was declared within.
-	var filename string
-	if fd := xd.ParentFile(); fd != nil {
-		filename = fd.Path()
-	}
-
-	// For MessageSet extensions, the name used is the parent message.
-	name := xd.FullName()
-	if messageset.IsMessageSetExtension(xd) {
-		name = name.Parent()
-	}
-
-	xi.ExtendedType = parent
-	xi.ExtensionType = reflect.Zero(extType).Interface()
-	xi.Field = int32(xd.Number())
-	xi.Name = string(name)
-	xi.Tag = ptag.Marshal(xd, enumName)
-	xi.Filename = filename
-}
-
-// initFromLegacy initializes an ExtensionInfo from
-// the contents of the deprecated exported fields of the type.
-func (xi *ExtensionInfo) initFromLegacy() {
-	// The v1 API returns "type incomplete" descriptors where only the
-	// field number is specified. In such a case, use a placeholder.
-	if xi.ExtendedType == nil || xi.ExtensionType == nil {
-		xd := placeholderExtension{
-			name:   pref.FullName(xi.Name),
-			number: pref.FieldNumber(xi.Field),
-		}
-		xi.desc = extensionTypeDescriptor{xd, xi}
-		return
-	}
-
-	// Resolve enum or message dependencies.
-	var ed pref.EnumDescriptor
-	var md pref.MessageDescriptor
-	t := reflect.TypeOf(xi.ExtensionType)
-	isOptional := t.Kind() == reflect.Ptr && t.Elem().Kind() != reflect.Struct
-	isRepeated := t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8
-	if isOptional || isRepeated {
-		t = t.Elem()
-	}
-	switch v := reflect.Zero(t).Interface().(type) {
-	case pref.Enum:
-		ed = v.Descriptor()
-	case enumV1:
-		ed = LegacyLoadEnumDesc(t)
-	case pref.ProtoMessage:
-		md = v.ProtoReflect().Descriptor()
-	case messageV1:
-		md = LegacyLoadMessageDesc(t)
-	}
-
-	// Derive basic field information from the struct tag.
-	var evs pref.EnumValueDescriptors
-	if ed != nil {
-		evs = ed.Values()
-	}
-	fd := ptag.Unmarshal(xi.Tag, t, evs).(*filedesc.Field)
-
-	// Construct a v2 ExtensionType.
-	xd := &filedesc.Extension{L2: new(filedesc.ExtensionL2)}
-	xd.L0.ParentFile = filedesc.SurrogateProto2
-	xd.L0.FullName = pref.FullName(xi.Name)
-	xd.L1.Number = pref.FieldNumber(xi.Field)
-	xd.L1.Cardinality = fd.L1.Cardinality
-	xd.L1.Kind = fd.L1.Kind
-	xd.L2.IsPacked = fd.L1.IsPacked
-	xd.L2.Default = fd.L1.Default
-	xd.L1.Extendee = Export{}.MessageDescriptorOf(xi.ExtendedType)
-	xd.L2.Enum = ed
-	xd.L2.Message = md
-
-	// Derive real extension field name for MessageSets.
-	if messageset.IsMessageSet(xd.L1.Extendee) && md.FullName() == xd.L0.FullName {
-		xd.L0.FullName = xd.L0.FullName.Append(messageset.ExtensionName)
-	}
-
-	tt := reflect.TypeOf(xi.ExtensionType)
-	if isOptional {
-		tt = tt.Elem()
-	}
-	xi.goType = tt
-	xi.desc = extensionTypeDescriptor{xd, xi}
-}
-
-type placeholderExtension struct {
-	name   pref.FullName
-	number pref.FieldNumber
-}
-
-func (x placeholderExtension) ParentFile() pref.FileDescriptor            { return nil }
-func (x placeholderExtension) Parent() pref.Descriptor                    { return nil }
-func (x placeholderExtension) Index() int                                 { return 0 }
-func (x placeholderExtension) Syntax() pref.Syntax                        { return 0 }
-func (x placeholderExtension) Name() pref.Name                            { return x.name.Name() }
-func (x placeholderExtension) FullName() pref.FullName                    { return x.name }
-func (x placeholderExtension) IsPlaceholder() bool                        { return true }
-func (x placeholderExtension) Options() pref.ProtoMessage                 { return descopts.Field }
-func (x placeholderExtension) Number() pref.FieldNumber                   { return x.number }
-func (x placeholderExtension) Cardinality() pref.Cardinality              { return 0 }
-func (x placeholderExtension) Kind() pref.Kind                            { return 0 }
-func (x placeholderExtension) HasJSONName() bool                          { return false }
-func (x placeholderExtension) JSONName() string                           { return "[" + string(x.name) + "]" }
-func (x placeholderExtension) TextName() string                           { return "[" + string(x.name) + "]" }
-func (x placeholderExtension) HasPresence() bool                          { return false }
-func (x placeholderExtension) HasOptionalKeyword() bool                   { return false }
-func (x placeholderExtension) IsExtension() bool                          { return true }
-func (x placeholderExtension) IsWeak() bool                               { return false }
-func (x placeholderExtension) IsPacked() bool                             { return false }
-func (x placeholderExtension) IsList() bool                               { return false }
-func (x placeholderExtension) IsMap() bool                                { return false }
-func (x placeholderExtension) MapKey() pref.FieldDescriptor               { return nil }
-func (x placeholderExtension) MapValue() pref.FieldDescriptor             { return nil }
-func (x placeholderExtension) HasDefault() bool                           { return false }
-func (x placeholderExtension) Default() pref.Value                        { return pref.Value{} }
-func (x placeholderExtension) DefaultEnumValue() pref.EnumValueDescriptor { return nil }
-func (x placeholderExtension) ContainingOneof() pref.OneofDescriptor      { return nil }
-func (x placeholderExtension) ContainingMessage() pref.MessageDescriptor  { return nil }
-func (x placeholderExtension) Enum() pref.EnumDescriptor                  { return nil }
-func (x placeholderExtension) Message() pref.MessageDescriptor            { return nil }
-func (x placeholderExtension) ProtoType(pref.FieldDescriptor)             { return }
-func (x placeholderExtension) ProtoInternal(pragma.DoNotImplement)        { return }
diff --git a/internal/impl/legacy_file.go b/internal/impl/legacy_file.go
deleted file mode 100644
index 9ab0910..0000000
--- a/internal/impl/legacy_file.go
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"bytes"
-	"compress/gzip"
-	"io/ioutil"
-	"sync"
-
-	"google.golang.org/protobuf/internal/filedesc"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/reflect/protoregistry"
-)
-
-// Every enum and message type generated by protoc-gen-go since commit 2fc053c5
-// on February 25th, 2016 has had a method to get the raw descriptor.
-// Types that were not generated by protoc-gen-go or were generated prior
-// to that version are not supported.
-//
-// The []byte returned is the encoded form of a FileDescriptorProto message
-// compressed using GZIP. The []int is the path from the top-level file
-// to the specific message or enum declaration.
-type (
-	enumV1 interface {
-		EnumDescriptor() ([]byte, []int)
-	}
-	messageV1 interface {
-		Descriptor() ([]byte, []int)
-	}
-)
-
-var legacyFileDescCache sync.Map // map[*byte]protoreflect.FileDescriptor
-
-// legacyLoadFileDesc unmarshals b as a compressed FileDescriptorProto message.
-//
-// This assumes that b is immutable and that b does not refer to part of a
-// concatenated series of GZIP files (which would require shenanigans that
-// rely on the concatenation properties of both protobufs and GZIP).
-// File descriptors generated by protoc-gen-go do not rely on that property.
-func legacyLoadFileDesc(b []byte) protoreflect.FileDescriptor {
-	// Fast-path: check whether we already have a cached file descriptor.
-	if fd, ok := legacyFileDescCache.Load(&b[0]); ok {
-		return fd.(protoreflect.FileDescriptor)
-	}
-
-	// Slow-path: decompress and unmarshal the file descriptor proto.
-	zr, err := gzip.NewReader(bytes.NewReader(b))
-	if err != nil {
-		panic(err)
-	}
-	b2, err := ioutil.ReadAll(zr)
-	if err != nil {
-		panic(err)
-	}
-
-	fd := filedesc.Builder{
-		RawDescriptor: b2,
-		FileRegistry:  resolverOnly{protoregistry.GlobalFiles}, // do not register back to global registry
-	}.Build().File
-	if fd, ok := legacyFileDescCache.LoadOrStore(&b[0], fd); ok {
-		return fd.(protoreflect.FileDescriptor)
-	}
-	return fd
-}
-
-type resolverOnly struct {
-	reg *protoregistry.Files
-}
-
-func (r resolverOnly) FindFileByPath(path string) (protoreflect.FileDescriptor, error) {
-	return r.reg.FindFileByPath(path)
-}
-func (r resolverOnly) FindDescriptorByName(name protoreflect.FullName) (protoreflect.Descriptor, error) {
-	return r.reg.FindDescriptorByName(name)
-}
-func (resolverOnly) RegisterFile(protoreflect.FileDescriptor) error {
-	return nil
-}
diff --git a/internal/impl/legacy_file_test.go b/internal/impl/legacy_file_test.go
deleted file mode 100644
index e59f0a0..0000000
--- a/internal/impl/legacy_file_test.go
+++ /dev/null
@@ -1,465 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl_test
-
-import (
-	"bytes"
-	"compress/gzip"
-	"io/ioutil"
-	"reflect"
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-
-	"google.golang.org/protobuf/internal/impl"
-	"google.golang.org/protobuf/internal/pragma"
-	"google.golang.org/protobuf/proto"
-	pdesc "google.golang.org/protobuf/reflect/protodesc"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-
-	proto2_20160225 "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20160225_2fc053c5"
-	proto2_20160519 "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20160519_a4ab9ec5"
-	proto2_20180125 "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20180125_92554152"
-	proto2_20180430 "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20180430_b4deda09"
-	proto2_20180814 "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20180814_aa810b61"
-	proto2_20190205 "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20190205_c823c79e"
-	proto3_20160225 "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20160225_2fc053c5"
-	proto3_20160519 "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20160519_a4ab9ec5"
-	proto3_20180125 "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20180125_92554152"
-	proto3_20180430 "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20180430_b4deda09"
-	proto3_20180814 "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20180814_aa810b61"
-	proto3_20190205 "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20190205_c823c79e"
-	"google.golang.org/protobuf/types/descriptorpb"
-)
-
-func mustLoadFileDesc(b []byte, _ []int) pref.FileDescriptor {
-	zr, err := gzip.NewReader(bytes.NewReader(b))
-	if err != nil {
-		panic(err)
-	}
-	b, err = ioutil.ReadAll(zr)
-	if err != nil {
-		panic(err)
-	}
-	p := new(descriptorpb.FileDescriptorProto)
-	err = proto.UnmarshalOptions{DiscardUnknown: true}.Unmarshal(b, p)
-	if err != nil {
-		panic(err)
-	}
-	fd, err := pdesc.NewFile(p, nil)
-	if err != nil {
-		panic(err)
-	}
-	return fd
-}
-
-func TestDescriptor(t *testing.T) {
-	var tests []struct{ got, want pref.Descriptor }
-
-	fileDescP2_20160225 := mustLoadFileDesc(new(proto2_20160225.Message).Descriptor())
-	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto2_20160225.SiblingEnum(0))),
-		want: fileDescP2_20160225.Enums().ByName("SiblingEnum"),
-	}, {
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto2_20160225.Message_ChildEnum(0))),
-		want: fileDescP2_20160225.Messages().ByName("Message").Enums().ByName("ChildEnum"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20160225.SiblingMessage))),
-		want: fileDescP2_20160225.Messages().ByName("SiblingMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_ChildMessage))),
-		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("ChildMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message))),
-		want: fileDescP2_20160225.Messages().ByName("Message"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_NamedGroup))),
-		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("NamedGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_OptionalGroup))),
-		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_RequiredGroup))),
-		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_RepeatedGroup))),
-		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_OneofGroup))),
-		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("OneofGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_ExtensionOptionalGroup))),
-		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20160225.Message_ExtensionRepeatedGroup))),
-		want: fileDescP2_20160225.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
-	}}...)
-
-	fileDescP3_20160225 := mustLoadFileDesc(new(proto3_20160225.Message).Descriptor())
-	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto3_20160225.SiblingEnum(0))),
-		want: fileDescP3_20160225.Enums().ByName("SiblingEnum"),
-	}, {
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto3_20160225.Message_ChildEnum(0))),
-		want: fileDescP3_20160225.Messages().ByName("Message").Enums().ByName("ChildEnum"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto3_20160225.SiblingMessage))),
-		want: fileDescP3_20160225.Messages().ByName("SiblingMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto3_20160225.Message_ChildMessage))),
-		want: fileDescP3_20160225.Messages().ByName("Message").Messages().ByName("ChildMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto3_20160225.Message))),
-		want: fileDescP3_20160225.Messages().ByName("Message"),
-	}}...)
-
-	fileDescP2_20160519 := mustLoadFileDesc(new(proto2_20160519.Message).Descriptor())
-	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto2_20160519.SiblingEnum(0))),
-		want: fileDescP2_20160519.Enums().ByName("SiblingEnum"),
-	}, {
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto2_20160519.Message_ChildEnum(0))),
-		want: fileDescP2_20160519.Messages().ByName("Message").Enums().ByName("ChildEnum"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20160519.SiblingMessage))),
-		want: fileDescP2_20160519.Messages().ByName("SiblingMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_ChildMessage))),
-		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("ChildMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message))),
-		want: fileDescP2_20160519.Messages().ByName("Message"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_NamedGroup))),
-		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("NamedGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_OptionalGroup))),
-		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_RequiredGroup))),
-		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_RepeatedGroup))),
-		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_OneofGroup))),
-		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("OneofGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_ExtensionOptionalGroup))),
-		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20160519.Message_ExtensionRepeatedGroup))),
-		want: fileDescP2_20160519.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
-	}}...)
-
-	fileDescP3_20160519 := mustLoadFileDesc(new(proto3_20160519.Message).Descriptor())
-	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto3_20160519.SiblingEnum(0))),
-		want: fileDescP3_20160519.Enums().ByName("SiblingEnum"),
-	}, {
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto3_20160519.Message_ChildEnum(0))),
-		want: fileDescP3_20160519.Messages().ByName("Message").Enums().ByName("ChildEnum"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto3_20160519.SiblingMessage))),
-		want: fileDescP3_20160519.Messages().ByName("SiblingMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto3_20160519.Message_ChildMessage))),
-		want: fileDescP3_20160519.Messages().ByName("Message").Messages().ByName("ChildMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto3_20160519.Message))),
-		want: fileDescP3_20160519.Messages().ByName("Message"),
-	}}...)
-
-	fileDescP2_20180125 := mustLoadFileDesc(new(proto2_20180125.Message).Descriptor())
-	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto2_20180125.SiblingEnum(0))),
-		want: fileDescP2_20180125.Enums().ByName("SiblingEnum"),
-	}, {
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto2_20180125.Message_ChildEnum(0))),
-		want: fileDescP2_20180125.Messages().ByName("Message").Enums().ByName("ChildEnum"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180125.SiblingMessage))),
-		want: fileDescP2_20180125.Messages().ByName("SiblingMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_ChildMessage))),
-		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("ChildMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message))),
-		want: fileDescP2_20180125.Messages().ByName("Message"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_NamedGroup))),
-		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("NamedGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_OptionalGroup))),
-		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_RequiredGroup))),
-		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_RepeatedGroup))),
-		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_OneofGroup))),
-		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("OneofGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_ExtensionOptionalGroup))),
-		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180125.Message_ExtensionRepeatedGroup))),
-		want: fileDescP2_20180125.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
-	}}...)
-
-	fileDescP3_20180125 := mustLoadFileDesc(new(proto3_20180125.Message).Descriptor())
-	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto3_20180125.SiblingEnum(0))),
-		want: fileDescP3_20180125.Enums().ByName("SiblingEnum"),
-	}, {
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto3_20180125.Message_ChildEnum(0))),
-		want: fileDescP3_20180125.Messages().ByName("Message").Enums().ByName("ChildEnum"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto3_20180125.SiblingMessage))),
-		want: fileDescP3_20180125.Messages().ByName("SiblingMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto3_20180125.Message_ChildMessage))),
-		want: fileDescP3_20180125.Messages().ByName("Message").Messages().ByName("ChildMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto3_20180125.Message))),
-		want: fileDescP3_20180125.Messages().ByName("Message"),
-	}}...)
-
-	fileDescP2_20180430 := mustLoadFileDesc(new(proto2_20180430.Message).Descriptor())
-	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto2_20180430.SiblingEnum(0))),
-		want: fileDescP2_20180430.Enums().ByName("SiblingEnum"),
-	}, {
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto2_20180430.Message_ChildEnum(0))),
-		want: fileDescP2_20180430.Messages().ByName("Message").Enums().ByName("ChildEnum"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180430.SiblingMessage))),
-		want: fileDescP2_20180430.Messages().ByName("SiblingMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_ChildMessage))),
-		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("ChildMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message))),
-		want: fileDescP2_20180430.Messages().ByName("Message"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_NamedGroup))),
-		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("NamedGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_OptionalGroup))),
-		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_RequiredGroup))),
-		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_RepeatedGroup))),
-		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_OneofGroup))),
-		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("OneofGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_ExtensionOptionalGroup))),
-		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180430.Message_ExtensionRepeatedGroup))),
-		want: fileDescP2_20180430.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
-	}}...)
-
-	fileDescP3_20180430 := mustLoadFileDesc(new(proto3_20180430.Message).Descriptor())
-	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto3_20180430.SiblingEnum(0))),
-		want: fileDescP3_20180430.Enums().ByName("SiblingEnum"),
-	}, {
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto3_20180430.Message_ChildEnum(0))),
-		want: fileDescP3_20180430.Messages().ByName("Message").Enums().ByName("ChildEnum"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto3_20180430.SiblingMessage))),
-		want: fileDescP3_20180430.Messages().ByName("SiblingMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto3_20180430.Message_ChildMessage))),
-		want: fileDescP3_20180430.Messages().ByName("Message").Messages().ByName("ChildMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto3_20180430.Message))),
-		want: fileDescP3_20180430.Messages().ByName("Message"),
-	}}...)
-
-	fileDescP2_20180814 := mustLoadFileDesc(new(proto2_20180814.Message).Descriptor())
-	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto2_20180814.SiblingEnum(0))),
-		want: fileDescP2_20180814.Enums().ByName("SiblingEnum"),
-	}, {
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto2_20180814.Message_ChildEnum(0))),
-		want: fileDescP2_20180814.Messages().ByName("Message").Enums().ByName("ChildEnum"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180814.SiblingMessage))),
-		want: fileDescP2_20180814.Messages().ByName("SiblingMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_ChildMessage))),
-		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("ChildMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message))),
-		want: fileDescP2_20180814.Messages().ByName("Message"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_NamedGroup))),
-		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("NamedGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_OptionalGroup))),
-		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_RequiredGroup))),
-		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_RepeatedGroup))),
-		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_OneofGroup))),
-		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("OneofGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_ExtensionOptionalGroup))),
-		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20180814.Message_ExtensionRepeatedGroup))),
-		want: fileDescP2_20180814.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
-	}}...)
-
-	fileDescP3_20180814 := mustLoadFileDesc(new(proto3_20180814.Message).Descriptor())
-	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto3_20180814.SiblingEnum(0))),
-		want: fileDescP3_20180814.Enums().ByName("SiblingEnum"),
-	}, {
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto3_20180814.Message_ChildEnum(0))),
-		want: fileDescP3_20180814.Messages().ByName("Message").Enums().ByName("ChildEnum"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto3_20180814.SiblingMessage))),
-		want: fileDescP3_20180814.Messages().ByName("SiblingMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto3_20180814.Message_ChildMessage))),
-		want: fileDescP3_20180814.Messages().ByName("Message").Messages().ByName("ChildMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto3_20180814.Message))),
-		want: fileDescP3_20180814.Messages().ByName("Message"),
-	}}...)
-
-	fileDescP2_20190205 := mustLoadFileDesc(new(proto2_20190205.Message).Descriptor())
-	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto2_20190205.SiblingEnum(0))),
-		want: fileDescP2_20190205.Enums().ByName("SiblingEnum"),
-	}, {
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto2_20190205.Message_ChildEnum(0))),
-		want: fileDescP2_20190205.Messages().ByName("Message").Enums().ByName("ChildEnum"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20190205.SiblingMessage))),
-		want: fileDescP2_20190205.Messages().ByName("SiblingMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20190205.Message_ChildMessage))),
-		want: fileDescP2_20190205.Messages().ByName("Message").Messages().ByName("ChildMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20190205.Message))),
-		want: fileDescP2_20190205.Messages().ByName("Message"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20190205.Message_NamedGroup))),
-		want: fileDescP2_20190205.Messages().ByName("Message").Messages().ByName("NamedGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20190205.Message_OptionalGroup))),
-		want: fileDescP2_20190205.Messages().ByName("Message").Messages().ByName("OptionalGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20190205.Message_RequiredGroup))),
-		want: fileDescP2_20190205.Messages().ByName("Message").Messages().ByName("RequiredGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20190205.Message_RepeatedGroup))),
-		want: fileDescP2_20190205.Messages().ByName("Message").Messages().ByName("RepeatedGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20190205.Message_OneofGroup))),
-		want: fileDescP2_20190205.Messages().ByName("Message").Messages().ByName("OneofGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20190205.Message_ExtensionOptionalGroup))),
-		want: fileDescP2_20190205.Messages().ByName("Message").Messages().ByName("ExtensionOptionalGroup"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto2_20190205.Message_ExtensionRepeatedGroup))),
-		want: fileDescP2_20190205.Messages().ByName("Message").Messages().ByName("ExtensionRepeatedGroup"),
-	}}...)
-
-	fileDescP3_20190205 := mustLoadFileDesc(new(proto3_20190205.Message).Descriptor())
-	tests = append(tests, []struct{ got, want pref.Descriptor }{{
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto3_20190205.SiblingEnum(0))),
-		want: fileDescP3_20190205.Enums().ByName("SiblingEnum"),
-	}, {
-		got:  impl.LegacyLoadEnumDesc(reflect.TypeOf(proto3_20190205.Message_ChildEnum(0))),
-		want: fileDescP3_20190205.Messages().ByName("Message").Enums().ByName("ChildEnum"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto3_20190205.SiblingMessage))),
-		want: fileDescP3_20190205.Messages().ByName("SiblingMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto3_20190205.Message_ChildMessage))),
-		want: fileDescP3_20190205.Messages().ByName("Message").Messages().ByName("ChildMessage"),
-	}, {
-		got:  impl.LegacyLoadMessageDesc(reflect.TypeOf(new(proto3_20190205.Message))),
-		want: fileDescP3_20190205.Messages().ByName("Message"),
-	}}...)
-
-	// TODO: We need a test package to compare descriptors.
-	type list interface {
-		Len() int
-		pragma.DoNotImplement
-	}
-	opts := cmp.Options{
-		cmp.Transformer("", func(x list) []interface{} {
-			out := make([]interface{}, x.Len())
-			v := reflect.ValueOf(x)
-			for i := 0; i < x.Len(); i++ {
-				m := v.MethodByName("Get")
-				out[i] = m.Call([]reflect.Value{reflect.ValueOf(i)})[0].Interface()
-			}
-			return out
-		}),
-		cmp.Transformer("", func(x pref.Descriptor) map[string]interface{} {
-			out := make(map[string]interface{})
-			v := reflect.ValueOf(x)
-			for i := 0; i < v.NumMethod(); i++ {
-				name := v.Type().Method(i).Name
-				if m := v.Method(i); m.Type().NumIn() == 0 && m.Type().NumOut() == 1 {
-					switch name {
-					case "ParentFile", "Parent":
-						// Ignore parents to avoid recursive cycle.
-					case "Index":
-						// Ignore index since legacy descriptors have no parent.
-					case "Options":
-						// Ignore descriptor options since protos are not cmperable.
-					case "Enums", "Messages", "Extensions":
-						// Ignore nested message and enum declarations since
-						// legacy descriptors are all created standalone.
-					case "HasJSONName":
-						// Ignore this since the semantics of the field has
-						// changed across protoc and protoc-gen-go releases.
-					case "ContainingOneof", "ContainingMessage", "Enum", "Message":
-						// Avoid descending into a dependency to avoid a cycle.
-						// Just record the full name if available.
-						//
-						// TODO: Cycle support in cmp would be useful here.
-						v := m.Call(nil)[0]
-						if !v.IsNil() {
-							out[name] = v.Interface().(pref.Descriptor).FullName()
-						}
-					default:
-						out[name] = m.Call(nil)[0].Interface()
-					}
-				}
-			}
-			return out
-		}),
-		cmp.Transformer("", func(v pref.Value) interface{} {
-			return v.Interface()
-		}),
-	}
-
-	for _, tt := range tests {
-		t.Run(string(tt.want.FullName()), func(t *testing.T) {
-			if diff := cmp.Diff(&tt.want, &tt.got, opts); diff != "" {
-				t.Errorf("descriptor mismatch (-want, +got):\n%s", diff)
-			}
-		})
-	}
-}
diff --git a/internal/impl/legacy_message.go b/internal/impl/legacy_message.go
deleted file mode 100644
index 029feee..0000000
--- a/internal/impl/legacy_message.go
+++ /dev/null
@@ -1,565 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"fmt"
-	"reflect"
-	"strings"
-	"sync"
-
-	"google.golang.org/protobuf/internal/descopts"
-	ptag "google.golang.org/protobuf/internal/encoding/tag"
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/internal/filedesc"
-	"google.golang.org/protobuf/internal/strs"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/runtime/protoiface"
-	piface "google.golang.org/protobuf/runtime/protoiface"
-)
-
-// legacyWrapMessage wraps v as a protoreflect.Message,
-// where v must be a *struct kind and not implement the v2 API already.
-func legacyWrapMessage(v reflect.Value) pref.Message {
-	t := v.Type()
-	if t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct {
-		return aberrantMessage{v: v}
-	}
-	mt := legacyLoadMessageInfo(t, "")
-	return mt.MessageOf(v.Interface())
-}
-
-// legacyLoadMessageType dynamically loads a protoreflect.Type for t,
-// where t must be not implement the v2 API already.
-// The provided name is used if it cannot be determined from the message.
-func legacyLoadMessageType(t reflect.Type, name pref.FullName) protoreflect.MessageType {
-	if t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct {
-		return aberrantMessageType{t}
-	}
-	return legacyLoadMessageInfo(t, name)
-}
-
-var legacyMessageTypeCache sync.Map // map[reflect.Type]*MessageInfo
-
-// legacyLoadMessageInfo dynamically loads a *MessageInfo for t,
-// where t must be a *struct kind and not implement the v2 API already.
-// The provided name is used if it cannot be determined from the message.
-func legacyLoadMessageInfo(t reflect.Type, name pref.FullName) *MessageInfo {
-	// Fast-path: check if a MessageInfo is cached for this concrete type.
-	if mt, ok := legacyMessageTypeCache.Load(t); ok {
-		return mt.(*MessageInfo)
-	}
-
-	// Slow-path: derive message descriptor and initialize MessageInfo.
-	mi := &MessageInfo{
-		Desc:          legacyLoadMessageDesc(t, name),
-		GoReflectType: t,
-	}
-
-	var hasMarshal, hasUnmarshal bool
-	v := reflect.Zero(t).Interface()
-	if _, hasMarshal = v.(legacyMarshaler); hasMarshal {
-		mi.methods.Marshal = legacyMarshal
-
-		// We have no way to tell whether the type's Marshal method
-		// supports deterministic serialization or not, but this
-		// preserves the v1 implementation's behavior of always
-		// calling Marshal methods when present.
-		mi.methods.Flags |= piface.SupportMarshalDeterministic
-	}
-	if _, hasUnmarshal = v.(legacyUnmarshaler); hasUnmarshal {
-		mi.methods.Unmarshal = legacyUnmarshal
-	}
-	if _, hasMerge := v.(legacyMerger); hasMerge || (hasMarshal && hasUnmarshal) {
-		mi.methods.Merge = legacyMerge
-	}
-
-	if mi, ok := legacyMessageTypeCache.LoadOrStore(t, mi); ok {
-		return mi.(*MessageInfo)
-	}
-	return mi
-}
-
-var legacyMessageDescCache sync.Map // map[reflect.Type]protoreflect.MessageDescriptor
-
-// LegacyLoadMessageDesc returns an MessageDescriptor derived from the Go type,
-// which should be a *struct kind and must not implement the v2 API already.
-//
-// This is exported for testing purposes.
-func LegacyLoadMessageDesc(t reflect.Type) pref.MessageDescriptor {
-	return legacyLoadMessageDesc(t, "")
-}
-func legacyLoadMessageDesc(t reflect.Type, name pref.FullName) pref.MessageDescriptor {
-	// Fast-path: check if a MessageDescriptor is cached for this concrete type.
-	if mi, ok := legacyMessageDescCache.Load(t); ok {
-		return mi.(pref.MessageDescriptor)
-	}
-
-	// Slow-path: initialize MessageDescriptor from the raw descriptor.
-	mv := reflect.Zero(t).Interface()
-	if _, ok := mv.(pref.ProtoMessage); ok {
-		panic(fmt.Sprintf("%v already implements proto.Message", t))
-	}
-	mdV1, ok := mv.(messageV1)
-	if !ok {
-		return aberrantLoadMessageDesc(t, name)
-	}
-
-	// If this is a dynamic message type where there isn't a 1-1 mapping between
-	// Go and protobuf types, calling the Descriptor method on the zero value of
-	// the message type isn't likely to work. If it panics, swallow the panic and
-	// continue as if the Descriptor method wasn't present.
-	b, idxs := func() ([]byte, []int) {
-		defer func() {
-			recover()
-		}()
-		return mdV1.Descriptor()
-	}()
-	if b == nil {
-		return aberrantLoadMessageDesc(t, name)
-	}
-
-	// If the Go type has no fields, then this might be a proto3 empty message
-	// from before the size cache was added. If there are any fields, check to
-	// see that at least one of them looks like something we generated.
-	if t.Elem().Kind() == reflect.Struct {
-		if nfield := t.Elem().NumField(); nfield > 0 {
-			hasProtoField := false
-			for i := 0; i < nfield; i++ {
-				f := t.Elem().Field(i)
-				if f.Tag.Get("protobuf") != "" || f.Tag.Get("protobuf_oneof") != "" || strings.HasPrefix(f.Name, "XXX_") {
-					hasProtoField = true
-					break
-				}
-			}
-			if !hasProtoField {
-				return aberrantLoadMessageDesc(t, name)
-			}
-		}
-	}
-
-	md := legacyLoadFileDesc(b).Messages().Get(idxs[0])
-	for _, i := range idxs[1:] {
-		md = md.Messages().Get(i)
-	}
-	if name != "" && md.FullName() != name {
-		panic(fmt.Sprintf("mismatching message name: got %v, want %v", md.FullName(), name))
-	}
-	if md, ok := legacyMessageDescCache.LoadOrStore(t, md); ok {
-		return md.(protoreflect.MessageDescriptor)
-	}
-	return md
-}
-
-var (
-	aberrantMessageDescLock  sync.Mutex
-	aberrantMessageDescCache map[reflect.Type]protoreflect.MessageDescriptor
-)
-
-// aberrantLoadMessageDesc returns an MessageDescriptor derived from the Go type,
-// which must not implement protoreflect.ProtoMessage or messageV1.
-//
-// This is a best-effort derivation of the message descriptor using the protobuf
-// tags on the struct fields.
-func aberrantLoadMessageDesc(t reflect.Type, name pref.FullName) pref.MessageDescriptor {
-	aberrantMessageDescLock.Lock()
-	defer aberrantMessageDescLock.Unlock()
-	if aberrantMessageDescCache == nil {
-		aberrantMessageDescCache = make(map[reflect.Type]protoreflect.MessageDescriptor)
-	}
-	return aberrantLoadMessageDescReentrant(t, name)
-}
-func aberrantLoadMessageDescReentrant(t reflect.Type, name pref.FullName) pref.MessageDescriptor {
-	// Fast-path: check if an MessageDescriptor is cached for this concrete type.
-	if md, ok := aberrantMessageDescCache[t]; ok {
-		return md
-	}
-
-	// Slow-path: construct a descriptor from the Go struct type (best-effort).
-	// Cache the MessageDescriptor early on so that we can resolve internal
-	// cyclic references.
-	md := &filedesc.Message{L2: new(filedesc.MessageL2)}
-	md.L0.FullName = aberrantDeriveMessageName(t, name)
-	md.L0.ParentFile = filedesc.SurrogateProto2
-	aberrantMessageDescCache[t] = md
-
-	if t.Kind() != reflect.Ptr || t.Elem().Kind() != reflect.Struct {
-		return md
-	}
-
-	// Try to determine if the message is using proto3 by checking scalars.
-	for i := 0; i < t.Elem().NumField(); i++ {
-		f := t.Elem().Field(i)
-		if tag := f.Tag.Get("protobuf"); tag != "" {
-			switch f.Type.Kind() {
-			case reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String:
-				md.L0.ParentFile = filedesc.SurrogateProto3
-			}
-			for _, s := range strings.Split(tag, ",") {
-				if s == "proto3" {
-					md.L0.ParentFile = filedesc.SurrogateProto3
-				}
-			}
-		}
-	}
-
-	// Obtain a list of oneof wrapper types.
-	var oneofWrappers []reflect.Type
-	for _, method := range []string{"XXX_OneofFuncs", "XXX_OneofWrappers"} {
-		if fn, ok := t.MethodByName(method); ok {
-			for _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) {
-				if vs, ok := v.Interface().([]interface{}); ok {
-					for _, v := range vs {
-						oneofWrappers = append(oneofWrappers, reflect.TypeOf(v))
-					}
-				}
-			}
-		}
-	}
-
-	// Obtain a list of the extension ranges.
-	if fn, ok := t.MethodByName("ExtensionRangeArray"); ok {
-		vs := fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))})[0]
-		for i := 0; i < vs.Len(); i++ {
-			v := vs.Index(i)
-			md.L2.ExtensionRanges.List = append(md.L2.ExtensionRanges.List, [2]pref.FieldNumber{
-				pref.FieldNumber(v.FieldByName("Start").Int()),
-				pref.FieldNumber(v.FieldByName("End").Int() + 1),
-			})
-			md.L2.ExtensionRangeOptions = append(md.L2.ExtensionRangeOptions, nil)
-		}
-	}
-
-	// Derive the message fields by inspecting the struct fields.
-	for i := 0; i < t.Elem().NumField(); i++ {
-		f := t.Elem().Field(i)
-		if tag := f.Tag.Get("protobuf"); tag != "" {
-			tagKey := f.Tag.Get("protobuf_key")
-			tagVal := f.Tag.Get("protobuf_val")
-			aberrantAppendField(md, f.Type, tag, tagKey, tagVal)
-		}
-		if tag := f.Tag.Get("protobuf_oneof"); tag != "" {
-			n := len(md.L2.Oneofs.List)
-			md.L2.Oneofs.List = append(md.L2.Oneofs.List, filedesc.Oneof{})
-			od := &md.L2.Oneofs.List[n]
-			od.L0.FullName = md.FullName().Append(pref.Name(tag))
-			od.L0.ParentFile = md.L0.ParentFile
-			od.L0.Parent = md
-			od.L0.Index = n
-
-			for _, t := range oneofWrappers {
-				if t.Implements(f.Type) {
-					f := t.Elem().Field(0)
-					if tag := f.Tag.Get("protobuf"); tag != "" {
-						aberrantAppendField(md, f.Type, tag, "", "")
-						fd := &md.L2.Fields.List[len(md.L2.Fields.List)-1]
-						fd.L1.ContainingOneof = od
-						od.L1.Fields.List = append(od.L1.Fields.List, fd)
-					}
-				}
-			}
-		}
-	}
-
-	return md
-}
-
-func aberrantDeriveMessageName(t reflect.Type, name pref.FullName) pref.FullName {
-	if name.IsValid() {
-		return name
-	}
-	func() {
-		defer func() { recover() }() // swallow possible nil panics
-		if m, ok := reflect.Zero(t).Interface().(interface{ XXX_MessageName() string }); ok {
-			name = pref.FullName(m.XXX_MessageName())
-		}
-	}()
-	if name.IsValid() {
-		return name
-	}
-	if t.Kind() == reflect.Ptr {
-		t = t.Elem()
-	}
-	return AberrantDeriveFullName(t)
-}
-
-func aberrantAppendField(md *filedesc.Message, goType reflect.Type, tag, tagKey, tagVal string) {
-	t := goType
-	isOptional := t.Kind() == reflect.Ptr && t.Elem().Kind() != reflect.Struct
-	isRepeated := t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8
-	if isOptional || isRepeated {
-		t = t.Elem()
-	}
-	fd := ptag.Unmarshal(tag, t, placeholderEnumValues{}).(*filedesc.Field)
-
-	// Append field descriptor to the message.
-	n := len(md.L2.Fields.List)
-	md.L2.Fields.List = append(md.L2.Fields.List, *fd)
-	fd = &md.L2.Fields.List[n]
-	fd.L0.FullName = md.FullName().Append(fd.Name())
-	fd.L0.ParentFile = md.L0.ParentFile
-	fd.L0.Parent = md
-	fd.L0.Index = n
-
-	if fd.L1.IsWeak || fd.L1.HasPacked {
-		fd.L1.Options = func() pref.ProtoMessage {
-			opts := descopts.Field.ProtoReflect().New()
-			if fd.L1.IsWeak {
-				opts.Set(opts.Descriptor().Fields().ByName("weak"), protoreflect.ValueOfBool(true))
-			}
-			if fd.L1.HasPacked {
-				opts.Set(opts.Descriptor().Fields().ByName("packed"), protoreflect.ValueOfBool(fd.L1.IsPacked))
-			}
-			return opts.Interface()
-		}
-	}
-
-	// Populate Enum and Message.
-	if fd.Enum() == nil && fd.Kind() == pref.EnumKind {
-		switch v := reflect.Zero(t).Interface().(type) {
-		case pref.Enum:
-			fd.L1.Enum = v.Descriptor()
-		default:
-			fd.L1.Enum = LegacyLoadEnumDesc(t)
-		}
-	}
-	if fd.Message() == nil && (fd.Kind() == pref.MessageKind || fd.Kind() == pref.GroupKind) {
-		switch v := reflect.Zero(t).Interface().(type) {
-		case pref.ProtoMessage:
-			fd.L1.Message = v.ProtoReflect().Descriptor()
-		case messageV1:
-			fd.L1.Message = LegacyLoadMessageDesc(t)
-		default:
-			if t.Kind() == reflect.Map {
-				n := len(md.L1.Messages.List)
-				md.L1.Messages.List = append(md.L1.Messages.List, filedesc.Message{L2: new(filedesc.MessageL2)})
-				md2 := &md.L1.Messages.List[n]
-				md2.L0.FullName = md.FullName().Append(pref.Name(strs.MapEntryName(string(fd.Name()))))
-				md2.L0.ParentFile = md.L0.ParentFile
-				md2.L0.Parent = md
-				md2.L0.Index = n
-
-				md2.L1.IsMapEntry = true
-				md2.L2.Options = func() pref.ProtoMessage {
-					opts := descopts.Message.ProtoReflect().New()
-					opts.Set(opts.Descriptor().Fields().ByName("map_entry"), protoreflect.ValueOfBool(true))
-					return opts.Interface()
-				}
-
-				aberrantAppendField(md2, t.Key(), tagKey, "", "")
-				aberrantAppendField(md2, t.Elem(), tagVal, "", "")
-
-				fd.L1.Message = md2
-				break
-			}
-			fd.L1.Message = aberrantLoadMessageDescReentrant(t, "")
-		}
-	}
-}
-
-type placeholderEnumValues struct {
-	protoreflect.EnumValueDescriptors
-}
-
-func (placeholderEnumValues) ByNumber(n pref.EnumNumber) pref.EnumValueDescriptor {
-	return filedesc.PlaceholderEnumValue(pref.FullName(fmt.Sprintf("UNKNOWN_%d", n)))
-}
-
-// legacyMarshaler is the proto.Marshaler interface superseded by protoiface.Methoder.
-type legacyMarshaler interface {
-	Marshal() ([]byte, error)
-}
-
-// legacyUnmarshaler is the proto.Unmarshaler interface superseded by protoiface.Methoder.
-type legacyUnmarshaler interface {
-	Unmarshal([]byte) error
-}
-
-// legacyMerger is the proto.Merger interface superseded by protoiface.Methoder.
-type legacyMerger interface {
-	Merge(protoiface.MessageV1)
-}
-
-var aberrantProtoMethods = &piface.Methods{
-	Marshal:   legacyMarshal,
-	Unmarshal: legacyUnmarshal,
-	Merge:     legacyMerge,
-
-	// We have no way to tell whether the type's Marshal method
-	// supports deterministic serialization or not, but this
-	// preserves the v1 implementation's behavior of always
-	// calling Marshal methods when present.
-	Flags: piface.SupportMarshalDeterministic,
-}
-
-func legacyMarshal(in piface.MarshalInput) (piface.MarshalOutput, error) {
-	v := in.Message.(unwrapper).protoUnwrap()
-	marshaler, ok := v.(legacyMarshaler)
-	if !ok {
-		return piface.MarshalOutput{}, errors.New("%T does not implement Marshal", v)
-	}
-	out, err := marshaler.Marshal()
-	if in.Buf != nil {
-		out = append(in.Buf, out...)
-	}
-	return piface.MarshalOutput{
-		Buf: out,
-	}, err
-}
-
-func legacyUnmarshal(in piface.UnmarshalInput) (piface.UnmarshalOutput, error) {
-	v := in.Message.(unwrapper).protoUnwrap()
-	unmarshaler, ok := v.(legacyUnmarshaler)
-	if !ok {
-		return piface.UnmarshalOutput{}, errors.New("%T does not implement Unmarshal", v)
-	}
-	return piface.UnmarshalOutput{}, unmarshaler.Unmarshal(in.Buf)
-}
-
-func legacyMerge(in piface.MergeInput) piface.MergeOutput {
-	// Check whether this supports the legacy merger.
-	dstv := in.Destination.(unwrapper).protoUnwrap()
-	merger, ok := dstv.(legacyMerger)
-	if ok {
-		merger.Merge(Export{}.ProtoMessageV1Of(in.Source))
-		return piface.MergeOutput{Flags: piface.MergeComplete}
-	}
-
-	// If legacy merger is unavailable, implement merge in terms of
-	// a marshal and unmarshal operation.
-	srcv := in.Source.(unwrapper).protoUnwrap()
-	marshaler, ok := srcv.(legacyMarshaler)
-	if !ok {
-		return piface.MergeOutput{}
-	}
-	dstv = in.Destination.(unwrapper).protoUnwrap()
-	unmarshaler, ok := dstv.(legacyUnmarshaler)
-	if !ok {
-		return piface.MergeOutput{}
-	}
-	if !in.Source.IsValid() {
-		// Legacy Marshal methods may not function on nil messages.
-		// Check for a typed nil source only after we confirm that
-		// legacy Marshal/Unmarshal methods are present, for
-		// consistency.
-		return piface.MergeOutput{Flags: piface.MergeComplete}
-	}
-	b, err := marshaler.Marshal()
-	if err != nil {
-		return piface.MergeOutput{}
-	}
-	err = unmarshaler.Unmarshal(b)
-	if err != nil {
-		return piface.MergeOutput{}
-	}
-	return piface.MergeOutput{Flags: piface.MergeComplete}
-}
-
-// aberrantMessageType implements MessageType for all types other than pointer-to-struct.
-type aberrantMessageType struct {
-	t reflect.Type
-}
-
-func (mt aberrantMessageType) New() pref.Message {
-	if mt.t.Kind() == reflect.Ptr {
-		return aberrantMessage{reflect.New(mt.t.Elem())}
-	}
-	return aberrantMessage{reflect.Zero(mt.t)}
-}
-func (mt aberrantMessageType) Zero() pref.Message {
-	return aberrantMessage{reflect.Zero(mt.t)}
-}
-func (mt aberrantMessageType) GoType() reflect.Type {
-	return mt.t
-}
-func (mt aberrantMessageType) Descriptor() pref.MessageDescriptor {
-	return LegacyLoadMessageDesc(mt.t)
-}
-
-// aberrantMessage implements Message for all types other than pointer-to-struct.
-//
-// When the underlying type implements legacyMarshaler or legacyUnmarshaler,
-// the aberrant Message can be marshaled or unmarshaled. Otherwise, there is
-// not much that can be done with values of this type.
-type aberrantMessage struct {
-	v reflect.Value
-}
-
-// Reset implements the v1 proto.Message.Reset method.
-func (m aberrantMessage) Reset() {
-	if mr, ok := m.v.Interface().(interface{ Reset() }); ok {
-		mr.Reset()
-		return
-	}
-	if m.v.Kind() == reflect.Ptr && !m.v.IsNil() {
-		m.v.Elem().Set(reflect.Zero(m.v.Type().Elem()))
-	}
-}
-
-func (m aberrantMessage) ProtoReflect() pref.Message {
-	return m
-}
-
-func (m aberrantMessage) Descriptor() pref.MessageDescriptor {
-	return LegacyLoadMessageDesc(m.v.Type())
-}
-func (m aberrantMessage) Type() pref.MessageType {
-	return aberrantMessageType{m.v.Type()}
-}
-func (m aberrantMessage) New() pref.Message {
-	if m.v.Type().Kind() == reflect.Ptr {
-		return aberrantMessage{reflect.New(m.v.Type().Elem())}
-	}
-	return aberrantMessage{reflect.Zero(m.v.Type())}
-}
-func (m aberrantMessage) Interface() pref.ProtoMessage {
-	return m
-}
-func (m aberrantMessage) Range(f func(pref.FieldDescriptor, pref.Value) bool) {
-	return
-}
-func (m aberrantMessage) Has(pref.FieldDescriptor) bool {
-	return false
-}
-func (m aberrantMessage) Clear(pref.FieldDescriptor) {
-	panic("invalid Message.Clear on " + string(m.Descriptor().FullName()))
-}
-func (m aberrantMessage) Get(fd pref.FieldDescriptor) pref.Value {
-	if fd.Default().IsValid() {
-		return fd.Default()
-	}
-	panic("invalid Message.Get on " + string(m.Descriptor().FullName()))
-}
-func (m aberrantMessage) Set(pref.FieldDescriptor, pref.Value) {
-	panic("invalid Message.Set on " + string(m.Descriptor().FullName()))
-}
-func (m aberrantMessage) Mutable(pref.FieldDescriptor) pref.Value {
-	panic("invalid Message.Mutable on " + string(m.Descriptor().FullName()))
-}
-func (m aberrantMessage) NewField(pref.FieldDescriptor) pref.Value {
-	panic("invalid Message.NewField on " + string(m.Descriptor().FullName()))
-}
-func (m aberrantMessage) WhichOneof(pref.OneofDescriptor) pref.FieldDescriptor {
-	panic("invalid Message.WhichOneof descriptor on " + string(m.Descriptor().FullName()))
-}
-func (m aberrantMessage) GetUnknown() pref.RawFields {
-	return nil
-}
-func (m aberrantMessage) SetUnknown(pref.RawFields) {
-	// SetUnknown discards its input on messages which don't support unknown field storage.
-}
-func (m aberrantMessage) IsValid() bool {
-	if m.v.Kind() == reflect.Ptr {
-		return !m.v.IsNil()
-	}
-	return false
-}
-func (m aberrantMessage) ProtoMethods() *piface.Methods {
-	return aberrantProtoMethods
-}
-func (m aberrantMessage) protoUnwrap() interface{} {
-	return m.v.Interface()
-}
diff --git a/internal/impl/legacy_test.go b/internal/impl/legacy_test.go
deleted file mode 100644
index f699568..0000000
--- a/internal/impl/legacy_test.go
+++ /dev/null
@@ -1,707 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl_test
-
-import (
-	"fmt"
-	"reflect"
-	"sync"
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-	"github.com/google/go-cmp/cmp/cmpopts"
-
-	"google.golang.org/protobuf/encoding/prototext"
-	pimpl "google.golang.org/protobuf/internal/impl"
-	"google.golang.org/protobuf/internal/pragma"
-	"google.golang.org/protobuf/proto"
-	pdesc "google.golang.org/protobuf/reflect/protodesc"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	preg "google.golang.org/protobuf/reflect/protoregistry"
-	piface "google.golang.org/protobuf/runtime/protoiface"
-
-	proto2_20180125 "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20180125_92554152"
-	"google.golang.org/protobuf/types/descriptorpb"
-)
-
-type LegacyTestMessage struct {
-	XXX_unrecognized       []byte
-	XXX_InternalExtensions map[int32]pimpl.ExtensionField
-}
-
-func (*LegacyTestMessage) Reset()         {}
-func (*LegacyTestMessage) String() string { return "" }
-func (*LegacyTestMessage) ProtoMessage()  {}
-func (*LegacyTestMessage) ExtensionRangeArray() []piface.ExtensionRangeV1 {
-	return []piface.ExtensionRangeV1{{Start: 10, End: 20}, {Start: 40, End: 80}, {Start: 10000, End: 20000}}
-}
-func (*LegacyTestMessage) Descriptor() ([]byte, []int) { return legacyFD, []int{0} }
-
-var legacyFD = func() []byte {
-	b, _ := proto.Marshal(pdesc.ToFileDescriptorProto(mustMakeFileDesc(`
-		name:   "legacy.proto"
-		syntax: "proto2"
-		message_type: [{
-			name:            "LegacyTestMessage"
-			extension_range: [{start:10 end:20}, {start:40 end:80}, {start:10000 end:20000}]
-		}]
-	`, nil)))
-	return pimpl.Export{}.CompressGZIP(b)
-}()
-
-func init() {
-	mt := pimpl.Export{}.MessageTypeOf((*LegacyTestMessage)(nil))
-	preg.GlobalFiles.RegisterFile(mt.Descriptor().ParentFile())
-	preg.GlobalTypes.RegisterMessage(mt)
-}
-
-func mustMakeExtensionType(fileDesc, extDesc string, t reflect.Type, r pdesc.Resolver) pref.ExtensionType {
-	s := fmt.Sprintf(`name:"test.proto" syntax:"proto2" %s extension:[{%s}]`, fileDesc, extDesc)
-	xd := mustMakeFileDesc(s, r).Extensions().Get(0)
-	xi := &pimpl.ExtensionInfo{}
-	pimpl.InitExtensionInfo(xi, xd, t)
-	return xi
-}
-
-func mustMakeFileDesc(s string, r pdesc.Resolver) pref.FileDescriptor {
-	pb := new(descriptorpb.FileDescriptorProto)
-	if err := prototext.Unmarshal([]byte(s), pb); err != nil {
-		panic(err)
-	}
-	fd, err := pdesc.NewFile(pb, r)
-	if err != nil {
-		panic(err)
-	}
-	return fd
-}
-
-var (
-	testParentDesc    = pimpl.Export{}.MessageDescriptorOf((*LegacyTestMessage)(nil))
-	testEnumV1Desc    = pimpl.Export{}.EnumDescriptorOf(proto2_20180125.Message_ChildEnum(0))
-	testMessageV1Desc = pimpl.Export{}.MessageDescriptorOf((*proto2_20180125.Message_ChildMessage)(nil))
-	testMessageV2Desc = enumMessagesType.Desc
-
-	depReg = newFileRegistry(
-		testParentDesc.ParentFile(),
-		testEnumV1Desc.ParentFile(),
-		testMessageV1Desc.ParentFile(),
-		enumProto2Desc.ParentFile(),
-		testMessageV2Desc.ParentFile(),
-	)
-	extensionTypes = []pref.ExtensionType{
-		mustMakeExtensionType(
-			`package:"fizz.buzz" dependency:"legacy.proto"`,
-			`name:"optional_bool" number:10000 label:LABEL_OPTIONAL type:TYPE_BOOL default_value:"true" extendee:".LegacyTestMessage"`,
-			reflect.TypeOf(false), depReg,
-		),
-		mustMakeExtensionType(
-			`package:"fizz.buzz" dependency:"legacy.proto"`,
-			`name:"optional_int32" number:10001 label:LABEL_OPTIONAL type:TYPE_INT32 default_value:"-12345" extendee:".LegacyTestMessage"`,
-			reflect.TypeOf(int32(0)), depReg,
-		),
-		mustMakeExtensionType(
-			`package:"fizz.buzz" dependency:"legacy.proto"`,
-			`name:"optional_uint32" number:10002 label:LABEL_OPTIONAL type:TYPE_UINT32 default_value:"3200" extendee:".LegacyTestMessage"`,
-			reflect.TypeOf(uint32(0)), depReg,
-		),
-		mustMakeExtensionType(
-			`package:"fizz.buzz" dependency:"legacy.proto"`,
-			`name:"optional_float" number:10003 label:LABEL_OPTIONAL type:TYPE_FLOAT default_value:"3.14159" extendee:".LegacyTestMessage"`,
-			reflect.TypeOf(float32(0)), depReg,
-		),
-		mustMakeExtensionType(
-			`package:"fizz.buzz" dependency:"legacy.proto"`,
-			`name:"optional_string" number:10004 label:LABEL_OPTIONAL type:TYPE_STRING default_value:"hello, \"world!\"\n" extendee:".LegacyTestMessage"`,
-			reflect.TypeOf(""), depReg,
-		),
-		mustMakeExtensionType(
-			`package:"fizz.buzz" dependency:"legacy.proto"`,
-			`name:"optional_bytes" number:10005 label:LABEL_OPTIONAL type:TYPE_BYTES default_value:"dead\\336\\255\\276\\357beef" extendee:".LegacyTestMessage"`,
-			reflect.TypeOf(([]byte)(nil)), depReg,
-		),
-		mustMakeExtensionType(
-			`package:"fizz.buzz" dependency:["legacy.proto", "proto2_20180125_92554152/test.proto"]`,
-			`name:"optional_enum_v1" number:10006 label:LABEL_OPTIONAL type:TYPE_ENUM type_name:".google.golang.org.proto2_20180125.Message.ChildEnum" default_value:"ALPHA" extendee:".LegacyTestMessage"`,
-			reflect.TypeOf(proto2_20180125.Message_ChildEnum(0)), depReg,
-		),
-		mustMakeExtensionType(
-			`package:"fizz.buzz" dependency:["legacy.proto", "proto2_20180125_92554152/test.proto"]`,
-			`name:"optional_message_v1" number:10007 label:LABEL_OPTIONAL type:TYPE_MESSAGE type_name:".google.golang.org.proto2_20180125.Message.ChildMessage" extendee:".LegacyTestMessage"`,
-			reflect.TypeOf((*proto2_20180125.Message_ChildMessage)(nil)), depReg,
-		),
-		mustMakeExtensionType(
-			`package:"fizz.buzz" dependency:["legacy.proto", "enum2.proto"]`,
-			`name:"optional_enum_v2" number:10008 label:LABEL_OPTIONAL type:TYPE_ENUM type_name:".EnumProto2" default_value:"DEAD" extendee:".LegacyTestMessage"`,
-			reflect.TypeOf(EnumProto2(0)), depReg,
-		),
-		mustMakeExtensionType(
-			`package:"fizz.buzz" dependency:["legacy.proto", "enum-messages.proto"]`,
-			`name:"optional_message_v2" number:10009 label:LABEL_OPTIONAL type:TYPE_MESSAGE type_name:".EnumMessages" extendee:".LegacyTestMessage"`,
-			reflect.TypeOf((*EnumMessages)(nil)), depReg,
-		),
-		mustMakeExtensionType(
-			`package:"fizz.buzz" dependency:"legacy.proto"`,
-			`name:"repeated_bool" number:10010 label:LABEL_REPEATED type:TYPE_BOOL extendee:".LegacyTestMessage"`,
-			reflect.TypeOf([]bool(nil)), depReg,
-		),
-		mustMakeExtensionType(
-			`package:"fizz.buzz" dependency:"legacy.proto"`,
-			`name:"repeated_int32" number:10011 label:LABEL_REPEATED type:TYPE_INT32 extendee:".LegacyTestMessage"`,
-			reflect.TypeOf([]int32(nil)), depReg,
-		),
-		mustMakeExtensionType(
-			`package:"fizz.buzz" dependency:"legacy.proto"`,
-			`name:"repeated_uint32" number:10012 label:LABEL_REPEATED type:TYPE_UINT32 extendee:".LegacyTestMessage"`,
-			reflect.TypeOf([]uint32(nil)), depReg,
-		),
-		mustMakeExtensionType(
-			`package:"fizz.buzz" dependency:"legacy.proto"`,
-			`name:"repeated_float" number:10013 label:LABEL_REPEATED type:TYPE_FLOAT extendee:".LegacyTestMessage"`,
-			reflect.TypeOf([]float32(nil)), depReg,
-		),
-		mustMakeExtensionType(
-			`package:"fizz.buzz" dependency:"legacy.proto"`,
-			`name:"repeated_string" number:10014 label:LABEL_REPEATED type:TYPE_STRING extendee:".LegacyTestMessage"`,
-			reflect.TypeOf([]string(nil)), depReg,
-		),
-		mustMakeExtensionType(
-			`package:"fizz.buzz" dependency:"legacy.proto"`,
-			`name:"repeated_bytes" number:10015 label:LABEL_REPEATED type:TYPE_BYTES extendee:".LegacyTestMessage"`,
-			reflect.TypeOf([][]byte(nil)), depReg,
-		),
-		mustMakeExtensionType(
-			`package:"fizz.buzz" dependency:["legacy.proto", "proto2_20180125_92554152/test.proto"]`,
-			`name:"repeated_enum_v1" number:10016 label:LABEL_REPEATED type:TYPE_ENUM type_name:".google.golang.org.proto2_20180125.Message.ChildEnum" extendee:".LegacyTestMessage"`,
-			reflect.TypeOf([]proto2_20180125.Message_ChildEnum(nil)), depReg,
-		),
-		mustMakeExtensionType(
-			`package:"fizz.buzz" dependency:["legacy.proto", "proto2_20180125_92554152/test.proto"]`,
-			`name:"repeated_message_v1" number:10017 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".google.golang.org.proto2_20180125.Message.ChildMessage" extendee:".LegacyTestMessage"`,
-			reflect.TypeOf([]*proto2_20180125.Message_ChildMessage(nil)), depReg,
-		),
-		mustMakeExtensionType(
-			`package:"fizz.buzz" dependency:["legacy.proto", "enum2.proto"]`,
-			`name:"repeated_enum_v2" number:10018 label:LABEL_REPEATED type:TYPE_ENUM type_name:".EnumProto2" extendee:".LegacyTestMessage"`,
-			reflect.TypeOf([]EnumProto2(nil)), depReg,
-		),
-		mustMakeExtensionType(
-			`package:"fizz.buzz" dependency:["legacy.proto", "enum-messages.proto"]`,
-			`name:"repeated_message_v2" number:10019 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".EnumMessages" extendee:".LegacyTestMessage"`,
-			reflect.TypeOf([]*EnumMessages(nil)), depReg,
-		),
-	}
-
-	extensionDescs = []*pimpl.ExtensionInfo{{
-		ExtendedType:  (*LegacyTestMessage)(nil),
-		ExtensionType: (*bool)(nil),
-		Field:         10000,
-		Name:          "fizz.buzz.optional_bool",
-		Tag:           "varint,10000,opt,name=optional_bool,def=1",
-		Filename:      "test.proto",
-	}, {
-		ExtendedType:  (*LegacyTestMessage)(nil),
-		ExtensionType: (*int32)(nil),
-		Field:         10001,
-		Name:          "fizz.buzz.optional_int32",
-		Tag:           "varint,10001,opt,name=optional_int32,def=-12345",
-		Filename:      "test.proto",
-	}, {
-		ExtendedType:  (*LegacyTestMessage)(nil),
-		ExtensionType: (*uint32)(nil),
-		Field:         10002,
-		Name:          "fizz.buzz.optional_uint32",
-		Tag:           "varint,10002,opt,name=optional_uint32,def=3200",
-		Filename:      "test.proto",
-	}, {
-		ExtendedType:  (*LegacyTestMessage)(nil),
-		ExtensionType: (*float32)(nil),
-		Field:         10003,
-		Name:          "fizz.buzz.optional_float",
-		Tag:           "fixed32,10003,opt,name=optional_float,def=3.14159",
-		Filename:      "test.proto",
-	}, {
-		ExtendedType:  (*LegacyTestMessage)(nil),
-		ExtensionType: (*string)(nil),
-		Field:         10004,
-		Name:          "fizz.buzz.optional_string",
-		Tag:           "bytes,10004,opt,name=optional_string,def=hello, \"world!\"\n",
-		Filename:      "test.proto",
-	}, {
-		ExtendedType:  (*LegacyTestMessage)(nil),
-		ExtensionType: ([]byte)(nil),
-		Field:         10005,
-		Name:          "fizz.buzz.optional_bytes",
-		Tag:           "bytes,10005,opt,name=optional_bytes,def=dead\\336\\255\\276\\357beef",
-		Filename:      "test.proto",
-	}, {
-		ExtendedType:  (*LegacyTestMessage)(nil),
-		ExtensionType: (*proto2_20180125.Message_ChildEnum)(nil),
-		Field:         10006,
-		Name:          "fizz.buzz.optional_enum_v1",
-		Tag:           "varint,10006,opt,name=optional_enum_v1,enum=google.golang.org.proto2_20180125.Message_ChildEnum,def=0",
-		Filename:      "test.proto",
-	}, {
-		ExtendedType:  (*LegacyTestMessage)(nil),
-		ExtensionType: (*proto2_20180125.Message_ChildMessage)(nil),
-		Field:         10007,
-		Name:          "fizz.buzz.optional_message_v1",
-		Tag:           "bytes,10007,opt,name=optional_message_v1",
-		Filename:      "test.proto",
-	}, {
-		ExtendedType:  (*LegacyTestMessage)(nil),
-		ExtensionType: (*EnumProto2)(nil),
-		Field:         10008,
-		Name:          "fizz.buzz.optional_enum_v2",
-		Tag:           "varint,10008,opt,name=optional_enum_v2,enum=EnumProto2,def=57005",
-		Filename:      "test.proto",
-	}, {
-		ExtendedType:  (*LegacyTestMessage)(nil),
-		ExtensionType: (*EnumMessages)(nil),
-		Field:         10009,
-		Name:          "fizz.buzz.optional_message_v2",
-		Tag:           "bytes,10009,opt,name=optional_message_v2",
-		Filename:      "test.proto",
-	}, {
-		ExtendedType:  (*LegacyTestMessage)(nil),
-		ExtensionType: ([]bool)(nil),
-		Field:         10010,
-		Name:          "fizz.buzz.repeated_bool",
-		Tag:           "varint,10010,rep,name=repeated_bool",
-		Filename:      "test.proto",
-	}, {
-		ExtendedType:  (*LegacyTestMessage)(nil),
-		ExtensionType: ([]int32)(nil),
-		Field:         10011,
-		Name:          "fizz.buzz.repeated_int32",
-		Tag:           "varint,10011,rep,name=repeated_int32",
-		Filename:      "test.proto",
-	}, {
-		ExtendedType:  (*LegacyTestMessage)(nil),
-		ExtensionType: ([]uint32)(nil),
-		Field:         10012,
-		Name:          "fizz.buzz.repeated_uint32",
-		Tag:           "varint,10012,rep,name=repeated_uint32",
-		Filename:      "test.proto",
-	}, {
-		ExtendedType:  (*LegacyTestMessage)(nil),
-		ExtensionType: ([]float32)(nil),
-		Field:         10013,
-		Name:          "fizz.buzz.repeated_float",
-		Tag:           "fixed32,10013,rep,name=repeated_float",
-		Filename:      "test.proto",
-	}, {
-		ExtendedType:  (*LegacyTestMessage)(nil),
-		ExtensionType: ([]string)(nil),
-		Field:         10014,
-		Name:          "fizz.buzz.repeated_string",
-		Tag:           "bytes,10014,rep,name=repeated_string",
-		Filename:      "test.proto",
-	}, {
-		ExtendedType:  (*LegacyTestMessage)(nil),
-		ExtensionType: ([][]byte)(nil),
-		Field:         10015,
-		Name:          "fizz.buzz.repeated_bytes",
-		Tag:           "bytes,10015,rep,name=repeated_bytes",
-		Filename:      "test.proto",
-	}, {
-		ExtendedType:  (*LegacyTestMessage)(nil),
-		ExtensionType: ([]proto2_20180125.Message_ChildEnum)(nil),
-		Field:         10016,
-		Name:          "fizz.buzz.repeated_enum_v1",
-		Tag:           "varint,10016,rep,name=repeated_enum_v1,enum=google.golang.org.proto2_20180125.Message_ChildEnum",
-		Filename:      "test.proto",
-	}, {
-		ExtendedType:  (*LegacyTestMessage)(nil),
-		ExtensionType: ([]*proto2_20180125.Message_ChildMessage)(nil),
-		Field:         10017,
-		Name:          "fizz.buzz.repeated_message_v1",
-		Tag:           "bytes,10017,rep,name=repeated_message_v1",
-		Filename:      "test.proto",
-	}, {
-		ExtendedType:  (*LegacyTestMessage)(nil),
-		ExtensionType: ([]EnumProto2)(nil),
-		Field:         10018,
-		Name:          "fizz.buzz.repeated_enum_v2",
-		Tag:           "varint,10018,rep,name=repeated_enum_v2,enum=EnumProto2",
-		Filename:      "test.proto",
-	}, {
-		ExtendedType:  (*LegacyTestMessage)(nil),
-		ExtensionType: ([]*EnumMessages)(nil),
-		Field:         10019,
-		Name:          "fizz.buzz.repeated_message_v2",
-		Tag:           "bytes,10019,rep,name=repeated_message_v2",
-		Filename:      "test.proto",
-	}}
-)
-
-func TestLegacyExtensions(t *testing.T) {
-	opts := cmp.Options{cmp.Comparer(func(x, y *proto2_20180125.Message_ChildMessage) bool {
-		return x == y // pointer compare messages for object identity
-	})}
-
-	m := pimpl.Export{}.MessageOf(new(LegacyTestMessage))
-
-	// Check that getting the zero value returns the default value for scalars,
-	// nil for singular messages, and an empty list for repeated fields.
-	defaultValues := map[int]interface{}{
-		0: bool(true),
-		1: int32(-12345),
-		2: uint32(3200),
-		3: float32(3.14159),
-		4: string("hello, \"world!\"\n"),
-		5: []byte("dead\xde\xad\xbe\xefbeef"),
-		6: proto2_20180125.Message_ALPHA,
-		7: nil,
-		8: EnumProto2(0xdead),
-		9: nil,
-	}
-	for i, xt := range extensionTypes {
-		var got interface{}
-		xd := xt.TypeDescriptor()
-		if !(xd.IsList() || xd.IsMap() || xd.Message() != nil) {
-			got = xt.InterfaceOf(m.Get(xd))
-		}
-		want := defaultValues[i]
-		if diff := cmp.Diff(want, got, opts); diff != "" {
-			t.Errorf("Message.Get(%d) mismatch (-want +got):\n%v", xd.Number(), diff)
-		}
-	}
-
-	// All fields should be unpopulated.
-	for _, xt := range extensionTypes {
-		xd := xt.TypeDescriptor()
-		if m.Has(xd) {
-			t.Errorf("Message.Has(%d) = true, want false", xd.Number())
-		}
-	}
-
-	// Set some values and append to values to the lists.
-	m1a := &proto2_20180125.Message_ChildMessage{F1: proto.String("m1a")}
-	m1b := &proto2_20180125.Message_ChildMessage{F1: proto.String("m2b")}
-	m2a := &EnumMessages{EnumP2: EnumProto2(0x1b).Enum()}
-	m2b := &EnumMessages{EnumP2: EnumProto2(0x2b).Enum()}
-	setValues := map[int]interface{}{
-		0:  bool(false),
-		1:  int32(-54321),
-		2:  uint32(6400),
-		3:  float32(2.71828),
-		4:  string("goodbye, \"world!\"\n"),
-		5:  []byte("live\xde\xad\xbe\xefchicken"),
-		6:  proto2_20180125.Message_CHARLIE,
-		7:  m1a,
-		8:  EnumProto2(0xbeef),
-		9:  m2a,
-		10: []bool{true},
-		11: []int32{-1000},
-		12: []uint32{1280},
-		13: []float32{1.6180},
-		14: []string{"zero"},
-		15: [][]byte{[]byte("zero")},
-		16: []proto2_20180125.Message_ChildEnum{proto2_20180125.Message_BRAVO},
-		17: []*proto2_20180125.Message_ChildMessage{m1b},
-		18: []EnumProto2{0xdead},
-		19: []*EnumMessages{m2b},
-	}
-	for i, xt := range extensionTypes {
-		m.Set(xt.TypeDescriptor(), xt.ValueOf(setValues[i]))
-	}
-	for i, xt := range extensionTypes[len(extensionTypes)/2:] {
-		v := extensionTypes[i].ValueOf(setValues[i])
-		m.Get(xt.TypeDescriptor()).List().Append(v)
-	}
-
-	// Get the values and check for equality.
-	getValues := map[int]interface{}{
-		0:  bool(false),
-		1:  int32(-54321),
-		2:  uint32(6400),
-		3:  float32(2.71828),
-		4:  string("goodbye, \"world!\"\n"),
-		5:  []byte("live\xde\xad\xbe\xefchicken"),
-		6:  proto2_20180125.Message_ChildEnum(proto2_20180125.Message_CHARLIE),
-		7:  m1a,
-		8:  EnumProto2(0xbeef),
-		9:  m2a,
-		10: []bool{true, false},
-		11: []int32{-1000, -54321},
-		12: []uint32{1280, 6400},
-		13: []float32{1.6180, 2.71828},
-		14: []string{"zero", "goodbye, \"world!\"\n"},
-		15: [][]byte{[]byte("zero"), []byte("live\xde\xad\xbe\xefchicken")},
-		16: []proto2_20180125.Message_ChildEnum{proto2_20180125.Message_BRAVO, proto2_20180125.Message_CHARLIE},
-		17: []*proto2_20180125.Message_ChildMessage{m1b, m1a},
-		18: []EnumProto2{0xdead, 0xbeef},
-		19: []*EnumMessages{m2b, m2a},
-	}
-	for i, xt := range extensionTypes {
-		xd := xt.TypeDescriptor()
-		got := xt.InterfaceOf(m.Get(xd))
-		want := getValues[i]
-		if diff := cmp.Diff(want, got, opts); diff != "" {
-			t.Errorf("Message.Get(%d) mismatch (-want +got):\n%v", xd.Number(), diff)
-		}
-	}
-
-	// Clear all singular fields and truncate all repeated fields.
-	for _, xt := range extensionTypes[:len(extensionTypes)/2] {
-		m.Clear(xt.TypeDescriptor())
-	}
-	for _, xt := range extensionTypes[len(extensionTypes)/2:] {
-		m.Get(xt.TypeDescriptor()).List().Truncate(0)
-	}
-
-	// Clear all repeated fields.
-	for _, xt := range extensionTypes[len(extensionTypes)/2:] {
-		m.Clear(xt.TypeDescriptor())
-	}
-}
-
-func TestLegacyExtensionConvert(t *testing.T) {
-	for i := range extensionTypes {
-		i := i
-		t.Run("", func(t *testing.T) {
-			t.Parallel()
-
-			wantType := extensionTypes[i]
-			wantDesc := extensionDescs[i]
-			gotType := (pref.ExtensionType)(wantDesc)
-			gotDesc := wantType.(*pimpl.ExtensionInfo)
-
-			// Concurrently call accessors to trigger possible races.
-			for _, xt := range []pref.ExtensionType{wantType, wantDesc} {
-				xt := xt
-				go func() { xt.New() }()
-				go func() { xt.Zero() }()
-				go func() { xt.TypeDescriptor() }()
-			}
-
-			// TODO: We need a test package to compare descriptors.
-			type list interface {
-				Len() int
-				pragma.DoNotImplement
-			}
-			opts := cmp.Options{
-				cmp.Comparer(func(x, y reflect.Type) bool {
-					return x == y
-				}),
-				cmp.Transformer("", func(x list) []interface{} {
-					out := make([]interface{}, x.Len())
-					v := reflect.ValueOf(x)
-					for i := 0; i < x.Len(); i++ {
-						m := v.MethodByName("Get")
-						out[i] = m.Call([]reflect.Value{reflect.ValueOf(i)})[0].Interface()
-					}
-					return out
-				}),
-				cmp.Transformer("", func(x pref.Descriptor) map[string]interface{} {
-					out := make(map[string]interface{})
-					v := reflect.ValueOf(x)
-					for i := 0; i < v.NumMethod(); i++ {
-						name := v.Type().Method(i).Name
-						if m := v.Method(i); m.Type().NumIn() == 0 && m.Type().NumOut() == 1 {
-							switch name {
-							case "ParentFile", "Parent":
-							// Ignore parents to avoid recursive cycle.
-							case "Options":
-								// Ignore descriptor options since protos are not cmperable.
-							case "ContainingOneof", "ContainingMessage", "Enum", "Message":
-								// Avoid descending into a dependency to avoid a cycle.
-								// Just record the full name if available.
-								//
-								// TODO: Cycle support in cmp would be useful here.
-								v := m.Call(nil)[0]
-								if !v.IsNil() {
-									out[name] = v.Interface().(pref.Descriptor).FullName()
-								}
-							case "Type":
-								// Ignore ExtensionTypeDescriptor.Type method to avoid cycle.
-							default:
-								out[name] = m.Call(nil)[0].Interface()
-							}
-						}
-					}
-					return out
-				}),
-				cmp.Transformer("", func(xt pref.ExtensionType) map[string]interface{} {
-					return map[string]interface{}{
-						"Descriptor": xt.TypeDescriptor(),
-					}
-				}),
-				cmp.Transformer("", func(v pref.Value) interface{} {
-					return v.Interface()
-				}),
-			}
-			if diff := cmp.Diff(&wantType, &gotType, opts); diff != "" {
-				t.Errorf("ExtensionType mismatch (-want, +got):\n%v", diff)
-			}
-
-			opts = cmp.Options{
-				cmpopts.IgnoreFields(pimpl.ExtensionInfo{}, "ExtensionType"),
-				cmpopts.IgnoreUnexported(pimpl.ExtensionInfo{}),
-			}
-			if diff := cmp.Diff(wantDesc, gotDesc, opts); diff != "" {
-				t.Errorf("ExtensionDesc mismatch (-want, +got):\n%v", diff)
-			}
-		})
-	}
-}
-
-type (
-	MessageA struct {
-		A1 *MessageA `protobuf:"bytes,1,req,name=a1"`
-		A2 *MessageB `protobuf:"bytes,2,req,name=a2"`
-		A3 Enum      `protobuf:"varint,3,opt,name=a3,enum=legacy.Enum"`
-	}
-	MessageB struct {
-		B1 *MessageA `protobuf:"bytes,1,req,name=b1"`
-		B2 *MessageB `protobuf:"bytes,2,req,name=b2"`
-		B3 Enum      `protobuf:"varint,3,opt,name=b3,enum=legacy.Enum"`
-	}
-	Enum int32
-)
-
-func (*MessageA) Reset()                      { panic("not implemented") }
-func (*MessageA) String() string              { panic("not implemented") }
-func (*MessageA) ProtoMessage()               { panic("not implemented") }
-func (*MessageA) Descriptor() ([]byte, []int) { return concurrentFD, []int{0} }
-
-func (*MessageB) Reset()                      { panic("not implemented") }
-func (*MessageB) String() string              { panic("not implemented") }
-func (*MessageB) ProtoMessage()               { panic("not implemented") }
-func (*MessageB) Descriptor() ([]byte, []int) { return concurrentFD, []int{1} }
-
-func (Enum) EnumDescriptor() ([]byte, []int) { return concurrentFD, []int{0} }
-
-var concurrentFD = func() []byte {
-	b, _ := proto.Marshal(pdesc.ToFileDescriptorProto(mustMakeFileDesc(`
-		name:    "concurrent.proto"
-		syntax:  "proto2"
-		package: "legacy"
-		message_type: [{
-			name: "MessageA"
-			field: [
-				{name:"a1" number:1 label:LABEL_REQUIRED type:TYPE_MESSAGE type_name:".legacy.MessageA"},
-				{name:"a2" number:2 label:LABEL_REQUIRED type:TYPE_MESSAGE type_name:".legacy.MessageB"},
-				{name:"a3" number:3 label:LABEL_OPTIONAL type:TYPE_ENUM    type_name:".legacy.Enum"}
-			]
-		}, {
-			name: "MessageB"
-			field: [
-				{name:"a1" number:1 label:LABEL_REQUIRED type:TYPE_MESSAGE type_name:".legacy.MessageA"},
-				{name:"a2" number:2 label:LABEL_REQUIRED type:TYPE_MESSAGE type_name:".legacy.MessageB"},
-				{name:"a3" number:3 label:LABEL_OPTIONAL type:TYPE_ENUM    type_name:".legacy.Enum"}
-			]
-		}]
-		enum_type: [{
-			name:  "Enum"
-			value: [{name:"FOO" number:500}]
-		}]
-	`, nil)))
-	return pimpl.Export{}.CompressGZIP(b)
-}()
-
-// TestLegacyConcurrentInit tests that concurrent wrapping of multiple legacy types
-// results in the exact same descriptor being created.
-func TestLegacyConcurrentInit(t *testing.T) {
-	const numParallel = 5
-	var messageATypes [numParallel]pref.MessageType
-	var messageBTypes [numParallel]pref.MessageType
-	var enumDescs [numParallel]pref.EnumDescriptor
-
-	// Concurrently load message and enum types.
-	var wg sync.WaitGroup
-	for i := 0; i < numParallel; i++ {
-		i := i
-		wg.Add(3)
-		go func() {
-			defer wg.Done()
-			messageATypes[i] = pimpl.Export{}.MessageTypeOf((*MessageA)(nil))
-		}()
-		go func() {
-			defer wg.Done()
-			messageBTypes[i] = pimpl.Export{}.MessageTypeOf((*MessageB)(nil))
-		}()
-		go func() {
-			defer wg.Done()
-			enumDescs[i] = pimpl.Export{}.EnumDescriptorOf(Enum(0))
-		}()
-	}
-	wg.Wait()
-
-	var (
-		wantMTA = messageATypes[0]
-		wantMDA = messageATypes[0].Descriptor().Fields().ByNumber(1).Message()
-		wantMTB = messageBTypes[0]
-		wantMDB = messageBTypes[0].Descriptor().Fields().ByNumber(2).Message()
-		wantED  = messageATypes[0].Descriptor().Fields().ByNumber(3).Enum()
-	)
-
-	for _, gotMT := range messageATypes[1:] {
-		if gotMT != wantMTA {
-			t.Error("MessageType(MessageA) mismatch")
-		}
-		if gotMDA := gotMT.Descriptor().Fields().ByNumber(1).Message(); gotMDA != wantMDA {
-			t.Error("MessageDescriptor(MessageA) mismatch")
-		}
-		if gotMDB := gotMT.Descriptor().Fields().ByNumber(2).Message(); gotMDB != wantMDB {
-			t.Error("MessageDescriptor(MessageB) mismatch")
-		}
-		if gotED := gotMT.Descriptor().Fields().ByNumber(3).Enum(); gotED != wantED {
-			t.Error("EnumDescriptor(Enum) mismatch")
-		}
-	}
-	for _, gotMT := range messageBTypes[1:] {
-		if gotMT != wantMTB {
-			t.Error("MessageType(MessageB) mismatch")
-		}
-		if gotMDA := gotMT.Descriptor().Fields().ByNumber(1).Message(); gotMDA != wantMDA {
-			t.Error("MessageDescriptor(MessageA) mismatch")
-		}
-		if gotMDB := gotMT.Descriptor().Fields().ByNumber(2).Message(); gotMDB != wantMDB {
-			t.Error("MessageDescriptor(MessageB) mismatch")
-		}
-		if gotED := gotMT.Descriptor().Fields().ByNumber(3).Enum(); gotED != wantED {
-			t.Error("EnumDescriptor(Enum) mismatch")
-		}
-	}
-	for _, gotED := range enumDescs[1:] {
-		if gotED != wantED {
-			t.Error("EnumType(Enum) mismatch")
-		}
-	}
-}
-
-type LegacyTestMessageName1 struct{}
-
-func (*LegacyTestMessageName1) Reset()         { panic("not implemented") }
-func (*LegacyTestMessageName1) String() string { panic("not implemented") }
-func (*LegacyTestMessageName1) ProtoMessage()  { panic("not implemented") }
-
-type LegacyTestMessageName2 struct{}
-
-func (*LegacyTestMessageName2) Reset()         { panic("not implemented") }
-func (*LegacyTestMessageName2) String() string { panic("not implemented") }
-func (*LegacyTestMessageName2) ProtoMessage()  { panic("not implemented") }
-func (*LegacyTestMessageName2) XXX_MessageName() string {
-	return "google.golang.org.LegacyTestMessageName2"
-}
-
-func TestLegacyMessageName(t *testing.T) {
-	tests := []struct {
-		in          piface.MessageV1
-		suggestName pref.FullName
-		wantName    pref.FullName
-	}{
-		{new(LegacyTestMessageName1), "google.golang.org.LegacyTestMessageName1", "google.golang.org.LegacyTestMessageName1"},
-		{new(LegacyTestMessageName2), "", "google.golang.org.LegacyTestMessageName2"},
-	}
-
-	for _, tt := range tests {
-		mt := pimpl.Export{}.LegacyMessageTypeOf(tt.in, tt.suggestName)
-		if got := mt.Descriptor().FullName(); got != tt.wantName {
-			t.Errorf("type: %T, name mismatch: got %v, want %v", tt.in, got, tt.wantName)
-		}
-	}
-}
diff --git a/internal/impl/merge.go b/internal/impl/merge.go
deleted file mode 100644
index c65bbc0..0000000
--- a/internal/impl/merge.go
+++ /dev/null
@@ -1,176 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"fmt"
-	"reflect"
-
-	"google.golang.org/protobuf/proto"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	piface "google.golang.org/protobuf/runtime/protoiface"
-)
-
-type mergeOptions struct{}
-
-func (o mergeOptions) Merge(dst, src proto.Message) {
-	proto.Merge(dst, src)
-}
-
-// merge is protoreflect.Methods.Merge.
-func (mi *MessageInfo) merge(in piface.MergeInput) piface.MergeOutput {
-	dp, ok := mi.getPointer(in.Destination)
-	if !ok {
-		return piface.MergeOutput{}
-	}
-	sp, ok := mi.getPointer(in.Source)
-	if !ok {
-		return piface.MergeOutput{}
-	}
-	mi.mergePointer(dp, sp, mergeOptions{})
-	return piface.MergeOutput{Flags: piface.MergeComplete}
-}
-
-func (mi *MessageInfo) mergePointer(dst, src pointer, opts mergeOptions) {
-	mi.init()
-	if dst.IsNil() {
-		panic(fmt.Sprintf("invalid value: merging into nil message"))
-	}
-	if src.IsNil() {
-		return
-	}
-	for _, f := range mi.orderedCoderFields {
-		if f.funcs.merge == nil {
-			continue
-		}
-		sfptr := src.Apply(f.offset)
-		if f.isPointer && sfptr.Elem().IsNil() {
-			continue
-		}
-		f.funcs.merge(dst.Apply(f.offset), sfptr, f, opts)
-	}
-	if mi.extensionOffset.IsValid() {
-		sext := src.Apply(mi.extensionOffset).Extensions()
-		dext := dst.Apply(mi.extensionOffset).Extensions()
-		if *dext == nil {
-			*dext = make(map[int32]ExtensionField)
-		}
-		for num, sx := range *sext {
-			xt := sx.Type()
-			xi := getExtensionFieldInfo(xt)
-			if xi.funcs.merge == nil {
-				continue
-			}
-			dx := (*dext)[num]
-			var dv pref.Value
-			if dx.Type() == sx.Type() {
-				dv = dx.Value()
-			}
-			if !dv.IsValid() && xi.unmarshalNeedsValue {
-				dv = xt.New()
-			}
-			dv = xi.funcs.merge(dv, sx.Value(), opts)
-			dx.Set(sx.Type(), dv)
-			(*dext)[num] = dx
-		}
-	}
-	if mi.unknownOffset.IsValid() {
-		su := mi.getUnknownBytes(src)
-		if su != nil && len(*su) > 0 {
-			du := mi.mutableUnknownBytes(dst)
-			*du = append(*du, *su...)
-		}
-	}
-}
-
-func mergeScalarValue(dst, src pref.Value, opts mergeOptions) pref.Value {
-	return src
-}
-
-func mergeBytesValue(dst, src pref.Value, opts mergeOptions) pref.Value {
-	return pref.ValueOfBytes(append(emptyBuf[:], src.Bytes()...))
-}
-
-func mergeListValue(dst, src pref.Value, opts mergeOptions) pref.Value {
-	dstl := dst.List()
-	srcl := src.List()
-	for i, llen := 0, srcl.Len(); i < llen; i++ {
-		dstl.Append(srcl.Get(i))
-	}
-	return dst
-}
-
-func mergeBytesListValue(dst, src pref.Value, opts mergeOptions) pref.Value {
-	dstl := dst.List()
-	srcl := src.List()
-	for i, llen := 0, srcl.Len(); i < llen; i++ {
-		sb := srcl.Get(i).Bytes()
-		db := append(emptyBuf[:], sb...)
-		dstl.Append(pref.ValueOfBytes(db))
-	}
-	return dst
-}
-
-func mergeMessageListValue(dst, src pref.Value, opts mergeOptions) pref.Value {
-	dstl := dst.List()
-	srcl := src.List()
-	for i, llen := 0, srcl.Len(); i < llen; i++ {
-		sm := srcl.Get(i).Message()
-		dm := proto.Clone(sm.Interface()).ProtoReflect()
-		dstl.Append(pref.ValueOfMessage(dm))
-	}
-	return dst
-}
-
-func mergeMessageValue(dst, src pref.Value, opts mergeOptions) pref.Value {
-	opts.Merge(dst.Message().Interface(), src.Message().Interface())
-	return dst
-}
-
-func mergeMessage(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {
-	if f.mi != nil {
-		if dst.Elem().IsNil() {
-			dst.SetPointer(pointerOfValue(reflect.New(f.mi.GoReflectType.Elem())))
-		}
-		f.mi.mergePointer(dst.Elem(), src.Elem(), opts)
-	} else {
-		dm := dst.AsValueOf(f.ft).Elem()
-		sm := src.AsValueOf(f.ft).Elem()
-		if dm.IsNil() {
-			dm.Set(reflect.New(f.ft.Elem()))
-		}
-		opts.Merge(asMessage(dm), asMessage(sm))
-	}
-}
-
-func mergeMessageSlice(dst, src pointer, f *coderFieldInfo, opts mergeOptions) {
-	for _, sp := range src.PointerSlice() {
-		dm := reflect.New(f.ft.Elem().Elem())
-		if f.mi != nil {
-			f.mi.mergePointer(pointerOfValue(dm), sp, opts)
-		} else {
-			opts.Merge(asMessage(dm), asMessage(sp.AsValueOf(f.ft.Elem().Elem())))
-		}
-		dst.AppendPointerSlice(pointerOfValue(dm))
-	}
-}
-
-func mergeBytes(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	*dst.Bytes() = append(emptyBuf[:], *src.Bytes()...)
-}
-
-func mergeBytesNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	v := *src.Bytes()
-	if len(v) > 0 {
-		*dst.Bytes() = append(emptyBuf[:], v...)
-	}
-}
-
-func mergeBytesSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	ds := dst.BytesSlice()
-	for _, v := range *src.BytesSlice() {
-		*ds = append(*ds, append(emptyBuf[:], v...))
-	}
-}
diff --git a/internal/impl/merge_gen.go b/internal/impl/merge_gen.go
deleted file mode 100644
index 8816c27..0000000
--- a/internal/impl/merge_gen.go
+++ /dev/null
@@ -1,209 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by generate-types. DO NOT EDIT.
-
-package impl
-
-import ()
-
-func mergeBool(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	*dst.Bool() = *src.Bool()
-}
-
-func mergeBoolNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	v := *src.Bool()
-	if v != false {
-		*dst.Bool() = v
-	}
-}
-
-func mergeBoolPtr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	p := *src.BoolPtr()
-	if p != nil {
-		v := *p
-		*dst.BoolPtr() = &v
-	}
-}
-
-func mergeBoolSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	ds := dst.BoolSlice()
-	ss := src.BoolSlice()
-	*ds = append(*ds, *ss...)
-}
-
-func mergeInt32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	*dst.Int32() = *src.Int32()
-}
-
-func mergeInt32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	v := *src.Int32()
-	if v != 0 {
-		*dst.Int32() = v
-	}
-}
-
-func mergeInt32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	p := *src.Int32Ptr()
-	if p != nil {
-		v := *p
-		*dst.Int32Ptr() = &v
-	}
-}
-
-func mergeInt32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	ds := dst.Int32Slice()
-	ss := src.Int32Slice()
-	*ds = append(*ds, *ss...)
-}
-
-func mergeUint32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	*dst.Uint32() = *src.Uint32()
-}
-
-func mergeUint32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	v := *src.Uint32()
-	if v != 0 {
-		*dst.Uint32() = v
-	}
-}
-
-func mergeUint32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	p := *src.Uint32Ptr()
-	if p != nil {
-		v := *p
-		*dst.Uint32Ptr() = &v
-	}
-}
-
-func mergeUint32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	ds := dst.Uint32Slice()
-	ss := src.Uint32Slice()
-	*ds = append(*ds, *ss...)
-}
-
-func mergeInt64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	*dst.Int64() = *src.Int64()
-}
-
-func mergeInt64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	v := *src.Int64()
-	if v != 0 {
-		*dst.Int64() = v
-	}
-}
-
-func mergeInt64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	p := *src.Int64Ptr()
-	if p != nil {
-		v := *p
-		*dst.Int64Ptr() = &v
-	}
-}
-
-func mergeInt64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	ds := dst.Int64Slice()
-	ss := src.Int64Slice()
-	*ds = append(*ds, *ss...)
-}
-
-func mergeUint64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	*dst.Uint64() = *src.Uint64()
-}
-
-func mergeUint64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	v := *src.Uint64()
-	if v != 0 {
-		*dst.Uint64() = v
-	}
-}
-
-func mergeUint64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	p := *src.Uint64Ptr()
-	if p != nil {
-		v := *p
-		*dst.Uint64Ptr() = &v
-	}
-}
-
-func mergeUint64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	ds := dst.Uint64Slice()
-	ss := src.Uint64Slice()
-	*ds = append(*ds, *ss...)
-}
-
-func mergeFloat32(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	*dst.Float32() = *src.Float32()
-}
-
-func mergeFloat32NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	v := *src.Float32()
-	if v != 0 {
-		*dst.Float32() = v
-	}
-}
-
-func mergeFloat32Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	p := *src.Float32Ptr()
-	if p != nil {
-		v := *p
-		*dst.Float32Ptr() = &v
-	}
-}
-
-func mergeFloat32Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	ds := dst.Float32Slice()
-	ss := src.Float32Slice()
-	*ds = append(*ds, *ss...)
-}
-
-func mergeFloat64(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	*dst.Float64() = *src.Float64()
-}
-
-func mergeFloat64NoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	v := *src.Float64()
-	if v != 0 {
-		*dst.Float64() = v
-	}
-}
-
-func mergeFloat64Ptr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	p := *src.Float64Ptr()
-	if p != nil {
-		v := *p
-		*dst.Float64Ptr() = &v
-	}
-}
-
-func mergeFloat64Slice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	ds := dst.Float64Slice()
-	ss := src.Float64Slice()
-	*ds = append(*ds, *ss...)
-}
-
-func mergeString(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	*dst.String() = *src.String()
-}
-
-func mergeStringNoZero(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	v := *src.String()
-	if v != "" {
-		*dst.String() = v
-	}
-}
-
-func mergeStringPtr(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	p := *src.StringPtr()
-	if p != nil {
-		v := *p
-		*dst.StringPtr() = &v
-	}
-}
-
-func mergeStringSlice(dst, src pointer, _ *coderFieldInfo, _ mergeOptions) {
-	ds := dst.StringSlice()
-	ss := src.StringSlice()
-	*ds = append(*ds, *ss...)
-}
diff --git a/internal/impl/message.go b/internal/impl/message.go
deleted file mode 100644
index a104e28..0000000
--- a/internal/impl/message.go
+++ /dev/null
@@ -1,276 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"fmt"
-	"reflect"
-	"strconv"
-	"strings"
-	"sync"
-	"sync/atomic"
-
-	"google.golang.org/protobuf/internal/genid"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	preg "google.golang.org/protobuf/reflect/protoregistry"
-)
-
-// MessageInfo provides protobuf related functionality for a given Go type
-// that represents a message. A given instance of MessageInfo is tied to
-// exactly one Go type, which must be a pointer to a struct type.
-//
-// The exported fields must be populated before any methods are called
-// and cannot be mutated after set.
-type MessageInfo struct {
-	// GoReflectType is the underlying message Go type and must be populated.
-	GoReflectType reflect.Type // pointer to struct
-
-	// Desc is the underlying message descriptor type and must be populated.
-	Desc pref.MessageDescriptor
-
-	// Exporter must be provided in a purego environment in order to provide
-	// access to unexported fields.
-	Exporter exporter
-
-	// OneofWrappers is list of pointers to oneof wrapper struct types.
-	OneofWrappers []interface{}
-
-	initMu   sync.Mutex // protects all unexported fields
-	initDone uint32
-
-	reflectMessageInfo // for reflection implementation
-	coderMessageInfo   // for fast-path method implementations
-}
-
-// exporter is a function that returns a reference to the ith field of v,
-// where v is a pointer to a struct. It returns nil if it does not support
-// exporting the requested field (e.g., already exported).
-type exporter func(v interface{}, i int) interface{}
-
-// getMessageInfo returns the MessageInfo for any message type that
-// is generated by our implementation of protoc-gen-go (for v2 and on).
-// If it is unable to obtain a MessageInfo, it returns nil.
-func getMessageInfo(mt reflect.Type) *MessageInfo {
-	m, ok := reflect.Zero(mt).Interface().(pref.ProtoMessage)
-	if !ok {
-		return nil
-	}
-	mr, ok := m.ProtoReflect().(interface{ ProtoMessageInfo() *MessageInfo })
-	if !ok {
-		return nil
-	}
-	return mr.ProtoMessageInfo()
-}
-
-func (mi *MessageInfo) init() {
-	// This function is called in the hot path. Inline the sync.Once logic,
-	// since allocating a closure for Once.Do is expensive.
-	// Keep init small to ensure that it can be inlined.
-	if atomic.LoadUint32(&mi.initDone) == 0 {
-		mi.initOnce()
-	}
-}
-
-func (mi *MessageInfo) initOnce() {
-	mi.initMu.Lock()
-	defer mi.initMu.Unlock()
-	if mi.initDone == 1 {
-		return
-	}
-
-	t := mi.GoReflectType
-	if t.Kind() != reflect.Ptr && t.Elem().Kind() != reflect.Struct {
-		panic(fmt.Sprintf("got %v, want *struct kind", t))
-	}
-	t = t.Elem()
-
-	si := mi.makeStructInfo(t)
-	mi.makeReflectFuncs(t, si)
-	mi.makeCoderMethods(t, si)
-
-	atomic.StoreUint32(&mi.initDone, 1)
-}
-
-// getPointer returns the pointer for a message, which should be of
-// the type of the MessageInfo. If the message is of a different type,
-// it returns ok==false.
-func (mi *MessageInfo) getPointer(m pref.Message) (p pointer, ok bool) {
-	switch m := m.(type) {
-	case *messageState:
-		return m.pointer(), m.messageInfo() == mi
-	case *messageReflectWrapper:
-		return m.pointer(), m.messageInfo() == mi
-	}
-	return pointer{}, false
-}
-
-type (
-	SizeCache       = int32
-	WeakFields      = map[int32]protoreflect.ProtoMessage
-	UnknownFields   = unknownFieldsA // TODO: switch to unknownFieldsB
-	unknownFieldsA  = []byte
-	unknownFieldsB  = *[]byte
-	ExtensionFields = map[int32]ExtensionField
-)
-
-var (
-	sizecacheType       = reflect.TypeOf(SizeCache(0))
-	weakFieldsType      = reflect.TypeOf(WeakFields(nil))
-	unknownFieldsAType  = reflect.TypeOf(unknownFieldsA(nil))
-	unknownFieldsBType  = reflect.TypeOf(unknownFieldsB(nil))
-	extensionFieldsType = reflect.TypeOf(ExtensionFields(nil))
-)
-
-type structInfo struct {
-	sizecacheOffset offset
-	sizecacheType   reflect.Type
-	weakOffset      offset
-	weakType        reflect.Type
-	unknownOffset   offset
-	unknownType     reflect.Type
-	extensionOffset offset
-	extensionType   reflect.Type
-
-	fieldsByNumber        map[pref.FieldNumber]reflect.StructField
-	oneofsByName          map[pref.Name]reflect.StructField
-	oneofWrappersByType   map[reflect.Type]pref.FieldNumber
-	oneofWrappersByNumber map[pref.FieldNumber]reflect.Type
-}
-
-func (mi *MessageInfo) makeStructInfo(t reflect.Type) structInfo {
-	si := structInfo{
-		sizecacheOffset: invalidOffset,
-		weakOffset:      invalidOffset,
-		unknownOffset:   invalidOffset,
-		extensionOffset: invalidOffset,
-
-		fieldsByNumber:        map[pref.FieldNumber]reflect.StructField{},
-		oneofsByName:          map[pref.Name]reflect.StructField{},
-		oneofWrappersByType:   map[reflect.Type]pref.FieldNumber{},
-		oneofWrappersByNumber: map[pref.FieldNumber]reflect.Type{},
-	}
-
-fieldLoop:
-	for i := 0; i < t.NumField(); i++ {
-		switch f := t.Field(i); f.Name {
-		case genid.SizeCache_goname, genid.SizeCacheA_goname:
-			if f.Type == sizecacheType {
-				si.sizecacheOffset = offsetOf(f, mi.Exporter)
-				si.sizecacheType = f.Type
-			}
-		case genid.WeakFields_goname, genid.WeakFieldsA_goname:
-			if f.Type == weakFieldsType {
-				si.weakOffset = offsetOf(f, mi.Exporter)
-				si.weakType = f.Type
-			}
-		case genid.UnknownFields_goname, genid.UnknownFieldsA_goname:
-			if f.Type == unknownFieldsAType || f.Type == unknownFieldsBType {
-				si.unknownOffset = offsetOf(f, mi.Exporter)
-				si.unknownType = f.Type
-			}
-		case genid.ExtensionFields_goname, genid.ExtensionFieldsA_goname, genid.ExtensionFieldsB_goname:
-			if f.Type == extensionFieldsType {
-				si.extensionOffset = offsetOf(f, mi.Exporter)
-				si.extensionType = f.Type
-			}
-		default:
-			for _, s := range strings.Split(f.Tag.Get("protobuf"), ",") {
-				if len(s) > 0 && strings.Trim(s, "0123456789") == "" {
-					n, _ := strconv.ParseUint(s, 10, 64)
-					si.fieldsByNumber[pref.FieldNumber(n)] = f
-					continue fieldLoop
-				}
-			}
-			if s := f.Tag.Get("protobuf_oneof"); len(s) > 0 {
-				si.oneofsByName[pref.Name(s)] = f
-				continue fieldLoop
-			}
-		}
-	}
-
-	// Derive a mapping of oneof wrappers to fields.
-	oneofWrappers := mi.OneofWrappers
-	for _, method := range []string{"XXX_OneofFuncs", "XXX_OneofWrappers"} {
-		if fn, ok := reflect.PtrTo(t).MethodByName(method); ok {
-			for _, v := range fn.Func.Call([]reflect.Value{reflect.Zero(fn.Type.In(0))}) {
-				if vs, ok := v.Interface().([]interface{}); ok {
-					oneofWrappers = vs
-				}
-			}
-		}
-	}
-	for _, v := range oneofWrappers {
-		tf := reflect.TypeOf(v).Elem()
-		f := tf.Field(0)
-		for _, s := range strings.Split(f.Tag.Get("protobuf"), ",") {
-			if len(s) > 0 && strings.Trim(s, "0123456789") == "" {
-				n, _ := strconv.ParseUint(s, 10, 64)
-				si.oneofWrappersByType[tf] = pref.FieldNumber(n)
-				si.oneofWrappersByNumber[pref.FieldNumber(n)] = tf
-				break
-			}
-		}
-	}
-
-	return si
-}
-
-func (mi *MessageInfo) New() protoreflect.Message {
-	return mi.MessageOf(reflect.New(mi.GoReflectType.Elem()).Interface())
-}
-func (mi *MessageInfo) Zero() protoreflect.Message {
-	return mi.MessageOf(reflect.Zero(mi.GoReflectType).Interface())
-}
-func (mi *MessageInfo) Descriptor() protoreflect.MessageDescriptor {
-	return mi.Desc
-}
-func (mi *MessageInfo) Enum(i int) protoreflect.EnumType {
-	mi.init()
-	fd := mi.Desc.Fields().Get(i)
-	return Export{}.EnumTypeOf(mi.fieldTypes[fd.Number()])
-}
-func (mi *MessageInfo) Message(i int) protoreflect.MessageType {
-	mi.init()
-	fd := mi.Desc.Fields().Get(i)
-	switch {
-	case fd.IsWeak():
-		mt, _ := preg.GlobalTypes.FindMessageByName(fd.Message().FullName())
-		return mt
-	case fd.IsMap():
-		return mapEntryType{fd.Message(), mi.fieldTypes[fd.Number()]}
-	default:
-		return Export{}.MessageTypeOf(mi.fieldTypes[fd.Number()])
-	}
-}
-
-type mapEntryType struct {
-	desc    protoreflect.MessageDescriptor
-	valType interface{} // zero value of enum or message type
-}
-
-func (mt mapEntryType) New() protoreflect.Message {
-	return nil
-}
-func (mt mapEntryType) Zero() protoreflect.Message {
-	return nil
-}
-func (mt mapEntryType) Descriptor() protoreflect.MessageDescriptor {
-	return mt.desc
-}
-func (mt mapEntryType) Enum(i int) protoreflect.EnumType {
-	fd := mt.desc.Fields().Get(i)
-	if fd.Enum() == nil {
-		return nil
-	}
-	return Export{}.EnumTypeOf(mt.valType)
-}
-func (mt mapEntryType) Message(i int) protoreflect.MessageType {
-	fd := mt.desc.Fields().Get(i)
-	if fd.Message() == nil {
-		return nil
-	}
-	return Export{}.MessageTypeOf(mt.valType)
-}
diff --git a/internal/impl/message_reflect.go b/internal/impl/message_reflect.go
deleted file mode 100644
index 9488b72..0000000
--- a/internal/impl/message_reflect.go
+++ /dev/null
@@ -1,465 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"fmt"
-	"reflect"
-
-	"google.golang.org/protobuf/internal/detrand"
-	"google.golang.org/protobuf/internal/pragma"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-type reflectMessageInfo struct {
-	fields map[pref.FieldNumber]*fieldInfo
-	oneofs map[pref.Name]*oneofInfo
-
-	// fieldTypes contains the zero value of an enum or message field.
-	// For lists, it contains the element type.
-	// For maps, it contains the entry value type.
-	fieldTypes map[pref.FieldNumber]interface{}
-
-	// denseFields is a subset of fields where:
-	//	0 < fieldDesc.Number() < len(denseFields)
-	// It provides faster access to the fieldInfo, but may be incomplete.
-	denseFields []*fieldInfo
-
-	// rangeInfos is a list of all fields (not belonging to a oneof) and oneofs.
-	rangeInfos []interface{} // either *fieldInfo or *oneofInfo
-
-	getUnknown   func(pointer) pref.RawFields
-	setUnknown   func(pointer, pref.RawFields)
-	extensionMap func(pointer) *extensionMap
-
-	nilMessage atomicNilMessage
-}
-
-// makeReflectFuncs generates the set of functions to support reflection.
-func (mi *MessageInfo) makeReflectFuncs(t reflect.Type, si structInfo) {
-	mi.makeKnownFieldsFunc(si)
-	mi.makeUnknownFieldsFunc(t, si)
-	mi.makeExtensionFieldsFunc(t, si)
-	mi.makeFieldTypes(si)
-}
-
-// makeKnownFieldsFunc generates functions for operations that can be performed
-// on each protobuf message field. It takes in a reflect.Type representing the
-// Go struct and matches message fields with struct fields.
-//
-// This code assumes that the struct is well-formed and panics if there are
-// any discrepancies.
-func (mi *MessageInfo) makeKnownFieldsFunc(si structInfo) {
-	mi.fields = map[pref.FieldNumber]*fieldInfo{}
-	md := mi.Desc
-	fds := md.Fields()
-	for i := 0; i < fds.Len(); i++ {
-		fd := fds.Get(i)
-		fs := si.fieldsByNumber[fd.Number()]
-		isOneof := fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic()
-		if isOneof {
-			fs = si.oneofsByName[fd.ContainingOneof().Name()]
-		}
-		var fi fieldInfo
-		switch {
-		case fs.Type == nil:
-			fi = fieldInfoForMissing(fd) // never occurs for officially generated message types
-		case isOneof:
-			fi = fieldInfoForOneof(fd, fs, mi.Exporter, si.oneofWrappersByNumber[fd.Number()])
-		case fd.IsMap():
-			fi = fieldInfoForMap(fd, fs, mi.Exporter)
-		case fd.IsList():
-			fi = fieldInfoForList(fd, fs, mi.Exporter)
-		case fd.IsWeak():
-			fi = fieldInfoForWeakMessage(fd, si.weakOffset)
-		case fd.Message() != nil:
-			fi = fieldInfoForMessage(fd, fs, mi.Exporter)
-		default:
-			fi = fieldInfoForScalar(fd, fs, mi.Exporter)
-		}
-		mi.fields[fd.Number()] = &fi
-	}
-
-	mi.oneofs = map[pref.Name]*oneofInfo{}
-	for i := 0; i < md.Oneofs().Len(); i++ {
-		od := md.Oneofs().Get(i)
-		mi.oneofs[od.Name()] = makeOneofInfo(od, si, mi.Exporter)
-	}
-
-	mi.denseFields = make([]*fieldInfo, fds.Len()*2)
-	for i := 0; i < fds.Len(); i++ {
-		if fd := fds.Get(i); int(fd.Number()) < len(mi.denseFields) {
-			mi.denseFields[fd.Number()] = mi.fields[fd.Number()]
-		}
-	}
-
-	for i := 0; i < fds.Len(); {
-		fd := fds.Get(i)
-		if od := fd.ContainingOneof(); od != nil && !od.IsSynthetic() {
-			mi.rangeInfos = append(mi.rangeInfos, mi.oneofs[od.Name()])
-			i += od.Fields().Len()
-		} else {
-			mi.rangeInfos = append(mi.rangeInfos, mi.fields[fd.Number()])
-			i++
-		}
-	}
-
-	// Introduce instability to iteration order, but keep it deterministic.
-	if len(mi.rangeInfos) > 1 && detrand.Bool() {
-		i := detrand.Intn(len(mi.rangeInfos) - 1)
-		mi.rangeInfos[i], mi.rangeInfos[i+1] = mi.rangeInfos[i+1], mi.rangeInfos[i]
-	}
-}
-
-func (mi *MessageInfo) makeUnknownFieldsFunc(t reflect.Type, si structInfo) {
-	switch {
-	case si.unknownOffset.IsValid() && si.unknownType == unknownFieldsAType:
-		// Handle as []byte.
-		mi.getUnknown = func(p pointer) pref.RawFields {
-			if p.IsNil() {
-				return nil
-			}
-			return *p.Apply(mi.unknownOffset).Bytes()
-		}
-		mi.setUnknown = func(p pointer, b pref.RawFields) {
-			if p.IsNil() {
-				panic("invalid SetUnknown on nil Message")
-			}
-			*p.Apply(mi.unknownOffset).Bytes() = b
-		}
-	case si.unknownOffset.IsValid() && si.unknownType == unknownFieldsBType:
-		// Handle as *[]byte.
-		mi.getUnknown = func(p pointer) pref.RawFields {
-			if p.IsNil() {
-				return nil
-			}
-			bp := p.Apply(mi.unknownOffset).BytesPtr()
-			if *bp == nil {
-				return nil
-			}
-			return **bp
-		}
-		mi.setUnknown = func(p pointer, b pref.RawFields) {
-			if p.IsNil() {
-				panic("invalid SetUnknown on nil Message")
-			}
-			bp := p.Apply(mi.unknownOffset).BytesPtr()
-			if *bp == nil {
-				*bp = new([]byte)
-			}
-			**bp = b
-		}
-	default:
-		mi.getUnknown = func(pointer) pref.RawFields {
-			return nil
-		}
-		mi.setUnknown = func(p pointer, _ pref.RawFields) {
-			if p.IsNil() {
-				panic("invalid SetUnknown on nil Message")
-			}
-		}
-	}
-}
-
-func (mi *MessageInfo) makeExtensionFieldsFunc(t reflect.Type, si structInfo) {
-	if si.extensionOffset.IsValid() {
-		mi.extensionMap = func(p pointer) *extensionMap {
-			if p.IsNil() {
-				return (*extensionMap)(nil)
-			}
-			v := p.Apply(si.extensionOffset).AsValueOf(extensionFieldsType)
-			return (*extensionMap)(v.Interface().(*map[int32]ExtensionField))
-		}
-	} else {
-		mi.extensionMap = func(pointer) *extensionMap {
-			return (*extensionMap)(nil)
-		}
-	}
-}
-func (mi *MessageInfo) makeFieldTypes(si structInfo) {
-	md := mi.Desc
-	fds := md.Fields()
-	for i := 0; i < fds.Len(); i++ {
-		var ft reflect.Type
-		fd := fds.Get(i)
-		fs := si.fieldsByNumber[fd.Number()]
-		isOneof := fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic()
-		if isOneof {
-			fs = si.oneofsByName[fd.ContainingOneof().Name()]
-		}
-		var isMessage bool
-		switch {
-		case fs.Type == nil:
-			continue // never occurs for officially generated message types
-		case isOneof:
-			if fd.Enum() != nil || fd.Message() != nil {
-				ft = si.oneofWrappersByNumber[fd.Number()].Field(0).Type
-			}
-		case fd.IsMap():
-			if fd.MapValue().Enum() != nil || fd.MapValue().Message() != nil {
-				ft = fs.Type.Elem()
-			}
-			isMessage = fd.MapValue().Message() != nil
-		case fd.IsList():
-			if fd.Enum() != nil || fd.Message() != nil {
-				ft = fs.Type.Elem()
-			}
-			isMessage = fd.Message() != nil
-		case fd.Enum() != nil:
-			ft = fs.Type
-			if fd.HasPresence() && ft.Kind() == reflect.Ptr {
-				ft = ft.Elem()
-			}
-		case fd.Message() != nil:
-			ft = fs.Type
-			if fd.IsWeak() {
-				ft = nil
-			}
-			isMessage = true
-		}
-		if isMessage && ft != nil && ft.Kind() != reflect.Ptr {
-			ft = reflect.PtrTo(ft) // never occurs for officially generated message types
-		}
-		if ft != nil {
-			if mi.fieldTypes == nil {
-				mi.fieldTypes = make(map[pref.FieldNumber]interface{})
-			}
-			mi.fieldTypes[fd.Number()] = reflect.Zero(ft).Interface()
-		}
-	}
-}
-
-type extensionMap map[int32]ExtensionField
-
-func (m *extensionMap) Range(f func(pref.FieldDescriptor, pref.Value) bool) {
-	if m != nil {
-		for _, x := range *m {
-			xd := x.Type().TypeDescriptor()
-			v := x.Value()
-			if xd.IsList() && v.List().Len() == 0 {
-				continue
-			}
-			if !f(xd, v) {
-				return
-			}
-		}
-	}
-}
-func (m *extensionMap) Has(xt pref.ExtensionType) (ok bool) {
-	if m == nil {
-		return false
-	}
-	xd := xt.TypeDescriptor()
-	x, ok := (*m)[int32(xd.Number())]
-	if !ok {
-		return false
-	}
-	switch {
-	case xd.IsList():
-		return x.Value().List().Len() > 0
-	case xd.IsMap():
-		return x.Value().Map().Len() > 0
-	case xd.Message() != nil:
-		return x.Value().Message().IsValid()
-	}
-	return true
-}
-func (m *extensionMap) Clear(xt pref.ExtensionType) {
-	delete(*m, int32(xt.TypeDescriptor().Number()))
-}
-func (m *extensionMap) Get(xt pref.ExtensionType) pref.Value {
-	xd := xt.TypeDescriptor()
-	if m != nil {
-		if x, ok := (*m)[int32(xd.Number())]; ok {
-			return x.Value()
-		}
-	}
-	return xt.Zero()
-}
-func (m *extensionMap) Set(xt pref.ExtensionType, v pref.Value) {
-	xd := xt.TypeDescriptor()
-	isValid := true
-	switch {
-	case !xt.IsValidValue(v):
-		isValid = false
-	case xd.IsList():
-		isValid = v.List().IsValid()
-	case xd.IsMap():
-		isValid = v.Map().IsValid()
-	case xd.Message() != nil:
-		isValid = v.Message().IsValid()
-	}
-	if !isValid {
-		panic(fmt.Sprintf("%v: assigning invalid value", xt.TypeDescriptor().FullName()))
-	}
-
-	if *m == nil {
-		*m = make(map[int32]ExtensionField)
-	}
-	var x ExtensionField
-	x.Set(xt, v)
-	(*m)[int32(xd.Number())] = x
-}
-func (m *extensionMap) Mutable(xt pref.ExtensionType) pref.Value {
-	xd := xt.TypeDescriptor()
-	if xd.Kind() != pref.MessageKind && xd.Kind() != pref.GroupKind && !xd.IsList() && !xd.IsMap() {
-		panic("invalid Mutable on field with non-composite type")
-	}
-	if x, ok := (*m)[int32(xd.Number())]; ok {
-		return x.Value()
-	}
-	v := xt.New()
-	m.Set(xt, v)
-	return v
-}
-
-// MessageState is a data structure that is nested as the first field in a
-// concrete message. It provides a way to implement the ProtoReflect method
-// in an allocation-free way without needing to have a shadow Go type generated
-// for every message type. This technique only works using unsafe.
-//
-//
-// Example generated code:
-//
-//	type M struct {
-//		state protoimpl.MessageState
-//
-//		Field1 int32
-//		Field2 string
-//		Field3 *BarMessage
-//		...
-//	}
-//
-//	func (m *M) ProtoReflect() protoreflect.Message {
-//		mi := &file_fizz_buzz_proto_msgInfos[5]
-//		if protoimpl.UnsafeEnabled && m != nil {
-//			ms := protoimpl.X.MessageStateOf(Pointer(m))
-//			if ms.LoadMessageInfo() == nil {
-//				ms.StoreMessageInfo(mi)
-//			}
-//			return ms
-//		}
-//		return mi.MessageOf(m)
-//	}
-//
-// The MessageState type holds a *MessageInfo, which must be atomically set to
-// the message info associated with a given message instance.
-// By unsafely converting a *M into a *MessageState, the MessageState object
-// has access to all the information needed to implement protobuf reflection.
-// It has access to the message info as its first field, and a pointer to the
-// MessageState is identical to a pointer to the concrete message value.
-//
-//
-// Requirements:
-//	• The type M must implement protoreflect.ProtoMessage.
-//	• The address of m must not be nil.
-//	• The address of m and the address of m.state must be equal,
-//	even though they are different Go types.
-type MessageState struct {
-	pragma.NoUnkeyedLiterals
-	pragma.DoNotCompare
-	pragma.DoNotCopy
-
-	atomicMessageInfo *MessageInfo
-}
-
-type messageState MessageState
-
-var (
-	_ pref.Message = (*messageState)(nil)
-	_ unwrapper    = (*messageState)(nil)
-)
-
-// messageDataType is a tuple of a pointer to the message data and
-// a pointer to the message type. It is a generalized way of providing a
-// reflective view over a message instance. The disadvantage of this approach
-// is the need to allocate this tuple of 16B.
-type messageDataType struct {
-	p  pointer
-	mi *MessageInfo
-}
-
-type (
-	messageReflectWrapper messageDataType
-	messageIfaceWrapper   messageDataType
-)
-
-var (
-	_ pref.Message      = (*messageReflectWrapper)(nil)
-	_ unwrapper         = (*messageReflectWrapper)(nil)
-	_ pref.ProtoMessage = (*messageIfaceWrapper)(nil)
-	_ unwrapper         = (*messageIfaceWrapper)(nil)
-)
-
-// MessageOf returns a reflective view over a message. The input must be a
-// pointer to a named Go struct. If the provided type has a ProtoReflect method,
-// it must be implemented by calling this method.
-func (mi *MessageInfo) MessageOf(m interface{}) pref.Message {
-	if reflect.TypeOf(m) != mi.GoReflectType {
-		panic(fmt.Sprintf("type mismatch: got %T, want %v", m, mi.GoReflectType))
-	}
-	p := pointerOfIface(m)
-	if p.IsNil() {
-		return mi.nilMessage.Init(mi)
-	}
-	return &messageReflectWrapper{p, mi}
-}
-
-func (m *messageReflectWrapper) pointer() pointer          { return m.p }
-func (m *messageReflectWrapper) messageInfo() *MessageInfo { return m.mi }
-
-// Reset implements the v1 proto.Message.Reset method.
-func (m *messageIfaceWrapper) Reset() {
-	if mr, ok := m.protoUnwrap().(interface{ Reset() }); ok {
-		mr.Reset()
-		return
-	}
-	rv := reflect.ValueOf(m.protoUnwrap())
-	if rv.Kind() == reflect.Ptr && !rv.IsNil() {
-		rv.Elem().Set(reflect.Zero(rv.Type().Elem()))
-	}
-}
-func (m *messageIfaceWrapper) ProtoReflect() pref.Message {
-	return (*messageReflectWrapper)(m)
-}
-func (m *messageIfaceWrapper) protoUnwrap() interface{} {
-	return m.p.AsIfaceOf(m.mi.GoReflectType.Elem())
-}
-
-// checkField verifies that the provided field descriptor is valid.
-// Exactly one of the returned values is populated.
-func (mi *MessageInfo) checkField(fd pref.FieldDescriptor) (*fieldInfo, pref.ExtensionType) {
-	var fi *fieldInfo
-	if n := fd.Number(); 0 < n && int(n) < len(mi.denseFields) {
-		fi = mi.denseFields[n]
-	} else {
-		fi = mi.fields[n]
-	}
-	if fi != nil {
-		if fi.fieldDesc != fd {
-			if got, want := fd.FullName(), fi.fieldDesc.FullName(); got != want {
-				panic(fmt.Sprintf("mismatching field: got %v, want %v", got, want))
-			}
-			panic(fmt.Sprintf("mismatching field: %v", fd.FullName()))
-		}
-		return fi, nil
-	}
-
-	if fd.IsExtension() {
-		if got, want := fd.ContainingMessage().FullName(), mi.Desc.FullName(); got != want {
-			// TODO: Should this be exact containing message descriptor match?
-			panic(fmt.Sprintf("extension %v has mismatching containing message: got %v, want %v", fd.FullName(), got, want))
-		}
-		if !mi.Desc.ExtensionRanges().Has(fd.Number()) {
-			panic(fmt.Sprintf("extension %v extends %v outside the extension range", fd.FullName(), mi.Desc.FullName()))
-		}
-		xtd, ok := fd.(pref.ExtensionTypeDescriptor)
-		if !ok {
-			panic(fmt.Sprintf("extension %v does not implement protoreflect.ExtensionTypeDescriptor", fd.FullName()))
-		}
-		return nil, xtd.Type()
-	}
-	panic(fmt.Sprintf("field %v is invalid", fd.FullName()))
-}
diff --git a/internal/impl/message_reflect_field.go b/internal/impl/message_reflect_field.go
deleted file mode 100644
index 343cf87..0000000
--- a/internal/impl/message_reflect_field.go
+++ /dev/null
@@ -1,543 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"fmt"
-	"math"
-	"reflect"
-	"sync"
-
-	"google.golang.org/protobuf/internal/flags"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	preg "google.golang.org/protobuf/reflect/protoregistry"
-)
-
-type fieldInfo struct {
-	fieldDesc pref.FieldDescriptor
-
-	// These fields are used for protobuf reflection support.
-	has        func(pointer) bool
-	clear      func(pointer)
-	get        func(pointer) pref.Value
-	set        func(pointer, pref.Value)
-	mutable    func(pointer) pref.Value
-	newMessage func() pref.Message
-	newField   func() pref.Value
-}
-
-func fieldInfoForMissing(fd pref.FieldDescriptor) fieldInfo {
-	// This never occurs for generated message types.
-	// It implies that a hand-crafted type has missing Go fields
-	// for specific protobuf message fields.
-	return fieldInfo{
-		fieldDesc: fd,
-		has: func(p pointer) bool {
-			return false
-		},
-		clear: func(p pointer) {
-			panic("missing Go struct field for " + string(fd.FullName()))
-		},
-		get: func(p pointer) pref.Value {
-			return fd.Default()
-		},
-		set: func(p pointer, v pref.Value) {
-			panic("missing Go struct field for " + string(fd.FullName()))
-		},
-		mutable: func(p pointer) pref.Value {
-			panic("missing Go struct field for " + string(fd.FullName()))
-		},
-		newMessage: func() pref.Message {
-			panic("missing Go struct field for " + string(fd.FullName()))
-		},
-		newField: func() pref.Value {
-			if v := fd.Default(); v.IsValid() {
-				return v
-			}
-			panic("missing Go struct field for " + string(fd.FullName()))
-		},
-	}
-}
-
-func fieldInfoForOneof(fd pref.FieldDescriptor, fs reflect.StructField, x exporter, ot reflect.Type) fieldInfo {
-	ft := fs.Type
-	if ft.Kind() != reflect.Interface {
-		panic(fmt.Sprintf("field %v has invalid type: got %v, want interface kind", fd.FullName(), ft))
-	}
-	if ot.Kind() != reflect.Struct {
-		panic(fmt.Sprintf("field %v has invalid type: got %v, want struct kind", fd.FullName(), ot))
-	}
-	if !reflect.PtrTo(ot).Implements(ft) {
-		panic(fmt.Sprintf("field %v has invalid type: %v does not implement %v", fd.FullName(), ot, ft))
-	}
-	conv := NewConverter(ot.Field(0).Type, fd)
-	isMessage := fd.Message() != nil
-
-	// TODO: Implement unsafe fast path?
-	fieldOffset := offsetOf(fs, x)
-	return fieldInfo{
-		// NOTE: The logic below intentionally assumes that oneof fields are
-		// well-formatted. That is, the oneof interface never contains a
-		// typed nil pointer to one of the wrapper structs.
-
-		fieldDesc: fd,
-		has: func(p pointer) bool {
-			if p.IsNil() {
-				return false
-			}
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			if rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() {
-				return false
-			}
-			return true
-		},
-		clear: func(p pointer) {
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			if rv.IsNil() || rv.Elem().Type().Elem() != ot {
-				// NOTE: We intentionally don't check for rv.Elem().IsNil()
-				// so that (*OneofWrapperType)(nil) gets cleared to nil.
-				return
-			}
-			rv.Set(reflect.Zero(rv.Type()))
-		},
-		get: func(p pointer) pref.Value {
-			if p.IsNil() {
-				return conv.Zero()
-			}
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			if rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() {
-				return conv.Zero()
-			}
-			rv = rv.Elem().Elem().Field(0)
-			return conv.PBValueOf(rv)
-		},
-		set: func(p pointer, v pref.Value) {
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			if rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() {
-				rv.Set(reflect.New(ot))
-			}
-			rv = rv.Elem().Elem().Field(0)
-			rv.Set(conv.GoValueOf(v))
-		},
-		mutable: func(p pointer) pref.Value {
-			if !isMessage {
-				panic(fmt.Sprintf("field %v with invalid Mutable call on field with non-composite type", fd.FullName()))
-			}
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			if rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() {
-				rv.Set(reflect.New(ot))
-			}
-			rv = rv.Elem().Elem().Field(0)
-			if rv.Kind() == reflect.Ptr && rv.IsNil() {
-				rv.Set(conv.GoValueOf(pref.ValueOfMessage(conv.New().Message())))
-			}
-			return conv.PBValueOf(rv)
-		},
-		newMessage: func() pref.Message {
-			return conv.New().Message()
-		},
-		newField: func() pref.Value {
-			return conv.New()
-		},
-	}
-}
-
-func fieldInfoForMap(fd pref.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo {
-	ft := fs.Type
-	if ft.Kind() != reflect.Map {
-		panic(fmt.Sprintf("field %v has invalid type: got %v, want map kind", fd.FullName(), ft))
-	}
-	conv := NewConverter(ft, fd)
-
-	// TODO: Implement unsafe fast path?
-	fieldOffset := offsetOf(fs, x)
-	return fieldInfo{
-		fieldDesc: fd,
-		has: func(p pointer) bool {
-			if p.IsNil() {
-				return false
-			}
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			return rv.Len() > 0
-		},
-		clear: func(p pointer) {
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			rv.Set(reflect.Zero(rv.Type()))
-		},
-		get: func(p pointer) pref.Value {
-			if p.IsNil() {
-				return conv.Zero()
-			}
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			if rv.Len() == 0 {
-				return conv.Zero()
-			}
-			return conv.PBValueOf(rv)
-		},
-		set: func(p pointer, v pref.Value) {
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			pv := conv.GoValueOf(v)
-			if pv.IsNil() {
-				panic(fmt.Sprintf("map field %v cannot be set with read-only value", fd.FullName()))
-			}
-			rv.Set(pv)
-		},
-		mutable: func(p pointer) pref.Value {
-			v := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			if v.IsNil() {
-				v.Set(reflect.MakeMap(fs.Type))
-			}
-			return conv.PBValueOf(v)
-		},
-		newField: func() pref.Value {
-			return conv.New()
-		},
-	}
-}
-
-func fieldInfoForList(fd pref.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo {
-	ft := fs.Type
-	if ft.Kind() != reflect.Slice {
-		panic(fmt.Sprintf("field %v has invalid type: got %v, want slice kind", fd.FullName(), ft))
-	}
-	conv := NewConverter(reflect.PtrTo(ft), fd)
-
-	// TODO: Implement unsafe fast path?
-	fieldOffset := offsetOf(fs, x)
-	return fieldInfo{
-		fieldDesc: fd,
-		has: func(p pointer) bool {
-			if p.IsNil() {
-				return false
-			}
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			return rv.Len() > 0
-		},
-		clear: func(p pointer) {
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			rv.Set(reflect.Zero(rv.Type()))
-		},
-		get: func(p pointer) pref.Value {
-			if p.IsNil() {
-				return conv.Zero()
-			}
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type)
-			if rv.Elem().Len() == 0 {
-				return conv.Zero()
-			}
-			return conv.PBValueOf(rv)
-		},
-		set: func(p pointer, v pref.Value) {
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			pv := conv.GoValueOf(v)
-			if pv.IsNil() {
-				panic(fmt.Sprintf("list field %v cannot be set with read-only value", fd.FullName()))
-			}
-			rv.Set(pv.Elem())
-		},
-		mutable: func(p pointer) pref.Value {
-			v := p.Apply(fieldOffset).AsValueOf(fs.Type)
-			return conv.PBValueOf(v)
-		},
-		newField: func() pref.Value {
-			return conv.New()
-		},
-	}
-}
-
-var (
-	nilBytes   = reflect.ValueOf([]byte(nil))
-	emptyBytes = reflect.ValueOf([]byte{})
-)
-
-func fieldInfoForScalar(fd pref.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo {
-	ft := fs.Type
-	nullable := fd.HasPresence()
-	isBytes := ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8
-	if nullable {
-		if ft.Kind() != reflect.Ptr && ft.Kind() != reflect.Slice {
-			// This never occurs for generated message types.
-			// Despite the protobuf type system specifying presence,
-			// the Go field type cannot represent it.
-			nullable = false
-		}
-		if ft.Kind() == reflect.Ptr {
-			ft = ft.Elem()
-		}
-	}
-	conv := NewConverter(ft, fd)
-
-	// TODO: Implement unsafe fast path?
-	fieldOffset := offsetOf(fs, x)
-	return fieldInfo{
-		fieldDesc: fd,
-		has: func(p pointer) bool {
-			if p.IsNil() {
-				return false
-			}
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			if nullable {
-				return !rv.IsNil()
-			}
-			switch rv.Kind() {
-			case reflect.Bool:
-				return rv.Bool()
-			case reflect.Int32, reflect.Int64:
-				return rv.Int() != 0
-			case reflect.Uint32, reflect.Uint64:
-				return rv.Uint() != 0
-			case reflect.Float32, reflect.Float64:
-				return rv.Float() != 0 || math.Signbit(rv.Float())
-			case reflect.String, reflect.Slice:
-				return rv.Len() > 0
-			default:
-				panic(fmt.Sprintf("field %v has invalid type: %v", fd.FullName(), rv.Type())) // should never happen
-			}
-		},
-		clear: func(p pointer) {
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			rv.Set(reflect.Zero(rv.Type()))
-		},
-		get: func(p pointer) pref.Value {
-			if p.IsNil() {
-				return conv.Zero()
-			}
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			if nullable {
-				if rv.IsNil() {
-					return conv.Zero()
-				}
-				if rv.Kind() == reflect.Ptr {
-					rv = rv.Elem()
-				}
-			}
-			return conv.PBValueOf(rv)
-		},
-		set: func(p pointer, v pref.Value) {
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			if nullable && rv.Kind() == reflect.Ptr {
-				if rv.IsNil() {
-					rv.Set(reflect.New(ft))
-				}
-				rv = rv.Elem()
-			}
-			rv.Set(conv.GoValueOf(v))
-			if isBytes && rv.Len() == 0 {
-				if nullable {
-					rv.Set(emptyBytes) // preserve presence
-				} else {
-					rv.Set(nilBytes) // do not preserve presence
-				}
-			}
-		},
-		newField: func() pref.Value {
-			return conv.New()
-		},
-	}
-}
-
-func fieldInfoForWeakMessage(fd pref.FieldDescriptor, weakOffset offset) fieldInfo {
-	if !flags.ProtoLegacy {
-		panic("no support for proto1 weak fields")
-	}
-
-	var once sync.Once
-	var messageType pref.MessageType
-	lazyInit := func() {
-		once.Do(func() {
-			messageName := fd.Message().FullName()
-			messageType, _ = preg.GlobalTypes.FindMessageByName(messageName)
-			if messageType == nil {
-				panic(fmt.Sprintf("weak message %v for field %v is not linked in", messageName, fd.FullName()))
-			}
-		})
-	}
-
-	num := fd.Number()
-	return fieldInfo{
-		fieldDesc: fd,
-		has: func(p pointer) bool {
-			if p.IsNil() {
-				return false
-			}
-			_, ok := p.Apply(weakOffset).WeakFields().get(num)
-			return ok
-		},
-		clear: func(p pointer) {
-			p.Apply(weakOffset).WeakFields().clear(num)
-		},
-		get: func(p pointer) pref.Value {
-			lazyInit()
-			if p.IsNil() {
-				return pref.ValueOfMessage(messageType.Zero())
-			}
-			m, ok := p.Apply(weakOffset).WeakFields().get(num)
-			if !ok {
-				return pref.ValueOfMessage(messageType.Zero())
-			}
-			return pref.ValueOfMessage(m.ProtoReflect())
-		},
-		set: func(p pointer, v pref.Value) {
-			lazyInit()
-			m := v.Message()
-			if m.Descriptor() != messageType.Descriptor() {
-				if got, want := m.Descriptor().FullName(), messageType.Descriptor().FullName(); got != want {
-					panic(fmt.Sprintf("field %v has mismatching message descriptor: got %v, want %v", fd.FullName(), got, want))
-				}
-				panic(fmt.Sprintf("field %v has mismatching message descriptor: %v", fd.FullName(), m.Descriptor().FullName()))
-			}
-			p.Apply(weakOffset).WeakFields().set(num, m.Interface())
-		},
-		mutable: func(p pointer) pref.Value {
-			lazyInit()
-			fs := p.Apply(weakOffset).WeakFields()
-			m, ok := fs.get(num)
-			if !ok {
-				m = messageType.New().Interface()
-				fs.set(num, m)
-			}
-			return pref.ValueOfMessage(m.ProtoReflect())
-		},
-		newMessage: func() pref.Message {
-			lazyInit()
-			return messageType.New()
-		},
-		newField: func() pref.Value {
-			lazyInit()
-			return pref.ValueOfMessage(messageType.New())
-		},
-	}
-}
-
-func fieldInfoForMessage(fd pref.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo {
-	ft := fs.Type
-	conv := NewConverter(ft, fd)
-
-	// TODO: Implement unsafe fast path?
-	fieldOffset := offsetOf(fs, x)
-	return fieldInfo{
-		fieldDesc: fd,
-		has: func(p pointer) bool {
-			if p.IsNil() {
-				return false
-			}
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			if fs.Type.Kind() != reflect.Ptr {
-				return !isZero(rv)
-			}
-			return !rv.IsNil()
-		},
-		clear: func(p pointer) {
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			rv.Set(reflect.Zero(rv.Type()))
-		},
-		get: func(p pointer) pref.Value {
-			if p.IsNil() {
-				return conv.Zero()
-			}
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			return conv.PBValueOf(rv)
-		},
-		set: func(p pointer, v pref.Value) {
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			rv.Set(conv.GoValueOf(v))
-			if fs.Type.Kind() == reflect.Ptr && rv.IsNil() {
-				panic(fmt.Sprintf("field %v has invalid nil pointer", fd.FullName()))
-			}
-		},
-		mutable: func(p pointer) pref.Value {
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			if fs.Type.Kind() == reflect.Ptr && rv.IsNil() {
-				rv.Set(conv.GoValueOf(conv.New()))
-			}
-			return conv.PBValueOf(rv)
-		},
-		newMessage: func() pref.Message {
-			return conv.New().Message()
-		},
-		newField: func() pref.Value {
-			return conv.New()
-		},
-	}
-}
-
-type oneofInfo struct {
-	oneofDesc pref.OneofDescriptor
-	which     func(pointer) pref.FieldNumber
-}
-
-func makeOneofInfo(od pref.OneofDescriptor, si structInfo, x exporter) *oneofInfo {
-	oi := &oneofInfo{oneofDesc: od}
-	if od.IsSynthetic() {
-		fs := si.fieldsByNumber[od.Fields().Get(0).Number()]
-		fieldOffset := offsetOf(fs, x)
-		oi.which = func(p pointer) pref.FieldNumber {
-			if p.IsNil() {
-				return 0
-			}
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			if rv.IsNil() { // valid on either *T or []byte
-				return 0
-			}
-			return od.Fields().Get(0).Number()
-		}
-	} else {
-		fs := si.oneofsByName[od.Name()]
-		fieldOffset := offsetOf(fs, x)
-		oi.which = func(p pointer) pref.FieldNumber {
-			if p.IsNil() {
-				return 0
-			}
-			rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem()
-			if rv.IsNil() {
-				return 0
-			}
-			rv = rv.Elem()
-			if rv.IsNil() {
-				return 0
-			}
-			return si.oneofWrappersByType[rv.Type().Elem()]
-		}
-	}
-	return oi
-}
-
-// isZero is identical to reflect.Value.IsZero.
-// TODO: Remove this when Go1.13 is the minimally supported Go version.
-func isZero(v reflect.Value) bool {
-	switch v.Kind() {
-	case reflect.Bool:
-		return !v.Bool()
-	case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
-		return v.Int() == 0
-	case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
-		return v.Uint() == 0
-	case reflect.Float32, reflect.Float64:
-		return math.Float64bits(v.Float()) == 0
-	case reflect.Complex64, reflect.Complex128:
-		c := v.Complex()
-		return math.Float64bits(real(c)) == 0 && math.Float64bits(imag(c)) == 0
-	case reflect.Array:
-		for i := 0; i < v.Len(); i++ {
-			if !isZero(v.Index(i)) {
-				return false
-			}
-		}
-		return true
-	case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice, reflect.UnsafePointer:
-		return v.IsNil()
-	case reflect.String:
-		return v.Len() == 0
-	case reflect.Struct:
-		for i := 0; i < v.NumField(); i++ {
-			if !isZero(v.Field(i)) {
-				return false
-			}
-		}
-		return true
-	default:
-		panic(&reflect.ValueError{"reflect.Value.IsZero", v.Kind()})
-	}
-}
diff --git a/internal/impl/message_reflect_gen.go b/internal/impl/message_reflect_gen.go
deleted file mode 100644
index 741d6e5..0000000
--- a/internal/impl/message_reflect_gen.go
+++ /dev/null
@@ -1,249 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by generate-types. DO NOT EDIT.
-
-package impl
-
-import (
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/runtime/protoiface"
-)
-
-func (m *messageState) Descriptor() protoreflect.MessageDescriptor {
-	return m.messageInfo().Desc
-}
-func (m *messageState) Type() protoreflect.MessageType {
-	return m.messageInfo()
-}
-func (m *messageState) New() protoreflect.Message {
-	return m.messageInfo().New()
-}
-func (m *messageState) Interface() protoreflect.ProtoMessage {
-	return m.protoUnwrap().(protoreflect.ProtoMessage)
-}
-func (m *messageState) protoUnwrap() interface{} {
-	return m.pointer().AsIfaceOf(m.messageInfo().GoReflectType.Elem())
-}
-func (m *messageState) ProtoMethods() *protoiface.Methods {
-	m.messageInfo().init()
-	return &m.messageInfo().methods
-}
-
-// ProtoMessageInfo is a pseudo-internal API for allowing the v1 code
-// to be able to retrieve a v2 MessageInfo struct.
-//
-// WARNING: This method is exempt from the compatibility promise and
-// may be removed in the future without warning.
-func (m *messageState) ProtoMessageInfo() *MessageInfo {
-	return m.messageInfo()
-}
-
-func (m *messageState) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
-	m.messageInfo().init()
-	for _, ri := range m.messageInfo().rangeInfos {
-		switch ri := ri.(type) {
-		case *fieldInfo:
-			if ri.has(m.pointer()) {
-				if !f(ri.fieldDesc, ri.get(m.pointer())) {
-					return
-				}
-			}
-		case *oneofInfo:
-			if n := ri.which(m.pointer()); n > 0 {
-				fi := m.messageInfo().fields[n]
-				if !f(fi.fieldDesc, fi.get(m.pointer())) {
-					return
-				}
-			}
-		}
-	}
-	m.messageInfo().extensionMap(m.pointer()).Range(f)
-}
-func (m *messageState) Has(fd protoreflect.FieldDescriptor) bool {
-	m.messageInfo().init()
-	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
-		return fi.has(m.pointer())
-	} else {
-		return m.messageInfo().extensionMap(m.pointer()).Has(xt)
-	}
-}
-func (m *messageState) Clear(fd protoreflect.FieldDescriptor) {
-	m.messageInfo().init()
-	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
-		fi.clear(m.pointer())
-	} else {
-		m.messageInfo().extensionMap(m.pointer()).Clear(xt)
-	}
-}
-func (m *messageState) Get(fd protoreflect.FieldDescriptor) protoreflect.Value {
-	m.messageInfo().init()
-	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
-		return fi.get(m.pointer())
-	} else {
-		return m.messageInfo().extensionMap(m.pointer()).Get(xt)
-	}
-}
-func (m *messageState) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) {
-	m.messageInfo().init()
-	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
-		fi.set(m.pointer(), v)
-	} else {
-		m.messageInfo().extensionMap(m.pointer()).Set(xt, v)
-	}
-}
-func (m *messageState) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
-	m.messageInfo().init()
-	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
-		return fi.mutable(m.pointer())
-	} else {
-		return m.messageInfo().extensionMap(m.pointer()).Mutable(xt)
-	}
-}
-func (m *messageState) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
-	m.messageInfo().init()
-	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
-		return fi.newField()
-	} else {
-		return xt.New()
-	}
-}
-func (m *messageState) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
-	m.messageInfo().init()
-	if oi := m.messageInfo().oneofs[od.Name()]; oi != nil && oi.oneofDesc == od {
-		return od.Fields().ByNumber(oi.which(m.pointer()))
-	}
-	panic("invalid oneof descriptor " + string(od.FullName()) + " for message " + string(m.Descriptor().FullName()))
-}
-func (m *messageState) GetUnknown() protoreflect.RawFields {
-	m.messageInfo().init()
-	return m.messageInfo().getUnknown(m.pointer())
-}
-func (m *messageState) SetUnknown(b protoreflect.RawFields) {
-	m.messageInfo().init()
-	m.messageInfo().setUnknown(m.pointer(), b)
-}
-func (m *messageState) IsValid() bool {
-	return !m.pointer().IsNil()
-}
-
-func (m *messageReflectWrapper) Descriptor() protoreflect.MessageDescriptor {
-	return m.messageInfo().Desc
-}
-func (m *messageReflectWrapper) Type() protoreflect.MessageType {
-	return m.messageInfo()
-}
-func (m *messageReflectWrapper) New() protoreflect.Message {
-	return m.messageInfo().New()
-}
-func (m *messageReflectWrapper) Interface() protoreflect.ProtoMessage {
-	if m, ok := m.protoUnwrap().(protoreflect.ProtoMessage); ok {
-		return m
-	}
-	return (*messageIfaceWrapper)(m)
-}
-func (m *messageReflectWrapper) protoUnwrap() interface{} {
-	return m.pointer().AsIfaceOf(m.messageInfo().GoReflectType.Elem())
-}
-func (m *messageReflectWrapper) ProtoMethods() *protoiface.Methods {
-	m.messageInfo().init()
-	return &m.messageInfo().methods
-}
-
-// ProtoMessageInfo is a pseudo-internal API for allowing the v1 code
-// to be able to retrieve a v2 MessageInfo struct.
-//
-// WARNING: This method is exempt from the compatibility promise and
-// may be removed in the future without warning.
-func (m *messageReflectWrapper) ProtoMessageInfo() *MessageInfo {
-	return m.messageInfo()
-}
-
-func (m *messageReflectWrapper) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
-	m.messageInfo().init()
-	for _, ri := range m.messageInfo().rangeInfos {
-		switch ri := ri.(type) {
-		case *fieldInfo:
-			if ri.has(m.pointer()) {
-				if !f(ri.fieldDesc, ri.get(m.pointer())) {
-					return
-				}
-			}
-		case *oneofInfo:
-			if n := ri.which(m.pointer()); n > 0 {
-				fi := m.messageInfo().fields[n]
-				if !f(fi.fieldDesc, fi.get(m.pointer())) {
-					return
-				}
-			}
-		}
-	}
-	m.messageInfo().extensionMap(m.pointer()).Range(f)
-}
-func (m *messageReflectWrapper) Has(fd protoreflect.FieldDescriptor) bool {
-	m.messageInfo().init()
-	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
-		return fi.has(m.pointer())
-	} else {
-		return m.messageInfo().extensionMap(m.pointer()).Has(xt)
-	}
-}
-func (m *messageReflectWrapper) Clear(fd protoreflect.FieldDescriptor) {
-	m.messageInfo().init()
-	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
-		fi.clear(m.pointer())
-	} else {
-		m.messageInfo().extensionMap(m.pointer()).Clear(xt)
-	}
-}
-func (m *messageReflectWrapper) Get(fd protoreflect.FieldDescriptor) protoreflect.Value {
-	m.messageInfo().init()
-	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
-		return fi.get(m.pointer())
-	} else {
-		return m.messageInfo().extensionMap(m.pointer()).Get(xt)
-	}
-}
-func (m *messageReflectWrapper) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) {
-	m.messageInfo().init()
-	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
-		fi.set(m.pointer(), v)
-	} else {
-		m.messageInfo().extensionMap(m.pointer()).Set(xt, v)
-	}
-}
-func (m *messageReflectWrapper) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
-	m.messageInfo().init()
-	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
-		return fi.mutable(m.pointer())
-	} else {
-		return m.messageInfo().extensionMap(m.pointer()).Mutable(xt)
-	}
-}
-func (m *messageReflectWrapper) NewField(fd protoreflect.FieldDescriptor) protoreflect.Value {
-	m.messageInfo().init()
-	if fi, xt := m.messageInfo().checkField(fd); fi != nil {
-		return fi.newField()
-	} else {
-		return xt.New()
-	}
-}
-func (m *messageReflectWrapper) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
-	m.messageInfo().init()
-	if oi := m.messageInfo().oneofs[od.Name()]; oi != nil && oi.oneofDesc == od {
-		return od.Fields().ByNumber(oi.which(m.pointer()))
-	}
-	panic("invalid oneof descriptor " + string(od.FullName()) + " for message " + string(m.Descriptor().FullName()))
-}
-func (m *messageReflectWrapper) GetUnknown() protoreflect.RawFields {
-	m.messageInfo().init()
-	return m.messageInfo().getUnknown(m.pointer())
-}
-func (m *messageReflectWrapper) SetUnknown(b protoreflect.RawFields) {
-	m.messageInfo().init()
-	m.messageInfo().setUnknown(m.pointer(), b)
-}
-func (m *messageReflectWrapper) IsValid() bool {
-	return !m.pointer().IsNil()
-}
diff --git a/internal/impl/message_reflect_test.go b/internal/impl/message_reflect_test.go
deleted file mode 100644
index 96c7e1b..0000000
--- a/internal/impl/message_reflect_test.go
+++ /dev/null
@@ -1,1606 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl_test
-
-import (
-	"fmt"
-	"math"
-	"reflect"
-	"runtime"
-	"strings"
-	"sync"
-	"testing"
-
-	cmp "github.com/google/go-cmp/cmp"
-	cmpopts "github.com/google/go-cmp/cmp/cmpopts"
-
-	"google.golang.org/protobuf/encoding/prototext"
-	pimpl "google.golang.org/protobuf/internal/impl"
-	"google.golang.org/protobuf/proto"
-	pdesc "google.golang.org/protobuf/reflect/protodesc"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/reflect/protoregistry"
-	"google.golang.org/protobuf/testing/protopack"
-
-	proto2_20180125 "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20180125_92554152"
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-	"google.golang.org/protobuf/types/descriptorpb"
-)
-
-// List of test operations to perform on messages, lists, or maps.
-type (
-	messageOp  interface{ isMessageOp() }
-	messageOps []messageOp
-
-	listOp  interface{ isListOp() }
-	listOps []listOp
-
-	mapOp  interface{ isMapOp() }
-	mapOps []mapOp
-)
-
-// Test operations performed on a message.
-type (
-	// check that the message contents match
-	equalMessage struct{ pref.Message }
-	// check presence for specific fields in the message
-	hasFields map[pref.FieldNumber]bool
-	// check that specific message fields match
-	getFields map[pref.FieldNumber]pref.Value
-	// set specific message fields
-	setFields map[pref.FieldNumber]pref.Value
-	// clear specific fields in the message
-	clearFields []pref.FieldNumber
-	// check for the presence of specific oneof member fields.
-	whichOneofs map[pref.Name]pref.FieldNumber
-	// apply messageOps on each specified message field
-	messageFields        map[pref.FieldNumber]messageOps
-	messageFieldsMutable map[pref.FieldNumber]messageOps
-	// apply listOps on each specified list field
-	listFields        map[pref.FieldNumber]listOps
-	listFieldsMutable map[pref.FieldNumber]listOps
-	// apply mapOps on each specified map fields
-	mapFields        map[pref.FieldNumber]mapOps
-	mapFieldsMutable map[pref.FieldNumber]mapOps
-	// range through all fields and check that they match
-	rangeFields map[pref.FieldNumber]pref.Value
-)
-
-func (equalMessage) isMessageOp()         {}
-func (hasFields) isMessageOp()            {}
-func (getFields) isMessageOp()            {}
-func (setFields) isMessageOp()            {}
-func (clearFields) isMessageOp()          {}
-func (whichOneofs) isMessageOp()          {}
-func (messageFields) isMessageOp()        {}
-func (messageFieldsMutable) isMessageOp() {}
-func (listFields) isMessageOp()           {}
-func (listFieldsMutable) isMessageOp()    {}
-func (mapFields) isMessageOp()            {}
-func (mapFieldsMutable) isMessageOp()     {}
-func (rangeFields) isMessageOp()          {}
-
-// Test operations performed on a list.
-type (
-	// check that the list contents match
-	equalList struct{ pref.List }
-	// check that list length matches
-	lenList int
-	// check that specific list entries match
-	getList map[int]pref.Value
-	// set specific list entries
-	setList map[int]pref.Value
-	// append entries to the list
-	appendList []pref.Value
-	// apply messageOps on a newly appended message
-	appendMessageList messageOps
-	// truncate the list to the specified length
-	truncList int
-)
-
-func (equalList) isListOp()         {}
-func (lenList) isListOp()           {}
-func (getList) isListOp()           {}
-func (setList) isListOp()           {}
-func (appendList) isListOp()        {}
-func (appendMessageList) isListOp() {}
-func (truncList) isListOp()         {}
-
-// Test operations performed on a map.
-type (
-	// check that the map contents match
-	equalMap struct{ pref.Map }
-	// check that map length matches
-	lenMap int
-	// check presence for specific entries in the map
-	hasMap map[interface{}]bool
-	// check that specific map entries match
-	getMap map[interface{}]pref.Value
-	// set specific map entries
-	setMap map[interface{}]pref.Value
-	// clear specific entries in the map
-	clearMap []interface{}
-	// apply messageOps on each specified message entry
-	messageMap map[interface{}]messageOps
-	// range through all entries and check that they match
-	rangeMap map[interface{}]pref.Value
-)
-
-func (equalMap) isMapOp()   {}
-func (lenMap) isMapOp()     {}
-func (hasMap) isMapOp()     {}
-func (getMap) isMapOp()     {}
-func (setMap) isMapOp()     {}
-func (clearMap) isMapOp()   {}
-func (messageMap) isMapOp() {}
-func (rangeMap) isMapOp()   {}
-
-type ScalarProto2 struct {
-	Bool    *bool    `protobuf:"1"`
-	Int32   *int32   `protobuf:"2"`
-	Int64   *int64   `protobuf:"3"`
-	Uint32  *uint32  `protobuf:"4"`
-	Uint64  *uint64  `protobuf:"5"`
-	Float32 *float32 `protobuf:"6"`
-	Float64 *float64 `protobuf:"7"`
-	String  *string  `protobuf:"8"`
-	StringA []byte   `protobuf:"9"`
-	Bytes   []byte   `protobuf:"10"`
-	BytesA  *string  `protobuf:"11"`
-
-	MyBool    *MyBool    `protobuf:"12"`
-	MyInt32   *MyInt32   `protobuf:"13"`
-	MyInt64   *MyInt64   `protobuf:"14"`
-	MyUint32  *MyUint32  `protobuf:"15"`
-	MyUint64  *MyUint64  `protobuf:"16"`
-	MyFloat32 *MyFloat32 `protobuf:"17"`
-	MyFloat64 *MyFloat64 `protobuf:"18"`
-	MyString  *MyString  `protobuf:"19"`
-	MyStringA MyBytes    `protobuf:"20"`
-	MyBytes   MyBytes    `protobuf:"21"`
-	MyBytesA  *MyString  `protobuf:"22"`
-}
-
-func mustMakeEnumDesc(path string, syntax pref.Syntax, enumDesc string) pref.EnumDescriptor {
-	s := fmt.Sprintf(`name:%q syntax:%q enum_type:[{%s}]`, path, syntax, enumDesc)
-	pb := new(descriptorpb.FileDescriptorProto)
-	if err := prototext.Unmarshal([]byte(s), pb); err != nil {
-		panic(err)
-	}
-	fd, err := pdesc.NewFile(pb, nil)
-	if err != nil {
-		panic(err)
-	}
-	return fd.Enums().Get(0)
-}
-
-func mustMakeMessageDesc(path string, syntax pref.Syntax, fileDesc, msgDesc string, r pdesc.Resolver) pref.MessageDescriptor {
-	s := fmt.Sprintf(`name:%q syntax:%q %s message_type:[{%s}]`, path, syntax, fileDesc, msgDesc)
-	pb := new(descriptorpb.FileDescriptorProto)
-	if err := prototext.Unmarshal([]byte(s), pb); err != nil {
-		panic(err)
-	}
-	fd, err := pdesc.NewFile(pb, r)
-	if err != nil {
-		panic(err)
-	}
-	return fd.Messages().Get(0)
-}
-
-var V = pref.ValueOf
-var VE = func(n pref.EnumNumber) pref.Value { return V(n) }
-
-type (
-	MyBool    bool
-	MyInt32   int32
-	MyInt64   int64
-	MyUint32  uint32
-	MyUint64  uint64
-	MyFloat32 float32
-	MyFloat64 float64
-	MyString  string
-	MyBytes   []byte
-
-	ListStrings []MyString
-	ListBytes   []MyBytes
-
-	MapStrings map[MyString]MyString
-	MapBytes   map[MyString]MyBytes
-)
-
-var scalarProto2Type = pimpl.MessageInfo{GoReflectType: reflect.TypeOf(new(ScalarProto2)), Desc: mustMakeMessageDesc("scalar2.proto", pref.Proto2, "", `
-		name: "ScalarProto2"
-		field: [
-			{name:"f1"  number:1  label:LABEL_OPTIONAL type:TYPE_BOOL   default_value:"true"},
-			{name:"f2"  number:2  label:LABEL_OPTIONAL type:TYPE_INT32  default_value:"2"},
-			{name:"f3"  number:3  label:LABEL_OPTIONAL type:TYPE_INT64  default_value:"3"},
-			{name:"f4"  number:4  label:LABEL_OPTIONAL type:TYPE_UINT32 default_value:"4"},
-			{name:"f5"  number:5  label:LABEL_OPTIONAL type:TYPE_UINT64 default_value:"5"},
-			{name:"f6"  number:6  label:LABEL_OPTIONAL type:TYPE_FLOAT  default_value:"6"},
-			{name:"f7"  number:7  label:LABEL_OPTIONAL type:TYPE_DOUBLE default_value:"7"},
-			{name:"f8"  number:8  label:LABEL_OPTIONAL type:TYPE_STRING default_value:"8"},
-			{name:"f9"  number:9  label:LABEL_OPTIONAL type:TYPE_STRING default_value:"9"},
-			{name:"f10" number:10 label:LABEL_OPTIONAL type:TYPE_BYTES  default_value:"10"},
-			{name:"f11" number:11 label:LABEL_OPTIONAL type:TYPE_BYTES  default_value:"11"},
-
-			{name:"f12" number:12 label:LABEL_OPTIONAL type:TYPE_BOOL   default_value:"true"},
-			{name:"f13" number:13 label:LABEL_OPTIONAL type:TYPE_INT32  default_value:"13"},
-			{name:"f14" number:14 label:LABEL_OPTIONAL type:TYPE_INT64  default_value:"14"},
-			{name:"f15" number:15 label:LABEL_OPTIONAL type:TYPE_UINT32 default_value:"15"},
-			{name:"f16" number:16 label:LABEL_OPTIONAL type:TYPE_UINT64 default_value:"16"},
-			{name:"f17" number:17 label:LABEL_OPTIONAL type:TYPE_FLOAT  default_value:"17"},
-			{name:"f18" number:18 label:LABEL_OPTIONAL type:TYPE_DOUBLE default_value:"18"},
-			{name:"f19" number:19 label:LABEL_OPTIONAL type:TYPE_STRING default_value:"19"},
-			{name:"f20" number:20 label:LABEL_OPTIONAL type:TYPE_STRING default_value:"20"},
-			{name:"f21" number:21 label:LABEL_OPTIONAL type:TYPE_BYTES  default_value:"21"},
-			{name:"f22" number:22 label:LABEL_OPTIONAL type:TYPE_BYTES  default_value:"22"}
-		]
-	`, nil),
-}
-
-func (m *ScalarProto2) ProtoReflect() pref.Message { return scalarProto2Type.MessageOf(m) }
-
-func TestScalarProto2(t *testing.T) {
-	testMessage(t, nil, new(ScalarProto2).ProtoReflect(), messageOps{
-		hasFields{
-			1: false, 2: false, 3: false, 4: false, 5: false, 6: false, 7: false, 8: false, 9: false, 10: false, 11: false,
-			12: false, 13: false, 14: false, 15: false, 16: false, 17: false, 18: false, 19: false, 20: false, 21: false, 22: false,
-		},
-		getFields{
-			1: V(bool(true)), 2: V(int32(2)), 3: V(int64(3)), 4: V(uint32(4)), 5: V(uint64(5)), 6: V(float32(6)), 7: V(float64(7)), 8: V(string("8")), 9: V(string("9")), 10: V([]byte("10")), 11: V([]byte("11")),
-			12: V(bool(true)), 13: V(int32(13)), 14: V(int64(14)), 15: V(uint32(15)), 16: V(uint64(16)), 17: V(float32(17)), 18: V(float64(18)), 19: V(string("19")), 20: V(string("20")), 21: V([]byte("21")), 22: V([]byte("22")),
-		},
-		setFields{
-			1: V(bool(false)), 2: V(int32(0)), 3: V(int64(0)), 4: V(uint32(0)), 5: V(uint64(0)), 6: V(float32(0)), 7: V(float64(0)), 8: V(string("")), 9: V(string("")), 10: V([]byte(nil)), 11: V([]byte(nil)),
-			12: V(bool(false)), 13: V(int32(0)), 14: V(int64(0)), 15: V(uint32(0)), 16: V(uint64(0)), 17: V(float32(0)), 18: V(float64(0)), 19: V(string("")), 20: V(string("")), 21: V([]byte(nil)), 22: V([]byte(nil)),
-		},
-		hasFields{
-			1: true, 2: true, 3: true, 4: true, 5: true, 6: true, 7: true, 8: true, 9: true, 10: true, 11: true,
-			12: true, 13: true, 14: true, 15: true, 16: true, 17: true, 18: true, 19: true, 20: true, 21: true, 22: true,
-		},
-		equalMessage{(&ScalarProto2{
-			new(bool), new(int32), new(int64), new(uint32), new(uint64), new(float32), new(float64), new(string), []byte{}, []byte{}, new(string),
-			new(MyBool), new(MyInt32), new(MyInt64), new(MyUint32), new(MyUint64), new(MyFloat32), new(MyFloat64), new(MyString), MyBytes{}, MyBytes{}, new(MyString),
-		}).ProtoReflect()},
-		clearFields{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22},
-		equalMessage{new(ScalarProto2).ProtoReflect()},
-
-		// Setting a bytes field nil empty bytes should preserve presence.
-		setFields{10: V([]byte(nil)), 11: V([]byte(nil)), 21: V([]byte(nil)), 22: V([]byte(nil))},
-		getFields{10: V([]byte{}), 11: V([]byte(nil)), 21: V([]byte{}), 22: V([]byte(nil))},
-		hasFields{10: true, 11: true, 21: true, 22: true},
-	})
-
-	// Test read-only operations on nil message.
-	testMessage(t, nil, (*ScalarProto2)(nil).ProtoReflect(), messageOps{
-		hasFields{
-			1: false, 2: false, 3: false, 4: false, 5: false, 6: false, 7: false, 8: false, 9: false, 10: false, 11: false,
-			12: false, 13: false, 14: false, 15: false, 16: false, 17: false, 18: false, 19: false, 20: false, 21: false, 22: false,
-		},
-		getFields{
-			1: V(bool(true)), 2: V(int32(2)), 3: V(int64(3)), 4: V(uint32(4)), 5: V(uint64(5)), 6: V(float32(6)), 7: V(float64(7)), 8: V(string("8")), 9: V(string("9")), 10: V([]byte("10")), 11: V([]byte("11")),
-			12: V(bool(true)), 13: V(int32(13)), 14: V(int64(14)), 15: V(uint32(15)), 16: V(uint64(16)), 17: V(float32(17)), 18: V(float64(18)), 19: V(string("19")), 20: V(string("20")), 21: V([]byte("21")), 22: V([]byte("22")),
-		},
-	})
-}
-
-type ScalarProto3 struct {
-	Bool    bool    `protobuf:"1"`
-	Int32   int32   `protobuf:"2"`
-	Int64   int64   `protobuf:"3"`
-	Uint32  uint32  `protobuf:"4"`
-	Uint64  uint64  `protobuf:"5"`
-	Float32 float32 `protobuf:"6"`
-	Float64 float64 `protobuf:"7"`
-	String  string  `protobuf:"8"`
-	StringA []byte  `protobuf:"9"`
-	Bytes   []byte  `protobuf:"10"`
-	BytesA  string  `protobuf:"11"`
-
-	MyBool    MyBool    `protobuf:"12"`
-	MyInt32   MyInt32   `protobuf:"13"`
-	MyInt64   MyInt64   `protobuf:"14"`
-	MyUint32  MyUint32  `protobuf:"15"`
-	MyUint64  MyUint64  `protobuf:"16"`
-	MyFloat32 MyFloat32 `protobuf:"17"`
-	MyFloat64 MyFloat64 `protobuf:"18"`
-	MyString  MyString  `protobuf:"19"`
-	MyStringA MyBytes   `protobuf:"20"`
-	MyBytes   MyBytes   `protobuf:"21"`
-	MyBytesA  MyString  `protobuf:"22"`
-}
-
-var scalarProto3Type = pimpl.MessageInfo{GoReflectType: reflect.TypeOf(new(ScalarProto3)), Desc: mustMakeMessageDesc("scalar3.proto", pref.Proto3, "", `
-		name: "ScalarProto3"
-		field: [
-			{name:"f1"  number:1  label:LABEL_OPTIONAL type:TYPE_BOOL},
-			{name:"f2"  number:2  label:LABEL_OPTIONAL type:TYPE_INT32},
-			{name:"f3"  number:3  label:LABEL_OPTIONAL type:TYPE_INT64},
-			{name:"f4"  number:4  label:LABEL_OPTIONAL type:TYPE_UINT32},
-			{name:"f5"  number:5  label:LABEL_OPTIONAL type:TYPE_UINT64},
-			{name:"f6"  number:6  label:LABEL_OPTIONAL type:TYPE_FLOAT},
-			{name:"f7"  number:7  label:LABEL_OPTIONAL type:TYPE_DOUBLE},
-			{name:"f8"  number:8  label:LABEL_OPTIONAL type:TYPE_STRING},
-			{name:"f9"  number:9  label:LABEL_OPTIONAL type:TYPE_STRING},
-			{name:"f10" number:10 label:LABEL_OPTIONAL type:TYPE_BYTES},
-			{name:"f11" number:11 label:LABEL_OPTIONAL type:TYPE_BYTES},
-
-			{name:"f12" number:12 label:LABEL_OPTIONAL type:TYPE_BOOL},
-			{name:"f13" number:13 label:LABEL_OPTIONAL type:TYPE_INT32},
-			{name:"f14" number:14 label:LABEL_OPTIONAL type:TYPE_INT64},
-			{name:"f15" number:15 label:LABEL_OPTIONAL type:TYPE_UINT32},
-			{name:"f16" number:16 label:LABEL_OPTIONAL type:TYPE_UINT64},
-			{name:"f17" number:17 label:LABEL_OPTIONAL type:TYPE_FLOAT},
-			{name:"f18" number:18 label:LABEL_OPTIONAL type:TYPE_DOUBLE},
-			{name:"f19" number:19 label:LABEL_OPTIONAL type:TYPE_STRING},
-			{name:"f20" number:20 label:LABEL_OPTIONAL type:TYPE_STRING},
-			{name:"f21" number:21 label:LABEL_OPTIONAL type:TYPE_BYTES},
-			{name:"f22" number:22 label:LABEL_OPTIONAL type:TYPE_BYTES}
-		]
-	`, nil),
-}
-
-func (m *ScalarProto3) ProtoReflect() pref.Message { return scalarProto3Type.MessageOf(m) }
-
-func TestScalarProto3(t *testing.T) {
-	testMessage(t, nil, new(ScalarProto3).ProtoReflect(), messageOps{
-		hasFields{
-			1: false, 2: false, 3: false, 4: false, 5: false, 6: false, 7: false, 8: false, 9: false, 10: false, 11: false,
-			12: false, 13: false, 14: false, 15: false, 16: false, 17: false, 18: false, 19: false, 20: false, 21: false, 22: false,
-		},
-		getFields{
-			1: V(bool(false)), 2: V(int32(0)), 3: V(int64(0)), 4: V(uint32(0)), 5: V(uint64(0)), 6: V(float32(0)), 7: V(float64(0)), 8: V(string("")), 9: V(string("")), 10: V([]byte(nil)), 11: V([]byte(nil)),
-			12: V(bool(false)), 13: V(int32(0)), 14: V(int64(0)), 15: V(uint32(0)), 16: V(uint64(0)), 17: V(float32(0)), 18: V(float64(0)), 19: V(string("")), 20: V(string("")), 21: V([]byte(nil)), 22: V([]byte(nil)),
-		},
-		setFields{
-			1: V(bool(false)), 2: V(int32(0)), 3: V(int64(0)), 4: V(uint32(0)), 5: V(uint64(0)), 6: V(float32(0)), 7: V(float64(0)), 8: V(string("")), 9: V(string("")), 10: V([]byte(nil)), 11: V([]byte(nil)),
-			12: V(bool(false)), 13: V(int32(0)), 14: V(int64(0)), 15: V(uint32(0)), 16: V(uint64(0)), 17: V(float32(0)), 18: V(float64(0)), 19: V(string("")), 20: V(string("")), 21: V([]byte(nil)), 22: V([]byte(nil)),
-		},
-		hasFields{
-			1: false, 2: false, 3: false, 4: false, 5: false, 6: false, 7: false, 8: false, 9: false, 10: false, 11: false,
-			12: false, 13: false, 14: false, 15: false, 16: false, 17: false, 18: false, 19: false, 20: false, 21: false, 22: false,
-		},
-		equalMessage{new(ScalarProto3).ProtoReflect()},
-		setFields{
-			1: V(bool(true)), 2: V(int32(2)), 3: V(int64(3)), 4: V(uint32(4)), 5: V(uint64(5)), 6: V(float32(6)), 7: V(float64(7)), 8: V(string("8")), 9: V(string("9")), 10: V([]byte("10")), 11: V([]byte("11")),
-			12: V(bool(true)), 13: V(int32(13)), 14: V(int64(14)), 15: V(uint32(15)), 16: V(uint64(16)), 17: V(float32(17)), 18: V(float64(18)), 19: V(string("19")), 20: V(string("20")), 21: V([]byte("21")), 22: V([]byte("22")),
-		},
-		hasFields{
-			1: true, 2: true, 3: true, 4: true, 5: true, 6: true, 7: true, 8: true, 9: true, 10: true, 11: true,
-			12: true, 13: true, 14: true, 15: true, 16: true, 17: true, 18: true, 19: true, 20: true, 21: true, 22: true,
-		},
-		equalMessage{(&ScalarProto3{
-			true, 2, 3, 4, 5, 6, 7, "8", []byte("9"), []byte("10"), "11",
-			true, 13, 14, 15, 16, 17, 18, "19", []byte("20"), []byte("21"), "22",
-		}).ProtoReflect()},
-		setFields{
-			2: V(int32(-2)), 3: V(int64(-3)), 6: V(float32(math.Inf(-1))), 7: V(float64(math.NaN())),
-		},
-		hasFields{
-			2: true, 3: true, 6: true, 7: true,
-		},
-		clearFields{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22},
-		equalMessage{new(ScalarProto3).ProtoReflect()},
-
-		// Verify that -0 triggers proper Has behavior.
-		hasFields{6: false, 7: false},
-		setFields{6: V(float32(math.Copysign(0, -1))), 7: V(float64(math.Copysign(0, -1)))},
-		hasFields{6: true, 7: true},
-
-		// Setting a bytes field to non-nil empty bytes should not preserve presence.
-		setFields{10: V([]byte{}), 11: V([]byte{}), 21: V([]byte{}), 22: V([]byte{})},
-		getFields{10: V([]byte(nil)), 11: V([]byte(nil)), 21: V([]byte(nil)), 22: V([]byte(nil))},
-		hasFields{10: false, 11: false, 21: false, 22: false},
-	})
-
-	// Test read-only operations on nil message.
-	testMessage(t, nil, (*ScalarProto3)(nil).ProtoReflect(), messageOps{
-		hasFields{
-			1: false, 2: false, 3: false, 4: false, 5: false, 6: false, 7: false, 8: false, 9: false, 10: false, 11: false,
-			12: false, 13: false, 14: false, 15: false, 16: false, 17: false, 18: false, 19: false, 20: false, 21: false, 22: false,
-		},
-		getFields{
-			1: V(bool(false)), 2: V(int32(0)), 3: V(int64(0)), 4: V(uint32(0)), 5: V(uint64(0)), 6: V(float32(0)), 7: V(float64(0)), 8: V(string("")), 9: V(string("")), 10: V([]byte(nil)), 11: V([]byte(nil)),
-			12: V(bool(false)), 13: V(int32(0)), 14: V(int64(0)), 15: V(uint32(0)), 16: V(uint64(0)), 17: V(float32(0)), 18: V(float64(0)), 19: V(string("")), 20: V(string("")), 21: V([]byte(nil)), 22: V([]byte(nil)),
-		},
-	})
-}
-
-type ListScalars struct {
-	Bools    []bool    `protobuf:"1"`
-	Int32s   []int32   `protobuf:"2"`
-	Int64s   []int64   `protobuf:"3"`
-	Uint32s  []uint32  `protobuf:"4"`
-	Uint64s  []uint64  `protobuf:"5"`
-	Float32s []float32 `protobuf:"6"`
-	Float64s []float64 `protobuf:"7"`
-	Strings  []string  `protobuf:"8"`
-	StringsA [][]byte  `protobuf:"9"`
-	Bytes    [][]byte  `protobuf:"10"`
-	BytesA   []string  `protobuf:"11"`
-
-	MyStrings1 []MyString `protobuf:"12"`
-	MyStrings2 []MyBytes  `protobuf:"13"`
-	MyBytes1   []MyBytes  `protobuf:"14"`
-	MyBytes2   []MyString `protobuf:"15"`
-
-	MyStrings3 ListStrings `protobuf:"16"`
-	MyStrings4 ListBytes   `protobuf:"17"`
-	MyBytes3   ListBytes   `protobuf:"18"`
-	MyBytes4   ListStrings `protobuf:"19"`
-}
-
-var listScalarsType = pimpl.MessageInfo{GoReflectType: reflect.TypeOf(new(ListScalars)), Desc: mustMakeMessageDesc("list-scalars.proto", pref.Proto2, "", `
-		name: "ListScalars"
-		field: [
-			{name:"f1"  number:1  label:LABEL_REPEATED type:TYPE_BOOL},
-			{name:"f2"  number:2  label:LABEL_REPEATED type:TYPE_INT32},
-			{name:"f3"  number:3  label:LABEL_REPEATED type:TYPE_INT64},
-			{name:"f4"  number:4  label:LABEL_REPEATED type:TYPE_UINT32},
-			{name:"f5"  number:5  label:LABEL_REPEATED type:TYPE_UINT64},
-			{name:"f6"  number:6  label:LABEL_REPEATED type:TYPE_FLOAT},
-			{name:"f7"  number:7  label:LABEL_REPEATED type:TYPE_DOUBLE},
-			{name:"f8"  number:8  label:LABEL_REPEATED type:TYPE_STRING},
-			{name:"f9"  number:9  label:LABEL_REPEATED type:TYPE_STRING},
-			{name:"f10" number:10 label:LABEL_REPEATED type:TYPE_BYTES},
-			{name:"f11" number:11 label:LABEL_REPEATED type:TYPE_BYTES},
-
-			{name:"f12" number:12 label:LABEL_REPEATED type:TYPE_STRING},
-			{name:"f13" number:13 label:LABEL_REPEATED type:TYPE_STRING},
-			{name:"f14" number:14 label:LABEL_REPEATED type:TYPE_BYTES},
-			{name:"f15" number:15 label:LABEL_REPEATED type:TYPE_BYTES},
-
-			{name:"f16" number:16 label:LABEL_REPEATED type:TYPE_STRING},
-			{name:"f17" number:17 label:LABEL_REPEATED type:TYPE_STRING},
-			{name:"f18" number:18 label:LABEL_REPEATED type:TYPE_BYTES},
-			{name:"f19" number:19 label:LABEL_REPEATED type:TYPE_BYTES}
-		]
-	`, nil),
-}
-
-func (m *ListScalars) ProtoReflect() pref.Message { return listScalarsType.MessageOf(m) }
-
-func TestListScalars(t *testing.T) {
-	empty := new(ListScalars).ProtoReflect()
-	want := (&ListScalars{
-		Bools:    []bool{true, false, true},
-		Int32s:   []int32{2, math.MinInt32, math.MaxInt32},
-		Int64s:   []int64{3, math.MinInt64, math.MaxInt64},
-		Uint32s:  []uint32{4, math.MaxUint32 / 2, math.MaxUint32},
-		Uint64s:  []uint64{5, math.MaxUint64 / 2, math.MaxUint64},
-		Float32s: []float32{6, math.SmallestNonzeroFloat32, float32(math.NaN()), math.MaxFloat32},
-		Float64s: []float64{7, math.SmallestNonzeroFloat64, float64(math.NaN()), math.MaxFloat64},
-		Strings:  []string{"8", "", "eight"},
-		StringsA: [][]byte{[]byte("9"), nil, []byte("nine")},
-		Bytes:    [][]byte{[]byte("10"), nil, []byte("ten")},
-		BytesA:   []string{"11", "", "eleven"},
-
-		MyStrings1: []MyString{"12", "", "twelve"},
-		MyStrings2: []MyBytes{[]byte("13"), nil, []byte("thirteen")},
-		MyBytes1:   []MyBytes{[]byte("14"), nil, []byte("fourteen")},
-		MyBytes2:   []MyString{"15", "", "fifteen"},
-
-		MyStrings3: ListStrings{"16", "", "sixteen"},
-		MyStrings4: ListBytes{[]byte("17"), nil, []byte("seventeen")},
-		MyBytes3:   ListBytes{[]byte("18"), nil, []byte("eighteen")},
-		MyBytes4:   ListStrings{"19", "", "nineteen"},
-	}).ProtoReflect()
-
-	testMessage(t, nil, new(ListScalars).ProtoReflect(), messageOps{
-		hasFields{1: false, 2: false, 3: false, 4: false, 5: false, 6: false, 7: false, 8: false, 9: false, 10: false, 11: false, 12: false, 13: false, 14: false, 15: false, 16: false, 17: false, 18: false, 19: false},
-		getFields{1: getField(empty, 1), 3: getField(empty, 3), 5: getField(empty, 5), 7: getField(empty, 7), 9: getField(empty, 9), 11: getField(empty, 11), 13: getField(empty, 13), 15: getField(empty, 15), 17: getField(empty, 17), 19: getField(empty, 19)},
-		setFields{1: getField(want, 1), 3: getField(want, 3), 5: getField(want, 5), 7: getField(want, 7), 9: getField(want, 9), 11: getField(want, 11), 13: getField(want, 13), 15: getField(want, 15), 17: getField(want, 17), 19: getField(want, 19)},
-		listFieldsMutable{
-			2: {
-				lenList(0),
-				appendList{V(int32(2)), V(int32(math.MinInt32)), V(int32(math.MaxInt32))},
-				getList{0: V(int32(2)), 1: V(int32(math.MinInt32)), 2: V(int32(math.MaxInt32))},
-				equalList{getField(want, 2).List()},
-			},
-			4: {
-				appendList{V(uint32(0)), V(uint32(0)), V(uint32(0))},
-				setList{0: V(uint32(4)), 1: V(uint32(math.MaxUint32 / 2)), 2: V(uint32(math.MaxUint32))},
-				lenList(3),
-			},
-			6: {
-				appendList{V(float32(6)), V(float32(math.SmallestNonzeroFloat32)), V(float32(math.NaN())), V(float32(math.MaxFloat32))},
-				equalList{getField(want, 6).List()},
-			},
-			8: {
-				appendList{V(""), V(""), V(""), V(""), V(""), V("")},
-				lenList(6),
-				setList{0: V("8"), 2: V("eight")},
-				truncList(3),
-				equalList{getField(want, 8).List()},
-			},
-			10: {
-				appendList{V([]byte(nil)), V([]byte(nil))},
-				setList{0: V([]byte("10"))},
-				appendList{V([]byte("wrong"))},
-				setList{2: V([]byte("ten"))},
-				equalList{getField(want, 10).List()},
-			},
-			12: {
-				appendList{V("12"), V("wrong"), V("twelve")},
-				setList{1: V("")},
-				equalList{getField(want, 12).List()},
-			},
-			14: {
-				appendList{V([]byte("14")), V([]byte(nil)), V([]byte("fourteen"))},
-				equalList{getField(want, 14).List()},
-			},
-			16: {
-				appendList{V("16"), V(""), V("sixteen"), V("extra")},
-				truncList(3),
-				equalList{getField(want, 16).List()},
-			},
-			18: {
-				appendList{V([]byte("18")), V([]byte(nil)), V([]byte("eighteen"))},
-				equalList{getField(want, 18).List()},
-			},
-		},
-		hasFields{1: true, 2: true, 3: true, 4: true, 5: true, 6: true, 7: true, 8: true, 9: true, 10: true, 11: true, 12: true, 13: true, 14: true, 15: true, 16: true, 17: true, 18: true, 19: true},
-		equalMessage{want},
-		clearFields{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19},
-		equalMessage{empty},
-	})
-
-	// Test read-only operations on nil message.
-	testMessage(t, nil, (*ListScalars)(nil).ProtoReflect(), messageOps{
-		hasFields{1: false, 2: false, 3: false, 4: false, 5: false, 6: false, 7: false, 8: false, 9: false, 10: false, 11: false, 12: false, 13: false, 14: false, 15: false, 16: false, 17: false, 18: false, 19: false},
-		listFields{2: {lenList(0)}, 4: {lenList(0)}, 6: {lenList(0)}, 8: {lenList(0)}, 10: {lenList(0)}, 12: {lenList(0)}, 14: {lenList(0)}, 16: {lenList(0)}, 18: {lenList(0)}},
-	})
-}
-
-type MapScalars struct {
-	KeyBools   map[bool]string   `protobuf:"1"`
-	KeyInt32s  map[int32]string  `protobuf:"2"`
-	KeyInt64s  map[int64]string  `protobuf:"3"`
-	KeyUint32s map[uint32]string `protobuf:"4"`
-	KeyUint64s map[uint64]string `protobuf:"5"`
-	KeyStrings map[string]string `protobuf:"6"`
-
-	ValBools    map[string]bool    `protobuf:"7"`
-	ValInt32s   map[string]int32   `protobuf:"8"`
-	ValInt64s   map[string]int64   `protobuf:"9"`
-	ValUint32s  map[string]uint32  `protobuf:"10"`
-	ValUint64s  map[string]uint64  `protobuf:"11"`
-	ValFloat32s map[string]float32 `protobuf:"12"`
-	ValFloat64s map[string]float64 `protobuf:"13"`
-	ValStrings  map[string]string  `protobuf:"14"`
-	ValStringsA map[string][]byte  `protobuf:"15"`
-	ValBytes    map[string][]byte  `protobuf:"16"`
-	ValBytesA   map[string]string  `protobuf:"17"`
-
-	MyStrings1 map[MyString]MyString `protobuf:"18"`
-	MyStrings2 map[MyString]MyBytes  `protobuf:"19"`
-	MyBytes1   map[MyString]MyBytes  `protobuf:"20"`
-	MyBytes2   map[MyString]MyString `protobuf:"21"`
-
-	MyStrings3 MapStrings `protobuf:"22"`
-	MyStrings4 MapBytes   `protobuf:"23"`
-	MyBytes3   MapBytes   `protobuf:"24"`
-	MyBytes4   MapStrings `protobuf:"25"`
-}
-
-var mapScalarsType = pimpl.MessageInfo{GoReflectType: reflect.TypeOf(new(MapScalars)), Desc: mustMakeMessageDesc("map-scalars.proto", pref.Proto2, "", `
-		name: "MapScalars"
-		field: [
-			{name:"f1"  number:1  label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F1Entry"},
-			{name:"f2"  number:2  label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F2Entry"},
-			{name:"f3"  number:3  label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F3Entry"},
-			{name:"f4"  number:4  label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F4Entry"},
-			{name:"f5"  number:5  label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F5Entry"},
-			{name:"f6"  number:6  label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F6Entry"},
-
-			{name:"f7"  number:7  label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F7Entry"},
-			{name:"f8"  number:8  label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F8Entry"},
-			{name:"f9"  number:9  label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F9Entry"},
-			{name:"f10" number:10 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F10Entry"},
-			{name:"f11" number:11 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F11Entry"},
-			{name:"f12" number:12 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F12Entry"},
-			{name:"f13" number:13 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F13Entry"},
-			{name:"f14" number:14 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F14Entry"},
-			{name:"f15" number:15 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F15Entry"},
-			{name:"f16" number:16 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F16Entry"},
-			{name:"f17" number:17 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F17Entry"},
-
-			{name:"f18" number:18 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F18Entry"},
-			{name:"f19" number:19 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F19Entry"},
-			{name:"f20" number:20 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F20Entry"},
-			{name:"f21" number:21 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F21Entry"},
-
-			{name:"f22" number:22 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F22Entry"},
-			{name:"f23" number:23 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F23Entry"},
-			{name:"f24" number:24 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F24Entry"},
-			{name:"f25" number:25 label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".MapScalars.F25Entry"}
-		]
-		nested_type: [
-			{name:"F1Entry"  field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_BOOL},   {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_STRING}] options:{map_entry:true}},
-			{name:"F2Entry"  field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_INT32},  {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_STRING}] options:{map_entry:true}},
-			{name:"F3Entry"  field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_INT64},  {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_STRING}] options:{map_entry:true}},
-			{name:"F4Entry"  field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_UINT32}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_STRING}] options:{map_entry:true}},
-			{name:"F5Entry"  field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_UINT64}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_STRING}] options:{map_entry:true}},
-			{name:"F6Entry"  field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_STRING}] options:{map_entry:true}},
-
-			{name:"F7Entry"  field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_BOOL}]   options:{map_entry:true}},
-			{name:"F8Entry"  field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_INT32}]  options:{map_entry:true}},
-			{name:"F9Entry"  field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_INT64}]  options:{map_entry:true}},
-			{name:"F10Entry" field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_UINT32}] options:{map_entry:true}},
-			{name:"F11Entry" field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_UINT64}] options:{map_entry:true}},
-			{name:"F12Entry" field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_FLOAT}]  options:{map_entry:true}},
-			{name:"F13Entry" field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_DOUBLE}] options:{map_entry:true}},
-			{name:"F14Entry" field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_STRING}] options:{map_entry:true}},
-			{name:"F15Entry" field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_STRING}] options:{map_entry:true}},
-			{name:"F16Entry" field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_BYTES}]  options:{map_entry:true}},
-			{name:"F17Entry" field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_BYTES}]  options:{map_entry:true}},
-
-			{name:"F18Entry" field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_STRING}] options:{map_entry:true}},
-			{name:"F19Entry" field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_STRING}] options:{map_entry:true}},
-			{name:"F20Entry" field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_BYTES}]  options:{map_entry:true}},
-			{name:"F21Entry" field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_BYTES}]  options:{map_entry:true}},
-
-			{name:"F22Entry" field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_STRING}] options:{map_entry:true}},
-			{name:"F23Entry" field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_STRING}] options:{map_entry:true}},
-			{name:"F24Entry" field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_BYTES}]  options:{map_entry:true}},
-			{name:"F25Entry" field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_BYTES}]  options:{map_entry:true}}
-		]
-	`, nil),
-}
-
-func (m *MapScalars) ProtoReflect() pref.Message { return mapScalarsType.MessageOf(m) }
-
-func TestMapScalars(t *testing.T) {
-	empty := new(MapScalars).ProtoReflect()
-	want := (&MapScalars{
-		KeyBools:   map[bool]string{true: "true", false: "false"},
-		KeyInt32s:  map[int32]string{0: "zero", -1: "one", 2: "two"},
-		KeyInt64s:  map[int64]string{0: "zero", -10: "ten", 20: "twenty"},
-		KeyUint32s: map[uint32]string{0: "zero", 1: "one", 2: "two"},
-		KeyUint64s: map[uint64]string{0: "zero", 10: "ten", 20: "twenty"},
-		KeyStrings: map[string]string{"": "", "foo": "bar"},
-
-		ValBools:    map[string]bool{"true": true, "false": false},
-		ValInt32s:   map[string]int32{"one": 1, "two": 2, "three": 3},
-		ValInt64s:   map[string]int64{"ten": 10, "twenty": -20, "thirty": 30},
-		ValUint32s:  map[string]uint32{"0x00": 0x00, "0xff": 0xff, "0xdead": 0xdead},
-		ValUint64s:  map[string]uint64{"0x00": 0x00, "0xff": 0xff, "0xdead": 0xdead},
-		ValFloat32s: map[string]float32{"nan": float32(math.NaN()), "pi": float32(math.Pi)},
-		ValFloat64s: map[string]float64{"nan": float64(math.NaN()), "pi": float64(math.Pi)},
-		ValStrings:  map[string]string{"s1": "s1", "s2": "s2"},
-		ValStringsA: map[string][]byte{"s1": []byte("s1"), "s2": []byte("s2")},
-		ValBytes:    map[string][]byte{"s1": []byte("s1"), "s2": []byte("s2")},
-		ValBytesA:   map[string]string{"s1": "s1", "s2": "s2"},
-
-		MyStrings1: map[MyString]MyString{"s1": "s1", "s2": "s2"},
-		MyStrings2: map[MyString]MyBytes{"s1": []byte("s1"), "s2": []byte("s2")},
-		MyBytes1:   map[MyString]MyBytes{"s1": []byte("s1"), "s2": []byte("s2")},
-		MyBytes2:   map[MyString]MyString{"s1": "s1", "s2": "s2"},
-
-		MyStrings3: MapStrings{"s1": "s1", "s2": "s2"},
-		MyStrings4: MapBytes{"s1": []byte("s1"), "s2": []byte("s2")},
-		MyBytes3:   MapBytes{"s1": []byte("s1"), "s2": []byte("s2")},
-		MyBytes4:   MapStrings{"s1": "s1", "s2": "s2"},
-	}).ProtoReflect()
-
-	testMessage(t, nil, new(MapScalars).ProtoReflect(), messageOps{
-		hasFields{1: false, 2: false, 3: false, 4: false, 5: false, 6: false, 7: false, 8: false, 9: false, 10: false, 11: false, 12: false, 13: false, 14: false, 15: false, 16: false, 17: false, 18: false, 19: false, 20: false, 21: false, 22: false, 23: false, 24: false, 25: false},
-		getFields{1: getField(empty, 1), 3: getField(empty, 3), 5: getField(empty, 5), 7: getField(empty, 7), 9: getField(empty, 9), 11: getField(empty, 11), 13: getField(empty, 13), 15: getField(empty, 15), 17: getField(empty, 17), 19: getField(empty, 19), 21: getField(empty, 21), 23: getField(empty, 23), 25: getField(empty, 25)},
-		setFields{1: getField(want, 1), 3: getField(want, 3), 5: getField(want, 5), 7: getField(want, 7), 9: getField(want, 9), 11: getField(want, 11), 13: getField(want, 13), 15: getField(want, 15), 17: getField(want, 17), 19: getField(want, 19), 21: getField(want, 21), 23: getField(want, 23), 25: getField(want, 25)},
-		mapFieldsMutable{
-			2: {
-				lenMap(0),
-				hasMap{int32(0): false, int32(-1): false, int32(2): false},
-				setMap{int32(0): V("zero")},
-				lenMap(1),
-				hasMap{int32(0): true, int32(-1): false, int32(2): false},
-				setMap{int32(-1): V("one")},
-				lenMap(2),
-				hasMap{int32(0): true, int32(-1): true, int32(2): false},
-				setMap{int32(2): V("two")},
-				lenMap(3),
-				hasMap{int32(0): true, int32(-1): true, int32(2): true},
-			},
-			4: {
-				setMap{uint32(0): V("zero"), uint32(1): V("one"), uint32(2): V("two")},
-				equalMap{getField(want, 4).Map()},
-			},
-			6: {
-				clearMap{"noexist"},
-				setMap{"foo": V("bar")},
-				setMap{"": V("empty")},
-				getMap{"": V("empty"), "foo": V("bar"), "noexist": V(nil)},
-				setMap{"": V(""), "extra": V("extra")},
-				clearMap{"extra", "noexist"},
-			},
-			8: {
-				equalMap{getField(empty, 8).Map()},
-				setMap{"one": V(int32(1)), "two": V(int32(2)), "three": V(int32(3))},
-			},
-			10: {
-				setMap{"0x00": V(uint32(0x00)), "0xff": V(uint32(0xff)), "0xdead": V(uint32(0xdead))},
-				lenMap(3),
-				equalMap{getField(want, 10).Map()},
-				getMap{"0x00": V(uint32(0x00)), "0xff": V(uint32(0xff)), "0xdead": V(uint32(0xdead)), "0xdeadbeef": V(nil)},
-			},
-			12: {
-				setMap{"nan": V(float32(math.NaN())), "pi": V(float32(math.Pi)), "e": V(float32(math.E))},
-				clearMap{"e", "phi"},
-				rangeMap{"nan": V(float32(math.NaN())), "pi": V(float32(math.Pi))},
-			},
-			14: {
-				equalMap{getField(empty, 14).Map()},
-				setMap{"s1": V("s1"), "s2": V("s2")},
-			},
-			16: {
-				setMap{"s1": V([]byte("s1")), "s2": V([]byte("s2"))},
-				equalMap{getField(want, 16).Map()},
-			},
-			18: {
-				hasMap{"s1": false, "s2": false, "s3": false},
-				setMap{"s1": V("s1"), "s2": V("s2")},
-				hasMap{"s1": true, "s2": true, "s3": false},
-			},
-			20: {
-				equalMap{getField(empty, 20).Map()},
-				setMap{"s1": V([]byte("s1")), "s2": V([]byte("s2"))},
-			},
-			22: {
-				rangeMap{},
-				setMap{"s1": V("s1"), "s2": V("s2")},
-				rangeMap{"s1": V("s1"), "s2": V("s2")},
-				lenMap(2),
-			},
-			24: {
-				setMap{"s1": V([]byte("s1")), "s2": V([]byte("s2"))},
-				equalMap{getField(want, 24).Map()},
-			},
-		},
-		hasFields{1: true, 2: true, 3: true, 4: true, 5: true, 6: true, 7: true, 8: true, 9: true, 10: true, 11: true, 12: true, 13: true, 14: true, 15: true, 16: true, 17: true, 18: true, 19: true, 20: true, 21: true, 22: true, 23: true, 24: true, 25: true},
-		equalMessage{want},
-		clearFields{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25},
-		equalMessage{empty},
-	})
-
-	// Test read-only operations on nil message.
-	testMessage(t, nil, (*MapScalars)(nil).ProtoReflect(), messageOps{
-		hasFields{1: false, 2: false, 3: false, 4: false, 5: false, 6: false, 7: false, 8: false, 9: false, 10: false, 11: false, 12: false, 13: false, 14: false, 15: false, 16: false, 17: false, 18: false, 19: false, 20: false, 21: false, 22: false, 23: false, 24: false, 25: false},
-		mapFields{2: {lenMap(0)}, 4: {lenMap(0)}, 6: {lenMap(0)}, 8: {lenMap(0)}, 10: {lenMap(0)}, 12: {lenMap(0)}, 14: {lenMap(0)}, 16: {lenMap(0)}, 18: {lenMap(0)}, 20: {lenMap(0)}, 22: {lenMap(0)}, 24: {lenMap(0)}},
-	})
-}
-
-type OneofScalars struct {
-	Union isOneofScalars_Union `protobuf_oneof:"union"`
-}
-
-var oneofScalarsType = pimpl.MessageInfo{GoReflectType: reflect.TypeOf(new(OneofScalars)), Desc: mustMakeMessageDesc("oneof-scalars.proto", pref.Proto2, "", `
-		name: "OneofScalars"
-		field: [
-			{name:"f1"  number:1  label:LABEL_OPTIONAL type:TYPE_BOOL   default_value:"true" oneof_index:0},
-			{name:"f2"  number:2  label:LABEL_OPTIONAL type:TYPE_INT32  default_value:"2"    oneof_index:0},
-			{name:"f3"  number:3  label:LABEL_OPTIONAL type:TYPE_INT64  default_value:"3"    oneof_index:0},
-			{name:"f4"  number:4  label:LABEL_OPTIONAL type:TYPE_UINT32 default_value:"4"    oneof_index:0},
-			{name:"f5"  number:5  label:LABEL_OPTIONAL type:TYPE_UINT64 default_value:"5"    oneof_index:0},
-			{name:"f6"  number:6  label:LABEL_OPTIONAL type:TYPE_FLOAT  default_value:"6"    oneof_index:0},
-			{name:"f7"  number:7  label:LABEL_OPTIONAL type:TYPE_DOUBLE default_value:"7"    oneof_index:0},
-			{name:"f8"  number:8  label:LABEL_OPTIONAL type:TYPE_STRING default_value:"8"    oneof_index:0},
-			{name:"f9"  number:9  label:LABEL_OPTIONAL type:TYPE_STRING default_value:"9"    oneof_index:0},
-			{name:"f10" number:10 label:LABEL_OPTIONAL type:TYPE_STRING default_value:"10"   oneof_index:0},
-			{name:"f11" number:11 label:LABEL_OPTIONAL type:TYPE_BYTES  default_value:"11"   oneof_index:0},
-			{name:"f12" number:12 label:LABEL_OPTIONAL type:TYPE_BYTES  default_value:"12"   oneof_index:0},
-			{name:"f13" number:13 label:LABEL_OPTIONAL type:TYPE_BYTES  default_value:"13"   oneof_index:0}
-		]
-		oneof_decl: [{name:"union"}]
-	`, nil),
-}
-
-func (m *OneofScalars) ProtoReflect() pref.Message { return oneofScalarsType.MessageOf(m) }
-
-func (*OneofScalars) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*OneofScalars_Bool)(nil),
-		(*OneofScalars_Int32)(nil),
-		(*OneofScalars_Int64)(nil),
-		(*OneofScalars_Uint32)(nil),
-		(*OneofScalars_Uint64)(nil),
-		(*OneofScalars_Float32)(nil),
-		(*OneofScalars_Float64)(nil),
-		(*OneofScalars_String)(nil),
-		(*OneofScalars_StringA)(nil),
-		(*OneofScalars_StringB)(nil),
-		(*OneofScalars_Bytes)(nil),
-		(*OneofScalars_BytesA)(nil),
-		(*OneofScalars_BytesB)(nil),
-	}
-}
-
-type (
-	isOneofScalars_Union interface {
-		isOneofScalars_Union()
-	}
-	OneofScalars_Bool struct {
-		Bool bool `protobuf:"1"`
-	}
-	OneofScalars_Int32 struct {
-		Int32 MyInt32 `protobuf:"2"`
-	}
-	OneofScalars_Int64 struct {
-		Int64 int64 `protobuf:"3"`
-	}
-	OneofScalars_Uint32 struct {
-		Uint32 MyUint32 `protobuf:"4"`
-	}
-	OneofScalars_Uint64 struct {
-		Uint64 uint64 `protobuf:"5"`
-	}
-	OneofScalars_Float32 struct {
-		Float32 MyFloat32 `protobuf:"6"`
-	}
-	OneofScalars_Float64 struct {
-		Float64 float64 `protobuf:"7"`
-	}
-	OneofScalars_String struct {
-		String string `protobuf:"8"`
-	}
-	OneofScalars_StringA struct {
-		StringA []byte `protobuf:"9"`
-	}
-	OneofScalars_StringB struct {
-		StringB MyString `protobuf:"10"`
-	}
-	OneofScalars_Bytes struct {
-		Bytes []byte `protobuf:"11"`
-	}
-	OneofScalars_BytesA struct {
-		BytesA string `protobuf:"12"`
-	}
-	OneofScalars_BytesB struct {
-		BytesB MyBytes `protobuf:"13"`
-	}
-)
-
-func (*OneofScalars_Bool) isOneofScalars_Union()    {}
-func (*OneofScalars_Int32) isOneofScalars_Union()   {}
-func (*OneofScalars_Int64) isOneofScalars_Union()   {}
-func (*OneofScalars_Uint32) isOneofScalars_Union()  {}
-func (*OneofScalars_Uint64) isOneofScalars_Union()  {}
-func (*OneofScalars_Float32) isOneofScalars_Union() {}
-func (*OneofScalars_Float64) isOneofScalars_Union() {}
-func (*OneofScalars_String) isOneofScalars_Union()  {}
-func (*OneofScalars_StringA) isOneofScalars_Union() {}
-func (*OneofScalars_StringB) isOneofScalars_Union() {}
-func (*OneofScalars_Bytes) isOneofScalars_Union()   {}
-func (*OneofScalars_BytesA) isOneofScalars_Union()  {}
-func (*OneofScalars_BytesB) isOneofScalars_Union()  {}
-
-func TestOneofs(t *testing.T) {
-	empty := &OneofScalars{}
-	want1 := &OneofScalars{Union: &OneofScalars_Bool{true}}
-	want2 := &OneofScalars{Union: &OneofScalars_Int32{20}}
-	want3 := &OneofScalars{Union: &OneofScalars_Int64{30}}
-	want4 := &OneofScalars{Union: &OneofScalars_Uint32{40}}
-	want5 := &OneofScalars{Union: &OneofScalars_Uint64{50}}
-	want6 := &OneofScalars{Union: &OneofScalars_Float32{60}}
-	want7 := &OneofScalars{Union: &OneofScalars_Float64{70}}
-	want8 := &OneofScalars{Union: &OneofScalars_String{string("80")}}
-	want9 := &OneofScalars{Union: &OneofScalars_StringA{[]byte("90")}}
-	want10 := &OneofScalars{Union: &OneofScalars_StringB{MyString("100")}}
-	want11 := &OneofScalars{Union: &OneofScalars_Bytes{[]byte("110")}}
-	want12 := &OneofScalars{Union: &OneofScalars_BytesA{string("120")}}
-	want13 := &OneofScalars{Union: &OneofScalars_BytesB{MyBytes("130")}}
-
-	testMessage(t, nil, new(OneofScalars).ProtoReflect(), messageOps{
-		hasFields{1: false, 2: false, 3: false, 4: false, 5: false, 6: false, 7: false, 8: false, 9: false, 10: false, 11: false, 12: false, 13: false},
-		getFields{1: V(bool(true)), 2: V(int32(2)), 3: V(int64(3)), 4: V(uint32(4)), 5: V(uint64(5)), 6: V(float32(6)), 7: V(float64(7)), 8: V(string("8")), 9: V(string("9")), 10: V(string("10")), 11: V([]byte("11")), 12: V([]byte("12")), 13: V([]byte("13"))},
-		whichOneofs{"union": 0},
-
-		setFields{1: V(bool(true))}, hasFields{1: true}, equalMessage{want1.ProtoReflect()},
-		setFields{2: V(int32(20))}, hasFields{2: true}, equalMessage{want2.ProtoReflect()},
-		setFields{3: V(int64(30))}, hasFields{3: true}, equalMessage{want3.ProtoReflect()},
-		setFields{4: V(uint32(40))}, hasFields{4: true}, equalMessage{want4.ProtoReflect()},
-		setFields{5: V(uint64(50))}, hasFields{5: true}, equalMessage{want5.ProtoReflect()},
-		setFields{6: V(float32(60))}, hasFields{6: true}, equalMessage{want6.ProtoReflect()},
-		setFields{7: V(float64(70))}, hasFields{7: true}, equalMessage{want7.ProtoReflect()},
-
-		hasFields{1: false, 2: false, 3: false, 4: false, 5: false, 6: false, 7: true, 8: false, 9: false, 10: false, 11: false, 12: false, 13: false},
-		whichOneofs{"union": 7},
-
-		setFields{8: V(string("80"))}, hasFields{8: true}, equalMessage{want8.ProtoReflect()},
-		setFields{9: V(string("90"))}, hasFields{9: true}, equalMessage{want9.ProtoReflect()},
-		setFields{10: V(string("100"))}, hasFields{10: true}, equalMessage{want10.ProtoReflect()},
-		setFields{11: V([]byte("110"))}, hasFields{11: true}, equalMessage{want11.ProtoReflect()},
-		setFields{12: V([]byte("120"))}, hasFields{12: true}, equalMessage{want12.ProtoReflect()},
-		setFields{13: V([]byte("130"))}, hasFields{13: true}, equalMessage{want13.ProtoReflect()},
-
-		hasFields{1: false, 2: false, 3: false, 4: false, 5: false, 6: false, 7: false, 8: false, 9: false, 10: false, 11: false, 12: false, 13: true},
-		getFields{1: V(bool(true)), 2: V(int32(2)), 3: V(int64(3)), 4: V(uint32(4)), 5: V(uint64(5)), 6: V(float32(6)), 7: V(float64(7)), 8: V(string("8")), 9: V(string("9")), 10: V(string("10")), 11: V([]byte("11")), 12: V([]byte("12")), 13: V([]byte("130"))},
-		clearFields{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12},
-		whichOneofs{"union": 13},
-		equalMessage{want13.ProtoReflect()},
-		clearFields{13},
-		whichOneofs{"union": 0},
-		equalMessage{empty.ProtoReflect()},
-	})
-
-	// Test read-only operations on nil message.
-	testMessage(t, nil, (*OneofScalars)(nil).ProtoReflect(), messageOps{
-		hasFields{1: false, 2: false, 3: false, 4: false, 5: false, 6: false, 7: false, 8: false, 9: false, 10: false, 11: false, 12: false, 13: false},
-		getFields{1: V(bool(true)), 2: V(int32(2)), 3: V(int64(3)), 4: V(uint32(4)), 5: V(uint64(5)), 6: V(float32(6)), 7: V(float64(7)), 8: V(string("8")), 9: V(string("9")), 10: V(string("10")), 11: V([]byte("11")), 12: V([]byte("12")), 13: V([]byte("13"))},
-	})
-}
-
-type EnumProto2 int32
-
-var enumProto2Desc = mustMakeEnumDesc("enum2.proto", pref.Proto2, `
-	name:  "EnumProto2"
-	value: [{name:"DEAD" number:0xdead}, {name:"BEEF" number:0xbeef}]
-`)
-
-func (e EnumProto2) Descriptor() pref.EnumDescriptor { return enumProto2Desc }
-func (e EnumProto2) Type() pref.EnumType             { return e }
-func (e EnumProto2) Enum() *EnumProto2               { return &e }
-func (e EnumProto2) Number() pref.EnumNumber         { return pref.EnumNumber(e) }
-func (t EnumProto2) New(n pref.EnumNumber) pref.Enum { return EnumProto2(n) }
-
-type EnumProto3 int32
-
-var enumProto3Desc = mustMakeEnumDesc("enum3.proto", pref.Proto3, `
-	name:  "EnumProto3",
-	value: [{name:"ALPHA" number:0}, {name:"BRAVO" number:1}]
-`)
-
-func (e EnumProto3) Descriptor() pref.EnumDescriptor { return enumProto3Desc }
-func (e EnumProto3) Type() pref.EnumType             { return e }
-func (e EnumProto3) Enum() *EnumProto3               { return &e }
-func (e EnumProto3) Number() pref.EnumNumber         { return pref.EnumNumber(e) }
-func (t EnumProto3) New(n pref.EnumNumber) pref.Enum { return EnumProto3(n) }
-
-type EnumMessages struct {
-	EnumP2        *EnumProto2              `protobuf:"1"`
-	EnumP3        *EnumProto3              `protobuf:"2"`
-	MessageLegacy *proto2_20180125.Message `protobuf:"3"`
-	MessageCycle  *EnumMessages            `protobuf:"4"`
-	EnumList      []EnumProto2             `protobuf:"5"`
-	MessageList   []*ScalarProto2          `protobuf:"6"`
-	EnumMap       map[string]EnumProto3    `protobuf:"7"`
-	MessageMap    map[string]*ScalarProto3 `protobuf:"8"`
-	Union         isEnumMessages_Union     `protobuf_oneof:"union"`
-}
-
-var enumMessagesType = pimpl.MessageInfo{GoReflectType: reflect.TypeOf(new(EnumMessages)), Desc: mustMakeMessageDesc("enum-messages.proto", pref.Proto2, `
-		dependency: ["enum2.proto", "enum3.proto", "scalar2.proto", "scalar3.proto", "proto2_20180125_92554152/test.proto"]
-	`, `
-		name: "EnumMessages"
-		field: [
-			{name:"f1"  number:1  label:LABEL_OPTIONAL type:TYPE_ENUM    type_name:".EnumProto2" default_value:"BEEF"},
-			{name:"f2"  number:2  label:LABEL_OPTIONAL type:TYPE_ENUM    type_name:".EnumProto3" default_value:"BRAVO"},
-			{name:"f3"  number:3  label:LABEL_OPTIONAL type:TYPE_MESSAGE type_name:".google.golang.org.proto2_20180125.Message"},
-			{name:"f4"  number:4  label:LABEL_OPTIONAL type:TYPE_MESSAGE type_name:".EnumMessages"},
-			{name:"f5"  number:5  label:LABEL_REPEATED type:TYPE_ENUM    type_name:".EnumProto2"},
-			{name:"f6"  number:6  label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".ScalarProto2"},
-			{name:"f7"  number:7  label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".EnumMessages.F7Entry"},
-			{name:"f8"  number:8  label:LABEL_REPEATED type:TYPE_MESSAGE type_name:".EnumMessages.F8Entry"},
-			{name:"f9"  number:9  label:LABEL_OPTIONAL type:TYPE_ENUM    type_name:".EnumProto2"   oneof_index:0 default_value:"BEEF"},
-			{name:"f10" number:10 label:LABEL_OPTIONAL type:TYPE_ENUM    type_name:".EnumProto3"   oneof_index:0 default_value:"BRAVO"},
-			{name:"f11" number:11 label:LABEL_OPTIONAL type:TYPE_MESSAGE type_name:".ScalarProto2" oneof_index:0},
-			{name:"f12" number:12 label:LABEL_OPTIONAL type:TYPE_MESSAGE type_name:".ScalarProto3" oneof_index:0}
-		]
-		oneof_decl: [{name:"union"}]
-		nested_type: [
-			{name:"F7Entry" field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_ENUM    type_name:".EnumProto3"}]   options:{map_entry:true}},
-			{name:"F8Entry" field:[{name:"key" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}, {name:"value" number:2 label:LABEL_OPTIONAL type:TYPE_MESSAGE type_name:".ScalarProto3"}] options:{map_entry:true}}
-		]
-	`, newFileRegistry(
-	EnumProto2(0).Descriptor().ParentFile(),
-	EnumProto3(0).Descriptor().ParentFile(),
-	((*ScalarProto2)(nil)).ProtoReflect().Descriptor().ParentFile(),
-	((*ScalarProto3)(nil)).ProtoReflect().Descriptor().ParentFile(),
-	pimpl.Export{}.MessageDescriptorOf((*proto2_20180125.Message)(nil)).ParentFile(),
-)),
-}
-
-func newFileRegistry(files ...pref.FileDescriptor) *protoregistry.Files {
-	r := new(protoregistry.Files)
-	for _, file := range files {
-		r.RegisterFile(file)
-	}
-	return r
-}
-
-func (m *EnumMessages) ProtoReflect() pref.Message { return enumMessagesType.MessageOf(m) }
-
-func (*EnumMessages) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*EnumMessages_OneofE2)(nil),
-		(*EnumMessages_OneofE3)(nil),
-		(*EnumMessages_OneofM2)(nil),
-		(*EnumMessages_OneofM3)(nil),
-	}
-}
-
-type (
-	isEnumMessages_Union interface {
-		isEnumMessages_Union()
-	}
-	EnumMessages_OneofE2 struct {
-		OneofE2 EnumProto2 `protobuf:"9"`
-	}
-	EnumMessages_OneofE3 struct {
-		OneofE3 EnumProto3 `protobuf:"10"`
-	}
-	EnumMessages_OneofM2 struct {
-		OneofM2 *ScalarProto2 `protobuf:"11"`
-	}
-	EnumMessages_OneofM3 struct {
-		OneofM3 *ScalarProto3 `protobuf:"12"`
-	}
-)
-
-func (*EnumMessages_OneofE2) isEnumMessages_Union() {}
-func (*EnumMessages_OneofE3) isEnumMessages_Union() {}
-func (*EnumMessages_OneofM2) isEnumMessages_Union() {}
-func (*EnumMessages_OneofM3) isEnumMessages_Union() {}
-
-func TestEnumMessages(t *testing.T) {
-	emptyL := pimpl.Export{}.MessageOf(new(proto2_20180125.Message))
-	emptyM := new(EnumMessages).ProtoReflect()
-	emptyM2 := new(ScalarProto2).ProtoReflect()
-	emptyM3 := new(ScalarProto3).ProtoReflect()
-
-	wantL := pimpl.Export{}.MessageOf(&proto2_20180125.Message{OptionalFloat: proto.Float32(math.E)})
-	wantM := (&EnumMessages{EnumP2: EnumProto2(1234).Enum()}).ProtoReflect()
-	wantM2a := &ScalarProto2{Float32: proto.Float32(math.Pi)}
-	wantM2b := &ScalarProto2{Float32: proto.Float32(math.Phi)}
-	wantM3a := &ScalarProto3{Float32: math.Pi}
-	wantM3b := &ScalarProto3{Float32: math.Ln2}
-
-	wantList5 := getField((&EnumMessages{EnumList: []EnumProto2{333, 222}}).ProtoReflect(), 5)
-	wantList6 := getField((&EnumMessages{MessageList: []*ScalarProto2{wantM2a, wantM2b}}).ProtoReflect(), 6)
-
-	wantMap7 := getField((&EnumMessages{EnumMap: map[string]EnumProto3{"one": 1, "two": 2}}).ProtoReflect(), 7)
-	wantMap8 := getField((&EnumMessages{MessageMap: map[string]*ScalarProto3{"pi": wantM3a, "ln2": wantM3b}}).ProtoReflect(), 8)
-
-	testMessage(t, nil, new(EnumMessages).ProtoReflect(), messageOps{
-		hasFields{1: false, 2: false, 3: false, 4: false, 5: false, 6: false, 7: false, 8: false, 9: false, 10: false, 11: false, 12: false},
-		getFields{1: VE(0xbeef), 2: VE(1), 3: V(emptyL), 4: V(emptyM), 9: VE(0xbeef), 10: VE(1)},
-
-		// Test singular enums.
-		setFields{1: VE(0xdead), 2: VE(0)},
-		getFields{1: VE(0xdead), 2: VE(0)},
-		hasFields{1: true, 2: true},
-
-		// Test singular messages.
-		messageFieldsMutable{3: messageOps{setFields{109: V(float32(math.E))}}},
-		messageFieldsMutable{4: messageOps{setFields{1: VE(1234)}}},
-		getFields{3: V(wantL), 4: V(wantM)},
-		clearFields{3, 4},
-		hasFields{3: false, 4: false},
-		setFields{3: V(wantL), 4: V(wantM)},
-		hasFields{3: true, 4: true},
-
-		// Test list of enums and messages.
-		listFieldsMutable{
-			5: listOps{
-				appendList{VE(111), VE(222)},
-				setList{0: VE(333)},
-				getList{0: VE(333), 1: VE(222)},
-				lenList(2),
-			},
-			6: listOps{
-				appendMessageList{setFields{4: V(uint32(1e6))}},
-				appendMessageList{setFields{6: V(float32(math.Phi))}},
-				setList{0: V(wantM2a.ProtoReflect())},
-				getList{0: V(wantM2a.ProtoReflect()), 1: V(wantM2b.ProtoReflect())},
-			},
-		},
-		getFields{5: wantList5, 6: wantList6},
-		hasFields{5: true, 6: true},
-		listFields{5: listOps{truncList(0)}},
-		hasFields{5: false, 6: true},
-
-		// Test maps of enums and messages.
-		mapFieldsMutable{
-			7: mapOps{
-				setMap{"one": VE(1), "two": VE(2)},
-				hasMap{"one": true, "two": true, "three": false},
-				lenMap(2),
-			},
-			8: mapOps{
-				messageMap{"pi": messageOps{setFields{6: V(float32(math.Pi))}}},
-				setMap{"ln2": V(wantM3b.ProtoReflect())},
-				getMap{"pi": V(wantM3a.ProtoReflect()), "ln2": V(wantM3b.ProtoReflect()), "none": V(nil)},
-				lenMap(2),
-			},
-		},
-		getFields{7: wantMap7, 8: wantMap8},
-		hasFields{7: true, 8: true},
-		mapFields{8: mapOps{clearMap{"pi", "ln2", "none"}}},
-		hasFields{7: true, 8: false},
-
-		// Test oneofs of enums and messages.
-		setFields{9: VE(0xdead)},
-		hasFields{1: true, 2: true, 9: true, 10: false, 11: false, 12: false},
-		setFields{10: VE(0)},
-		hasFields{1: true, 2: true, 9: false, 10: true, 11: false, 12: false},
-		messageFieldsMutable{11: messageOps{setFields{6: V(float32(math.Pi))}}},
-		getFields{11: V(wantM2a.ProtoReflect())},
-		hasFields{1: true, 2: true, 9: false, 10: false, 11: true, 12: false},
-		messageFieldsMutable{12: messageOps{setFields{6: V(float32(math.Pi))}}},
-		getFields{12: V(wantM3a.ProtoReflect())},
-		hasFields{1: true, 2: true, 9: false, 10: false, 11: false, 12: true},
-
-		// Check entire message.
-		rangeFields{1: VE(0xdead), 2: VE(0), 3: V(wantL), 4: V(wantM), 6: wantList6, 7: wantMap7, 12: V(wantM3a.ProtoReflect())},
-		equalMessage{(&EnumMessages{
-			EnumP2:        EnumProto2(0xdead).Enum(),
-			EnumP3:        EnumProto3(0).Enum(),
-			MessageLegacy: &proto2_20180125.Message{OptionalFloat: proto.Float32(math.E)},
-			MessageCycle:  wantM.Interface().(*EnumMessages),
-			MessageList:   []*ScalarProto2{wantM2a, wantM2b},
-			EnumMap:       map[string]EnumProto3{"one": 1, "two": 2},
-			Union:         &EnumMessages_OneofM3{wantM3a},
-		}).ProtoReflect()},
-		clearFields{1, 2, 3, 4, 6, 7, 12},
-		equalMessage{new(EnumMessages).ProtoReflect()},
-	})
-
-	// Test read-only operations on nil message.
-	testMessage(t, nil, (*EnumMessages)(nil).ProtoReflect(), messageOps{
-		hasFields{1: false, 2: false, 3: false, 4: false, 5: false, 6: false, 7: false, 8: false, 9: false, 10: false, 11: false, 12: false},
-		getFields{1: VE(0xbeef), 2: VE(1), 3: V(emptyL), 4: V(emptyM), 9: VE(0xbeef), 10: VE(1), 11: V(emptyM2), 12: V(emptyM3)},
-		listFields{5: {lenList(0)}, 6: {lenList(0)}},
-		mapFields{7: {lenMap(0)}, 8: {lenMap(0)}},
-	})
-}
-
-var cmpOpts = cmp.Options{
-	cmp.Comparer(func(x, y *proto2_20180125.Message) bool {
-		mx := pimpl.Export{}.MessageOf(x).Interface()
-		my := pimpl.Export{}.MessageOf(y).Interface()
-		return proto.Equal(mx, my)
-	}),
-	cmp.Transformer("UnwrapValue", func(pv pref.Value) interface{} {
-		switch v := pv.Interface().(type) {
-		case pref.Message:
-			out := make(map[pref.FieldNumber]pref.Value)
-			v.Range(func(fd pref.FieldDescriptor, v pref.Value) bool {
-				out[fd.Number()] = v
-				return true
-			})
-			return out
-		case pref.List:
-			var out []pref.Value
-			for i := 0; i < v.Len(); i++ {
-				out = append(out, v.Get(i))
-			}
-			return out
-		case pref.Map:
-			out := make(map[interface{}]pref.Value)
-			v.Range(func(k pref.MapKey, v pref.Value) bool {
-				out[k.Interface()] = v
-				return true
-			})
-			return out
-		default:
-			return v
-		}
-	}),
-	cmpopts.EquateNaNs(),
-}
-
-func testMessage(t *testing.T, p path, m pref.Message, tt messageOps) {
-	fieldDescs := m.Descriptor().Fields()
-	oneofDescs := m.Descriptor().Oneofs()
-	for i, op := range tt {
-		p.Push(i)
-		switch op := op.(type) {
-		case equalMessage:
-			if diff := cmp.Diff(V(op.Message), V(m), cmpOpts); diff != "" {
-				t.Errorf("operation %v, message mismatch (-want, +got):\n%s", p, diff)
-			}
-		case hasFields:
-			got := map[pref.FieldNumber]bool{}
-			want := map[pref.FieldNumber]bool(op)
-			for n := range want {
-				fd := fieldDescs.ByNumber(n)
-				got[n] = m.Has(fd)
-			}
-			if diff := cmp.Diff(want, got); diff != "" {
-				t.Errorf("operation %v, Message.Has mismatch (-want, +got):\n%s", p, diff)
-			}
-		case getFields:
-			got := map[pref.FieldNumber]pref.Value{}
-			want := map[pref.FieldNumber]pref.Value(op)
-			for n := range want {
-				fd := fieldDescs.ByNumber(n)
-				got[n] = m.Get(fd)
-			}
-			if diff := cmp.Diff(want, got, cmpOpts); diff != "" {
-				t.Errorf("operation %v, Message.Get mismatch (-want, +got):\n%s", p, diff)
-			}
-		case setFields:
-			for n, v := range op {
-				fd := fieldDescs.ByNumber(n)
-				m.Set(fd, v)
-			}
-		case clearFields:
-			for _, n := range op {
-				fd := fieldDescs.ByNumber(n)
-				m.Clear(fd)
-			}
-		case whichOneofs:
-			got := map[pref.Name]pref.FieldNumber{}
-			want := map[pref.Name]pref.FieldNumber(op)
-			for s := range want {
-				od := oneofDescs.ByName(s)
-				fd := m.WhichOneof(od)
-				if fd == nil {
-					got[s] = 0
-				} else {
-					got[s] = fd.Number()
-				}
-			}
-			if diff := cmp.Diff(want, got); diff != "" {
-				t.Errorf("operation %v, Message.WhichOneof mismatch (-want, +got):\n%s", p, diff)
-			}
-		case messageFields:
-			for n, tt := range op {
-				p.Push(int(n))
-				fd := fieldDescs.ByNumber(n)
-				testMessage(t, p, m.Get(fd).Message(), tt)
-				p.Pop()
-			}
-		case messageFieldsMutable:
-			for n, tt := range op {
-				p.Push(int(n))
-				fd := fieldDescs.ByNumber(n)
-				testMessage(t, p, m.Mutable(fd).Message(), tt)
-				p.Pop()
-			}
-		case listFields:
-			for n, tt := range op {
-				p.Push(int(n))
-				fd := fieldDescs.ByNumber(n)
-				testLists(t, p, m.Get(fd).List(), tt)
-				p.Pop()
-			}
-		case listFieldsMutable:
-			for n, tt := range op {
-				p.Push(int(n))
-				fd := fieldDescs.ByNumber(n)
-				testLists(t, p, m.Mutable(fd).List(), tt)
-				p.Pop()
-			}
-		case mapFields:
-			for n, tt := range op {
-				p.Push(int(n))
-				fd := fieldDescs.ByNumber(n)
-				testMaps(t, p, m.Get(fd).Map(), tt)
-				p.Pop()
-			}
-		case mapFieldsMutable:
-			for n, tt := range op {
-				p.Push(int(n))
-				fd := fieldDescs.ByNumber(n)
-				testMaps(t, p, m.Mutable(fd).Map(), tt)
-				p.Pop()
-			}
-		case rangeFields:
-			got := map[pref.FieldNumber]pref.Value{}
-			want := map[pref.FieldNumber]pref.Value(op)
-			m.Range(func(fd pref.FieldDescriptor, v pref.Value) bool {
-				got[fd.Number()] = v
-				return true
-			})
-			if diff := cmp.Diff(want, got, cmpOpts); diff != "" {
-				t.Errorf("operation %v, Message.Range mismatch (-want, +got):\n%s", p, diff)
-			}
-		default:
-			t.Fatalf("operation %v, invalid operation: %T", p, op)
-		}
-		p.Pop()
-	}
-}
-
-func testLists(t *testing.T, p path, v pref.List, tt listOps) {
-	for i, op := range tt {
-		p.Push(i)
-		switch op := op.(type) {
-		case equalList:
-			if diff := cmp.Diff(V(op.List), V(v), cmpOpts); diff != "" {
-				t.Errorf("operation %v, list mismatch (-want, +got):\n%s", p, diff)
-			}
-		case lenList:
-			if got, want := v.Len(), int(op); got != want {
-				t.Errorf("operation %v, List.Len = %d, want %d", p, got, want)
-			}
-		case getList:
-			got := map[int]pref.Value{}
-			want := map[int]pref.Value(op)
-			for n := range want {
-				got[n] = v.Get(n)
-			}
-			if diff := cmp.Diff(want, got, cmpOpts); diff != "" {
-				t.Errorf("operation %v, List.Get mismatch (-want, +got):\n%s", p, diff)
-			}
-		case setList:
-			for n, e := range op {
-				v.Set(n, e)
-			}
-		case appendList:
-			for _, e := range op {
-				v.Append(e)
-			}
-		case appendMessageList:
-			e := v.NewElement()
-			v.Append(e)
-			testMessage(t, p, e.Message(), messageOps(op))
-		case truncList:
-			v.Truncate(int(op))
-		default:
-			t.Fatalf("operation %v, invalid operation: %T", p, op)
-		}
-		p.Pop()
-	}
-}
-
-func testMaps(t *testing.T, p path, m pref.Map, tt mapOps) {
-	for i, op := range tt {
-		p.Push(i)
-		switch op := op.(type) {
-		case equalMap:
-			if diff := cmp.Diff(V(op.Map), V(m), cmpOpts); diff != "" {
-				t.Errorf("operation %v, map mismatch (-want, +got):\n%s", p, diff)
-			}
-		case lenMap:
-			if got, want := m.Len(), int(op); got != want {
-				t.Errorf("operation %v, Map.Len = %d, want %d", p, got, want)
-			}
-		case hasMap:
-			got := map[interface{}]bool{}
-			want := map[interface{}]bool(op)
-			for k := range want {
-				got[k] = m.Has(V(k).MapKey())
-			}
-			if diff := cmp.Diff(want, got, cmpOpts); diff != "" {
-				t.Errorf("operation %v, Map.Has mismatch (-want, +got):\n%s", p, diff)
-			}
-		case getMap:
-			got := map[interface{}]pref.Value{}
-			want := map[interface{}]pref.Value(op)
-			for k := range want {
-				got[k] = m.Get(V(k).MapKey())
-			}
-			if diff := cmp.Diff(want, got, cmpOpts); diff != "" {
-				t.Errorf("operation %v, Map.Get mismatch (-want, +got):\n%s", p, diff)
-			}
-		case setMap:
-			for k, v := range op {
-				m.Set(V(k).MapKey(), v)
-			}
-		case clearMap:
-			for _, k := range op {
-				m.Clear(V(k).MapKey())
-			}
-		case messageMap:
-			for k, tt := range op {
-				mk := V(k).MapKey()
-				if !m.Has(mk) {
-					m.Set(mk, m.NewValue())
-				}
-				testMessage(t, p, m.Get(mk).Message(), tt)
-			}
-		case rangeMap:
-			got := map[interface{}]pref.Value{}
-			want := map[interface{}]pref.Value(op)
-			m.Range(func(k pref.MapKey, v pref.Value) bool {
-				got[k.Interface()] = v
-				return true
-			})
-			if diff := cmp.Diff(want, got, cmpOpts); diff != "" {
-				t.Errorf("operation %v, Map.Range mismatch (-want, +got):\n%s", p, diff)
-			}
-		default:
-			t.Fatalf("operation %v, invalid operation: %T", p, op)
-		}
-		p.Pop()
-	}
-}
-
-func getField(m pref.Message, n pref.FieldNumber) pref.Value {
-	fd := m.Descriptor().Fields().ByNumber(n)
-	return m.Get(fd)
-}
-
-type path []int
-
-func (p *path) Push(i int) { *p = append(*p, i) }
-func (p *path) Pop()       { *p = (*p)[:len(*p)-1] }
-func (p path) String() string {
-	var ss []string
-	for _, i := range p {
-		ss = append(ss, fmt.Sprint(i))
-	}
-	return strings.Join(ss, ".")
-}
-
-type UnknownFieldsA struct {
-	XXX_unrecognized []byte
-}
-
-var unknownFieldsAType = pimpl.MessageInfo{
-	GoReflectType: reflect.TypeOf(new(UnknownFieldsA)),
-	Desc:          mustMakeMessageDesc("unknown.proto", pref.Proto2, "", `name: "UnknownFieldsA"`, nil),
-}
-
-func (m *UnknownFieldsA) ProtoReflect() pref.Message { return unknownFieldsAType.MessageOf(m) }
-
-type UnknownFieldsB struct {
-	XXX_unrecognized *[]byte
-}
-
-var unknownFieldsBType = pimpl.MessageInfo{
-	GoReflectType: reflect.TypeOf(new(UnknownFieldsB)),
-	Desc:          mustMakeMessageDesc("unknown.proto", pref.Proto2, "", `name: "UnknownFieldsB"`, nil),
-}
-
-func (m *UnknownFieldsB) ProtoReflect() pref.Message { return unknownFieldsBType.MessageOf(m) }
-
-func TestUnknownFields(t *testing.T) {
-	for _, m := range []proto.Message{new(UnknownFieldsA), new(UnknownFieldsB)} {
-		t.Run(reflect.TypeOf(m).Elem().Name(), func(t *testing.T) {
-			want := protopack.Message{
-				protopack.Tag{1, protopack.BytesType}, protopack.String("Hello, world!"),
-			}.Marshal()
-			m.ProtoReflect().SetUnknown(want)
-			got := []byte(m.ProtoReflect().GetUnknown())
-			if diff := cmp.Diff(want, got); diff != "" {
-				t.Errorf("UnknownFields mismatch (-want +got):\n%s", diff)
-			}
-		})
-	}
-}
-
-func TestReset(t *testing.T) {
-	mi := new(testpb.TestAllTypes)
-
-	// ProtoReflect is implemented using a messageState cache.
-	m := mi.ProtoReflect()
-
-	// Reset must not clear the messageState cache.
-	mi.Reset()
-
-	// If Reset accidentally cleared the messageState cache, this panics.
-	m.Descriptor()
-}
-
-func TestIsValid(t *testing.T) {
-	var m *testpb.TestAllTypes
-	if got, want := m.ProtoReflect().IsValid(), false; got != want {
-		t.Errorf("((*M)(nil)).ProtoReflect().IsValid() = %v, want %v", got, want)
-	}
-	m = &testpb.TestAllTypes{}
-	if got, want := m.ProtoReflect().IsValid(), true; got != want {
-		t.Errorf("(&M{}).ProtoReflect().IsValid() = %v, want %v", got, want)
-	}
-}
-
-// The MessageState implementation makes the assumption that when a
-// concrete message is unsafe casted as a *MessageState, the Go GC does
-// not reclaim the memory for the remainder of the concrete message.
-func TestUnsafeAssumptions(t *testing.T) {
-	if !pimpl.UnsafeEnabled {
-		t.Skip()
-	}
-
-	var wg sync.WaitGroup
-	for i := 0; i < 10; i++ {
-		wg.Add(1)
-		go func() {
-			var ms [10]pref.Message
-
-			// Store the message only in its reflective form.
-			// Trigger the GC after each iteration.
-			for j := 0; j < 10; j++ {
-				ms[j] = (&testpb.TestAllTypes{
-					OptionalInt32: proto.Int32(int32(j)),
-					OptionalFloat: proto.Float32(float32(j)),
-					RepeatedInt32: []int32{int32(j)},
-					RepeatedFloat: []float32{float32(j)},
-					DefaultInt32:  proto.Int32(int32(j)),
-					DefaultFloat:  proto.Float32(float32(j)),
-				}).ProtoReflect()
-				runtime.GC()
-			}
-
-			// Convert the reflective form back into a concrete form.
-			// Verify that the values written previously are still the same.
-			for j := 0; j < 10; j++ {
-				switch m := ms[j].Interface().(*testpb.TestAllTypes); {
-				case m.GetOptionalInt32() != int32(j):
-				case m.GetOptionalFloat() != float32(j):
-				case m.GetRepeatedInt32()[0] != int32(j):
-				case m.GetRepeatedFloat()[0] != float32(j):
-				case m.GetDefaultInt32() != int32(j):
-				case m.GetDefaultFloat() != float32(j):
-				default:
-					continue
-				}
-				t.Error("memory corrupted detected")
-			}
-			defer wg.Done()
-		}()
-	}
-	wg.Wait()
-}
-
-func BenchmarkName(b *testing.B) {
-	var sink pref.FullName
-	b.Run("Value", func(b *testing.B) {
-		b.ReportAllocs()
-		m := new(descriptorpb.FileDescriptorProto)
-		for i := 0; i < b.N; i++ {
-			sink = m.ProtoReflect().Descriptor().FullName()
-		}
-	})
-	b.Run("Nil", func(b *testing.B) {
-		b.ReportAllocs()
-		m := (*descriptorpb.FileDescriptorProto)(nil)
-		for i := 0; i < b.N; i++ {
-			sink = m.ProtoReflect().Descriptor().FullName()
-		}
-	})
-	runtime.KeepAlive(sink)
-}
-
-func BenchmarkReflect(b *testing.B) {
-	m := new(testpb.TestAllTypes).ProtoReflect()
-	fds := m.Descriptor().Fields()
-	vs := make([]pref.Value, fds.Len())
-	for i := range vs {
-		vs[i] = m.NewField(fds.Get(i))
-	}
-
-	b.Run("Has", func(b *testing.B) {
-		b.ReportAllocs()
-		for i := 0; i < b.N; i++ {
-			for j := 0; j < fds.Len(); j++ {
-				m.Has(fds.Get(j))
-			}
-		}
-	})
-	b.Run("Get", func(b *testing.B) {
-		b.ReportAllocs()
-		for i := 0; i < b.N; i++ {
-			for j := 0; j < fds.Len(); j++ {
-				m.Get(fds.Get(j))
-			}
-		}
-	})
-	b.Run("Set", func(b *testing.B) {
-		b.ReportAllocs()
-		for i := 0; i < b.N; i++ {
-			for j := 0; j < fds.Len(); j++ {
-				m.Set(fds.Get(j), vs[j])
-			}
-		}
-	})
-	b.Run("Clear", func(b *testing.B) {
-		b.ReportAllocs()
-		for i := 0; i < b.N; i++ {
-			for j := 0; j < fds.Len(); j++ {
-				m.Clear(fds.Get(j))
-			}
-		}
-	})
-	b.Run("Range", func(b *testing.B) {
-		b.ReportAllocs()
-		for i := 0; i < b.N; i++ {
-			m.Range(func(pref.FieldDescriptor, pref.Value) bool {
-				return true
-			})
-		}
-	})
-}
diff --git a/internal/impl/pointer_reflect.go b/internal/impl/pointer_reflect.go
deleted file mode 100644
index 4c491bd..0000000
--- a/internal/impl/pointer_reflect.go
+++ /dev/null
@@ -1,179 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:build purego || appengine
-// +build purego appengine
-
-package impl
-
-import (
-	"fmt"
-	"reflect"
-	"sync"
-)
-
-const UnsafeEnabled = false
-
-// Pointer is an opaque pointer type.
-type Pointer interface{}
-
-// offset represents the offset to a struct field, accessible from a pointer.
-// The offset is the field index into a struct.
-type offset struct {
-	index  int
-	export exporter
-}
-
-// offsetOf returns a field offset for the struct field.
-func offsetOf(f reflect.StructField, x exporter) offset {
-	if len(f.Index) != 1 {
-		panic("embedded structs are not supported")
-	}
-	if f.PkgPath == "" {
-		return offset{index: f.Index[0]} // field is already exported
-	}
-	if x == nil {
-		panic("exporter must be provided for unexported field")
-	}
-	return offset{index: f.Index[0], export: x}
-}
-
-// IsValid reports whether the offset is valid.
-func (f offset) IsValid() bool { return f.index >= 0 }
-
-// invalidOffset is an invalid field offset.
-var invalidOffset = offset{index: -1}
-
-// zeroOffset is a noop when calling pointer.Apply.
-var zeroOffset = offset{index: 0}
-
-// pointer is an abstract representation of a pointer to a struct or field.
-type pointer struct{ v reflect.Value }
-
-// pointerOf returns p as a pointer.
-func pointerOf(p Pointer) pointer {
-	return pointerOfIface(p)
-}
-
-// pointerOfValue returns v as a pointer.
-func pointerOfValue(v reflect.Value) pointer {
-	return pointer{v: v}
-}
-
-// pointerOfIface returns the pointer portion of an interface.
-func pointerOfIface(v interface{}) pointer {
-	return pointer{v: reflect.ValueOf(v)}
-}
-
-// IsNil reports whether the pointer is nil.
-func (p pointer) IsNil() bool {
-	return p.v.IsNil()
-}
-
-// Apply adds an offset to the pointer to derive a new pointer
-// to a specified field. The current pointer must be pointing at a struct.
-func (p pointer) Apply(f offset) pointer {
-	if f.export != nil {
-		if v := reflect.ValueOf(f.export(p.v.Interface(), f.index)); v.IsValid() {
-			return pointer{v: v}
-		}
-	}
-	return pointer{v: p.v.Elem().Field(f.index).Addr()}
-}
-
-// AsValueOf treats p as a pointer to an object of type t and returns the value.
-// It is equivalent to reflect.ValueOf(p.AsIfaceOf(t))
-func (p pointer) AsValueOf(t reflect.Type) reflect.Value {
-	if got := p.v.Type().Elem(); got != t {
-		panic(fmt.Sprintf("invalid type: got %v, want %v", got, t))
-	}
-	return p.v
-}
-
-// AsIfaceOf treats p as a pointer to an object of type t and returns the value.
-// It is equivalent to p.AsValueOf(t).Interface()
-func (p pointer) AsIfaceOf(t reflect.Type) interface{} {
-	return p.AsValueOf(t).Interface()
-}
-
-func (p pointer) Bool() *bool              { return p.v.Interface().(*bool) }
-func (p pointer) BoolPtr() **bool          { return p.v.Interface().(**bool) }
-func (p pointer) BoolSlice() *[]bool       { return p.v.Interface().(*[]bool) }
-func (p pointer) Int32() *int32            { return p.v.Interface().(*int32) }
-func (p pointer) Int32Ptr() **int32        { return p.v.Interface().(**int32) }
-func (p pointer) Int32Slice() *[]int32     { return p.v.Interface().(*[]int32) }
-func (p pointer) Int64() *int64            { return p.v.Interface().(*int64) }
-func (p pointer) Int64Ptr() **int64        { return p.v.Interface().(**int64) }
-func (p pointer) Int64Slice() *[]int64     { return p.v.Interface().(*[]int64) }
-func (p pointer) Uint32() *uint32          { return p.v.Interface().(*uint32) }
-func (p pointer) Uint32Ptr() **uint32      { return p.v.Interface().(**uint32) }
-func (p pointer) Uint32Slice() *[]uint32   { return p.v.Interface().(*[]uint32) }
-func (p pointer) Uint64() *uint64          { return p.v.Interface().(*uint64) }
-func (p pointer) Uint64Ptr() **uint64      { return p.v.Interface().(**uint64) }
-func (p pointer) Uint64Slice() *[]uint64   { return p.v.Interface().(*[]uint64) }
-func (p pointer) Float32() *float32        { return p.v.Interface().(*float32) }
-func (p pointer) Float32Ptr() **float32    { return p.v.Interface().(**float32) }
-func (p pointer) Float32Slice() *[]float32 { return p.v.Interface().(*[]float32) }
-func (p pointer) Float64() *float64        { return p.v.Interface().(*float64) }
-func (p pointer) Float64Ptr() **float64    { return p.v.Interface().(**float64) }
-func (p pointer) Float64Slice() *[]float64 { return p.v.Interface().(*[]float64) }
-func (p pointer) String() *string          { return p.v.Interface().(*string) }
-func (p pointer) StringPtr() **string      { return p.v.Interface().(**string) }
-func (p pointer) StringSlice() *[]string   { return p.v.Interface().(*[]string) }
-func (p pointer) Bytes() *[]byte           { return p.v.Interface().(*[]byte) }
-func (p pointer) BytesPtr() **[]byte       { return p.v.Interface().(**[]byte) }
-func (p pointer) BytesSlice() *[][]byte    { return p.v.Interface().(*[][]byte) }
-func (p pointer) WeakFields() *weakFields  { return (*weakFields)(p.v.Interface().(*WeakFields)) }
-func (p pointer) Extensions() *map[int32]ExtensionField {
-	return p.v.Interface().(*map[int32]ExtensionField)
-}
-
-func (p pointer) Elem() pointer {
-	return pointer{v: p.v.Elem()}
-}
-
-// PointerSlice copies []*T from p as a new []pointer.
-// This behavior differs from the implementation in pointer_unsafe.go.
-func (p pointer) PointerSlice() []pointer {
-	// TODO: reconsider this
-	if p.v.IsNil() {
-		return nil
-	}
-	n := p.v.Elem().Len()
-	s := make([]pointer, n)
-	for i := 0; i < n; i++ {
-		s[i] = pointer{v: p.v.Elem().Index(i)}
-	}
-	return s
-}
-
-// AppendPointerSlice appends v to p, which must be a []*T.
-func (p pointer) AppendPointerSlice(v pointer) {
-	sp := p.v.Elem()
-	sp.Set(reflect.Append(sp, v.v))
-}
-
-// SetPointer sets *p to v.
-func (p pointer) SetPointer(v pointer) {
-	p.v.Elem().Set(v.v)
-}
-
-func (Export) MessageStateOf(p Pointer) *messageState     { panic("not supported") }
-func (ms *messageState) pointer() pointer                 { panic("not supported") }
-func (ms *messageState) messageInfo() *MessageInfo        { panic("not supported") }
-func (ms *messageState) LoadMessageInfo() *MessageInfo    { panic("not supported") }
-func (ms *messageState) StoreMessageInfo(mi *MessageInfo) { panic("not supported") }
-
-type atomicNilMessage struct {
-	once sync.Once
-	m    messageReflectWrapper
-}
-
-func (m *atomicNilMessage) Init(mi *MessageInfo) *messageReflectWrapper {
-	m.once.Do(func() {
-		m.m.p = pointerOfIface(reflect.Zero(mi.GoReflectType).Interface())
-		m.m.mi = mi
-	})
-	return &m.m
-}
diff --git a/internal/impl/pointer_unsafe.go b/internal/impl/pointer_unsafe.go
deleted file mode 100644
index ee0e057..0000000
--- a/internal/impl/pointer_unsafe.go
+++ /dev/null
@@ -1,175 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:build !purego && !appengine
-// +build !purego,!appengine
-
-package impl
-
-import (
-	"reflect"
-	"sync/atomic"
-	"unsafe"
-)
-
-const UnsafeEnabled = true
-
-// Pointer is an opaque pointer type.
-type Pointer unsafe.Pointer
-
-// offset represents the offset to a struct field, accessible from a pointer.
-// The offset is the byte offset to the field from the start of the struct.
-type offset uintptr
-
-// offsetOf returns a field offset for the struct field.
-func offsetOf(f reflect.StructField, x exporter) offset {
-	return offset(f.Offset)
-}
-
-// IsValid reports whether the offset is valid.
-func (f offset) IsValid() bool { return f != invalidOffset }
-
-// invalidOffset is an invalid field offset.
-var invalidOffset = ^offset(0)
-
-// zeroOffset is a noop when calling pointer.Apply.
-var zeroOffset = offset(0)
-
-// pointer is a pointer to a message struct or field.
-type pointer struct{ p unsafe.Pointer }
-
-// pointerOf returns p as a pointer.
-func pointerOf(p Pointer) pointer {
-	return pointer{p: unsafe.Pointer(p)}
-}
-
-// pointerOfValue returns v as a pointer.
-func pointerOfValue(v reflect.Value) pointer {
-	return pointer{p: unsafe.Pointer(v.Pointer())}
-}
-
-// pointerOfIface returns the pointer portion of an interface.
-func pointerOfIface(v interface{}) pointer {
-	type ifaceHeader struct {
-		Type unsafe.Pointer
-		Data unsafe.Pointer
-	}
-	return pointer{p: (*ifaceHeader)(unsafe.Pointer(&v)).Data}
-}
-
-// IsNil reports whether the pointer is nil.
-func (p pointer) IsNil() bool {
-	return p.p == nil
-}
-
-// Apply adds an offset to the pointer to derive a new pointer
-// to a specified field. The pointer must be valid and pointing at a struct.
-func (p pointer) Apply(f offset) pointer {
-	if p.IsNil() {
-		panic("invalid nil pointer")
-	}
-	return pointer{p: unsafe.Pointer(uintptr(p.p) + uintptr(f))}
-}
-
-// AsValueOf treats p as a pointer to an object of type t and returns the value.
-// It is equivalent to reflect.ValueOf(p.AsIfaceOf(t))
-func (p pointer) AsValueOf(t reflect.Type) reflect.Value {
-	return reflect.NewAt(t, p.p)
-}
-
-// AsIfaceOf treats p as a pointer to an object of type t and returns the value.
-// It is equivalent to p.AsValueOf(t).Interface()
-func (p pointer) AsIfaceOf(t reflect.Type) interface{} {
-	// TODO: Use tricky unsafe magic to directly create ifaceHeader.
-	return p.AsValueOf(t).Interface()
-}
-
-func (p pointer) Bool() *bool                           { return (*bool)(p.p) }
-func (p pointer) BoolPtr() **bool                       { return (**bool)(p.p) }
-func (p pointer) BoolSlice() *[]bool                    { return (*[]bool)(p.p) }
-func (p pointer) Int32() *int32                         { return (*int32)(p.p) }
-func (p pointer) Int32Ptr() **int32                     { return (**int32)(p.p) }
-func (p pointer) Int32Slice() *[]int32                  { return (*[]int32)(p.p) }
-func (p pointer) Int64() *int64                         { return (*int64)(p.p) }
-func (p pointer) Int64Ptr() **int64                     { return (**int64)(p.p) }
-func (p pointer) Int64Slice() *[]int64                  { return (*[]int64)(p.p) }
-func (p pointer) Uint32() *uint32                       { return (*uint32)(p.p) }
-func (p pointer) Uint32Ptr() **uint32                   { return (**uint32)(p.p) }
-func (p pointer) Uint32Slice() *[]uint32                { return (*[]uint32)(p.p) }
-func (p pointer) Uint64() *uint64                       { return (*uint64)(p.p) }
-func (p pointer) Uint64Ptr() **uint64                   { return (**uint64)(p.p) }
-func (p pointer) Uint64Slice() *[]uint64                { return (*[]uint64)(p.p) }
-func (p pointer) Float32() *float32                     { return (*float32)(p.p) }
-func (p pointer) Float32Ptr() **float32                 { return (**float32)(p.p) }
-func (p pointer) Float32Slice() *[]float32              { return (*[]float32)(p.p) }
-func (p pointer) Float64() *float64                     { return (*float64)(p.p) }
-func (p pointer) Float64Ptr() **float64                 { return (**float64)(p.p) }
-func (p pointer) Float64Slice() *[]float64              { return (*[]float64)(p.p) }
-func (p pointer) String() *string                       { return (*string)(p.p) }
-func (p pointer) StringPtr() **string                   { return (**string)(p.p) }
-func (p pointer) StringSlice() *[]string                { return (*[]string)(p.p) }
-func (p pointer) Bytes() *[]byte                        { return (*[]byte)(p.p) }
-func (p pointer) BytesPtr() **[]byte                    { return (**[]byte)(p.p) }
-func (p pointer) BytesSlice() *[][]byte                 { return (*[][]byte)(p.p) }
-func (p pointer) WeakFields() *weakFields               { return (*weakFields)(p.p) }
-func (p pointer) Extensions() *map[int32]ExtensionField { return (*map[int32]ExtensionField)(p.p) }
-
-func (p pointer) Elem() pointer {
-	return pointer{p: *(*unsafe.Pointer)(p.p)}
-}
-
-// PointerSlice loads []*T from p as a []pointer.
-// The value returned is aliased with the original slice.
-// This behavior differs from the implementation in pointer_reflect.go.
-func (p pointer) PointerSlice() []pointer {
-	// Super-tricky - p should point to a []*T where T is a
-	// message type. We load it as []pointer.
-	return *(*[]pointer)(p.p)
-}
-
-// AppendPointerSlice appends v to p, which must be a []*T.
-func (p pointer) AppendPointerSlice(v pointer) {
-	*(*[]pointer)(p.p) = append(*(*[]pointer)(p.p), v)
-}
-
-// SetPointer sets *p to v.
-func (p pointer) SetPointer(v pointer) {
-	*(*unsafe.Pointer)(p.p) = (unsafe.Pointer)(v.p)
-}
-
-// Static check that MessageState does not exceed the size of a pointer.
-const _ = uint(unsafe.Sizeof(unsafe.Pointer(nil)) - unsafe.Sizeof(MessageState{}))
-
-func (Export) MessageStateOf(p Pointer) *messageState {
-	// Super-tricky - see documentation on MessageState.
-	return (*messageState)(unsafe.Pointer(p))
-}
-func (ms *messageState) pointer() pointer {
-	// Super-tricky - see documentation on MessageState.
-	return pointer{p: unsafe.Pointer(ms)}
-}
-func (ms *messageState) messageInfo() *MessageInfo {
-	mi := ms.LoadMessageInfo()
-	if mi == nil {
-		panic("invalid nil message info; this suggests memory corruption due to a race or shallow copy on the message struct")
-	}
-	return mi
-}
-func (ms *messageState) LoadMessageInfo() *MessageInfo {
-	return (*MessageInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&ms.atomicMessageInfo))))
-}
-func (ms *messageState) StoreMessageInfo(mi *MessageInfo) {
-	atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(&ms.atomicMessageInfo)), unsafe.Pointer(mi))
-}
-
-type atomicNilMessage struct{ p unsafe.Pointer } // p is a *messageReflectWrapper
-
-func (m *atomicNilMessage) Init(mi *MessageInfo) *messageReflectWrapper {
-	if p := atomic.LoadPointer(&m.p); p != nil {
-		return (*messageReflectWrapper)(p)
-	}
-	w := &messageReflectWrapper{mi: mi}
-	atomic.CompareAndSwapPointer(&m.p, nil, (unsafe.Pointer)(w))
-	return (*messageReflectWrapper)(atomic.LoadPointer(&m.p))
-}
diff --git a/internal/impl/validate.go b/internal/impl/validate.go
deleted file mode 100644
index 08cfb60..0000000
--- a/internal/impl/validate.go
+++ /dev/null
@@ -1,576 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"fmt"
-	"math"
-	"math/bits"
-	"reflect"
-	"unicode/utf8"
-
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/encoding/messageset"
-	"google.golang.org/protobuf/internal/flags"
-	"google.golang.org/protobuf/internal/genid"
-	"google.golang.org/protobuf/internal/strs"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	preg "google.golang.org/protobuf/reflect/protoregistry"
-	piface "google.golang.org/protobuf/runtime/protoiface"
-)
-
-// ValidationStatus is the result of validating the wire-format encoding of a message.
-type ValidationStatus int
-
-const (
-	// ValidationUnknown indicates that unmarshaling the message might succeed or fail.
-	// The validator was unable to render a judgement.
-	//
-	// The only causes of this status are an aberrant message type appearing somewhere
-	// in the message or a failure in the extension resolver.
-	ValidationUnknown ValidationStatus = iota + 1
-
-	// ValidationInvalid indicates that unmarshaling the message will fail.
-	ValidationInvalid
-
-	// ValidationValid indicates that unmarshaling the message will succeed.
-	ValidationValid
-)
-
-func (v ValidationStatus) String() string {
-	switch v {
-	case ValidationUnknown:
-		return "ValidationUnknown"
-	case ValidationInvalid:
-		return "ValidationInvalid"
-	case ValidationValid:
-		return "ValidationValid"
-	default:
-		return fmt.Sprintf("ValidationStatus(%d)", int(v))
-	}
-}
-
-// Validate determines whether the contents of the buffer are a valid wire encoding
-// of the message type.
-//
-// This function is exposed for testing.
-func Validate(mt pref.MessageType, in piface.UnmarshalInput) (out piface.UnmarshalOutput, _ ValidationStatus) {
-	mi, ok := mt.(*MessageInfo)
-	if !ok {
-		return out, ValidationUnknown
-	}
-	if in.Resolver == nil {
-		in.Resolver = preg.GlobalTypes
-	}
-	o, st := mi.validate(in.Buf, 0, unmarshalOptions{
-		flags:    in.Flags,
-		resolver: in.Resolver,
-	})
-	if o.initialized {
-		out.Flags |= piface.UnmarshalInitialized
-	}
-	return out, st
-}
-
-type validationInfo struct {
-	mi               *MessageInfo
-	typ              validationType
-	keyType, valType validationType
-
-	// For non-required fields, requiredBit is 0.
-	//
-	// For required fields, requiredBit's nth bit is set, where n is a
-	// unique index in the range [0, MessageInfo.numRequiredFields).
-	//
-	// If there are more than 64 required fields, requiredBit is 0.
-	requiredBit uint64
-}
-
-type validationType uint8
-
-const (
-	validationTypeOther validationType = iota
-	validationTypeMessage
-	validationTypeGroup
-	validationTypeMap
-	validationTypeRepeatedVarint
-	validationTypeRepeatedFixed32
-	validationTypeRepeatedFixed64
-	validationTypeVarint
-	validationTypeFixed32
-	validationTypeFixed64
-	validationTypeBytes
-	validationTypeUTF8String
-	validationTypeMessageSetItem
-)
-
-func newFieldValidationInfo(mi *MessageInfo, si structInfo, fd pref.FieldDescriptor, ft reflect.Type) validationInfo {
-	var vi validationInfo
-	switch {
-	case fd.ContainingOneof() != nil && !fd.ContainingOneof().IsSynthetic():
-		switch fd.Kind() {
-		case pref.MessageKind:
-			vi.typ = validationTypeMessage
-			if ot, ok := si.oneofWrappersByNumber[fd.Number()]; ok {
-				vi.mi = getMessageInfo(ot.Field(0).Type)
-			}
-		case pref.GroupKind:
-			vi.typ = validationTypeGroup
-			if ot, ok := si.oneofWrappersByNumber[fd.Number()]; ok {
-				vi.mi = getMessageInfo(ot.Field(0).Type)
-			}
-		case pref.StringKind:
-			if strs.EnforceUTF8(fd) {
-				vi.typ = validationTypeUTF8String
-			}
-		}
-	default:
-		vi = newValidationInfo(fd, ft)
-	}
-	if fd.Cardinality() == pref.Required {
-		// Avoid overflow. The required field check is done with a 64-bit mask, with
-		// any message containing more than 64 required fields always reported as
-		// potentially uninitialized, so it is not important to get a precise count
-		// of the required fields past 64.
-		if mi.numRequiredFields < math.MaxUint8 {
-			mi.numRequiredFields++
-			vi.requiredBit = 1 << (mi.numRequiredFields - 1)
-		}
-	}
-	return vi
-}
-
-func newValidationInfo(fd pref.FieldDescriptor, ft reflect.Type) validationInfo {
-	var vi validationInfo
-	switch {
-	case fd.IsList():
-		switch fd.Kind() {
-		case pref.MessageKind:
-			vi.typ = validationTypeMessage
-			if ft.Kind() == reflect.Slice {
-				vi.mi = getMessageInfo(ft.Elem())
-			}
-		case pref.GroupKind:
-			vi.typ = validationTypeGroup
-			if ft.Kind() == reflect.Slice {
-				vi.mi = getMessageInfo(ft.Elem())
-			}
-		case pref.StringKind:
-			vi.typ = validationTypeBytes
-			if strs.EnforceUTF8(fd) {
-				vi.typ = validationTypeUTF8String
-			}
-		default:
-			switch wireTypes[fd.Kind()] {
-			case protowire.VarintType:
-				vi.typ = validationTypeRepeatedVarint
-			case protowire.Fixed32Type:
-				vi.typ = validationTypeRepeatedFixed32
-			case protowire.Fixed64Type:
-				vi.typ = validationTypeRepeatedFixed64
-			}
-		}
-	case fd.IsMap():
-		vi.typ = validationTypeMap
-		switch fd.MapKey().Kind() {
-		case pref.StringKind:
-			if strs.EnforceUTF8(fd) {
-				vi.keyType = validationTypeUTF8String
-			}
-		}
-		switch fd.MapValue().Kind() {
-		case pref.MessageKind:
-			vi.valType = validationTypeMessage
-			if ft.Kind() == reflect.Map {
-				vi.mi = getMessageInfo(ft.Elem())
-			}
-		case pref.StringKind:
-			if strs.EnforceUTF8(fd) {
-				vi.valType = validationTypeUTF8String
-			}
-		}
-	default:
-		switch fd.Kind() {
-		case pref.MessageKind:
-			vi.typ = validationTypeMessage
-			if !fd.IsWeak() {
-				vi.mi = getMessageInfo(ft)
-			}
-		case pref.GroupKind:
-			vi.typ = validationTypeGroup
-			vi.mi = getMessageInfo(ft)
-		case pref.StringKind:
-			vi.typ = validationTypeBytes
-			if strs.EnforceUTF8(fd) {
-				vi.typ = validationTypeUTF8String
-			}
-		default:
-			switch wireTypes[fd.Kind()] {
-			case protowire.VarintType:
-				vi.typ = validationTypeVarint
-			case protowire.Fixed32Type:
-				vi.typ = validationTypeFixed32
-			case protowire.Fixed64Type:
-				vi.typ = validationTypeFixed64
-			case protowire.BytesType:
-				vi.typ = validationTypeBytes
-			}
-		}
-	}
-	return vi
-}
-
-func (mi *MessageInfo) validate(b []byte, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, result ValidationStatus) {
-	mi.init()
-	type validationState struct {
-		typ              validationType
-		keyType, valType validationType
-		endGroup         protowire.Number
-		mi               *MessageInfo
-		tail             []byte
-		requiredMask     uint64
-	}
-
-	// Pre-allocate some slots to avoid repeated slice reallocation.
-	states := make([]validationState, 0, 16)
-	states = append(states, validationState{
-		typ: validationTypeMessage,
-		mi:  mi,
-	})
-	if groupTag > 0 {
-		states[0].typ = validationTypeGroup
-		states[0].endGroup = groupTag
-	}
-	initialized := true
-	start := len(b)
-State:
-	for len(states) > 0 {
-		st := &states[len(states)-1]
-		for len(b) > 0 {
-			// Parse the tag (field number and wire type).
-			var tag uint64
-			if b[0] < 0x80 {
-				tag = uint64(b[0])
-				b = b[1:]
-			} else if len(b) >= 2 && b[1] < 128 {
-				tag = uint64(b[0]&0x7f) + uint64(b[1])<<7
-				b = b[2:]
-			} else {
-				var n int
-				tag, n = protowire.ConsumeVarint(b)
-				if n < 0 {
-					return out, ValidationInvalid
-				}
-				b = b[n:]
-			}
-			var num protowire.Number
-			if n := tag >> 3; n < uint64(protowire.MinValidNumber) || n > uint64(protowire.MaxValidNumber) {
-				return out, ValidationInvalid
-			} else {
-				num = protowire.Number(n)
-			}
-			wtyp := protowire.Type(tag & 7)
-
-			if wtyp == protowire.EndGroupType {
-				if st.endGroup == num {
-					goto PopState
-				}
-				return out, ValidationInvalid
-			}
-			var vi validationInfo
-			switch {
-			case st.typ == validationTypeMap:
-				switch num {
-				case genid.MapEntry_Key_field_number:
-					vi.typ = st.keyType
-				case genid.MapEntry_Value_field_number:
-					vi.typ = st.valType
-					vi.mi = st.mi
-					vi.requiredBit = 1
-				}
-			case flags.ProtoLegacy && st.mi.isMessageSet:
-				switch num {
-				case messageset.FieldItem:
-					vi.typ = validationTypeMessageSetItem
-				}
-			default:
-				var f *coderFieldInfo
-				if int(num) < len(st.mi.denseCoderFields) {
-					f = st.mi.denseCoderFields[num]
-				} else {
-					f = st.mi.coderFields[num]
-				}
-				if f != nil {
-					vi = f.validation
-					if vi.typ == validationTypeMessage && vi.mi == nil {
-						// Probable weak field.
-						//
-						// TODO: Consider storing the results of this lookup somewhere
-						// rather than recomputing it on every validation.
-						fd := st.mi.Desc.Fields().ByNumber(num)
-						if fd == nil || !fd.IsWeak() {
-							break
-						}
-						messageName := fd.Message().FullName()
-						messageType, err := preg.GlobalTypes.FindMessageByName(messageName)
-						switch err {
-						case nil:
-							vi.mi, _ = messageType.(*MessageInfo)
-						case preg.NotFound:
-							vi.typ = validationTypeBytes
-						default:
-							return out, ValidationUnknown
-						}
-					}
-					break
-				}
-				// Possible extension field.
-				//
-				// TODO: We should return ValidationUnknown when:
-				//   1. The resolver is not frozen. (More extensions may be added to it.)
-				//   2. The resolver returns preg.NotFound.
-				// In this case, a type added to the resolver in the future could cause
-				// unmarshaling to begin failing. Supporting this requires some way to
-				// determine if the resolver is frozen.
-				xt, err := opts.resolver.FindExtensionByNumber(st.mi.Desc.FullName(), num)
-				if err != nil && err != preg.NotFound {
-					return out, ValidationUnknown
-				}
-				if err == nil {
-					vi = getExtensionFieldInfo(xt).validation
-				}
-			}
-			if vi.requiredBit != 0 {
-				// Check that the field has a compatible wire type.
-				// We only need to consider non-repeated field types,
-				// since repeated fields (and maps) can never be required.
-				ok := false
-				switch vi.typ {
-				case validationTypeVarint:
-					ok = wtyp == protowire.VarintType
-				case validationTypeFixed32:
-					ok = wtyp == protowire.Fixed32Type
-				case validationTypeFixed64:
-					ok = wtyp == protowire.Fixed64Type
-				case validationTypeBytes, validationTypeUTF8String, validationTypeMessage:
-					ok = wtyp == protowire.BytesType
-				case validationTypeGroup:
-					ok = wtyp == protowire.StartGroupType
-				}
-				if ok {
-					st.requiredMask |= vi.requiredBit
-				}
-			}
-
-			switch wtyp {
-			case protowire.VarintType:
-				if len(b) >= 10 {
-					switch {
-					case b[0] < 0x80:
-						b = b[1:]
-					case b[1] < 0x80:
-						b = b[2:]
-					case b[2] < 0x80:
-						b = b[3:]
-					case b[3] < 0x80:
-						b = b[4:]
-					case b[4] < 0x80:
-						b = b[5:]
-					case b[5] < 0x80:
-						b = b[6:]
-					case b[6] < 0x80:
-						b = b[7:]
-					case b[7] < 0x80:
-						b = b[8:]
-					case b[8] < 0x80:
-						b = b[9:]
-					case b[9] < 0x80 && b[9] < 2:
-						b = b[10:]
-					default:
-						return out, ValidationInvalid
-					}
-				} else {
-					switch {
-					case len(b) > 0 && b[0] < 0x80:
-						b = b[1:]
-					case len(b) > 1 && b[1] < 0x80:
-						b = b[2:]
-					case len(b) > 2 && b[2] < 0x80:
-						b = b[3:]
-					case len(b) > 3 && b[3] < 0x80:
-						b = b[4:]
-					case len(b) > 4 && b[4] < 0x80:
-						b = b[5:]
-					case len(b) > 5 && b[5] < 0x80:
-						b = b[6:]
-					case len(b) > 6 && b[6] < 0x80:
-						b = b[7:]
-					case len(b) > 7 && b[7] < 0x80:
-						b = b[8:]
-					case len(b) > 8 && b[8] < 0x80:
-						b = b[9:]
-					case len(b) > 9 && b[9] < 2:
-						b = b[10:]
-					default:
-						return out, ValidationInvalid
-					}
-				}
-				continue State
-			case protowire.BytesType:
-				var size uint64
-				if len(b) >= 1 && b[0] < 0x80 {
-					size = uint64(b[0])
-					b = b[1:]
-				} else if len(b) >= 2 && b[1] < 128 {
-					size = uint64(b[0]&0x7f) + uint64(b[1])<<7
-					b = b[2:]
-				} else {
-					var n int
-					size, n = protowire.ConsumeVarint(b)
-					if n < 0 {
-						return out, ValidationInvalid
-					}
-					b = b[n:]
-				}
-				if size > uint64(len(b)) {
-					return out, ValidationInvalid
-				}
-				v := b[:size]
-				b = b[size:]
-				switch vi.typ {
-				case validationTypeMessage:
-					if vi.mi == nil {
-						return out, ValidationUnknown
-					}
-					vi.mi.init()
-					fallthrough
-				case validationTypeMap:
-					if vi.mi != nil {
-						vi.mi.init()
-					}
-					states = append(states, validationState{
-						typ:     vi.typ,
-						keyType: vi.keyType,
-						valType: vi.valType,
-						mi:      vi.mi,
-						tail:    b,
-					})
-					b = v
-					continue State
-				case validationTypeRepeatedVarint:
-					// Packed field.
-					for len(v) > 0 {
-						_, n := protowire.ConsumeVarint(v)
-						if n < 0 {
-							return out, ValidationInvalid
-						}
-						v = v[n:]
-					}
-				case validationTypeRepeatedFixed32:
-					// Packed field.
-					if len(v)%4 != 0 {
-						return out, ValidationInvalid
-					}
-				case validationTypeRepeatedFixed64:
-					// Packed field.
-					if len(v)%8 != 0 {
-						return out, ValidationInvalid
-					}
-				case validationTypeUTF8String:
-					if !utf8.Valid(v) {
-						return out, ValidationInvalid
-					}
-				}
-			case protowire.Fixed32Type:
-				if len(b) < 4 {
-					return out, ValidationInvalid
-				}
-				b = b[4:]
-			case protowire.Fixed64Type:
-				if len(b) < 8 {
-					return out, ValidationInvalid
-				}
-				b = b[8:]
-			case protowire.StartGroupType:
-				switch {
-				case vi.typ == validationTypeGroup:
-					if vi.mi == nil {
-						return out, ValidationUnknown
-					}
-					vi.mi.init()
-					states = append(states, validationState{
-						typ:      validationTypeGroup,
-						mi:       vi.mi,
-						endGroup: num,
-					})
-					continue State
-				case flags.ProtoLegacy && vi.typ == validationTypeMessageSetItem:
-					typeid, v, n, err := messageset.ConsumeFieldValue(b, false)
-					if err != nil {
-						return out, ValidationInvalid
-					}
-					xt, err := opts.resolver.FindExtensionByNumber(st.mi.Desc.FullName(), typeid)
-					switch {
-					case err == preg.NotFound:
-						b = b[n:]
-					case err != nil:
-						return out, ValidationUnknown
-					default:
-						xvi := getExtensionFieldInfo(xt).validation
-						if xvi.mi != nil {
-							xvi.mi.init()
-						}
-						states = append(states, validationState{
-							typ:  xvi.typ,
-							mi:   xvi.mi,
-							tail: b[n:],
-						})
-						b = v
-						continue State
-					}
-				default:
-					n := protowire.ConsumeFieldValue(num, wtyp, b)
-					if n < 0 {
-						return out, ValidationInvalid
-					}
-					b = b[n:]
-				}
-			default:
-				return out, ValidationInvalid
-			}
-		}
-		if st.endGroup != 0 {
-			return out, ValidationInvalid
-		}
-		if len(b) != 0 {
-			return out, ValidationInvalid
-		}
-		b = st.tail
-	PopState:
-		numRequiredFields := 0
-		switch st.typ {
-		case validationTypeMessage, validationTypeGroup:
-			numRequiredFields = int(st.mi.numRequiredFields)
-		case validationTypeMap:
-			// If this is a map field with a message value that contains
-			// required fields, require that the value be present.
-			if st.mi != nil && st.mi.numRequiredFields > 0 {
-				numRequiredFields = 1
-			}
-		}
-		// If there are more than 64 required fields, this check will
-		// always fail and we will report that the message is potentially
-		// uninitialized.
-		if numRequiredFields > 0 && bits.OnesCount64(st.requiredMask) != numRequiredFields {
-			initialized = false
-		}
-		states = states[:len(states)-1]
-	}
-	out.n = start - len(b)
-	if initialized {
-		out.initialized = true
-	}
-	return out, ValidationValid
-}
diff --git a/internal/impl/weak.go b/internal/impl/weak.go
deleted file mode 100644
index 009cbef..0000000
--- a/internal/impl/weak.go
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package impl
-
-import (
-	"fmt"
-
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/reflect/protoregistry"
-)
-
-// weakFields adds methods to the exported WeakFields type for internal use.
-//
-// The exported type is an alias to an unnamed type, so methods can't be
-// defined directly on it.
-type weakFields WeakFields
-
-func (w weakFields) get(num pref.FieldNumber) (pref.ProtoMessage, bool) {
-	m, ok := w[int32(num)]
-	return m, ok
-}
-
-func (w *weakFields) set(num pref.FieldNumber, m pref.ProtoMessage) {
-	if *w == nil {
-		*w = make(weakFields)
-	}
-	(*w)[int32(num)] = m
-}
-
-func (w *weakFields) clear(num pref.FieldNumber) {
-	delete(*w, int32(num))
-}
-
-func (Export) HasWeak(w WeakFields, num pref.FieldNumber) bool {
-	_, ok := w[int32(num)]
-	return ok
-}
-
-func (Export) ClearWeak(w *WeakFields, num pref.FieldNumber) {
-	delete(*w, int32(num))
-}
-
-func (Export) GetWeak(w WeakFields, num pref.FieldNumber, name pref.FullName) pref.ProtoMessage {
-	if m, ok := w[int32(num)]; ok {
-		return m
-	}
-	mt, _ := protoregistry.GlobalTypes.FindMessageByName(name)
-	if mt == nil {
-		panic(fmt.Sprintf("message %v for weak field is not linked in", name))
-	}
-	return mt.Zero().Interface()
-}
-
-func (Export) SetWeak(w *WeakFields, num pref.FieldNumber, name pref.FullName, m pref.ProtoMessage) {
-	if m != nil {
-		mt, _ := protoregistry.GlobalTypes.FindMessageByName(name)
-		if mt == nil {
-			panic(fmt.Sprintf("message %v for weak field is not linked in", name))
-		}
-		if mt != m.ProtoReflect().Type() {
-			panic(fmt.Sprintf("invalid message type for weak field: got %T, want %T", m, mt.Zero().Interface()))
-		}
-	}
-	if m == nil || !m.ProtoReflect().IsValid() {
-		delete(*w, int32(num))
-		return
-	}
-	if *w == nil {
-		*w = make(weakFields)
-	}
-	(*w)[int32(num)] = m
-}
diff --git a/internal/msgfmt/format.go b/internal/msgfmt/format.go
deleted file mode 100644
index a319550..0000000
--- a/internal/msgfmt/format.go
+++ /dev/null
@@ -1,261 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package msgfmt implements a text marshaler combining the desirable features
-// of both the JSON and proto text formats.
-// It is optimized for human readability and has no associated deserializer.
-package msgfmt
-
-import (
-	"bytes"
-	"fmt"
-	"reflect"
-	"sort"
-	"strconv"
-	"strings"
-	"time"
-
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/detrand"
-	"google.golang.org/protobuf/internal/genid"
-	"google.golang.org/protobuf/internal/order"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/reflect/protoregistry"
-)
-
-// Format returns a formatted string for the message.
-func Format(m proto.Message) string {
-	return string(appendMessage(nil, m.ProtoReflect()))
-}
-
-// FormatValue returns a formatted string for an arbitrary value.
-func FormatValue(v protoreflect.Value, fd protoreflect.FieldDescriptor) string {
-	return string(appendValue(nil, v, fd))
-}
-
-func appendValue(b []byte, v protoreflect.Value, fd protoreflect.FieldDescriptor) []byte {
-	switch v := v.Interface().(type) {
-	case nil:
-		return append(b, "<invalid>"...)
-	case bool, int32, int64, uint32, uint64, float32, float64:
-		return append(b, fmt.Sprint(v)...)
-	case string:
-		return append(b, strconv.Quote(string(v))...)
-	case []byte:
-		return append(b, strconv.Quote(string(v))...)
-	case protoreflect.EnumNumber:
-		return appendEnum(b, v, fd)
-	case protoreflect.Message:
-		return appendMessage(b, v)
-	case protoreflect.List:
-		return appendList(b, v, fd)
-	case protoreflect.Map:
-		return appendMap(b, v, fd)
-	default:
-		panic(fmt.Sprintf("invalid type: %T", v))
-	}
-}
-
-func appendEnum(b []byte, v protoreflect.EnumNumber, fd protoreflect.FieldDescriptor) []byte {
-	if fd != nil {
-		if ev := fd.Enum().Values().ByNumber(v); ev != nil {
-			return append(b, ev.Name()...)
-		}
-	}
-	return strconv.AppendInt(b, int64(v), 10)
-}
-
-func appendMessage(b []byte, m protoreflect.Message) []byte {
-	if b2 := appendKnownMessage(b, m); b2 != nil {
-		return b2
-	}
-
-	b = append(b, '{')
-	order.RangeFields(m, order.IndexNameFieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {
-		b = append(b, fd.TextName()...)
-		b = append(b, ':')
-		b = appendValue(b, v, fd)
-		b = append(b, delim()...)
-		return true
-	})
-	b = appendUnknown(b, m.GetUnknown())
-	b = bytes.TrimRight(b, delim())
-	b = append(b, '}')
-	return b
-}
-
-var protocmpMessageType = reflect.TypeOf(map[string]interface{}(nil))
-
-func appendKnownMessage(b []byte, m protoreflect.Message) []byte {
-	md := m.Descriptor()
-	fds := md.Fields()
-	switch md.FullName() {
-	case genid.Any_message_fullname:
-		var msgVal protoreflect.Message
-		url := m.Get(fds.ByNumber(genid.Any_TypeUrl_field_number)).String()
-		if v := reflect.ValueOf(m); v.Type().ConvertibleTo(protocmpMessageType) {
-			// For protocmp.Message, directly obtain the sub-message value
-			// which is stored in structured form, rather than as raw bytes.
-			m2 := v.Convert(protocmpMessageType).Interface().(map[string]interface{})
-			v, ok := m2[string(genid.Any_Value_field_name)].(proto.Message)
-			if !ok {
-				return nil
-			}
-			msgVal = v.ProtoReflect()
-		} else {
-			val := m.Get(fds.ByNumber(genid.Any_Value_field_number)).Bytes()
-			mt, err := protoregistry.GlobalTypes.FindMessageByURL(url)
-			if err != nil {
-				return nil
-			}
-			msgVal = mt.New()
-			err = proto.UnmarshalOptions{AllowPartial: true}.Unmarshal(val, msgVal.Interface())
-			if err != nil {
-				return nil
-			}
-		}
-
-		b = append(b, '{')
-		b = append(b, "["+url+"]"...)
-		b = append(b, ':')
-		b = appendMessage(b, msgVal)
-		b = append(b, '}')
-		return b
-
-	case genid.Timestamp_message_fullname:
-		secs := m.Get(fds.ByNumber(genid.Timestamp_Seconds_field_number)).Int()
-		nanos := m.Get(fds.ByNumber(genid.Timestamp_Nanos_field_number)).Int()
-		if nanos < 0 || nanos >= 1e9 {
-			return nil
-		}
-		t := time.Unix(secs, nanos).UTC()
-		x := t.Format("2006-01-02T15:04:05.000000000") // RFC 3339
-		x = strings.TrimSuffix(x, "000")
-		x = strings.TrimSuffix(x, "000")
-		x = strings.TrimSuffix(x, ".000")
-		return append(b, x+"Z"...)
-
-	case genid.Duration_message_fullname:
-		sign := ""
-		secs := m.Get(fds.ByNumber(genid.Duration_Seconds_field_number)).Int()
-		nanos := m.Get(fds.ByNumber(genid.Duration_Nanos_field_number)).Int()
-		if nanos <= -1e9 || nanos >= 1e9 || (secs > 0 && nanos < 0) || (secs < 0 && nanos > 0) {
-			return nil
-		}
-		if secs < 0 || nanos < 0 {
-			sign, secs, nanos = "-", -1*secs, -1*nanos
-		}
-		x := fmt.Sprintf("%s%d.%09d", sign, secs, nanos)
-		x = strings.TrimSuffix(x, "000")
-		x = strings.TrimSuffix(x, "000")
-		x = strings.TrimSuffix(x, ".000")
-		return append(b, x+"s"...)
-
-	case genid.BoolValue_message_fullname,
-		genid.Int32Value_message_fullname,
-		genid.Int64Value_message_fullname,
-		genid.UInt32Value_message_fullname,
-		genid.UInt64Value_message_fullname,
-		genid.FloatValue_message_fullname,
-		genid.DoubleValue_message_fullname,
-		genid.StringValue_message_fullname,
-		genid.BytesValue_message_fullname:
-		fd := fds.ByNumber(genid.WrapperValue_Value_field_number)
-		return appendValue(b, m.Get(fd), fd)
-	}
-
-	return nil
-}
-
-func appendUnknown(b []byte, raw protoreflect.RawFields) []byte {
-	rs := make(map[protoreflect.FieldNumber][]protoreflect.RawFields)
-	for len(raw) > 0 {
-		num, _, n := protowire.ConsumeField(raw)
-		rs[num] = append(rs[num], raw[:n])
-		raw = raw[n:]
-	}
-
-	var ns []protoreflect.FieldNumber
-	for n := range rs {
-		ns = append(ns, n)
-	}
-	sort.Slice(ns, func(i, j int) bool { return ns[i] < ns[j] })
-
-	for _, n := range ns {
-		var leftBracket, rightBracket string
-		if len(rs[n]) > 1 {
-			leftBracket, rightBracket = "[", "]"
-		}
-
-		b = strconv.AppendInt(b, int64(n), 10)
-		b = append(b, ':')
-		b = append(b, leftBracket...)
-		for _, r := range rs[n] {
-			num, typ, n := protowire.ConsumeTag(r)
-			r = r[n:]
-			switch typ {
-			case protowire.VarintType:
-				v, _ := protowire.ConsumeVarint(r)
-				b = strconv.AppendInt(b, int64(v), 10)
-			case protowire.Fixed32Type:
-				v, _ := protowire.ConsumeFixed32(r)
-				b = append(b, fmt.Sprintf("0x%08x", v)...)
-			case protowire.Fixed64Type:
-				v, _ := protowire.ConsumeFixed64(r)
-				b = append(b, fmt.Sprintf("0x%016x", v)...)
-			case protowire.BytesType:
-				v, _ := protowire.ConsumeBytes(r)
-				b = strconv.AppendQuote(b, string(v))
-			case protowire.StartGroupType:
-				v, _ := protowire.ConsumeGroup(num, r)
-				b = append(b, '{')
-				b = appendUnknown(b, v)
-				b = bytes.TrimRight(b, delim())
-				b = append(b, '}')
-			default:
-				panic(fmt.Sprintf("invalid type: %v", typ))
-			}
-			b = append(b, delim()...)
-		}
-		b = bytes.TrimRight(b, delim())
-		b = append(b, rightBracket...)
-		b = append(b, delim()...)
-	}
-	return b
-}
-
-func appendList(b []byte, v protoreflect.List, fd protoreflect.FieldDescriptor) []byte {
-	b = append(b, '[')
-	for i := 0; i < v.Len(); i++ {
-		b = appendValue(b, v.Get(i), fd)
-		b = append(b, delim()...)
-	}
-	b = bytes.TrimRight(b, delim())
-	b = append(b, ']')
-	return b
-}
-
-func appendMap(b []byte, v protoreflect.Map, fd protoreflect.FieldDescriptor) []byte {
-	b = append(b, '{')
-	order.RangeEntries(v, order.GenericKeyOrder, func(k protoreflect.MapKey, v protoreflect.Value) bool {
-		b = appendValue(b, k.Value(), fd.MapKey())
-		b = append(b, ':')
-		b = appendValue(b, v, fd.MapValue())
-		b = append(b, delim()...)
-		return true
-	})
-	b = bytes.TrimRight(b, delim())
-	b = append(b, '}')
-	return b
-}
-
-func delim() string {
-	// Deliberately introduce instability into the message string to
-	// discourage users from depending on it.
-	if detrand.Bool() {
-		return "  "
-	}
-	return ", "
-}
diff --git a/internal/msgfmt/format_test.go b/internal/msgfmt/format_test.go
deleted file mode 100644
index 6ba0768..0000000
--- a/internal/msgfmt/format_test.go
+++ /dev/null
@@ -1,254 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package msgfmt_test
-
-import (
-	"math"
-	"sync"
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-
-	"google.golang.org/protobuf/internal/detrand"
-	"google.golang.org/protobuf/internal/msgfmt"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/testing/protocmp"
-	"google.golang.org/protobuf/testing/protopack"
-
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-	textpb "google.golang.org/protobuf/internal/testprotos/textpb2"
-	dynpb "google.golang.org/protobuf/types/dynamicpb"
-	anypb "google.golang.org/protobuf/types/known/anypb"
-	durpb "google.golang.org/protobuf/types/known/durationpb"
-	tspb "google.golang.org/protobuf/types/known/timestamppb"
-	wpb "google.golang.org/protobuf/types/known/wrapperspb"
-)
-
-func init() {
-	detrand.Disable()
-}
-
-func TestFormat(t *testing.T) {
-	optMsg := &testpb.TestAllTypes{
-		OptionalBool:          proto.Bool(false),
-		OptionalInt32:         proto.Int32(-32),
-		OptionalInt64:         proto.Int64(-64),
-		OptionalUint32:        proto.Uint32(32),
-		OptionalUint64:        proto.Uint64(64),
-		OptionalFloat:         proto.Float32(32.32),
-		OptionalDouble:        proto.Float64(64.64),
-		OptionalString:        proto.String("string"),
-		OptionalBytes:         []byte("bytes"),
-		OptionalNestedEnum:    testpb.TestAllTypes_NEG.Enum(),
-		OptionalNestedMessage: &testpb.TestAllTypes_NestedMessage{A: proto.Int32(5)},
-	}
-	repMsg := &testpb.TestAllTypes{
-		RepeatedBool:   []bool{false, true},
-		RepeatedInt32:  []int32{32, -32},
-		RepeatedInt64:  []int64{64, -64},
-		RepeatedUint32: []uint32{0, 32},
-		RepeatedUint64: []uint64{0, 64},
-		RepeatedFloat:  []float32{0, 32.32},
-		RepeatedDouble: []float64{0, 64.64},
-		RepeatedString: []string{"s1", "s2"},
-		RepeatedBytes:  [][]byte{{1}, {2}},
-		RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{
-			testpb.TestAllTypes_FOO,
-			testpb.TestAllTypes_BAR,
-		},
-		RepeatedNestedMessage: []*testpb.TestAllTypes_NestedMessage{
-			{A: proto.Int32(5)},
-			{A: proto.Int32(-5)},
-		},
-	}
-	mapMsg := &testpb.TestAllTypes{
-		MapBoolBool:     map[bool]bool{true: false},
-		MapInt32Int32:   map[int32]int32{-32: 32},
-		MapInt64Int64:   map[int64]int64{-64: 64},
-		MapUint32Uint32: map[uint32]uint32{0: 32},
-		MapUint64Uint64: map[uint64]uint64{0: 64},
-		MapInt32Float:   map[int32]float32{32: 32.32},
-		MapInt32Double:  map[int32]float64{64: 64.64},
-		MapStringString: map[string]string{"k": "v"},
-		MapStringBytes:  map[string][]byte{"k": []byte("v")},
-		MapStringNestedEnum: map[string]testpb.TestAllTypes_NestedEnum{
-			"k": testpb.TestAllTypes_FOO,
-		},
-		MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{
-			"k": {A: proto.Int32(5)},
-		},
-	}
-
-	tests := []struct {
-		in   proto.Message
-		want string
-	}{{
-		in:   optMsg,
-		want: `{optional_int32:-32, optional_int64:-64, optional_uint32:32, optional_uint64:64, optional_float:32.32, optional_double:64.64, optional_bool:false, optional_string:"string", optional_bytes:"bytes", optional_nested_message:{a:5}, optional_nested_enum:NEG}`,
-	}, {
-		in:   repMsg,
-		want: `{repeated_int32:[32, -32], repeated_int64:[64, -64], repeated_uint32:[0, 32], repeated_uint64:[0, 64], repeated_float:[0, 32.32], repeated_double:[0, 64.64], repeated_bool:[false, true], repeated_string:["s1", "s2"], repeated_bytes:["\x01", "\x02"], repeated_nested_message:[{a:5}, {a:-5}], repeated_nested_enum:[FOO, BAR]}`,
-	}, {
-		in:   mapMsg,
-		want: `{map_int32_int32:{-32:32}, map_int64_int64:{-64:64}, map_uint32_uint32:{0:32}, map_uint64_uint64:{0:64}, map_int32_float:{32:32.32}, map_int32_double:{64:64.64}, map_bool_bool:{true:false}, map_string_string:{"k":"v"}, map_string_bytes:{"k":"v"}, map_string_nested_message:{"k":{a:5}}, map_string_nested_enum:{"k":FOO}}`,
-	}, {
-		in: func() proto.Message {
-			m := &testpb.TestAllExtensions{}
-			proto.SetExtension(m, testpb.E_OptionalBool, bool(false))
-			proto.SetExtension(m, testpb.E_OptionalInt32, int32(-32))
-			proto.SetExtension(m, testpb.E_OptionalInt64, int64(-64))
-			proto.SetExtension(m, testpb.E_OptionalUint32, uint32(32))
-			proto.SetExtension(m, testpb.E_OptionalUint64, uint64(64))
-			proto.SetExtension(m, testpb.E_OptionalFloat, float32(32.32))
-			proto.SetExtension(m, testpb.E_OptionalDouble, float64(64.64))
-			proto.SetExtension(m, testpb.E_OptionalString, string("string"))
-			proto.SetExtension(m, testpb.E_OptionalBytes, []byte("bytes"))
-			proto.SetExtension(m, testpb.E_OptionalNestedEnum, testpb.TestAllTypes_NEG)
-			proto.SetExtension(m, testpb.E_OptionalNestedMessage, &testpb.TestAllExtensions_NestedMessage{A: proto.Int32(5)})
-			return m
-		}(),
-		want: `{[goproto.proto.test.optional_bool]:false, [goproto.proto.test.optional_bytes]:"bytes", [goproto.proto.test.optional_double]:64.64, [goproto.proto.test.optional_float]:32.32, [goproto.proto.test.optional_int32]:-32, [goproto.proto.test.optional_int64]:-64, [goproto.proto.test.optional_nested_enum]:NEG, [goproto.proto.test.optional_nested_message]:{a:5}, [goproto.proto.test.optional_string]:"string", [goproto.proto.test.optional_uint32]:32, [goproto.proto.test.optional_uint64]:64}`,
-	}, {
-		in: func() proto.Message {
-			m := &testpb.TestAllExtensions{}
-			proto.SetExtension(m, testpb.E_RepeatedBool, []bool{false, true})
-			proto.SetExtension(m, testpb.E_RepeatedInt32, []int32{32, -32})
-			proto.SetExtension(m, testpb.E_RepeatedInt64, []int64{64, -64})
-			proto.SetExtension(m, testpb.E_RepeatedUint32, []uint32{0, 32})
-			proto.SetExtension(m, testpb.E_RepeatedUint64, []uint64{0, 64})
-			proto.SetExtension(m, testpb.E_RepeatedFloat, []float32{0, 32.32})
-			proto.SetExtension(m, testpb.E_RepeatedDouble, []float64{0, 64.64})
-			proto.SetExtension(m, testpb.E_RepeatedString, []string{"s1", "s2"})
-			proto.SetExtension(m, testpb.E_RepeatedBytes, [][]byte{{1}, {2}})
-			proto.SetExtension(m, testpb.E_RepeatedNestedEnum, []testpb.TestAllTypes_NestedEnum{
-				testpb.TestAllTypes_FOO,
-				testpb.TestAllTypes_BAR,
-			})
-			proto.SetExtension(m, testpb.E_RepeatedNestedMessage, []*testpb.TestAllExtensions_NestedMessage{
-				{A: proto.Int32(5)},
-				{A: proto.Int32(-5)},
-			})
-			return m
-		}(),
-		want: `{[goproto.proto.test.repeated_bool]:[false, true], [goproto.proto.test.repeated_bytes]:["\x01", "\x02"], [goproto.proto.test.repeated_double]:[0, 64.64], [goproto.proto.test.repeated_float]:[0, 32.32], [goproto.proto.test.repeated_int32]:[32, -32], [goproto.proto.test.repeated_int64]:[64, -64], [goproto.proto.test.repeated_nested_enum]:[FOO, BAR], [goproto.proto.test.repeated_nested_message]:[{a:5}, {a:-5}], [goproto.proto.test.repeated_string]:["s1", "s2"], [goproto.proto.test.repeated_uint32]:[0, 32], [goproto.proto.test.repeated_uint64]:[0, 64]}`,
-	}, {
-		in: func() proto.Message {
-			m := &testpb.TestAllTypes{}
-			m.ProtoReflect().SetUnknown(protopack.Message{
-				protopack.Tag{Number: 50000, Type: protopack.VarintType}, protopack.Uvarint(100),
-				protopack.Tag{Number: 50001, Type: protopack.Fixed32Type}, protopack.Uint32(200),
-				protopack.Tag{Number: 50002, Type: protopack.Fixed64Type}, protopack.Uint64(300),
-				protopack.Tag{Number: 50003, Type: protopack.BytesType}, protopack.String("hello"),
-				protopack.Message{
-					protopack.Tag{Number: 50004, Type: protopack.StartGroupType},
-					protopack.Tag{Number: 1, Type: protopack.VarintType}, protopack.Uvarint(100),
-					protopack.Tag{Number: 1, Type: protopack.Fixed32Type}, protopack.Uint32(200),
-					protopack.Tag{Number: 1, Type: protopack.Fixed64Type}, protopack.Uint64(300),
-					protopack.Tag{Number: 1, Type: protopack.BytesType}, protopack.String("hello"),
-					protopack.Message{
-						protopack.Tag{Number: 1, Type: protopack.StartGroupType},
-						protopack.Tag{Number: 1, Type: protopack.VarintType}, protopack.Uvarint(100),
-						protopack.Tag{Number: 1, Type: protopack.Fixed32Type}, protopack.Uint32(200),
-						protopack.Tag{Number: 1, Type: protopack.Fixed64Type}, protopack.Uint64(300),
-						protopack.Tag{Number: 1, Type: protopack.BytesType}, protopack.String("hello"),
-						protopack.Tag{Number: 1, Type: protopack.EndGroupType},
-					},
-					protopack.Tag{Number: 50004, Type: protopack.EndGroupType},
-				},
-			}.Marshal())
-			return m
-		}(),
-		want: `{50000:100, 50001:0x000000c8, 50002:0x000000000000012c, 50003:"hello", 50004:{1:[100, 0x000000c8, 0x000000000000012c, "hello", {1:[100, 0x000000c8, 0x000000000000012c, "hello"]}]}}`,
-	}, {
-		in: &textpb.KnownTypes{
-			OptAny: &anypb.Any{
-				TypeUrl: "google.golang.org/goproto.proto.test.TestAllTypes",
-				Value: func() []byte {
-					b1, _ := proto.MarshalOptions{Deterministic: true}.Marshal(optMsg)
-					b2, _ := proto.MarshalOptions{Deterministic: true}.Marshal(repMsg)
-					b3, _ := proto.MarshalOptions{Deterministic: true}.Marshal(mapMsg)
-					return append(append(append([]byte(nil), b1...), b2...), b3...)
-				}(),
-			},
-		},
-		want: `{opt_any:{[google.golang.org/goproto.proto.test.TestAllTypes]:{optional_int32:-32, optional_int64:-64, optional_uint32:32, optional_uint64:64, optional_float:32.32, optional_double:64.64, optional_bool:false, optional_string:"string", optional_bytes:"bytes", optional_nested_message:{a:5}, optional_nested_enum:NEG, repeated_int32:[32, -32], repeated_int64:[64, -64], repeated_uint32:[0, 32], repeated_uint64:[0, 64], repeated_float:[0, 32.32], repeated_double:[0, 64.64], repeated_bool:[false, true], repeated_string:["s1", "s2"], repeated_bytes:["\x01", "\x02"], repeated_nested_message:[{a:5}, {a:-5}], repeated_nested_enum:[FOO, BAR], map_int32_int32:{-32:32}, map_int64_int64:{-64:64}, map_uint32_uint32:{0:32}, map_uint64_uint64:{0:64}, map_int32_float:{32:32.32}, map_int32_double:{64:64.64}, map_bool_bool:{true:false}, map_string_string:{"k":"v"}, map_string_bytes:{"k":"v"}, map_string_nested_message:{"k":{a:5}}, map_string_nested_enum:{"k":FOO}}}}`,
-	}, {
-		in: &textpb.KnownTypes{
-			OptTimestamp: &tspb.Timestamp{Seconds: math.MinInt64, Nanos: math.MaxInt32},
-		},
-		want: `{opt_timestamp:{seconds:-9223372036854775808, nanos:2147483647}}`,
-	}, {
-		in: &textpb.KnownTypes{
-			OptTimestamp: &tspb.Timestamp{Seconds: 1257894123, Nanos: 456789},
-		},
-		want: `{opt_timestamp:2009-11-10T23:02:03.000456789Z}`,
-	}, {
-		in: &textpb.KnownTypes{
-			OptDuration: &durpb.Duration{Seconds: math.MinInt64, Nanos: math.MaxInt32},
-		},
-		want: `{opt_duration:{seconds:-9223372036854775808, nanos:2147483647}}`,
-	}, {
-		in: &textpb.KnownTypes{
-			OptDuration: &durpb.Duration{Seconds: +1257894123, Nanos: +456789},
-		},
-		want: `{opt_duration:1257894123.000456789s}`,
-	}, {
-		in: &textpb.KnownTypes{
-			OptDuration: &durpb.Duration{Seconds: -1257894123, Nanos: -456789},
-		},
-		want: `{opt_duration:-1257894123.000456789s}`,
-	}, {
-		in: &textpb.KnownTypes{
-			OptDuration: &durpb.Duration{Seconds: 0, Nanos: -1},
-		},
-		want: `{opt_duration:-0.000000001s}`,
-	}, {
-		in: &textpb.KnownTypes{
-			OptBool:   &wpb.BoolValue{},
-			OptInt32:  &wpb.Int32Value{},
-			OptInt64:  &wpb.Int64Value{},
-			OptUint32: &wpb.UInt32Value{},
-			OptUint64: &wpb.UInt64Value{},
-			OptFloat:  &wpb.FloatValue{},
-			OptDouble: &wpb.DoubleValue{},
-			OptString: &wpb.StringValue{},
-			OptBytes:  &wpb.BytesValue{},
-		},
-		want: `{opt_bool:false, opt_int32:0, opt_int64:0, opt_uint32:0, opt_uint64:0, opt_float:0, opt_double:0, opt_string:"", opt_bytes:""}`,
-	}}
-	for _, tt := range tests {
-		t.Run("Generated", func(t *testing.T) {
-			got := msgfmt.Format(tt.in)
-			if diff := cmp.Diff(tt.want, got); diff != "" {
-				t.Errorf("Format() mismatch (-want +got):\n%v", diff)
-			}
-		})
-		t.Run("dynamicpb.Message", func(t *testing.T) {
-			m := dynpb.NewMessage(tt.in.ProtoReflect().Descriptor())
-			proto.Merge(m, tt.in)
-			got := msgfmt.Format(m)
-			if diff := cmp.Diff(tt.want, got); diff != "" {
-				t.Errorf("Format() mismatch (-want +got):\n%v", diff)
-			}
-		})
-		t.Run("protocmp.Message", func(t *testing.T) {
-			// This is a roundabout way to obtain a protocmp.Message since there
-			// is no exported API in protocmp to directly transform a message.
-			var m proto.Message
-			var once sync.Once
-			cmp.Equal(tt.in, tt.in, protocmp.Transform(), cmp.FilterPath(func(p cmp.Path) bool {
-				if v, _ := p.Index(1).Values(); v.IsValid() {
-					once.Do(func() { m = v.Interface().(protocmp.Message) })
-				}
-				return false
-			}, cmp.Ignore()))
-
-			got := msgfmt.Format(m)
-			if diff := cmp.Diff(tt.want, got); diff != "" {
-				t.Errorf("Format() mismatch (-want +got):\n%v", diff)
-			}
-		})
-	}
-}
diff --git a/internal/order/order.go b/internal/order/order.go
deleted file mode 100644
index 2a24953..0000000
--- a/internal/order/order.go
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package order
-
-import (
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-// FieldOrder specifies the ordering to visit message fields.
-// It is a function that reports whether x is ordered before y.
-type FieldOrder func(x, y pref.FieldDescriptor) bool
-
-var (
-	// AnyFieldOrder specifies no specific field ordering.
-	AnyFieldOrder FieldOrder = nil
-
-	// LegacyFieldOrder sorts fields in the same ordering as emitted by
-	// wire serialization in the github.com/golang/protobuf implementation.
-	LegacyFieldOrder FieldOrder = func(x, y pref.FieldDescriptor) bool {
-		ox, oy := x.ContainingOneof(), y.ContainingOneof()
-		inOneof := func(od pref.OneofDescriptor) bool {
-			return od != nil && !od.IsSynthetic()
-		}
-
-		// Extension fields sort before non-extension fields.
-		if x.IsExtension() != y.IsExtension() {
-			return x.IsExtension() && !y.IsExtension()
-		}
-		// Fields not within a oneof sort before those within a oneof.
-		if inOneof(ox) != inOneof(oy) {
-			return !inOneof(ox) && inOneof(oy)
-		}
-		// Fields in disjoint oneof sets are sorted by declaration index.
-		if ox != nil && oy != nil && ox != oy {
-			return ox.Index() < oy.Index()
-		}
-		// Fields sorted by field number.
-		return x.Number() < y.Number()
-	}
-
-	// NumberFieldOrder sorts fields by their field number.
-	NumberFieldOrder FieldOrder = func(x, y pref.FieldDescriptor) bool {
-		return x.Number() < y.Number()
-	}
-
-	// IndexNameFieldOrder sorts non-extension fields before extension fields.
-	// Non-extensions are sorted according to their declaration index.
-	// Extensions are sorted according to their full name.
-	IndexNameFieldOrder FieldOrder = func(x, y pref.FieldDescriptor) bool {
-		// Non-extension fields sort before extension fields.
-		if x.IsExtension() != y.IsExtension() {
-			return !x.IsExtension() && y.IsExtension()
-		}
-		// Extensions sorted by fullname.
-		if x.IsExtension() && y.IsExtension() {
-			return x.FullName() < y.FullName()
-		}
-		// Non-extensions sorted by declaration index.
-		return x.Index() < y.Index()
-	}
-)
-
-// KeyOrder specifies the ordering to visit map entries.
-// It is a function that reports whether x is ordered before y.
-type KeyOrder func(x, y pref.MapKey) bool
-
-var (
-	// AnyKeyOrder specifies no specific key ordering.
-	AnyKeyOrder KeyOrder = nil
-
-	// GenericKeyOrder sorts false before true, numeric keys in ascending order,
-	// and strings in lexicographical ordering according to UTF-8 codepoints.
-	GenericKeyOrder KeyOrder = func(x, y pref.MapKey) bool {
-		switch x.Interface().(type) {
-		case bool:
-			return !x.Bool() && y.Bool()
-		case int32, int64:
-			return x.Int() < y.Int()
-		case uint32, uint64:
-			return x.Uint() < y.Uint()
-		case string:
-			return x.String() < y.String()
-		default:
-			panic("invalid map key type")
-		}
-	}
-)
diff --git a/internal/order/order_test.go b/internal/order/order_test.go
deleted file mode 100644
index ecf5e18..0000000
--- a/internal/order/order_test.go
+++ /dev/null
@@ -1,175 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package order
-
-import (
-	"math/rand"
-	"sort"
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-type fieldDesc struct {
-	index      int
-	name       protoreflect.FullName
-	number     protoreflect.FieldNumber
-	extension  bool
-	oneofIndex int // non-zero means within oneof; negative means synthetic
-	pref.FieldDescriptor
-}
-
-func (d fieldDesc) Index() int               { return d.index }
-func (d fieldDesc) Name() pref.Name          { return d.name.Name() }
-func (d fieldDesc) FullName() pref.FullName  { return d.name }
-func (d fieldDesc) Number() pref.FieldNumber { return d.number }
-func (d fieldDesc) IsExtension() bool        { return d.extension }
-func (d fieldDesc) ContainingOneof() pref.OneofDescriptor {
-	switch {
-	case d.oneofIndex < 0:
-		return oneofDesc{index: -d.oneofIndex, synthetic: true}
-	case d.oneofIndex > 0:
-		return oneofDesc{index: +d.oneofIndex, synthetic: false}
-	default:
-		return nil
-	}
-}
-
-type oneofDesc struct {
-	index     int
-	synthetic bool
-	pref.OneofDescriptor
-}
-
-func (d oneofDesc) Index() int        { return d.index }
-func (d oneofDesc) IsSynthetic() bool { return d.synthetic }
-
-func TestFieldOrder(t *testing.T) {
-	tests := []struct {
-		label  string
-		order  FieldOrder
-		fields []fieldDesc
-	}{{
-		label: "LegacyFieldOrder",
-		order: LegacyFieldOrder,
-		fields: []fieldDesc{
-			// Extension fields sorted first by field number.
-			{number: 2, extension: true},
-			{number: 4, extension: true},
-			{number: 100, extension: true},
-			{number: 120, extension: true},
-
-			// Non-extension fields that are not within a oneof
-			// sorted next by field number.
-			{number: 1},
-			{number: 5, oneofIndex: -9}, // synthetic oneof
-			{number: 10},
-			{number: 11, oneofIndex: -10}, // synthetic oneof
-			{number: 12},
-
-			// Non-synthetic oneofs sorted last by index.
-			{number: 13, oneofIndex: 4},
-			{number: 3, oneofIndex: 5},
-			{number: 9, oneofIndex: 5},
-			{number: 7, oneofIndex: 8},
-		},
-	}, {
-		label: "NumberFieldOrder",
-		order: NumberFieldOrder,
-		fields: []fieldDesc{
-			{number: 1, index: 5, name: "c"},
-			{number: 2, index: 2, name: "b"},
-			{number: 3, index: 3, name: "d"},
-			{number: 5, index: 1, name: "a"},
-			{number: 7, index: 7, name: "e"},
-		},
-	}, {
-		label: "IndexNameFieldOrder",
-		order: IndexNameFieldOrder,
-		fields: []fieldDesc{
-			// Non-extension fields sorted first by index.
-			{index: 0, number: 5, name: "c"},
-			{index: 2, number: 2, name: "a"},
-			{index: 4, number: 4, name: "b"},
-			{index: 7, number: 6, name: "d"},
-
-			// Extension fields sorted last by full name.
-			{index: 3, number: 1, name: "d.a", extension: true},
-			{index: 5, number: 3, name: "e", extension: true},
-			{index: 1, number: 7, name: "g", extension: true},
-		},
-	}}
-
-	for _, tt := range tests {
-		t.Run(tt.label, func(t *testing.T) {
-			want := tt.fields
-			got := append([]fieldDesc(nil), want...)
-			for i, j := range rand.Perm(len(got)) {
-				got[i], got[j] = got[j], got[i]
-			}
-			sort.Slice(got, func(i, j int) bool {
-				return tt.order(got[i], got[j])
-			})
-			if diff := cmp.Diff(want, got,
-				cmp.Comparer(func(x, y fieldDesc) bool { return x == y }),
-			); diff != "" {
-				t.Errorf("order mismatch (-want +got):\n%s", diff)
-			}
-		})
-	}
-}
-
-func TestKeyOrder(t *testing.T) {
-	tests := []struct {
-		label string
-		order KeyOrder
-		keys  []interface{}
-	}{{
-		label: "GenericKeyOrder",
-		order: GenericKeyOrder,
-		keys:  []interface{}{false, true},
-	}, {
-		label: "GenericKeyOrder",
-		order: GenericKeyOrder,
-		keys:  []interface{}{int32(-100), int32(-99), int32(-10), int32(-9), int32(-1), int32(0), int32(+1), int32(+9), int32(+10), int32(+99), int32(+100)},
-	}, {
-		label: "GenericKeyOrder",
-		order: GenericKeyOrder,
-		keys:  []interface{}{int64(-100), int64(-99), int64(-10), int64(-9), int64(-1), int64(0), int64(+1), int64(+9), int64(+10), int64(+99), int64(+100)},
-	}, {
-		label: "GenericKeyOrder",
-		order: GenericKeyOrder,
-		keys:  []interface{}{uint32(0), uint32(1), uint32(9), uint32(10), uint32(99), uint32(100)},
-	}, {
-		label: "GenericKeyOrder",
-		order: GenericKeyOrder,
-		keys:  []interface{}{uint64(0), uint64(1), uint64(9), uint64(10), uint64(99), uint64(100)},
-	}, {
-		label: "GenericKeyOrder",
-		order: GenericKeyOrder,
-		keys:  []interface{}{"", "a", "aa", "ab", "ba", "bb", "\u0080", "\u0080\u0081", "\u0082\u0080"},
-	}}
-
-	for _, tt := range tests {
-		t.Run(tt.label, func(t *testing.T) {
-			var got, want []protoreflect.MapKey
-			for _, v := range tt.keys {
-				want = append(want, pref.ValueOf(v).MapKey())
-			}
-			got = append(got, want...)
-			for i, j := range rand.Perm(len(got)) {
-				got[i], got[j] = got[j], got[i]
-			}
-			sort.Slice(got, func(i, j int) bool {
-				return tt.order(got[i], got[j])
-			})
-			if diff := cmp.Diff(want, got, cmp.Transformer("", protoreflect.MapKey.Interface)); diff != "" {
-				t.Errorf("order mismatch (-want +got):\n%s", diff)
-			}
-		})
-	}
-}
diff --git a/internal/order/range.go b/internal/order/range.go
deleted file mode 100644
index c8090e0..0000000
--- a/internal/order/range.go
+++ /dev/null
@@ -1,115 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package order provides ordered access to messages and maps.
-package order
-
-import (
-	"sort"
-	"sync"
-
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-type messageField struct {
-	fd pref.FieldDescriptor
-	v  pref.Value
-}
-
-var messageFieldPool = sync.Pool{
-	New: func() interface{} { return new([]messageField) },
-}
-
-type (
-	// FieldRnger is an interface for visiting all fields in a message.
-	// The protoreflect.Message type implements this interface.
-	FieldRanger interface{ Range(VisitField) }
-	// VisitField is called everytime a message field is visited.
-	VisitField = func(pref.FieldDescriptor, pref.Value) bool
-)
-
-// RangeFields iterates over the fields of fs according to the specified order.
-func RangeFields(fs FieldRanger, less FieldOrder, fn VisitField) {
-	if less == nil {
-		fs.Range(fn)
-		return
-	}
-
-	// Obtain a pre-allocated scratch buffer.
-	p := messageFieldPool.Get().(*[]messageField)
-	fields := (*p)[:0]
-	defer func() {
-		if cap(fields) < 1024 {
-			*p = fields
-			messageFieldPool.Put(p)
-		}
-	}()
-
-	// Collect all fields in the message and sort them.
-	fs.Range(func(fd pref.FieldDescriptor, v pref.Value) bool {
-		fields = append(fields, messageField{fd, v})
-		return true
-	})
-	sort.Slice(fields, func(i, j int) bool {
-		return less(fields[i].fd, fields[j].fd)
-	})
-
-	// Visit the fields in the specified ordering.
-	for _, f := range fields {
-		if !fn(f.fd, f.v) {
-			return
-		}
-	}
-}
-
-type mapEntry struct {
-	k pref.MapKey
-	v pref.Value
-}
-
-var mapEntryPool = sync.Pool{
-	New: func() interface{} { return new([]mapEntry) },
-}
-
-type (
-	// EntryRanger is an interface for visiting all fields in a message.
-	// The protoreflect.Map type implements this interface.
-	EntryRanger interface{ Range(VisitEntry) }
-	// VisitEntry is called everytime a map entry is visited.
-	VisitEntry = func(pref.MapKey, pref.Value) bool
-)
-
-// RangeEntries iterates over the entries of es according to the specified order.
-func RangeEntries(es EntryRanger, less KeyOrder, fn VisitEntry) {
-	if less == nil {
-		es.Range(fn)
-		return
-	}
-
-	// Obtain a pre-allocated scratch buffer.
-	p := mapEntryPool.Get().(*[]mapEntry)
-	entries := (*p)[:0]
-	defer func() {
-		if cap(entries) < 1024 {
-			*p = entries
-			mapEntryPool.Put(p)
-		}
-	}()
-
-	// Collect all entries in the map and sort them.
-	es.Range(func(k pref.MapKey, v pref.Value) bool {
-		entries = append(entries, mapEntry{k, v})
-		return true
-	})
-	sort.Slice(entries, func(i, j int) bool {
-		return less(entries[i].k, entries[j].k)
-	})
-
-	// Visit the entries in the specified ordering.
-	for _, e := range entries {
-		if !fn(e.k, e.v) {
-			return
-		}
-	}
-}
diff --git a/internal/pragma/pragma.go b/internal/pragma/pragma.go
deleted file mode 100644
index 49dc4fc..0000000
--- a/internal/pragma/pragma.go
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package pragma provides types that can be embedded into a struct to
-// statically enforce or prevent certain language properties.
-package pragma
-
-import "sync"
-
-// NoUnkeyedLiterals can be embedded in a struct to prevent unkeyed literals.
-type NoUnkeyedLiterals struct{}
-
-// DoNotImplement can be embedded in an interface to prevent trivial
-// implementations of the interface.
-//
-// This is useful to prevent unauthorized implementations of an interface
-// so that it can be extended in the future for any protobuf language changes.
-type DoNotImplement interface{ ProtoInternal(DoNotImplement) }
-
-// DoNotCompare can be embedded in a struct to prevent comparability.
-type DoNotCompare [0]func()
-
-// DoNotCopy can be embedded in a struct to help prevent shallow copies.
-// This does not rely on a Go language feature, but rather a special case
-// within the vet checker.
-//
-// See https://golang.org/issues/8005.
-type DoNotCopy [0]sync.Mutex
diff --git a/internal/protobuild/build.go b/internal/protobuild/build.go
deleted file mode 100644
index 46ab5c5..0000000
--- a/internal/protobuild/build.go
+++ /dev/null
@@ -1,150 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package protobuild constructs messages.
-//
-// This package is used to construct multiple types of message with a similar shape
-// from a common template.
-package protobuild
-
-import (
-	"fmt"
-	"math"
-	"reflect"
-
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/reflect/protoregistry"
-)
-
-// A Value is a value assignable to a field.
-// A Value may be a value accepted by protoreflect.ValueOf. In addition:
-//
-// • An int may be assigned to any numeric field.
-//
-// • A float64 may be assigned to a double field.
-//
-// • Either a string or []byte may be assigned to a string or bytes field.
-//
-// • A string containing the value name may be assigned to an enum field.
-//
-// • A slice may be assigned to a list, and a map may be assigned to a map.
-type Value interface{}
-
-// A Message is a template to apply to a message. Keys are field names, including
-// extension names.
-type Message map[pref.Name]Value
-
-// Unknown is a key associated with the unknown fields of a message.
-// The value should be a []byte.
-const Unknown = "@unknown"
-
-// Build applies the template to a message.
-func (template Message) Build(m pref.Message) {
-	md := m.Descriptor()
-	fields := md.Fields()
-	exts := make(map[pref.Name]pref.FieldDescriptor)
-	protoregistry.GlobalTypes.RangeExtensionsByMessage(md.FullName(), func(xt pref.ExtensionType) bool {
-		xd := xt.TypeDescriptor()
-		exts[xd.Name()] = xd
-		return true
-	})
-	for k, v := range template {
-		if k == Unknown {
-			m.SetUnknown(pref.RawFields(v.([]byte)))
-			continue
-		}
-		fd := fields.ByName(k)
-		if fd == nil {
-			fd = exts[k]
-		}
-		if fd == nil {
-			panic(fmt.Sprintf("%v.%v: not found", md.FullName(), k))
-		}
-		switch {
-		case fd.IsList():
-			list := m.Mutable(fd).List()
-			s := reflect.ValueOf(v)
-			for i := 0; i < s.Len(); i++ {
-				if fd.Message() == nil {
-					list.Append(fieldValue(fd, s.Index(i).Interface()))
-				} else {
-					e := list.NewElement()
-					s.Index(i).Interface().(Message).Build(e.Message())
-					list.Append(e)
-				}
-			}
-		case fd.IsMap():
-			mapv := m.Mutable(fd).Map()
-			rm := reflect.ValueOf(v)
-			for _, k := range rm.MapKeys() {
-				mk := fieldValue(fd.MapKey(), k.Interface()).MapKey()
-				if fd.MapValue().Message() == nil {
-					mv := fieldValue(fd.MapValue(), rm.MapIndex(k).Interface())
-					mapv.Set(mk, mv)
-				} else if mapv.Has(mk) {
-					mv := mapv.Get(mk).Message()
-					rm.MapIndex(k).Interface().(Message).Build(mv)
-				} else {
-					mv := mapv.NewValue()
-					rm.MapIndex(k).Interface().(Message).Build(mv.Message())
-					mapv.Set(mk, mv)
-				}
-			}
-		default:
-			if fd.Message() == nil {
-				m.Set(fd, fieldValue(fd, v))
-			} else {
-				v.(Message).Build(m.Mutable(fd).Message())
-			}
-		}
-	}
-}
-
-func fieldValue(fd pref.FieldDescriptor, v interface{}) pref.Value {
-	switch o := v.(type) {
-	case int:
-		switch fd.Kind() {
-		case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
-			if o < math.MinInt32 || math.MaxInt32 < o {
-				panic(fmt.Sprintf("%v: value %v out of range [%v, %v]", fd.FullName(), o, int32(math.MinInt32), int32(math.MaxInt32)))
-			}
-			v = int32(o)
-		case pref.Uint32Kind, pref.Fixed32Kind:
-			if o < 0 || math.MaxUint32 < 0 {
-				panic(fmt.Sprintf("%v: value %v out of range [%v, %v]", fd.FullName(), o, uint32(0), uint32(math.MaxUint32)))
-			}
-			v = uint32(o)
-		case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
-			v = int64(o)
-		case pref.Uint64Kind, pref.Fixed64Kind:
-			if o < 0 {
-				panic(fmt.Sprintf("%v: value %v out of range [%v, %v]", fd.FullName(), o, uint64(0), uint64(math.MaxUint64)))
-			}
-			v = uint64(o)
-		case pref.FloatKind:
-			v = float32(o)
-		case pref.DoubleKind:
-			v = float64(o)
-		case pref.EnumKind:
-			v = pref.EnumNumber(o)
-		default:
-			panic(fmt.Sprintf("%v: invalid value type int", fd.FullName()))
-		}
-	case float64:
-		switch fd.Kind() {
-		case pref.FloatKind:
-			v = float32(o)
-		}
-	case string:
-		switch fd.Kind() {
-		case pref.BytesKind:
-			v = []byte(o)
-		case pref.EnumKind:
-			v = fd.Enum().Values().ByName(pref.Name(o)).Number()
-		}
-	case []byte:
-		return pref.ValueOf(append([]byte{}, o...))
-	}
-	return pref.ValueOf(v)
-}
diff --git a/internal/protolegacy/proto.go b/internal/protolegacy/proto.go
deleted file mode 100644
index 96b44d9..0000000
--- a/internal/protolegacy/proto.go
+++ /dev/null
@@ -1,125 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package protolegacy is a stub version of the v1 proto package
-// to satisfy internal/testprotos/legacy dependencies.
-package protolegacy
-
-import (
-	"bytes"
-	"compress/gzip"
-	"errors"
-	"fmt"
-	"io/ioutil"
-
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/reflect/protoregistry"
-	"google.golang.org/protobuf/runtime/protoiface"
-	"google.golang.org/protobuf/runtime/protoimpl"
-)
-
-const (
-	ProtoPackageIsVersion1 = true
-	ProtoPackageIsVersion2 = true
-	ProtoPackageIsVersion3 = true
-)
-
-const (
-	WireVarint     = 0
-	WireFixed32    = 5
-	WireFixed64    = 1
-	WireBytes      = 2
-	WireStartGroup = 3
-	WireEndGroup   = 4
-)
-
-type (
-	Message                = protoiface.MessageV1
-	ExtensionRange         = protoiface.ExtensionRangeV1
-	ExtensionDesc          = protoimpl.ExtensionInfo
-	Extension              = protoimpl.ExtensionFieldV1
-	XXX_InternalExtensions = protoimpl.ExtensionFields
-)
-
-func RegisterFile(s string, d []byte) {
-	// Decompress the descriptor.
-	zr, err := gzip.NewReader(bytes.NewReader(d))
-	if err != nil {
-		panic(fmt.Sprintf("proto: invalid compressed file descriptor: %v", err))
-	}
-	b, err := ioutil.ReadAll(zr)
-	if err != nil {
-		panic(fmt.Sprintf("proto: invalid compressed file descriptor: %v", err))
-	}
-
-	// Construct a protoreflect.FileDescriptor from the raw descriptor.
-	// Note that DescBuilder.Build automatically registers the constructed
-	// file descriptor with the v2 registry.
-	protoimpl.DescBuilder{RawDescriptor: b}.Build()
-}
-
-func RegisterType(m Message, s string) {
-	mt := protoimpl.X.LegacyMessageTypeOf(m, protoreflect.FullName(s))
-	if err := protoregistry.GlobalTypes.RegisterMessage(mt); err != nil {
-		panic(err)
-	}
-}
-
-func RegisterMapType(interface{}, string) {
-	// Do nothing.
-}
-
-func RegisterEnum(string, map[int32]string, map[string]int32) {
-	// Do nothing.
-}
-
-func RegisterExtension(d *ExtensionDesc) {
-	if err := protoregistry.GlobalTypes.RegisterExtension(d); err != nil {
-		panic(err)
-	}
-}
-
-var ErrInternalBadWireType = errors.New("not implemented")
-
-func Size(Message) int                { panic("not implemented") }
-func Marshal(Message) ([]byte, error) { panic("not implemented") }
-func Unmarshal([]byte, Message) error { panic("not implemented") }
-
-func SizeVarint(uint64) int             { panic("not implemented") }
-func EncodeVarint(uint64) []byte        { panic("not implemented") }
-func DecodeVarint([]byte) (uint64, int) { panic("not implemented") }
-
-func CompactTextString(Message) string                                  { panic("not implemented") }
-func EnumName(map[int32]string, int32) string                           { panic("not implemented") }
-func UnmarshalJSONEnum(map[string]int32, []byte, string) (int32, error) { panic("not implemented") }
-
-type Buffer struct{}
-
-func (*Buffer) DecodeFixed32() (uint64, error)      { panic("not implemented") }
-func (*Buffer) DecodeFixed64() (uint64, error)      { panic("not implemented") }
-func (*Buffer) DecodeGroup(Message) error           { panic("not implemented") }
-func (*Buffer) DecodeMessage(Message) error         { panic("not implemented") }
-func (*Buffer) DecodeRawBytes(bool) ([]byte, error) { panic("not implemented") }
-func (*Buffer) DecodeStringBytes() (string, error)  { panic("not implemented") }
-func (*Buffer) DecodeVarint() (uint64, error)       { panic("not implemented") }
-func (*Buffer) DecodeZigzag32() (uint64, error)     { panic("not implemented") }
-func (*Buffer) DecodeZigzag64() (uint64, error)     { panic("not implemented") }
-func (*Buffer) EncodeFixed32(uint64) error          { panic("not implemented") }
-func (*Buffer) EncodeFixed64(uint64) error          { panic("not implemented") }
-func (*Buffer) EncodeMessage(Message) error         { panic("not implemented") }
-func (*Buffer) EncodeRawBytes([]byte) error         { panic("not implemented") }
-func (*Buffer) EncodeStringBytes(string) error      { panic("not implemented") }
-func (*Buffer) EncodeVarint(uint64) error           { panic("not implemented") }
-func (*Buffer) EncodeZigzag32(uint64) error         { panic("not implemented") }
-func (*Buffer) EncodeZigzag64(uint64) error         { panic("not implemented") }
-func (*Buffer) Marshal(Message) error               { panic("not implemented") }
-func (*Buffer) Unmarshal(Message) error             { panic("not implemented") }
-
-type InternalMessageInfo struct{}
-
-func (*InternalMessageInfo) DiscardUnknown(Message)                        { panic("not implemented") }
-func (*InternalMessageInfo) Marshal([]byte, Message, bool) ([]byte, error) { panic("not implemented") }
-func (*InternalMessageInfo) Merge(Message, Message)                        { panic("not implemented") }
-func (*InternalMessageInfo) Size(Message) int                              { panic("not implemented") }
-func (*InternalMessageInfo) Unmarshal(Message, []byte) error               { panic("not implemented") }
diff --git a/internal/set/ints.go b/internal/set/ints.go
deleted file mode 100644
index d3d7f89..0000000
--- a/internal/set/ints.go
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package set provides simple set data structures for uint64s.
-package set
-
-import "math/bits"
-
-// int64s represents a set of integers within the range of 0..63.
-type int64s uint64
-
-func (bs *int64s) Len() int {
-	return bits.OnesCount64(uint64(*bs))
-}
-func (bs *int64s) Has(n uint64) bool {
-	return uint64(*bs)&(uint64(1)<<n) > 0
-}
-func (bs *int64s) Set(n uint64) {
-	*(*uint64)(bs) |= uint64(1) << n
-}
-func (bs *int64s) Clear(n uint64) {
-	*(*uint64)(bs) &^= uint64(1) << n
-}
-
-// Ints represents a set of integers within the range of 0..math.MaxUint64.
-type Ints struct {
-	lo int64s
-	hi map[uint64]struct{}
-}
-
-func (bs *Ints) Len() int {
-	return bs.lo.Len() + len(bs.hi)
-}
-func (bs *Ints) Has(n uint64) bool {
-	if n < 64 {
-		return bs.lo.Has(n)
-	}
-	_, ok := bs.hi[n]
-	return ok
-}
-func (bs *Ints) Set(n uint64) {
-	if n < 64 {
-		bs.lo.Set(n)
-		return
-	}
-	if bs.hi == nil {
-		bs.hi = make(map[uint64]struct{})
-	}
-	bs.hi[n] = struct{}{}
-}
-func (bs *Ints) Clear(n uint64) {
-	if n < 64 {
-		bs.lo.Clear(n)
-		return
-	}
-	delete(bs.hi, n)
-}
diff --git a/internal/set/ints_test.go b/internal/set/ints_test.go
deleted file mode 100644
index 9dac18b..0000000
--- a/internal/set/ints_test.go
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package set
-
-import (
-	"math/rand"
-	"testing"
-)
-
-const maxLimit = 1024
-
-var toSet, toClear [maxLimit]bool
-
-func init() {
-	r := rand.New(rand.NewSource(0))
-	for i := 0; i < maxLimit; i++ {
-		toSet[i] = r.Intn(2) == 0
-		toClear[i] = r.Intn(2) == 0
-	}
-}
-
-func TestInts(t *testing.T) {
-	ns := new(Ints)
-
-	// Check that set starts empty.
-	wantLen := 0
-	if ns.Len() != wantLen {
-		t.Errorf("init: Len() = %d, want %d", ns.Len(), wantLen)
-	}
-	for i := 0; i < maxLimit; i++ {
-		if ns.Has(uint64(i)) {
-			t.Errorf("init: Has(%d) = true, want false", i)
-		}
-	}
-
-	// Set some numbers.
-	for i, b := range toSet[:maxLimit] {
-		if b {
-			ns.Set(uint64(i))
-			wantLen++
-		}
-	}
-
-	// Check that integers were set.
-	if ns.Len() != wantLen {
-		t.Errorf("after Set: Len() = %d, want %d", ns.Len(), wantLen)
-	}
-	for i := 0; i < maxLimit; i++ {
-		if got := ns.Has(uint64(i)); got != toSet[i] {
-			t.Errorf("after Set: Has(%d) = %v, want %v", i, got, !got)
-		}
-	}
-
-	// Clear some numbers.
-	for i, b := range toClear[:maxLimit] {
-		if b {
-			ns.Clear(uint64(i))
-			if toSet[i] {
-				wantLen--
-			}
-		}
-	}
-
-	// Check that integers were cleared.
-	if ns.Len() != wantLen {
-		t.Errorf("after Clear: Len() = %d, want %d", ns.Len(), wantLen)
-	}
-	for i := 0; i < maxLimit; i++ {
-		if got := ns.Has(uint64(i)); got != toSet[i] && !toClear[i] {
-			t.Errorf("after Clear: Has(%d) = %v, want %v", i, got, !got)
-		}
-	}
-}
diff --git a/internal/strs/strings.go b/internal/strs/strings.go
deleted file mode 100644
index 0b74e76..0000000
--- a/internal/strs/strings.go
+++ /dev/null
@@ -1,196 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package strs provides string manipulation functionality specific to protobuf.
-package strs
-
-import (
-	"go/token"
-	"strings"
-	"unicode"
-	"unicode/utf8"
-
-	"google.golang.org/protobuf/internal/flags"
-	"google.golang.org/protobuf/reflect/protoreflect"
-)
-
-// EnforceUTF8 reports whether to enforce strict UTF-8 validation.
-func EnforceUTF8(fd protoreflect.FieldDescriptor) bool {
-	if flags.ProtoLegacy {
-		if fd, ok := fd.(interface{ EnforceUTF8() bool }); ok {
-			return fd.EnforceUTF8()
-		}
-	}
-	return fd.Syntax() == protoreflect.Proto3
-}
-
-// GoCamelCase camel-cases a protobuf name for use as a Go identifier.
-//
-// If there is an interior underscore followed by a lower case letter,
-// drop the underscore and convert the letter to upper case.
-func GoCamelCase(s string) string {
-	// Invariant: if the next letter is lower case, it must be converted
-	// to upper case.
-	// That is, we process a word at a time, where words are marked by _ or
-	// upper case letter. Digits are treated as words.
-	var b []byte
-	for i := 0; i < len(s); i++ {
-		c := s[i]
-		switch {
-		case c == '.' && i+1 < len(s) && isASCIILower(s[i+1]):
-			// Skip over '.' in ".{{lowercase}}".
-		case c == '.':
-			b = append(b, '_') // convert '.' to '_'
-		case c == '_' && (i == 0 || s[i-1] == '.'):
-			// Convert initial '_' to ensure we start with a capital letter.
-			// Do the same for '_' after '.' to match historic behavior.
-			b = append(b, 'X') // convert '_' to 'X'
-		case c == '_' && i+1 < len(s) && isASCIILower(s[i+1]):
-			// Skip over '_' in "_{{lowercase}}".
-		case isASCIIDigit(c):
-			b = append(b, c)
-		default:
-			// Assume we have a letter now - if not, it's a bogus identifier.
-			// The next word is a sequence of characters that must start upper case.
-			if isASCIILower(c) {
-				c -= 'a' - 'A' // convert lowercase to uppercase
-			}
-			b = append(b, c)
-
-			// Accept lower case sequence that follows.
-			for ; i+1 < len(s) && isASCIILower(s[i+1]); i++ {
-				b = append(b, s[i+1])
-			}
-		}
-	}
-	return string(b)
-}
-
-// GoSanitized converts a string to a valid Go identifier.
-func GoSanitized(s string) string {
-	// Sanitize the input to the set of valid characters,
-	// which must be '_' or be in the Unicode L or N categories.
-	s = strings.Map(func(r rune) rune {
-		if unicode.IsLetter(r) || unicode.IsDigit(r) {
-			return r
-		}
-		return '_'
-	}, s)
-
-	// Prepend '_' in the event of a Go keyword conflict or if
-	// the identifier is invalid (does not start in the Unicode L category).
-	r, _ := utf8.DecodeRuneInString(s)
-	if token.Lookup(s).IsKeyword() || !unicode.IsLetter(r) {
-		return "_" + s
-	}
-	return s
-}
-
-// JSONCamelCase converts a snake_case identifier to a camelCase identifier,
-// according to the protobuf JSON specification.
-func JSONCamelCase(s string) string {
-	var b []byte
-	var wasUnderscore bool
-	for i := 0; i < len(s); i++ { // proto identifiers are always ASCII
-		c := s[i]
-		if c != '_' {
-			if wasUnderscore && isASCIILower(c) {
-				c -= 'a' - 'A' // convert to uppercase
-			}
-			b = append(b, c)
-		}
-		wasUnderscore = c == '_'
-	}
-	return string(b)
-}
-
-// JSONSnakeCase converts a camelCase identifier to a snake_case identifier,
-// according to the protobuf JSON specification.
-func JSONSnakeCase(s string) string {
-	var b []byte
-	for i := 0; i < len(s); i++ { // proto identifiers are always ASCII
-		c := s[i]
-		if isASCIIUpper(c) {
-			b = append(b, '_')
-			c += 'a' - 'A' // convert to lowercase
-		}
-		b = append(b, c)
-	}
-	return string(b)
-}
-
-// MapEntryName derives the name of the map entry message given the field name.
-// See protoc v3.8.0: src/google/protobuf/descriptor.cc:254-276,6057
-func MapEntryName(s string) string {
-	var b []byte
-	upperNext := true
-	for _, c := range s {
-		switch {
-		case c == '_':
-			upperNext = true
-		case upperNext:
-			b = append(b, byte(unicode.ToUpper(c)))
-			upperNext = false
-		default:
-			b = append(b, byte(c))
-		}
-	}
-	b = append(b, "Entry"...)
-	return string(b)
-}
-
-// EnumValueName derives the camel-cased enum value name.
-// See protoc v3.8.0: src/google/protobuf/descriptor.cc:297-313
-func EnumValueName(s string) string {
-	var b []byte
-	upperNext := true
-	for _, c := range s {
-		switch {
-		case c == '_':
-			upperNext = true
-		case upperNext:
-			b = append(b, byte(unicode.ToUpper(c)))
-			upperNext = false
-		default:
-			b = append(b, byte(unicode.ToLower(c)))
-			upperNext = false
-		}
-	}
-	return string(b)
-}
-
-// TrimEnumPrefix trims the enum name prefix from an enum value name,
-// where the prefix is all lowercase without underscores.
-// See protoc v3.8.0: src/google/protobuf/descriptor.cc:330-375
-func TrimEnumPrefix(s, prefix string) string {
-	s0 := s // original input
-	for len(s) > 0 && len(prefix) > 0 {
-		if s[0] == '_' {
-			s = s[1:]
-			continue
-		}
-		if unicode.ToLower(rune(s[0])) != rune(prefix[0]) {
-			return s0 // no prefix match
-		}
-		s, prefix = s[1:], prefix[1:]
-	}
-	if len(prefix) > 0 {
-		return s0 // no prefix match
-	}
-	s = strings.TrimLeft(s, "_")
-	if len(s) == 0 {
-		return s0 // avoid returning empty string
-	}
-	return s
-}
-
-func isASCIILower(c byte) bool {
-	return 'a' <= c && c <= 'z'
-}
-func isASCIIUpper(c byte) bool {
-	return 'A' <= c && c <= 'Z'
-}
-func isASCIIDigit(c byte) bool {
-	return '0' <= c && c <= '9'
-}
diff --git a/internal/strs/strings_pure.go b/internal/strs/strings_pure.go
deleted file mode 100644
index a1f6f33..0000000
--- a/internal/strs/strings_pure.go
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:build purego || appengine
-// +build purego appengine
-
-package strs
-
-import pref "google.golang.org/protobuf/reflect/protoreflect"
-
-func UnsafeString(b []byte) string {
-	return string(b)
-}
-
-func UnsafeBytes(s string) []byte {
-	return []byte(s)
-}
-
-type Builder struct{}
-
-func (*Builder) AppendFullName(prefix pref.FullName, name pref.Name) pref.FullName {
-	return prefix.Append(name)
-}
-
-func (*Builder) MakeString(b []byte) string {
-	return string(b)
-}
diff --git a/internal/strs/strings_test.go b/internal/strs/strings_test.go
deleted file mode 100644
index 0bb894a..0000000
--- a/internal/strs/strings_test.go
+++ /dev/null
@@ -1,163 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package strs
-
-import (
-	"strconv"
-	"testing"
-)
-
-func TestGoCamelCase(t *testing.T) {
-	tests := []struct {
-		in, want string
-	}{
-		{"", ""},
-		{"one", "One"},
-		{"one_two", "OneTwo"},
-		{"_my_field_name_2", "XMyFieldName_2"},
-		{"Something_Capped", "Something_Capped"},
-		{"my_Name", "My_Name"},
-		{"OneTwo", "OneTwo"},
-		{"_", "X"},
-		{"_a_", "XA_"},
-		{"one.two", "OneTwo"},
-		{"one.Two", "One_Two"},
-		{"one_two.three_four", "OneTwoThreeFour"},
-		{"one_two.Three_four", "OneTwo_ThreeFour"},
-		{"_one._two", "XOne_XTwo"},
-		{"SCREAMING_SNAKE_CASE", "SCREAMING_SNAKE_CASE"},
-		{"double__underscore", "Double_Underscore"},
-		{"camelCase", "CamelCase"},
-		{"go2proto", "Go2Proto"},
-		{"世界", "世界"},
-		{"x世界", "X世界"},
-		{"foo_bar世界", "FooBar世界"},
-	}
-	for _, tc := range tests {
-		if got := GoCamelCase(tc.in); got != tc.want {
-			t.Errorf("GoCamelCase(%q) = %q, want %q", tc.in, got, tc.want)
-		}
-	}
-}
-
-func TestGoSanitized(t *testing.T) {
-	tests := []struct {
-		in, want string
-	}{
-		{"", "_"},
-		{"boo", "boo"},
-		{"Boo", "Boo"},
-		{"ßoo", "ßoo"},
-		{"default", "_default"},
-		{"hello", "hello"},
-		{"hello-world!!", "hello_world__"},
-		{"hello-\xde\xad\xbe\xef\x00", "hello_____"},
-		{"hello 世界", "hello_世界"},
-		{"世界", "世界"},
-	}
-	for _, tc := range tests {
-		if got := GoSanitized(tc.in); got != tc.want {
-			t.Errorf("GoSanitized(%q) = %q, want %q", tc.in, got, tc.want)
-		}
-	}
-}
-
-func TestName(t *testing.T) {
-	tests := []struct {
-		in                string
-		inEnumPrefix      string
-		wantMapEntry      string
-		wantEnumValue     string
-		wantTrimValue     string
-		wantJSONCamelCase string
-		wantJSONSnakeCase string
-	}{{
-		in:                "abc",
-		inEnumPrefix:      "",
-		wantMapEntry:      "AbcEntry",
-		wantEnumValue:     "Abc",
-		wantTrimValue:     "abc",
-		wantJSONCamelCase: "abc",
-		wantJSONSnakeCase: "abc",
-	}, {
-		in:                "foo_baR_",
-		inEnumPrefix:      "foo_bar",
-		wantMapEntry:      "FooBaREntry",
-		wantEnumValue:     "FooBar",
-		wantTrimValue:     "foo_baR_",
-		wantJSONCamelCase: "fooBaR",
-		wantJSONSnakeCase: "foo_ba_r_",
-	}, {
-		in:                "snake_caseCamelCase",
-		inEnumPrefix:      "snakecasecamel",
-		wantMapEntry:      "SnakeCaseCamelCaseEntry",
-		wantEnumValue:     "SnakeCasecamelcase",
-		wantTrimValue:     "Case",
-		wantJSONCamelCase: "snakeCaseCamelCase",
-		wantJSONSnakeCase: "snake_case_camel_case",
-	}, {
-		in:                "FiZz_BuZz",
-		inEnumPrefix:      "fizz",
-		wantMapEntry:      "FiZzBuZzEntry",
-		wantEnumValue:     "FizzBuzz",
-		wantTrimValue:     "BuZz",
-		wantJSONCamelCase: "FiZzBuZz",
-		wantJSONSnakeCase: "_fi_zz__bu_zz",
-	}}
-
-	for _, tt := range tests {
-		if got := MapEntryName(tt.in); got != tt.wantMapEntry {
-			t.Errorf("MapEntryName(%q) = %q, want %q", tt.in, got, tt.wantMapEntry)
-		}
-		if got := EnumValueName(tt.in); got != tt.wantEnumValue {
-			t.Errorf("EnumValueName(%q) = %q, want %q", tt.in, got, tt.wantEnumValue)
-		}
-		if got := TrimEnumPrefix(tt.in, tt.inEnumPrefix); got != tt.wantTrimValue {
-			t.Errorf("ErimEnumPrefix(%q, %q) = %q, want %q", tt.in, tt.inEnumPrefix, got, tt.wantTrimValue)
-		}
-		if got := JSONCamelCase(tt.in); got != tt.wantJSONCamelCase {
-			t.Errorf("JSONCamelCase(%q) = %q, want %q", tt.in, got, tt.wantJSONCamelCase)
-		}
-		if got := JSONSnakeCase(tt.in); got != tt.wantJSONSnakeCase {
-			t.Errorf("JSONSnakeCase(%q) = %q, want %q", tt.in, got, tt.wantJSONSnakeCase)
-		}
-	}
-}
-
-var (
-	srcString = "1234"
-	srcBytes  = []byte(srcString)
-	dst       uint64
-)
-
-func BenchmarkCast(b *testing.B) {
-	b.Run("Ideal", func(b *testing.B) {
-		b.ReportAllocs()
-		for i := 0; i < b.N; i++ {
-			dst, _ = strconv.ParseUint(srcString, 0, 64)
-		}
-		if dst != 1234 {
-			b.Errorf("got %d, want %s", dst, srcString)
-		}
-	})
-	b.Run("Copy", func(b *testing.B) {
-		b.ReportAllocs()
-		for i := 0; i < b.N; i++ {
-			dst, _ = strconv.ParseUint(string(srcBytes), 0, 64)
-		}
-		if dst != 1234 {
-			b.Errorf("got %d, want %s", dst, srcString)
-		}
-	})
-	b.Run("Cast", func(b *testing.B) {
-		b.ReportAllocs()
-		for i := 0; i < b.N; i++ {
-			dst, _ = strconv.ParseUint(UnsafeString(srcBytes), 0, 64)
-		}
-		if dst != 1234 {
-			b.Errorf("got %d, want %s", dst, srcString)
-		}
-	})
-}
diff --git a/internal/strs/strings_unsafe.go b/internal/strs/strings_unsafe.go
deleted file mode 100644
index 56a8a4e..0000000
--- a/internal/strs/strings_unsafe.go
+++ /dev/null
@@ -1,95 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:build !purego && !appengine
-// +build !purego,!appengine
-
-package strs
-
-import (
-	"unsafe"
-
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-type (
-	stringHeader struct {
-		Data unsafe.Pointer
-		Len  int
-	}
-	sliceHeader struct {
-		Data unsafe.Pointer
-		Len  int
-		Cap  int
-	}
-)
-
-// UnsafeString returns an unsafe string reference of b.
-// The caller must treat the input slice as immutable.
-//
-// WARNING: Use carefully. The returned result must not leak to the end user
-// unless the input slice is provably immutable.
-func UnsafeString(b []byte) (s string) {
-	src := (*sliceHeader)(unsafe.Pointer(&b))
-	dst := (*stringHeader)(unsafe.Pointer(&s))
-	dst.Data = src.Data
-	dst.Len = src.Len
-	return s
-}
-
-// UnsafeBytes returns an unsafe bytes slice reference of s.
-// The caller must treat returned slice as immutable.
-//
-// WARNING: Use carefully. The returned result must not leak to the end user.
-func UnsafeBytes(s string) (b []byte) {
-	src := (*stringHeader)(unsafe.Pointer(&s))
-	dst := (*sliceHeader)(unsafe.Pointer(&b))
-	dst.Data = src.Data
-	dst.Len = src.Len
-	dst.Cap = src.Len
-	return b
-}
-
-// Builder builds a set of strings with shared lifetime.
-// This differs from strings.Builder, which is for building a single string.
-type Builder struct {
-	buf []byte
-}
-
-// AppendFullName is equivalent to protoreflect.FullName.Append,
-// but optimized for large batches where each name has a shared lifetime.
-func (sb *Builder) AppendFullName(prefix pref.FullName, name pref.Name) pref.FullName {
-	n := len(prefix) + len(".") + len(name)
-	if len(prefix) == 0 {
-		n -= len(".")
-	}
-	sb.grow(n)
-	sb.buf = append(sb.buf, prefix...)
-	sb.buf = append(sb.buf, '.')
-	sb.buf = append(sb.buf, name...)
-	return pref.FullName(sb.last(n))
-}
-
-// MakeString is equivalent to string(b), but optimized for large batches
-// with a shared lifetime.
-func (sb *Builder) MakeString(b []byte) string {
-	sb.grow(len(b))
-	sb.buf = append(sb.buf, b...)
-	return sb.last(len(b))
-}
-
-func (sb *Builder) grow(n int) {
-	if cap(sb.buf)-len(sb.buf) >= n {
-		return
-	}
-
-	// Unlike strings.Builder, we do not need to copy over the contents
-	// of the old buffer since our builder provides no API for
-	// retrieving previously created strings.
-	sb.buf = make([]byte, 2*(cap(sb.buf)+n))
-}
-
-func (sb *Builder) last(n int) string {
-	return UnsafeString(sb.buf[len(sb.buf)-n:])
-}
diff --git a/internal/testprotos/annotation/annotation.pb.go b/internal/testprotos/annotation/annotation.pb.go
deleted file mode 100644
index f09bc41..0000000
--- a/internal/testprotos/annotation/annotation.pb.go
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/annotation/annotation.proto
-
-package annotation
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	descriptorpb "google.golang.org/protobuf/types/descriptorpb"
-	reflect "reflect"
-)
-
-var file_internal_testprotos_annotation_annotation_proto_extTypes = []protoimpl.ExtensionInfo{
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*bool)(nil),
-		Field:         37383685,
-		Name:          "go_annotation.track_field_use",
-		Tag:           "varint,37383685,opt,name=track_field_use",
-		Filename:      "internal/testprotos/annotation/annotation.proto",
-	},
-}
-
-// Extension fields to descriptorpb.MessageOptions.
-var (
-	// Setting this on a message enables tracking of which fields in the message
-	// a specific binary might access. As a consequence, it also disables the use
-	// of the message accessor methods to satisfy interfaces: they can only be
-	// called directly.
-	//
-	// optional bool track_field_use = 37383685;
-	E_TrackFieldUse = &file_internal_testprotos_annotation_annotation_proto_extTypes[0]
-)
-
-var File_internal_testprotos_annotation_annotation_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_annotation_annotation_proto_rawDesc = []byte{
-	0x0a, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x12, 0x0d, 0x67, 0x6f, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x3a, 0x4a, 0x0a, 0x0f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x5f, 0x75, 0x73, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x85, 0xdc, 0xe9, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x0d, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x55, 0x73, 0x65, 0x42, 0x3b,
-	0x5a, 0x39, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
-	0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74,
-	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
-	0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-}
-
-var file_internal_testprotos_annotation_annotation_proto_goTypes = []interface{}{
-	(*descriptorpb.MessageOptions)(nil), // 0: google.protobuf.MessageOptions
-}
-var file_internal_testprotos_annotation_annotation_proto_depIdxs = []int32{
-	0, // 0: go_annotation.track_field_use:extendee -> google.protobuf.MessageOptions
-	1, // [1:1] is the sub-list for method output_type
-	1, // [1:1] is the sub-list for method input_type
-	1, // [1:1] is the sub-list for extension type_name
-	0, // [0:1] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_annotation_annotation_proto_init() }
-func file_internal_testprotos_annotation_annotation_proto_init() {
-	if File_internal_testprotos_annotation_annotation_proto != nil {
-		return
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_annotation_annotation_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   0,
-			NumExtensions: 1,
-			NumServices:   0,
-		},
-		GoTypes:           file_internal_testprotos_annotation_annotation_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_annotation_annotation_proto_depIdxs,
-		ExtensionInfos:    file_internal_testprotos_annotation_annotation_proto_extTypes,
-	}.Build()
-	File_internal_testprotos_annotation_annotation_proto = out.File
-	file_internal_testprotos_annotation_annotation_proto_rawDesc = nil
-	file_internal_testprotos_annotation_annotation_proto_goTypes = nil
-	file_internal_testprotos_annotation_annotation_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/annotation/annotation.proto b/internal/testprotos/annotation/annotation.proto
deleted file mode 100644
index 421631e..0000000
--- a/internal/testprotos/annotation/annotation.proto
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package go_annotation;
-
-import "google/protobuf/descriptor.proto";
-
-option go_package = "google.golang.org/protobuf/internal/testprotos/annotation";
-
-extend google.protobuf.MessageOptions {
-  // Setting this on a message enables tracking of which fields in the message
-  // a specific binary might access. As a consequence, it also disables the use
-  // of the message accessor methods to satisfy interfaces: they can only be
-  // called directly.
-  optional bool track_field_use = 37383685;
-}
diff --git a/internal/testprotos/benchmarks/benchmarks.pb.go b/internal/testprotos/benchmarks/benchmarks.pb.go
deleted file mode 100644
index c3a987f..0000000
--- a/internal/testprotos/benchmarks/benchmarks.pb.go
+++ /dev/null
@@ -1,205 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: benchmarks.proto
-
-package benchmarks
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type BenchmarkDataset struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Name of the benchmark dataset.  This should be unique across all datasets.
-	// Should only contain word characters: [a-zA-Z0-9_]
-	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	// Fully-qualified name of the protobuf message for this dataset.
-	// It will be one of the messages defined benchmark_messages_proto2.proto
-	// or benchmark_messages_proto3.proto.
-	//
-	// Implementations that do not support reflection can implement this with
-	// an explicit "if/else" chain that lists every known message defined
-	// in those files.
-	MessageName string `protobuf:"bytes,2,opt,name=message_name,json=messageName,proto3" json:"message_name,omitempty"`
-	// The payload(s) for this dataset.  They should be parsed or serialized
-	// in sequence, in a loop, ie.
-	//
-	//  while (!benchmarkDone) {  // Benchmark runner decides when to exit.
-	//    for (i = 0; i < benchmark.payload.length; i++) {
-	//      parse(benchmark.payload[i])
-	//    }
-	//  }
-	//
-	// This is intended to let datasets include a variety of data to provide
-	// potentially more realistic results than just parsing the same message
-	// over and over.  A single message parsed repeatedly could yield unusually
-	// good branch prediction performance.
-	Payload [][]byte `protobuf:"bytes,3,rep,name=payload,proto3" json:"payload,omitempty"`
-}
-
-func (x *BenchmarkDataset) Reset() {
-	*x = BenchmarkDataset{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_benchmarks_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *BenchmarkDataset) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*BenchmarkDataset) ProtoMessage() {}
-
-func (x *BenchmarkDataset) ProtoReflect() protoreflect.Message {
-	mi := &file_benchmarks_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use BenchmarkDataset.ProtoReflect.Descriptor instead.
-func (*BenchmarkDataset) Descriptor() ([]byte, []int) {
-	return file_benchmarks_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *BenchmarkDataset) GetName() string {
-	if x != nil {
-		return x.Name
-	}
-	return ""
-}
-
-func (x *BenchmarkDataset) GetMessageName() string {
-	if x != nil {
-		return x.MessageName
-	}
-	return ""
-}
-
-func (x *BenchmarkDataset) GetPayload() [][]byte {
-	if x != nil {
-		return x.Payload
-	}
-	return nil
-}
-
-var File_benchmarks_proto protoreflect.FileDescriptor
-
-var file_benchmarks_proto_rawDesc = []byte{
-	0x0a, 0x10, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x12, 0x0a, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x22, 0x63,
-	0x0a, 0x10, 0x42, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x73,
-	0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x79,
-	0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c,
-	0x6f, 0x61, 0x64, 0x42, 0x20, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_benchmarks_proto_rawDescOnce sync.Once
-	file_benchmarks_proto_rawDescData = file_benchmarks_proto_rawDesc
-)
-
-func file_benchmarks_proto_rawDescGZIP() []byte {
-	file_benchmarks_proto_rawDescOnce.Do(func() {
-		file_benchmarks_proto_rawDescData = protoimpl.X.CompressGZIP(file_benchmarks_proto_rawDescData)
-	})
-	return file_benchmarks_proto_rawDescData
-}
-
-var file_benchmarks_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_benchmarks_proto_goTypes = []interface{}{
-	(*BenchmarkDataset)(nil), // 0: benchmarks.BenchmarkDataset
-}
-var file_benchmarks_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_benchmarks_proto_init() }
-func file_benchmarks_proto_init() {
-	if File_benchmarks_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_benchmarks_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*BenchmarkDataset); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_benchmarks_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_benchmarks_proto_goTypes,
-		DependencyIndexes: file_benchmarks_proto_depIdxs,
-		MessageInfos:      file_benchmarks_proto_msgTypes,
-	}.Build()
-	File_benchmarks_proto = out.File
-	file_benchmarks_proto_rawDesc = nil
-	file_benchmarks_proto_goTypes = nil
-	file_benchmarks_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/benchmarks/datasets/google_message1/proto2/benchmark_message1_proto2.pb.go b/internal/testprotos/benchmarks/datasets/google_message1/proto2/benchmark_message1_proto2.pb.go
deleted file mode 100644
index df9149c..0000000
--- a/internal/testprotos/benchmarks/datasets/google_message1/proto2/benchmark_message1_proto2.pb.go
+++ /dev/null
@@ -1,858 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Benchmark messages for proto2.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: datasets/google_message1/proto2/benchmark_message1_proto2.proto
-
-package proto2
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type GoogleMessage1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field1   *string                   `protobuf:"bytes,1,req,name=field1" json:"field1,omitempty"`
-	Field9   *string                   `protobuf:"bytes,9,opt,name=field9" json:"field9,omitempty"`
-	Field18  *string                   `protobuf:"bytes,18,opt,name=field18" json:"field18,omitempty"`
-	Field80  *bool                     `protobuf:"varint,80,opt,name=field80,def=0" json:"field80,omitempty"`
-	Field81  *bool                     `protobuf:"varint,81,opt,name=field81,def=1" json:"field81,omitempty"`
-	Field2   *int32                    `protobuf:"varint,2,req,name=field2" json:"field2,omitempty"`
-	Field3   *int32                    `protobuf:"varint,3,req,name=field3" json:"field3,omitempty"`
-	Field280 *int32                    `protobuf:"varint,280,opt,name=field280" json:"field280,omitempty"`
-	Field6   *int32                    `protobuf:"varint,6,opt,name=field6,def=0" json:"field6,omitempty"`
-	Field22  *int64                    `protobuf:"varint,22,opt,name=field22" json:"field22,omitempty"`
-	Field4   *string                   `protobuf:"bytes,4,opt,name=field4" json:"field4,omitempty"`
-	Field5   []uint64                  `protobuf:"fixed64,5,rep,name=field5" json:"field5,omitempty"`
-	Field59  *bool                     `protobuf:"varint,59,opt,name=field59,def=0" json:"field59,omitempty"`
-	Field7   *string                   `protobuf:"bytes,7,opt,name=field7" json:"field7,omitempty"`
-	Field16  *int32                    `protobuf:"varint,16,opt,name=field16" json:"field16,omitempty"`
-	Field130 *int32                    `protobuf:"varint,130,opt,name=field130,def=0" json:"field130,omitempty"`
-	Field12  *bool                     `protobuf:"varint,12,opt,name=field12,def=1" json:"field12,omitempty"`
-	Field17  *bool                     `protobuf:"varint,17,opt,name=field17,def=1" json:"field17,omitempty"`
-	Field13  *bool                     `protobuf:"varint,13,opt,name=field13,def=1" json:"field13,omitempty"`
-	Field14  *bool                     `protobuf:"varint,14,opt,name=field14,def=1" json:"field14,omitempty"`
-	Field104 *int32                    `protobuf:"varint,104,opt,name=field104,def=0" json:"field104,omitempty"`
-	Field100 *int32                    `protobuf:"varint,100,opt,name=field100,def=0" json:"field100,omitempty"`
-	Field101 *int32                    `protobuf:"varint,101,opt,name=field101,def=0" json:"field101,omitempty"`
-	Field102 *string                   `protobuf:"bytes,102,opt,name=field102" json:"field102,omitempty"`
-	Field103 *string                   `protobuf:"bytes,103,opt,name=field103" json:"field103,omitempty"`
-	Field29  *int32                    `protobuf:"varint,29,opt,name=field29,def=0" json:"field29,omitempty"`
-	Field30  *bool                     `protobuf:"varint,30,opt,name=field30,def=0" json:"field30,omitempty"`
-	Field60  *int32                    `protobuf:"varint,60,opt,name=field60,def=-1" json:"field60,omitempty"`
-	Field271 *int32                    `protobuf:"varint,271,opt,name=field271,def=-1" json:"field271,omitempty"`
-	Field272 *int32                    `protobuf:"varint,272,opt,name=field272,def=-1" json:"field272,omitempty"`
-	Field150 *int32                    `protobuf:"varint,150,opt,name=field150" json:"field150,omitempty"`
-	Field23  *int32                    `protobuf:"varint,23,opt,name=field23,def=0" json:"field23,omitempty"`
-	Field24  *bool                     `protobuf:"varint,24,opt,name=field24,def=0" json:"field24,omitempty"`
-	Field25  *int32                    `protobuf:"varint,25,opt,name=field25,def=0" json:"field25,omitempty"`
-	Field15  *GoogleMessage1SubMessage `protobuf:"bytes,15,opt,name=field15" json:"field15,omitempty"`
-	Field78  *bool                     `protobuf:"varint,78,opt,name=field78" json:"field78,omitempty"`
-	Field67  *int32                    `protobuf:"varint,67,opt,name=field67,def=0" json:"field67,omitempty"`
-	Field68  *int32                    `protobuf:"varint,68,opt,name=field68" json:"field68,omitempty"`
-	Field128 *int32                    `protobuf:"varint,128,opt,name=field128,def=0" json:"field128,omitempty"`
-	Field129 *string                   `protobuf:"bytes,129,opt,name=field129,def=xxxxxxxxxxxxxxxxxxxxx" json:"field129,omitempty"`
-	Field131 *int32                    `protobuf:"varint,131,opt,name=field131,def=0" json:"field131,omitempty"`
-}
-
-// Default values for GoogleMessage1 fields.
-const (
-	Default_GoogleMessage1_Field80  = bool(false)
-	Default_GoogleMessage1_Field81  = bool(true)
-	Default_GoogleMessage1_Field6   = int32(0)
-	Default_GoogleMessage1_Field59  = bool(false)
-	Default_GoogleMessage1_Field130 = int32(0)
-	Default_GoogleMessage1_Field12  = bool(true)
-	Default_GoogleMessage1_Field17  = bool(true)
-	Default_GoogleMessage1_Field13  = bool(true)
-	Default_GoogleMessage1_Field14  = bool(true)
-	Default_GoogleMessage1_Field104 = int32(0)
-	Default_GoogleMessage1_Field100 = int32(0)
-	Default_GoogleMessage1_Field101 = int32(0)
-	Default_GoogleMessage1_Field29  = int32(0)
-	Default_GoogleMessage1_Field30  = bool(false)
-	Default_GoogleMessage1_Field60  = int32(-1)
-	Default_GoogleMessage1_Field271 = int32(-1)
-	Default_GoogleMessage1_Field272 = int32(-1)
-	Default_GoogleMessage1_Field23  = int32(0)
-	Default_GoogleMessage1_Field24  = bool(false)
-	Default_GoogleMessage1_Field25  = int32(0)
-	Default_GoogleMessage1_Field67  = int32(0)
-	Default_GoogleMessage1_Field128 = int32(0)
-	Default_GoogleMessage1_Field129 = string("xxxxxxxxxxxxxxxxxxxxx")
-	Default_GoogleMessage1_Field131 = int32(0)
-)
-
-func (x *GoogleMessage1) Reset() {
-	*x = GoogleMessage1{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GoogleMessage1) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GoogleMessage1) ProtoMessage() {}
-
-func (x *GoogleMessage1) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use GoogleMessage1.ProtoReflect.Descriptor instead.
-func (*GoogleMessage1) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *GoogleMessage1) GetField1() string {
-	if x != nil && x.Field1 != nil {
-		return *x.Field1
-	}
-	return ""
-}
-
-func (x *GoogleMessage1) GetField9() string {
-	if x != nil && x.Field9 != nil {
-		return *x.Field9
-	}
-	return ""
-}
-
-func (x *GoogleMessage1) GetField18() string {
-	if x != nil && x.Field18 != nil {
-		return *x.Field18
-	}
-	return ""
-}
-
-func (x *GoogleMessage1) GetField80() bool {
-	if x != nil && x.Field80 != nil {
-		return *x.Field80
-	}
-	return Default_GoogleMessage1_Field80
-}
-
-func (x *GoogleMessage1) GetField81() bool {
-	if x != nil && x.Field81 != nil {
-		return *x.Field81
-	}
-	return Default_GoogleMessage1_Field81
-}
-
-func (x *GoogleMessage1) GetField2() int32 {
-	if x != nil && x.Field2 != nil {
-		return *x.Field2
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField3() int32 {
-	if x != nil && x.Field3 != nil {
-		return *x.Field3
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField280() int32 {
-	if x != nil && x.Field280 != nil {
-		return *x.Field280
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField6() int32 {
-	if x != nil && x.Field6 != nil {
-		return *x.Field6
-	}
-	return Default_GoogleMessage1_Field6
-}
-
-func (x *GoogleMessage1) GetField22() int64 {
-	if x != nil && x.Field22 != nil {
-		return *x.Field22
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField4() string {
-	if x != nil && x.Field4 != nil {
-		return *x.Field4
-	}
-	return ""
-}
-
-func (x *GoogleMessage1) GetField5() []uint64 {
-	if x != nil {
-		return x.Field5
-	}
-	return nil
-}
-
-func (x *GoogleMessage1) GetField59() bool {
-	if x != nil && x.Field59 != nil {
-		return *x.Field59
-	}
-	return Default_GoogleMessage1_Field59
-}
-
-func (x *GoogleMessage1) GetField7() string {
-	if x != nil && x.Field7 != nil {
-		return *x.Field7
-	}
-	return ""
-}
-
-func (x *GoogleMessage1) GetField16() int32 {
-	if x != nil && x.Field16 != nil {
-		return *x.Field16
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField130() int32 {
-	if x != nil && x.Field130 != nil {
-		return *x.Field130
-	}
-	return Default_GoogleMessage1_Field130
-}
-
-func (x *GoogleMessage1) GetField12() bool {
-	if x != nil && x.Field12 != nil {
-		return *x.Field12
-	}
-	return Default_GoogleMessage1_Field12
-}
-
-func (x *GoogleMessage1) GetField17() bool {
-	if x != nil && x.Field17 != nil {
-		return *x.Field17
-	}
-	return Default_GoogleMessage1_Field17
-}
-
-func (x *GoogleMessage1) GetField13() bool {
-	if x != nil && x.Field13 != nil {
-		return *x.Field13
-	}
-	return Default_GoogleMessage1_Field13
-}
-
-func (x *GoogleMessage1) GetField14() bool {
-	if x != nil && x.Field14 != nil {
-		return *x.Field14
-	}
-	return Default_GoogleMessage1_Field14
-}
-
-func (x *GoogleMessage1) GetField104() int32 {
-	if x != nil && x.Field104 != nil {
-		return *x.Field104
-	}
-	return Default_GoogleMessage1_Field104
-}
-
-func (x *GoogleMessage1) GetField100() int32 {
-	if x != nil && x.Field100 != nil {
-		return *x.Field100
-	}
-	return Default_GoogleMessage1_Field100
-}
-
-func (x *GoogleMessage1) GetField101() int32 {
-	if x != nil && x.Field101 != nil {
-		return *x.Field101
-	}
-	return Default_GoogleMessage1_Field101
-}
-
-func (x *GoogleMessage1) GetField102() string {
-	if x != nil && x.Field102 != nil {
-		return *x.Field102
-	}
-	return ""
-}
-
-func (x *GoogleMessage1) GetField103() string {
-	if x != nil && x.Field103 != nil {
-		return *x.Field103
-	}
-	return ""
-}
-
-func (x *GoogleMessage1) GetField29() int32 {
-	if x != nil && x.Field29 != nil {
-		return *x.Field29
-	}
-	return Default_GoogleMessage1_Field29
-}
-
-func (x *GoogleMessage1) GetField30() bool {
-	if x != nil && x.Field30 != nil {
-		return *x.Field30
-	}
-	return Default_GoogleMessage1_Field30
-}
-
-func (x *GoogleMessage1) GetField60() int32 {
-	if x != nil && x.Field60 != nil {
-		return *x.Field60
-	}
-	return Default_GoogleMessage1_Field60
-}
-
-func (x *GoogleMessage1) GetField271() int32 {
-	if x != nil && x.Field271 != nil {
-		return *x.Field271
-	}
-	return Default_GoogleMessage1_Field271
-}
-
-func (x *GoogleMessage1) GetField272() int32 {
-	if x != nil && x.Field272 != nil {
-		return *x.Field272
-	}
-	return Default_GoogleMessage1_Field272
-}
-
-func (x *GoogleMessage1) GetField150() int32 {
-	if x != nil && x.Field150 != nil {
-		return *x.Field150
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField23() int32 {
-	if x != nil && x.Field23 != nil {
-		return *x.Field23
-	}
-	return Default_GoogleMessage1_Field23
-}
-
-func (x *GoogleMessage1) GetField24() bool {
-	if x != nil && x.Field24 != nil {
-		return *x.Field24
-	}
-	return Default_GoogleMessage1_Field24
-}
-
-func (x *GoogleMessage1) GetField25() int32 {
-	if x != nil && x.Field25 != nil {
-		return *x.Field25
-	}
-	return Default_GoogleMessage1_Field25
-}
-
-func (x *GoogleMessage1) GetField15() *GoogleMessage1SubMessage {
-	if x != nil {
-		return x.Field15
-	}
-	return nil
-}
-
-func (x *GoogleMessage1) GetField78() bool {
-	if x != nil && x.Field78 != nil {
-		return *x.Field78
-	}
-	return false
-}
-
-func (x *GoogleMessage1) GetField67() int32 {
-	if x != nil && x.Field67 != nil {
-		return *x.Field67
-	}
-	return Default_GoogleMessage1_Field67
-}
-
-func (x *GoogleMessage1) GetField68() int32 {
-	if x != nil && x.Field68 != nil {
-		return *x.Field68
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField128() int32 {
-	if x != nil && x.Field128 != nil {
-		return *x.Field128
-	}
-	return Default_GoogleMessage1_Field128
-}
-
-func (x *GoogleMessage1) GetField129() string {
-	if x != nil && x.Field129 != nil {
-		return *x.Field129
-	}
-	return Default_GoogleMessage1_Field129
-}
-
-func (x *GoogleMessage1) GetField131() int32 {
-	if x != nil && x.Field131 != nil {
-		return *x.Field131
-	}
-	return Default_GoogleMessage1_Field131
-}
-
-type GoogleMessage1SubMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field1   *int32  `protobuf:"varint,1,opt,name=field1,def=0" json:"field1,omitempty"`
-	Field2   *int32  `protobuf:"varint,2,opt,name=field2,def=0" json:"field2,omitempty"`
-	Field3   *int32  `protobuf:"varint,3,opt,name=field3,def=0" json:"field3,omitempty"`
-	Field15  *string `protobuf:"bytes,15,opt,name=field15" json:"field15,omitempty"`
-	Field12  *bool   `protobuf:"varint,12,opt,name=field12,def=1" json:"field12,omitempty"`
-	Field13  *int64  `protobuf:"varint,13,opt,name=field13" json:"field13,omitempty"`
-	Field14  *int64  `protobuf:"varint,14,opt,name=field14" json:"field14,omitempty"`
-	Field16  *int32  `protobuf:"varint,16,opt,name=field16" json:"field16,omitempty"`
-	Field19  *int32  `protobuf:"varint,19,opt,name=field19,def=2" json:"field19,omitempty"`
-	Field20  *bool   `protobuf:"varint,20,opt,name=field20,def=1" json:"field20,omitempty"`
-	Field28  *bool   `protobuf:"varint,28,opt,name=field28,def=1" json:"field28,omitempty"`
-	Field21  *uint64 `protobuf:"fixed64,21,opt,name=field21" json:"field21,omitempty"`
-	Field22  *int32  `protobuf:"varint,22,opt,name=field22" json:"field22,omitempty"`
-	Field23  *bool   `protobuf:"varint,23,opt,name=field23,def=0" json:"field23,omitempty"`
-	Field206 *bool   `protobuf:"varint,206,opt,name=field206,def=0" json:"field206,omitempty"`
-	Field203 *uint32 `protobuf:"fixed32,203,opt,name=field203" json:"field203,omitempty"`
-	Field204 *int32  `protobuf:"varint,204,opt,name=field204" json:"field204,omitempty"`
-	Field205 *string `protobuf:"bytes,205,opt,name=field205" json:"field205,omitempty"`
-	Field207 *uint64 `protobuf:"varint,207,opt,name=field207" json:"field207,omitempty"`
-	Field300 *uint64 `protobuf:"varint,300,opt,name=field300" json:"field300,omitempty"`
-}
-
-// Default values for GoogleMessage1SubMessage fields.
-const (
-	Default_GoogleMessage1SubMessage_Field1   = int32(0)
-	Default_GoogleMessage1SubMessage_Field2   = int32(0)
-	Default_GoogleMessage1SubMessage_Field3   = int32(0)
-	Default_GoogleMessage1SubMessage_Field12  = bool(true)
-	Default_GoogleMessage1SubMessage_Field19  = int32(2)
-	Default_GoogleMessage1SubMessage_Field20  = bool(true)
-	Default_GoogleMessage1SubMessage_Field28  = bool(true)
-	Default_GoogleMessage1SubMessage_Field23  = bool(false)
-	Default_GoogleMessage1SubMessage_Field206 = bool(false)
-)
-
-func (x *GoogleMessage1SubMessage) Reset() {
-	*x = GoogleMessage1SubMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GoogleMessage1SubMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GoogleMessage1SubMessage) ProtoMessage() {}
-
-func (x *GoogleMessage1SubMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use GoogleMessage1SubMessage.ProtoReflect.Descriptor instead.
-func (*GoogleMessage1SubMessage) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *GoogleMessage1SubMessage) GetField1() int32 {
-	if x != nil && x.Field1 != nil {
-		return *x.Field1
-	}
-	return Default_GoogleMessage1SubMessage_Field1
-}
-
-func (x *GoogleMessage1SubMessage) GetField2() int32 {
-	if x != nil && x.Field2 != nil {
-		return *x.Field2
-	}
-	return Default_GoogleMessage1SubMessage_Field2
-}
-
-func (x *GoogleMessage1SubMessage) GetField3() int32 {
-	if x != nil && x.Field3 != nil {
-		return *x.Field3
-	}
-	return Default_GoogleMessage1SubMessage_Field3
-}
-
-func (x *GoogleMessage1SubMessage) GetField15() string {
-	if x != nil && x.Field15 != nil {
-		return *x.Field15
-	}
-	return ""
-}
-
-func (x *GoogleMessage1SubMessage) GetField12() bool {
-	if x != nil && x.Field12 != nil {
-		return *x.Field12
-	}
-	return Default_GoogleMessage1SubMessage_Field12
-}
-
-func (x *GoogleMessage1SubMessage) GetField13() int64 {
-	if x != nil && x.Field13 != nil {
-		return *x.Field13
-	}
-	return 0
-}
-
-func (x *GoogleMessage1SubMessage) GetField14() int64 {
-	if x != nil && x.Field14 != nil {
-		return *x.Field14
-	}
-	return 0
-}
-
-func (x *GoogleMessage1SubMessage) GetField16() int32 {
-	if x != nil && x.Field16 != nil {
-		return *x.Field16
-	}
-	return 0
-}
-
-func (x *GoogleMessage1SubMessage) GetField19() int32 {
-	if x != nil && x.Field19 != nil {
-		return *x.Field19
-	}
-	return Default_GoogleMessage1SubMessage_Field19
-}
-
-func (x *GoogleMessage1SubMessage) GetField20() bool {
-	if x != nil && x.Field20 != nil {
-		return *x.Field20
-	}
-	return Default_GoogleMessage1SubMessage_Field20
-}
-
-func (x *GoogleMessage1SubMessage) GetField28() bool {
-	if x != nil && x.Field28 != nil {
-		return *x.Field28
-	}
-	return Default_GoogleMessage1SubMessage_Field28
-}
-
-func (x *GoogleMessage1SubMessage) GetField21() uint64 {
-	if x != nil && x.Field21 != nil {
-		return *x.Field21
-	}
-	return 0
-}
-
-func (x *GoogleMessage1SubMessage) GetField22() int32 {
-	if x != nil && x.Field22 != nil {
-		return *x.Field22
-	}
-	return 0
-}
-
-func (x *GoogleMessage1SubMessage) GetField23() bool {
-	if x != nil && x.Field23 != nil {
-		return *x.Field23
-	}
-	return Default_GoogleMessage1SubMessage_Field23
-}
-
-func (x *GoogleMessage1SubMessage) GetField206() bool {
-	if x != nil && x.Field206 != nil {
-		return *x.Field206
-	}
-	return Default_GoogleMessage1SubMessage_Field206
-}
-
-func (x *GoogleMessage1SubMessage) GetField203() uint32 {
-	if x != nil && x.Field203 != nil {
-		return *x.Field203
-	}
-	return 0
-}
-
-func (x *GoogleMessage1SubMessage) GetField204() int32 {
-	if x != nil && x.Field204 != nil {
-		return *x.Field204
-	}
-	return 0
-}
-
-func (x *GoogleMessage1SubMessage) GetField205() string {
-	if x != nil && x.Field205 != nil {
-		return *x.Field205
-	}
-	return ""
-}
-
-func (x *GoogleMessage1SubMessage) GetField207() uint64 {
-	if x != nil && x.Field207 != nil {
-		return *x.Field207
-	}
-	return 0
-}
-
-func (x *GoogleMessage1SubMessage) GetField300() uint64 {
-	if x != nil && x.Field300 != nil {
-		return *x.Field300
-	}
-	return 0
-}
-
-var File_datasets_google_message1_proto2_benchmark_message1_proto2_proto protoreflect.FileDescriptor
-
-var file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_rawDesc = []byte{
-	0x0a, 0x3f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x32, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x12, 0x11, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x32, 0x22, 0xf7, 0x09, 0x0a, 0x0e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x12,
-	0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x38, 0x12, 0x1f, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x30, 0x18, 0x50, 0x20, 0x01,
-	0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x30, 0x12, 0x1e, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x18, 0x51, 0x20,
-	0x01, 0x28, 0x08, 0x3a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x31, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x18, 0x02, 0x20, 0x02,
-	0x28, 0x05, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x18, 0x03, 0x20, 0x02, 0x28, 0x05, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x12, 0x1b, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x38, 0x30, 0x18, 0x98,
-	0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x38, 0x30, 0x12,
-	0x19, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x3a,
-	0x01, 0x30, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x32, 0x18, 0x16, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x32, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x12, 0x16, 0x0a, 0x06,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x18, 0x05, 0x20, 0x03, 0x28, 0x06, 0x52, 0x06, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x35, 0x12, 0x1f, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x18,
-	0x3b, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x07, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x35, 0x39, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x18,
-	0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x12, 0x18, 0x0a,
-	0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x12, 0x1e, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x33, 0x30, 0x18, 0x82, 0x01, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x01, 0x30, 0x52, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x30, 0x12, 0x1e, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x07,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x12, 0x1e, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x37, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x07,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x12, 0x1e, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x07,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x12, 0x1e, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x34, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x07,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x34, 0x12, 0x1d, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x30, 0x34, 0x18, 0x68, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x01, 0x30, 0x52, 0x08, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x34, 0x12, 0x1d, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x30, 0x30, 0x18, 0x64, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x01, 0x30, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x30, 0x12, 0x1d, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30,
-	0x31, 0x18, 0x65, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x01, 0x30, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x30, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32,
-	0x18, 0x66, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32,
-	0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x18, 0x67, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x12, 0x1b, 0x0a, 0x07,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x39, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x01, 0x30,
-	0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x39, 0x12, 0x1f, 0x0a, 0x07, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x30, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73,
-	0x65, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x30, 0x12, 0x1c, 0x0a, 0x07, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x30, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x2d, 0x31, 0x52,
-	0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x12, 0x1f, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x37, 0x31, 0x18, 0x8f, 0x02, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x2d, 0x31, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x31, 0x12, 0x1f, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x37, 0x32, 0x18, 0x90, 0x02, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x2d, 0x31,
-	0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x32, 0x12, 0x1b, 0x0a, 0x08, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x35, 0x30, 0x18, 0x96, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x35, 0x30, 0x12, 0x1b, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x33, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x01, 0x30, 0x52, 0x07, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x33, 0x12, 0x1f, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x18,
-	0x18, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x07, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x34, 0x12, 0x1b, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x35,
-	0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x01, 0x30, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x35, 0x12, 0x45, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x35, 0x18, 0x0f, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x53, 0x75, 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x35, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x38, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x38, 0x12, 0x1b, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x18, 0x43,
-	0x20, 0x01, 0x28, 0x05, 0x3a, 0x01, 0x30, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37,
-	0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x38, 0x18, 0x44, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x38, 0x12, 0x1e, 0x0a, 0x08, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x18, 0x80, 0x01, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x01, 0x30,
-	0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x12, 0x32, 0x0a, 0x08, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x18, 0x81, 0x01, 0x20, 0x01, 0x28, 0x09, 0x3a, 0x15, 0x78,
-	0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78,
-	0x78, 0x78, 0x78, 0x78, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x12, 0x1e,
-	0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x31, 0x18, 0x83, 0x01, 0x20, 0x01, 0x28,
-	0x05, 0x3a, 0x01, 0x30, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x31, 0x22, 0xda,
-	0x04, 0x0a, 0x18, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x53, 0x75, 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x06, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x01, 0x30, 0x52, 0x06,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x12, 0x19, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x01, 0x30, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x12, 0x19, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x05, 0x3a, 0x01, 0x30, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x12, 0x18, 0x0a, 0x07,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x35, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x35, 0x12, 0x1e, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x07, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33,
-	0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x34, 0x18, 0x0e, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x34, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x36, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x12, 0x1b, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x39, 0x18,
-	0x13, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x01, 0x32, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x39, 0x12, 0x1e, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x30, 0x18, 0x14, 0x20, 0x01,
-	0x28, 0x08, 0x3a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x30, 0x12, 0x1e, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x38, 0x18, 0x1c, 0x20, 0x01,
-	0x28, 0x08, 0x3a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x38, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x31, 0x18, 0x15, 0x20, 0x01,
-	0x28, 0x06, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x32, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x32, 0x12, 0x1f, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33,
-	0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x07, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x12, 0x22, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x30, 0x36, 0x18, 0xce, 0x01, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65,
-	0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x30, 0x36, 0x12, 0x1b, 0x0a, 0x08, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x30, 0x33, 0x18, 0xcb, 0x01, 0x20, 0x01, 0x28, 0x07, 0x52, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x30, 0x33, 0x12, 0x1b, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x30, 0x34, 0x18, 0xcc, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x30, 0x34, 0x12, 0x1b, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x30, 0x35,
-	0x18, 0xcd, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x30,
-	0x35, 0x12, 0x1b, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x30, 0x37, 0x18, 0xcf, 0x01,
-	0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x30, 0x37, 0x12, 0x1b,
-	0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x30, 0x30, 0x18, 0xac, 0x02, 0x20, 0x01, 0x28,
-	0x04, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x30, 0x30, 0x42, 0x25, 0x0a, 0x1e, 0x63,
-	0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x48, 0x01, 0xf8,
-	0x01, 0x01,
-}
-
-var (
-	file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_rawDescOnce sync.Once
-	file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_rawDescData = file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_rawDesc
-)
-
-func file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_rawDescGZIP() []byte {
-	file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_rawDescOnce.Do(func() {
-		file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_rawDescData = protoimpl.X.CompressGZIP(file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_rawDescData)
-	})
-	return file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_rawDescData
-}
-
-var file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
-var file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_goTypes = []interface{}{
-	(*GoogleMessage1)(nil),           // 0: benchmarks.proto2.GoogleMessage1
-	(*GoogleMessage1SubMessage)(nil), // 1: benchmarks.proto2.GoogleMessage1SubMessage
-}
-var file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_depIdxs = []int32{
-	1, // 0: benchmarks.proto2.GoogleMessage1.field15:type_name -> benchmarks.proto2.GoogleMessage1SubMessage
-	1, // [1:1] is the sub-list for method output_type
-	1, // [1:1] is the sub-list for method input_type
-	1, // [1:1] is the sub-list for extension type_name
-	1, // [1:1] is the sub-list for extension extendee
-	0, // [0:1] is the sub-list for field type_name
-}
-
-func init() { file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_init() }
-func file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_init() {
-	if File_datasets_google_message1_proto2_benchmark_message1_proto2_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GoogleMessage1); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GoogleMessage1SubMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   2,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_goTypes,
-		DependencyIndexes: file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_depIdxs,
-		MessageInfos:      file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_msgTypes,
-	}.Build()
-	File_datasets_google_message1_proto2_benchmark_message1_proto2_proto = out.File
-	file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_rawDesc = nil
-	file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_goTypes = nil
-	file_datasets_google_message1_proto2_benchmark_message1_proto2_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/benchmarks/datasets/google_message1/proto3/benchmark_message1_proto3.pb.go b/internal/testprotos/benchmarks/datasets/google_message1/proto3/benchmark_message1_proto3.pb.go
deleted file mode 100644
index a264895..0000000
--- a/internal/testprotos/benchmarks/datasets/google_message1/proto3/benchmark_message1_proto3.pb.go
+++ /dev/null
@@ -1,806 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Benchmark messages for proto3.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: datasets/google_message1/proto3/benchmark_message1_proto3.proto
-
-package proto3
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type GoogleMessage1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field1   string                    `protobuf:"bytes,1,opt,name=field1,proto3" json:"field1,omitempty"`
-	Field9   string                    `protobuf:"bytes,9,opt,name=field9,proto3" json:"field9,omitempty"`
-	Field18  string                    `protobuf:"bytes,18,opt,name=field18,proto3" json:"field18,omitempty"`
-	Field80  bool                      `protobuf:"varint,80,opt,name=field80,proto3" json:"field80,omitempty"`
-	Field81  bool                      `protobuf:"varint,81,opt,name=field81,proto3" json:"field81,omitempty"`
-	Field2   int32                     `protobuf:"varint,2,opt,name=field2,proto3" json:"field2,omitempty"`
-	Field3   int32                     `protobuf:"varint,3,opt,name=field3,proto3" json:"field3,omitempty"`
-	Field280 int32                     `protobuf:"varint,280,opt,name=field280,proto3" json:"field280,omitempty"`
-	Field6   int32                     `protobuf:"varint,6,opt,name=field6,proto3" json:"field6,omitempty"`
-	Field22  int64                     `protobuf:"varint,22,opt,name=field22,proto3" json:"field22,omitempty"`
-	Field4   string                    `protobuf:"bytes,4,opt,name=field4,proto3" json:"field4,omitempty"`
-	Field5   []uint64                  `protobuf:"fixed64,5,rep,packed,name=field5,proto3" json:"field5,omitempty"`
-	Field59  bool                      `protobuf:"varint,59,opt,name=field59,proto3" json:"field59,omitempty"`
-	Field7   string                    `protobuf:"bytes,7,opt,name=field7,proto3" json:"field7,omitempty"`
-	Field16  int32                     `protobuf:"varint,16,opt,name=field16,proto3" json:"field16,omitempty"`
-	Field130 int32                     `protobuf:"varint,130,opt,name=field130,proto3" json:"field130,omitempty"`
-	Field12  bool                      `protobuf:"varint,12,opt,name=field12,proto3" json:"field12,omitempty"`
-	Field17  bool                      `protobuf:"varint,17,opt,name=field17,proto3" json:"field17,omitempty"`
-	Field13  bool                      `protobuf:"varint,13,opt,name=field13,proto3" json:"field13,omitempty"`
-	Field14  bool                      `protobuf:"varint,14,opt,name=field14,proto3" json:"field14,omitempty"`
-	Field104 int32                     `protobuf:"varint,104,opt,name=field104,proto3" json:"field104,omitempty"`
-	Field100 int32                     `protobuf:"varint,100,opt,name=field100,proto3" json:"field100,omitempty"`
-	Field101 int32                     `protobuf:"varint,101,opt,name=field101,proto3" json:"field101,omitempty"`
-	Field102 string                    `protobuf:"bytes,102,opt,name=field102,proto3" json:"field102,omitempty"`
-	Field103 string                    `protobuf:"bytes,103,opt,name=field103,proto3" json:"field103,omitempty"`
-	Field29  int32                     `protobuf:"varint,29,opt,name=field29,proto3" json:"field29,omitempty"`
-	Field30  bool                      `protobuf:"varint,30,opt,name=field30,proto3" json:"field30,omitempty"`
-	Field60  int32                     `protobuf:"varint,60,opt,name=field60,proto3" json:"field60,omitempty"`
-	Field271 int32                     `protobuf:"varint,271,opt,name=field271,proto3" json:"field271,omitempty"`
-	Field272 int32                     `protobuf:"varint,272,opt,name=field272,proto3" json:"field272,omitempty"`
-	Field150 int32                     `protobuf:"varint,150,opt,name=field150,proto3" json:"field150,omitempty"`
-	Field23  int32                     `protobuf:"varint,23,opt,name=field23,proto3" json:"field23,omitempty"`
-	Field24  bool                      `protobuf:"varint,24,opt,name=field24,proto3" json:"field24,omitempty"`
-	Field25  int32                     `protobuf:"varint,25,opt,name=field25,proto3" json:"field25,omitempty"`
-	Field15  *GoogleMessage1SubMessage `protobuf:"bytes,15,opt,name=field15,proto3" json:"field15,omitempty"`
-	Field78  bool                      `protobuf:"varint,78,opt,name=field78,proto3" json:"field78,omitempty"`
-	Field67  int32                     `protobuf:"varint,67,opt,name=field67,proto3" json:"field67,omitempty"`
-	Field68  int32                     `protobuf:"varint,68,opt,name=field68,proto3" json:"field68,omitempty"`
-	Field128 int32                     `protobuf:"varint,128,opt,name=field128,proto3" json:"field128,omitempty"`
-	Field129 string                    `protobuf:"bytes,129,opt,name=field129,proto3" json:"field129,omitempty"`
-	Field131 int32                     `protobuf:"varint,131,opt,name=field131,proto3" json:"field131,omitempty"`
-}
-
-func (x *GoogleMessage1) Reset() {
-	*x = GoogleMessage1{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GoogleMessage1) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GoogleMessage1) ProtoMessage() {}
-
-func (x *GoogleMessage1) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use GoogleMessage1.ProtoReflect.Descriptor instead.
-func (*GoogleMessage1) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *GoogleMessage1) GetField1() string {
-	if x != nil {
-		return x.Field1
-	}
-	return ""
-}
-
-func (x *GoogleMessage1) GetField9() string {
-	if x != nil {
-		return x.Field9
-	}
-	return ""
-}
-
-func (x *GoogleMessage1) GetField18() string {
-	if x != nil {
-		return x.Field18
-	}
-	return ""
-}
-
-func (x *GoogleMessage1) GetField80() bool {
-	if x != nil {
-		return x.Field80
-	}
-	return false
-}
-
-func (x *GoogleMessage1) GetField81() bool {
-	if x != nil {
-		return x.Field81
-	}
-	return false
-}
-
-func (x *GoogleMessage1) GetField2() int32 {
-	if x != nil {
-		return x.Field2
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField3() int32 {
-	if x != nil {
-		return x.Field3
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField280() int32 {
-	if x != nil {
-		return x.Field280
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField6() int32 {
-	if x != nil {
-		return x.Field6
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField22() int64 {
-	if x != nil {
-		return x.Field22
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField4() string {
-	if x != nil {
-		return x.Field4
-	}
-	return ""
-}
-
-func (x *GoogleMessage1) GetField5() []uint64 {
-	if x != nil {
-		return x.Field5
-	}
-	return nil
-}
-
-func (x *GoogleMessage1) GetField59() bool {
-	if x != nil {
-		return x.Field59
-	}
-	return false
-}
-
-func (x *GoogleMessage1) GetField7() string {
-	if x != nil {
-		return x.Field7
-	}
-	return ""
-}
-
-func (x *GoogleMessage1) GetField16() int32 {
-	if x != nil {
-		return x.Field16
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField130() int32 {
-	if x != nil {
-		return x.Field130
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField12() bool {
-	if x != nil {
-		return x.Field12
-	}
-	return false
-}
-
-func (x *GoogleMessage1) GetField17() bool {
-	if x != nil {
-		return x.Field17
-	}
-	return false
-}
-
-func (x *GoogleMessage1) GetField13() bool {
-	if x != nil {
-		return x.Field13
-	}
-	return false
-}
-
-func (x *GoogleMessage1) GetField14() bool {
-	if x != nil {
-		return x.Field14
-	}
-	return false
-}
-
-func (x *GoogleMessage1) GetField104() int32 {
-	if x != nil {
-		return x.Field104
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField100() int32 {
-	if x != nil {
-		return x.Field100
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField101() int32 {
-	if x != nil {
-		return x.Field101
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField102() string {
-	if x != nil {
-		return x.Field102
-	}
-	return ""
-}
-
-func (x *GoogleMessage1) GetField103() string {
-	if x != nil {
-		return x.Field103
-	}
-	return ""
-}
-
-func (x *GoogleMessage1) GetField29() int32 {
-	if x != nil {
-		return x.Field29
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField30() bool {
-	if x != nil {
-		return x.Field30
-	}
-	return false
-}
-
-func (x *GoogleMessage1) GetField60() int32 {
-	if x != nil {
-		return x.Field60
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField271() int32 {
-	if x != nil {
-		return x.Field271
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField272() int32 {
-	if x != nil {
-		return x.Field272
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField150() int32 {
-	if x != nil {
-		return x.Field150
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField23() int32 {
-	if x != nil {
-		return x.Field23
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField24() bool {
-	if x != nil {
-		return x.Field24
-	}
-	return false
-}
-
-func (x *GoogleMessage1) GetField25() int32 {
-	if x != nil {
-		return x.Field25
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField15() *GoogleMessage1SubMessage {
-	if x != nil {
-		return x.Field15
-	}
-	return nil
-}
-
-func (x *GoogleMessage1) GetField78() bool {
-	if x != nil {
-		return x.Field78
-	}
-	return false
-}
-
-func (x *GoogleMessage1) GetField67() int32 {
-	if x != nil {
-		return x.Field67
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField68() int32 {
-	if x != nil {
-		return x.Field68
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField128() int32 {
-	if x != nil {
-		return x.Field128
-	}
-	return 0
-}
-
-func (x *GoogleMessage1) GetField129() string {
-	if x != nil {
-		return x.Field129
-	}
-	return ""
-}
-
-func (x *GoogleMessage1) GetField131() int32 {
-	if x != nil {
-		return x.Field131
-	}
-	return 0
-}
-
-type GoogleMessage1SubMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field1   int32  `protobuf:"varint,1,opt,name=field1,proto3" json:"field1,omitempty"`
-	Field2   int32  `protobuf:"varint,2,opt,name=field2,proto3" json:"field2,omitempty"`
-	Field3   int32  `protobuf:"varint,3,opt,name=field3,proto3" json:"field3,omitempty"`
-	Field15  string `protobuf:"bytes,15,opt,name=field15,proto3" json:"field15,omitempty"`
-	Field12  bool   `protobuf:"varint,12,opt,name=field12,proto3" json:"field12,omitempty"`
-	Field13  int64  `protobuf:"varint,13,opt,name=field13,proto3" json:"field13,omitempty"`
-	Field14  int64  `protobuf:"varint,14,opt,name=field14,proto3" json:"field14,omitempty"`
-	Field16  int32  `protobuf:"varint,16,opt,name=field16,proto3" json:"field16,omitempty"`
-	Field19  int32  `protobuf:"varint,19,opt,name=field19,proto3" json:"field19,omitempty"`
-	Field20  bool   `protobuf:"varint,20,opt,name=field20,proto3" json:"field20,omitempty"`
-	Field28  bool   `protobuf:"varint,28,opt,name=field28,proto3" json:"field28,omitempty"`
-	Field21  uint64 `protobuf:"fixed64,21,opt,name=field21,proto3" json:"field21,omitempty"`
-	Field22  int32  `protobuf:"varint,22,opt,name=field22,proto3" json:"field22,omitempty"`
-	Field23  bool   `protobuf:"varint,23,opt,name=field23,proto3" json:"field23,omitempty"`
-	Field206 bool   `protobuf:"varint,206,opt,name=field206,proto3" json:"field206,omitempty"`
-	Field203 uint32 `protobuf:"fixed32,203,opt,name=field203,proto3" json:"field203,omitempty"`
-	Field204 int32  `protobuf:"varint,204,opt,name=field204,proto3" json:"field204,omitempty"`
-	Field205 string `protobuf:"bytes,205,opt,name=field205,proto3" json:"field205,omitempty"`
-	Field207 uint64 `protobuf:"varint,207,opt,name=field207,proto3" json:"field207,omitempty"`
-	Field300 uint64 `protobuf:"varint,300,opt,name=field300,proto3" json:"field300,omitempty"`
-}
-
-func (x *GoogleMessage1SubMessage) Reset() {
-	*x = GoogleMessage1SubMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GoogleMessage1SubMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GoogleMessage1SubMessage) ProtoMessage() {}
-
-func (x *GoogleMessage1SubMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use GoogleMessage1SubMessage.ProtoReflect.Descriptor instead.
-func (*GoogleMessage1SubMessage) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *GoogleMessage1SubMessage) GetField1() int32 {
-	if x != nil {
-		return x.Field1
-	}
-	return 0
-}
-
-func (x *GoogleMessage1SubMessage) GetField2() int32 {
-	if x != nil {
-		return x.Field2
-	}
-	return 0
-}
-
-func (x *GoogleMessage1SubMessage) GetField3() int32 {
-	if x != nil {
-		return x.Field3
-	}
-	return 0
-}
-
-func (x *GoogleMessage1SubMessage) GetField15() string {
-	if x != nil {
-		return x.Field15
-	}
-	return ""
-}
-
-func (x *GoogleMessage1SubMessage) GetField12() bool {
-	if x != nil {
-		return x.Field12
-	}
-	return false
-}
-
-func (x *GoogleMessage1SubMessage) GetField13() int64 {
-	if x != nil {
-		return x.Field13
-	}
-	return 0
-}
-
-func (x *GoogleMessage1SubMessage) GetField14() int64 {
-	if x != nil {
-		return x.Field14
-	}
-	return 0
-}
-
-func (x *GoogleMessage1SubMessage) GetField16() int32 {
-	if x != nil {
-		return x.Field16
-	}
-	return 0
-}
-
-func (x *GoogleMessage1SubMessage) GetField19() int32 {
-	if x != nil {
-		return x.Field19
-	}
-	return 0
-}
-
-func (x *GoogleMessage1SubMessage) GetField20() bool {
-	if x != nil {
-		return x.Field20
-	}
-	return false
-}
-
-func (x *GoogleMessage1SubMessage) GetField28() bool {
-	if x != nil {
-		return x.Field28
-	}
-	return false
-}
-
-func (x *GoogleMessage1SubMessage) GetField21() uint64 {
-	if x != nil {
-		return x.Field21
-	}
-	return 0
-}
-
-func (x *GoogleMessage1SubMessage) GetField22() int32 {
-	if x != nil {
-		return x.Field22
-	}
-	return 0
-}
-
-func (x *GoogleMessage1SubMessage) GetField23() bool {
-	if x != nil {
-		return x.Field23
-	}
-	return false
-}
-
-func (x *GoogleMessage1SubMessage) GetField206() bool {
-	if x != nil {
-		return x.Field206
-	}
-	return false
-}
-
-func (x *GoogleMessage1SubMessage) GetField203() uint32 {
-	if x != nil {
-		return x.Field203
-	}
-	return 0
-}
-
-func (x *GoogleMessage1SubMessage) GetField204() int32 {
-	if x != nil {
-		return x.Field204
-	}
-	return 0
-}
-
-func (x *GoogleMessage1SubMessage) GetField205() string {
-	if x != nil {
-		return x.Field205
-	}
-	return ""
-}
-
-func (x *GoogleMessage1SubMessage) GetField207() uint64 {
-	if x != nil {
-		return x.Field207
-	}
-	return 0
-}
-
-func (x *GoogleMessage1SubMessage) GetField300() uint64 {
-	if x != nil {
-		return x.Field300
-	}
-	return 0
-}
-
-var File_datasets_google_message1_proto3_benchmark_message1_proto3_proto protoreflect.FileDescriptor
-
-var file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_rawDesc = []byte{
-	0x0a, 0x3f, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x12, 0x11, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x33, 0x22, 0xf9, 0x08, 0x0a, 0x0e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x12,
-	0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x38, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x30, 0x18, 0x50, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x30, 0x12, 0x18, 0x0a, 0x07, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x18, 0x51, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x31, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x12, 0x16, 0x0a,
-	0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x12, 0x1b, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x38,
-	0x30, 0x18, 0x98, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x38, 0x30, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x18, 0x06, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x32, 0x18, 0x16, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x32, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x12, 0x16, 0x0a, 0x06,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x18, 0x05, 0x20, 0x03, 0x28, 0x06, 0x52, 0x06, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x35, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x18,
-	0x3b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x12, 0x16,
-	0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x36, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36,
-	0x12, 0x1b, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x30, 0x18, 0x82, 0x01, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x30, 0x12, 0x18, 0x0a,
-	0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x37, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x37, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x18, 0x0d, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x12, 0x18, 0x0a, 0x07, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x34, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30,
-	0x34, 0x18, 0x68, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30,
-	0x34, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x30, 0x18, 0x64, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x30, 0x12, 0x1a, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x31, 0x18, 0x65, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x32, 0x18, 0x66, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30,
-	0x33, 0x18, 0x67, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30,
-	0x33, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x39, 0x18, 0x1d, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x39, 0x12, 0x18, 0x0a, 0x07, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x30, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x30, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30,
-	0x18, 0x3c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x12,
-	0x1b, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x31, 0x18, 0x8f, 0x02, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x31, 0x12, 0x1b, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x32, 0x18, 0x90, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x32, 0x12, 0x1b, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x35, 0x30, 0x18, 0x96, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x35, 0x30, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x33, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33,
-	0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x18, 0x18, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x35, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x35, 0x12, 0x45, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x35, 0x18,
-	0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x53, 0x75, 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x35, 0x12, 0x18, 0x0a, 0x07, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x38, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37,
-	0x18, 0x43, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x12,
-	0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x38, 0x18, 0x44, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x38, 0x12, 0x1b, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x38, 0x18, 0x80, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x12, 0x1b, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x39, 0x18, 0x81, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x39, 0x12, 0x1b, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x31, 0x18,
-	0x83, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x31,
-	0x22, 0xae, 0x04, 0x0a, 0x18, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x53, 0x75, 0x62, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a,
-	0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x12, 0x16, 0x0a,
-	0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x35,
-	0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x35, 0x12,
-	0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x33, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x34, 0x18, 0x0e,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x34, 0x12, 0x18, 0x0a,
-	0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x39, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x39, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x30, 0x18, 0x14, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x30, 0x12, 0x18, 0x0a, 0x07, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x38, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x38, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x31,
-	0x18, 0x15, 0x20, 0x01, 0x28, 0x06, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x31, 0x12,
-	0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x32, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x33, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x33, 0x12, 0x1b, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x30, 0x36, 0x18,
-	0xce, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x30, 0x36,
-	0x12, 0x1b, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x30, 0x33, 0x18, 0xcb, 0x01, 0x20,
-	0x01, 0x28, 0x07, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x30, 0x33, 0x12, 0x1b, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x30, 0x34, 0x18, 0xcc, 0x01, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x30, 0x34, 0x12, 0x1b, 0x0a, 0x08, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x30, 0x35, 0x18, 0xcd, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x30, 0x35, 0x12, 0x1b, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x30, 0x37, 0x18, 0xcf, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x30, 0x37, 0x12, 0x1b, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x30, 0x30,
-	0x18, 0xac, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x30,
-	0x30, 0x42, 0x25, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x48, 0x01, 0xf8, 0x01, 0x01, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_rawDescOnce sync.Once
-	file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_rawDescData = file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_rawDesc
-)
-
-func file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_rawDescGZIP() []byte {
-	file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_rawDescOnce.Do(func() {
-		file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_rawDescData = protoimpl.X.CompressGZIP(file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_rawDescData)
-	})
-	return file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_rawDescData
-}
-
-var file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
-var file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_goTypes = []interface{}{
-	(*GoogleMessage1)(nil),           // 0: benchmarks.proto3.GoogleMessage1
-	(*GoogleMessage1SubMessage)(nil), // 1: benchmarks.proto3.GoogleMessage1SubMessage
-}
-var file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_depIdxs = []int32{
-	1, // 0: benchmarks.proto3.GoogleMessage1.field15:type_name -> benchmarks.proto3.GoogleMessage1SubMessage
-	1, // [1:1] is the sub-list for method output_type
-	1, // [1:1] is the sub-list for method input_type
-	1, // [1:1] is the sub-list for extension type_name
-	1, // [1:1] is the sub-list for extension extendee
-	0, // [0:1] is the sub-list for field type_name
-}
-
-func init() { file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_init() }
-func file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_init() {
-	if File_datasets_google_message1_proto3_benchmark_message1_proto3_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GoogleMessage1); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GoogleMessage1SubMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   2,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_goTypes,
-		DependencyIndexes: file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_depIdxs,
-		MessageInfos:      file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_msgTypes,
-	}.Build()
-	File_datasets_google_message1_proto3_benchmark_message1_proto3_proto = out.File
-	file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_rawDesc = nil
-	file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_goTypes = nil
-	file_datasets_google_message1_proto3_benchmark_message1_proto3_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/benchmarks/datasets/google_message2/benchmark_message2.pb.go b/internal/testprotos/benchmarks/datasets/google_message2/benchmark_message2.pb.go
deleted file mode 100644
index d9ad8c7..0000000
--- a/internal/testprotos/benchmarks/datasets/google_message2/benchmark_message2.pb.go
+++ /dev/null
@@ -1,861 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// LINT: ALLOW_GROUPS
-
-// Benchmark messages for proto2.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: datasets/google_message2/benchmark_message2.proto
-
-package google_message2
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type GoogleMessage2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field1   *string                  `protobuf:"bytes,1,opt,name=field1" json:"field1,omitempty"`
-	Field3   *int64                   `protobuf:"varint,3,opt,name=field3" json:"field3,omitempty"`
-	Field4   *int64                   `protobuf:"varint,4,opt,name=field4" json:"field4,omitempty"`
-	Field30  *int64                   `protobuf:"varint,30,opt,name=field30" json:"field30,omitempty"`
-	Field75  *bool                    `protobuf:"varint,75,opt,name=field75,def=0" json:"field75,omitempty"`
-	Field6   *string                  `protobuf:"bytes,6,opt,name=field6" json:"field6,omitempty"`
-	Field2   []byte                   `protobuf:"bytes,2,opt,name=field2" json:"field2,omitempty"`
-	Field21  *int32                   `protobuf:"varint,21,opt,name=field21,def=0" json:"field21,omitempty"`
-	Field71  *int32                   `protobuf:"varint,71,opt,name=field71" json:"field71,omitempty"`
-	Field25  *float32                 `protobuf:"fixed32,25,opt,name=field25" json:"field25,omitempty"`
-	Field109 *int32                   `protobuf:"varint,109,opt,name=field109,def=0" json:"field109,omitempty"`
-	Field210 *int32                   `protobuf:"varint,210,opt,name=field210,def=0" json:"field210,omitempty"`
-	Field211 *int32                   `protobuf:"varint,211,opt,name=field211,def=0" json:"field211,omitempty"`
-	Field212 *int32                   `protobuf:"varint,212,opt,name=field212,def=0" json:"field212,omitempty"`
-	Field213 *int32                   `protobuf:"varint,213,opt,name=field213,def=0" json:"field213,omitempty"`
-	Field216 *int32                   `protobuf:"varint,216,opt,name=field216,def=0" json:"field216,omitempty"`
-	Field217 *int32                   `protobuf:"varint,217,opt,name=field217,def=0" json:"field217,omitempty"`
-	Field218 *int32                   `protobuf:"varint,218,opt,name=field218,def=0" json:"field218,omitempty"`
-	Field220 *int32                   `protobuf:"varint,220,opt,name=field220,def=0" json:"field220,omitempty"`
-	Field221 *int32                   `protobuf:"varint,221,opt,name=field221,def=0" json:"field221,omitempty"`
-	Field222 *float32                 `protobuf:"fixed32,222,opt,name=field222,def=0" json:"field222,omitempty"`
-	Field63  *int32                   `protobuf:"varint,63,opt,name=field63" json:"field63,omitempty"`
-	Group1   []*GoogleMessage2_Group1 `protobuf:"group,10,rep,name=Group1,json=group1" json:"group1,omitempty"`
-	Field128 []string                 `protobuf:"bytes,128,rep,name=field128" json:"field128,omitempty"`
-	Field131 *int64                   `protobuf:"varint,131,opt,name=field131" json:"field131,omitempty"`
-	Field127 []string                 `protobuf:"bytes,127,rep,name=field127" json:"field127,omitempty"`
-	Field129 *int32                   `protobuf:"varint,129,opt,name=field129" json:"field129,omitempty"`
-	Field130 []int64                  `protobuf:"varint,130,rep,name=field130" json:"field130,omitempty"`
-	Field205 *bool                    `protobuf:"varint,205,opt,name=field205,def=0" json:"field205,omitempty"`
-	Field206 *bool                    `protobuf:"varint,206,opt,name=field206,def=0" json:"field206,omitempty"`
-}
-
-// Default values for GoogleMessage2 fields.
-const (
-	Default_GoogleMessage2_Field75  = bool(false)
-	Default_GoogleMessage2_Field21  = int32(0)
-	Default_GoogleMessage2_Field109 = int32(0)
-	Default_GoogleMessage2_Field210 = int32(0)
-	Default_GoogleMessage2_Field211 = int32(0)
-	Default_GoogleMessage2_Field212 = int32(0)
-	Default_GoogleMessage2_Field213 = int32(0)
-	Default_GoogleMessage2_Field216 = int32(0)
-	Default_GoogleMessage2_Field217 = int32(0)
-	Default_GoogleMessage2_Field218 = int32(0)
-	Default_GoogleMessage2_Field220 = int32(0)
-	Default_GoogleMessage2_Field221 = int32(0)
-	Default_GoogleMessage2_Field222 = float32(0)
-	Default_GoogleMessage2_Field205 = bool(false)
-	Default_GoogleMessage2_Field206 = bool(false)
-)
-
-func (x *GoogleMessage2) Reset() {
-	*x = GoogleMessage2{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message2_benchmark_message2_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GoogleMessage2) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GoogleMessage2) ProtoMessage() {}
-
-func (x *GoogleMessage2) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message2_benchmark_message2_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use GoogleMessage2.ProtoReflect.Descriptor instead.
-func (*GoogleMessage2) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message2_benchmark_message2_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *GoogleMessage2) GetField1() string {
-	if x != nil && x.Field1 != nil {
-		return *x.Field1
-	}
-	return ""
-}
-
-func (x *GoogleMessage2) GetField3() int64 {
-	if x != nil && x.Field3 != nil {
-		return *x.Field3
-	}
-	return 0
-}
-
-func (x *GoogleMessage2) GetField4() int64 {
-	if x != nil && x.Field4 != nil {
-		return *x.Field4
-	}
-	return 0
-}
-
-func (x *GoogleMessage2) GetField30() int64 {
-	if x != nil && x.Field30 != nil {
-		return *x.Field30
-	}
-	return 0
-}
-
-func (x *GoogleMessage2) GetField75() bool {
-	if x != nil && x.Field75 != nil {
-		return *x.Field75
-	}
-	return Default_GoogleMessage2_Field75
-}
-
-func (x *GoogleMessage2) GetField6() string {
-	if x != nil && x.Field6 != nil {
-		return *x.Field6
-	}
-	return ""
-}
-
-func (x *GoogleMessage2) GetField2() []byte {
-	if x != nil {
-		return x.Field2
-	}
-	return nil
-}
-
-func (x *GoogleMessage2) GetField21() int32 {
-	if x != nil && x.Field21 != nil {
-		return *x.Field21
-	}
-	return Default_GoogleMessage2_Field21
-}
-
-func (x *GoogleMessage2) GetField71() int32 {
-	if x != nil && x.Field71 != nil {
-		return *x.Field71
-	}
-	return 0
-}
-
-func (x *GoogleMessage2) GetField25() float32 {
-	if x != nil && x.Field25 != nil {
-		return *x.Field25
-	}
-	return 0
-}
-
-func (x *GoogleMessage2) GetField109() int32 {
-	if x != nil && x.Field109 != nil {
-		return *x.Field109
-	}
-	return Default_GoogleMessage2_Field109
-}
-
-func (x *GoogleMessage2) GetField210() int32 {
-	if x != nil && x.Field210 != nil {
-		return *x.Field210
-	}
-	return Default_GoogleMessage2_Field210
-}
-
-func (x *GoogleMessage2) GetField211() int32 {
-	if x != nil && x.Field211 != nil {
-		return *x.Field211
-	}
-	return Default_GoogleMessage2_Field211
-}
-
-func (x *GoogleMessage2) GetField212() int32 {
-	if x != nil && x.Field212 != nil {
-		return *x.Field212
-	}
-	return Default_GoogleMessage2_Field212
-}
-
-func (x *GoogleMessage2) GetField213() int32 {
-	if x != nil && x.Field213 != nil {
-		return *x.Field213
-	}
-	return Default_GoogleMessage2_Field213
-}
-
-func (x *GoogleMessage2) GetField216() int32 {
-	if x != nil && x.Field216 != nil {
-		return *x.Field216
-	}
-	return Default_GoogleMessage2_Field216
-}
-
-func (x *GoogleMessage2) GetField217() int32 {
-	if x != nil && x.Field217 != nil {
-		return *x.Field217
-	}
-	return Default_GoogleMessage2_Field217
-}
-
-func (x *GoogleMessage2) GetField218() int32 {
-	if x != nil && x.Field218 != nil {
-		return *x.Field218
-	}
-	return Default_GoogleMessage2_Field218
-}
-
-func (x *GoogleMessage2) GetField220() int32 {
-	if x != nil && x.Field220 != nil {
-		return *x.Field220
-	}
-	return Default_GoogleMessage2_Field220
-}
-
-func (x *GoogleMessage2) GetField221() int32 {
-	if x != nil && x.Field221 != nil {
-		return *x.Field221
-	}
-	return Default_GoogleMessage2_Field221
-}
-
-func (x *GoogleMessage2) GetField222() float32 {
-	if x != nil && x.Field222 != nil {
-		return *x.Field222
-	}
-	return Default_GoogleMessage2_Field222
-}
-
-func (x *GoogleMessage2) GetField63() int32 {
-	if x != nil && x.Field63 != nil {
-		return *x.Field63
-	}
-	return 0
-}
-
-func (x *GoogleMessage2) GetGroup1() []*GoogleMessage2_Group1 {
-	if x != nil {
-		return x.Group1
-	}
-	return nil
-}
-
-func (x *GoogleMessage2) GetField128() []string {
-	if x != nil {
-		return x.Field128
-	}
-	return nil
-}
-
-func (x *GoogleMessage2) GetField131() int64 {
-	if x != nil && x.Field131 != nil {
-		return *x.Field131
-	}
-	return 0
-}
-
-func (x *GoogleMessage2) GetField127() []string {
-	if x != nil {
-		return x.Field127
-	}
-	return nil
-}
-
-func (x *GoogleMessage2) GetField129() int32 {
-	if x != nil && x.Field129 != nil {
-		return *x.Field129
-	}
-	return 0
-}
-
-func (x *GoogleMessage2) GetField130() []int64 {
-	if x != nil {
-		return x.Field130
-	}
-	return nil
-}
-
-func (x *GoogleMessage2) GetField205() bool {
-	if x != nil && x.Field205 != nil {
-		return *x.Field205
-	}
-	return Default_GoogleMessage2_Field205
-}
-
-func (x *GoogleMessage2) GetField206() bool {
-	if x != nil && x.Field206 != nil {
-		return *x.Field206
-	}
-	return Default_GoogleMessage2_Field206
-}
-
-type GoogleMessage2GroupedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field1  *float32 `protobuf:"fixed32,1,opt,name=field1" json:"field1,omitempty"`
-	Field2  *float32 `protobuf:"fixed32,2,opt,name=field2" json:"field2,omitempty"`
-	Field3  *float32 `protobuf:"fixed32,3,opt,name=field3,def=0" json:"field3,omitempty"`
-	Field4  *bool    `protobuf:"varint,4,opt,name=field4" json:"field4,omitempty"`
-	Field5  *bool    `protobuf:"varint,5,opt,name=field5" json:"field5,omitempty"`
-	Field6  *bool    `protobuf:"varint,6,opt,name=field6,def=1" json:"field6,omitempty"`
-	Field7  *bool    `protobuf:"varint,7,opt,name=field7,def=0" json:"field7,omitempty"`
-	Field8  *float32 `protobuf:"fixed32,8,opt,name=field8" json:"field8,omitempty"`
-	Field9  *bool    `protobuf:"varint,9,opt,name=field9" json:"field9,omitempty"`
-	Field10 *float32 `protobuf:"fixed32,10,opt,name=field10" json:"field10,omitempty"`
-	Field11 *int64   `protobuf:"varint,11,opt,name=field11" json:"field11,omitempty"`
-}
-
-// Default values for GoogleMessage2GroupedMessage fields.
-const (
-	Default_GoogleMessage2GroupedMessage_Field3 = float32(0)
-	Default_GoogleMessage2GroupedMessage_Field6 = bool(true)
-	Default_GoogleMessage2GroupedMessage_Field7 = bool(false)
-)
-
-func (x *GoogleMessage2GroupedMessage) Reset() {
-	*x = GoogleMessage2GroupedMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message2_benchmark_message2_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GoogleMessage2GroupedMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GoogleMessage2GroupedMessage) ProtoMessage() {}
-
-func (x *GoogleMessage2GroupedMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message2_benchmark_message2_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use GoogleMessage2GroupedMessage.ProtoReflect.Descriptor instead.
-func (*GoogleMessage2GroupedMessage) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message2_benchmark_message2_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *GoogleMessage2GroupedMessage) GetField1() float32 {
-	if x != nil && x.Field1 != nil {
-		return *x.Field1
-	}
-	return 0
-}
-
-func (x *GoogleMessage2GroupedMessage) GetField2() float32 {
-	if x != nil && x.Field2 != nil {
-		return *x.Field2
-	}
-	return 0
-}
-
-func (x *GoogleMessage2GroupedMessage) GetField3() float32 {
-	if x != nil && x.Field3 != nil {
-		return *x.Field3
-	}
-	return Default_GoogleMessage2GroupedMessage_Field3
-}
-
-func (x *GoogleMessage2GroupedMessage) GetField4() bool {
-	if x != nil && x.Field4 != nil {
-		return *x.Field4
-	}
-	return false
-}
-
-func (x *GoogleMessage2GroupedMessage) GetField5() bool {
-	if x != nil && x.Field5 != nil {
-		return *x.Field5
-	}
-	return false
-}
-
-func (x *GoogleMessage2GroupedMessage) GetField6() bool {
-	if x != nil && x.Field6 != nil {
-		return *x.Field6
-	}
-	return Default_GoogleMessage2GroupedMessage_Field6
-}
-
-func (x *GoogleMessage2GroupedMessage) GetField7() bool {
-	if x != nil && x.Field7 != nil {
-		return *x.Field7
-	}
-	return Default_GoogleMessage2GroupedMessage_Field7
-}
-
-func (x *GoogleMessage2GroupedMessage) GetField8() float32 {
-	if x != nil && x.Field8 != nil {
-		return *x.Field8
-	}
-	return 0
-}
-
-func (x *GoogleMessage2GroupedMessage) GetField9() bool {
-	if x != nil && x.Field9 != nil {
-		return *x.Field9
-	}
-	return false
-}
-
-func (x *GoogleMessage2GroupedMessage) GetField10() float32 {
-	if x != nil && x.Field10 != nil {
-		return *x.Field10
-	}
-	return 0
-}
-
-func (x *GoogleMessage2GroupedMessage) GetField11() int64 {
-	if x != nil && x.Field11 != nil {
-		return *x.Field11
-	}
-	return 0
-}
-
-type GoogleMessage2_Group1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field11 *float32                      `protobuf:"fixed32,11,req,name=field11" json:"field11,omitempty"`
-	Field26 *float32                      `protobuf:"fixed32,26,opt,name=field26" json:"field26,omitempty"`
-	Field12 *string                       `protobuf:"bytes,12,opt,name=field12" json:"field12,omitempty"`
-	Field13 *string                       `protobuf:"bytes,13,opt,name=field13" json:"field13,omitempty"`
-	Field14 []string                      `protobuf:"bytes,14,rep,name=field14" json:"field14,omitempty"`
-	Field15 *uint64                       `protobuf:"varint,15,req,name=field15" json:"field15,omitempty"`
-	Field5  *int32                        `protobuf:"varint,5,opt,name=field5" json:"field5,omitempty"`
-	Field27 *string                       `protobuf:"bytes,27,opt,name=field27" json:"field27,omitempty"`
-	Field28 *int32                        `protobuf:"varint,28,opt,name=field28" json:"field28,omitempty"`
-	Field29 *string                       `protobuf:"bytes,29,opt,name=field29" json:"field29,omitempty"`
-	Field16 *string                       `protobuf:"bytes,16,opt,name=field16" json:"field16,omitempty"`
-	Field22 []string                      `protobuf:"bytes,22,rep,name=field22" json:"field22,omitempty"`
-	Field73 []int32                       `protobuf:"varint,73,rep,name=field73" json:"field73,omitempty"`
-	Field20 *int32                        `protobuf:"varint,20,opt,name=field20,def=0" json:"field20,omitempty"`
-	Field24 *string                       `protobuf:"bytes,24,opt,name=field24" json:"field24,omitempty"`
-	Field31 *GoogleMessage2GroupedMessage `protobuf:"bytes,31,opt,name=field31" json:"field31,omitempty"`
-}
-
-// Default values for GoogleMessage2_Group1 fields.
-const (
-	Default_GoogleMessage2_Group1_Field20 = int32(0)
-)
-
-func (x *GoogleMessage2_Group1) Reset() {
-	*x = GoogleMessage2_Group1{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message2_benchmark_message2_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GoogleMessage2_Group1) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GoogleMessage2_Group1) ProtoMessage() {}
-
-func (x *GoogleMessage2_Group1) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message2_benchmark_message2_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use GoogleMessage2_Group1.ProtoReflect.Descriptor instead.
-func (*GoogleMessage2_Group1) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message2_benchmark_message2_proto_rawDescGZIP(), []int{0, 0}
-}
-
-func (x *GoogleMessage2_Group1) GetField11() float32 {
-	if x != nil && x.Field11 != nil {
-		return *x.Field11
-	}
-	return 0
-}
-
-func (x *GoogleMessage2_Group1) GetField26() float32 {
-	if x != nil && x.Field26 != nil {
-		return *x.Field26
-	}
-	return 0
-}
-
-func (x *GoogleMessage2_Group1) GetField12() string {
-	if x != nil && x.Field12 != nil {
-		return *x.Field12
-	}
-	return ""
-}
-
-func (x *GoogleMessage2_Group1) GetField13() string {
-	if x != nil && x.Field13 != nil {
-		return *x.Field13
-	}
-	return ""
-}
-
-func (x *GoogleMessage2_Group1) GetField14() []string {
-	if x != nil {
-		return x.Field14
-	}
-	return nil
-}
-
-func (x *GoogleMessage2_Group1) GetField15() uint64 {
-	if x != nil && x.Field15 != nil {
-		return *x.Field15
-	}
-	return 0
-}
-
-func (x *GoogleMessage2_Group1) GetField5() int32 {
-	if x != nil && x.Field5 != nil {
-		return *x.Field5
-	}
-	return 0
-}
-
-func (x *GoogleMessage2_Group1) GetField27() string {
-	if x != nil && x.Field27 != nil {
-		return *x.Field27
-	}
-	return ""
-}
-
-func (x *GoogleMessage2_Group1) GetField28() int32 {
-	if x != nil && x.Field28 != nil {
-		return *x.Field28
-	}
-	return 0
-}
-
-func (x *GoogleMessage2_Group1) GetField29() string {
-	if x != nil && x.Field29 != nil {
-		return *x.Field29
-	}
-	return ""
-}
-
-func (x *GoogleMessage2_Group1) GetField16() string {
-	if x != nil && x.Field16 != nil {
-		return *x.Field16
-	}
-	return ""
-}
-
-func (x *GoogleMessage2_Group1) GetField22() []string {
-	if x != nil {
-		return x.Field22
-	}
-	return nil
-}
-
-func (x *GoogleMessage2_Group1) GetField73() []int32 {
-	if x != nil {
-		return x.Field73
-	}
-	return nil
-}
-
-func (x *GoogleMessage2_Group1) GetField20() int32 {
-	if x != nil && x.Field20 != nil {
-		return *x.Field20
-	}
-	return Default_GoogleMessage2_Group1_Field20
-}
-
-func (x *GoogleMessage2_Group1) GetField24() string {
-	if x != nil && x.Field24 != nil {
-		return *x.Field24
-	}
-	return ""
-}
-
-func (x *GoogleMessage2_Group1) GetField31() *GoogleMessage2GroupedMessage {
-	if x != nil {
-		return x.Field31
-	}
-	return nil
-}
-
-var File_datasets_google_message2_benchmark_message2_proto protoreflect.FileDescriptor
-
-var file_datasets_google_message2_benchmark_message2_proto_rawDesc = []byte{
-	0x0a, 0x31, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x12, 0x11, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x22, 0x84, 0x0b, 0x0a, 0x0e, 0x47, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x34, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x30, 0x18, 0x1e, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x30, 0x12, 0x1f, 0x0a, 0x07, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x18, 0x4b, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61,
-	0x6c, 0x73, 0x65, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x12, 0x16, 0x0a, 0x06,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x12, 0x1b, 0x0a, 0x07,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x31, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x01, 0x30,
-	0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x31, 0x18, 0x47, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x35, 0x18, 0x19,
-	0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x35, 0x12, 0x1d, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x39, 0x18, 0x6d, 0x20, 0x01, 0x28, 0x05, 0x3a,
-	0x01, 0x30, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x39, 0x12, 0x1e, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x31, 0x30, 0x18, 0xd2, 0x01, 0x20, 0x01, 0x28, 0x05, 0x3a,
-	0x01, 0x30, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x31, 0x30, 0x12, 0x1e, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x31, 0x31, 0x18, 0xd3, 0x01, 0x20, 0x01, 0x28, 0x05, 0x3a,
-	0x01, 0x30, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x31, 0x31, 0x12, 0x1e, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x31, 0x32, 0x18, 0xd4, 0x01, 0x20, 0x01, 0x28, 0x05, 0x3a,
-	0x01, 0x30, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x31, 0x32, 0x12, 0x1e, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x31, 0x33, 0x18, 0xd5, 0x01, 0x20, 0x01, 0x28, 0x05, 0x3a,
-	0x01, 0x30, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x31, 0x33, 0x12, 0x1e, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x31, 0x36, 0x18, 0xd8, 0x01, 0x20, 0x01, 0x28, 0x05, 0x3a,
-	0x01, 0x30, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x31, 0x36, 0x12, 0x1e, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x31, 0x37, 0x18, 0xd9, 0x01, 0x20, 0x01, 0x28, 0x05, 0x3a,
-	0x01, 0x30, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x31, 0x37, 0x12, 0x1e, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x31, 0x38, 0x18, 0xda, 0x01, 0x20, 0x01, 0x28, 0x05, 0x3a,
-	0x01, 0x30, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x31, 0x38, 0x12, 0x1e, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x32, 0x30, 0x18, 0xdc, 0x01, 0x20, 0x01, 0x28, 0x05, 0x3a,
-	0x01, 0x30, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x32, 0x30, 0x12, 0x1e, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x32, 0x31, 0x18, 0xdd, 0x01, 0x20, 0x01, 0x28, 0x05, 0x3a,
-	0x01, 0x30, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x32, 0x31, 0x12, 0x1e, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x32, 0x32, 0x18, 0xde, 0x01, 0x20, 0x01, 0x28, 0x02, 0x3a,
-	0x01, 0x30, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x32, 0x32, 0x12, 0x18, 0x0a, 0x07,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x33, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x33, 0x12, 0x40, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x31,
-	0x18, 0x0a, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x31,
-	0x52, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x31, 0x12, 0x1b, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x38, 0x18, 0x80, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x38, 0x12, 0x1b, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33,
-	0x31, 0x18, 0x83, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x33, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x18, 0x7f,
-	0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x12, 0x1b,
-	0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x18, 0x81, 0x01, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x12, 0x1b, 0x0a, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x30, 0x18, 0x82, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x30, 0x12, 0x22, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x30, 0x35, 0x18, 0xcd, 0x01, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c,
-	0x73, 0x65, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x30, 0x35, 0x12, 0x22, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x30, 0x36, 0x18, 0xce, 0x01, 0x20, 0x01, 0x28, 0x08, 0x3a,
-	0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x30, 0x36,
-	0x1a, 0xda, 0x03, 0x0a, 0x06, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x18, 0x0b, 0x20, 0x02, 0x28, 0x02, 0x52, 0x07, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x36,
-	0x18, 0x1a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x36, 0x12,
-	0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x33, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x34, 0x18, 0x0e,
-	0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x34, 0x12, 0x18, 0x0a,
-	0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x35, 0x18, 0x0f, 0x20, 0x02, 0x28, 0x04, 0x52, 0x07,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x35, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x12,
-	0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x38, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x38, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x39, 0x18, 0x1d,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x39, 0x12, 0x18, 0x0a,
-	0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x32, 0x18, 0x16, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x32, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x18, 0x49, 0x20, 0x03,
-	0x28, 0x05, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x12, 0x1b, 0x0a, 0x07, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x30, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x01, 0x30, 0x52,
-	0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x30, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x34, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x12, 0x49, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x31, 0x18, 0x1f, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x31, 0x22, 0xba, 0x02,
-	0x0a, 0x1c, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32,
-	0x47, 0x72, 0x6f, 0x75, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16,
-	0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x12, 0x19,
-	0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x3a, 0x01,
-	0x30, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x34, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x12, 0x1c, 0x0a, 0x06, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52,
-	0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x12, 0x1d, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x06,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x12, 0x16,
-	0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x30, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30,
-	0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x18, 0x0b, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x42, 0x25, 0x0a, 0x1e, 0x63, 0x6f,
-	0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x48, 0x01, 0xf8, 0x01,
-	0x01,
-}
-
-var (
-	file_datasets_google_message2_benchmark_message2_proto_rawDescOnce sync.Once
-	file_datasets_google_message2_benchmark_message2_proto_rawDescData = file_datasets_google_message2_benchmark_message2_proto_rawDesc
-)
-
-func file_datasets_google_message2_benchmark_message2_proto_rawDescGZIP() []byte {
-	file_datasets_google_message2_benchmark_message2_proto_rawDescOnce.Do(func() {
-		file_datasets_google_message2_benchmark_message2_proto_rawDescData = protoimpl.X.CompressGZIP(file_datasets_google_message2_benchmark_message2_proto_rawDescData)
-	})
-	return file_datasets_google_message2_benchmark_message2_proto_rawDescData
-}
-
-var file_datasets_google_message2_benchmark_message2_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
-var file_datasets_google_message2_benchmark_message2_proto_goTypes = []interface{}{
-	(*GoogleMessage2)(nil),               // 0: benchmarks.proto2.GoogleMessage2
-	(*GoogleMessage2GroupedMessage)(nil), // 1: benchmarks.proto2.GoogleMessage2GroupedMessage
-	(*GoogleMessage2_Group1)(nil),        // 2: benchmarks.proto2.GoogleMessage2.Group1
-}
-var file_datasets_google_message2_benchmark_message2_proto_depIdxs = []int32{
-	2, // 0: benchmarks.proto2.GoogleMessage2.group1:type_name -> benchmarks.proto2.GoogleMessage2.Group1
-	1, // 1: benchmarks.proto2.GoogleMessage2.Group1.field31:type_name -> benchmarks.proto2.GoogleMessage2GroupedMessage
-	2, // [2:2] is the sub-list for method output_type
-	2, // [2:2] is the sub-list for method input_type
-	2, // [2:2] is the sub-list for extension type_name
-	2, // [2:2] is the sub-list for extension extendee
-	0, // [0:2] is the sub-list for field type_name
-}
-
-func init() { file_datasets_google_message2_benchmark_message2_proto_init() }
-func file_datasets_google_message2_benchmark_message2_proto_init() {
-	if File_datasets_google_message2_benchmark_message2_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_datasets_google_message2_benchmark_message2_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GoogleMessage2); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message2_benchmark_message2_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GoogleMessage2GroupedMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message2_benchmark_message2_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GoogleMessage2_Group1); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_datasets_google_message2_benchmark_message2_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   3,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_datasets_google_message2_benchmark_message2_proto_goTypes,
-		DependencyIndexes: file_datasets_google_message2_benchmark_message2_proto_depIdxs,
-		MessageInfos:      file_datasets_google_message2_benchmark_message2_proto_msgTypes,
-	}.Build()
-	File_datasets_google_message2_benchmark_message2_proto = out.File
-	file_datasets_google_message2_benchmark_message2_proto_rawDesc = nil
-	file_datasets_google_message2_benchmark_message2_proto_goTypes = nil
-	file_datasets_google_message2_benchmark_message2_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3.pb.go b/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3.pb.go
deleted file mode 100644
index 3d866ee..0000000
--- a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3.pb.go
+++ /dev/null
@@ -1,6738 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// LINT: ALLOW_GROUPS
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: datasets/google_message3/benchmark_message3.proto
-
-package google_message3
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type GoogleMessage3 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field37519 *Message37487       `protobuf:"bytes,2,opt,name=field37519" json:"field37519,omitempty"`
-	Field37520 *Message36876       `protobuf:"bytes,3,opt,name=field37520" json:"field37520,omitempty"`
-	Field37521 *Message13062       `protobuf:"bytes,4,opt,name=field37521" json:"field37521,omitempty"`
-	Field37522 *Message952         `protobuf:"bytes,5,opt,name=field37522" json:"field37522,omitempty"`
-	Field37523 *UnusedEmptyMessage `protobuf:"bytes,6,opt,name=field37523" json:"field37523,omitempty"`
-	Field37524 *UnusedEmptyMessage `protobuf:"bytes,7,opt,name=field37524" json:"field37524,omitempty"`
-	Field37525 *UnusedEmptyMessage `protobuf:"bytes,8,opt,name=field37525" json:"field37525,omitempty"`
-	Field37526 *UnusedEmptyMessage `protobuf:"bytes,9,opt,name=field37526" json:"field37526,omitempty"`
-	Field37527 *UnusedEmptyMessage `protobuf:"bytes,10,opt,name=field37527" json:"field37527,omitempty"`
-	Field37528 *UnusedEmptyMessage `protobuf:"bytes,11,opt,name=field37528" json:"field37528,omitempty"`
-	Field37529 *UnusedEmptyMessage `protobuf:"bytes,12,opt,name=field37529" json:"field37529,omitempty"`
-	Field37530 *UnusedEmptyMessage `protobuf:"bytes,13,opt,name=field37530" json:"field37530,omitempty"`
-	Field37531 *UnusedEmptyMessage `protobuf:"bytes,14,opt,name=field37531" json:"field37531,omitempty"`
-	Field37532 *UnusedEmptyMessage `protobuf:"bytes,15,opt,name=field37532" json:"field37532,omitempty"`
-	Field37533 *UnusedEmptyMessage `protobuf:"bytes,16,opt,name=field37533" json:"field37533,omitempty"`
-}
-
-func (x *GoogleMessage3) Reset() {
-	*x = GoogleMessage3{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GoogleMessage3) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GoogleMessage3) ProtoMessage() {}
-
-func (x *GoogleMessage3) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use GoogleMessage3.ProtoReflect.Descriptor instead.
-func (*GoogleMessage3) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *GoogleMessage3) GetField37519() *Message37487 {
-	if x != nil {
-		return x.Field37519
-	}
-	return nil
-}
-
-func (x *GoogleMessage3) GetField37520() *Message36876 {
-	if x != nil {
-		return x.Field37520
-	}
-	return nil
-}
-
-func (x *GoogleMessage3) GetField37521() *Message13062 {
-	if x != nil {
-		return x.Field37521
-	}
-	return nil
-}
-
-func (x *GoogleMessage3) GetField37522() *Message952 {
-	if x != nil {
-		return x.Field37522
-	}
-	return nil
-}
-
-func (x *GoogleMessage3) GetField37523() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37523
-	}
-	return nil
-}
-
-func (x *GoogleMessage3) GetField37524() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37524
-	}
-	return nil
-}
-
-func (x *GoogleMessage3) GetField37525() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37525
-	}
-	return nil
-}
-
-func (x *GoogleMessage3) GetField37526() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37526
-	}
-	return nil
-}
-
-func (x *GoogleMessage3) GetField37527() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37527
-	}
-	return nil
-}
-
-func (x *GoogleMessage3) GetField37528() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37528
-	}
-	return nil
-}
-
-func (x *GoogleMessage3) GetField37529() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37529
-	}
-	return nil
-}
-
-func (x *GoogleMessage3) GetField37530() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37530
-	}
-	return nil
-}
-
-func (x *GoogleMessage3) GetField37531() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37531
-	}
-	return nil
-}
-
-func (x *GoogleMessage3) GetField37532() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37532
-	}
-	return nil
-}
-
-func (x *GoogleMessage3) GetField37533() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37533
-	}
-	return nil
-}
-
-type Message1327 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field1369 []*UnusedEmptyMessage `protobuf:"bytes,1,rep,name=field1369" json:"field1369,omitempty"`
-	Field1370 []*Message1328        `protobuf:"bytes,3,rep,name=field1370" json:"field1370,omitempty"`
-	Field1371 []*UnusedEmptyMessage `protobuf:"bytes,5,rep,name=field1371" json:"field1371,omitempty"`
-	Field1372 []*UnusedEmptyMessage `protobuf:"bytes,6,rep,name=field1372" json:"field1372,omitempty"`
-}
-
-func (x *Message1327) Reset() {
-	*x = Message1327{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message1327) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message1327) ProtoMessage() {}
-
-func (x *Message1327) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message1327.ProtoReflect.Descriptor instead.
-func (*Message1327) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Message1327) GetField1369() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field1369
-	}
-	return nil
-}
-
-func (x *Message1327) GetField1370() []*Message1328 {
-	if x != nil {
-		return x.Field1370
-	}
-	return nil
-}
-
-func (x *Message1327) GetField1371() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field1371
-	}
-	return nil
-}
-
-func (x *Message1327) GetField1372() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field1372
-	}
-	return nil
-}
-
-type Message3672 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field3727   *Enum3476                  `protobuf:"varint,1,opt,name=field3727,enum=benchmarks.google_message3.Enum3476" json:"field3727,omitempty"`
-	Field3728   *int32                     `protobuf:"varint,11,opt,name=field3728" json:"field3728,omitempty"`
-	Field3729   *int32                     `protobuf:"varint,2,opt,name=field3729" json:"field3729,omitempty"`
-	Message3673 []*Message3672_Message3673 `protobuf:"group,3,rep,name=Message3673,json=message3673" json:"message3673,omitempty"`
-	Message3674 []*Message3672_Message3674 `protobuf:"group,6,rep,name=Message3674,json=message3674" json:"message3674,omitempty"`
-	Field3732   *bool                      `protobuf:"varint,9,opt,name=field3732" json:"field3732,omitempty"`
-	Field3733   *int32                     `protobuf:"varint,10,opt,name=field3733" json:"field3733,omitempty"`
-	Field3734   *Enum3476                  `protobuf:"varint,20,opt,name=field3734,enum=benchmarks.google_message3.Enum3476" json:"field3734,omitempty"`
-	Field3735   *int32                     `protobuf:"varint,21,opt,name=field3735" json:"field3735,omitempty"`
-	Field3736   *UnusedEmptyMessage        `protobuf:"bytes,50,opt,name=field3736" json:"field3736,omitempty"`
-}
-
-func (x *Message3672) Reset() {
-	*x = Message3672{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3672) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3672) ProtoMessage() {}
-
-func (x *Message3672) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3672.ProtoReflect.Descriptor instead.
-func (*Message3672) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Message3672) GetField3727() Enum3476 {
-	if x != nil && x.Field3727 != nil {
-		return *x.Field3727
-	}
-	return Enum3476_ENUM_VALUE3477
-}
-
-func (x *Message3672) GetField3728() int32 {
-	if x != nil && x.Field3728 != nil {
-		return *x.Field3728
-	}
-	return 0
-}
-
-func (x *Message3672) GetField3729() int32 {
-	if x != nil && x.Field3729 != nil {
-		return *x.Field3729
-	}
-	return 0
-}
-
-func (x *Message3672) GetMessage3673() []*Message3672_Message3673 {
-	if x != nil {
-		return x.Message3673
-	}
-	return nil
-}
-
-func (x *Message3672) GetMessage3674() []*Message3672_Message3674 {
-	if x != nil {
-		return x.Message3674
-	}
-	return nil
-}
-
-func (x *Message3672) GetField3732() bool {
-	if x != nil && x.Field3732 != nil {
-		return *x.Field3732
-	}
-	return false
-}
-
-func (x *Message3672) GetField3733() int32 {
-	if x != nil && x.Field3733 != nil {
-		return *x.Field3733
-	}
-	return 0
-}
-
-func (x *Message3672) GetField3734() Enum3476 {
-	if x != nil && x.Field3734 != nil {
-		return *x.Field3734
-	}
-	return Enum3476_ENUM_VALUE3477
-}
-
-func (x *Message3672) GetField3735() int32 {
-	if x != nil && x.Field3735 != nil {
-		return *x.Field3735
-	}
-	return 0
-}
-
-func (x *Message3672) GetField3736() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field3736
-	}
-	return nil
-}
-
-type Message3804 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field3818 *int64     `protobuf:"varint,1,req,name=field3818" json:"field3818,omitempty"`
-	Field3819 *bool      `protobuf:"varint,2,req,name=field3819" json:"field3819,omitempty"`
-	Field3820 []Enum3805 `protobuf:"varint,4,rep,name=field3820,enum=benchmarks.google_message3.Enum3805" json:"field3820,omitempty"`
-	Field3821 *int32     `protobuf:"varint,5,opt,name=field3821" json:"field3821,omitempty"`
-	Field3822 *bool      `protobuf:"varint,6,opt,name=field3822" json:"field3822,omitempty"`
-	Field3823 *int64     `protobuf:"varint,7,opt,name=field3823" json:"field3823,omitempty"`
-	Field3824 *Enum3783  `protobuf:"varint,8,opt,name=field3824,enum=benchmarks.google_message3.Enum3783" json:"field3824,omitempty"`
-}
-
-func (x *Message3804) Reset() {
-	*x = Message3804{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3804) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3804) ProtoMessage() {}
-
-func (x *Message3804) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3804.ProtoReflect.Descriptor instead.
-func (*Message3804) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Message3804) GetField3818() int64 {
-	if x != nil && x.Field3818 != nil {
-		return *x.Field3818
-	}
-	return 0
-}
-
-func (x *Message3804) GetField3819() bool {
-	if x != nil && x.Field3819 != nil {
-		return *x.Field3819
-	}
-	return false
-}
-
-func (x *Message3804) GetField3820() []Enum3805 {
-	if x != nil {
-		return x.Field3820
-	}
-	return nil
-}
-
-func (x *Message3804) GetField3821() int32 {
-	if x != nil && x.Field3821 != nil {
-		return *x.Field3821
-	}
-	return 0
-}
-
-func (x *Message3804) GetField3822() bool {
-	if x != nil && x.Field3822 != nil {
-		return *x.Field3822
-	}
-	return false
-}
-
-func (x *Message3804) GetField3823() int64 {
-	if x != nil && x.Field3823 != nil {
-		return *x.Field3823
-	}
-	return 0
-}
-
-func (x *Message3804) GetField3824() Enum3783 {
-	if x != nil && x.Field3824 != nil {
-		return *x.Field3824
-	}
-	return Enum3783_ENUM_VALUE3784
-}
-
-type Message6849 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6910 []*Message6850 `protobuf:"bytes,1,rep,name=field6910" json:"field6910,omitempty"`
-}
-
-func (x *Message6849) Reset() {
-	*x = Message6849{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6849) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6849) ProtoMessage() {}
-
-func (x *Message6849) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6849.ProtoReflect.Descriptor instead.
-func (*Message6849) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Message6849) GetField6910() []*Message6850 {
-	if x != nil {
-		return x.Field6910
-	}
-	return nil
-}
-
-type Message6866 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6973 []*Message6863 `protobuf:"bytes,1,rep,name=field6973" json:"field6973,omitempty"`
-}
-
-func (x *Message6866) Reset() {
-	*x = Message6866{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6866) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6866) ProtoMessage() {}
-
-func (x *Message6866) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6866.ProtoReflect.Descriptor instead.
-func (*Message6866) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *Message6866) GetField6973() []*Message6863 {
-	if x != nil {
-		return x.Field6973
-	}
-	return nil
-}
-
-type Message6870 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6991 []*Message6871 `protobuf:"bytes,1,rep,name=field6991" json:"field6991,omitempty"`
-}
-
-func (x *Message6870) Reset() {
-	*x = Message6870{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6870) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6870) ProtoMessage() {}
-
-func (x *Message6870) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6870.ProtoReflect.Descriptor instead.
-func (*Message6870) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *Message6870) GetField6991() []*Message6871 {
-	if x != nil {
-		return x.Field6991
-	}
-	return nil
-}
-
-type Message7651 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7685 *string               `protobuf:"bytes,1,opt,name=field7685" json:"field7685,omitempty"`
-	Field7686 *int64                `protobuf:"varint,2,opt,name=field7686" json:"field7686,omitempty"`
-	Field7687 *int64                `protobuf:"varint,3,opt,name=field7687" json:"field7687,omitempty"`
-	Field7688 *int64                `protobuf:"varint,4,opt,name=field7688" json:"field7688,omitempty"`
-	Field7689 *int32                `protobuf:"varint,5,opt,name=field7689" json:"field7689,omitempty"`
-	Field7690 *int32                `protobuf:"varint,6,opt,name=field7690" json:"field7690,omitempty"`
-	Field7691 *int32                `protobuf:"varint,7,opt,name=field7691" json:"field7691,omitempty"`
-	Field7692 *int32                `protobuf:"varint,8,opt,name=field7692" json:"field7692,omitempty"`
-	Field7693 *int32                `protobuf:"varint,9,opt,name=field7693" json:"field7693,omitempty"`
-	Field7694 *int32                `protobuf:"varint,10,opt,name=field7694" json:"field7694,omitempty"`
-	Field7695 *int32                `protobuf:"varint,11,opt,name=field7695" json:"field7695,omitempty"`
-	Field7696 *int32                `protobuf:"varint,12,opt,name=field7696" json:"field7696,omitempty"`
-	Field7697 *int32                `protobuf:"varint,13,opt,name=field7697" json:"field7697,omitempty"`
-	Field7698 *int32                `protobuf:"varint,14,opt,name=field7698" json:"field7698,omitempty"`
-	Field7699 *int32                `protobuf:"varint,15,opt,name=field7699" json:"field7699,omitempty"`
-	Field7700 *int32                `protobuf:"varint,16,opt,name=field7700" json:"field7700,omitempty"`
-	Field7701 *int32                `protobuf:"varint,17,opt,name=field7701" json:"field7701,omitempty"`
-	Field7702 *int32                `protobuf:"varint,18,opt,name=field7702" json:"field7702,omitempty"`
-	Field7703 *bool                 `protobuf:"varint,19,opt,name=field7703" json:"field7703,omitempty"`
-	Field7704 []int32               `protobuf:"varint,20,rep,name=field7704" json:"field7704,omitempty"`
-	Field7705 []int32               `protobuf:"varint,21,rep,name=field7705" json:"field7705,omitempty"`
-	Field7706 []string              `protobuf:"bytes,22,rep,name=field7706" json:"field7706,omitempty"`
-	Field7707 []string              `protobuf:"bytes,23,rep,name=field7707" json:"field7707,omitempty"`
-	Field7708 *UnusedEmptyMessage   `protobuf:"bytes,24,opt,name=field7708" json:"field7708,omitempty"`
-	Field7709 *int32                `protobuf:"varint,25,opt,name=field7709" json:"field7709,omitempty"`
-	Field7710 *int32                `protobuf:"varint,26,opt,name=field7710" json:"field7710,omitempty"`
-	Field7711 *int32                `protobuf:"varint,27,opt,name=field7711" json:"field7711,omitempty"`
-	Field7712 *int32                `protobuf:"varint,43,opt,name=field7712" json:"field7712,omitempty"`
-	Field7713 *int32                `protobuf:"varint,28,opt,name=field7713" json:"field7713,omitempty"`
-	Field7714 *int32                `protobuf:"varint,29,opt,name=field7714" json:"field7714,omitempty"`
-	Field7715 []*Message7547        `protobuf:"bytes,30,rep,name=field7715" json:"field7715,omitempty"`
-	Field7716 []*Message7547        `protobuf:"bytes,31,rep,name=field7716" json:"field7716,omitempty"`
-	Field7717 []*UnusedEmptyMessage `protobuf:"bytes,32,rep,name=field7717" json:"field7717,omitempty"`
-	Field7718 []string              `protobuf:"bytes,33,rep,name=field7718" json:"field7718,omitempty"`
-	Field7719 []string              `protobuf:"bytes,34,rep,name=field7719" json:"field7719,omitempty"`
-	Field7720 []*Message7648        `protobuf:"bytes,35,rep,name=field7720" json:"field7720,omitempty"`
-	Field7721 *bool                 `protobuf:"varint,36,opt,name=field7721" json:"field7721,omitempty"`
-	Field7722 *bool                 `protobuf:"varint,37,opt,name=field7722" json:"field7722,omitempty"`
-	Field7723 *bool                 `protobuf:"varint,38,opt,name=field7723" json:"field7723,omitempty"`
-	Field7724 *bool                 `protobuf:"varint,39,opt,name=field7724" json:"field7724,omitempty"`
-	Field7725 *UnusedEmptyMessage   `protobuf:"bytes,40,opt,name=field7725" json:"field7725,omitempty"`
-	Field7726 *UnusedEnum           `protobuf:"varint,41,opt,name=field7726,enum=benchmarks.google_message3.UnusedEnum" json:"field7726,omitempty"`
-	Field7727 *Enum7654             `protobuf:"varint,42,opt,name=field7727,enum=benchmarks.google_message3.Enum7654" json:"field7727,omitempty"`
-	Field7728 *string               `protobuf:"bytes,44,opt,name=field7728" json:"field7728,omitempty"`
-	Field7729 *UnusedEmptyMessage   `protobuf:"bytes,45,opt,name=field7729" json:"field7729,omitempty"`
-}
-
-func (x *Message7651) Reset() {
-	*x = Message7651{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7651) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7651) ProtoMessage() {}
-
-func (x *Message7651) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7651.ProtoReflect.Descriptor instead.
-func (*Message7651) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *Message7651) GetField7685() string {
-	if x != nil && x.Field7685 != nil {
-		return *x.Field7685
-	}
-	return ""
-}
-
-func (x *Message7651) GetField7686() int64 {
-	if x != nil && x.Field7686 != nil {
-		return *x.Field7686
-	}
-	return 0
-}
-
-func (x *Message7651) GetField7687() int64 {
-	if x != nil && x.Field7687 != nil {
-		return *x.Field7687
-	}
-	return 0
-}
-
-func (x *Message7651) GetField7688() int64 {
-	if x != nil && x.Field7688 != nil {
-		return *x.Field7688
-	}
-	return 0
-}
-
-func (x *Message7651) GetField7689() int32 {
-	if x != nil && x.Field7689 != nil {
-		return *x.Field7689
-	}
-	return 0
-}
-
-func (x *Message7651) GetField7690() int32 {
-	if x != nil && x.Field7690 != nil {
-		return *x.Field7690
-	}
-	return 0
-}
-
-func (x *Message7651) GetField7691() int32 {
-	if x != nil && x.Field7691 != nil {
-		return *x.Field7691
-	}
-	return 0
-}
-
-func (x *Message7651) GetField7692() int32 {
-	if x != nil && x.Field7692 != nil {
-		return *x.Field7692
-	}
-	return 0
-}
-
-func (x *Message7651) GetField7693() int32 {
-	if x != nil && x.Field7693 != nil {
-		return *x.Field7693
-	}
-	return 0
-}
-
-func (x *Message7651) GetField7694() int32 {
-	if x != nil && x.Field7694 != nil {
-		return *x.Field7694
-	}
-	return 0
-}
-
-func (x *Message7651) GetField7695() int32 {
-	if x != nil && x.Field7695 != nil {
-		return *x.Field7695
-	}
-	return 0
-}
-
-func (x *Message7651) GetField7696() int32 {
-	if x != nil && x.Field7696 != nil {
-		return *x.Field7696
-	}
-	return 0
-}
-
-func (x *Message7651) GetField7697() int32 {
-	if x != nil && x.Field7697 != nil {
-		return *x.Field7697
-	}
-	return 0
-}
-
-func (x *Message7651) GetField7698() int32 {
-	if x != nil && x.Field7698 != nil {
-		return *x.Field7698
-	}
-	return 0
-}
-
-func (x *Message7651) GetField7699() int32 {
-	if x != nil && x.Field7699 != nil {
-		return *x.Field7699
-	}
-	return 0
-}
-
-func (x *Message7651) GetField7700() int32 {
-	if x != nil && x.Field7700 != nil {
-		return *x.Field7700
-	}
-	return 0
-}
-
-func (x *Message7651) GetField7701() int32 {
-	if x != nil && x.Field7701 != nil {
-		return *x.Field7701
-	}
-	return 0
-}
-
-func (x *Message7651) GetField7702() int32 {
-	if x != nil && x.Field7702 != nil {
-		return *x.Field7702
-	}
-	return 0
-}
-
-func (x *Message7651) GetField7703() bool {
-	if x != nil && x.Field7703 != nil {
-		return *x.Field7703
-	}
-	return false
-}
-
-func (x *Message7651) GetField7704() []int32 {
-	if x != nil {
-		return x.Field7704
-	}
-	return nil
-}
-
-func (x *Message7651) GetField7705() []int32 {
-	if x != nil {
-		return x.Field7705
-	}
-	return nil
-}
-
-func (x *Message7651) GetField7706() []string {
-	if x != nil {
-		return x.Field7706
-	}
-	return nil
-}
-
-func (x *Message7651) GetField7707() []string {
-	if x != nil {
-		return x.Field7707
-	}
-	return nil
-}
-
-func (x *Message7651) GetField7708() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7708
-	}
-	return nil
-}
-
-func (x *Message7651) GetField7709() int32 {
-	if x != nil && x.Field7709 != nil {
-		return *x.Field7709
-	}
-	return 0
-}
-
-func (x *Message7651) GetField7710() int32 {
-	if x != nil && x.Field7710 != nil {
-		return *x.Field7710
-	}
-	return 0
-}
-
-func (x *Message7651) GetField7711() int32 {
-	if x != nil && x.Field7711 != nil {
-		return *x.Field7711
-	}
-	return 0
-}
-
-func (x *Message7651) GetField7712() int32 {
-	if x != nil && x.Field7712 != nil {
-		return *x.Field7712
-	}
-	return 0
-}
-
-func (x *Message7651) GetField7713() int32 {
-	if x != nil && x.Field7713 != nil {
-		return *x.Field7713
-	}
-	return 0
-}
-
-func (x *Message7651) GetField7714() int32 {
-	if x != nil && x.Field7714 != nil {
-		return *x.Field7714
-	}
-	return 0
-}
-
-func (x *Message7651) GetField7715() []*Message7547 {
-	if x != nil {
-		return x.Field7715
-	}
-	return nil
-}
-
-func (x *Message7651) GetField7716() []*Message7547 {
-	if x != nil {
-		return x.Field7716
-	}
-	return nil
-}
-
-func (x *Message7651) GetField7717() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7717
-	}
-	return nil
-}
-
-func (x *Message7651) GetField7718() []string {
-	if x != nil {
-		return x.Field7718
-	}
-	return nil
-}
-
-func (x *Message7651) GetField7719() []string {
-	if x != nil {
-		return x.Field7719
-	}
-	return nil
-}
-
-func (x *Message7651) GetField7720() []*Message7648 {
-	if x != nil {
-		return x.Field7720
-	}
-	return nil
-}
-
-func (x *Message7651) GetField7721() bool {
-	if x != nil && x.Field7721 != nil {
-		return *x.Field7721
-	}
-	return false
-}
-
-func (x *Message7651) GetField7722() bool {
-	if x != nil && x.Field7722 != nil {
-		return *x.Field7722
-	}
-	return false
-}
-
-func (x *Message7651) GetField7723() bool {
-	if x != nil && x.Field7723 != nil {
-		return *x.Field7723
-	}
-	return false
-}
-
-func (x *Message7651) GetField7724() bool {
-	if x != nil && x.Field7724 != nil {
-		return *x.Field7724
-	}
-	return false
-}
-
-func (x *Message7651) GetField7725() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7725
-	}
-	return nil
-}
-
-func (x *Message7651) GetField7726() UnusedEnum {
-	if x != nil && x.Field7726 != nil {
-		return *x.Field7726
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message7651) GetField7727() Enum7654 {
-	if x != nil && x.Field7727 != nil {
-		return *x.Field7727
-	}
-	return Enum7654_ENUM_VALUE7655
-}
-
-func (x *Message7651) GetField7728() string {
-	if x != nil && x.Field7728 != nil {
-		return *x.Field7728
-	}
-	return ""
-}
-
-func (x *Message7651) GetField7729() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7729
-	}
-	return nil
-}
-
-type Message7864 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7866 *string               `protobuf:"bytes,1,opt,name=field7866" json:"field7866,omitempty"`
-	Field7867 *string               `protobuf:"bytes,2,opt,name=field7867" json:"field7867,omitempty"`
-	Field7868 []*Message7865        `protobuf:"bytes,5,rep,name=field7868" json:"field7868,omitempty"`
-	Field7869 []*Message7865        `protobuf:"bytes,6,rep,name=field7869" json:"field7869,omitempty"`
-	Field7870 []*Message7865        `protobuf:"bytes,7,rep,name=field7870" json:"field7870,omitempty"`
-	Field7871 []*UnusedEmptyMessage `protobuf:"bytes,8,rep,name=field7871" json:"field7871,omitempty"`
-}
-
-func (x *Message7864) Reset() {
-	*x = Message7864{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7864) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7864) ProtoMessage() {}
-
-func (x *Message7864) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[8]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7864.ProtoReflect.Descriptor instead.
-func (*Message7864) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *Message7864) GetField7866() string {
-	if x != nil && x.Field7866 != nil {
-		return *x.Field7866
-	}
-	return ""
-}
-
-func (x *Message7864) GetField7867() string {
-	if x != nil && x.Field7867 != nil {
-		return *x.Field7867
-	}
-	return ""
-}
-
-func (x *Message7864) GetField7868() []*Message7865 {
-	if x != nil {
-		return x.Field7868
-	}
-	return nil
-}
-
-func (x *Message7864) GetField7869() []*Message7865 {
-	if x != nil {
-		return x.Field7869
-	}
-	return nil
-}
-
-func (x *Message7864) GetField7870() []*Message7865 {
-	if x != nil {
-		return x.Field7870
-	}
-	return nil
-}
-
-func (x *Message7864) GetField7871() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7871
-	}
-	return nil
-}
-
-type Message7929 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7942 *int64                `protobuf:"varint,1,opt,name=field7942" json:"field7942,omitempty"`
-	Field7943 *int64                `protobuf:"varint,4,opt,name=field7943" json:"field7943,omitempty"`
-	Field7944 *int64                `protobuf:"varint,5,opt,name=field7944" json:"field7944,omitempty"`
-	Field7945 *int64                `protobuf:"varint,12,opt,name=field7945" json:"field7945,omitempty"`
-	Field7946 *int64                `protobuf:"varint,13,opt,name=field7946" json:"field7946,omitempty"`
-	Field7947 *int64                `protobuf:"varint,18,opt,name=field7947" json:"field7947,omitempty"`
-	Field7948 *int64                `protobuf:"varint,6,opt,name=field7948" json:"field7948,omitempty"`
-	Field7949 *int64                `protobuf:"varint,7,opt,name=field7949" json:"field7949,omitempty"`
-	Field7950 []*Message7919        `protobuf:"bytes,8,rep,name=field7950" json:"field7950,omitempty"`
-	Field7951 []*UnusedEmptyMessage `protobuf:"bytes,20,rep,name=field7951" json:"field7951,omitempty"`
-	Field7952 []*Message7920        `protobuf:"bytes,14,rep,name=field7952" json:"field7952,omitempty"`
-	Field7953 []*Message7921        `protobuf:"bytes,15,rep,name=field7953" json:"field7953,omitempty"`
-	Field7954 []*Message7928        `protobuf:"bytes,17,rep,name=field7954" json:"field7954,omitempty"`
-	Field7955 *int64                `protobuf:"varint,19,opt,name=field7955" json:"field7955,omitempty"`
-	Field7956 *bool                 `protobuf:"varint,2,opt,name=field7956" json:"field7956,omitempty"`
-	Field7957 *int64                `protobuf:"varint,3,opt,name=field7957" json:"field7957,omitempty"`
-	Field7958 *int64                `protobuf:"varint,9,opt,name=field7958" json:"field7958,omitempty"`
-	Field7959 []*UnusedEmptyMessage `protobuf:"bytes,10,rep,name=field7959" json:"field7959,omitempty"`
-	Field7960 [][]byte              `protobuf:"bytes,11,rep,name=field7960" json:"field7960,omitempty"`
-	Field7961 *int64                `protobuf:"varint,16,opt,name=field7961" json:"field7961,omitempty"`
-}
-
-func (x *Message7929) Reset() {
-	*x = Message7929{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[9]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7929) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7929) ProtoMessage() {}
-
-func (x *Message7929) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[9]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7929.ProtoReflect.Descriptor instead.
-func (*Message7929) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *Message7929) GetField7942() int64 {
-	if x != nil && x.Field7942 != nil {
-		return *x.Field7942
-	}
-	return 0
-}
-
-func (x *Message7929) GetField7943() int64 {
-	if x != nil && x.Field7943 != nil {
-		return *x.Field7943
-	}
-	return 0
-}
-
-func (x *Message7929) GetField7944() int64 {
-	if x != nil && x.Field7944 != nil {
-		return *x.Field7944
-	}
-	return 0
-}
-
-func (x *Message7929) GetField7945() int64 {
-	if x != nil && x.Field7945 != nil {
-		return *x.Field7945
-	}
-	return 0
-}
-
-func (x *Message7929) GetField7946() int64 {
-	if x != nil && x.Field7946 != nil {
-		return *x.Field7946
-	}
-	return 0
-}
-
-func (x *Message7929) GetField7947() int64 {
-	if x != nil && x.Field7947 != nil {
-		return *x.Field7947
-	}
-	return 0
-}
-
-func (x *Message7929) GetField7948() int64 {
-	if x != nil && x.Field7948 != nil {
-		return *x.Field7948
-	}
-	return 0
-}
-
-func (x *Message7929) GetField7949() int64 {
-	if x != nil && x.Field7949 != nil {
-		return *x.Field7949
-	}
-	return 0
-}
-
-func (x *Message7929) GetField7950() []*Message7919 {
-	if x != nil {
-		return x.Field7950
-	}
-	return nil
-}
-
-func (x *Message7929) GetField7951() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7951
-	}
-	return nil
-}
-
-func (x *Message7929) GetField7952() []*Message7920 {
-	if x != nil {
-		return x.Field7952
-	}
-	return nil
-}
-
-func (x *Message7929) GetField7953() []*Message7921 {
-	if x != nil {
-		return x.Field7953
-	}
-	return nil
-}
-
-func (x *Message7929) GetField7954() []*Message7928 {
-	if x != nil {
-		return x.Field7954
-	}
-	return nil
-}
-
-func (x *Message7929) GetField7955() int64 {
-	if x != nil && x.Field7955 != nil {
-		return *x.Field7955
-	}
-	return 0
-}
-
-func (x *Message7929) GetField7956() bool {
-	if x != nil && x.Field7956 != nil {
-		return *x.Field7956
-	}
-	return false
-}
-
-func (x *Message7929) GetField7957() int64 {
-	if x != nil && x.Field7957 != nil {
-		return *x.Field7957
-	}
-	return 0
-}
-
-func (x *Message7929) GetField7958() int64 {
-	if x != nil && x.Field7958 != nil {
-		return *x.Field7958
-	}
-	return 0
-}
-
-func (x *Message7929) GetField7959() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7959
-	}
-	return nil
-}
-
-func (x *Message7929) GetField7960() [][]byte {
-	if x != nil {
-		return x.Field7960
-	}
-	return nil
-}
-
-func (x *Message7929) GetField7961() int64 {
-	if x != nil && x.Field7961 != nil {
-		return *x.Field7961
-	}
-	return 0
-}
-
-type Message8508 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8517 []*Message8511        `protobuf:"bytes,8,rep,name=field8517" json:"field8517,omitempty"`
-	Field8518 []*Message8512        `protobuf:"bytes,9,rep,name=field8518" json:"field8518,omitempty"`
-	Field8519 []*Message8513        `protobuf:"bytes,11,rep,name=field8519" json:"field8519,omitempty"`
-	Field8520 *bool                 `protobuf:"varint,13,opt,name=field8520" json:"field8520,omitempty"`
-	Field8521 *Message8514          `protobuf:"bytes,14,opt,name=field8521" json:"field8521,omitempty"`
-	Field8522 []*UnusedEmptyMessage `protobuf:"bytes,15,rep,name=field8522" json:"field8522,omitempty"`
-	Field8523 []*Message8515        `protobuf:"bytes,16,rep,name=field8523" json:"field8523,omitempty"`
-	Field8524 []*UnusedEmptyMessage `protobuf:"bytes,17,rep,name=field8524" json:"field8524,omitempty"`
-	Field8525 *int64                `protobuf:"varint,1,opt,name=field8525" json:"field8525,omitempty"`
-	Field8526 *float32              `protobuf:"fixed32,2,opt,name=field8526" json:"field8526,omitempty"`
-	Field8527 *int64                `protobuf:"varint,3,opt,name=field8527" json:"field8527,omitempty"`
-	Field8528 *int64                `protobuf:"varint,4,opt,name=field8528" json:"field8528,omitempty"`
-	Field8529 *int32                `protobuf:"varint,5,opt,name=field8529" json:"field8529,omitempty"`
-	Field8530 []byte                `protobuf:"bytes,6,opt,name=field8530" json:"field8530,omitempty"`
-	Field8531 [][]byte              `protobuf:"bytes,7,rep,name=field8531" json:"field8531,omitempty"`
-	Field8532 *bool                 `protobuf:"varint,10,opt,name=field8532" json:"field8532,omitempty"`
-	Field8533 []byte                `protobuf:"bytes,12,opt,name=field8533" json:"field8533,omitempty"`
-}
-
-func (x *Message8508) Reset() {
-	*x = Message8508{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[10]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8508) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8508) ProtoMessage() {}
-
-func (x *Message8508) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[10]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8508.ProtoReflect.Descriptor instead.
-func (*Message8508) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *Message8508) GetField8517() []*Message8511 {
-	if x != nil {
-		return x.Field8517
-	}
-	return nil
-}
-
-func (x *Message8508) GetField8518() []*Message8512 {
-	if x != nil {
-		return x.Field8518
-	}
-	return nil
-}
-
-func (x *Message8508) GetField8519() []*Message8513 {
-	if x != nil {
-		return x.Field8519
-	}
-	return nil
-}
-
-func (x *Message8508) GetField8520() bool {
-	if x != nil && x.Field8520 != nil {
-		return *x.Field8520
-	}
-	return false
-}
-
-func (x *Message8508) GetField8521() *Message8514 {
-	if x != nil {
-		return x.Field8521
-	}
-	return nil
-}
-
-func (x *Message8508) GetField8522() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8522
-	}
-	return nil
-}
-
-func (x *Message8508) GetField8523() []*Message8515 {
-	if x != nil {
-		return x.Field8523
-	}
-	return nil
-}
-
-func (x *Message8508) GetField8524() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8524
-	}
-	return nil
-}
-
-func (x *Message8508) GetField8525() int64 {
-	if x != nil && x.Field8525 != nil {
-		return *x.Field8525
-	}
-	return 0
-}
-
-func (x *Message8508) GetField8526() float32 {
-	if x != nil && x.Field8526 != nil {
-		return *x.Field8526
-	}
-	return 0
-}
-
-func (x *Message8508) GetField8527() int64 {
-	if x != nil && x.Field8527 != nil {
-		return *x.Field8527
-	}
-	return 0
-}
-
-func (x *Message8508) GetField8528() int64 {
-	if x != nil && x.Field8528 != nil {
-		return *x.Field8528
-	}
-	return 0
-}
-
-func (x *Message8508) GetField8529() int32 {
-	if x != nil && x.Field8529 != nil {
-		return *x.Field8529
-	}
-	return 0
-}
-
-func (x *Message8508) GetField8530() []byte {
-	if x != nil {
-		return x.Field8530
-	}
-	return nil
-}
-
-func (x *Message8508) GetField8531() [][]byte {
-	if x != nil {
-		return x.Field8531
-	}
-	return nil
-}
-
-func (x *Message8508) GetField8532() bool {
-	if x != nil && x.Field8532 != nil {
-		return *x.Field8532
-	}
-	return false
-}
-
-func (x *Message8508) GetField8533() []byte {
-	if x != nil {
-		return x.Field8533
-	}
-	return nil
-}
-
-type Message9122 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field9132 *float32 `protobuf:"fixed32,1,opt,name=field9132" json:"field9132,omitempty"`
-	Field9133 *float32 `protobuf:"fixed32,2,opt,name=field9133" json:"field9133,omitempty"`
-}
-
-func (x *Message9122) Reset() {
-	*x = Message9122{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[11]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message9122) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message9122) ProtoMessage() {}
-
-func (x *Message9122) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[11]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message9122.ProtoReflect.Descriptor instead.
-func (*Message9122) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *Message9122) GetField9132() float32 {
-	if x != nil && x.Field9132 != nil {
-		return *x.Field9132
-	}
-	return 0
-}
-
-func (x *Message9122) GetField9133() float32 {
-	if x != nil && x.Field9133 != nil {
-		return *x.Field9133
-	}
-	return 0
-}
-
-type Message10177 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field10270 []*Message10155 `protobuf:"bytes,1,rep,name=field10270" json:"field10270,omitempty"`
-}
-
-func (x *Message10177) Reset() {
-	*x = Message10177{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[12]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10177) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10177) ProtoMessage() {}
-
-func (x *Message10177) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[12]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10177.ProtoReflect.Descriptor instead.
-func (*Message10177) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *Message10177) GetField10270() []*Message10155 {
-	if x != nil {
-		return x.Field10270
-	}
-	return nil
-}
-
-type Message10278 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field10286 []int32 `protobuf:"varint,1,rep,packed,name=field10286" json:"field10286,omitempty"`
-	Field10287 []int32 `protobuf:"varint,2,rep,packed,name=field10287" json:"field10287,omitempty"`
-	Field10288 *int32  `protobuf:"varint,3,opt,name=field10288" json:"field10288,omitempty"`
-}
-
-func (x *Message10278) Reset() {
-	*x = Message10278{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[13]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10278) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10278) ProtoMessage() {}
-
-func (x *Message10278) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[13]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10278.ProtoReflect.Descriptor instead.
-func (*Message10278) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *Message10278) GetField10286() []int32 {
-	if x != nil {
-		return x.Field10286
-	}
-	return nil
-}
-
-func (x *Message10278) GetField10287() []int32 {
-	if x != nil {
-		return x.Field10287
-	}
-	return nil
-}
-
-func (x *Message10278) GetField10288() int32 {
-	if x != nil && x.Field10288 != nil {
-		return *x.Field10288
-	}
-	return 0
-}
-
-type Message10323 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field10360 []*Message10320 `protobuf:"bytes,1,rep,name=field10360" json:"field10360,omitempty"`
-}
-
-func (x *Message10323) Reset() {
-	*x = Message10323{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[14]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10323) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10323) ProtoMessage() {}
-
-func (x *Message10323) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[14]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10323.ProtoReflect.Descriptor instead.
-func (*Message10323) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *Message10323) GetField10360() []*Message10320 {
-	if x != nil {
-		return x.Field10360
-	}
-	return nil
-}
-
-type Message10324 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field10362 []*Message10322 `protobuf:"bytes,1,rep,name=field10362" json:"field10362,omitempty"`
-	Field10363 *Message10321   `protobuf:"bytes,2,opt,name=field10363" json:"field10363,omitempty"`
-}
-
-func (x *Message10324) Reset() {
-	*x = Message10324{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[15]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10324) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10324) ProtoMessage() {}
-
-func (x *Message10324) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[15]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10324.ProtoReflect.Descriptor instead.
-func (*Message10324) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{15}
-}
-
-func (x *Message10324) GetField10362() []*Message10322 {
-	if x != nil {
-		return x.Field10362
-	}
-	return nil
-}
-
-func (x *Message10324) GetField10363() *Message10321 {
-	if x != nil {
-		return x.Field10363
-	}
-	return nil
-}
-
-type Message11990 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12030 []*Message11988 `protobuf:"bytes,1,rep,name=field12030" json:"field12030,omitempty"`
-}
-
-func (x *Message11990) Reset() {
-	*x = Message11990{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[16]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message11990) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message11990) ProtoMessage() {}
-
-func (x *Message11990) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[16]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message11990.ProtoReflect.Descriptor instead.
-func (*Message11990) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *Message11990) GetField12030() []*Message11988 {
-	if x != nil {
-		return x.Field12030
-	}
-	return nil
-}
-
-type Message12691 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12713 *string       `protobuf:"bytes,1,opt,name=field12713" json:"field12713,omitempty"`
-	Field12714 *int32        `protobuf:"varint,2,opt,name=field12714" json:"field12714,omitempty"`
-	Field12715 *Message12668 `protobuf:"bytes,3,opt,name=field12715" json:"field12715,omitempty"`
-}
-
-func (x *Message12691) Reset() {
-	*x = Message12691{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[17]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12691) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12691) ProtoMessage() {}
-
-func (x *Message12691) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[17]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12691.ProtoReflect.Descriptor instead.
-func (*Message12691) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{17}
-}
-
-func (x *Message12691) GetField12713() string {
-	if x != nil && x.Field12713 != nil {
-		return *x.Field12713
-	}
-	return ""
-}
-
-func (x *Message12691) GetField12714() int32 {
-	if x != nil && x.Field12714 != nil {
-		return *x.Field12714
-	}
-	return 0
-}
-
-func (x *Message12691) GetField12715() *Message12668 {
-	if x != nil {
-		return x.Field12715
-	}
-	return nil
-}
-
-type Message12870 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12879 *int32          `protobuf:"varint,1,req,name=field12879" json:"field12879,omitempty"`
-	Field12880 *int32          `protobuf:"varint,7,opt,name=field12880" json:"field12880,omitempty"`
-	Field12881 *int32          `protobuf:"varint,2,req,name=field12881" json:"field12881,omitempty"`
-	Field12882 *uint64         `protobuf:"varint,3,opt,name=field12882" json:"field12882,omitempty"`
-	Field12883 *string         `protobuf:"bytes,2001,opt,name=field12883" json:"field12883,omitempty"`
-	Field12884 *uint64         `protobuf:"fixed64,4,opt,name=field12884" json:"field12884,omitempty"`
-	Field12885 []uint64        `protobuf:"fixed64,14,rep,name=field12885" json:"field12885,omitempty"`
-	Field12886 *int32          `protobuf:"varint,9,opt,name=field12886" json:"field12886,omitempty"`
-	Field12887 *int64          `protobuf:"varint,18,opt,name=field12887" json:"field12887,omitempty"`
-	Field12888 []*Message12870 `protobuf:"bytes,8,rep,name=field12888" json:"field12888,omitempty"`
-	Field12889 *int32          `protobuf:"varint,5,opt,name=field12889" json:"field12889,omitempty"`
-	Field12890 *uint64         `protobuf:"varint,6,opt,name=field12890" json:"field12890,omitempty"`
-	Field12891 *int32          `protobuf:"varint,10,opt,name=field12891" json:"field12891,omitempty"`
-	Field12892 *int32          `protobuf:"varint,11,opt,name=field12892" json:"field12892,omitempty"`
-	Field12893 *float64        `protobuf:"fixed64,12,opt,name=field12893" json:"field12893,omitempty"`
-	Field12894 *Message12825   `protobuf:"bytes,13,opt,name=field12894" json:"field12894,omitempty"`
-	Field12895 *float64        `protobuf:"fixed64,15,opt,name=field12895" json:"field12895,omitempty"`
-	Field12896 *string         `protobuf:"bytes,16,opt,name=field12896" json:"field12896,omitempty"`
-	Field12897 *Enum12871      `protobuf:"varint,17,opt,name=field12897,enum=benchmarks.google_message3.Enum12871" json:"field12897,omitempty"`
-	Field12898 *int32          `protobuf:"varint,19,opt,name=field12898" json:"field12898,omitempty"`
-}
-
-func (x *Message12870) Reset() {
-	*x = Message12870{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[18]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12870) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12870) ProtoMessage() {}
-
-func (x *Message12870) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[18]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12870.ProtoReflect.Descriptor instead.
-func (*Message12870) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{18}
-}
-
-func (x *Message12870) GetField12879() int32 {
-	if x != nil && x.Field12879 != nil {
-		return *x.Field12879
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12880() int32 {
-	if x != nil && x.Field12880 != nil {
-		return *x.Field12880
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12881() int32 {
-	if x != nil && x.Field12881 != nil {
-		return *x.Field12881
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12882() uint64 {
-	if x != nil && x.Field12882 != nil {
-		return *x.Field12882
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12883() string {
-	if x != nil && x.Field12883 != nil {
-		return *x.Field12883
-	}
-	return ""
-}
-
-func (x *Message12870) GetField12884() uint64 {
-	if x != nil && x.Field12884 != nil {
-		return *x.Field12884
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12885() []uint64 {
-	if x != nil {
-		return x.Field12885
-	}
-	return nil
-}
-
-func (x *Message12870) GetField12886() int32 {
-	if x != nil && x.Field12886 != nil {
-		return *x.Field12886
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12887() int64 {
-	if x != nil && x.Field12887 != nil {
-		return *x.Field12887
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12888() []*Message12870 {
-	if x != nil {
-		return x.Field12888
-	}
-	return nil
-}
-
-func (x *Message12870) GetField12889() int32 {
-	if x != nil && x.Field12889 != nil {
-		return *x.Field12889
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12890() uint64 {
-	if x != nil && x.Field12890 != nil {
-		return *x.Field12890
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12891() int32 {
-	if x != nil && x.Field12891 != nil {
-		return *x.Field12891
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12892() int32 {
-	if x != nil && x.Field12892 != nil {
-		return *x.Field12892
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12893() float64 {
-	if x != nil && x.Field12893 != nil {
-		return *x.Field12893
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12894() *Message12825 {
-	if x != nil {
-		return x.Field12894
-	}
-	return nil
-}
-
-func (x *Message12870) GetField12895() float64 {
-	if x != nil && x.Field12895 != nil {
-		return *x.Field12895
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12896() string {
-	if x != nil && x.Field12896 != nil {
-		return *x.Field12896
-	}
-	return ""
-}
-
-func (x *Message12870) GetField12897() Enum12871 {
-	if x != nil && x.Field12897 != nil {
-		return *x.Field12897
-	}
-	return Enum12871_ENUM_VALUE12872
-}
-
-func (x *Message12870) GetField12898() int32 {
-	if x != nil && x.Field12898 != nil {
-		return *x.Field12898
-	}
-	return 0
-}
-
-type Message13154 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field13164 *float32 `protobuf:"fixed32,1,req,name=field13164" json:"field13164,omitempty"`
-	Field13165 *float32 `protobuf:"fixed32,2,req,name=field13165" json:"field13165,omitempty"`
-}
-
-func (x *Message13154) Reset() {
-	*x = Message13154{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[19]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message13154) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message13154) ProtoMessage() {}
-
-func (x *Message13154) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[19]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message13154.ProtoReflect.Descriptor instead.
-func (*Message13154) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{19}
-}
-
-func (x *Message13154) GetField13164() float32 {
-	if x != nil && x.Field13164 != nil {
-		return *x.Field13164
-	}
-	return 0
-}
-
-func (x *Message13154) GetField13165() float32 {
-	if x != nil && x.Field13165 != nil {
-		return *x.Field13165
-	}
-	return 0
-}
-
-type Message16507 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	Field16510 *bool                 `protobuf:"varint,3,opt,name=field16510" json:"field16510,omitempty"`
-	Field16511 *bool                 `protobuf:"varint,4,opt,name=field16511" json:"field16511,omitempty"`
-	Field16512 *bool                 `protobuf:"varint,14,opt,name=field16512" json:"field16512,omitempty"`
-	Field16513 []string              `protobuf:"bytes,5,rep,name=field16513" json:"field16513,omitempty"`
-	Field16514 []string              `protobuf:"bytes,6,rep,name=field16514" json:"field16514,omitempty"`
-	Field16515 *string               `protobuf:"bytes,8,opt,name=field16515" json:"field16515,omitempty"`
-	Field16516 []int32               `protobuf:"varint,9,rep,name=field16516" json:"field16516,omitempty"`
-	Field16517 []int32               `protobuf:"varint,10,rep,name=field16517" json:"field16517,omitempty"`
-	Field16518 *int32                `protobuf:"varint,7,opt,name=field16518" json:"field16518,omitempty"`
-	Field16519 *string               `protobuf:"bytes,15,opt,name=field16519" json:"field16519,omitempty"`
-	Field16520 []string              `protobuf:"bytes,11,rep,name=field16520" json:"field16520,omitempty"`
-	Field16521 []*UnusedEmptyMessage `protobuf:"bytes,27,rep,name=field16521" json:"field16521,omitempty"`
-	Field16522 []*UnusedEmptyMessage `protobuf:"bytes,22,rep,name=field16522" json:"field16522,omitempty"`
-	Field16523 []*UnusedEmptyMessage `protobuf:"bytes,28,rep,name=field16523" json:"field16523,omitempty"`
-	Field16524 *string               `protobuf:"bytes,18,opt,name=field16524" json:"field16524,omitempty"`
-	Field16525 *int32                `protobuf:"varint,19,opt,name=field16525" json:"field16525,omitempty"`
-	Field16526 *int32                `protobuf:"varint,20,opt,name=field16526" json:"field16526,omitempty"`
-	Field16527 *UnusedEmptyMessage   `protobuf:"bytes,23,opt,name=field16527" json:"field16527,omitempty"`
-	Field16528 *bool                 `protobuf:"varint,24,opt,name=field16528" json:"field16528,omitempty"`
-	Field16529 []string              `protobuf:"bytes,25,rep,name=field16529" json:"field16529,omitempty"`
-	Field16530 *float64              `protobuf:"fixed64,26,opt,name=field16530" json:"field16530,omitempty"`
-	Field16531 *Message16478         `protobuf:"bytes,30,opt,name=field16531" json:"field16531,omitempty"`
-	Field16532 *bool                 `protobuf:"varint,31,opt,name=field16532" json:"field16532,omitempty"`
-	Field16533 *string               `protobuf:"bytes,32,opt,name=field16533" json:"field16533,omitempty"`
-	Field16534 *bool                 `protobuf:"varint,33,opt,name=field16534" json:"field16534,omitempty"`
-	Field16535 *bool                 `protobuf:"varint,35,opt,name=field16535" json:"field16535,omitempty"`
-	Field16536 *bool                 `protobuf:"varint,36,opt,name=field16536" json:"field16536,omitempty"`
-	Field16537 *bool                 `protobuf:"varint,37,opt,name=field16537" json:"field16537,omitempty"`
-	Field16538 *bool                 `protobuf:"varint,38,opt,name=field16538" json:"field16538,omitempty"`
-	Field16539 *bool                 `protobuf:"varint,39,opt,name=field16539" json:"field16539,omitempty"`
-	Field16540 *bool                 `protobuf:"varint,40,opt,name=field16540" json:"field16540,omitempty"`
-	Field16541 []string              `protobuf:"bytes,41,rep,name=field16541" json:"field16541,omitempty"`
-}
-
-func (x *Message16507) Reset() {
-	*x = Message16507{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[20]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message16507) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message16507) ProtoMessage() {}
-
-func (x *Message16507) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[20]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message16507.ProtoReflect.Descriptor instead.
-func (*Message16507) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{20}
-}
-
-func (x *Message16507) GetField16510() bool {
-	if x != nil && x.Field16510 != nil {
-		return *x.Field16510
-	}
-	return false
-}
-
-func (x *Message16507) GetField16511() bool {
-	if x != nil && x.Field16511 != nil {
-		return *x.Field16511
-	}
-	return false
-}
-
-func (x *Message16507) GetField16512() bool {
-	if x != nil && x.Field16512 != nil {
-		return *x.Field16512
-	}
-	return false
-}
-
-func (x *Message16507) GetField16513() []string {
-	if x != nil {
-		return x.Field16513
-	}
-	return nil
-}
-
-func (x *Message16507) GetField16514() []string {
-	if x != nil {
-		return x.Field16514
-	}
-	return nil
-}
-
-func (x *Message16507) GetField16515() string {
-	if x != nil && x.Field16515 != nil {
-		return *x.Field16515
-	}
-	return ""
-}
-
-func (x *Message16507) GetField16516() []int32 {
-	if x != nil {
-		return x.Field16516
-	}
-	return nil
-}
-
-func (x *Message16507) GetField16517() []int32 {
-	if x != nil {
-		return x.Field16517
-	}
-	return nil
-}
-
-func (x *Message16507) GetField16518() int32 {
-	if x != nil && x.Field16518 != nil {
-		return *x.Field16518
-	}
-	return 0
-}
-
-func (x *Message16507) GetField16519() string {
-	if x != nil && x.Field16519 != nil {
-		return *x.Field16519
-	}
-	return ""
-}
-
-func (x *Message16507) GetField16520() []string {
-	if x != nil {
-		return x.Field16520
-	}
-	return nil
-}
-
-func (x *Message16507) GetField16521() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field16521
-	}
-	return nil
-}
-
-func (x *Message16507) GetField16522() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field16522
-	}
-	return nil
-}
-
-func (x *Message16507) GetField16523() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field16523
-	}
-	return nil
-}
-
-func (x *Message16507) GetField16524() string {
-	if x != nil && x.Field16524 != nil {
-		return *x.Field16524
-	}
-	return ""
-}
-
-func (x *Message16507) GetField16525() int32 {
-	if x != nil && x.Field16525 != nil {
-		return *x.Field16525
-	}
-	return 0
-}
-
-func (x *Message16507) GetField16526() int32 {
-	if x != nil && x.Field16526 != nil {
-		return *x.Field16526
-	}
-	return 0
-}
-
-func (x *Message16507) GetField16527() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field16527
-	}
-	return nil
-}
-
-func (x *Message16507) GetField16528() bool {
-	if x != nil && x.Field16528 != nil {
-		return *x.Field16528
-	}
-	return false
-}
-
-func (x *Message16507) GetField16529() []string {
-	if x != nil {
-		return x.Field16529
-	}
-	return nil
-}
-
-func (x *Message16507) GetField16530() float64 {
-	if x != nil && x.Field16530 != nil {
-		return *x.Field16530
-	}
-	return 0
-}
-
-func (x *Message16507) GetField16531() *Message16478 {
-	if x != nil {
-		return x.Field16531
-	}
-	return nil
-}
-
-func (x *Message16507) GetField16532() bool {
-	if x != nil && x.Field16532 != nil {
-		return *x.Field16532
-	}
-	return false
-}
-
-func (x *Message16507) GetField16533() string {
-	if x != nil && x.Field16533 != nil {
-		return *x.Field16533
-	}
-	return ""
-}
-
-func (x *Message16507) GetField16534() bool {
-	if x != nil && x.Field16534 != nil {
-		return *x.Field16534
-	}
-	return false
-}
-
-func (x *Message16507) GetField16535() bool {
-	if x != nil && x.Field16535 != nil {
-		return *x.Field16535
-	}
-	return false
-}
-
-func (x *Message16507) GetField16536() bool {
-	if x != nil && x.Field16536 != nil {
-		return *x.Field16536
-	}
-	return false
-}
-
-func (x *Message16507) GetField16537() bool {
-	if x != nil && x.Field16537 != nil {
-		return *x.Field16537
-	}
-	return false
-}
-
-func (x *Message16507) GetField16538() bool {
-	if x != nil && x.Field16538 != nil {
-		return *x.Field16538
-	}
-	return false
-}
-
-func (x *Message16507) GetField16539() bool {
-	if x != nil && x.Field16539 != nil {
-		return *x.Field16539
-	}
-	return false
-}
-
-func (x *Message16507) GetField16540() bool {
-	if x != nil && x.Field16540 != nil {
-		return *x.Field16540
-	}
-	return false
-}
-
-func (x *Message16507) GetField16541() []string {
-	if x != nil {
-		return x.Field16541
-	}
-	return nil
-}
-
-type Message16564 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field16568 []*Message16552 `protobuf:"bytes,1,rep,name=field16568" json:"field16568,omitempty"`
-}
-
-func (x *Message16564) Reset() {
-	*x = Message16564{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[21]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message16564) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message16564) ProtoMessage() {}
-
-func (x *Message16564) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[21]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message16564.ProtoReflect.Descriptor instead.
-func (*Message16564) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{21}
-}
-
-func (x *Message16564) GetField16568() []*Message16552 {
-	if x != nil {
-		return x.Field16568
-	}
-	return nil
-}
-
-type Message16661 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field16671 []*Message16660 `protobuf:"bytes,1,rep,name=field16671" json:"field16671,omitempty"`
-	Field16672 []uint64        `protobuf:"varint,2,rep,name=field16672" json:"field16672,omitempty"`
-}
-
-func (x *Message16661) Reset() {
-	*x = Message16661{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[22]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message16661) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message16661) ProtoMessage() {}
-
-func (x *Message16661) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[22]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message16661.ProtoReflect.Descriptor instead.
-func (*Message16661) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{22}
-}
-
-func (x *Message16661) GetField16671() []*Message16660 {
-	if x != nil {
-		return x.Field16671
-	}
-	return nil
-}
-
-func (x *Message16661) GetField16672() []uint64 {
-	if x != nil {
-		return x.Field16672
-	}
-	return nil
-}
-
-type Message16746 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field16806 []*Message16727 `protobuf:"bytes,1,rep,name=field16806" json:"field16806,omitempty"`
-	Field16807 *bool           `protobuf:"varint,2,opt,name=field16807" json:"field16807,omitempty"`
-	Field16808 *bool           `protobuf:"varint,3,opt,name=field16808" json:"field16808,omitempty"`
-	Field16809 []*Message16725 `protobuf:"bytes,4,rep,name=field16809" json:"field16809,omitempty"`
-}
-
-func (x *Message16746) Reset() {
-	*x = Message16746{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[23]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message16746) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message16746) ProtoMessage() {}
-
-func (x *Message16746) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[23]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message16746.ProtoReflect.Descriptor instead.
-func (*Message16746) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{23}
-}
-
-func (x *Message16746) GetField16806() []*Message16727 {
-	if x != nil {
-		return x.Field16806
-	}
-	return nil
-}
-
-func (x *Message16746) GetField16807() bool {
-	if x != nil && x.Field16807 != nil {
-		return *x.Field16807
-	}
-	return false
-}
-
-func (x *Message16746) GetField16808() bool {
-	if x != nil && x.Field16808 != nil {
-		return *x.Field16808
-	}
-	return false
-}
-
-func (x *Message16746) GetField16809() []*Message16725 {
-	if x != nil {
-		return x.Field16809
-	}
-	return nil
-}
-
-type Message17786 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Message17787 []*Message17786_Message17787 `protobuf:"group,1,rep,name=Message17787,json=message17787" json:"message17787,omitempty"`
-	Field18175   []*Message17782              `protobuf:"bytes,20,rep,name=field18175" json:"field18175,omitempty"`
-}
-
-func (x *Message17786) Reset() {
-	*x = Message17786{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[24]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message17786) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message17786) ProtoMessage() {}
-
-func (x *Message17786) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[24]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message17786.ProtoReflect.Descriptor instead.
-func (*Message17786) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{24}
-}
-
-func (x *Message17786) GetMessage17787() []*Message17786_Message17787 {
-	if x != nil {
-		return x.Message17787
-	}
-	return nil
-}
-
-func (x *Message17786) GetField18175() []*Message17782 {
-	if x != nil {
-		return x.Field18175
-	}
-	return nil
-}
-
-type Message22857 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field22874 []*Message22853 `protobuf:"bytes,1,rep,name=field22874" json:"field22874,omitempty"`
-}
-
-func (x *Message22857) Reset() {
-	*x = Message22857{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[25]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message22857) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message22857) ProtoMessage() {}
-
-func (x *Message22857) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[25]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message22857.ProtoReflect.Descriptor instead.
-func (*Message22857) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{25}
-}
-
-func (x *Message22857) GetField22874() []*Message22853 {
-	if x != nil {
-		return x.Field22874
-	}
-	return nil
-}
-
-type Message24404 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Message24405 []*Message24404_Message24405 `protobuf:"group,1,rep,name=Message24405,json=message24405" json:"message24405,omitempty"`
-	Field24684   *Message24403                `protobuf:"bytes,30,opt,name=field24684" json:"field24684,omitempty"`
-}
-
-func (x *Message24404) Reset() {
-	*x = Message24404{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[26]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message24404) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message24404) ProtoMessage() {}
-
-func (x *Message24404) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[26]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message24404.ProtoReflect.Descriptor instead.
-func (*Message24404) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{26}
-}
-
-func (x *Message24404) GetMessage24405() []*Message24404_Message24405 {
-	if x != nil {
-		return x.Message24405
-	}
-	return nil
-}
-
-func (x *Message24404) GetField24684() *Message24403 {
-	if x != nil {
-		return x.Field24684
-	}
-	return nil
-}
-
-type Message27300 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field27302 []*UnusedEmptyMessage `protobuf:"bytes,1,rep,name=field27302" json:"field27302,omitempty"`
-	Field27303 *string               `protobuf:"bytes,2,opt,name=field27303" json:"field27303,omitempty"`
-}
-
-func (x *Message27300) Reset() {
-	*x = Message27300{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[27]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message27300) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message27300) ProtoMessage() {}
-
-func (x *Message27300) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[27]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message27300.ProtoReflect.Descriptor instead.
-func (*Message27300) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{27}
-}
-
-func (x *Message27300) GetField27302() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field27302
-	}
-	return nil
-}
-
-func (x *Message27300) GetField27303() string {
-	if x != nil && x.Field27303 != nil {
-		return *x.Field27303
-	}
-	return ""
-}
-
-type Message27453 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field27459 *string             `protobuf:"bytes,15,opt,name=field27459" json:"field27459,omitempty"`
-	Field27460 []string            `protobuf:"bytes,1,rep,name=field27460" json:"field27460,omitempty"`
-	Field27461 []float32           `protobuf:"fixed32,6,rep,name=field27461" json:"field27461,omitempty"`
-	Field27462 []int32             `protobuf:"varint,27,rep,name=field27462" json:"field27462,omitempty"`
-	Field27463 []int32             `protobuf:"varint,28,rep,name=field27463" json:"field27463,omitempty"`
-	Field27464 []*Message27454     `protobuf:"bytes,24,rep,name=field27464" json:"field27464,omitempty"`
-	Field27465 []string            `protobuf:"bytes,2,rep,name=field27465" json:"field27465,omitempty"`
-	Field27466 []float32           `protobuf:"fixed32,7,rep,name=field27466" json:"field27466,omitempty"`
-	Field27467 []string            `protobuf:"bytes,22,rep,name=field27467" json:"field27467,omitempty"`
-	Field27468 []string            `protobuf:"bytes,23,rep,name=field27468" json:"field27468,omitempty"`
-	Field27469 *string             `protobuf:"bytes,26,opt,name=field27469" json:"field27469,omitempty"`
-	Field27470 []*Message27357     `protobuf:"bytes,8,rep,name=field27470" json:"field27470,omitempty"`
-	Field27471 *Message27360       `protobuf:"bytes,16,opt,name=field27471" json:"field27471,omitempty"`
-	Field27472 *string             `protobuf:"bytes,25,opt,name=field27472" json:"field27472,omitempty"`
-	Field27473 *string             `protobuf:"bytes,11,opt,name=field27473" json:"field27473,omitempty"`
-	Field27474 *bool               `protobuf:"varint,13,opt,name=field27474" json:"field27474,omitempty"`
-	Field27475 *bool               `protobuf:"varint,14,opt,name=field27475" json:"field27475,omitempty"`
-	Field27476 *bool               `protobuf:"varint,17,opt,name=field27476" json:"field27476,omitempty"`
-	Field27477 *UnusedEmptyMessage `protobuf:"bytes,12,opt,name=field27477" json:"field27477,omitempty"`
-	Field27478 *bool               `protobuf:"varint,34268945,opt,name=field27478" json:"field27478,omitempty"`
-	Field27479 *bool               `protobuf:"varint,20,opt,name=field27479" json:"field27479,omitempty"`
-	Field27480 *string             `protobuf:"bytes,21,opt,name=field27480" json:"field27480,omitempty"`
-	Field27481 *UnusedEmptyMessage `protobuf:"bytes,10,opt,name=field27481" json:"field27481,omitempty"`
-}
-
-func (x *Message27453) Reset() {
-	*x = Message27453{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[28]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message27453) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message27453) ProtoMessage() {}
-
-func (x *Message27453) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[28]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message27453.ProtoReflect.Descriptor instead.
-func (*Message27453) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{28}
-}
-
-func (x *Message27453) GetField27459() string {
-	if x != nil && x.Field27459 != nil {
-		return *x.Field27459
-	}
-	return ""
-}
-
-func (x *Message27453) GetField27460() []string {
-	if x != nil {
-		return x.Field27460
-	}
-	return nil
-}
-
-func (x *Message27453) GetField27461() []float32 {
-	if x != nil {
-		return x.Field27461
-	}
-	return nil
-}
-
-func (x *Message27453) GetField27462() []int32 {
-	if x != nil {
-		return x.Field27462
-	}
-	return nil
-}
-
-func (x *Message27453) GetField27463() []int32 {
-	if x != nil {
-		return x.Field27463
-	}
-	return nil
-}
-
-func (x *Message27453) GetField27464() []*Message27454 {
-	if x != nil {
-		return x.Field27464
-	}
-	return nil
-}
-
-func (x *Message27453) GetField27465() []string {
-	if x != nil {
-		return x.Field27465
-	}
-	return nil
-}
-
-func (x *Message27453) GetField27466() []float32 {
-	if x != nil {
-		return x.Field27466
-	}
-	return nil
-}
-
-func (x *Message27453) GetField27467() []string {
-	if x != nil {
-		return x.Field27467
-	}
-	return nil
-}
-
-func (x *Message27453) GetField27468() []string {
-	if x != nil {
-		return x.Field27468
-	}
-	return nil
-}
-
-func (x *Message27453) GetField27469() string {
-	if x != nil && x.Field27469 != nil {
-		return *x.Field27469
-	}
-	return ""
-}
-
-func (x *Message27453) GetField27470() []*Message27357 {
-	if x != nil {
-		return x.Field27470
-	}
-	return nil
-}
-
-func (x *Message27453) GetField27471() *Message27360 {
-	if x != nil {
-		return x.Field27471
-	}
-	return nil
-}
-
-func (x *Message27453) GetField27472() string {
-	if x != nil && x.Field27472 != nil {
-		return *x.Field27472
-	}
-	return ""
-}
-
-func (x *Message27453) GetField27473() string {
-	if x != nil && x.Field27473 != nil {
-		return *x.Field27473
-	}
-	return ""
-}
-
-func (x *Message27453) GetField27474() bool {
-	if x != nil && x.Field27474 != nil {
-		return *x.Field27474
-	}
-	return false
-}
-
-func (x *Message27453) GetField27475() bool {
-	if x != nil && x.Field27475 != nil {
-		return *x.Field27475
-	}
-	return false
-}
-
-func (x *Message27453) GetField27476() bool {
-	if x != nil && x.Field27476 != nil {
-		return *x.Field27476
-	}
-	return false
-}
-
-func (x *Message27453) GetField27477() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field27477
-	}
-	return nil
-}
-
-func (x *Message27453) GetField27478() bool {
-	if x != nil && x.Field27478 != nil {
-		return *x.Field27478
-	}
-	return false
-}
-
-func (x *Message27453) GetField27479() bool {
-	if x != nil && x.Field27479 != nil {
-		return *x.Field27479
-	}
-	return false
-}
-
-func (x *Message27453) GetField27480() string {
-	if x != nil && x.Field27480 != nil {
-		return *x.Field27480
-	}
-	return ""
-}
-
-func (x *Message27453) GetField27481() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field27481
-	}
-	return nil
-}
-
-type Message3672_Message3673 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field3738 *Enum3476 `protobuf:"varint,4,req,name=field3738,enum=benchmarks.google_message3.Enum3476" json:"field3738,omitempty"`
-	Field3739 *int32    `protobuf:"varint,5,req,name=field3739" json:"field3739,omitempty"`
-}
-
-func (x *Message3672_Message3673) Reset() {
-	*x = Message3672_Message3673{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[29]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3672_Message3673) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3672_Message3673) ProtoMessage() {}
-
-func (x *Message3672_Message3673) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[29]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3672_Message3673.ProtoReflect.Descriptor instead.
-func (*Message3672_Message3673) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{2, 0}
-}
-
-func (x *Message3672_Message3673) GetField3738() Enum3476 {
-	if x != nil && x.Field3738 != nil {
-		return *x.Field3738
-	}
-	return Enum3476_ENUM_VALUE3477
-}
-
-func (x *Message3672_Message3673) GetField3739() int32 {
-	if x != nil && x.Field3739 != nil {
-		return *x.Field3739
-	}
-	return 0
-}
-
-type Message3672_Message3674 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field3740 *Enum3476 `protobuf:"varint,7,req,name=field3740,enum=benchmarks.google_message3.Enum3476" json:"field3740,omitempty"`
-	Field3741 *int32    `protobuf:"varint,8,req,name=field3741" json:"field3741,omitempty"`
-}
-
-func (x *Message3672_Message3674) Reset() {
-	*x = Message3672_Message3674{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[30]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3672_Message3674) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3672_Message3674) ProtoMessage() {}
-
-func (x *Message3672_Message3674) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[30]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3672_Message3674.ProtoReflect.Descriptor instead.
-func (*Message3672_Message3674) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{2, 1}
-}
-
-func (x *Message3672_Message3674) GetField3740() Enum3476 {
-	if x != nil && x.Field3740 != nil {
-		return *x.Field3740
-	}
-	return Enum3476_ENUM_VALUE3477
-}
-
-func (x *Message3672_Message3674) GetField3741() int32 {
-	if x != nil && x.Field3741 != nil {
-		return *x.Field3741
-	}
-	return 0
-}
-
-type Message17786_Message17787 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field18177 *int32                `protobuf:"varint,2,req,name=field18177" json:"field18177,omitempty"`
-	Field18178 *int32                `protobuf:"varint,3,req,name=field18178" json:"field18178,omitempty"`
-	Field18179 *Message17783         `protobuf:"bytes,4,opt,name=field18179" json:"field18179,omitempty"`
-	Field18180 *UnusedEmptyMessage   `protobuf:"bytes,5,opt,name=field18180" json:"field18180,omitempty"`
-	Field18181 *UnusedEmptyMessage   `protobuf:"bytes,6,opt,name=field18181" json:"field18181,omitempty"`
-	Field18182 []*UnusedEmptyMessage `protobuf:"bytes,8,rep,name=field18182" json:"field18182,omitempty"`
-	Field18183 *UnusedEmptyMessage   `protobuf:"bytes,9,opt,name=field18183" json:"field18183,omitempty"`
-	Field18184 *Message17726         `protobuf:"bytes,10,opt,name=field18184" json:"field18184,omitempty"`
-	Field18185 *UnusedEmptyMessage   `protobuf:"bytes,11,opt,name=field18185" json:"field18185,omitempty"`
-	Field18186 *Message16945         `protobuf:"bytes,102,opt,name=field18186" json:"field18186,omitempty"`
-	Field18187 *UnusedEmptyMessage   `protobuf:"bytes,12,opt,name=field18187" json:"field18187,omitempty"`
-	Field18188 *UnusedEmptyMessage   `protobuf:"bytes,13,opt,name=field18188" json:"field18188,omitempty"`
-	Field18189 *UnusedEmptyMessage   `protobuf:"bytes,7,opt,name=field18189" json:"field18189,omitempty"`
-	Field18190 *UnusedEmptyMessage   `protobuf:"bytes,100,opt,name=field18190" json:"field18190,omitempty"`
-	Field18191 *UnusedEmptyMessage   `protobuf:"bytes,101,opt,name=field18191" json:"field18191,omitempty"`
-	Field18192 *UnusedEmptyMessage   `protobuf:"bytes,14,opt,name=field18192" json:"field18192,omitempty"`
-	Field18193 *UnusedEmptyMessage   `protobuf:"bytes,19,opt,name=field18193" json:"field18193,omitempty"`
-	Field18194 *UnusedEmptyMessage   `protobuf:"bytes,22,opt,name=field18194" json:"field18194,omitempty"`
-	Field18195 *UnusedEmptyMessage   `protobuf:"bytes,24,opt,name=field18195" json:"field18195,omitempty"`
-	Field18196 *Enum16925            `protobuf:"varint,21,opt,name=field18196,enum=benchmarks.google_message3.Enum16925" json:"field18196,omitempty"`
-	Field18197 *bool                 `protobuf:"varint,18,opt,name=field18197" json:"field18197,omitempty"`
-	Field18198 []UnusedEnum          `protobuf:"varint,23,rep,name=field18198,enum=benchmarks.google_message3.UnusedEnum" json:"field18198,omitempty"`
-	Field18199 *UnusedEmptyMessage   `protobuf:"bytes,15,opt,name=field18199" json:"field18199,omitempty"`
-	Field18200 *string               `protobuf:"bytes,16,opt,name=field18200" json:"field18200,omitempty"`
-	Field18201 *string               `protobuf:"bytes,17,opt,name=field18201" json:"field18201,omitempty"`
-	Field18202 *bool                 `protobuf:"varint,99,opt,name=field18202" json:"field18202,omitempty"`
-}
-
-func (x *Message17786_Message17787) Reset() {
-	*x = Message17786_Message17787{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[31]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message17786_Message17787) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message17786_Message17787) ProtoMessage() {}
-
-func (x *Message17786_Message17787) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[31]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message17786_Message17787.ProtoReflect.Descriptor instead.
-func (*Message17786_Message17787) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{24, 0}
-}
-
-func (x *Message17786_Message17787) GetField18177() int32 {
-	if x != nil && x.Field18177 != nil {
-		return *x.Field18177
-	}
-	return 0
-}
-
-func (x *Message17786_Message17787) GetField18178() int32 {
-	if x != nil && x.Field18178 != nil {
-		return *x.Field18178
-	}
-	return 0
-}
-
-func (x *Message17786_Message17787) GetField18179() *Message17783 {
-	if x != nil {
-		return x.Field18179
-	}
-	return nil
-}
-
-func (x *Message17786_Message17787) GetField18180() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18180
-	}
-	return nil
-}
-
-func (x *Message17786_Message17787) GetField18181() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18181
-	}
-	return nil
-}
-
-func (x *Message17786_Message17787) GetField18182() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18182
-	}
-	return nil
-}
-
-func (x *Message17786_Message17787) GetField18183() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18183
-	}
-	return nil
-}
-
-func (x *Message17786_Message17787) GetField18184() *Message17726 {
-	if x != nil {
-		return x.Field18184
-	}
-	return nil
-}
-
-func (x *Message17786_Message17787) GetField18185() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18185
-	}
-	return nil
-}
-
-func (x *Message17786_Message17787) GetField18186() *Message16945 {
-	if x != nil {
-		return x.Field18186
-	}
-	return nil
-}
-
-func (x *Message17786_Message17787) GetField18187() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18187
-	}
-	return nil
-}
-
-func (x *Message17786_Message17787) GetField18188() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18188
-	}
-	return nil
-}
-
-func (x *Message17786_Message17787) GetField18189() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18189
-	}
-	return nil
-}
-
-func (x *Message17786_Message17787) GetField18190() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18190
-	}
-	return nil
-}
-
-func (x *Message17786_Message17787) GetField18191() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18191
-	}
-	return nil
-}
-
-func (x *Message17786_Message17787) GetField18192() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18192
-	}
-	return nil
-}
-
-func (x *Message17786_Message17787) GetField18193() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18193
-	}
-	return nil
-}
-
-func (x *Message17786_Message17787) GetField18194() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18194
-	}
-	return nil
-}
-
-func (x *Message17786_Message17787) GetField18195() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18195
-	}
-	return nil
-}
-
-func (x *Message17786_Message17787) GetField18196() Enum16925 {
-	if x != nil && x.Field18196 != nil {
-		return *x.Field18196
-	}
-	return Enum16925_ENUM_VALUE16926
-}
-
-func (x *Message17786_Message17787) GetField18197() bool {
-	if x != nil && x.Field18197 != nil {
-		return *x.Field18197
-	}
-	return false
-}
-
-func (x *Message17786_Message17787) GetField18198() []UnusedEnum {
-	if x != nil {
-		return x.Field18198
-	}
-	return nil
-}
-
-func (x *Message17786_Message17787) GetField18199() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18199
-	}
-	return nil
-}
-
-func (x *Message17786_Message17787) GetField18200() string {
-	if x != nil && x.Field18200 != nil {
-		return *x.Field18200
-	}
-	return ""
-}
-
-func (x *Message17786_Message17787) GetField18201() string {
-	if x != nil && x.Field18201 != nil {
-		return *x.Field18201
-	}
-	return ""
-}
-
-func (x *Message17786_Message17787) GetField18202() bool {
-	if x != nil && x.Field18202 != nil {
-		return *x.Field18202
-	}
-	return false
-}
-
-type Message24404_Message24405 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field24686 *int32              `protobuf:"varint,2,req,name=field24686" json:"field24686,omitempty"`
-	Field24687 *int32              `protobuf:"varint,3,req,name=field24687" json:"field24687,omitempty"`
-	Field24688 *Message24317       `protobuf:"bytes,4,opt,name=field24688" json:"field24688,omitempty"`
-	Field24689 *UnusedEmptyMessage `protobuf:"bytes,5,opt,name=field24689" json:"field24689,omitempty"`
-	Field24690 *Message24376       `protobuf:"bytes,6,opt,name=field24690" json:"field24690,omitempty"`
-	Field24691 *Message24345       `protobuf:"bytes,7,opt,name=field24691" json:"field24691,omitempty"`
-	Field24692 *UnusedEmptyMessage `protobuf:"bytes,8,opt,name=field24692" json:"field24692,omitempty"`
-	Field24693 *Message24379       `protobuf:"bytes,9,opt,name=field24693" json:"field24693,omitempty"`
-	Field24694 *UnusedEmptyMessage `protobuf:"bytes,10,opt,name=field24694" json:"field24694,omitempty"`
-	Field24695 *UnusedEmptyMessage `protobuf:"bytes,11,opt,name=field24695" json:"field24695,omitempty"`
-	Field24696 *Message24391       `protobuf:"bytes,12,opt,name=field24696" json:"field24696,omitempty"`
-	Field24697 *UnusedEmptyMessage `protobuf:"bytes,13,opt,name=field24697" json:"field24697,omitempty"`
-	Field24698 *UnusedEmptyMessage `protobuf:"bytes,14,opt,name=field24698" json:"field24698,omitempty"`
-	Field24699 *UnusedEmptyMessage `protobuf:"bytes,22,opt,name=field24699" json:"field24699,omitempty"`
-	Field24700 *UnusedEmptyMessage `protobuf:"bytes,23,opt,name=field24700" json:"field24700,omitempty"`
-	Field24701 *UnusedEmptyMessage `protobuf:"bytes,25,opt,name=field24701" json:"field24701,omitempty"`
-	Field24702 *Enum16925          `protobuf:"varint,18,opt,name=field24702,enum=benchmarks.google_message3.Enum16925" json:"field24702,omitempty"`
-	Field24703 *float32            `protobuf:"fixed32,20,opt,name=field24703" json:"field24703,omitempty"`
-	Field24704 *bool               `protobuf:"varint,19,opt,name=field24704" json:"field24704,omitempty"`
-	Field24705 []Enum16891         `protobuf:"varint,24,rep,name=field24705,enum=benchmarks.google_message3.Enum16891" json:"field24705,omitempty"`
-	Field24706 *UnusedEmptyMessage `protobuf:"bytes,15,opt,name=field24706" json:"field24706,omitempty"`
-	Field24707 *string             `protobuf:"bytes,16,opt,name=field24707" json:"field24707,omitempty"`
-	Field24708 *string             `protobuf:"bytes,17,opt,name=field24708" json:"field24708,omitempty"`
-	Field24709 *float32            `protobuf:"fixed32,21,opt,name=field24709" json:"field24709,omitempty"`
-	Field24710 *bool               `protobuf:"varint,26,opt,name=field24710" json:"field24710,omitempty"`
-	Field24711 *UnusedEnum         `protobuf:"varint,27,opt,name=field24711,enum=benchmarks.google_message3.UnusedEnum" json:"field24711,omitempty"`
-	Field24712 *bool               `protobuf:"varint,28,opt,name=field24712" json:"field24712,omitempty"`
-	Field24713 *UnusedEnum         `protobuf:"varint,29,opt,name=field24713,enum=benchmarks.google_message3.UnusedEnum" json:"field24713,omitempty"`
-	Field24714 *bool               `protobuf:"varint,31,opt,name=field24714" json:"field24714,omitempty"`
-	Field24715 *bool               `protobuf:"varint,99,opt,name=field24715" json:"field24715,omitempty"`
-	Field24716 *int64              `protobuf:"varint,32,opt,name=field24716" json:"field24716,omitempty"`
-}
-
-func (x *Message24404_Message24405) Reset() {
-	*x = Message24404_Message24405{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[32]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message24404_Message24405) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message24404_Message24405) ProtoMessage() {}
-
-func (x *Message24404_Message24405) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_proto_msgTypes[32]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message24404_Message24405.ProtoReflect.Descriptor instead.
-func (*Message24404_Message24405) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP(), []int{26, 0}
-}
-
-func (x *Message24404_Message24405) GetField24686() int32 {
-	if x != nil && x.Field24686 != nil {
-		return *x.Field24686
-	}
-	return 0
-}
-
-func (x *Message24404_Message24405) GetField24687() int32 {
-	if x != nil && x.Field24687 != nil {
-		return *x.Field24687
-	}
-	return 0
-}
-
-func (x *Message24404_Message24405) GetField24688() *Message24317 {
-	if x != nil {
-		return x.Field24688
-	}
-	return nil
-}
-
-func (x *Message24404_Message24405) GetField24689() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24689
-	}
-	return nil
-}
-
-func (x *Message24404_Message24405) GetField24690() *Message24376 {
-	if x != nil {
-		return x.Field24690
-	}
-	return nil
-}
-
-func (x *Message24404_Message24405) GetField24691() *Message24345 {
-	if x != nil {
-		return x.Field24691
-	}
-	return nil
-}
-
-func (x *Message24404_Message24405) GetField24692() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24692
-	}
-	return nil
-}
-
-func (x *Message24404_Message24405) GetField24693() *Message24379 {
-	if x != nil {
-		return x.Field24693
-	}
-	return nil
-}
-
-func (x *Message24404_Message24405) GetField24694() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24694
-	}
-	return nil
-}
-
-func (x *Message24404_Message24405) GetField24695() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24695
-	}
-	return nil
-}
-
-func (x *Message24404_Message24405) GetField24696() *Message24391 {
-	if x != nil {
-		return x.Field24696
-	}
-	return nil
-}
-
-func (x *Message24404_Message24405) GetField24697() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24697
-	}
-	return nil
-}
-
-func (x *Message24404_Message24405) GetField24698() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24698
-	}
-	return nil
-}
-
-func (x *Message24404_Message24405) GetField24699() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24699
-	}
-	return nil
-}
-
-func (x *Message24404_Message24405) GetField24700() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24700
-	}
-	return nil
-}
-
-func (x *Message24404_Message24405) GetField24701() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24701
-	}
-	return nil
-}
-
-func (x *Message24404_Message24405) GetField24702() Enum16925 {
-	if x != nil && x.Field24702 != nil {
-		return *x.Field24702
-	}
-	return Enum16925_ENUM_VALUE16926
-}
-
-func (x *Message24404_Message24405) GetField24703() float32 {
-	if x != nil && x.Field24703 != nil {
-		return *x.Field24703
-	}
-	return 0
-}
-
-func (x *Message24404_Message24405) GetField24704() bool {
-	if x != nil && x.Field24704 != nil {
-		return *x.Field24704
-	}
-	return false
-}
-
-func (x *Message24404_Message24405) GetField24705() []Enum16891 {
-	if x != nil {
-		return x.Field24705
-	}
-	return nil
-}
-
-func (x *Message24404_Message24405) GetField24706() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24706
-	}
-	return nil
-}
-
-func (x *Message24404_Message24405) GetField24707() string {
-	if x != nil && x.Field24707 != nil {
-		return *x.Field24707
-	}
-	return ""
-}
-
-func (x *Message24404_Message24405) GetField24708() string {
-	if x != nil && x.Field24708 != nil {
-		return *x.Field24708
-	}
-	return ""
-}
-
-func (x *Message24404_Message24405) GetField24709() float32 {
-	if x != nil && x.Field24709 != nil {
-		return *x.Field24709
-	}
-	return 0
-}
-
-func (x *Message24404_Message24405) GetField24710() bool {
-	if x != nil && x.Field24710 != nil {
-		return *x.Field24710
-	}
-	return false
-}
-
-func (x *Message24404_Message24405) GetField24711() UnusedEnum {
-	if x != nil && x.Field24711 != nil {
-		return *x.Field24711
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message24404_Message24405) GetField24712() bool {
-	if x != nil && x.Field24712 != nil {
-		return *x.Field24712
-	}
-	return false
-}
-
-func (x *Message24404_Message24405) GetField24713() UnusedEnum {
-	if x != nil && x.Field24713 != nil {
-		return *x.Field24713
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message24404_Message24405) GetField24714() bool {
-	if x != nil && x.Field24714 != nil {
-		return *x.Field24714
-	}
-	return false
-}
-
-func (x *Message24404_Message24405) GetField24715() bool {
-	if x != nil && x.Field24715 != nil {
-		return *x.Field24715
-	}
-	return false
-}
-
-func (x *Message24404_Message24405) GetField24716() int64 {
-	if x != nil && x.Field24716 != nil {
-		return *x.Field24716
-	}
-	return 0
-}
-
-var file_datasets_google_message3_benchmark_message3_proto_extTypes = []protoimpl.ExtensionInfo{
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: (*string)(nil),
-		Field:         472,
-		Name:          "benchmarks.google_message3.field17026",
-		Tag:           "bytes,472,opt,name=field17026",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]string)(nil),
-		Field:         818,
-		Name:          "benchmarks.google_message3.field17027",
-		Tag:           "bytes,818,rep,name=field17027",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: (*Message0)(nil),
-		Field:         215,
-		Name:          "benchmarks.google_message3.field17031",
-		Tag:           "bytes,215,opt,name=field17031",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]*Message0)(nil),
-		Field:         292,
-		Name:          "benchmarks.google_message3.field17032",
-		Tag:           "bytes,292,rep,name=field17032",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]*Message0)(nil),
-		Field:         234,
-		Name:          "benchmarks.google_message3.field17038",
-		Tag:           "bytes,234,rep,name=field17038",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]*Message0)(nil),
-		Field:         235,
-		Name:          "benchmarks.google_message3.field17039",
-		Tag:           "bytes,235,rep,name=field17039",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: (*Message0)(nil),
-		Field:         246,
-		Name:          "benchmarks.google_message3.field17042",
-		Tag:           "bytes,246,opt,name=field17042",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: (*string)(nil),
-		Field:         224,
-		Name:          "benchmarks.google_message3.field17043",
-		Tag:           "bytes,224,opt,name=field17043",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: (*string)(nil),
-		Field:         225,
-		Name:          "benchmarks.google_message3.field17044",
-		Tag:           "bytes,225,opt,name=field17044",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]string)(nil),
-		Field:         63,
-		Name:          "benchmarks.google_message3.field17048",
-		Tag:           "bytes,63,rep,name=field17048",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]string)(nil),
-		Field:         64,
-		Name:          "benchmarks.google_message3.field17049",
-		Tag:           "bytes,64,rep,name=field17049",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]*Message0)(nil),
-		Field:         233,
-		Name:          "benchmarks.google_message3.field17052",
-		Tag:           "bytes,233,rep,name=field17052",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]*Message0)(nil),
-		Field:         66,
-		Name:          "benchmarks.google_message3.field17053",
-		Tag:           "bytes,66,rep,name=field17053",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]string)(nil),
-		Field:         275,
-		Name:          "benchmarks.google_message3.field17056",
-		Tag:           "bytes,275,rep,name=field17056",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: (*string)(nil),
-		Field:         226,
-		Name:          "benchmarks.google_message3.field17057",
-		Tag:           "bytes,226,opt,name=field17057",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]*Message0)(nil),
-		Field:         27,
-		Name:          "benchmarks.google_message3.field17060",
-		Tag:           "bytes,27,rep,name=field17060",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]string)(nil),
-		Field:         75,
-		Name:          "benchmarks.google_message3.field17073",
-		Tag:           "bytes,75,rep,name=field17073",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]*Message0)(nil),
-		Field:         77,
-		Name:          "benchmarks.google_message3.field17076",
-		Tag:           "bytes,77,rep,name=field17076",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]string)(nil),
-		Field:         296,
-		Name:          "benchmarks.google_message3.field17078",
-		Tag:           "bytes,296,rep,name=field17078",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]*Message0)(nil),
-		Field:         160,
-		Name:          "benchmarks.google_message3.field17082",
-		Tag:           "bytes,160,rep,name=field17082",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]*Message0)(nil),
-		Field:         585,
-		Name:          "benchmarks.google_message3.field17091",
-		Tag:           "bytes,585,rep,name=field17091",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]*Message0)(nil),
-		Field:         987,
-		Name:          "benchmarks.google_message3.field17098",
-		Tag:           "bytes,987,rep,name=field17098",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]*Message0)(nil),
-		Field:         157,
-		Name:          "benchmarks.google_message3.field17101",
-		Tag:           "bytes,157,rep,name=field17101",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]string)(nil),
-		Field:         158,
-		Name:          "benchmarks.google_message3.field17102",
-		Tag:           "bytes,158,rep,name=field17102",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]string)(nil),
-		Field:         166,
-		Name:          "benchmarks.google_message3.field17107",
-		Tag:           "bytes,166,rep,name=field17107",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]string)(nil),
-		Field:         567,
-		Name:          "benchmarks.google_message3.field17133",
-		Tag:           "bytes,567,rep,name=field17133",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]string)(nil),
-		Field:         572,
-		Name:          "benchmarks.google_message3.field17134",
-		Tag:           "bytes,572,rep,name=field17134",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]string)(nil),
-		Field:         49,
-		Name:          "benchmarks.google_message3.field17160",
-		Tag:           "bytes,49,rep,name=field17160",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]string)(nil),
-		Field:         32,
-		Name:          "benchmarks.google_message3.field17168",
-		Tag:           "bytes,32,rep,name=field17168",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]string)(nil),
-		Field:         34,
-		Name:          "benchmarks.google_message3.field17170",
-		Tag:           "bytes,34,rep,name=field17170",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]*Message0)(nil),
-		Field:         509,
-		Name:          "benchmarks.google_message3.field17172",
-		Tag:           "bytes,509,rep,name=field17172",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]string)(nil),
-		Field:         39,
-		Name:          "benchmarks.google_message3.field17174",
-		Tag:           "bytes,39,rep,name=field17174",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]*Message0)(nil),
-		Field:         40,
-		Name:          "benchmarks.google_message3.field17175",
-		Tag:           "bytes,40,rep,name=field17175",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]*Message0)(nil),
-		Field:         511,
-		Name:          "benchmarks.google_message3.field17178",
-		Tag:           "bytes,511,rep,name=field17178",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]*Message0)(nil),
-		Field:         50,
-		Name:          "benchmarks.google_message3.field17185",
-		Tag:           "bytes,50,rep,name=field17185",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]int32)(nil),
-		Field:         1081,
-		Name:          "benchmarks.google_message3.field17207",
-		Tag:           "varint,1081,rep,name=field17207",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]*Message0)(nil),
-		Field:         184,
-		Name:          "benchmarks.google_message3.field17238",
-		Tag:           "bytes,184,rep,name=field17238",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]*Message0)(nil),
-		Field:         177,
-		Name:          "benchmarks.google_message3.field17289",
-		Tag:           "bytes,177,rep,name=field17289",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]*Message0)(nil),
-		Field:         178,
-		Name:          "benchmarks.google_message3.field17290",
-		Tag:           "bytes,178,rep,name=field17290",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]*Message0)(nil),
-		Field:         474,
-		Name:          "benchmarks.google_message3.field17296",
-		Tag:           "bytes,474,rep,name=field17296",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]string)(nil),
-		Field:         44,
-		Name:          "benchmarks.google_message3.field17298",
-		Tag:           "bytes,44,rep,name=field17298",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]*Message0)(nil),
-		Field:         47,
-		Name:          "benchmarks.google_message3.field17301",
-		Tag:           "bytes,47,rep,name=field17301",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: (*Message0)(nil),
-		Field:         21,
-		Name:          "benchmarks.google_message3.field17412",
-		Tag:           "bytes,21,opt,name=field17412",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]*Message0)(nil),
-		Field:         132,
-		Name:          "benchmarks.google_message3.field17438",
-		Tag:           "bytes,132,rep,name=field17438",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]*Message0)(nil),
-		Field:         512,
-		Name:          "benchmarks.google_message3.field17458",
-		Tag:           "bytes,512,rep,name=field17458",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]string)(nil),
-		Field:         560,
-		Name:          "benchmarks.google_message3.field17460",
-		Tag:           "bytes,560,rep,name=field17460",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]string)(nil),
-		Field:         552,
-		Name:          "benchmarks.google_message3.field17466",
-		Tag:           "bytes,552,rep,name=field17466",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]*Message0)(nil),
-		Field:         1080,
-		Name:          "benchmarks.google_message3.field17617",
-		Tag:           "bytes,1080,rep,name=field17617",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message16945)(nil),
-		ExtensionType: ([]int32)(nil),
-		Field:         1084,
-		Name:          "benchmarks.google_message3.field17618",
-		Tag:           "varint,1084,rep,name=field17618",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message1327)(nil),
-		Field:         23104162,
-		Name:          "benchmarks.google_message3.Message1327.field1373",
-		Tag:           "bytes,23104162,opt,name=field1373",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message3672)(nil),
-		Field:         3144435,
-		Name:          "benchmarks.google_message3.Message3672.field3737",
-		Tag:           "bytes,3144435,opt,name=field3737",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message3804)(nil),
-		Field:         59241828,
-		Name:          "benchmarks.google_message3.Message3804.field3825",
-		Tag:           "bytes,59241828,opt,name=field3825",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message6849)(nil),
-		Field:         107558455,
-		Name:          "benchmarks.google_message3.Message6849.field6911",
-		Tag:           "bytes,107558455,opt,name=field6911",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message6866)(nil),
-		Field:         22259060,
-		Name:          "benchmarks.google_message3.Message6866.field6974",
-		Tag:           "bytes,22259060,opt,name=field6974",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message6870)(nil),
-		Field:         90034652,
-		Name:          "benchmarks.google_message3.Message6870.field6992",
-		Tag:           "bytes,90034652,opt,name=field6992",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message7651)(nil),
-		Field:         55876009,
-		Name:          "benchmarks.google_message3.Message7651.field7730",
-		Tag:           "bytes,55876009,opt,name=field7730",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message7864)(nil),
-		Field:         44542730,
-		Name:          "benchmarks.google_message3.Message7864.field7872",
-		Tag:           "bytes,44542730,opt,name=field7872",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message7929)(nil),
-		Field:         53392238,
-		Name:          "benchmarks.google_message3.Message7929.field7962",
-		Tag:           "bytes,53392238,opt,name=field7962",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message8508)(nil),
-		Field:         3811804,
-		Name:          "benchmarks.google_message3.Message8508.field8534",
-		Tag:           "bytes,3811804,opt,name=field8534",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message9122)(nil),
-		Field:         120398939,
-		Name:          "benchmarks.google_message3.Message9122.field9134",
-		Tag:           "bytes,120398939,opt,name=field9134",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message10177)(nil),
-		Field:         26801105,
-		Name:          "benchmarks.google_message3.Message10177.field10271",
-		Tag:           "bytes,26801105,opt,name=field10271",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message10155)(nil),
-		ExtensionType: (*Message10278)(nil),
-		Field:         29374161,
-		Name:          "benchmarks.google_message3.Message10278.field10289",
-		Tag:           "bytes,29374161,opt,name=field10289",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message10155)(nil),
-		ExtensionType: (*Message10323)(nil),
-		Field:         27922524,
-		Name:          "benchmarks.google_message3.Message10323.field10361",
-		Tag:           "bytes,27922524,opt,name=field10361",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message10155)(nil),
-		ExtensionType: (*Message10324)(nil),
-		Field:         27832297,
-		Name:          "benchmarks.google_message3.Message10324.field10364",
-		Tag:           "bytes,27832297,opt,name=field10364",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message11990)(nil),
-		Field:         21265426,
-		Name:          "benchmarks.google_message3.Message11990.field12031",
-		Tag:           "bytes,21265426,opt,name=field12031",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message12691)(nil),
-		Field:         28426536,
-		Name:          "benchmarks.google_message3.Message12691.field12716",
-		Tag:           "bytes,28426536,opt,name=field12716",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message12870)(nil),
-		Field:         5447656,
-		Name:          "benchmarks.google_message3.Message12870.field12899",
-		Tag:           "bytes,5447656,opt,name=field12899",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message13145)(nil),
-		ExtensionType: (*Message13154)(nil),
-		Field:         47301086,
-		Name:          "benchmarks.google_message3.Message13154.field13166",
-		Tag:           "bytes,47301086,opt,name=field13166",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message16507)(nil),
-		Field:         5569941,
-		Name:          "benchmarks.google_message3.Message16507.field16542",
-		Tag:           "bytes,5569941,opt,name=field16542",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message16564)(nil),
-		Field:         25830030,
-		Name:          "benchmarks.google_message3.Message16564.field16569",
-		Tag:           "bytes,25830030,opt,name=field16569",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message16661)(nil),
-		Field:         31274398,
-		Name:          "benchmarks.google_message3.Message16661.field16673",
-		Tag:           "bytes,31274398,opt,name=field16673",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message16746)(nil),
-		Field:         28406765,
-		Name:          "benchmarks.google_message3.Message16746.field16810",
-		Tag:           "bytes,28406765,opt,name=field16810",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message17786)(nil),
-		Field:         11823055,
-		Name:          "benchmarks.google_message3.Message17786.field18176",
-		Tag:           "bytes,11823055,opt,name=field18176",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message10155)(nil),
-		ExtensionType: (*Message22857)(nil),
-		Field:         67799715,
-		Name:          "benchmarks.google_message3.Message22857.field22875",
-		Tag:           "bytes,67799715,opt,name=field22875",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message24404)(nil),
-		Field:         9129287,
-		Name:          "benchmarks.google_message3.Message24404.field24685",
-		Tag:           "bytes,9129287,opt,name=field24685",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message27300)(nil),
-		Field:         24956467,
-		Name:          "benchmarks.google_message3.Message27300.field27304",
-		Tag:           "bytes,24956467,opt,name=field27304",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message27453)(nil),
-		Field:         8086204,
-		Name:          "benchmarks.google_message3.Message27453.field27482",
-		Tag:           "bytes,8086204,opt,name=field27482",
-		Filename:      "datasets/google_message3/benchmark_message3.proto",
-	},
-}
-
-// Extension fields to Message16945.
-var (
-	// optional string field17026 = 472;
-	E_Field17026 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[0]
-	// repeated string field17027 = 818;
-	E_Field17027 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[1]
-	// optional benchmarks.google_message3.Message0 field17031 = 215;
-	E_Field17031 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[2]
-	// repeated benchmarks.google_message3.Message0 field17032 = 292;
-	E_Field17032 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[3]
-	// repeated benchmarks.google_message3.Message0 field17038 = 234;
-	E_Field17038 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[4]
-	// repeated benchmarks.google_message3.Message0 field17039 = 235;
-	E_Field17039 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[5]
-	// optional benchmarks.google_message3.Message0 field17042 = 246;
-	E_Field17042 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[6]
-	// optional string field17043 = 224;
-	E_Field17043 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[7]
-	// optional string field17044 = 225;
-	E_Field17044 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[8]
-	// repeated string field17048 = 63;
-	E_Field17048 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[9]
-	// repeated string field17049 = 64;
-	E_Field17049 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[10]
-	// repeated benchmarks.google_message3.Message0 field17052 = 233;
-	E_Field17052 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[11]
-	// repeated benchmarks.google_message3.Message0 field17053 = 66;
-	E_Field17053 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[12]
-	// repeated string field17056 = 275;
-	E_Field17056 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[13]
-	// optional string field17057 = 226;
-	E_Field17057 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[14]
-	// repeated benchmarks.google_message3.Message0 field17060 = 27;
-	E_Field17060 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[15]
-	// repeated string field17073 = 75;
-	E_Field17073 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[16]
-	// repeated benchmarks.google_message3.Message0 field17076 = 77;
-	E_Field17076 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[17]
-	// repeated string field17078 = 296;
-	E_Field17078 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[18]
-	// repeated benchmarks.google_message3.Message0 field17082 = 160;
-	E_Field17082 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[19]
-	// repeated benchmarks.google_message3.Message0 field17091 = 585;
-	E_Field17091 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[20]
-	// repeated benchmarks.google_message3.Message0 field17098 = 987;
-	E_Field17098 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[21]
-	// repeated benchmarks.google_message3.Message0 field17101 = 157;
-	E_Field17101 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[22]
-	// repeated string field17102 = 158;
-	E_Field17102 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[23]
-	// repeated string field17107 = 166;
-	E_Field17107 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[24]
-	// repeated string field17133 = 567;
-	E_Field17133 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[25]
-	// repeated string field17134 = 572;
-	E_Field17134 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[26]
-	// repeated string field17160 = 49;
-	E_Field17160 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[27]
-	// repeated string field17168 = 32;
-	E_Field17168 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[28]
-	// repeated string field17170 = 34;
-	E_Field17170 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[29]
-	// repeated benchmarks.google_message3.Message0 field17172 = 509;
-	E_Field17172 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[30]
-	// repeated string field17174 = 39;
-	E_Field17174 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[31]
-	// repeated benchmarks.google_message3.Message0 field17175 = 40;
-	E_Field17175 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[32]
-	// repeated benchmarks.google_message3.Message0 field17178 = 511;
-	E_Field17178 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[33]
-	// repeated benchmarks.google_message3.Message0 field17185 = 50;
-	E_Field17185 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[34]
-	// repeated int32 field17207 = 1081;
-	E_Field17207 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[35]
-	// repeated benchmarks.google_message3.Message0 field17238 = 184;
-	E_Field17238 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[36]
-	// repeated benchmarks.google_message3.Message0 field17289 = 177;
-	E_Field17289 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[37]
-	// repeated benchmarks.google_message3.Message0 field17290 = 178;
-	E_Field17290 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[38]
-	// repeated benchmarks.google_message3.Message0 field17296 = 474;
-	E_Field17296 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[39]
-	// repeated string field17298 = 44;
-	E_Field17298 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[40]
-	// repeated benchmarks.google_message3.Message0 field17301 = 47;
-	E_Field17301 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[41]
-	// optional benchmarks.google_message3.Message0 field17412 = 21;
-	E_Field17412 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[42]
-	// repeated benchmarks.google_message3.Message0 field17438 = 132;
-	E_Field17438 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[43]
-	// repeated benchmarks.google_message3.Message0 field17458 = 512;
-	E_Field17458 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[44]
-	// repeated string field17460 = 560;
-	E_Field17460 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[45]
-	// repeated string field17466 = 552;
-	E_Field17466 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[46]
-	// repeated benchmarks.google_message3.Message0 field17617 = 1080;
-	E_Field17617 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[47]
-	// repeated int32 field17618 = 1084;
-	E_Field17618 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[48]
-)
-
-// Extension fields to Message0.
-var (
-	// optional benchmarks.google_message3.Message1327 field1373 = 23104162;
-	E_Message1327_Field1373 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[49]
-	// optional benchmarks.google_message3.Message3672 field3737 = 3144435;
-	E_Message3672_Field3737 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[50]
-	// optional benchmarks.google_message3.Message3804 field3825 = 59241828;
-	E_Message3804_Field3825 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[51]
-	// optional benchmarks.google_message3.Message6849 field6911 = 107558455;
-	E_Message6849_Field6911 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[52]
-	// optional benchmarks.google_message3.Message6866 field6974 = 22259060;
-	E_Message6866_Field6974 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[53]
-	// optional benchmarks.google_message3.Message6870 field6992 = 90034652;
-	E_Message6870_Field6992 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[54]
-	// optional benchmarks.google_message3.Message7651 field7730 = 55876009;
-	E_Message7651_Field7730 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[55]
-	// optional benchmarks.google_message3.Message7864 field7872 = 44542730;
-	E_Message7864_Field7872 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[56]
-	// optional benchmarks.google_message3.Message7929 field7962 = 53392238;
-	E_Message7929_Field7962 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[57]
-	// optional benchmarks.google_message3.Message8508 field8534 = 3811804;
-	E_Message8508_Field8534 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[58]
-	// optional benchmarks.google_message3.Message9122 field9134 = 120398939;
-	E_Message9122_Field9134 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[59]
-	// optional benchmarks.google_message3.Message10177 field10271 = 26801105;
-	E_Message10177_Field10271 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[60]
-	// optional benchmarks.google_message3.Message11990 field12031 = 21265426;
-	E_Message11990_Field12031 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[64]
-	// optional benchmarks.google_message3.Message12691 field12716 = 28426536;
-	E_Message12691_Field12716 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[65]
-	// optional benchmarks.google_message3.Message12870 field12899 = 5447656;
-	E_Message12870_Field12899 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[66]
-	// optional benchmarks.google_message3.Message16507 field16542 = 5569941;
-	E_Message16507_Field16542 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[68]
-	// optional benchmarks.google_message3.Message16564 field16569 = 25830030;
-	E_Message16564_Field16569 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[69]
-	// optional benchmarks.google_message3.Message16661 field16673 = 31274398;
-	E_Message16661_Field16673 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[70]
-	// optional benchmarks.google_message3.Message16746 field16810 = 28406765;
-	E_Message16746_Field16810 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[71]
-	// optional benchmarks.google_message3.Message17786 field18176 = 11823055;
-	E_Message17786_Field18176 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[72]
-	// optional benchmarks.google_message3.Message24404 field24685 = 9129287;
-	E_Message24404_Field24685 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[74]
-	// optional benchmarks.google_message3.Message27300 field27304 = 24956467;
-	E_Message27300_Field27304 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[75]
-	// optional benchmarks.google_message3.Message27453 field27482 = 8086204;
-	E_Message27453_Field27482 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[76]
-)
-
-// Extension fields to Message10155.
-var (
-	// optional benchmarks.google_message3.Message10278 field10289 = 29374161;
-	E_Message10278_Field10289 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[61]
-	// optional benchmarks.google_message3.Message10323 field10361 = 27922524;
-	E_Message10323_Field10361 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[62]
-	// optional benchmarks.google_message3.Message10324 field10364 = 27832297;
-	E_Message10324_Field10364 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[63]
-	// optional benchmarks.google_message3.Message22857 field22875 = 67799715;
-	E_Message22857_Field22875 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[73]
-)
-
-// Extension fields to Message13145.
-var (
-	// optional benchmarks.google_message3.Message13154 field13166 = 47301086;
-	E_Message13154_Field13166 = &file_datasets_google_message3_benchmark_message3_proto_extTypes[67]
-)
-
-var File_datasets_google_message3_benchmark_message3_proto protoreflect.FileDescriptor
-
-var file_datasets_google_message3_benchmark_message3_proto_rawDesc = []byte{
-	0x0a, 0x31, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x1a,
-	0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x31, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x5f, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73,
-	0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33,
-	0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x34, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x5f, 0x35, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65,
-	0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x37, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x64,
-	0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x38, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x22, 0xa6, 0x09, 0x0a, 0x0e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37,
-	0x35, 0x31, 0x39, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x37,
-	0x34, 0x38, 0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x31, 0x39, 0x12,
-	0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x32, 0x30, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x37, 0x36, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x32, 0x30, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x35, 0x32, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x33, 0x30, 0x36, 0x32, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37,
-	0x35, 0x32, 0x31, 0x12, 0x46, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x32,
-	0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x39, 0x35, 0x32, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x32, 0x32, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x32, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x32, 0x33, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x32, 0x34, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x32, 0x34, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x32, 0x35, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x32, 0x35, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x32, 0x36, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x32, 0x36, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x32, 0x37, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x32, 0x37, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x32, 0x38, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x32, 0x38, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x32, 0x39, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x32, 0x39, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x33, 0x30, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x33, 0x30, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x33, 0x31, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x33, 0x31, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x33, 0x32, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x33, 0x32, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x33, 0x33, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x33, 0x33, 0x22, 0xae, 0x03, 0x0a, 0x0b,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x32, 0x37, 0x12, 0x4c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x36, 0x39, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73,
-	0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x36, 0x39, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x33, 0x37, 0x30, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x31, 0x33, 0x32, 0x38, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x37, 0x30,
-	0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x37, 0x31, 0x18, 0x05, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x37, 0x31, 0x12, 0x4c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x37, 0x32, 0x18, 0x06, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x37, 0x32, 0x32, 0x6e, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x37, 0x33, 0x12, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x18,
-	0xa2, 0x95, 0x82, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x32,
-	0x37, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x37, 0x33, 0x22, 0xf9, 0x06, 0x0a,
-	0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x37, 0x32, 0x12, 0x42, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x37, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
-	0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75,
-	0x6d, 0x33, 0x34, 0x37, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x37,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x38, 0x18, 0x0b, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x38, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x39, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x39, 0x12, 0x55, 0x0a, 0x0b,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x37, 0x33, 0x18, 0x03, 0x20, 0x03, 0x28,
-	0x0a, 0x32, 0x33, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x37, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x36, 0x37, 0x33, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x36, 0x37, 0x33, 0x12, 0x55, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36,
-	0x37, 0x34, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x33, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x37,
-	0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x37, 0x34, 0x52, 0x0b, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x37, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x37, 0x33, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x33, 0x33, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x37, 0x33, 0x34, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x34, 0x37, 0x36, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x35, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x35, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x37, 0x33, 0x36, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45,
-	0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x33, 0x36, 0x1a, 0x6f, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x36, 0x37, 0x33, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37,
-	0x33, 0x38, 0x18, 0x04, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x34, 0x37, 0x36, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x33, 0x39, 0x18, 0x05, 0x20, 0x02, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x39, 0x1a, 0x6f, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x36, 0x37, 0x34, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x37, 0x34, 0x30, 0x18, 0x07, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x34, 0x37, 0x36, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x34, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x37, 0x34, 0x31, 0x18, 0x08, 0x20, 0x02, 0x28, 0x05, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x34, 0x31, 0x32, 0x6e, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x37, 0x33, 0x37, 0x12, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x18, 0xf3, 0xf5, 0xbf, 0x01,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x37, 0x32, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x37, 0x22, 0x9b, 0x03, 0x0a, 0x0b, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x38, 0x30, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x38, 0x31, 0x38, 0x18, 0x01, 0x20, 0x02, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x38, 0x31, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x38, 0x31, 0x39, 0x18, 0x02, 0x20, 0x02, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x38, 0x31, 0x39, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x38, 0x32,
-	0x30, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x38, 0x30, 0x35, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x38, 0x32, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x38, 0x32, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x38, 0x32, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x38, 0x32, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x38, 0x32, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x38, 0x32,
-	0x33, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x38,
-	0x32, 0x33, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x38, 0x32, 0x34, 0x18,
-	0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x37, 0x38, 0x33, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x38, 0x32, 0x34, 0x32, 0x6e, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x38, 0x32, 0x35, 0x12, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x18, 0xe4, 0xea, 0x9f, 0x1c, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x38, 0x30, 0x34, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x38, 0x32, 0x35, 0x22, 0xc4, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x36, 0x38, 0x34, 0x39, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x39, 0x31, 0x30, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x38,
-	0x35, 0x30, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x31, 0x30, 0x32, 0x6e, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x31, 0x31, 0x12, 0x24, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30,
-	0x18, 0xb7, 0xec, 0xa4, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x38,
-	0x34, 0x39, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x31, 0x31, 0x22, 0xc4, 0x01,
-	0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x38, 0x36, 0x36, 0x12, 0x45, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x37, 0x33, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x38, 0x36, 0x33, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x39, 0x37, 0x33, 0x32, 0x6e, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x37,
-	0x34, 0x12, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x18, 0xf4, 0xca, 0xce, 0x0a, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x38, 0x36, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x39, 0x37, 0x34, 0x22, 0xc4, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x36, 0x38, 0x37, 0x30, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x39,
-	0x31, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x38, 0x37, 0x31,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x39, 0x31, 0x32, 0x6e, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x39, 0x32, 0x12, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x18, 0xdc,
-	0xa3, 0xf7, 0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x38, 0x37, 0x30,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x39, 0x32, 0x22, 0xcc, 0x0e, 0x0a, 0x0b,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x36, 0x35, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x38, 0x35, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x38, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x36, 0x38, 0x36, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x36, 0x38, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x36, 0x38, 0x37, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x36, 0x38, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36,
-	0x38, 0x38, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x36, 0x38, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x38, 0x39,
-	0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x38,
-	0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x39, 0x30, 0x18, 0x06,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x39, 0x30, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x39, 0x31, 0x18, 0x07, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x39, 0x31, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x39, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x39, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x39, 0x33, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x39, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x36, 0x39, 0x34, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x36, 0x39, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x36, 0x39, 0x35, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x36, 0x39, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36,
-	0x39, 0x36, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x36, 0x39, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x39, 0x37,
-	0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x39,
-	0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x39, 0x38, 0x18, 0x0e,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x39, 0x38, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x39, 0x39, 0x18, 0x0f, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x39, 0x39, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x30, 0x30, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x30, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x30, 0x31, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x30, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x37, 0x30, 0x32, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x37, 0x30, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x37, 0x30, 0x33, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x37, 0x30, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37,
-	0x30, 0x34, 0x18, 0x14, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x37, 0x30, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x30, 0x35,
-	0x18, 0x15, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x30,
-	0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x30, 0x36, 0x18, 0x16,
-	0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x30, 0x36, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x30, 0x37, 0x18, 0x17, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x30, 0x37, 0x12, 0x4c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x30, 0x38, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e,
-	0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x30, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x30, 0x39, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x30, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x37, 0x31, 0x30, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x37, 0x31, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x37, 0x31, 0x31, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x37, 0x31, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37,
-	0x31, 0x32, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x37, 0x31, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x31, 0x33,
-	0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x31,
-	0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x31, 0x34, 0x18, 0x1d,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x31, 0x34, 0x12,
-	0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x31, 0x35, 0x18, 0x1e, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x35, 0x34, 0x37, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x37, 0x31, 0x35, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x37, 0x31, 0x36, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x35,
-	0x34, 0x37, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x31, 0x36, 0x12, 0x4c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x31, 0x37, 0x18, 0x20, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e,
-	0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x31, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x31, 0x38, 0x18, 0x21, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x31, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x37, 0x31, 0x39, 0x18, 0x22, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x37, 0x31, 0x39, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x37, 0x32, 0x30, 0x18, 0x23, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37,
-	0x36, 0x34, 0x38, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x32, 0x30, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x32, 0x31, 0x18, 0x24, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x32, 0x31, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x32, 0x32, 0x18, 0x25, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x32, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x37, 0x32, 0x33, 0x18, 0x26, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x32, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x37, 0x32, 0x34, 0x18, 0x27, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x37, 0x32, 0x34, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x37, 0x32, 0x35, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70,
-	0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x37, 0x32, 0x35, 0x12, 0x44, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x32,
-	0x36, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x32, 0x36, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x37, 0x32, 0x37, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x37,
-	0x36, 0x35, 0x34, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x32, 0x37, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x32, 0x38, 0x18, 0x2c, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x32, 0x38, 0x12, 0x4c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x32, 0x39, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x32, 0x39, 0x32, 0x6e, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x37, 0x33, 0x30, 0x12, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x18, 0xa9, 0xb3,
-	0xd2, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x36, 0x35, 0x31, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x33, 0x30, 0x22, 0xdc, 0x03, 0x0a, 0x0b, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x38, 0x36, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x38, 0x36, 0x36, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x36, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x38, 0x36, 0x37, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x38, 0x36, 0x37, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x38, 0x36, 0x38, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x38,
-	0x36, 0x35, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x36, 0x38, 0x12, 0x45, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x36, 0x39, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x38, 0x36, 0x35, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x38, 0x36, 0x39, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x37,
-	0x30, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x38, 0x36, 0x35,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x37, 0x30, 0x12, 0x4c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x37, 0x31, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73,
-	0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x37, 0x31, 0x32, 0x6e, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x38, 0x37, 0x32, 0x12, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x18, 0x8a, 0xd6, 0x9e,
-	0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x38, 0x36, 0x34, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x37, 0x32, 0x22, 0xd9, 0x07, 0x0a, 0x0b, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x32, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x39, 0x34, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x39, 0x34, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x39, 0x34, 0x33, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x39, 0x34, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39,
-	0x34, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x39, 0x34, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x34, 0x35,
-	0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x34,
-	0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x34, 0x36, 0x18, 0x0d,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x34, 0x36, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x34, 0x37, 0x18, 0x12, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x34, 0x37, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x34, 0x38, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x34, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x34, 0x39, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x34, 0x39, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x39, 0x35, 0x30, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x37, 0x39, 0x31, 0x39, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x30,
-	0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x31, 0x18, 0x14, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x31, 0x12, 0x45,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x32, 0x18, 0x0e, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x32, 0x30, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x39, 0x35, 0x32, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39,
-	0x35, 0x33, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x32,
-	0x31, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x33, 0x12, 0x45, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x34, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x32, 0x38, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x39, 0x35, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x35,
-	0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35,
-	0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x36, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x36, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x37, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x37, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x38, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x38, 0x12, 0x4c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x39, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73,
-	0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x39, 0x36, 0x30, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x39, 0x36, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x39, 0x36, 0x31, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x39, 0x36, 0x31, 0x32, 0x6e, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39,
-	0x36, 0x32, 0x12, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x18, 0xee, 0xe6, 0xba, 0x19, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x32, 0x39, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x39, 0x36, 0x32, 0x22, 0xa8, 0x07, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x38, 0x35, 0x30, 0x38, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35,
-	0x31, 0x37, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x35, 0x31,
-	0x31, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x31, 0x37, 0x12, 0x45, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x31, 0x38, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x38, 0x35, 0x31, 0x32, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x35, 0x31, 0x38, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x31, 0x39,
-	0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x35, 0x31, 0x33, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x31, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x35, 0x32, 0x30, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x32, 0x30, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x35, 0x32, 0x31, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x38, 0x35, 0x31, 0x34, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x32, 0x31, 0x12,
-	0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x32, 0x32, 0x18, 0x0f, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x32, 0x32, 0x12, 0x45, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x32, 0x33, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x35, 0x31, 0x35, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x35, 0x32, 0x33, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x32,
-	0x34, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35,
-	0x32, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x32, 0x35, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x32, 0x35,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x32, 0x36, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x02, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x32, 0x36, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x32, 0x37, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x32, 0x37, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x32, 0x38, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x32, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x35, 0x32, 0x39, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x32, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x35, 0x33, 0x30, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x35, 0x33, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x35, 0x33, 0x31, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x35, 0x33, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x33,
-	0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35,
-	0x33, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x33, 0x33, 0x18,
-	0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x33, 0x33,
-	0x32, 0x6e, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x33, 0x34, 0x12, 0x24, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x30, 0x18, 0xdc, 0xd3, 0xe8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x38, 0x35, 0x30, 0x38, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x33, 0x34,
-	0x22, 0xb9, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x39, 0x31, 0x32, 0x32,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x33, 0x32, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x02, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x33, 0x32, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x33, 0x33, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x02, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x33, 0x33, 0x32, 0x6e, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x33, 0x34, 0x12, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x18,
-	0xdb, 0xc8, 0xb4, 0x39, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x39, 0x31, 0x32,
-	0x32, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x33, 0x34, 0x22, 0xcb, 0x01, 0x0a,
-	0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x31, 0x37, 0x37, 0x12, 0x48, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x37, 0x30, 0x18, 0x01, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x31, 0x35, 0x35, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x32, 0x37, 0x30, 0x32, 0x71, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x30, 0x32, 0x37, 0x31, 0x12, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x18, 0xd1, 0xe7, 0xe3, 0x0c,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x31, 0x37, 0x37, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x37, 0x31, 0x22, 0xed, 0x01, 0x0a, 0x0c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x32, 0x37, 0x38, 0x12, 0x22, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x38, 0x36, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42,
-	0x02, 0x10, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x38, 0x36, 0x12,
-	0x22, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x38, 0x37, 0x18, 0x02, 0x20,
-	0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30,
-	0x32, 0x38, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x38,
-	0x38, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30,
-	0x32, 0x38, 0x38, 0x32, 0x75, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x38,
-	0x39, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x31, 0x35, 0x35, 0x18, 0xd1, 0xed, 0x80, 0x0e,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x32, 0x37, 0x38, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x38, 0x39, 0x22, 0xcf, 0x01, 0x0a, 0x0c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x33, 0x32, 0x33, 0x12, 0x48, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x36, 0x30, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x33, 0x32, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x30, 0x33, 0x36, 0x30, 0x32, 0x75, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30,
-	0x33, 0x36, 0x31, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x31, 0x35, 0x35, 0x18, 0xdc, 0xa0,
-	0xa8, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x33, 0x32, 0x33,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x36, 0x31, 0x22, 0x99, 0x02, 0x0a,
-	0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x33, 0x32, 0x34, 0x12, 0x48, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x36, 0x32, 0x18, 0x01, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x33, 0x32, 0x32, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x33, 0x36, 0x32, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x30, 0x33, 0x36, 0x33, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x30, 0x33, 0x32, 0x31, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x36,
-	0x33, 0x32, 0x75, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x36, 0x34, 0x12,
-	0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x31, 0x35, 0x35, 0x18, 0xe9, 0xdf, 0xa2, 0x0d, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x33, 0x32, 0x34, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x36, 0x34, 0x22, 0xcb, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x39, 0x39, 0x30, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x30, 0x33, 0x30, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x31, 0x39, 0x38, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x30, 0x33, 0x30, 0x32, 0x71, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x30, 0x33,
-	0x31, 0x12, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x18, 0x92, 0xf8, 0x91, 0x0a, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x39, 0x39, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x30, 0x33, 0x31, 0x22, 0x8b, 0x02, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x32, 0x36, 0x39, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x37, 0x31, 0x33, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x37, 0x31, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x37, 0x31, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x37, 0x31, 0x34, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x37, 0x31, 0x35, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x32, 0x36, 0x36, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x31,
-	0x35, 0x32, 0x71, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x31, 0x36, 0x12,
-	0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x30, 0x18, 0xa8, 0x82, 0xc7, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x32, 0x36, 0x39, 0x31, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x37, 0x31, 0x36, 0x22, 0xfd, 0x06, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x32, 0x38, 0x37, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x38, 0x37, 0x39, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x37, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x38, 0x38, 0x30, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x38, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x38, 0x38, 0x31, 0x18, 0x02, 0x20, 0x02, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x38, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x38, 0x38, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x38, 0x32, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x38, 0x38, 0x33, 0x18, 0xd1, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x38, 0x38, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x38, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x38, 0x38, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x38, 0x35, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x06, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x38, 0x38, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x38, 0x36, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x38, 0x38, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x38, 0x37, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x38, 0x38, 0x37, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x38, 0x38, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x32, 0x38, 0x37, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x38, 0x38,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x38, 0x39, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x38, 0x39,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39, 0x30, 0x18, 0x06,
-	0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39, 0x30,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39, 0x31, 0x18, 0x0a,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39, 0x31,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39, 0x32, 0x18, 0x0b,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39, 0x32,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39, 0x33, 0x18, 0x0c,
-	0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39, 0x33,
-	0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39, 0x34, 0x18, 0x0d,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x38, 0x32, 0x35, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39, 0x35, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39, 0x36, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39, 0x36, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39, 0x37, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d,
-	0x31, 0x32, 0x38, 0x37, 0x31, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39,
-	0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39, 0x38, 0x18,
-	0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39,
-	0x38, 0x32, 0x71, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39, 0x39, 0x12,
-	0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x30, 0x18, 0xe8, 0xbf, 0xcc, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x32, 0x38, 0x37, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x39, 0x39, 0x22, 0xc5, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x33, 0x31, 0x35, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33,
-	0x31, 0x36, 0x34, 0x18, 0x01, 0x20, 0x02, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x33, 0x31, 0x36, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33,
-	0x31, 0x36, 0x35, 0x18, 0x02, 0x20, 0x02, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x33, 0x31, 0x36, 0x35, 0x32, 0x75, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33,
-	0x31, 0x36, 0x36, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x31, 0x34, 0x35, 0x18, 0xde, 0x83,
-	0xc7, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x31, 0x35, 0x34,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x31, 0x36, 0x36, 0x22, 0xf1, 0x0a, 0x0a,
-	0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x35, 0x30, 0x37, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x31, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x31, 0x30, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x31, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x31, 0x31, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x31, 0x32, 0x18, 0x0e, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x31, 0x32, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x31, 0x33, 0x18, 0x05, 0x20, 0x03, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x31, 0x33, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x31, 0x34, 0x18, 0x06, 0x20, 0x03, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x31, 0x34, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x31, 0x35, 0x18, 0x08, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x31, 0x35, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x31, 0x36, 0x18, 0x09, 0x20, 0x03, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x31, 0x36, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x31, 0x37, 0x18, 0x0a, 0x20, 0x03, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x31, 0x37, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x31, 0x38, 0x18, 0x07, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x31, 0x38, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x31, 0x39, 0x18, 0x0f, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x31, 0x39, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x32, 0x30, 0x18, 0x0b, 0x20, 0x03, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x32, 0x30, 0x12, 0x4e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x32, 0x31, 0x18, 0x1b, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x32, 0x31, 0x12, 0x4e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x32, 0x32, 0x18, 0x16, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x32, 0x32, 0x12, 0x4e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x32, 0x33, 0x18, 0x1c, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x32, 0x33, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x32, 0x34, 0x18, 0x12, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x32, 0x34, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x32, 0x35, 0x18, 0x13, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x32, 0x35, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x32, 0x36, 0x18, 0x14, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x32, 0x36, 0x12, 0x4e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x32, 0x37, 0x18, 0x17, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x32, 0x37, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x32, 0x38, 0x18, 0x18, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x32, 0x38, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x32, 0x39, 0x18, 0x19, 0x20, 0x03, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x32, 0x39, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x33, 0x30, 0x18, 0x1a, 0x20, 0x01, 0x28,
-	0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x33, 0x30, 0x12, 0x48, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x33, 0x31, 0x18, 0x1e, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x34, 0x37, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x35, 0x33, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x35, 0x33, 0x32, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x35, 0x33, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x35, 0x33, 0x33, 0x18, 0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x35, 0x33, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x35, 0x33, 0x34, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x35, 0x33, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x35, 0x33, 0x35, 0x18, 0x23, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x35, 0x33, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x35, 0x33, 0x36, 0x18, 0x24, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x35, 0x33, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x35, 0x33, 0x37, 0x18, 0x25, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x35, 0x33, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x35, 0x33, 0x38, 0x18, 0x26, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x35, 0x33, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x35, 0x33, 0x39, 0x18, 0x27, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x35, 0x33, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x35, 0x34, 0x30, 0x18, 0x28, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x35, 0x34, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x35, 0x34, 0x31, 0x18, 0x29, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x35, 0x34, 0x31, 0x2a, 0x04, 0x08, 0x15, 0x10, 0x16, 0x32, 0x71, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x34, 0x32, 0x12, 0x24, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x30, 0x18, 0x95, 0xfb, 0xd3, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x36, 0x35, 0x30, 0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x34, 0x32,
-	0x22, 0xcb, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x35, 0x36,
-	0x34, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x36, 0x38, 0x18,
-	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x35, 0x35, 0x32, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x36, 0x38, 0x32, 0x71, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x36, 0x39, 0x12, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x18,
-	0x8e, 0xc5, 0xa8, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x35,
-	0x36, 0x34, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x36, 0x39, 0x22, 0xeb,
-	0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x36, 0x36, 0x31, 0x12,
-	0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x36, 0x37, 0x31, 0x18, 0x01, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x36, 0x36, 0x30, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x36, 0x37, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x36, 0x37, 0x32, 0x18, 0x02, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x36, 0x37, 0x32, 0x32, 0x71, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x36, 0x37, 0x33, 0x12, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x18, 0x9e, 0xeb,
-	0xf4, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x36, 0x36, 0x31,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x36, 0x37, 0x33, 0x22, 0xd5, 0x02, 0x0a,
-	0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x37, 0x34, 0x36, 0x12, 0x48, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x30, 0x36, 0x18, 0x01, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x37, 0x32, 0x37, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x38, 0x30, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x38, 0x30, 0x37, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x38, 0x30, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x38, 0x30, 0x38, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x38, 0x30, 0x38, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x38, 0x30, 0x39, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x36, 0x37, 0x32, 0x35, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x30,
-	0x39, 0x32, 0x71, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x31, 0x30, 0x12,
-	0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x30, 0x18, 0xed, 0xe7, 0xc5, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x36, 0x37, 0x34, 0x36, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x36, 0x38, 0x31, 0x30, 0x22, 0x94, 0x10, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x37, 0x37, 0x38, 0x36, 0x12, 0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x37, 0x37, 0x38, 0x37, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x37, 0x37, 0x38, 0x36, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x37, 0x37,
-	0x38, 0x37, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x37, 0x37, 0x38, 0x37,
-	0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x37, 0x35, 0x18, 0x14,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x37, 0x37, 0x38, 0x32, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x37, 0x35, 0x1a, 0xeb, 0x0d, 0x0a, 0x0c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x37, 0x37, 0x38, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x37, 0x37, 0x18, 0x02, 0x20, 0x02, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x37, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x37, 0x38, 0x18, 0x03, 0x20, 0x02, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x37, 0x38, 0x12, 0x48, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x37, 0x39, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x31, 0x37, 0x37, 0x38, 0x33, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x31, 0x37, 0x39, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x31, 0x38, 0x30, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70,
-	0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x31, 0x38, 0x30, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x31, 0x38, 0x31, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70,
-	0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x31, 0x38, 0x31, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x31, 0x38, 0x32, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70,
-	0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x31, 0x38, 0x32, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x31, 0x38, 0x33, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70,
-	0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x31, 0x38, 0x33, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x31, 0x38, 0x34, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x37,
-	0x37, 0x32, 0x36, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x38, 0x34, 0x12,
-	0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x38, 0x35, 0x18, 0x0b, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x38, 0x35, 0x12,
-	0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x38, 0x36, 0x18, 0x66, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x38, 0x36, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x31, 0x38, 0x37, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x38, 0x37, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x31, 0x38, 0x38, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x38, 0x38, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x31, 0x38, 0x39, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x38, 0x39, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x31, 0x39, 0x30, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x39, 0x30, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x31, 0x39, 0x31, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x39, 0x31, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x31, 0x39, 0x32, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x39, 0x32, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x31, 0x39, 0x33, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x39, 0x33, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x31, 0x39, 0x34, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x39, 0x34, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x31, 0x39, 0x35, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x39, 0x35, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x31, 0x39, 0x36, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x31,
-	0x36, 0x39, 0x32, 0x35, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x39, 0x36,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x39, 0x37, 0x18, 0x12,
-	0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x39, 0x37,
-	0x12, 0x46, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x39, 0x38, 0x18, 0x17,
-	0x20, 0x03, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x39, 0x38, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x38, 0x31, 0x39, 0x39, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x39, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x38, 0x32, 0x30, 0x30, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x38, 0x32, 0x30, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x38, 0x32, 0x30, 0x31, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x38, 0x32, 0x30, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x38, 0x32, 0x30, 0x32, 0x18, 0x63, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x38, 0x32, 0x30, 0x32, 0x32, 0x71, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x38, 0x31, 0x37, 0x36, 0x12, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x18, 0xcf, 0xcf, 0xd1,
-	0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x37, 0x37, 0x38, 0x36, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x37, 0x36, 0x22, 0xcf, 0x01, 0x0a, 0x0c,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x32, 0x38, 0x35, 0x37, 0x12, 0x48, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x32, 0x38, 0x37, 0x34, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x32, 0x38, 0x35, 0x33, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x32, 0x38, 0x37, 0x34, 0x32, 0x75, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x32, 0x38, 0x37, 0x35, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x31, 0x35, 0x35, 0x18, 0xa3,
-	0x95, 0xaa, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x32, 0x38, 0x35,
-	0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x32, 0x38, 0x37, 0x35, 0x22, 0xe7, 0x10,
-	0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x34, 0x30, 0x34, 0x12, 0x59,
-	0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x34, 0x30, 0x35, 0x18, 0x01,
-	0x20, 0x03, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x34, 0x30, 0x34, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x34, 0x30, 0x35, 0x52, 0x0c, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x34, 0x30, 0x35, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x34, 0x36, 0x38, 0x34, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x32, 0x34, 0x34, 0x30, 0x33, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x36, 0x38, 0x34, 0x1a, 0xbe, 0x0e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32,
-	0x34, 0x34, 0x30, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36,
-	0x38, 0x36, 0x18, 0x02, 0x20, 0x02, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x36, 0x38, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36,
-	0x38, 0x37, 0x18, 0x03, 0x20, 0x02, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x36, 0x38, 0x37, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36,
-	0x38, 0x38, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33,
-	0x31, 0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x38, 0x38, 0x12, 0x4e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x38, 0x39, 0x18, 0x05, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x38, 0x39, 0x12, 0x48,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x39, 0x30, 0x18, 0x06, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33, 0x37, 0x36, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x39, 0x30, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x34, 0x36, 0x39, 0x31, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x32, 0x34, 0x33, 0x34, 0x35, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36,
-	0x39, 0x31, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x39, 0x32,
-	0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36,
-	0x39, 0x32, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x39, 0x33,
-	0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33, 0x37, 0x39,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x39, 0x33, 0x12, 0x4e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x39, 0x34, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e,
-	0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x39, 0x34, 0x12, 0x4e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x39, 0x35, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e,
-	0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x39, 0x35, 0x12, 0x48, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x39, 0x36, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33, 0x39, 0x31, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x34, 0x36, 0x39, 0x36, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x36, 0x39, 0x37, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d,
-	0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x34, 0x36, 0x39, 0x37, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x36, 0x39, 0x38, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d,
-	0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x34, 0x36, 0x39, 0x38, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x36, 0x39, 0x39, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d,
-	0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x34, 0x36, 0x39, 0x39, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x37, 0x30, 0x30, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d,
-	0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x34, 0x37, 0x30, 0x30, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x37, 0x30, 0x31, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d,
-	0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x34, 0x37, 0x30, 0x31, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x37, 0x30, 0x32, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x36, 0x39, 0x32,
-	0x35, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x37, 0x30, 0x32, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x37, 0x30, 0x33, 0x18, 0x14, 0x20, 0x01, 0x28,
-	0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x37, 0x30, 0x33, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x37, 0x30, 0x34, 0x18, 0x13, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x37, 0x30, 0x34, 0x12, 0x45, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x37, 0x30, 0x35, 0x18, 0x18, 0x20, 0x03, 0x28,
-	0x0e, 0x32, 0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45,
-	0x6e, 0x75, 0x6d, 0x31, 0x36, 0x38, 0x39, 0x31, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x37, 0x30, 0x35, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x37,
-	0x30, 0x36, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74,
-	0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x37, 0x30, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x37,
-	0x30, 0x37, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x37, 0x30, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x37,
-	0x30, 0x38, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x37, 0x30, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x37,
-	0x30, 0x39, 0x18, 0x15, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x37, 0x30, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x37,
-	0x31, 0x30, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x37, 0x31, 0x30, 0x12, 0x46, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x37,
-	0x31, 0x31, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x37, 0x31, 0x31, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x37, 0x31, 0x32, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x37, 0x31, 0x32, 0x12, 0x46, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x37, 0x31, 0x33, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0e,
-	0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e,
-	0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x37, 0x31, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x37,
-	0x31, 0x34, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x37, 0x31, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x37,
-	0x31, 0x35, 0x18, 0x63, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x37, 0x31, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x37,
-	0x31, 0x36, 0x18, 0x20, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x37, 0x31, 0x36, 0x32, 0x71, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36,
-	0x38, 0x35, 0x12, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x18, 0xc7, 0x9a, 0xad, 0x04, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x34, 0x30, 0x34, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x34, 0x36, 0x38, 0x35, 0x22, 0xf1, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x32, 0x37, 0x33, 0x30, 0x30, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x37, 0x33, 0x30, 0x32, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x37, 0x33, 0x30, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x37, 0x33, 0x30, 0x33, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x37, 0x33, 0x30, 0x33, 0x32, 0x71, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x37, 0x33, 0x30, 0x34, 0x12, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x18, 0xb3, 0x9c, 0xf3,
-	0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x37, 0x33, 0x30, 0x30, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x33, 0x30, 0x34, 0x22, 0xc2, 0x08, 0x0a, 0x0c,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x37, 0x34, 0x35, 0x33, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x35, 0x39, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x35, 0x39, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x36, 0x30, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x36, 0x30, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x36, 0x31, 0x18, 0x06, 0x20, 0x03, 0x28, 0x02,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x36, 0x31, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x36, 0x32, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x05,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x36, 0x32, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x36, 0x33, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x05,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x36, 0x33, 0x12, 0x48, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x36, 0x34, 0x18, 0x18, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x37, 0x34, 0x35, 0x34, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x37, 0x34, 0x36, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x37, 0x34, 0x36, 0x35, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x37, 0x34, 0x36, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x37, 0x34, 0x36, 0x36, 0x18, 0x07, 0x20, 0x03, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x37, 0x34, 0x36, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x37, 0x34, 0x36, 0x37, 0x18, 0x16, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x37, 0x34, 0x36, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x37, 0x34, 0x36, 0x38, 0x18, 0x17, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x37, 0x34, 0x36, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x37, 0x34, 0x36, 0x39, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x37, 0x34, 0x36, 0x39, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x37, 0x34, 0x37, 0x30, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32,
-	0x37, 0x33, 0x35, 0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x37, 0x30,
-	0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x37, 0x31, 0x18, 0x10,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x37, 0x33, 0x36, 0x30, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x37, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x37, 0x32, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x37, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x37, 0x33, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x37, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x37, 0x34, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x37, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x37, 0x35, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x37, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x37, 0x36, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x37, 0x36, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x37, 0x37, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73,
-	0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x37, 0x37, 0x12, 0x21, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x37, 0x38, 0x18, 0x91, 0xce, 0xab, 0x10, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x37, 0x38, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x37, 0x39, 0x18, 0x14, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x37, 0x39, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x38, 0x30, 0x18, 0x15, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x38, 0x30, 0x12, 0x4e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x38, 0x31, 0x18, 0x0a, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x38, 0x31, 0x32, 0x71, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x38, 0x32, 0x12, 0x24, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x30, 0x18, 0xbc, 0xc5, 0xed, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32,
-	0x37, 0x34, 0x35, 0x33, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x38, 0x32,
-	0x3a, 0x49, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x32, 0x36, 0x12, 0x28,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0xd8, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x32, 0x36, 0x3a, 0x49, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x32, 0x37, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36,
-	0x39, 0x34, 0x35, 0x18, 0xb2, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x37, 0x30, 0x32, 0x37, 0x3a, 0x6f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x37, 0x30, 0x33, 0x31, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0xd7,
-	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x37, 0x30, 0x33, 0x31, 0x3a, 0x6f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x37, 0x30, 0x33, 0x32, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18,
-	0xa4, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x33, 0x32, 0x3a, 0x6f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x37, 0x30, 0x33, 0x38, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35,
-	0x18, 0xea, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x33, 0x38, 0x3a, 0x6f, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x37, 0x30, 0x33, 0x39, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34,
-	0x35, 0x18, 0xeb, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x33, 0x39, 0x3a, 0x6f, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x34, 0x32, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39,
-	0x34, 0x35, 0x18, 0xf6, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x34, 0x32, 0x3a, 0x49, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x34, 0x33, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36,
-	0x39, 0x34, 0x35, 0x18, 0xe0, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x37, 0x30, 0x34, 0x33, 0x3a, 0x49, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x37, 0x30, 0x34, 0x34, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0xe1,
-	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x34,
-	0x34, 0x3a, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x34, 0x38, 0x12,
-	0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0x3f, 0x20, 0x03, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x34, 0x38, 0x3a, 0x48, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x34, 0x39, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36,
-	0x39, 0x34, 0x35, 0x18, 0x40, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x37, 0x30, 0x34, 0x39, 0x3a, 0x6f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37,
-	0x30, 0x35, 0x32, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0xe9, 0x01,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x37, 0x30, 0x35, 0x32, 0x3a, 0x6e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x37, 0x30, 0x35, 0x33, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0x42,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x37, 0x30, 0x35, 0x33, 0x3a, 0x49, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x37, 0x30, 0x35, 0x36, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0x93,
-	0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x35,
-	0x36, 0x3a, 0x49, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x35, 0x37, 0x12,
-	0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0xe2, 0x01, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x35, 0x37, 0x3a, 0x6e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x36, 0x30, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x36, 0x39, 0x34, 0x35, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x36, 0x30, 0x3a, 0x48, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x37, 0x33, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x36, 0x39, 0x34, 0x35, 0x18, 0x4b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x37, 0x30, 0x37, 0x33, 0x3a, 0x6e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x37, 0x30, 0x37, 0x36, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0x4d,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x37, 0x30, 0x37, 0x36, 0x3a, 0x49, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x37, 0x30, 0x37, 0x38, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0xa8,
-	0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x37,
-	0x38, 0x3a, 0x6f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x38, 0x32, 0x12,
-	0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0xa0, 0x01, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30,
-	0x38, 0x32, 0x3a, 0x6f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x39, 0x31,
-	0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0xc9, 0x04, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37,
-	0x30, 0x39, 0x31, 0x3a, 0x6f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x39,
-	0x38, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0xdb, 0x07, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x37, 0x30, 0x39, 0x38, 0x3a, 0x6f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x31,
-	0x30, 0x31, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0x9d, 0x01, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x37, 0x31, 0x30, 0x31, 0x3a, 0x49, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37,
-	0x31, 0x30, 0x32, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0x9e, 0x01,
-	0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x31, 0x30, 0x32,
-	0x3a, 0x49, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x31, 0x30, 0x37, 0x12, 0x28,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0xa6, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x31, 0x30, 0x37, 0x3a, 0x49, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x31, 0x33, 0x33, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36,
-	0x39, 0x34, 0x35, 0x18, 0xb7, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x37, 0x31, 0x33, 0x33, 0x3a, 0x49, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x37, 0x31, 0x33, 0x34, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0xbc,
-	0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x31, 0x33,
-	0x34, 0x3a, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x31, 0x36, 0x30, 0x12,
-	0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0x31, 0x20, 0x03, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x31, 0x36, 0x30, 0x3a, 0x48, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x31, 0x36, 0x38, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36,
-	0x39, 0x34, 0x35, 0x18, 0x20, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x37, 0x31, 0x36, 0x38, 0x3a, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37,
-	0x31, 0x37, 0x30, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0x22, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x31, 0x37, 0x30, 0x3a,
-	0x6f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x31, 0x37, 0x32, 0x12, 0x28, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0xfd, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x31, 0x37, 0x32,
-	0x3a, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x31, 0x37, 0x34, 0x12, 0x28,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0x27, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x31, 0x37, 0x34, 0x3a, 0x6e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x37, 0x31, 0x37, 0x35, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39,
-	0x34, 0x35, 0x18, 0x28, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x31, 0x37, 0x35, 0x3a, 0x6f, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x37, 0x31, 0x37, 0x38, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39,
-	0x34, 0x35, 0x18, 0xff, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x31, 0x37, 0x38, 0x3a, 0x6e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x31, 0x38, 0x35, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36,
-	0x39, 0x34, 0x35, 0x18, 0x32, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x31, 0x38, 0x35, 0x3a, 0x49, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x32, 0x30, 0x37, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36,
-	0x39, 0x34, 0x35, 0x18, 0xb9, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x37, 0x32, 0x30, 0x37, 0x3a, 0x6f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x37, 0x32, 0x33, 0x38, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0xb8,
-	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x37, 0x32, 0x33, 0x38, 0x3a, 0x6f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x37, 0x32, 0x38, 0x39, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18,
-	0xb1, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x37, 0x32, 0x38, 0x39, 0x3a, 0x6f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x37, 0x32, 0x39, 0x30, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35,
-	0x18, 0xb2, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x32, 0x39, 0x30, 0x3a, 0x6f, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x37, 0x32, 0x39, 0x36, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34,
-	0x35, 0x18, 0xda, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x32, 0x39, 0x36, 0x3a, 0x48, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x37, 0x32, 0x39, 0x38, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39,
-	0x34, 0x35, 0x18, 0x2c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x37, 0x32, 0x39, 0x38, 0x3a, 0x6e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x33,
-	0x30, 0x31, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0x2f, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x37, 0x33, 0x30, 0x31, 0x3a, 0x6e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x34,
-	0x31, 0x32, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0x15, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x37, 0x34, 0x31, 0x32, 0x3a, 0x6f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x34,
-	0x33, 0x38, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0x84, 0x01, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x37, 0x34, 0x33, 0x38, 0x3a, 0x6f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37,
-	0x34, 0x35, 0x38, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0x80, 0x04,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x37, 0x34, 0x35, 0x38, 0x3a, 0x49, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x37, 0x34, 0x36, 0x30, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0xb0,
-	0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x34, 0x36,
-	0x30, 0x3a, 0x49, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x34, 0x36, 0x36, 0x12,
-	0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0xa8, 0x04, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x34, 0x36, 0x36, 0x3a, 0x6f, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x36, 0x31, 0x37, 0x12, 0x28, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x36, 0x39, 0x34, 0x35, 0x18, 0xb8, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x36, 0x31, 0x37, 0x3a, 0x49, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x36, 0x31, 0x38, 0x12, 0x28, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x36, 0x39, 0x34, 0x35, 0x18, 0xbc, 0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x37, 0x36, 0x31, 0x38, 0x42, 0x23, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0xf8, 0x01, 0x01,
-}
-
-var (
-	file_datasets_google_message3_benchmark_message3_proto_rawDescOnce sync.Once
-	file_datasets_google_message3_benchmark_message3_proto_rawDescData = file_datasets_google_message3_benchmark_message3_proto_rawDesc
-)
-
-func file_datasets_google_message3_benchmark_message3_proto_rawDescGZIP() []byte {
-	file_datasets_google_message3_benchmark_message3_proto_rawDescOnce.Do(func() {
-		file_datasets_google_message3_benchmark_message3_proto_rawDescData = protoimpl.X.CompressGZIP(file_datasets_google_message3_benchmark_message3_proto_rawDescData)
-	})
-	return file_datasets_google_message3_benchmark_message3_proto_rawDescData
-}
-
-var file_datasets_google_message3_benchmark_message3_proto_msgTypes = make([]protoimpl.MessageInfo, 33)
-var file_datasets_google_message3_benchmark_message3_proto_goTypes = []interface{}{
-	(*GoogleMessage3)(nil),            // 0: benchmarks.google_message3.GoogleMessage3
-	(*Message1327)(nil),               // 1: benchmarks.google_message3.Message1327
-	(*Message3672)(nil),               // 2: benchmarks.google_message3.Message3672
-	(*Message3804)(nil),               // 3: benchmarks.google_message3.Message3804
-	(*Message6849)(nil),               // 4: benchmarks.google_message3.Message6849
-	(*Message6866)(nil),               // 5: benchmarks.google_message3.Message6866
-	(*Message6870)(nil),               // 6: benchmarks.google_message3.Message6870
-	(*Message7651)(nil),               // 7: benchmarks.google_message3.Message7651
-	(*Message7864)(nil),               // 8: benchmarks.google_message3.Message7864
-	(*Message7929)(nil),               // 9: benchmarks.google_message3.Message7929
-	(*Message8508)(nil),               // 10: benchmarks.google_message3.Message8508
-	(*Message9122)(nil),               // 11: benchmarks.google_message3.Message9122
-	(*Message10177)(nil),              // 12: benchmarks.google_message3.Message10177
-	(*Message10278)(nil),              // 13: benchmarks.google_message3.Message10278
-	(*Message10323)(nil),              // 14: benchmarks.google_message3.Message10323
-	(*Message10324)(nil),              // 15: benchmarks.google_message3.Message10324
-	(*Message11990)(nil),              // 16: benchmarks.google_message3.Message11990
-	(*Message12691)(nil),              // 17: benchmarks.google_message3.Message12691
-	(*Message12870)(nil),              // 18: benchmarks.google_message3.Message12870
-	(*Message13154)(nil),              // 19: benchmarks.google_message3.Message13154
-	(*Message16507)(nil),              // 20: benchmarks.google_message3.Message16507
-	(*Message16564)(nil),              // 21: benchmarks.google_message3.Message16564
-	(*Message16661)(nil),              // 22: benchmarks.google_message3.Message16661
-	(*Message16746)(nil),              // 23: benchmarks.google_message3.Message16746
-	(*Message17786)(nil),              // 24: benchmarks.google_message3.Message17786
-	(*Message22857)(nil),              // 25: benchmarks.google_message3.Message22857
-	(*Message24404)(nil),              // 26: benchmarks.google_message3.Message24404
-	(*Message27300)(nil),              // 27: benchmarks.google_message3.Message27300
-	(*Message27453)(nil),              // 28: benchmarks.google_message3.Message27453
-	(*Message3672_Message3673)(nil),   // 29: benchmarks.google_message3.Message3672.Message3673
-	(*Message3672_Message3674)(nil),   // 30: benchmarks.google_message3.Message3672.Message3674
-	(*Message17786_Message17787)(nil), // 31: benchmarks.google_message3.Message17786.Message17787
-	(*Message24404_Message24405)(nil), // 32: benchmarks.google_message3.Message24404.Message24405
-	(*Message37487)(nil),              // 33: benchmarks.google_message3.Message37487
-	(*Message36876)(nil),              // 34: benchmarks.google_message3.Message36876
-	(*Message13062)(nil),              // 35: benchmarks.google_message3.Message13062
-	(*Message952)(nil),                // 36: benchmarks.google_message3.Message952
-	(*UnusedEmptyMessage)(nil),        // 37: benchmarks.google_message3.UnusedEmptyMessage
-	(*Message1328)(nil),               // 38: benchmarks.google_message3.Message1328
-	(Enum3476)(0),                     // 39: benchmarks.google_message3.Enum3476
-	(Enum3805)(0),                     // 40: benchmarks.google_message3.Enum3805
-	(Enum3783)(0),                     // 41: benchmarks.google_message3.Enum3783
-	(*Message6850)(nil),               // 42: benchmarks.google_message3.Message6850
-	(*Message6863)(nil),               // 43: benchmarks.google_message3.Message6863
-	(*Message6871)(nil),               // 44: benchmarks.google_message3.Message6871
-	(*Message7547)(nil),               // 45: benchmarks.google_message3.Message7547
-	(*Message7648)(nil),               // 46: benchmarks.google_message3.Message7648
-	(UnusedEnum)(0),                   // 47: benchmarks.google_message3.UnusedEnum
-	(Enum7654)(0),                     // 48: benchmarks.google_message3.Enum7654
-	(*Message7865)(nil),               // 49: benchmarks.google_message3.Message7865
-	(*Message7919)(nil),               // 50: benchmarks.google_message3.Message7919
-	(*Message7920)(nil),               // 51: benchmarks.google_message3.Message7920
-	(*Message7921)(nil),               // 52: benchmarks.google_message3.Message7921
-	(*Message7928)(nil),               // 53: benchmarks.google_message3.Message7928
-	(*Message8511)(nil),               // 54: benchmarks.google_message3.Message8511
-	(*Message8512)(nil),               // 55: benchmarks.google_message3.Message8512
-	(*Message8513)(nil),               // 56: benchmarks.google_message3.Message8513
-	(*Message8514)(nil),               // 57: benchmarks.google_message3.Message8514
-	(*Message8515)(nil),               // 58: benchmarks.google_message3.Message8515
-	(*Message10155)(nil),              // 59: benchmarks.google_message3.Message10155
-	(*Message10320)(nil),              // 60: benchmarks.google_message3.Message10320
-	(*Message10322)(nil),              // 61: benchmarks.google_message3.Message10322
-	(*Message10321)(nil),              // 62: benchmarks.google_message3.Message10321
-	(*Message11988)(nil),              // 63: benchmarks.google_message3.Message11988
-	(*Message12668)(nil),              // 64: benchmarks.google_message3.Message12668
-	(*Message12825)(nil),              // 65: benchmarks.google_message3.Message12825
-	(Enum12871)(0),                    // 66: benchmarks.google_message3.Enum12871
-	(*Message16478)(nil),              // 67: benchmarks.google_message3.Message16478
-	(*Message16552)(nil),              // 68: benchmarks.google_message3.Message16552
-	(*Message16660)(nil),              // 69: benchmarks.google_message3.Message16660
-	(*Message16727)(nil),              // 70: benchmarks.google_message3.Message16727
-	(*Message16725)(nil),              // 71: benchmarks.google_message3.Message16725
-	(*Message17782)(nil),              // 72: benchmarks.google_message3.Message17782
-	(*Message22853)(nil),              // 73: benchmarks.google_message3.Message22853
-	(*Message24403)(nil),              // 74: benchmarks.google_message3.Message24403
-	(*Message27454)(nil),              // 75: benchmarks.google_message3.Message27454
-	(*Message27357)(nil),              // 76: benchmarks.google_message3.Message27357
-	(*Message27360)(nil),              // 77: benchmarks.google_message3.Message27360
-	(*Message17783)(nil),              // 78: benchmarks.google_message3.Message17783
-	(*Message17726)(nil),              // 79: benchmarks.google_message3.Message17726
-	(*Message16945)(nil),              // 80: benchmarks.google_message3.Message16945
-	(Enum16925)(0),                    // 81: benchmarks.google_message3.Enum16925
-	(*Message24317)(nil),              // 82: benchmarks.google_message3.Message24317
-	(*Message24376)(nil),              // 83: benchmarks.google_message3.Message24376
-	(*Message24345)(nil),              // 84: benchmarks.google_message3.Message24345
-	(*Message24379)(nil),              // 85: benchmarks.google_message3.Message24379
-	(*Message24391)(nil),              // 86: benchmarks.google_message3.Message24391
-	(Enum16891)(0),                    // 87: benchmarks.google_message3.Enum16891
-	(*Message0)(nil),                  // 88: benchmarks.google_message3.Message0
-	(*Message13145)(nil),              // 89: benchmarks.google_message3.Message13145
-}
-var file_datasets_google_message3_benchmark_message3_proto_depIdxs = []int32{
-	33,  // 0: benchmarks.google_message3.GoogleMessage3.field37519:type_name -> benchmarks.google_message3.Message37487
-	34,  // 1: benchmarks.google_message3.GoogleMessage3.field37520:type_name -> benchmarks.google_message3.Message36876
-	35,  // 2: benchmarks.google_message3.GoogleMessage3.field37521:type_name -> benchmarks.google_message3.Message13062
-	36,  // 3: benchmarks.google_message3.GoogleMessage3.field37522:type_name -> benchmarks.google_message3.Message952
-	37,  // 4: benchmarks.google_message3.GoogleMessage3.field37523:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 5: benchmarks.google_message3.GoogleMessage3.field37524:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 6: benchmarks.google_message3.GoogleMessage3.field37525:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 7: benchmarks.google_message3.GoogleMessage3.field37526:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 8: benchmarks.google_message3.GoogleMessage3.field37527:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 9: benchmarks.google_message3.GoogleMessage3.field37528:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 10: benchmarks.google_message3.GoogleMessage3.field37529:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 11: benchmarks.google_message3.GoogleMessage3.field37530:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 12: benchmarks.google_message3.GoogleMessage3.field37531:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 13: benchmarks.google_message3.GoogleMessage3.field37532:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 14: benchmarks.google_message3.GoogleMessage3.field37533:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 15: benchmarks.google_message3.Message1327.field1369:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	38,  // 16: benchmarks.google_message3.Message1327.field1370:type_name -> benchmarks.google_message3.Message1328
-	37,  // 17: benchmarks.google_message3.Message1327.field1371:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 18: benchmarks.google_message3.Message1327.field1372:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	39,  // 19: benchmarks.google_message3.Message3672.field3727:type_name -> benchmarks.google_message3.Enum3476
-	29,  // 20: benchmarks.google_message3.Message3672.message3673:type_name -> benchmarks.google_message3.Message3672.Message3673
-	30,  // 21: benchmarks.google_message3.Message3672.message3674:type_name -> benchmarks.google_message3.Message3672.Message3674
-	39,  // 22: benchmarks.google_message3.Message3672.field3734:type_name -> benchmarks.google_message3.Enum3476
-	37,  // 23: benchmarks.google_message3.Message3672.field3736:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	40,  // 24: benchmarks.google_message3.Message3804.field3820:type_name -> benchmarks.google_message3.Enum3805
-	41,  // 25: benchmarks.google_message3.Message3804.field3824:type_name -> benchmarks.google_message3.Enum3783
-	42,  // 26: benchmarks.google_message3.Message6849.field6910:type_name -> benchmarks.google_message3.Message6850
-	43,  // 27: benchmarks.google_message3.Message6866.field6973:type_name -> benchmarks.google_message3.Message6863
-	44,  // 28: benchmarks.google_message3.Message6870.field6991:type_name -> benchmarks.google_message3.Message6871
-	37,  // 29: benchmarks.google_message3.Message7651.field7708:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	45,  // 30: benchmarks.google_message3.Message7651.field7715:type_name -> benchmarks.google_message3.Message7547
-	45,  // 31: benchmarks.google_message3.Message7651.field7716:type_name -> benchmarks.google_message3.Message7547
-	37,  // 32: benchmarks.google_message3.Message7651.field7717:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	46,  // 33: benchmarks.google_message3.Message7651.field7720:type_name -> benchmarks.google_message3.Message7648
-	37,  // 34: benchmarks.google_message3.Message7651.field7725:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	47,  // 35: benchmarks.google_message3.Message7651.field7726:type_name -> benchmarks.google_message3.UnusedEnum
-	48,  // 36: benchmarks.google_message3.Message7651.field7727:type_name -> benchmarks.google_message3.Enum7654
-	37,  // 37: benchmarks.google_message3.Message7651.field7729:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	49,  // 38: benchmarks.google_message3.Message7864.field7868:type_name -> benchmarks.google_message3.Message7865
-	49,  // 39: benchmarks.google_message3.Message7864.field7869:type_name -> benchmarks.google_message3.Message7865
-	49,  // 40: benchmarks.google_message3.Message7864.field7870:type_name -> benchmarks.google_message3.Message7865
-	37,  // 41: benchmarks.google_message3.Message7864.field7871:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	50,  // 42: benchmarks.google_message3.Message7929.field7950:type_name -> benchmarks.google_message3.Message7919
-	37,  // 43: benchmarks.google_message3.Message7929.field7951:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	51,  // 44: benchmarks.google_message3.Message7929.field7952:type_name -> benchmarks.google_message3.Message7920
-	52,  // 45: benchmarks.google_message3.Message7929.field7953:type_name -> benchmarks.google_message3.Message7921
-	53,  // 46: benchmarks.google_message3.Message7929.field7954:type_name -> benchmarks.google_message3.Message7928
-	37,  // 47: benchmarks.google_message3.Message7929.field7959:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	54,  // 48: benchmarks.google_message3.Message8508.field8517:type_name -> benchmarks.google_message3.Message8511
-	55,  // 49: benchmarks.google_message3.Message8508.field8518:type_name -> benchmarks.google_message3.Message8512
-	56,  // 50: benchmarks.google_message3.Message8508.field8519:type_name -> benchmarks.google_message3.Message8513
-	57,  // 51: benchmarks.google_message3.Message8508.field8521:type_name -> benchmarks.google_message3.Message8514
-	37,  // 52: benchmarks.google_message3.Message8508.field8522:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	58,  // 53: benchmarks.google_message3.Message8508.field8523:type_name -> benchmarks.google_message3.Message8515
-	37,  // 54: benchmarks.google_message3.Message8508.field8524:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	59,  // 55: benchmarks.google_message3.Message10177.field10270:type_name -> benchmarks.google_message3.Message10155
-	60,  // 56: benchmarks.google_message3.Message10323.field10360:type_name -> benchmarks.google_message3.Message10320
-	61,  // 57: benchmarks.google_message3.Message10324.field10362:type_name -> benchmarks.google_message3.Message10322
-	62,  // 58: benchmarks.google_message3.Message10324.field10363:type_name -> benchmarks.google_message3.Message10321
-	63,  // 59: benchmarks.google_message3.Message11990.field12030:type_name -> benchmarks.google_message3.Message11988
-	64,  // 60: benchmarks.google_message3.Message12691.field12715:type_name -> benchmarks.google_message3.Message12668
-	18,  // 61: benchmarks.google_message3.Message12870.field12888:type_name -> benchmarks.google_message3.Message12870
-	65,  // 62: benchmarks.google_message3.Message12870.field12894:type_name -> benchmarks.google_message3.Message12825
-	66,  // 63: benchmarks.google_message3.Message12870.field12897:type_name -> benchmarks.google_message3.Enum12871
-	37,  // 64: benchmarks.google_message3.Message16507.field16521:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 65: benchmarks.google_message3.Message16507.field16522:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 66: benchmarks.google_message3.Message16507.field16523:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 67: benchmarks.google_message3.Message16507.field16527:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	67,  // 68: benchmarks.google_message3.Message16507.field16531:type_name -> benchmarks.google_message3.Message16478
-	68,  // 69: benchmarks.google_message3.Message16564.field16568:type_name -> benchmarks.google_message3.Message16552
-	69,  // 70: benchmarks.google_message3.Message16661.field16671:type_name -> benchmarks.google_message3.Message16660
-	70,  // 71: benchmarks.google_message3.Message16746.field16806:type_name -> benchmarks.google_message3.Message16727
-	71,  // 72: benchmarks.google_message3.Message16746.field16809:type_name -> benchmarks.google_message3.Message16725
-	31,  // 73: benchmarks.google_message3.Message17786.message17787:type_name -> benchmarks.google_message3.Message17786.Message17787
-	72,  // 74: benchmarks.google_message3.Message17786.field18175:type_name -> benchmarks.google_message3.Message17782
-	73,  // 75: benchmarks.google_message3.Message22857.field22874:type_name -> benchmarks.google_message3.Message22853
-	32,  // 76: benchmarks.google_message3.Message24404.message24405:type_name -> benchmarks.google_message3.Message24404.Message24405
-	74,  // 77: benchmarks.google_message3.Message24404.field24684:type_name -> benchmarks.google_message3.Message24403
-	37,  // 78: benchmarks.google_message3.Message27300.field27302:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	75,  // 79: benchmarks.google_message3.Message27453.field27464:type_name -> benchmarks.google_message3.Message27454
-	76,  // 80: benchmarks.google_message3.Message27453.field27470:type_name -> benchmarks.google_message3.Message27357
-	77,  // 81: benchmarks.google_message3.Message27453.field27471:type_name -> benchmarks.google_message3.Message27360
-	37,  // 82: benchmarks.google_message3.Message27453.field27477:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 83: benchmarks.google_message3.Message27453.field27481:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	39,  // 84: benchmarks.google_message3.Message3672.Message3673.field3738:type_name -> benchmarks.google_message3.Enum3476
-	39,  // 85: benchmarks.google_message3.Message3672.Message3674.field3740:type_name -> benchmarks.google_message3.Enum3476
-	78,  // 86: benchmarks.google_message3.Message17786.Message17787.field18179:type_name -> benchmarks.google_message3.Message17783
-	37,  // 87: benchmarks.google_message3.Message17786.Message17787.field18180:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 88: benchmarks.google_message3.Message17786.Message17787.field18181:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 89: benchmarks.google_message3.Message17786.Message17787.field18182:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 90: benchmarks.google_message3.Message17786.Message17787.field18183:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	79,  // 91: benchmarks.google_message3.Message17786.Message17787.field18184:type_name -> benchmarks.google_message3.Message17726
-	37,  // 92: benchmarks.google_message3.Message17786.Message17787.field18185:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	80,  // 93: benchmarks.google_message3.Message17786.Message17787.field18186:type_name -> benchmarks.google_message3.Message16945
-	37,  // 94: benchmarks.google_message3.Message17786.Message17787.field18187:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 95: benchmarks.google_message3.Message17786.Message17787.field18188:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 96: benchmarks.google_message3.Message17786.Message17787.field18189:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 97: benchmarks.google_message3.Message17786.Message17787.field18190:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 98: benchmarks.google_message3.Message17786.Message17787.field18191:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 99: benchmarks.google_message3.Message17786.Message17787.field18192:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 100: benchmarks.google_message3.Message17786.Message17787.field18193:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 101: benchmarks.google_message3.Message17786.Message17787.field18194:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 102: benchmarks.google_message3.Message17786.Message17787.field18195:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	81,  // 103: benchmarks.google_message3.Message17786.Message17787.field18196:type_name -> benchmarks.google_message3.Enum16925
-	47,  // 104: benchmarks.google_message3.Message17786.Message17787.field18198:type_name -> benchmarks.google_message3.UnusedEnum
-	37,  // 105: benchmarks.google_message3.Message17786.Message17787.field18199:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	82,  // 106: benchmarks.google_message3.Message24404.Message24405.field24688:type_name -> benchmarks.google_message3.Message24317
-	37,  // 107: benchmarks.google_message3.Message24404.Message24405.field24689:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	83,  // 108: benchmarks.google_message3.Message24404.Message24405.field24690:type_name -> benchmarks.google_message3.Message24376
-	84,  // 109: benchmarks.google_message3.Message24404.Message24405.field24691:type_name -> benchmarks.google_message3.Message24345
-	37,  // 110: benchmarks.google_message3.Message24404.Message24405.field24692:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	85,  // 111: benchmarks.google_message3.Message24404.Message24405.field24693:type_name -> benchmarks.google_message3.Message24379
-	37,  // 112: benchmarks.google_message3.Message24404.Message24405.field24694:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 113: benchmarks.google_message3.Message24404.Message24405.field24695:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	86,  // 114: benchmarks.google_message3.Message24404.Message24405.field24696:type_name -> benchmarks.google_message3.Message24391
-	37,  // 115: benchmarks.google_message3.Message24404.Message24405.field24697:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 116: benchmarks.google_message3.Message24404.Message24405.field24698:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 117: benchmarks.google_message3.Message24404.Message24405.field24699:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 118: benchmarks.google_message3.Message24404.Message24405.field24700:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	37,  // 119: benchmarks.google_message3.Message24404.Message24405.field24701:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	81,  // 120: benchmarks.google_message3.Message24404.Message24405.field24702:type_name -> benchmarks.google_message3.Enum16925
-	87,  // 121: benchmarks.google_message3.Message24404.Message24405.field24705:type_name -> benchmarks.google_message3.Enum16891
-	37,  // 122: benchmarks.google_message3.Message24404.Message24405.field24706:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	47,  // 123: benchmarks.google_message3.Message24404.Message24405.field24711:type_name -> benchmarks.google_message3.UnusedEnum
-	47,  // 124: benchmarks.google_message3.Message24404.Message24405.field24713:type_name -> benchmarks.google_message3.UnusedEnum
-	80,  // 125: benchmarks.google_message3.field17026:extendee -> benchmarks.google_message3.Message16945
-	80,  // 126: benchmarks.google_message3.field17027:extendee -> benchmarks.google_message3.Message16945
-	80,  // 127: benchmarks.google_message3.field17031:extendee -> benchmarks.google_message3.Message16945
-	80,  // 128: benchmarks.google_message3.field17032:extendee -> benchmarks.google_message3.Message16945
-	80,  // 129: benchmarks.google_message3.field17038:extendee -> benchmarks.google_message3.Message16945
-	80,  // 130: benchmarks.google_message3.field17039:extendee -> benchmarks.google_message3.Message16945
-	80,  // 131: benchmarks.google_message3.field17042:extendee -> benchmarks.google_message3.Message16945
-	80,  // 132: benchmarks.google_message3.field17043:extendee -> benchmarks.google_message3.Message16945
-	80,  // 133: benchmarks.google_message3.field17044:extendee -> benchmarks.google_message3.Message16945
-	80,  // 134: benchmarks.google_message3.field17048:extendee -> benchmarks.google_message3.Message16945
-	80,  // 135: benchmarks.google_message3.field17049:extendee -> benchmarks.google_message3.Message16945
-	80,  // 136: benchmarks.google_message3.field17052:extendee -> benchmarks.google_message3.Message16945
-	80,  // 137: benchmarks.google_message3.field17053:extendee -> benchmarks.google_message3.Message16945
-	80,  // 138: benchmarks.google_message3.field17056:extendee -> benchmarks.google_message3.Message16945
-	80,  // 139: benchmarks.google_message3.field17057:extendee -> benchmarks.google_message3.Message16945
-	80,  // 140: benchmarks.google_message3.field17060:extendee -> benchmarks.google_message3.Message16945
-	80,  // 141: benchmarks.google_message3.field17073:extendee -> benchmarks.google_message3.Message16945
-	80,  // 142: benchmarks.google_message3.field17076:extendee -> benchmarks.google_message3.Message16945
-	80,  // 143: benchmarks.google_message3.field17078:extendee -> benchmarks.google_message3.Message16945
-	80,  // 144: benchmarks.google_message3.field17082:extendee -> benchmarks.google_message3.Message16945
-	80,  // 145: benchmarks.google_message3.field17091:extendee -> benchmarks.google_message3.Message16945
-	80,  // 146: benchmarks.google_message3.field17098:extendee -> benchmarks.google_message3.Message16945
-	80,  // 147: benchmarks.google_message3.field17101:extendee -> benchmarks.google_message3.Message16945
-	80,  // 148: benchmarks.google_message3.field17102:extendee -> benchmarks.google_message3.Message16945
-	80,  // 149: benchmarks.google_message3.field17107:extendee -> benchmarks.google_message3.Message16945
-	80,  // 150: benchmarks.google_message3.field17133:extendee -> benchmarks.google_message3.Message16945
-	80,  // 151: benchmarks.google_message3.field17134:extendee -> benchmarks.google_message3.Message16945
-	80,  // 152: benchmarks.google_message3.field17160:extendee -> benchmarks.google_message3.Message16945
-	80,  // 153: benchmarks.google_message3.field17168:extendee -> benchmarks.google_message3.Message16945
-	80,  // 154: benchmarks.google_message3.field17170:extendee -> benchmarks.google_message3.Message16945
-	80,  // 155: benchmarks.google_message3.field17172:extendee -> benchmarks.google_message3.Message16945
-	80,  // 156: benchmarks.google_message3.field17174:extendee -> benchmarks.google_message3.Message16945
-	80,  // 157: benchmarks.google_message3.field17175:extendee -> benchmarks.google_message3.Message16945
-	80,  // 158: benchmarks.google_message3.field17178:extendee -> benchmarks.google_message3.Message16945
-	80,  // 159: benchmarks.google_message3.field17185:extendee -> benchmarks.google_message3.Message16945
-	80,  // 160: benchmarks.google_message3.field17207:extendee -> benchmarks.google_message3.Message16945
-	80,  // 161: benchmarks.google_message3.field17238:extendee -> benchmarks.google_message3.Message16945
-	80,  // 162: benchmarks.google_message3.field17289:extendee -> benchmarks.google_message3.Message16945
-	80,  // 163: benchmarks.google_message3.field17290:extendee -> benchmarks.google_message3.Message16945
-	80,  // 164: benchmarks.google_message3.field17296:extendee -> benchmarks.google_message3.Message16945
-	80,  // 165: benchmarks.google_message3.field17298:extendee -> benchmarks.google_message3.Message16945
-	80,  // 166: benchmarks.google_message3.field17301:extendee -> benchmarks.google_message3.Message16945
-	80,  // 167: benchmarks.google_message3.field17412:extendee -> benchmarks.google_message3.Message16945
-	80,  // 168: benchmarks.google_message3.field17438:extendee -> benchmarks.google_message3.Message16945
-	80,  // 169: benchmarks.google_message3.field17458:extendee -> benchmarks.google_message3.Message16945
-	80,  // 170: benchmarks.google_message3.field17460:extendee -> benchmarks.google_message3.Message16945
-	80,  // 171: benchmarks.google_message3.field17466:extendee -> benchmarks.google_message3.Message16945
-	80,  // 172: benchmarks.google_message3.field17617:extendee -> benchmarks.google_message3.Message16945
-	80,  // 173: benchmarks.google_message3.field17618:extendee -> benchmarks.google_message3.Message16945
-	88,  // 174: benchmarks.google_message3.Message1327.field1373:extendee -> benchmarks.google_message3.Message0
-	88,  // 175: benchmarks.google_message3.Message3672.field3737:extendee -> benchmarks.google_message3.Message0
-	88,  // 176: benchmarks.google_message3.Message3804.field3825:extendee -> benchmarks.google_message3.Message0
-	88,  // 177: benchmarks.google_message3.Message6849.field6911:extendee -> benchmarks.google_message3.Message0
-	88,  // 178: benchmarks.google_message3.Message6866.field6974:extendee -> benchmarks.google_message3.Message0
-	88,  // 179: benchmarks.google_message3.Message6870.field6992:extendee -> benchmarks.google_message3.Message0
-	88,  // 180: benchmarks.google_message3.Message7651.field7730:extendee -> benchmarks.google_message3.Message0
-	88,  // 181: benchmarks.google_message3.Message7864.field7872:extendee -> benchmarks.google_message3.Message0
-	88,  // 182: benchmarks.google_message3.Message7929.field7962:extendee -> benchmarks.google_message3.Message0
-	88,  // 183: benchmarks.google_message3.Message8508.field8534:extendee -> benchmarks.google_message3.Message0
-	88,  // 184: benchmarks.google_message3.Message9122.field9134:extendee -> benchmarks.google_message3.Message0
-	88,  // 185: benchmarks.google_message3.Message10177.field10271:extendee -> benchmarks.google_message3.Message0
-	59,  // 186: benchmarks.google_message3.Message10278.field10289:extendee -> benchmarks.google_message3.Message10155
-	59,  // 187: benchmarks.google_message3.Message10323.field10361:extendee -> benchmarks.google_message3.Message10155
-	59,  // 188: benchmarks.google_message3.Message10324.field10364:extendee -> benchmarks.google_message3.Message10155
-	88,  // 189: benchmarks.google_message3.Message11990.field12031:extendee -> benchmarks.google_message3.Message0
-	88,  // 190: benchmarks.google_message3.Message12691.field12716:extendee -> benchmarks.google_message3.Message0
-	88,  // 191: benchmarks.google_message3.Message12870.field12899:extendee -> benchmarks.google_message3.Message0
-	89,  // 192: benchmarks.google_message3.Message13154.field13166:extendee -> benchmarks.google_message3.Message13145
-	88,  // 193: benchmarks.google_message3.Message16507.field16542:extendee -> benchmarks.google_message3.Message0
-	88,  // 194: benchmarks.google_message3.Message16564.field16569:extendee -> benchmarks.google_message3.Message0
-	88,  // 195: benchmarks.google_message3.Message16661.field16673:extendee -> benchmarks.google_message3.Message0
-	88,  // 196: benchmarks.google_message3.Message16746.field16810:extendee -> benchmarks.google_message3.Message0
-	88,  // 197: benchmarks.google_message3.Message17786.field18176:extendee -> benchmarks.google_message3.Message0
-	59,  // 198: benchmarks.google_message3.Message22857.field22875:extendee -> benchmarks.google_message3.Message10155
-	88,  // 199: benchmarks.google_message3.Message24404.field24685:extendee -> benchmarks.google_message3.Message0
-	88,  // 200: benchmarks.google_message3.Message27300.field27304:extendee -> benchmarks.google_message3.Message0
-	88,  // 201: benchmarks.google_message3.Message27453.field27482:extendee -> benchmarks.google_message3.Message0
-	88,  // 202: benchmarks.google_message3.field17031:type_name -> benchmarks.google_message3.Message0
-	88,  // 203: benchmarks.google_message3.field17032:type_name -> benchmarks.google_message3.Message0
-	88,  // 204: benchmarks.google_message3.field17038:type_name -> benchmarks.google_message3.Message0
-	88,  // 205: benchmarks.google_message3.field17039:type_name -> benchmarks.google_message3.Message0
-	88,  // 206: benchmarks.google_message3.field17042:type_name -> benchmarks.google_message3.Message0
-	88,  // 207: benchmarks.google_message3.field17052:type_name -> benchmarks.google_message3.Message0
-	88,  // 208: benchmarks.google_message3.field17053:type_name -> benchmarks.google_message3.Message0
-	88,  // 209: benchmarks.google_message3.field17060:type_name -> benchmarks.google_message3.Message0
-	88,  // 210: benchmarks.google_message3.field17076:type_name -> benchmarks.google_message3.Message0
-	88,  // 211: benchmarks.google_message3.field17082:type_name -> benchmarks.google_message3.Message0
-	88,  // 212: benchmarks.google_message3.field17091:type_name -> benchmarks.google_message3.Message0
-	88,  // 213: benchmarks.google_message3.field17098:type_name -> benchmarks.google_message3.Message0
-	88,  // 214: benchmarks.google_message3.field17101:type_name -> benchmarks.google_message3.Message0
-	88,  // 215: benchmarks.google_message3.field17172:type_name -> benchmarks.google_message3.Message0
-	88,  // 216: benchmarks.google_message3.field17175:type_name -> benchmarks.google_message3.Message0
-	88,  // 217: benchmarks.google_message3.field17178:type_name -> benchmarks.google_message3.Message0
-	88,  // 218: benchmarks.google_message3.field17185:type_name -> benchmarks.google_message3.Message0
-	88,  // 219: benchmarks.google_message3.field17238:type_name -> benchmarks.google_message3.Message0
-	88,  // 220: benchmarks.google_message3.field17289:type_name -> benchmarks.google_message3.Message0
-	88,  // 221: benchmarks.google_message3.field17290:type_name -> benchmarks.google_message3.Message0
-	88,  // 222: benchmarks.google_message3.field17296:type_name -> benchmarks.google_message3.Message0
-	88,  // 223: benchmarks.google_message3.field17301:type_name -> benchmarks.google_message3.Message0
-	88,  // 224: benchmarks.google_message3.field17412:type_name -> benchmarks.google_message3.Message0
-	88,  // 225: benchmarks.google_message3.field17438:type_name -> benchmarks.google_message3.Message0
-	88,  // 226: benchmarks.google_message3.field17458:type_name -> benchmarks.google_message3.Message0
-	88,  // 227: benchmarks.google_message3.field17617:type_name -> benchmarks.google_message3.Message0
-	1,   // 228: benchmarks.google_message3.Message1327.field1373:type_name -> benchmarks.google_message3.Message1327
-	2,   // 229: benchmarks.google_message3.Message3672.field3737:type_name -> benchmarks.google_message3.Message3672
-	3,   // 230: benchmarks.google_message3.Message3804.field3825:type_name -> benchmarks.google_message3.Message3804
-	4,   // 231: benchmarks.google_message3.Message6849.field6911:type_name -> benchmarks.google_message3.Message6849
-	5,   // 232: benchmarks.google_message3.Message6866.field6974:type_name -> benchmarks.google_message3.Message6866
-	6,   // 233: benchmarks.google_message3.Message6870.field6992:type_name -> benchmarks.google_message3.Message6870
-	7,   // 234: benchmarks.google_message3.Message7651.field7730:type_name -> benchmarks.google_message3.Message7651
-	8,   // 235: benchmarks.google_message3.Message7864.field7872:type_name -> benchmarks.google_message3.Message7864
-	9,   // 236: benchmarks.google_message3.Message7929.field7962:type_name -> benchmarks.google_message3.Message7929
-	10,  // 237: benchmarks.google_message3.Message8508.field8534:type_name -> benchmarks.google_message3.Message8508
-	11,  // 238: benchmarks.google_message3.Message9122.field9134:type_name -> benchmarks.google_message3.Message9122
-	12,  // 239: benchmarks.google_message3.Message10177.field10271:type_name -> benchmarks.google_message3.Message10177
-	13,  // 240: benchmarks.google_message3.Message10278.field10289:type_name -> benchmarks.google_message3.Message10278
-	14,  // 241: benchmarks.google_message3.Message10323.field10361:type_name -> benchmarks.google_message3.Message10323
-	15,  // 242: benchmarks.google_message3.Message10324.field10364:type_name -> benchmarks.google_message3.Message10324
-	16,  // 243: benchmarks.google_message3.Message11990.field12031:type_name -> benchmarks.google_message3.Message11990
-	17,  // 244: benchmarks.google_message3.Message12691.field12716:type_name -> benchmarks.google_message3.Message12691
-	18,  // 245: benchmarks.google_message3.Message12870.field12899:type_name -> benchmarks.google_message3.Message12870
-	19,  // 246: benchmarks.google_message3.Message13154.field13166:type_name -> benchmarks.google_message3.Message13154
-	20,  // 247: benchmarks.google_message3.Message16507.field16542:type_name -> benchmarks.google_message3.Message16507
-	21,  // 248: benchmarks.google_message3.Message16564.field16569:type_name -> benchmarks.google_message3.Message16564
-	22,  // 249: benchmarks.google_message3.Message16661.field16673:type_name -> benchmarks.google_message3.Message16661
-	23,  // 250: benchmarks.google_message3.Message16746.field16810:type_name -> benchmarks.google_message3.Message16746
-	24,  // 251: benchmarks.google_message3.Message17786.field18176:type_name -> benchmarks.google_message3.Message17786
-	25,  // 252: benchmarks.google_message3.Message22857.field22875:type_name -> benchmarks.google_message3.Message22857
-	26,  // 253: benchmarks.google_message3.Message24404.field24685:type_name -> benchmarks.google_message3.Message24404
-	27,  // 254: benchmarks.google_message3.Message27300.field27304:type_name -> benchmarks.google_message3.Message27300
-	28,  // 255: benchmarks.google_message3.Message27453.field27482:type_name -> benchmarks.google_message3.Message27453
-	256, // [256:256] is the sub-list for method output_type
-	256, // [256:256] is the sub-list for method input_type
-	202, // [202:256] is the sub-list for extension type_name
-	125, // [125:202] is the sub-list for extension extendee
-	0,   // [0:125] is the sub-list for field type_name
-}
-
-func init() { file_datasets_google_message3_benchmark_message3_proto_init() }
-func file_datasets_google_message3_benchmark_message3_proto_init() {
-	if File_datasets_google_message3_benchmark_message3_proto != nil {
-		return
-	}
-	file_datasets_google_message3_benchmark_message3_1_proto_init()
-	file_datasets_google_message3_benchmark_message3_2_proto_init()
-	file_datasets_google_message3_benchmark_message3_3_proto_init()
-	file_datasets_google_message3_benchmark_message3_4_proto_init()
-	file_datasets_google_message3_benchmark_message3_5_proto_init()
-	file_datasets_google_message3_benchmark_message3_7_proto_init()
-	file_datasets_google_message3_benchmark_message3_8_proto_init()
-	if !protoimpl.UnsafeEnabled {
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GoogleMessage3); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message1327); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3672); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3804); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6849); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6866); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6870); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7651); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7864); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7929); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8508); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message9122); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10177); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10278); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10323); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10324); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message11990); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12691); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12870); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message13154); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message16507); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message16564); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message16661); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message16746); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message17786); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message22857); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message24404); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message27300); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message27453); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3672_Message3673); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3672_Message3674); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message17786_Message17787); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message24404_Message24405); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_datasets_google_message3_benchmark_message3_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   33,
-			NumExtensions: 77,
-			NumServices:   0,
-		},
-		GoTypes:           file_datasets_google_message3_benchmark_message3_proto_goTypes,
-		DependencyIndexes: file_datasets_google_message3_benchmark_message3_proto_depIdxs,
-		MessageInfos:      file_datasets_google_message3_benchmark_message3_proto_msgTypes,
-		ExtensionInfos:    file_datasets_google_message3_benchmark_message3_proto_extTypes,
-	}.Build()
-	File_datasets_google_message3_benchmark_message3_proto = out.File
-	file_datasets_google_message3_benchmark_message3_proto_rawDesc = nil
-	file_datasets_google_message3_benchmark_message3_proto_goTypes = nil
-	file_datasets_google_message3_benchmark_message3_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_1.pb.go b/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_1.pb.go
deleted file mode 100644
index f1f4fcc..0000000
--- a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_1.pb.go
+++ /dev/null
@@ -1,8487 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// LINT: ALLOW_GROUPS
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: datasets/google_message3/benchmark_message3_1.proto
-
-package google_message3
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Message34390 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field34452 []*Message34387 `protobuf:"bytes,1,rep,name=field34452" json:"field34452,omitempty"`
-}
-
-func (x *Message34390) Reset() {
-	*x = Message34390{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message34390) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message34390) ProtoMessage() {}
-
-func (x *Message34390) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message34390.ProtoReflect.Descriptor instead.
-func (*Message34390) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Message34390) GetField34452() []*Message34387 {
-	if x != nil {
-		return x.Field34452
-	}
-	return nil
-}
-
-type Message34624 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field34683 *Message34621 `protobuf:"bytes,1,opt,name=field34683" json:"field34683,omitempty"`
-	Field34684 *Message34621 `protobuf:"bytes,2,opt,name=field34684" json:"field34684,omitempty"`
-}
-
-func (x *Message34624) Reset() {
-	*x = Message34624{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message34624) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message34624) ProtoMessage() {}
-
-func (x *Message34624) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message34624.ProtoReflect.Descriptor instead.
-func (*Message34624) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Message34624) GetField34683() *Message34621 {
-	if x != nil {
-		return x.Field34683
-	}
-	return nil
-}
-
-func (x *Message34624) GetField34684() *Message34621 {
-	if x != nil {
-		return x.Field34684
-	}
-	return nil
-}
-
-type Message34791 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field34793   *uint64                      `protobuf:"fixed64,1,opt,name=field34793" json:"field34793,omitempty"`
-	Message34792 []*Message34791_Message34792 `protobuf:"group,2,rep,name=Message34792,json=message34792" json:"message34792,omitempty"`
-	Field34795   *int32                       `protobuf:"varint,5,opt,name=field34795" json:"field34795,omitempty"`
-	Field34796   *int32                       `protobuf:"varint,6,opt,name=field34796" json:"field34796,omitempty"`
-	Field34797   *int32                       `protobuf:"varint,7,opt,name=field34797" json:"field34797,omitempty"`
-	Field34798   *int32                       `protobuf:"varint,8,opt,name=field34798" json:"field34798,omitempty"`
-	Field34799   *int32                       `protobuf:"varint,9,opt,name=field34799" json:"field34799,omitempty"`
-	Field34800   *int32                       `protobuf:"varint,10,opt,name=field34800" json:"field34800,omitempty"`
-	Field34801   *bool                        `protobuf:"varint,11,opt,name=field34801" json:"field34801,omitempty"`
-	Field34802   *float32                     `protobuf:"fixed32,12,opt,name=field34802" json:"field34802,omitempty"`
-	Field34803   *int32                       `protobuf:"varint,13,opt,name=field34803" json:"field34803,omitempty"`
-	Field34804   *string                      `protobuf:"bytes,14,opt,name=field34804" json:"field34804,omitempty"`
-	Field34805   *int64                       `protobuf:"varint,15,opt,name=field34805" json:"field34805,omitempty"`
-	Field34806   []uint64                     `protobuf:"fixed64,17,rep,packed,name=field34806" json:"field34806,omitempty"`
-}
-
-func (x *Message34791) Reset() {
-	*x = Message34791{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message34791) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message34791) ProtoMessage() {}
-
-func (x *Message34791) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message34791.ProtoReflect.Descriptor instead.
-func (*Message34791) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Message34791) GetField34793() uint64 {
-	if x != nil && x.Field34793 != nil {
-		return *x.Field34793
-	}
-	return 0
-}
-
-func (x *Message34791) GetMessage34792() []*Message34791_Message34792 {
-	if x != nil {
-		return x.Message34792
-	}
-	return nil
-}
-
-func (x *Message34791) GetField34795() int32 {
-	if x != nil && x.Field34795 != nil {
-		return *x.Field34795
-	}
-	return 0
-}
-
-func (x *Message34791) GetField34796() int32 {
-	if x != nil && x.Field34796 != nil {
-		return *x.Field34796
-	}
-	return 0
-}
-
-func (x *Message34791) GetField34797() int32 {
-	if x != nil && x.Field34797 != nil {
-		return *x.Field34797
-	}
-	return 0
-}
-
-func (x *Message34791) GetField34798() int32 {
-	if x != nil && x.Field34798 != nil {
-		return *x.Field34798
-	}
-	return 0
-}
-
-func (x *Message34791) GetField34799() int32 {
-	if x != nil && x.Field34799 != nil {
-		return *x.Field34799
-	}
-	return 0
-}
-
-func (x *Message34791) GetField34800() int32 {
-	if x != nil && x.Field34800 != nil {
-		return *x.Field34800
-	}
-	return 0
-}
-
-func (x *Message34791) GetField34801() bool {
-	if x != nil && x.Field34801 != nil {
-		return *x.Field34801
-	}
-	return false
-}
-
-func (x *Message34791) GetField34802() float32 {
-	if x != nil && x.Field34802 != nil {
-		return *x.Field34802
-	}
-	return 0
-}
-
-func (x *Message34791) GetField34803() int32 {
-	if x != nil && x.Field34803 != nil {
-		return *x.Field34803
-	}
-	return 0
-}
-
-func (x *Message34791) GetField34804() string {
-	if x != nil && x.Field34804 != nil {
-		return *x.Field34804
-	}
-	return ""
-}
-
-func (x *Message34791) GetField34805() int64 {
-	if x != nil && x.Field34805 != nil {
-		return *x.Field34805
-	}
-	return 0
-}
-
-func (x *Message34791) GetField34806() []uint64 {
-	if x != nil {
-		return x.Field34806
-	}
-	return nil
-}
-
-type Message35483 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field35499 *int32              `protobuf:"varint,1,opt,name=field35499" json:"field35499,omitempty"`
-	Field35500 *string             `protobuf:"bytes,2,opt,name=field35500" json:"field35500,omitempty"`
-	Field35501 *string             `protobuf:"bytes,3,opt,name=field35501" json:"field35501,omitempty"`
-	Field35502 *string             `protobuf:"bytes,4,opt,name=field35502" json:"field35502,omitempty"`
-	Field35503 []*Message35476     `protobuf:"bytes,5,rep,name=field35503" json:"field35503,omitempty"`
-	Field35504 *UnusedEmptyMessage `protobuf:"bytes,6,opt,name=field35504" json:"field35504,omitempty"`
-}
-
-func (x *Message35483) Reset() {
-	*x = Message35483{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message35483) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message35483) ProtoMessage() {}
-
-func (x *Message35483) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message35483.ProtoReflect.Descriptor instead.
-func (*Message35483) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Message35483) GetField35499() int32 {
-	if x != nil && x.Field35499 != nil {
-		return *x.Field35499
-	}
-	return 0
-}
-
-func (x *Message35483) GetField35500() string {
-	if x != nil && x.Field35500 != nil {
-		return *x.Field35500
-	}
-	return ""
-}
-
-func (x *Message35483) GetField35501() string {
-	if x != nil && x.Field35501 != nil {
-		return *x.Field35501
-	}
-	return ""
-}
-
-func (x *Message35483) GetField35502() string {
-	if x != nil && x.Field35502 != nil {
-		return *x.Field35502
-	}
-	return ""
-}
-
-func (x *Message35483) GetField35503() []*Message35476 {
-	if x != nil {
-		return x.Field35503
-	}
-	return nil
-}
-
-func (x *Message35483) GetField35504() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field35504
-	}
-	return nil
-}
-
-type Message35807 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field35810 *int32 `protobuf:"varint,1,opt,name=field35810" json:"field35810,omitempty"`
-	Field35811 *int32 `protobuf:"varint,2,opt,name=field35811" json:"field35811,omitempty"`
-	Field35812 *int32 `protobuf:"varint,3,opt,name=field35812" json:"field35812,omitempty"`
-	Field35813 *int32 `protobuf:"varint,4,opt,name=field35813" json:"field35813,omitempty"`
-	Field35814 *int32 `protobuf:"varint,5,opt,name=field35814" json:"field35814,omitempty"`
-	Field35815 *int32 `protobuf:"varint,6,opt,name=field35815" json:"field35815,omitempty"`
-	Field35816 *int32 `protobuf:"varint,7,opt,name=field35816" json:"field35816,omitempty"`
-	Field35817 *int32 `protobuf:"varint,8,opt,name=field35817" json:"field35817,omitempty"`
-}
-
-func (x *Message35807) Reset() {
-	*x = Message35807{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message35807) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message35807) ProtoMessage() {}
-
-func (x *Message35807) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message35807.ProtoReflect.Descriptor instead.
-func (*Message35807) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Message35807) GetField35810() int32 {
-	if x != nil && x.Field35810 != nil {
-		return *x.Field35810
-	}
-	return 0
-}
-
-func (x *Message35807) GetField35811() int32 {
-	if x != nil && x.Field35811 != nil {
-		return *x.Field35811
-	}
-	return 0
-}
-
-func (x *Message35807) GetField35812() int32 {
-	if x != nil && x.Field35812 != nil {
-		return *x.Field35812
-	}
-	return 0
-}
-
-func (x *Message35807) GetField35813() int32 {
-	if x != nil && x.Field35813 != nil {
-		return *x.Field35813
-	}
-	return 0
-}
-
-func (x *Message35807) GetField35814() int32 {
-	if x != nil && x.Field35814 != nil {
-		return *x.Field35814
-	}
-	return 0
-}
-
-func (x *Message35807) GetField35815() int32 {
-	if x != nil && x.Field35815 != nil {
-		return *x.Field35815
-	}
-	return 0
-}
-
-func (x *Message35807) GetField35816() int32 {
-	if x != nil && x.Field35816 != nil {
-		return *x.Field35816
-	}
-	return 0
-}
-
-func (x *Message35807) GetField35817() int32 {
-	if x != nil && x.Field35817 != nil {
-		return *x.Field35817
-	}
-	return 0
-}
-
-type Message37487 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field37501 []byte `protobuf:"bytes,2,opt,name=field37501" json:"field37501,omitempty"`
-	Field37502 *bool  `protobuf:"varint,3,opt,name=field37502" json:"field37502,omitempty"`
-}
-
-func (x *Message37487) Reset() {
-	*x = Message37487{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message37487) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message37487) ProtoMessage() {}
-
-func (x *Message37487) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message37487.ProtoReflect.Descriptor instead.
-func (*Message37487) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *Message37487) GetField37501() []byte {
-	if x != nil {
-		return x.Field37501
-	}
-	return nil
-}
-
-func (x *Message37487) GetField37502() bool {
-	if x != nil && x.Field37502 != nil {
-		return *x.Field37502
-	}
-	return false
-}
-
-type Message13062 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field13075 *int64  `protobuf:"varint,1,opt,name=field13075" json:"field13075,omitempty"`
-	Field13076 *string `protobuf:"bytes,2,opt,name=field13076" json:"field13076,omitempty"`
-	Field13077 *int32  `protobuf:"varint,3,opt,name=field13077" json:"field13077,omitempty"`
-	Field13078 *string `protobuf:"bytes,4,opt,name=field13078" json:"field13078,omitempty"`
-	Field13079 *int32  `protobuf:"varint,5,opt,name=field13079" json:"field13079,omitempty"`
-}
-
-func (x *Message13062) Reset() {
-	*x = Message13062{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message13062) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message13062) ProtoMessage() {}
-
-func (x *Message13062) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message13062.ProtoReflect.Descriptor instead.
-func (*Message13062) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *Message13062) GetField13075() int64 {
-	if x != nil && x.Field13075 != nil {
-		return *x.Field13075
-	}
-	return 0
-}
-
-func (x *Message13062) GetField13076() string {
-	if x != nil && x.Field13076 != nil {
-		return *x.Field13076
-	}
-	return ""
-}
-
-func (x *Message13062) GetField13077() int32 {
-	if x != nil && x.Field13077 != nil {
-		return *x.Field13077
-	}
-	return 0
-}
-
-func (x *Message13062) GetField13078() string {
-	if x != nil && x.Field13078 != nil {
-		return *x.Field13078
-	}
-	return ""
-}
-
-func (x *Message13062) GetField13079() int32 {
-	if x != nil && x.Field13079 != nil {
-		return *x.Field13079
-	}
-	return 0
-}
-
-type Message952 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field963 []*Message949 `protobuf:"bytes,1,rep,name=field963" json:"field963,omitempty"`
-}
-
-func (x *Message952) Reset() {
-	*x = Message952{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message952) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message952) ProtoMessage() {}
-
-func (x *Message952) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message952.ProtoReflect.Descriptor instead.
-func (*Message952) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *Message952) GetField963() []*Message949 {
-	if x != nil {
-		return x.Field963
-	}
-	return nil
-}
-
-type Message36876 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field36980   *Message2356                 `protobuf:"bytes,1,opt,name=field36980" json:"field36980,omitempty"`
-	Message36877 []*Message36876_Message36877 `protobuf:"group,111,rep,name=Message36877,json=message36877" json:"message36877,omitempty"`
-	Message36878 []*Message36876_Message36878 `protobuf:"group,168,rep,name=Message36878,json=message36878" json:"message36878,omitempty"`
-	Message36879 []*Message36876_Message36879 `protobuf:"group,55,rep,name=Message36879,json=message36879" json:"message36879,omitempty"`
-	Field36984   []*UnusedEmptyMessage        `protobuf:"bytes,78,rep,name=field36984" json:"field36984,omitempty"`
-	Message36880 *Message36876_Message36880   `protobuf:"group,137,opt,name=Message36880,json=message36880" json:"message36880,omitempty"`
-	Field36986   *uint64                      `protobuf:"varint,59,opt,name=field36986" json:"field36986,omitempty"`
-	Field36987   []byte                       `protobuf:"bytes,121,opt,name=field36987" json:"field36987,omitempty"`
-	Field36988   *UnusedEmptyMessage          `protobuf:"bytes,2,opt,name=field36988" json:"field36988,omitempty"`
-	Field36989   *Message7029                 `protobuf:"bytes,118,opt,name=field36989" json:"field36989,omitempty"`
-	Field36990   *Message35573                `protobuf:"bytes,11,opt,name=field36990" json:"field36990,omitempty"`
-	Field36991   *UnusedEmptyMessage          `protobuf:"bytes,21,opt,name=field36991" json:"field36991,omitempty"`
-	Field36992   *UnusedEmptyMessage          `protobuf:"bytes,22,opt,name=field36992" json:"field36992,omitempty"`
-	Field36993   *float32                     `protobuf:"fixed32,13,opt,name=field36993" json:"field36993,omitempty"`
-	Field36994   *int32                       `protobuf:"varint,20,opt,name=field36994" json:"field36994,omitempty"`
-	Field36995   *bool                        `protobuf:"varint,51,opt,name=field36995" json:"field36995,omitempty"`
-	Field36996   *bool                        `protobuf:"varint,57,opt,name=field36996" json:"field36996,omitempty"`
-	Field36997   []*UnusedEmptyMessage        `protobuf:"bytes,100,rep,name=field36997" json:"field36997,omitempty"`
-	Field36998   *int32                       `protobuf:"varint,47,opt,name=field36998" json:"field36998,omitempty"`
-	Field36999   *int32                       `protobuf:"varint,48,opt,name=field36999" json:"field36999,omitempty"`
-	Field37000   *UnusedEmptyMessage          `protobuf:"bytes,68,opt,name=field37000" json:"field37000,omitempty"`
-	Message36881 []*Message36876_Message36881 `protobuf:"group,23,rep,name=Message36881,json=message36881" json:"message36881,omitempty"`
-	Field37002   *Message4144                 `protobuf:"bytes,125,opt,name=field37002" json:"field37002,omitempty"`
-	Message36882 []*Message36876_Message36882 `protobuf:"group,35,rep,name=Message36882,json=message36882" json:"message36882,omitempty"`
-	Field37004   *UnusedEmptyMessage          `protobuf:"bytes,49,opt,name=field37004" json:"field37004,omitempty"`
-	Field37005   *Message18921                `protobuf:"bytes,52,opt,name=field37005" json:"field37005,omitempty"`
-	Field37006   *Message36858                `protobuf:"bytes,46,opt,name=field37006" json:"field37006,omitempty"`
-	Field37007   *Message18831                `protobuf:"bytes,54,opt,name=field37007" json:"field37007,omitempty"`
-	Field37008   *UnusedEmptyMessage          `protobuf:"bytes,58,opt,name=field37008" json:"field37008,omitempty"`
-	Field37009   *Message18283                `protobuf:"bytes,10,opt,name=field37009" json:"field37009,omitempty"`
-	Field37010   *string                      `protobuf:"bytes,44,opt,name=field37010" json:"field37010,omitempty"`
-	Field37011   *string                      `protobuf:"bytes,103,opt,name=field37011" json:"field37011,omitempty"`
-	Field37012   *Message0                    `protobuf:"bytes,43,opt,name=field37012" json:"field37012,omitempty"`
-	Field37013   *Message0                    `protobuf:"bytes,143,opt,name=field37013" json:"field37013,omitempty"`
-	Field37014   *UnusedEmptyMessage          `protobuf:"bytes,53,opt,name=field37014" json:"field37014,omitempty"`
-	Field37015   *Message36869                `protobuf:"bytes,15,opt,name=field37015" json:"field37015,omitempty"`
-	Message36883 *Message36876_Message36883   `protobuf:"group,3,opt,name=Message36883,json=message36883" json:"message36883,omitempty"`
-	Message36884 []*Message36876_Message36884 `protobuf:"group,16,rep,name=Message36884,json=message36884" json:"message36884,omitempty"`
-	Message36885 []*Message36876_Message36885 `protobuf:"group,27,rep,name=Message36885,json=message36885" json:"message36885,omitempty"`
-	Message36886 *Message36876_Message36886   `protobuf:"group,32,opt,name=Message36886,json=message36886" json:"message36886,omitempty"`
-	Field37020   []UnusedEnum                 `protobuf:"varint,71,rep,name=field37020,enum=benchmarks.google_message3.UnusedEnum" json:"field37020,omitempty"`
-	Field37021   []int32                      `protobuf:"varint,70,rep,name=field37021" json:"field37021,omitempty"`
-	Field37022   *UnusedEmptyMessage          `protobuf:"bytes,66,opt,name=field37022" json:"field37022,omitempty"`
-	Field37023   *Message13090                `protobuf:"bytes,67,opt,name=field37023" json:"field37023,omitempty"`
-	Message36887 *Message36876_Message36887   `protobuf:"group,62,opt,name=Message36887,json=message36887" json:"message36887,omitempty"`
-	Field37025   []*Message10155              `protobuf:"bytes,50,rep,name=field37025" json:"field37025,omitempty"`
-	Field37026   []*Message11874              `protobuf:"bytes,151,rep,name=field37026" json:"field37026,omitempty"`
-	Field37027   *string                      `protobuf:"bytes,12,opt,name=field37027" json:"field37027,omitempty"`
-	Field37028   *int64                       `protobuf:"varint,72,opt,name=field37028" json:"field37028,omitempty"`
-	Field37029   *UnusedEmptyMessage          `protobuf:"bytes,73,opt,name=field37029" json:"field37029,omitempty"`
-	Field37030   *Message35546                `protobuf:"bytes,108,opt,name=field37030" json:"field37030,omitempty"`
-	Message36888 *Message36876_Message36888   `protobuf:"group,74,opt,name=Message36888,json=message36888" json:"message36888,omitempty"`
-	Field37032   []*Message19255              `protobuf:"bytes,104,rep,name=field37032" json:"field37032,omitempty"`
-	Field37033   *Message33968                `protobuf:"bytes,105,opt,name=field37033" json:"field37033,omitempty"`
-	Field37034   *bool                        `protobuf:"varint,106,opt,name=field37034" json:"field37034,omitempty"`
-	Field37035   []*UnusedEmptyMessage        `protobuf:"bytes,107,rep,name=field37035" json:"field37035,omitempty"`
-	Field37036   *Message6644                 `protobuf:"bytes,110,opt,name=field37036" json:"field37036,omitempty"`
-	Field37037   []byte                       `protobuf:"bytes,133,opt,name=field37037" json:"field37037,omitempty"`
-	Message36889 *Message36876_Message36889   `protobuf:"group,116,opt,name=Message36889,json=message36889" json:"message36889,omitempty"`
-	Message36910 []*Message36876_Message36910 `protobuf:"group,119,rep,name=Message36910,json=message36910" json:"message36910,omitempty"`
-	Message36911 *Message36876_Message36911   `protobuf:"group,126,opt,name=Message36911,json=message36911" json:"message36911,omitempty"`
-	Message36912 *Message36876_Message36912   `protobuf:"group,152,opt,name=Message36912,json=message36912" json:"message36912,omitempty"`
-	Field37042   *UnusedEmptyMessage          `protobuf:"bytes,155,opt,name=field37042" json:"field37042,omitempty"`
-}
-
-func (x *Message36876) Reset() {
-	*x = Message36876{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message36876) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message36876) ProtoMessage() {}
-
-func (x *Message36876) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[8]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message36876.ProtoReflect.Descriptor instead.
-func (*Message36876) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *Message36876) GetField36980() *Message2356 {
-	if x != nil {
-		return x.Field36980
-	}
-	return nil
-}
-
-func (x *Message36876) GetMessage36877() []*Message36876_Message36877 {
-	if x != nil {
-		return x.Message36877
-	}
-	return nil
-}
-
-func (x *Message36876) GetMessage36878() []*Message36876_Message36878 {
-	if x != nil {
-		return x.Message36878
-	}
-	return nil
-}
-
-func (x *Message36876) GetMessage36879() []*Message36876_Message36879 {
-	if x != nil {
-		return x.Message36879
-	}
-	return nil
-}
-
-func (x *Message36876) GetField36984() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field36984
-	}
-	return nil
-}
-
-func (x *Message36876) GetMessage36880() *Message36876_Message36880 {
-	if x != nil {
-		return x.Message36880
-	}
-	return nil
-}
-
-func (x *Message36876) GetField36986() uint64 {
-	if x != nil && x.Field36986 != nil {
-		return *x.Field36986
-	}
-	return 0
-}
-
-func (x *Message36876) GetField36987() []byte {
-	if x != nil {
-		return x.Field36987
-	}
-	return nil
-}
-
-func (x *Message36876) GetField36988() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field36988
-	}
-	return nil
-}
-
-func (x *Message36876) GetField36989() *Message7029 {
-	if x != nil {
-		return x.Field36989
-	}
-	return nil
-}
-
-func (x *Message36876) GetField36990() *Message35573 {
-	if x != nil {
-		return x.Field36990
-	}
-	return nil
-}
-
-func (x *Message36876) GetField36991() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field36991
-	}
-	return nil
-}
-
-func (x *Message36876) GetField36992() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field36992
-	}
-	return nil
-}
-
-func (x *Message36876) GetField36993() float32 {
-	if x != nil && x.Field36993 != nil {
-		return *x.Field36993
-	}
-	return 0
-}
-
-func (x *Message36876) GetField36994() int32 {
-	if x != nil && x.Field36994 != nil {
-		return *x.Field36994
-	}
-	return 0
-}
-
-func (x *Message36876) GetField36995() bool {
-	if x != nil && x.Field36995 != nil {
-		return *x.Field36995
-	}
-	return false
-}
-
-func (x *Message36876) GetField36996() bool {
-	if x != nil && x.Field36996 != nil {
-		return *x.Field36996
-	}
-	return false
-}
-
-func (x *Message36876) GetField36997() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field36997
-	}
-	return nil
-}
-
-func (x *Message36876) GetField36998() int32 {
-	if x != nil && x.Field36998 != nil {
-		return *x.Field36998
-	}
-	return 0
-}
-
-func (x *Message36876) GetField36999() int32 {
-	if x != nil && x.Field36999 != nil {
-		return *x.Field36999
-	}
-	return 0
-}
-
-func (x *Message36876) GetField37000() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37000
-	}
-	return nil
-}
-
-func (x *Message36876) GetMessage36881() []*Message36876_Message36881 {
-	if x != nil {
-		return x.Message36881
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37002() *Message4144 {
-	if x != nil {
-		return x.Field37002
-	}
-	return nil
-}
-
-func (x *Message36876) GetMessage36882() []*Message36876_Message36882 {
-	if x != nil {
-		return x.Message36882
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37004() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37004
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37005() *Message18921 {
-	if x != nil {
-		return x.Field37005
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37006() *Message36858 {
-	if x != nil {
-		return x.Field37006
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37007() *Message18831 {
-	if x != nil {
-		return x.Field37007
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37008() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37008
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37009() *Message18283 {
-	if x != nil {
-		return x.Field37009
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37010() string {
-	if x != nil && x.Field37010 != nil {
-		return *x.Field37010
-	}
-	return ""
-}
-
-func (x *Message36876) GetField37011() string {
-	if x != nil && x.Field37011 != nil {
-		return *x.Field37011
-	}
-	return ""
-}
-
-func (x *Message36876) GetField37012() *Message0 {
-	if x != nil {
-		return x.Field37012
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37013() *Message0 {
-	if x != nil {
-		return x.Field37013
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37014() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37014
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37015() *Message36869 {
-	if x != nil {
-		return x.Field37015
-	}
-	return nil
-}
-
-func (x *Message36876) GetMessage36883() *Message36876_Message36883 {
-	if x != nil {
-		return x.Message36883
-	}
-	return nil
-}
-
-func (x *Message36876) GetMessage36884() []*Message36876_Message36884 {
-	if x != nil {
-		return x.Message36884
-	}
-	return nil
-}
-
-func (x *Message36876) GetMessage36885() []*Message36876_Message36885 {
-	if x != nil {
-		return x.Message36885
-	}
-	return nil
-}
-
-func (x *Message36876) GetMessage36886() *Message36876_Message36886 {
-	if x != nil {
-		return x.Message36886
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37020() []UnusedEnum {
-	if x != nil {
-		return x.Field37020
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37021() []int32 {
-	if x != nil {
-		return x.Field37021
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37022() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37022
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37023() *Message13090 {
-	if x != nil {
-		return x.Field37023
-	}
-	return nil
-}
-
-func (x *Message36876) GetMessage36887() *Message36876_Message36887 {
-	if x != nil {
-		return x.Message36887
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37025() []*Message10155 {
-	if x != nil {
-		return x.Field37025
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37026() []*Message11874 {
-	if x != nil {
-		return x.Field37026
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37027() string {
-	if x != nil && x.Field37027 != nil {
-		return *x.Field37027
-	}
-	return ""
-}
-
-func (x *Message36876) GetField37028() int64 {
-	if x != nil && x.Field37028 != nil {
-		return *x.Field37028
-	}
-	return 0
-}
-
-func (x *Message36876) GetField37029() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37029
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37030() *Message35546 {
-	if x != nil {
-		return x.Field37030
-	}
-	return nil
-}
-
-func (x *Message36876) GetMessage36888() *Message36876_Message36888 {
-	if x != nil {
-		return x.Message36888
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37032() []*Message19255 {
-	if x != nil {
-		return x.Field37032
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37033() *Message33968 {
-	if x != nil {
-		return x.Field37033
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37034() bool {
-	if x != nil && x.Field37034 != nil {
-		return *x.Field37034
-	}
-	return false
-}
-
-func (x *Message36876) GetField37035() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37035
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37036() *Message6644 {
-	if x != nil {
-		return x.Field37036
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37037() []byte {
-	if x != nil {
-		return x.Field37037
-	}
-	return nil
-}
-
-func (x *Message36876) GetMessage36889() *Message36876_Message36889 {
-	if x != nil {
-		return x.Message36889
-	}
-	return nil
-}
-
-func (x *Message36876) GetMessage36910() []*Message36876_Message36910 {
-	if x != nil {
-		return x.Message36910
-	}
-	return nil
-}
-
-func (x *Message36876) GetMessage36911() *Message36876_Message36911 {
-	if x != nil {
-		return x.Message36911
-	}
-	return nil
-}
-
-func (x *Message36876) GetMessage36912() *Message36876_Message36912 {
-	if x != nil {
-		return x.Message36912
-	}
-	return nil
-}
-
-func (x *Message36876) GetField37042() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37042
-	}
-	return nil
-}
-
-type Message1328 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message1328) Reset() {
-	*x = Message1328{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[9]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message1328) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message1328) ProtoMessage() {}
-
-func (x *Message1328) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[9]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message1328.ProtoReflect.Descriptor instead.
-func (*Message1328) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{9}
-}
-
-type Message6850 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message6850) Reset() {
-	*x = Message6850{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[10]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6850) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6850) ProtoMessage() {}
-
-func (x *Message6850) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[10]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6850.ProtoReflect.Descriptor instead.
-func (*Message6850) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{10}
-}
-
-type Message6863 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6931 *Enum6858           `protobuf:"varint,1,opt,name=field6931,enum=benchmarks.google_message3.Enum6858" json:"field6931,omitempty"`
-	Field6932 *Enum6858           `protobuf:"varint,2,opt,name=field6932,enum=benchmarks.google_message3.Enum6858" json:"field6932,omitempty"`
-	Field6933 *UnusedEnum         `protobuf:"varint,36,opt,name=field6933,enum=benchmarks.google_message3.UnusedEnum" json:"field6933,omitempty"`
-	Field6934 *bool               `protobuf:"varint,27,opt,name=field6934" json:"field6934,omitempty"`
-	Field6935 *Message6773        `protobuf:"bytes,26,opt,name=field6935" json:"field6935,omitempty"`
-	Field6936 *int32              `protobuf:"varint,30,opt,name=field6936" json:"field6936,omitempty"`
-	Field6937 *int32              `protobuf:"varint,37,opt,name=field6937" json:"field6937,omitempty"`
-	Field6938 *Enum6815           `protobuf:"varint,31,opt,name=field6938,enum=benchmarks.google_message3.Enum6815" json:"field6938,omitempty"`
-	Field6939 *string             `protobuf:"bytes,3,opt,name=field6939" json:"field6939,omitempty"`
-	Field6940 *int32              `protobuf:"varint,4,opt,name=field6940" json:"field6940,omitempty"`
-	Field6941 *Enum6822           `protobuf:"varint,15,opt,name=field6941,enum=benchmarks.google_message3.Enum6822" json:"field6941,omitempty"`
-	Field6942 *bool               `protobuf:"varint,10,opt,name=field6942" json:"field6942,omitempty"`
-	Field6943 *bool               `protobuf:"varint,17,opt,name=field6943" json:"field6943,omitempty"`
-	Field6944 *float32            `protobuf:"fixed32,18,opt,name=field6944" json:"field6944,omitempty"`
-	Field6945 *float32            `protobuf:"fixed32,19,opt,name=field6945" json:"field6945,omitempty"`
-	Field6946 *int32              `protobuf:"varint,5,opt,name=field6946" json:"field6946,omitempty"`
-	Field6947 *int32              `protobuf:"varint,6,opt,name=field6947" json:"field6947,omitempty"`
-	Field6948 *bool               `protobuf:"varint,7,opt,name=field6948" json:"field6948,omitempty"`
-	Field6949 *int32              `protobuf:"varint,12,opt,name=field6949" json:"field6949,omitempty"`
-	Field6950 *UnusedEmptyMessage `protobuf:"bytes,8,opt,name=field6950" json:"field6950,omitempty"`
-	Field6951 *uint64             `protobuf:"varint,9,opt,name=field6951" json:"field6951,omitempty"`
-	Field6952 *string             `protobuf:"bytes,11,opt,name=field6952" json:"field6952,omitempty"`
-	Field6953 []byte              `protobuf:"bytes,13,opt,name=field6953" json:"field6953,omitempty"`
-	Field6954 *int32              `protobuf:"varint,14,opt,name=field6954" json:"field6954,omitempty"`
-	Field6955 *UnusedEmptyMessage `protobuf:"bytes,16,opt,name=field6955" json:"field6955,omitempty"`
-	Field6956 *UnusedEmptyMessage `protobuf:"bytes,22,opt,name=field6956" json:"field6956,omitempty"`
-	Field6957 *Message3886        `protobuf:"bytes,38,opt,name=field6957" json:"field6957,omitempty"`
-	Field6958 *string             `protobuf:"bytes,20,opt,name=field6958" json:"field6958,omitempty"`
-	Field6959 *uint32             `protobuf:"varint,21,opt,name=field6959" json:"field6959,omitempty"`
-	Field6960 *Message6743        `protobuf:"bytes,23,opt,name=field6960" json:"field6960,omitempty"`
-	Field6961 *UnusedEmptyMessage `protobuf:"bytes,29,opt,name=field6961" json:"field6961,omitempty"`
-	Field6962 *UnusedEmptyMessage `protobuf:"bytes,33,opt,name=field6962" json:"field6962,omitempty"`
-	Field6963 *bool               `protobuf:"varint,34,opt,name=field6963" json:"field6963,omitempty"`
-}
-
-func (x *Message6863) Reset() {
-	*x = Message6863{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[11]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6863) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6863) ProtoMessage() {}
-
-func (x *Message6863) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[11]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6863.ProtoReflect.Descriptor instead.
-func (*Message6863) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *Message6863) GetField6931() Enum6858 {
-	if x != nil && x.Field6931 != nil {
-		return *x.Field6931
-	}
-	return Enum6858_ENUM_VALUE6859
-}
-
-func (x *Message6863) GetField6932() Enum6858 {
-	if x != nil && x.Field6932 != nil {
-		return *x.Field6932
-	}
-	return Enum6858_ENUM_VALUE6859
-}
-
-func (x *Message6863) GetField6933() UnusedEnum {
-	if x != nil && x.Field6933 != nil {
-		return *x.Field6933
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message6863) GetField6934() bool {
-	if x != nil && x.Field6934 != nil {
-		return *x.Field6934
-	}
-	return false
-}
-
-func (x *Message6863) GetField6935() *Message6773 {
-	if x != nil {
-		return x.Field6935
-	}
-	return nil
-}
-
-func (x *Message6863) GetField6936() int32 {
-	if x != nil && x.Field6936 != nil {
-		return *x.Field6936
-	}
-	return 0
-}
-
-func (x *Message6863) GetField6937() int32 {
-	if x != nil && x.Field6937 != nil {
-		return *x.Field6937
-	}
-	return 0
-}
-
-func (x *Message6863) GetField6938() Enum6815 {
-	if x != nil && x.Field6938 != nil {
-		return *x.Field6938
-	}
-	return Enum6815_ENUM_VALUE6816
-}
-
-func (x *Message6863) GetField6939() string {
-	if x != nil && x.Field6939 != nil {
-		return *x.Field6939
-	}
-	return ""
-}
-
-func (x *Message6863) GetField6940() int32 {
-	if x != nil && x.Field6940 != nil {
-		return *x.Field6940
-	}
-	return 0
-}
-
-func (x *Message6863) GetField6941() Enum6822 {
-	if x != nil && x.Field6941 != nil {
-		return *x.Field6941
-	}
-	return Enum6822_ENUM_VALUE6823
-}
-
-func (x *Message6863) GetField6942() bool {
-	if x != nil && x.Field6942 != nil {
-		return *x.Field6942
-	}
-	return false
-}
-
-func (x *Message6863) GetField6943() bool {
-	if x != nil && x.Field6943 != nil {
-		return *x.Field6943
-	}
-	return false
-}
-
-func (x *Message6863) GetField6944() float32 {
-	if x != nil && x.Field6944 != nil {
-		return *x.Field6944
-	}
-	return 0
-}
-
-func (x *Message6863) GetField6945() float32 {
-	if x != nil && x.Field6945 != nil {
-		return *x.Field6945
-	}
-	return 0
-}
-
-func (x *Message6863) GetField6946() int32 {
-	if x != nil && x.Field6946 != nil {
-		return *x.Field6946
-	}
-	return 0
-}
-
-func (x *Message6863) GetField6947() int32 {
-	if x != nil && x.Field6947 != nil {
-		return *x.Field6947
-	}
-	return 0
-}
-
-func (x *Message6863) GetField6948() bool {
-	if x != nil && x.Field6948 != nil {
-		return *x.Field6948
-	}
-	return false
-}
-
-func (x *Message6863) GetField6949() int32 {
-	if x != nil && x.Field6949 != nil {
-		return *x.Field6949
-	}
-	return 0
-}
-
-func (x *Message6863) GetField6950() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6950
-	}
-	return nil
-}
-
-func (x *Message6863) GetField6951() uint64 {
-	if x != nil && x.Field6951 != nil {
-		return *x.Field6951
-	}
-	return 0
-}
-
-func (x *Message6863) GetField6952() string {
-	if x != nil && x.Field6952 != nil {
-		return *x.Field6952
-	}
-	return ""
-}
-
-func (x *Message6863) GetField6953() []byte {
-	if x != nil {
-		return x.Field6953
-	}
-	return nil
-}
-
-func (x *Message6863) GetField6954() int32 {
-	if x != nil && x.Field6954 != nil {
-		return *x.Field6954
-	}
-	return 0
-}
-
-func (x *Message6863) GetField6955() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6955
-	}
-	return nil
-}
-
-func (x *Message6863) GetField6956() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6956
-	}
-	return nil
-}
-
-func (x *Message6863) GetField6957() *Message3886 {
-	if x != nil {
-		return x.Field6957
-	}
-	return nil
-}
-
-func (x *Message6863) GetField6958() string {
-	if x != nil && x.Field6958 != nil {
-		return *x.Field6958
-	}
-	return ""
-}
-
-func (x *Message6863) GetField6959() uint32 {
-	if x != nil && x.Field6959 != nil {
-		return *x.Field6959
-	}
-	return 0
-}
-
-func (x *Message6863) GetField6960() *Message6743 {
-	if x != nil {
-		return x.Field6960
-	}
-	return nil
-}
-
-func (x *Message6863) GetField6961() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6961
-	}
-	return nil
-}
-
-func (x *Message6863) GetField6962() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6962
-	}
-	return nil
-}
-
-func (x *Message6863) GetField6963() bool {
-	if x != nil && x.Field6963 != nil {
-		return *x.Field6963
-	}
-	return false
-}
-
-type Message6871 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message6871) Reset() {
-	*x = Message6871{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[12]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6871) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6871) ProtoMessage() {}
-
-func (x *Message6871) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[12]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6871.ProtoReflect.Descriptor instead.
-func (*Message6871) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{12}
-}
-
-type Message7547 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7549 []byte `protobuf:"bytes,1,req,name=field7549" json:"field7549,omitempty"`
-	Field7550 *int32 `protobuf:"varint,2,req,name=field7550" json:"field7550,omitempty"`
-}
-
-func (x *Message7547) Reset() {
-	*x = Message7547{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[13]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7547) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7547) ProtoMessage() {}
-
-func (x *Message7547) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[13]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7547.ProtoReflect.Descriptor instead.
-func (*Message7547) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *Message7547) GetField7549() []byte {
-	if x != nil {
-		return x.Field7549
-	}
-	return nil
-}
-
-func (x *Message7547) GetField7550() int32 {
-	if x != nil && x.Field7550 != nil {
-		return *x.Field7550
-	}
-	return 0
-}
-
-type Message7648 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7669 *string  `protobuf:"bytes,1,opt,name=field7669" json:"field7669,omitempty"`
-	Field7670 *int32   `protobuf:"varint,2,opt,name=field7670" json:"field7670,omitempty"`
-	Field7671 *int32   `protobuf:"varint,3,opt,name=field7671" json:"field7671,omitempty"`
-	Field7672 *int32   `protobuf:"varint,4,opt,name=field7672" json:"field7672,omitempty"`
-	Field7673 *int32   `protobuf:"varint,5,opt,name=field7673" json:"field7673,omitempty"`
-	Field7674 *int32   `protobuf:"varint,6,opt,name=field7674" json:"field7674,omitempty"`
-	Field7675 *float32 `protobuf:"fixed32,7,opt,name=field7675" json:"field7675,omitempty"`
-	Field7676 *bool    `protobuf:"varint,8,opt,name=field7676" json:"field7676,omitempty"`
-	Field7677 *bool    `protobuf:"varint,9,opt,name=field7677" json:"field7677,omitempty"`
-	Field7678 *bool    `protobuf:"varint,10,opt,name=field7678" json:"field7678,omitempty"`
-	Field7679 *bool    `protobuf:"varint,11,opt,name=field7679" json:"field7679,omitempty"`
-	Field7680 *bool    `protobuf:"varint,12,opt,name=field7680" json:"field7680,omitempty"`
-}
-
-func (x *Message7648) Reset() {
-	*x = Message7648{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[14]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7648) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7648) ProtoMessage() {}
-
-func (x *Message7648) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[14]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7648.ProtoReflect.Descriptor instead.
-func (*Message7648) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *Message7648) GetField7669() string {
-	if x != nil && x.Field7669 != nil {
-		return *x.Field7669
-	}
-	return ""
-}
-
-func (x *Message7648) GetField7670() int32 {
-	if x != nil && x.Field7670 != nil {
-		return *x.Field7670
-	}
-	return 0
-}
-
-func (x *Message7648) GetField7671() int32 {
-	if x != nil && x.Field7671 != nil {
-		return *x.Field7671
-	}
-	return 0
-}
-
-func (x *Message7648) GetField7672() int32 {
-	if x != nil && x.Field7672 != nil {
-		return *x.Field7672
-	}
-	return 0
-}
-
-func (x *Message7648) GetField7673() int32 {
-	if x != nil && x.Field7673 != nil {
-		return *x.Field7673
-	}
-	return 0
-}
-
-func (x *Message7648) GetField7674() int32 {
-	if x != nil && x.Field7674 != nil {
-		return *x.Field7674
-	}
-	return 0
-}
-
-func (x *Message7648) GetField7675() float32 {
-	if x != nil && x.Field7675 != nil {
-		return *x.Field7675
-	}
-	return 0
-}
-
-func (x *Message7648) GetField7676() bool {
-	if x != nil && x.Field7676 != nil {
-		return *x.Field7676
-	}
-	return false
-}
-
-func (x *Message7648) GetField7677() bool {
-	if x != nil && x.Field7677 != nil {
-		return *x.Field7677
-	}
-	return false
-}
-
-func (x *Message7648) GetField7678() bool {
-	if x != nil && x.Field7678 != nil {
-		return *x.Field7678
-	}
-	return false
-}
-
-func (x *Message7648) GetField7679() bool {
-	if x != nil && x.Field7679 != nil {
-		return *x.Field7679
-	}
-	return false
-}
-
-func (x *Message7648) GetField7680() bool {
-	if x != nil && x.Field7680 != nil {
-		return *x.Field7680
-	}
-	return false
-}
-
-type Message7865 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message7865) Reset() {
-	*x = Message7865{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[15]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7865) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7865) ProtoMessage() {}
-
-func (x *Message7865) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[15]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7865.ProtoReflect.Descriptor instead.
-func (*Message7865) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{15}
-}
-
-type Message7928 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7940 *string `protobuf:"bytes,1,opt,name=field7940" json:"field7940,omitempty"`
-	Field7941 *int64  `protobuf:"varint,2,opt,name=field7941" json:"field7941,omitempty"`
-}
-
-func (x *Message7928) Reset() {
-	*x = Message7928{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[16]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7928) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7928) ProtoMessage() {}
-
-func (x *Message7928) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[16]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7928.ProtoReflect.Descriptor instead.
-func (*Message7928) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *Message7928) GetField7940() string {
-	if x != nil && x.Field7940 != nil {
-		return *x.Field7940
-	}
-	return ""
-}
-
-func (x *Message7928) GetField7941() int64 {
-	if x != nil && x.Field7941 != nil {
-		return *x.Field7941
-	}
-	return 0
-}
-
-type Message7919 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7931 *uint64 `protobuf:"fixed64,1,opt,name=field7931" json:"field7931,omitempty"`
-	Field7932 *int64  `protobuf:"varint,2,opt,name=field7932" json:"field7932,omitempty"`
-	Field7933 []byte  `protobuf:"bytes,3,opt,name=field7933" json:"field7933,omitempty"`
-}
-
-func (x *Message7919) Reset() {
-	*x = Message7919{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[17]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7919) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7919) ProtoMessage() {}
-
-func (x *Message7919) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[17]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7919.ProtoReflect.Descriptor instead.
-func (*Message7919) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{17}
-}
-
-func (x *Message7919) GetField7931() uint64 {
-	if x != nil && x.Field7931 != nil {
-		return *x.Field7931
-	}
-	return 0
-}
-
-func (x *Message7919) GetField7932() int64 {
-	if x != nil && x.Field7932 != nil {
-		return *x.Field7932
-	}
-	return 0
-}
-
-func (x *Message7919) GetField7933() []byte {
-	if x != nil {
-		return x.Field7933
-	}
-	return nil
-}
-
-type Message7920 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7934 *int64 `protobuf:"varint,1,opt,name=field7934" json:"field7934,omitempty"`
-	Field7935 *int64 `protobuf:"varint,2,opt,name=field7935" json:"field7935,omitempty"`
-}
-
-func (x *Message7920) Reset() {
-	*x = Message7920{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[18]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7920) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7920) ProtoMessage() {}
-
-func (x *Message7920) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[18]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7920.ProtoReflect.Descriptor instead.
-func (*Message7920) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{18}
-}
-
-func (x *Message7920) GetField7934() int64 {
-	if x != nil && x.Field7934 != nil {
-		return *x.Field7934
-	}
-	return 0
-}
-
-func (x *Message7920) GetField7935() int64 {
-	if x != nil && x.Field7935 != nil {
-		return *x.Field7935
-	}
-	return 0
-}
-
-type Message7921 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7936 *int32      `protobuf:"varint,1,opt,name=field7936" json:"field7936,omitempty"`
-	Field7937 *int64      `protobuf:"varint,2,opt,name=field7937" json:"field7937,omitempty"`
-	Field7938 *float32    `protobuf:"fixed32,3,opt,name=field7938" json:"field7938,omitempty"`
-	Field7939 *UnusedEnum `protobuf:"varint,4,opt,name=field7939,enum=benchmarks.google_message3.UnusedEnum" json:"field7939,omitempty"`
-}
-
-func (x *Message7921) Reset() {
-	*x = Message7921{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[19]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7921) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7921) ProtoMessage() {}
-
-func (x *Message7921) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[19]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7921.ProtoReflect.Descriptor instead.
-func (*Message7921) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{19}
-}
-
-func (x *Message7921) GetField7936() int32 {
-	if x != nil && x.Field7936 != nil {
-		return *x.Field7936
-	}
-	return 0
-}
-
-func (x *Message7921) GetField7937() int64 {
-	if x != nil && x.Field7937 != nil {
-		return *x.Field7937
-	}
-	return 0
-}
-
-func (x *Message7921) GetField7938() float32 {
-	if x != nil && x.Field7938 != nil {
-		return *x.Field7938
-	}
-	return 0
-}
-
-func (x *Message7921) GetField7939() UnusedEnum {
-	if x != nil && x.Field7939 != nil {
-		return *x.Field7939
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-type Message8511 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8539 *Message8224 `protobuf:"bytes,1,opt,name=field8539" json:"field8539,omitempty"`
-	Field8540 *string      `protobuf:"bytes,2,opt,name=field8540" json:"field8540,omitempty"`
-	Field8541 *bool        `protobuf:"varint,3,opt,name=field8541" json:"field8541,omitempty"`
-	Field8542 *int64       `protobuf:"varint,4,opt,name=field8542" json:"field8542,omitempty"`
-	Field8543 *string      `protobuf:"bytes,5,opt,name=field8543" json:"field8543,omitempty"`
-}
-
-func (x *Message8511) Reset() {
-	*x = Message8511{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[20]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8511) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8511) ProtoMessage() {}
-
-func (x *Message8511) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[20]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8511.ProtoReflect.Descriptor instead.
-func (*Message8511) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{20}
-}
-
-func (x *Message8511) GetField8539() *Message8224 {
-	if x != nil {
-		return x.Field8539
-	}
-	return nil
-}
-
-func (x *Message8511) GetField8540() string {
-	if x != nil && x.Field8540 != nil {
-		return *x.Field8540
-	}
-	return ""
-}
-
-func (x *Message8511) GetField8541() bool {
-	if x != nil && x.Field8541 != nil {
-		return *x.Field8541
-	}
-	return false
-}
-
-func (x *Message8511) GetField8542() int64 {
-	if x != nil && x.Field8542 != nil {
-		return *x.Field8542
-	}
-	return 0
-}
-
-func (x *Message8511) GetField8543() string {
-	if x != nil && x.Field8543 != nil {
-		return *x.Field8543
-	}
-	return ""
-}
-
-type Message8512 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8544 *Message8301 `protobuf:"bytes,1,opt,name=field8544" json:"field8544,omitempty"`
-	Field8545 *Message8302 `protobuf:"bytes,2,opt,name=field8545" json:"field8545,omitempty"`
-	Field8546 *string      `protobuf:"bytes,3,opt,name=field8546" json:"field8546,omitempty"`
-	Field8547 *bool        `protobuf:"varint,4,opt,name=field8547" json:"field8547,omitempty"`
-	Field8548 *int64       `protobuf:"varint,5,opt,name=field8548" json:"field8548,omitempty"`
-	Field8549 *string      `protobuf:"bytes,6,opt,name=field8549" json:"field8549,omitempty"`
-}
-
-func (x *Message8512) Reset() {
-	*x = Message8512{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[21]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8512) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8512) ProtoMessage() {}
-
-func (x *Message8512) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[21]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8512.ProtoReflect.Descriptor instead.
-func (*Message8512) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{21}
-}
-
-func (x *Message8512) GetField8544() *Message8301 {
-	if x != nil {
-		return x.Field8544
-	}
-	return nil
-}
-
-func (x *Message8512) GetField8545() *Message8302 {
-	if x != nil {
-		return x.Field8545
-	}
-	return nil
-}
-
-func (x *Message8512) GetField8546() string {
-	if x != nil && x.Field8546 != nil {
-		return *x.Field8546
-	}
-	return ""
-}
-
-func (x *Message8512) GetField8547() bool {
-	if x != nil && x.Field8547 != nil {
-		return *x.Field8547
-	}
-	return false
-}
-
-func (x *Message8512) GetField8548() int64 {
-	if x != nil && x.Field8548 != nil {
-		return *x.Field8548
-	}
-	return 0
-}
-
-func (x *Message8512) GetField8549() string {
-	if x != nil && x.Field8549 != nil {
-		return *x.Field8549
-	}
-	return ""
-}
-
-type Message8513 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8550 []*Message8392 `protobuf:"bytes,1,rep,name=field8550" json:"field8550,omitempty"`
-	Field8551 *string        `protobuf:"bytes,2,opt,name=field8551" json:"field8551,omitempty"`
-	Field8552 *bool          `protobuf:"varint,3,opt,name=field8552" json:"field8552,omitempty"`
-	Field8553 *string        `protobuf:"bytes,4,opt,name=field8553" json:"field8553,omitempty"`
-}
-
-func (x *Message8513) Reset() {
-	*x = Message8513{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[22]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8513) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8513) ProtoMessage() {}
-
-func (x *Message8513) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[22]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8513.ProtoReflect.Descriptor instead.
-func (*Message8513) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{22}
-}
-
-func (x *Message8513) GetField8550() []*Message8392 {
-	if x != nil {
-		return x.Field8550
-	}
-	return nil
-}
-
-func (x *Message8513) GetField8551() string {
-	if x != nil && x.Field8551 != nil {
-		return *x.Field8551
-	}
-	return ""
-}
-
-func (x *Message8513) GetField8552() bool {
-	if x != nil && x.Field8552 != nil {
-		return *x.Field8552
-	}
-	return false
-}
-
-func (x *Message8513) GetField8553() string {
-	if x != nil && x.Field8553 != nil {
-		return *x.Field8553
-	}
-	return ""
-}
-
-type Message8514 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8554 *string        `protobuf:"bytes,1,opt,name=field8554" json:"field8554,omitempty"`
-	Field8555 *int64         `protobuf:"varint,2,opt,name=field8555" json:"field8555,omitempty"`
-	Field8556 *bool          `protobuf:"varint,3,opt,name=field8556" json:"field8556,omitempty"`
-	Field8557 []*Message8130 `protobuf:"bytes,4,rep,name=field8557" json:"field8557,omitempty"`
-	Field8558 *string        `protobuf:"bytes,5,opt,name=field8558" json:"field8558,omitempty"`
-}
-
-func (x *Message8514) Reset() {
-	*x = Message8514{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[23]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8514) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8514) ProtoMessage() {}
-
-func (x *Message8514) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[23]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8514.ProtoReflect.Descriptor instead.
-func (*Message8514) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{23}
-}
-
-func (x *Message8514) GetField8554() string {
-	if x != nil && x.Field8554 != nil {
-		return *x.Field8554
-	}
-	return ""
-}
-
-func (x *Message8514) GetField8555() int64 {
-	if x != nil && x.Field8555 != nil {
-		return *x.Field8555
-	}
-	return 0
-}
-
-func (x *Message8514) GetField8556() bool {
-	if x != nil && x.Field8556 != nil {
-		return *x.Field8556
-	}
-	return false
-}
-
-func (x *Message8514) GetField8557() []*Message8130 {
-	if x != nil {
-		return x.Field8557
-	}
-	return nil
-}
-
-func (x *Message8514) GetField8558() string {
-	if x != nil && x.Field8558 != nil {
-		return *x.Field8558
-	}
-	return ""
-}
-
-type Message8515 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8559 *Message8479 `protobuf:"bytes,1,opt,name=field8559" json:"field8559,omitempty"`
-	Field8560 *Message8478 `protobuf:"bytes,2,opt,name=field8560" json:"field8560,omitempty"`
-	Field8561 *string      `protobuf:"bytes,3,opt,name=field8561" json:"field8561,omitempty"`
-}
-
-func (x *Message8515) Reset() {
-	*x = Message8515{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[24]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8515) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8515) ProtoMessage() {}
-
-func (x *Message8515) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[24]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8515.ProtoReflect.Descriptor instead.
-func (*Message8515) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{24}
-}
-
-func (x *Message8515) GetField8559() *Message8479 {
-	if x != nil {
-		return x.Field8559
-	}
-	return nil
-}
-
-func (x *Message8515) GetField8560() *Message8478 {
-	if x != nil {
-		return x.Field8560
-	}
-	return nil
-}
-
-func (x *Message8515) GetField8561() string {
-	if x != nil && x.Field8561 != nil {
-		return *x.Field8561
-	}
-	return ""
-}
-
-type Message10320 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field10347 *Enum10335      `protobuf:"varint,1,opt,name=field10347,enum=benchmarks.google_message3.Enum10335" json:"field10347,omitempty"`
-	Field10348 []*Message10319 `protobuf:"bytes,2,rep,name=field10348" json:"field10348,omitempty"`
-	Field10349 *int32          `protobuf:"varint,3,opt,name=field10349" json:"field10349,omitempty"`
-	Field10350 *int32          `protobuf:"varint,4,opt,name=field10350" json:"field10350,omitempty"`
-	Field10351 *int32          `protobuf:"varint,5,opt,name=field10351" json:"field10351,omitempty"`
-	Field10352 *int32          `protobuf:"varint,6,opt,name=field10352" json:"field10352,omitempty"`
-	Field10353 *Enum10337      `protobuf:"varint,7,opt,name=field10353,enum=benchmarks.google_message3.Enum10337" json:"field10353,omitempty"`
-}
-
-func (x *Message10320) Reset() {
-	*x = Message10320{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[25]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10320) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10320) ProtoMessage() {}
-
-func (x *Message10320) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[25]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10320.ProtoReflect.Descriptor instead.
-func (*Message10320) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{25}
-}
-
-func (x *Message10320) GetField10347() Enum10335 {
-	if x != nil && x.Field10347 != nil {
-		return *x.Field10347
-	}
-	return Enum10335_ENUM_VALUE10336
-}
-
-func (x *Message10320) GetField10348() []*Message10319 {
-	if x != nil {
-		return x.Field10348
-	}
-	return nil
-}
-
-func (x *Message10320) GetField10349() int32 {
-	if x != nil && x.Field10349 != nil {
-		return *x.Field10349
-	}
-	return 0
-}
-
-func (x *Message10320) GetField10350() int32 {
-	if x != nil && x.Field10350 != nil {
-		return *x.Field10350
-	}
-	return 0
-}
-
-func (x *Message10320) GetField10351() int32 {
-	if x != nil && x.Field10351 != nil {
-		return *x.Field10351
-	}
-	return 0
-}
-
-func (x *Message10320) GetField10352() int32 {
-	if x != nil && x.Field10352 != nil {
-		return *x.Field10352
-	}
-	return 0
-}
-
-func (x *Message10320) GetField10353() Enum10337 {
-	if x != nil && x.Field10353 != nil {
-		return *x.Field10353
-	}
-	return Enum10337_ENUM_VALUE10338
-}
-
-type Message10321 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field10354 *int32  `protobuf:"varint,1,opt,name=field10354" json:"field10354,omitempty"`
-	Field10355 *int32  `protobuf:"varint,2,opt,name=field10355" json:"field10355,omitempty"`
-	Field10356 *uint64 `protobuf:"varint,3,opt,name=field10356" json:"field10356,omitempty"`
-}
-
-func (x *Message10321) Reset() {
-	*x = Message10321{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[26]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10321) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10321) ProtoMessage() {}
-
-func (x *Message10321) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[26]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10321.ProtoReflect.Descriptor instead.
-func (*Message10321) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{26}
-}
-
-func (x *Message10321) GetField10354() int32 {
-	if x != nil && x.Field10354 != nil {
-		return *x.Field10354
-	}
-	return 0
-}
-
-func (x *Message10321) GetField10355() int32 {
-	if x != nil && x.Field10355 != nil {
-		return *x.Field10355
-	}
-	return 0
-}
-
-func (x *Message10321) GetField10356() uint64 {
-	if x != nil && x.Field10356 != nil {
-		return *x.Field10356
-	}
-	return 0
-}
-
-type Message10322 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field10357 *Message4016 `protobuf:"bytes,1,opt,name=field10357" json:"field10357,omitempty"`
-	Field10358 *bool        `protobuf:"varint,2,opt,name=field10358" json:"field10358,omitempty"`
-	Field10359 *bool        `protobuf:"varint,3,opt,name=field10359" json:"field10359,omitempty"`
-}
-
-func (x *Message10322) Reset() {
-	*x = Message10322{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[27]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10322) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10322) ProtoMessage() {}
-
-func (x *Message10322) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[27]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10322.ProtoReflect.Descriptor instead.
-func (*Message10322) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{27}
-}
-
-func (x *Message10322) GetField10357() *Message4016 {
-	if x != nil {
-		return x.Field10357
-	}
-	return nil
-}
-
-func (x *Message10322) GetField10358() bool {
-	if x != nil && x.Field10358 != nil {
-		return *x.Field10358
-	}
-	return false
-}
-
-func (x *Message10322) GetField10359() bool {
-	if x != nil && x.Field10359 != nil {
-		return *x.Field10359
-	}
-	return false
-}
-
-type Message11988 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12021 *string             `protobuf:"bytes,1,opt,name=field12021" json:"field12021,omitempty"`
-	Field12022 *string             `protobuf:"bytes,2,opt,name=field12022" json:"field12022,omitempty"`
-	Field12023 *UnusedEmptyMessage `protobuf:"bytes,3,opt,name=field12023" json:"field12023,omitempty"`
-	Field12024 *Message10155       `protobuf:"bytes,4,opt,name=field12024" json:"field12024,omitempty"`
-}
-
-func (x *Message11988) Reset() {
-	*x = Message11988{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[28]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message11988) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message11988) ProtoMessage() {}
-
-func (x *Message11988) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[28]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message11988.ProtoReflect.Descriptor instead.
-func (*Message11988) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{28}
-}
-
-func (x *Message11988) GetField12021() string {
-	if x != nil && x.Field12021 != nil {
-		return *x.Field12021
-	}
-	return ""
-}
-
-func (x *Message11988) GetField12022() string {
-	if x != nil && x.Field12022 != nil {
-		return *x.Field12022
-	}
-	return ""
-}
-
-func (x *Message11988) GetField12023() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field12023
-	}
-	return nil
-}
-
-func (x *Message11988) GetField12024() *Message10155 {
-	if x != nil {
-		return x.Field12024
-	}
-	return nil
-}
-
-type Message12668 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12677 []*Message12669 `protobuf:"bytes,1,rep,name=field12677" json:"field12677,omitempty"`
-	Field12678 *int32          `protobuf:"varint,2,opt,name=field12678" json:"field12678,omitempty"`
-	Field12679 *int32          `protobuf:"varint,3,opt,name=field12679" json:"field12679,omitempty"`
-	Field12680 *int32          `protobuf:"varint,4,opt,name=field12680" json:"field12680,omitempty"`
-}
-
-func (x *Message12668) Reset() {
-	*x = Message12668{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[29]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12668) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12668) ProtoMessage() {}
-
-func (x *Message12668) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[29]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12668.ProtoReflect.Descriptor instead.
-func (*Message12668) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{29}
-}
-
-func (x *Message12668) GetField12677() []*Message12669 {
-	if x != nil {
-		return x.Field12677
-	}
-	return nil
-}
-
-func (x *Message12668) GetField12678() int32 {
-	if x != nil && x.Field12678 != nil {
-		return *x.Field12678
-	}
-	return 0
-}
-
-func (x *Message12668) GetField12679() int32 {
-	if x != nil && x.Field12679 != nil {
-		return *x.Field12679
-	}
-	return 0
-}
-
-func (x *Message12668) GetField12680() int32 {
-	if x != nil && x.Field12680 != nil {
-		return *x.Field12680
-	}
-	return 0
-}
-
-type Message12825 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12862 []*Message12818       `protobuf:"bytes,1,rep,name=field12862" json:"field12862,omitempty"`
-	Field12863 *int32                `protobuf:"varint,2,opt,name=field12863" json:"field12863,omitempty"`
-	Field12864 *Message12819         `protobuf:"bytes,3,opt,name=field12864" json:"field12864,omitempty"`
-	Field12865 *Message12820         `protobuf:"bytes,4,opt,name=field12865" json:"field12865,omitempty"`
-	Field12866 *int32                `protobuf:"varint,5,opt,name=field12866" json:"field12866,omitempty"`
-	Field12867 []*Message12821       `protobuf:"bytes,6,rep,name=field12867" json:"field12867,omitempty"`
-	Field12868 []*UnusedEmptyMessage `protobuf:"bytes,7,rep,name=field12868" json:"field12868,omitempty"`
-}
-
-func (x *Message12825) Reset() {
-	*x = Message12825{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[30]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12825) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12825) ProtoMessage() {}
-
-func (x *Message12825) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[30]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12825.ProtoReflect.Descriptor instead.
-func (*Message12825) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{30}
-}
-
-func (x *Message12825) GetField12862() []*Message12818 {
-	if x != nil {
-		return x.Field12862
-	}
-	return nil
-}
-
-func (x *Message12825) GetField12863() int32 {
-	if x != nil && x.Field12863 != nil {
-		return *x.Field12863
-	}
-	return 0
-}
-
-func (x *Message12825) GetField12864() *Message12819 {
-	if x != nil {
-		return x.Field12864
-	}
-	return nil
-}
-
-func (x *Message12825) GetField12865() *Message12820 {
-	if x != nil {
-		return x.Field12865
-	}
-	return nil
-}
-
-func (x *Message12825) GetField12866() int32 {
-	if x != nil && x.Field12866 != nil {
-		return *x.Field12866
-	}
-	return 0
-}
-
-func (x *Message12825) GetField12867() []*Message12821 {
-	if x != nil {
-		return x.Field12867
-	}
-	return nil
-}
-
-func (x *Message12825) GetField12868() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field12868
-	}
-	return nil
-}
-
-type Message16478 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field16481 []*Message16479 `protobuf:"bytes,1,rep,name=field16481" json:"field16481,omitempty"`
-	Field16482 *bool           `protobuf:"varint,3,opt,name=field16482" json:"field16482,omitempty"`
-	Field16483 *int32          `protobuf:"varint,2,opt,name=field16483" json:"field16483,omitempty"`
-}
-
-func (x *Message16478) Reset() {
-	*x = Message16478{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[31]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message16478) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message16478) ProtoMessage() {}
-
-func (x *Message16478) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[31]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message16478.ProtoReflect.Descriptor instead.
-func (*Message16478) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{31}
-}
-
-func (x *Message16478) GetField16481() []*Message16479 {
-	if x != nil {
-		return x.Field16481
-	}
-	return nil
-}
-
-func (x *Message16478) GetField16482() bool {
-	if x != nil && x.Field16482 != nil {
-		return *x.Field16482
-	}
-	return false
-}
-
-func (x *Message16478) GetField16483() int32 {
-	if x != nil && x.Field16483 != nil {
-		return *x.Field16483
-	}
-	return 0
-}
-
-type Message16552 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field16565 *uint64    `protobuf:"fixed64,1,opt,name=field16565" json:"field16565,omitempty"`
-	Field16566 *int32     `protobuf:"varint,2,opt,name=field16566" json:"field16566,omitempty"`
-	Field16567 *Enum16553 `protobuf:"varint,3,opt,name=field16567,enum=benchmarks.google_message3.Enum16553" json:"field16567,omitempty"`
-}
-
-func (x *Message16552) Reset() {
-	*x = Message16552{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[32]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message16552) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message16552) ProtoMessage() {}
-
-func (x *Message16552) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[32]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message16552.ProtoReflect.Descriptor instead.
-func (*Message16552) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{32}
-}
-
-func (x *Message16552) GetField16565() uint64 {
-	if x != nil && x.Field16565 != nil {
-		return *x.Field16565
-	}
-	return 0
-}
-
-func (x *Message16552) GetField16566() int32 {
-	if x != nil && x.Field16566 != nil {
-		return *x.Field16566
-	}
-	return 0
-}
-
-func (x *Message16552) GetField16567() Enum16553 {
-	if x != nil && x.Field16567 != nil {
-		return *x.Field16567
-	}
-	return Enum16553_ENUM_VALUE16554
-}
-
-type Message16660 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field16668 *string `protobuf:"bytes,1,opt,name=field16668" json:"field16668,omitempty"`
-	Field16669 *string `protobuf:"bytes,2,opt,name=field16669" json:"field16669,omitempty"`
-	Field16670 *int32  `protobuf:"varint,3,opt,name=field16670" json:"field16670,omitempty"`
-}
-
-func (x *Message16660) Reset() {
-	*x = Message16660{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[33]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message16660) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message16660) ProtoMessage() {}
-
-func (x *Message16660) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[33]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message16660.ProtoReflect.Descriptor instead.
-func (*Message16660) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{33}
-}
-
-func (x *Message16660) GetField16668() string {
-	if x != nil && x.Field16668 != nil {
-		return *x.Field16668
-	}
-	return ""
-}
-
-func (x *Message16660) GetField16669() string {
-	if x != nil && x.Field16669 != nil {
-		return *x.Field16669
-	}
-	return ""
-}
-
-func (x *Message16660) GetField16670() int32 {
-	if x != nil && x.Field16670 != nil {
-		return *x.Field16670
-	}
-	return 0
-}
-
-type Message16727 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	Field16782 *Enum16728          `protobuf:"varint,1,req,name=field16782,enum=benchmarks.google_message3.Enum16728" json:"field16782,omitempty"`
-	Field16783 *string             `protobuf:"bytes,2,req,name=field16783" json:"field16783,omitempty"`
-	Field16784 *string             `protobuf:"bytes,3,opt,name=field16784" json:"field16784,omitempty"`
-	Field16785 *int32              `protobuf:"varint,23,opt,name=field16785" json:"field16785,omitempty"`
-	Field16786 *string             `protobuf:"bytes,4,req,name=field16786" json:"field16786,omitempty"`
-	Field16787 *string             `protobuf:"bytes,5,opt,name=field16787" json:"field16787,omitempty"`
-	Field16788 *string             `protobuf:"bytes,6,opt,name=field16788" json:"field16788,omitempty"`
-	Field16789 *Enum16732          `protobuf:"varint,7,req,name=field16789,enum=benchmarks.google_message3.Enum16732" json:"field16789,omitempty"`
-	Field16790 *string             `protobuf:"bytes,8,opt,name=field16790" json:"field16790,omitempty"`
-	Field16791 *string             `protobuf:"bytes,9,opt,name=field16791" json:"field16791,omitempty"`
-	Field16792 *string             `protobuf:"bytes,10,opt,name=field16792" json:"field16792,omitempty"`
-	Field16793 *Enum16738          `protobuf:"varint,11,opt,name=field16793,enum=benchmarks.google_message3.Enum16738" json:"field16793,omitempty"`
-	Field16794 *int32              `protobuf:"varint,12,opt,name=field16794" json:"field16794,omitempty"`
-	Field16795 []*Message16722     `protobuf:"bytes,13,rep,name=field16795" json:"field16795,omitempty"`
-	Field16796 *bool               `protobuf:"varint,19,opt,name=field16796" json:"field16796,omitempty"`
-	Field16797 *bool               `protobuf:"varint,24,opt,name=field16797" json:"field16797,omitempty"`
-	Field16798 *string             `protobuf:"bytes,14,opt,name=field16798" json:"field16798,omitempty"`
-	Field16799 *int64              `protobuf:"varint,15,opt,name=field16799" json:"field16799,omitempty"`
-	Field16800 *bool               `protobuf:"varint,16,opt,name=field16800" json:"field16800,omitempty"`
-	Field16801 *string             `protobuf:"bytes,17,opt,name=field16801" json:"field16801,omitempty"`
-	Field16802 *Enum16698          `protobuf:"varint,18,opt,name=field16802,enum=benchmarks.google_message3.Enum16698" json:"field16802,omitempty"`
-	Field16803 *Message16724       `protobuf:"bytes,20,opt,name=field16803" json:"field16803,omitempty"`
-	Field16804 *bool               `protobuf:"varint,22,opt,name=field16804" json:"field16804,omitempty"`
-	Field16805 *UnusedEmptyMessage `protobuf:"bytes,25,opt,name=field16805" json:"field16805,omitempty"`
-}
-
-func (x *Message16727) Reset() {
-	*x = Message16727{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[34]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message16727) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message16727) ProtoMessage() {}
-
-func (x *Message16727) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[34]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message16727.ProtoReflect.Descriptor instead.
-func (*Message16727) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{34}
-}
-
-func (x *Message16727) GetField16782() Enum16728 {
-	if x != nil && x.Field16782 != nil {
-		return *x.Field16782
-	}
-	return Enum16728_ENUM_VALUE16729
-}
-
-func (x *Message16727) GetField16783() string {
-	if x != nil && x.Field16783 != nil {
-		return *x.Field16783
-	}
-	return ""
-}
-
-func (x *Message16727) GetField16784() string {
-	if x != nil && x.Field16784 != nil {
-		return *x.Field16784
-	}
-	return ""
-}
-
-func (x *Message16727) GetField16785() int32 {
-	if x != nil && x.Field16785 != nil {
-		return *x.Field16785
-	}
-	return 0
-}
-
-func (x *Message16727) GetField16786() string {
-	if x != nil && x.Field16786 != nil {
-		return *x.Field16786
-	}
-	return ""
-}
-
-func (x *Message16727) GetField16787() string {
-	if x != nil && x.Field16787 != nil {
-		return *x.Field16787
-	}
-	return ""
-}
-
-func (x *Message16727) GetField16788() string {
-	if x != nil && x.Field16788 != nil {
-		return *x.Field16788
-	}
-	return ""
-}
-
-func (x *Message16727) GetField16789() Enum16732 {
-	if x != nil && x.Field16789 != nil {
-		return *x.Field16789
-	}
-	return Enum16732_ENUM_VALUE16733
-}
-
-func (x *Message16727) GetField16790() string {
-	if x != nil && x.Field16790 != nil {
-		return *x.Field16790
-	}
-	return ""
-}
-
-func (x *Message16727) GetField16791() string {
-	if x != nil && x.Field16791 != nil {
-		return *x.Field16791
-	}
-	return ""
-}
-
-func (x *Message16727) GetField16792() string {
-	if x != nil && x.Field16792 != nil {
-		return *x.Field16792
-	}
-	return ""
-}
-
-func (x *Message16727) GetField16793() Enum16738 {
-	if x != nil && x.Field16793 != nil {
-		return *x.Field16793
-	}
-	return Enum16738_ENUM_VALUE16739
-}
-
-func (x *Message16727) GetField16794() int32 {
-	if x != nil && x.Field16794 != nil {
-		return *x.Field16794
-	}
-	return 0
-}
-
-func (x *Message16727) GetField16795() []*Message16722 {
-	if x != nil {
-		return x.Field16795
-	}
-	return nil
-}
-
-func (x *Message16727) GetField16796() bool {
-	if x != nil && x.Field16796 != nil {
-		return *x.Field16796
-	}
-	return false
-}
-
-func (x *Message16727) GetField16797() bool {
-	if x != nil && x.Field16797 != nil {
-		return *x.Field16797
-	}
-	return false
-}
-
-func (x *Message16727) GetField16798() string {
-	if x != nil && x.Field16798 != nil {
-		return *x.Field16798
-	}
-	return ""
-}
-
-func (x *Message16727) GetField16799() int64 {
-	if x != nil && x.Field16799 != nil {
-		return *x.Field16799
-	}
-	return 0
-}
-
-func (x *Message16727) GetField16800() bool {
-	if x != nil && x.Field16800 != nil {
-		return *x.Field16800
-	}
-	return false
-}
-
-func (x *Message16727) GetField16801() string {
-	if x != nil && x.Field16801 != nil {
-		return *x.Field16801
-	}
-	return ""
-}
-
-func (x *Message16727) GetField16802() Enum16698 {
-	if x != nil && x.Field16802 != nil {
-		return *x.Field16802
-	}
-	return Enum16698_ENUM_VALUE16699
-}
-
-func (x *Message16727) GetField16803() *Message16724 {
-	if x != nil {
-		return x.Field16803
-	}
-	return nil
-}
-
-func (x *Message16727) GetField16804() bool {
-	if x != nil && x.Field16804 != nil {
-		return *x.Field16804
-	}
-	return false
-}
-
-func (x *Message16727) GetField16805() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field16805
-	}
-	return nil
-}
-
-type Message16725 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field16774 *Enum16728 `protobuf:"varint,1,opt,name=field16774,enum=benchmarks.google_message3.Enum16728" json:"field16774,omitempty"`
-	Field16775 []string   `protobuf:"bytes,2,rep,name=field16775" json:"field16775,omitempty"`
-}
-
-func (x *Message16725) Reset() {
-	*x = Message16725{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[35]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message16725) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message16725) ProtoMessage() {}
-
-func (x *Message16725) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[35]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message16725.ProtoReflect.Descriptor instead.
-func (*Message16725) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{35}
-}
-
-func (x *Message16725) GetField16774() Enum16728 {
-	if x != nil && x.Field16774 != nil {
-		return *x.Field16774
-	}
-	return Enum16728_ENUM_VALUE16729
-}
-
-func (x *Message16725) GetField16775() []string {
-	if x != nil {
-		return x.Field16775
-	}
-	return nil
-}
-
-type Message17726 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field17801 *string               `protobuf:"bytes,1,opt,name=field17801" json:"field17801,omitempty"`
-	Field17802 []string              `protobuf:"bytes,2,rep,name=field17802" json:"field17802,omitempty"`
-	Field17803 *string               `protobuf:"bytes,3,opt,name=field17803" json:"field17803,omitempty"`
-	Field17804 []string              `protobuf:"bytes,4,rep,name=field17804" json:"field17804,omitempty"`
-	Field17805 *string               `protobuf:"bytes,5,opt,name=field17805" json:"field17805,omitempty"`
-	Field17806 []string              `protobuf:"bytes,6,rep,name=field17806" json:"field17806,omitempty"`
-	Field17807 *string               `protobuf:"bytes,7,opt,name=field17807" json:"field17807,omitempty"`
-	Field17808 *string               `protobuf:"bytes,8,opt,name=field17808" json:"field17808,omitempty"`
-	Field17809 []string              `protobuf:"bytes,15,rep,name=field17809" json:"field17809,omitempty"`
-	Field17810 []string              `protobuf:"bytes,16,rep,name=field17810" json:"field17810,omitempty"`
-	Field17811 []string              `protobuf:"bytes,17,rep,name=field17811" json:"field17811,omitempty"`
-	Field17812 []*UnusedEmptyMessage `protobuf:"bytes,18,rep,name=field17812" json:"field17812,omitempty"`
-	Field17813 *string               `protobuf:"bytes,9,opt,name=field17813" json:"field17813,omitempty"`
-	Field17814 *string               `protobuf:"bytes,10,opt,name=field17814" json:"field17814,omitempty"`
-	Field17815 *string               `protobuf:"bytes,11,opt,name=field17815" json:"field17815,omitempty"`
-	Field17816 *string               `protobuf:"bytes,12,opt,name=field17816" json:"field17816,omitempty"`
-	Field17817 *string               `protobuf:"bytes,13,opt,name=field17817" json:"field17817,omitempty"`
-	Field17818 *string               `protobuf:"bytes,14,opt,name=field17818" json:"field17818,omitempty"`
-	Field17819 *string               `protobuf:"bytes,19,opt,name=field17819" json:"field17819,omitempty"`
-	Field17820 []*Message17728       `protobuf:"bytes,20,rep,name=field17820" json:"field17820,omitempty"`
-	Field17821 []*Message17728       `protobuf:"bytes,21,rep,name=field17821" json:"field17821,omitempty"`
-	Field17822 []*UnusedEmptyMessage `protobuf:"bytes,30,rep,name=field17822" json:"field17822,omitempty"`
-}
-
-func (x *Message17726) Reset() {
-	*x = Message17726{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[36]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message17726) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message17726) ProtoMessage() {}
-
-func (x *Message17726) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[36]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message17726.ProtoReflect.Descriptor instead.
-func (*Message17726) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{36}
-}
-
-func (x *Message17726) GetField17801() string {
-	if x != nil && x.Field17801 != nil {
-		return *x.Field17801
-	}
-	return ""
-}
-
-func (x *Message17726) GetField17802() []string {
-	if x != nil {
-		return x.Field17802
-	}
-	return nil
-}
-
-func (x *Message17726) GetField17803() string {
-	if x != nil && x.Field17803 != nil {
-		return *x.Field17803
-	}
-	return ""
-}
-
-func (x *Message17726) GetField17804() []string {
-	if x != nil {
-		return x.Field17804
-	}
-	return nil
-}
-
-func (x *Message17726) GetField17805() string {
-	if x != nil && x.Field17805 != nil {
-		return *x.Field17805
-	}
-	return ""
-}
-
-func (x *Message17726) GetField17806() []string {
-	if x != nil {
-		return x.Field17806
-	}
-	return nil
-}
-
-func (x *Message17726) GetField17807() string {
-	if x != nil && x.Field17807 != nil {
-		return *x.Field17807
-	}
-	return ""
-}
-
-func (x *Message17726) GetField17808() string {
-	if x != nil && x.Field17808 != nil {
-		return *x.Field17808
-	}
-	return ""
-}
-
-func (x *Message17726) GetField17809() []string {
-	if x != nil {
-		return x.Field17809
-	}
-	return nil
-}
-
-func (x *Message17726) GetField17810() []string {
-	if x != nil {
-		return x.Field17810
-	}
-	return nil
-}
-
-func (x *Message17726) GetField17811() []string {
-	if x != nil {
-		return x.Field17811
-	}
-	return nil
-}
-
-func (x *Message17726) GetField17812() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field17812
-	}
-	return nil
-}
-
-func (x *Message17726) GetField17813() string {
-	if x != nil && x.Field17813 != nil {
-		return *x.Field17813
-	}
-	return ""
-}
-
-func (x *Message17726) GetField17814() string {
-	if x != nil && x.Field17814 != nil {
-		return *x.Field17814
-	}
-	return ""
-}
-
-func (x *Message17726) GetField17815() string {
-	if x != nil && x.Field17815 != nil {
-		return *x.Field17815
-	}
-	return ""
-}
-
-func (x *Message17726) GetField17816() string {
-	if x != nil && x.Field17816 != nil {
-		return *x.Field17816
-	}
-	return ""
-}
-
-func (x *Message17726) GetField17817() string {
-	if x != nil && x.Field17817 != nil {
-		return *x.Field17817
-	}
-	return ""
-}
-
-func (x *Message17726) GetField17818() string {
-	if x != nil && x.Field17818 != nil {
-		return *x.Field17818
-	}
-	return ""
-}
-
-func (x *Message17726) GetField17819() string {
-	if x != nil && x.Field17819 != nil {
-		return *x.Field17819
-	}
-	return ""
-}
-
-func (x *Message17726) GetField17820() []*Message17728 {
-	if x != nil {
-		return x.Field17820
-	}
-	return nil
-}
-
-func (x *Message17726) GetField17821() []*Message17728 {
-	if x != nil {
-		return x.Field17821
-	}
-	return nil
-}
-
-func (x *Message17726) GetField17822() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field17822
-	}
-	return nil
-}
-
-type Message17782 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field18153 *string `protobuf:"bytes,1,opt,name=field18153" json:"field18153,omitempty"`
-	Field18154 *string `protobuf:"bytes,2,opt,name=field18154" json:"field18154,omitempty"`
-}
-
-func (x *Message17782) Reset() {
-	*x = Message17782{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[37]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message17782) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message17782) ProtoMessage() {}
-
-func (x *Message17782) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[37]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message17782.ProtoReflect.Descriptor instead.
-func (*Message17782) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{37}
-}
-
-func (x *Message17782) GetField18153() string {
-	if x != nil && x.Field18153 != nil {
-		return *x.Field18153
-	}
-	return ""
-}
-
-func (x *Message17782) GetField18154() string {
-	if x != nil && x.Field18154 != nil {
-		return *x.Field18154
-	}
-	return ""
-}
-
-type Message17783 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field18155   *string                      `protobuf:"bytes,1,opt,name=field18155" json:"field18155,omitempty"`
-	Field18156   *string                      `protobuf:"bytes,2,opt,name=field18156" json:"field18156,omitempty"`
-	Field18157   *string                      `protobuf:"bytes,3,opt,name=field18157" json:"field18157,omitempty"`
-	Message17784 []*Message17783_Message17784 `protobuf:"group,4,rep,name=Message17784,json=message17784" json:"message17784,omitempty"`
-	Message17785 []*Message17783_Message17785 `protobuf:"group,9,rep,name=Message17785,json=message17785" json:"message17785,omitempty"`
-	Field18160   []string                     `protobuf:"bytes,16,rep,name=field18160" json:"field18160,omitempty"`
-}
-
-func (x *Message17783) Reset() {
-	*x = Message17783{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[38]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message17783) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message17783) ProtoMessage() {}
-
-func (x *Message17783) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[38]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message17783.ProtoReflect.Descriptor instead.
-func (*Message17783) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{38}
-}
-
-func (x *Message17783) GetField18155() string {
-	if x != nil && x.Field18155 != nil {
-		return *x.Field18155
-	}
-	return ""
-}
-
-func (x *Message17783) GetField18156() string {
-	if x != nil && x.Field18156 != nil {
-		return *x.Field18156
-	}
-	return ""
-}
-
-func (x *Message17783) GetField18157() string {
-	if x != nil && x.Field18157 != nil {
-		return *x.Field18157
-	}
-	return ""
-}
-
-func (x *Message17783) GetMessage17784() []*Message17783_Message17784 {
-	if x != nil {
-		return x.Message17784
-	}
-	return nil
-}
-
-func (x *Message17783) GetMessage17785() []*Message17783_Message17785 {
-	if x != nil {
-		return x.Message17785
-	}
-	return nil
-}
-
-func (x *Message17783) GetField18160() []string {
-	if x != nil {
-		return x.Field18160
-	}
-	return nil
-}
-
-type Message16945 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	Field16946 *string               `protobuf:"bytes,1,opt,name=field16946" json:"field16946,omitempty"`
-	Field16947 *string               `protobuf:"bytes,2,opt,name=field16947" json:"field16947,omitempty"`
-	Field16948 *string               `protobuf:"bytes,3,opt,name=field16948" json:"field16948,omitempty"`
-	Field16949 *string               `protobuf:"bytes,4,opt,name=field16949" json:"field16949,omitempty"`
-	Field16950 *string               `protobuf:"bytes,5,opt,name=field16950" json:"field16950,omitempty"`
-	Field16951 *UnusedEmptyMessage   `protobuf:"bytes,872,opt,name=field16951" json:"field16951,omitempty"`
-	Field16952 []*Message0           `protobuf:"bytes,16,rep,name=field16952" json:"field16952,omitempty"`
-	Field16953 []*UnusedEmptyMessage `protobuf:"bytes,54,rep,name=field16953" json:"field16953,omitempty"`
-	Field16954 []*Message0           `protobuf:"bytes,55,rep,name=field16954" json:"field16954,omitempty"`
-	Field16955 []string              `protobuf:"bytes,58,rep,name=field16955" json:"field16955,omitempty"`
-	Field16956 []string              `protobuf:"bytes,59,rep,name=field16956" json:"field16956,omitempty"`
-	Field16957 []string              `protobuf:"bytes,62,rep,name=field16957" json:"field16957,omitempty"`
-	Field16958 []string              `protobuf:"bytes,37,rep,name=field16958" json:"field16958,omitempty"`
-	Field16959 []string              `protobuf:"bytes,18,rep,name=field16959" json:"field16959,omitempty"`
-	Field16960 []*UnusedEmptyMessage `protobuf:"bytes,38,rep,name=field16960" json:"field16960,omitempty"`
-	Field16961 []*Message0           `protobuf:"bytes,67,rep,name=field16961" json:"field16961,omitempty"`
-	Field16962 []*Message0           `protobuf:"bytes,130,rep,name=field16962" json:"field16962,omitempty"`
-	Field16963 []*UnusedEmptyMessage `protobuf:"bytes,136,rep,name=field16963" json:"field16963,omitempty"`
-	Field16964 []string              `protobuf:"bytes,138,rep,name=field16964" json:"field16964,omitempty"`
-	Field16965 []*UnusedEmptyMessage `protobuf:"bytes,156,rep,name=field16965" json:"field16965,omitempty"`
-	Field16966 []string              `protobuf:"bytes,139,rep,name=field16966" json:"field16966,omitempty"`
-	Field16967 []*UnusedEmptyMessage `protobuf:"bytes,126,rep,name=field16967" json:"field16967,omitempty"`
-	Field16968 []string              `protobuf:"bytes,152,rep,name=field16968" json:"field16968,omitempty"`
-	Field16969 []*Message0           `protobuf:"bytes,183,rep,name=field16969" json:"field16969,omitempty"`
-	Field16970 []string              `protobuf:"bytes,168,rep,name=field16970" json:"field16970,omitempty"`
-	Field16971 []string              `protobuf:"bytes,212,rep,name=field16971" json:"field16971,omitempty"`
-	Field16972 []string              `protobuf:"bytes,213,rep,name=field16972" json:"field16972,omitempty"`
-	Field16973 []*UnusedEmptyMessage `protobuf:"bytes,189,rep,name=field16973" json:"field16973,omitempty"`
-	Field16974 []*UnusedEmptyMessage `protobuf:"bytes,190,rep,name=field16974" json:"field16974,omitempty"`
-	Field16975 []string              `protobuf:"bytes,191,rep,name=field16975" json:"field16975,omitempty"`
-	Field16976 []string              `protobuf:"bytes,192,rep,name=field16976" json:"field16976,omitempty"`
-	Field16977 []*Message0           `protobuf:"bytes,193,rep,name=field16977" json:"field16977,omitempty"`
-	Field16978 []*UnusedEmptyMessage `protobuf:"bytes,194,rep,name=field16978" json:"field16978,omitempty"`
-	Field16979 []*UnusedEmptyMessage `protobuf:"bytes,195,rep,name=field16979" json:"field16979,omitempty"`
-	Field16980 []int32               `protobuf:"varint,196,rep,name=field16980" json:"field16980,omitempty"`
-	Field16981 []*UnusedEmptyMessage `protobuf:"bytes,95,rep,name=field16981" json:"field16981,omitempty"`
-	Field16982 []string              `protobuf:"bytes,96,rep,name=field16982" json:"field16982,omitempty"`
-	Field16983 []*UnusedEmptyMessage `protobuf:"bytes,97,rep,name=field16983" json:"field16983,omitempty"`
-	Field16984 []string              `protobuf:"bytes,1086,rep,name=field16984" json:"field16984,omitempty"`
-	Field16985 []*UnusedEmptyMessage `protobuf:"bytes,98,rep,name=field16985" json:"field16985,omitempty"`
-	Field16986 []string              `protobuf:"bytes,99,rep,name=field16986" json:"field16986,omitempty"`
-	Field16987 []string              `protobuf:"bytes,100,rep,name=field16987" json:"field16987,omitempty"`
-	Field16988 []string              `protobuf:"bytes,48,rep,name=field16988" json:"field16988,omitempty"`
-	Field16989 *string               `protobuf:"bytes,22,opt,name=field16989" json:"field16989,omitempty"`
-	Field16990 []*UnusedEmptyMessage `protobuf:"bytes,51,rep,name=field16990" json:"field16990,omitempty"`
-	Field16991 []string              `protobuf:"bytes,81,rep,name=field16991" json:"field16991,omitempty"`
-	Field16992 []string              `protobuf:"bytes,85,rep,name=field16992" json:"field16992,omitempty"`
-	Field16993 []string              `protobuf:"bytes,169,rep,name=field16993" json:"field16993,omitempty"`
-	Field16994 *UnusedEmptyMessage   `protobuf:"bytes,260,opt,name=field16994" json:"field16994,omitempty"`
-	Field16995 *int32                `protobuf:"varint,198,opt,name=field16995" json:"field16995,omitempty"`
-	Field16996 *int32                `protobuf:"varint,204,opt,name=field16996" json:"field16996,omitempty"`
-	Field16997 *string               `protobuf:"bytes,1087,opt,name=field16997" json:"field16997,omitempty"`
-	Field16998 []string              `protobuf:"bytes,197,rep,name=field16998" json:"field16998,omitempty"`
-	Field16999 []string              `protobuf:"bytes,206,rep,name=field16999" json:"field16999,omitempty"`
-	Field17000 *string               `protobuf:"bytes,211,opt,name=field17000" json:"field17000,omitempty"`
-	Field17001 []string              `protobuf:"bytes,205,rep,name=field17001" json:"field17001,omitempty"`
-	Field17002 []*UnusedEmptyMessage `protobuf:"bytes,68,rep,name=field17002" json:"field17002,omitempty"`
-	Field17003 []*UnusedEmptyMessage `protobuf:"bytes,69,rep,name=field17003" json:"field17003,omitempty"`
-	Field17004 []*UnusedEmptyMessage `protobuf:"bytes,70,rep,name=field17004" json:"field17004,omitempty"`
-	Field17005 []*UnusedEmptyMessage `protobuf:"bytes,71,rep,name=field17005" json:"field17005,omitempty"`
-	Field17006 []*UnusedEmptyMessage `protobuf:"bytes,72,rep,name=field17006" json:"field17006,omitempty"`
-	Field17007 []*UnusedEmptyMessage `protobuf:"bytes,19,rep,name=field17007" json:"field17007,omitempty"`
-	Field17008 []*UnusedEmptyMessage `protobuf:"bytes,24,rep,name=field17008" json:"field17008,omitempty"`
-	Field17009 *UnusedEmptyMessage   `protobuf:"bytes,23,opt,name=field17009" json:"field17009,omitempty"`
-	Field17010 []*Message0           `protobuf:"bytes,131,rep,name=field17010" json:"field17010,omitempty"`
-	Field17011 []string              `protobuf:"bytes,133,rep,name=field17011" json:"field17011,omitempty"`
-	Field17012 []*UnusedEmptyMessage `protobuf:"bytes,142,rep,name=field17012" json:"field17012,omitempty"`
-	Field17013 []string              `protobuf:"bytes,143,rep,name=field17013" json:"field17013,omitempty"`
-	Field17014 []*UnusedEmptyMessage `protobuf:"bytes,153,rep,name=field17014" json:"field17014,omitempty"`
-	Field17015 []*Message0           `protobuf:"bytes,170,rep,name=field17015" json:"field17015,omitempty"`
-	Field17016 []string              `protobuf:"bytes,171,rep,name=field17016" json:"field17016,omitempty"`
-	Field17017 []string              `protobuf:"bytes,172,rep,name=field17017" json:"field17017,omitempty"`
-	Field17018 []string              `protobuf:"bytes,173,rep,name=field17018" json:"field17018,omitempty"`
-	Field17019 []string              `protobuf:"bytes,174,rep,name=field17019" json:"field17019,omitempty"`
-	Field17020 []string              `protobuf:"bytes,175,rep,name=field17020" json:"field17020,omitempty"`
-	Field17021 []string              `protobuf:"bytes,186,rep,name=field17021" json:"field17021,omitempty"`
-	Field17022 []string              `protobuf:"bytes,101,rep,name=field17022" json:"field17022,omitempty"`
-	Field17023 []*Message0           `protobuf:"bytes,102,rep,name=field17023" json:"field17023,omitempty"`
-	Field17024 []string              `protobuf:"bytes,274,rep,name=field17024" json:"field17024,omitempty"`
-}
-
-func (x *Message16945) Reset() {
-	*x = Message16945{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[39]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message16945) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message16945) ProtoMessage() {}
-
-func (x *Message16945) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[39]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message16945.ProtoReflect.Descriptor instead.
-func (*Message16945) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{39}
-}
-
-func (x *Message16945) GetField16946() string {
-	if x != nil && x.Field16946 != nil {
-		return *x.Field16946
-	}
-	return ""
-}
-
-func (x *Message16945) GetField16947() string {
-	if x != nil && x.Field16947 != nil {
-		return *x.Field16947
-	}
-	return ""
-}
-
-func (x *Message16945) GetField16948() string {
-	if x != nil && x.Field16948 != nil {
-		return *x.Field16948
-	}
-	return ""
-}
-
-func (x *Message16945) GetField16949() string {
-	if x != nil && x.Field16949 != nil {
-		return *x.Field16949
-	}
-	return ""
-}
-
-func (x *Message16945) GetField16950() string {
-	if x != nil && x.Field16950 != nil {
-		return *x.Field16950
-	}
-	return ""
-}
-
-func (x *Message16945) GetField16951() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field16951
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16952() []*Message0 {
-	if x != nil {
-		return x.Field16952
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16953() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field16953
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16954() []*Message0 {
-	if x != nil {
-		return x.Field16954
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16955() []string {
-	if x != nil {
-		return x.Field16955
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16956() []string {
-	if x != nil {
-		return x.Field16956
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16957() []string {
-	if x != nil {
-		return x.Field16957
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16958() []string {
-	if x != nil {
-		return x.Field16958
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16959() []string {
-	if x != nil {
-		return x.Field16959
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16960() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field16960
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16961() []*Message0 {
-	if x != nil {
-		return x.Field16961
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16962() []*Message0 {
-	if x != nil {
-		return x.Field16962
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16963() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field16963
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16964() []string {
-	if x != nil {
-		return x.Field16964
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16965() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field16965
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16966() []string {
-	if x != nil {
-		return x.Field16966
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16967() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field16967
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16968() []string {
-	if x != nil {
-		return x.Field16968
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16969() []*Message0 {
-	if x != nil {
-		return x.Field16969
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16970() []string {
-	if x != nil {
-		return x.Field16970
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16971() []string {
-	if x != nil {
-		return x.Field16971
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16972() []string {
-	if x != nil {
-		return x.Field16972
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16973() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field16973
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16974() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field16974
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16975() []string {
-	if x != nil {
-		return x.Field16975
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16976() []string {
-	if x != nil {
-		return x.Field16976
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16977() []*Message0 {
-	if x != nil {
-		return x.Field16977
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16978() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field16978
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16979() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field16979
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16980() []int32 {
-	if x != nil {
-		return x.Field16980
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16981() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field16981
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16982() []string {
-	if x != nil {
-		return x.Field16982
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16983() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field16983
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16984() []string {
-	if x != nil {
-		return x.Field16984
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16985() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field16985
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16986() []string {
-	if x != nil {
-		return x.Field16986
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16987() []string {
-	if x != nil {
-		return x.Field16987
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16988() []string {
-	if x != nil {
-		return x.Field16988
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16989() string {
-	if x != nil && x.Field16989 != nil {
-		return *x.Field16989
-	}
-	return ""
-}
-
-func (x *Message16945) GetField16990() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field16990
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16991() []string {
-	if x != nil {
-		return x.Field16991
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16992() []string {
-	if x != nil {
-		return x.Field16992
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16993() []string {
-	if x != nil {
-		return x.Field16993
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16994() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field16994
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16995() int32 {
-	if x != nil && x.Field16995 != nil {
-		return *x.Field16995
-	}
-	return 0
-}
-
-func (x *Message16945) GetField16996() int32 {
-	if x != nil && x.Field16996 != nil {
-		return *x.Field16996
-	}
-	return 0
-}
-
-func (x *Message16945) GetField16997() string {
-	if x != nil && x.Field16997 != nil {
-		return *x.Field16997
-	}
-	return ""
-}
-
-func (x *Message16945) GetField16998() []string {
-	if x != nil {
-		return x.Field16998
-	}
-	return nil
-}
-
-func (x *Message16945) GetField16999() []string {
-	if x != nil {
-		return x.Field16999
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17000() string {
-	if x != nil && x.Field17000 != nil {
-		return *x.Field17000
-	}
-	return ""
-}
-
-func (x *Message16945) GetField17001() []string {
-	if x != nil {
-		return x.Field17001
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17002() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field17002
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17003() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field17003
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17004() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field17004
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17005() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field17005
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17006() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field17006
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17007() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field17007
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17008() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field17008
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17009() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field17009
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17010() []*Message0 {
-	if x != nil {
-		return x.Field17010
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17011() []string {
-	if x != nil {
-		return x.Field17011
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17012() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field17012
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17013() []string {
-	if x != nil {
-		return x.Field17013
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17014() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field17014
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17015() []*Message0 {
-	if x != nil {
-		return x.Field17015
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17016() []string {
-	if x != nil {
-		return x.Field17016
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17017() []string {
-	if x != nil {
-		return x.Field17017
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17018() []string {
-	if x != nil {
-		return x.Field17018
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17019() []string {
-	if x != nil {
-		return x.Field17019
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17020() []string {
-	if x != nil {
-		return x.Field17020
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17021() []string {
-	if x != nil {
-		return x.Field17021
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17022() []string {
-	if x != nil {
-		return x.Field17022
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17023() []*Message0 {
-	if x != nil {
-		return x.Field17023
-	}
-	return nil
-}
-
-func (x *Message16945) GetField17024() []string {
-	if x != nil {
-		return x.Field17024
-	}
-	return nil
-}
-
-type Message34791_Message34792 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field34808 *string `protobuf:"bytes,3,req,name=field34808" json:"field34808,omitempty"`
-	Field34809 *string `protobuf:"bytes,4,opt,name=field34809" json:"field34809,omitempty"`
-}
-
-func (x *Message34791_Message34792) Reset() {
-	*x = Message34791_Message34792{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[40]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message34791_Message34792) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message34791_Message34792) ProtoMessage() {}
-
-func (x *Message34791_Message34792) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[40]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message34791_Message34792.ProtoReflect.Descriptor instead.
-func (*Message34791_Message34792) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{2, 0}
-}
-
-func (x *Message34791_Message34792) GetField34808() string {
-	if x != nil && x.Field34808 != nil {
-		return *x.Field34808
-	}
-	return ""
-}
-
-func (x *Message34791_Message34792) GetField34809() string {
-	if x != nil && x.Field34809 != nil {
-		return *x.Field34809
-	}
-	return ""
-}
-
-type Message36876_Message36877 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field37044 *string `protobuf:"bytes,112,req,name=field37044" json:"field37044,omitempty"`
-	Field37045 *int32  `protobuf:"varint,113,opt,name=field37045" json:"field37045,omitempty"`
-	Field37046 []byte  `protobuf:"bytes,114,opt,name=field37046" json:"field37046,omitempty"`
-	Field37047 *int32  `protobuf:"varint,115,opt,name=field37047" json:"field37047,omitempty"`
-	Field37048 *int32  `protobuf:"varint,157,opt,name=field37048" json:"field37048,omitempty"`
-}
-
-func (x *Message36876_Message36877) Reset() {
-	*x = Message36876_Message36877{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[41]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message36876_Message36877) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message36876_Message36877) ProtoMessage() {}
-
-func (x *Message36876_Message36877) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[41]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message36876_Message36877.ProtoReflect.Descriptor instead.
-func (*Message36876_Message36877) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{8, 0}
-}
-
-func (x *Message36876_Message36877) GetField37044() string {
-	if x != nil && x.Field37044 != nil {
-		return *x.Field37044
-	}
-	return ""
-}
-
-func (x *Message36876_Message36877) GetField37045() int32 {
-	if x != nil && x.Field37045 != nil {
-		return *x.Field37045
-	}
-	return 0
-}
-
-func (x *Message36876_Message36877) GetField37046() []byte {
-	if x != nil {
-		return x.Field37046
-	}
-	return nil
-}
-
-func (x *Message36876_Message36877) GetField37047() int32 {
-	if x != nil && x.Field37047 != nil {
-		return *x.Field37047
-	}
-	return 0
-}
-
-func (x *Message36876_Message36877) GetField37048() int32 {
-	if x != nil && x.Field37048 != nil {
-		return *x.Field37048
-	}
-	return 0
-}
-
-type Message36876_Message36878 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message36876_Message36878) Reset() {
-	*x = Message36876_Message36878{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[42]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message36876_Message36878) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message36876_Message36878) ProtoMessage() {}
-
-func (x *Message36876_Message36878) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[42]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message36876_Message36878.ProtoReflect.Descriptor instead.
-func (*Message36876_Message36878) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{8, 1}
-}
-
-type Message36876_Message36879 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field37050 *string `protobuf:"bytes,56,req,name=field37050" json:"field37050,omitempty"`
-	Field37051 *int32  `protobuf:"varint,69,opt,name=field37051" json:"field37051,omitempty"`
-}
-
-func (x *Message36876_Message36879) Reset() {
-	*x = Message36876_Message36879{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[43]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message36876_Message36879) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message36876_Message36879) ProtoMessage() {}
-
-func (x *Message36876_Message36879) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[43]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message36876_Message36879.ProtoReflect.Descriptor instead.
-func (*Message36876_Message36879) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{8, 2}
-}
-
-func (x *Message36876_Message36879) GetField37050() string {
-	if x != nil && x.Field37050 != nil {
-		return *x.Field37050
-	}
-	return ""
-}
-
-func (x *Message36876_Message36879) GetField37051() int32 {
-	if x != nil && x.Field37051 != nil {
-		return *x.Field37051
-	}
-	return 0
-}
-
-type Message36876_Message36880 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message36876_Message36880) Reset() {
-	*x = Message36876_Message36880{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[44]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message36876_Message36880) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message36876_Message36880) ProtoMessage() {}
-
-func (x *Message36876_Message36880) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[44]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message36876_Message36880.ProtoReflect.Descriptor instead.
-func (*Message36876_Message36880) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{8, 3}
-}
-
-type Message36876_Message36881 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message36876_Message36881) Reset() {
-	*x = Message36876_Message36881{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[45]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message36876_Message36881) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message36876_Message36881) ProtoMessage() {}
-
-func (x *Message36876_Message36881) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[45]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message36876_Message36881.ProtoReflect.Descriptor instead.
-func (*Message36876_Message36881) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{8, 4}
-}
-
-type Message36876_Message36882 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message36876_Message36882) Reset() {
-	*x = Message36876_Message36882{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[46]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message36876_Message36882) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message36876_Message36882) ProtoMessage() {}
-
-func (x *Message36876_Message36882) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[46]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message36876_Message36882.ProtoReflect.Descriptor instead.
-func (*Message36876_Message36882) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{8, 5}
-}
-
-type Message36876_Message36883 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message36876_Message36883) Reset() {
-	*x = Message36876_Message36883{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[47]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message36876_Message36883) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message36876_Message36883) ProtoMessage() {}
-
-func (x *Message36876_Message36883) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[47]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message36876_Message36883.ProtoReflect.Descriptor instead.
-func (*Message36876_Message36883) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{8, 6}
-}
-
-type Message36876_Message36884 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message36876_Message36884) Reset() {
-	*x = Message36876_Message36884{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[48]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message36876_Message36884) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message36876_Message36884) ProtoMessage() {}
-
-func (x *Message36876_Message36884) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[48]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message36876_Message36884.ProtoReflect.Descriptor instead.
-func (*Message36876_Message36884) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{8, 7}
-}
-
-type Message36876_Message36885 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message36876_Message36885) Reset() {
-	*x = Message36876_Message36885{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[49]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message36876_Message36885) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message36876_Message36885) ProtoMessage() {}
-
-func (x *Message36876_Message36885) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[49]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message36876_Message36885.ProtoReflect.Descriptor instead.
-func (*Message36876_Message36885) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{8, 8}
-}
-
-type Message36876_Message36886 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message36876_Message36886) Reset() {
-	*x = Message36876_Message36886{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[50]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message36876_Message36886) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message36876_Message36886) ProtoMessage() {}
-
-func (x *Message36876_Message36886) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[50]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message36876_Message36886.ProtoReflect.Descriptor instead.
-func (*Message36876_Message36886) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{8, 9}
-}
-
-type Message36876_Message36887 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message36876_Message36887) Reset() {
-	*x = Message36876_Message36887{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[51]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message36876_Message36887) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message36876_Message36887) ProtoMessage() {}
-
-func (x *Message36876_Message36887) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[51]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message36876_Message36887.ProtoReflect.Descriptor instead.
-func (*Message36876_Message36887) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{8, 10}
-}
-
-type Message36876_Message36888 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field37089 *uint64  `protobuf:"varint,75,opt,name=field37089" json:"field37089,omitempty"`
-	Field37090 *bool    `protobuf:"varint,76,opt,name=field37090" json:"field37090,omitempty"`
-	Field37091 *uint64  `protobuf:"varint,165,opt,name=field37091" json:"field37091,omitempty"`
-	Field37092 *float64 `protobuf:"fixed64,166,opt,name=field37092" json:"field37092,omitempty"`
-	Field37093 *uint64  `protobuf:"varint,109,opt,name=field37093" json:"field37093,omitempty"`
-	Field37094 []byte   `protobuf:"bytes,122,opt,name=field37094" json:"field37094,omitempty"`
-}
-
-func (x *Message36876_Message36888) Reset() {
-	*x = Message36876_Message36888{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[52]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message36876_Message36888) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message36876_Message36888) ProtoMessage() {}
-
-func (x *Message36876_Message36888) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[52]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message36876_Message36888.ProtoReflect.Descriptor instead.
-func (*Message36876_Message36888) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{8, 11}
-}
-
-func (x *Message36876_Message36888) GetField37089() uint64 {
-	if x != nil && x.Field37089 != nil {
-		return *x.Field37089
-	}
-	return 0
-}
-
-func (x *Message36876_Message36888) GetField37090() bool {
-	if x != nil && x.Field37090 != nil {
-		return *x.Field37090
-	}
-	return false
-}
-
-func (x *Message36876_Message36888) GetField37091() uint64 {
-	if x != nil && x.Field37091 != nil {
-		return *x.Field37091
-	}
-	return 0
-}
-
-func (x *Message36876_Message36888) GetField37092() float64 {
-	if x != nil && x.Field37092 != nil {
-		return *x.Field37092
-	}
-	return 0
-}
-
-func (x *Message36876_Message36888) GetField37093() uint64 {
-	if x != nil && x.Field37093 != nil {
-		return *x.Field37093
-	}
-	return 0
-}
-
-func (x *Message36876_Message36888) GetField37094() []byte {
-	if x != nil {
-		return x.Field37094
-	}
-	return nil
-}
-
-type Message36876_Message36889 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field37095 *int64              `protobuf:"varint,117,opt,name=field37095" json:"field37095,omitempty"`
-	Field37096 *string             `protobuf:"bytes,145,opt,name=field37096" json:"field37096,omitempty"`
-	Field37097 *int32              `protobuf:"varint,123,opt,name=field37097" json:"field37097,omitempty"`
-	Field37098 *bool               `protobuf:"varint,163,opt,name=field37098" json:"field37098,omitempty"`
-	Field37099 *int32              `protobuf:"varint,164,opt,name=field37099" json:"field37099,omitempty"`
-	Field37100 *int32              `protobuf:"varint,149,opt,name=field37100" json:"field37100,omitempty"`
-	Field37101 *UnusedEmptyMessage `protobuf:"bytes,129,opt,name=field37101" json:"field37101,omitempty"`
-	Field37102 *Message13174       `protobuf:"bytes,124,opt,name=field37102" json:"field37102,omitempty"`
-	Field37103 *Message13169       `protobuf:"bytes,128,opt,name=field37103" json:"field37103,omitempty"`
-	Field37104 *uint64             `protobuf:"varint,132,opt,name=field37104" json:"field37104,omitempty"`
-	Field37105 []Enum36890         `protobuf:"varint,131,rep,name=field37105,enum=benchmarks.google_message3.Enum36890" json:"field37105,omitempty"`
-	Field37106 *bool               `protobuf:"varint,134,opt,name=field37106" json:"field37106,omitempty"`
-	Field37107 *bool               `protobuf:"varint,140,opt,name=field37107" json:"field37107,omitempty"`
-	Field37108 *UnusedEmptyMessage `protobuf:"bytes,135,opt,name=field37108" json:"field37108,omitempty"`
-	Field37109 *float32            `protobuf:"fixed32,136,opt,name=field37109" json:"field37109,omitempty"`
-	Field37110 *float32            `protobuf:"fixed32,156,opt,name=field37110" json:"field37110,omitempty"`
-	Field37111 *bool               `protobuf:"varint,142,opt,name=field37111" json:"field37111,omitempty"`
-	Field37112 *int64              `protobuf:"varint,167,opt,name=field37112" json:"field37112,omitempty"`
-	Field37113 *UnusedEmptyMessage `protobuf:"bytes,146,opt,name=field37113" json:"field37113,omitempty"`
-	Field37114 *bool               `protobuf:"varint,148,opt,name=field37114" json:"field37114,omitempty"`
-	Field37115 *UnusedEmptyMessage `protobuf:"bytes,154,opt,name=field37115" json:"field37115,omitempty"`
-	Field37116 *UnusedEnum         `protobuf:"varint,158,opt,name=field37116,enum=benchmarks.google_message3.UnusedEnum" json:"field37116,omitempty"`
-	Field37117 []UnusedEnum        `protobuf:"varint,159,rep,name=field37117,enum=benchmarks.google_message3.UnusedEnum" json:"field37117,omitempty"`
-	Field37118 *int32              `protobuf:"varint,160,opt,name=field37118" json:"field37118,omitempty"`
-	Field37119 []string            `protobuf:"bytes,161,rep,name=field37119" json:"field37119,omitempty"`
-}
-
-func (x *Message36876_Message36889) Reset() {
-	*x = Message36876_Message36889{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[53]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message36876_Message36889) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message36876_Message36889) ProtoMessage() {}
-
-func (x *Message36876_Message36889) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[53]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message36876_Message36889.ProtoReflect.Descriptor instead.
-func (*Message36876_Message36889) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{8, 12}
-}
-
-func (x *Message36876_Message36889) GetField37095() int64 {
-	if x != nil && x.Field37095 != nil {
-		return *x.Field37095
-	}
-	return 0
-}
-
-func (x *Message36876_Message36889) GetField37096() string {
-	if x != nil && x.Field37096 != nil {
-		return *x.Field37096
-	}
-	return ""
-}
-
-func (x *Message36876_Message36889) GetField37097() int32 {
-	if x != nil && x.Field37097 != nil {
-		return *x.Field37097
-	}
-	return 0
-}
-
-func (x *Message36876_Message36889) GetField37098() bool {
-	if x != nil && x.Field37098 != nil {
-		return *x.Field37098
-	}
-	return false
-}
-
-func (x *Message36876_Message36889) GetField37099() int32 {
-	if x != nil && x.Field37099 != nil {
-		return *x.Field37099
-	}
-	return 0
-}
-
-func (x *Message36876_Message36889) GetField37100() int32 {
-	if x != nil && x.Field37100 != nil {
-		return *x.Field37100
-	}
-	return 0
-}
-
-func (x *Message36876_Message36889) GetField37101() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37101
-	}
-	return nil
-}
-
-func (x *Message36876_Message36889) GetField37102() *Message13174 {
-	if x != nil {
-		return x.Field37102
-	}
-	return nil
-}
-
-func (x *Message36876_Message36889) GetField37103() *Message13169 {
-	if x != nil {
-		return x.Field37103
-	}
-	return nil
-}
-
-func (x *Message36876_Message36889) GetField37104() uint64 {
-	if x != nil && x.Field37104 != nil {
-		return *x.Field37104
-	}
-	return 0
-}
-
-func (x *Message36876_Message36889) GetField37105() []Enum36890 {
-	if x != nil {
-		return x.Field37105
-	}
-	return nil
-}
-
-func (x *Message36876_Message36889) GetField37106() bool {
-	if x != nil && x.Field37106 != nil {
-		return *x.Field37106
-	}
-	return false
-}
-
-func (x *Message36876_Message36889) GetField37107() bool {
-	if x != nil && x.Field37107 != nil {
-		return *x.Field37107
-	}
-	return false
-}
-
-func (x *Message36876_Message36889) GetField37108() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37108
-	}
-	return nil
-}
-
-func (x *Message36876_Message36889) GetField37109() float32 {
-	if x != nil && x.Field37109 != nil {
-		return *x.Field37109
-	}
-	return 0
-}
-
-func (x *Message36876_Message36889) GetField37110() float32 {
-	if x != nil && x.Field37110 != nil {
-		return *x.Field37110
-	}
-	return 0
-}
-
-func (x *Message36876_Message36889) GetField37111() bool {
-	if x != nil && x.Field37111 != nil {
-		return *x.Field37111
-	}
-	return false
-}
-
-func (x *Message36876_Message36889) GetField37112() int64 {
-	if x != nil && x.Field37112 != nil {
-		return *x.Field37112
-	}
-	return 0
-}
-
-func (x *Message36876_Message36889) GetField37113() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37113
-	}
-	return nil
-}
-
-func (x *Message36876_Message36889) GetField37114() bool {
-	if x != nil && x.Field37114 != nil {
-		return *x.Field37114
-	}
-	return false
-}
-
-func (x *Message36876_Message36889) GetField37115() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37115
-	}
-	return nil
-}
-
-func (x *Message36876_Message36889) GetField37116() UnusedEnum {
-	if x != nil && x.Field37116 != nil {
-		return *x.Field37116
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message36876_Message36889) GetField37117() []UnusedEnum {
-	if x != nil {
-		return x.Field37117
-	}
-	return nil
-}
-
-func (x *Message36876_Message36889) GetField37118() int32 {
-	if x != nil && x.Field37118 != nil {
-		return *x.Field37118
-	}
-	return 0
-}
-
-func (x *Message36876_Message36889) GetField37119() []string {
-	if x != nil {
-		return x.Field37119
-	}
-	return nil
-}
-
-type Message36876_Message36910 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message36876_Message36910) Reset() {
-	*x = Message36876_Message36910{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[54]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message36876_Message36910) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message36876_Message36910) ProtoMessage() {}
-
-func (x *Message36876_Message36910) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[54]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message36876_Message36910.ProtoReflect.Descriptor instead.
-func (*Message36876_Message36910) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{8, 13}
-}
-
-type Message36876_Message36911 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field37121 *UnusedEmptyMessage `protobuf:"bytes,127,opt,name=field37121" json:"field37121,omitempty"`
-	Field37122 *Message35538       `protobuf:"bytes,130,opt,name=field37122" json:"field37122,omitempty"`
-	Field37123 *Message35540       `protobuf:"bytes,144,opt,name=field37123" json:"field37123,omitempty"`
-	Field37124 *Message35542       `protobuf:"bytes,150,opt,name=field37124" json:"field37124,omitempty"`
-}
-
-func (x *Message36876_Message36911) Reset() {
-	*x = Message36876_Message36911{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[55]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message36876_Message36911) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message36876_Message36911) ProtoMessage() {}
-
-func (x *Message36876_Message36911) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[55]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message36876_Message36911.ProtoReflect.Descriptor instead.
-func (*Message36876_Message36911) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{8, 14}
-}
-
-func (x *Message36876_Message36911) GetField37121() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37121
-	}
-	return nil
-}
-
-func (x *Message36876_Message36911) GetField37122() *Message35538 {
-	if x != nil {
-		return x.Field37122
-	}
-	return nil
-}
-
-func (x *Message36876_Message36911) GetField37123() *Message35540 {
-	if x != nil {
-		return x.Field37123
-	}
-	return nil
-}
-
-func (x *Message36876_Message36911) GetField37124() *Message35542 {
-	if x != nil {
-		return x.Field37124
-	}
-	return nil
-}
-
-type Message36876_Message36912 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field37125 *Message3901 `protobuf:"bytes,153,opt,name=field37125" json:"field37125,omitempty"`
-	Field37126 *Message3901 `protobuf:"bytes,162,opt,name=field37126" json:"field37126,omitempty"`
-}
-
-func (x *Message36876_Message36912) Reset() {
-	*x = Message36876_Message36912{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[56]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message36876_Message36912) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message36876_Message36912) ProtoMessage() {}
-
-func (x *Message36876_Message36912) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[56]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message36876_Message36912.ProtoReflect.Descriptor instead.
-func (*Message36876_Message36912) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{8, 15}
-}
-
-func (x *Message36876_Message36912) GetField37125() *Message3901 {
-	if x != nil {
-		return x.Field37125
-	}
-	return nil
-}
-
-func (x *Message36876_Message36912) GetField37126() *Message3901 {
-	if x != nil {
-		return x.Field37126
-	}
-	return nil
-}
-
-type Message17783_Message17784 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field18162 *string  `protobuf:"bytes,5,opt,name=field18162" json:"field18162,omitempty"`
-	Field18163 *string  `protobuf:"bytes,6,opt,name=field18163" json:"field18163,omitempty"`
-	Field18164 *string  `protobuf:"bytes,7,opt,name=field18164" json:"field18164,omitempty"`
-	Field18165 []string `protobuf:"bytes,8,rep,name=field18165" json:"field18165,omitempty"`
-	Field18166 *string  `protobuf:"bytes,17,opt,name=field18166" json:"field18166,omitempty"`
-	Field18167 *string  `protobuf:"bytes,18,opt,name=field18167" json:"field18167,omitempty"`
-}
-
-func (x *Message17783_Message17784) Reset() {
-	*x = Message17783_Message17784{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[57]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message17783_Message17784) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message17783_Message17784) ProtoMessage() {}
-
-func (x *Message17783_Message17784) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[57]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message17783_Message17784.ProtoReflect.Descriptor instead.
-func (*Message17783_Message17784) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{38, 0}
-}
-
-func (x *Message17783_Message17784) GetField18162() string {
-	if x != nil && x.Field18162 != nil {
-		return *x.Field18162
-	}
-	return ""
-}
-
-func (x *Message17783_Message17784) GetField18163() string {
-	if x != nil && x.Field18163 != nil {
-		return *x.Field18163
-	}
-	return ""
-}
-
-func (x *Message17783_Message17784) GetField18164() string {
-	if x != nil && x.Field18164 != nil {
-		return *x.Field18164
-	}
-	return ""
-}
-
-func (x *Message17783_Message17784) GetField18165() []string {
-	if x != nil {
-		return x.Field18165
-	}
-	return nil
-}
-
-func (x *Message17783_Message17784) GetField18166() string {
-	if x != nil && x.Field18166 != nil {
-		return *x.Field18166
-	}
-	return ""
-}
-
-func (x *Message17783_Message17784) GetField18167() string {
-	if x != nil && x.Field18167 != nil {
-		return *x.Field18167
-	}
-	return ""
-}
-
-type Message17783_Message17785 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field18168 *string       `protobuf:"bytes,10,opt,name=field18168" json:"field18168,omitempty"`
-	Field18169 *string       `protobuf:"bytes,11,opt,name=field18169" json:"field18169,omitempty"`
-	Field18170 *Message17783 `protobuf:"bytes,12,opt,name=field18170" json:"field18170,omitempty"`
-	Field18171 *string       `protobuf:"bytes,13,opt,name=field18171" json:"field18171,omitempty"`
-	Field18172 *string       `protobuf:"bytes,14,opt,name=field18172" json:"field18172,omitempty"`
-	Field18173 []string      `protobuf:"bytes,15,rep,name=field18173" json:"field18173,omitempty"`
-}
-
-func (x *Message17783_Message17785) Reset() {
-	*x = Message17783_Message17785{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[58]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message17783_Message17785) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message17783_Message17785) ProtoMessage() {}
-
-func (x *Message17783_Message17785) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[58]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message17783_Message17785.ProtoReflect.Descriptor instead.
-func (*Message17783_Message17785) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP(), []int{38, 1}
-}
-
-func (x *Message17783_Message17785) GetField18168() string {
-	if x != nil && x.Field18168 != nil {
-		return *x.Field18168
-	}
-	return ""
-}
-
-func (x *Message17783_Message17785) GetField18169() string {
-	if x != nil && x.Field18169 != nil {
-		return *x.Field18169
-	}
-	return ""
-}
-
-func (x *Message17783_Message17785) GetField18170() *Message17783 {
-	if x != nil {
-		return x.Field18170
-	}
-	return nil
-}
-
-func (x *Message17783_Message17785) GetField18171() string {
-	if x != nil && x.Field18171 != nil {
-		return *x.Field18171
-	}
-	return ""
-}
-
-func (x *Message17783_Message17785) GetField18172() string {
-	if x != nil && x.Field18172 != nil {
-		return *x.Field18172
-	}
-	return ""
-}
-
-func (x *Message17783_Message17785) GetField18173() []string {
-	if x != nil {
-		return x.Field18173
-	}
-	return nil
-}
-
-var file_datasets_google_message3_benchmark_message3_1_proto_extTypes = []protoimpl.ExtensionInfo{
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message34390)(nil),
-		Field:         92144610,
-		Name:          "benchmarks.google_message3.Message34390.field34453",
-		Tag:           "bytes,92144610,opt,name=field34453",
-		Filename:      "datasets/google_message3/benchmark_message3_1.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message34624)(nil),
-		Field:         18178548,
-		Name:          "benchmarks.google_message3.Message34624.field34685",
-		Tag:           "bytes,18178548,opt,name=field34685",
-		Filename:      "datasets/google_message3/benchmark_message3_1.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message34791)(nil),
-		Field:         6330340,
-		Name:          "benchmarks.google_message3.Message34791.field34807",
-		Tag:           "bytes,6330340,opt,name=field34807",
-		Filename:      "datasets/google_message3/benchmark_message3_1.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message35483)(nil),
-		Field:         7913554,
-		Name:          "benchmarks.google_message3.Message35483.field35505",
-		Tag:           "bytes,7913554,opt,name=field35505",
-		Filename:      "datasets/google_message3/benchmark_message3_1.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message35807)(nil),
-		Field:         3803299,
-		Name:          "benchmarks.google_message3.Message35807.field35818",
-		Tag:           "bytes,3803299,opt,name=field35818",
-		Filename:      "datasets/google_message3/benchmark_message3_1.proto",
-	},
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message16945)(nil),
-		Field:         22068132,
-		Name:          "benchmarks.google_message3.Message16945.field17025",
-		Tag:           "bytes,22068132,opt,name=field17025",
-		Filename:      "datasets/google_message3/benchmark_message3_1.proto",
-	},
-}
-
-// Extension fields to Message0.
-var (
-	// optional benchmarks.google_message3.Message34390 field34453 = 92144610;
-	E_Message34390_Field34453 = &file_datasets_google_message3_benchmark_message3_1_proto_extTypes[0]
-	// optional benchmarks.google_message3.Message34624 field34685 = 18178548;
-	E_Message34624_Field34685 = &file_datasets_google_message3_benchmark_message3_1_proto_extTypes[1]
-	// optional benchmarks.google_message3.Message34791 field34807 = 6330340;
-	E_Message34791_Field34807 = &file_datasets_google_message3_benchmark_message3_1_proto_extTypes[2]
-	// optional benchmarks.google_message3.Message35483 field35505 = 7913554;
-	E_Message35483_Field35505 = &file_datasets_google_message3_benchmark_message3_1_proto_extTypes[3]
-	// optional benchmarks.google_message3.Message35807 field35818 = 3803299;
-	E_Message35807_Field35818 = &file_datasets_google_message3_benchmark_message3_1_proto_extTypes[4]
-	// optional benchmarks.google_message3.Message16945 field17025 = 22068132;
-	E_Message16945_Field17025 = &file_datasets_google_message3_benchmark_message3_1_proto_extTypes[5]
-)
-
-var File_datasets_google_message3_benchmark_message3_1_proto protoreflect.FileDescriptor
-
-var file_datasets_google_message3_benchmark_message3_1_proto_rawDesc = []byte{
-	0x0a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x31, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x32,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73,
-	0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x5f, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x64, 0x61, 0x74,
-	0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x35, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x37, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x5f, 0x38, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcb, 0x01, 0x0a, 0x0c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x34, 0x33, 0x39, 0x30, 0x12, 0x48, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34, 0x35, 0x32, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x34, 0x33, 0x38, 0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x34, 0x34, 0x35, 0x32, 0x32, 0x71, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34,
-	0x34, 0x35, 0x33, 0x12, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x18, 0xe2, 0x87, 0xf8, 0x2b, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x34, 0x33, 0x39, 0x30, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x34, 0x34, 0x35, 0x33, 0x22, 0x95, 0x02, 0x0a, 0x0c, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x34, 0x36, 0x32, 0x34, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x34, 0x36, 0x38, 0x33, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x34, 0x36, 0x32, 0x31, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34,
-	0x36, 0x38, 0x33, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x38,
-	0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x34, 0x36, 0x32,
-	0x31, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x38, 0x34, 0x32, 0x71, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x38, 0x35, 0x12, 0x24, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x30, 0x18, 0xf4, 0xc3, 0xd5, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x34, 0x36, 0x32, 0x34, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x38, 0x35,
-	0x22, 0xd0, 0x05, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x34, 0x37, 0x39,
-	0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x37, 0x39, 0x33, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x37, 0x39,
-	0x33, 0x12, 0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x34, 0x37, 0x39,
-	0x32, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x34, 0x37, 0x39,
-	0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x34, 0x37, 0x39, 0x32, 0x52, 0x0c,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x34, 0x37, 0x39, 0x32, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x37, 0x39, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x37, 0x39, 0x35, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x37, 0x39, 0x36, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x37, 0x39, 0x36, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x37, 0x39, 0x37, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x37, 0x39, 0x37, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x37, 0x39, 0x38, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x37, 0x39, 0x38, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x37, 0x39, 0x39, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x37, 0x39, 0x39, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x38, 0x30, 0x30, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x38, 0x30, 0x30, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x38, 0x30, 0x31, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x38, 0x30, 0x31, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x38, 0x30, 0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x02,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x38, 0x30, 0x32, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x38, 0x30, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x38, 0x30, 0x33, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x38, 0x30, 0x34, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x38, 0x30, 0x34, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x38, 0x30, 0x35, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x38, 0x30, 0x35, 0x12, 0x22, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x38, 0x30, 0x36, 0x18, 0x11, 0x20, 0x03, 0x28, 0x06,
-	0x42, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x38, 0x30, 0x36,
-	0x1a, 0x4e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x34, 0x37, 0x39, 0x32,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x38, 0x30, 0x38, 0x18, 0x03,
-	0x20, 0x02, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x38, 0x30, 0x38,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x38, 0x30, 0x39, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x38, 0x30, 0x39,
-	0x32, 0x71, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x38, 0x30, 0x37, 0x12, 0x24,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x30, 0x18, 0xe4, 0xaf, 0x82, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x34, 0x37, 0x39, 0x31, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34,
-	0x38, 0x30, 0x37, 0x22, 0x9b, 0x03, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x35, 0x34, 0x38, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34,
-	0x39, 0x39, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x34, 0x39, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35,
-	0x30, 0x30, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x35, 0x30, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35,
-	0x30, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x35, 0x30, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35,
-	0x30, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x35, 0x30, 0x32, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35,
-	0x30, 0x33, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x34,
-	0x37, 0x36, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x30, 0x33, 0x12, 0x4e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x30, 0x34, 0x18, 0x06, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x30, 0x34, 0x32, 0x71,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x30, 0x35, 0x12, 0x24, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x30, 0x18, 0xd2, 0x80, 0xe3, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x35, 0x34, 0x38, 0x33, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x30,
-	0x35, 0x22, 0x81, 0x03, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x38,
-	0x30, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x38, 0x31, 0x30,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x38,
-	0x31, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x38, 0x31, 0x31,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x38,
-	0x31, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x38, 0x31, 0x32,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x38,
-	0x31, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x38, 0x31, 0x33,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x38,
-	0x31, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x38, 0x31, 0x34,
-	0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x38,
-	0x31, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x38, 0x31, 0x35,
-	0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x38,
-	0x31, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x38, 0x31, 0x36,
-	0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x38,
-	0x31, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x38, 0x31, 0x37,
-	0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x38,
-	0x31, 0x37, 0x32, 0x71, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x38, 0x31, 0x38,
-	0x12, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x18, 0xa3, 0x91, 0xe8, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x38, 0x30, 0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x35, 0x38, 0x31, 0x38, 0x22, 0x4e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x37, 0x34, 0x38, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37,
-	0x35, 0x30, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x37, 0x35, 0x30, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37,
-	0x35, 0x30, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x37, 0x35, 0x30, 0x32, 0x22, 0xae, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x31, 0x33, 0x30, 0x36, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x33, 0x30, 0x37, 0x35, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x33, 0x30, 0x37, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x33, 0x30, 0x37, 0x36, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x33, 0x30, 0x37, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x33, 0x30, 0x37, 0x37, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x33, 0x30, 0x37, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x33, 0x30, 0x37, 0x38, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x33, 0x30, 0x37, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x33, 0x30, 0x37, 0x39, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x33, 0x30, 0x37, 0x39, 0x22, 0x50, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x39, 0x35, 0x32, 0x12, 0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x36, 0x33,
-	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x39, 0x34, 0x39, 0x52, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x36, 0x33, 0x22, 0xd3, 0x34, 0x0a, 0x0c, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x37, 0x36, 0x12, 0x47, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x36, 0x39, 0x38, 0x30, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x32, 0x33, 0x35, 0x36, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39,
-	0x38, 0x30, 0x12, 0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38,
-	0x37, 0x37, 0x18, 0x6f, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38,
-	0x37, 0x36, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x37, 0x37, 0x52,
-	0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x37, 0x37, 0x12, 0x5a, 0x0a,
-	0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x37, 0x38, 0x18, 0xa8, 0x01,
-	0x20, 0x03, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x37, 0x36, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x37, 0x38, 0x52, 0x0c, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x37, 0x38, 0x12, 0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x37, 0x39, 0x18, 0x37, 0x20, 0x03, 0x28, 0x0a, 0x32,
-	0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x37, 0x36, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x36, 0x38, 0x37, 0x39, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x36, 0x38, 0x37, 0x39, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39,
-	0x38, 0x34, 0x18, 0x4e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74,
-	0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x36, 0x39, 0x38, 0x34, 0x12, 0x5a, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x36, 0x38, 0x38, 0x30, 0x18, 0x89, 0x01, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x36, 0x38, 0x37, 0x36, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38,
-	0x38, 0x30, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x38, 0x30,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x38, 0x36, 0x18, 0x3b,
-	0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x38, 0x36,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x38, 0x37, 0x18, 0x79,
-	0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x38, 0x37,
-	0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x38, 0x38, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x38, 0x38,
-	0x12, 0x47, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x38, 0x39, 0x18, 0x76,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x30, 0x32, 0x39, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x38, 0x39, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x36, 0x39, 0x39, 0x30, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x35, 0x35, 0x37, 0x33, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36,
-	0x39, 0x39, 0x30, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x39,
-	0x31, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36,
-	0x39, 0x39, 0x31, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x39,
-	0x32, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36,
-	0x39, 0x39, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x39,
-	0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36,
-	0x39, 0x39, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x39,
-	0x34, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36,
-	0x39, 0x39, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x39,
-	0x35, 0x18, 0x33, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36,
-	0x39, 0x39, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x39,
-	0x36, 0x18, 0x39, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36,
-	0x39, 0x39, 0x36, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x39,
-	0x37, 0x18, 0x64, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36,
-	0x39, 0x39, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x39,
-	0x38, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36,
-	0x39, 0x39, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x39,
-	0x39, 0x18, 0x30, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36,
-	0x39, 0x39, 0x39, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x30,
-	0x30, 0x18, 0x44, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37,
-	0x30, 0x30, 0x30, 0x12, 0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36,
-	0x38, 0x38, 0x31, 0x18, 0x17, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36,
-	0x38, 0x37, 0x36, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x38, 0x31,
-	0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x38, 0x31, 0x12, 0x47,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x30, 0x32, 0x18, 0x7d, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x31, 0x34, 0x34, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x30, 0x30, 0x32, 0x12, 0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x36, 0x38, 0x38, 0x32, 0x18, 0x23, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x35, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x36, 0x38, 0x37, 0x36, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x36, 0x38, 0x38, 0x32, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38,
-	0x38, 0x32, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x30, 0x34,
-	0x18, 0x31, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30,
-	0x30, 0x34, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x30, 0x35,
-	0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x38, 0x39, 0x32, 0x31,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x30, 0x35, 0x12, 0x48, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x30, 0x36, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x35, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x37, 0x30, 0x30, 0x36, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x37, 0x30, 0x30, 0x37, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x38, 0x38, 0x33, 0x31, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x30, 0x37,
-	0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x30, 0x38, 0x18, 0x3a,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x30, 0x38,
-	0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x30, 0x39, 0x18, 0x0a,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x38, 0x32, 0x38, 0x33, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x30, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x31, 0x30, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x31, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x31, 0x31, 0x18, 0x67, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x31, 0x31, 0x12, 0x44, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x31, 0x32, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x31, 0x32,
-	0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x31, 0x33, 0x18, 0x8f,
-	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x30, 0x31, 0x33, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x37, 0x30, 0x31, 0x34, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45,
-	0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x30, 0x31, 0x34, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x37, 0x30, 0x31, 0x35, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x36, 0x38, 0x36, 0x39, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x31,
-	0x35, 0x12, 0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x38,
-	0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x37,
-	0x36, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x38, 0x33, 0x52, 0x0c,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x38, 0x33, 0x12, 0x59, 0x0a, 0x0c,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x38, 0x34, 0x18, 0x10, 0x20, 0x03,
-	0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x37, 0x36, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x38, 0x34, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x36, 0x38, 0x38, 0x34, 0x12, 0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x36, 0x38, 0x38, 0x35, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x35, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x36, 0x38, 0x37, 0x36, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x36, 0x38, 0x38, 0x35, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38,
-	0x38, 0x35, 0x12, 0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38,
-	0x38, 0x36, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38,
-	0x37, 0x36, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x38, 0x36, 0x52,
-	0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x38, 0x36, 0x12, 0x46, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x32, 0x30, 0x18, 0x47, 0x20, 0x03, 0x28,
-	0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x37, 0x30, 0x32, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37,
-	0x30, 0x32, 0x31, 0x18, 0x46, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x37, 0x30, 0x32, 0x31, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37,
-	0x30, 0x32, 0x32, 0x18, 0x42, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70,
-	0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x37, 0x30, 0x32, 0x32, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37,
-	0x30, 0x32, 0x33, 0x18, 0x43, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33,
-	0x30, 0x39, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x32, 0x33, 0x12,
-	0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x38, 0x37, 0x18,
-	0x3e, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x37, 0x36, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x38, 0x37, 0x52, 0x0c, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x38, 0x37, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x32, 0x35, 0x18, 0x32, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x30, 0x31, 0x35, 0x35, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x37, 0x30, 0x32, 0x35, 0x12, 0x49, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30,
-	0x32, 0x36, 0x18, 0x97, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31,
-	0x38, 0x37, 0x34, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x32, 0x36, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x32, 0x37, 0x18, 0x0c, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x32, 0x37, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x32, 0x38, 0x18, 0x48, 0x20,
-	0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x32, 0x38, 0x12,
-	0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x32, 0x39, 0x18, 0x49, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x32, 0x39, 0x12,
-	0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x33, 0x30, 0x18, 0x6c, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x35, 0x34, 0x36, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x33, 0x30, 0x12, 0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x38, 0x38, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x0a, 0x32,
-	0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x37, 0x36, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x36, 0x38, 0x38, 0x38, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x36, 0x38, 0x38, 0x38, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30,
-	0x33, 0x32, 0x18, 0x68, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x39, 0x32,
-	0x35, 0x35, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x33, 0x32, 0x12, 0x48,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x33, 0x33, 0x18, 0x69, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x33, 0x39, 0x36, 0x38, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x33, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x37, 0x30, 0x33, 0x34, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x33, 0x34, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x37, 0x30, 0x33, 0x35, 0x18, 0x6b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x33, 0x35, 0x12, 0x47, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x37, 0x30, 0x33, 0x36, 0x18, 0x6e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x36, 0x36, 0x34, 0x34, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x33,
-	0x36, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x33, 0x37, 0x18,
-	0x85, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30,
-	0x33, 0x37, 0x12, 0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38,
-	0x38, 0x39, 0x18, 0x74, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38,
-	0x37, 0x36, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x38, 0x39, 0x52,
-	0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x38, 0x39, 0x12, 0x59, 0x0a,
-	0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x39, 0x31, 0x30, 0x18, 0x77, 0x20,
-	0x03, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x37, 0x36, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x39, 0x31, 0x30, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x36, 0x39, 0x31, 0x30, 0x12, 0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x36, 0x39, 0x31, 0x31, 0x18, 0x7e, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x35,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x37, 0x36, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x36, 0x39, 0x31, 0x31, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36,
-	0x39, 0x31, 0x31, 0x12, 0x5a, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36,
-	0x39, 0x31, 0x32, 0x18, 0x98, 0x01, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x36, 0x38, 0x37, 0x36, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x39, 0x31,
-	0x32, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x39, 0x31, 0x32, 0x12,
-	0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x34, 0x32, 0x18, 0x9b, 0x01,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x34, 0x32,
-	0x1a, 0xaf, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x37,
-	0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x34, 0x34, 0x18,
-	0x70, 0x20, 0x02, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x34,
-	0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x34, 0x35, 0x18,
-	0x71, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x34,
-	0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x34, 0x36, 0x18,
-	0x72, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x34,
-	0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x34, 0x37, 0x18,
-	0x73, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x34,
-	0x37, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x34, 0x38, 0x18,
-	0x9d, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30,
-	0x34, 0x38, 0x1a, 0x0e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38,
-	0x37, 0x38, 0x1a, 0x4e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38,
-	0x37, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x35, 0x30,
-	0x18, 0x38, 0x20, 0x02, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30,
-	0x35, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x35, 0x31,
-	0x18, 0x45, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30,
-	0x35, 0x31, 0x1a, 0x0e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38,
-	0x38, 0x30, 0x1a, 0x0e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38,
-	0x38, 0x31, 0x1a, 0x0e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38,
-	0x38, 0x32, 0x1a, 0x0e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38,
-	0x38, 0x33, 0x1a, 0x0e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38,
-	0x38, 0x34, 0x1a, 0x0e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38,
-	0x38, 0x35, 0x1a, 0x0e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38,
-	0x38, 0x36, 0x1a, 0x0e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38,
-	0x38, 0x37, 0x1a, 0xd0, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36,
-	0x38, 0x38, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x38,
-	0x39, 0x18, 0x4b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37,
-	0x30, 0x38, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x39,
-	0x30, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37,
-	0x30, 0x39, 0x30, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x39,
-	0x31, 0x18, 0xa5, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x37, 0x30, 0x39, 0x31, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30,
-	0x39, 0x32, 0x18, 0xa6, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x37, 0x30, 0x39, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37,
-	0x30, 0x39, 0x33, 0x18, 0x6d, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x37, 0x30, 0x39, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37,
-	0x30, 0x39, 0x34, 0x18, 0x7a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x37, 0x30, 0x39, 0x34, 0x1a, 0xcf, 0x09, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x36, 0x38, 0x38, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x37, 0x30, 0x39, 0x35, 0x18, 0x75, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x37, 0x30, 0x39, 0x35, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x37, 0x30, 0x39, 0x36, 0x18, 0x91, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x30, 0x39, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x37, 0x30, 0x39, 0x37, 0x18, 0x7b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x30, 0x39, 0x37, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x37, 0x30, 0x39, 0x38, 0x18, 0xa3, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x39, 0x38, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x37, 0x30, 0x39, 0x39, 0x18, 0xa4, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x30, 0x39, 0x39, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x31, 0x30, 0x30, 0x18, 0x95, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x30, 0x30, 0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x30, 0x31, 0x18, 0x81, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x30, 0x31, 0x12, 0x48, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x30, 0x32, 0x18, 0x7c, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x31, 0x37, 0x34, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x37, 0x31, 0x30, 0x32, 0x12, 0x49, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37,
-	0x31, 0x30, 0x33, 0x18, 0x80, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x33, 0x31, 0x36, 0x39, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x30, 0x33,
-	0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x30, 0x34, 0x18, 0x84,
-	0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x30,
-	0x34, 0x12, 0x46, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x30, 0x35, 0x18,
-	0x83, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x36, 0x38, 0x39, 0x30, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x30, 0x35, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x31, 0x30, 0x36, 0x18, 0x86, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x30, 0x36, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x30, 0x37, 0x18, 0x8c, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x30, 0x37, 0x12, 0x4f, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x30, 0x38, 0x18, 0x87, 0x01, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e,
-	0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x30, 0x38, 0x12, 0x1f, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x30, 0x39, 0x18, 0x88, 0x01, 0x20, 0x01, 0x28,
-	0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x30, 0x39, 0x12, 0x1f, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x31, 0x30, 0x18, 0x9c, 0x01, 0x20, 0x01,
-	0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x31, 0x30, 0x12, 0x1f,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x31, 0x31, 0x18, 0x8e, 0x01, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x31, 0x31, 0x12,
-	0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x31, 0x32, 0x18, 0xa7, 0x01,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x31, 0x32,
-	0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x31, 0x33, 0x18, 0x92,
-	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x31,
-	0x33, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x31, 0x34, 0x18,
-	0x94, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31,
-	0x31, 0x34, 0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x31, 0x35,
-	0x18, 0x9a, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37,
-	0x31, 0x31, 0x35, 0x12, 0x47, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x31,
-	0x36, 0x18, 0x9e, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x31, 0x36, 0x12, 0x47, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x31, 0x37, 0x18, 0x9f, 0x01, 0x20, 0x03, 0x28,
-	0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x37, 0x31, 0x31, 0x37, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37,
-	0x31, 0x31, 0x38, 0x18, 0xa0, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x37, 0x31, 0x31, 0x38, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x37, 0x31, 0x31, 0x39, 0x18, 0xa1, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x31, 0x31, 0x39, 0x1a, 0x0e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x36, 0x39, 0x31, 0x30, 0x1a, 0xbf, 0x02, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x36, 0x39, 0x31, 0x31, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x37, 0x31, 0x32, 0x31, 0x18, 0x7f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x32, 0x31, 0x12, 0x49, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x37, 0x31, 0x32, 0x32, 0x18, 0x82, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x35, 0x35, 0x33, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37,
-	0x31, 0x32, 0x32, 0x12, 0x49, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x32,
-	0x33, 0x18, 0x90, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x35,
-	0x34, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x32, 0x33, 0x12, 0x49,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x32, 0x34, 0x18, 0x96, 0x01, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x35, 0x34, 0x32, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x32, 0x34, 0x1a, 0xa2, 0x01, 0x0a, 0x0c, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x39, 0x31, 0x32, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x32, 0x35, 0x18, 0x99, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x39, 0x30, 0x31, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x37, 0x31, 0x32, 0x35, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31,
-	0x32, 0x36, 0x18, 0xa2, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x39,
-	0x30, 0x31, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x31, 0x32, 0x36, 0x22, 0x0d,
-	0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x32, 0x38, 0x22, 0x0d, 0x0a,
-	0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x38, 0x35, 0x30, 0x22, 0x96, 0x0c, 0x0a,
-	0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x38, 0x36, 0x33, 0x12, 0x42, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x33, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
-	0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75,
-	0x6d, 0x36, 0x38, 0x35, 0x38, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x33, 0x31,
-	0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x33, 0x32, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x36, 0x38, 0x35, 0x38, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x39, 0x33, 0x32, 0x12, 0x44, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x33,
-	0x33, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x33, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x39, 0x33, 0x34, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x33, 0x34, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x39, 0x33, 0x35, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x36, 0x37, 0x37, 0x33, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x33, 0x35, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x33, 0x36, 0x18, 0x1e, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x33, 0x36, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x33, 0x37, 0x18, 0x25, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x33, 0x37, 0x12, 0x42, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x33, 0x38, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d,
-	0x36, 0x38, 0x31, 0x35, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x33, 0x38, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x33, 0x39, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x33, 0x39, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x34, 0x30, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x34, 0x30, 0x12, 0x42, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x34, 0x31, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d,
-	0x36, 0x38, 0x32, 0x32, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x34, 0x31, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x34, 0x32, 0x18, 0x0a, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x34, 0x32, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x34, 0x33, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x34, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x34, 0x34, 0x18, 0x12, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x34, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x39, 0x34, 0x35, 0x18, 0x13, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x39, 0x34, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x39, 0x34, 0x36, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x39, 0x34, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39,
-	0x34, 0x37, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x39, 0x34, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x34, 0x38,
-	0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x34,
-	0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x34, 0x39, 0x18, 0x0c,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x34, 0x39, 0x12,
-	0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x35, 0x30, 0x18, 0x08, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x35, 0x30, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x35, 0x31, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x35, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x35, 0x32, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x35, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x39, 0x35, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x39, 0x35, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x39, 0x35, 0x34, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x39, 0x35, 0x34, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39,
-	0x35, 0x35, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74,
-	0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x39, 0x35, 0x35, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x35, 0x36,
-	0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x35,
-	0x36, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x35, 0x37, 0x18, 0x26,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x38, 0x38, 0x36, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x35, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x39, 0x35, 0x38, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x39, 0x35, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x39, 0x35, 0x39, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x39, 0x35, 0x39, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x36,
-	0x30, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x37, 0x34, 0x33,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x36, 0x30, 0x12, 0x4c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x36, 0x31, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73,
-	0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x39, 0x36, 0x31, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x39, 0x36, 0x32, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x39, 0x36, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x39, 0x36, 0x33, 0x18, 0x22, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x39, 0x36, 0x33, 0x22, 0x0d, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x36, 0x38, 0x37, 0x31, 0x22, 0x49, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37,
-	0x35, 0x34, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x34, 0x39,
-	0x18, 0x01, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x34,
-	0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x35, 0x30, 0x18, 0x02,
-	0x20, 0x02, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x35, 0x30, 0x22,
-	0xf5, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x36, 0x34, 0x38, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x36, 0x39, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x36, 0x39, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x37, 0x30, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x37, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x37, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x37, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x36, 0x37, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x36, 0x37, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x36, 0x37, 0x33, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x36, 0x37, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36,
-	0x37, 0x34, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x36, 0x37, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x37, 0x35,
-	0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x37,
-	0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x37, 0x36, 0x18, 0x08,
-	0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x37, 0x36, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x37, 0x37, 0x18, 0x09, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x37, 0x37, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x37, 0x38, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x37, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x37, 0x39, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x37, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x36, 0x38, 0x30, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x36, 0x38, 0x30, 0x22, 0x0d, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x37, 0x38, 0x36, 0x35, 0x22, 0x49, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x37, 0x39, 0x32, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39,
-	0x34, 0x30, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x39, 0x34, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x34, 0x31,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x34,
-	0x31, 0x22, 0x67, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x31, 0x39,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x31, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x06, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x31, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x32, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x33, 0x22, 0x49, 0x0a, 0x0b, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x32, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x39, 0x33, 0x34, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x39, 0x33, 0x35, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x39, 0x33, 0x35, 0x22, 0xad, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x37, 0x39, 0x32, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39,
-	0x33, 0x36, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x39, 0x33, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x37,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33,
-	0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x38, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x38, 0x12,
-	0x44, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x39, 0x18, 0x04, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x39, 0x33, 0x39, 0x22, 0xcc, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x38, 0x35, 0x31, 0x31, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35,
-	0x33, 0x39, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x32, 0x32,
-	0x34, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x33, 0x39, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x34, 0x30, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x34, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x35, 0x34, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x34, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x35, 0x34, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x35, 0x34, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x35, 0x34, 0x33, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x35, 0x34, 0x33, 0x22, 0x93, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x38, 0x35, 0x31, 0x32, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x34,
-	0x34, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x33, 0x30, 0x31,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x34, 0x34, 0x12, 0x45, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x34, 0x35, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x38, 0x33, 0x30, 0x32, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35,
-	0x34, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x34, 0x36, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x34, 0x36,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x34, 0x37, 0x18, 0x04, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x34, 0x37, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x34, 0x38, 0x18, 0x05, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x34, 0x38, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x34, 0x39, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x34, 0x39, 0x22, 0xae, 0x01, 0x0a, 0x0b, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x35, 0x31, 0x33, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x35, 0x35, 0x30, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x38, 0x33, 0x39, 0x32, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x35,
-	0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x35, 0x31, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x35, 0x31, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x35, 0x32, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x35, 0x32, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x35, 0x33, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x35, 0x33, 0x22, 0xcc, 0x01, 0x0a, 0x0b,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x35, 0x31, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x35, 0x34, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x35, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x35, 0x35, 0x35, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x35, 0x35, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x35, 0x35, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x35, 0x35, 0x36, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35,
-	0x35, 0x37, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x31, 0x33,
-	0x30, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x35, 0x37, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x35, 0x38, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x35, 0x38, 0x22, 0xb9, 0x01, 0x0a, 0x0b, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x35, 0x31, 0x35, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x35, 0x35, 0x39, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x38, 0x34, 0x37, 0x39, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x35,
-	0x39, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x36, 0x30, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x34, 0x37, 0x38, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x36, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x35, 0x36, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x35, 0x36, 0x31, 0x22, 0xe6, 0x02, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x30, 0x33, 0x32, 0x30, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x30, 0x33, 0x34, 0x37, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x30, 0x33,
-	0x33, 0x35, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x37, 0x12, 0x48,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x38, 0x18, 0x02, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x33, 0x31, 0x39, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x30, 0x33, 0x34, 0x39, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x30, 0x33, 0x35, 0x30, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x35, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x30, 0x33, 0x35, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x35, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x30, 0x33, 0x35, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x35, 0x32, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x30, 0x33, 0x35, 0x33, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x30,
-	0x33, 0x33, 0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x35, 0x33, 0x22,
-	0x6e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x33, 0x32, 0x31, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x35, 0x34, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x35, 0x34, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x35, 0x35, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x35, 0x35, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x35, 0x36, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x35, 0x36, 0x22,
-	0x97, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x33, 0x32, 0x32,
-	0x12, 0x47, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x35, 0x37, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x30, 0x31, 0x36, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x35, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x33, 0x35, 0x38, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x35, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x33, 0x35, 0x39, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x35, 0x39, 0x22, 0xe8, 0x01, 0x0a, 0x0c, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x39, 0x38, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x30, 0x32, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x30, 0x32, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x30, 0x32, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x30, 0x32, 0x32, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x30, 0x32, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73,
-	0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x30, 0x32, 0x33, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x30, 0x32, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x30, 0x31, 0x35, 0x35, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x30, 0x32, 0x34, 0x22, 0xb8, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x32, 0x36, 0x36, 0x38, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x36, 0x37, 0x37, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32,
-	0x36, 0x36, 0x39, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x36, 0x37, 0x37, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x36, 0x37, 0x38, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x36, 0x37, 0x38, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x36, 0x37, 0x39, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x36, 0x37, 0x39, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x36, 0x38, 0x30, 0x18, 0x04, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x36, 0x38, 0x30, 0x22,
-	0xc6, 0x03, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x38, 0x32, 0x35,
-	0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x36, 0x32, 0x18, 0x01,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x38, 0x31, 0x38, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x36, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x36, 0x33, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x36, 0x33, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x32, 0x38, 0x31, 0x39, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x36, 0x34, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38,
-	0x36, 0x35, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x38,
-	0x32, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x36, 0x35, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x36, 0x36, 0x18, 0x05, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x36, 0x36, 0x12, 0x48,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x36, 0x37, 0x18, 0x06, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x38, 0x32, 0x31, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x36, 0x37, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x38, 0x36, 0x38, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x36, 0x38, 0x22, 0x98, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x34, 0x37, 0x38, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x34, 0x38, 0x31, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x36, 0x34, 0x37, 0x39, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36,
-	0x34, 0x38, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x38,
-	0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36,
-	0x34, 0x38, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x38,
-	0x33, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36,
-	0x34, 0x38, 0x33, 0x22, 0x95, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x36, 0x35, 0x35, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35,
-	0x36, 0x35, 0x18, 0x01, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x36, 0x35, 0x36, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35,
-	0x36, 0x36, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x36, 0x35, 0x36, 0x36, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35,
-	0x36, 0x37, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x36, 0x35, 0x35, 0x33, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x35, 0x36, 0x37, 0x22, 0x6e, 0x0a, 0x0c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x36, 0x36, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x36, 0x36, 0x38, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x36, 0x36, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x36, 0x36, 0x39, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x36, 0x36, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x36, 0x37, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x36, 0x37, 0x30, 0x22, 0xb9, 0x08, 0x0a, 0x0c,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x37, 0x32, 0x37, 0x12, 0x45, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x38, 0x32, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0e,
-	0x32, 0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e,
-	0x75, 0x6d, 0x31, 0x36, 0x37, 0x32, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36,
-	0x37, 0x38, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x38,
-	0x33, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36,
-	0x37, 0x38, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x38,
-	0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36,
-	0x37, 0x38, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x38,
-	0x35, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36,
-	0x37, 0x38, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x38,
-	0x36, 0x18, 0x04, 0x20, 0x02, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36,
-	0x37, 0x38, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x38,
-	0x37, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36,
-	0x37, 0x38, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x38,
-	0x38, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36,
-	0x37, 0x38, 0x38, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x38,
-	0x39, 0x18, 0x07, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x36, 0x37, 0x33, 0x32, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x38, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x39, 0x30, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x39, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x39, 0x31, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x39, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x39, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x39, 0x32, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x39, 0x33, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d,
-	0x31, 0x36, 0x37, 0x33, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x39,
-	0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x39, 0x34, 0x18,
-	0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x39,
-	0x34, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x39, 0x35, 0x18,
-	0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x37, 0x32, 0x32, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x39, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x39, 0x36, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x39, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x39, 0x37, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x39, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x39, 0x38, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x39, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x39, 0x39, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x39, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x30, 0x30, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x30, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x30, 0x31, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x30, 0x31, 0x12, 0x45, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x30, 0x32, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32,
-	0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75,
-	0x6d, 0x31, 0x36, 0x36, 0x39, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38,
-	0x30, 0x32, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x30, 0x33,
-	0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x37, 0x32, 0x34,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x30, 0x33, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x30, 0x34, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x30, 0x34, 0x12, 0x4e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x30, 0x35, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e,
-	0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x30, 0x35, 0x2a, 0x09, 0x08, 0xe8,
-	0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x75, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x36, 0x37, 0x32, 0x35, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x37, 0x37, 0x34, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x36, 0x37,
-	0x32, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x37, 0x34, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x37, 0x35, 0x18, 0x02, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x37, 0x35, 0x22, 0x82,
-	0x07, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x37, 0x37, 0x32, 0x36, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x30, 0x31, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x30, 0x31, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x30, 0x32, 0x18, 0x02, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x30, 0x32, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x30, 0x33, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x30, 0x33, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x30, 0x34, 0x18, 0x04, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x30, 0x34, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x30, 0x35, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x30, 0x35, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x30, 0x36, 0x18, 0x06, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x30, 0x36, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x30, 0x37, 0x18, 0x07, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x30, 0x37, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x30, 0x38, 0x18, 0x08, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x30, 0x38, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x30, 0x39, 0x18, 0x0f, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x30, 0x39, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x31, 0x30, 0x18, 0x10, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x31, 0x30, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x31, 0x31, 0x18, 0x11, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x31, 0x31, 0x12,
-	0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x31, 0x32, 0x18, 0x12, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x31, 0x32, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x31, 0x33, 0x18, 0x09, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x31, 0x33, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x31, 0x34, 0x18, 0x0a, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x31, 0x34, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x31, 0x35, 0x18, 0x0b, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x31, 0x35, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x31, 0x36, 0x18, 0x0c, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x31, 0x36, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x31, 0x37, 0x18, 0x0d, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x31, 0x37, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x31, 0x38, 0x18, 0x0e, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x31, 0x38, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x31, 0x39, 0x18, 0x13, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x31, 0x39, 0x12,
-	0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x32, 0x30, 0x18, 0x14, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x37, 0x37, 0x32, 0x38, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x32, 0x30, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x37, 0x38, 0x32, 0x31, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x37, 0x37, 0x32, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37,
-	0x38, 0x32, 0x31, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x38, 0x32,
-	0x32, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37,
-	0x38, 0x32, 0x32, 0x22, 0x4e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x37,
-	0x37, 0x38, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x35,
-	0x33, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x31, 0x35, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x35,
-	0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x31, 0x35, 0x34, 0x22, 0x90, 0x06, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x37, 0x37, 0x38, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31,
-	0x35, 0x35, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x38, 0x31, 0x35, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31,
-	0x35, 0x36, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x38, 0x31, 0x35, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31,
-	0x35, 0x37, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x38, 0x31, 0x35, 0x37, 0x12, 0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x37, 0x37, 0x38, 0x34, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x37, 0x37, 0x38, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x37, 0x37, 0x38,
-	0x34, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x37, 0x37, 0x38, 0x34, 0x12,
-	0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x37, 0x37, 0x38, 0x35, 0x18,
-	0x09, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x37, 0x37, 0x38, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x37, 0x37, 0x38, 0x35, 0x52, 0x0c, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x37, 0x37, 0x38, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x36, 0x30, 0x18, 0x10, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x36, 0x30, 0x1a, 0xce, 0x01, 0x0a, 0x0c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x37, 0x37, 0x38, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x36, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x36, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x36, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x36, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x36, 0x34, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x36, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x36, 0x35, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x36, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x36, 0x36, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x36, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x36, 0x37, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x36, 0x37, 0x1a, 0xf8, 0x01, 0x0a, 0x0c,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x37, 0x37, 0x38, 0x35, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x36, 0x38, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x36, 0x38, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x36, 0x39, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x36, 0x39, 0x12, 0x48, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x31, 0x37, 0x30, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x37, 0x37, 0x38, 0x33, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x38, 0x31, 0x37, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x38, 0x31, 0x37, 0x31, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x38, 0x31, 0x37, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x38, 0x31, 0x37, 0x32, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x38, 0x31, 0x37, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x38, 0x31, 0x37, 0x33, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x38, 0x31, 0x37, 0x33, 0x22, 0xc0, 0x4b, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x39, 0x34, 0x36, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x39, 0x34, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x39, 0x34, 0x37, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x39, 0x34, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x39, 0x34, 0x38, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x39, 0x34, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x39, 0x34, 0x39, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x39, 0x34, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x39, 0x35, 0x30, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x39, 0x35, 0x30, 0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x39, 0x35, 0x31, 0x18, 0xe8, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x35, 0x31, 0x12, 0x44, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x36, 0x39, 0x35, 0x32, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x35, 0x32, 0x12, 0x4e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x35, 0x33, 0x18, 0x36, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x35, 0x33, 0x12, 0x44,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x35, 0x34, 0x18, 0x37, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x36, 0x39, 0x35, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39,
-	0x35, 0x35, 0x18, 0x3a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x36, 0x39, 0x35, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39,
-	0x35, 0x36, 0x18, 0x3b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x36, 0x39, 0x35, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39,
-	0x35, 0x37, 0x18, 0x3e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x36, 0x39, 0x35, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39,
-	0x35, 0x38, 0x18, 0x25, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x36, 0x39, 0x35, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39,
-	0x35, 0x39, 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x36, 0x39, 0x35, 0x39, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39,
-	0x36, 0x30, 0x18, 0x26, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74,
-	0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x36, 0x39, 0x36, 0x30, 0x12, 0x44, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39,
-	0x36, 0x31, 0x18, 0x43, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x36, 0x31, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x36, 0x32, 0x18, 0x82, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x36,
-	0x32, 0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x36, 0x33, 0x18,
-	0x88, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39,
-	0x36, 0x33, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x36, 0x34,
-	0x18, 0x8a, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36,
-	0x39, 0x36, 0x34, 0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x36,
-	0x35, 0x18, 0x9c, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74,
-	0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x36, 0x39, 0x36, 0x35, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39,
-	0x36, 0x36, 0x18, 0x8b, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x39, 0x36, 0x36, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36,
-	0x39, 0x36, 0x37, 0x18, 0x7e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70,
-	0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x39, 0x36, 0x37, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36,
-	0x39, 0x36, 0x38, 0x18, 0x98, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x36, 0x39, 0x36, 0x38, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x36, 0x39, 0x36, 0x39, 0x18, 0xb7, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x36, 0x39, 0x12, 0x1f, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x37, 0x30, 0x18, 0xa8, 0x01, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x37, 0x30, 0x12, 0x1f,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x37, 0x31, 0x18, 0xd4, 0x01, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x37, 0x31, 0x12,
-	0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x37, 0x32, 0x18, 0xd5, 0x01,
-	0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x37, 0x32,
-	0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x37, 0x33, 0x18, 0xbd,
-	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x37,
-	0x33, 0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x37, 0x34, 0x18,
-	0xbe, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39,
-	0x37, 0x34, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x37, 0x35,
-	0x18, 0xbf, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36,
-	0x39, 0x37, 0x35, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x37,
-	0x36, 0x18, 0xc0, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x36, 0x39, 0x37, 0x36, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39,
-	0x37, 0x37, 0x18, 0xc1, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x37, 0x37, 0x12, 0x4f, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x37, 0x38, 0x18, 0xc2, 0x01, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e,
-	0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x37, 0x38, 0x12, 0x4f, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x37, 0x39, 0x18, 0xc3, 0x01, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x37, 0x39, 0x12, 0x1f, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x38, 0x30, 0x18, 0xc4, 0x01, 0x20, 0x03,
-	0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x38, 0x30, 0x12, 0x4e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x38, 0x31, 0x18, 0x5f, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x38, 0x31, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x38, 0x32, 0x18, 0x60, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x38, 0x32, 0x12, 0x4e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x38, 0x33, 0x18, 0x61, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x38, 0x33, 0x12, 0x1f,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x38, 0x34, 0x18, 0xbe, 0x08, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x38, 0x34, 0x12,
-	0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x38, 0x35, 0x18, 0x62, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x38, 0x35, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x38, 0x36, 0x18, 0x63, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x38, 0x36, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x38, 0x37, 0x18, 0x64, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x38, 0x37, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x38, 0x38, 0x18, 0x30, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x38, 0x38, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x38, 0x39, 0x18, 0x16, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x38, 0x39, 0x12,
-	0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x39, 0x30, 0x18, 0x33, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x39, 0x30, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x39, 0x31, 0x18, 0x51, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x39, 0x31, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x39, 0x32, 0x18, 0x55, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x39, 0x32, 0x12,
-	0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x39, 0x33, 0x18, 0xa9, 0x01,
-	0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x39, 0x33,
-	0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x39, 0x34, 0x18, 0x84,
-	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x39,
-	0x34, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x39, 0x35, 0x18,
-	0xc6, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39,
-	0x39, 0x35, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x39, 0x36,
-	0x18, 0xcc, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36,
-	0x39, 0x39, 0x36, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39, 0x39,
-	0x37, 0x18, 0xbf, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x36, 0x39, 0x39, 0x37, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x39,
-	0x39, 0x38, 0x18, 0xc5, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x39, 0x39, 0x38, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36,
-	0x39, 0x39, 0x39, 0x18, 0xce, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x36, 0x39, 0x39, 0x39, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x37, 0x30, 0x30, 0x30, 0x18, 0xd3, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x37, 0x30, 0x30, 0x30, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x37, 0x30, 0x30, 0x31, 0x18, 0xcd, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x30, 0x31, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x37, 0x30, 0x30, 0x32, 0x18, 0x44, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x30, 0x32, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x37, 0x30, 0x30, 0x33, 0x18, 0x45, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x30, 0x33, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x37, 0x30, 0x30, 0x34, 0x18, 0x46, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x30, 0x34, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x37, 0x30, 0x30, 0x35, 0x18, 0x47, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x30, 0x35, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x37, 0x30, 0x30, 0x36, 0x18, 0x48, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x30, 0x36, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x37, 0x30, 0x30, 0x37, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x30, 0x37, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x37, 0x30, 0x30, 0x38, 0x18, 0x18, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x30, 0x38, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x37, 0x30, 0x30, 0x39, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x30, 0x39, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x37, 0x30, 0x31, 0x30, 0x18, 0x83, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x31, 0x30, 0x12,
-	0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x31, 0x31, 0x18, 0x85, 0x01,
-	0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x31, 0x31,
-	0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x31, 0x32, 0x18, 0x8e,
-	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x31,
-	0x32, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x31, 0x33, 0x18,
-	0x8f, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30,
-	0x31, 0x33, 0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x31, 0x34,
-	0x18, 0x99, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37,
-	0x30, 0x31, 0x34, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x31,
-	0x35, 0x18, 0xaa, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x31, 0x35, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x31, 0x36, 0x18, 0xab, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x31, 0x36, 0x12, 0x1f, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x31, 0x37, 0x18, 0xac, 0x01, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x31, 0x37, 0x12, 0x1f, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x31, 0x38, 0x18, 0xad, 0x01, 0x20, 0x03, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x31, 0x38, 0x12, 0x1f, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x31, 0x39, 0x18, 0xae, 0x01, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x31, 0x39, 0x12, 0x1f,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x32, 0x30, 0x18, 0xaf, 0x01, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x32, 0x30, 0x12,
-	0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x32, 0x31, 0x18, 0xba, 0x01,
-	0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x32, 0x31,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x32, 0x32, 0x18, 0x65,
-	0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x32, 0x32,
-	0x12, 0x44, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x32, 0x33, 0x18, 0x66,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x37, 0x30, 0x32, 0x33, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x37, 0x30, 0x32, 0x34, 0x18, 0x92, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x37, 0x30, 0x32, 0x34, 0x2a, 0x04, 0x08, 0x11, 0x10, 0x12, 0x2a, 0x04, 0x08,
-	0x15, 0x10, 0x16, 0x2a, 0x04, 0x08, 0x19, 0x10, 0x1a, 0x2a, 0x04, 0x08, 0x1b, 0x10, 0x1c, 0x2a,
-	0x04, 0x08, 0x1d, 0x10, 0x1e, 0x2a, 0x04, 0x08, 0x1e, 0x10, 0x1f, 0x2a, 0x04, 0x08, 0x1f, 0x10,
-	0x20, 0x2a, 0x04, 0x08, 0x20, 0x10, 0x21, 0x2a, 0x04, 0x08, 0x21, 0x10, 0x22, 0x2a, 0x04, 0x08,
-	0x22, 0x10, 0x23, 0x2a, 0x04, 0x08, 0x23, 0x10, 0x24, 0x2a, 0x04, 0x08, 0x24, 0x10, 0x25, 0x2a,
-	0x04, 0x08, 0x27, 0x10, 0x28, 0x2a, 0x04, 0x08, 0x28, 0x10, 0x29, 0x2a, 0x04, 0x08, 0x29, 0x10,
-	0x2a, 0x2a, 0x04, 0x08, 0x2a, 0x10, 0x2b, 0x2a, 0x04, 0x08, 0x2b, 0x10, 0x2c, 0x2a, 0x04, 0x08,
-	0x2c, 0x10, 0x2d, 0x2a, 0x04, 0x08, 0x2d, 0x10, 0x2e, 0x2a, 0x04, 0x08, 0x2e, 0x10, 0x2f, 0x2a,
-	0x04, 0x08, 0x2f, 0x10, 0x30, 0x2a, 0x04, 0x08, 0x31, 0x10, 0x32, 0x2a, 0x04, 0x08, 0x32, 0x10,
-	0x33, 0x2a, 0x04, 0x08, 0x34, 0x10, 0x35, 0x2a, 0x04, 0x08, 0x35, 0x10, 0x36, 0x2a, 0x04, 0x08,
-	0x38, 0x10, 0x39, 0x2a, 0x04, 0x08, 0x39, 0x10, 0x3a, 0x2a, 0x04, 0x08, 0x3c, 0x10, 0x3d, 0x2a,
-	0x04, 0x08, 0x3d, 0x10, 0x3e, 0x2a, 0x04, 0x08, 0x3f, 0x10, 0x40, 0x2a, 0x04, 0x08, 0x40, 0x10,
-	0x41, 0x2a, 0x04, 0x08, 0x41, 0x10, 0x42, 0x2a, 0x04, 0x08, 0x42, 0x10, 0x43, 0x2a, 0x04, 0x08,
-	0x49, 0x10, 0x4a, 0x2a, 0x04, 0x08, 0x4a, 0x10, 0x4b, 0x2a, 0x04, 0x08, 0x4b, 0x10, 0x4c, 0x2a,
-	0x04, 0x08, 0x4c, 0x10, 0x4d, 0x2a, 0x04, 0x08, 0x4d, 0x10, 0x4e, 0x2a, 0x04, 0x08, 0x4e, 0x10,
-	0x4f, 0x2a, 0x04, 0x08, 0x4f, 0x10, 0x50, 0x2a, 0x04, 0x08, 0x50, 0x10, 0x51, 0x2a, 0x04, 0x08,
-	0x52, 0x10, 0x53, 0x2a, 0x04, 0x08, 0x53, 0x10, 0x54, 0x2a, 0x04, 0x08, 0x54, 0x10, 0x55, 0x2a,
-	0x04, 0x08, 0x56, 0x10, 0x57, 0x2a, 0x04, 0x08, 0x57, 0x10, 0x58, 0x2a, 0x04, 0x08, 0x58, 0x10,
-	0x59, 0x2a, 0x04, 0x08, 0x59, 0x10, 0x5a, 0x2a, 0x04, 0x08, 0x5a, 0x10, 0x5b, 0x2a, 0x04, 0x08,
-	0x5b, 0x10, 0x5c, 0x2a, 0x04, 0x08, 0x5c, 0x10, 0x5d, 0x2a, 0x04, 0x08, 0x5d, 0x10, 0x5e, 0x2a,
-	0x04, 0x08, 0x5e, 0x10, 0x5f, 0x2a, 0x04, 0x08, 0x67, 0x10, 0x68, 0x2a, 0x04, 0x08, 0x68, 0x10,
-	0x69, 0x2a, 0x04, 0x08, 0x69, 0x10, 0x6a, 0x2a, 0x04, 0x08, 0x6a, 0x10, 0x6b, 0x2a, 0x04, 0x08,
-	0x6b, 0x10, 0x6c, 0x2a, 0x04, 0x08, 0x6c, 0x10, 0x6d, 0x2a, 0x04, 0x08, 0x6d, 0x10, 0x6e, 0x2a,
-	0x04, 0x08, 0x6e, 0x10, 0x6f, 0x2a, 0x04, 0x08, 0x6f, 0x10, 0x70, 0x2a, 0x04, 0x08, 0x70, 0x10,
-	0x71, 0x2a, 0x04, 0x08, 0x71, 0x10, 0x72, 0x2a, 0x04, 0x08, 0x72, 0x10, 0x73, 0x2a, 0x04, 0x08,
-	0x73, 0x10, 0x74, 0x2a, 0x04, 0x08, 0x74, 0x10, 0x75, 0x2a, 0x04, 0x08, 0x75, 0x10, 0x76, 0x2a,
-	0x04, 0x08, 0x76, 0x10, 0x77, 0x2a, 0x04, 0x08, 0x77, 0x10, 0x78, 0x2a, 0x04, 0x08, 0x78, 0x10,
-	0x79, 0x2a, 0x04, 0x08, 0x79, 0x10, 0x7a, 0x2a, 0x04, 0x08, 0x7a, 0x10, 0x7b, 0x2a, 0x04, 0x08,
-	0x7b, 0x10, 0x7c, 0x2a, 0x04, 0x08, 0x7c, 0x10, 0x7d, 0x2a, 0x04, 0x08, 0x7d, 0x10, 0x7e, 0x2a,
-	0x05, 0x08, 0x7f, 0x10, 0x80, 0x01, 0x2a, 0x06, 0x08, 0x80, 0x01, 0x10, 0x81, 0x01, 0x2a, 0x06,
-	0x08, 0x81, 0x01, 0x10, 0x82, 0x01, 0x2a, 0x06, 0x08, 0x84, 0x01, 0x10, 0x85, 0x01, 0x2a, 0x06,
-	0x08, 0x86, 0x01, 0x10, 0x87, 0x01, 0x2a, 0x06, 0x08, 0x87, 0x01, 0x10, 0x88, 0x01, 0x2a, 0x06,
-	0x08, 0x89, 0x01, 0x10, 0x8a, 0x01, 0x2a, 0x06, 0x08, 0x8c, 0x01, 0x10, 0x8d, 0x01, 0x2a, 0x06,
-	0x08, 0x8d, 0x01, 0x10, 0x8e, 0x01, 0x2a, 0x06, 0x08, 0x90, 0x01, 0x10, 0x91, 0x01, 0x2a, 0x06,
-	0x08, 0x91, 0x01, 0x10, 0x92, 0x01, 0x2a, 0x06, 0x08, 0x92, 0x01, 0x10, 0x93, 0x01, 0x2a, 0x06,
-	0x08, 0x93, 0x01, 0x10, 0x94, 0x01, 0x2a, 0x06, 0x08, 0x94, 0x01, 0x10, 0x95, 0x01, 0x2a, 0x06,
-	0x08, 0x95, 0x01, 0x10, 0x96, 0x01, 0x2a, 0x06, 0x08, 0x96, 0x01, 0x10, 0x97, 0x01, 0x2a, 0x06,
-	0x08, 0x97, 0x01, 0x10, 0x98, 0x01, 0x2a, 0x06, 0x08, 0x9a, 0x01, 0x10, 0x9b, 0x01, 0x2a, 0x06,
-	0x08, 0x9b, 0x01, 0x10, 0x9c, 0x01, 0x2a, 0x06, 0x08, 0x9d, 0x01, 0x10, 0x9e, 0x01, 0x2a, 0x06,
-	0x08, 0x9e, 0x01, 0x10, 0x9f, 0x01, 0x2a, 0x06, 0x08, 0x9f, 0x01, 0x10, 0xa0, 0x01, 0x2a, 0x06,
-	0x08, 0xa0, 0x01, 0x10, 0xa1, 0x01, 0x2a, 0x06, 0x08, 0xa1, 0x01, 0x10, 0xa2, 0x01, 0x2a, 0x06,
-	0x08, 0xa2, 0x01, 0x10, 0xa3, 0x01, 0x2a, 0x06, 0x08, 0xa3, 0x01, 0x10, 0xa4, 0x01, 0x2a, 0x06,
-	0x08, 0xa4, 0x01, 0x10, 0xa5, 0x01, 0x2a, 0x06, 0x08, 0xa5, 0x01, 0x10, 0xa6, 0x01, 0x2a, 0x06,
-	0x08, 0xa6, 0x01, 0x10, 0xa7, 0x01, 0x2a, 0x06, 0x08, 0xa7, 0x01, 0x10, 0xa8, 0x01, 0x2a, 0x06,
-	0x08, 0xb0, 0x01, 0x10, 0xb1, 0x01, 0x2a, 0x06, 0x08, 0xb1, 0x01, 0x10, 0xb2, 0x01, 0x2a, 0x06,
-	0x08, 0xb2, 0x01, 0x10, 0xb3, 0x01, 0x2a, 0x06, 0x08, 0xb3, 0x01, 0x10, 0xb4, 0x01, 0x2a, 0x06,
-	0x08, 0xb4, 0x01, 0x10, 0xb5, 0x01, 0x2a, 0x06, 0x08, 0xb5, 0x01, 0x10, 0xb6, 0x01, 0x2a, 0x06,
-	0x08, 0xb6, 0x01, 0x10, 0xb7, 0x01, 0x2a, 0x06, 0x08, 0xb8, 0x01, 0x10, 0xb9, 0x01, 0x2a, 0x06,
-	0x08, 0xb9, 0x01, 0x10, 0xba, 0x01, 0x2a, 0x06, 0x08, 0xbb, 0x01, 0x10, 0xbc, 0x01, 0x2a, 0x06,
-	0x08, 0xbc, 0x01, 0x10, 0xbd, 0x01, 0x2a, 0x06, 0x08, 0xc7, 0x01, 0x10, 0xc8, 0x01, 0x2a, 0x06,
-	0x08, 0xc8, 0x01, 0x10, 0xc9, 0x01, 0x2a, 0x06, 0x08, 0xc9, 0x01, 0x10, 0xca, 0x01, 0x2a, 0x06,
-	0x08, 0xca, 0x01, 0x10, 0xcb, 0x01, 0x2a, 0x06, 0x08, 0xcb, 0x01, 0x10, 0xcc, 0x01, 0x2a, 0x06,
-	0x08, 0xcf, 0x01, 0x10, 0xd0, 0x01, 0x2a, 0x06, 0x08, 0xd0, 0x01, 0x10, 0xd1, 0x01, 0x2a, 0x06,
-	0x08, 0xd1, 0x01, 0x10, 0xd2, 0x01, 0x2a, 0x06, 0x08, 0xd2, 0x01, 0x10, 0xd3, 0x01, 0x2a, 0x06,
-	0x08, 0xd6, 0x01, 0x10, 0xd7, 0x01, 0x2a, 0x06, 0x08, 0xd7, 0x01, 0x10, 0xd8, 0x01, 0x2a, 0x06,
-	0x08, 0xd8, 0x01, 0x10, 0xd9, 0x01, 0x2a, 0x06, 0x08, 0xd9, 0x01, 0x10, 0xda, 0x01, 0x2a, 0x06,
-	0x08, 0xda, 0x01, 0x10, 0xdb, 0x01, 0x2a, 0x06, 0x08, 0xdb, 0x01, 0x10, 0xdc, 0x01, 0x2a, 0x06,
-	0x08, 0xdc, 0x01, 0x10, 0xdd, 0x01, 0x2a, 0x06, 0x08, 0xdd, 0x01, 0x10, 0xde, 0x01, 0x2a, 0x06,
-	0x08, 0xde, 0x01, 0x10, 0xdf, 0x01, 0x2a, 0x06, 0x08, 0xdf, 0x01, 0x10, 0xe0, 0x01, 0x2a, 0x06,
-	0x08, 0xe0, 0x01, 0x10, 0xe1, 0x01, 0x2a, 0x06, 0x08, 0xe1, 0x01, 0x10, 0xe2, 0x01, 0x2a, 0x06,
-	0x08, 0xe2, 0x01, 0x10, 0xe3, 0x01, 0x2a, 0x06, 0x08, 0xe3, 0x01, 0x10, 0xe4, 0x01, 0x2a, 0x06,
-	0x08, 0xe4, 0x01, 0x10, 0xe5, 0x01, 0x2a, 0x06, 0x08, 0xe5, 0x01, 0x10, 0xe6, 0x01, 0x2a, 0x06,
-	0x08, 0xe6, 0x01, 0x10, 0xe7, 0x01, 0x2a, 0x06, 0x08, 0xe7, 0x01, 0x10, 0xe8, 0x01, 0x2a, 0x06,
-	0x08, 0xe8, 0x01, 0x10, 0xe9, 0x01, 0x2a, 0x06, 0x08, 0xe9, 0x01, 0x10, 0xea, 0x01, 0x2a, 0x06,
-	0x08, 0xea, 0x01, 0x10, 0xeb, 0x01, 0x2a, 0x06, 0x08, 0xeb, 0x01, 0x10, 0xec, 0x01, 0x2a, 0x06,
-	0x08, 0xec, 0x01, 0x10, 0xed, 0x01, 0x2a, 0x06, 0x08, 0xed, 0x01, 0x10, 0xee, 0x01, 0x2a, 0x06,
-	0x08, 0xee, 0x01, 0x10, 0xef, 0x01, 0x2a, 0x06, 0x08, 0xef, 0x01, 0x10, 0xf0, 0x01, 0x2a, 0x06,
-	0x08, 0xf0, 0x01, 0x10, 0xf1, 0x01, 0x2a, 0x06, 0x08, 0xf1, 0x01, 0x10, 0xf2, 0x01, 0x2a, 0x06,
-	0x08, 0xf2, 0x01, 0x10, 0xf3, 0x01, 0x2a, 0x06, 0x08, 0xf3, 0x01, 0x10, 0xf4, 0x01, 0x2a, 0x06,
-	0x08, 0xf4, 0x01, 0x10, 0xf5, 0x01, 0x2a, 0x06, 0x08, 0xf5, 0x01, 0x10, 0xf6, 0x01, 0x2a, 0x06,
-	0x08, 0xf6, 0x01, 0x10, 0xf7, 0x01, 0x2a, 0x06, 0x08, 0xf7, 0x01, 0x10, 0xf8, 0x01, 0x2a, 0x06,
-	0x08, 0xf8, 0x01, 0x10, 0xf9, 0x01, 0x2a, 0x06, 0x08, 0xf9, 0x01, 0x10, 0xfa, 0x01, 0x2a, 0x06,
-	0x08, 0xfa, 0x01, 0x10, 0xfb, 0x01, 0x2a, 0x06, 0x08, 0xfb, 0x01, 0x10, 0xfc, 0x01, 0x2a, 0x06,
-	0x08, 0xfc, 0x01, 0x10, 0xfd, 0x01, 0x2a, 0x06, 0x08, 0xfd, 0x01, 0x10, 0xfe, 0x01, 0x2a, 0x06,
-	0x08, 0xfe, 0x01, 0x10, 0xff, 0x01, 0x2a, 0x06, 0x08, 0xff, 0x01, 0x10, 0x80, 0x02, 0x2a, 0x06,
-	0x08, 0x80, 0x02, 0x10, 0x81, 0x02, 0x2a, 0x06, 0x08, 0x81, 0x02, 0x10, 0x82, 0x02, 0x2a, 0x06,
-	0x08, 0x82, 0x02, 0x10, 0x83, 0x02, 0x2a, 0x06, 0x08, 0x83, 0x02, 0x10, 0x84, 0x02, 0x2a, 0x06,
-	0x08, 0x85, 0x02, 0x10, 0x86, 0x02, 0x2a, 0x06, 0x08, 0x86, 0x02, 0x10, 0x87, 0x02, 0x2a, 0x06,
-	0x08, 0x87, 0x02, 0x10, 0x88, 0x02, 0x2a, 0x06, 0x08, 0x88, 0x02, 0x10, 0x89, 0x02, 0x2a, 0x06,
-	0x08, 0x89, 0x02, 0x10, 0x8a, 0x02, 0x2a, 0x06, 0x08, 0x8a, 0x02, 0x10, 0x8b, 0x02, 0x2a, 0x06,
-	0x08, 0x8b, 0x02, 0x10, 0x8c, 0x02, 0x2a, 0x06, 0x08, 0x8c, 0x02, 0x10, 0x8d, 0x02, 0x2a, 0x06,
-	0x08, 0x8d, 0x02, 0x10, 0x8e, 0x02, 0x2a, 0x06, 0x08, 0x8e, 0x02, 0x10, 0x8f, 0x02, 0x2a, 0x06,
-	0x08, 0x8f, 0x02, 0x10, 0x90, 0x02, 0x2a, 0x06, 0x08, 0x90, 0x02, 0x10, 0x91, 0x02, 0x2a, 0x06,
-	0x08, 0x91, 0x02, 0x10, 0x92, 0x02, 0x2a, 0x06, 0x08, 0x93, 0x02, 0x10, 0x94, 0x02, 0x2a, 0x06,
-	0x08, 0x94, 0x02, 0x10, 0x95, 0x02, 0x2a, 0x06, 0x08, 0x95, 0x02, 0x10, 0x96, 0x02, 0x2a, 0x06,
-	0x08, 0x96, 0x02, 0x10, 0x97, 0x02, 0x2a, 0x06, 0x08, 0x97, 0x02, 0x10, 0x98, 0x02, 0x2a, 0x06,
-	0x08, 0x98, 0x02, 0x10, 0x99, 0x02, 0x2a, 0x06, 0x08, 0x99, 0x02, 0x10, 0x9a, 0x02, 0x2a, 0x06,
-	0x08, 0x9a, 0x02, 0x10, 0x9b, 0x02, 0x2a, 0x06, 0x08, 0x9b, 0x02, 0x10, 0x9c, 0x02, 0x2a, 0x06,
-	0x08, 0x9c, 0x02, 0x10, 0x9d, 0x02, 0x2a, 0x06, 0x08, 0x9d, 0x02, 0x10, 0x9e, 0x02, 0x2a, 0x06,
-	0x08, 0x9e, 0x02, 0x10, 0x9f, 0x02, 0x2a, 0x06, 0x08, 0xa2, 0x02, 0x10, 0xa3, 0x02, 0x2a, 0x06,
-	0x08, 0xa3, 0x02, 0x10, 0xa4, 0x02, 0x2a, 0x06, 0x08, 0xa4, 0x02, 0x10, 0xa5, 0x02, 0x2a, 0x06,
-	0x08, 0xa5, 0x02, 0x10, 0xa6, 0x02, 0x2a, 0x06, 0x08, 0xa6, 0x02, 0x10, 0xa7, 0x02, 0x2a, 0x06,
-	0x08, 0xa7, 0x02, 0x10, 0xa8, 0x02, 0x2a, 0x06, 0x08, 0xa8, 0x02, 0x10, 0xa9, 0x02, 0x2a, 0x06,
-	0x08, 0xa9, 0x02, 0x10, 0xaa, 0x02, 0x2a, 0x06, 0x08, 0xaa, 0x02, 0x10, 0xab, 0x02, 0x2a, 0x06,
-	0x08, 0xab, 0x02, 0x10, 0xac, 0x02, 0x2a, 0x06, 0x08, 0xac, 0x02, 0x10, 0xad, 0x02, 0x2a, 0x06,
-	0x08, 0xad, 0x02, 0x10, 0xae, 0x02, 0x2a, 0x06, 0x08, 0xae, 0x02, 0x10, 0xaf, 0x02, 0x2a, 0x06,
-	0x08, 0xaf, 0x02, 0x10, 0xb0, 0x02, 0x2a, 0x06, 0x08, 0xb0, 0x02, 0x10, 0xb1, 0x02, 0x2a, 0x06,
-	0x08, 0xb1, 0x02, 0x10, 0xb2, 0x02, 0x2a, 0x06, 0x08, 0xb2, 0x02, 0x10, 0xb3, 0x02, 0x2a, 0x06,
-	0x08, 0xb3, 0x02, 0x10, 0xb4, 0x02, 0x2a, 0x06, 0x08, 0xb4, 0x02, 0x10, 0xb5, 0x02, 0x2a, 0x06,
-	0x08, 0xb5, 0x02, 0x10, 0xb6, 0x02, 0x2a, 0x06, 0x08, 0xb6, 0x02, 0x10, 0xb7, 0x02, 0x2a, 0x06,
-	0x08, 0xb7, 0x02, 0x10, 0xb8, 0x02, 0x2a, 0x06, 0x08, 0xb8, 0x02, 0x10, 0xb9, 0x02, 0x2a, 0x06,
-	0x08, 0xb9, 0x02, 0x10, 0xba, 0x02, 0x2a, 0x06, 0x08, 0xba, 0x02, 0x10, 0xbb, 0x02, 0x2a, 0x06,
-	0x08, 0xbb, 0x02, 0x10, 0xbc, 0x02, 0x2a, 0x06, 0x08, 0xbc, 0x02, 0x10, 0xbd, 0x02, 0x2a, 0x06,
-	0x08, 0xbd, 0x02, 0x10, 0xbe, 0x02, 0x2a, 0x06, 0x08, 0xbe, 0x02, 0x10, 0xbf, 0x02, 0x2a, 0x06,
-	0x08, 0xbf, 0x02, 0x10, 0xc0, 0x02, 0x2a, 0x06, 0x08, 0xc0, 0x02, 0x10, 0xc1, 0x02, 0x2a, 0x06,
-	0x08, 0xc1, 0x02, 0x10, 0xc2, 0x02, 0x2a, 0x06, 0x08, 0xc2, 0x02, 0x10, 0xc3, 0x02, 0x2a, 0x06,
-	0x08, 0xc3, 0x02, 0x10, 0xc4, 0x02, 0x2a, 0x06, 0x08, 0xc4, 0x02, 0x10, 0xc5, 0x02, 0x2a, 0x06,
-	0x08, 0xc5, 0x02, 0x10, 0xc6, 0x02, 0x2a, 0x06, 0x08, 0xc6, 0x02, 0x10, 0xc7, 0x02, 0x2a, 0x06,
-	0x08, 0xc7, 0x02, 0x10, 0xc8, 0x02, 0x2a, 0x06, 0x08, 0xc8, 0x02, 0x10, 0xc9, 0x02, 0x2a, 0x06,
-	0x08, 0xc9, 0x02, 0x10, 0xca, 0x02, 0x2a, 0x06, 0x08, 0xca, 0x02, 0x10, 0xcb, 0x02, 0x2a, 0x06,
-	0x08, 0xcb, 0x02, 0x10, 0xcc, 0x02, 0x2a, 0x06, 0x08, 0xcc, 0x02, 0x10, 0xcd, 0x02, 0x2a, 0x06,
-	0x08, 0xcd, 0x02, 0x10, 0xce, 0x02, 0x2a, 0x06, 0x08, 0xce, 0x02, 0x10, 0xcf, 0x02, 0x2a, 0x06,
-	0x08, 0xcf, 0x02, 0x10, 0xd0, 0x02, 0x2a, 0x06, 0x08, 0xd0, 0x02, 0x10, 0xd1, 0x02, 0x2a, 0x06,
-	0x08, 0xd1, 0x02, 0x10, 0xd2, 0x02, 0x2a, 0x06, 0x08, 0xd2, 0x02, 0x10, 0xd3, 0x02, 0x2a, 0x06,
-	0x08, 0xd3, 0x02, 0x10, 0xd4, 0x02, 0x2a, 0x06, 0x08, 0xd4, 0x02, 0x10, 0xd5, 0x02, 0x2a, 0x06,
-	0x08, 0xd5, 0x02, 0x10, 0xd6, 0x02, 0x2a, 0x06, 0x08, 0xd6, 0x02, 0x10, 0xd7, 0x02, 0x2a, 0x06,
-	0x08, 0xd7, 0x02, 0x10, 0xd8, 0x02, 0x2a, 0x06, 0x08, 0xd8, 0x02, 0x10, 0xd9, 0x02, 0x2a, 0x06,
-	0x08, 0xd9, 0x02, 0x10, 0xda, 0x02, 0x2a, 0x06, 0x08, 0xda, 0x02, 0x10, 0xdb, 0x02, 0x2a, 0x06,
-	0x08, 0xdb, 0x02, 0x10, 0xdc, 0x02, 0x2a, 0x06, 0x08, 0xdc, 0x02, 0x10, 0xdd, 0x02, 0x2a, 0x06,
-	0x08, 0xdd, 0x02, 0x10, 0xde, 0x02, 0x2a, 0x06, 0x08, 0xde, 0x02, 0x10, 0xdf, 0x02, 0x2a, 0x06,
-	0x08, 0xdf, 0x02, 0x10, 0xe0, 0x02, 0x2a, 0x06, 0x08, 0xe0, 0x02, 0x10, 0xe1, 0x02, 0x2a, 0x06,
-	0x08, 0xe1, 0x02, 0x10, 0xe2, 0x02, 0x2a, 0x06, 0x08, 0xe2, 0x02, 0x10, 0xe3, 0x02, 0x2a, 0x06,
-	0x08, 0xe3, 0x02, 0x10, 0xe4, 0x02, 0x2a, 0x06, 0x08, 0xe4, 0x02, 0x10, 0xe5, 0x02, 0x2a, 0x06,
-	0x08, 0xe5, 0x02, 0x10, 0xe6, 0x02, 0x2a, 0x06, 0x08, 0xe6, 0x02, 0x10, 0xe7, 0x02, 0x2a, 0x06,
-	0x08, 0xe7, 0x02, 0x10, 0xe8, 0x02, 0x2a, 0x06, 0x08, 0xe8, 0x02, 0x10, 0xe9, 0x02, 0x2a, 0x06,
-	0x08, 0xe9, 0x02, 0x10, 0xea, 0x02, 0x2a, 0x06, 0x08, 0xea, 0x02, 0x10, 0xeb, 0x02, 0x2a, 0x06,
-	0x08, 0xeb, 0x02, 0x10, 0xec, 0x02, 0x2a, 0x06, 0x08, 0xec, 0x02, 0x10, 0xed, 0x02, 0x2a, 0x06,
-	0x08, 0xed, 0x02, 0x10, 0xee, 0x02, 0x2a, 0x06, 0x08, 0xee, 0x02, 0x10, 0xef, 0x02, 0x2a, 0x06,
-	0x08, 0xef, 0x02, 0x10, 0xf0, 0x02, 0x2a, 0x06, 0x08, 0xf0, 0x02, 0x10, 0xf1, 0x02, 0x2a, 0x06,
-	0x08, 0xf1, 0x02, 0x10, 0xf2, 0x02, 0x2a, 0x06, 0x08, 0xf2, 0x02, 0x10, 0xf3, 0x02, 0x2a, 0x06,
-	0x08, 0xf3, 0x02, 0x10, 0xf4, 0x02, 0x2a, 0x06, 0x08, 0xf4, 0x02, 0x10, 0xf5, 0x02, 0x2a, 0x06,
-	0x08, 0xf5, 0x02, 0x10, 0xf6, 0x02, 0x2a, 0x06, 0x08, 0xf6, 0x02, 0x10, 0xf7, 0x02, 0x2a, 0x06,
-	0x08, 0xf7, 0x02, 0x10, 0xf8, 0x02, 0x2a, 0x06, 0x08, 0xf8, 0x02, 0x10, 0xf9, 0x02, 0x2a, 0x06,
-	0x08, 0xf9, 0x02, 0x10, 0xfa, 0x02, 0x2a, 0x06, 0x08, 0xfa, 0x02, 0x10, 0xfb, 0x02, 0x2a, 0x06,
-	0x08, 0xfb, 0x02, 0x10, 0xfc, 0x02, 0x2a, 0x06, 0x08, 0xfc, 0x02, 0x10, 0xfd, 0x02, 0x2a, 0x06,
-	0x08, 0xfd, 0x02, 0x10, 0xfe, 0x02, 0x2a, 0x06, 0x08, 0xfe, 0x02, 0x10, 0xff, 0x02, 0x2a, 0x06,
-	0x08, 0xff, 0x02, 0x10, 0x80, 0x03, 0x2a, 0x06, 0x08, 0x80, 0x03, 0x10, 0x81, 0x03, 0x2a, 0x06,
-	0x08, 0x81, 0x03, 0x10, 0x82, 0x03, 0x2a, 0x06, 0x08, 0x82, 0x03, 0x10, 0x83, 0x03, 0x2a, 0x06,
-	0x08, 0x83, 0x03, 0x10, 0x84, 0x03, 0x2a, 0x06, 0x08, 0x84, 0x03, 0x10, 0x85, 0x03, 0x2a, 0x06,
-	0x08, 0x85, 0x03, 0x10, 0x86, 0x03, 0x2a, 0x06, 0x08, 0x86, 0x03, 0x10, 0x87, 0x03, 0x2a, 0x06,
-	0x08, 0x87, 0x03, 0x10, 0x88, 0x03, 0x2a, 0x06, 0x08, 0x88, 0x03, 0x10, 0x89, 0x03, 0x2a, 0x06,
-	0x08, 0x89, 0x03, 0x10, 0x8a, 0x03, 0x2a, 0x06, 0x08, 0x8a, 0x03, 0x10, 0x8b, 0x03, 0x2a, 0x06,
-	0x08, 0x8b, 0x03, 0x10, 0x8c, 0x03, 0x2a, 0x06, 0x08, 0x8c, 0x03, 0x10, 0x8d, 0x03, 0x2a, 0x06,
-	0x08, 0x8d, 0x03, 0x10, 0x8e, 0x03, 0x2a, 0x06, 0x08, 0x8e, 0x03, 0x10, 0x8f, 0x03, 0x2a, 0x06,
-	0x08, 0x8f, 0x03, 0x10, 0x90, 0x03, 0x2a, 0x06, 0x08, 0x90, 0x03, 0x10, 0x91, 0x03, 0x2a, 0x06,
-	0x08, 0x91, 0x03, 0x10, 0x92, 0x03, 0x2a, 0x06, 0x08, 0x92, 0x03, 0x10, 0x93, 0x03, 0x2a, 0x06,
-	0x08, 0x93, 0x03, 0x10, 0x94, 0x03, 0x2a, 0x06, 0x08, 0x94, 0x03, 0x10, 0x95, 0x03, 0x2a, 0x06,
-	0x08, 0x95, 0x03, 0x10, 0x96, 0x03, 0x2a, 0x06, 0x08, 0x96, 0x03, 0x10, 0x97, 0x03, 0x2a, 0x06,
-	0x08, 0x97, 0x03, 0x10, 0x98, 0x03, 0x2a, 0x06, 0x08, 0x98, 0x03, 0x10, 0x99, 0x03, 0x2a, 0x06,
-	0x08, 0x99, 0x03, 0x10, 0x9a, 0x03, 0x2a, 0x06, 0x08, 0x9a, 0x03, 0x10, 0x9b, 0x03, 0x2a, 0x06,
-	0x08, 0x9b, 0x03, 0x10, 0x9c, 0x03, 0x2a, 0x06, 0x08, 0x9c, 0x03, 0x10, 0x9d, 0x03, 0x2a, 0x06,
-	0x08, 0x9d, 0x03, 0x10, 0x9e, 0x03, 0x2a, 0x06, 0x08, 0x9e, 0x03, 0x10, 0x9f, 0x03, 0x2a, 0x06,
-	0x08, 0x9f, 0x03, 0x10, 0xa0, 0x03, 0x2a, 0x06, 0x08, 0xa0, 0x03, 0x10, 0xa1, 0x03, 0x2a, 0x06,
-	0x08, 0xa1, 0x03, 0x10, 0xa2, 0x03, 0x2a, 0x06, 0x08, 0xa2, 0x03, 0x10, 0xa3, 0x03, 0x2a, 0x06,
-	0x08, 0xa3, 0x03, 0x10, 0xa4, 0x03, 0x2a, 0x06, 0x08, 0xa4, 0x03, 0x10, 0xa5, 0x03, 0x2a, 0x06,
-	0x08, 0xa5, 0x03, 0x10, 0xa6, 0x03, 0x2a, 0x06, 0x08, 0xa6, 0x03, 0x10, 0xa7, 0x03, 0x2a, 0x06,
-	0x08, 0xa7, 0x03, 0x10, 0xa8, 0x03, 0x2a, 0x06, 0x08, 0xa8, 0x03, 0x10, 0xa9, 0x03, 0x2a, 0x06,
-	0x08, 0xa9, 0x03, 0x10, 0xaa, 0x03, 0x2a, 0x06, 0x08, 0xaa, 0x03, 0x10, 0xab, 0x03, 0x2a, 0x06,
-	0x08, 0xab, 0x03, 0x10, 0xac, 0x03, 0x2a, 0x06, 0x08, 0xac, 0x03, 0x10, 0xad, 0x03, 0x2a, 0x06,
-	0x08, 0xad, 0x03, 0x10, 0xae, 0x03, 0x2a, 0x06, 0x08, 0xae, 0x03, 0x10, 0xaf, 0x03, 0x2a, 0x06,
-	0x08, 0xaf, 0x03, 0x10, 0xb0, 0x03, 0x2a, 0x06, 0x08, 0xb0, 0x03, 0x10, 0xb1, 0x03, 0x2a, 0x06,
-	0x08, 0xb1, 0x03, 0x10, 0xb2, 0x03, 0x2a, 0x06, 0x08, 0xb2, 0x03, 0x10, 0xb3, 0x03, 0x2a, 0x06,
-	0x08, 0xb3, 0x03, 0x10, 0xb4, 0x03, 0x2a, 0x06, 0x08, 0xb4, 0x03, 0x10, 0xb5, 0x03, 0x2a, 0x06,
-	0x08, 0xb5, 0x03, 0x10, 0xb6, 0x03, 0x2a, 0x06, 0x08, 0xb6, 0x03, 0x10, 0xb7, 0x03, 0x2a, 0x06,
-	0x08, 0xb7, 0x03, 0x10, 0xb8, 0x03, 0x2a, 0x06, 0x08, 0xb8, 0x03, 0x10, 0xb9, 0x03, 0x2a, 0x06,
-	0x08, 0xb9, 0x03, 0x10, 0xba, 0x03, 0x2a, 0x06, 0x08, 0xba, 0x03, 0x10, 0xbb, 0x03, 0x2a, 0x06,
-	0x08, 0xbb, 0x03, 0x10, 0xbc, 0x03, 0x2a, 0x06, 0x08, 0xbc, 0x03, 0x10, 0xbd, 0x03, 0x2a, 0x06,
-	0x08, 0xbd, 0x03, 0x10, 0xbe, 0x03, 0x2a, 0x06, 0x08, 0xbe, 0x03, 0x10, 0xbf, 0x03, 0x2a, 0x06,
-	0x08, 0xbf, 0x03, 0x10, 0xc0, 0x03, 0x2a, 0x06, 0x08, 0xc0, 0x03, 0x10, 0xc1, 0x03, 0x2a, 0x06,
-	0x08, 0xc1, 0x03, 0x10, 0xc2, 0x03, 0x2a, 0x06, 0x08, 0xc2, 0x03, 0x10, 0xc3, 0x03, 0x2a, 0x06,
-	0x08, 0xc3, 0x03, 0x10, 0xc4, 0x03, 0x2a, 0x06, 0x08, 0xc4, 0x03, 0x10, 0xc5, 0x03, 0x2a, 0x06,
-	0x08, 0xc5, 0x03, 0x10, 0xc6, 0x03, 0x2a, 0x06, 0x08, 0xc6, 0x03, 0x10, 0xc7, 0x03, 0x2a, 0x06,
-	0x08, 0xc7, 0x03, 0x10, 0xc8, 0x03, 0x2a, 0x06, 0x08, 0xc8, 0x03, 0x10, 0xc9, 0x03, 0x2a, 0x06,
-	0x08, 0xc9, 0x03, 0x10, 0xca, 0x03, 0x2a, 0x06, 0x08, 0xca, 0x03, 0x10, 0xcb, 0x03, 0x2a, 0x06,
-	0x08, 0xcb, 0x03, 0x10, 0xcc, 0x03, 0x2a, 0x06, 0x08, 0xcc, 0x03, 0x10, 0xcd, 0x03, 0x2a, 0x06,
-	0x08, 0xcd, 0x03, 0x10, 0xce, 0x03, 0x2a, 0x06, 0x08, 0xce, 0x03, 0x10, 0xcf, 0x03, 0x2a, 0x06,
-	0x08, 0xcf, 0x03, 0x10, 0xd0, 0x03, 0x2a, 0x06, 0x08, 0xd0, 0x03, 0x10, 0xd1, 0x03, 0x2a, 0x06,
-	0x08, 0xd1, 0x03, 0x10, 0xd2, 0x03, 0x2a, 0x06, 0x08, 0xd2, 0x03, 0x10, 0xd3, 0x03, 0x2a, 0x06,
-	0x08, 0xd3, 0x03, 0x10, 0xd4, 0x03, 0x2a, 0x06, 0x08, 0xd4, 0x03, 0x10, 0xd5, 0x03, 0x2a, 0x06,
-	0x08, 0xd5, 0x03, 0x10, 0xd6, 0x03, 0x2a, 0x06, 0x08, 0xd6, 0x03, 0x10, 0xd7, 0x03, 0x2a, 0x06,
-	0x08, 0xd7, 0x03, 0x10, 0xd8, 0x03, 0x2a, 0x06, 0x08, 0xd8, 0x03, 0x10, 0xd9, 0x03, 0x2a, 0x06,
-	0x08, 0xd9, 0x03, 0x10, 0xda, 0x03, 0x2a, 0x06, 0x08, 0xda, 0x03, 0x10, 0xdb, 0x03, 0x2a, 0x06,
-	0x08, 0xfd, 0x03, 0x10, 0xfe, 0x03, 0x2a, 0x06, 0x08, 0xff, 0x03, 0x10, 0x80, 0x04, 0x2a, 0x06,
-	0x08, 0x80, 0x04, 0x10, 0x81, 0x04, 0x2a, 0x06, 0x08, 0x81, 0x04, 0x10, 0x82, 0x04, 0x2a, 0x06,
-	0x08, 0x82, 0x04, 0x10, 0x83, 0x04, 0x2a, 0x06, 0x08, 0x83, 0x04, 0x10, 0x84, 0x04, 0x2a, 0x06,
-	0x08, 0x84, 0x04, 0x10, 0x85, 0x04, 0x2a, 0x06, 0x08, 0x85, 0x04, 0x10, 0x86, 0x04, 0x2a, 0x06,
-	0x08, 0x86, 0x04, 0x10, 0x87, 0x04, 0x2a, 0x06, 0x08, 0x87, 0x04, 0x10, 0x88, 0x04, 0x2a, 0x06,
-	0x08, 0x88, 0x04, 0x10, 0x89, 0x04, 0x2a, 0x06, 0x08, 0x89, 0x04, 0x10, 0x8a, 0x04, 0x2a, 0x06,
-	0x08, 0x8a, 0x04, 0x10, 0x8b, 0x04, 0x2a, 0x06, 0x08, 0x8b, 0x04, 0x10, 0x8c, 0x04, 0x2a, 0x06,
-	0x08, 0x8c, 0x04, 0x10, 0x8d, 0x04, 0x2a, 0x06, 0x08, 0x8d, 0x04, 0x10, 0x8e, 0x04, 0x2a, 0x06,
-	0x08, 0x8e, 0x04, 0x10, 0x8f, 0x04, 0x2a, 0x06, 0x08, 0x8f, 0x04, 0x10, 0x90, 0x04, 0x2a, 0x06,
-	0x08, 0x90, 0x04, 0x10, 0x91, 0x04, 0x2a, 0x06, 0x08, 0x91, 0x04, 0x10, 0x92, 0x04, 0x2a, 0x06,
-	0x08, 0x92, 0x04, 0x10, 0x93, 0x04, 0x2a, 0x06, 0x08, 0x93, 0x04, 0x10, 0x94, 0x04, 0x2a, 0x06,
-	0x08, 0x94, 0x04, 0x10, 0x95, 0x04, 0x2a, 0x06, 0x08, 0x95, 0x04, 0x10, 0x96, 0x04, 0x2a, 0x06,
-	0x08, 0x96, 0x04, 0x10, 0x97, 0x04, 0x2a, 0x06, 0x08, 0x97, 0x04, 0x10, 0x98, 0x04, 0x2a, 0x06,
-	0x08, 0x98, 0x04, 0x10, 0x99, 0x04, 0x2a, 0x06, 0x08, 0x99, 0x04, 0x10, 0x9a, 0x04, 0x2a, 0x06,
-	0x08, 0x9a, 0x04, 0x10, 0x9b, 0x04, 0x2a, 0x06, 0x08, 0x9b, 0x04, 0x10, 0x9c, 0x04, 0x2a, 0x06,
-	0x08, 0x9c, 0x04, 0x10, 0x9d, 0x04, 0x2a, 0x06, 0x08, 0x9d, 0x04, 0x10, 0x9e, 0x04, 0x2a, 0x06,
-	0x08, 0x9e, 0x04, 0x10, 0x9f, 0x04, 0x2a, 0x06, 0x08, 0x9f, 0x04, 0x10, 0xa0, 0x04, 0x2a, 0x06,
-	0x08, 0xa0, 0x04, 0x10, 0xa1, 0x04, 0x2a, 0x06, 0x08, 0xa1, 0x04, 0x10, 0xa2, 0x04, 0x2a, 0x06,
-	0x08, 0xa2, 0x04, 0x10, 0xa3, 0x04, 0x2a, 0x06, 0x08, 0xa3, 0x04, 0x10, 0xa4, 0x04, 0x2a, 0x06,
-	0x08, 0xa4, 0x04, 0x10, 0xa5, 0x04, 0x2a, 0x06, 0x08, 0xa5, 0x04, 0x10, 0xa6, 0x04, 0x2a, 0x06,
-	0x08, 0xa6, 0x04, 0x10, 0xa7, 0x04, 0x2a, 0x06, 0x08, 0xa7, 0x04, 0x10, 0xa8, 0x04, 0x2a, 0x06,
-	0x08, 0xa8, 0x04, 0x10, 0xa9, 0x04, 0x2a, 0x06, 0x08, 0xa9, 0x04, 0x10, 0xaa, 0x04, 0x2a, 0x06,
-	0x08, 0xaa, 0x04, 0x10, 0xab, 0x04, 0x2a, 0x06, 0x08, 0xab, 0x04, 0x10, 0xac, 0x04, 0x2a, 0x06,
-	0x08, 0xac, 0x04, 0x10, 0xad, 0x04, 0x2a, 0x06, 0x08, 0xad, 0x04, 0x10, 0xae, 0x04, 0x2a, 0x06,
-	0x08, 0xae, 0x04, 0x10, 0xaf, 0x04, 0x2a, 0x06, 0x08, 0xaf, 0x04, 0x10, 0xb0, 0x04, 0x2a, 0x06,
-	0x08, 0xb0, 0x04, 0x10, 0xb1, 0x04, 0x2a, 0x06, 0x08, 0xb1, 0x04, 0x10, 0xb2, 0x04, 0x2a, 0x06,
-	0x08, 0xb2, 0x04, 0x10, 0xb3, 0x04, 0x2a, 0x06, 0x08, 0xb3, 0x04, 0x10, 0xb4, 0x04, 0x2a, 0x06,
-	0x08, 0xb4, 0x04, 0x10, 0xb5, 0x04, 0x2a, 0x06, 0x08, 0xb5, 0x04, 0x10, 0xb6, 0x04, 0x2a, 0x06,
-	0x08, 0xb6, 0x04, 0x10, 0xb7, 0x04, 0x2a, 0x06, 0x08, 0xb7, 0x04, 0x10, 0xb8, 0x04, 0x2a, 0x06,
-	0x08, 0xb8, 0x04, 0x10, 0xb9, 0x04, 0x2a, 0x06, 0x08, 0xb9, 0x04, 0x10, 0xba, 0x04, 0x2a, 0x06,
-	0x08, 0xba, 0x04, 0x10, 0xbb, 0x04, 0x2a, 0x06, 0x08, 0xbb, 0x04, 0x10, 0xbc, 0x04, 0x2a, 0x06,
-	0x08, 0xbc, 0x04, 0x10, 0xbd, 0x04, 0x2a, 0x06, 0x08, 0xbd, 0x04, 0x10, 0xbe, 0x04, 0x2a, 0x06,
-	0x08, 0xbe, 0x04, 0x10, 0xbf, 0x04, 0x2a, 0x06, 0x08, 0xbf, 0x04, 0x10, 0xc0, 0x04, 0x2a, 0x06,
-	0x08, 0xc0, 0x04, 0x10, 0xc1, 0x04, 0x2a, 0x06, 0x08, 0xc1, 0x04, 0x10, 0xc2, 0x04, 0x2a, 0x06,
-	0x08, 0xc2, 0x04, 0x10, 0xc3, 0x04, 0x2a, 0x06, 0x08, 0xc3, 0x04, 0x10, 0xc4, 0x04, 0x2a, 0x06,
-	0x08, 0xc4, 0x04, 0x10, 0xc5, 0x04, 0x2a, 0x06, 0x08, 0xc5, 0x04, 0x10, 0xc6, 0x04, 0x2a, 0x06,
-	0x08, 0xc6, 0x04, 0x10, 0xc7, 0x04, 0x2a, 0x06, 0x08, 0xc7, 0x04, 0x10, 0xc8, 0x04, 0x2a, 0x06,
-	0x08, 0xc8, 0x04, 0x10, 0xc9, 0x04, 0x2a, 0x06, 0x08, 0xc9, 0x04, 0x10, 0xca, 0x04, 0x2a, 0x06,
-	0x08, 0xca, 0x04, 0x10, 0xcb, 0x04, 0x2a, 0x06, 0x08, 0xcb, 0x04, 0x10, 0xcc, 0x04, 0x2a, 0x06,
-	0x08, 0xcc, 0x04, 0x10, 0xcd, 0x04, 0x2a, 0x06, 0x08, 0xcd, 0x04, 0x10, 0xce, 0x04, 0x2a, 0x06,
-	0x08, 0xce, 0x04, 0x10, 0xcf, 0x04, 0x2a, 0x06, 0x08, 0xdc, 0x04, 0x10, 0xdd, 0x04, 0x2a, 0x06,
-	0x08, 0xdd, 0x04, 0x10, 0xde, 0x04, 0x2a, 0x06, 0x08, 0xde, 0x04, 0x10, 0xdf, 0x04, 0x2a, 0x06,
-	0x08, 0xdf, 0x04, 0x10, 0xe0, 0x04, 0x2a, 0x06, 0x08, 0xe0, 0x04, 0x10, 0xe1, 0x04, 0x2a, 0x06,
-	0x08, 0xe1, 0x04, 0x10, 0xe2, 0x04, 0x2a, 0x06, 0x08, 0xe2, 0x04, 0x10, 0xe3, 0x04, 0x2a, 0x06,
-	0x08, 0xe3, 0x04, 0x10, 0xe4, 0x04, 0x2a, 0x06, 0x08, 0xe4, 0x04, 0x10, 0xe5, 0x04, 0x2a, 0x06,
-	0x08, 0xe5, 0x04, 0x10, 0xe6, 0x04, 0x2a, 0x06, 0x08, 0xe6, 0x04, 0x10, 0xe7, 0x04, 0x2a, 0x06,
-	0x08, 0xe7, 0x04, 0x10, 0xe8, 0x04, 0x2a, 0x06, 0x08, 0xe8, 0x04, 0x10, 0xe9, 0x04, 0x2a, 0x06,
-	0x08, 0xe9, 0x04, 0x10, 0xea, 0x04, 0x2a, 0x06, 0x08, 0xea, 0x04, 0x10, 0xeb, 0x04, 0x2a, 0x06,
-	0x08, 0xeb, 0x04, 0x10, 0xec, 0x04, 0x2a, 0x06, 0x08, 0xec, 0x04, 0x10, 0xed, 0x04, 0x2a, 0x06,
-	0x08, 0xed, 0x04, 0x10, 0xee, 0x04, 0x2a, 0x06, 0x08, 0xee, 0x04, 0x10, 0xef, 0x04, 0x2a, 0x06,
-	0x08, 0xef, 0x04, 0x10, 0xf0, 0x04, 0x2a, 0x06, 0x08, 0xf0, 0x04, 0x10, 0xf1, 0x04, 0x2a, 0x06,
-	0x08, 0xf1, 0x04, 0x10, 0xf2, 0x04, 0x2a, 0x06, 0x08, 0xf2, 0x04, 0x10, 0xf3, 0x04, 0x2a, 0x06,
-	0x08, 0xf3, 0x04, 0x10, 0xf4, 0x04, 0x2a, 0x06, 0x08, 0xf4, 0x04, 0x10, 0xf5, 0x04, 0x2a, 0x06,
-	0x08, 0xf5, 0x04, 0x10, 0xf6, 0x04, 0x2a, 0x06, 0x08, 0xad, 0x06, 0x10, 0xae, 0x06, 0x2a, 0x06,
-	0x08, 0xae, 0x06, 0x10, 0xaf, 0x06, 0x2a, 0x06, 0x08, 0xaf, 0x06, 0x10, 0xb0, 0x06, 0x2a, 0x06,
-	0x08, 0xb0, 0x06, 0x10, 0xb1, 0x06, 0x2a, 0x06, 0x08, 0xb1, 0x06, 0x10, 0xb2, 0x06, 0x2a, 0x06,
-	0x08, 0xb2, 0x06, 0x10, 0xb3, 0x06, 0x2a, 0x06, 0x08, 0xb3, 0x06, 0x10, 0xb4, 0x06, 0x2a, 0x06,
-	0x08, 0xb4, 0x06, 0x10, 0xb5, 0x06, 0x2a, 0x06, 0x08, 0xb5, 0x06, 0x10, 0xb6, 0x06, 0x2a, 0x06,
-	0x08, 0xb6, 0x06, 0x10, 0xb7, 0x06, 0x2a, 0x06, 0x08, 0xb7, 0x06, 0x10, 0xb8, 0x06, 0x2a, 0x06,
-	0x08, 0xb8, 0x06, 0x10, 0xb9, 0x06, 0x2a, 0x06, 0x08, 0xbb, 0x06, 0x10, 0xbc, 0x06, 0x2a, 0x06,
-	0x08, 0xbc, 0x06, 0x10, 0xbd, 0x06, 0x2a, 0x06, 0x08, 0xbd, 0x06, 0x10, 0xbe, 0x06, 0x2a, 0x06,
-	0x08, 0xbe, 0x06, 0x10, 0xbf, 0x06, 0x2a, 0x06, 0x08, 0xbf, 0x06, 0x10, 0xc0, 0x06, 0x2a, 0x06,
-	0x08, 0xc0, 0x06, 0x10, 0xc1, 0x06, 0x2a, 0x06, 0x08, 0xc1, 0x06, 0x10, 0xc2, 0x06, 0x2a, 0x06,
-	0x08, 0xc2, 0x06, 0x10, 0xc3, 0x06, 0x2a, 0x06, 0x08, 0xc3, 0x06, 0x10, 0xc4, 0x06, 0x2a, 0x06,
-	0x08, 0xc4, 0x06, 0x10, 0xc5, 0x06, 0x2a, 0x06, 0x08, 0xc5, 0x06, 0x10, 0xc6, 0x06, 0x2a, 0x06,
-	0x08, 0xc6, 0x06, 0x10, 0xc7, 0x06, 0x2a, 0x06, 0x08, 0xc7, 0x06, 0x10, 0xc8, 0x06, 0x2a, 0x06,
-	0x08, 0xc8, 0x06, 0x10, 0xc9, 0x06, 0x2a, 0x06, 0x08, 0xc9, 0x06, 0x10, 0xca, 0x06, 0x2a, 0x06,
-	0x08, 0xca, 0x06, 0x10, 0xcb, 0x06, 0x2a, 0x06, 0x08, 0xcb, 0x06, 0x10, 0xcc, 0x06, 0x2a, 0x06,
-	0x08, 0xcc, 0x06, 0x10, 0xcd, 0x06, 0x2a, 0x06, 0x08, 0xcd, 0x06, 0x10, 0xce, 0x06, 0x2a, 0x06,
-	0x08, 0xce, 0x06, 0x10, 0xcf, 0x06, 0x2a, 0x06, 0x08, 0xcf, 0x06, 0x10, 0xd0, 0x06, 0x2a, 0x06,
-	0x08, 0xd0, 0x06, 0x10, 0xd1, 0x06, 0x2a, 0x06, 0x08, 0xd1, 0x06, 0x10, 0xd2, 0x06, 0x2a, 0x06,
-	0x08, 0xd2, 0x06, 0x10, 0xd3, 0x06, 0x2a, 0x06, 0x08, 0xd3, 0x06, 0x10, 0xd4, 0x06, 0x2a, 0x06,
-	0x08, 0xd4, 0x06, 0x10, 0xd5, 0x06, 0x2a, 0x06, 0x08, 0xd5, 0x06, 0x10, 0xd6, 0x06, 0x2a, 0x06,
-	0x08, 0xd6, 0x06, 0x10, 0xd7, 0x06, 0x2a, 0x06, 0x08, 0xd7, 0x06, 0x10, 0xd8, 0x06, 0x2a, 0x06,
-	0x08, 0xd8, 0x06, 0x10, 0xd9, 0x06, 0x2a, 0x06, 0x08, 0xd9, 0x06, 0x10, 0xda, 0x06, 0x2a, 0x06,
-	0x08, 0xda, 0x06, 0x10, 0xdb, 0x06, 0x2a, 0x06, 0x08, 0xdb, 0x06, 0x10, 0xdc, 0x06, 0x2a, 0x06,
-	0x08, 0xdc, 0x06, 0x10, 0xdd, 0x06, 0x2a, 0x06, 0x08, 0xdd, 0x06, 0x10, 0xde, 0x06, 0x2a, 0x06,
-	0x08, 0xde, 0x06, 0x10, 0xdf, 0x06, 0x2a, 0x06, 0x08, 0xdf, 0x06, 0x10, 0xe0, 0x06, 0x2a, 0x06,
-	0x08, 0xe0, 0x06, 0x10, 0xe1, 0x06, 0x2a, 0x06, 0x08, 0xe1, 0x06, 0x10, 0xe2, 0x06, 0x2a, 0x06,
-	0x08, 0xe2, 0x06, 0x10, 0xe3, 0x06, 0x2a, 0x06, 0x08, 0xe3, 0x06, 0x10, 0xe4, 0x06, 0x2a, 0x06,
-	0x08, 0xe4, 0x06, 0x10, 0xe5, 0x06, 0x2a, 0x06, 0x08, 0xe5, 0x06, 0x10, 0xe6, 0x06, 0x2a, 0x06,
-	0x08, 0xe6, 0x06, 0x10, 0xe7, 0x06, 0x2a, 0x06, 0x08, 0xe7, 0x06, 0x10, 0xe8, 0x06, 0x2a, 0x06,
-	0x08, 0xf0, 0x06, 0x10, 0xf1, 0x06, 0x2a, 0x06, 0x08, 0xf1, 0x06, 0x10, 0xf2, 0x06, 0x2a, 0x06,
-	0x08, 0xf2, 0x06, 0x10, 0xf3, 0x06, 0x2a, 0x06, 0x08, 0xf3, 0x06, 0x10, 0xf4, 0x06, 0x2a, 0x06,
-	0x08, 0xf4, 0x06, 0x10, 0xf5, 0x06, 0x2a, 0x06, 0x08, 0xf5, 0x06, 0x10, 0xf6, 0x06, 0x2a, 0x06,
-	0x08, 0xf6, 0x06, 0x10, 0xf7, 0x06, 0x2a, 0x06, 0x08, 0xf7, 0x06, 0x10, 0xf8, 0x06, 0x2a, 0x06,
-	0x08, 0xf8, 0x06, 0x10, 0xf9, 0x06, 0x2a, 0x06, 0x08, 0xfa, 0x06, 0x10, 0xfb, 0x06, 0x2a, 0x06,
-	0x08, 0xfb, 0x06, 0x10, 0xfc, 0x06, 0x2a, 0x06, 0x08, 0xfc, 0x06, 0x10, 0xfd, 0x06, 0x2a, 0x06,
-	0x08, 0x90, 0x07, 0x10, 0x91, 0x07, 0x2a, 0x06, 0x08, 0x92, 0x07, 0x10, 0x93, 0x07, 0x2a, 0x06,
-	0x08, 0x93, 0x07, 0x10, 0x94, 0x07, 0x2a, 0x06, 0x08, 0x94, 0x07, 0x10, 0x95, 0x07, 0x2a, 0x06,
-	0x08, 0x95, 0x07, 0x10, 0x96, 0x07, 0x2a, 0x06, 0x08, 0x96, 0x07, 0x10, 0x97, 0x07, 0x2a, 0x06,
-	0x08, 0x97, 0x07, 0x10, 0x98, 0x07, 0x2a, 0x06, 0x08, 0x98, 0x07, 0x10, 0x99, 0x07, 0x2a, 0x06,
-	0x08, 0x99, 0x07, 0x10, 0x9a, 0x07, 0x2a, 0x06, 0x08, 0x9a, 0x07, 0x10, 0x9b, 0x07, 0x2a, 0x06,
-	0x08, 0x9b, 0x07, 0x10, 0x9c, 0x07, 0x2a, 0x06, 0x08, 0x9c, 0x07, 0x10, 0x9d, 0x07, 0x2a, 0x06,
-	0x08, 0x9d, 0x07, 0x10, 0x9e, 0x07, 0x2a, 0x06, 0x08, 0x9e, 0x07, 0x10, 0x9f, 0x07, 0x2a, 0x06,
-	0x08, 0x9f, 0x07, 0x10, 0xa0, 0x07, 0x2a, 0x06, 0x08, 0xa0, 0x07, 0x10, 0xa1, 0x07, 0x2a, 0x06,
-	0x08, 0xa1, 0x07, 0x10, 0xa2, 0x07, 0x2a, 0x06, 0x08, 0xa2, 0x07, 0x10, 0xa3, 0x07, 0x2a, 0x06,
-	0x08, 0xa3, 0x07, 0x10, 0xa4, 0x07, 0x2a, 0x06, 0x08, 0xa4, 0x07, 0x10, 0xa5, 0x07, 0x2a, 0x06,
-	0x08, 0xa5, 0x07, 0x10, 0xa6, 0x07, 0x2a, 0x06, 0x08, 0xa6, 0x07, 0x10, 0xa7, 0x07, 0x2a, 0x06,
-	0x08, 0xa7, 0x07, 0x10, 0xa8, 0x07, 0x2a, 0x06, 0x08, 0xa8, 0x07, 0x10, 0xa9, 0x07, 0x2a, 0x06,
-	0x08, 0xa9, 0x07, 0x10, 0xaa, 0x07, 0x2a, 0x06, 0x08, 0xaa, 0x07, 0x10, 0xab, 0x07, 0x2a, 0x06,
-	0x08, 0xab, 0x07, 0x10, 0xac, 0x07, 0x2a, 0x06, 0x08, 0xac, 0x07, 0x10, 0xad, 0x07, 0x2a, 0x06,
-	0x08, 0xad, 0x07, 0x10, 0xae, 0x07, 0x2a, 0x06, 0x08, 0xae, 0x07, 0x10, 0xaf, 0x07, 0x2a, 0x06,
-	0x08, 0xaf, 0x07, 0x10, 0xb0, 0x07, 0x2a, 0x06, 0x08, 0xb0, 0x07, 0x10, 0xb1, 0x07, 0x2a, 0x06,
-	0x08, 0xb1, 0x07, 0x10, 0xb2, 0x07, 0x2a, 0x06, 0x08, 0xb2, 0x07, 0x10, 0xb3, 0x07, 0x2a, 0x06,
-	0x08, 0xb3, 0x07, 0x10, 0xb4, 0x07, 0x2a, 0x06, 0x08, 0xb5, 0x07, 0x10, 0xb6, 0x07, 0x2a, 0x06,
-	0x08, 0xb6, 0x07, 0x10, 0xb7, 0x07, 0x2a, 0x06, 0x08, 0xb7, 0x07, 0x10, 0xb8, 0x07, 0x2a, 0x06,
-	0x08, 0xb8, 0x07, 0x10, 0xb9, 0x07, 0x2a, 0x06, 0x08, 0xba, 0x07, 0x10, 0xbb, 0x07, 0x2a, 0x06,
-	0x08, 0xbb, 0x07, 0x10, 0xbc, 0x07, 0x2a, 0x06, 0x08, 0xbc, 0x07, 0x10, 0xbd, 0x07, 0x2a, 0x06,
-	0x08, 0xbd, 0x07, 0x10, 0xbe, 0x07, 0x2a, 0x06, 0x08, 0xbe, 0x07, 0x10, 0xbf, 0x07, 0x2a, 0x06,
-	0x08, 0xbf, 0x07, 0x10, 0xc0, 0x07, 0x2a, 0x06, 0x08, 0xc0, 0x07, 0x10, 0xc1, 0x07, 0x2a, 0x06,
-	0x08, 0xc1, 0x07, 0x10, 0xc2, 0x07, 0x2a, 0x06, 0x08, 0xc2, 0x07, 0x10, 0xc3, 0x07, 0x2a, 0x06,
-	0x08, 0xc3, 0x07, 0x10, 0xc4, 0x07, 0x2a, 0x06, 0x08, 0xc4, 0x07, 0x10, 0xc5, 0x07, 0x2a, 0x06,
-	0x08, 0xc5, 0x07, 0x10, 0xc6, 0x07, 0x2a, 0x06, 0x08, 0xc6, 0x07, 0x10, 0xc7, 0x07, 0x2a, 0x06,
-	0x08, 0xc7, 0x07, 0x10, 0xc8, 0x07, 0x2a, 0x06, 0x08, 0xc8, 0x07, 0x10, 0xc9, 0x07, 0x2a, 0x06,
-	0x08, 0xc9, 0x07, 0x10, 0xca, 0x07, 0x2a, 0x06, 0x08, 0xca, 0x07, 0x10, 0xcb, 0x07, 0x2a, 0x06,
-	0x08, 0xcb, 0x07, 0x10, 0xcc, 0x07, 0x2a, 0x06, 0x08, 0xcc, 0x07, 0x10, 0xcd, 0x07, 0x2a, 0x06,
-	0x08, 0xcd, 0x07, 0x10, 0xce, 0x07, 0x2a, 0x06, 0x08, 0xce, 0x07, 0x10, 0xcf, 0x07, 0x2a, 0x06,
-	0x08, 0xcf, 0x07, 0x10, 0xd0, 0x07, 0x2a, 0x06, 0x08, 0xd0, 0x07, 0x10, 0xd1, 0x07, 0x2a, 0x06,
-	0x08, 0xd1, 0x07, 0x10, 0xd2, 0x07, 0x2a, 0x06, 0x08, 0xd2, 0x07, 0x10, 0xd3, 0x07, 0x2a, 0x06,
-	0x08, 0xd3, 0x07, 0x10, 0xd4, 0x07, 0x2a, 0x06, 0x08, 0xd4, 0x07, 0x10, 0xd5, 0x07, 0x2a, 0x06,
-	0x08, 0xd5, 0x07, 0x10, 0xd6, 0x07, 0x2a, 0x06, 0x08, 0xd6, 0x07, 0x10, 0xd7, 0x07, 0x2a, 0x06,
-	0x08, 0xd7, 0x07, 0x10, 0xd8, 0x07, 0x2a, 0x06, 0x08, 0xd8, 0x07, 0x10, 0xd9, 0x07, 0x2a, 0x06,
-	0x08, 0xd9, 0x07, 0x10, 0xda, 0x07, 0x2a, 0x06, 0x08, 0xdb, 0x07, 0x10, 0xdc, 0x07, 0x2a, 0x06,
-	0x08, 0xdc, 0x07, 0x10, 0xdd, 0x07, 0x2a, 0x06, 0x08, 0xe8, 0x07, 0x10, 0xe9, 0x07, 0x2a, 0x06,
-	0x08, 0xe9, 0x07, 0x10, 0xea, 0x07, 0x2a, 0x06, 0x08, 0xea, 0x07, 0x10, 0xeb, 0x07, 0x2a, 0x06,
-	0x08, 0xeb, 0x07, 0x10, 0xec, 0x07, 0x2a, 0x06, 0x08, 0xec, 0x07, 0x10, 0xed, 0x07, 0x2a, 0x06,
-	0x08, 0xed, 0x07, 0x10, 0xee, 0x07, 0x2a, 0x06, 0x08, 0xee, 0x07, 0x10, 0xef, 0x07, 0x2a, 0x06,
-	0x08, 0xef, 0x07, 0x10, 0xf0, 0x07, 0x2a, 0x06, 0x08, 0xf0, 0x07, 0x10, 0xf1, 0x07, 0x2a, 0x06,
-	0x08, 0xf1, 0x07, 0x10, 0xf2, 0x07, 0x2a, 0x06, 0x08, 0xf2, 0x07, 0x10, 0xf3, 0x07, 0x2a, 0x06,
-	0x08, 0xf3, 0x07, 0x10, 0xf4, 0x07, 0x2a, 0x06, 0x08, 0xf4, 0x07, 0x10, 0xf5, 0x07, 0x2a, 0x06,
-	0x08, 0xf5, 0x07, 0x10, 0xf6, 0x07, 0x2a, 0x06, 0x08, 0xf6, 0x07, 0x10, 0xf7, 0x07, 0x2a, 0x06,
-	0x08, 0xf7, 0x07, 0x10, 0xf8, 0x07, 0x2a, 0x06, 0x08, 0xf8, 0x07, 0x10, 0xf9, 0x07, 0x2a, 0x06,
-	0x08, 0xf9, 0x07, 0x10, 0xfa, 0x07, 0x2a, 0x06, 0x08, 0xfa, 0x07, 0x10, 0xfb, 0x07, 0x2a, 0x06,
-	0x08, 0xfb, 0x07, 0x10, 0xfc, 0x07, 0x2a, 0x06, 0x08, 0xfc, 0x07, 0x10, 0xfd, 0x07, 0x2a, 0x06,
-	0x08, 0xfd, 0x07, 0x10, 0xfe, 0x07, 0x2a, 0x06, 0x08, 0xfe, 0x07, 0x10, 0xff, 0x07, 0x2a, 0x06,
-	0x08, 0xff, 0x07, 0x10, 0x80, 0x08, 0x2a, 0x06, 0x08, 0x80, 0x08, 0x10, 0x81, 0x08, 0x2a, 0x06,
-	0x08, 0x81, 0x08, 0x10, 0x82, 0x08, 0x2a, 0x06, 0x08, 0x82, 0x08, 0x10, 0x83, 0x08, 0x2a, 0x06,
-	0x08, 0x83, 0x08, 0x10, 0x84, 0x08, 0x2a, 0x06, 0x08, 0x84, 0x08, 0x10, 0x85, 0x08, 0x2a, 0x06,
-	0x08, 0x85, 0x08, 0x10, 0x86, 0x08, 0x2a, 0x06, 0x08, 0x86, 0x08, 0x10, 0x87, 0x08, 0x2a, 0x06,
-	0x08, 0x87, 0x08, 0x10, 0x88, 0x08, 0x2a, 0x06, 0x08, 0x88, 0x08, 0x10, 0x89, 0x08, 0x2a, 0x06,
-	0x08, 0x89, 0x08, 0x10, 0x8a, 0x08, 0x2a, 0x06, 0x08, 0x8a, 0x08, 0x10, 0x8b, 0x08, 0x2a, 0x06,
-	0x08, 0x8b, 0x08, 0x10, 0x8c, 0x08, 0x2a, 0x06, 0x08, 0x8c, 0x08, 0x10, 0x8d, 0x08, 0x2a, 0x06,
-	0x08, 0x8d, 0x08, 0x10, 0x8e, 0x08, 0x2a, 0x06, 0x08, 0x8e, 0x08, 0x10, 0x8f, 0x08, 0x2a, 0x06,
-	0x08, 0x8f, 0x08, 0x10, 0x90, 0x08, 0x2a, 0x06, 0x08, 0x90, 0x08, 0x10, 0x91, 0x08, 0x2a, 0x06,
-	0x08, 0x91, 0x08, 0x10, 0x92, 0x08, 0x2a, 0x06, 0x08, 0x92, 0x08, 0x10, 0x93, 0x08, 0x2a, 0x06,
-	0x08, 0x93, 0x08, 0x10, 0x94, 0x08, 0x2a, 0x06, 0x08, 0x94, 0x08, 0x10, 0x95, 0x08, 0x2a, 0x06,
-	0x08, 0x95, 0x08, 0x10, 0x96, 0x08, 0x2a, 0x06, 0x08, 0x96, 0x08, 0x10, 0x97, 0x08, 0x2a, 0x06,
-	0x08, 0x97, 0x08, 0x10, 0x98, 0x08, 0x2a, 0x06, 0x08, 0x98, 0x08, 0x10, 0x99, 0x08, 0x2a, 0x06,
-	0x08, 0x99, 0x08, 0x10, 0x9a, 0x08, 0x2a, 0x06, 0x08, 0x9a, 0x08, 0x10, 0x9b, 0x08, 0x2a, 0x06,
-	0x08, 0x9b, 0x08, 0x10, 0x9c, 0x08, 0x2a, 0x06, 0x08, 0x9c, 0x08, 0x10, 0x9d, 0x08, 0x2a, 0x06,
-	0x08, 0x9d, 0x08, 0x10, 0x9e, 0x08, 0x2a, 0x06, 0x08, 0x9e, 0x08, 0x10, 0x9f, 0x08, 0x2a, 0x06,
-	0x08, 0x9f, 0x08, 0x10, 0xa0, 0x08, 0x2a, 0x06, 0x08, 0xa0, 0x08, 0x10, 0xa1, 0x08, 0x2a, 0x06,
-	0x08, 0xa1, 0x08, 0x10, 0xa2, 0x08, 0x2a, 0x06, 0x08, 0xa2, 0x08, 0x10, 0xa3, 0x08, 0x2a, 0x06,
-	0x08, 0xb7, 0x08, 0x10, 0xb8, 0x08, 0x2a, 0x06, 0x08, 0xb8, 0x08, 0x10, 0xb9, 0x08, 0x2a, 0x06,
-	0x08, 0xb9, 0x08, 0x10, 0xba, 0x08, 0x2a, 0x06, 0x08, 0xba, 0x08, 0x10, 0xbb, 0x08, 0x2a, 0x06,
-	0x08, 0xbb, 0x08, 0x10, 0xbc, 0x08, 0x2a, 0x06, 0x08, 0xbc, 0x08, 0x10, 0xbd, 0x08, 0x2a, 0x06,
-	0x08, 0xbd, 0x08, 0x10, 0xbe, 0x08, 0x32, 0x71, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x37, 0x30, 0x32, 0x35, 0x12, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x18, 0xa4, 0xf7, 0xc2, 0x0a, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x39, 0x34, 0x35, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x37, 0x30, 0x32, 0x35, 0x42, 0x23, 0x0a, 0x1e, 0x63, 0x6f, 0x6d,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0xf8, 0x01, 0x01,
-}
-
-var (
-	file_datasets_google_message3_benchmark_message3_1_proto_rawDescOnce sync.Once
-	file_datasets_google_message3_benchmark_message3_1_proto_rawDescData = file_datasets_google_message3_benchmark_message3_1_proto_rawDesc
-)
-
-func file_datasets_google_message3_benchmark_message3_1_proto_rawDescGZIP() []byte {
-	file_datasets_google_message3_benchmark_message3_1_proto_rawDescOnce.Do(func() {
-		file_datasets_google_message3_benchmark_message3_1_proto_rawDescData = protoimpl.X.CompressGZIP(file_datasets_google_message3_benchmark_message3_1_proto_rawDescData)
-	})
-	return file_datasets_google_message3_benchmark_message3_1_proto_rawDescData
-}
-
-var file_datasets_google_message3_benchmark_message3_1_proto_msgTypes = make([]protoimpl.MessageInfo, 59)
-var file_datasets_google_message3_benchmark_message3_1_proto_goTypes = []interface{}{
-	(*Message34390)(nil),              // 0: benchmarks.google_message3.Message34390
-	(*Message34624)(nil),              // 1: benchmarks.google_message3.Message34624
-	(*Message34791)(nil),              // 2: benchmarks.google_message3.Message34791
-	(*Message35483)(nil),              // 3: benchmarks.google_message3.Message35483
-	(*Message35807)(nil),              // 4: benchmarks.google_message3.Message35807
-	(*Message37487)(nil),              // 5: benchmarks.google_message3.Message37487
-	(*Message13062)(nil),              // 6: benchmarks.google_message3.Message13062
-	(*Message952)(nil),                // 7: benchmarks.google_message3.Message952
-	(*Message36876)(nil),              // 8: benchmarks.google_message3.Message36876
-	(*Message1328)(nil),               // 9: benchmarks.google_message3.Message1328
-	(*Message6850)(nil),               // 10: benchmarks.google_message3.Message6850
-	(*Message6863)(nil),               // 11: benchmarks.google_message3.Message6863
-	(*Message6871)(nil),               // 12: benchmarks.google_message3.Message6871
-	(*Message7547)(nil),               // 13: benchmarks.google_message3.Message7547
-	(*Message7648)(nil),               // 14: benchmarks.google_message3.Message7648
-	(*Message7865)(nil),               // 15: benchmarks.google_message3.Message7865
-	(*Message7928)(nil),               // 16: benchmarks.google_message3.Message7928
-	(*Message7919)(nil),               // 17: benchmarks.google_message3.Message7919
-	(*Message7920)(nil),               // 18: benchmarks.google_message3.Message7920
-	(*Message7921)(nil),               // 19: benchmarks.google_message3.Message7921
-	(*Message8511)(nil),               // 20: benchmarks.google_message3.Message8511
-	(*Message8512)(nil),               // 21: benchmarks.google_message3.Message8512
-	(*Message8513)(nil),               // 22: benchmarks.google_message3.Message8513
-	(*Message8514)(nil),               // 23: benchmarks.google_message3.Message8514
-	(*Message8515)(nil),               // 24: benchmarks.google_message3.Message8515
-	(*Message10320)(nil),              // 25: benchmarks.google_message3.Message10320
-	(*Message10321)(nil),              // 26: benchmarks.google_message3.Message10321
-	(*Message10322)(nil),              // 27: benchmarks.google_message3.Message10322
-	(*Message11988)(nil),              // 28: benchmarks.google_message3.Message11988
-	(*Message12668)(nil),              // 29: benchmarks.google_message3.Message12668
-	(*Message12825)(nil),              // 30: benchmarks.google_message3.Message12825
-	(*Message16478)(nil),              // 31: benchmarks.google_message3.Message16478
-	(*Message16552)(nil),              // 32: benchmarks.google_message3.Message16552
-	(*Message16660)(nil),              // 33: benchmarks.google_message3.Message16660
-	(*Message16727)(nil),              // 34: benchmarks.google_message3.Message16727
-	(*Message16725)(nil),              // 35: benchmarks.google_message3.Message16725
-	(*Message17726)(nil),              // 36: benchmarks.google_message3.Message17726
-	(*Message17782)(nil),              // 37: benchmarks.google_message3.Message17782
-	(*Message17783)(nil),              // 38: benchmarks.google_message3.Message17783
-	(*Message16945)(nil),              // 39: benchmarks.google_message3.Message16945
-	(*Message34791_Message34792)(nil), // 40: benchmarks.google_message3.Message34791.Message34792
-	(*Message36876_Message36877)(nil), // 41: benchmarks.google_message3.Message36876.Message36877
-	(*Message36876_Message36878)(nil), // 42: benchmarks.google_message3.Message36876.Message36878
-	(*Message36876_Message36879)(nil), // 43: benchmarks.google_message3.Message36876.Message36879
-	(*Message36876_Message36880)(nil), // 44: benchmarks.google_message3.Message36876.Message36880
-	(*Message36876_Message36881)(nil), // 45: benchmarks.google_message3.Message36876.Message36881
-	(*Message36876_Message36882)(nil), // 46: benchmarks.google_message3.Message36876.Message36882
-	(*Message36876_Message36883)(nil), // 47: benchmarks.google_message3.Message36876.Message36883
-	(*Message36876_Message36884)(nil), // 48: benchmarks.google_message3.Message36876.Message36884
-	(*Message36876_Message36885)(nil), // 49: benchmarks.google_message3.Message36876.Message36885
-	(*Message36876_Message36886)(nil), // 50: benchmarks.google_message3.Message36876.Message36886
-	(*Message36876_Message36887)(nil), // 51: benchmarks.google_message3.Message36876.Message36887
-	(*Message36876_Message36888)(nil), // 52: benchmarks.google_message3.Message36876.Message36888
-	(*Message36876_Message36889)(nil), // 53: benchmarks.google_message3.Message36876.Message36889
-	(*Message36876_Message36910)(nil), // 54: benchmarks.google_message3.Message36876.Message36910
-	(*Message36876_Message36911)(nil), // 55: benchmarks.google_message3.Message36876.Message36911
-	(*Message36876_Message36912)(nil), // 56: benchmarks.google_message3.Message36876.Message36912
-	(*Message17783_Message17784)(nil), // 57: benchmarks.google_message3.Message17783.Message17784
-	(*Message17783_Message17785)(nil), // 58: benchmarks.google_message3.Message17783.Message17785
-	(*Message34387)(nil),              // 59: benchmarks.google_message3.Message34387
-	(*Message34621)(nil),              // 60: benchmarks.google_message3.Message34621
-	(*Message35476)(nil),              // 61: benchmarks.google_message3.Message35476
-	(*UnusedEmptyMessage)(nil),        // 62: benchmarks.google_message3.UnusedEmptyMessage
-	(*Message949)(nil),                // 63: benchmarks.google_message3.Message949
-	(*Message2356)(nil),               // 64: benchmarks.google_message3.Message2356
-	(*Message7029)(nil),               // 65: benchmarks.google_message3.Message7029
-	(*Message35573)(nil),              // 66: benchmarks.google_message3.Message35573
-	(*Message4144)(nil),               // 67: benchmarks.google_message3.Message4144
-	(*Message18921)(nil),              // 68: benchmarks.google_message3.Message18921
-	(*Message36858)(nil),              // 69: benchmarks.google_message3.Message36858
-	(*Message18831)(nil),              // 70: benchmarks.google_message3.Message18831
-	(*Message18283)(nil),              // 71: benchmarks.google_message3.Message18283
-	(*Message0)(nil),                  // 72: benchmarks.google_message3.Message0
-	(*Message36869)(nil),              // 73: benchmarks.google_message3.Message36869
-	(UnusedEnum)(0),                   // 74: benchmarks.google_message3.UnusedEnum
-	(*Message13090)(nil),              // 75: benchmarks.google_message3.Message13090
-	(*Message10155)(nil),              // 76: benchmarks.google_message3.Message10155
-	(*Message11874)(nil),              // 77: benchmarks.google_message3.Message11874
-	(*Message35546)(nil),              // 78: benchmarks.google_message3.Message35546
-	(*Message19255)(nil),              // 79: benchmarks.google_message3.Message19255
-	(*Message33968)(nil),              // 80: benchmarks.google_message3.Message33968
-	(*Message6644)(nil),               // 81: benchmarks.google_message3.Message6644
-	(Enum6858)(0),                     // 82: benchmarks.google_message3.Enum6858
-	(*Message6773)(nil),               // 83: benchmarks.google_message3.Message6773
-	(Enum6815)(0),                     // 84: benchmarks.google_message3.Enum6815
-	(Enum6822)(0),                     // 85: benchmarks.google_message3.Enum6822
-	(*Message3886)(nil),               // 86: benchmarks.google_message3.Message3886
-	(*Message6743)(nil),               // 87: benchmarks.google_message3.Message6743
-	(*Message8224)(nil),               // 88: benchmarks.google_message3.Message8224
-	(*Message8301)(nil),               // 89: benchmarks.google_message3.Message8301
-	(*Message8302)(nil),               // 90: benchmarks.google_message3.Message8302
-	(*Message8392)(nil),               // 91: benchmarks.google_message3.Message8392
-	(*Message8130)(nil),               // 92: benchmarks.google_message3.Message8130
-	(*Message8479)(nil),               // 93: benchmarks.google_message3.Message8479
-	(*Message8478)(nil),               // 94: benchmarks.google_message3.Message8478
-	(Enum10335)(0),                    // 95: benchmarks.google_message3.Enum10335
-	(*Message10319)(nil),              // 96: benchmarks.google_message3.Message10319
-	(Enum10337)(0),                    // 97: benchmarks.google_message3.Enum10337
-	(*Message4016)(nil),               // 98: benchmarks.google_message3.Message4016
-	(*Message12669)(nil),              // 99: benchmarks.google_message3.Message12669
-	(*Message12818)(nil),              // 100: benchmarks.google_message3.Message12818
-	(*Message12819)(nil),              // 101: benchmarks.google_message3.Message12819
-	(*Message12820)(nil),              // 102: benchmarks.google_message3.Message12820
-	(*Message12821)(nil),              // 103: benchmarks.google_message3.Message12821
-	(*Message16479)(nil),              // 104: benchmarks.google_message3.Message16479
-	(Enum16553)(0),                    // 105: benchmarks.google_message3.Enum16553
-	(Enum16728)(0),                    // 106: benchmarks.google_message3.Enum16728
-	(Enum16732)(0),                    // 107: benchmarks.google_message3.Enum16732
-	(Enum16738)(0),                    // 108: benchmarks.google_message3.Enum16738
-	(*Message16722)(nil),              // 109: benchmarks.google_message3.Message16722
-	(Enum16698)(0),                    // 110: benchmarks.google_message3.Enum16698
-	(*Message16724)(nil),              // 111: benchmarks.google_message3.Message16724
-	(*Message17728)(nil),              // 112: benchmarks.google_message3.Message17728
-	(*Message13174)(nil),              // 113: benchmarks.google_message3.Message13174
-	(*Message13169)(nil),              // 114: benchmarks.google_message3.Message13169
-	(Enum36890)(0),                    // 115: benchmarks.google_message3.Enum36890
-	(*Message35538)(nil),              // 116: benchmarks.google_message3.Message35538
-	(*Message35540)(nil),              // 117: benchmarks.google_message3.Message35540
-	(*Message35542)(nil),              // 118: benchmarks.google_message3.Message35542
-	(*Message3901)(nil),               // 119: benchmarks.google_message3.Message3901
-}
-var file_datasets_google_message3_benchmark_message3_1_proto_depIdxs = []int32{
-	59,  // 0: benchmarks.google_message3.Message34390.field34452:type_name -> benchmarks.google_message3.Message34387
-	60,  // 1: benchmarks.google_message3.Message34624.field34683:type_name -> benchmarks.google_message3.Message34621
-	60,  // 2: benchmarks.google_message3.Message34624.field34684:type_name -> benchmarks.google_message3.Message34621
-	40,  // 3: benchmarks.google_message3.Message34791.message34792:type_name -> benchmarks.google_message3.Message34791.Message34792
-	61,  // 4: benchmarks.google_message3.Message35483.field35503:type_name -> benchmarks.google_message3.Message35476
-	62,  // 5: benchmarks.google_message3.Message35483.field35504:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	63,  // 6: benchmarks.google_message3.Message952.field963:type_name -> benchmarks.google_message3.Message949
-	64,  // 7: benchmarks.google_message3.Message36876.field36980:type_name -> benchmarks.google_message3.Message2356
-	41,  // 8: benchmarks.google_message3.Message36876.message36877:type_name -> benchmarks.google_message3.Message36876.Message36877
-	42,  // 9: benchmarks.google_message3.Message36876.message36878:type_name -> benchmarks.google_message3.Message36876.Message36878
-	43,  // 10: benchmarks.google_message3.Message36876.message36879:type_name -> benchmarks.google_message3.Message36876.Message36879
-	62,  // 11: benchmarks.google_message3.Message36876.field36984:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	44,  // 12: benchmarks.google_message3.Message36876.message36880:type_name -> benchmarks.google_message3.Message36876.Message36880
-	62,  // 13: benchmarks.google_message3.Message36876.field36988:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	65,  // 14: benchmarks.google_message3.Message36876.field36989:type_name -> benchmarks.google_message3.Message7029
-	66,  // 15: benchmarks.google_message3.Message36876.field36990:type_name -> benchmarks.google_message3.Message35573
-	62,  // 16: benchmarks.google_message3.Message36876.field36991:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 17: benchmarks.google_message3.Message36876.field36992:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 18: benchmarks.google_message3.Message36876.field36997:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 19: benchmarks.google_message3.Message36876.field37000:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	45,  // 20: benchmarks.google_message3.Message36876.message36881:type_name -> benchmarks.google_message3.Message36876.Message36881
-	67,  // 21: benchmarks.google_message3.Message36876.field37002:type_name -> benchmarks.google_message3.Message4144
-	46,  // 22: benchmarks.google_message3.Message36876.message36882:type_name -> benchmarks.google_message3.Message36876.Message36882
-	62,  // 23: benchmarks.google_message3.Message36876.field37004:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	68,  // 24: benchmarks.google_message3.Message36876.field37005:type_name -> benchmarks.google_message3.Message18921
-	69,  // 25: benchmarks.google_message3.Message36876.field37006:type_name -> benchmarks.google_message3.Message36858
-	70,  // 26: benchmarks.google_message3.Message36876.field37007:type_name -> benchmarks.google_message3.Message18831
-	62,  // 27: benchmarks.google_message3.Message36876.field37008:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	71,  // 28: benchmarks.google_message3.Message36876.field37009:type_name -> benchmarks.google_message3.Message18283
-	72,  // 29: benchmarks.google_message3.Message36876.field37012:type_name -> benchmarks.google_message3.Message0
-	72,  // 30: benchmarks.google_message3.Message36876.field37013:type_name -> benchmarks.google_message3.Message0
-	62,  // 31: benchmarks.google_message3.Message36876.field37014:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	73,  // 32: benchmarks.google_message3.Message36876.field37015:type_name -> benchmarks.google_message3.Message36869
-	47,  // 33: benchmarks.google_message3.Message36876.message36883:type_name -> benchmarks.google_message3.Message36876.Message36883
-	48,  // 34: benchmarks.google_message3.Message36876.message36884:type_name -> benchmarks.google_message3.Message36876.Message36884
-	49,  // 35: benchmarks.google_message3.Message36876.message36885:type_name -> benchmarks.google_message3.Message36876.Message36885
-	50,  // 36: benchmarks.google_message3.Message36876.message36886:type_name -> benchmarks.google_message3.Message36876.Message36886
-	74,  // 37: benchmarks.google_message3.Message36876.field37020:type_name -> benchmarks.google_message3.UnusedEnum
-	62,  // 38: benchmarks.google_message3.Message36876.field37022:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	75,  // 39: benchmarks.google_message3.Message36876.field37023:type_name -> benchmarks.google_message3.Message13090
-	51,  // 40: benchmarks.google_message3.Message36876.message36887:type_name -> benchmarks.google_message3.Message36876.Message36887
-	76,  // 41: benchmarks.google_message3.Message36876.field37025:type_name -> benchmarks.google_message3.Message10155
-	77,  // 42: benchmarks.google_message3.Message36876.field37026:type_name -> benchmarks.google_message3.Message11874
-	62,  // 43: benchmarks.google_message3.Message36876.field37029:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	78,  // 44: benchmarks.google_message3.Message36876.field37030:type_name -> benchmarks.google_message3.Message35546
-	52,  // 45: benchmarks.google_message3.Message36876.message36888:type_name -> benchmarks.google_message3.Message36876.Message36888
-	79,  // 46: benchmarks.google_message3.Message36876.field37032:type_name -> benchmarks.google_message3.Message19255
-	80,  // 47: benchmarks.google_message3.Message36876.field37033:type_name -> benchmarks.google_message3.Message33968
-	62,  // 48: benchmarks.google_message3.Message36876.field37035:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	81,  // 49: benchmarks.google_message3.Message36876.field37036:type_name -> benchmarks.google_message3.Message6644
-	53,  // 50: benchmarks.google_message3.Message36876.message36889:type_name -> benchmarks.google_message3.Message36876.Message36889
-	54,  // 51: benchmarks.google_message3.Message36876.message36910:type_name -> benchmarks.google_message3.Message36876.Message36910
-	55,  // 52: benchmarks.google_message3.Message36876.message36911:type_name -> benchmarks.google_message3.Message36876.Message36911
-	56,  // 53: benchmarks.google_message3.Message36876.message36912:type_name -> benchmarks.google_message3.Message36876.Message36912
-	62,  // 54: benchmarks.google_message3.Message36876.field37042:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	82,  // 55: benchmarks.google_message3.Message6863.field6931:type_name -> benchmarks.google_message3.Enum6858
-	82,  // 56: benchmarks.google_message3.Message6863.field6932:type_name -> benchmarks.google_message3.Enum6858
-	74,  // 57: benchmarks.google_message3.Message6863.field6933:type_name -> benchmarks.google_message3.UnusedEnum
-	83,  // 58: benchmarks.google_message3.Message6863.field6935:type_name -> benchmarks.google_message3.Message6773
-	84,  // 59: benchmarks.google_message3.Message6863.field6938:type_name -> benchmarks.google_message3.Enum6815
-	85,  // 60: benchmarks.google_message3.Message6863.field6941:type_name -> benchmarks.google_message3.Enum6822
-	62,  // 61: benchmarks.google_message3.Message6863.field6950:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 62: benchmarks.google_message3.Message6863.field6955:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 63: benchmarks.google_message3.Message6863.field6956:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	86,  // 64: benchmarks.google_message3.Message6863.field6957:type_name -> benchmarks.google_message3.Message3886
-	87,  // 65: benchmarks.google_message3.Message6863.field6960:type_name -> benchmarks.google_message3.Message6743
-	62,  // 66: benchmarks.google_message3.Message6863.field6961:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 67: benchmarks.google_message3.Message6863.field6962:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	74,  // 68: benchmarks.google_message3.Message7921.field7939:type_name -> benchmarks.google_message3.UnusedEnum
-	88,  // 69: benchmarks.google_message3.Message8511.field8539:type_name -> benchmarks.google_message3.Message8224
-	89,  // 70: benchmarks.google_message3.Message8512.field8544:type_name -> benchmarks.google_message3.Message8301
-	90,  // 71: benchmarks.google_message3.Message8512.field8545:type_name -> benchmarks.google_message3.Message8302
-	91,  // 72: benchmarks.google_message3.Message8513.field8550:type_name -> benchmarks.google_message3.Message8392
-	92,  // 73: benchmarks.google_message3.Message8514.field8557:type_name -> benchmarks.google_message3.Message8130
-	93,  // 74: benchmarks.google_message3.Message8515.field8559:type_name -> benchmarks.google_message3.Message8479
-	94,  // 75: benchmarks.google_message3.Message8515.field8560:type_name -> benchmarks.google_message3.Message8478
-	95,  // 76: benchmarks.google_message3.Message10320.field10347:type_name -> benchmarks.google_message3.Enum10335
-	96,  // 77: benchmarks.google_message3.Message10320.field10348:type_name -> benchmarks.google_message3.Message10319
-	97,  // 78: benchmarks.google_message3.Message10320.field10353:type_name -> benchmarks.google_message3.Enum10337
-	98,  // 79: benchmarks.google_message3.Message10322.field10357:type_name -> benchmarks.google_message3.Message4016
-	62,  // 80: benchmarks.google_message3.Message11988.field12023:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	76,  // 81: benchmarks.google_message3.Message11988.field12024:type_name -> benchmarks.google_message3.Message10155
-	99,  // 82: benchmarks.google_message3.Message12668.field12677:type_name -> benchmarks.google_message3.Message12669
-	100, // 83: benchmarks.google_message3.Message12825.field12862:type_name -> benchmarks.google_message3.Message12818
-	101, // 84: benchmarks.google_message3.Message12825.field12864:type_name -> benchmarks.google_message3.Message12819
-	102, // 85: benchmarks.google_message3.Message12825.field12865:type_name -> benchmarks.google_message3.Message12820
-	103, // 86: benchmarks.google_message3.Message12825.field12867:type_name -> benchmarks.google_message3.Message12821
-	62,  // 87: benchmarks.google_message3.Message12825.field12868:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	104, // 88: benchmarks.google_message3.Message16478.field16481:type_name -> benchmarks.google_message3.Message16479
-	105, // 89: benchmarks.google_message3.Message16552.field16567:type_name -> benchmarks.google_message3.Enum16553
-	106, // 90: benchmarks.google_message3.Message16727.field16782:type_name -> benchmarks.google_message3.Enum16728
-	107, // 91: benchmarks.google_message3.Message16727.field16789:type_name -> benchmarks.google_message3.Enum16732
-	108, // 92: benchmarks.google_message3.Message16727.field16793:type_name -> benchmarks.google_message3.Enum16738
-	109, // 93: benchmarks.google_message3.Message16727.field16795:type_name -> benchmarks.google_message3.Message16722
-	110, // 94: benchmarks.google_message3.Message16727.field16802:type_name -> benchmarks.google_message3.Enum16698
-	111, // 95: benchmarks.google_message3.Message16727.field16803:type_name -> benchmarks.google_message3.Message16724
-	62,  // 96: benchmarks.google_message3.Message16727.field16805:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	106, // 97: benchmarks.google_message3.Message16725.field16774:type_name -> benchmarks.google_message3.Enum16728
-	62,  // 98: benchmarks.google_message3.Message17726.field17812:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	112, // 99: benchmarks.google_message3.Message17726.field17820:type_name -> benchmarks.google_message3.Message17728
-	112, // 100: benchmarks.google_message3.Message17726.field17821:type_name -> benchmarks.google_message3.Message17728
-	62,  // 101: benchmarks.google_message3.Message17726.field17822:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	57,  // 102: benchmarks.google_message3.Message17783.message17784:type_name -> benchmarks.google_message3.Message17783.Message17784
-	58,  // 103: benchmarks.google_message3.Message17783.message17785:type_name -> benchmarks.google_message3.Message17783.Message17785
-	62,  // 104: benchmarks.google_message3.Message16945.field16951:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	72,  // 105: benchmarks.google_message3.Message16945.field16952:type_name -> benchmarks.google_message3.Message0
-	62,  // 106: benchmarks.google_message3.Message16945.field16953:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	72,  // 107: benchmarks.google_message3.Message16945.field16954:type_name -> benchmarks.google_message3.Message0
-	62,  // 108: benchmarks.google_message3.Message16945.field16960:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	72,  // 109: benchmarks.google_message3.Message16945.field16961:type_name -> benchmarks.google_message3.Message0
-	72,  // 110: benchmarks.google_message3.Message16945.field16962:type_name -> benchmarks.google_message3.Message0
-	62,  // 111: benchmarks.google_message3.Message16945.field16963:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 112: benchmarks.google_message3.Message16945.field16965:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 113: benchmarks.google_message3.Message16945.field16967:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	72,  // 114: benchmarks.google_message3.Message16945.field16969:type_name -> benchmarks.google_message3.Message0
-	62,  // 115: benchmarks.google_message3.Message16945.field16973:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 116: benchmarks.google_message3.Message16945.field16974:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	72,  // 117: benchmarks.google_message3.Message16945.field16977:type_name -> benchmarks.google_message3.Message0
-	62,  // 118: benchmarks.google_message3.Message16945.field16978:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 119: benchmarks.google_message3.Message16945.field16979:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 120: benchmarks.google_message3.Message16945.field16981:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 121: benchmarks.google_message3.Message16945.field16983:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 122: benchmarks.google_message3.Message16945.field16985:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 123: benchmarks.google_message3.Message16945.field16990:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 124: benchmarks.google_message3.Message16945.field16994:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 125: benchmarks.google_message3.Message16945.field17002:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 126: benchmarks.google_message3.Message16945.field17003:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 127: benchmarks.google_message3.Message16945.field17004:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 128: benchmarks.google_message3.Message16945.field17005:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 129: benchmarks.google_message3.Message16945.field17006:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 130: benchmarks.google_message3.Message16945.field17007:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 131: benchmarks.google_message3.Message16945.field17008:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 132: benchmarks.google_message3.Message16945.field17009:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	72,  // 133: benchmarks.google_message3.Message16945.field17010:type_name -> benchmarks.google_message3.Message0
-	62,  // 134: benchmarks.google_message3.Message16945.field17012:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 135: benchmarks.google_message3.Message16945.field17014:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	72,  // 136: benchmarks.google_message3.Message16945.field17015:type_name -> benchmarks.google_message3.Message0
-	72,  // 137: benchmarks.google_message3.Message16945.field17023:type_name -> benchmarks.google_message3.Message0
-	62,  // 138: benchmarks.google_message3.Message36876.Message36889.field37101:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	113, // 139: benchmarks.google_message3.Message36876.Message36889.field37102:type_name -> benchmarks.google_message3.Message13174
-	114, // 140: benchmarks.google_message3.Message36876.Message36889.field37103:type_name -> benchmarks.google_message3.Message13169
-	115, // 141: benchmarks.google_message3.Message36876.Message36889.field37105:type_name -> benchmarks.google_message3.Enum36890
-	62,  // 142: benchmarks.google_message3.Message36876.Message36889.field37108:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 143: benchmarks.google_message3.Message36876.Message36889.field37113:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 144: benchmarks.google_message3.Message36876.Message36889.field37115:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	74,  // 145: benchmarks.google_message3.Message36876.Message36889.field37116:type_name -> benchmarks.google_message3.UnusedEnum
-	74,  // 146: benchmarks.google_message3.Message36876.Message36889.field37117:type_name -> benchmarks.google_message3.UnusedEnum
-	62,  // 147: benchmarks.google_message3.Message36876.Message36911.field37121:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	116, // 148: benchmarks.google_message3.Message36876.Message36911.field37122:type_name -> benchmarks.google_message3.Message35538
-	117, // 149: benchmarks.google_message3.Message36876.Message36911.field37123:type_name -> benchmarks.google_message3.Message35540
-	118, // 150: benchmarks.google_message3.Message36876.Message36911.field37124:type_name -> benchmarks.google_message3.Message35542
-	119, // 151: benchmarks.google_message3.Message36876.Message36912.field37125:type_name -> benchmarks.google_message3.Message3901
-	119, // 152: benchmarks.google_message3.Message36876.Message36912.field37126:type_name -> benchmarks.google_message3.Message3901
-	38,  // 153: benchmarks.google_message3.Message17783.Message17785.field18170:type_name -> benchmarks.google_message3.Message17783
-	72,  // 154: benchmarks.google_message3.Message34390.field34453:extendee -> benchmarks.google_message3.Message0
-	72,  // 155: benchmarks.google_message3.Message34624.field34685:extendee -> benchmarks.google_message3.Message0
-	72,  // 156: benchmarks.google_message3.Message34791.field34807:extendee -> benchmarks.google_message3.Message0
-	72,  // 157: benchmarks.google_message3.Message35483.field35505:extendee -> benchmarks.google_message3.Message0
-	72,  // 158: benchmarks.google_message3.Message35807.field35818:extendee -> benchmarks.google_message3.Message0
-	72,  // 159: benchmarks.google_message3.Message16945.field17025:extendee -> benchmarks.google_message3.Message0
-	0,   // 160: benchmarks.google_message3.Message34390.field34453:type_name -> benchmarks.google_message3.Message34390
-	1,   // 161: benchmarks.google_message3.Message34624.field34685:type_name -> benchmarks.google_message3.Message34624
-	2,   // 162: benchmarks.google_message3.Message34791.field34807:type_name -> benchmarks.google_message3.Message34791
-	3,   // 163: benchmarks.google_message3.Message35483.field35505:type_name -> benchmarks.google_message3.Message35483
-	4,   // 164: benchmarks.google_message3.Message35807.field35818:type_name -> benchmarks.google_message3.Message35807
-	39,  // 165: benchmarks.google_message3.Message16945.field17025:type_name -> benchmarks.google_message3.Message16945
-	166, // [166:166] is the sub-list for method output_type
-	166, // [166:166] is the sub-list for method input_type
-	160, // [160:166] is the sub-list for extension type_name
-	154, // [154:160] is the sub-list for extension extendee
-	0,   // [0:154] is the sub-list for field type_name
-}
-
-func init() { file_datasets_google_message3_benchmark_message3_1_proto_init() }
-func file_datasets_google_message3_benchmark_message3_1_proto_init() {
-	if File_datasets_google_message3_benchmark_message3_1_proto != nil {
-		return
-	}
-	file_datasets_google_message3_benchmark_message3_2_proto_init()
-	file_datasets_google_message3_benchmark_message3_3_proto_init()
-	file_datasets_google_message3_benchmark_message3_5_proto_init()
-	file_datasets_google_message3_benchmark_message3_7_proto_init()
-	file_datasets_google_message3_benchmark_message3_8_proto_init()
-	if !protoimpl.UnsafeEnabled {
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message34390); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message34624); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message34791); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message35483); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message35807); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message37487); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message13062); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message952); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message36876); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message1328); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6850); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6863); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6871); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7547); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7648); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7865); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7928); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7919); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7920); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7921); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8511); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8512); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8513); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8514); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8515); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10320); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10321); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10322); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message11988); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12668); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12825); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message16478); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message16552); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message16660); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message16727); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message16725); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message17726); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message17782); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message17783); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message16945); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message34791_Message34792); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message36876_Message36877); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message36876_Message36878); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message36876_Message36879); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message36876_Message36880); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message36876_Message36881); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message36876_Message36882); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message36876_Message36883); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message36876_Message36884); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message36876_Message36885); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message36876_Message36886); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message36876_Message36887); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message36876_Message36888); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message36876_Message36889); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message36876_Message36910); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message36876_Message36911); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message36876_Message36912); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message17783_Message17784); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_1_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message17783_Message17785); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_datasets_google_message3_benchmark_message3_1_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   59,
-			NumExtensions: 6,
-			NumServices:   0,
-		},
-		GoTypes:           file_datasets_google_message3_benchmark_message3_1_proto_goTypes,
-		DependencyIndexes: file_datasets_google_message3_benchmark_message3_1_proto_depIdxs,
-		MessageInfos:      file_datasets_google_message3_benchmark_message3_1_proto_msgTypes,
-		ExtensionInfos:    file_datasets_google_message3_benchmark_message3_1_proto_extTypes,
-	}.Build()
-	File_datasets_google_message3_benchmark_message3_1_proto = out.File
-	file_datasets_google_message3_benchmark_message3_1_proto_rawDesc = nil
-	file_datasets_google_message3_benchmark_message3_1_proto_goTypes = nil
-	file_datasets_google_message3_benchmark_message3_1_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_2.pb.go b/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_2.pb.go
deleted file mode 100644
index fa70b20..0000000
--- a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_2.pb.go
+++ /dev/null
@@ -1,6330 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// LINT: ALLOW_GROUPS
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: datasets/google_message3/benchmark_message3_2.proto
-
-package google_message3
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Message22853 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field22869 *Enum22854          `protobuf:"varint,1,opt,name=field22869,enum=benchmarks.google_message3.Enum22854" json:"field22869,omitempty"`
-	Field22870 []uint32            `protobuf:"varint,2,rep,packed,name=field22870" json:"field22870,omitempty"`
-	Field22871 []float32           `protobuf:"fixed32,3,rep,packed,name=field22871" json:"field22871,omitempty"`
-	Field22872 []float32           `protobuf:"fixed32,5,rep,packed,name=field22872" json:"field22872,omitempty"`
-	Field22873 *UnusedEmptyMessage `protobuf:"bytes,4,opt,name=field22873" json:"field22873,omitempty"`
-}
-
-func (x *Message22853) Reset() {
-	*x = Message22853{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message22853) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message22853) ProtoMessage() {}
-
-func (x *Message22853) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message22853.ProtoReflect.Descriptor instead.
-func (*Message22853) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Message22853) GetField22869() Enum22854 {
-	if x != nil && x.Field22869 != nil {
-		return *x.Field22869
-	}
-	return Enum22854_ENUM_VALUE22855
-}
-
-func (x *Message22853) GetField22870() []uint32 {
-	if x != nil {
-		return x.Field22870
-	}
-	return nil
-}
-
-func (x *Message22853) GetField22871() []float32 {
-	if x != nil {
-		return x.Field22871
-	}
-	return nil
-}
-
-func (x *Message22853) GetField22872() []float32 {
-	if x != nil {
-		return x.Field22872
-	}
-	return nil
-}
-
-func (x *Message22853) GetField22873() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field22873
-	}
-	return nil
-}
-
-type Message24345 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field24533 *string             `protobuf:"bytes,1,opt,name=field24533" json:"field24533,omitempty"`
-	Field24534 *UnusedEnum         `protobuf:"varint,22,opt,name=field24534,enum=benchmarks.google_message3.UnusedEnum" json:"field24534,omitempty"`
-	Field24535 *Message24346       `protobuf:"bytes,2,opt,name=field24535" json:"field24535,omitempty"`
-	Field24536 *string             `protobuf:"bytes,3,opt,name=field24536" json:"field24536,omitempty"`
-	Field24537 *string             `protobuf:"bytes,4,opt,name=field24537" json:"field24537,omitempty"`
-	Field24538 *UnusedEnum         `protobuf:"varint,23,opt,name=field24538,enum=benchmarks.google_message3.UnusedEnum" json:"field24538,omitempty"`
-	Field24539 *string             `protobuf:"bytes,5,opt,name=field24539" json:"field24539,omitempty"`
-	Field24540 *string             `protobuf:"bytes,6,req,name=field24540" json:"field24540,omitempty"`
-	Field24541 *string             `protobuf:"bytes,7,opt,name=field24541" json:"field24541,omitempty"`
-	Field24542 *string             `protobuf:"bytes,8,opt,name=field24542" json:"field24542,omitempty"`
-	Field24543 *Message24316       `protobuf:"bytes,9,opt,name=field24543" json:"field24543,omitempty"`
-	Field24544 *Message24376       `protobuf:"bytes,10,opt,name=field24544" json:"field24544,omitempty"`
-	Field24545 *string             `protobuf:"bytes,11,opt,name=field24545" json:"field24545,omitempty"`
-	Field24546 *string             `protobuf:"bytes,19,opt,name=field24546" json:"field24546,omitempty"`
-	Field24547 *string             `protobuf:"bytes,20,opt,name=field24547" json:"field24547,omitempty"`
-	Field24548 *string             `protobuf:"bytes,21,opt,name=field24548" json:"field24548,omitempty"`
-	Field24549 *UnusedEmptyMessage `protobuf:"bytes,12,opt,name=field24549" json:"field24549,omitempty"`
-	Field24550 *UnusedEmptyMessage `protobuf:"bytes,13,opt,name=field24550" json:"field24550,omitempty"`
-	Field24551 []string            `protobuf:"bytes,14,rep,name=field24551" json:"field24551,omitempty"`
-	Field24552 *string             `protobuf:"bytes,15,opt,name=field24552" json:"field24552,omitempty"`
-	Field24553 *int32              `protobuf:"varint,18,opt,name=field24553" json:"field24553,omitempty"`
-	Field24554 *Message24379       `protobuf:"bytes,16,opt,name=field24554" json:"field24554,omitempty"`
-	Field24555 *string             `protobuf:"bytes,17,opt,name=field24555" json:"field24555,omitempty"`
-	Field24556 []*Message24356     `protobuf:"bytes,24,rep,name=field24556" json:"field24556,omitempty"`
-	Field24557 []*Message24366     `protobuf:"bytes,25,rep,name=field24557" json:"field24557,omitempty"`
-}
-
-func (x *Message24345) Reset() {
-	*x = Message24345{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message24345) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message24345) ProtoMessage() {}
-
-func (x *Message24345) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message24345.ProtoReflect.Descriptor instead.
-func (*Message24345) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Message24345) GetField24533() string {
-	if x != nil && x.Field24533 != nil {
-		return *x.Field24533
-	}
-	return ""
-}
-
-func (x *Message24345) GetField24534() UnusedEnum {
-	if x != nil && x.Field24534 != nil {
-		return *x.Field24534
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message24345) GetField24535() *Message24346 {
-	if x != nil {
-		return x.Field24535
-	}
-	return nil
-}
-
-func (x *Message24345) GetField24536() string {
-	if x != nil && x.Field24536 != nil {
-		return *x.Field24536
-	}
-	return ""
-}
-
-func (x *Message24345) GetField24537() string {
-	if x != nil && x.Field24537 != nil {
-		return *x.Field24537
-	}
-	return ""
-}
-
-func (x *Message24345) GetField24538() UnusedEnum {
-	if x != nil && x.Field24538 != nil {
-		return *x.Field24538
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message24345) GetField24539() string {
-	if x != nil && x.Field24539 != nil {
-		return *x.Field24539
-	}
-	return ""
-}
-
-func (x *Message24345) GetField24540() string {
-	if x != nil && x.Field24540 != nil {
-		return *x.Field24540
-	}
-	return ""
-}
-
-func (x *Message24345) GetField24541() string {
-	if x != nil && x.Field24541 != nil {
-		return *x.Field24541
-	}
-	return ""
-}
-
-func (x *Message24345) GetField24542() string {
-	if x != nil && x.Field24542 != nil {
-		return *x.Field24542
-	}
-	return ""
-}
-
-func (x *Message24345) GetField24543() *Message24316 {
-	if x != nil {
-		return x.Field24543
-	}
-	return nil
-}
-
-func (x *Message24345) GetField24544() *Message24376 {
-	if x != nil {
-		return x.Field24544
-	}
-	return nil
-}
-
-func (x *Message24345) GetField24545() string {
-	if x != nil && x.Field24545 != nil {
-		return *x.Field24545
-	}
-	return ""
-}
-
-func (x *Message24345) GetField24546() string {
-	if x != nil && x.Field24546 != nil {
-		return *x.Field24546
-	}
-	return ""
-}
-
-func (x *Message24345) GetField24547() string {
-	if x != nil && x.Field24547 != nil {
-		return *x.Field24547
-	}
-	return ""
-}
-
-func (x *Message24345) GetField24548() string {
-	if x != nil && x.Field24548 != nil {
-		return *x.Field24548
-	}
-	return ""
-}
-
-func (x *Message24345) GetField24549() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24549
-	}
-	return nil
-}
-
-func (x *Message24345) GetField24550() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24550
-	}
-	return nil
-}
-
-func (x *Message24345) GetField24551() []string {
-	if x != nil {
-		return x.Field24551
-	}
-	return nil
-}
-
-func (x *Message24345) GetField24552() string {
-	if x != nil && x.Field24552 != nil {
-		return *x.Field24552
-	}
-	return ""
-}
-
-func (x *Message24345) GetField24553() int32 {
-	if x != nil && x.Field24553 != nil {
-		return *x.Field24553
-	}
-	return 0
-}
-
-func (x *Message24345) GetField24554() *Message24379 {
-	if x != nil {
-		return x.Field24554
-	}
-	return nil
-}
-
-func (x *Message24345) GetField24555() string {
-	if x != nil && x.Field24555 != nil {
-		return *x.Field24555
-	}
-	return ""
-}
-
-func (x *Message24345) GetField24556() []*Message24356 {
-	if x != nil {
-		return x.Field24556
-	}
-	return nil
-}
-
-func (x *Message24345) GetField24557() []*Message24366 {
-	if x != nil {
-		return x.Field24557
-	}
-	return nil
-}
-
-type Message24403 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field24681 *Message24401 `protobuf:"bytes,1,opt,name=field24681" json:"field24681,omitempty"`
-	Field24682 *Message24402 `protobuf:"bytes,2,opt,name=field24682" json:"field24682,omitempty"`
-}
-
-func (x *Message24403) Reset() {
-	*x = Message24403{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message24403) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message24403) ProtoMessage() {}
-
-func (x *Message24403) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message24403.ProtoReflect.Descriptor instead.
-func (*Message24403) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Message24403) GetField24681() *Message24401 {
-	if x != nil {
-		return x.Field24681
-	}
-	return nil
-}
-
-func (x *Message24403) GetField24682() *Message24402 {
-	if x != nil {
-		return x.Field24682
-	}
-	return nil
-}
-
-type Message24391 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field24631 *string               `protobuf:"bytes,1,opt,name=field24631" json:"field24631,omitempty"`
-	Field24632 *string               `protobuf:"bytes,2,opt,name=field24632" json:"field24632,omitempty"`
-	Field24633 []string              `protobuf:"bytes,3,rep,name=field24633" json:"field24633,omitempty"`
-	Field24634 *string               `protobuf:"bytes,4,opt,name=field24634" json:"field24634,omitempty"`
-	Field24635 []string              `protobuf:"bytes,5,rep,name=field24635" json:"field24635,omitempty"`
-	Field24636 []string              `protobuf:"bytes,16,rep,name=field24636" json:"field24636,omitempty"`
-	Field24637 *string               `protobuf:"bytes,17,opt,name=field24637" json:"field24637,omitempty"`
-	Field24638 *UnusedEmptyMessage   `protobuf:"bytes,25,opt,name=field24638" json:"field24638,omitempty"`
-	Field24639 *string               `protobuf:"bytes,7,opt,name=field24639" json:"field24639,omitempty"`
-	Field24640 *string               `protobuf:"bytes,18,opt,name=field24640" json:"field24640,omitempty"`
-	Field24641 *string               `protobuf:"bytes,19,opt,name=field24641" json:"field24641,omitempty"`
-	Field24642 *string               `protobuf:"bytes,20,opt,name=field24642" json:"field24642,omitempty"`
-	Field24643 *int32                `protobuf:"varint,24,opt,name=field24643" json:"field24643,omitempty"`
-	Field24644 *Message24379         `protobuf:"bytes,8,opt,name=field24644" json:"field24644,omitempty"`
-	Field24645 []*UnusedEmptyMessage `protobuf:"bytes,9,rep,name=field24645" json:"field24645,omitempty"`
-	Field24646 *UnusedEmptyMessage   `protobuf:"bytes,10,opt,name=field24646" json:"field24646,omitempty"`
-	Field24647 *UnusedEmptyMessage   `protobuf:"bytes,11,opt,name=field24647" json:"field24647,omitempty"`
-	Field24648 *UnusedEmptyMessage   `protobuf:"bytes,12,opt,name=field24648" json:"field24648,omitempty"`
-	Field24649 []*UnusedEmptyMessage `protobuf:"bytes,13,rep,name=field24649" json:"field24649,omitempty"`
-	Field24650 *UnusedEmptyMessage   `protobuf:"bytes,14,opt,name=field24650" json:"field24650,omitempty"`
-	Field24651 *string               `protobuf:"bytes,21,opt,name=field24651" json:"field24651,omitempty"`
-	Field24652 *int32                `protobuf:"varint,22,opt,name=field24652" json:"field24652,omitempty"`
-	Field24653 *int32                `protobuf:"varint,23,opt,name=field24653" json:"field24653,omitempty"`
-	Field24654 []string              `protobuf:"bytes,15,rep,name=field24654" json:"field24654,omitempty"`
-	Field24655 []string              `protobuf:"bytes,6,rep,name=field24655" json:"field24655,omitempty"`
-}
-
-func (x *Message24391) Reset() {
-	*x = Message24391{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message24391) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message24391) ProtoMessage() {}
-
-func (x *Message24391) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message24391.ProtoReflect.Descriptor instead.
-func (*Message24391) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Message24391) GetField24631() string {
-	if x != nil && x.Field24631 != nil {
-		return *x.Field24631
-	}
-	return ""
-}
-
-func (x *Message24391) GetField24632() string {
-	if x != nil && x.Field24632 != nil {
-		return *x.Field24632
-	}
-	return ""
-}
-
-func (x *Message24391) GetField24633() []string {
-	if x != nil {
-		return x.Field24633
-	}
-	return nil
-}
-
-func (x *Message24391) GetField24634() string {
-	if x != nil && x.Field24634 != nil {
-		return *x.Field24634
-	}
-	return ""
-}
-
-func (x *Message24391) GetField24635() []string {
-	if x != nil {
-		return x.Field24635
-	}
-	return nil
-}
-
-func (x *Message24391) GetField24636() []string {
-	if x != nil {
-		return x.Field24636
-	}
-	return nil
-}
-
-func (x *Message24391) GetField24637() string {
-	if x != nil && x.Field24637 != nil {
-		return *x.Field24637
-	}
-	return ""
-}
-
-func (x *Message24391) GetField24638() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24638
-	}
-	return nil
-}
-
-func (x *Message24391) GetField24639() string {
-	if x != nil && x.Field24639 != nil {
-		return *x.Field24639
-	}
-	return ""
-}
-
-func (x *Message24391) GetField24640() string {
-	if x != nil && x.Field24640 != nil {
-		return *x.Field24640
-	}
-	return ""
-}
-
-func (x *Message24391) GetField24641() string {
-	if x != nil && x.Field24641 != nil {
-		return *x.Field24641
-	}
-	return ""
-}
-
-func (x *Message24391) GetField24642() string {
-	if x != nil && x.Field24642 != nil {
-		return *x.Field24642
-	}
-	return ""
-}
-
-func (x *Message24391) GetField24643() int32 {
-	if x != nil && x.Field24643 != nil {
-		return *x.Field24643
-	}
-	return 0
-}
-
-func (x *Message24391) GetField24644() *Message24379 {
-	if x != nil {
-		return x.Field24644
-	}
-	return nil
-}
-
-func (x *Message24391) GetField24645() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24645
-	}
-	return nil
-}
-
-func (x *Message24391) GetField24646() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24646
-	}
-	return nil
-}
-
-func (x *Message24391) GetField24647() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24647
-	}
-	return nil
-}
-
-func (x *Message24391) GetField24648() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24648
-	}
-	return nil
-}
-
-func (x *Message24391) GetField24649() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24649
-	}
-	return nil
-}
-
-func (x *Message24391) GetField24650() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24650
-	}
-	return nil
-}
-
-func (x *Message24391) GetField24651() string {
-	if x != nil && x.Field24651 != nil {
-		return *x.Field24651
-	}
-	return ""
-}
-
-func (x *Message24391) GetField24652() int32 {
-	if x != nil && x.Field24652 != nil {
-		return *x.Field24652
-	}
-	return 0
-}
-
-func (x *Message24391) GetField24653() int32 {
-	if x != nil && x.Field24653 != nil {
-		return *x.Field24653
-	}
-	return 0
-}
-
-func (x *Message24391) GetField24654() []string {
-	if x != nil {
-		return x.Field24654
-	}
-	return nil
-}
-
-func (x *Message24391) GetField24655() []string {
-	if x != nil {
-		return x.Field24655
-	}
-	return nil
-}
-
-type Message27454 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message27454) Reset() {
-	*x = Message27454{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message27454) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message27454) ProtoMessage() {}
-
-func (x *Message27454) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message27454.ProtoReflect.Descriptor instead.
-func (*Message27454) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{4}
-}
-
-type Message27357 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field27410 *string  `protobuf:"bytes,1,opt,name=field27410" json:"field27410,omitempty"`
-	Field27411 *float32 `protobuf:"fixed32,2,opt,name=field27411" json:"field27411,omitempty"`
-	Field27412 *string  `protobuf:"bytes,3,opt,name=field27412" json:"field27412,omitempty"`
-	Field27413 *bool    `protobuf:"varint,4,opt,name=field27413" json:"field27413,omitempty"`
-	Field27414 *bool    `protobuf:"varint,5,opt,name=field27414" json:"field27414,omitempty"`
-}
-
-func (x *Message27357) Reset() {
-	*x = Message27357{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message27357) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message27357) ProtoMessage() {}
-
-func (x *Message27357) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message27357.ProtoReflect.Descriptor instead.
-func (*Message27357) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *Message27357) GetField27410() string {
-	if x != nil && x.Field27410 != nil {
-		return *x.Field27410
-	}
-	return ""
-}
-
-func (x *Message27357) GetField27411() float32 {
-	if x != nil && x.Field27411 != nil {
-		return *x.Field27411
-	}
-	return 0
-}
-
-func (x *Message27357) GetField27412() string {
-	if x != nil && x.Field27412 != nil {
-		return *x.Field27412
-	}
-	return ""
-}
-
-func (x *Message27357) GetField27413() bool {
-	if x != nil && x.Field27413 != nil {
-		return *x.Field27413
-	}
-	return false
-}
-
-func (x *Message27357) GetField27414() bool {
-	if x != nil && x.Field27414 != nil {
-		return *x.Field27414
-	}
-	return false
-}
-
-type Message27360 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field27426 *Message27358         `protobuf:"bytes,1,opt,name=field27426" json:"field27426,omitempty"`
-	Field27427 *Enum27361            `protobuf:"varint,2,opt,name=field27427,enum=benchmarks.google_message3.Enum27361" json:"field27427,omitempty"`
-	Field27428 *Message27358         `protobuf:"bytes,3,opt,name=field27428" json:"field27428,omitempty"`
-	Field27429 []*UnusedEmptyMessage `protobuf:"bytes,4,rep,name=field27429" json:"field27429,omitempty"`
-}
-
-func (x *Message27360) Reset() {
-	*x = Message27360{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message27360) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message27360) ProtoMessage() {}
-
-func (x *Message27360) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message27360.ProtoReflect.Descriptor instead.
-func (*Message27360) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *Message27360) GetField27426() *Message27358 {
-	if x != nil {
-		return x.Field27426
-	}
-	return nil
-}
-
-func (x *Message27360) GetField27427() Enum27361 {
-	if x != nil && x.Field27427 != nil {
-		return *x.Field27427
-	}
-	return Enum27361_ENUM_VALUE27362
-}
-
-func (x *Message27360) GetField27428() *Message27358 {
-	if x != nil {
-		return x.Field27428
-	}
-	return nil
-}
-
-func (x *Message27360) GetField27429() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field27429
-	}
-	return nil
-}
-
-type Message34387 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field34446 *string         `protobuf:"bytes,1,opt,name=field34446" json:"field34446,omitempty"`
-	Field34447 []*Message34381 `protobuf:"bytes,2,rep,name=field34447" json:"field34447,omitempty"`
-	Field34448 *UnusedEnum     `protobuf:"varint,3,opt,name=field34448,enum=benchmarks.google_message3.UnusedEnum" json:"field34448,omitempty"`
-	Field34449 *Enum34388      `protobuf:"varint,4,opt,name=field34449,enum=benchmarks.google_message3.Enum34388" json:"field34449,omitempty"`
-	Field34450 *int64          `protobuf:"varint,5,opt,name=field34450" json:"field34450,omitempty"`
-}
-
-func (x *Message34387) Reset() {
-	*x = Message34387{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message34387) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message34387) ProtoMessage() {}
-
-func (x *Message34387) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message34387.ProtoReflect.Descriptor instead.
-func (*Message34387) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *Message34387) GetField34446() string {
-	if x != nil && x.Field34446 != nil {
-		return *x.Field34446
-	}
-	return ""
-}
-
-func (x *Message34387) GetField34447() []*Message34381 {
-	if x != nil {
-		return x.Field34447
-	}
-	return nil
-}
-
-func (x *Message34387) GetField34448() UnusedEnum {
-	if x != nil && x.Field34448 != nil {
-		return *x.Field34448
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message34387) GetField34449() Enum34388 {
-	if x != nil && x.Field34449 != nil {
-		return *x.Field34449
-	}
-	return Enum34388_ENUM_VALUE34389
-}
-
-func (x *Message34387) GetField34450() int64 {
-	if x != nil && x.Field34450 != nil {
-		return *x.Field34450
-	}
-	return 0
-}
-
-type Message34621 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field34651 *float64              `protobuf:"fixed64,1,opt,name=field34651" json:"field34651,omitempty"`
-	Field34652 *float64              `protobuf:"fixed64,2,opt,name=field34652" json:"field34652,omitempty"`
-	Field34653 *float64              `protobuf:"fixed64,3,opt,name=field34653" json:"field34653,omitempty"`
-	Field34654 *float64              `protobuf:"fixed64,4,opt,name=field34654" json:"field34654,omitempty"`
-	Field34655 *float64              `protobuf:"fixed64,11,opt,name=field34655" json:"field34655,omitempty"`
-	Field34656 *UnusedEmptyMessage   `protobuf:"bytes,13,opt,name=field34656" json:"field34656,omitempty"`
-	Field34657 *Message34619         `protobuf:"bytes,14,opt,name=field34657" json:"field34657,omitempty"`
-	Field34658 *string               `protobuf:"bytes,5,opt,name=field34658" json:"field34658,omitempty"`
-	Field34659 *string               `protobuf:"bytes,9,opt,name=field34659" json:"field34659,omitempty"`
-	Field34660 *float64              `protobuf:"fixed64,12,opt,name=field34660" json:"field34660,omitempty"`
-	Field34661 []byte                `protobuf:"bytes,19,opt,name=field34661" json:"field34661,omitempty"`
-	Field34662 *string               `protobuf:"bytes,15,opt,name=field34662" json:"field34662,omitempty"`
-	Field34663 *string               `protobuf:"bytes,16,opt,name=field34663" json:"field34663,omitempty"`
-	Field34664 *string               `protobuf:"bytes,17,opt,name=field34664" json:"field34664,omitempty"`
-	Field34665 *UnusedEmptyMessage   `protobuf:"bytes,18,opt,name=field34665" json:"field34665,omitempty"`
-	Field34666 *Message34621         `protobuf:"bytes,20,opt,name=field34666" json:"field34666,omitempty"`
-	Field34667 []*UnusedEmptyMessage `protobuf:"bytes,100,rep,name=field34667" json:"field34667,omitempty"`
-	Field34668 *UnusedEmptyMessage   `protobuf:"bytes,101,opt,name=field34668" json:"field34668,omitempty"`
-}
-
-func (x *Message34621) Reset() {
-	*x = Message34621{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message34621) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message34621) ProtoMessage() {}
-
-func (x *Message34621) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[8]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message34621.ProtoReflect.Descriptor instead.
-func (*Message34621) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *Message34621) GetField34651() float64 {
-	if x != nil && x.Field34651 != nil {
-		return *x.Field34651
-	}
-	return 0
-}
-
-func (x *Message34621) GetField34652() float64 {
-	if x != nil && x.Field34652 != nil {
-		return *x.Field34652
-	}
-	return 0
-}
-
-func (x *Message34621) GetField34653() float64 {
-	if x != nil && x.Field34653 != nil {
-		return *x.Field34653
-	}
-	return 0
-}
-
-func (x *Message34621) GetField34654() float64 {
-	if x != nil && x.Field34654 != nil {
-		return *x.Field34654
-	}
-	return 0
-}
-
-func (x *Message34621) GetField34655() float64 {
-	if x != nil && x.Field34655 != nil {
-		return *x.Field34655
-	}
-	return 0
-}
-
-func (x *Message34621) GetField34656() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field34656
-	}
-	return nil
-}
-
-func (x *Message34621) GetField34657() *Message34619 {
-	if x != nil {
-		return x.Field34657
-	}
-	return nil
-}
-
-func (x *Message34621) GetField34658() string {
-	if x != nil && x.Field34658 != nil {
-		return *x.Field34658
-	}
-	return ""
-}
-
-func (x *Message34621) GetField34659() string {
-	if x != nil && x.Field34659 != nil {
-		return *x.Field34659
-	}
-	return ""
-}
-
-func (x *Message34621) GetField34660() float64 {
-	if x != nil && x.Field34660 != nil {
-		return *x.Field34660
-	}
-	return 0
-}
-
-func (x *Message34621) GetField34661() []byte {
-	if x != nil {
-		return x.Field34661
-	}
-	return nil
-}
-
-func (x *Message34621) GetField34662() string {
-	if x != nil && x.Field34662 != nil {
-		return *x.Field34662
-	}
-	return ""
-}
-
-func (x *Message34621) GetField34663() string {
-	if x != nil && x.Field34663 != nil {
-		return *x.Field34663
-	}
-	return ""
-}
-
-func (x *Message34621) GetField34664() string {
-	if x != nil && x.Field34664 != nil {
-		return *x.Field34664
-	}
-	return ""
-}
-
-func (x *Message34621) GetField34665() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field34665
-	}
-	return nil
-}
-
-func (x *Message34621) GetField34666() *Message34621 {
-	if x != nil {
-		return x.Field34666
-	}
-	return nil
-}
-
-func (x *Message34621) GetField34667() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field34667
-	}
-	return nil
-}
-
-func (x *Message34621) GetField34668() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field34668
-	}
-	return nil
-}
-
-type Message35476 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field35484 *string             `protobuf:"bytes,1,opt,name=field35484" json:"field35484,omitempty"`
-	Field35485 *string             `protobuf:"bytes,2,opt,name=field35485" json:"field35485,omitempty"`
-	Field35486 *string             `protobuf:"bytes,3,opt,name=field35486" json:"field35486,omitempty"`
-	Field35487 *Enum35477          `protobuf:"varint,4,opt,name=field35487,enum=benchmarks.google_message3.Enum35477" json:"field35487,omitempty"`
-	Field35488 *float32            `protobuf:"fixed32,5,opt,name=field35488" json:"field35488,omitempty"`
-	Field35489 *float32            `protobuf:"fixed32,6,opt,name=field35489" json:"field35489,omitempty"`
-	Field35490 *float32            `protobuf:"fixed32,7,opt,name=field35490" json:"field35490,omitempty"`
-	Field35491 *float32            `protobuf:"fixed32,8,opt,name=field35491" json:"field35491,omitempty"`
-	Field35492 *UnusedEmptyMessage `protobuf:"bytes,9,opt,name=field35492" json:"field35492,omitempty"`
-	Field35493 *int32              `protobuf:"varint,10,opt,name=field35493" json:"field35493,omitempty"`
-	Field35494 *int32              `protobuf:"varint,11,opt,name=field35494" json:"field35494,omitempty"`
-	Field35495 *int32              `protobuf:"varint,12,opt,name=field35495" json:"field35495,omitempty"`
-	Field35496 *string             `protobuf:"bytes,13,opt,name=field35496" json:"field35496,omitempty"`
-	Field35497 *string             `protobuf:"bytes,14,opt,name=field35497" json:"field35497,omitempty"`
-}
-
-func (x *Message35476) Reset() {
-	*x = Message35476{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[9]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message35476) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message35476) ProtoMessage() {}
-
-func (x *Message35476) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[9]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message35476.ProtoReflect.Descriptor instead.
-func (*Message35476) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *Message35476) GetField35484() string {
-	if x != nil && x.Field35484 != nil {
-		return *x.Field35484
-	}
-	return ""
-}
-
-func (x *Message35476) GetField35485() string {
-	if x != nil && x.Field35485 != nil {
-		return *x.Field35485
-	}
-	return ""
-}
-
-func (x *Message35476) GetField35486() string {
-	if x != nil && x.Field35486 != nil {
-		return *x.Field35486
-	}
-	return ""
-}
-
-func (x *Message35476) GetField35487() Enum35477 {
-	if x != nil && x.Field35487 != nil {
-		return *x.Field35487
-	}
-	return Enum35477_ENUM_VALUE35478
-}
-
-func (x *Message35476) GetField35488() float32 {
-	if x != nil && x.Field35488 != nil {
-		return *x.Field35488
-	}
-	return 0
-}
-
-func (x *Message35476) GetField35489() float32 {
-	if x != nil && x.Field35489 != nil {
-		return *x.Field35489
-	}
-	return 0
-}
-
-func (x *Message35476) GetField35490() float32 {
-	if x != nil && x.Field35490 != nil {
-		return *x.Field35490
-	}
-	return 0
-}
-
-func (x *Message35476) GetField35491() float32 {
-	if x != nil && x.Field35491 != nil {
-		return *x.Field35491
-	}
-	return 0
-}
-
-func (x *Message35476) GetField35492() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field35492
-	}
-	return nil
-}
-
-func (x *Message35476) GetField35493() int32 {
-	if x != nil && x.Field35493 != nil {
-		return *x.Field35493
-	}
-	return 0
-}
-
-func (x *Message35476) GetField35494() int32 {
-	if x != nil && x.Field35494 != nil {
-		return *x.Field35494
-	}
-	return 0
-}
-
-func (x *Message35476) GetField35495() int32 {
-	if x != nil && x.Field35495 != nil {
-		return *x.Field35495
-	}
-	return 0
-}
-
-func (x *Message35476) GetField35496() string {
-	if x != nil && x.Field35496 != nil {
-		return *x.Field35496
-	}
-	return ""
-}
-
-func (x *Message35476) GetField35497() string {
-	if x != nil && x.Field35497 != nil {
-		return *x.Field35497
-	}
-	return ""
-}
-
-type Message949 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field955 *string     `protobuf:"bytes,1,opt,name=field955" json:"field955,omitempty"`
-	Field956 *int64      `protobuf:"varint,2,opt,name=field956" json:"field956,omitempty"`
-	Field957 *int64      `protobuf:"varint,3,opt,name=field957" json:"field957,omitempty"`
-	Field958 *Message730 `protobuf:"bytes,4,opt,name=field958" json:"field958,omitempty"`
-	Field959 []string    `protobuf:"bytes,5,rep,name=field959" json:"field959,omitempty"`
-	Field960 *string     `protobuf:"bytes,6,opt,name=field960" json:"field960,omitempty"`
-	Field961 *bool       `protobuf:"varint,7,opt,name=field961" json:"field961,omitempty"`
-}
-
-func (x *Message949) Reset() {
-	*x = Message949{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[10]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message949) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message949) ProtoMessage() {}
-
-func (x *Message949) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[10]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message949.ProtoReflect.Descriptor instead.
-func (*Message949) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *Message949) GetField955() string {
-	if x != nil && x.Field955 != nil {
-		return *x.Field955
-	}
-	return ""
-}
-
-func (x *Message949) GetField956() int64 {
-	if x != nil && x.Field956 != nil {
-		return *x.Field956
-	}
-	return 0
-}
-
-func (x *Message949) GetField957() int64 {
-	if x != nil && x.Field957 != nil {
-		return *x.Field957
-	}
-	return 0
-}
-
-func (x *Message949) GetField958() *Message730 {
-	if x != nil {
-		return x.Field958
-	}
-	return nil
-}
-
-func (x *Message949) GetField959() []string {
-	if x != nil {
-		return x.Field959
-	}
-	return nil
-}
-
-func (x *Message949) GetField960() string {
-	if x != nil && x.Field960 != nil {
-		return *x.Field960
-	}
-	return ""
-}
-
-func (x *Message949) GetField961() bool {
-	if x != nil && x.Field961 != nil {
-		return *x.Field961
-	}
-	return false
-}
-
-type Message36869 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field36970 *int32 `protobuf:"varint,1,opt,name=field36970" json:"field36970,omitempty"`
-	Field36971 *int32 `protobuf:"varint,2,opt,name=field36971" json:"field36971,omitempty"`
-}
-
-func (x *Message36869) Reset() {
-	*x = Message36869{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[11]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message36869) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message36869) ProtoMessage() {}
-
-func (x *Message36869) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[11]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message36869.ProtoReflect.Descriptor instead.
-func (*Message36869) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *Message36869) GetField36970() int32 {
-	if x != nil && x.Field36970 != nil {
-		return *x.Field36970
-	}
-	return 0
-}
-
-func (x *Message36869) GetField36971() int32 {
-	if x != nil && x.Field36971 != nil {
-		return *x.Field36971
-	}
-	return 0
-}
-
-type Message33968 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Message33969 []*Message33968_Message33969 `protobuf:"group,1,rep,name=Message33969,json=message33969" json:"message33969,omitempty"`
-	Field33989   []*Message33958              `protobuf:"bytes,3,rep,name=field33989" json:"field33989,omitempty"`
-	Field33990   *UnusedEmptyMessage          `protobuf:"bytes,106,opt,name=field33990" json:"field33990,omitempty"`
-	Field33991   *bool                        `protobuf:"varint,108,opt,name=field33991" json:"field33991,omitempty"`
-	Field33992   *UnusedEnum                  `protobuf:"varint,107,opt,name=field33992,enum=benchmarks.google_message3.UnusedEnum" json:"field33992,omitempty"`
-}
-
-func (x *Message33968) Reset() {
-	*x = Message33968{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[12]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message33968) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message33968) ProtoMessage() {}
-
-func (x *Message33968) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[12]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message33968.ProtoReflect.Descriptor instead.
-func (*Message33968) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *Message33968) GetMessage33969() []*Message33968_Message33969 {
-	if x != nil {
-		return x.Message33969
-	}
-	return nil
-}
-
-func (x *Message33968) GetField33989() []*Message33958 {
-	if x != nil {
-		return x.Field33989
-	}
-	return nil
-}
-
-func (x *Message33968) GetField33990() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field33990
-	}
-	return nil
-}
-
-func (x *Message33968) GetField33991() bool {
-	if x != nil && x.Field33991 != nil {
-		return *x.Field33991
-	}
-	return false
-}
-
-func (x *Message33968) GetField33992() UnusedEnum {
-	if x != nil && x.Field33992 != nil {
-		return *x.Field33992
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-type Message6644 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6701 *UnusedEmptyMessage `protobuf:"bytes,8,opt,name=field6701" json:"field6701,omitempty"`
-	Field6702 *string             `protobuf:"bytes,1,opt,name=field6702" json:"field6702,omitempty"`
-	Field6703 *float64            `protobuf:"fixed64,2,opt,name=field6703" json:"field6703,omitempty"`
-	Field6704 *UnusedEmptyMessage `protobuf:"bytes,9,opt,name=field6704" json:"field6704,omitempty"`
-	Field6705 []byte              `protobuf:"bytes,3,opt,name=field6705" json:"field6705,omitempty"`
-	Field6706 []byte              `protobuf:"bytes,19,opt,name=field6706" json:"field6706,omitempty"`
-	Field6707 *Message6637        `protobuf:"bytes,4,opt,name=field6707" json:"field6707,omitempty"`
-	Field6708 []*Message6126      `protobuf:"bytes,18,rep,name=field6708" json:"field6708,omitempty"`
-	Field6709 *bool               `protobuf:"varint,6,opt,name=field6709" json:"field6709,omitempty"`
-	Field6710 *Message6643        `protobuf:"bytes,10,opt,name=field6710" json:"field6710,omitempty"`
-	Field6711 *string             `protobuf:"bytes,12,opt,name=field6711" json:"field6711,omitempty"`
-	Field6712 *UnusedEmptyMessage `protobuf:"bytes,14,opt,name=field6712" json:"field6712,omitempty"`
-	Field6713 *UnusedEmptyMessage `protobuf:"bytes,15,opt,name=field6713" json:"field6713,omitempty"`
-	Field6714 *UnusedEmptyMessage `protobuf:"bytes,16,opt,name=field6714" json:"field6714,omitempty"`
-	Field6715 *int32              `protobuf:"varint,17,opt,name=field6715" json:"field6715,omitempty"`
-	Field6716 *UnusedEmptyMessage `protobuf:"bytes,20,opt,name=field6716" json:"field6716,omitempty"`
-}
-
-func (x *Message6644) Reset() {
-	*x = Message6644{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[13]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6644) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6644) ProtoMessage() {}
-
-func (x *Message6644) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[13]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6644.ProtoReflect.Descriptor instead.
-func (*Message6644) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *Message6644) GetField6701() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6701
-	}
-	return nil
-}
-
-func (x *Message6644) GetField6702() string {
-	if x != nil && x.Field6702 != nil {
-		return *x.Field6702
-	}
-	return ""
-}
-
-func (x *Message6644) GetField6703() float64 {
-	if x != nil && x.Field6703 != nil {
-		return *x.Field6703
-	}
-	return 0
-}
-
-func (x *Message6644) GetField6704() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6704
-	}
-	return nil
-}
-
-func (x *Message6644) GetField6705() []byte {
-	if x != nil {
-		return x.Field6705
-	}
-	return nil
-}
-
-func (x *Message6644) GetField6706() []byte {
-	if x != nil {
-		return x.Field6706
-	}
-	return nil
-}
-
-func (x *Message6644) GetField6707() *Message6637 {
-	if x != nil {
-		return x.Field6707
-	}
-	return nil
-}
-
-func (x *Message6644) GetField6708() []*Message6126 {
-	if x != nil {
-		return x.Field6708
-	}
-	return nil
-}
-
-func (x *Message6644) GetField6709() bool {
-	if x != nil && x.Field6709 != nil {
-		return *x.Field6709
-	}
-	return false
-}
-
-func (x *Message6644) GetField6710() *Message6643 {
-	if x != nil {
-		return x.Field6710
-	}
-	return nil
-}
-
-func (x *Message6644) GetField6711() string {
-	if x != nil && x.Field6711 != nil {
-		return *x.Field6711
-	}
-	return ""
-}
-
-func (x *Message6644) GetField6712() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6712
-	}
-	return nil
-}
-
-func (x *Message6644) GetField6713() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6713
-	}
-	return nil
-}
-
-func (x *Message6644) GetField6714() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6714
-	}
-	return nil
-}
-
-func (x *Message6644) GetField6715() int32 {
-	if x != nil && x.Field6715 != nil {
-		return *x.Field6715
-	}
-	return 0
-}
-
-func (x *Message6644) GetField6716() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6716
-	}
-	return nil
-}
-
-type Message18831 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Message18832 []*Message18831_Message18832 `protobuf:"group,1,rep,name=Message18832,json=message18832" json:"message18832,omitempty"`
-}
-
-func (x *Message18831) Reset() {
-	*x = Message18831{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[14]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message18831) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message18831) ProtoMessage() {}
-
-func (x *Message18831) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[14]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message18831.ProtoReflect.Descriptor instead.
-func (*Message18831) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *Message18831) GetMessage18832() []*Message18831_Message18832 {
-	if x != nil {
-		return x.Message18832
-	}
-	return nil
-}
-
-type Message13090 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field13141 *Message13083 `protobuf:"bytes,1,opt,name=field13141" json:"field13141,omitempty"`
-	Field13142 *Message13088 `protobuf:"bytes,2,opt,name=field13142" json:"field13142,omitempty"`
-}
-
-func (x *Message13090) Reset() {
-	*x = Message13090{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[15]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message13090) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message13090) ProtoMessage() {}
-
-func (x *Message13090) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[15]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message13090.ProtoReflect.Descriptor instead.
-func (*Message13090) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{15}
-}
-
-func (x *Message13090) GetField13141() *Message13083 {
-	if x != nil {
-		return x.Field13141
-	}
-	return nil
-}
-
-func (x *Message13090) GetField13142() *Message13088 {
-	if x != nil {
-		return x.Field13142
-	}
-	return nil
-}
-
-type Message11874 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	Field11888 *Message10391 `protobuf:"bytes,3,opt,name=field11888" json:"field11888,omitempty"`
-	Field11889 *string       `protobuf:"bytes,4,opt,name=field11889" json:"field11889,omitempty"`
-	Field11890 *Message11873 `protobuf:"bytes,6,opt,name=field11890" json:"field11890,omitempty"`
-	Field11891 *bool         `protobuf:"varint,7,opt,name=field11891" json:"field11891,omitempty"`
-}
-
-func (x *Message11874) Reset() {
-	*x = Message11874{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[16]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message11874) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message11874) ProtoMessage() {}
-
-func (x *Message11874) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[16]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message11874.ProtoReflect.Descriptor instead.
-func (*Message11874) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *Message11874) GetField11888() *Message10391 {
-	if x != nil {
-		return x.Field11888
-	}
-	return nil
-}
-
-func (x *Message11874) GetField11889() string {
-	if x != nil && x.Field11889 != nil {
-		return *x.Field11889
-	}
-	return ""
-}
-
-func (x *Message11874) GetField11890() *Message11873 {
-	if x != nil {
-		return x.Field11890
-	}
-	return nil
-}
-
-func (x *Message11874) GetField11891() bool {
-	if x != nil && x.Field11891 != nil {
-		return *x.Field11891
-	}
-	return false
-}
-
-type Message4144 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Message4145 []*Message4144_Message4145 `protobuf:"group,1,rep,name=Message4145,json=message4145" json:"message4145,omitempty"`
-}
-
-func (x *Message4144) Reset() {
-	*x = Message4144{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[17]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message4144) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message4144) ProtoMessage() {}
-
-func (x *Message4144) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[17]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message4144.ProtoReflect.Descriptor instead.
-func (*Message4144) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{17}
-}
-
-func (x *Message4144) GetMessage4145() []*Message4144_Message4145 {
-	if x != nil {
-		return x.Message4145
-	}
-	return nil
-}
-
-type Message35573 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field35695   *uint64                      `protobuf:"fixed64,16,opt,name=field35695" json:"field35695,omitempty"`
-	Field35696   *string                      `protobuf:"bytes,1000,opt,name=field35696" json:"field35696,omitempty"`
-	Field35697   *string                      `protobuf:"bytes,1004,opt,name=field35697" json:"field35697,omitempty"`
-	Field35698   *int32                       `protobuf:"varint,1003,opt,name=field35698" json:"field35698,omitempty"`
-	Message35574 []*Message35573_Message35574 `protobuf:"group,1012,rep,name=Message35574,json=message35574" json:"message35574,omitempty"`
-	Field35700   *int64                       `protobuf:"varint,1011,opt,name=field35700" json:"field35700,omitempty"`
-	Field35701   *int64                       `protobuf:"varint,1005,opt,name=field35701" json:"field35701,omitempty"`
-	Field35702   *int64                       `protobuf:"varint,1006,opt,name=field35702" json:"field35702,omitempty"`
-	Field35703   *int64                       `protobuf:"varint,1007,opt,name=field35703" json:"field35703,omitempty"`
-	Field35704   *int64                       `protobuf:"varint,1008,opt,name=field35704" json:"field35704,omitempty"`
-	Message35575 []*Message35573_Message35575 `protobuf:"group,1,rep,name=Message35575,json=message35575" json:"message35575,omitempty"`
-}
-
-func (x *Message35573) Reset() {
-	*x = Message35573{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[18]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message35573) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message35573) ProtoMessage() {}
-
-func (x *Message35573) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[18]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message35573.ProtoReflect.Descriptor instead.
-func (*Message35573) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{18}
-}
-
-func (x *Message35573) GetField35695() uint64 {
-	if x != nil && x.Field35695 != nil {
-		return *x.Field35695
-	}
-	return 0
-}
-
-func (x *Message35573) GetField35696() string {
-	if x != nil && x.Field35696 != nil {
-		return *x.Field35696
-	}
-	return ""
-}
-
-func (x *Message35573) GetField35697() string {
-	if x != nil && x.Field35697 != nil {
-		return *x.Field35697
-	}
-	return ""
-}
-
-func (x *Message35573) GetField35698() int32 {
-	if x != nil && x.Field35698 != nil {
-		return *x.Field35698
-	}
-	return 0
-}
-
-func (x *Message35573) GetMessage35574() []*Message35573_Message35574 {
-	if x != nil {
-		return x.Message35574
-	}
-	return nil
-}
-
-func (x *Message35573) GetField35700() int64 {
-	if x != nil && x.Field35700 != nil {
-		return *x.Field35700
-	}
-	return 0
-}
-
-func (x *Message35573) GetField35701() int64 {
-	if x != nil && x.Field35701 != nil {
-		return *x.Field35701
-	}
-	return 0
-}
-
-func (x *Message35573) GetField35702() int64 {
-	if x != nil && x.Field35702 != nil {
-		return *x.Field35702
-	}
-	return 0
-}
-
-func (x *Message35573) GetField35703() int64 {
-	if x != nil && x.Field35703 != nil {
-		return *x.Field35703
-	}
-	return 0
-}
-
-func (x *Message35573) GetField35704() int64 {
-	if x != nil && x.Field35704 != nil {
-		return *x.Field35704
-	}
-	return 0
-}
-
-func (x *Message35573) GetMessage35575() []*Message35573_Message35575 {
-	if x != nil {
-		return x.Message35575
-	}
-	return nil
-}
-
-type Message36858 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field36956   []int32                      `protobuf:"varint,1,rep,name=field36956" json:"field36956,omitempty"`
-	Field36957   []string                     `protobuf:"bytes,2,rep,name=field36957" json:"field36957,omitempty"`
-	Field36958   []string                     `protobuf:"bytes,12,rep,name=field36958" json:"field36958,omitempty"`
-	Field36959   *int32                       `protobuf:"varint,3,opt,name=field36959" json:"field36959,omitempty"`
-	Field36960   *int32                       `protobuf:"varint,4,opt,name=field36960" json:"field36960,omitempty"`
-	Field36961   *int32                       `protobuf:"varint,14,opt,name=field36961" json:"field36961,omitempty"`
-	Field36962   *string                      `protobuf:"bytes,11,opt,name=field36962" json:"field36962,omitempty"`
-	Field36963   *bool                        `protobuf:"varint,5,opt,name=field36963" json:"field36963,omitempty"`
-	Field36964   *bool                        `protobuf:"varint,13,opt,name=field36964" json:"field36964,omitempty"`
-	Field36965   *int64                       `protobuf:"varint,6,opt,name=field36965" json:"field36965,omitempty"`
-	Field36966   *Message35506                `protobuf:"bytes,7,opt,name=field36966" json:"field36966,omitempty"`
-	Message36859 []*Message36858_Message36859 `protobuf:"group,8,rep,name=Message36859,json=message36859" json:"message36859,omitempty"`
-}
-
-func (x *Message36858) Reset() {
-	*x = Message36858{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[19]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message36858) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message36858) ProtoMessage() {}
-
-func (x *Message36858) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[19]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message36858.ProtoReflect.Descriptor instead.
-func (*Message36858) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{19}
-}
-
-func (x *Message36858) GetField36956() []int32 {
-	if x != nil {
-		return x.Field36956
-	}
-	return nil
-}
-
-func (x *Message36858) GetField36957() []string {
-	if x != nil {
-		return x.Field36957
-	}
-	return nil
-}
-
-func (x *Message36858) GetField36958() []string {
-	if x != nil {
-		return x.Field36958
-	}
-	return nil
-}
-
-func (x *Message36858) GetField36959() int32 {
-	if x != nil && x.Field36959 != nil {
-		return *x.Field36959
-	}
-	return 0
-}
-
-func (x *Message36858) GetField36960() int32 {
-	if x != nil && x.Field36960 != nil {
-		return *x.Field36960
-	}
-	return 0
-}
-
-func (x *Message36858) GetField36961() int32 {
-	if x != nil && x.Field36961 != nil {
-		return *x.Field36961
-	}
-	return 0
-}
-
-func (x *Message36858) GetField36962() string {
-	if x != nil && x.Field36962 != nil {
-		return *x.Field36962
-	}
-	return ""
-}
-
-func (x *Message36858) GetField36963() bool {
-	if x != nil && x.Field36963 != nil {
-		return *x.Field36963
-	}
-	return false
-}
-
-func (x *Message36858) GetField36964() bool {
-	if x != nil && x.Field36964 != nil {
-		return *x.Field36964
-	}
-	return false
-}
-
-func (x *Message36858) GetField36965() int64 {
-	if x != nil && x.Field36965 != nil {
-		return *x.Field36965
-	}
-	return 0
-}
-
-func (x *Message36858) GetField36966() *Message35506 {
-	if x != nil {
-		return x.Field36966
-	}
-	return nil
-}
-
-func (x *Message36858) GetMessage36859() []*Message36858_Message36859 {
-	if x != nil {
-		return x.Message36859
-	}
-	return nil
-}
-
-type Message13174 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field13237 *int32        `protobuf:"varint,6,req,name=field13237" json:"field13237,omitempty"`
-	Field13238 *int32        `protobuf:"varint,3,opt,name=field13238" json:"field13238,omitempty"`
-	Field13239 *int32        `protobuf:"varint,4,req,name=field13239" json:"field13239,omitempty"`
-	Field13240 *int32        `protobuf:"varint,8,opt,name=field13240" json:"field13240,omitempty"`
-	Field13241 *float64      `protobuf:"fixed64,5,opt,name=field13241" json:"field13241,omitempty"`
-	Field13242 *float64      `protobuf:"fixed64,7,opt,name=field13242" json:"field13242,omitempty"`
-	Field13243 *int32        `protobuf:"varint,17,opt,name=field13243" json:"field13243,omitempty"`
-	Field13244 *int32        `protobuf:"varint,19,opt,name=field13244" json:"field13244,omitempty"`
-	Field13245 *float64      `protobuf:"fixed64,20,opt,name=field13245" json:"field13245,omitempty"`
-	Field13246 *int32        `protobuf:"varint,9,opt,name=field13246" json:"field13246,omitempty"`
-	Field13247 *float64      `protobuf:"fixed64,10,opt,name=field13247" json:"field13247,omitempty"`
-	Field13248 *int32        `protobuf:"varint,11,opt,name=field13248" json:"field13248,omitempty"`
-	Field13249 *Message13151 `protobuf:"bytes,21,opt,name=field13249" json:"field13249,omitempty"`
-	Field13250 *int32        `protobuf:"varint,1,opt,name=field13250" json:"field13250,omitempty"`
-	Field13251 *float64      `protobuf:"fixed64,2,opt,name=field13251" json:"field13251,omitempty"`
-	Field13252 *float64      `protobuf:"fixed64,15,opt,name=field13252" json:"field13252,omitempty"`
-	Field13253 *float64      `protobuf:"fixed64,16,opt,name=field13253" json:"field13253,omitempty"`
-	Field13254 *float64      `protobuf:"fixed64,12,opt,name=field13254" json:"field13254,omitempty"`
-	Field13255 *float64      `protobuf:"fixed64,13,opt,name=field13255" json:"field13255,omitempty"`
-	Field13256 *float64      `protobuf:"fixed64,14,opt,name=field13256" json:"field13256,omitempty"`
-	Field13257 *int32        `protobuf:"varint,18,opt,name=field13257" json:"field13257,omitempty"`
-}
-
-func (x *Message13174) Reset() {
-	*x = Message13174{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[20]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message13174) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message13174) ProtoMessage() {}
-
-func (x *Message13174) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[20]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message13174.ProtoReflect.Descriptor instead.
-func (*Message13174) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{20}
-}
-
-func (x *Message13174) GetField13237() int32 {
-	if x != nil && x.Field13237 != nil {
-		return *x.Field13237
-	}
-	return 0
-}
-
-func (x *Message13174) GetField13238() int32 {
-	if x != nil && x.Field13238 != nil {
-		return *x.Field13238
-	}
-	return 0
-}
-
-func (x *Message13174) GetField13239() int32 {
-	if x != nil && x.Field13239 != nil {
-		return *x.Field13239
-	}
-	return 0
-}
-
-func (x *Message13174) GetField13240() int32 {
-	if x != nil && x.Field13240 != nil {
-		return *x.Field13240
-	}
-	return 0
-}
-
-func (x *Message13174) GetField13241() float64 {
-	if x != nil && x.Field13241 != nil {
-		return *x.Field13241
-	}
-	return 0
-}
-
-func (x *Message13174) GetField13242() float64 {
-	if x != nil && x.Field13242 != nil {
-		return *x.Field13242
-	}
-	return 0
-}
-
-func (x *Message13174) GetField13243() int32 {
-	if x != nil && x.Field13243 != nil {
-		return *x.Field13243
-	}
-	return 0
-}
-
-func (x *Message13174) GetField13244() int32 {
-	if x != nil && x.Field13244 != nil {
-		return *x.Field13244
-	}
-	return 0
-}
-
-func (x *Message13174) GetField13245() float64 {
-	if x != nil && x.Field13245 != nil {
-		return *x.Field13245
-	}
-	return 0
-}
-
-func (x *Message13174) GetField13246() int32 {
-	if x != nil && x.Field13246 != nil {
-		return *x.Field13246
-	}
-	return 0
-}
-
-func (x *Message13174) GetField13247() float64 {
-	if x != nil && x.Field13247 != nil {
-		return *x.Field13247
-	}
-	return 0
-}
-
-func (x *Message13174) GetField13248() int32 {
-	if x != nil && x.Field13248 != nil {
-		return *x.Field13248
-	}
-	return 0
-}
-
-func (x *Message13174) GetField13249() *Message13151 {
-	if x != nil {
-		return x.Field13249
-	}
-	return nil
-}
-
-func (x *Message13174) GetField13250() int32 {
-	if x != nil && x.Field13250 != nil {
-		return *x.Field13250
-	}
-	return 0
-}
-
-func (x *Message13174) GetField13251() float64 {
-	if x != nil && x.Field13251 != nil {
-		return *x.Field13251
-	}
-	return 0
-}
-
-func (x *Message13174) GetField13252() float64 {
-	if x != nil && x.Field13252 != nil {
-		return *x.Field13252
-	}
-	return 0
-}
-
-func (x *Message13174) GetField13253() float64 {
-	if x != nil && x.Field13253 != nil {
-		return *x.Field13253
-	}
-	return 0
-}
-
-func (x *Message13174) GetField13254() float64 {
-	if x != nil && x.Field13254 != nil {
-		return *x.Field13254
-	}
-	return 0
-}
-
-func (x *Message13174) GetField13255() float64 {
-	if x != nil && x.Field13255 != nil {
-		return *x.Field13255
-	}
-	return 0
-}
-
-func (x *Message13174) GetField13256() float64 {
-	if x != nil && x.Field13256 != nil {
-		return *x.Field13256
-	}
-	return 0
-}
-
-func (x *Message13174) GetField13257() int32 {
-	if x != nil && x.Field13257 != nil {
-		return *x.Field13257
-	}
-	return 0
-}
-
-type Message18283 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	Field18478 *UnusedEmptyMessage   `protobuf:"bytes,1,opt,name=field18478" json:"field18478,omitempty"`
-	Field18479 *int32                `protobuf:"varint,4,opt,name=field18479" json:"field18479,omitempty"`
-	Field18480 *int32                `protobuf:"varint,106,opt,name=field18480" json:"field18480,omitempty"`
-	Field18481 *int32                `protobuf:"varint,107,opt,name=field18481" json:"field18481,omitempty"`
-	Field18482 *int32                `protobuf:"varint,108,opt,name=field18482" json:"field18482,omitempty"`
-	Field18483 *int32                `protobuf:"varint,109,opt,name=field18483" json:"field18483,omitempty"`
-	Field18484 *int32                `protobuf:"varint,105,opt,name=field18484" json:"field18484,omitempty"`
-	Field18485 *int32                `protobuf:"varint,113,opt,name=field18485" json:"field18485,omitempty"`
-	Field18486 *int32                `protobuf:"varint,114,opt,name=field18486" json:"field18486,omitempty"`
-	Field18487 *int32                `protobuf:"varint,124,opt,name=field18487" json:"field18487,omitempty"`
-	Field18488 *int32                `protobuf:"varint,125,opt,name=field18488" json:"field18488,omitempty"`
-	Field18489 *int32                `protobuf:"varint,128,opt,name=field18489" json:"field18489,omitempty"`
-	Field18490 *int32                `protobuf:"varint,135,opt,name=field18490" json:"field18490,omitempty"`
-	Field18491 *bool                 `protobuf:"varint,166,opt,name=field18491" json:"field18491,omitempty"`
-	Field18492 *bool                 `protobuf:"varint,136,opt,name=field18492" json:"field18492,omitempty"`
-	Field18493 *int32                `protobuf:"varint,140,opt,name=field18493" json:"field18493,omitempty"`
-	Field18494 *int32                `protobuf:"varint,171,opt,name=field18494" json:"field18494,omitempty"`
-	Field18495 *int32                `protobuf:"varint,148,opt,name=field18495" json:"field18495,omitempty"`
-	Field18496 *int32                `protobuf:"varint,145,opt,name=field18496" json:"field18496,omitempty"`
-	Field18497 *float32              `protobuf:"fixed32,117,opt,name=field18497" json:"field18497,omitempty"`
-	Field18498 *int32                `protobuf:"varint,146,opt,name=field18498" json:"field18498,omitempty"`
-	Field18499 *string               `protobuf:"bytes,3,opt,name=field18499" json:"field18499,omitempty"`
-	Field18500 *UnusedEmptyMessage   `protobuf:"bytes,5,opt,name=field18500" json:"field18500,omitempty"`
-	Field18501 *UnusedEmptyMessage   `protobuf:"bytes,6,opt,name=field18501" json:"field18501,omitempty"`
-	Field18502 *UnusedEmptyMessage   `protobuf:"bytes,9,opt,name=field18502" json:"field18502,omitempty"`
-	Field18503 *Message18253         `protobuf:"bytes,155,opt,name=field18503" json:"field18503,omitempty"`
-	Field18504 *UnusedEmptyMessage   `protobuf:"bytes,184,opt,name=field18504" json:"field18504,omitempty"`
-	Field18505 *UnusedEmptyMessage   `protobuf:"bytes,163,opt,name=field18505" json:"field18505,omitempty"`
-	Field18506 *UnusedEmptyMessage   `protobuf:"bytes,16,opt,name=field18506" json:"field18506,omitempty"`
-	Field18507 []int32               `protobuf:"varint,20,rep,name=field18507" json:"field18507,omitempty"`
-	Field18508 []int32               `protobuf:"varint,7,rep,name=field18508" json:"field18508,omitempty"`
-	Field18509 []string              `protobuf:"bytes,194,rep,name=field18509" json:"field18509,omitempty"`
-	Field18510 []byte                `protobuf:"bytes,30,opt,name=field18510" json:"field18510,omitempty"`
-	Field18511 *int32                `protobuf:"varint,31,opt,name=field18511" json:"field18511,omitempty"`
-	Field18512 *UnusedEmptyMessage   `protobuf:"bytes,178,opt,name=field18512" json:"field18512,omitempty"`
-	Field18513 *string               `protobuf:"bytes,8,opt,name=field18513" json:"field18513,omitempty"`
-	Field18514 *float32              `protobuf:"fixed32,2,opt,name=field18514" json:"field18514,omitempty"`
-	Field18515 *float32              `protobuf:"fixed32,100,opt,name=field18515" json:"field18515,omitempty"`
-	Field18516 *float32              `protobuf:"fixed32,101,opt,name=field18516" json:"field18516,omitempty"`
-	Field18517 *float32              `protobuf:"fixed32,102,opt,name=field18517" json:"field18517,omitempty"`
-	Field18518 *int32                `protobuf:"varint,103,opt,name=field18518" json:"field18518,omitempty"`
-	Field18519 []*UnusedEmptyMessage `protobuf:"bytes,104,rep,name=field18519" json:"field18519,omitempty"`
-	Field18520 *int32                `protobuf:"varint,110,opt,name=field18520" json:"field18520,omitempty"`
-	Field18521 *int32                `protobuf:"varint,112,opt,name=field18521" json:"field18521,omitempty"`
-	Field18522 *UnusedEmptyMessage   `protobuf:"bytes,111,opt,name=field18522" json:"field18522,omitempty"`
-	Field18523 *UnusedEmptyMessage   `protobuf:"bytes,115,opt,name=field18523" json:"field18523,omitempty"`
-	Field18524 *UnusedEmptyMessage   `protobuf:"bytes,119,opt,name=field18524" json:"field18524,omitempty"`
-	Field18525 *UnusedEmptyMessage   `protobuf:"bytes,127,opt,name=field18525" json:"field18525,omitempty"`
-	Field18526 *UnusedEmptyMessage   `protobuf:"bytes,185,opt,name=field18526" json:"field18526,omitempty"`
-	Field18527 *int32                `protobuf:"varint,120,opt,name=field18527" json:"field18527,omitempty"`
-	Field18528 *int32                `protobuf:"varint,132,opt,name=field18528" json:"field18528,omitempty"`
-	Field18529 *UnusedEmptyMessage   `protobuf:"bytes,126,opt,name=field18529" json:"field18529,omitempty"`
-	Field18530 *UnusedEmptyMessage   `protobuf:"bytes,129,opt,name=field18530" json:"field18530,omitempty"`
-	Field18531 *UnusedEmptyMessage   `protobuf:"bytes,131,opt,name=field18531" json:"field18531,omitempty"`
-	Field18532 *uint64               `protobuf:"fixed64,150,opt,name=field18532" json:"field18532,omitempty"`
-	Field18533 *int32                `protobuf:"varint,133,opt,name=field18533" json:"field18533,omitempty"`
-	Field18534 *int32                `protobuf:"varint,134,opt,name=field18534" json:"field18534,omitempty"`
-	Field18535 *int32                `protobuf:"varint,139,opt,name=field18535" json:"field18535,omitempty"`
-	Field18536 *uint64               `protobuf:"fixed64,137,opt,name=field18536" json:"field18536,omitempty"`
-	Field18537 *uint64               `protobuf:"fixed64,138,opt,name=field18537" json:"field18537,omitempty"`
-	Field18538 *UnusedEmptyMessage   `protobuf:"bytes,141,opt,name=field18538" json:"field18538,omitempty"`
-	Field18539 *int32                `protobuf:"varint,142,opt,name=field18539" json:"field18539,omitempty"`
-	Field18540 *int32                `protobuf:"varint,181,opt,name=field18540" json:"field18540,omitempty"`
-	Field18541 *Message16816         `protobuf:"bytes,143,opt,name=field18541" json:"field18541,omitempty"`
-	Field18542 *Message16685         `protobuf:"bytes,154,opt,name=field18542" json:"field18542,omitempty"`
-	Field18543 *int32                `protobuf:"varint,144,opt,name=field18543" json:"field18543,omitempty"`
-	Field18544 *int64                `protobuf:"varint,147,opt,name=field18544" json:"field18544,omitempty"`
-	Field18545 *int64                `protobuf:"varint,149,opt,name=field18545" json:"field18545,omitempty"`
-	Field18546 *int32                `protobuf:"varint,151,opt,name=field18546" json:"field18546,omitempty"`
-	Field18547 *int32                `protobuf:"varint,152,opt,name=field18547" json:"field18547,omitempty"`
-	Field18548 *int32                `protobuf:"varint,153,opt,name=field18548" json:"field18548,omitempty"`
-	Field18549 *float32              `protobuf:"fixed32,161,opt,name=field18549" json:"field18549,omitempty"`
-	Field18550 *Message0             `protobuf:"bytes,123,opt,name=field18550" json:"field18550,omitempty"`
-	Field18551 []int64               `protobuf:"varint,156,rep,name=field18551" json:"field18551,omitempty"`
-	Field18552 *int32                `protobuf:"varint,157,opt,name=field18552" json:"field18552,omitempty"`
-	Field18553 []uint64              `protobuf:"fixed64,188,rep,name=field18553" json:"field18553,omitempty"`
-	Field18554 *int32                `protobuf:"varint,158,opt,name=field18554" json:"field18554,omitempty"`
-	Field18555 *UnusedEmptyMessage   `protobuf:"bytes,159,opt,name=field18555" json:"field18555,omitempty"`
-	Field18556 *bool                 `protobuf:"varint,160,opt,name=field18556" json:"field18556,omitempty"`
-	Field18557 *uint64               `protobuf:"varint,162,opt,name=field18557" json:"field18557,omitempty"`
-	Field18558 *int32                `protobuf:"varint,164,opt,name=field18558" json:"field18558,omitempty"`
-	Field18559 *UnusedEmptyMessage   `protobuf:"bytes,10,opt,name=field18559" json:"field18559,omitempty"`
-	Field18560 *UnusedEmptyMessage   `protobuf:"bytes,167,opt,name=field18560" json:"field18560,omitempty"`
-	Field18561 *int32                `protobuf:"varint,168,opt,name=field18561" json:"field18561,omitempty"`
-	Field18562 []uint64              `protobuf:"fixed64,169,rep,name=field18562" json:"field18562,omitempty"`
-	Field18563 []string              `protobuf:"bytes,170,rep,name=field18563" json:"field18563,omitempty"`
-	Field18564 *UnusedEmptyMessage   `protobuf:"bytes,172,opt,name=field18564" json:"field18564,omitempty"`
-	Field18565 *int64                `protobuf:"varint,173,opt,name=field18565" json:"field18565,omitempty"`
-	Field18566 *UnusedEmptyMessage   `protobuf:"bytes,174,opt,name=field18566" json:"field18566,omitempty"`
-	Field18567 *int64                `protobuf:"varint,175,opt,name=field18567" json:"field18567,omitempty"`
-	Field18568 *uint32               `protobuf:"varint,189,opt,name=field18568" json:"field18568,omitempty"`
-	Field18569 *UnusedEmptyMessage   `protobuf:"bytes,176,opt,name=field18569" json:"field18569,omitempty"`
-	Field18570 *UnusedEmptyMessage   `protobuf:"bytes,177,opt,name=field18570" json:"field18570,omitempty"`
-	Field18571 *uint32               `protobuf:"varint,179,opt,name=field18571" json:"field18571,omitempty"`
-	Field18572 *uint32               `protobuf:"varint,180,opt,name=field18572" json:"field18572,omitempty"`
-	Field18573 *UnusedEmptyMessage   `protobuf:"bytes,182,opt,name=field18573" json:"field18573,omitempty"`
-	Field18574 *UnusedEmptyMessage   `protobuf:"bytes,183,opt,name=field18574" json:"field18574,omitempty"`
-	Field18575 *UnusedEmptyMessage   `protobuf:"bytes,121,opt,name=field18575" json:"field18575,omitempty"`
-	Field18576 *UnusedEmptyMessage   `protobuf:"bytes,186,opt,name=field18576" json:"field18576,omitempty"`
-	Field18577 *UnusedEmptyMessage   `protobuf:"bytes,187,opt,name=field18577" json:"field18577,omitempty"`
-	Field18578 *UnusedEmptyMessage   `protobuf:"bytes,190,opt,name=field18578" json:"field18578,omitempty"`
-	Field18579 *int32                `protobuf:"varint,191,opt,name=field18579" json:"field18579,omitempty"`
-	Field18580 *float32              `protobuf:"fixed32,192,opt,name=field18580" json:"field18580,omitempty"`
-	Field18581 *bool                 `protobuf:"varint,193,opt,name=field18581" json:"field18581,omitempty"`
-}
-
-func (x *Message18283) Reset() {
-	*x = Message18283{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[21]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message18283) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message18283) ProtoMessage() {}
-
-func (x *Message18283) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[21]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message18283.ProtoReflect.Descriptor instead.
-func (*Message18283) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{21}
-}
-
-func (x *Message18283) GetField18478() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18478
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18479() int32 {
-	if x != nil && x.Field18479 != nil {
-		return *x.Field18479
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18480() int32 {
-	if x != nil && x.Field18480 != nil {
-		return *x.Field18480
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18481() int32 {
-	if x != nil && x.Field18481 != nil {
-		return *x.Field18481
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18482() int32 {
-	if x != nil && x.Field18482 != nil {
-		return *x.Field18482
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18483() int32 {
-	if x != nil && x.Field18483 != nil {
-		return *x.Field18483
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18484() int32 {
-	if x != nil && x.Field18484 != nil {
-		return *x.Field18484
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18485() int32 {
-	if x != nil && x.Field18485 != nil {
-		return *x.Field18485
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18486() int32 {
-	if x != nil && x.Field18486 != nil {
-		return *x.Field18486
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18487() int32 {
-	if x != nil && x.Field18487 != nil {
-		return *x.Field18487
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18488() int32 {
-	if x != nil && x.Field18488 != nil {
-		return *x.Field18488
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18489() int32 {
-	if x != nil && x.Field18489 != nil {
-		return *x.Field18489
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18490() int32 {
-	if x != nil && x.Field18490 != nil {
-		return *x.Field18490
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18491() bool {
-	if x != nil && x.Field18491 != nil {
-		return *x.Field18491
-	}
-	return false
-}
-
-func (x *Message18283) GetField18492() bool {
-	if x != nil && x.Field18492 != nil {
-		return *x.Field18492
-	}
-	return false
-}
-
-func (x *Message18283) GetField18493() int32 {
-	if x != nil && x.Field18493 != nil {
-		return *x.Field18493
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18494() int32 {
-	if x != nil && x.Field18494 != nil {
-		return *x.Field18494
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18495() int32 {
-	if x != nil && x.Field18495 != nil {
-		return *x.Field18495
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18496() int32 {
-	if x != nil && x.Field18496 != nil {
-		return *x.Field18496
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18497() float32 {
-	if x != nil && x.Field18497 != nil {
-		return *x.Field18497
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18498() int32 {
-	if x != nil && x.Field18498 != nil {
-		return *x.Field18498
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18499() string {
-	if x != nil && x.Field18499 != nil {
-		return *x.Field18499
-	}
-	return ""
-}
-
-func (x *Message18283) GetField18500() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18500
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18501() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18501
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18502() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18502
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18503() *Message18253 {
-	if x != nil {
-		return x.Field18503
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18504() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18504
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18505() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18505
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18506() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18506
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18507() []int32 {
-	if x != nil {
-		return x.Field18507
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18508() []int32 {
-	if x != nil {
-		return x.Field18508
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18509() []string {
-	if x != nil {
-		return x.Field18509
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18510() []byte {
-	if x != nil {
-		return x.Field18510
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18511() int32 {
-	if x != nil && x.Field18511 != nil {
-		return *x.Field18511
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18512() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18512
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18513() string {
-	if x != nil && x.Field18513 != nil {
-		return *x.Field18513
-	}
-	return ""
-}
-
-func (x *Message18283) GetField18514() float32 {
-	if x != nil && x.Field18514 != nil {
-		return *x.Field18514
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18515() float32 {
-	if x != nil && x.Field18515 != nil {
-		return *x.Field18515
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18516() float32 {
-	if x != nil && x.Field18516 != nil {
-		return *x.Field18516
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18517() float32 {
-	if x != nil && x.Field18517 != nil {
-		return *x.Field18517
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18518() int32 {
-	if x != nil && x.Field18518 != nil {
-		return *x.Field18518
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18519() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18519
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18520() int32 {
-	if x != nil && x.Field18520 != nil {
-		return *x.Field18520
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18521() int32 {
-	if x != nil && x.Field18521 != nil {
-		return *x.Field18521
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18522() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18522
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18523() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18523
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18524() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18524
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18525() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18525
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18526() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18526
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18527() int32 {
-	if x != nil && x.Field18527 != nil {
-		return *x.Field18527
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18528() int32 {
-	if x != nil && x.Field18528 != nil {
-		return *x.Field18528
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18529() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18529
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18530() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18530
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18531() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18531
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18532() uint64 {
-	if x != nil && x.Field18532 != nil {
-		return *x.Field18532
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18533() int32 {
-	if x != nil && x.Field18533 != nil {
-		return *x.Field18533
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18534() int32 {
-	if x != nil && x.Field18534 != nil {
-		return *x.Field18534
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18535() int32 {
-	if x != nil && x.Field18535 != nil {
-		return *x.Field18535
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18536() uint64 {
-	if x != nil && x.Field18536 != nil {
-		return *x.Field18536
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18537() uint64 {
-	if x != nil && x.Field18537 != nil {
-		return *x.Field18537
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18538() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18538
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18539() int32 {
-	if x != nil && x.Field18539 != nil {
-		return *x.Field18539
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18540() int32 {
-	if x != nil && x.Field18540 != nil {
-		return *x.Field18540
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18541() *Message16816 {
-	if x != nil {
-		return x.Field18541
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18542() *Message16685 {
-	if x != nil {
-		return x.Field18542
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18543() int32 {
-	if x != nil && x.Field18543 != nil {
-		return *x.Field18543
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18544() int64 {
-	if x != nil && x.Field18544 != nil {
-		return *x.Field18544
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18545() int64 {
-	if x != nil && x.Field18545 != nil {
-		return *x.Field18545
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18546() int32 {
-	if x != nil && x.Field18546 != nil {
-		return *x.Field18546
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18547() int32 {
-	if x != nil && x.Field18547 != nil {
-		return *x.Field18547
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18548() int32 {
-	if x != nil && x.Field18548 != nil {
-		return *x.Field18548
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18549() float32 {
-	if x != nil && x.Field18549 != nil {
-		return *x.Field18549
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18550() *Message0 {
-	if x != nil {
-		return x.Field18550
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18551() []int64 {
-	if x != nil {
-		return x.Field18551
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18552() int32 {
-	if x != nil && x.Field18552 != nil {
-		return *x.Field18552
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18553() []uint64 {
-	if x != nil {
-		return x.Field18553
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18554() int32 {
-	if x != nil && x.Field18554 != nil {
-		return *x.Field18554
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18555() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18555
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18556() bool {
-	if x != nil && x.Field18556 != nil {
-		return *x.Field18556
-	}
-	return false
-}
-
-func (x *Message18283) GetField18557() uint64 {
-	if x != nil && x.Field18557 != nil {
-		return *x.Field18557
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18558() int32 {
-	if x != nil && x.Field18558 != nil {
-		return *x.Field18558
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18559() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18559
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18560() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18560
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18561() int32 {
-	if x != nil && x.Field18561 != nil {
-		return *x.Field18561
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18562() []uint64 {
-	if x != nil {
-		return x.Field18562
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18563() []string {
-	if x != nil {
-		return x.Field18563
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18564() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18564
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18565() int64 {
-	if x != nil && x.Field18565 != nil {
-		return *x.Field18565
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18566() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18566
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18567() int64 {
-	if x != nil && x.Field18567 != nil {
-		return *x.Field18567
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18568() uint32 {
-	if x != nil && x.Field18568 != nil {
-		return *x.Field18568
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18569() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18569
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18570() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18570
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18571() uint32 {
-	if x != nil && x.Field18571 != nil {
-		return *x.Field18571
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18572() uint32 {
-	if x != nil && x.Field18572 != nil {
-		return *x.Field18572
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18573() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18573
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18574() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18574
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18575() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18575
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18576() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18576
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18577() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18577
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18578() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18578
-	}
-	return nil
-}
-
-func (x *Message18283) GetField18579() int32 {
-	if x != nil && x.Field18579 != nil {
-		return *x.Field18579
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18580() float32 {
-	if x != nil && x.Field18580 != nil {
-		return *x.Field18580
-	}
-	return 0
-}
-
-func (x *Message18283) GetField18581() bool {
-	if x != nil && x.Field18581 != nil {
-		return *x.Field18581
-	}
-	return false
-}
-
-type Message13169 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field13223 []*Message13168 `protobuf:"bytes,1,rep,name=field13223" json:"field13223,omitempty"`
-	Field13224 *Message13167   `protobuf:"bytes,2,req,name=field13224" json:"field13224,omitempty"`
-	Field13225 *string         `protobuf:"bytes,3,opt,name=field13225" json:"field13225,omitempty"`
-}
-
-func (x *Message13169) Reset() {
-	*x = Message13169{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[22]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message13169) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message13169) ProtoMessage() {}
-
-func (x *Message13169) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[22]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message13169.ProtoReflect.Descriptor instead.
-func (*Message13169) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{22}
-}
-
-func (x *Message13169) GetField13223() []*Message13168 {
-	if x != nil {
-		return x.Field13223
-	}
-	return nil
-}
-
-func (x *Message13169) GetField13224() *Message13167 {
-	if x != nil {
-		return x.Field13224
-	}
-	return nil
-}
-
-func (x *Message13169) GetField13225() string {
-	if x != nil && x.Field13225 != nil {
-		return *x.Field13225
-	}
-	return ""
-}
-
-type Message19255 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field19257 *string `protobuf:"bytes,1,opt,name=field19257" json:"field19257,omitempty"`
-}
-
-func (x *Message19255) Reset() {
-	*x = Message19255{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[23]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message19255) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message19255) ProtoMessage() {}
-
-func (x *Message19255) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[23]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message19255.ProtoReflect.Descriptor instead.
-func (*Message19255) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{23}
-}
-
-func (x *Message19255) GetField19257() string {
-	if x != nil && x.Field19257 != nil {
-		return *x.Field19257
-	}
-	return ""
-}
-
-type Message35542 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field35543 *bool `protobuf:"varint,1,opt,name=field35543" json:"field35543,omitempty"`
-	Field35544 *bool `protobuf:"varint,2,opt,name=field35544" json:"field35544,omitempty"`
-	Field35545 *bool `protobuf:"varint,3,opt,name=field35545" json:"field35545,omitempty"`
-}
-
-func (x *Message35542) Reset() {
-	*x = Message35542{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[24]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message35542) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message35542) ProtoMessage() {}
-
-func (x *Message35542) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[24]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message35542.ProtoReflect.Descriptor instead.
-func (*Message35542) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{24}
-}
-
-func (x *Message35542) GetField35543() bool {
-	if x != nil && x.Field35543 != nil {
-		return *x.Field35543
-	}
-	return false
-}
-
-func (x *Message35542) GetField35544() bool {
-	if x != nil && x.Field35544 != nil {
-		return *x.Field35544
-	}
-	return false
-}
-
-func (x *Message35542) GetField35545() bool {
-	if x != nil && x.Field35545 != nil {
-		return *x.Field35545
-	}
-	return false
-}
-
-type Message3901 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field3990 *int32      `protobuf:"varint,1,opt,name=field3990" json:"field3990,omitempty"`
-	Field3991 *int32      `protobuf:"varint,2,opt,name=field3991" json:"field3991,omitempty"`
-	Field3992 *int32      `protobuf:"varint,3,opt,name=field3992" json:"field3992,omitempty"`
-	Field3993 *int32      `protobuf:"varint,4,opt,name=field3993" json:"field3993,omitempty"`
-	Field3994 *int32      `protobuf:"varint,7,opt,name=field3994" json:"field3994,omitempty"`
-	Field3995 *int32      `protobuf:"varint,8,opt,name=field3995" json:"field3995,omitempty"`
-	Field3996 *int32      `protobuf:"varint,9,opt,name=field3996" json:"field3996,omitempty"`
-	Field3997 *int32      `protobuf:"varint,10,opt,name=field3997" json:"field3997,omitempty"`
-	Field3998 *int32      `protobuf:"varint,11,opt,name=field3998" json:"field3998,omitempty"`
-	Field3999 *int32      `protobuf:"varint,12,opt,name=field3999" json:"field3999,omitempty"`
-	Field4000 *UnusedEnum `protobuf:"varint,6,opt,name=field4000,enum=benchmarks.google_message3.UnusedEnum" json:"field4000,omitempty"`
-	Field4001 *int32      `protobuf:"varint,5,opt,name=field4001" json:"field4001,omitempty"`
-}
-
-func (x *Message3901) Reset() {
-	*x = Message3901{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[25]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3901) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3901) ProtoMessage() {}
-
-func (x *Message3901) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[25]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3901.ProtoReflect.Descriptor instead.
-func (*Message3901) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{25}
-}
-
-func (x *Message3901) GetField3990() int32 {
-	if x != nil && x.Field3990 != nil {
-		return *x.Field3990
-	}
-	return 0
-}
-
-func (x *Message3901) GetField3991() int32 {
-	if x != nil && x.Field3991 != nil {
-		return *x.Field3991
-	}
-	return 0
-}
-
-func (x *Message3901) GetField3992() int32 {
-	if x != nil && x.Field3992 != nil {
-		return *x.Field3992
-	}
-	return 0
-}
-
-func (x *Message3901) GetField3993() int32 {
-	if x != nil && x.Field3993 != nil {
-		return *x.Field3993
-	}
-	return 0
-}
-
-func (x *Message3901) GetField3994() int32 {
-	if x != nil && x.Field3994 != nil {
-		return *x.Field3994
-	}
-	return 0
-}
-
-func (x *Message3901) GetField3995() int32 {
-	if x != nil && x.Field3995 != nil {
-		return *x.Field3995
-	}
-	return 0
-}
-
-func (x *Message3901) GetField3996() int32 {
-	if x != nil && x.Field3996 != nil {
-		return *x.Field3996
-	}
-	return 0
-}
-
-func (x *Message3901) GetField3997() int32 {
-	if x != nil && x.Field3997 != nil {
-		return *x.Field3997
-	}
-	return 0
-}
-
-func (x *Message3901) GetField3998() int32 {
-	if x != nil && x.Field3998 != nil {
-		return *x.Field3998
-	}
-	return 0
-}
-
-func (x *Message3901) GetField3999() int32 {
-	if x != nil && x.Field3999 != nil {
-		return *x.Field3999
-	}
-	return 0
-}
-
-func (x *Message3901) GetField4000() UnusedEnum {
-	if x != nil && x.Field4000 != nil {
-		return *x.Field4000
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message3901) GetField4001() int32 {
-	if x != nil && x.Field4001 != nil {
-		return *x.Field4001
-	}
-	return 0
-}
-
-type Message33968_Message33969 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message33968_Message33969) Reset() {
-	*x = Message33968_Message33969{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[26]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message33968_Message33969) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message33968_Message33969) ProtoMessage() {}
-
-func (x *Message33968_Message33969) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[26]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message33968_Message33969.ProtoReflect.Descriptor instead.
-func (*Message33968_Message33969) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{12, 0}
-}
-
-type Message18831_Message18832 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field18836   *int32                                    `protobuf:"varint,2,opt,name=field18836" json:"field18836,omitempty"`
-	Field18837   *string                                   `protobuf:"bytes,5,opt,name=field18837" json:"field18837,omitempty"`
-	Field18838   *float32                                  `protobuf:"fixed32,3,opt,name=field18838" json:"field18838,omitempty"`
-	Field18839   *float32                                  `protobuf:"fixed32,9,opt,name=field18839" json:"field18839,omitempty"`
-	Field18840   *int32                                    `protobuf:"varint,11,opt,name=field18840" json:"field18840,omitempty"`
-	Field18841   []uint64                                  `protobuf:"varint,4,rep,name=field18841" json:"field18841,omitempty"`
-	Message18833 []*Message18831_Message18832_Message18833 `protobuf:"group,6,rep,name=Message18833,json=message18833" json:"message18833,omitempty"`
-}
-
-func (x *Message18831_Message18832) Reset() {
-	*x = Message18831_Message18832{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[27]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message18831_Message18832) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message18831_Message18832) ProtoMessage() {}
-
-func (x *Message18831_Message18832) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[27]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message18831_Message18832.ProtoReflect.Descriptor instead.
-func (*Message18831_Message18832) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{14, 0}
-}
-
-func (x *Message18831_Message18832) GetField18836() int32 {
-	if x != nil && x.Field18836 != nil {
-		return *x.Field18836
-	}
-	return 0
-}
-
-func (x *Message18831_Message18832) GetField18837() string {
-	if x != nil && x.Field18837 != nil {
-		return *x.Field18837
-	}
-	return ""
-}
-
-func (x *Message18831_Message18832) GetField18838() float32 {
-	if x != nil && x.Field18838 != nil {
-		return *x.Field18838
-	}
-	return 0
-}
-
-func (x *Message18831_Message18832) GetField18839() float32 {
-	if x != nil && x.Field18839 != nil {
-		return *x.Field18839
-	}
-	return 0
-}
-
-func (x *Message18831_Message18832) GetField18840() int32 {
-	if x != nil && x.Field18840 != nil {
-		return *x.Field18840
-	}
-	return 0
-}
-
-func (x *Message18831_Message18832) GetField18841() []uint64 {
-	if x != nil {
-		return x.Field18841
-	}
-	return nil
-}
-
-func (x *Message18831_Message18832) GetMessage18833() []*Message18831_Message18832_Message18833 {
-	if x != nil {
-		return x.Message18833
-	}
-	return nil
-}
-
-type Message18831_Message18832_Message18833 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field18843 *uint64  `protobuf:"varint,7,req,name=field18843" json:"field18843,omitempty"`
-	Field18844 *string  `protobuf:"bytes,8,opt,name=field18844" json:"field18844,omitempty"`
-	Field18845 *float32 `protobuf:"fixed32,10,opt,name=field18845" json:"field18845,omitempty"`
-	Field18846 *int32   `protobuf:"varint,12,opt,name=field18846" json:"field18846,omitempty"`
-	Field18847 *bool    `protobuf:"varint,13,opt,name=field18847" json:"field18847,omitempty"`
-}
-
-func (x *Message18831_Message18832_Message18833) Reset() {
-	*x = Message18831_Message18832_Message18833{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[28]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message18831_Message18832_Message18833) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message18831_Message18832_Message18833) ProtoMessage() {}
-
-func (x *Message18831_Message18832_Message18833) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[28]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message18831_Message18832_Message18833.ProtoReflect.Descriptor instead.
-func (*Message18831_Message18832_Message18833) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{14, 0, 0}
-}
-
-func (x *Message18831_Message18832_Message18833) GetField18843() uint64 {
-	if x != nil && x.Field18843 != nil {
-		return *x.Field18843
-	}
-	return 0
-}
-
-func (x *Message18831_Message18832_Message18833) GetField18844() string {
-	if x != nil && x.Field18844 != nil {
-		return *x.Field18844
-	}
-	return ""
-}
-
-func (x *Message18831_Message18832_Message18833) GetField18845() float32 {
-	if x != nil && x.Field18845 != nil {
-		return *x.Field18845
-	}
-	return 0
-}
-
-func (x *Message18831_Message18832_Message18833) GetField18846() int32 {
-	if x != nil && x.Field18846 != nil {
-		return *x.Field18846
-	}
-	return 0
-}
-
-func (x *Message18831_Message18832_Message18833) GetField18847() bool {
-	if x != nil && x.Field18847 != nil {
-		return *x.Field18847
-	}
-	return false
-}
-
-type Message4144_Message4145 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field4165 *Enum4146 `protobuf:"varint,2,req,name=field4165,enum=benchmarks.google_message3.Enum4146" json:"field4165,omitempty"`
-	Field4166 *int32    `protobuf:"varint,3,req,name=field4166" json:"field4166,omitempty"`
-	Field4167 *Enum4160 `protobuf:"varint,9,opt,name=field4167,enum=benchmarks.google_message3.Enum4160" json:"field4167,omitempty"`
-	Field4168 []byte    `protobuf:"bytes,4,opt,name=field4168" json:"field4168,omitempty"`
-	Field4169 *Enum4152 `protobuf:"varint,5,opt,name=field4169,enum=benchmarks.google_message3.Enum4152" json:"field4169,omitempty"`
-	Field4170 *string   `protobuf:"bytes,6,opt,name=field4170" json:"field4170,omitempty"`
-}
-
-func (x *Message4144_Message4145) Reset() {
-	*x = Message4144_Message4145{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[29]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message4144_Message4145) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message4144_Message4145) ProtoMessage() {}
-
-func (x *Message4144_Message4145) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[29]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message4144_Message4145.ProtoReflect.Descriptor instead.
-func (*Message4144_Message4145) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{17, 0}
-}
-
-func (x *Message4144_Message4145) GetField4165() Enum4146 {
-	if x != nil && x.Field4165 != nil {
-		return *x.Field4165
-	}
-	return Enum4146_ENUM_VALUE4147
-}
-
-func (x *Message4144_Message4145) GetField4166() int32 {
-	if x != nil && x.Field4166 != nil {
-		return *x.Field4166
-	}
-	return 0
-}
-
-func (x *Message4144_Message4145) GetField4167() Enum4160 {
-	if x != nil && x.Field4167 != nil {
-		return *x.Field4167
-	}
-	return Enum4160_ENUM_VALUE4161
-}
-
-func (x *Message4144_Message4145) GetField4168() []byte {
-	if x != nil {
-		return x.Field4168
-	}
-	return nil
-}
-
-func (x *Message4144_Message4145) GetField4169() Enum4152 {
-	if x != nil && x.Field4169 != nil {
-		return *x.Field4169
-	}
-	return Enum4152_ENUM_VALUE4153
-}
-
-func (x *Message4144_Message4145) GetField4170() string {
-	if x != nil && x.Field4170 != nil {
-		return *x.Field4170
-	}
-	return ""
-}
-
-type Message35573_Message35574 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message35573_Message35574) Reset() {
-	*x = Message35573_Message35574{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[30]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message35573_Message35574) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message35573_Message35574) ProtoMessage() {}
-
-func (x *Message35573_Message35574) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[30]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message35573_Message35574.ProtoReflect.Descriptor instead.
-func (*Message35573_Message35574) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{18, 0}
-}
-
-type Message35573_Message35575 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field35709   *int64                                  `protobuf:"varint,2,opt,name=field35709" json:"field35709,omitempty"`
-	Field35710   *string                                 `protobuf:"bytes,3,opt,name=field35710" json:"field35710,omitempty"`
-	Field35711   *string                                 `protobuf:"bytes,19,opt,name=field35711" json:"field35711,omitempty"`
-	Field35712   *int32                                  `protobuf:"varint,20,opt,name=field35712" json:"field35712,omitempty"`
-	Field35713   *int32                                  `protobuf:"varint,21,opt,name=field35713" json:"field35713,omitempty"`
-	Field35714   *int32                                  `protobuf:"varint,22,opt,name=field35714" json:"field35714,omitempty"`
-	Field35715   *bool                                   `protobuf:"varint,23,opt,name=field35715" json:"field35715,omitempty"`
-	Field35716   *int32                                  `protobuf:"varint,47,opt,name=field35716" json:"field35716,omitempty"`
-	Field35717   *int32                                  `protobuf:"varint,48,opt,name=field35717" json:"field35717,omitempty"`
-	Field35718   *bool                                   `protobuf:"varint,24,opt,name=field35718" json:"field35718,omitempty"`
-	Field35719   *uint64                                 `protobuf:"fixed64,25,opt,name=field35719" json:"field35719,omitempty"`
-	Field35720   []byte                                  `protobuf:"bytes,52,opt,name=field35720" json:"field35720,omitempty"`
-	Field35721   *int32                                  `protobuf:"varint,18,opt,name=field35721" json:"field35721,omitempty"`
-	Field35722   *uint32                                 `protobuf:"fixed32,43,opt,name=field35722" json:"field35722,omitempty"`
-	Field35723   *bool                                   `protobuf:"varint,26,opt,name=field35723" json:"field35723,omitempty"`
-	Field35724   *int32                                  `protobuf:"varint,27,opt,name=field35724" json:"field35724,omitempty"`
-	Field35725   *int32                                  `protobuf:"varint,17,opt,name=field35725" json:"field35725,omitempty"`
-	Field35726   *bool                                   `protobuf:"varint,45,opt,name=field35726" json:"field35726,omitempty"`
-	Field35727   []int32                                 `protobuf:"varint,33,rep,name=field35727" json:"field35727,omitempty"`
-	Field35728   []int32                                 `protobuf:"varint,58,rep,name=field35728" json:"field35728,omitempty"`
-	Field35729   *float32                                `protobuf:"fixed32,34,opt,name=field35729" json:"field35729,omitempty"`
-	Field35730   *float32                                `protobuf:"fixed32,1009,opt,name=field35730" json:"field35730,omitempty"`
-	Field35731   *int32                                  `protobuf:"varint,28,opt,name=field35731" json:"field35731,omitempty"`
-	Field35732   []uint64                                `protobuf:"fixed64,1001,rep,name=field35732" json:"field35732,omitempty"`
-	Field35733   []uint64                                `protobuf:"fixed64,1002,rep,name=field35733" json:"field35733,omitempty"`
-	Field35734   *int32                                  `protobuf:"varint,44,opt,name=field35734" json:"field35734,omitempty"`
-	Field35735   *int32                                  `protobuf:"varint,50,opt,name=field35735" json:"field35735,omitempty"`
-	Field35736   *int32                                  `protobuf:"varint,36,opt,name=field35736" json:"field35736,omitempty"`
-	Field35737   *int32                                  `protobuf:"varint,40,opt,name=field35737" json:"field35737,omitempty"`
-	Field35738   *bool                                   `protobuf:"varint,1016,opt,name=field35738" json:"field35738,omitempty"`
-	Field35739   *bool                                   `protobuf:"varint,1010,opt,name=field35739" json:"field35739,omitempty"`
-	Field35740   *int32                                  `protobuf:"varint,37,opt,name=field35740" json:"field35740,omitempty"`
-	Field35741   *int32                                  `protobuf:"varint,38,opt,name=field35741" json:"field35741,omitempty"`
-	Field35742   *string                                 `protobuf:"bytes,46,opt,name=field35742" json:"field35742,omitempty"`
-	Field35743   *uint32                                 `protobuf:"varint,60,opt,name=field35743" json:"field35743,omitempty"`
-	Field35744   [][]byte                                `protobuf:"bytes,56,rep,name=field35744" json:"field35744,omitempty"`
-	Field35745   *Message0                               `protobuf:"bytes,57,opt,name=field35745" json:"field35745,omitempty"`
-	Message35576 *Message35573_Message35575_Message35576 `protobuf:"group,4,req,name=Message35576,json=message35576" json:"message35576,omitempty"`
-}
-
-func (x *Message35573_Message35575) Reset() {
-	*x = Message35573_Message35575{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[31]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message35573_Message35575) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message35573_Message35575) ProtoMessage() {}
-
-func (x *Message35573_Message35575) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[31]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message35573_Message35575.ProtoReflect.Descriptor instead.
-func (*Message35573_Message35575) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{18, 1}
-}
-
-func (x *Message35573_Message35575) GetField35709() int64 {
-	if x != nil && x.Field35709 != nil {
-		return *x.Field35709
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575) GetField35710() string {
-	if x != nil && x.Field35710 != nil {
-		return *x.Field35710
-	}
-	return ""
-}
-
-func (x *Message35573_Message35575) GetField35711() string {
-	if x != nil && x.Field35711 != nil {
-		return *x.Field35711
-	}
-	return ""
-}
-
-func (x *Message35573_Message35575) GetField35712() int32 {
-	if x != nil && x.Field35712 != nil {
-		return *x.Field35712
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575) GetField35713() int32 {
-	if x != nil && x.Field35713 != nil {
-		return *x.Field35713
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575) GetField35714() int32 {
-	if x != nil && x.Field35714 != nil {
-		return *x.Field35714
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575) GetField35715() bool {
-	if x != nil && x.Field35715 != nil {
-		return *x.Field35715
-	}
-	return false
-}
-
-func (x *Message35573_Message35575) GetField35716() int32 {
-	if x != nil && x.Field35716 != nil {
-		return *x.Field35716
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575) GetField35717() int32 {
-	if x != nil && x.Field35717 != nil {
-		return *x.Field35717
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575) GetField35718() bool {
-	if x != nil && x.Field35718 != nil {
-		return *x.Field35718
-	}
-	return false
-}
-
-func (x *Message35573_Message35575) GetField35719() uint64 {
-	if x != nil && x.Field35719 != nil {
-		return *x.Field35719
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575) GetField35720() []byte {
-	if x != nil {
-		return x.Field35720
-	}
-	return nil
-}
-
-func (x *Message35573_Message35575) GetField35721() int32 {
-	if x != nil && x.Field35721 != nil {
-		return *x.Field35721
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575) GetField35722() uint32 {
-	if x != nil && x.Field35722 != nil {
-		return *x.Field35722
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575) GetField35723() bool {
-	if x != nil && x.Field35723 != nil {
-		return *x.Field35723
-	}
-	return false
-}
-
-func (x *Message35573_Message35575) GetField35724() int32 {
-	if x != nil && x.Field35724 != nil {
-		return *x.Field35724
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575) GetField35725() int32 {
-	if x != nil && x.Field35725 != nil {
-		return *x.Field35725
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575) GetField35726() bool {
-	if x != nil && x.Field35726 != nil {
-		return *x.Field35726
-	}
-	return false
-}
-
-func (x *Message35573_Message35575) GetField35727() []int32 {
-	if x != nil {
-		return x.Field35727
-	}
-	return nil
-}
-
-func (x *Message35573_Message35575) GetField35728() []int32 {
-	if x != nil {
-		return x.Field35728
-	}
-	return nil
-}
-
-func (x *Message35573_Message35575) GetField35729() float32 {
-	if x != nil && x.Field35729 != nil {
-		return *x.Field35729
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575) GetField35730() float32 {
-	if x != nil && x.Field35730 != nil {
-		return *x.Field35730
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575) GetField35731() int32 {
-	if x != nil && x.Field35731 != nil {
-		return *x.Field35731
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575) GetField35732() []uint64 {
-	if x != nil {
-		return x.Field35732
-	}
-	return nil
-}
-
-func (x *Message35573_Message35575) GetField35733() []uint64 {
-	if x != nil {
-		return x.Field35733
-	}
-	return nil
-}
-
-func (x *Message35573_Message35575) GetField35734() int32 {
-	if x != nil && x.Field35734 != nil {
-		return *x.Field35734
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575) GetField35735() int32 {
-	if x != nil && x.Field35735 != nil {
-		return *x.Field35735
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575) GetField35736() int32 {
-	if x != nil && x.Field35736 != nil {
-		return *x.Field35736
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575) GetField35737() int32 {
-	if x != nil && x.Field35737 != nil {
-		return *x.Field35737
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575) GetField35738() bool {
-	if x != nil && x.Field35738 != nil {
-		return *x.Field35738
-	}
-	return false
-}
-
-func (x *Message35573_Message35575) GetField35739() bool {
-	if x != nil && x.Field35739 != nil {
-		return *x.Field35739
-	}
-	return false
-}
-
-func (x *Message35573_Message35575) GetField35740() int32 {
-	if x != nil && x.Field35740 != nil {
-		return *x.Field35740
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575) GetField35741() int32 {
-	if x != nil && x.Field35741 != nil {
-		return *x.Field35741
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575) GetField35742() string {
-	if x != nil && x.Field35742 != nil {
-		return *x.Field35742
-	}
-	return ""
-}
-
-func (x *Message35573_Message35575) GetField35743() uint32 {
-	if x != nil && x.Field35743 != nil {
-		return *x.Field35743
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575) GetField35744() [][]byte {
-	if x != nil {
-		return x.Field35744
-	}
-	return nil
-}
-
-func (x *Message35573_Message35575) GetField35745() *Message0 {
-	if x != nil {
-		return x.Field35745
-	}
-	return nil
-}
-
-func (x *Message35573_Message35575) GetMessage35576() *Message35573_Message35575_Message35576 {
-	if x != nil {
-		return x.Message35576
-	}
-	return nil
-}
-
-type Message35573_Message35575_Message35576 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field35747 *uint64   `protobuf:"fixed64,5,opt,name=field35747" json:"field35747,omitempty"`
-	Field35748 *int32    `protobuf:"varint,6,opt,name=field35748" json:"field35748,omitempty"`
-	Field35749 *int32    `protobuf:"varint,49,opt,name=field35749" json:"field35749,omitempty"`
-	Field35750 *int32    `protobuf:"varint,7,opt,name=field35750" json:"field35750,omitempty"`
-	Field35751 *uint32   `protobuf:"varint,59,opt,name=field35751" json:"field35751,omitempty"`
-	Field35752 *int32    `protobuf:"varint,14,opt,name=field35752" json:"field35752,omitempty"`
-	Field35753 *int32    `protobuf:"varint,15,opt,name=field35753" json:"field35753,omitempty"`
-	Field35754 *int32    `protobuf:"varint,35,opt,name=field35754" json:"field35754,omitempty"`
-	Field35755 []byte    `protobuf:"bytes,53,opt,name=field35755" json:"field35755,omitempty"`
-	Field35756 *int32    `protobuf:"varint,8,opt,name=field35756" json:"field35756,omitempty"`
-	Field35757 *string   `protobuf:"bytes,9,opt,name=field35757" json:"field35757,omitempty"`
-	Field35758 *uint64   `protobuf:"fixed64,10,opt,name=field35758" json:"field35758,omitempty"`
-	Field35759 *int32    `protobuf:"varint,11,opt,name=field35759" json:"field35759,omitempty"`
-	Field35760 *int32    `protobuf:"varint,12,opt,name=field35760" json:"field35760,omitempty"`
-	Field35761 *int32    `protobuf:"varint,41,opt,name=field35761" json:"field35761,omitempty"`
-	Field35762 *int32    `protobuf:"varint,30,opt,name=field35762" json:"field35762,omitempty"`
-	Field35763 *int32    `protobuf:"varint,31,opt,name=field35763" json:"field35763,omitempty"`
-	Field35764 *int32    `protobuf:"varint,13,opt,name=field35764" json:"field35764,omitempty"`
-	Field35765 []byte    `protobuf:"bytes,39,opt,name=field35765" json:"field35765,omitempty"`
-	Field35766 *string   `protobuf:"bytes,29,opt,name=field35766" json:"field35766,omitempty"`
-	Field35767 *int32    `protobuf:"varint,42,opt,name=field35767" json:"field35767,omitempty"`
-	Field35768 []int32   `protobuf:"varint,32,rep,name=field35768" json:"field35768,omitempty"`
-	Field35769 []int32   `protobuf:"varint,51,rep,name=field35769" json:"field35769,omitempty"`
-	Field35770 *int64    `protobuf:"varint,54,opt,name=field35770" json:"field35770,omitempty"`
-	Field35771 *Message0 `protobuf:"bytes,55,opt,name=field35771" json:"field35771,omitempty"`
-}
-
-func (x *Message35573_Message35575_Message35576) Reset() {
-	*x = Message35573_Message35575_Message35576{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[32]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message35573_Message35575_Message35576) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message35573_Message35575_Message35576) ProtoMessage() {}
-
-func (x *Message35573_Message35575_Message35576) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[32]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message35573_Message35575_Message35576.ProtoReflect.Descriptor instead.
-func (*Message35573_Message35575_Message35576) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{18, 1, 0}
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35747() uint64 {
-	if x != nil && x.Field35747 != nil {
-		return *x.Field35747
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35748() int32 {
-	if x != nil && x.Field35748 != nil {
-		return *x.Field35748
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35749() int32 {
-	if x != nil && x.Field35749 != nil {
-		return *x.Field35749
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35750() int32 {
-	if x != nil && x.Field35750 != nil {
-		return *x.Field35750
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35751() uint32 {
-	if x != nil && x.Field35751 != nil {
-		return *x.Field35751
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35752() int32 {
-	if x != nil && x.Field35752 != nil {
-		return *x.Field35752
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35753() int32 {
-	if x != nil && x.Field35753 != nil {
-		return *x.Field35753
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35754() int32 {
-	if x != nil && x.Field35754 != nil {
-		return *x.Field35754
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35755() []byte {
-	if x != nil {
-		return x.Field35755
-	}
-	return nil
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35756() int32 {
-	if x != nil && x.Field35756 != nil {
-		return *x.Field35756
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35757() string {
-	if x != nil && x.Field35757 != nil {
-		return *x.Field35757
-	}
-	return ""
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35758() uint64 {
-	if x != nil && x.Field35758 != nil {
-		return *x.Field35758
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35759() int32 {
-	if x != nil && x.Field35759 != nil {
-		return *x.Field35759
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35760() int32 {
-	if x != nil && x.Field35760 != nil {
-		return *x.Field35760
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35761() int32 {
-	if x != nil && x.Field35761 != nil {
-		return *x.Field35761
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35762() int32 {
-	if x != nil && x.Field35762 != nil {
-		return *x.Field35762
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35763() int32 {
-	if x != nil && x.Field35763 != nil {
-		return *x.Field35763
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35764() int32 {
-	if x != nil && x.Field35764 != nil {
-		return *x.Field35764
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35765() []byte {
-	if x != nil {
-		return x.Field35765
-	}
-	return nil
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35766() string {
-	if x != nil && x.Field35766 != nil {
-		return *x.Field35766
-	}
-	return ""
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35767() int32 {
-	if x != nil && x.Field35767 != nil {
-		return *x.Field35767
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35768() []int32 {
-	if x != nil {
-		return x.Field35768
-	}
-	return nil
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35769() []int32 {
-	if x != nil {
-		return x.Field35769
-	}
-	return nil
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35770() int64 {
-	if x != nil && x.Field35770 != nil {
-		return *x.Field35770
-	}
-	return 0
-}
-
-func (x *Message35573_Message35575_Message35576) GetField35771() *Message0 {
-	if x != nil {
-		return x.Field35771
-	}
-	return nil
-}
-
-type Message36858_Message36859 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field36968 *Enum36860 `protobuf:"varint,9,req,name=field36968,enum=benchmarks.google_message3.Enum36860" json:"field36968,omitempty"`
-	Field36969 *float32   `protobuf:"fixed32,10,opt,name=field36969" json:"field36969,omitempty"`
-}
-
-func (x *Message36858_Message36859) Reset() {
-	*x = Message36858_Message36859{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[33]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message36858_Message36859) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message36858_Message36859) ProtoMessage() {}
-
-func (x *Message36858_Message36859) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[33]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message36858_Message36859.ProtoReflect.Descriptor instead.
-func (*Message36858_Message36859) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP(), []int{19, 0}
-}
-
-func (x *Message36858_Message36859) GetField36968() Enum36860 {
-	if x != nil && x.Field36968 != nil {
-		return *x.Field36968
-	}
-	return Enum36860_ENUM_VALUE36861
-}
-
-func (x *Message36858_Message36859) GetField36969() float32 {
-	if x != nil && x.Field36969 != nil {
-		return *x.Field36969
-	}
-	return 0
-}
-
-var file_datasets_google_message3_benchmark_message3_2_proto_extTypes = []protoimpl.ExtensionInfo{
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message34621)(nil),
-		Field:         17562023,
-		Name:          "benchmarks.google_message3.Message34621.field34669",
-		Tag:           "bytes,17562023,opt,name=field34669",
-		Filename:      "datasets/google_message3/benchmark_message3_2.proto",
-	},
-}
-
-// Extension fields to Message0.
-var (
-	// optional benchmarks.google_message3.Message34621 field34669 = 17562023;
-	E_Message34621_Field34669 = &file_datasets_google_message3_benchmark_message3_2_proto_extTypes[0]
-)
-
-var File_datasets_google_message3_benchmark_message3_2_proto protoreflect.FileDescriptor
-
-var file_datasets_google_message3_benchmark_message3_2_proto_rawDesc = []byte{
-	0x0a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x32, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x33,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73,
-	0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x5f, 0x34, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x64, 0x61, 0x74,
-	0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x35, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x37, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x5f, 0x38, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x91, 0x02, 0x0a, 0x0c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x32, 0x38, 0x35, 0x33, 0x12, 0x45, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x32, 0x38, 0x36, 0x39, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
-	0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75,
-	0x6d, 0x32, 0x32, 0x38, 0x35, 0x34, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x32, 0x38,
-	0x36, 0x39, 0x12, 0x22, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x32, 0x38, 0x37, 0x30,
-	0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x32, 0x38, 0x37, 0x30, 0x12, 0x22, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x32, 0x38, 0x37, 0x31, 0x18, 0x03, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x32, 0x38, 0x37, 0x31, 0x12, 0x22, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x32, 0x38, 0x37, 0x32, 0x18, 0x05, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02,
-	0x10, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x32, 0x38, 0x37, 0x32, 0x12, 0x4e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x32, 0x38, 0x37, 0x33, 0x18, 0x04, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x32, 0x38, 0x37, 0x33, 0x22, 0xda,
-	0x09, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33, 0x34, 0x35, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x33, 0x33, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x33, 0x33, 0x12,
-	0x46, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x33, 0x34, 0x18, 0x16, 0x20,
-	0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x34, 0x35, 0x33, 0x34, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x35, 0x33, 0x35, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x32, 0x34, 0x33, 0x34, 0x36, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x33,
-	0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x33, 0x36, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x33,
-	0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x33, 0x37, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x33,
-	0x37, 0x12, 0x46, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x33, 0x38, 0x18,
-	0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x33, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x34, 0x35, 0x33, 0x39, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x33, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x34, 0x35, 0x34, 0x30, 0x18, 0x06, 0x20, 0x02, 0x28, 0x09, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x34, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x34, 0x35, 0x34, 0x31, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x34, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x34, 0x35, 0x34, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x34, 0x32, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x34, 0x35, 0x34, 0x33, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x32, 0x34, 0x33, 0x31, 0x36, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x35, 0x34, 0x33, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x34,
-	0x34, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33, 0x37,
-	0x36, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x34, 0x34, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x34, 0x35, 0x18, 0x0b, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x34, 0x35, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x34, 0x36, 0x18, 0x13, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x34, 0x36, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x34, 0x37, 0x18, 0x14, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x34, 0x37, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x34, 0x38, 0x18, 0x15, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x34, 0x38, 0x12, 0x4e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x34, 0x39, 0x18, 0x0c, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x34, 0x39, 0x12, 0x4e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x35, 0x30, 0x18, 0x0d, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x35, 0x30, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x35, 0x31, 0x18, 0x0e, 0x20, 0x03, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x35, 0x31, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x35, 0x32, 0x18, 0x0f, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x35, 0x32, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x35, 0x33, 0x18, 0x12, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x35, 0x33, 0x12, 0x48, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x35, 0x34, 0x18, 0x10, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33, 0x37, 0x39, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x34, 0x35, 0x35, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x35, 0x35, 0x35, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x34, 0x35, 0x35, 0x35, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x35, 0x35, 0x36, 0x18, 0x18, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x32, 0x34, 0x33, 0x35, 0x36, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x35,
-	0x36, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x35, 0x37, 0x18,
-	0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33, 0x36, 0x36, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x35, 0x37, 0x22, 0xa2, 0x01, 0x0a, 0x0c,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x34, 0x30, 0x33, 0x12, 0x48, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x38, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x34, 0x30, 0x31, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x34, 0x36, 0x38, 0x31, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x36, 0x38, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32,
-	0x34, 0x34, 0x30, 0x32, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x38, 0x32,
-	0x22, 0xa8, 0x09, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33, 0x39,
-	0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x33, 0x31, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x33,
-	0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x33, 0x32, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x33,
-	0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x33, 0x33, 0x18,
-	0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x33,
-	0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x33, 0x34, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x33,
-	0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x33, 0x35, 0x18,
-	0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x33,
-	0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x33, 0x36, 0x18,
-	0x10, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x33,
-	0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x33, 0x37, 0x18,
-	0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x33,
-	0x37, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x33, 0x38, 0x18,
-	0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x33,
-	0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x33, 0x39, 0x18,
-	0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x33,
-	0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x34, 0x30, 0x18,
-	0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x34,
-	0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x34, 0x31, 0x18,
-	0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x34,
-	0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x34, 0x32, 0x18,
-	0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x34,
-	0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x34, 0x33, 0x18,
-	0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x34,
-	0x33, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x34, 0x34, 0x18,
-	0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33, 0x37, 0x39, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x34, 0x34, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x34, 0x35, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x34, 0x35, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x34, 0x36, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x34, 0x36, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x34, 0x37, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x34, 0x37, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x34, 0x38, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x34, 0x38, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x34, 0x39, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x34, 0x39, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x35, 0x30, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x35, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x35, 0x31, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x35, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x35, 0x32, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x35, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x35, 0x33, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x35, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x35, 0x34, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x35, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x35, 0x35, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x35, 0x35, 0x22, 0x0e, 0x0a, 0x0c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x37, 0x34, 0x35, 0x34, 0x22, 0xae, 0x01, 0x0a, 0x0c,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x37, 0x33, 0x35, 0x37, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x31, 0x30, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x31, 0x30, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x31, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x31, 0x31, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x31, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x31, 0x32, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x31, 0x33, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x31, 0x33, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x31, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x31, 0x34, 0x22, 0xb9, 0x02, 0x0a,
-	0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x37, 0x33, 0x36, 0x30, 0x12, 0x48, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x32, 0x36, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x37, 0x33, 0x35, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x37, 0x34, 0x32, 0x36, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x37, 0x34, 0x32, 0x37, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x37, 0x33,
-	0x36, 0x31, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x32, 0x37, 0x12, 0x48,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x32, 0x38, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x37, 0x33, 0x35, 0x38, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x32, 0x38, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x37, 0x34, 0x32, 0x39, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x32, 0x39, 0x22, 0xa7, 0x02, 0x0a, 0x0c, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x34, 0x33, 0x38, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x34, 0x34, 0x34, 0x36, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34, 0x34, 0x36, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x34, 0x34, 0x34, 0x37, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x34, 0x33, 0x38, 0x31, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34,
-	0x34, 0x34, 0x37, 0x12, 0x46, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34, 0x34,
-	0x38, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34, 0x34, 0x38, 0x12, 0x45, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34, 0x34, 0x39, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32,
-	0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75,
-	0x6d, 0x33, 0x34, 0x33, 0x38, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34,
-	0x34, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34, 0x35, 0x30,
-	0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34,
-	0x35, 0x30, 0x22, 0xd5, 0x07, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x34,
-	0x36, 0x32, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x35,
-	0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34,
-	0x36, 0x35, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x35,
-	0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34,
-	0x36, 0x35, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x35,
-	0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34,
-	0x36, 0x35, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x35,
-	0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34,
-	0x36, 0x35, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x35,
-	0x35, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34,
-	0x36, 0x35, 0x35, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x35,
-	0x36, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34,
-	0x36, 0x35, 0x36, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x35,
-	0x37, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x34, 0x36, 0x31,
-	0x39, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x35, 0x37, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x35, 0x38, 0x18, 0x05, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x35, 0x38, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x35, 0x39, 0x18, 0x09, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x35, 0x39, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x36, 0x30, 0x18, 0x0c, 0x20, 0x01, 0x28,
-	0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x36, 0x30, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x36, 0x31, 0x18, 0x13, 0x20, 0x01, 0x28,
-	0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x36, 0x31, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x36, 0x32, 0x18, 0x0f, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x36, 0x32, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x36, 0x33, 0x18, 0x10, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x36, 0x33, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x36, 0x34, 0x18, 0x11, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x36, 0x34, 0x12, 0x4e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x36, 0x35, 0x18, 0x12, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x36, 0x35, 0x12, 0x48, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x36, 0x36, 0x18, 0x14, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x34, 0x36, 0x32, 0x31, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x34, 0x36, 0x36, 0x36, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x34, 0x36, 0x36, 0x37, 0x18, 0x64, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45,
-	0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x34, 0x36, 0x36, 0x37, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x34, 0x36, 0x36, 0x38, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45,
-	0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x34, 0x36, 0x36, 0x38, 0x32, 0x71, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x34, 0x36, 0x36, 0x39, 0x12, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x18, 0xa7, 0xf3, 0xaf, 0x08,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x34, 0x36, 0x32, 0x31, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x36, 0x39, 0x22, 0xa5, 0x04, 0x0a, 0x0c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x34, 0x37, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34, 0x38, 0x34, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34, 0x38, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34, 0x38, 0x35, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34, 0x38, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34, 0x38, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34, 0x38, 0x36, 0x12, 0x45, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34, 0x38, 0x37, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32,
-	0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75,
-	0x6d, 0x33, 0x35, 0x34, 0x37, 0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34,
-	0x38, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34, 0x38, 0x38,
-	0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34,
-	0x38, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34, 0x38, 0x39,
-	0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34,
-	0x38, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34, 0x39, 0x30,
-	0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34,
-	0x39, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34, 0x39, 0x31,
-	0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34,
-	0x39, 0x31, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34, 0x39, 0x32,
-	0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34,
-	0x39, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34, 0x39, 0x33,
-	0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34,
-	0x39, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34, 0x39, 0x34,
-	0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34,
-	0x39, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34, 0x39, 0x35,
-	0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34,
-	0x39, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34, 0x39, 0x36,
-	0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34,
-	0x39, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34, 0x39, 0x37,
-	0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x34,
-	0x39, 0x37, 0x22, 0xf8, 0x01, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x39, 0x34,
-	0x39, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x35, 0x35, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x35, 0x35, 0x12, 0x1a, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x35, 0x36, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x35, 0x36, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x35, 0x37, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x35, 0x37, 0x12, 0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x35,
-	0x38, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x33, 0x30, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x35, 0x38, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x35, 0x39, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x35, 0x39, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x36,
-	0x30, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x36,
-	0x30, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x36, 0x31, 0x18, 0x07, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x36, 0x31, 0x22, 0x4e, 0x0a,
-	0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x36, 0x39, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x37, 0x30, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x37, 0x30, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x37, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x37, 0x31, 0x22, 0xfb, 0x02,
-	0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x33, 0x39, 0x36, 0x38, 0x12, 0x59,
-	0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x33, 0x39, 0x36, 0x39, 0x18, 0x01,
-	0x20, 0x03, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x33, 0x39, 0x36, 0x38, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x33, 0x39, 0x36, 0x39, 0x52, 0x0c, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x33, 0x39, 0x36, 0x39, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x33, 0x39, 0x38, 0x39, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x33, 0x39, 0x35, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33,
-	0x39, 0x38, 0x39, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x39, 0x39,
-	0x30, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33,
-	0x39, 0x39, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x39, 0x39,
-	0x31, 0x18, 0x6c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33,
-	0x39, 0x39, 0x31, 0x12, 0x46, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x39, 0x39,
-	0x32, 0x18, 0x6b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x39, 0x39, 0x32, 0x1a, 0x0e, 0x0a, 0x0c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x33, 0x39, 0x36, 0x39, 0x22, 0x88, 0x07, 0x0a, 0x0b,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x36, 0x34, 0x34, 0x12, 0x4c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x30, 0x31, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73,
-	0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x30, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x37, 0x30, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x37, 0x30, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x37, 0x30, 0x33, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x37, 0x30, 0x33, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37,
-	0x30, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74,
-	0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x37, 0x30, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x30, 0x35,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x30,
-	0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x30, 0x36, 0x18, 0x13,
-	0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x30, 0x36, 0x12,
-	0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x30, 0x37, 0x18, 0x04, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x36, 0x33, 0x37, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x37, 0x30, 0x37, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x37, 0x30, 0x38, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x31,
-	0x32, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x30, 0x38, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x30, 0x39, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x30, 0x39, 0x12, 0x45, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x31, 0x30, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x36, 0x36, 0x34, 0x33, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37,
-	0x31, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x31, 0x31, 0x18,
-	0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x31, 0x31,
-	0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x31, 0x32, 0x18, 0x0e, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x31, 0x32, 0x12, 0x4c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x31, 0x33, 0x18, 0x0f, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x31, 0x33, 0x12, 0x4c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x31, 0x34, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x31, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x37, 0x31, 0x35, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x31, 0x35, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x37, 0x31, 0x36, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45,
-	0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x37, 0x31, 0x36, 0x22, 0xd3, 0x04, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x38, 0x38, 0x33, 0x31, 0x12, 0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x38, 0x38, 0x33, 0x32, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x35, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x38, 0x38, 0x33, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x38, 0x38, 0x33, 0x32, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x38, 0x38,
-	0x33, 0x32, 0x1a, 0xe7, 0x03, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x38,
-	0x38, 0x33, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x33,
-	0x36, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x38, 0x33, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x33,
-	0x37, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x38, 0x33, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x33,
-	0x38, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x38, 0x33, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x33,
-	0x39, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x38, 0x33, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x34,
-	0x30, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x38, 0x34, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x34,
-	0x31, 0x18, 0x04, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x38, 0x34, 0x31, 0x12, 0x66, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x38,
-	0x38, 0x33, 0x33, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x42, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x38,
-	0x38, 0x33, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x38, 0x38, 0x33, 0x32,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x38, 0x38, 0x33, 0x33, 0x52, 0x0c, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x38, 0x38, 0x33, 0x33, 0x1a, 0xae, 0x01, 0x0a, 0x0c,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x38, 0x38, 0x33, 0x33, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x34, 0x33, 0x18, 0x07, 0x20, 0x02, 0x28, 0x04,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x34, 0x33, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x34, 0x34, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x34, 0x34, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x34, 0x35, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x34, 0x35, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x34, 0x36, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x34, 0x36, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x34, 0x37, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x34, 0x37, 0x22, 0xa2, 0x01, 0x0a,
-	0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x30, 0x39, 0x30, 0x12, 0x48, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x31, 0x34, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x30, 0x38, 0x33, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x33, 0x31, 0x34, 0x31, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x33, 0x31, 0x34, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x33, 0x30, 0x38, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x31, 0x34,
-	0x32, 0x22, 0xf4, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x38,
-	0x37, 0x34, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x38, 0x38,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x33, 0x39, 0x31,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x38, 0x38, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x38, 0x39, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x38, 0x39, 0x12, 0x48, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x39, 0x30, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x38, 0x37, 0x33, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x31, 0x38, 0x39, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x31, 0x38, 0x39, 0x31, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x31, 0x38, 0x39, 0x31, 0x2a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x2a, 0x04, 0x08, 0x02,
-	0x10, 0x03, 0x2a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x22, 0x9a, 0x03, 0x0a, 0x0b, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x34, 0x31, 0x34, 0x34, 0x12, 0x55, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x34, 0x31, 0x34, 0x35, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x33, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x31, 0x34, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x31,
-	0x34, 0x35, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x31, 0x34, 0x35, 0x1a,
-	0xb3, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x31, 0x34, 0x35, 0x12,
-	0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x31, 0x36, 0x35, 0x18, 0x02, 0x20, 0x02,
-	0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x45, 0x6e, 0x75, 0x6d, 0x34, 0x31, 0x34, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34,
-	0x31, 0x36, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x31, 0x36, 0x36,
-	0x18, 0x03, 0x20, 0x02, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x31, 0x36,
-	0x36, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x31, 0x36, 0x37, 0x18, 0x09,
-	0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x34, 0x31, 0x36, 0x30, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x34, 0x31, 0x36, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x31,
-	0x36, 0x38, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34,
-	0x31, 0x36, 0x38, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x31, 0x36, 0x39,
-	0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x34, 0x31, 0x35, 0x32, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x34, 0x31, 0x36, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x34, 0x31, 0x37, 0x30, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x34, 0x31, 0x37, 0x30, 0x22, 0x98, 0x15, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x35, 0x35, 0x37, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x36, 0x39, 0x35, 0x18, 0x10, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x36, 0x39, 0x35, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x36, 0x39, 0x36, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x35, 0x36, 0x39, 0x36, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x35, 0x36, 0x39, 0x37, 0x18, 0xec, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x36, 0x39, 0x37, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x36, 0x39, 0x38, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x36, 0x39, 0x38, 0x12, 0x5a, 0x0a, 0x0c, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x35, 0x37, 0x34, 0x18, 0xf4, 0x07, 0x20, 0x03, 0x28, 0x0a,
-	0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x35, 0x37, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x35, 0x35, 0x37, 0x34, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x35, 0x35, 0x37, 0x34, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35,
-	0x37, 0x30, 0x30, 0x18, 0xf3, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x30, 0x30, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x37, 0x30, 0x31, 0x18, 0xed, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x35, 0x37, 0x30, 0x31, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x35, 0x37, 0x30, 0x32, 0x18, 0xee, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x30, 0x32, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x30, 0x33, 0x18, 0xef, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x30, 0x33, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x35, 0x37, 0x30, 0x34, 0x18, 0xf0, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x30, 0x34, 0x12, 0x59, 0x0a, 0x0c, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x35, 0x37, 0x35, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0a,
-	0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x35, 0x37, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x35, 0x35, 0x37, 0x35, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x35, 0x35, 0x37, 0x35, 0x1a, 0x0e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x35, 0x35, 0x37, 0x34, 0x1a, 0x98, 0x11, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x35, 0x35, 0x37, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x37, 0x30, 0x39, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x30, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x37, 0x31, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x31, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x37, 0x31, 0x31, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x31, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x37, 0x31, 0x32, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x31, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x37, 0x31, 0x33, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x31, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x37, 0x31, 0x34, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x31, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x37, 0x31, 0x35, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x31, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x37, 0x31, 0x36, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x31, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x37, 0x31, 0x37, 0x18, 0x30, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x31, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x37, 0x31, 0x38, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x31, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x37, 0x31, 0x39, 0x18, 0x19, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x31, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x37, 0x32, 0x30, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x32, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x37, 0x32, 0x31, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x32, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x37, 0x32, 0x32, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x32, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x37, 0x32, 0x33, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x32, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x37, 0x32, 0x34, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x32, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x37, 0x32, 0x35, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x32, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x37, 0x32, 0x36, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x32, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x37, 0x32, 0x37, 0x18, 0x21, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x32, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x37, 0x32, 0x38, 0x18, 0x3a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x32, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x37, 0x32, 0x39, 0x18, 0x22, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x32, 0x39, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x37, 0x33, 0x30, 0x18, 0xf1, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x35, 0x37, 0x33, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x35, 0x37, 0x33, 0x31, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x35, 0x37, 0x33, 0x31, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x35, 0x37, 0x33, 0x32, 0x18, 0xe9, 0x07, 0x20, 0x03, 0x28, 0x06, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x33, 0x32, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x37, 0x33, 0x33, 0x18, 0xea, 0x07, 0x20, 0x03, 0x28, 0x06, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x33, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x35, 0x37, 0x33, 0x34, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x33, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x35, 0x37, 0x33, 0x35, 0x18, 0x32, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x33, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x35, 0x37, 0x33, 0x36, 0x18, 0x24, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x33, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x35, 0x37, 0x33, 0x37, 0x18, 0x28, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x33, 0x37, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x35, 0x37, 0x33, 0x38, 0x18, 0xf8, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x33, 0x38, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x33, 0x39, 0x18, 0xf2, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x33, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x34, 0x30, 0x18, 0x25, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x34, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x34, 0x31, 0x18, 0x26, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x34, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x34, 0x32, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x34, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x34, 0x33, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0d, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x34, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x34, 0x34, 0x18, 0x38, 0x20, 0x03, 0x28, 0x0c, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x34, 0x34, 0x12, 0x44, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x34, 0x35, 0x18, 0x39, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x34,
-	0x35, 0x12, 0x66, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x35, 0x37,
-	0x36, 0x18, 0x04, 0x20, 0x02, 0x28, 0x0a, 0x32, 0x42, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x35, 0x37,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x35, 0x37, 0x35, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x35, 0x37, 0x36, 0x52, 0x0c, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x35, 0x37, 0x36, 0x1a, 0xd4, 0x06, 0x0a, 0x0c, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x35, 0x37, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x34, 0x37, 0x18, 0x05, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x34, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x34, 0x38, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x34, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x34, 0x39, 0x18, 0x31, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x34, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x35, 0x30, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x35, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x35, 0x31, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x35, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x35, 0x32, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x35, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x35, 0x33, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x35, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x35, 0x34, 0x18, 0x23, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x35, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x35, 0x35, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x35, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x35, 0x36, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x35, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x35, 0x37, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x35, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x35, 0x38, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x35, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x35, 0x39, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x35, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x36, 0x30, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x36, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x36, 0x31, 0x18, 0x29, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x36, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x36, 0x32, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x36, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x36, 0x33, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x36, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x36, 0x34, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x36, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x36, 0x35, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x36, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x36, 0x36, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x36, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x36, 0x37, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x36, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x36, 0x38, 0x18, 0x20, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x36, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x36, 0x39, 0x18, 0x33, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x36, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x37, 0x30, 0x18, 0x36, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x37, 0x30, 0x12, 0x44, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x37, 0x31, 0x18, 0x37, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x37, 0x37, 0x31,
-	0x22, 0xea, 0x04, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x35,
-	0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x35, 0x36, 0x18,
-	0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x35,
-	0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x35, 0x37, 0x18,
-	0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x35,
-	0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x35, 0x38, 0x18,
-	0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x35,
-	0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x35, 0x39, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x35,
-	0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x36, 0x30, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x36,
-	0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x36, 0x31, 0x18,
-	0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x36,
-	0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x36, 0x32, 0x18,
-	0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x36,
-	0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x36, 0x33, 0x18,
-	0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x36,
-	0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x36, 0x34, 0x18,
-	0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x36,
-	0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x36, 0x35, 0x18,
-	0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x36,
-	0x35, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x36, 0x36, 0x18,
-	0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x35, 0x30, 0x36, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x36, 0x36, 0x12, 0x59, 0x0a, 0x0c, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x35, 0x39, 0x18, 0x08, 0x20, 0x03, 0x28,
-	0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x35, 0x38, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x36, 0x38, 0x35, 0x39, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x36, 0x38, 0x35, 0x39, 0x1a, 0x75, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x36, 0x38, 0x35, 0x39, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x36, 0x39, 0x36, 0x38, 0x18, 0x09, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x36, 0x38, 0x36,
-	0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x36, 0x38, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x36, 0x39, 0x18, 0x0a, 0x20, 0x01, 0x28,
-	0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x36, 0x39, 0x36, 0x39, 0x22, 0xd8, 0x05,
-	0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x31, 0x37, 0x34, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x33, 0x37, 0x18, 0x06, 0x20, 0x02,
-	0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x33, 0x37, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x33, 0x38, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x33, 0x38, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x33, 0x39, 0x18, 0x04, 0x20, 0x02,
-	0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x33, 0x39, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x34, 0x30, 0x18, 0x08, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x34, 0x30, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x34, 0x31, 0x18, 0x05, 0x20, 0x01,
-	0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x34, 0x31, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x34, 0x32, 0x18, 0x07, 0x20, 0x01,
-	0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x34, 0x32, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x34, 0x33, 0x18, 0x11, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x34, 0x33, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x34, 0x34, 0x18, 0x13, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x34, 0x34, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x34, 0x35, 0x18, 0x14, 0x20, 0x01,
-	0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x34, 0x35, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x34, 0x36, 0x18, 0x09, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x34, 0x36, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x34, 0x37, 0x18, 0x0a, 0x20, 0x01,
-	0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x34, 0x37, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x34, 0x38, 0x18, 0x0b, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x34, 0x38, 0x12, 0x48,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x34, 0x39, 0x18, 0x15, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x31, 0x35, 0x31, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x34, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x33, 0x32, 0x35, 0x30, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x35, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x33, 0x32, 0x35, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x35, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x33, 0x32, 0x35, 0x32, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x35, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x33, 0x32, 0x35, 0x33, 0x18, 0x10, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x35, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x33, 0x32, 0x35, 0x34, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x35, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x33, 0x32, 0x35, 0x35, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x35, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x33, 0x32, 0x35, 0x36, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x35, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x33, 0x32, 0x35, 0x37, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x35, 0x37, 0x22, 0xdf, 0x27, 0x0a, 0x0c, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x31, 0x38, 0x32, 0x38, 0x33, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x34, 0x37, 0x38, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x37, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x34, 0x37, 0x39, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x37, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x34, 0x38, 0x30, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x38, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x34, 0x38, 0x31, 0x18, 0x6b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x38, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x34, 0x38, 0x32, 0x18, 0x6c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x38, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x34, 0x38, 0x33, 0x18, 0x6d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x38, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x34, 0x38, 0x34, 0x18, 0x69, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x38, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x34, 0x38, 0x35, 0x18, 0x71, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x38, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x34, 0x38, 0x36, 0x18, 0x72, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x38, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x34, 0x38, 0x37, 0x18, 0x7c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x38, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x34, 0x38, 0x38, 0x18, 0x7d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x38, 0x38, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x34, 0x38, 0x39, 0x18, 0x80, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x38, 0x39, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x39, 0x30, 0x18, 0x87, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x39, 0x30, 0x12, 0x1f, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x39, 0x31, 0x18, 0xa6, 0x01, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x39, 0x31, 0x12, 0x1f, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x39, 0x32, 0x18, 0x88, 0x01, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x39, 0x32, 0x12, 0x1f, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x39, 0x33, 0x18, 0x8c, 0x01, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x39, 0x33, 0x12, 0x1f,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x39, 0x34, 0x18, 0xab, 0x01, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x39, 0x34, 0x12,
-	0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x39, 0x35, 0x18, 0x94, 0x01,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x39, 0x35,
-	0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x39, 0x36, 0x18, 0x91,
-	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x39,
-	0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x39, 0x37, 0x18,
-	0x75, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x39,
-	0x37, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x39, 0x38, 0x18,
-	0x92, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34,
-	0x39, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34, 0x39, 0x39,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x34,
-	0x39, 0x39, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x30, 0x30,
-	0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35,
-	0x30, 0x30, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x30, 0x31,
-	0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35,
-	0x30, 0x31, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x30, 0x32,
-	0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35,
-	0x30, 0x32, 0x12, 0x49, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x30, 0x33,
-	0x18, 0x9b, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x38, 0x32, 0x35,
-	0x33, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x30, 0x33, 0x12, 0x4f, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x30, 0x34, 0x18, 0xb8, 0x01, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x30, 0x34, 0x12, 0x4f,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x30, 0x35, 0x18, 0xa3, 0x01, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x30, 0x35, 0x12,
-	0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x30, 0x36, 0x18, 0x10, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x30, 0x36, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x30, 0x37, 0x18, 0x14, 0x20,
-	0x03, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x30, 0x37, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x30, 0x38, 0x18, 0x07, 0x20,
-	0x03, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x30, 0x38, 0x12,
-	0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x30, 0x39, 0x18, 0xc2, 0x01,
-	0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x30, 0x39,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x31, 0x30, 0x18, 0x1e,
-	0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x31, 0x30,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x31, 0x31, 0x18, 0x1f,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x31, 0x31,
-	0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x31, 0x32, 0x18, 0xb2,
-	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x31,
-	0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x31, 0x33, 0x18,
-	0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x31,
-	0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x31, 0x34, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x31,
-	0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x31, 0x35, 0x18,
-	0x64, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x31,
-	0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x31, 0x36, 0x18,
-	0x65, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x31,
-	0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x31, 0x37, 0x18,
-	0x66, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x31,
-	0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x31, 0x38, 0x18,
-	0x67, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x31,
-	0x38, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x31, 0x39, 0x18,
-	0x68, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x31,
-	0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x32, 0x30, 0x18,
-	0x6e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x32,
-	0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x32, 0x31, 0x18,
-	0x70, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x32,
-	0x31, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x32, 0x32, 0x18,
-	0x6f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x32,
-	0x32, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x32, 0x33, 0x18,
-	0x73, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x32,
-	0x33, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x32, 0x34, 0x18,
-	0x77, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x32,
-	0x34, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x32, 0x35, 0x18,
-	0x7f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x32,
-	0x35, 0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x32, 0x36, 0x18,
-	0xb9, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35,
-	0x32, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x32, 0x37,
-	0x18, 0x78, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35,
-	0x32, 0x37, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x32, 0x38,
-	0x18, 0x84, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x35, 0x32, 0x38, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x32,
-	0x39, 0x18, 0x7e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x35, 0x32, 0x39, 0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x33,
-	0x30, 0x18, 0x81, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74,
-	0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x38, 0x35, 0x33, 0x30, 0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35,
-	0x33, 0x31, 0x18, 0x83, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70,
-	0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x35, 0x33, 0x31, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x35, 0x33, 0x32, 0x18, 0x96, 0x01, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x38, 0x35, 0x33, 0x32, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x38, 0x35, 0x33, 0x33, 0x18, 0x85, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x35, 0x33, 0x33, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x35, 0x33, 0x34, 0x18, 0x86, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x33, 0x34, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x38, 0x35, 0x33, 0x35, 0x18, 0x8b, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x33, 0x35, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x35, 0x33, 0x36, 0x18, 0x89, 0x01, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x33, 0x36, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x33, 0x37, 0x18, 0x8a, 0x01, 0x20, 0x01, 0x28, 0x06, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x33, 0x37, 0x12, 0x4f, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x33, 0x38, 0x18, 0x8d, 0x01, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e,
-	0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x33, 0x38, 0x12, 0x1f, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x33, 0x39, 0x18, 0x8e, 0x01, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x33, 0x39, 0x12, 0x1f, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x34, 0x30, 0x18, 0xb5, 0x01, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x34, 0x30, 0x12, 0x49,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x34, 0x31, 0x18, 0x8f, 0x01, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x38, 0x31, 0x36, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x34, 0x31, 0x12, 0x49, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x35, 0x34, 0x32, 0x18, 0x9a, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x36, 0x36, 0x38, 0x35, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x38, 0x35, 0x34, 0x32, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35,
-	0x34, 0x33, 0x18, 0x90, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x35, 0x34, 0x33, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x35, 0x34, 0x34, 0x18, 0x93, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x38, 0x35, 0x34, 0x34, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x38, 0x35, 0x34, 0x35, 0x18, 0x95, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x35, 0x34, 0x35, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x35, 0x34, 0x36, 0x18, 0x97, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x34, 0x36, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x38, 0x35, 0x34, 0x37, 0x18, 0x98, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x34, 0x37, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x35, 0x34, 0x38, 0x18, 0x99, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x34, 0x38, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x34, 0x39, 0x18, 0xa1, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x34, 0x39, 0x12, 0x44, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x35, 0x30, 0x18, 0x7b, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x35,
-	0x30, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x35, 0x31, 0x18,
-	0x9c, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35,
-	0x35, 0x31, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x35, 0x32,
-	0x18, 0x9d, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x35, 0x35, 0x32, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x35,
-	0x33, 0x18, 0xbc, 0x01, 0x20, 0x03, 0x28, 0x06, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x38, 0x35, 0x35, 0x33, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35,
-	0x35, 0x34, 0x18, 0x9e, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x35, 0x35, 0x34, 0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x35, 0x35, 0x35, 0x18, 0x9f, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d,
-	0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x38, 0x35, 0x35, 0x35, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x38, 0x35, 0x35, 0x36, 0x18, 0xa0, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x35, 0x35, 0x36, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x35, 0x35, 0x37, 0x18, 0xa2, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x35, 0x37, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x38, 0x35, 0x35, 0x38, 0x18, 0xa4, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x35, 0x38, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x35, 0x35, 0x39, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x35, 0x39, 0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x35, 0x36, 0x30, 0x18, 0xa7, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73,
-	0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x36, 0x30, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x36, 0x31, 0x18, 0xa8, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x36, 0x31, 0x12, 0x1f, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x36, 0x32, 0x18, 0xa9, 0x01, 0x20, 0x03, 0x28, 0x06,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x36, 0x32, 0x12, 0x1f, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x36, 0x33, 0x18, 0xaa, 0x01, 0x20, 0x03, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x36, 0x33, 0x12, 0x4f, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x36, 0x34, 0x18, 0xac, 0x01, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x36, 0x34, 0x12, 0x1f,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x36, 0x35, 0x18, 0xad, 0x01, 0x20,
-	0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x36, 0x35, 0x12,
-	0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x36, 0x36, 0x18, 0xae, 0x01,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x36, 0x36,
-	0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x36, 0x37, 0x18, 0xaf,
-	0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x36,
-	0x37, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x36, 0x38, 0x18,
-	0xbd, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35,
-	0x36, 0x38, 0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x36, 0x39,
-	0x18, 0xb0, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x35, 0x36, 0x39, 0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x37,
-	0x30, 0x18, 0xb1, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74,
-	0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x38, 0x35, 0x37, 0x30, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35,
-	0x37, 0x31, 0x18, 0xb3, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x35, 0x37, 0x31, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x35, 0x37, 0x32, 0x18, 0xb4, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x38, 0x35, 0x37, 0x32, 0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x38, 0x35, 0x37, 0x33, 0x18, 0xb6, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45,
-	0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x35, 0x37, 0x33, 0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x35, 0x37, 0x34, 0x18, 0xb7, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x37, 0x34, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x38, 0x35, 0x37, 0x35, 0x18, 0x79, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x37, 0x35, 0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x38, 0x35, 0x37, 0x36, 0x18, 0xba, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x37, 0x36, 0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x35, 0x37, 0x37, 0x18, 0xbb, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73,
-	0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x37, 0x37, 0x12, 0x4f, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x37, 0x38, 0x18, 0xbe, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x37, 0x38, 0x12, 0x1f, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x37, 0x39, 0x18, 0xbf, 0x01, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x37, 0x39, 0x12, 0x1f, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x38, 0x30, 0x18, 0xc0, 0x01, 0x20, 0x01, 0x28,
-	0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x38, 0x30, 0x12, 0x1f, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x38, 0x31, 0x18, 0xc1, 0x01, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x35, 0x38, 0x31, 0x2a, 0x04,
-	0x08, 0x74, 0x10, 0x75, 0x2a, 0x04, 0x08, 0x76, 0x10, 0x77, 0x2a, 0x06, 0x08, 0x82, 0x01, 0x10,
-	0x83, 0x01, 0x2a, 0x06, 0x08, 0xa5, 0x01, 0x10, 0xa6, 0x01, 0x22, 0xc2, 0x01, 0x0a, 0x0c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x31, 0x36, 0x39, 0x12, 0x48, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x32, 0x33, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x31, 0x36, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x33, 0x32, 0x32, 0x33, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33,
-	0x32, 0x32, 0x34, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33,
-	0x31, 0x36, 0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x32, 0x34, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x32, 0x35, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x32, 0x35, 0x22,
-	0x2e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x39, 0x32, 0x35, 0x35, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x39, 0x32, 0x35, 0x37, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x39, 0x32, 0x35, 0x37, 0x22,
-	0x6e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x35, 0x34, 0x32, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x34, 0x33, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x34, 0x33, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x34, 0x34, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x34, 0x34, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x34, 0x35, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x34, 0x35, 0x22,
-	0x9d, 0x03, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x39, 0x30, 0x31, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x39, 0x30, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x39, 0x30, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x39, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x39, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x39, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x39, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x39, 0x39, 0x33, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x39, 0x39, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x39, 0x39, 0x34, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x39, 0x39, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39,
-	0x39, 0x35, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x39, 0x39, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x39, 0x36,
-	0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x39,
-	0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x39, 0x37, 0x18, 0x0a,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x39, 0x37, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x39, 0x38, 0x18, 0x0b, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x39, 0x38, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x39, 0x39, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x39, 0x39, 0x12, 0x44, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x34, 0x30, 0x30, 0x30, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73,
-	0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x30, 0x30,
-	0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x30, 0x30, 0x31, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x30, 0x30, 0x31, 0x42,
-	0x23, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0xf8, 0x01, 0x01,
-}
-
-var (
-	file_datasets_google_message3_benchmark_message3_2_proto_rawDescOnce sync.Once
-	file_datasets_google_message3_benchmark_message3_2_proto_rawDescData = file_datasets_google_message3_benchmark_message3_2_proto_rawDesc
-)
-
-func file_datasets_google_message3_benchmark_message3_2_proto_rawDescGZIP() []byte {
-	file_datasets_google_message3_benchmark_message3_2_proto_rawDescOnce.Do(func() {
-		file_datasets_google_message3_benchmark_message3_2_proto_rawDescData = protoimpl.X.CompressGZIP(file_datasets_google_message3_benchmark_message3_2_proto_rawDescData)
-	})
-	return file_datasets_google_message3_benchmark_message3_2_proto_rawDescData
-}
-
-var file_datasets_google_message3_benchmark_message3_2_proto_msgTypes = make([]protoimpl.MessageInfo, 34)
-var file_datasets_google_message3_benchmark_message3_2_proto_goTypes = []interface{}{
-	(*Message22853)(nil),                           // 0: benchmarks.google_message3.Message22853
-	(*Message24345)(nil),                           // 1: benchmarks.google_message3.Message24345
-	(*Message24403)(nil),                           // 2: benchmarks.google_message3.Message24403
-	(*Message24391)(nil),                           // 3: benchmarks.google_message3.Message24391
-	(*Message27454)(nil),                           // 4: benchmarks.google_message3.Message27454
-	(*Message27357)(nil),                           // 5: benchmarks.google_message3.Message27357
-	(*Message27360)(nil),                           // 6: benchmarks.google_message3.Message27360
-	(*Message34387)(nil),                           // 7: benchmarks.google_message3.Message34387
-	(*Message34621)(nil),                           // 8: benchmarks.google_message3.Message34621
-	(*Message35476)(nil),                           // 9: benchmarks.google_message3.Message35476
-	(*Message949)(nil),                             // 10: benchmarks.google_message3.Message949
-	(*Message36869)(nil),                           // 11: benchmarks.google_message3.Message36869
-	(*Message33968)(nil),                           // 12: benchmarks.google_message3.Message33968
-	(*Message6644)(nil),                            // 13: benchmarks.google_message3.Message6644
-	(*Message18831)(nil),                           // 14: benchmarks.google_message3.Message18831
-	(*Message13090)(nil),                           // 15: benchmarks.google_message3.Message13090
-	(*Message11874)(nil),                           // 16: benchmarks.google_message3.Message11874
-	(*Message4144)(nil),                            // 17: benchmarks.google_message3.Message4144
-	(*Message35573)(nil),                           // 18: benchmarks.google_message3.Message35573
-	(*Message36858)(nil),                           // 19: benchmarks.google_message3.Message36858
-	(*Message13174)(nil),                           // 20: benchmarks.google_message3.Message13174
-	(*Message18283)(nil),                           // 21: benchmarks.google_message3.Message18283
-	(*Message13169)(nil),                           // 22: benchmarks.google_message3.Message13169
-	(*Message19255)(nil),                           // 23: benchmarks.google_message3.Message19255
-	(*Message35542)(nil),                           // 24: benchmarks.google_message3.Message35542
-	(*Message3901)(nil),                            // 25: benchmarks.google_message3.Message3901
-	(*Message33968_Message33969)(nil),              // 26: benchmarks.google_message3.Message33968.Message33969
-	(*Message18831_Message18832)(nil),              // 27: benchmarks.google_message3.Message18831.Message18832
-	(*Message18831_Message18832_Message18833)(nil), // 28: benchmarks.google_message3.Message18831.Message18832.Message18833
-	(*Message4144_Message4145)(nil),                // 29: benchmarks.google_message3.Message4144.Message4145
-	(*Message35573_Message35574)(nil),              // 30: benchmarks.google_message3.Message35573.Message35574
-	(*Message35573_Message35575)(nil),              // 31: benchmarks.google_message3.Message35573.Message35575
-	(*Message35573_Message35575_Message35576)(nil), // 32: benchmarks.google_message3.Message35573.Message35575.Message35576
-	(*Message36858_Message36859)(nil),              // 33: benchmarks.google_message3.Message36858.Message36859
-	(Enum22854)(0),                                 // 34: benchmarks.google_message3.Enum22854
-	(*UnusedEmptyMessage)(nil),                     // 35: benchmarks.google_message3.UnusedEmptyMessage
-	(UnusedEnum)(0),                                // 36: benchmarks.google_message3.UnusedEnum
-	(*Message24346)(nil),                           // 37: benchmarks.google_message3.Message24346
-	(*Message24316)(nil),                           // 38: benchmarks.google_message3.Message24316
-	(*Message24376)(nil),                           // 39: benchmarks.google_message3.Message24376
-	(*Message24379)(nil),                           // 40: benchmarks.google_message3.Message24379
-	(*Message24356)(nil),                           // 41: benchmarks.google_message3.Message24356
-	(*Message24366)(nil),                           // 42: benchmarks.google_message3.Message24366
-	(*Message24401)(nil),                           // 43: benchmarks.google_message3.Message24401
-	(*Message24402)(nil),                           // 44: benchmarks.google_message3.Message24402
-	(*Message27358)(nil),                           // 45: benchmarks.google_message3.Message27358
-	(Enum27361)(0),                                 // 46: benchmarks.google_message3.Enum27361
-	(*Message34381)(nil),                           // 47: benchmarks.google_message3.Message34381
-	(Enum34388)(0),                                 // 48: benchmarks.google_message3.Enum34388
-	(*Message34619)(nil),                           // 49: benchmarks.google_message3.Message34619
-	(Enum35477)(0),                                 // 50: benchmarks.google_message3.Enum35477
-	(*Message730)(nil),                             // 51: benchmarks.google_message3.Message730
-	(*Message33958)(nil),                           // 52: benchmarks.google_message3.Message33958
-	(*Message6637)(nil),                            // 53: benchmarks.google_message3.Message6637
-	(*Message6126)(nil),                            // 54: benchmarks.google_message3.Message6126
-	(*Message6643)(nil),                            // 55: benchmarks.google_message3.Message6643
-	(*Message13083)(nil),                           // 56: benchmarks.google_message3.Message13083
-	(*Message13088)(nil),                           // 57: benchmarks.google_message3.Message13088
-	(*Message10391)(nil),                           // 58: benchmarks.google_message3.Message10391
-	(*Message11873)(nil),                           // 59: benchmarks.google_message3.Message11873
-	(*Message35506)(nil),                           // 60: benchmarks.google_message3.Message35506
-	(*Message13151)(nil),                           // 61: benchmarks.google_message3.Message13151
-	(*Message18253)(nil),                           // 62: benchmarks.google_message3.Message18253
-	(*Message16816)(nil),                           // 63: benchmarks.google_message3.Message16816
-	(*Message16685)(nil),                           // 64: benchmarks.google_message3.Message16685
-	(*Message0)(nil),                               // 65: benchmarks.google_message3.Message0
-	(*Message13168)(nil),                           // 66: benchmarks.google_message3.Message13168
-	(*Message13167)(nil),                           // 67: benchmarks.google_message3.Message13167
-	(Enum4146)(0),                                  // 68: benchmarks.google_message3.Enum4146
-	(Enum4160)(0),                                  // 69: benchmarks.google_message3.Enum4160
-	(Enum4152)(0),                                  // 70: benchmarks.google_message3.Enum4152
-	(Enum36860)(0),                                 // 71: benchmarks.google_message3.Enum36860
-}
-var file_datasets_google_message3_benchmark_message3_2_proto_depIdxs = []int32{
-	34,  // 0: benchmarks.google_message3.Message22853.field22869:type_name -> benchmarks.google_message3.Enum22854
-	35,  // 1: benchmarks.google_message3.Message22853.field22873:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	36,  // 2: benchmarks.google_message3.Message24345.field24534:type_name -> benchmarks.google_message3.UnusedEnum
-	37,  // 3: benchmarks.google_message3.Message24345.field24535:type_name -> benchmarks.google_message3.Message24346
-	36,  // 4: benchmarks.google_message3.Message24345.field24538:type_name -> benchmarks.google_message3.UnusedEnum
-	38,  // 5: benchmarks.google_message3.Message24345.field24543:type_name -> benchmarks.google_message3.Message24316
-	39,  // 6: benchmarks.google_message3.Message24345.field24544:type_name -> benchmarks.google_message3.Message24376
-	35,  // 7: benchmarks.google_message3.Message24345.field24549:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 8: benchmarks.google_message3.Message24345.field24550:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	40,  // 9: benchmarks.google_message3.Message24345.field24554:type_name -> benchmarks.google_message3.Message24379
-	41,  // 10: benchmarks.google_message3.Message24345.field24556:type_name -> benchmarks.google_message3.Message24356
-	42,  // 11: benchmarks.google_message3.Message24345.field24557:type_name -> benchmarks.google_message3.Message24366
-	43,  // 12: benchmarks.google_message3.Message24403.field24681:type_name -> benchmarks.google_message3.Message24401
-	44,  // 13: benchmarks.google_message3.Message24403.field24682:type_name -> benchmarks.google_message3.Message24402
-	35,  // 14: benchmarks.google_message3.Message24391.field24638:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	40,  // 15: benchmarks.google_message3.Message24391.field24644:type_name -> benchmarks.google_message3.Message24379
-	35,  // 16: benchmarks.google_message3.Message24391.field24645:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 17: benchmarks.google_message3.Message24391.field24646:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 18: benchmarks.google_message3.Message24391.field24647:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 19: benchmarks.google_message3.Message24391.field24648:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 20: benchmarks.google_message3.Message24391.field24649:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 21: benchmarks.google_message3.Message24391.field24650:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	45,  // 22: benchmarks.google_message3.Message27360.field27426:type_name -> benchmarks.google_message3.Message27358
-	46,  // 23: benchmarks.google_message3.Message27360.field27427:type_name -> benchmarks.google_message3.Enum27361
-	45,  // 24: benchmarks.google_message3.Message27360.field27428:type_name -> benchmarks.google_message3.Message27358
-	35,  // 25: benchmarks.google_message3.Message27360.field27429:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	47,  // 26: benchmarks.google_message3.Message34387.field34447:type_name -> benchmarks.google_message3.Message34381
-	36,  // 27: benchmarks.google_message3.Message34387.field34448:type_name -> benchmarks.google_message3.UnusedEnum
-	48,  // 28: benchmarks.google_message3.Message34387.field34449:type_name -> benchmarks.google_message3.Enum34388
-	35,  // 29: benchmarks.google_message3.Message34621.field34656:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	49,  // 30: benchmarks.google_message3.Message34621.field34657:type_name -> benchmarks.google_message3.Message34619
-	35,  // 31: benchmarks.google_message3.Message34621.field34665:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	8,   // 32: benchmarks.google_message3.Message34621.field34666:type_name -> benchmarks.google_message3.Message34621
-	35,  // 33: benchmarks.google_message3.Message34621.field34667:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 34: benchmarks.google_message3.Message34621.field34668:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	50,  // 35: benchmarks.google_message3.Message35476.field35487:type_name -> benchmarks.google_message3.Enum35477
-	35,  // 36: benchmarks.google_message3.Message35476.field35492:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	51,  // 37: benchmarks.google_message3.Message949.field958:type_name -> benchmarks.google_message3.Message730
-	26,  // 38: benchmarks.google_message3.Message33968.message33969:type_name -> benchmarks.google_message3.Message33968.Message33969
-	52,  // 39: benchmarks.google_message3.Message33968.field33989:type_name -> benchmarks.google_message3.Message33958
-	35,  // 40: benchmarks.google_message3.Message33968.field33990:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	36,  // 41: benchmarks.google_message3.Message33968.field33992:type_name -> benchmarks.google_message3.UnusedEnum
-	35,  // 42: benchmarks.google_message3.Message6644.field6701:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 43: benchmarks.google_message3.Message6644.field6704:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	53,  // 44: benchmarks.google_message3.Message6644.field6707:type_name -> benchmarks.google_message3.Message6637
-	54,  // 45: benchmarks.google_message3.Message6644.field6708:type_name -> benchmarks.google_message3.Message6126
-	55,  // 46: benchmarks.google_message3.Message6644.field6710:type_name -> benchmarks.google_message3.Message6643
-	35,  // 47: benchmarks.google_message3.Message6644.field6712:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 48: benchmarks.google_message3.Message6644.field6713:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 49: benchmarks.google_message3.Message6644.field6714:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 50: benchmarks.google_message3.Message6644.field6716:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	27,  // 51: benchmarks.google_message3.Message18831.message18832:type_name -> benchmarks.google_message3.Message18831.Message18832
-	56,  // 52: benchmarks.google_message3.Message13090.field13141:type_name -> benchmarks.google_message3.Message13083
-	57,  // 53: benchmarks.google_message3.Message13090.field13142:type_name -> benchmarks.google_message3.Message13088
-	58,  // 54: benchmarks.google_message3.Message11874.field11888:type_name -> benchmarks.google_message3.Message10391
-	59,  // 55: benchmarks.google_message3.Message11874.field11890:type_name -> benchmarks.google_message3.Message11873
-	29,  // 56: benchmarks.google_message3.Message4144.message4145:type_name -> benchmarks.google_message3.Message4144.Message4145
-	30,  // 57: benchmarks.google_message3.Message35573.message35574:type_name -> benchmarks.google_message3.Message35573.Message35574
-	31,  // 58: benchmarks.google_message3.Message35573.message35575:type_name -> benchmarks.google_message3.Message35573.Message35575
-	60,  // 59: benchmarks.google_message3.Message36858.field36966:type_name -> benchmarks.google_message3.Message35506
-	33,  // 60: benchmarks.google_message3.Message36858.message36859:type_name -> benchmarks.google_message3.Message36858.Message36859
-	61,  // 61: benchmarks.google_message3.Message13174.field13249:type_name -> benchmarks.google_message3.Message13151
-	35,  // 62: benchmarks.google_message3.Message18283.field18478:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 63: benchmarks.google_message3.Message18283.field18500:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 64: benchmarks.google_message3.Message18283.field18501:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 65: benchmarks.google_message3.Message18283.field18502:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62,  // 66: benchmarks.google_message3.Message18283.field18503:type_name -> benchmarks.google_message3.Message18253
-	35,  // 67: benchmarks.google_message3.Message18283.field18504:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 68: benchmarks.google_message3.Message18283.field18505:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 69: benchmarks.google_message3.Message18283.field18506:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 70: benchmarks.google_message3.Message18283.field18512:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 71: benchmarks.google_message3.Message18283.field18519:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 72: benchmarks.google_message3.Message18283.field18522:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 73: benchmarks.google_message3.Message18283.field18523:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 74: benchmarks.google_message3.Message18283.field18524:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 75: benchmarks.google_message3.Message18283.field18525:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 76: benchmarks.google_message3.Message18283.field18526:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 77: benchmarks.google_message3.Message18283.field18529:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 78: benchmarks.google_message3.Message18283.field18530:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 79: benchmarks.google_message3.Message18283.field18531:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 80: benchmarks.google_message3.Message18283.field18538:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	63,  // 81: benchmarks.google_message3.Message18283.field18541:type_name -> benchmarks.google_message3.Message16816
-	64,  // 82: benchmarks.google_message3.Message18283.field18542:type_name -> benchmarks.google_message3.Message16685
-	65,  // 83: benchmarks.google_message3.Message18283.field18550:type_name -> benchmarks.google_message3.Message0
-	35,  // 84: benchmarks.google_message3.Message18283.field18555:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 85: benchmarks.google_message3.Message18283.field18559:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 86: benchmarks.google_message3.Message18283.field18560:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 87: benchmarks.google_message3.Message18283.field18564:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 88: benchmarks.google_message3.Message18283.field18566:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 89: benchmarks.google_message3.Message18283.field18569:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 90: benchmarks.google_message3.Message18283.field18570:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 91: benchmarks.google_message3.Message18283.field18573:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 92: benchmarks.google_message3.Message18283.field18574:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 93: benchmarks.google_message3.Message18283.field18575:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 94: benchmarks.google_message3.Message18283.field18576:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 95: benchmarks.google_message3.Message18283.field18577:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35,  // 96: benchmarks.google_message3.Message18283.field18578:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	66,  // 97: benchmarks.google_message3.Message13169.field13223:type_name -> benchmarks.google_message3.Message13168
-	67,  // 98: benchmarks.google_message3.Message13169.field13224:type_name -> benchmarks.google_message3.Message13167
-	36,  // 99: benchmarks.google_message3.Message3901.field4000:type_name -> benchmarks.google_message3.UnusedEnum
-	28,  // 100: benchmarks.google_message3.Message18831.Message18832.message18833:type_name -> benchmarks.google_message3.Message18831.Message18832.Message18833
-	68,  // 101: benchmarks.google_message3.Message4144.Message4145.field4165:type_name -> benchmarks.google_message3.Enum4146
-	69,  // 102: benchmarks.google_message3.Message4144.Message4145.field4167:type_name -> benchmarks.google_message3.Enum4160
-	70,  // 103: benchmarks.google_message3.Message4144.Message4145.field4169:type_name -> benchmarks.google_message3.Enum4152
-	65,  // 104: benchmarks.google_message3.Message35573.Message35575.field35745:type_name -> benchmarks.google_message3.Message0
-	32,  // 105: benchmarks.google_message3.Message35573.Message35575.message35576:type_name -> benchmarks.google_message3.Message35573.Message35575.Message35576
-	65,  // 106: benchmarks.google_message3.Message35573.Message35575.Message35576.field35771:type_name -> benchmarks.google_message3.Message0
-	71,  // 107: benchmarks.google_message3.Message36858.Message36859.field36968:type_name -> benchmarks.google_message3.Enum36860
-	65,  // 108: benchmarks.google_message3.Message34621.field34669:extendee -> benchmarks.google_message3.Message0
-	8,   // 109: benchmarks.google_message3.Message34621.field34669:type_name -> benchmarks.google_message3.Message34621
-	110, // [110:110] is the sub-list for method output_type
-	110, // [110:110] is the sub-list for method input_type
-	109, // [109:110] is the sub-list for extension type_name
-	108, // [108:109] is the sub-list for extension extendee
-	0,   // [0:108] is the sub-list for field type_name
-}
-
-func init() { file_datasets_google_message3_benchmark_message3_2_proto_init() }
-func file_datasets_google_message3_benchmark_message3_2_proto_init() {
-	if File_datasets_google_message3_benchmark_message3_2_proto != nil {
-		return
-	}
-	file_datasets_google_message3_benchmark_message3_3_proto_init()
-	file_datasets_google_message3_benchmark_message3_4_proto_init()
-	file_datasets_google_message3_benchmark_message3_5_proto_init()
-	file_datasets_google_message3_benchmark_message3_7_proto_init()
-	file_datasets_google_message3_benchmark_message3_8_proto_init()
-	if !protoimpl.UnsafeEnabled {
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message22853); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message24345); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message24403); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message24391); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message27454); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message27357); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message27360); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message34387); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message34621); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message35476); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message949); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message36869); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message33968); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6644); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message18831); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message13090); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message11874); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message4144); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message35573); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message36858); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message13174); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message18283); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message13169); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message19255); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message35542); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3901); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message33968_Message33969); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message18831_Message18832); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message18831_Message18832_Message18833); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message4144_Message4145); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message35573_Message35574); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message35573_Message35575); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message35573_Message35575_Message35576); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_2_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message36858_Message36859); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_datasets_google_message3_benchmark_message3_2_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   34,
-			NumExtensions: 1,
-			NumServices:   0,
-		},
-		GoTypes:           file_datasets_google_message3_benchmark_message3_2_proto_goTypes,
-		DependencyIndexes: file_datasets_google_message3_benchmark_message3_2_proto_depIdxs,
-		MessageInfos:      file_datasets_google_message3_benchmark_message3_2_proto_msgTypes,
-		ExtensionInfos:    file_datasets_google_message3_benchmark_message3_2_proto_extTypes,
-	}.Build()
-	File_datasets_google_message3_benchmark_message3_2_proto = out.File
-	file_datasets_google_message3_benchmark_message3_2_proto_rawDesc = nil
-	file_datasets_google_message3_benchmark_message3_2_proto_goTypes = nil
-	file_datasets_google_message3_benchmark_message3_2_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_3.pb.go b/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_3.pb.go
deleted file mode 100644
index fe4ff23..0000000
--- a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_3.pb.go
+++ /dev/null
@@ -1,6051 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// LINT: ALLOW_GROUPS
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: datasets/google_message3/benchmark_message3_3.proto
-
-package google_message3
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Message35546 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field35556   *int64                     `protobuf:"varint,1,opt,name=field35556" json:"field35556,omitempty"`
-	Field35557   *int32                     `protobuf:"varint,2,opt,name=field35557" json:"field35557,omitempty"`
-	Field35558   *bool                      `protobuf:"varint,3,opt,name=field35558" json:"field35558,omitempty"`
-	Field35559   *int64                     `protobuf:"varint,13,opt,name=field35559" json:"field35559,omitempty"`
-	Message35547 *Message35546_Message35547 `protobuf:"group,4,opt,name=Message35547,json=message35547" json:"message35547,omitempty"`
-	Message35548 *Message35546_Message35548 `protobuf:"group,10,opt,name=Message35548,json=message35548" json:"message35548,omitempty"`
-	Field35562   *bool                      `protobuf:"varint,14,opt,name=field35562" json:"field35562,omitempty"`
-	Field35563   *bool                      `protobuf:"varint,15,opt,name=field35563" json:"field35563,omitempty"`
-	Field35564   *int32                     `protobuf:"varint,16,opt,name=field35564" json:"field35564,omitempty"`
-	Field35565   *bool                      `protobuf:"varint,17,opt,name=field35565" json:"field35565,omitempty"`
-	Field35566   *bool                      `protobuf:"varint,18,opt,name=field35566" json:"field35566,omitempty"`
-	Field35567   *string                    `protobuf:"bytes,100,opt,name=field35567" json:"field35567,omitempty"`
-}
-
-func (x *Message35546) Reset() {
-	*x = Message35546{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message35546) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message35546) ProtoMessage() {}
-
-func (x *Message35546) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message35546.ProtoReflect.Descriptor instead.
-func (*Message35546) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Message35546) GetField35556() int64 {
-	if x != nil && x.Field35556 != nil {
-		return *x.Field35556
-	}
-	return 0
-}
-
-func (x *Message35546) GetField35557() int32 {
-	if x != nil && x.Field35557 != nil {
-		return *x.Field35557
-	}
-	return 0
-}
-
-func (x *Message35546) GetField35558() bool {
-	if x != nil && x.Field35558 != nil {
-		return *x.Field35558
-	}
-	return false
-}
-
-func (x *Message35546) GetField35559() int64 {
-	if x != nil && x.Field35559 != nil {
-		return *x.Field35559
-	}
-	return 0
-}
-
-func (x *Message35546) GetMessage35547() *Message35546_Message35547 {
-	if x != nil {
-		return x.Message35547
-	}
-	return nil
-}
-
-func (x *Message35546) GetMessage35548() *Message35546_Message35548 {
-	if x != nil {
-		return x.Message35548
-	}
-	return nil
-}
-
-func (x *Message35546) GetField35562() bool {
-	if x != nil && x.Field35562 != nil {
-		return *x.Field35562
-	}
-	return false
-}
-
-func (x *Message35546) GetField35563() bool {
-	if x != nil && x.Field35563 != nil {
-		return *x.Field35563
-	}
-	return false
-}
-
-func (x *Message35546) GetField35564() int32 {
-	if x != nil && x.Field35564 != nil {
-		return *x.Field35564
-	}
-	return 0
-}
-
-func (x *Message35546) GetField35565() bool {
-	if x != nil && x.Field35565 != nil {
-		return *x.Field35565
-	}
-	return false
-}
-
-func (x *Message35546) GetField35566() bool {
-	if x != nil && x.Field35566 != nil {
-		return *x.Field35566
-	}
-	return false
-}
-
-func (x *Message35546) GetField35567() string {
-	if x != nil && x.Field35567 != nil {
-		return *x.Field35567
-	}
-	return ""
-}
-
-type Message2356 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field2368   *Message1374               `protobuf:"bytes,121,opt,name=field2368" json:"field2368,omitempty"`
-	Field2369   *uint64                    `protobuf:"varint,1,opt,name=field2369" json:"field2369,omitempty"`
-	Field2370   *int32                     `protobuf:"varint,2,opt,name=field2370" json:"field2370,omitempty"`
-	Field2371   *int32                     `protobuf:"varint,17,opt,name=field2371" json:"field2371,omitempty"`
-	Field2372   *string                    `protobuf:"bytes,3,req,name=field2372" json:"field2372,omitempty"`
-	Field2373   *int32                     `protobuf:"varint,7,opt,name=field2373" json:"field2373,omitempty"`
-	Field2374   []byte                     `protobuf:"bytes,8,opt,name=field2374" json:"field2374,omitempty"`
-	Field2375   *string                    `protobuf:"bytes,4,opt,name=field2375" json:"field2375,omitempty"`
-	Field2376   *string                    `protobuf:"bytes,101,opt,name=field2376" json:"field2376,omitempty"`
-	Field2377   *int32                     `protobuf:"varint,102,opt,name=field2377" json:"field2377,omitempty"`
-	Field2378   *int32                     `protobuf:"varint,103,opt,name=field2378" json:"field2378,omitempty"`
-	Field2379   *int32                     `protobuf:"varint,104,opt,name=field2379" json:"field2379,omitempty"`
-	Field2380   *int32                     `protobuf:"varint,113,opt,name=field2380" json:"field2380,omitempty"`
-	Field2381   *int32                     `protobuf:"varint,114,opt,name=field2381" json:"field2381,omitempty"`
-	Field2382   *int32                     `protobuf:"varint,115,opt,name=field2382" json:"field2382,omitempty"`
-	Field2383   *int32                     `protobuf:"varint,117,opt,name=field2383" json:"field2383,omitempty"`
-	Field2384   *int32                     `protobuf:"varint,118,opt,name=field2384" json:"field2384,omitempty"`
-	Field2385   *int32                     `protobuf:"varint,119,opt,name=field2385" json:"field2385,omitempty"`
-	Field2386   *int32                     `protobuf:"varint,105,opt,name=field2386" json:"field2386,omitempty"`
-	Field2387   []byte                     `protobuf:"bytes,5,opt,name=field2387" json:"field2387,omitempty"`
-	Message2357 *Message2356_Message2357   `protobuf:"group,6,opt,name=Message2357,json=message2357" json:"message2357,omitempty"`
-	Field2389   *string                    `protobuf:"bytes,120,opt,name=field2389" json:"field2389,omitempty"`
-	Message2358 *Message2356_Message2358   `protobuf:"group,107,opt,name=Message2358,json=message2358" json:"message2358,omitempty"`
-	Message2359 []*Message2356_Message2359 `protobuf:"group,40,rep,name=Message2359,json=message2359" json:"message2359,omitempty"`
-	Field2392   *int32                     `protobuf:"varint,50,opt,name=field2392" json:"field2392,omitempty"`
-	Field2393   *UnusedEmptyMessage        `protobuf:"bytes,60,opt,name=field2393" json:"field2393,omitempty"`
-	Field2394   *UnusedEmptyMessage        `protobuf:"bytes,70,opt,name=field2394" json:"field2394,omitempty"`
-	Field2395   *UnusedEmptyMessage        `protobuf:"bytes,80,opt,name=field2395" json:"field2395,omitempty"`
-	Field2396   *UnusedEmptyMessage        `protobuf:"bytes,90,opt,name=field2396" json:"field2396,omitempty"`
-	Field2397   *string                    `protobuf:"bytes,100,opt,name=field2397" json:"field2397,omitempty"`
-	Field2398   *string                    `protobuf:"bytes,123,opt,name=field2398" json:"field2398,omitempty"`
-}
-
-func (x *Message2356) Reset() {
-	*x = Message2356{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message2356) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message2356) ProtoMessage() {}
-
-func (x *Message2356) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message2356.ProtoReflect.Descriptor instead.
-func (*Message2356) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Message2356) GetField2368() *Message1374 {
-	if x != nil {
-		return x.Field2368
-	}
-	return nil
-}
-
-func (x *Message2356) GetField2369() uint64 {
-	if x != nil && x.Field2369 != nil {
-		return *x.Field2369
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2370() int32 {
-	if x != nil && x.Field2370 != nil {
-		return *x.Field2370
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2371() int32 {
-	if x != nil && x.Field2371 != nil {
-		return *x.Field2371
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2372() string {
-	if x != nil && x.Field2372 != nil {
-		return *x.Field2372
-	}
-	return ""
-}
-
-func (x *Message2356) GetField2373() int32 {
-	if x != nil && x.Field2373 != nil {
-		return *x.Field2373
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2374() []byte {
-	if x != nil {
-		return x.Field2374
-	}
-	return nil
-}
-
-func (x *Message2356) GetField2375() string {
-	if x != nil && x.Field2375 != nil {
-		return *x.Field2375
-	}
-	return ""
-}
-
-func (x *Message2356) GetField2376() string {
-	if x != nil && x.Field2376 != nil {
-		return *x.Field2376
-	}
-	return ""
-}
-
-func (x *Message2356) GetField2377() int32 {
-	if x != nil && x.Field2377 != nil {
-		return *x.Field2377
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2378() int32 {
-	if x != nil && x.Field2378 != nil {
-		return *x.Field2378
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2379() int32 {
-	if x != nil && x.Field2379 != nil {
-		return *x.Field2379
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2380() int32 {
-	if x != nil && x.Field2380 != nil {
-		return *x.Field2380
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2381() int32 {
-	if x != nil && x.Field2381 != nil {
-		return *x.Field2381
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2382() int32 {
-	if x != nil && x.Field2382 != nil {
-		return *x.Field2382
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2383() int32 {
-	if x != nil && x.Field2383 != nil {
-		return *x.Field2383
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2384() int32 {
-	if x != nil && x.Field2384 != nil {
-		return *x.Field2384
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2385() int32 {
-	if x != nil && x.Field2385 != nil {
-		return *x.Field2385
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2386() int32 {
-	if x != nil && x.Field2386 != nil {
-		return *x.Field2386
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2387() []byte {
-	if x != nil {
-		return x.Field2387
-	}
-	return nil
-}
-
-func (x *Message2356) GetMessage2357() *Message2356_Message2357 {
-	if x != nil {
-		return x.Message2357
-	}
-	return nil
-}
-
-func (x *Message2356) GetField2389() string {
-	if x != nil && x.Field2389 != nil {
-		return *x.Field2389
-	}
-	return ""
-}
-
-func (x *Message2356) GetMessage2358() *Message2356_Message2358 {
-	if x != nil {
-		return x.Message2358
-	}
-	return nil
-}
-
-func (x *Message2356) GetMessage2359() []*Message2356_Message2359 {
-	if x != nil {
-		return x.Message2359
-	}
-	return nil
-}
-
-func (x *Message2356) GetField2392() int32 {
-	if x != nil && x.Field2392 != nil {
-		return *x.Field2392
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2393() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field2393
-	}
-	return nil
-}
-
-func (x *Message2356) GetField2394() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field2394
-	}
-	return nil
-}
-
-func (x *Message2356) GetField2395() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field2395
-	}
-	return nil
-}
-
-func (x *Message2356) GetField2396() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field2396
-	}
-	return nil
-}
-
-func (x *Message2356) GetField2397() string {
-	if x != nil && x.Field2397 != nil {
-		return *x.Field2397
-	}
-	return ""
-}
-
-func (x *Message2356) GetField2398() string {
-	if x != nil && x.Field2398 != nil {
-		return *x.Field2398
-	}
-	return ""
-}
-
-type Message7029 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7183   *int32                     `protobuf:"varint,1,req,name=field7183" json:"field7183,omitempty"`
-	Field7184   *int32                     `protobuf:"varint,2,opt,name=field7184" json:"field7184,omitempty"`
-	Field7185   *int32                     `protobuf:"varint,3,opt,name=field7185" json:"field7185,omitempty"`
-	Field7186   *int32                     `protobuf:"varint,4,opt,name=field7186" json:"field7186,omitempty"`
-	Field7187   *int32                     `protobuf:"varint,5,opt,name=field7187" json:"field7187,omitempty"`
-	Field7188   *int32                     `protobuf:"varint,6,opt,name=field7188" json:"field7188,omitempty"`
-	Field7189   *int32                     `protobuf:"varint,17,opt,name=field7189" json:"field7189,omitempty"`
-	Field7190   *int32                     `protobuf:"varint,18,opt,name=field7190" json:"field7190,omitempty"`
-	Field7191   *int32                     `protobuf:"varint,49,opt,name=field7191" json:"field7191,omitempty"`
-	Field7192   *int32                     `protobuf:"varint,28,opt,name=field7192" json:"field7192,omitempty"`
-	Field7193   *int32                     `protobuf:"varint,33,opt,name=field7193" json:"field7193,omitempty"`
-	Field7194   *int32                     `protobuf:"varint,25,opt,name=field7194" json:"field7194,omitempty"`
-	Field7195   *int32                     `protobuf:"varint,26,opt,name=field7195" json:"field7195,omitempty"`
-	Field7196   *int32                     `protobuf:"varint,40,opt,name=field7196" json:"field7196,omitempty"`
-	Field7197   *int32                     `protobuf:"varint,41,opt,name=field7197" json:"field7197,omitempty"`
-	Field7198   *int32                     `protobuf:"varint,42,opt,name=field7198" json:"field7198,omitempty"`
-	Field7199   *int32                     `protobuf:"varint,43,opt,name=field7199" json:"field7199,omitempty"`
-	Field7200   *int32                     `protobuf:"varint,19,opt,name=field7200" json:"field7200,omitempty"`
-	Field7201   *int32                     `protobuf:"varint,7,opt,name=field7201" json:"field7201,omitempty"`
-	Field7202   *int32                     `protobuf:"varint,8,opt,name=field7202" json:"field7202,omitempty"`
-	Field7203   *int32                     `protobuf:"varint,9,opt,name=field7203" json:"field7203,omitempty"`
-	Field7204   *int32                     `protobuf:"varint,10,opt,name=field7204" json:"field7204,omitempty"`
-	Field7205   *int32                     `protobuf:"varint,11,opt,name=field7205" json:"field7205,omitempty"`
-	Field7206   *int32                     `protobuf:"varint,12,opt,name=field7206" json:"field7206,omitempty"`
-	Message7030 []*Message7029_Message7030 `protobuf:"group,13,rep,name=Message7030,json=message7030" json:"message7030,omitempty"`
-	Message7031 []*Message7029_Message7031 `protobuf:"group,21,rep,name=Message7031,json=message7031" json:"message7031,omitempty"`
-	Field7209   *int32                     `protobuf:"varint,20,opt,name=field7209" json:"field7209,omitempty"`
-	Field7210   *float32                   `protobuf:"fixed32,27,opt,name=field7210" json:"field7210,omitempty"`
-	Field7211   *int32                     `protobuf:"varint,29,opt,name=field7211" json:"field7211,omitempty"`
-	Field7212   *int32                     `protobuf:"varint,32,opt,name=field7212" json:"field7212,omitempty"`
-	Field7213   *string                    `protobuf:"bytes,48,opt,name=field7213" json:"field7213,omitempty"`
-	Field7214   *bool                      `protobuf:"varint,34,opt,name=field7214" json:"field7214,omitempty"`
-	Field7215   *int32                     `protobuf:"varint,36,opt,name=field7215" json:"field7215,omitempty"`
-	Field7216   *float32                   `protobuf:"fixed32,37,opt,name=field7216" json:"field7216,omitempty"`
-	Field7217   *bool                      `protobuf:"varint,38,opt,name=field7217" json:"field7217,omitempty"`
-	Field7218   *bool                      `protobuf:"varint,39,opt,name=field7218" json:"field7218,omitempty"`
-	Field7219   *UnusedEmptyMessage        `protobuf:"bytes,44,opt,name=field7219" json:"field7219,omitempty"`
-	Field7220   *int32                     `protobuf:"varint,45,opt,name=field7220" json:"field7220,omitempty"`
-	Field7221   *int32                     `protobuf:"varint,46,opt,name=field7221" json:"field7221,omitempty"`
-	Field7222   *int32                     `protobuf:"varint,47,opt,name=field7222" json:"field7222,omitempty"`
-	Field7223   *UnusedEmptyMessage        `protobuf:"bytes,50,opt,name=field7223" json:"field7223,omitempty"`
-	Field7224   *int32                     `protobuf:"varint,51,opt,name=field7224" json:"field7224,omitempty"`
-}
-
-func (x *Message7029) Reset() {
-	*x = Message7029{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7029) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7029) ProtoMessage() {}
-
-func (x *Message7029) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7029.ProtoReflect.Descriptor instead.
-func (*Message7029) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Message7029) GetField7183() int32 {
-	if x != nil && x.Field7183 != nil {
-		return *x.Field7183
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7184() int32 {
-	if x != nil && x.Field7184 != nil {
-		return *x.Field7184
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7185() int32 {
-	if x != nil && x.Field7185 != nil {
-		return *x.Field7185
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7186() int32 {
-	if x != nil && x.Field7186 != nil {
-		return *x.Field7186
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7187() int32 {
-	if x != nil && x.Field7187 != nil {
-		return *x.Field7187
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7188() int32 {
-	if x != nil && x.Field7188 != nil {
-		return *x.Field7188
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7189() int32 {
-	if x != nil && x.Field7189 != nil {
-		return *x.Field7189
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7190() int32 {
-	if x != nil && x.Field7190 != nil {
-		return *x.Field7190
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7191() int32 {
-	if x != nil && x.Field7191 != nil {
-		return *x.Field7191
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7192() int32 {
-	if x != nil && x.Field7192 != nil {
-		return *x.Field7192
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7193() int32 {
-	if x != nil && x.Field7193 != nil {
-		return *x.Field7193
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7194() int32 {
-	if x != nil && x.Field7194 != nil {
-		return *x.Field7194
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7195() int32 {
-	if x != nil && x.Field7195 != nil {
-		return *x.Field7195
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7196() int32 {
-	if x != nil && x.Field7196 != nil {
-		return *x.Field7196
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7197() int32 {
-	if x != nil && x.Field7197 != nil {
-		return *x.Field7197
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7198() int32 {
-	if x != nil && x.Field7198 != nil {
-		return *x.Field7198
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7199() int32 {
-	if x != nil && x.Field7199 != nil {
-		return *x.Field7199
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7200() int32 {
-	if x != nil && x.Field7200 != nil {
-		return *x.Field7200
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7201() int32 {
-	if x != nil && x.Field7201 != nil {
-		return *x.Field7201
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7202() int32 {
-	if x != nil && x.Field7202 != nil {
-		return *x.Field7202
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7203() int32 {
-	if x != nil && x.Field7203 != nil {
-		return *x.Field7203
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7204() int32 {
-	if x != nil && x.Field7204 != nil {
-		return *x.Field7204
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7205() int32 {
-	if x != nil && x.Field7205 != nil {
-		return *x.Field7205
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7206() int32 {
-	if x != nil && x.Field7206 != nil {
-		return *x.Field7206
-	}
-	return 0
-}
-
-func (x *Message7029) GetMessage7030() []*Message7029_Message7030 {
-	if x != nil {
-		return x.Message7030
-	}
-	return nil
-}
-
-func (x *Message7029) GetMessage7031() []*Message7029_Message7031 {
-	if x != nil {
-		return x.Message7031
-	}
-	return nil
-}
-
-func (x *Message7029) GetField7209() int32 {
-	if x != nil && x.Field7209 != nil {
-		return *x.Field7209
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7210() float32 {
-	if x != nil && x.Field7210 != nil {
-		return *x.Field7210
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7211() int32 {
-	if x != nil && x.Field7211 != nil {
-		return *x.Field7211
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7212() int32 {
-	if x != nil && x.Field7212 != nil {
-		return *x.Field7212
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7213() string {
-	if x != nil && x.Field7213 != nil {
-		return *x.Field7213
-	}
-	return ""
-}
-
-func (x *Message7029) GetField7214() bool {
-	if x != nil && x.Field7214 != nil {
-		return *x.Field7214
-	}
-	return false
-}
-
-func (x *Message7029) GetField7215() int32 {
-	if x != nil && x.Field7215 != nil {
-		return *x.Field7215
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7216() float32 {
-	if x != nil && x.Field7216 != nil {
-		return *x.Field7216
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7217() bool {
-	if x != nil && x.Field7217 != nil {
-		return *x.Field7217
-	}
-	return false
-}
-
-func (x *Message7029) GetField7218() bool {
-	if x != nil && x.Field7218 != nil {
-		return *x.Field7218
-	}
-	return false
-}
-
-func (x *Message7029) GetField7219() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7219
-	}
-	return nil
-}
-
-func (x *Message7029) GetField7220() int32 {
-	if x != nil && x.Field7220 != nil {
-		return *x.Field7220
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7221() int32 {
-	if x != nil && x.Field7221 != nil {
-		return *x.Field7221
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7222() int32 {
-	if x != nil && x.Field7222 != nil {
-		return *x.Field7222
-	}
-	return 0
-}
-
-func (x *Message7029) GetField7223() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7223
-	}
-	return nil
-}
-
-func (x *Message7029) GetField7224() int32 {
-	if x != nil && x.Field7224 != nil {
-		return *x.Field7224
-	}
-	return 0
-}
-
-type Message35538 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field35539 *int64 `protobuf:"varint,1,req,name=field35539" json:"field35539,omitempty"`
-}
-
-func (x *Message35538) Reset() {
-	*x = Message35538{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message35538) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message35538) ProtoMessage() {}
-
-func (x *Message35538) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message35538.ProtoReflect.Descriptor instead.
-func (*Message35538) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Message35538) GetField35539() int64 {
-	if x != nil && x.Field35539 != nil {
-		return *x.Field35539
-	}
-	return 0
-}
-
-type Message18921 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field18946   *string                      `protobuf:"bytes,1,opt,name=field18946" json:"field18946,omitempty"`
-	Field18947   *uint64                      `protobuf:"fixed64,2,opt,name=field18947" json:"field18947,omitempty"`
-	Field18948   *int32                       `protobuf:"varint,3,opt,name=field18948" json:"field18948,omitempty"`
-	Field18949   *float64                     `protobuf:"fixed64,4,opt,name=field18949" json:"field18949,omitempty"`
-	Field18950   *bool                        `protobuf:"varint,17,opt,name=field18950" json:"field18950,omitempty"`
-	Field18951   *bool                        `protobuf:"varint,23,opt,name=field18951" json:"field18951,omitempty"`
-	Field18952   *UnusedEmptyMessage          `protobuf:"bytes,24,opt,name=field18952" json:"field18952,omitempty"`
-	Message18922 []*Message18921_Message18922 `protobuf:"group,5,rep,name=Message18922,json=message18922" json:"message18922,omitempty"`
-	Field18954   []*UnusedEmptyMessage        `protobuf:"bytes,29,rep,name=field18954" json:"field18954,omitempty"`
-	Field18955   []*Message18943              `protobuf:"bytes,30,rep,name=field18955" json:"field18955,omitempty"`
-	Field18956   []*Message18944              `protobuf:"bytes,31,rep,name=field18956" json:"field18956,omitempty"`
-	Field18957   []*UnusedEmptyMessage        `protobuf:"bytes,32,rep,name=field18957" json:"field18957,omitempty"`
-}
-
-func (x *Message18921) Reset() {
-	*x = Message18921{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message18921) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message18921) ProtoMessage() {}
-
-func (x *Message18921) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message18921.ProtoReflect.Descriptor instead.
-func (*Message18921) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Message18921) GetField18946() string {
-	if x != nil && x.Field18946 != nil {
-		return *x.Field18946
-	}
-	return ""
-}
-
-func (x *Message18921) GetField18947() uint64 {
-	if x != nil && x.Field18947 != nil {
-		return *x.Field18947
-	}
-	return 0
-}
-
-func (x *Message18921) GetField18948() int32 {
-	if x != nil && x.Field18948 != nil {
-		return *x.Field18948
-	}
-	return 0
-}
-
-func (x *Message18921) GetField18949() float64 {
-	if x != nil && x.Field18949 != nil {
-		return *x.Field18949
-	}
-	return 0
-}
-
-func (x *Message18921) GetField18950() bool {
-	if x != nil && x.Field18950 != nil {
-		return *x.Field18950
-	}
-	return false
-}
-
-func (x *Message18921) GetField18951() bool {
-	if x != nil && x.Field18951 != nil {
-		return *x.Field18951
-	}
-	return false
-}
-
-func (x *Message18921) GetField18952() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18952
-	}
-	return nil
-}
-
-func (x *Message18921) GetMessage18922() []*Message18921_Message18922 {
-	if x != nil {
-		return x.Message18922
-	}
-	return nil
-}
-
-func (x *Message18921) GetField18954() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18954
-	}
-	return nil
-}
-
-func (x *Message18921) GetField18955() []*Message18943 {
-	if x != nil {
-		return x.Field18955
-	}
-	return nil
-}
-
-func (x *Message18921) GetField18956() []*Message18944 {
-	if x != nil {
-		return x.Field18956
-	}
-	return nil
-}
-
-func (x *Message18921) GetField18957() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18957
-	}
-	return nil
-}
-
-type Message35540 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field35541 *bool `protobuf:"varint,1,opt,name=field35541" json:"field35541,omitempty"`
-}
-
-func (x *Message35540) Reset() {
-	*x = Message35540{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message35540) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message35540) ProtoMessage() {}
-
-func (x *Message35540) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message35540.ProtoReflect.Descriptor instead.
-func (*Message35540) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *Message35540) GetField35541() bool {
-	if x != nil && x.Field35541 != nil {
-		return *x.Field35541
-	}
-	return false
-}
-
-type Message3886 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Message3887 []*Message3886_Message3887 `protobuf:"group,1,rep,name=Message3887,json=message3887" json:"message3887,omitempty"`
-}
-
-func (x *Message3886) Reset() {
-	*x = Message3886{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3886) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3886) ProtoMessage() {}
-
-func (x *Message3886) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3886.ProtoReflect.Descriptor instead.
-func (*Message3886) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *Message3886) GetMessage3887() []*Message3886_Message3887 {
-	if x != nil {
-		return x.Message3887
-	}
-	return nil
-}
-
-type Message6743 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6759 *Message6721 `protobuf:"bytes,1,opt,name=field6759" json:"field6759,omitempty"`
-	Field6760 *Message6723 `protobuf:"bytes,2,opt,name=field6760" json:"field6760,omitempty"`
-	Field6761 *Message6723 `protobuf:"bytes,8,opt,name=field6761" json:"field6761,omitempty"`
-	Field6762 *Message6725 `protobuf:"bytes,3,opt,name=field6762" json:"field6762,omitempty"`
-	Field6763 *Message6726 `protobuf:"bytes,4,opt,name=field6763" json:"field6763,omitempty"`
-	Field6764 *Message6733 `protobuf:"bytes,5,opt,name=field6764" json:"field6764,omitempty"`
-	Field6765 *Message6734 `protobuf:"bytes,6,opt,name=field6765" json:"field6765,omitempty"`
-	Field6766 *Message6742 `protobuf:"bytes,7,opt,name=field6766" json:"field6766,omitempty"`
-}
-
-func (x *Message6743) Reset() {
-	*x = Message6743{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6743) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6743) ProtoMessage() {}
-
-func (x *Message6743) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6743.ProtoReflect.Descriptor instead.
-func (*Message6743) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *Message6743) GetField6759() *Message6721 {
-	if x != nil {
-		return x.Field6759
-	}
-	return nil
-}
-
-func (x *Message6743) GetField6760() *Message6723 {
-	if x != nil {
-		return x.Field6760
-	}
-	return nil
-}
-
-func (x *Message6743) GetField6761() *Message6723 {
-	if x != nil {
-		return x.Field6761
-	}
-	return nil
-}
-
-func (x *Message6743) GetField6762() *Message6725 {
-	if x != nil {
-		return x.Field6762
-	}
-	return nil
-}
-
-func (x *Message6743) GetField6763() *Message6726 {
-	if x != nil {
-		return x.Field6763
-	}
-	return nil
-}
-
-func (x *Message6743) GetField6764() *Message6733 {
-	if x != nil {
-		return x.Field6764
-	}
-	return nil
-}
-
-func (x *Message6743) GetField6765() *Message6734 {
-	if x != nil {
-		return x.Field6765
-	}
-	return nil
-}
-
-func (x *Message6743) GetField6766() *Message6742 {
-	if x != nil {
-		return x.Field6766
-	}
-	return nil
-}
-
-type Message6773 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6794 *Enum6769   `protobuf:"varint,1,opt,name=field6794,enum=benchmarks.google_message3.Enum6769" json:"field6794,omitempty"`
-	Field6795 *int32      `protobuf:"varint,9,opt,name=field6795" json:"field6795,omitempty"`
-	Field6796 *UnusedEnum `protobuf:"varint,10,opt,name=field6796,enum=benchmarks.google_message3.UnusedEnum" json:"field6796,omitempty"`
-	Field6797 *int32      `protobuf:"varint,11,opt,name=field6797" json:"field6797,omitempty"`
-	Field6798 *int32      `protobuf:"varint,2,opt,name=field6798" json:"field6798,omitempty"`
-	Field6799 *Enum6774   `protobuf:"varint,3,opt,name=field6799,enum=benchmarks.google_message3.Enum6774" json:"field6799,omitempty"`
-	Field6800 *float64    `protobuf:"fixed64,5,opt,name=field6800" json:"field6800,omitempty"`
-	Field6801 *float64    `protobuf:"fixed64,7,opt,name=field6801" json:"field6801,omitempty"`
-	Field6802 *float64    `protobuf:"fixed64,8,opt,name=field6802" json:"field6802,omitempty"`
-	Field6803 *Enum6782   `protobuf:"varint,6,opt,name=field6803,enum=benchmarks.google_message3.Enum6782" json:"field6803,omitempty"`
-}
-
-func (x *Message6773) Reset() {
-	*x = Message6773{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6773) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6773) ProtoMessage() {}
-
-func (x *Message6773) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[8]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6773.ProtoReflect.Descriptor instead.
-func (*Message6773) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *Message6773) GetField6794() Enum6769 {
-	if x != nil && x.Field6794 != nil {
-		return *x.Field6794
-	}
-	return Enum6769_ENUM_VALUE6770
-}
-
-func (x *Message6773) GetField6795() int32 {
-	if x != nil && x.Field6795 != nil {
-		return *x.Field6795
-	}
-	return 0
-}
-
-func (x *Message6773) GetField6796() UnusedEnum {
-	if x != nil && x.Field6796 != nil {
-		return *x.Field6796
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message6773) GetField6797() int32 {
-	if x != nil && x.Field6797 != nil {
-		return *x.Field6797
-	}
-	return 0
-}
-
-func (x *Message6773) GetField6798() int32 {
-	if x != nil && x.Field6798 != nil {
-		return *x.Field6798
-	}
-	return 0
-}
-
-func (x *Message6773) GetField6799() Enum6774 {
-	if x != nil && x.Field6799 != nil {
-		return *x.Field6799
-	}
-	return Enum6774_ENUM_VALUE6775
-}
-
-func (x *Message6773) GetField6800() float64 {
-	if x != nil && x.Field6800 != nil {
-		return *x.Field6800
-	}
-	return 0
-}
-
-func (x *Message6773) GetField6801() float64 {
-	if x != nil && x.Field6801 != nil {
-		return *x.Field6801
-	}
-	return 0
-}
-
-func (x *Message6773) GetField6802() float64 {
-	if x != nil && x.Field6802 != nil {
-		return *x.Field6802
-	}
-	return 0
-}
-
-func (x *Message6773) GetField6803() Enum6782 {
-	if x != nil && x.Field6803 != nil {
-		return *x.Field6803
-	}
-	return Enum6782_ENUM_VALUE6783
-}
-
-type Message8224 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8255 *UnusedEmptyMessage   `protobuf:"bytes,1,opt,name=field8255" json:"field8255,omitempty"`
-	Field8256 *Message8184          `protobuf:"bytes,2,opt,name=field8256" json:"field8256,omitempty"`
-	Field8257 *Message7966          `protobuf:"bytes,3,opt,name=field8257" json:"field8257,omitempty"`
-	Field8258 *string               `protobuf:"bytes,4,opt,name=field8258" json:"field8258,omitempty"`
-	Field8259 *string               `protobuf:"bytes,5,opt,name=field8259" json:"field8259,omitempty"`
-	Field8260 *bool                 `protobuf:"varint,6,opt,name=field8260" json:"field8260,omitempty"`
-	Field8261 *int64                `protobuf:"varint,7,opt,name=field8261" json:"field8261,omitempty"`
-	Field8262 *string               `protobuf:"bytes,8,opt,name=field8262" json:"field8262,omitempty"`
-	Field8263 *int64                `protobuf:"varint,9,opt,name=field8263" json:"field8263,omitempty"`
-	Field8264 *float64              `protobuf:"fixed64,10,opt,name=field8264" json:"field8264,omitempty"`
-	Field8265 *int64                `protobuf:"varint,11,opt,name=field8265" json:"field8265,omitempty"`
-	Field8266 []string              `protobuf:"bytes,12,rep,name=field8266" json:"field8266,omitempty"`
-	Field8267 *int64                `protobuf:"varint,13,opt,name=field8267" json:"field8267,omitempty"`
-	Field8268 *int32                `protobuf:"varint,14,opt,name=field8268" json:"field8268,omitempty"`
-	Field8269 *int32                `protobuf:"varint,15,opt,name=field8269" json:"field8269,omitempty"`
-	Field8270 *int64                `protobuf:"varint,16,opt,name=field8270" json:"field8270,omitempty"`
-	Field8271 *float64              `protobuf:"fixed64,17,opt,name=field8271" json:"field8271,omitempty"`
-	Field8272 *UnusedEmptyMessage   `protobuf:"bytes,18,opt,name=field8272" json:"field8272,omitempty"`
-	Field8273 *UnusedEmptyMessage   `protobuf:"bytes,19,opt,name=field8273" json:"field8273,omitempty"`
-	Field8274 []*UnusedEmptyMessage `protobuf:"bytes,20,rep,name=field8274" json:"field8274,omitempty"`
-	Field8275 *bool                 `protobuf:"varint,21,opt,name=field8275" json:"field8275,omitempty"`
-	Field8276 *UnusedEmptyMessage   `protobuf:"bytes,22,opt,name=field8276" json:"field8276,omitempty"`
-	Field8277 *UnusedEmptyMessage   `protobuf:"bytes,23,opt,name=field8277" json:"field8277,omitempty"`
-	Field8278 []*UnusedEmptyMessage `protobuf:"bytes,24,rep,name=field8278" json:"field8278,omitempty"`
-	Field8279 *UnusedEmptyMessage   `protobuf:"bytes,25,opt,name=field8279" json:"field8279,omitempty"`
-	Field8280 *bool                 `protobuf:"varint,26,opt,name=field8280" json:"field8280,omitempty"`
-	Field8281 []*UnusedEmptyMessage `protobuf:"bytes,27,rep,name=field8281" json:"field8281,omitempty"`
-}
-
-func (x *Message8224) Reset() {
-	*x = Message8224{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[9]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8224) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8224) ProtoMessage() {}
-
-func (x *Message8224) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[9]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8224.ProtoReflect.Descriptor instead.
-func (*Message8224) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *Message8224) GetField8255() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8255
-	}
-	return nil
-}
-
-func (x *Message8224) GetField8256() *Message8184 {
-	if x != nil {
-		return x.Field8256
-	}
-	return nil
-}
-
-func (x *Message8224) GetField8257() *Message7966 {
-	if x != nil {
-		return x.Field8257
-	}
-	return nil
-}
-
-func (x *Message8224) GetField8258() string {
-	if x != nil && x.Field8258 != nil {
-		return *x.Field8258
-	}
-	return ""
-}
-
-func (x *Message8224) GetField8259() string {
-	if x != nil && x.Field8259 != nil {
-		return *x.Field8259
-	}
-	return ""
-}
-
-func (x *Message8224) GetField8260() bool {
-	if x != nil && x.Field8260 != nil {
-		return *x.Field8260
-	}
-	return false
-}
-
-func (x *Message8224) GetField8261() int64 {
-	if x != nil && x.Field8261 != nil {
-		return *x.Field8261
-	}
-	return 0
-}
-
-func (x *Message8224) GetField8262() string {
-	if x != nil && x.Field8262 != nil {
-		return *x.Field8262
-	}
-	return ""
-}
-
-func (x *Message8224) GetField8263() int64 {
-	if x != nil && x.Field8263 != nil {
-		return *x.Field8263
-	}
-	return 0
-}
-
-func (x *Message8224) GetField8264() float64 {
-	if x != nil && x.Field8264 != nil {
-		return *x.Field8264
-	}
-	return 0
-}
-
-func (x *Message8224) GetField8265() int64 {
-	if x != nil && x.Field8265 != nil {
-		return *x.Field8265
-	}
-	return 0
-}
-
-func (x *Message8224) GetField8266() []string {
-	if x != nil {
-		return x.Field8266
-	}
-	return nil
-}
-
-func (x *Message8224) GetField8267() int64 {
-	if x != nil && x.Field8267 != nil {
-		return *x.Field8267
-	}
-	return 0
-}
-
-func (x *Message8224) GetField8268() int32 {
-	if x != nil && x.Field8268 != nil {
-		return *x.Field8268
-	}
-	return 0
-}
-
-func (x *Message8224) GetField8269() int32 {
-	if x != nil && x.Field8269 != nil {
-		return *x.Field8269
-	}
-	return 0
-}
-
-func (x *Message8224) GetField8270() int64 {
-	if x != nil && x.Field8270 != nil {
-		return *x.Field8270
-	}
-	return 0
-}
-
-func (x *Message8224) GetField8271() float64 {
-	if x != nil && x.Field8271 != nil {
-		return *x.Field8271
-	}
-	return 0
-}
-
-func (x *Message8224) GetField8272() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8272
-	}
-	return nil
-}
-
-func (x *Message8224) GetField8273() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8273
-	}
-	return nil
-}
-
-func (x *Message8224) GetField8274() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8274
-	}
-	return nil
-}
-
-func (x *Message8224) GetField8275() bool {
-	if x != nil && x.Field8275 != nil {
-		return *x.Field8275
-	}
-	return false
-}
-
-func (x *Message8224) GetField8276() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8276
-	}
-	return nil
-}
-
-func (x *Message8224) GetField8277() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8277
-	}
-	return nil
-}
-
-func (x *Message8224) GetField8278() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8278
-	}
-	return nil
-}
-
-func (x *Message8224) GetField8279() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8279
-	}
-	return nil
-}
-
-func (x *Message8224) GetField8280() bool {
-	if x != nil && x.Field8280 != nil {
-		return *x.Field8280
-	}
-	return false
-}
-
-func (x *Message8224) GetField8281() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8281
-	}
-	return nil
-}
-
-type Message8392 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8395 *string      `protobuf:"bytes,1,opt,name=field8395" json:"field8395,omitempty"`
-	Field8396 *string      `protobuf:"bytes,2,opt,name=field8396" json:"field8396,omitempty"`
-	Field8397 *Message7966 `protobuf:"bytes,3,opt,name=field8397" json:"field8397,omitempty"`
-	Field8398 *string      `protobuf:"bytes,4,opt,name=field8398" json:"field8398,omitempty"`
-	Field8399 *string      `protobuf:"bytes,5,opt,name=field8399" json:"field8399,omitempty"`
-	Field8400 *string      `protobuf:"bytes,6,opt,name=field8400" json:"field8400,omitempty"`
-	Field8401 *string      `protobuf:"bytes,7,opt,name=field8401" json:"field8401,omitempty"`
-	Field8402 *string      `protobuf:"bytes,8,opt,name=field8402" json:"field8402,omitempty"`
-	Field8403 *string      `protobuf:"bytes,9,opt,name=field8403" json:"field8403,omitempty"`
-}
-
-func (x *Message8392) Reset() {
-	*x = Message8392{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[10]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8392) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8392) ProtoMessage() {}
-
-func (x *Message8392) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[10]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8392.ProtoReflect.Descriptor instead.
-func (*Message8392) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *Message8392) GetField8395() string {
-	if x != nil && x.Field8395 != nil {
-		return *x.Field8395
-	}
-	return ""
-}
-
-func (x *Message8392) GetField8396() string {
-	if x != nil && x.Field8396 != nil {
-		return *x.Field8396
-	}
-	return ""
-}
-
-func (x *Message8392) GetField8397() *Message7966 {
-	if x != nil {
-		return x.Field8397
-	}
-	return nil
-}
-
-func (x *Message8392) GetField8398() string {
-	if x != nil && x.Field8398 != nil {
-		return *x.Field8398
-	}
-	return ""
-}
-
-func (x *Message8392) GetField8399() string {
-	if x != nil && x.Field8399 != nil {
-		return *x.Field8399
-	}
-	return ""
-}
-
-func (x *Message8392) GetField8400() string {
-	if x != nil && x.Field8400 != nil {
-		return *x.Field8400
-	}
-	return ""
-}
-
-func (x *Message8392) GetField8401() string {
-	if x != nil && x.Field8401 != nil {
-		return *x.Field8401
-	}
-	return ""
-}
-
-func (x *Message8392) GetField8402() string {
-	if x != nil && x.Field8402 != nil {
-		return *x.Field8402
-	}
-	return ""
-}
-
-func (x *Message8392) GetField8403() string {
-	if x != nil && x.Field8403 != nil {
-		return *x.Field8403
-	}
-	return ""
-}
-
-type Message8130 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8156 *string               `protobuf:"bytes,1,opt,name=field8156" json:"field8156,omitempty"`
-	Field8157 *string               `protobuf:"bytes,2,opt,name=field8157" json:"field8157,omitempty"`
-	Field8158 *string               `protobuf:"bytes,4,opt,name=field8158" json:"field8158,omitempty"`
-	Field8159 *UnusedEmptyMessage   `protobuf:"bytes,6,opt,name=field8159" json:"field8159,omitempty"`
-	Field8160 []string              `protobuf:"bytes,7,rep,name=field8160" json:"field8160,omitempty"`
-	Field8161 *int64                `protobuf:"varint,8,opt,name=field8161" json:"field8161,omitempty"`
-	Field8162 *UnusedEmptyMessage   `protobuf:"bytes,9,opt,name=field8162" json:"field8162,omitempty"`
-	Field8163 *string               `protobuf:"bytes,10,opt,name=field8163" json:"field8163,omitempty"`
-	Field8164 *string               `protobuf:"bytes,11,opt,name=field8164" json:"field8164,omitempty"`
-	Field8165 *string               `protobuf:"bytes,12,opt,name=field8165" json:"field8165,omitempty"`
-	Field8166 *string               `protobuf:"bytes,13,opt,name=field8166" json:"field8166,omitempty"`
-	Field8167 *UnusedEmptyMessage   `protobuf:"bytes,14,opt,name=field8167" json:"field8167,omitempty"`
-	Field8168 *UnusedEmptyMessage   `protobuf:"bytes,15,opt,name=field8168" json:"field8168,omitempty"`
-	Field8169 *string               `protobuf:"bytes,16,opt,name=field8169" json:"field8169,omitempty"`
-	Field8170 *UnusedEnum           `protobuf:"varint,17,opt,name=field8170,enum=benchmarks.google_message3.UnusedEnum" json:"field8170,omitempty"`
-	Field8171 *UnusedEnum           `protobuf:"varint,18,opt,name=field8171,enum=benchmarks.google_message3.UnusedEnum" json:"field8171,omitempty"`
-	Field8172 *bool                 `protobuf:"varint,19,opt,name=field8172" json:"field8172,omitempty"`
-	Field8173 *bool                 `protobuf:"varint,20,opt,name=field8173" json:"field8173,omitempty"`
-	Field8174 *float64              `protobuf:"fixed64,21,opt,name=field8174" json:"field8174,omitempty"`
-	Field8175 *int32                `protobuf:"varint,22,opt,name=field8175" json:"field8175,omitempty"`
-	Field8176 *int32                `protobuf:"varint,23,opt,name=field8176" json:"field8176,omitempty"`
-	Field8177 *UnusedEmptyMessage   `protobuf:"bytes,24,opt,name=field8177" json:"field8177,omitempty"`
-	Field8178 []*UnusedEmptyMessage `protobuf:"bytes,25,rep,name=field8178" json:"field8178,omitempty"`
-	Field8179 []*UnusedEmptyMessage `protobuf:"bytes,26,rep,name=field8179" json:"field8179,omitempty"`
-}
-
-func (x *Message8130) Reset() {
-	*x = Message8130{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[11]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8130) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8130) ProtoMessage() {}
-
-func (x *Message8130) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[11]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8130.ProtoReflect.Descriptor instead.
-func (*Message8130) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *Message8130) GetField8156() string {
-	if x != nil && x.Field8156 != nil {
-		return *x.Field8156
-	}
-	return ""
-}
-
-func (x *Message8130) GetField8157() string {
-	if x != nil && x.Field8157 != nil {
-		return *x.Field8157
-	}
-	return ""
-}
-
-func (x *Message8130) GetField8158() string {
-	if x != nil && x.Field8158 != nil {
-		return *x.Field8158
-	}
-	return ""
-}
-
-func (x *Message8130) GetField8159() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8159
-	}
-	return nil
-}
-
-func (x *Message8130) GetField8160() []string {
-	if x != nil {
-		return x.Field8160
-	}
-	return nil
-}
-
-func (x *Message8130) GetField8161() int64 {
-	if x != nil && x.Field8161 != nil {
-		return *x.Field8161
-	}
-	return 0
-}
-
-func (x *Message8130) GetField8162() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8162
-	}
-	return nil
-}
-
-func (x *Message8130) GetField8163() string {
-	if x != nil && x.Field8163 != nil {
-		return *x.Field8163
-	}
-	return ""
-}
-
-func (x *Message8130) GetField8164() string {
-	if x != nil && x.Field8164 != nil {
-		return *x.Field8164
-	}
-	return ""
-}
-
-func (x *Message8130) GetField8165() string {
-	if x != nil && x.Field8165 != nil {
-		return *x.Field8165
-	}
-	return ""
-}
-
-func (x *Message8130) GetField8166() string {
-	if x != nil && x.Field8166 != nil {
-		return *x.Field8166
-	}
-	return ""
-}
-
-func (x *Message8130) GetField8167() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8167
-	}
-	return nil
-}
-
-func (x *Message8130) GetField8168() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8168
-	}
-	return nil
-}
-
-func (x *Message8130) GetField8169() string {
-	if x != nil && x.Field8169 != nil {
-		return *x.Field8169
-	}
-	return ""
-}
-
-func (x *Message8130) GetField8170() UnusedEnum {
-	if x != nil && x.Field8170 != nil {
-		return *x.Field8170
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message8130) GetField8171() UnusedEnum {
-	if x != nil && x.Field8171 != nil {
-		return *x.Field8171
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message8130) GetField8172() bool {
-	if x != nil && x.Field8172 != nil {
-		return *x.Field8172
-	}
-	return false
-}
-
-func (x *Message8130) GetField8173() bool {
-	if x != nil && x.Field8173 != nil {
-		return *x.Field8173
-	}
-	return false
-}
-
-func (x *Message8130) GetField8174() float64 {
-	if x != nil && x.Field8174 != nil {
-		return *x.Field8174
-	}
-	return 0
-}
-
-func (x *Message8130) GetField8175() int32 {
-	if x != nil && x.Field8175 != nil {
-		return *x.Field8175
-	}
-	return 0
-}
-
-func (x *Message8130) GetField8176() int32 {
-	if x != nil && x.Field8176 != nil {
-		return *x.Field8176
-	}
-	return 0
-}
-
-func (x *Message8130) GetField8177() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8177
-	}
-	return nil
-}
-
-func (x *Message8130) GetField8178() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8178
-	}
-	return nil
-}
-
-func (x *Message8130) GetField8179() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8179
-	}
-	return nil
-}
-
-type Message8478 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8489 *string             `protobuf:"bytes,7,opt,name=field8489" json:"field8489,omitempty"`
-	Field8490 *Message7966        `protobuf:"bytes,1,opt,name=field8490" json:"field8490,omitempty"`
-	Field8491 *Message8476        `protobuf:"bytes,2,opt,name=field8491" json:"field8491,omitempty"`
-	Field8492 *int64              `protobuf:"varint,3,opt,name=field8492" json:"field8492,omitempty"`
-	Field8493 *Message8476        `protobuf:"bytes,4,opt,name=field8493" json:"field8493,omitempty"`
-	Field8494 []*Message8477      `protobuf:"bytes,5,rep,name=field8494" json:"field8494,omitempty"`
-	Field8495 *Message8454        `protobuf:"bytes,6,opt,name=field8495" json:"field8495,omitempty"`
-	Field8496 *UnusedEmptyMessage `protobuf:"bytes,8,opt,name=field8496" json:"field8496,omitempty"`
-}
-
-func (x *Message8478) Reset() {
-	*x = Message8478{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[12]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8478) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8478) ProtoMessage() {}
-
-func (x *Message8478) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[12]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8478.ProtoReflect.Descriptor instead.
-func (*Message8478) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *Message8478) GetField8489() string {
-	if x != nil && x.Field8489 != nil {
-		return *x.Field8489
-	}
-	return ""
-}
-
-func (x *Message8478) GetField8490() *Message7966 {
-	if x != nil {
-		return x.Field8490
-	}
-	return nil
-}
-
-func (x *Message8478) GetField8491() *Message8476 {
-	if x != nil {
-		return x.Field8491
-	}
-	return nil
-}
-
-func (x *Message8478) GetField8492() int64 {
-	if x != nil && x.Field8492 != nil {
-		return *x.Field8492
-	}
-	return 0
-}
-
-func (x *Message8478) GetField8493() *Message8476 {
-	if x != nil {
-		return x.Field8493
-	}
-	return nil
-}
-
-func (x *Message8478) GetField8494() []*Message8477 {
-	if x != nil {
-		return x.Field8494
-	}
-	return nil
-}
-
-func (x *Message8478) GetField8495() *Message8454 {
-	if x != nil {
-		return x.Field8495
-	}
-	return nil
-}
-
-func (x *Message8478) GetField8496() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8496
-	}
-	return nil
-}
-
-type Message8479 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8497 *Message8475        `protobuf:"bytes,1,opt,name=field8497" json:"field8497,omitempty"`
-	Field8498 *Message7966        `protobuf:"bytes,2,opt,name=field8498" json:"field8498,omitempty"`
-	Field8499 *Message8476        `protobuf:"bytes,3,opt,name=field8499" json:"field8499,omitempty"`
-	Field8500 *Message8476        `protobuf:"bytes,4,opt,name=field8500" json:"field8500,omitempty"`
-	Field8501 *string             `protobuf:"bytes,6,opt,name=field8501" json:"field8501,omitempty"`
-	Field8502 *string             `protobuf:"bytes,7,opt,name=field8502" json:"field8502,omitempty"`
-	Field8503 *Message7966        `protobuf:"bytes,8,opt,name=field8503" json:"field8503,omitempty"`
-	Field8504 *Message8455        `protobuf:"bytes,5,opt,name=field8504" json:"field8504,omitempty"`
-	Field8505 *UnusedEmptyMessage `protobuf:"bytes,9,opt,name=field8505" json:"field8505,omitempty"`
-}
-
-func (x *Message8479) Reset() {
-	*x = Message8479{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[13]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8479) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8479) ProtoMessage() {}
-
-func (x *Message8479) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[13]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8479.ProtoReflect.Descriptor instead.
-func (*Message8479) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *Message8479) GetField8497() *Message8475 {
-	if x != nil {
-		return x.Field8497
-	}
-	return nil
-}
-
-func (x *Message8479) GetField8498() *Message7966 {
-	if x != nil {
-		return x.Field8498
-	}
-	return nil
-}
-
-func (x *Message8479) GetField8499() *Message8476 {
-	if x != nil {
-		return x.Field8499
-	}
-	return nil
-}
-
-func (x *Message8479) GetField8500() *Message8476 {
-	if x != nil {
-		return x.Field8500
-	}
-	return nil
-}
-
-func (x *Message8479) GetField8501() string {
-	if x != nil && x.Field8501 != nil {
-		return *x.Field8501
-	}
-	return ""
-}
-
-func (x *Message8479) GetField8502() string {
-	if x != nil && x.Field8502 != nil {
-		return *x.Field8502
-	}
-	return ""
-}
-
-func (x *Message8479) GetField8503() *Message7966 {
-	if x != nil {
-		return x.Field8503
-	}
-	return nil
-}
-
-func (x *Message8479) GetField8504() *Message8455 {
-	if x != nil {
-		return x.Field8504
-	}
-	return nil
-}
-
-func (x *Message8479) GetField8505() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8505
-	}
-	return nil
-}
-
-type Message10319 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field10340 *Enum10325 `protobuf:"varint,1,opt,name=field10340,enum=benchmarks.google_message3.Enum10325" json:"field10340,omitempty"`
-	Field10341 *int32     `protobuf:"varint,4,opt,name=field10341" json:"field10341,omitempty"`
-	Field10342 *int32     `protobuf:"varint,5,opt,name=field10342" json:"field10342,omitempty"`
-	Field10343 []byte     `protobuf:"bytes,3,opt,name=field10343" json:"field10343,omitempty"`
-	Field10344 *string    `protobuf:"bytes,2,opt,name=field10344" json:"field10344,omitempty"`
-	Field10345 *string    `protobuf:"bytes,6,opt,name=field10345" json:"field10345,omitempty"`
-	Field10346 *string    `protobuf:"bytes,7,opt,name=field10346" json:"field10346,omitempty"`
-}
-
-func (x *Message10319) Reset() {
-	*x = Message10319{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[14]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10319) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10319) ProtoMessage() {}
-
-func (x *Message10319) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[14]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10319.ProtoReflect.Descriptor instead.
-func (*Message10319) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *Message10319) GetField10340() Enum10325 {
-	if x != nil && x.Field10340 != nil {
-		return *x.Field10340
-	}
-	return Enum10325_ENUM_VALUE10326
-}
-
-func (x *Message10319) GetField10341() int32 {
-	if x != nil && x.Field10341 != nil {
-		return *x.Field10341
-	}
-	return 0
-}
-
-func (x *Message10319) GetField10342() int32 {
-	if x != nil && x.Field10342 != nil {
-		return *x.Field10342
-	}
-	return 0
-}
-
-func (x *Message10319) GetField10343() []byte {
-	if x != nil {
-		return x.Field10343
-	}
-	return nil
-}
-
-func (x *Message10319) GetField10344() string {
-	if x != nil && x.Field10344 != nil {
-		return *x.Field10344
-	}
-	return ""
-}
-
-func (x *Message10319) GetField10345() string {
-	if x != nil && x.Field10345 != nil {
-		return *x.Field10345
-	}
-	return ""
-}
-
-func (x *Message10319) GetField10346() string {
-	if x != nil && x.Field10346 != nil {
-		return *x.Field10346
-	}
-	return ""
-}
-
-type Message4016 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field4017 *int32 `protobuf:"varint,1,req,name=field4017" json:"field4017,omitempty"`
-	Field4018 *int32 `protobuf:"varint,2,req,name=field4018" json:"field4018,omitempty"`
-	Field4019 *int32 `protobuf:"varint,3,req,name=field4019" json:"field4019,omitempty"`
-	Field4020 *int32 `protobuf:"varint,4,req,name=field4020" json:"field4020,omitempty"`
-}
-
-func (x *Message4016) Reset() {
-	*x = Message4016{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[15]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message4016) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message4016) ProtoMessage() {}
-
-func (x *Message4016) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[15]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message4016.ProtoReflect.Descriptor instead.
-func (*Message4016) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{15}
-}
-
-func (x *Message4016) GetField4017() int32 {
-	if x != nil && x.Field4017 != nil {
-		return *x.Field4017
-	}
-	return 0
-}
-
-func (x *Message4016) GetField4018() int32 {
-	if x != nil && x.Field4018 != nil {
-		return *x.Field4018
-	}
-	return 0
-}
-
-func (x *Message4016) GetField4019() int32 {
-	if x != nil && x.Field4019 != nil {
-		return *x.Field4019
-	}
-	return 0
-}
-
-func (x *Message4016) GetField4020() int32 {
-	if x != nil && x.Field4020 != nil {
-		return *x.Field4020
-	}
-	return 0
-}
-
-type Message12669 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12681 *Message12559 `protobuf:"bytes,1,opt,name=field12681" json:"field12681,omitempty"`
-	Field12682 *float32      `protobuf:"fixed32,2,opt,name=field12682" json:"field12682,omitempty"`
-	Field12683 *bool         `protobuf:"varint,3,opt,name=field12683" json:"field12683,omitempty"`
-	Field12684 *Enum12670    `protobuf:"varint,4,opt,name=field12684,enum=benchmarks.google_message3.Enum12670" json:"field12684,omitempty"`
-}
-
-func (x *Message12669) Reset() {
-	*x = Message12669{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[16]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12669) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12669) ProtoMessage() {}
-
-func (x *Message12669) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[16]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12669.ProtoReflect.Descriptor instead.
-func (*Message12669) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *Message12669) GetField12681() *Message12559 {
-	if x != nil {
-		return x.Field12681
-	}
-	return nil
-}
-
-func (x *Message12669) GetField12682() float32 {
-	if x != nil && x.Field12682 != nil {
-		return *x.Field12682
-	}
-	return 0
-}
-
-func (x *Message12669) GetField12683() bool {
-	if x != nil && x.Field12683 != nil {
-		return *x.Field12683
-	}
-	return false
-}
-
-func (x *Message12669) GetField12684() Enum12670 {
-	if x != nil && x.Field12684 != nil {
-		return *x.Field12684
-	}
-	return Enum12670_ENUM_VALUE12671
-}
-
-type Message12819 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12834 *float64 `protobuf:"fixed64,1,opt,name=field12834" json:"field12834,omitempty"`
-	Field12835 *float64 `protobuf:"fixed64,2,opt,name=field12835" json:"field12835,omitempty"`
-	Field12836 *float64 `protobuf:"fixed64,3,opt,name=field12836" json:"field12836,omitempty"`
-	Field12837 *float64 `protobuf:"fixed64,4,opt,name=field12837" json:"field12837,omitempty"`
-	Field12838 *float64 `protobuf:"fixed64,5,opt,name=field12838" json:"field12838,omitempty"`
-	Field12839 *float64 `protobuf:"fixed64,6,opt,name=field12839" json:"field12839,omitempty"`
-}
-
-func (x *Message12819) Reset() {
-	*x = Message12819{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[17]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12819) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12819) ProtoMessage() {}
-
-func (x *Message12819) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[17]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12819.ProtoReflect.Descriptor instead.
-func (*Message12819) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{17}
-}
-
-func (x *Message12819) GetField12834() float64 {
-	if x != nil && x.Field12834 != nil {
-		return *x.Field12834
-	}
-	return 0
-}
-
-func (x *Message12819) GetField12835() float64 {
-	if x != nil && x.Field12835 != nil {
-		return *x.Field12835
-	}
-	return 0
-}
-
-func (x *Message12819) GetField12836() float64 {
-	if x != nil && x.Field12836 != nil {
-		return *x.Field12836
-	}
-	return 0
-}
-
-func (x *Message12819) GetField12837() float64 {
-	if x != nil && x.Field12837 != nil {
-		return *x.Field12837
-	}
-	return 0
-}
-
-func (x *Message12819) GetField12838() float64 {
-	if x != nil && x.Field12838 != nil {
-		return *x.Field12838
-	}
-	return 0
-}
-
-func (x *Message12819) GetField12839() float64 {
-	if x != nil && x.Field12839 != nil {
-		return *x.Field12839
-	}
-	return 0
-}
-
-type Message12820 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12840 *int32 `protobuf:"varint,1,opt,name=field12840" json:"field12840,omitempty"`
-	Field12841 *int32 `protobuf:"varint,2,opt,name=field12841" json:"field12841,omitempty"`
-	Field12842 *int32 `protobuf:"varint,3,opt,name=field12842" json:"field12842,omitempty"`
-	Field12843 *int32 `protobuf:"varint,8,opt,name=field12843" json:"field12843,omitempty"`
-	Field12844 *int32 `protobuf:"varint,4,opt,name=field12844" json:"field12844,omitempty"`
-	Field12845 *int32 `protobuf:"varint,5,opt,name=field12845" json:"field12845,omitempty"`
-	Field12846 *int32 `protobuf:"varint,6,opt,name=field12846" json:"field12846,omitempty"`
-	Field12847 *int32 `protobuf:"varint,7,opt,name=field12847" json:"field12847,omitempty"`
-}
-
-func (x *Message12820) Reset() {
-	*x = Message12820{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[18]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12820) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12820) ProtoMessage() {}
-
-func (x *Message12820) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[18]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12820.ProtoReflect.Descriptor instead.
-func (*Message12820) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{18}
-}
-
-func (x *Message12820) GetField12840() int32 {
-	if x != nil && x.Field12840 != nil {
-		return *x.Field12840
-	}
-	return 0
-}
-
-func (x *Message12820) GetField12841() int32 {
-	if x != nil && x.Field12841 != nil {
-		return *x.Field12841
-	}
-	return 0
-}
-
-func (x *Message12820) GetField12842() int32 {
-	if x != nil && x.Field12842 != nil {
-		return *x.Field12842
-	}
-	return 0
-}
-
-func (x *Message12820) GetField12843() int32 {
-	if x != nil && x.Field12843 != nil {
-		return *x.Field12843
-	}
-	return 0
-}
-
-func (x *Message12820) GetField12844() int32 {
-	if x != nil && x.Field12844 != nil {
-		return *x.Field12844
-	}
-	return 0
-}
-
-func (x *Message12820) GetField12845() int32 {
-	if x != nil && x.Field12845 != nil {
-		return *x.Field12845
-	}
-	return 0
-}
-
-func (x *Message12820) GetField12846() int32 {
-	if x != nil && x.Field12846 != nil {
-		return *x.Field12846
-	}
-	return 0
-}
-
-func (x *Message12820) GetField12847() int32 {
-	if x != nil && x.Field12847 != nil {
-		return *x.Field12847
-	}
-	return 0
-}
-
-type Message12821 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12848 *int32 `protobuf:"varint,1,opt,name=field12848" json:"field12848,omitempty"`
-	Field12849 *int32 `protobuf:"varint,2,opt,name=field12849" json:"field12849,omitempty"`
-	Field12850 *int32 `protobuf:"varint,3,opt,name=field12850" json:"field12850,omitempty"`
-	Field12851 *int32 `protobuf:"varint,4,opt,name=field12851" json:"field12851,omitempty"`
-	Field12852 *int32 `protobuf:"varint,5,opt,name=field12852" json:"field12852,omitempty"`
-}
-
-func (x *Message12821) Reset() {
-	*x = Message12821{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[19]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12821) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12821) ProtoMessage() {}
-
-func (x *Message12821) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[19]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12821.ProtoReflect.Descriptor instead.
-func (*Message12821) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{19}
-}
-
-func (x *Message12821) GetField12848() int32 {
-	if x != nil && x.Field12848 != nil {
-		return *x.Field12848
-	}
-	return 0
-}
-
-func (x *Message12821) GetField12849() int32 {
-	if x != nil && x.Field12849 != nil {
-		return *x.Field12849
-	}
-	return 0
-}
-
-func (x *Message12821) GetField12850() int32 {
-	if x != nil && x.Field12850 != nil {
-		return *x.Field12850
-	}
-	return 0
-}
-
-func (x *Message12821) GetField12851() int32 {
-	if x != nil && x.Field12851 != nil {
-		return *x.Field12851
-	}
-	return 0
-}
-
-func (x *Message12821) GetField12852() int32 {
-	if x != nil && x.Field12852 != nil {
-		return *x.Field12852
-	}
-	return 0
-}
-
-type Message12818 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12829 *uint64         `protobuf:"varint,1,opt,name=field12829" json:"field12829,omitempty"`
-	Field12830 *int32          `protobuf:"varint,2,opt,name=field12830" json:"field12830,omitempty"`
-	Field12831 *int32          `protobuf:"varint,3,opt,name=field12831" json:"field12831,omitempty"`
-	Field12832 *int32          `protobuf:"varint,5,opt,name=field12832" json:"field12832,omitempty"`
-	Field12833 []*Message12817 `protobuf:"bytes,4,rep,name=field12833" json:"field12833,omitempty"`
-}
-
-func (x *Message12818) Reset() {
-	*x = Message12818{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[20]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12818) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12818) ProtoMessage() {}
-
-func (x *Message12818) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[20]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12818.ProtoReflect.Descriptor instead.
-func (*Message12818) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{20}
-}
-
-func (x *Message12818) GetField12829() uint64 {
-	if x != nil && x.Field12829 != nil {
-		return *x.Field12829
-	}
-	return 0
-}
-
-func (x *Message12818) GetField12830() int32 {
-	if x != nil && x.Field12830 != nil {
-		return *x.Field12830
-	}
-	return 0
-}
-
-func (x *Message12818) GetField12831() int32 {
-	if x != nil && x.Field12831 != nil {
-		return *x.Field12831
-	}
-	return 0
-}
-
-func (x *Message12818) GetField12832() int32 {
-	if x != nil && x.Field12832 != nil {
-		return *x.Field12832
-	}
-	return 0
-}
-
-func (x *Message12818) GetField12833() []*Message12817 {
-	if x != nil {
-		return x.Field12833
-	}
-	return nil
-}
-
-type Message16479 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field16484 *Message16480 `protobuf:"bytes,1,opt,name=field16484" json:"field16484,omitempty"`
-	Field16485 *int32        `protobuf:"varint,5,opt,name=field16485" json:"field16485,omitempty"`
-	Field16486 *float32      `protobuf:"fixed32,2,opt,name=field16486" json:"field16486,omitempty"`
-	Field16487 *uint32       `protobuf:"varint,4,opt,name=field16487" json:"field16487,omitempty"`
-	Field16488 *bool         `protobuf:"varint,3,opt,name=field16488" json:"field16488,omitempty"`
-	Field16489 *uint32       `protobuf:"varint,6,opt,name=field16489" json:"field16489,omitempty"`
-}
-
-func (x *Message16479) Reset() {
-	*x = Message16479{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[21]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message16479) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message16479) ProtoMessage() {}
-
-func (x *Message16479) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[21]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message16479.ProtoReflect.Descriptor instead.
-func (*Message16479) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{21}
-}
-
-func (x *Message16479) GetField16484() *Message16480 {
-	if x != nil {
-		return x.Field16484
-	}
-	return nil
-}
-
-func (x *Message16479) GetField16485() int32 {
-	if x != nil && x.Field16485 != nil {
-		return *x.Field16485
-	}
-	return 0
-}
-
-func (x *Message16479) GetField16486() float32 {
-	if x != nil && x.Field16486 != nil {
-		return *x.Field16486
-	}
-	return 0
-}
-
-func (x *Message16479) GetField16487() uint32 {
-	if x != nil && x.Field16487 != nil {
-		return *x.Field16487
-	}
-	return 0
-}
-
-func (x *Message16479) GetField16488() bool {
-	if x != nil && x.Field16488 != nil {
-		return *x.Field16488
-	}
-	return false
-}
-
-func (x *Message16479) GetField16489() uint32 {
-	if x != nil && x.Field16489 != nil {
-		return *x.Field16489
-	}
-	return 0
-}
-
-type Message16722 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field16752 *string `protobuf:"bytes,1,opt,name=field16752" json:"field16752,omitempty"`
-	Field16753 *string `protobuf:"bytes,2,opt,name=field16753" json:"field16753,omitempty"`
-	Field16754 *string `protobuf:"bytes,3,opt,name=field16754" json:"field16754,omitempty"`
-	Field16755 *int32  `protobuf:"varint,5,opt,name=field16755" json:"field16755,omitempty"`
-	Field16756 *string `protobuf:"bytes,4,opt,name=field16756" json:"field16756,omitempty"`
-}
-
-func (x *Message16722) Reset() {
-	*x = Message16722{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[22]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message16722) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message16722) ProtoMessage() {}
-
-func (x *Message16722) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[22]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message16722.ProtoReflect.Descriptor instead.
-func (*Message16722) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{22}
-}
-
-func (x *Message16722) GetField16752() string {
-	if x != nil && x.Field16752 != nil {
-		return *x.Field16752
-	}
-	return ""
-}
-
-func (x *Message16722) GetField16753() string {
-	if x != nil && x.Field16753 != nil {
-		return *x.Field16753
-	}
-	return ""
-}
-
-func (x *Message16722) GetField16754() string {
-	if x != nil && x.Field16754 != nil {
-		return *x.Field16754
-	}
-	return ""
-}
-
-func (x *Message16722) GetField16755() int32 {
-	if x != nil && x.Field16755 != nil {
-		return *x.Field16755
-	}
-	return 0
-}
-
-func (x *Message16722) GetField16756() string {
-	if x != nil && x.Field16756 != nil {
-		return *x.Field16756
-	}
-	return ""
-}
-
-type Message16724 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field16761 *int64              `protobuf:"varint,1,opt,name=field16761" json:"field16761,omitempty"`
-	Field16762 *float32            `protobuf:"fixed32,2,opt,name=field16762" json:"field16762,omitempty"`
-	Field16763 *int64              `protobuf:"varint,3,opt,name=field16763" json:"field16763,omitempty"`
-	Field16764 *int64              `protobuf:"varint,4,opt,name=field16764" json:"field16764,omitempty"`
-	Field16765 *bool               `protobuf:"varint,5,opt,name=field16765" json:"field16765,omitempty"`
-	Field16766 []string            `protobuf:"bytes,6,rep,name=field16766" json:"field16766,omitempty"`
-	Field16767 []string            `protobuf:"bytes,7,rep,name=field16767" json:"field16767,omitempty"`
-	Field16768 *UnusedEmptyMessage `protobuf:"bytes,8,opt,name=field16768" json:"field16768,omitempty"`
-	Field16769 *bool               `protobuf:"varint,9,opt,name=field16769" json:"field16769,omitempty"`
-	Field16770 *uint32             `protobuf:"varint,10,opt,name=field16770" json:"field16770,omitempty"`
-	Field16771 *Enum16728          `protobuf:"varint,11,opt,name=field16771,enum=benchmarks.google_message3.Enum16728" json:"field16771,omitempty"`
-	Field16772 []int32             `protobuf:"varint,12,rep,name=field16772" json:"field16772,omitempty"`
-	Field16773 *bool               `protobuf:"varint,13,opt,name=field16773" json:"field16773,omitempty"`
-}
-
-func (x *Message16724) Reset() {
-	*x = Message16724{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[23]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message16724) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message16724) ProtoMessage() {}
-
-func (x *Message16724) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[23]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message16724.ProtoReflect.Descriptor instead.
-func (*Message16724) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{23}
-}
-
-func (x *Message16724) GetField16761() int64 {
-	if x != nil && x.Field16761 != nil {
-		return *x.Field16761
-	}
-	return 0
-}
-
-func (x *Message16724) GetField16762() float32 {
-	if x != nil && x.Field16762 != nil {
-		return *x.Field16762
-	}
-	return 0
-}
-
-func (x *Message16724) GetField16763() int64 {
-	if x != nil && x.Field16763 != nil {
-		return *x.Field16763
-	}
-	return 0
-}
-
-func (x *Message16724) GetField16764() int64 {
-	if x != nil && x.Field16764 != nil {
-		return *x.Field16764
-	}
-	return 0
-}
-
-func (x *Message16724) GetField16765() bool {
-	if x != nil && x.Field16765 != nil {
-		return *x.Field16765
-	}
-	return false
-}
-
-func (x *Message16724) GetField16766() []string {
-	if x != nil {
-		return x.Field16766
-	}
-	return nil
-}
-
-func (x *Message16724) GetField16767() []string {
-	if x != nil {
-		return x.Field16767
-	}
-	return nil
-}
-
-func (x *Message16724) GetField16768() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field16768
-	}
-	return nil
-}
-
-func (x *Message16724) GetField16769() bool {
-	if x != nil && x.Field16769 != nil {
-		return *x.Field16769
-	}
-	return false
-}
-
-func (x *Message16724) GetField16770() uint32 {
-	if x != nil && x.Field16770 != nil {
-		return *x.Field16770
-	}
-	return 0
-}
-
-func (x *Message16724) GetField16771() Enum16728 {
-	if x != nil && x.Field16771 != nil {
-		return *x.Field16771
-	}
-	return Enum16728_ENUM_VALUE16729
-}
-
-func (x *Message16724) GetField16772() []int32 {
-	if x != nil {
-		return x.Field16772
-	}
-	return nil
-}
-
-func (x *Message16724) GetField16773() bool {
-	if x != nil && x.Field16773 != nil {
-		return *x.Field16773
-	}
-	return false
-}
-
-type Message17728 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message17728) Reset() {
-	*x = Message17728{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[24]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message17728) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message17728) ProtoMessage() {}
-
-func (x *Message17728) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[24]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message17728.ProtoReflect.Descriptor instead.
-func (*Message17728) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{24}
-}
-
-type Message24356 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field24559 *string               `protobuf:"bytes,1,opt,name=field24559" json:"field24559,omitempty"`
-	Field24560 *string               `protobuf:"bytes,2,opt,name=field24560" json:"field24560,omitempty"`
-	Field24561 *int32                `protobuf:"varint,14,opt,name=field24561" json:"field24561,omitempty"`
-	Field24562 *string               `protobuf:"bytes,3,opt,name=field24562" json:"field24562,omitempty"`
-	Field24563 *string               `protobuf:"bytes,4,opt,name=field24563" json:"field24563,omitempty"`
-	Field24564 *string               `protobuf:"bytes,5,opt,name=field24564" json:"field24564,omitempty"`
-	Field24565 *UnusedEnum           `protobuf:"varint,13,opt,name=field24565,enum=benchmarks.google_message3.UnusedEnum" json:"field24565,omitempty"`
-	Field24566 *string               `protobuf:"bytes,6,opt,name=field24566" json:"field24566,omitempty"`
-	Field24567 *Enum24361            `protobuf:"varint,12,opt,name=field24567,enum=benchmarks.google_message3.Enum24361" json:"field24567,omitempty"`
-	Field24568 *string               `protobuf:"bytes,7,opt,name=field24568" json:"field24568,omitempty"`
-	Field24569 *string               `protobuf:"bytes,8,opt,name=field24569" json:"field24569,omitempty"`
-	Field24570 *string               `protobuf:"bytes,9,opt,name=field24570" json:"field24570,omitempty"`
-	Field24571 []*UnusedEmptyMessage `protobuf:"bytes,10,rep,name=field24571" json:"field24571,omitempty"`
-	Field24572 []string              `protobuf:"bytes,11,rep,name=field24572" json:"field24572,omitempty"`
-	Field24573 []string              `protobuf:"bytes,15,rep,name=field24573" json:"field24573,omitempty"`
-}
-
-func (x *Message24356) Reset() {
-	*x = Message24356{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[25]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message24356) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message24356) ProtoMessage() {}
-
-func (x *Message24356) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[25]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message24356.ProtoReflect.Descriptor instead.
-func (*Message24356) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{25}
-}
-
-func (x *Message24356) GetField24559() string {
-	if x != nil && x.Field24559 != nil {
-		return *x.Field24559
-	}
-	return ""
-}
-
-func (x *Message24356) GetField24560() string {
-	if x != nil && x.Field24560 != nil {
-		return *x.Field24560
-	}
-	return ""
-}
-
-func (x *Message24356) GetField24561() int32 {
-	if x != nil && x.Field24561 != nil {
-		return *x.Field24561
-	}
-	return 0
-}
-
-func (x *Message24356) GetField24562() string {
-	if x != nil && x.Field24562 != nil {
-		return *x.Field24562
-	}
-	return ""
-}
-
-func (x *Message24356) GetField24563() string {
-	if x != nil && x.Field24563 != nil {
-		return *x.Field24563
-	}
-	return ""
-}
-
-func (x *Message24356) GetField24564() string {
-	if x != nil && x.Field24564 != nil {
-		return *x.Field24564
-	}
-	return ""
-}
-
-func (x *Message24356) GetField24565() UnusedEnum {
-	if x != nil && x.Field24565 != nil {
-		return *x.Field24565
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message24356) GetField24566() string {
-	if x != nil && x.Field24566 != nil {
-		return *x.Field24566
-	}
-	return ""
-}
-
-func (x *Message24356) GetField24567() Enum24361 {
-	if x != nil && x.Field24567 != nil {
-		return *x.Field24567
-	}
-	return Enum24361_ENUM_VALUE24362
-}
-
-func (x *Message24356) GetField24568() string {
-	if x != nil && x.Field24568 != nil {
-		return *x.Field24568
-	}
-	return ""
-}
-
-func (x *Message24356) GetField24569() string {
-	if x != nil && x.Field24569 != nil {
-		return *x.Field24569
-	}
-	return ""
-}
-
-func (x *Message24356) GetField24570() string {
-	if x != nil && x.Field24570 != nil {
-		return *x.Field24570
-	}
-	return ""
-}
-
-func (x *Message24356) GetField24571() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24571
-	}
-	return nil
-}
-
-func (x *Message24356) GetField24572() []string {
-	if x != nil {
-		return x.Field24572
-	}
-	return nil
-}
-
-func (x *Message24356) GetField24573() []string {
-	if x != nil {
-		return x.Field24573
-	}
-	return nil
-}
-
-type Message24376 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field24589 *string               `protobuf:"bytes,1,opt,name=field24589" json:"field24589,omitempty"`
-	Field24590 *string               `protobuf:"bytes,2,opt,name=field24590" json:"field24590,omitempty"`
-	Field24591 *string               `protobuf:"bytes,3,opt,name=field24591" json:"field24591,omitempty"`
-	Field24592 *Message24377         `protobuf:"bytes,4,req,name=field24592" json:"field24592,omitempty"`
-	Field24593 *Message24317         `protobuf:"bytes,5,opt,name=field24593" json:"field24593,omitempty"`
-	Field24594 *string               `protobuf:"bytes,6,opt,name=field24594" json:"field24594,omitempty"`
-	Field24595 *Message24378         `protobuf:"bytes,7,opt,name=field24595" json:"field24595,omitempty"`
-	Field24596 []string              `protobuf:"bytes,8,rep,name=field24596" json:"field24596,omitempty"`
-	Field24597 []*UnusedEmptyMessage `protobuf:"bytes,14,rep,name=field24597" json:"field24597,omitempty"`
-	Field24598 []string              `protobuf:"bytes,9,rep,name=field24598" json:"field24598,omitempty"`
-	Field24599 []string              `protobuf:"bytes,10,rep,name=field24599" json:"field24599,omitempty"`
-	Field24600 []string              `protobuf:"bytes,11,rep,name=field24600" json:"field24600,omitempty"`
-	Field24601 *string               `protobuf:"bytes,12,opt,name=field24601" json:"field24601,omitempty"`
-	Field24602 []string              `protobuf:"bytes,13,rep,name=field24602" json:"field24602,omitempty"`
-}
-
-func (x *Message24376) Reset() {
-	*x = Message24376{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[26]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message24376) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message24376) ProtoMessage() {}
-
-func (x *Message24376) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[26]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message24376.ProtoReflect.Descriptor instead.
-func (*Message24376) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{26}
-}
-
-func (x *Message24376) GetField24589() string {
-	if x != nil && x.Field24589 != nil {
-		return *x.Field24589
-	}
-	return ""
-}
-
-func (x *Message24376) GetField24590() string {
-	if x != nil && x.Field24590 != nil {
-		return *x.Field24590
-	}
-	return ""
-}
-
-func (x *Message24376) GetField24591() string {
-	if x != nil && x.Field24591 != nil {
-		return *x.Field24591
-	}
-	return ""
-}
-
-func (x *Message24376) GetField24592() *Message24377 {
-	if x != nil {
-		return x.Field24592
-	}
-	return nil
-}
-
-func (x *Message24376) GetField24593() *Message24317 {
-	if x != nil {
-		return x.Field24593
-	}
-	return nil
-}
-
-func (x *Message24376) GetField24594() string {
-	if x != nil && x.Field24594 != nil {
-		return *x.Field24594
-	}
-	return ""
-}
-
-func (x *Message24376) GetField24595() *Message24378 {
-	if x != nil {
-		return x.Field24595
-	}
-	return nil
-}
-
-func (x *Message24376) GetField24596() []string {
-	if x != nil {
-		return x.Field24596
-	}
-	return nil
-}
-
-func (x *Message24376) GetField24597() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24597
-	}
-	return nil
-}
-
-func (x *Message24376) GetField24598() []string {
-	if x != nil {
-		return x.Field24598
-	}
-	return nil
-}
-
-func (x *Message24376) GetField24599() []string {
-	if x != nil {
-		return x.Field24599
-	}
-	return nil
-}
-
-func (x *Message24376) GetField24600() []string {
-	if x != nil {
-		return x.Field24600
-	}
-	return nil
-}
-
-func (x *Message24376) GetField24601() string {
-	if x != nil && x.Field24601 != nil {
-		return *x.Field24601
-	}
-	return ""
-}
-
-func (x *Message24376) GetField24602() []string {
-	if x != nil {
-		return x.Field24602
-	}
-	return nil
-}
-
-type Message24366 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field24574 *string               `protobuf:"bytes,1,opt,name=field24574" json:"field24574,omitempty"`
-	Field24575 *string               `protobuf:"bytes,2,opt,name=field24575" json:"field24575,omitempty"`
-	Field24576 *string               `protobuf:"bytes,3,opt,name=field24576" json:"field24576,omitempty"`
-	Field24577 *int32                `protobuf:"varint,10,opt,name=field24577" json:"field24577,omitempty"`
-	Field24578 *string               `protobuf:"bytes,13,opt,name=field24578" json:"field24578,omitempty"`
-	Field24579 *string               `protobuf:"bytes,4,opt,name=field24579" json:"field24579,omitempty"`
-	Field24580 *string               `protobuf:"bytes,5,opt,name=field24580" json:"field24580,omitempty"`
-	Field24581 *UnusedEnum           `protobuf:"varint,9,opt,name=field24581,enum=benchmarks.google_message3.UnusedEnum" json:"field24581,omitempty"`
-	Field24582 *string               `protobuf:"bytes,14,opt,name=field24582" json:"field24582,omitempty"`
-	Field24583 *UnusedEnum           `protobuf:"varint,15,opt,name=field24583,enum=benchmarks.google_message3.UnusedEnum" json:"field24583,omitempty"`
-	Field24584 *string               `protobuf:"bytes,6,opt,name=field24584" json:"field24584,omitempty"`
-	Field24585 *string               `protobuf:"bytes,12,opt,name=field24585" json:"field24585,omitempty"`
-	Field24586 []*UnusedEmptyMessage `protobuf:"bytes,7,rep,name=field24586" json:"field24586,omitempty"`
-	Field24587 []string              `protobuf:"bytes,8,rep,name=field24587" json:"field24587,omitempty"`
-	Field24588 []string              `protobuf:"bytes,11,rep,name=field24588" json:"field24588,omitempty"`
-}
-
-func (x *Message24366) Reset() {
-	*x = Message24366{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[27]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message24366) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message24366) ProtoMessage() {}
-
-func (x *Message24366) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[27]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message24366.ProtoReflect.Descriptor instead.
-func (*Message24366) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{27}
-}
-
-func (x *Message24366) GetField24574() string {
-	if x != nil && x.Field24574 != nil {
-		return *x.Field24574
-	}
-	return ""
-}
-
-func (x *Message24366) GetField24575() string {
-	if x != nil && x.Field24575 != nil {
-		return *x.Field24575
-	}
-	return ""
-}
-
-func (x *Message24366) GetField24576() string {
-	if x != nil && x.Field24576 != nil {
-		return *x.Field24576
-	}
-	return ""
-}
-
-func (x *Message24366) GetField24577() int32 {
-	if x != nil && x.Field24577 != nil {
-		return *x.Field24577
-	}
-	return 0
-}
-
-func (x *Message24366) GetField24578() string {
-	if x != nil && x.Field24578 != nil {
-		return *x.Field24578
-	}
-	return ""
-}
-
-func (x *Message24366) GetField24579() string {
-	if x != nil && x.Field24579 != nil {
-		return *x.Field24579
-	}
-	return ""
-}
-
-func (x *Message24366) GetField24580() string {
-	if x != nil && x.Field24580 != nil {
-		return *x.Field24580
-	}
-	return ""
-}
-
-func (x *Message24366) GetField24581() UnusedEnum {
-	if x != nil && x.Field24581 != nil {
-		return *x.Field24581
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message24366) GetField24582() string {
-	if x != nil && x.Field24582 != nil {
-		return *x.Field24582
-	}
-	return ""
-}
-
-func (x *Message24366) GetField24583() UnusedEnum {
-	if x != nil && x.Field24583 != nil {
-		return *x.Field24583
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message24366) GetField24584() string {
-	if x != nil && x.Field24584 != nil {
-		return *x.Field24584
-	}
-	return ""
-}
-
-func (x *Message24366) GetField24585() string {
-	if x != nil && x.Field24585 != nil {
-		return *x.Field24585
-	}
-	return ""
-}
-
-func (x *Message24366) GetField24586() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24586
-	}
-	return nil
-}
-
-func (x *Message24366) GetField24587() []string {
-	if x != nil {
-		return x.Field24587
-	}
-	return nil
-}
-
-func (x *Message24366) GetField24588() []string {
-	if x != nil {
-		return x.Field24588
-	}
-	return nil
-}
-
-type Message35546_Message35547 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field35569 *int32 `protobuf:"varint,5,req,name=field35569" json:"field35569,omitempty"`
-	Field35570 *int32 `protobuf:"varint,6,req,name=field35570" json:"field35570,omitempty"`
-}
-
-func (x *Message35546_Message35547) Reset() {
-	*x = Message35546_Message35547{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[28]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message35546_Message35547) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message35546_Message35547) ProtoMessage() {}
-
-func (x *Message35546_Message35547) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[28]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message35546_Message35547.ProtoReflect.Descriptor instead.
-func (*Message35546_Message35547) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{0, 0}
-}
-
-func (x *Message35546_Message35547) GetField35569() int32 {
-	if x != nil && x.Field35569 != nil {
-		return *x.Field35569
-	}
-	return 0
-}
-
-func (x *Message35546_Message35547) GetField35570() int32 {
-	if x != nil && x.Field35570 != nil {
-		return *x.Field35570
-	}
-	return 0
-}
-
-type Message35546_Message35548 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field35571 *int64 `protobuf:"varint,11,req,name=field35571" json:"field35571,omitempty"`
-	Field35572 *int64 `protobuf:"varint,12,req,name=field35572" json:"field35572,omitempty"`
-}
-
-func (x *Message35546_Message35548) Reset() {
-	*x = Message35546_Message35548{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[29]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message35546_Message35548) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message35546_Message35548) ProtoMessage() {}
-
-func (x *Message35546_Message35548) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[29]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message35546_Message35548.ProtoReflect.Descriptor instead.
-func (*Message35546_Message35548) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{0, 1}
-}
-
-func (x *Message35546_Message35548) GetField35571() int64 {
-	if x != nil && x.Field35571 != nil {
-		return *x.Field35571
-	}
-	return 0
-}
-
-func (x *Message35546_Message35548) GetField35572() int64 {
-	if x != nil && x.Field35572 != nil {
-		return *x.Field35572
-	}
-	return 0
-}
-
-type Message2356_Message2357 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field2399 *int64 `protobuf:"varint,9,opt,name=field2399" json:"field2399,omitempty"`
-	Field2400 *int32 `protobuf:"varint,10,opt,name=field2400" json:"field2400,omitempty"`
-	Field2401 *int32 `protobuf:"varint,11,opt,name=field2401" json:"field2401,omitempty"`
-	Field2402 *int32 `protobuf:"varint,12,opt,name=field2402" json:"field2402,omitempty"`
-	Field2403 *int32 `protobuf:"varint,13,opt,name=field2403" json:"field2403,omitempty"`
-	Field2404 *int32 `protobuf:"varint,116,opt,name=field2404" json:"field2404,omitempty"`
-	Field2405 *int32 `protobuf:"varint,106,opt,name=field2405" json:"field2405,omitempty"`
-	Field2406 []byte `protobuf:"bytes,14,req,name=field2406" json:"field2406,omitempty"`
-	Field2407 *int32 `protobuf:"varint,45,opt,name=field2407" json:"field2407,omitempty"`
-	Field2408 *int32 `protobuf:"varint,112,opt,name=field2408" json:"field2408,omitempty"`
-	Field2409 *bool  `protobuf:"varint,122,opt,name=field2409" json:"field2409,omitempty"`
-	Field2410 []byte `protobuf:"bytes,124,opt,name=field2410" json:"field2410,omitempty"`
-}
-
-func (x *Message2356_Message2357) Reset() {
-	*x = Message2356_Message2357{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[30]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message2356_Message2357) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message2356_Message2357) ProtoMessage() {}
-
-func (x *Message2356_Message2357) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[30]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message2356_Message2357.ProtoReflect.Descriptor instead.
-func (*Message2356_Message2357) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{1, 0}
-}
-
-func (x *Message2356_Message2357) GetField2399() int64 {
-	if x != nil && x.Field2399 != nil {
-		return *x.Field2399
-	}
-	return 0
-}
-
-func (x *Message2356_Message2357) GetField2400() int32 {
-	if x != nil && x.Field2400 != nil {
-		return *x.Field2400
-	}
-	return 0
-}
-
-func (x *Message2356_Message2357) GetField2401() int32 {
-	if x != nil && x.Field2401 != nil {
-		return *x.Field2401
-	}
-	return 0
-}
-
-func (x *Message2356_Message2357) GetField2402() int32 {
-	if x != nil && x.Field2402 != nil {
-		return *x.Field2402
-	}
-	return 0
-}
-
-func (x *Message2356_Message2357) GetField2403() int32 {
-	if x != nil && x.Field2403 != nil {
-		return *x.Field2403
-	}
-	return 0
-}
-
-func (x *Message2356_Message2357) GetField2404() int32 {
-	if x != nil && x.Field2404 != nil {
-		return *x.Field2404
-	}
-	return 0
-}
-
-func (x *Message2356_Message2357) GetField2405() int32 {
-	if x != nil && x.Field2405 != nil {
-		return *x.Field2405
-	}
-	return 0
-}
-
-func (x *Message2356_Message2357) GetField2406() []byte {
-	if x != nil {
-		return x.Field2406
-	}
-	return nil
-}
-
-func (x *Message2356_Message2357) GetField2407() int32 {
-	if x != nil && x.Field2407 != nil {
-		return *x.Field2407
-	}
-	return 0
-}
-
-func (x *Message2356_Message2357) GetField2408() int32 {
-	if x != nil && x.Field2408 != nil {
-		return *x.Field2408
-	}
-	return 0
-}
-
-func (x *Message2356_Message2357) GetField2409() bool {
-	if x != nil && x.Field2409 != nil {
-		return *x.Field2409
-	}
-	return false
-}
-
-func (x *Message2356_Message2357) GetField2410() []byte {
-	if x != nil {
-		return x.Field2410
-	}
-	return nil
-}
-
-type Message2356_Message2358 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message2356_Message2358) Reset() {
-	*x = Message2356_Message2358{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[31]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message2356_Message2358) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message2356_Message2358) ProtoMessage() {}
-
-func (x *Message2356_Message2358) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[31]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message2356_Message2358.ProtoReflect.Descriptor instead.
-func (*Message2356_Message2358) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{1, 1}
-}
-
-type Message2356_Message2359 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field2413 *string  `protobuf:"bytes,41,opt,name=field2413" json:"field2413,omitempty"`
-	Field2414 *string  `protobuf:"bytes,42,opt,name=field2414" json:"field2414,omitempty"`
-	Field2415 *string  `protobuf:"bytes,43,opt,name=field2415" json:"field2415,omitempty"`
-	Field2416 *string  `protobuf:"bytes,44,opt,name=field2416" json:"field2416,omitempty"`
-	Field2417 *int32   `protobuf:"varint,46,opt,name=field2417" json:"field2417,omitempty"`
-	Field2418 *string  `protobuf:"bytes,47,opt,name=field2418" json:"field2418,omitempty"`
-	Field2419 *float32 `protobuf:"fixed32,110,opt,name=field2419" json:"field2419,omitempty"`
-	Field2420 *float32 `protobuf:"fixed32,111,opt,name=field2420" json:"field2420,omitempty"`
-}
-
-func (x *Message2356_Message2359) Reset() {
-	*x = Message2356_Message2359{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[32]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message2356_Message2359) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message2356_Message2359) ProtoMessage() {}
-
-func (x *Message2356_Message2359) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[32]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message2356_Message2359.ProtoReflect.Descriptor instead.
-func (*Message2356_Message2359) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{1, 2}
-}
-
-func (x *Message2356_Message2359) GetField2413() string {
-	if x != nil && x.Field2413 != nil {
-		return *x.Field2413
-	}
-	return ""
-}
-
-func (x *Message2356_Message2359) GetField2414() string {
-	if x != nil && x.Field2414 != nil {
-		return *x.Field2414
-	}
-	return ""
-}
-
-func (x *Message2356_Message2359) GetField2415() string {
-	if x != nil && x.Field2415 != nil {
-		return *x.Field2415
-	}
-	return ""
-}
-
-func (x *Message2356_Message2359) GetField2416() string {
-	if x != nil && x.Field2416 != nil {
-		return *x.Field2416
-	}
-	return ""
-}
-
-func (x *Message2356_Message2359) GetField2417() int32 {
-	if x != nil && x.Field2417 != nil {
-		return *x.Field2417
-	}
-	return 0
-}
-
-func (x *Message2356_Message2359) GetField2418() string {
-	if x != nil && x.Field2418 != nil {
-		return *x.Field2418
-	}
-	return ""
-}
-
-func (x *Message2356_Message2359) GetField2419() float32 {
-	if x != nil && x.Field2419 != nil {
-		return *x.Field2419
-	}
-	return 0
-}
-
-func (x *Message2356_Message2359) GetField2420() float32 {
-	if x != nil && x.Field2420 != nil {
-		return *x.Field2420
-	}
-	return 0
-}
-
-type Message7029_Message7030 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7226 *string `protobuf:"bytes,14,opt,name=field7226" json:"field7226,omitempty"`
-	Field7227 *string `protobuf:"bytes,15,opt,name=field7227" json:"field7227,omitempty"`
-	Field7228 *int64  `protobuf:"varint,16,opt,name=field7228" json:"field7228,omitempty"`
-}
-
-func (x *Message7029_Message7030) Reset() {
-	*x = Message7029_Message7030{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[33]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7029_Message7030) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7029_Message7030) ProtoMessage() {}
-
-func (x *Message7029_Message7030) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[33]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7029_Message7030.ProtoReflect.Descriptor instead.
-func (*Message7029_Message7030) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{2, 0}
-}
-
-func (x *Message7029_Message7030) GetField7226() string {
-	if x != nil && x.Field7226 != nil {
-		return *x.Field7226
-	}
-	return ""
-}
-
-func (x *Message7029_Message7030) GetField7227() string {
-	if x != nil && x.Field7227 != nil {
-		return *x.Field7227
-	}
-	return ""
-}
-
-func (x *Message7029_Message7030) GetField7228() int64 {
-	if x != nil && x.Field7228 != nil {
-		return *x.Field7228
-	}
-	return 0
-}
-
-type Message7029_Message7031 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7229 *string `protobuf:"bytes,22,opt,name=field7229" json:"field7229,omitempty"`
-	Field7230 *int32  `protobuf:"varint,23,opt,name=field7230" json:"field7230,omitempty"`
-	Field7231 *int32  `protobuf:"varint,24,opt,name=field7231" json:"field7231,omitempty"`
-	Field7232 *int32  `protobuf:"varint,30,opt,name=field7232" json:"field7232,omitempty"`
-	Field7233 *int32  `protobuf:"varint,31,opt,name=field7233" json:"field7233,omitempty"`
-	Field7234 *int32  `protobuf:"varint,35,opt,name=field7234" json:"field7234,omitempty"`
-}
-
-func (x *Message7029_Message7031) Reset() {
-	*x = Message7029_Message7031{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[34]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7029_Message7031) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7029_Message7031) ProtoMessage() {}
-
-func (x *Message7029_Message7031) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[34]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7029_Message7031.ProtoReflect.Descriptor instead.
-func (*Message7029_Message7031) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{2, 1}
-}
-
-func (x *Message7029_Message7031) GetField7229() string {
-	if x != nil && x.Field7229 != nil {
-		return *x.Field7229
-	}
-	return ""
-}
-
-func (x *Message7029_Message7031) GetField7230() int32 {
-	if x != nil && x.Field7230 != nil {
-		return *x.Field7230
-	}
-	return 0
-}
-
-func (x *Message7029_Message7031) GetField7231() int32 {
-	if x != nil && x.Field7231 != nil {
-		return *x.Field7231
-	}
-	return 0
-}
-
-func (x *Message7029_Message7031) GetField7232() int32 {
-	if x != nil && x.Field7232 != nil {
-		return *x.Field7232
-	}
-	return 0
-}
-
-func (x *Message7029_Message7031) GetField7233() int32 {
-	if x != nil && x.Field7233 != nil {
-		return *x.Field7233
-	}
-	return 0
-}
-
-func (x *Message7029_Message7031) GetField7234() int32 {
-	if x != nil && x.Field7234 != nil {
-		return *x.Field7234
-	}
-	return 0
-}
-
-type Message18921_Message18922 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field18959 *uint64             `protobuf:"varint,6,opt,name=field18959" json:"field18959,omitempty"`
-	Field18960 *string             `protobuf:"bytes,13,opt,name=field18960" json:"field18960,omitempty"`
-	Field18961 *bool               `protobuf:"varint,21,opt,name=field18961" json:"field18961,omitempty"`
-	Field18962 *bool               `protobuf:"varint,33,opt,name=field18962" json:"field18962,omitempty"`
-	Field18963 *int32              `protobuf:"varint,7,opt,name=field18963" json:"field18963,omitempty"`
-	Field18964 *int32              `protobuf:"varint,8,opt,name=field18964" json:"field18964,omitempty"`
-	Field18965 *string             `protobuf:"bytes,9,opt,name=field18965" json:"field18965,omitempty"`
-	Field18966 *Message18856       `protobuf:"bytes,10,opt,name=field18966" json:"field18966,omitempty"`
-	Field18967 *uint64             `protobuf:"varint,34,opt,name=field18967" json:"field18967,omitempty"`
-	Field18968 *UnusedEmptyMessage `protobuf:"bytes,11,opt,name=field18968" json:"field18968,omitempty"`
-	Field18969 *uint64             `protobuf:"varint,35,opt,name=field18969" json:"field18969,omitempty"`
-	Field18970 *float32            `protobuf:"fixed32,12,opt,name=field18970" json:"field18970,omitempty"`
-	Field18971 []string            `protobuf:"bytes,14,rep,name=field18971" json:"field18971,omitempty"`
-	Field18972 *bool               `protobuf:"varint,15,opt,name=field18972" json:"field18972,omitempty"`
-	Field18973 *bool               `protobuf:"varint,16,opt,name=field18973" json:"field18973,omitempty"`
-	Field18974 *float32            `protobuf:"fixed32,22,opt,name=field18974" json:"field18974,omitempty"`
-	Field18975 *int32              `protobuf:"varint,18,opt,name=field18975" json:"field18975,omitempty"`
-	Field18976 *int32              `protobuf:"varint,19,opt,name=field18976" json:"field18976,omitempty"`
-	Field18977 *int32              `protobuf:"varint,20,opt,name=field18977" json:"field18977,omitempty"`
-	Field18978 *UnusedEmptyMessage `protobuf:"bytes,25,opt,name=field18978" json:"field18978,omitempty"`
-	Field18979 *UnusedEnum         `protobuf:"varint,26,opt,name=field18979,enum=benchmarks.google_message3.UnusedEnum" json:"field18979,omitempty"`
-	Field18980 []string            `protobuf:"bytes,27,rep,name=field18980" json:"field18980,omitempty"`
-	Field18981 *float32            `protobuf:"fixed32,28,opt,name=field18981" json:"field18981,omitempty"`
-}
-
-func (x *Message18921_Message18922) Reset() {
-	*x = Message18921_Message18922{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[35]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message18921_Message18922) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message18921_Message18922) ProtoMessage() {}
-
-func (x *Message18921_Message18922) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[35]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message18921_Message18922.ProtoReflect.Descriptor instead.
-func (*Message18921_Message18922) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{4, 0}
-}
-
-func (x *Message18921_Message18922) GetField18959() uint64 {
-	if x != nil && x.Field18959 != nil {
-		return *x.Field18959
-	}
-	return 0
-}
-
-func (x *Message18921_Message18922) GetField18960() string {
-	if x != nil && x.Field18960 != nil {
-		return *x.Field18960
-	}
-	return ""
-}
-
-func (x *Message18921_Message18922) GetField18961() bool {
-	if x != nil && x.Field18961 != nil {
-		return *x.Field18961
-	}
-	return false
-}
-
-func (x *Message18921_Message18922) GetField18962() bool {
-	if x != nil && x.Field18962 != nil {
-		return *x.Field18962
-	}
-	return false
-}
-
-func (x *Message18921_Message18922) GetField18963() int32 {
-	if x != nil && x.Field18963 != nil {
-		return *x.Field18963
-	}
-	return 0
-}
-
-func (x *Message18921_Message18922) GetField18964() int32 {
-	if x != nil && x.Field18964 != nil {
-		return *x.Field18964
-	}
-	return 0
-}
-
-func (x *Message18921_Message18922) GetField18965() string {
-	if x != nil && x.Field18965 != nil {
-		return *x.Field18965
-	}
-	return ""
-}
-
-func (x *Message18921_Message18922) GetField18966() *Message18856 {
-	if x != nil {
-		return x.Field18966
-	}
-	return nil
-}
-
-func (x *Message18921_Message18922) GetField18967() uint64 {
-	if x != nil && x.Field18967 != nil {
-		return *x.Field18967
-	}
-	return 0
-}
-
-func (x *Message18921_Message18922) GetField18968() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18968
-	}
-	return nil
-}
-
-func (x *Message18921_Message18922) GetField18969() uint64 {
-	if x != nil && x.Field18969 != nil {
-		return *x.Field18969
-	}
-	return 0
-}
-
-func (x *Message18921_Message18922) GetField18970() float32 {
-	if x != nil && x.Field18970 != nil {
-		return *x.Field18970
-	}
-	return 0
-}
-
-func (x *Message18921_Message18922) GetField18971() []string {
-	if x != nil {
-		return x.Field18971
-	}
-	return nil
-}
-
-func (x *Message18921_Message18922) GetField18972() bool {
-	if x != nil && x.Field18972 != nil {
-		return *x.Field18972
-	}
-	return false
-}
-
-func (x *Message18921_Message18922) GetField18973() bool {
-	if x != nil && x.Field18973 != nil {
-		return *x.Field18973
-	}
-	return false
-}
-
-func (x *Message18921_Message18922) GetField18974() float32 {
-	if x != nil && x.Field18974 != nil {
-		return *x.Field18974
-	}
-	return 0
-}
-
-func (x *Message18921_Message18922) GetField18975() int32 {
-	if x != nil && x.Field18975 != nil {
-		return *x.Field18975
-	}
-	return 0
-}
-
-func (x *Message18921_Message18922) GetField18976() int32 {
-	if x != nil && x.Field18976 != nil {
-		return *x.Field18976
-	}
-	return 0
-}
-
-func (x *Message18921_Message18922) GetField18977() int32 {
-	if x != nil && x.Field18977 != nil {
-		return *x.Field18977
-	}
-	return 0
-}
-
-func (x *Message18921_Message18922) GetField18978() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field18978
-	}
-	return nil
-}
-
-func (x *Message18921_Message18922) GetField18979() UnusedEnum {
-	if x != nil && x.Field18979 != nil {
-		return *x.Field18979
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message18921_Message18922) GetField18980() []string {
-	if x != nil {
-		return x.Field18980
-	}
-	return nil
-}
-
-func (x *Message18921_Message18922) GetField18981() float32 {
-	if x != nil && x.Field18981 != nil {
-		return *x.Field18981
-	}
-	return 0
-}
-
-type Message3886_Message3887 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field3932 *string      `protobuf:"bytes,2,req,name=field3932" json:"field3932,omitempty"`
-	Field3933 *string      `protobuf:"bytes,9,opt,name=field3933" json:"field3933,omitempty"`
-	Field3934 *Message3850 `protobuf:"bytes,3,opt,name=field3934" json:"field3934,omitempty"`
-	Field3935 []byte       `protobuf:"bytes,8,opt,name=field3935" json:"field3935,omitempty"`
-}
-
-func (x *Message3886_Message3887) Reset() {
-	*x = Message3886_Message3887{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[36]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3886_Message3887) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3886_Message3887) ProtoMessage() {}
-
-func (x *Message3886_Message3887) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[36]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3886_Message3887.ProtoReflect.Descriptor instead.
-func (*Message3886_Message3887) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP(), []int{6, 0}
-}
-
-func (x *Message3886_Message3887) GetField3932() string {
-	if x != nil && x.Field3932 != nil {
-		return *x.Field3932
-	}
-	return ""
-}
-
-func (x *Message3886_Message3887) GetField3933() string {
-	if x != nil && x.Field3933 != nil {
-		return *x.Field3933
-	}
-	return ""
-}
-
-func (x *Message3886_Message3887) GetField3934() *Message3850 {
-	if x != nil {
-		return x.Field3934
-	}
-	return nil
-}
-
-func (x *Message3886_Message3887) GetField3935() []byte {
-	if x != nil {
-		return x.Field3935
-	}
-	return nil
-}
-
-var File_datasets_google_message3_benchmark_message3_3_proto protoreflect.FileDescriptor
-
-var file_datasets_google_message3_benchmark_message3_3_proto_rawDesc = []byte{
-	0x0a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x33, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x34,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73,
-	0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x5f, 0x35, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x64, 0x61, 0x74,
-	0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x37, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x38, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa4, 0x05, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x35, 0x35, 0x34, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x35, 0x35, 0x36, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x35, 0x35, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x35, 0x35, 0x37, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x35, 0x35, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x35, 0x35, 0x38, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x35, 0x35, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x35, 0x35, 0x39, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x35, 0x35, 0x35, 0x39, 0x12, 0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x35, 0x35, 0x34, 0x37, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x35, 0x35, 0x34, 0x36, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35,
-	0x35, 0x34, 0x37, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x35, 0x34,
-	0x37, 0x12, 0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x35, 0x34,
-	0x38, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x35, 0x34,
-	0x36, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x35, 0x34, 0x38, 0x52, 0x0c,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x35, 0x34, 0x38, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x36, 0x32, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x36, 0x32, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x36, 0x33, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x36, 0x33, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x36, 0x34, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x36, 0x34, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x36, 0x35, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x36, 0x35, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x36, 0x36, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x36, 0x36, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x36, 0x37, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x36, 0x37, 0x1a, 0x4e, 0x0a, 0x0c,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x35, 0x34, 0x37, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x36, 0x39, 0x18, 0x05, 0x20, 0x02, 0x28, 0x05,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x36, 0x39, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x37, 0x30, 0x18, 0x06, 0x20, 0x02, 0x28, 0x05,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x37, 0x30, 0x1a, 0x4e, 0x0a, 0x0c,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x35, 0x35, 0x34, 0x38, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x37, 0x31, 0x18, 0x0b, 0x20, 0x02, 0x28, 0x03,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x37, 0x31, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x37, 0x32, 0x18, 0x0c, 0x20, 0x02, 0x28, 0x03,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x37, 0x32, 0x22, 0xca, 0x0f, 0x0a,
-	0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x33, 0x35, 0x36, 0x12, 0x45, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x36, 0x38, 0x18, 0x79, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x37, 0x34, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x33, 0x36, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x36, 0x39,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x36,
-	0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x30, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x30, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x31, 0x18, 0x11, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x31, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x32, 0x18, 0x03, 0x20, 0x02, 0x28, 0x09,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x33, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x33, 0x37, 0x34, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x33, 0x37, 0x35, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x33, 0x37, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33,
-	0x37, 0x36, 0x18, 0x65, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x33, 0x37, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x37,
-	0x18, 0x66, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37,
-	0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x38, 0x18, 0x67,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x38, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x39, 0x18, 0x68, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x39, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x38, 0x30, 0x18, 0x71, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x38, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x38, 0x31, 0x18, 0x72, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x38, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x33, 0x38, 0x32, 0x18, 0x73, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x33, 0x38, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x33, 0x38, 0x33, 0x18, 0x75, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x33, 0x38, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33,
-	0x38, 0x34, 0x18, 0x76, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x33, 0x38, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x38, 0x35,
-	0x18, 0x77, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x38,
-	0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x38, 0x36, 0x18, 0x69,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x38, 0x36, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x38, 0x37, 0x18, 0x05, 0x20, 0x01,
-	0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x38, 0x37, 0x12, 0x55, 0x0a,
-	0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x33, 0x35, 0x37, 0x18, 0x06, 0x20, 0x01,
-	0x28, 0x0a, 0x32, 0x33, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x33, 0x35, 0x36, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x32, 0x33, 0x35, 0x37, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x32, 0x33, 0x35, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x38,
-	0x39, 0x18, 0x78, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33,
-	0x38, 0x39, 0x12, 0x55, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x33, 0x35,
-	0x38, 0x18, 0x6b, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x33, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x33, 0x35, 0x36,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x33, 0x35, 0x38, 0x52, 0x0b, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x33, 0x35, 0x38, 0x12, 0x55, 0x0a, 0x0b, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x32, 0x33, 0x35, 0x39, 0x18, 0x28, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x33,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x32, 0x33, 0x35, 0x36, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32,
-	0x33, 0x35, 0x39, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x33, 0x35, 0x39,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x39, 0x32, 0x18, 0x32, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x39, 0x32, 0x12, 0x4c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x39, 0x33, 0x18, 0x3c, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x39, 0x33, 0x12, 0x4c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x39, 0x34, 0x18, 0x46, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x39, 0x34, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x33, 0x39, 0x35, 0x18, 0x50, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x39, 0x35, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x33, 0x39, 0x36, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45,
-	0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x33, 0x39, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x33, 0x39, 0x37, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x33, 0x39, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x39,
-	0x38, 0x18, 0x7b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33,
-	0x39, 0x38, 0x1a, 0xf5, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x33,
-	0x35, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x39, 0x39, 0x18,
-	0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x39, 0x39,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x30, 0x18, 0x0a, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x30, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x31, 0x18, 0x0b, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x31, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x34, 0x30, 0x34, 0x18, 0x74, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x34, 0x30, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x30, 0x35, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x30, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30,
-	0x36, 0x18, 0x0e, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x30, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x37, 0x18,
-	0x2d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x37,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x38, 0x18, 0x70, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x38, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x39, 0x18, 0x7a, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x39, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x31, 0x30, 0x18, 0x7c, 0x20, 0x01, 0x28, 0x0c, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x31, 0x30, 0x1a, 0x0d, 0x0a, 0x0b, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x33, 0x35, 0x38, 0x1a, 0xfd, 0x01, 0x0a, 0x0b, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x33, 0x35, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x34, 0x31, 0x33, 0x18, 0x29, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x34, 0x31, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x31, 0x34, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x34, 0x31, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x31, 0x35, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x31, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x31, 0x36,
-	0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x31,
-	0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x31, 0x37, 0x18, 0x2e,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x31, 0x37, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x31, 0x38, 0x18, 0x2f, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x31, 0x38, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x31, 0x39, 0x18, 0x6e, 0x20, 0x01, 0x28, 0x02,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x31, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x32, 0x30, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x32, 0x30, 0x22, 0xf8, 0x0d, 0x0a, 0x0b, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x30, 0x32, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x31, 0x38, 0x33, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x31, 0x38, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x31, 0x38, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x31, 0x38, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x31,
-	0x38, 0x35, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x31, 0x38, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x31, 0x38, 0x36,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x31, 0x38,
-	0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x31, 0x38, 0x37, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x31, 0x38, 0x37, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x31, 0x38, 0x38, 0x18, 0x06, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x31, 0x38, 0x38, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x31, 0x38, 0x39, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x31, 0x38, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x31, 0x39, 0x30, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x31, 0x39, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x31, 0x39, 0x31, 0x18, 0x31, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x31, 0x39, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x31, 0x39, 0x32, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x31, 0x39, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x31,
-	0x39, 0x33, 0x18, 0x21, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x31, 0x39, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x31, 0x39, 0x34,
-	0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x31, 0x39,
-	0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x31, 0x39, 0x35, 0x18, 0x1a,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x31, 0x39, 0x35, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x31, 0x39, 0x36, 0x18, 0x28, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x31, 0x39, 0x36, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x31, 0x39, 0x37, 0x18, 0x29, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x31, 0x39, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x31, 0x39, 0x38, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x31, 0x39, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x31, 0x39, 0x39, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x31, 0x39, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x32, 0x30, 0x30, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x32, 0x30, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32,
-	0x30, 0x31, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x32, 0x30, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x30, 0x32,
-	0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x30,
-	0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x30, 0x33, 0x18, 0x09,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x30, 0x33, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x30, 0x34, 0x18, 0x0a, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x30, 0x34, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x30, 0x35, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x30, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x30, 0x36, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x30, 0x36, 0x12, 0x55, 0x0a, 0x0b, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x37, 0x30, 0x33, 0x30, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x33,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x37, 0x30, 0x32, 0x39, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37,
-	0x30, 0x33, 0x30, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x30, 0x33, 0x30,
-	0x12, 0x55, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x30, 0x33, 0x31, 0x18,
-	0x15, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x33, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x30, 0x32, 0x39, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x30, 0x33, 0x31, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x37, 0x30, 0x33, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x32, 0x30, 0x39, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x32, 0x30, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32,
-	0x31, 0x30, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x32, 0x31, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x31, 0x31,
-	0x18, 0x1d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x31,
-	0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x31, 0x32, 0x18, 0x20,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x31, 0x32, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x31, 0x33, 0x18, 0x30, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x31, 0x33, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x31, 0x34, 0x18, 0x22, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x31, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x31, 0x35, 0x18, 0x24, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x31, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x32, 0x31, 0x36, 0x18, 0x25, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x32, 0x31, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x32, 0x31, 0x37, 0x18, 0x26, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x32, 0x31, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32,
-	0x31, 0x38, 0x18, 0x27, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x32, 0x31, 0x38, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x31, 0x39,
-	0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x31,
-	0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x32, 0x30, 0x18, 0x2d,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x32, 0x30, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x32, 0x31, 0x18, 0x2e, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x32, 0x31, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x32, 0x32, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x32, 0x32, 0x12, 0x4c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x32, 0x33, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73,
-	0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x32, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x32, 0x32, 0x34, 0x18, 0x33, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x32, 0x32, 0x34, 0x1a, 0x67, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x37, 0x30, 0x33, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x32, 0x32, 0x36, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x32, 0x32, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x32,
-	0x37, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32,
-	0x32, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x32, 0x38, 0x18,
-	0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x32, 0x38,
-	0x1a, 0xc1, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x30, 0x33, 0x31,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x32, 0x39, 0x18, 0x16, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x32, 0x39, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x33, 0x30, 0x18, 0x17, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x33, 0x30, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x33, 0x31, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x33, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x32, 0x33, 0x32, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x32, 0x33, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x32, 0x33, 0x33, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x32, 0x33, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x32, 0x33, 0x34, 0x18, 0x23, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x32, 0x33, 0x34, 0x22, 0x2e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x35, 0x35, 0x33, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35,
-	0x33, 0x39, 0x18, 0x01, 0x20, 0x02, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x35, 0x35, 0x33, 0x39, 0x22, 0xd0, 0x0c, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x38, 0x39, 0x32, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x39, 0x34, 0x36, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x39, 0x34, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x39, 0x34, 0x37, 0x18, 0x02, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x39, 0x34, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x39, 0x34, 0x38, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x39, 0x34, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x39, 0x34, 0x39, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x39, 0x34, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x39, 0x35, 0x30, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x39, 0x35, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x39, 0x35, 0x31, 0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x39, 0x35, 0x31, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x39, 0x35, 0x32, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70,
-	0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x39, 0x35, 0x32, 0x12, 0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x38, 0x39, 0x32, 0x32, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x38, 0x39, 0x32, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x38, 0x39,
-	0x32, 0x32, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x38, 0x39, 0x32, 0x32,
-	0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x35, 0x34, 0x18, 0x1d,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x35, 0x34,
-	0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x35, 0x35, 0x18, 0x1e,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x38, 0x39, 0x34, 0x33, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x35, 0x35, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x35, 0x36, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x38, 0x39, 0x34, 0x34, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x38, 0x39, 0x35, 0x36, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39,
-	0x35, 0x37, 0x18, 0x20, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74,
-	0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x38, 0x39, 0x35, 0x37, 0x1a, 0xa0, 0x07, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x38, 0x39, 0x32, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x39, 0x35, 0x39, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x39, 0x35, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x39, 0x36, 0x30, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x39, 0x36, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x39, 0x36, 0x31, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x39, 0x36, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x39, 0x36, 0x32, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x39, 0x36, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x39, 0x36, 0x33, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x39, 0x36, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x39, 0x36, 0x34, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x39, 0x36, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x39, 0x36, 0x35, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x39, 0x36, 0x35, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38,
-	0x39, 0x36, 0x36, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x38,
-	0x38, 0x35, 0x36, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x36, 0x36, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x36, 0x37, 0x18, 0x22, 0x20,
-	0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x36, 0x37, 0x12,
-	0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x36, 0x38, 0x18, 0x0b, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x36, 0x38, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x36, 0x39, 0x18, 0x23, 0x20,
-	0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x36, 0x39, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x37, 0x30, 0x18, 0x0c, 0x20,
-	0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x37, 0x30, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x37, 0x31, 0x18, 0x0e, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x37, 0x31, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x37, 0x32, 0x18, 0x0f, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x37, 0x32, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x37, 0x33, 0x18, 0x10, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x37, 0x33, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x37, 0x34, 0x18, 0x16, 0x20,
-	0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x37, 0x34, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x37, 0x35, 0x18, 0x12, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x37, 0x35, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x37, 0x36, 0x18, 0x13, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x37, 0x36, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x37, 0x37, 0x18, 0x14, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x37, 0x37, 0x12,
-	0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x37, 0x38, 0x18, 0x19, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x37, 0x38, 0x12,
-	0x46, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x39, 0x37, 0x39, 0x18, 0x1a, 0x20,
-	0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x39, 0x37, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x39, 0x38, 0x30, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x39, 0x38, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x38, 0x39, 0x38, 0x31, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x38, 0x39, 0x38, 0x31, 0x22, 0x2e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x35, 0x35, 0x34, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x35, 0x35, 0x34, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x35, 0x35, 0x34, 0x31, 0x22, 0x95, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x38, 0x38, 0x36, 0x12, 0x55, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x38, 0x38, 0x37, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x33, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x38, 0x38, 0x36, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x38, 0x38,
-	0x37, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x38, 0x38, 0x37, 0x1a, 0xae,
-	0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x38, 0x38, 0x37, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x33, 0x32, 0x18, 0x02, 0x20, 0x02, 0x28,
-	0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x33, 0x32, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x33, 0x33, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x33, 0x33, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x39, 0x33, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x38, 0x35, 0x30, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x33,
-	0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x33, 0x35, 0x18, 0x08,
-	0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x33, 0x35, 0x22,
-	0xc5, 0x04, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x37, 0x34, 0x33, 0x12,
-	0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x35, 0x39, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x37, 0x32, 0x31, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x37, 0x35, 0x39, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x37, 0x36, 0x30, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x37,
-	0x32, 0x33, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x36, 0x30, 0x12, 0x45, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x36, 0x31, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x37, 0x32, 0x33, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x37, 0x36, 0x31, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x36,
-	0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x37, 0x32, 0x35,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x36, 0x32, 0x12, 0x45, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x36, 0x33, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x36, 0x37, 0x32, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37,
-	0x36, 0x33, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x36, 0x34, 0x18,
-	0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x37, 0x33, 0x33, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x36, 0x34, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x37, 0x36, 0x35, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x36, 0x37, 0x33, 0x34, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x36, 0x35,
-	0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x36, 0x36, 0x18, 0x07, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x37, 0x34, 0x32, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x37, 0x36, 0x36, 0x22, 0xd3, 0x03, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x36, 0x37, 0x37, 0x33, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x37, 0x39, 0x34, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x36, 0x37, 0x36, 0x39,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x39, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x39, 0x35, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x39, 0x35, 0x12, 0x44, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x37, 0x39, 0x36, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6e, 0x75, 0x6d, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x39, 0x36, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x39, 0x37, 0x18, 0x0b, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x39, 0x37, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x39, 0x38, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x39, 0x38, 0x12, 0x42, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x39, 0x39, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d,
-	0x36, 0x37, 0x37, 0x34, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x39, 0x39, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x38, 0x30, 0x30, 0x18, 0x05, 0x20, 0x01,
-	0x28, 0x01, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x38, 0x30, 0x30, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x38, 0x30, 0x31, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x38, 0x30, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x38, 0x30, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x38, 0x30, 0x32, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x38, 0x30, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x36, 0x37,
-	0x38, 0x32, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x38, 0x30, 0x33, 0x22, 0xb9, 0x0a,
-	0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x32, 0x32, 0x34, 0x12, 0x4c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x35, 0x35, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e,
-	0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x35, 0x35, 0x12, 0x45, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x35, 0x36, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x38, 0x31, 0x38, 0x34, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32,
-	0x35, 0x36, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x35, 0x37, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x36, 0x36, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x35, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x32, 0x35, 0x38, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x32, 0x35, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x32, 0x35, 0x39, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x32, 0x35, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32,
-	0x36, 0x30, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x32, 0x36, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x36, 0x31,
-	0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x36,
-	0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x36, 0x32, 0x18, 0x08,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x36, 0x32, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x36, 0x33, 0x18, 0x09, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x36, 0x33, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x36, 0x34, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x36, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x36, 0x35, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x36, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x32, 0x36, 0x36, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x32, 0x36, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x32, 0x36, 0x37, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x32, 0x36, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32,
-	0x36, 0x38, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x32, 0x36, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x36, 0x39,
-	0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x36,
-	0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x37, 0x30, 0x18, 0x10,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x37, 0x30, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x37, 0x31, 0x18, 0x11, 0x20, 0x01,
-	0x28, 0x01, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x37, 0x31, 0x12, 0x4c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x37, 0x32, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e,
-	0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x37, 0x32, 0x12, 0x4c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x37, 0x33, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73,
-	0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x37, 0x33, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x32, 0x37, 0x34, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x32, 0x37, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x32, 0x37, 0x35, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x32, 0x37, 0x35, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32,
-	0x37, 0x36, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74,
-	0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x32, 0x37, 0x36, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x37, 0x37,
-	0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x37,
-	0x37, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x37, 0x38, 0x18, 0x18,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x37, 0x38, 0x12,
-	0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x37, 0x39, 0x18, 0x19, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x37, 0x39, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x38, 0x30, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x38, 0x30, 0x12, 0x4c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x38, 0x31, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73,
-	0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x38, 0x31, 0x22, 0xc4, 0x02, 0x0a, 0x0b, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x33, 0x39, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x33, 0x39, 0x35, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x33, 0x39, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x33, 0x39, 0x36, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x33, 0x39, 0x36, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33,
-	0x39, 0x37, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x36,
-	0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x39, 0x37, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x39, 0x38, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x39, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x33, 0x39, 0x39, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x39, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x34, 0x30, 0x30, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x34, 0x30, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x34, 0x30, 0x31, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x34, 0x30, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x30,
-	0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34,
-	0x30, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x30, 0x33, 0x18,
-	0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x30, 0x33,
-	0x22, 0xfd, 0x08, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x31, 0x33, 0x30,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x35, 0x36, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x35, 0x36, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x35, 0x37, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x35, 0x37, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x35, 0x38, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x35, 0x38, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x31, 0x35, 0x39, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x35, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x31, 0x36, 0x30, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x31, 0x36, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x31, 0x36, 0x31, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x31, 0x36, 0x31, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x36,
-	0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31,
-	0x36, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x36, 0x33, 0x18,
-	0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x36, 0x33,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x36, 0x34, 0x18, 0x0b, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x36, 0x34, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x36, 0x35, 0x18, 0x0c, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x36, 0x35, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x36, 0x36, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x36, 0x36, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x31, 0x36, 0x37, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x36, 0x37, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x31, 0x36, 0x38, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45,
-	0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x31, 0x36, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x31, 0x36, 0x39, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x31, 0x36, 0x39, 0x12, 0x44, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x37,
-	0x30, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x37, 0x30, 0x12, 0x44, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x31, 0x37, 0x31, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x37, 0x31,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x37, 0x32, 0x18, 0x13, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x37, 0x32, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x37, 0x33, 0x18, 0x14, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x37, 0x33, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x37, 0x34, 0x18, 0x15, 0x20, 0x01, 0x28, 0x01, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x37, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x31, 0x37, 0x35, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x37, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x31, 0x37, 0x36, 0x18, 0x17, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x31, 0x37, 0x36, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x31, 0x37, 0x37, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70,
-	0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x31, 0x37, 0x37, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x37,
-	0x38, 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31,
-	0x37, 0x38, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x37, 0x39, 0x18,
-	0x1a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x37, 0x39,
-	0x22, 0xfa, 0x03, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x34, 0x37, 0x38,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x38, 0x39, 0x18, 0x07, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x38, 0x39, 0x12, 0x45,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x39, 0x30, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x36, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x34, 0x39, 0x30, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34,
-	0x39, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x34, 0x37,
-	0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x39, 0x31, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x39, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x39, 0x32, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x34, 0x39, 0x33, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x38, 0x34, 0x37, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x39,
-	0x33, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x39, 0x34, 0x18, 0x05,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x34, 0x37, 0x37, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x39, 0x34, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x34, 0x39, 0x35, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x38, 0x34, 0x35, 0x34, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x39, 0x35, 0x12,
-	0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x39, 0x36, 0x18, 0x08, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x39, 0x36, 0x22, 0xc1, 0x04,
-	0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x34, 0x37, 0x39, 0x12, 0x45, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x39, 0x37, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x34, 0x37, 0x35, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x34, 0x39, 0x37, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x39,
-	0x38, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x36, 0x36,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x39, 0x38, 0x12, 0x45, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x39, 0x39, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x38, 0x34, 0x37, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34,
-	0x39, 0x39, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x30, 0x30, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x34, 0x37, 0x36, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x30, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x35, 0x30, 0x31, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x35, 0x30, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x35, 0x30, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x35, 0x30, 0x32, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35,
-	0x30, 0x33, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x36,
-	0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x30, 0x33, 0x12, 0x45, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x30, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x38, 0x34, 0x35, 0x35, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x35, 0x30, 0x34, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x30, 0x35,
-	0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x30,
-	0x35, 0x22, 0x95, 0x02, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x33,
-	0x31, 0x39, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x30,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x30, 0x33, 0x32, 0x35, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x35, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x36, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x36, 0x22, 0x85, 0x01, 0x0a, 0x0b, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x30, 0x31, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x30, 0x31, 0x37, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x34, 0x30, 0x31, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x34, 0x30, 0x31, 0x38, 0x18, 0x02, 0x20, 0x02, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x34, 0x30, 0x31, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x30,
-	0x31, 0x39, 0x18, 0x03, 0x20, 0x02, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34,
-	0x30, 0x31, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x30, 0x32, 0x30,
-	0x18, 0x04, 0x20, 0x02, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x30, 0x32,
-	0x30, 0x22, 0xdf, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x36,
-	0x36, 0x39, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x36, 0x38, 0x31,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x35, 0x35, 0x39,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x36, 0x38, 0x31, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x36, 0x38, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x36, 0x38, 0x32, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x36, 0x38, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x36, 0x38, 0x33, 0x12, 0x45, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x36, 0x38, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e,
-	0x32, 0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e,
-	0x75, 0x6d, 0x31, 0x32, 0x36, 0x37, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x36, 0x38, 0x34, 0x22, 0xce, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x32, 0x38, 0x31, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38,
-	0x33, 0x34, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x33, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38,
-	0x33, 0x35, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x33, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38,
-	0x33, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x33, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38,
-	0x33, 0x37, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x33, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38,
-	0x33, 0x38, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x33, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38,
-	0x33, 0x39, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x33, 0x39, 0x22, 0x8e, 0x02, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x32, 0x38, 0x32, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x38, 0x34, 0x30, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x34, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x38, 0x34, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x34, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x38, 0x34, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x34, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x38, 0x34, 0x33, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x34, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x38, 0x34, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x34, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x38, 0x34, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x34, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x38, 0x34, 0x36, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x34, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x38, 0x34, 0x37, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x34, 0x37, 0x22, 0xae, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x31, 0x32, 0x38, 0x32, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x34, 0x38, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x38, 0x34, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x34, 0x39, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x38, 0x34, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x35, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x38, 0x35, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x35, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x38, 0x35, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x35, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x38, 0x35, 0x32, 0x22, 0xd8, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x32, 0x38, 0x31, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x32, 0x39, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x38, 0x32, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x33, 0x30, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x38, 0x33, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x33, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x38, 0x33, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x33, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x38, 0x33, 0x32, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x33, 0x33, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x32, 0x38, 0x31, 0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x33,
-	0x33, 0x22, 0xf8, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x34,
-	0x37, 0x39, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x38, 0x34,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x34, 0x38, 0x30,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x38, 0x34, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x38, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x38, 0x35, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x38, 0x36, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x38, 0x36, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x38, 0x37, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x38, 0x37, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x38, 0x38, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x38, 0x38, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x38, 0x39, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x38, 0x39, 0x22, 0xae, 0x01, 0x0a,
-	0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x37, 0x32, 0x32, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x35, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x35, 0x32, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x35, 0x33, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x35, 0x33, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x35, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x35, 0x34, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x35, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x35, 0x35, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x35, 0x36, 0x18, 0x04, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x35, 0x36, 0x22, 0x85, 0x04,
-	0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x37, 0x32, 0x34, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x36, 0x31, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x36, 0x31, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x36, 0x32, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x36, 0x32, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x36, 0x33, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x36, 0x33, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x36, 0x34, 0x18, 0x04, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x36, 0x34, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x36, 0x35, 0x18, 0x05, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x36, 0x35, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x36, 0x36, 0x18, 0x06, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x36, 0x36, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x36, 0x37, 0x18, 0x07, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x36, 0x37, 0x12, 0x4e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x36, 0x38, 0x18, 0x08, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x36, 0x38, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x36, 0x39, 0x18, 0x09, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x36, 0x39, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x37, 0x30, 0x18, 0x0a, 0x20, 0x01,
-	0x28, 0x0d, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x37, 0x30, 0x12, 0x45,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x37, 0x37, 0x31, 0x18, 0x0b, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x45, 0x6e, 0x75, 0x6d, 0x31, 0x36, 0x37, 0x32, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x37, 0x37, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36,
-	0x37, 0x37, 0x32, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x37, 0x37, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36,
-	0x37, 0x37, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x36, 0x37, 0x37, 0x33, 0x22, 0x0e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x37, 0x37, 0x32, 0x38, 0x22, 0xed, 0x04, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x32, 0x34, 0x33, 0x35, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x35, 0x35, 0x39, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x34, 0x35, 0x35, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x35, 0x36, 0x30, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x34, 0x35, 0x36, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x35, 0x36, 0x31, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x34, 0x35, 0x36, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x35, 0x36, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x34, 0x35, 0x36, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x35, 0x36, 0x33, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x34, 0x35, 0x36, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x35, 0x36, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x34, 0x35, 0x36, 0x34, 0x12, 0x46, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x35, 0x36, 0x35, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e,
-	0x75, 0x6d, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x36, 0x35, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x36, 0x36, 0x18, 0x06, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x36, 0x36, 0x12, 0x45,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x36, 0x37, 0x18, 0x0c, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x45, 0x6e, 0x75, 0x6d, 0x32, 0x34, 0x33, 0x36, 0x31, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x35, 0x36, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x35, 0x36, 0x38, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x35, 0x36, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x35, 0x36, 0x39, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x35, 0x36, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x35, 0x37, 0x30, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x35, 0x37, 0x30, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x35, 0x37, 0x31, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70,
-	0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x35, 0x37, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x35, 0x37, 0x32, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x35, 0x37, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x35, 0x37, 0x33, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x35, 0x37, 0x33, 0x22, 0xfc, 0x04, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x32, 0x34, 0x33, 0x37, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x35, 0x38, 0x39, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x34, 0x35, 0x38, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x35, 0x39, 0x30, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x34, 0x35, 0x39, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x35, 0x39, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x34, 0x35, 0x39, 0x31, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x35, 0x39, 0x32, 0x18, 0x04, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32,
-	0x34, 0x33, 0x37, 0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x39, 0x32,
-	0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x39, 0x33, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33, 0x31, 0x37, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x39, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x39, 0x34, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x39, 0x34, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x39, 0x35, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x32, 0x34, 0x33, 0x37, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x35, 0x39, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35,
-	0x39, 0x36, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x35, 0x39, 0x36, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35,
-	0x39, 0x37, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74,
-	0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x35, 0x39, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35,
-	0x39, 0x38, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x35, 0x39, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35,
-	0x39, 0x39, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x35, 0x39, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36,
-	0x30, 0x30, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x36, 0x30, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36,
-	0x30, 0x31, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x36, 0x30, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36,
-	0x30, 0x32, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x36, 0x30, 0x32, 0x22, 0xee, 0x04, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x32, 0x34, 0x33, 0x36, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x35, 0x37, 0x34, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x35, 0x37, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x35, 0x37, 0x35, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x35, 0x37, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x35, 0x37, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x35, 0x37, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x35, 0x37, 0x37, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x35, 0x37, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x35, 0x37, 0x38, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x35, 0x37, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x35, 0x37, 0x39, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x35, 0x37, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x35, 0x38, 0x30, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x35, 0x38, 0x30, 0x12, 0x46, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x35, 0x38, 0x31, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75,
-	0x6d, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x38, 0x31, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x38, 0x32, 0x18, 0x0e, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x38, 0x32, 0x12, 0x46, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x35, 0x38, 0x33, 0x18, 0x0f, 0x20, 0x01, 0x28,
-	0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x35, 0x38, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x35, 0x38, 0x34, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x35, 0x38, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x35, 0x38, 0x35, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x35, 0x38, 0x35, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x35, 0x38, 0x36, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70,
-	0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x35, 0x38, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x35, 0x38, 0x37, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x35, 0x38, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x35, 0x38, 0x38, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x35, 0x38, 0x38, 0x42, 0x23, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0xf8, 0x01, 0x01,
-}
-
-var (
-	file_datasets_google_message3_benchmark_message3_3_proto_rawDescOnce sync.Once
-	file_datasets_google_message3_benchmark_message3_3_proto_rawDescData = file_datasets_google_message3_benchmark_message3_3_proto_rawDesc
-)
-
-func file_datasets_google_message3_benchmark_message3_3_proto_rawDescGZIP() []byte {
-	file_datasets_google_message3_benchmark_message3_3_proto_rawDescOnce.Do(func() {
-		file_datasets_google_message3_benchmark_message3_3_proto_rawDescData = protoimpl.X.CompressGZIP(file_datasets_google_message3_benchmark_message3_3_proto_rawDescData)
-	})
-	return file_datasets_google_message3_benchmark_message3_3_proto_rawDescData
-}
-
-var file_datasets_google_message3_benchmark_message3_3_proto_msgTypes = make([]protoimpl.MessageInfo, 37)
-var file_datasets_google_message3_benchmark_message3_3_proto_goTypes = []interface{}{
-	(*Message35546)(nil),              // 0: benchmarks.google_message3.Message35546
-	(*Message2356)(nil),               // 1: benchmarks.google_message3.Message2356
-	(*Message7029)(nil),               // 2: benchmarks.google_message3.Message7029
-	(*Message35538)(nil),              // 3: benchmarks.google_message3.Message35538
-	(*Message18921)(nil),              // 4: benchmarks.google_message3.Message18921
-	(*Message35540)(nil),              // 5: benchmarks.google_message3.Message35540
-	(*Message3886)(nil),               // 6: benchmarks.google_message3.Message3886
-	(*Message6743)(nil),               // 7: benchmarks.google_message3.Message6743
-	(*Message6773)(nil),               // 8: benchmarks.google_message3.Message6773
-	(*Message8224)(nil),               // 9: benchmarks.google_message3.Message8224
-	(*Message8392)(nil),               // 10: benchmarks.google_message3.Message8392
-	(*Message8130)(nil),               // 11: benchmarks.google_message3.Message8130
-	(*Message8478)(nil),               // 12: benchmarks.google_message3.Message8478
-	(*Message8479)(nil),               // 13: benchmarks.google_message3.Message8479
-	(*Message10319)(nil),              // 14: benchmarks.google_message3.Message10319
-	(*Message4016)(nil),               // 15: benchmarks.google_message3.Message4016
-	(*Message12669)(nil),              // 16: benchmarks.google_message3.Message12669
-	(*Message12819)(nil),              // 17: benchmarks.google_message3.Message12819
-	(*Message12820)(nil),              // 18: benchmarks.google_message3.Message12820
-	(*Message12821)(nil),              // 19: benchmarks.google_message3.Message12821
-	(*Message12818)(nil),              // 20: benchmarks.google_message3.Message12818
-	(*Message16479)(nil),              // 21: benchmarks.google_message3.Message16479
-	(*Message16722)(nil),              // 22: benchmarks.google_message3.Message16722
-	(*Message16724)(nil),              // 23: benchmarks.google_message3.Message16724
-	(*Message17728)(nil),              // 24: benchmarks.google_message3.Message17728
-	(*Message24356)(nil),              // 25: benchmarks.google_message3.Message24356
-	(*Message24376)(nil),              // 26: benchmarks.google_message3.Message24376
-	(*Message24366)(nil),              // 27: benchmarks.google_message3.Message24366
-	(*Message35546_Message35547)(nil), // 28: benchmarks.google_message3.Message35546.Message35547
-	(*Message35546_Message35548)(nil), // 29: benchmarks.google_message3.Message35546.Message35548
-	(*Message2356_Message2357)(nil),   // 30: benchmarks.google_message3.Message2356.Message2357
-	(*Message2356_Message2358)(nil),   // 31: benchmarks.google_message3.Message2356.Message2358
-	(*Message2356_Message2359)(nil),   // 32: benchmarks.google_message3.Message2356.Message2359
-	(*Message7029_Message7030)(nil),   // 33: benchmarks.google_message3.Message7029.Message7030
-	(*Message7029_Message7031)(nil),   // 34: benchmarks.google_message3.Message7029.Message7031
-	(*Message18921_Message18922)(nil), // 35: benchmarks.google_message3.Message18921.Message18922
-	(*Message3886_Message3887)(nil),   // 36: benchmarks.google_message3.Message3886.Message3887
-	(*Message1374)(nil),               // 37: benchmarks.google_message3.Message1374
-	(*UnusedEmptyMessage)(nil),        // 38: benchmarks.google_message3.UnusedEmptyMessage
-	(*Message18943)(nil),              // 39: benchmarks.google_message3.Message18943
-	(*Message18944)(nil),              // 40: benchmarks.google_message3.Message18944
-	(*Message6721)(nil),               // 41: benchmarks.google_message3.Message6721
-	(*Message6723)(nil),               // 42: benchmarks.google_message3.Message6723
-	(*Message6725)(nil),               // 43: benchmarks.google_message3.Message6725
-	(*Message6726)(nil),               // 44: benchmarks.google_message3.Message6726
-	(*Message6733)(nil),               // 45: benchmarks.google_message3.Message6733
-	(*Message6734)(nil),               // 46: benchmarks.google_message3.Message6734
-	(*Message6742)(nil),               // 47: benchmarks.google_message3.Message6742
-	(Enum6769)(0),                     // 48: benchmarks.google_message3.Enum6769
-	(UnusedEnum)(0),                   // 49: benchmarks.google_message3.UnusedEnum
-	(Enum6774)(0),                     // 50: benchmarks.google_message3.Enum6774
-	(Enum6782)(0),                     // 51: benchmarks.google_message3.Enum6782
-	(*Message8184)(nil),               // 52: benchmarks.google_message3.Message8184
-	(*Message7966)(nil),               // 53: benchmarks.google_message3.Message7966
-	(*Message8476)(nil),               // 54: benchmarks.google_message3.Message8476
-	(*Message8477)(nil),               // 55: benchmarks.google_message3.Message8477
-	(*Message8454)(nil),               // 56: benchmarks.google_message3.Message8454
-	(*Message8475)(nil),               // 57: benchmarks.google_message3.Message8475
-	(*Message8455)(nil),               // 58: benchmarks.google_message3.Message8455
-	(Enum10325)(0),                    // 59: benchmarks.google_message3.Enum10325
-	(*Message12559)(nil),              // 60: benchmarks.google_message3.Message12559
-	(Enum12670)(0),                    // 61: benchmarks.google_message3.Enum12670
-	(*Message12817)(nil),              // 62: benchmarks.google_message3.Message12817
-	(*Message16480)(nil),              // 63: benchmarks.google_message3.Message16480
-	(Enum16728)(0),                    // 64: benchmarks.google_message3.Enum16728
-	(Enum24361)(0),                    // 65: benchmarks.google_message3.Enum24361
-	(*Message24377)(nil),              // 66: benchmarks.google_message3.Message24377
-	(*Message24317)(nil),              // 67: benchmarks.google_message3.Message24317
-	(*Message24378)(nil),              // 68: benchmarks.google_message3.Message24378
-	(*Message18856)(nil),              // 69: benchmarks.google_message3.Message18856
-	(*Message3850)(nil),               // 70: benchmarks.google_message3.Message3850
-}
-var file_datasets_google_message3_benchmark_message3_3_proto_depIdxs = []int32{
-	28, // 0: benchmarks.google_message3.Message35546.message35547:type_name -> benchmarks.google_message3.Message35546.Message35547
-	29, // 1: benchmarks.google_message3.Message35546.message35548:type_name -> benchmarks.google_message3.Message35546.Message35548
-	37, // 2: benchmarks.google_message3.Message2356.field2368:type_name -> benchmarks.google_message3.Message1374
-	30, // 3: benchmarks.google_message3.Message2356.message2357:type_name -> benchmarks.google_message3.Message2356.Message2357
-	31, // 4: benchmarks.google_message3.Message2356.message2358:type_name -> benchmarks.google_message3.Message2356.Message2358
-	32, // 5: benchmarks.google_message3.Message2356.message2359:type_name -> benchmarks.google_message3.Message2356.Message2359
-	38, // 6: benchmarks.google_message3.Message2356.field2393:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	38, // 7: benchmarks.google_message3.Message2356.field2394:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	38, // 8: benchmarks.google_message3.Message2356.field2395:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	38, // 9: benchmarks.google_message3.Message2356.field2396:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	33, // 10: benchmarks.google_message3.Message7029.message7030:type_name -> benchmarks.google_message3.Message7029.Message7030
-	34, // 11: benchmarks.google_message3.Message7029.message7031:type_name -> benchmarks.google_message3.Message7029.Message7031
-	38, // 12: benchmarks.google_message3.Message7029.field7219:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	38, // 13: benchmarks.google_message3.Message7029.field7223:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	38, // 14: benchmarks.google_message3.Message18921.field18952:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	35, // 15: benchmarks.google_message3.Message18921.message18922:type_name -> benchmarks.google_message3.Message18921.Message18922
-	38, // 16: benchmarks.google_message3.Message18921.field18954:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	39, // 17: benchmarks.google_message3.Message18921.field18955:type_name -> benchmarks.google_message3.Message18943
-	40, // 18: benchmarks.google_message3.Message18921.field18956:type_name -> benchmarks.google_message3.Message18944
-	38, // 19: benchmarks.google_message3.Message18921.field18957:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	36, // 20: benchmarks.google_message3.Message3886.message3887:type_name -> benchmarks.google_message3.Message3886.Message3887
-	41, // 21: benchmarks.google_message3.Message6743.field6759:type_name -> benchmarks.google_message3.Message6721
-	42, // 22: benchmarks.google_message3.Message6743.field6760:type_name -> benchmarks.google_message3.Message6723
-	42, // 23: benchmarks.google_message3.Message6743.field6761:type_name -> benchmarks.google_message3.Message6723
-	43, // 24: benchmarks.google_message3.Message6743.field6762:type_name -> benchmarks.google_message3.Message6725
-	44, // 25: benchmarks.google_message3.Message6743.field6763:type_name -> benchmarks.google_message3.Message6726
-	45, // 26: benchmarks.google_message3.Message6743.field6764:type_name -> benchmarks.google_message3.Message6733
-	46, // 27: benchmarks.google_message3.Message6743.field6765:type_name -> benchmarks.google_message3.Message6734
-	47, // 28: benchmarks.google_message3.Message6743.field6766:type_name -> benchmarks.google_message3.Message6742
-	48, // 29: benchmarks.google_message3.Message6773.field6794:type_name -> benchmarks.google_message3.Enum6769
-	49, // 30: benchmarks.google_message3.Message6773.field6796:type_name -> benchmarks.google_message3.UnusedEnum
-	50, // 31: benchmarks.google_message3.Message6773.field6799:type_name -> benchmarks.google_message3.Enum6774
-	51, // 32: benchmarks.google_message3.Message6773.field6803:type_name -> benchmarks.google_message3.Enum6782
-	38, // 33: benchmarks.google_message3.Message8224.field8255:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	52, // 34: benchmarks.google_message3.Message8224.field8256:type_name -> benchmarks.google_message3.Message8184
-	53, // 35: benchmarks.google_message3.Message8224.field8257:type_name -> benchmarks.google_message3.Message7966
-	38, // 36: benchmarks.google_message3.Message8224.field8272:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	38, // 37: benchmarks.google_message3.Message8224.field8273:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	38, // 38: benchmarks.google_message3.Message8224.field8274:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	38, // 39: benchmarks.google_message3.Message8224.field8276:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	38, // 40: benchmarks.google_message3.Message8224.field8277:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	38, // 41: benchmarks.google_message3.Message8224.field8278:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	38, // 42: benchmarks.google_message3.Message8224.field8279:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	38, // 43: benchmarks.google_message3.Message8224.field8281:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	53, // 44: benchmarks.google_message3.Message8392.field8397:type_name -> benchmarks.google_message3.Message7966
-	38, // 45: benchmarks.google_message3.Message8130.field8159:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	38, // 46: benchmarks.google_message3.Message8130.field8162:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	38, // 47: benchmarks.google_message3.Message8130.field8167:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	38, // 48: benchmarks.google_message3.Message8130.field8168:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	49, // 49: benchmarks.google_message3.Message8130.field8170:type_name -> benchmarks.google_message3.UnusedEnum
-	49, // 50: benchmarks.google_message3.Message8130.field8171:type_name -> benchmarks.google_message3.UnusedEnum
-	38, // 51: benchmarks.google_message3.Message8130.field8177:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	38, // 52: benchmarks.google_message3.Message8130.field8178:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	38, // 53: benchmarks.google_message3.Message8130.field8179:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	53, // 54: benchmarks.google_message3.Message8478.field8490:type_name -> benchmarks.google_message3.Message7966
-	54, // 55: benchmarks.google_message3.Message8478.field8491:type_name -> benchmarks.google_message3.Message8476
-	54, // 56: benchmarks.google_message3.Message8478.field8493:type_name -> benchmarks.google_message3.Message8476
-	55, // 57: benchmarks.google_message3.Message8478.field8494:type_name -> benchmarks.google_message3.Message8477
-	56, // 58: benchmarks.google_message3.Message8478.field8495:type_name -> benchmarks.google_message3.Message8454
-	38, // 59: benchmarks.google_message3.Message8478.field8496:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	57, // 60: benchmarks.google_message3.Message8479.field8497:type_name -> benchmarks.google_message3.Message8475
-	53, // 61: benchmarks.google_message3.Message8479.field8498:type_name -> benchmarks.google_message3.Message7966
-	54, // 62: benchmarks.google_message3.Message8479.field8499:type_name -> benchmarks.google_message3.Message8476
-	54, // 63: benchmarks.google_message3.Message8479.field8500:type_name -> benchmarks.google_message3.Message8476
-	53, // 64: benchmarks.google_message3.Message8479.field8503:type_name -> benchmarks.google_message3.Message7966
-	58, // 65: benchmarks.google_message3.Message8479.field8504:type_name -> benchmarks.google_message3.Message8455
-	38, // 66: benchmarks.google_message3.Message8479.field8505:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	59, // 67: benchmarks.google_message3.Message10319.field10340:type_name -> benchmarks.google_message3.Enum10325
-	60, // 68: benchmarks.google_message3.Message12669.field12681:type_name -> benchmarks.google_message3.Message12559
-	61, // 69: benchmarks.google_message3.Message12669.field12684:type_name -> benchmarks.google_message3.Enum12670
-	62, // 70: benchmarks.google_message3.Message12818.field12833:type_name -> benchmarks.google_message3.Message12817
-	63, // 71: benchmarks.google_message3.Message16479.field16484:type_name -> benchmarks.google_message3.Message16480
-	38, // 72: benchmarks.google_message3.Message16724.field16768:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	64, // 73: benchmarks.google_message3.Message16724.field16771:type_name -> benchmarks.google_message3.Enum16728
-	49, // 74: benchmarks.google_message3.Message24356.field24565:type_name -> benchmarks.google_message3.UnusedEnum
-	65, // 75: benchmarks.google_message3.Message24356.field24567:type_name -> benchmarks.google_message3.Enum24361
-	38, // 76: benchmarks.google_message3.Message24356.field24571:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	66, // 77: benchmarks.google_message3.Message24376.field24592:type_name -> benchmarks.google_message3.Message24377
-	67, // 78: benchmarks.google_message3.Message24376.field24593:type_name -> benchmarks.google_message3.Message24317
-	68, // 79: benchmarks.google_message3.Message24376.field24595:type_name -> benchmarks.google_message3.Message24378
-	38, // 80: benchmarks.google_message3.Message24376.field24597:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	49, // 81: benchmarks.google_message3.Message24366.field24581:type_name -> benchmarks.google_message3.UnusedEnum
-	49, // 82: benchmarks.google_message3.Message24366.field24583:type_name -> benchmarks.google_message3.UnusedEnum
-	38, // 83: benchmarks.google_message3.Message24366.field24586:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	69, // 84: benchmarks.google_message3.Message18921.Message18922.field18966:type_name -> benchmarks.google_message3.Message18856
-	38, // 85: benchmarks.google_message3.Message18921.Message18922.field18968:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	38, // 86: benchmarks.google_message3.Message18921.Message18922.field18978:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	49, // 87: benchmarks.google_message3.Message18921.Message18922.field18979:type_name -> benchmarks.google_message3.UnusedEnum
-	70, // 88: benchmarks.google_message3.Message3886.Message3887.field3934:type_name -> benchmarks.google_message3.Message3850
-	89, // [89:89] is the sub-list for method output_type
-	89, // [89:89] is the sub-list for method input_type
-	89, // [89:89] is the sub-list for extension type_name
-	89, // [89:89] is the sub-list for extension extendee
-	0,  // [0:89] is the sub-list for field type_name
-}
-
-func init() { file_datasets_google_message3_benchmark_message3_3_proto_init() }
-func file_datasets_google_message3_benchmark_message3_3_proto_init() {
-	if File_datasets_google_message3_benchmark_message3_3_proto != nil {
-		return
-	}
-	file_datasets_google_message3_benchmark_message3_4_proto_init()
-	file_datasets_google_message3_benchmark_message3_5_proto_init()
-	file_datasets_google_message3_benchmark_message3_7_proto_init()
-	file_datasets_google_message3_benchmark_message3_8_proto_init()
-	if !protoimpl.UnsafeEnabled {
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message35546); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message2356); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7029); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message35538); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message18921); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message35540); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3886); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6743); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6773); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8224); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8392); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8130); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8478); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8479); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10319); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message4016); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12669); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12819); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12820); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12821); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12818); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message16479); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message16722); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message16724); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message17728); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message24356); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message24376); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message24366); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message35546_Message35547); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message35546_Message35548); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message2356_Message2357); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message2356_Message2358); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message2356_Message2359); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7029_Message7030); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7029_Message7031); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message18921_Message18922); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_3_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3886_Message3887); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_datasets_google_message3_benchmark_message3_3_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   37,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_datasets_google_message3_benchmark_message3_3_proto_goTypes,
-		DependencyIndexes: file_datasets_google_message3_benchmark_message3_3_proto_depIdxs,
-		MessageInfos:      file_datasets_google_message3_benchmark_message3_3_proto_msgTypes,
-	}.Build()
-	File_datasets_google_message3_benchmark_message3_3_proto = out.File
-	file_datasets_google_message3_benchmark_message3_3_proto_rawDesc = nil
-	file_datasets_google_message3_benchmark_message3_3_proto_goTypes = nil
-	file_datasets_google_message3_benchmark_message3_3_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_4.pb.go b/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_4.pb.go
deleted file mode 100644
index 7c8d69b..0000000
--- a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_4.pb.go
+++ /dev/null
@@ -1,6693 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// LINT: ALLOW_GROUPS
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: datasets/google_message3/benchmark_message3_4.proto
-
-package google_message3
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Message24346 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message24346) Reset() {
-	*x = Message24346{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message24346) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message24346) ProtoMessage() {}
-
-func (x *Message24346) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message24346.ProtoReflect.Descriptor instead.
-func (*Message24346) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{0}
-}
-
-type Message24401 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field24679 *Message24400 `protobuf:"bytes,1,opt,name=field24679" json:"field24679,omitempty"`
-}
-
-func (x *Message24401) Reset() {
-	*x = Message24401{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message24401) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message24401) ProtoMessage() {}
-
-func (x *Message24401) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message24401.ProtoReflect.Descriptor instead.
-func (*Message24401) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Message24401) GetField24679() *Message24400 {
-	if x != nil {
-		return x.Field24679
-	}
-	return nil
-}
-
-type Message24402 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field24680 *Message24400 `protobuf:"bytes,1,opt,name=field24680" json:"field24680,omitempty"`
-}
-
-func (x *Message24402) Reset() {
-	*x = Message24402{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message24402) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message24402) ProtoMessage() {}
-
-func (x *Message24402) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message24402.ProtoReflect.Descriptor instead.
-func (*Message24402) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Message24402) GetField24680() *Message24400 {
-	if x != nil {
-		return x.Field24680
-	}
-	return nil
-}
-
-type Message24379 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field24603 *string               `protobuf:"bytes,1,opt,name=field24603" json:"field24603,omitempty"`
-	Field24604 *string               `protobuf:"bytes,2,opt,name=field24604" json:"field24604,omitempty"`
-	Field24605 *string               `protobuf:"bytes,3,opt,name=field24605" json:"field24605,omitempty"`
-	Field24606 *Message24380         `protobuf:"bytes,4,req,name=field24606" json:"field24606,omitempty"`
-	Field24607 *UnusedEmptyMessage   `protobuf:"bytes,5,opt,name=field24607" json:"field24607,omitempty"`
-	Field24608 *string               `protobuf:"bytes,6,opt,name=field24608" json:"field24608,omitempty"`
-	Field24609 *Message24381         `protobuf:"bytes,7,opt,name=field24609" json:"field24609,omitempty"`
-	Field24610 []string              `protobuf:"bytes,8,rep,name=field24610" json:"field24610,omitempty"`
-	Field24611 []*UnusedEmptyMessage `protobuf:"bytes,17,rep,name=field24611" json:"field24611,omitempty"`
-	Field24612 []string              `protobuf:"bytes,9,rep,name=field24612" json:"field24612,omitempty"`
-	Field24613 []string              `protobuf:"bytes,10,rep,name=field24613" json:"field24613,omitempty"`
-	Field24614 []string              `protobuf:"bytes,11,rep,name=field24614" json:"field24614,omitempty"`
-	Field24615 *string               `protobuf:"bytes,14,opt,name=field24615" json:"field24615,omitempty"`
-	Field24616 *string               `protobuf:"bytes,12,opt,name=field24616" json:"field24616,omitempty"`
-	Field24617 *string               `protobuf:"bytes,16,opt,name=field24617" json:"field24617,omitempty"`
-	Field24618 []*UnusedEmptyMessage `protobuf:"bytes,13,rep,name=field24618" json:"field24618,omitempty"`
-	Field24619 []string              `protobuf:"bytes,15,rep,name=field24619" json:"field24619,omitempty"`
-	Field24620 []string              `protobuf:"bytes,18,rep,name=field24620" json:"field24620,omitempty"`
-}
-
-func (x *Message24379) Reset() {
-	*x = Message24379{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message24379) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message24379) ProtoMessage() {}
-
-func (x *Message24379) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message24379.ProtoReflect.Descriptor instead.
-func (*Message24379) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Message24379) GetField24603() string {
-	if x != nil && x.Field24603 != nil {
-		return *x.Field24603
-	}
-	return ""
-}
-
-func (x *Message24379) GetField24604() string {
-	if x != nil && x.Field24604 != nil {
-		return *x.Field24604
-	}
-	return ""
-}
-
-func (x *Message24379) GetField24605() string {
-	if x != nil && x.Field24605 != nil {
-		return *x.Field24605
-	}
-	return ""
-}
-
-func (x *Message24379) GetField24606() *Message24380 {
-	if x != nil {
-		return x.Field24606
-	}
-	return nil
-}
-
-func (x *Message24379) GetField24607() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24607
-	}
-	return nil
-}
-
-func (x *Message24379) GetField24608() string {
-	if x != nil && x.Field24608 != nil {
-		return *x.Field24608
-	}
-	return ""
-}
-
-func (x *Message24379) GetField24609() *Message24381 {
-	if x != nil {
-		return x.Field24609
-	}
-	return nil
-}
-
-func (x *Message24379) GetField24610() []string {
-	if x != nil {
-		return x.Field24610
-	}
-	return nil
-}
-
-func (x *Message24379) GetField24611() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24611
-	}
-	return nil
-}
-
-func (x *Message24379) GetField24612() []string {
-	if x != nil {
-		return x.Field24612
-	}
-	return nil
-}
-
-func (x *Message24379) GetField24613() []string {
-	if x != nil {
-		return x.Field24613
-	}
-	return nil
-}
-
-func (x *Message24379) GetField24614() []string {
-	if x != nil {
-		return x.Field24614
-	}
-	return nil
-}
-
-func (x *Message24379) GetField24615() string {
-	if x != nil && x.Field24615 != nil {
-		return *x.Field24615
-	}
-	return ""
-}
-
-func (x *Message24379) GetField24616() string {
-	if x != nil && x.Field24616 != nil {
-		return *x.Field24616
-	}
-	return ""
-}
-
-func (x *Message24379) GetField24617() string {
-	if x != nil && x.Field24617 != nil {
-		return *x.Field24617
-	}
-	return ""
-}
-
-func (x *Message24379) GetField24618() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24618
-	}
-	return nil
-}
-
-func (x *Message24379) GetField24619() []string {
-	if x != nil {
-		return x.Field24619
-	}
-	return nil
-}
-
-func (x *Message24379) GetField24620() []string {
-	if x != nil {
-		return x.Field24620
-	}
-	return nil
-}
-
-type Message27358 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field27415 *int32 `protobuf:"varint,1,opt,name=field27415" json:"field27415,omitempty"`
-	Field27416 *int32 `protobuf:"varint,2,opt,name=field27416" json:"field27416,omitempty"`
-}
-
-func (x *Message27358) Reset() {
-	*x = Message27358{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message27358) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message27358) ProtoMessage() {}
-
-func (x *Message27358) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message27358.ProtoReflect.Descriptor instead.
-func (*Message27358) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Message27358) GetField27415() int32 {
-	if x != nil && x.Field27415 != nil {
-		return *x.Field27415
-	}
-	return 0
-}
-
-func (x *Message27358) GetField27416() int32 {
-	if x != nil && x.Field27416 != nil {
-		return *x.Field27416
-	}
-	return 0
-}
-
-type Message34381 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field34398 *string             `protobuf:"bytes,1,opt,name=field34398" json:"field34398,omitempty"`
-	Field34399 *UnusedEmptyMessage `protobuf:"bytes,2,opt,name=field34399" json:"field34399,omitempty"`
-	Field34400 *UnusedEmptyMessage `protobuf:"bytes,3,opt,name=field34400" json:"field34400,omitempty"`
-	Field34401 *UnusedEmptyMessage `protobuf:"bytes,4,opt,name=field34401" json:"field34401,omitempty"`
-	Field34402 *UnusedEmptyMessage `protobuf:"bytes,5,opt,name=field34402" json:"field34402,omitempty"`
-	Field34403 *bool               `protobuf:"varint,6,opt,name=field34403" json:"field34403,omitempty"`
-	Field34404 *bool               `protobuf:"varint,7,opt,name=field34404" json:"field34404,omitempty"`
-	Field34405 *UnusedEmptyMessage `protobuf:"bytes,8,opt,name=field34405" json:"field34405,omitempty"`
-	Field34406 *bool               `protobuf:"varint,9,opt,name=field34406" json:"field34406,omitempty"`
-	Field34407 *UnusedEmptyMessage `protobuf:"bytes,10,opt,name=field34407" json:"field34407,omitempty"`
-}
-
-func (x *Message34381) Reset() {
-	*x = Message34381{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message34381) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message34381) ProtoMessage() {}
-
-func (x *Message34381) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message34381.ProtoReflect.Descriptor instead.
-func (*Message34381) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *Message34381) GetField34398() string {
-	if x != nil && x.Field34398 != nil {
-		return *x.Field34398
-	}
-	return ""
-}
-
-func (x *Message34381) GetField34399() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field34399
-	}
-	return nil
-}
-
-func (x *Message34381) GetField34400() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field34400
-	}
-	return nil
-}
-
-func (x *Message34381) GetField34401() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field34401
-	}
-	return nil
-}
-
-func (x *Message34381) GetField34402() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field34402
-	}
-	return nil
-}
-
-func (x *Message34381) GetField34403() bool {
-	if x != nil && x.Field34403 != nil {
-		return *x.Field34403
-	}
-	return false
-}
-
-func (x *Message34381) GetField34404() bool {
-	if x != nil && x.Field34404 != nil {
-		return *x.Field34404
-	}
-	return false
-}
-
-func (x *Message34381) GetField34405() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field34405
-	}
-	return nil
-}
-
-func (x *Message34381) GetField34406() bool {
-	if x != nil && x.Field34406 != nil {
-		return *x.Field34406
-	}
-	return false
-}
-
-func (x *Message34381) GetField34407() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field34407
-	}
-	return nil
-}
-
-type Message34619 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field34641 *float64            `protobuf:"fixed64,1,opt,name=field34641" json:"field34641,omitempty"`
-	Field34642 *float64            `protobuf:"fixed64,2,opt,name=field34642" json:"field34642,omitempty"`
-	Field34643 *float64            `protobuf:"fixed64,3,opt,name=field34643" json:"field34643,omitempty"`
-	Field34644 *float64            `protobuf:"fixed64,4,opt,name=field34644" json:"field34644,omitempty"`
-	Field34645 *float64            `protobuf:"fixed64,11,opt,name=field34645" json:"field34645,omitempty"`
-	Field34646 *float64            `protobuf:"fixed64,5,opt,name=field34646" json:"field34646,omitempty"`
-	Field34647 *UnusedEmptyMessage `protobuf:"bytes,100,opt,name=field34647" json:"field34647,omitempty"`
-}
-
-func (x *Message34619) Reset() {
-	*x = Message34619{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message34619) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message34619) ProtoMessage() {}
-
-func (x *Message34619) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message34619.ProtoReflect.Descriptor instead.
-func (*Message34619) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *Message34619) GetField34641() float64 {
-	if x != nil && x.Field34641 != nil {
-		return *x.Field34641
-	}
-	return 0
-}
-
-func (x *Message34619) GetField34642() float64 {
-	if x != nil && x.Field34642 != nil {
-		return *x.Field34642
-	}
-	return 0
-}
-
-func (x *Message34619) GetField34643() float64 {
-	if x != nil && x.Field34643 != nil {
-		return *x.Field34643
-	}
-	return 0
-}
-
-func (x *Message34619) GetField34644() float64 {
-	if x != nil && x.Field34644 != nil {
-		return *x.Field34644
-	}
-	return 0
-}
-
-func (x *Message34619) GetField34645() float64 {
-	if x != nil && x.Field34645 != nil {
-		return *x.Field34645
-	}
-	return 0
-}
-
-func (x *Message34619) GetField34646() float64 {
-	if x != nil && x.Field34646 != nil {
-		return *x.Field34646
-	}
-	return 0
-}
-
-func (x *Message34619) GetField34647() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field34647
-	}
-	return nil
-}
-
-type Message730 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	Field897 *string               `protobuf:"bytes,19,opt,name=field897" json:"field897,omitempty"`
-	Field898 []string              `protobuf:"bytes,27,rep,name=field898" json:"field898,omitempty"`
-	Field899 []string              `protobuf:"bytes,28,rep,name=field899" json:"field899,omitempty"`
-	Field900 []string              `protobuf:"bytes,21,rep,name=field900" json:"field900,omitempty"`
-	Field901 *string               `protobuf:"bytes,30,opt,name=field901" json:"field901,omitempty"`
-	Field902 []uint32              `protobuf:"varint,20,rep,name=field902" json:"field902,omitempty"`
-	Field903 []uint32              `protobuf:"varint,32,rep,name=field903" json:"field903,omitempty"`
-	Field904 []string              `protobuf:"bytes,16,rep,name=field904" json:"field904,omitempty"`
-	Field905 []*Message697         `protobuf:"bytes,6,rep,name=field905" json:"field905,omitempty"`
-	Field906 []*Message704         `protobuf:"bytes,7,rep,name=field906" json:"field906,omitempty"`
-	Field907 []string              `protobuf:"bytes,18,rep,name=field907" json:"field907,omitempty"`
-	Field908 []*Message703         `protobuf:"bytes,8,rep,name=field908" json:"field908,omitempty"`
-	Field909 []string              `protobuf:"bytes,9,rep,name=field909" json:"field909,omitempty"`
-	Field910 *Message716           `protobuf:"bytes,10,opt,name=field910" json:"field910,omitempty"`
-	Field911 *Message718           `protobuf:"bytes,11,opt,name=field911" json:"field911,omitempty"`
-	Field912 *bool                 `protobuf:"varint,14,opt,name=field912" json:"field912,omitempty"`
-	Field913 []*Message715         `protobuf:"bytes,4,rep,name=field913" json:"field913,omitempty"`
-	Field914 []string              `protobuf:"bytes,17,rep,name=field914" json:"field914,omitempty"`
-	Field915 []string              `protobuf:"bytes,23,rep,name=field915" json:"field915,omitempty"`
-	Field916 []*Message719         `protobuf:"bytes,24,rep,name=field916" json:"field916,omitempty"`
-	Field917 []*Message728         `protobuf:"bytes,26,rep,name=field917" json:"field917,omitempty"`
-	Field918 []*Message702         `protobuf:"bytes,35,rep,name=field918" json:"field918,omitempty"`
-	Field919 *string               `protobuf:"bytes,36,opt,name=field919" json:"field919,omitempty"`
-	Field920 []string              `protobuf:"bytes,37,rep,name=field920" json:"field920,omitempty"`
-	Field921 *int64                `protobuf:"varint,38,opt,name=field921" json:"field921,omitempty"`
-	Field922 []*UnusedEmptyMessage `protobuf:"bytes,39,rep,name=field922" json:"field922,omitempty"`
-	Field923 []*UnusedEmptyMessage `protobuf:"bytes,1,rep,name=field923" json:"field923,omitempty"`
-	Field924 *UnusedEmptyMessage   `protobuf:"bytes,2,opt,name=field924" json:"field924,omitempty"`
-	Field925 *UnusedEmptyMessage   `protobuf:"bytes,3,opt,name=field925" json:"field925,omitempty"`
-	Field926 *UnusedEmptyMessage   `protobuf:"bytes,5,opt,name=field926" json:"field926,omitempty"`
-	Field927 *UnusedEmptyMessage   `protobuf:"bytes,13,opt,name=field927" json:"field927,omitempty"`
-	Field928 []string              `protobuf:"bytes,22,rep,name=field928" json:"field928,omitempty"`
-	Field929 []byte                `protobuf:"bytes,31,opt,name=field929" json:"field929,omitempty"`
-}
-
-func (x *Message730) Reset() {
-	*x = Message730{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message730) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message730) ProtoMessage() {}
-
-func (x *Message730) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message730.ProtoReflect.Descriptor instead.
-func (*Message730) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *Message730) GetField897() string {
-	if x != nil && x.Field897 != nil {
-		return *x.Field897
-	}
-	return ""
-}
-
-func (x *Message730) GetField898() []string {
-	if x != nil {
-		return x.Field898
-	}
-	return nil
-}
-
-func (x *Message730) GetField899() []string {
-	if x != nil {
-		return x.Field899
-	}
-	return nil
-}
-
-func (x *Message730) GetField900() []string {
-	if x != nil {
-		return x.Field900
-	}
-	return nil
-}
-
-func (x *Message730) GetField901() string {
-	if x != nil && x.Field901 != nil {
-		return *x.Field901
-	}
-	return ""
-}
-
-func (x *Message730) GetField902() []uint32 {
-	if x != nil {
-		return x.Field902
-	}
-	return nil
-}
-
-func (x *Message730) GetField903() []uint32 {
-	if x != nil {
-		return x.Field903
-	}
-	return nil
-}
-
-func (x *Message730) GetField904() []string {
-	if x != nil {
-		return x.Field904
-	}
-	return nil
-}
-
-func (x *Message730) GetField905() []*Message697 {
-	if x != nil {
-		return x.Field905
-	}
-	return nil
-}
-
-func (x *Message730) GetField906() []*Message704 {
-	if x != nil {
-		return x.Field906
-	}
-	return nil
-}
-
-func (x *Message730) GetField907() []string {
-	if x != nil {
-		return x.Field907
-	}
-	return nil
-}
-
-func (x *Message730) GetField908() []*Message703 {
-	if x != nil {
-		return x.Field908
-	}
-	return nil
-}
-
-func (x *Message730) GetField909() []string {
-	if x != nil {
-		return x.Field909
-	}
-	return nil
-}
-
-func (x *Message730) GetField910() *Message716 {
-	if x != nil {
-		return x.Field910
-	}
-	return nil
-}
-
-func (x *Message730) GetField911() *Message718 {
-	if x != nil {
-		return x.Field911
-	}
-	return nil
-}
-
-func (x *Message730) GetField912() bool {
-	if x != nil && x.Field912 != nil {
-		return *x.Field912
-	}
-	return false
-}
-
-func (x *Message730) GetField913() []*Message715 {
-	if x != nil {
-		return x.Field913
-	}
-	return nil
-}
-
-func (x *Message730) GetField914() []string {
-	if x != nil {
-		return x.Field914
-	}
-	return nil
-}
-
-func (x *Message730) GetField915() []string {
-	if x != nil {
-		return x.Field915
-	}
-	return nil
-}
-
-func (x *Message730) GetField916() []*Message719 {
-	if x != nil {
-		return x.Field916
-	}
-	return nil
-}
-
-func (x *Message730) GetField917() []*Message728 {
-	if x != nil {
-		return x.Field917
-	}
-	return nil
-}
-
-func (x *Message730) GetField918() []*Message702 {
-	if x != nil {
-		return x.Field918
-	}
-	return nil
-}
-
-func (x *Message730) GetField919() string {
-	if x != nil && x.Field919 != nil {
-		return *x.Field919
-	}
-	return ""
-}
-
-func (x *Message730) GetField920() []string {
-	if x != nil {
-		return x.Field920
-	}
-	return nil
-}
-
-func (x *Message730) GetField921() int64 {
-	if x != nil && x.Field921 != nil {
-		return *x.Field921
-	}
-	return 0
-}
-
-func (x *Message730) GetField922() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field922
-	}
-	return nil
-}
-
-func (x *Message730) GetField923() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field923
-	}
-	return nil
-}
-
-func (x *Message730) GetField924() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field924
-	}
-	return nil
-}
-
-func (x *Message730) GetField925() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field925
-	}
-	return nil
-}
-
-func (x *Message730) GetField926() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field926
-	}
-	return nil
-}
-
-func (x *Message730) GetField927() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field927
-	}
-	return nil
-}
-
-func (x *Message730) GetField928() []string {
-	if x != nil {
-		return x.Field928
-	}
-	return nil
-}
-
-func (x *Message730) GetField929() []byte {
-	if x != nil {
-		return x.Field929
-	}
-	return nil
-}
-
-type Message33958 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field33977   *string                      `protobuf:"bytes,1,opt,name=field33977" json:"field33977,omitempty"`
-	Field33978   *string                      `protobuf:"bytes,9,opt,name=field33978" json:"field33978,omitempty"`
-	Message33959 []*Message33958_Message33959 `protobuf:"group,2,rep,name=Message33959,json=message33959" json:"message33959,omitempty"`
-	Field33980   *Enum33960                   `protobuf:"varint,7,opt,name=field33980,enum=benchmarks.google_message3.Enum33960" json:"field33980,omitempty"`
-}
-
-func (x *Message33958) Reset() {
-	*x = Message33958{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message33958) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message33958) ProtoMessage() {}
-
-func (x *Message33958) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[8]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message33958.ProtoReflect.Descriptor instead.
-func (*Message33958) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *Message33958) GetField33977() string {
-	if x != nil && x.Field33977 != nil {
-		return *x.Field33977
-	}
-	return ""
-}
-
-func (x *Message33958) GetField33978() string {
-	if x != nil && x.Field33978 != nil {
-		return *x.Field33978
-	}
-	return ""
-}
-
-func (x *Message33958) GetMessage33959() []*Message33958_Message33959 {
-	if x != nil {
-		return x.Message33959
-	}
-	return nil
-}
-
-func (x *Message33958) GetField33980() Enum33960 {
-	if x != nil && x.Field33980 != nil {
-		return *x.Field33980
-	}
-	return Enum33960_ENUM_VALUE33961
-}
-
-type Message6637 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6670 *UnusedEmptyMessage   `protobuf:"bytes,2,opt,name=field6670" json:"field6670,omitempty"`
-	Field6671 []*UnusedEmptyMessage `protobuf:"bytes,1,rep,name=field6671" json:"field6671,omitempty"`
-	Field6672 *int32                `protobuf:"varint,3,opt,name=field6672" json:"field6672,omitempty"`
-	Field6673 []string              `protobuf:"bytes,4,rep,name=field6673" json:"field6673,omitempty"`
-	Field6674 *UnusedEmptyMessage   `protobuf:"bytes,5,opt,name=field6674" json:"field6674,omitempty"`
-}
-
-func (x *Message6637) Reset() {
-	*x = Message6637{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[9]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6637) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6637) ProtoMessage() {}
-
-func (x *Message6637) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[9]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6637.ProtoReflect.Descriptor instead.
-func (*Message6637) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *Message6637) GetField6670() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6670
-	}
-	return nil
-}
-
-func (x *Message6637) GetField6671() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6671
-	}
-	return nil
-}
-
-func (x *Message6637) GetField6672() int32 {
-	if x != nil && x.Field6672 != nil {
-		return *x.Field6672
-	}
-	return 0
-}
-
-func (x *Message6637) GetField6673() []string {
-	if x != nil {
-		return x.Field6673
-	}
-	return nil
-}
-
-func (x *Message6637) GetField6674() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6674
-	}
-	return nil
-}
-
-type Message6643 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6683 *UnusedEmptyMessage   `protobuf:"bytes,3,opt,name=field6683" json:"field6683,omitempty"`
-	Field6684 *UnusedEmptyMessage   `protobuf:"bytes,4,opt,name=field6684" json:"field6684,omitempty"`
-	Field6685 *float64              `protobuf:"fixed64,5,opt,name=field6685" json:"field6685,omitempty"`
-	Field6686 *float64              `protobuf:"fixed64,6,opt,name=field6686" json:"field6686,omitempty"`
-	Field6687 *int32                `protobuf:"varint,1,opt,name=field6687" json:"field6687,omitempty"`
-	Field6688 *int32                `protobuf:"varint,2,opt,name=field6688" json:"field6688,omitempty"`
-	Field6689 *float64              `protobuf:"fixed64,9,opt,name=field6689" json:"field6689,omitempty"`
-	Field6690 []byte                `protobuf:"bytes,10,opt,name=field6690" json:"field6690,omitempty"`
-	Field6691 *int32                `protobuf:"varint,11,opt,name=field6691" json:"field6691,omitempty"`
-	Field6692 *bool                 `protobuf:"varint,12,opt,name=field6692" json:"field6692,omitempty"`
-	Field6693 *bool                 `protobuf:"varint,13,opt,name=field6693" json:"field6693,omitempty"`
-	Field6694 *Message6578          `protobuf:"bytes,15,opt,name=field6694" json:"field6694,omitempty"`
-	Field6695 *UnusedEnum           `protobuf:"varint,16,opt,name=field6695,enum=benchmarks.google_message3.UnusedEnum" json:"field6695,omitempty"`
-	Field6696 *int64                `protobuf:"varint,17,opt,name=field6696" json:"field6696,omitempty"`
-	Field6697 []*UnusedEmptyMessage `protobuf:"bytes,22,rep,name=field6697" json:"field6697,omitempty"`
-	Field6698 *UnusedEmptyMessage   `protobuf:"bytes,19,opt,name=field6698" json:"field6698,omitempty"`
-	Field6699 *UnusedEmptyMessage   `protobuf:"bytes,20,opt,name=field6699" json:"field6699,omitempty"`
-	Field6700 *int32                `protobuf:"varint,21,opt,name=field6700" json:"field6700,omitempty"`
-}
-
-func (x *Message6643) Reset() {
-	*x = Message6643{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[10]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6643) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6643) ProtoMessage() {}
-
-func (x *Message6643) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[10]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6643.ProtoReflect.Descriptor instead.
-func (*Message6643) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *Message6643) GetField6683() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6683
-	}
-	return nil
-}
-
-func (x *Message6643) GetField6684() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6684
-	}
-	return nil
-}
-
-func (x *Message6643) GetField6685() float64 {
-	if x != nil && x.Field6685 != nil {
-		return *x.Field6685
-	}
-	return 0
-}
-
-func (x *Message6643) GetField6686() float64 {
-	if x != nil && x.Field6686 != nil {
-		return *x.Field6686
-	}
-	return 0
-}
-
-func (x *Message6643) GetField6687() int32 {
-	if x != nil && x.Field6687 != nil {
-		return *x.Field6687
-	}
-	return 0
-}
-
-func (x *Message6643) GetField6688() int32 {
-	if x != nil && x.Field6688 != nil {
-		return *x.Field6688
-	}
-	return 0
-}
-
-func (x *Message6643) GetField6689() float64 {
-	if x != nil && x.Field6689 != nil {
-		return *x.Field6689
-	}
-	return 0
-}
-
-func (x *Message6643) GetField6690() []byte {
-	if x != nil {
-		return x.Field6690
-	}
-	return nil
-}
-
-func (x *Message6643) GetField6691() int32 {
-	if x != nil && x.Field6691 != nil {
-		return *x.Field6691
-	}
-	return 0
-}
-
-func (x *Message6643) GetField6692() bool {
-	if x != nil && x.Field6692 != nil {
-		return *x.Field6692
-	}
-	return false
-}
-
-func (x *Message6643) GetField6693() bool {
-	if x != nil && x.Field6693 != nil {
-		return *x.Field6693
-	}
-	return false
-}
-
-func (x *Message6643) GetField6694() *Message6578 {
-	if x != nil {
-		return x.Field6694
-	}
-	return nil
-}
-
-func (x *Message6643) GetField6695() UnusedEnum {
-	if x != nil && x.Field6695 != nil {
-		return *x.Field6695
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message6643) GetField6696() int64 {
-	if x != nil && x.Field6696 != nil {
-		return *x.Field6696
-	}
-	return 0
-}
-
-func (x *Message6643) GetField6697() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6697
-	}
-	return nil
-}
-
-func (x *Message6643) GetField6698() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6698
-	}
-	return nil
-}
-
-func (x *Message6643) GetField6699() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6699
-	}
-	return nil
-}
-
-func (x *Message6643) GetField6700() int32 {
-	if x != nil && x.Field6700 != nil {
-		return *x.Field6700
-	}
-	return 0
-}
-
-type Message6126 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6152 *string               `protobuf:"bytes,1,req,name=field6152" json:"field6152,omitempty"`
-	Field6153 []*UnusedEmptyMessage `protobuf:"bytes,9,rep,name=field6153" json:"field6153,omitempty"`
-	Field6154 *int32                `protobuf:"varint,14,opt,name=field6154" json:"field6154,omitempty"`
-	Field6155 []byte                `protobuf:"bytes,10,opt,name=field6155" json:"field6155,omitempty"`
-	Field6156 *Message6024          `protobuf:"bytes,12,opt,name=field6156" json:"field6156,omitempty"`
-	Field6157 *int32                `protobuf:"varint,4,opt,name=field6157" json:"field6157,omitempty"`
-	Field6158 *string               `protobuf:"bytes,5,opt,name=field6158" json:"field6158,omitempty"`
-	Field6159 *int32                `protobuf:"varint,6,opt,name=field6159" json:"field6159,omitempty"`
-	Field6160 []int32               `protobuf:"varint,2,rep,name=field6160" json:"field6160,omitempty"`
-	Field6161 []int32               `protobuf:"varint,3,rep,name=field6161" json:"field6161,omitempty"`
-	Field6162 []*Message6052        `protobuf:"bytes,7,rep,name=field6162" json:"field6162,omitempty"`
-	Field6163 []*UnusedEmptyMessage `protobuf:"bytes,11,rep,name=field6163" json:"field6163,omitempty"`
-	Field6164 *Enum6065             `protobuf:"varint,15,opt,name=field6164,enum=benchmarks.google_message3.Enum6065" json:"field6164,omitempty"`
-	Field6165 []*UnusedEmptyMessage `protobuf:"bytes,8,rep,name=field6165" json:"field6165,omitempty"`
-	Field6166 *bool                 `protobuf:"varint,13,opt,name=field6166" json:"field6166,omitempty"`
-	Field6167 *bool                 `protobuf:"varint,16,opt,name=field6167" json:"field6167,omitempty"`
-	Field6168 *bool                 `protobuf:"varint,18,opt,name=field6168" json:"field6168,omitempty"`
-	Field6169 []*Message6054        `protobuf:"bytes,17,rep,name=field6169" json:"field6169,omitempty"`
-	Field6170 *int32                `protobuf:"varint,19,opt,name=field6170" json:"field6170,omitempty"`
-}
-
-func (x *Message6126) Reset() {
-	*x = Message6126{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[11]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6126) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6126) ProtoMessage() {}
-
-func (x *Message6126) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[11]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6126.ProtoReflect.Descriptor instead.
-func (*Message6126) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *Message6126) GetField6152() string {
-	if x != nil && x.Field6152 != nil {
-		return *x.Field6152
-	}
-	return ""
-}
-
-func (x *Message6126) GetField6153() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6153
-	}
-	return nil
-}
-
-func (x *Message6126) GetField6154() int32 {
-	if x != nil && x.Field6154 != nil {
-		return *x.Field6154
-	}
-	return 0
-}
-
-func (x *Message6126) GetField6155() []byte {
-	if x != nil {
-		return x.Field6155
-	}
-	return nil
-}
-
-func (x *Message6126) GetField6156() *Message6024 {
-	if x != nil {
-		return x.Field6156
-	}
-	return nil
-}
-
-func (x *Message6126) GetField6157() int32 {
-	if x != nil && x.Field6157 != nil {
-		return *x.Field6157
-	}
-	return 0
-}
-
-func (x *Message6126) GetField6158() string {
-	if x != nil && x.Field6158 != nil {
-		return *x.Field6158
-	}
-	return ""
-}
-
-func (x *Message6126) GetField6159() int32 {
-	if x != nil && x.Field6159 != nil {
-		return *x.Field6159
-	}
-	return 0
-}
-
-func (x *Message6126) GetField6160() []int32 {
-	if x != nil {
-		return x.Field6160
-	}
-	return nil
-}
-
-func (x *Message6126) GetField6161() []int32 {
-	if x != nil {
-		return x.Field6161
-	}
-	return nil
-}
-
-func (x *Message6126) GetField6162() []*Message6052 {
-	if x != nil {
-		return x.Field6162
-	}
-	return nil
-}
-
-func (x *Message6126) GetField6163() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6163
-	}
-	return nil
-}
-
-func (x *Message6126) GetField6164() Enum6065 {
-	if x != nil && x.Field6164 != nil {
-		return *x.Field6164
-	}
-	return Enum6065_ENUM_VALUE6066
-}
-
-func (x *Message6126) GetField6165() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6165
-	}
-	return nil
-}
-
-func (x *Message6126) GetField6166() bool {
-	if x != nil && x.Field6166 != nil {
-		return *x.Field6166
-	}
-	return false
-}
-
-func (x *Message6126) GetField6167() bool {
-	if x != nil && x.Field6167 != nil {
-		return *x.Field6167
-	}
-	return false
-}
-
-func (x *Message6126) GetField6168() bool {
-	if x != nil && x.Field6168 != nil {
-		return *x.Field6168
-	}
-	return false
-}
-
-func (x *Message6126) GetField6169() []*Message6054 {
-	if x != nil {
-		return x.Field6169
-	}
-	return nil
-}
-
-func (x *Message6126) GetField6170() int32 {
-	if x != nil && x.Field6170 != nil {
-		return *x.Field6170
-	}
-	return 0
-}
-
-type Message13083 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field13096   *float32                     `protobuf:"fixed32,1,opt,name=field13096" json:"field13096,omitempty"`
-	Message13084 []*Message13083_Message13084 `protobuf:"group,2,rep,name=Message13084,json=message13084" json:"message13084,omitempty"`
-	Field13098   *float32                     `protobuf:"fixed32,44,opt,name=field13098" json:"field13098,omitempty"`
-	Field13099   *float32                     `protobuf:"fixed32,45,opt,name=field13099" json:"field13099,omitempty"`
-	Field13100   *uint64                      `protobuf:"varint,46,opt,name=field13100" json:"field13100,omitempty"`
-	Field13101   *float32                     `protobuf:"fixed32,47,opt,name=field13101" json:"field13101,omitempty"`
-	Message13085 *Message13083_Message13085   `protobuf:"group,16,opt,name=Message13085,json=message13085" json:"message13085,omitempty"`
-	Message13086 []*Message13083_Message13086 `protobuf:"group,23,rep,name=Message13086,json=message13086" json:"message13086,omitempty"`
-	Message13087 []*Message13083_Message13087 `protobuf:"group,29,rep,name=Message13087,json=message13087" json:"message13087,omitempty"`
-	Field13105   *UnusedEmptyMessage          `protobuf:"bytes,43,opt,name=field13105" json:"field13105,omitempty"`
-}
-
-func (x *Message13083) Reset() {
-	*x = Message13083{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[12]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message13083) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message13083) ProtoMessage() {}
-
-func (x *Message13083) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[12]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message13083.ProtoReflect.Descriptor instead.
-func (*Message13083) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *Message13083) GetField13096() float32 {
-	if x != nil && x.Field13096 != nil {
-		return *x.Field13096
-	}
-	return 0
-}
-
-func (x *Message13083) GetMessage13084() []*Message13083_Message13084 {
-	if x != nil {
-		return x.Message13084
-	}
-	return nil
-}
-
-func (x *Message13083) GetField13098() float32 {
-	if x != nil && x.Field13098 != nil {
-		return *x.Field13098
-	}
-	return 0
-}
-
-func (x *Message13083) GetField13099() float32 {
-	if x != nil && x.Field13099 != nil {
-		return *x.Field13099
-	}
-	return 0
-}
-
-func (x *Message13083) GetField13100() uint64 {
-	if x != nil && x.Field13100 != nil {
-		return *x.Field13100
-	}
-	return 0
-}
-
-func (x *Message13083) GetField13101() float32 {
-	if x != nil && x.Field13101 != nil {
-		return *x.Field13101
-	}
-	return 0
-}
-
-func (x *Message13083) GetMessage13085() *Message13083_Message13085 {
-	if x != nil {
-		return x.Message13085
-	}
-	return nil
-}
-
-func (x *Message13083) GetMessage13086() []*Message13083_Message13086 {
-	if x != nil {
-		return x.Message13086
-	}
-	return nil
-}
-
-func (x *Message13083) GetMessage13087() []*Message13083_Message13087 {
-	if x != nil {
-		return x.Message13087
-	}
-	return nil
-}
-
-func (x *Message13083) GetField13105() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field13105
-	}
-	return nil
-}
-
-type Message13088 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Message13089 []*Message13088_Message13089 `protobuf:"group,1,rep,name=Message13089,json=message13089" json:"message13089,omitempty"`
-	Field13136   *int64                       `protobuf:"varint,4,opt,name=field13136" json:"field13136,omitempty"`
-	Field13137   *bool                        `protobuf:"varint,5,opt,name=field13137" json:"field13137,omitempty"`
-}
-
-func (x *Message13088) Reset() {
-	*x = Message13088{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[13]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message13088) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message13088) ProtoMessage() {}
-
-func (x *Message13088) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[13]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message13088.ProtoReflect.Descriptor instead.
-func (*Message13088) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *Message13088) GetMessage13089() []*Message13088_Message13089 {
-	if x != nil {
-		return x.Message13089
-	}
-	return nil
-}
-
-func (x *Message13088) GetField13136() int64 {
-	if x != nil && x.Field13136 != nil {
-		return *x.Field13136
-	}
-	return 0
-}
-
-func (x *Message13088) GetField13137() bool {
-	if x != nil && x.Field13137 != nil {
-		return *x.Field13137
-	}
-	return false
-}
-
-type Message10391 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field10411 *Enum10392          `protobuf:"varint,1,opt,name=field10411,enum=benchmarks.google_message3.Enum10392" json:"field10411,omitempty"`
-	Field10412 *UnusedEnum         `protobuf:"varint,2,opt,name=field10412,enum=benchmarks.google_message3.UnusedEnum" json:"field10412,omitempty"`
-	Field10413 *int64              `protobuf:"varint,3,opt,name=field10413" json:"field10413,omitempty"`
-	Field10414 *string             `protobuf:"bytes,4,opt,name=field10414" json:"field10414,omitempty"`
-	Field10415 *string             `protobuf:"bytes,5,opt,name=field10415" json:"field10415,omitempty"`
-	Field10416 []byte              `protobuf:"bytes,6,opt,name=field10416" json:"field10416,omitempty"`
-	Field10417 *bool               `protobuf:"varint,8,opt,name=field10417" json:"field10417,omitempty"`
-	Field10418 *UnusedEmptyMessage `protobuf:"bytes,9,opt,name=field10418" json:"field10418,omitempty"`
-	Field10419 *bool               `protobuf:"varint,10,opt,name=field10419" json:"field10419,omitempty"`
-}
-
-func (x *Message10391) Reset() {
-	*x = Message10391{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[14]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10391) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10391) ProtoMessage() {}
-
-func (x *Message10391) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[14]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10391.ProtoReflect.Descriptor instead.
-func (*Message10391) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *Message10391) GetField10411() Enum10392 {
-	if x != nil && x.Field10411 != nil {
-		return *x.Field10411
-	}
-	return Enum10392_ENUM_VALUE10393
-}
-
-func (x *Message10391) GetField10412() UnusedEnum {
-	if x != nil && x.Field10412 != nil {
-		return *x.Field10412
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message10391) GetField10413() int64 {
-	if x != nil && x.Field10413 != nil {
-		return *x.Field10413
-	}
-	return 0
-}
-
-func (x *Message10391) GetField10414() string {
-	if x != nil && x.Field10414 != nil {
-		return *x.Field10414
-	}
-	return ""
-}
-
-func (x *Message10391) GetField10415() string {
-	if x != nil && x.Field10415 != nil {
-		return *x.Field10415
-	}
-	return ""
-}
-
-func (x *Message10391) GetField10416() []byte {
-	if x != nil {
-		return x.Field10416
-	}
-	return nil
-}
-
-func (x *Message10391) GetField10417() bool {
-	if x != nil && x.Field10417 != nil {
-		return *x.Field10417
-	}
-	return false
-}
-
-func (x *Message10391) GetField10418() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field10418
-	}
-	return nil
-}
-
-func (x *Message10391) GetField10419() bool {
-	if x != nil && x.Field10419 != nil {
-		return *x.Field10419
-	}
-	return false
-}
-
-type Message11873 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	Field11876 *string             `protobuf:"bytes,1,opt,name=field11876" json:"field11876,omitempty"`
-	Field11877 *string             `protobuf:"bytes,4,opt,name=field11877" json:"field11877,omitempty"`
-	Field11878 *Message10573       `protobuf:"bytes,5,opt,name=field11878" json:"field11878,omitempty"`
-	Field11879 *Message10582       `protobuf:"bytes,6,opt,name=field11879" json:"field11879,omitempty"`
-	Field11880 *Message10824       `protobuf:"bytes,7,opt,name=field11880" json:"field11880,omitempty"`
-	Field11881 *Message10773       `protobuf:"bytes,12,opt,name=field11881" json:"field11881,omitempty"`
-	Field11882 *Message11866       `protobuf:"bytes,8,opt,name=field11882" json:"field11882,omitempty"`
-	Field11883 *Message10818       `protobuf:"bytes,13,opt,name=field11883" json:"field11883,omitempty"`
-	Field11884 *UnusedEmptyMessage `protobuf:"bytes,16,opt,name=field11884" json:"field11884,omitempty"`
-	Field11885 *Message10155       `protobuf:"bytes,11,opt,name=field11885" json:"field11885,omitempty"`
-	Field11886 *Message10469       `protobuf:"bytes,14,opt,name=field11886" json:"field11886,omitempty"`
-	Field11887 *UnusedEmptyMessage `protobuf:"bytes,15,opt,name=field11887" json:"field11887,omitempty"`
-}
-
-func (x *Message11873) Reset() {
-	*x = Message11873{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[15]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message11873) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message11873) ProtoMessage() {}
-
-func (x *Message11873) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[15]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message11873.ProtoReflect.Descriptor instead.
-func (*Message11873) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{15}
-}
-
-func (x *Message11873) GetField11876() string {
-	if x != nil && x.Field11876 != nil {
-		return *x.Field11876
-	}
-	return ""
-}
-
-func (x *Message11873) GetField11877() string {
-	if x != nil && x.Field11877 != nil {
-		return *x.Field11877
-	}
-	return ""
-}
-
-func (x *Message11873) GetField11878() *Message10573 {
-	if x != nil {
-		return x.Field11878
-	}
-	return nil
-}
-
-func (x *Message11873) GetField11879() *Message10582 {
-	if x != nil {
-		return x.Field11879
-	}
-	return nil
-}
-
-func (x *Message11873) GetField11880() *Message10824 {
-	if x != nil {
-		return x.Field11880
-	}
-	return nil
-}
-
-func (x *Message11873) GetField11881() *Message10773 {
-	if x != nil {
-		return x.Field11881
-	}
-	return nil
-}
-
-func (x *Message11873) GetField11882() *Message11866 {
-	if x != nil {
-		return x.Field11882
-	}
-	return nil
-}
-
-func (x *Message11873) GetField11883() *Message10818 {
-	if x != nil {
-		return x.Field11883
-	}
-	return nil
-}
-
-func (x *Message11873) GetField11884() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field11884
-	}
-	return nil
-}
-
-func (x *Message11873) GetField11885() *Message10155 {
-	if x != nil {
-		return x.Field11885
-	}
-	return nil
-}
-
-func (x *Message11873) GetField11886() *Message10469 {
-	if x != nil {
-		return x.Field11886
-	}
-	return nil
-}
-
-func (x *Message11873) GetField11887() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field11887
-	}
-	return nil
-}
-
-type Message35506 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field35524 *int32                `protobuf:"varint,1,opt,name=field35524" json:"field35524,omitempty"`
-	Field35525 *string               `protobuf:"bytes,2,opt,name=field35525" json:"field35525,omitempty"`
-	Field35526 *Enum35507            `protobuf:"varint,3,opt,name=field35526,enum=benchmarks.google_message3.Enum35507" json:"field35526,omitempty"`
-	Field35527 []*UnusedEmptyMessage `protobuf:"bytes,4,rep,name=field35527" json:"field35527,omitempty"`
-}
-
-func (x *Message35506) Reset() {
-	*x = Message35506{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[16]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message35506) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message35506) ProtoMessage() {}
-
-func (x *Message35506) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[16]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message35506.ProtoReflect.Descriptor instead.
-func (*Message35506) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *Message35506) GetField35524() int32 {
-	if x != nil && x.Field35524 != nil {
-		return *x.Field35524
-	}
-	return 0
-}
-
-func (x *Message35506) GetField35525() string {
-	if x != nil && x.Field35525 != nil {
-		return *x.Field35525
-	}
-	return ""
-}
-
-func (x *Message35506) GetField35526() Enum35507 {
-	if x != nil && x.Field35526 != nil {
-		return *x.Field35526
-	}
-	return Enum35507_ENUM_VALUE35508
-}
-
-func (x *Message35506) GetField35527() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field35527
-	}
-	return nil
-}
-
-type Message13151 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field13158 []*Message13145 `protobuf:"bytes,1,rep,name=field13158" json:"field13158,omitempty"`
-}
-
-func (x *Message13151) Reset() {
-	*x = Message13151{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[17]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message13151) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message13151) ProtoMessage() {}
-
-func (x *Message13151) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[17]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message13151.ProtoReflect.Descriptor instead.
-func (*Message13151) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{17}
-}
-
-func (x *Message13151) GetField13158() []*Message13145 {
-	if x != nil {
-		return x.Field13158
-	}
-	return nil
-}
-
-type Message18253 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Message18254 []*Message18253_Message18254 `protobuf:"group,1,rep,name=Message18254,json=message18254" json:"message18254,omitempty"`
-}
-
-func (x *Message18253) Reset() {
-	*x = Message18253{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[18]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message18253) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message18253) ProtoMessage() {}
-
-func (x *Message18253) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[18]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message18253.ProtoReflect.Descriptor instead.
-func (*Message18253) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{18}
-}
-
-func (x *Message18253) GetMessage18254() []*Message18253_Message18254 {
-	if x != nil {
-		return x.Message18254
-	}
-	return nil
-}
-
-type Message16685 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field16694 []*Message16686 `protobuf:"bytes,2,rep,name=field16694" json:"field16694,omitempty"`
-}
-
-func (x *Message16685) Reset() {
-	*x = Message16685{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[19]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message16685) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message16685) ProtoMessage() {}
-
-func (x *Message16685) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[19]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message16685.ProtoReflect.Descriptor instead.
-func (*Message16685) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{19}
-}
-
-func (x *Message16685) GetField16694() []*Message16686 {
-	if x != nil {
-		return x.Field16694
-	}
-	return nil
-}
-
-type Message16816 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field16826   *float32                     `protobuf:"fixed32,1,opt,name=field16826" json:"field16826,omitempty"`
-	Field16827   *Enum16819                   `protobuf:"varint,2,opt,name=field16827,enum=benchmarks.google_message3.Enum16819" json:"field16827,omitempty"`
-	Field16828   *float32                     `protobuf:"fixed32,3,opt,name=field16828" json:"field16828,omitempty"`
-	Message16817 []*Message16816_Message16817 `protobuf:"group,4,rep,name=Message16817,json=message16817" json:"message16817,omitempty"`
-	Field16830   *bool                        `protobuf:"varint,7,opt,name=field16830" json:"field16830,omitempty"`
-	Field16831   *bool                        `protobuf:"varint,8,opt,name=field16831" json:"field16831,omitempty"`
-	Message16818 []*Message16816_Message16818 `protobuf:"group,12,rep,name=Message16818,json=message16818" json:"message16818,omitempty"`
-	Field16833   *string                      `protobuf:"bytes,10,opt,name=field16833" json:"field16833,omitempty"`
-	Field16834   *bool                        `protobuf:"varint,13,opt,name=field16834" json:"field16834,omitempty"`
-	Field16835   *bool                        `protobuf:"varint,14,opt,name=field16835" json:"field16835,omitempty"`
-}
-
-func (x *Message16816) Reset() {
-	*x = Message16816{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[20]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message16816) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message16816) ProtoMessage() {}
-
-func (x *Message16816) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[20]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message16816.ProtoReflect.Descriptor instead.
-func (*Message16816) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{20}
-}
-
-func (x *Message16816) GetField16826() float32 {
-	if x != nil && x.Field16826 != nil {
-		return *x.Field16826
-	}
-	return 0
-}
-
-func (x *Message16816) GetField16827() Enum16819 {
-	if x != nil && x.Field16827 != nil {
-		return *x.Field16827
-	}
-	return Enum16819_ENUM_VALUE16820
-}
-
-func (x *Message16816) GetField16828() float32 {
-	if x != nil && x.Field16828 != nil {
-		return *x.Field16828
-	}
-	return 0
-}
-
-func (x *Message16816) GetMessage16817() []*Message16816_Message16817 {
-	if x != nil {
-		return x.Message16817
-	}
-	return nil
-}
-
-func (x *Message16816) GetField16830() bool {
-	if x != nil && x.Field16830 != nil {
-		return *x.Field16830
-	}
-	return false
-}
-
-func (x *Message16816) GetField16831() bool {
-	if x != nil && x.Field16831 != nil {
-		return *x.Field16831
-	}
-	return false
-}
-
-func (x *Message16816) GetMessage16818() []*Message16816_Message16818 {
-	if x != nil {
-		return x.Message16818
-	}
-	return nil
-}
-
-func (x *Message16816) GetField16833() string {
-	if x != nil && x.Field16833 != nil {
-		return *x.Field16833
-	}
-	return ""
-}
-
-func (x *Message16816) GetField16834() bool {
-	if x != nil && x.Field16834 != nil {
-		return *x.Field16834
-	}
-	return false
-}
-
-func (x *Message16816) GetField16835() bool {
-	if x != nil && x.Field16835 != nil {
-		return *x.Field16835
-	}
-	return false
-}
-
-type Message13168 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field13212 *int32        `protobuf:"varint,1,req,name=field13212" json:"field13212,omitempty"`
-	Field13213 *uint64       `protobuf:"fixed64,7,opt,name=field13213" json:"field13213,omitempty"`
-	Field13214 *bool         `protobuf:"varint,8,opt,name=field13214" json:"field13214,omitempty"`
-	Field13215 *uint64       `protobuf:"fixed64,10,opt,name=field13215" json:"field13215,omitempty"`
-	Field13216 *bool         `protobuf:"varint,11,opt,name=field13216" json:"field13216,omitempty"`
-	Field13217 *Message12796 `protobuf:"bytes,9,opt,name=field13217" json:"field13217,omitempty"`
-	Field13218 *float64      `protobuf:"fixed64,2,req,name=field13218" json:"field13218,omitempty"`
-	Field13219 *bool         `protobuf:"varint,3,req,name=field13219" json:"field13219,omitempty"`
-	Field13220 *int32        `protobuf:"varint,4,opt,name=field13220" json:"field13220,omitempty"`
-	Field13221 *bool         `protobuf:"varint,5,req,name=field13221" json:"field13221,omitempty"`
-	Field13222 *int32        `protobuf:"varint,6,opt,name=field13222" json:"field13222,omitempty"`
-}
-
-func (x *Message13168) Reset() {
-	*x = Message13168{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[21]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message13168) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message13168) ProtoMessage() {}
-
-func (x *Message13168) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[21]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message13168.ProtoReflect.Descriptor instead.
-func (*Message13168) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{21}
-}
-
-func (x *Message13168) GetField13212() int32 {
-	if x != nil && x.Field13212 != nil {
-		return *x.Field13212
-	}
-	return 0
-}
-
-func (x *Message13168) GetField13213() uint64 {
-	if x != nil && x.Field13213 != nil {
-		return *x.Field13213
-	}
-	return 0
-}
-
-func (x *Message13168) GetField13214() bool {
-	if x != nil && x.Field13214 != nil {
-		return *x.Field13214
-	}
-	return false
-}
-
-func (x *Message13168) GetField13215() uint64 {
-	if x != nil && x.Field13215 != nil {
-		return *x.Field13215
-	}
-	return 0
-}
-
-func (x *Message13168) GetField13216() bool {
-	if x != nil && x.Field13216 != nil {
-		return *x.Field13216
-	}
-	return false
-}
-
-func (x *Message13168) GetField13217() *Message12796 {
-	if x != nil {
-		return x.Field13217
-	}
-	return nil
-}
-
-func (x *Message13168) GetField13218() float64 {
-	if x != nil && x.Field13218 != nil {
-		return *x.Field13218
-	}
-	return 0
-}
-
-func (x *Message13168) GetField13219() bool {
-	if x != nil && x.Field13219 != nil {
-		return *x.Field13219
-	}
-	return false
-}
-
-func (x *Message13168) GetField13220() int32 {
-	if x != nil && x.Field13220 != nil {
-		return *x.Field13220
-	}
-	return 0
-}
-
-func (x *Message13168) GetField13221() bool {
-	if x != nil && x.Field13221 != nil {
-		return *x.Field13221
-	}
-	return false
-}
-
-func (x *Message13168) GetField13222() int32 {
-	if x != nil && x.Field13222 != nil {
-		return *x.Field13222
-	}
-	return 0
-}
-
-type Message13167 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field13199 *int32        `protobuf:"varint,1,req,name=field13199" json:"field13199,omitempty"`
-	Field13200 *int32        `protobuf:"varint,2,opt,name=field13200" json:"field13200,omitempty"`
-	Field13201 *int32        `protobuf:"varint,3,opt,name=field13201" json:"field13201,omitempty"`
-	Field13202 *bool         `protobuf:"varint,8,opt,name=field13202" json:"field13202,omitempty"`
-	Field13203 *uint64       `protobuf:"fixed64,12,opt,name=field13203" json:"field13203,omitempty"`
-	Field13204 *bool         `protobuf:"varint,13,opt,name=field13204" json:"field13204,omitempty"`
-	Field13205 *Message12796 `protobuf:"bytes,11,opt,name=field13205" json:"field13205,omitempty"`
-	Field13206 *uint64       `protobuf:"fixed64,9,opt,name=field13206" json:"field13206,omitempty"`
-	Field13207 *bool         `protobuf:"varint,10,opt,name=field13207" json:"field13207,omitempty"`
-	Field13208 []int32       `protobuf:"varint,4,rep,name=field13208" json:"field13208,omitempty"`
-	Field13209 *int32        `protobuf:"varint,5,opt,name=field13209" json:"field13209,omitempty"`
-	Field13210 *int32        `protobuf:"varint,6,opt,name=field13210" json:"field13210,omitempty"`
-	Field13211 *int32        `protobuf:"varint,7,opt,name=field13211" json:"field13211,omitempty"`
-}
-
-func (x *Message13167) Reset() {
-	*x = Message13167{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[22]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message13167) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message13167) ProtoMessage() {}
-
-func (x *Message13167) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[22]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message13167.ProtoReflect.Descriptor instead.
-func (*Message13167) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{22}
-}
-
-func (x *Message13167) GetField13199() int32 {
-	if x != nil && x.Field13199 != nil {
-		return *x.Field13199
-	}
-	return 0
-}
-
-func (x *Message13167) GetField13200() int32 {
-	if x != nil && x.Field13200 != nil {
-		return *x.Field13200
-	}
-	return 0
-}
-
-func (x *Message13167) GetField13201() int32 {
-	if x != nil && x.Field13201 != nil {
-		return *x.Field13201
-	}
-	return 0
-}
-
-func (x *Message13167) GetField13202() bool {
-	if x != nil && x.Field13202 != nil {
-		return *x.Field13202
-	}
-	return false
-}
-
-func (x *Message13167) GetField13203() uint64 {
-	if x != nil && x.Field13203 != nil {
-		return *x.Field13203
-	}
-	return 0
-}
-
-func (x *Message13167) GetField13204() bool {
-	if x != nil && x.Field13204 != nil {
-		return *x.Field13204
-	}
-	return false
-}
-
-func (x *Message13167) GetField13205() *Message12796 {
-	if x != nil {
-		return x.Field13205
-	}
-	return nil
-}
-
-func (x *Message13167) GetField13206() uint64 {
-	if x != nil && x.Field13206 != nil {
-		return *x.Field13206
-	}
-	return 0
-}
-
-func (x *Message13167) GetField13207() bool {
-	if x != nil && x.Field13207 != nil {
-		return *x.Field13207
-	}
-	return false
-}
-
-func (x *Message13167) GetField13208() []int32 {
-	if x != nil {
-		return x.Field13208
-	}
-	return nil
-}
-
-func (x *Message13167) GetField13209() int32 {
-	if x != nil && x.Field13209 != nil {
-		return *x.Field13209
-	}
-	return 0
-}
-
-func (x *Message13167) GetField13210() int32 {
-	if x != nil && x.Field13210 != nil {
-		return *x.Field13210
-	}
-	return 0
-}
-
-func (x *Message13167) GetField13211() int32 {
-	if x != nil && x.Field13211 != nil {
-		return *x.Field13211
-	}
-	return 0
-}
-
-type Message1374 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field1375 *string `protobuf:"bytes,1,req,name=field1375" json:"field1375,omitempty"`
-	Field1376 *string `protobuf:"bytes,2,opt,name=field1376" json:"field1376,omitempty"`
-}
-
-func (x *Message1374) Reset() {
-	*x = Message1374{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[23]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message1374) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message1374) ProtoMessage() {}
-
-func (x *Message1374) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[23]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message1374.ProtoReflect.Descriptor instead.
-func (*Message1374) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{23}
-}
-
-func (x *Message1374) GetField1375() string {
-	if x != nil && x.Field1375 != nil {
-		return *x.Field1375
-	}
-	return ""
-}
-
-func (x *Message1374) GetField1376() string {
-	if x != nil && x.Field1376 != nil {
-		return *x.Field1376
-	}
-	return ""
-}
-
-type Message18943 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message18943) Reset() {
-	*x = Message18943{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[24]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message18943) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message18943) ProtoMessage() {}
-
-func (x *Message18943) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[24]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message18943.ProtoReflect.Descriptor instead.
-func (*Message18943) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{24}
-}
-
-type Message18944 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message18944) Reset() {
-	*x = Message18944{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[25]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message18944) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message18944) ProtoMessage() {}
-
-func (x *Message18944) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[25]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message18944.ProtoReflect.Descriptor instead.
-func (*Message18944) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{25}
-}
-
-type Message18856 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field18857 *string  `protobuf:"bytes,1,opt,name=field18857" json:"field18857,omitempty"`
-	Field18858 *string  `protobuf:"bytes,2,opt,name=field18858" json:"field18858,omitempty"`
-	Field18859 *bool    `protobuf:"varint,31,opt,name=field18859" json:"field18859,omitempty"`
-	Field18860 *string  `protobuf:"bytes,26,opt,name=field18860" json:"field18860,omitempty"`
-	Field18861 *string  `protobuf:"bytes,3,opt,name=field18861" json:"field18861,omitempty"`
-	Field18862 *string  `protobuf:"bytes,4,opt,name=field18862" json:"field18862,omitempty"`
-	Field18863 *string  `protobuf:"bytes,5,opt,name=field18863" json:"field18863,omitempty"`
-	Field18864 *string  `protobuf:"bytes,17,opt,name=field18864" json:"field18864,omitempty"`
-	Field18865 *string  `protobuf:"bytes,6,opt,name=field18865" json:"field18865,omitempty"`
-	Field18866 *string  `protobuf:"bytes,7,opt,name=field18866" json:"field18866,omitempty"`
-	Field18867 *string  `protobuf:"bytes,8,opt,name=field18867" json:"field18867,omitempty"`
-	Field18868 *string  `protobuf:"bytes,9,opt,name=field18868" json:"field18868,omitempty"`
-	Field18869 *string  `protobuf:"bytes,10,opt,name=field18869" json:"field18869,omitempty"`
-	Field18870 *string  `protobuf:"bytes,11,opt,name=field18870" json:"field18870,omitempty"`
-	Field18871 *string  `protobuf:"bytes,21,opt,name=field18871" json:"field18871,omitempty"`
-	Field18872 *string  `protobuf:"bytes,18,opt,name=field18872" json:"field18872,omitempty"`
-	Field18873 *string  `protobuf:"bytes,19,opt,name=field18873" json:"field18873,omitempty"`
-	Field18874 *string  `protobuf:"bytes,20,opt,name=field18874" json:"field18874,omitempty"`
-	Field18875 *string  `protobuf:"bytes,22,opt,name=field18875" json:"field18875,omitempty"`
-	Field18876 *string  `protobuf:"bytes,23,opt,name=field18876" json:"field18876,omitempty"`
-	Field18877 *string  `protobuf:"bytes,24,opt,name=field18877" json:"field18877,omitempty"`
-	Field18878 *string  `protobuf:"bytes,25,opt,name=field18878" json:"field18878,omitempty"`
-	Field18879 *string  `protobuf:"bytes,12,opt,name=field18879" json:"field18879,omitempty"`
-	Field18880 *string  `protobuf:"bytes,13,opt,name=field18880" json:"field18880,omitempty"`
-	Field18881 *string  `protobuf:"bytes,29,opt,name=field18881" json:"field18881,omitempty"`
-	Field18882 *string  `protobuf:"bytes,30,opt,name=field18882" json:"field18882,omitempty"`
-	Field18883 *string  `protobuf:"bytes,15,opt,name=field18883" json:"field18883,omitempty"`
-	Field18884 *string  `protobuf:"bytes,16,opt,name=field18884" json:"field18884,omitempty"`
-	Field18885 []string `protobuf:"bytes,14,rep,name=field18885" json:"field18885,omitempty"`
-	Field18886 *string  `protobuf:"bytes,27,opt,name=field18886" json:"field18886,omitempty"`
-	Field18887 *string  `protobuf:"bytes,28,opt,name=field18887" json:"field18887,omitempty"`
-}
-
-func (x *Message18856) Reset() {
-	*x = Message18856{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[26]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message18856) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message18856) ProtoMessage() {}
-
-func (x *Message18856) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[26]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message18856.ProtoReflect.Descriptor instead.
-func (*Message18856) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{26}
-}
-
-func (x *Message18856) GetField18857() string {
-	if x != nil && x.Field18857 != nil {
-		return *x.Field18857
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18858() string {
-	if x != nil && x.Field18858 != nil {
-		return *x.Field18858
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18859() bool {
-	if x != nil && x.Field18859 != nil {
-		return *x.Field18859
-	}
-	return false
-}
-
-func (x *Message18856) GetField18860() string {
-	if x != nil && x.Field18860 != nil {
-		return *x.Field18860
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18861() string {
-	if x != nil && x.Field18861 != nil {
-		return *x.Field18861
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18862() string {
-	if x != nil && x.Field18862 != nil {
-		return *x.Field18862
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18863() string {
-	if x != nil && x.Field18863 != nil {
-		return *x.Field18863
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18864() string {
-	if x != nil && x.Field18864 != nil {
-		return *x.Field18864
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18865() string {
-	if x != nil && x.Field18865 != nil {
-		return *x.Field18865
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18866() string {
-	if x != nil && x.Field18866 != nil {
-		return *x.Field18866
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18867() string {
-	if x != nil && x.Field18867 != nil {
-		return *x.Field18867
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18868() string {
-	if x != nil && x.Field18868 != nil {
-		return *x.Field18868
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18869() string {
-	if x != nil && x.Field18869 != nil {
-		return *x.Field18869
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18870() string {
-	if x != nil && x.Field18870 != nil {
-		return *x.Field18870
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18871() string {
-	if x != nil && x.Field18871 != nil {
-		return *x.Field18871
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18872() string {
-	if x != nil && x.Field18872 != nil {
-		return *x.Field18872
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18873() string {
-	if x != nil && x.Field18873 != nil {
-		return *x.Field18873
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18874() string {
-	if x != nil && x.Field18874 != nil {
-		return *x.Field18874
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18875() string {
-	if x != nil && x.Field18875 != nil {
-		return *x.Field18875
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18876() string {
-	if x != nil && x.Field18876 != nil {
-		return *x.Field18876
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18877() string {
-	if x != nil && x.Field18877 != nil {
-		return *x.Field18877
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18878() string {
-	if x != nil && x.Field18878 != nil {
-		return *x.Field18878
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18879() string {
-	if x != nil && x.Field18879 != nil {
-		return *x.Field18879
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18880() string {
-	if x != nil && x.Field18880 != nil {
-		return *x.Field18880
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18881() string {
-	if x != nil && x.Field18881 != nil {
-		return *x.Field18881
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18882() string {
-	if x != nil && x.Field18882 != nil {
-		return *x.Field18882
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18883() string {
-	if x != nil && x.Field18883 != nil {
-		return *x.Field18883
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18884() string {
-	if x != nil && x.Field18884 != nil {
-		return *x.Field18884
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18885() []string {
-	if x != nil {
-		return x.Field18885
-	}
-	return nil
-}
-
-func (x *Message18856) GetField18886() string {
-	if x != nil && x.Field18886 != nil {
-		return *x.Field18886
-	}
-	return ""
-}
-
-func (x *Message18856) GetField18887() string {
-	if x != nil && x.Field18887 != nil {
-		return *x.Field18887
-	}
-	return ""
-}
-
-type Message3850 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field3924 *Enum3851 `protobuf:"varint,2,opt,name=field3924,enum=benchmarks.google_message3.Enum3851" json:"field3924,omitempty"`
-	Field3925 *bool     `protobuf:"varint,12,opt,name=field3925" json:"field3925,omitempty"`
-	Field3926 *int32    `protobuf:"varint,4,opt,name=field3926" json:"field3926,omitempty"`
-	Field3927 *bool     `protobuf:"varint,10,opt,name=field3927" json:"field3927,omitempty"`
-	Field3928 *bool     `protobuf:"varint,13,opt,name=field3928" json:"field3928,omitempty"`
-	Field3929 *bool     `protobuf:"varint,14,opt,name=field3929" json:"field3929,omitempty"`
-}
-
-func (x *Message3850) Reset() {
-	*x = Message3850{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[27]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3850) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3850) ProtoMessage() {}
-
-func (x *Message3850) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[27]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3850.ProtoReflect.Descriptor instead.
-func (*Message3850) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{27}
-}
-
-func (x *Message3850) GetField3924() Enum3851 {
-	if x != nil && x.Field3924 != nil {
-		return *x.Field3924
-	}
-	return Enum3851_ENUM_VALUE3852
-}
-
-func (x *Message3850) GetField3925() bool {
-	if x != nil && x.Field3925 != nil {
-		return *x.Field3925
-	}
-	return false
-}
-
-func (x *Message3850) GetField3926() int32 {
-	if x != nil && x.Field3926 != nil {
-		return *x.Field3926
-	}
-	return 0
-}
-
-func (x *Message3850) GetField3927() bool {
-	if x != nil && x.Field3927 != nil {
-		return *x.Field3927
-	}
-	return false
-}
-
-func (x *Message3850) GetField3928() bool {
-	if x != nil && x.Field3928 != nil {
-		return *x.Field3928
-	}
-	return false
-}
-
-func (x *Message3850) GetField3929() bool {
-	if x != nil && x.Field3929 != nil {
-		return *x.Field3929
-	}
-	return false
-}
-
-type Message6721 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6744 *Message6722 `protobuf:"bytes,1,opt,name=field6744" json:"field6744,omitempty"`
-	Field6745 *bool        `protobuf:"varint,2,opt,name=field6745" json:"field6745,omitempty"`
-	Field6746 *bool        `protobuf:"varint,3,opt,name=field6746" json:"field6746,omitempty"`
-	Field6747 *bool        `protobuf:"varint,4,opt,name=field6747" json:"field6747,omitempty"`
-}
-
-func (x *Message6721) Reset() {
-	*x = Message6721{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[28]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6721) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6721) ProtoMessage() {}
-
-func (x *Message6721) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[28]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6721.ProtoReflect.Descriptor instead.
-func (*Message6721) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{28}
-}
-
-func (x *Message6721) GetField6744() *Message6722 {
-	if x != nil {
-		return x.Field6744
-	}
-	return nil
-}
-
-func (x *Message6721) GetField6745() bool {
-	if x != nil && x.Field6745 != nil {
-		return *x.Field6745
-	}
-	return false
-}
-
-func (x *Message6721) GetField6746() bool {
-	if x != nil && x.Field6746 != nil {
-		return *x.Field6746
-	}
-	return false
-}
-
-func (x *Message6721) GetField6747() bool {
-	if x != nil && x.Field6747 != nil {
-		return *x.Field6747
-	}
-	return false
-}
-
-type Message6742 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6758 *bool `protobuf:"varint,1,opt,name=field6758" json:"field6758,omitempty"`
-}
-
-func (x *Message6742) Reset() {
-	*x = Message6742{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[29]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6742) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6742) ProtoMessage() {}
-
-func (x *Message6742) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[29]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6742.ProtoReflect.Descriptor instead.
-func (*Message6742) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{29}
-}
-
-func (x *Message6742) GetField6758() bool {
-	if x != nil && x.Field6758 != nil {
-		return *x.Field6758
-	}
-	return false
-}
-
-type Message6726 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6752 *int64         `protobuf:"varint,1,opt,name=field6752" json:"field6752,omitempty"`
-	Field6753 []*Message6727 `protobuf:"bytes,2,rep,name=field6753" json:"field6753,omitempty"`
-}
-
-func (x *Message6726) Reset() {
-	*x = Message6726{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[30]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6726) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6726) ProtoMessage() {}
-
-func (x *Message6726) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[30]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6726.ProtoReflect.Descriptor instead.
-func (*Message6726) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{30}
-}
-
-func (x *Message6726) GetField6752() int64 {
-	if x != nil && x.Field6752 != nil {
-		return *x.Field6752
-	}
-	return 0
-}
-
-func (x *Message6726) GetField6753() []*Message6727 {
-	if x != nil {
-		return x.Field6753
-	}
-	return nil
-}
-
-type Message6733 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6754 *int64 `protobuf:"varint,1,opt,name=field6754" json:"field6754,omitempty"`
-	Field6755 *int64 `protobuf:"varint,2,opt,name=field6755" json:"field6755,omitempty"`
-	Field6756 *bool  `protobuf:"varint,3,opt,name=field6756" json:"field6756,omitempty"`
-}
-
-func (x *Message6733) Reset() {
-	*x = Message6733{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[31]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6733) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6733) ProtoMessage() {}
-
-func (x *Message6733) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[31]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6733.ProtoReflect.Descriptor instead.
-func (*Message6733) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{31}
-}
-
-func (x *Message6733) GetField6754() int64 {
-	if x != nil && x.Field6754 != nil {
-		return *x.Field6754
-	}
-	return 0
-}
-
-func (x *Message6733) GetField6755() int64 {
-	if x != nil && x.Field6755 != nil {
-		return *x.Field6755
-	}
-	return 0
-}
-
-func (x *Message6733) GetField6756() bool {
-	if x != nil && x.Field6756 != nil {
-		return *x.Field6756
-	}
-	return false
-}
-
-type Message6723 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6748 *int64         `protobuf:"varint,1,opt,name=field6748" json:"field6748,omitempty"`
-	Field6749 []*Message6724 `protobuf:"bytes,2,rep,name=field6749" json:"field6749,omitempty"`
-}
-
-func (x *Message6723) Reset() {
-	*x = Message6723{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[32]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6723) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6723) ProtoMessage() {}
-
-func (x *Message6723) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[32]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6723.ProtoReflect.Descriptor instead.
-func (*Message6723) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{32}
-}
-
-func (x *Message6723) GetField6748() int64 {
-	if x != nil && x.Field6748 != nil {
-		return *x.Field6748
-	}
-	return 0
-}
-
-func (x *Message6723) GetField6749() []*Message6724 {
-	if x != nil {
-		return x.Field6749
-	}
-	return nil
-}
-
-type Message6725 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6750 *int32 `protobuf:"varint,1,opt,name=field6750" json:"field6750,omitempty"`
-	Field6751 *int32 `protobuf:"varint,2,opt,name=field6751" json:"field6751,omitempty"`
-}
-
-func (x *Message6725) Reset() {
-	*x = Message6725{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[33]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6725) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6725) ProtoMessage() {}
-
-func (x *Message6725) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[33]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6725.ProtoReflect.Descriptor instead.
-func (*Message6725) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{33}
-}
-
-func (x *Message6725) GetField6750() int32 {
-	if x != nil && x.Field6750 != nil {
-		return *x.Field6750
-	}
-	return 0
-}
-
-func (x *Message6725) GetField6751() int32 {
-	if x != nil && x.Field6751 != nil {
-		return *x.Field6751
-	}
-	return 0
-}
-
-type Message6734 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6757 []*Message6735 `protobuf:"bytes,1,rep,name=field6757" json:"field6757,omitempty"`
-}
-
-func (x *Message6734) Reset() {
-	*x = Message6734{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[34]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6734) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6734) ProtoMessage() {}
-
-func (x *Message6734) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[34]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6734.ProtoReflect.Descriptor instead.
-func (*Message6734) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{34}
-}
-
-func (x *Message6734) GetField6757() []*Message6735 {
-	if x != nil {
-		return x.Field6757
-	}
-	return nil
-}
-
-type Message8184 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8228 *Message7966   `protobuf:"bytes,1,opt,name=field8228" json:"field8228,omitempty"`
-	Field8229 *bool          `protobuf:"varint,2,opt,name=field8229" json:"field8229,omitempty"`
-	Field8230 []*Message8183 `protobuf:"bytes,3,rep,name=field8230" json:"field8230,omitempty"`
-}
-
-func (x *Message8184) Reset() {
-	*x = Message8184{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[35]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8184) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8184) ProtoMessage() {}
-
-func (x *Message8184) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[35]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8184.ProtoReflect.Descriptor instead.
-func (*Message8184) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{35}
-}
-
-func (x *Message8184) GetField8228() *Message7966 {
-	if x != nil {
-		return x.Field8228
-	}
-	return nil
-}
-
-func (x *Message8184) GetField8229() bool {
-	if x != nil && x.Field8229 != nil {
-		return *x.Field8229
-	}
-	return false
-}
-
-func (x *Message8184) GetField8230() []*Message8183 {
-	if x != nil {
-		return x.Field8230
-	}
-	return nil
-}
-
-type Message8477 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8486 *Message7966 `protobuf:"bytes,1,opt,name=field8486" json:"field8486,omitempty"`
-	Field8487 *int64       `protobuf:"varint,2,opt,name=field8487" json:"field8487,omitempty"`
-	Field8488 *string      `protobuf:"bytes,3,opt,name=field8488" json:"field8488,omitempty"`
-}
-
-func (x *Message8477) Reset() {
-	*x = Message8477{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[36]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8477) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8477) ProtoMessage() {}
-
-func (x *Message8477) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[36]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8477.ProtoReflect.Descriptor instead.
-func (*Message8477) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{36}
-}
-
-func (x *Message8477) GetField8486() *Message7966 {
-	if x != nil {
-		return x.Field8486
-	}
-	return nil
-}
-
-func (x *Message8477) GetField8487() int64 {
-	if x != nil && x.Field8487 != nil {
-		return *x.Field8487
-	}
-	return 0
-}
-
-func (x *Message8477) GetField8488() string {
-	if x != nil && x.Field8488 != nil {
-		return *x.Field8488
-	}
-	return ""
-}
-
-type Message8454 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8465 *Message8449 `protobuf:"bytes,1,opt,name=field8465" json:"field8465,omitempty"`
-	Field8466 *int64       `protobuf:"varint,3,opt,name=field8466" json:"field8466,omitempty"`
-	Field8467 *int32       `protobuf:"varint,4,opt,name=field8467" json:"field8467,omitempty"`
-	Field8468 *bool        `protobuf:"varint,5,opt,name=field8468" json:"field8468,omitempty"`
-}
-
-func (x *Message8454) Reset() {
-	*x = Message8454{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[37]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8454) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8454) ProtoMessage() {}
-
-func (x *Message8454) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[37]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8454.ProtoReflect.Descriptor instead.
-func (*Message8454) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{37}
-}
-
-func (x *Message8454) GetField8465() *Message8449 {
-	if x != nil {
-		return x.Field8465
-	}
-	return nil
-}
-
-func (x *Message8454) GetField8466() int64 {
-	if x != nil && x.Field8466 != nil {
-		return *x.Field8466
-	}
-	return 0
-}
-
-func (x *Message8454) GetField8467() int32 {
-	if x != nil && x.Field8467 != nil {
-		return *x.Field8467
-	}
-	return 0
-}
-
-func (x *Message8454) GetField8468() bool {
-	if x != nil && x.Field8468 != nil {
-		return *x.Field8468
-	}
-	return false
-}
-
-type Message8476 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8483 *string `protobuf:"bytes,1,opt,name=field8483" json:"field8483,omitempty"`
-	Field8484 *string `protobuf:"bytes,2,opt,name=field8484" json:"field8484,omitempty"`
-	Field8485 *string `protobuf:"bytes,3,opt,name=field8485" json:"field8485,omitempty"`
-}
-
-func (x *Message8476) Reset() {
-	*x = Message8476{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[38]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8476) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8476) ProtoMessage() {}
-
-func (x *Message8476) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[38]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8476.ProtoReflect.Descriptor instead.
-func (*Message8476) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{38}
-}
-
-func (x *Message8476) GetField8483() string {
-	if x != nil && x.Field8483 != nil {
-		return *x.Field8483
-	}
-	return ""
-}
-
-func (x *Message8476) GetField8484() string {
-	if x != nil && x.Field8484 != nil {
-		return *x.Field8484
-	}
-	return ""
-}
-
-func (x *Message8476) GetField8485() string {
-	if x != nil && x.Field8485 != nil {
-		return *x.Field8485
-	}
-	return ""
-}
-
-type Message8455 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8470 *Message8449        `protobuf:"bytes,1,opt,name=field8470" json:"field8470,omitempty"`
-	Field8471 []*Message8456      `protobuf:"bytes,2,rep,name=field8471" json:"field8471,omitempty"`
-	Field8472 *Message8457        `protobuf:"bytes,5,opt,name=field8472" json:"field8472,omitempty"`
-	Field8473 *UnusedEmptyMessage `protobuf:"bytes,6,opt,name=field8473" json:"field8473,omitempty"`
-}
-
-func (x *Message8455) Reset() {
-	*x = Message8455{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[39]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8455) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8455) ProtoMessage() {}
-
-func (x *Message8455) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[39]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8455.ProtoReflect.Descriptor instead.
-func (*Message8455) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{39}
-}
-
-func (x *Message8455) GetField8470() *Message8449 {
-	if x != nil {
-		return x.Field8470
-	}
-	return nil
-}
-
-func (x *Message8455) GetField8471() []*Message8456 {
-	if x != nil {
-		return x.Field8471
-	}
-	return nil
-}
-
-func (x *Message8455) GetField8472() *Message8457 {
-	if x != nil {
-		return x.Field8472
-	}
-	return nil
-}
-
-func (x *Message8455) GetField8473() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8473
-	}
-	return nil
-}
-
-type Message8475 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8481 *string `protobuf:"bytes,1,opt,name=field8481" json:"field8481,omitempty"`
-	Field8482 *int64  `protobuf:"varint,2,opt,name=field8482" json:"field8482,omitempty"`
-}
-
-func (x *Message8475) Reset() {
-	*x = Message8475{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[40]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8475) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8475) ProtoMessage() {}
-
-func (x *Message8475) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[40]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8475.ProtoReflect.Descriptor instead.
-func (*Message8475) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{40}
-}
-
-func (x *Message8475) GetField8481() string {
-	if x != nil && x.Field8481 != nil {
-		return *x.Field8481
-	}
-	return ""
-}
-
-func (x *Message8475) GetField8482() int64 {
-	if x != nil && x.Field8482 != nil {
-		return *x.Field8482
-	}
-	return 0
-}
-
-type Message12559 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message12559) Reset() {
-	*x = Message12559{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[41]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12559) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12559) ProtoMessage() {}
-
-func (x *Message12559) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[41]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12559.ProtoReflect.Descriptor instead.
-func (*Message12559) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{41}
-}
-
-type Message12817 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12826 *int32 `protobuf:"varint,1,opt,name=field12826" json:"field12826,omitempty"`
-	Field12827 *int32 `protobuf:"varint,2,opt,name=field12827" json:"field12827,omitempty"`
-	Field12828 *int32 `protobuf:"varint,3,opt,name=field12828" json:"field12828,omitempty"`
-}
-
-func (x *Message12817) Reset() {
-	*x = Message12817{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[42]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12817) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12817) ProtoMessage() {}
-
-func (x *Message12817) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[42]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12817.ProtoReflect.Descriptor instead.
-func (*Message12817) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{42}
-}
-
-func (x *Message12817) GetField12826() int32 {
-	if x != nil && x.Field12826 != nil {
-		return *x.Field12826
-	}
-	return 0
-}
-
-func (x *Message12817) GetField12827() int32 {
-	if x != nil && x.Field12827 != nil {
-		return *x.Field12827
-	}
-	return 0
-}
-
-func (x *Message12817) GetField12828() int32 {
-	if x != nil && x.Field12828 != nil {
-		return *x.Field12828
-	}
-	return 0
-}
-
-type Message16480 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field16490 *Message13358 `protobuf:"bytes,1,opt,name=field16490" json:"field16490,omitempty"`
-	Field16491 *Enum16042    `protobuf:"varint,2,opt,name=field16491,enum=benchmarks.google_message3.Enum16042" json:"field16491,omitempty"`
-	Field16492 *Message13912 `protobuf:"bytes,3,opt,name=field16492" json:"field16492,omitempty"`
-	Field16493 *string       `protobuf:"bytes,4,opt,name=field16493" json:"field16493,omitempty"`
-	Field16494 *string       `protobuf:"bytes,5,opt,name=field16494" json:"field16494,omitempty"`
-	Field16495 *string       `protobuf:"bytes,6,opt,name=field16495" json:"field16495,omitempty"`
-	Field16496 *string       `protobuf:"bytes,7,opt,name=field16496" json:"field16496,omitempty"`
-	Field16497 *Message13358 `protobuf:"bytes,8,opt,name=field16497" json:"field16497,omitempty"`
-	Field16498 *uint32       `protobuf:"fixed32,9,opt,name=field16498" json:"field16498,omitempty"`
-}
-
-func (x *Message16480) Reset() {
-	*x = Message16480{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[43]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message16480) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message16480) ProtoMessage() {}
-
-func (x *Message16480) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[43]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message16480.ProtoReflect.Descriptor instead.
-func (*Message16480) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{43}
-}
-
-func (x *Message16480) GetField16490() *Message13358 {
-	if x != nil {
-		return x.Field16490
-	}
-	return nil
-}
-
-func (x *Message16480) GetField16491() Enum16042 {
-	if x != nil && x.Field16491 != nil {
-		return *x.Field16491
-	}
-	return Enum16042_ENUM_VALUE16043
-}
-
-func (x *Message16480) GetField16492() *Message13912 {
-	if x != nil {
-		return x.Field16492
-	}
-	return nil
-}
-
-func (x *Message16480) GetField16493() string {
-	if x != nil && x.Field16493 != nil {
-		return *x.Field16493
-	}
-	return ""
-}
-
-func (x *Message16480) GetField16494() string {
-	if x != nil && x.Field16494 != nil {
-		return *x.Field16494
-	}
-	return ""
-}
-
-func (x *Message16480) GetField16495() string {
-	if x != nil && x.Field16495 != nil {
-		return *x.Field16495
-	}
-	return ""
-}
-
-func (x *Message16480) GetField16496() string {
-	if x != nil && x.Field16496 != nil {
-		return *x.Field16496
-	}
-	return ""
-}
-
-func (x *Message16480) GetField16497() *Message13358 {
-	if x != nil {
-		return x.Field16497
-	}
-	return nil
-}
-
-func (x *Message16480) GetField16498() uint32 {
-	if x != nil && x.Field16498 != nil {
-		return *x.Field16498
-	}
-	return 0
-}
-
-type Message24317 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field24446 *string               `protobuf:"bytes,1,opt,name=field24446" json:"field24446,omitempty"`
-	Field24447 *Message24312         `protobuf:"bytes,2,opt,name=field24447" json:"field24447,omitempty"`
-	Field24448 []*Message24315       `protobuf:"bytes,3,rep,name=field24448" json:"field24448,omitempty"`
-	Field24449 []*Message24313       `protobuf:"bytes,4,rep,name=field24449" json:"field24449,omitempty"`
-	Field24450 []*Message24316       `protobuf:"bytes,5,rep,name=field24450" json:"field24450,omitempty"`
-	Field24451 []*UnusedEmptyMessage `protobuf:"bytes,6,rep,name=field24451" json:"field24451,omitempty"`
-	Field24452 *UnusedEmptyMessage   `protobuf:"bytes,7,opt,name=field24452" json:"field24452,omitempty"`
-	Field24453 []string              `protobuf:"bytes,8,rep,name=field24453" json:"field24453,omitempty"`
-	Field24454 []string              `protobuf:"bytes,9,rep,name=field24454" json:"field24454,omitempty"`
-	Field24455 []string              `protobuf:"bytes,10,rep,name=field24455" json:"field24455,omitempty"`
-	Field24456 []string              `protobuf:"bytes,28,rep,name=field24456" json:"field24456,omitempty"`
-	Field24457 *string               `protobuf:"bytes,11,opt,name=field24457" json:"field24457,omitempty"`
-	Field24458 *string               `protobuf:"bytes,12,opt,name=field24458" json:"field24458,omitempty"`
-	Field24459 *string               `protobuf:"bytes,13,opt,name=field24459" json:"field24459,omitempty"`
-	Field24460 *string               `protobuf:"bytes,14,opt,name=field24460" json:"field24460,omitempty"`
-	Field24461 []string              `protobuf:"bytes,15,rep,name=field24461" json:"field24461,omitempty"`
-	Field24462 *string               `protobuf:"bytes,16,opt,name=field24462" json:"field24462,omitempty"`
-	Field24463 []string              `protobuf:"bytes,17,rep,name=field24463" json:"field24463,omitempty"`
-	Field24464 []string              `protobuf:"bytes,18,rep,name=field24464" json:"field24464,omitempty"`
-	Field24465 []string              `protobuf:"bytes,19,rep,name=field24465" json:"field24465,omitempty"`
-	Field24466 []string              `protobuf:"bytes,20,rep,name=field24466" json:"field24466,omitempty"`
-	Field24467 []string              `protobuf:"bytes,21,rep,name=field24467" json:"field24467,omitempty"`
-	Field24468 []string              `protobuf:"bytes,22,rep,name=field24468" json:"field24468,omitempty"`
-	Field24469 []string              `protobuf:"bytes,23,rep,name=field24469" json:"field24469,omitempty"`
-	Field24470 []string              `protobuf:"bytes,24,rep,name=field24470" json:"field24470,omitempty"`
-	Field24471 *string               `protobuf:"bytes,25,opt,name=field24471" json:"field24471,omitempty"`
-	Field24472 *string               `protobuf:"bytes,26,opt,name=field24472" json:"field24472,omitempty"`
-	Field24473 []string              `protobuf:"bytes,27,rep,name=field24473" json:"field24473,omitempty"`
-	Field24474 *bool                 `protobuf:"varint,40,opt,name=field24474" json:"field24474,omitempty"`
-}
-
-func (x *Message24317) Reset() {
-	*x = Message24317{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[44]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message24317) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message24317) ProtoMessage() {}
-
-func (x *Message24317) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[44]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message24317.ProtoReflect.Descriptor instead.
-func (*Message24317) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{44}
-}
-
-func (x *Message24317) GetField24446() string {
-	if x != nil && x.Field24446 != nil {
-		return *x.Field24446
-	}
-	return ""
-}
-
-func (x *Message24317) GetField24447() *Message24312 {
-	if x != nil {
-		return x.Field24447
-	}
-	return nil
-}
-
-func (x *Message24317) GetField24448() []*Message24315 {
-	if x != nil {
-		return x.Field24448
-	}
-	return nil
-}
-
-func (x *Message24317) GetField24449() []*Message24313 {
-	if x != nil {
-		return x.Field24449
-	}
-	return nil
-}
-
-func (x *Message24317) GetField24450() []*Message24316 {
-	if x != nil {
-		return x.Field24450
-	}
-	return nil
-}
-
-func (x *Message24317) GetField24451() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24451
-	}
-	return nil
-}
-
-func (x *Message24317) GetField24452() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field24452
-	}
-	return nil
-}
-
-func (x *Message24317) GetField24453() []string {
-	if x != nil {
-		return x.Field24453
-	}
-	return nil
-}
-
-func (x *Message24317) GetField24454() []string {
-	if x != nil {
-		return x.Field24454
-	}
-	return nil
-}
-
-func (x *Message24317) GetField24455() []string {
-	if x != nil {
-		return x.Field24455
-	}
-	return nil
-}
-
-func (x *Message24317) GetField24456() []string {
-	if x != nil {
-		return x.Field24456
-	}
-	return nil
-}
-
-func (x *Message24317) GetField24457() string {
-	if x != nil && x.Field24457 != nil {
-		return *x.Field24457
-	}
-	return ""
-}
-
-func (x *Message24317) GetField24458() string {
-	if x != nil && x.Field24458 != nil {
-		return *x.Field24458
-	}
-	return ""
-}
-
-func (x *Message24317) GetField24459() string {
-	if x != nil && x.Field24459 != nil {
-		return *x.Field24459
-	}
-	return ""
-}
-
-func (x *Message24317) GetField24460() string {
-	if x != nil && x.Field24460 != nil {
-		return *x.Field24460
-	}
-	return ""
-}
-
-func (x *Message24317) GetField24461() []string {
-	if x != nil {
-		return x.Field24461
-	}
-	return nil
-}
-
-func (x *Message24317) GetField24462() string {
-	if x != nil && x.Field24462 != nil {
-		return *x.Field24462
-	}
-	return ""
-}
-
-func (x *Message24317) GetField24463() []string {
-	if x != nil {
-		return x.Field24463
-	}
-	return nil
-}
-
-func (x *Message24317) GetField24464() []string {
-	if x != nil {
-		return x.Field24464
-	}
-	return nil
-}
-
-func (x *Message24317) GetField24465() []string {
-	if x != nil {
-		return x.Field24465
-	}
-	return nil
-}
-
-func (x *Message24317) GetField24466() []string {
-	if x != nil {
-		return x.Field24466
-	}
-	return nil
-}
-
-func (x *Message24317) GetField24467() []string {
-	if x != nil {
-		return x.Field24467
-	}
-	return nil
-}
-
-func (x *Message24317) GetField24468() []string {
-	if x != nil {
-		return x.Field24468
-	}
-	return nil
-}
-
-func (x *Message24317) GetField24469() []string {
-	if x != nil {
-		return x.Field24469
-	}
-	return nil
-}
-
-func (x *Message24317) GetField24470() []string {
-	if x != nil {
-		return x.Field24470
-	}
-	return nil
-}
-
-func (x *Message24317) GetField24471() string {
-	if x != nil && x.Field24471 != nil {
-		return *x.Field24471
-	}
-	return ""
-}
-
-func (x *Message24317) GetField24472() string {
-	if x != nil && x.Field24472 != nil {
-		return *x.Field24472
-	}
-	return ""
-}
-
-func (x *Message24317) GetField24473() []string {
-	if x != nil {
-		return x.Field24473
-	}
-	return nil
-}
-
-func (x *Message24317) GetField24474() bool {
-	if x != nil && x.Field24474 != nil {
-		return *x.Field24474
-	}
-	return false
-}
-
-type Message33958_Message33959 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field33982 *string   `protobuf:"bytes,3,req,name=field33982" json:"field33982,omitempty"`
-	Field33983 *string   `protobuf:"bytes,4,opt,name=field33983" json:"field33983,omitempty"`
-	Field33984 *string   `protobuf:"bytes,5,opt,name=field33984" json:"field33984,omitempty"`
-	Field33985 *uint64   `protobuf:"fixed64,8,opt,name=field33985" json:"field33985,omitempty"`
-	Field33986 *bool     `protobuf:"varint,10,opt,name=field33986" json:"field33986,omitempty"`
-	Field33987 *Message0 `protobuf:"bytes,6,opt,name=field33987" json:"field33987,omitempty"`
-}
-
-func (x *Message33958_Message33959) Reset() {
-	*x = Message33958_Message33959{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[45]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message33958_Message33959) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message33958_Message33959) ProtoMessage() {}
-
-func (x *Message33958_Message33959) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[45]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message33958_Message33959.ProtoReflect.Descriptor instead.
-func (*Message33958_Message33959) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{8, 0}
-}
-
-func (x *Message33958_Message33959) GetField33982() string {
-	if x != nil && x.Field33982 != nil {
-		return *x.Field33982
-	}
-	return ""
-}
-
-func (x *Message33958_Message33959) GetField33983() string {
-	if x != nil && x.Field33983 != nil {
-		return *x.Field33983
-	}
-	return ""
-}
-
-func (x *Message33958_Message33959) GetField33984() string {
-	if x != nil && x.Field33984 != nil {
-		return *x.Field33984
-	}
-	return ""
-}
-
-func (x *Message33958_Message33959) GetField33985() uint64 {
-	if x != nil && x.Field33985 != nil {
-		return *x.Field33985
-	}
-	return 0
-}
-
-func (x *Message33958_Message33959) GetField33986() bool {
-	if x != nil && x.Field33986 != nil {
-		return *x.Field33986
-	}
-	return false
-}
-
-func (x *Message33958_Message33959) GetField33987() *Message0 {
-	if x != nil {
-		return x.Field33987
-	}
-	return nil
-}
-
-type Message13083_Message13084 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field13107 *float32    `protobuf:"fixed32,3,req,name=field13107" json:"field13107,omitempty"`
-	Field13108 *int32      `protobuf:"varint,4,req,name=field13108" json:"field13108,omitempty"`
-	Field13109 *float32    `protobuf:"fixed32,5,opt,name=field13109" json:"field13109,omitempty"`
-	Field13110 []Enum13092 `protobuf:"varint,6,rep,name=field13110,enum=benchmarks.google_message3.Enum13092" json:"field13110,omitempty"`
-}
-
-func (x *Message13083_Message13084) Reset() {
-	*x = Message13083_Message13084{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[46]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message13083_Message13084) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message13083_Message13084) ProtoMessage() {}
-
-func (x *Message13083_Message13084) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[46]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message13083_Message13084.ProtoReflect.Descriptor instead.
-func (*Message13083_Message13084) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{12, 0}
-}
-
-func (x *Message13083_Message13084) GetField13107() float32 {
-	if x != nil && x.Field13107 != nil {
-		return *x.Field13107
-	}
-	return 0
-}
-
-func (x *Message13083_Message13084) GetField13108() int32 {
-	if x != nil && x.Field13108 != nil {
-		return *x.Field13108
-	}
-	return 0
-}
-
-func (x *Message13083_Message13084) GetField13109() float32 {
-	if x != nil && x.Field13109 != nil {
-		return *x.Field13109
-	}
-	return 0
-}
-
-func (x *Message13083_Message13084) GetField13110() []Enum13092 {
-	if x != nil {
-		return x.Field13110
-	}
-	return nil
-}
-
-type Message13083_Message13085 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message13083_Message13085) Reset() {
-	*x = Message13083_Message13085{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[47]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message13083_Message13085) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message13083_Message13085) ProtoMessage() {}
-
-func (x *Message13083_Message13085) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[47]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message13083_Message13085.ProtoReflect.Descriptor instead.
-func (*Message13083_Message13085) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{12, 1}
-}
-
-type Message13083_Message13086 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message13083_Message13086) Reset() {
-	*x = Message13083_Message13086{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[48]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message13083_Message13086) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message13083_Message13086) ProtoMessage() {}
-
-func (x *Message13083_Message13086) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[48]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message13083_Message13086.ProtoReflect.Descriptor instead.
-func (*Message13083_Message13086) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{12, 2}
-}
-
-type Message13083_Message13087 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message13083_Message13087) Reset() {
-	*x = Message13083_Message13087{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[49]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message13083_Message13087) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message13083_Message13087) ProtoMessage() {}
-
-func (x *Message13083_Message13087) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[49]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message13083_Message13087.ProtoReflect.Descriptor instead.
-func (*Message13083_Message13087) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{12, 3}
-}
-
-type Message13088_Message13089 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field13139 *string  `protobuf:"bytes,2,req,name=field13139" json:"field13139,omitempty"`
-	Field13140 *float32 `protobuf:"fixed32,3,opt,name=field13140" json:"field13140,omitempty"`
-}
-
-func (x *Message13088_Message13089) Reset() {
-	*x = Message13088_Message13089{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[50]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message13088_Message13089) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message13088_Message13089) ProtoMessage() {}
-
-func (x *Message13088_Message13089) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[50]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message13088_Message13089.ProtoReflect.Descriptor instead.
-func (*Message13088_Message13089) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{13, 0}
-}
-
-func (x *Message13088_Message13089) GetField13139() string {
-	if x != nil && x.Field13139 != nil {
-		return *x.Field13139
-	}
-	return ""
-}
-
-func (x *Message13088_Message13089) GetField13140() float32 {
-	if x != nil && x.Field13140 != nil {
-		return *x.Field13140
-	}
-	return 0
-}
-
-type Message18253_Message18254 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field18362 *uint64  `protobuf:"fixed64,2,req,name=field18362" json:"field18362,omitempty"`
-	Field18363 *float64 `protobuf:"fixed64,3,req,name=field18363" json:"field18363,omitempty"`
-}
-
-func (x *Message18253_Message18254) Reset() {
-	*x = Message18253_Message18254{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[51]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message18253_Message18254) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message18253_Message18254) ProtoMessage() {}
-
-func (x *Message18253_Message18254) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[51]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message18253_Message18254.ProtoReflect.Descriptor instead.
-func (*Message18253_Message18254) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{18, 0}
-}
-
-func (x *Message18253_Message18254) GetField18362() uint64 {
-	if x != nil && x.Field18362 != nil {
-		return *x.Field18362
-	}
-	return 0
-}
-
-func (x *Message18253_Message18254) GetField18363() float64 {
-	if x != nil && x.Field18363 != nil {
-		return *x.Field18363
-	}
-	return 0
-}
-
-type Message16816_Message16817 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message16816_Message16817) Reset() {
-	*x = Message16816_Message16817{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[52]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message16816_Message16817) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message16816_Message16817) ProtoMessage() {}
-
-func (x *Message16816_Message16817) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[52]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message16816_Message16817.ProtoReflect.Descriptor instead.
-func (*Message16816_Message16817) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{20, 0}
-}
-
-type Message16816_Message16818 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message16816_Message16818) Reset() {
-	*x = Message16816_Message16818{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[53]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message16816_Message16818) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message16816_Message16818) ProtoMessage() {}
-
-func (x *Message16816_Message16818) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[53]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message16816_Message16818.ProtoReflect.Descriptor instead.
-func (*Message16816_Message16818) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP(), []int{20, 1}
-}
-
-var file_datasets_google_message3_benchmark_message3_4_proto_extTypes = []protoimpl.ExtensionInfo{
-	{
-		ExtendedType:  (*Message0)(nil),
-		ExtensionType: (*Message33958)(nil),
-		Field:         10747482,
-		Name:          "benchmarks.google_message3.Message33958.field33981",
-		Tag:           "bytes,10747482,opt,name=field33981",
-		Filename:      "datasets/google_message3/benchmark_message3_4.proto",
-	},
-	{
-		ExtendedType:  (*Message8301)(nil),
-		ExtensionType: (*Message8454)(nil),
-		Field:         66,
-		Name:          "benchmarks.google_message3.Message8454.field8469",
-		Tag:           "bytes,66,opt,name=field8469",
-		Filename:      "datasets/google_message3/benchmark_message3_4.proto",
-	},
-	{
-		ExtendedType:  (*Message8302)(nil),
-		ExtensionType: (*Message8455)(nil),
-		Field:         66,
-		Name:          "benchmarks.google_message3.Message8455.field8474",
-		Tag:           "bytes,66,opt,name=field8474",
-		Filename:      "datasets/google_message3/benchmark_message3_4.proto",
-	},
-}
-
-// Extension fields to Message0.
-var (
-	// optional benchmarks.google_message3.Message33958 field33981 = 10747482;
-	E_Message33958_Field33981 = &file_datasets_google_message3_benchmark_message3_4_proto_extTypes[0]
-)
-
-// Extension fields to Message8301.
-var (
-	// optional benchmarks.google_message3.Message8454 field8469 = 66;
-	E_Message8454_Field8469 = &file_datasets_google_message3_benchmark_message3_4_proto_extTypes[1]
-)
-
-// Extension fields to Message8302.
-var (
-	// optional benchmarks.google_message3.Message8455 field8474 = 66;
-	E_Message8455_Field8474 = &file_datasets_google_message3_benchmark_message3_4_proto_extTypes[2]
-)
-
-var File_datasets_google_message3_benchmark_message3_4_proto protoreflect.FileDescriptor
-
-var file_datasets_google_message3_benchmark_message3_4_proto_rawDesc = []byte{
-	0x0a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x34, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x35,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73,
-	0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x5f, 0x36, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x64, 0x61, 0x74,
-	0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x37, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x38, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x0e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x32, 0x34, 0x33, 0x34, 0x36, 0x22, 0x58, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x32, 0x34, 0x34, 0x30, 0x31, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x36, 0x37, 0x39, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34,
-	0x34, 0x30, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x37, 0x39, 0x22,
-	0x58, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x34, 0x30, 0x32, 0x12,
-	0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x38, 0x30, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x34, 0x30, 0x30, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x38, 0x30, 0x22, 0xb2, 0x06, 0x0a, 0x0c, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33, 0x37, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x30, 0x33, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x30, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x30, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x30, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x30, 0x35, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x30, 0x35, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x30, 0x36, 0x18, 0x04, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x28,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x32, 0x34, 0x33, 0x38, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x36, 0x30, 0x36, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36,
-	0x30, 0x37, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74,
-	0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x36, 0x30, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36,
-	0x30, 0x38, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x36, 0x30, 0x38, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36,
-	0x30, 0x39, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33,
-	0x38, 0x31, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x30, 0x39, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x31, 0x30, 0x18, 0x08, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x31, 0x30, 0x12, 0x4e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x31, 0x31, 0x18, 0x11, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x31, 0x31, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x31, 0x32, 0x18, 0x09, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x31, 0x32, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x31, 0x33, 0x18, 0x0a, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x31, 0x33, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x31, 0x34, 0x18, 0x0b, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x31, 0x34, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x31, 0x35, 0x18, 0x0e, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x31, 0x35, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x31, 0x36, 0x18, 0x0c, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x31, 0x36, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x31, 0x37, 0x18, 0x10, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x31, 0x37, 0x12, 0x4e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x31, 0x38, 0x18, 0x0d, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x31, 0x38, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x31, 0x39, 0x18, 0x0f, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x31, 0x39, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x32, 0x30, 0x18, 0x12, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x32, 0x30, 0x22, 0x4e,
-	0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x37, 0x33, 0x35, 0x38, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x31, 0x35, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x31, 0x35, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x31, 0x36, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x34, 0x31, 0x36, 0x22, 0xee,
-	0x04, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x34, 0x33, 0x38, 0x31, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x33, 0x39, 0x38, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x33, 0x39, 0x38, 0x12,
-	0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x33, 0x39, 0x39, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x33, 0x39, 0x39, 0x12,
-	0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34, 0x30, 0x30, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34, 0x30, 0x30, 0x12,
-	0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34, 0x30, 0x31, 0x18, 0x04, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34, 0x30, 0x31, 0x12,
-	0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34, 0x30, 0x32, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34, 0x30, 0x32, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34, 0x30, 0x33, 0x18, 0x06, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34, 0x30, 0x33, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34, 0x30, 0x34, 0x18, 0x07, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34, 0x30, 0x34, 0x12,
-	0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34, 0x30, 0x35, 0x18, 0x08, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34, 0x30, 0x35, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34, 0x30, 0x36, 0x18, 0x09, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34, 0x30, 0x36, 0x12,
-	0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34, 0x30, 0x37, 0x18, 0x0a, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x34, 0x30, 0x37, 0x22,
-	0x9e, 0x02, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x34, 0x36, 0x31, 0x39,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x34, 0x31, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x34, 0x31,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x34, 0x32, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x34, 0x32,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x34, 0x33, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x34, 0x33,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x34, 0x34, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x34, 0x34,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x34, 0x35, 0x18, 0x0b,
-	0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x34, 0x35,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x34, 0x36, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x34, 0x36,
-	0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x34, 0x37, 0x18, 0x64,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x34, 0x36, 0x34, 0x37,
-	0x22, 0xc8, 0x0c, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x33, 0x30, 0x12,
-	0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x39, 0x37, 0x18, 0x13, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x39, 0x37, 0x12, 0x1a, 0x0a, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x39, 0x38, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x39, 0x38, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x39, 0x39, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x39, 0x39, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x30, 0x18,
-	0x15, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x30, 0x12,
-	0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x31, 0x18, 0x1e, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x32, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x30, 0x33, 0x18, 0x20, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x30, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x34, 0x18,
-	0x10, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x34, 0x12,
-	0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x35, 0x18, 0x06, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x39, 0x37, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x30, 0x35, 0x12, 0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x36, 0x18,
-	0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x30, 0x34, 0x52, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x36, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x30, 0x37, 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x30, 0x37, 0x12, 0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x38, 0x18,
-	0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x30, 0x33, 0x52, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x38, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x30, 0x39, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x30, 0x39, 0x12, 0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x30, 0x18,
-	0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x31, 0x36, 0x52, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x30, 0x12, 0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x31, 0x31, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x31,
-	0x38, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x32, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x32, 0x12, 0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x31, 0x33, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x31,
-	0x35, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x34, 0x18, 0x11, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x31, 0x35, 0x18, 0x17, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x31, 0x35, 0x12, 0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x36, 0x18,
-	0x18, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x31, 0x39, 0x52, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x36, 0x12, 0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x31, 0x37, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x32,
-	0x38, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x37, 0x12, 0x42, 0x0a, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x38, 0x18, 0x23, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x37, 0x30, 0x32, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x38, 0x12,
-	0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x39, 0x18, 0x24, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x39, 0x12, 0x1a, 0x0a, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x30, 0x18, 0x25, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x30, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x32, 0x31, 0x18, 0x26, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x32, 0x31, 0x12, 0x4a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x32, 0x18,
-	0x27, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x32, 0x12,
-	0x4a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x33, 0x18, 0x01, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x33, 0x12, 0x4a, 0x0a, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x34, 0x12, 0x4a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x32, 0x35, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70,
-	0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x32, 0x35, 0x12, 0x4a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x36, 0x18,
-	0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x36, 0x12,
-	0x4a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x37, 0x18, 0x0d, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x37, 0x12, 0x1a, 0x0a, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x38, 0x18, 0x16, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x38, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x32, 0x39, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x32, 0x39, 0x2a, 0x04, 0x08, 0x19, 0x10, 0x1a, 0x2a, 0x04, 0x08, 0x1d, 0x10, 0x1e, 0x2a,
-	0x04, 0x08, 0x22, 0x10, 0x23, 0x2a, 0x04, 0x08, 0x0f, 0x10, 0x10, 0x22, 0xda, 0x04, 0x0a, 0x0c,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x33, 0x39, 0x35, 0x38, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x39, 0x37, 0x37, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x39, 0x37, 0x37, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x39, 0x37, 0x38, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x39, 0x37, 0x38, 0x12, 0x59, 0x0a, 0x0c,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x33, 0x39, 0x35, 0x39, 0x18, 0x02, 0x20, 0x03,
-	0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x33, 0x39, 0x35, 0x38, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x33, 0x39, 0x35, 0x39, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x33, 0x39, 0x35, 0x39, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x33, 0x39, 0x38, 0x30, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x33, 0x39,
-	0x36, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x39, 0x38, 0x30, 0x1a, 0xf4,
-	0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x33, 0x39, 0x35, 0x39, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x39, 0x38, 0x32, 0x18, 0x03, 0x20,
-	0x02, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x39, 0x38, 0x32, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x39, 0x38, 0x33, 0x18, 0x04, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x39, 0x38, 0x33, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x39, 0x38, 0x34, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x39, 0x38, 0x34, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x39, 0x38, 0x35, 0x18, 0x08, 0x20,
-	0x01, 0x28, 0x06, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x39, 0x38, 0x35, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x39, 0x38, 0x36, 0x18, 0x0a, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x39, 0x38, 0x36, 0x12,
-	0x44, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x39, 0x38, 0x37, 0x18, 0x06, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x33, 0x39, 0x38, 0x37, 0x32, 0x71, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33,
-	0x39, 0x38, 0x31, 0x12, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x18, 0xda, 0xfc, 0x8f, 0x05, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x33, 0x39, 0x35, 0x38, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x33, 0x39, 0x38, 0x31, 0x22, 0xb3, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x36, 0x36, 0x33, 0x37, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x36, 0x37, 0x30, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45,
-	0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x36, 0x37, 0x30, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x36, 0x37, 0x31, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70,
-	0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x36, 0x37, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x37,
-	0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36,
-	0x37, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x37, 0x33, 0x18,
-	0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x37, 0x33,
-	0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x37, 0x34, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x37, 0x34, 0x22, 0xea,
-	0x06, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x36, 0x34, 0x33, 0x12, 0x4c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x38, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x38, 0x33, 0x12, 0x4c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x38, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x38, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x36, 0x38, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x38, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x36, 0x38, 0x36, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x36, 0x38, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x36, 0x38, 0x37, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x36, 0x38, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x38,
-	0x38, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36,
-	0x38, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x38, 0x39, 0x18,
-	0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x38, 0x39,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x30, 0x18, 0x0a, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x30, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x31, 0x18, 0x0b, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x31, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x33, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x36, 0x39, 0x34, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x36, 0x35, 0x37, 0x38, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x34, 0x12,
-	0x44, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x35, 0x18, 0x10, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x36, 0x39, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36,
-	0x39, 0x36, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x36, 0x39, 0x36, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x37,
-	0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39,
-	0x37, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x38, 0x18, 0x13,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x38, 0x12,
-	0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x39, 0x18, 0x14, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x39, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x30, 0x30, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x30, 0x30, 0x22, 0xf8, 0x06, 0x0a, 0x0b,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x31, 0x32, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x35, 0x32, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x35, 0x32, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x31, 0x35, 0x33, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x31, 0x35, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x31, 0x35, 0x34, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x31, 0x35, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31,
-	0x35, 0x35, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x31, 0x35, 0x35, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x35, 0x36,
-	0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x30, 0x32, 0x34, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x35, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x31, 0x35, 0x37, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x35, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x31, 0x35, 0x38, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x31, 0x35, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x31, 0x35, 0x39, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x31, 0x35, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x36,
-	0x30, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31,
-	0x36, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x36, 0x31, 0x18,
-	0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x36, 0x31,
-	0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x36, 0x32, 0x18, 0x07, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x30, 0x35, 0x32, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x31, 0x36, 0x32, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x31, 0x36, 0x33, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d,
-	0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x31, 0x36, 0x33, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31,
-	0x36, 0x34, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x36, 0x30, 0x36, 0x35, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x36, 0x34, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x31, 0x36, 0x35, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x31, 0x36, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x31, 0x36, 0x36, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x31, 0x36, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31,
-	0x36, 0x37, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x31, 0x36, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x36, 0x38,
-	0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x36,
-	0x38, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x36, 0x39, 0x18, 0x11,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x30, 0x35, 0x34, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x36, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x31, 0x37, 0x30, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x31, 0x37, 0x30, 0x22, 0xd2, 0x06, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x33, 0x30, 0x38, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x33, 0x30, 0x39, 0x36, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x33, 0x30, 0x39, 0x36, 0x12, 0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x33, 0x30, 0x38, 0x34, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x35, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x33, 0x30, 0x38, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x33, 0x30, 0x38, 0x34, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x30,
-	0x38, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x30, 0x39, 0x38,
-	0x18, 0x2c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x30,
-	0x39, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x30, 0x39, 0x39,
-	0x18, 0x2d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x30,
-	0x39, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x31, 0x30, 0x30,
-	0x18, 0x2e, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x31,
-	0x30, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x31, 0x30, 0x31,
-	0x18, 0x2f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x31,
-	0x30, 0x31, 0x12, 0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x30,
-	0x38, 0x35, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x30,
-	0x38, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x30, 0x38, 0x35, 0x52,
-	0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x30, 0x38, 0x35, 0x12, 0x59, 0x0a,
-	0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x30, 0x38, 0x36, 0x18, 0x17, 0x20,
-	0x03, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x30, 0x38, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x30, 0x38, 0x36, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x33, 0x30, 0x38, 0x36, 0x12, 0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x33, 0x30, 0x38, 0x37, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x35,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x33, 0x30, 0x38, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x33, 0x30, 0x38, 0x37, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33,
-	0x30, 0x38, 0x37, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x31, 0x30,
-	0x35, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33,
-	0x31, 0x30, 0x35, 0x1a, 0xb5, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x33, 0x30, 0x38, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x31,
-	0x30, 0x37, 0x18, 0x03, 0x20, 0x02, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x33, 0x31, 0x30, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x31,
-	0x30, 0x38, 0x18, 0x04, 0x20, 0x02, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x33, 0x31, 0x30, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x31,
-	0x30, 0x39, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x33, 0x31, 0x30, 0x39, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x31,
-	0x31, 0x30, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x33, 0x30, 0x39, 0x32, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x31, 0x31, 0x30, 0x1a, 0x0e, 0x0a, 0x0c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x30, 0x38, 0x35, 0x1a, 0x0e, 0x0a, 0x0c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x30, 0x38, 0x36, 0x1a, 0x0e, 0x0a, 0x0c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x30, 0x38, 0x37, 0x22, 0xf9, 0x01, 0x0a, 0x0c,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x30, 0x38, 0x38, 0x12, 0x59, 0x0a, 0x0c,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x30, 0x38, 0x39, 0x18, 0x01, 0x20, 0x03,
-	0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x30, 0x38, 0x38, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x30, 0x38, 0x39, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x33, 0x30, 0x38, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x33, 0x31, 0x33, 0x36, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x33, 0x31, 0x33, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x33, 0x31, 0x33, 0x37, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x33, 0x31, 0x33, 0x37, 0x1a, 0x4e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x33, 0x30, 0x38, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x33, 0x31, 0x33, 0x39, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x33, 0x31, 0x33, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x33, 0x31, 0x34, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x33, 0x31, 0x34, 0x30, 0x22, 0xad, 0x03, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x30, 0x33, 0x39, 0x31, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x30, 0x34, 0x31, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x30,
-	0x33, 0x39, 0x32, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x34, 0x31, 0x31, 0x12,
-	0x46, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x34, 0x31, 0x32, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x34, 0x31, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x30, 0x34, 0x31, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x34, 0x31, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x30, 0x34, 0x31, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x34, 0x31, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x30, 0x34, 0x31, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x34, 0x31, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x30, 0x34, 0x31, 0x36, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x34, 0x31, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x30, 0x34, 0x31, 0x37, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x34, 0x31, 0x37, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x30, 0x34, 0x31, 0x38, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45,
-	0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x34, 0x31, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x30, 0x34, 0x31, 0x39, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x34, 0x31, 0x39, 0x22, 0xca, 0x06, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x31, 0x38, 0x37, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x31, 0x38, 0x37, 0x36, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x37, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x31, 0x38, 0x37, 0x37, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x37, 0x37, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x31, 0x38, 0x37, 0x38, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x31, 0x30, 0x35, 0x37, 0x33, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38,
-	0x37, 0x38, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x37, 0x39,
-	0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x35, 0x38, 0x32,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x37, 0x39, 0x12, 0x48, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x38, 0x30, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x38, 0x32, 0x34, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x31, 0x38, 0x38, 0x30, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x31, 0x38, 0x38, 0x31, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x30, 0x37, 0x37, 0x33, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x38, 0x31,
-	0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x38, 0x32, 0x18, 0x08,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x38, 0x36, 0x36, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x38, 0x32, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x38, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x30, 0x38, 0x31, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x31, 0x38, 0x38, 0x33, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38,
-	0x38, 0x34, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74,
-	0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x31, 0x38, 0x38, 0x34, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38,
-	0x38, 0x35, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x31,
-	0x35, 0x35, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x38, 0x35, 0x12, 0x48,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x38, 0x36, 0x18, 0x0e, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x34, 0x36, 0x39, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x38, 0x36, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x31, 0x38, 0x38, 0x37, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x38, 0x37, 0x2a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x2a, 0x04,
-	0x08, 0x0a, 0x10, 0x0b, 0x22, 0xe5, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x35, 0x35, 0x30, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35,
-	0x35, 0x32, 0x34, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x35, 0x35, 0x32, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35,
-	0x35, 0x32, 0x35, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x35, 0x35, 0x32, 0x35, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35,
-	0x35, 0x32, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x35, 0x35, 0x30, 0x37,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x32, 0x36, 0x12, 0x4e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x32, 0x37, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e,
-	0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x35, 0x35, 0x32, 0x37, 0x22, 0x58, 0x0a, 0x0c,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x31, 0x35, 0x31, 0x12, 0x48, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x31, 0x35, 0x38, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x31, 0x34, 0x35, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x33, 0x31, 0x35, 0x38, 0x22, 0xb9, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x38, 0x32, 0x35, 0x33, 0x12, 0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x38, 0x32, 0x35, 0x34, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x35, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x38, 0x32, 0x35, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x38, 0x32, 0x35, 0x34, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x38, 0x32,
-	0x35, 0x34, 0x1a, 0x4e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x38, 0x32,
-	0x35, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x33, 0x36, 0x32,
-	0x18, 0x02, 0x20, 0x02, 0x28, 0x06, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x33,
-	0x36, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x33, 0x36, 0x33,
-	0x18, 0x03, 0x20, 0x02, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x33,
-	0x36, 0x33, 0x22, 0x58, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x36,
-	0x38, 0x35, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x36, 0x39, 0x34,
-	0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x36, 0x38, 0x36,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x36, 0x39, 0x34, 0x22, 0x8b, 0x04, 0x0a,
-	0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x38, 0x31, 0x36, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x32, 0x36, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x32, 0x36, 0x12, 0x45, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x32, 0x37, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x0e, 0x32, 0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45,
-	0x6e, 0x75, 0x6d, 0x31, 0x36, 0x38, 0x31, 0x39, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x36, 0x38, 0x32, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38,
-	0x32, 0x38, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x36, 0x38, 0x32, 0x38, 0x12, 0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x36, 0x38, 0x31, 0x37, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x36, 0x38, 0x31, 0x36, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x38, 0x31,
-	0x37, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x38, 0x31, 0x37, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x33, 0x30, 0x18, 0x07, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x33, 0x30, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x33, 0x31, 0x18, 0x08, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x33, 0x31, 0x12,
-	0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x38, 0x31, 0x38, 0x18,
-	0x0c, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x38, 0x31, 0x36, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x38, 0x31, 0x38, 0x52, 0x0c, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x38, 0x31, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x33, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x33, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x33, 0x34, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x33, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x33, 0x35, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x38, 0x33, 0x35, 0x1a, 0x0e, 0x0a, 0x0c, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x38, 0x31, 0x37, 0x1a, 0x0e, 0x0a, 0x0c, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x38, 0x31, 0x38, 0x22, 0x98, 0x03, 0x0a, 0x0c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x31, 0x36, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x31, 0x32, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x31, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x31, 0x33, 0x18, 0x07, 0x20, 0x01, 0x28, 0x06, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x31, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x31, 0x34, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x31, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x31, 0x35, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x06, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x31, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x31, 0x36, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x31, 0x36, 0x12, 0x48, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x31, 0x37, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x37, 0x39, 0x36, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x33, 0x32, 0x31, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33,
-	0x32, 0x31, 0x38, 0x18, 0x02, 0x20, 0x02, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x33, 0x32, 0x31, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33,
-	0x32, 0x31, 0x39, 0x18, 0x03, 0x20, 0x02, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x33, 0x32, 0x31, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33,
-	0x32, 0x32, 0x30, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x33, 0x32, 0x32, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33,
-	0x32, 0x32, 0x31, 0x18, 0x05, 0x20, 0x02, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x33, 0x32, 0x32, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33,
-	0x32, 0x32, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x33, 0x32, 0x32, 0x32, 0x22, 0xd8, 0x03, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x31, 0x33, 0x31, 0x36, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x33, 0x31, 0x39, 0x39, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x33, 0x31, 0x39, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x33, 0x32, 0x30, 0x30, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x33, 0x32, 0x30, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x33, 0x32, 0x30, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x33, 0x32, 0x30, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x33, 0x32, 0x30, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x33, 0x32, 0x30, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x33, 0x32, 0x30, 0x33, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x33, 0x32, 0x30, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x33, 0x32, 0x30, 0x34, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x33, 0x32, 0x30, 0x34, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x33, 0x32, 0x30, 0x35, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x32, 0x37, 0x39, 0x36, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x30, 0x35,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x30, 0x36, 0x18, 0x09,
-	0x20, 0x01, 0x28, 0x06, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x30, 0x36,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x30, 0x37, 0x18, 0x0a,
-	0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x30, 0x37,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x30, 0x38, 0x18, 0x04,
-	0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x30, 0x38,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x30, 0x39, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x30, 0x39,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x31, 0x30, 0x18, 0x06,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x31, 0x30,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x31, 0x31, 0x18, 0x07,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x32, 0x31, 0x31,
-	0x22, 0x49, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x37, 0x34, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x37, 0x35, 0x18, 0x01, 0x20, 0x02,
-	0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x37, 0x35, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x37, 0x36, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x37, 0x36, 0x22, 0x0e, 0x0a, 0x0c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x38, 0x39, 0x34, 0x33, 0x22, 0x0e, 0x0a, 0x0c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x38, 0x39, 0x34, 0x34, 0x22, 0xee, 0x07, 0x0a, 0x0c,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x38, 0x38, 0x35, 0x36, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x35, 0x37, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x35, 0x37, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x35, 0x38, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x35, 0x38, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x35, 0x39, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x35, 0x39, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x36, 0x30, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x36, 0x30, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x36, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x36, 0x31, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x36, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x36, 0x32, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x36, 0x33, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x36, 0x33, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x36, 0x34, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x36, 0x34, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x36, 0x35, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x36, 0x35, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x36, 0x36, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x36, 0x36, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x36, 0x37, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x36, 0x37, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x36, 0x38, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x36, 0x38, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x36, 0x39, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x36, 0x39, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x37, 0x30, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x37, 0x30, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x37, 0x31, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x37, 0x31, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x37, 0x32, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x37, 0x32, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x37, 0x33, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x37, 0x33, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x37, 0x34, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x37, 0x34, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x37, 0x35, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x37, 0x35, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x37, 0x36, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x37, 0x36, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x37, 0x37, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x37, 0x37, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x37, 0x38, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x37, 0x38, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x37, 0x39, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x37, 0x39, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x38, 0x30, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x38, 0x30, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x38, 0x31, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x38, 0x31, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x38, 0x32, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x38, 0x32, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x38, 0x33, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x38, 0x33, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x38, 0x34, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x38, 0x34, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x38, 0x35, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x38, 0x35, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x38, 0x36, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x38, 0x36, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x38, 0x37, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x38, 0x38, 0x38, 0x37, 0x22, 0xe7, 0x01, 0x0a,
-	0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x38, 0x35, 0x30, 0x12, 0x42, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x32, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
-	0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75,
-	0x6d, 0x33, 0x38, 0x35, 0x31, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x32, 0x34,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x32, 0x35, 0x18, 0x0c, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x32, 0x35, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x32, 0x36, 0x18, 0x04, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x32, 0x36, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x32, 0x37, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x32, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x39, 0x32, 0x38, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x32, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x39, 0x32, 0x39, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x39, 0x32, 0x39, 0x22, 0xae, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x36, 0x37, 0x32, 0x31, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x37, 0x34, 0x34, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x37,
-	0x32, 0x32, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x34, 0x34, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x34, 0x35, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x34, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x34, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x34, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x37, 0x34, 0x37, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x37, 0x34, 0x37, 0x22, 0x2b, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x36, 0x37, 0x34, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x37, 0x35, 0x38, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x37, 0x35, 0x38, 0x22, 0x72, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36,
-	0x37, 0x32, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x35, 0x32,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x35,
-	0x32, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x35, 0x33, 0x18, 0x02,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x37, 0x32, 0x37, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x35, 0x33, 0x22, 0x67, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x36, 0x37, 0x33, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x37, 0x35, 0x34, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x37, 0x35, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37,
-	0x35, 0x35, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x37, 0x35, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x35, 0x36,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x35,
-	0x36, 0x22, 0x72, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x37, 0x32, 0x33,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x34, 0x38, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x34, 0x38, 0x12, 0x45,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x34, 0x39, 0x18, 0x02, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x37, 0x32, 0x34, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x37, 0x34, 0x39, 0x22, 0x49, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x36, 0x37, 0x32, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x35,
-	0x30, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37,
-	0x35, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x35, 0x31, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x35, 0x31,
-	0x22, 0x54, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x37, 0x33, 0x34, 0x12,
-	0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x35, 0x37, 0x18, 0x01, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x37, 0x33, 0x35, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x37, 0x35, 0x37, 0x22, 0xb9, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x38, 0x31, 0x38, 0x34, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x32, 0x32, 0x38, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39,
-	0x36, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x32, 0x38, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x32, 0x39, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x32, 0x39, 0x12, 0x45, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x33, 0x30, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x38, 0x31, 0x38, 0x33, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32,
-	0x33, 0x30, 0x22, 0x90, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x34,
-	0x37, 0x37, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x38, 0x36, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x36, 0x36, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x38, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x34, 0x38, 0x37, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x34, 0x38, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x34, 0x38, 0x38, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x34, 0x38, 0x38, 0x22, 0x9e, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x38, 0x34, 0x35, 0x34, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34,
-	0x36, 0x35, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x34, 0x34,
-	0x39, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x36, 0x35, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x36, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x36, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x34, 0x36, 0x37, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x36, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x34, 0x36, 0x38, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x34, 0x36, 0x38, 0x32, 0x6e, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x34, 0x36, 0x39, 0x12, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x33, 0x30, 0x31, 0x18, 0x42, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x34, 0x35, 0x34, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x34, 0x36, 0x39, 0x22, 0x67, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x38, 0x34, 0x37, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34,
-	0x38, 0x33, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x34, 0x38, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x38, 0x34,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x38,
-	0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x38, 0x35, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x38, 0x35, 0x22,
-	0xa0, 0x03, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x34, 0x35, 0x35, 0x12,
-	0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x37, 0x30, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x34, 0x34, 0x39, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x34, 0x37, 0x30, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x34, 0x37, 0x31, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x34,
-	0x35, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x37, 0x31, 0x12, 0x45, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x37, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x34, 0x35, 0x37, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x34, 0x37, 0x32, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x37,
-	0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34,
-	0x37, 0x33, 0x32, 0x6e, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x37, 0x34, 0x12,
-	0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x38, 0x33, 0x30, 0x32, 0x18, 0x42, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x38, 0x34, 0x35, 0x35, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34,
-	0x37, 0x34, 0x22, 0x49, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x34, 0x37,
-	0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x38, 0x31, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x38, 0x31, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x38, 0x32, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x38, 0x32, 0x22, 0x0e, 0x0a,
-	0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x35, 0x35, 0x39, 0x22, 0x6e, 0x0a,
-	0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x38, 0x31, 0x37, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x32, 0x36, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x32, 0x36, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x32, 0x37, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x32, 0x37, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x32, 0x38, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x32, 0x38, 0x22, 0xd3, 0x03,
-	0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x34, 0x38, 0x30, 0x12, 0x48,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x39, 0x30, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x33, 0x35, 0x38, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x39, 0x30, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x36, 0x34, 0x39, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x36,
-	0x30, 0x34, 0x32, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x39, 0x31, 0x12,
-	0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x39, 0x32, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x39, 0x31, 0x32, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x39, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x34, 0x39, 0x33, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x39, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x34, 0x39, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x39, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x34, 0x39, 0x35, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x39, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x34, 0x39, 0x36, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x39, 0x36, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x36, 0x34, 0x39, 0x37, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x33, 0x33, 0x35, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36,
-	0x34, 0x39, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36, 0x34, 0x39,
-	0x38, 0x18, 0x09, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x36,
-	0x34, 0x39, 0x38, 0x22, 0xb6, 0x09, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32,
-	0x34, 0x33, 0x31, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34,
-	0x34, 0x36, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x34, 0x34, 0x36, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34,
-	0x34, 0x37, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33,
-	0x31, 0x32, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x34, 0x37, 0x12, 0x48,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x34, 0x38, 0x18, 0x03, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33, 0x31, 0x35, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x34, 0x38, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x34, 0x34, 0x34, 0x39, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x32, 0x34, 0x33, 0x31, 0x33, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34,
-	0x34, 0x39, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x35, 0x30,
-	0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33, 0x31, 0x36,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x35, 0x30, 0x12, 0x4e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x35, 0x31, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e,
-	0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x35, 0x31, 0x12, 0x4e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x35, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e,
-	0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x35, 0x32, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x35, 0x33, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x35, 0x33, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x35, 0x34, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x35, 0x34, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x35, 0x35, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x35, 0x35, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x35, 0x36, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x35, 0x36, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x35, 0x37, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x35, 0x37, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x35, 0x38, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x35, 0x38, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x35, 0x39, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x35, 0x39, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x36, 0x30, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x36, 0x30, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x36, 0x31, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x36, 0x31, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x36, 0x32, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x36, 0x32, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x36, 0x33, 0x18, 0x11, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x36, 0x33, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x36, 0x34, 0x18, 0x12, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x36, 0x34, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x36, 0x35, 0x18, 0x13, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x36, 0x35, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x36, 0x36, 0x18, 0x14, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x36, 0x36, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x36, 0x37, 0x18, 0x15, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x36, 0x37, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x36, 0x38, 0x18, 0x16, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x36, 0x38, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x36, 0x39, 0x18, 0x17, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x36, 0x39, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x37, 0x30, 0x18, 0x18, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x37, 0x30, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x37, 0x31, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x37, 0x31, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x37, 0x32, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x37, 0x32, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x37, 0x33, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x37, 0x33, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x37, 0x34, 0x18, 0x28, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x37, 0x34, 0x42, 0x23, 0x0a, 0x1e,
-	0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0xf8, 0x01,
-	0x01,
-}
-
-var (
-	file_datasets_google_message3_benchmark_message3_4_proto_rawDescOnce sync.Once
-	file_datasets_google_message3_benchmark_message3_4_proto_rawDescData = file_datasets_google_message3_benchmark_message3_4_proto_rawDesc
-)
-
-func file_datasets_google_message3_benchmark_message3_4_proto_rawDescGZIP() []byte {
-	file_datasets_google_message3_benchmark_message3_4_proto_rawDescOnce.Do(func() {
-		file_datasets_google_message3_benchmark_message3_4_proto_rawDescData = protoimpl.X.CompressGZIP(file_datasets_google_message3_benchmark_message3_4_proto_rawDescData)
-	})
-	return file_datasets_google_message3_benchmark_message3_4_proto_rawDescData
-}
-
-var file_datasets_google_message3_benchmark_message3_4_proto_msgTypes = make([]protoimpl.MessageInfo, 54)
-var file_datasets_google_message3_benchmark_message3_4_proto_goTypes = []interface{}{
-	(*Message24346)(nil),              // 0: benchmarks.google_message3.Message24346
-	(*Message24401)(nil),              // 1: benchmarks.google_message3.Message24401
-	(*Message24402)(nil),              // 2: benchmarks.google_message3.Message24402
-	(*Message24379)(nil),              // 3: benchmarks.google_message3.Message24379
-	(*Message27358)(nil),              // 4: benchmarks.google_message3.Message27358
-	(*Message34381)(nil),              // 5: benchmarks.google_message3.Message34381
-	(*Message34619)(nil),              // 6: benchmarks.google_message3.Message34619
-	(*Message730)(nil),                // 7: benchmarks.google_message3.Message730
-	(*Message33958)(nil),              // 8: benchmarks.google_message3.Message33958
-	(*Message6637)(nil),               // 9: benchmarks.google_message3.Message6637
-	(*Message6643)(nil),               // 10: benchmarks.google_message3.Message6643
-	(*Message6126)(nil),               // 11: benchmarks.google_message3.Message6126
-	(*Message13083)(nil),              // 12: benchmarks.google_message3.Message13083
-	(*Message13088)(nil),              // 13: benchmarks.google_message3.Message13088
-	(*Message10391)(nil),              // 14: benchmarks.google_message3.Message10391
-	(*Message11873)(nil),              // 15: benchmarks.google_message3.Message11873
-	(*Message35506)(nil),              // 16: benchmarks.google_message3.Message35506
-	(*Message13151)(nil),              // 17: benchmarks.google_message3.Message13151
-	(*Message18253)(nil),              // 18: benchmarks.google_message3.Message18253
-	(*Message16685)(nil),              // 19: benchmarks.google_message3.Message16685
-	(*Message16816)(nil),              // 20: benchmarks.google_message3.Message16816
-	(*Message13168)(nil),              // 21: benchmarks.google_message3.Message13168
-	(*Message13167)(nil),              // 22: benchmarks.google_message3.Message13167
-	(*Message1374)(nil),               // 23: benchmarks.google_message3.Message1374
-	(*Message18943)(nil),              // 24: benchmarks.google_message3.Message18943
-	(*Message18944)(nil),              // 25: benchmarks.google_message3.Message18944
-	(*Message18856)(nil),              // 26: benchmarks.google_message3.Message18856
-	(*Message3850)(nil),               // 27: benchmarks.google_message3.Message3850
-	(*Message6721)(nil),               // 28: benchmarks.google_message3.Message6721
-	(*Message6742)(nil),               // 29: benchmarks.google_message3.Message6742
-	(*Message6726)(nil),               // 30: benchmarks.google_message3.Message6726
-	(*Message6733)(nil),               // 31: benchmarks.google_message3.Message6733
-	(*Message6723)(nil),               // 32: benchmarks.google_message3.Message6723
-	(*Message6725)(nil),               // 33: benchmarks.google_message3.Message6725
-	(*Message6734)(nil),               // 34: benchmarks.google_message3.Message6734
-	(*Message8184)(nil),               // 35: benchmarks.google_message3.Message8184
-	(*Message8477)(nil),               // 36: benchmarks.google_message3.Message8477
-	(*Message8454)(nil),               // 37: benchmarks.google_message3.Message8454
-	(*Message8476)(nil),               // 38: benchmarks.google_message3.Message8476
-	(*Message8455)(nil),               // 39: benchmarks.google_message3.Message8455
-	(*Message8475)(nil),               // 40: benchmarks.google_message3.Message8475
-	(*Message12559)(nil),              // 41: benchmarks.google_message3.Message12559
-	(*Message12817)(nil),              // 42: benchmarks.google_message3.Message12817
-	(*Message16480)(nil),              // 43: benchmarks.google_message3.Message16480
-	(*Message24317)(nil),              // 44: benchmarks.google_message3.Message24317
-	(*Message33958_Message33959)(nil), // 45: benchmarks.google_message3.Message33958.Message33959
-	(*Message13083_Message13084)(nil), // 46: benchmarks.google_message3.Message13083.Message13084
-	(*Message13083_Message13085)(nil), // 47: benchmarks.google_message3.Message13083.Message13085
-	(*Message13083_Message13086)(nil), // 48: benchmarks.google_message3.Message13083.Message13086
-	(*Message13083_Message13087)(nil), // 49: benchmarks.google_message3.Message13083.Message13087
-	(*Message13088_Message13089)(nil), // 50: benchmarks.google_message3.Message13088.Message13089
-	(*Message18253_Message18254)(nil), // 51: benchmarks.google_message3.Message18253.Message18254
-	(*Message16816_Message16817)(nil), // 52: benchmarks.google_message3.Message16816.Message16817
-	(*Message16816_Message16818)(nil), // 53: benchmarks.google_message3.Message16816.Message16818
-	(*Message24400)(nil),              // 54: benchmarks.google_message3.Message24400
-	(*Message24380)(nil),              // 55: benchmarks.google_message3.Message24380
-	(*UnusedEmptyMessage)(nil),        // 56: benchmarks.google_message3.UnusedEmptyMessage
-	(*Message24381)(nil),              // 57: benchmarks.google_message3.Message24381
-	(*Message697)(nil),                // 58: benchmarks.google_message3.Message697
-	(*Message704)(nil),                // 59: benchmarks.google_message3.Message704
-	(*Message703)(nil),                // 60: benchmarks.google_message3.Message703
-	(*Message716)(nil),                // 61: benchmarks.google_message3.Message716
-	(*Message718)(nil),                // 62: benchmarks.google_message3.Message718
-	(*Message715)(nil),                // 63: benchmarks.google_message3.Message715
-	(*Message719)(nil),                // 64: benchmarks.google_message3.Message719
-	(*Message728)(nil),                // 65: benchmarks.google_message3.Message728
-	(*Message702)(nil),                // 66: benchmarks.google_message3.Message702
-	(Enum33960)(0),                    // 67: benchmarks.google_message3.Enum33960
-	(*Message6578)(nil),               // 68: benchmarks.google_message3.Message6578
-	(UnusedEnum)(0),                   // 69: benchmarks.google_message3.UnusedEnum
-	(*Message6024)(nil),               // 70: benchmarks.google_message3.Message6024
-	(*Message6052)(nil),               // 71: benchmarks.google_message3.Message6052
-	(Enum6065)(0),                     // 72: benchmarks.google_message3.Enum6065
-	(*Message6054)(nil),               // 73: benchmarks.google_message3.Message6054
-	(Enum10392)(0),                    // 74: benchmarks.google_message3.Enum10392
-	(*Message10573)(nil),              // 75: benchmarks.google_message3.Message10573
-	(*Message10582)(nil),              // 76: benchmarks.google_message3.Message10582
-	(*Message10824)(nil),              // 77: benchmarks.google_message3.Message10824
-	(*Message10773)(nil),              // 78: benchmarks.google_message3.Message10773
-	(*Message11866)(nil),              // 79: benchmarks.google_message3.Message11866
-	(*Message10818)(nil),              // 80: benchmarks.google_message3.Message10818
-	(*Message10155)(nil),              // 81: benchmarks.google_message3.Message10155
-	(*Message10469)(nil),              // 82: benchmarks.google_message3.Message10469
-	(Enum35507)(0),                    // 83: benchmarks.google_message3.Enum35507
-	(*Message13145)(nil),              // 84: benchmarks.google_message3.Message13145
-	(*Message16686)(nil),              // 85: benchmarks.google_message3.Message16686
-	(Enum16819)(0),                    // 86: benchmarks.google_message3.Enum16819
-	(*Message12796)(nil),              // 87: benchmarks.google_message3.Message12796
-	(Enum3851)(0),                     // 88: benchmarks.google_message3.Enum3851
-	(*Message6722)(nil),               // 89: benchmarks.google_message3.Message6722
-	(*Message6727)(nil),               // 90: benchmarks.google_message3.Message6727
-	(*Message6724)(nil),               // 91: benchmarks.google_message3.Message6724
-	(*Message6735)(nil),               // 92: benchmarks.google_message3.Message6735
-	(*Message7966)(nil),               // 93: benchmarks.google_message3.Message7966
-	(*Message8183)(nil),               // 94: benchmarks.google_message3.Message8183
-	(*Message8449)(nil),               // 95: benchmarks.google_message3.Message8449
-	(*Message8456)(nil),               // 96: benchmarks.google_message3.Message8456
-	(*Message8457)(nil),               // 97: benchmarks.google_message3.Message8457
-	(*Message13358)(nil),              // 98: benchmarks.google_message3.Message13358
-	(Enum16042)(0),                    // 99: benchmarks.google_message3.Enum16042
-	(*Message13912)(nil),              // 100: benchmarks.google_message3.Message13912
-	(*Message24312)(nil),              // 101: benchmarks.google_message3.Message24312
-	(*Message24315)(nil),              // 102: benchmarks.google_message3.Message24315
-	(*Message24313)(nil),              // 103: benchmarks.google_message3.Message24313
-	(*Message24316)(nil),              // 104: benchmarks.google_message3.Message24316
-	(*Message0)(nil),                  // 105: benchmarks.google_message3.Message0
-	(Enum13092)(0),                    // 106: benchmarks.google_message3.Enum13092
-	(*Message8301)(nil),               // 107: benchmarks.google_message3.Message8301
-	(*Message8302)(nil),               // 108: benchmarks.google_message3.Message8302
-}
-var file_datasets_google_message3_benchmark_message3_4_proto_depIdxs = []int32{
-	54,  // 0: benchmarks.google_message3.Message24401.field24679:type_name -> benchmarks.google_message3.Message24400
-	54,  // 1: benchmarks.google_message3.Message24402.field24680:type_name -> benchmarks.google_message3.Message24400
-	55,  // 2: benchmarks.google_message3.Message24379.field24606:type_name -> benchmarks.google_message3.Message24380
-	56,  // 3: benchmarks.google_message3.Message24379.field24607:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	57,  // 4: benchmarks.google_message3.Message24379.field24609:type_name -> benchmarks.google_message3.Message24381
-	56,  // 5: benchmarks.google_message3.Message24379.field24611:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	56,  // 6: benchmarks.google_message3.Message24379.field24618:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	56,  // 7: benchmarks.google_message3.Message34381.field34399:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	56,  // 8: benchmarks.google_message3.Message34381.field34400:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	56,  // 9: benchmarks.google_message3.Message34381.field34401:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	56,  // 10: benchmarks.google_message3.Message34381.field34402:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	56,  // 11: benchmarks.google_message3.Message34381.field34405:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	56,  // 12: benchmarks.google_message3.Message34381.field34407:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	56,  // 13: benchmarks.google_message3.Message34619.field34647:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	58,  // 14: benchmarks.google_message3.Message730.field905:type_name -> benchmarks.google_message3.Message697
-	59,  // 15: benchmarks.google_message3.Message730.field906:type_name -> benchmarks.google_message3.Message704
-	60,  // 16: benchmarks.google_message3.Message730.field908:type_name -> benchmarks.google_message3.Message703
-	61,  // 17: benchmarks.google_message3.Message730.field910:type_name -> benchmarks.google_message3.Message716
-	62,  // 18: benchmarks.google_message3.Message730.field911:type_name -> benchmarks.google_message3.Message718
-	63,  // 19: benchmarks.google_message3.Message730.field913:type_name -> benchmarks.google_message3.Message715
-	64,  // 20: benchmarks.google_message3.Message730.field916:type_name -> benchmarks.google_message3.Message719
-	65,  // 21: benchmarks.google_message3.Message730.field917:type_name -> benchmarks.google_message3.Message728
-	66,  // 22: benchmarks.google_message3.Message730.field918:type_name -> benchmarks.google_message3.Message702
-	56,  // 23: benchmarks.google_message3.Message730.field922:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	56,  // 24: benchmarks.google_message3.Message730.field923:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	56,  // 25: benchmarks.google_message3.Message730.field924:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	56,  // 26: benchmarks.google_message3.Message730.field925:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	56,  // 27: benchmarks.google_message3.Message730.field926:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	56,  // 28: benchmarks.google_message3.Message730.field927:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	45,  // 29: benchmarks.google_message3.Message33958.message33959:type_name -> benchmarks.google_message3.Message33958.Message33959
-	67,  // 30: benchmarks.google_message3.Message33958.field33980:type_name -> benchmarks.google_message3.Enum33960
-	56,  // 31: benchmarks.google_message3.Message6637.field6670:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	56,  // 32: benchmarks.google_message3.Message6637.field6671:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	56,  // 33: benchmarks.google_message3.Message6637.field6674:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	56,  // 34: benchmarks.google_message3.Message6643.field6683:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	56,  // 35: benchmarks.google_message3.Message6643.field6684:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	68,  // 36: benchmarks.google_message3.Message6643.field6694:type_name -> benchmarks.google_message3.Message6578
-	69,  // 37: benchmarks.google_message3.Message6643.field6695:type_name -> benchmarks.google_message3.UnusedEnum
-	56,  // 38: benchmarks.google_message3.Message6643.field6697:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	56,  // 39: benchmarks.google_message3.Message6643.field6698:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	56,  // 40: benchmarks.google_message3.Message6643.field6699:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	56,  // 41: benchmarks.google_message3.Message6126.field6153:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	70,  // 42: benchmarks.google_message3.Message6126.field6156:type_name -> benchmarks.google_message3.Message6024
-	71,  // 43: benchmarks.google_message3.Message6126.field6162:type_name -> benchmarks.google_message3.Message6052
-	56,  // 44: benchmarks.google_message3.Message6126.field6163:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	72,  // 45: benchmarks.google_message3.Message6126.field6164:type_name -> benchmarks.google_message3.Enum6065
-	56,  // 46: benchmarks.google_message3.Message6126.field6165:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	73,  // 47: benchmarks.google_message3.Message6126.field6169:type_name -> benchmarks.google_message3.Message6054
-	46,  // 48: benchmarks.google_message3.Message13083.message13084:type_name -> benchmarks.google_message3.Message13083.Message13084
-	47,  // 49: benchmarks.google_message3.Message13083.message13085:type_name -> benchmarks.google_message3.Message13083.Message13085
-	48,  // 50: benchmarks.google_message3.Message13083.message13086:type_name -> benchmarks.google_message3.Message13083.Message13086
-	49,  // 51: benchmarks.google_message3.Message13083.message13087:type_name -> benchmarks.google_message3.Message13083.Message13087
-	56,  // 52: benchmarks.google_message3.Message13083.field13105:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	50,  // 53: benchmarks.google_message3.Message13088.message13089:type_name -> benchmarks.google_message3.Message13088.Message13089
-	74,  // 54: benchmarks.google_message3.Message10391.field10411:type_name -> benchmarks.google_message3.Enum10392
-	69,  // 55: benchmarks.google_message3.Message10391.field10412:type_name -> benchmarks.google_message3.UnusedEnum
-	56,  // 56: benchmarks.google_message3.Message10391.field10418:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	75,  // 57: benchmarks.google_message3.Message11873.field11878:type_name -> benchmarks.google_message3.Message10573
-	76,  // 58: benchmarks.google_message3.Message11873.field11879:type_name -> benchmarks.google_message3.Message10582
-	77,  // 59: benchmarks.google_message3.Message11873.field11880:type_name -> benchmarks.google_message3.Message10824
-	78,  // 60: benchmarks.google_message3.Message11873.field11881:type_name -> benchmarks.google_message3.Message10773
-	79,  // 61: benchmarks.google_message3.Message11873.field11882:type_name -> benchmarks.google_message3.Message11866
-	80,  // 62: benchmarks.google_message3.Message11873.field11883:type_name -> benchmarks.google_message3.Message10818
-	56,  // 63: benchmarks.google_message3.Message11873.field11884:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	81,  // 64: benchmarks.google_message3.Message11873.field11885:type_name -> benchmarks.google_message3.Message10155
-	82,  // 65: benchmarks.google_message3.Message11873.field11886:type_name -> benchmarks.google_message3.Message10469
-	56,  // 66: benchmarks.google_message3.Message11873.field11887:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	83,  // 67: benchmarks.google_message3.Message35506.field35526:type_name -> benchmarks.google_message3.Enum35507
-	56,  // 68: benchmarks.google_message3.Message35506.field35527:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	84,  // 69: benchmarks.google_message3.Message13151.field13158:type_name -> benchmarks.google_message3.Message13145
-	51,  // 70: benchmarks.google_message3.Message18253.message18254:type_name -> benchmarks.google_message3.Message18253.Message18254
-	85,  // 71: benchmarks.google_message3.Message16685.field16694:type_name -> benchmarks.google_message3.Message16686
-	86,  // 72: benchmarks.google_message3.Message16816.field16827:type_name -> benchmarks.google_message3.Enum16819
-	52,  // 73: benchmarks.google_message3.Message16816.message16817:type_name -> benchmarks.google_message3.Message16816.Message16817
-	53,  // 74: benchmarks.google_message3.Message16816.message16818:type_name -> benchmarks.google_message3.Message16816.Message16818
-	87,  // 75: benchmarks.google_message3.Message13168.field13217:type_name -> benchmarks.google_message3.Message12796
-	87,  // 76: benchmarks.google_message3.Message13167.field13205:type_name -> benchmarks.google_message3.Message12796
-	88,  // 77: benchmarks.google_message3.Message3850.field3924:type_name -> benchmarks.google_message3.Enum3851
-	89,  // 78: benchmarks.google_message3.Message6721.field6744:type_name -> benchmarks.google_message3.Message6722
-	90,  // 79: benchmarks.google_message3.Message6726.field6753:type_name -> benchmarks.google_message3.Message6727
-	91,  // 80: benchmarks.google_message3.Message6723.field6749:type_name -> benchmarks.google_message3.Message6724
-	92,  // 81: benchmarks.google_message3.Message6734.field6757:type_name -> benchmarks.google_message3.Message6735
-	93,  // 82: benchmarks.google_message3.Message8184.field8228:type_name -> benchmarks.google_message3.Message7966
-	94,  // 83: benchmarks.google_message3.Message8184.field8230:type_name -> benchmarks.google_message3.Message8183
-	93,  // 84: benchmarks.google_message3.Message8477.field8486:type_name -> benchmarks.google_message3.Message7966
-	95,  // 85: benchmarks.google_message3.Message8454.field8465:type_name -> benchmarks.google_message3.Message8449
-	95,  // 86: benchmarks.google_message3.Message8455.field8470:type_name -> benchmarks.google_message3.Message8449
-	96,  // 87: benchmarks.google_message3.Message8455.field8471:type_name -> benchmarks.google_message3.Message8456
-	97,  // 88: benchmarks.google_message3.Message8455.field8472:type_name -> benchmarks.google_message3.Message8457
-	56,  // 89: benchmarks.google_message3.Message8455.field8473:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	98,  // 90: benchmarks.google_message3.Message16480.field16490:type_name -> benchmarks.google_message3.Message13358
-	99,  // 91: benchmarks.google_message3.Message16480.field16491:type_name -> benchmarks.google_message3.Enum16042
-	100, // 92: benchmarks.google_message3.Message16480.field16492:type_name -> benchmarks.google_message3.Message13912
-	98,  // 93: benchmarks.google_message3.Message16480.field16497:type_name -> benchmarks.google_message3.Message13358
-	101, // 94: benchmarks.google_message3.Message24317.field24447:type_name -> benchmarks.google_message3.Message24312
-	102, // 95: benchmarks.google_message3.Message24317.field24448:type_name -> benchmarks.google_message3.Message24315
-	103, // 96: benchmarks.google_message3.Message24317.field24449:type_name -> benchmarks.google_message3.Message24313
-	104, // 97: benchmarks.google_message3.Message24317.field24450:type_name -> benchmarks.google_message3.Message24316
-	56,  // 98: benchmarks.google_message3.Message24317.field24451:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	56,  // 99: benchmarks.google_message3.Message24317.field24452:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	105, // 100: benchmarks.google_message3.Message33958.Message33959.field33987:type_name -> benchmarks.google_message3.Message0
-	106, // 101: benchmarks.google_message3.Message13083.Message13084.field13110:type_name -> benchmarks.google_message3.Enum13092
-	105, // 102: benchmarks.google_message3.Message33958.field33981:extendee -> benchmarks.google_message3.Message0
-	107, // 103: benchmarks.google_message3.Message8454.field8469:extendee -> benchmarks.google_message3.Message8301
-	108, // 104: benchmarks.google_message3.Message8455.field8474:extendee -> benchmarks.google_message3.Message8302
-	8,   // 105: benchmarks.google_message3.Message33958.field33981:type_name -> benchmarks.google_message3.Message33958
-	37,  // 106: benchmarks.google_message3.Message8454.field8469:type_name -> benchmarks.google_message3.Message8454
-	39,  // 107: benchmarks.google_message3.Message8455.field8474:type_name -> benchmarks.google_message3.Message8455
-	108, // [108:108] is the sub-list for method output_type
-	108, // [108:108] is the sub-list for method input_type
-	105, // [105:108] is the sub-list for extension type_name
-	102, // [102:105] is the sub-list for extension extendee
-	0,   // [0:102] is the sub-list for field type_name
-}
-
-func init() { file_datasets_google_message3_benchmark_message3_4_proto_init() }
-func file_datasets_google_message3_benchmark_message3_4_proto_init() {
-	if File_datasets_google_message3_benchmark_message3_4_proto != nil {
-		return
-	}
-	file_datasets_google_message3_benchmark_message3_5_proto_init()
-	file_datasets_google_message3_benchmark_message3_6_proto_init()
-	file_datasets_google_message3_benchmark_message3_7_proto_init()
-	file_datasets_google_message3_benchmark_message3_8_proto_init()
-	if !protoimpl.UnsafeEnabled {
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message24346); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message24401); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message24402); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message24379); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message27358); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message34381); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message34619); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message730); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message33958); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6637); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6643); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6126); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message13083); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message13088); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10391); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message11873); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message35506); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message13151); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message18253); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message16685); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message16816); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message13168); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message13167); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message1374); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message18943); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message18944); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message18856); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3850); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6721); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6742); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6726); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6733); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6723); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6725); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6734); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8184); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8477); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8454); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8476); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8455); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8475); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12559); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12817); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message16480); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message24317); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message33958_Message33959); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message13083_Message13084); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message13083_Message13085); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message13083_Message13086); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message13083_Message13087); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message13088_Message13089); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message18253_Message18254); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message16816_Message16817); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_4_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message16816_Message16818); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_datasets_google_message3_benchmark_message3_4_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   54,
-			NumExtensions: 3,
-			NumServices:   0,
-		},
-		GoTypes:           file_datasets_google_message3_benchmark_message3_4_proto_goTypes,
-		DependencyIndexes: file_datasets_google_message3_benchmark_message3_4_proto_depIdxs,
-		MessageInfos:      file_datasets_google_message3_benchmark_message3_4_proto_msgTypes,
-		ExtensionInfos:    file_datasets_google_message3_benchmark_message3_4_proto_extTypes,
-	}.Build()
-	File_datasets_google_message3_benchmark_message3_4_proto = out.File
-	file_datasets_google_message3_benchmark_message3_4_proto_rawDesc = nil
-	file_datasets_google_message3_benchmark_message3_4_proto_goTypes = nil
-	file_datasets_google_message3_benchmark_message3_4_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_5.pb.go b/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_5.pb.go
deleted file mode 100644
index e0250c0..0000000
--- a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_5.pb.go
+++ /dev/null
@@ -1,6056 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// LINT: ALLOW_GROUPS
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: datasets/google_message3/benchmark_message3_5.proto
-
-package google_message3
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Message24377 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message24377) Reset() {
-	*x = Message24377{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message24377) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message24377) ProtoMessage() {}
-
-func (x *Message24377) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message24377.ProtoReflect.Descriptor instead.
-func (*Message24377) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{0}
-}
-
-type Message24378 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message24378) Reset() {
-	*x = Message24378{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message24378) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message24378) ProtoMessage() {}
-
-func (x *Message24378) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message24378.ProtoReflect.Descriptor instead.
-func (*Message24378) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{1}
-}
-
-type Message24400 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field24674 *int32 `protobuf:"varint,1,opt,name=field24674" json:"field24674,omitempty"`
-	Field24675 *int32 `protobuf:"varint,2,opt,name=field24675" json:"field24675,omitempty"`
-	Field24676 *int32 `protobuf:"varint,3,opt,name=field24676" json:"field24676,omitempty"`
-	Field24677 *int32 `protobuf:"varint,4,opt,name=field24677" json:"field24677,omitempty"`
-	Field24678 *int32 `protobuf:"varint,5,opt,name=field24678" json:"field24678,omitempty"`
-}
-
-func (x *Message24400) Reset() {
-	*x = Message24400{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message24400) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message24400) ProtoMessage() {}
-
-func (x *Message24400) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message24400.ProtoReflect.Descriptor instead.
-func (*Message24400) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Message24400) GetField24674() int32 {
-	if x != nil && x.Field24674 != nil {
-		return *x.Field24674
-	}
-	return 0
-}
-
-func (x *Message24400) GetField24675() int32 {
-	if x != nil && x.Field24675 != nil {
-		return *x.Field24675
-	}
-	return 0
-}
-
-func (x *Message24400) GetField24676() int32 {
-	if x != nil && x.Field24676 != nil {
-		return *x.Field24676
-	}
-	return 0
-}
-
-func (x *Message24400) GetField24677() int32 {
-	if x != nil && x.Field24677 != nil {
-		return *x.Field24677
-	}
-	return 0
-}
-
-func (x *Message24400) GetField24678() int32 {
-	if x != nil && x.Field24678 != nil {
-		return *x.Field24678
-	}
-	return 0
-}
-
-type Message24380 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message24380) Reset() {
-	*x = Message24380{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message24380) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message24380) ProtoMessage() {}
-
-func (x *Message24380) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message24380.ProtoReflect.Descriptor instead.
-func (*Message24380) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{3}
-}
-
-type Message24381 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message24381) Reset() {
-	*x = Message24381{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message24381) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message24381) ProtoMessage() {}
-
-func (x *Message24381) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message24381.ProtoReflect.Descriptor instead.
-func (*Message24381) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{4}
-}
-
-type Message719 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field881 []string `protobuf:"bytes,1,rep,name=field881" json:"field881,omitempty"`
-	Field882 []string `protobuf:"bytes,2,rep,name=field882" json:"field882,omitempty"`
-	Field883 []string `protobuf:"bytes,3,rep,name=field883" json:"field883,omitempty"`
-	Field884 *Enum720 `protobuf:"varint,4,opt,name=field884,enum=benchmarks.google_message3.Enum720" json:"field884,omitempty"`
-}
-
-func (x *Message719) Reset() {
-	*x = Message719{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message719) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message719) ProtoMessage() {}
-
-func (x *Message719) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message719.ProtoReflect.Descriptor instead.
-func (*Message719) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *Message719) GetField881() []string {
-	if x != nil {
-		return x.Field881
-	}
-	return nil
-}
-
-func (x *Message719) GetField882() []string {
-	if x != nil {
-		return x.Field882
-	}
-	return nil
-}
-
-func (x *Message719) GetField883() []string {
-	if x != nil {
-		return x.Field883
-	}
-	return nil
-}
-
-func (x *Message719) GetField884() Enum720 {
-	if x != nil && x.Field884 != nil {
-		return *x.Field884
-	}
-	return Enum720_ENUM_VALUE721
-}
-
-type Message728 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	Field887 *string       `protobuf:"bytes,1,req,name=field887" json:"field887,omitempty"`
-	Field888 []string      `protobuf:"bytes,2,rep,name=field888" json:"field888,omitempty"`
-	Field889 []*Message703 `protobuf:"bytes,3,rep,name=field889" json:"field889,omitempty"`
-	Field890 []*Message715 `protobuf:"bytes,4,rep,name=field890" json:"field890,omitempty"`
-	Field891 []string      `protobuf:"bytes,5,rep,name=field891" json:"field891,omitempty"`
-	Field892 []string      `protobuf:"bytes,6,rep,name=field892" json:"field892,omitempty"`
-	Field893 *Message718   `protobuf:"bytes,7,opt,name=field893" json:"field893,omitempty"`
-	Field894 *Message716   `protobuf:"bytes,8,opt,name=field894" json:"field894,omitempty"`
-	Field895 []string      `protobuf:"bytes,9,rep,name=field895" json:"field895,omitempty"`
-}
-
-func (x *Message728) Reset() {
-	*x = Message728{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message728) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message728) ProtoMessage() {}
-
-func (x *Message728) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message728.ProtoReflect.Descriptor instead.
-func (*Message728) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *Message728) GetField887() string {
-	if x != nil && x.Field887 != nil {
-		return *x.Field887
-	}
-	return ""
-}
-
-func (x *Message728) GetField888() []string {
-	if x != nil {
-		return x.Field888
-	}
-	return nil
-}
-
-func (x *Message728) GetField889() []*Message703 {
-	if x != nil {
-		return x.Field889
-	}
-	return nil
-}
-
-func (x *Message728) GetField890() []*Message715 {
-	if x != nil {
-		return x.Field890
-	}
-	return nil
-}
-
-func (x *Message728) GetField891() []string {
-	if x != nil {
-		return x.Field891
-	}
-	return nil
-}
-
-func (x *Message728) GetField892() []string {
-	if x != nil {
-		return x.Field892
-	}
-	return nil
-}
-
-func (x *Message728) GetField893() *Message718 {
-	if x != nil {
-		return x.Field893
-	}
-	return nil
-}
-
-func (x *Message728) GetField894() *Message716 {
-	if x != nil {
-		return x.Field894
-	}
-	return nil
-}
-
-func (x *Message728) GetField895() []string {
-	if x != nil {
-		return x.Field895
-	}
-	return nil
-}
-
-type Message704 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field800 *string             `protobuf:"bytes,1,opt,name=field800" json:"field800,omitempty"`
-	Field801 *string             `protobuf:"bytes,7,opt,name=field801" json:"field801,omitempty"`
-	Field802 *string             `protobuf:"bytes,2,opt,name=field802" json:"field802,omitempty"`
-	Field803 *string             `protobuf:"bytes,3,opt,name=field803" json:"field803,omitempty"`
-	Field804 *string             `protobuf:"bytes,4,opt,name=field804" json:"field804,omitempty"`
-	Field805 *string             `protobuf:"bytes,5,opt,name=field805" json:"field805,omitempty"`
-	Field806 *UnusedEmptyMessage `protobuf:"bytes,6,opt,name=field806" json:"field806,omitempty"`
-}
-
-func (x *Message704) Reset() {
-	*x = Message704{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message704) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message704) ProtoMessage() {}
-
-func (x *Message704) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message704.ProtoReflect.Descriptor instead.
-func (*Message704) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *Message704) GetField800() string {
-	if x != nil && x.Field800 != nil {
-		return *x.Field800
-	}
-	return ""
-}
-
-func (x *Message704) GetField801() string {
-	if x != nil && x.Field801 != nil {
-		return *x.Field801
-	}
-	return ""
-}
-
-func (x *Message704) GetField802() string {
-	if x != nil && x.Field802 != nil {
-		return *x.Field802
-	}
-	return ""
-}
-
-func (x *Message704) GetField803() string {
-	if x != nil && x.Field803 != nil {
-		return *x.Field803
-	}
-	return ""
-}
-
-func (x *Message704) GetField804() string {
-	if x != nil && x.Field804 != nil {
-		return *x.Field804
-	}
-	return ""
-}
-
-func (x *Message704) GetField805() string {
-	if x != nil && x.Field805 != nil {
-		return *x.Field805
-	}
-	return ""
-}
-
-func (x *Message704) GetField806() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field806
-	}
-	return nil
-}
-
-type Message697 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	Field743 *string       `protobuf:"bytes,7,opt,name=field743" json:"field743,omitempty"`
-	Field744 []string      `protobuf:"bytes,1,rep,name=field744" json:"field744,omitempty"`
-	Field745 []string      `protobuf:"bytes,2,rep,name=field745" json:"field745,omitempty"`
-	Field746 []string      `protobuf:"bytes,33,rep,name=field746" json:"field746,omitempty"`
-	Field747 []string      `protobuf:"bytes,29,rep,name=field747" json:"field747,omitempty"`
-	Field748 []string      `protobuf:"bytes,30,rep,name=field748" json:"field748,omitempty"`
-	Field749 []string      `protobuf:"bytes,31,rep,name=field749" json:"field749,omitempty"`
-	Field750 []string      `protobuf:"bytes,32,rep,name=field750" json:"field750,omitempty"`
-	Field751 []string      `protobuf:"bytes,13,rep,name=field751" json:"field751,omitempty"`
-	Field752 []string      `protobuf:"bytes,6,rep,name=field752" json:"field752,omitempty"`
-	Field753 []string      `protobuf:"bytes,3,rep,name=field753" json:"field753,omitempty"`
-	Field754 []string      `protobuf:"bytes,14,rep,name=field754" json:"field754,omitempty"`
-	Field755 []string      `protobuf:"bytes,15,rep,name=field755" json:"field755,omitempty"`
-	Field756 []string      `protobuf:"bytes,16,rep,name=field756" json:"field756,omitempty"`
-	Field757 []string      `protobuf:"bytes,4,rep,name=field757" json:"field757,omitempty"`
-	Field758 []string      `protobuf:"bytes,34,rep,name=field758" json:"field758,omitempty"`
-	Field759 []string      `protobuf:"bytes,35,rep,name=field759" json:"field759,omitempty"`
-	Field760 []string      `protobuf:"bytes,5,rep,name=field760" json:"field760,omitempty"`
-	Field761 []string      `protobuf:"bytes,17,rep,name=field761" json:"field761,omitempty"`
-	Field762 []string      `protobuf:"bytes,18,rep,name=field762" json:"field762,omitempty"`
-	Field763 []string      `protobuf:"bytes,19,rep,name=field763" json:"field763,omitempty"`
-	Field764 *bool         `protobuf:"varint,36,opt,name=field764" json:"field764,omitempty"`
-	Field765 []string      `protobuf:"bytes,8,rep,name=field765" json:"field765,omitempty"`
-	Field766 []string      `protobuf:"bytes,9,rep,name=field766" json:"field766,omitempty"`
-	Field767 *string       `protobuf:"bytes,27,opt,name=field767" json:"field767,omitempty"`
-	Field768 *bool         `protobuf:"varint,25,opt,name=field768" json:"field768,omitempty"`
-	Field769 *Message700   `protobuf:"bytes,10,opt,name=field769" json:"field769,omitempty"`
-	Field770 *bool         `protobuf:"varint,11,opt,name=field770" json:"field770,omitempty"`
-	Field771 *bool         `protobuf:"varint,24,opt,name=field771" json:"field771,omitempty"`
-	Field772 []string      `protobuf:"bytes,12,rep,name=field772" json:"field772,omitempty"`
-	Field773 []string      `protobuf:"bytes,20,rep,name=field773" json:"field773,omitempty"`
-	Field774 []string      `protobuf:"bytes,21,rep,name=field774" json:"field774,omitempty"`
-	Field775 []string      `protobuf:"bytes,22,rep,name=field775" json:"field775,omitempty"`
-	Field776 []*Message699 `protobuf:"bytes,23,rep,name=field776" json:"field776,omitempty"`
-	Field777 []*Message698 `protobuf:"bytes,37,rep,name=field777" json:"field777,omitempty"`
-	Field778 *int64        `protobuf:"varint,38,opt,name=field778" json:"field778,omitempty"`
-}
-
-func (x *Message697) Reset() {
-	*x = Message697{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message697) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message697) ProtoMessage() {}
-
-func (x *Message697) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[8]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message697.ProtoReflect.Descriptor instead.
-func (*Message697) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *Message697) GetField743() string {
-	if x != nil && x.Field743 != nil {
-		return *x.Field743
-	}
-	return ""
-}
-
-func (x *Message697) GetField744() []string {
-	if x != nil {
-		return x.Field744
-	}
-	return nil
-}
-
-func (x *Message697) GetField745() []string {
-	if x != nil {
-		return x.Field745
-	}
-	return nil
-}
-
-func (x *Message697) GetField746() []string {
-	if x != nil {
-		return x.Field746
-	}
-	return nil
-}
-
-func (x *Message697) GetField747() []string {
-	if x != nil {
-		return x.Field747
-	}
-	return nil
-}
-
-func (x *Message697) GetField748() []string {
-	if x != nil {
-		return x.Field748
-	}
-	return nil
-}
-
-func (x *Message697) GetField749() []string {
-	if x != nil {
-		return x.Field749
-	}
-	return nil
-}
-
-func (x *Message697) GetField750() []string {
-	if x != nil {
-		return x.Field750
-	}
-	return nil
-}
-
-func (x *Message697) GetField751() []string {
-	if x != nil {
-		return x.Field751
-	}
-	return nil
-}
-
-func (x *Message697) GetField752() []string {
-	if x != nil {
-		return x.Field752
-	}
-	return nil
-}
-
-func (x *Message697) GetField753() []string {
-	if x != nil {
-		return x.Field753
-	}
-	return nil
-}
-
-func (x *Message697) GetField754() []string {
-	if x != nil {
-		return x.Field754
-	}
-	return nil
-}
-
-func (x *Message697) GetField755() []string {
-	if x != nil {
-		return x.Field755
-	}
-	return nil
-}
-
-func (x *Message697) GetField756() []string {
-	if x != nil {
-		return x.Field756
-	}
-	return nil
-}
-
-func (x *Message697) GetField757() []string {
-	if x != nil {
-		return x.Field757
-	}
-	return nil
-}
-
-func (x *Message697) GetField758() []string {
-	if x != nil {
-		return x.Field758
-	}
-	return nil
-}
-
-func (x *Message697) GetField759() []string {
-	if x != nil {
-		return x.Field759
-	}
-	return nil
-}
-
-func (x *Message697) GetField760() []string {
-	if x != nil {
-		return x.Field760
-	}
-	return nil
-}
-
-func (x *Message697) GetField761() []string {
-	if x != nil {
-		return x.Field761
-	}
-	return nil
-}
-
-func (x *Message697) GetField762() []string {
-	if x != nil {
-		return x.Field762
-	}
-	return nil
-}
-
-func (x *Message697) GetField763() []string {
-	if x != nil {
-		return x.Field763
-	}
-	return nil
-}
-
-func (x *Message697) GetField764() bool {
-	if x != nil && x.Field764 != nil {
-		return *x.Field764
-	}
-	return false
-}
-
-func (x *Message697) GetField765() []string {
-	if x != nil {
-		return x.Field765
-	}
-	return nil
-}
-
-func (x *Message697) GetField766() []string {
-	if x != nil {
-		return x.Field766
-	}
-	return nil
-}
-
-func (x *Message697) GetField767() string {
-	if x != nil && x.Field767 != nil {
-		return *x.Field767
-	}
-	return ""
-}
-
-func (x *Message697) GetField768() bool {
-	if x != nil && x.Field768 != nil {
-		return *x.Field768
-	}
-	return false
-}
-
-func (x *Message697) GetField769() *Message700 {
-	if x != nil {
-		return x.Field769
-	}
-	return nil
-}
-
-func (x *Message697) GetField770() bool {
-	if x != nil && x.Field770 != nil {
-		return *x.Field770
-	}
-	return false
-}
-
-func (x *Message697) GetField771() bool {
-	if x != nil && x.Field771 != nil {
-		return *x.Field771
-	}
-	return false
-}
-
-func (x *Message697) GetField772() []string {
-	if x != nil {
-		return x.Field772
-	}
-	return nil
-}
-
-func (x *Message697) GetField773() []string {
-	if x != nil {
-		return x.Field773
-	}
-	return nil
-}
-
-func (x *Message697) GetField774() []string {
-	if x != nil {
-		return x.Field774
-	}
-	return nil
-}
-
-func (x *Message697) GetField775() []string {
-	if x != nil {
-		return x.Field775
-	}
-	return nil
-}
-
-func (x *Message697) GetField776() []*Message699 {
-	if x != nil {
-		return x.Field776
-	}
-	return nil
-}
-
-func (x *Message697) GetField777() []*Message698 {
-	if x != nil {
-		return x.Field777
-	}
-	return nil
-}
-
-func (x *Message697) GetField778() int64 {
-	if x != nil && x.Field778 != nil {
-		return *x.Field778
-	}
-	return 0
-}
-
-type Message0 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-}
-
-func (x *Message0) Reset() {
-	*x = Message0{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[9]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message0) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message0) ProtoMessage() {}
-
-func (x *Message0) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[9]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message0.ProtoReflect.Descriptor instead.
-func (*Message0) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{9}
-}
-
-type Message6578 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6632 *Enum6579 `protobuf:"varint,1,opt,name=field6632,enum=benchmarks.google_message3.Enum6579" json:"field6632,omitempty"`
-	Field6633 *Enum6588 `protobuf:"varint,2,opt,name=field6633,enum=benchmarks.google_message3.Enum6588" json:"field6633,omitempty"`
-}
-
-func (x *Message6578) Reset() {
-	*x = Message6578{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[10]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6578) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6578) ProtoMessage() {}
-
-func (x *Message6578) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[10]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6578.ProtoReflect.Descriptor instead.
-func (*Message6578) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *Message6578) GetField6632() Enum6579 {
-	if x != nil && x.Field6632 != nil {
-		return *x.Field6632
-	}
-	return Enum6579_ENUM_VALUE6580
-}
-
-func (x *Message6578) GetField6633() Enum6588 {
-	if x != nil && x.Field6633 != nil {
-		return *x.Field6633
-	}
-	return Enum6588_ENUM_VALUE6589
-}
-
-type Message6024 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6048 *Enum6025           `protobuf:"varint,1,opt,name=field6048,enum=benchmarks.google_message3.Enum6025" json:"field6048,omitempty"`
-	Field6049 *string             `protobuf:"bytes,2,opt,name=field6049" json:"field6049,omitempty"`
-	Field6050 *UnusedEmptyMessage `protobuf:"bytes,3,opt,name=field6050" json:"field6050,omitempty"`
-}
-
-func (x *Message6024) Reset() {
-	*x = Message6024{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[11]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6024) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6024) ProtoMessage() {}
-
-func (x *Message6024) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[11]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6024.ProtoReflect.Descriptor instead.
-func (*Message6024) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *Message6024) GetField6048() Enum6025 {
-	if x != nil && x.Field6048 != nil {
-		return *x.Field6048
-	}
-	return Enum6025_ENUM_VALUE6026
-}
-
-func (x *Message6024) GetField6049() string {
-	if x != nil && x.Field6049 != nil {
-		return *x.Field6049
-	}
-	return ""
-}
-
-func (x *Message6024) GetField6050() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6050
-	}
-	return nil
-}
-
-type Message6052 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6084 *string `protobuf:"bytes,1,req,name=field6084" json:"field6084,omitempty"`
-	Field6085 []byte  `protobuf:"bytes,2,req,name=field6085" json:"field6085,omitempty"`
-}
-
-func (x *Message6052) Reset() {
-	*x = Message6052{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[12]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6052) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6052) ProtoMessage() {}
-
-func (x *Message6052) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[12]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6052.ProtoReflect.Descriptor instead.
-func (*Message6052) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *Message6052) GetField6084() string {
-	if x != nil && x.Field6084 != nil {
-		return *x.Field6084
-	}
-	return ""
-}
-
-func (x *Message6052) GetField6085() []byte {
-	if x != nil {
-		return x.Field6085
-	}
-	return nil
-}
-
-type Message6054 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6089 *string `protobuf:"bytes,1,req,name=field6089" json:"field6089,omitempty"`
-	Field6090 *string `protobuf:"bytes,2,opt,name=field6090" json:"field6090,omitempty"`
-}
-
-func (x *Message6054) Reset() {
-	*x = Message6054{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[13]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6054) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6054) ProtoMessage() {}
-
-func (x *Message6054) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[13]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6054.ProtoReflect.Descriptor instead.
-func (*Message6054) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *Message6054) GetField6089() string {
-	if x != nil && x.Field6089 != nil {
-		return *x.Field6089
-	}
-	return ""
-}
-
-func (x *Message6054) GetField6090() string {
-	if x != nil && x.Field6090 != nil {
-		return *x.Field6090
-	}
-	return ""
-}
-
-type Message10573 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	Field10580 []*Message10576 `protobuf:"bytes,1,rep,name=field10580" json:"field10580,omitempty"`
-	Field10581 *string         `protobuf:"bytes,2,opt,name=field10581" json:"field10581,omitempty"`
-}
-
-func (x *Message10573) Reset() {
-	*x = Message10573{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[14]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10573) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10573) ProtoMessage() {}
-
-func (x *Message10573) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[14]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10573.ProtoReflect.Descriptor instead.
-func (*Message10573) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *Message10573) GetField10580() []*Message10576 {
-	if x != nil {
-		return x.Field10580
-	}
-	return nil
-}
-
-func (x *Message10573) GetField10581() string {
-	if x != nil && x.Field10581 != nil {
-		return *x.Field10581
-	}
-	return ""
-}
-
-type Message10824 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field10825 *string `protobuf:"bytes,1,req,name=field10825" json:"field10825,omitempty"`
-	Field10826 *int32  `protobuf:"varint,2,opt,name=field10826" json:"field10826,omitempty"`
-}
-
-func (x *Message10824) Reset() {
-	*x = Message10824{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[15]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10824) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10824) ProtoMessage() {}
-
-func (x *Message10824) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[15]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10824.ProtoReflect.Descriptor instead.
-func (*Message10824) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{15}
-}
-
-func (x *Message10824) GetField10825() string {
-	if x != nil && x.Field10825 != nil {
-		return *x.Field10825
-	}
-	return ""
-}
-
-func (x *Message10824) GetField10826() int32 {
-	if x != nil && x.Field10826 != nil {
-		return *x.Field10826
-	}
-	return 0
-}
-
-type Message10582 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field10583 *bool    `protobuf:"varint,1,req,name=field10583" json:"field10583,omitempty"`
-	Field10584 *float64 `protobuf:"fixed64,2,req,name=field10584" json:"field10584,omitempty"`
-	Field10585 *bool    `protobuf:"varint,3,opt,name=field10585" json:"field10585,omitempty"`
-	Field10586 *float64 `protobuf:"fixed64,4,opt,name=field10586" json:"field10586,omitempty"`
-	Field10587 *float64 `protobuf:"fixed64,5,opt,name=field10587" json:"field10587,omitempty"`
-	Field10588 *bool    `protobuf:"varint,6,opt,name=field10588" json:"field10588,omitempty"`
-}
-
-func (x *Message10582) Reset() {
-	*x = Message10582{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[16]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10582) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10582) ProtoMessage() {}
-
-func (x *Message10582) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[16]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10582.ProtoReflect.Descriptor instead.
-func (*Message10582) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *Message10582) GetField10583() bool {
-	if x != nil && x.Field10583 != nil {
-		return *x.Field10583
-	}
-	return false
-}
-
-func (x *Message10582) GetField10584() float64 {
-	if x != nil && x.Field10584 != nil {
-		return *x.Field10584
-	}
-	return 0
-}
-
-func (x *Message10582) GetField10585() bool {
-	if x != nil && x.Field10585 != nil {
-		return *x.Field10585
-	}
-	return false
-}
-
-func (x *Message10582) GetField10586() float64 {
-	if x != nil && x.Field10586 != nil {
-		return *x.Field10586
-	}
-	return 0
-}
-
-func (x *Message10582) GetField10587() float64 {
-	if x != nil && x.Field10587 != nil {
-		return *x.Field10587
-	}
-	return 0
-}
-
-func (x *Message10582) GetField10588() bool {
-	if x != nil && x.Field10588 != nil {
-		return *x.Field10588
-	}
-	return false
-}
-
-type Message10155 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	Field10195   *int32                       `protobuf:"varint,1,req,name=field10195" json:"field10195,omitempty"`
-	Field10196   *int32                       `protobuf:"varint,2,req,name=field10196" json:"field10196,omitempty"`
-	Field10197   *Enum10157                   `protobuf:"varint,59,opt,name=field10197,enum=benchmarks.google_message3.Enum10157" json:"field10197,omitempty"`
-	Field10198   *int32                       `protobuf:"varint,18,opt,name=field10198" json:"field10198,omitempty"`
-	Field10199   *int32                       `protobuf:"varint,19,opt,name=field10199" json:"field10199,omitempty"`
-	Field10200   *int32                       `protobuf:"varint,21,opt,name=field10200" json:"field10200,omitempty"`
-	Message10156 []*Message10155_Message10156 `protobuf:"group,50,rep,name=Message10156,json=message10156" json:"message10156,omitempty"`
-	Field10202   *int32                       `protobuf:"varint,3,opt,name=field10202" json:"field10202,omitempty"`
-	Field10203   *int32                       `protobuf:"varint,4,opt,name=field10203" json:"field10203,omitempty"`
-	Field10204   *int32                       `protobuf:"varint,5,opt,name=field10204" json:"field10204,omitempty"`
-	Field10205   *bool                        `protobuf:"varint,84,opt,name=field10205" json:"field10205,omitempty"`
-	Field10206   *bool                        `protobuf:"varint,33,opt,name=field10206" json:"field10206,omitempty"`
-	Field10207   *int32                       `protobuf:"varint,75,opt,name=field10207" json:"field10207,omitempty"`
-	Field10208   *float32                     `protobuf:"fixed32,26,opt,name=field10208" json:"field10208,omitempty"`
-	Field10209   *int32                       `protobuf:"varint,27,opt,name=field10209" json:"field10209,omitempty"`
-	Field10210   *int32                       `protobuf:"varint,49,opt,name=field10210" json:"field10210,omitempty"`
-	Field10211   *int32                       `protobuf:"varint,10,opt,name=field10211" json:"field10211,omitempty"`
-	Field10212   *float32                     `protobuf:"fixed32,78,opt,name=field10212" json:"field10212,omitempty"`
-	Field10213   *Message9151                 `protobuf:"bytes,91,opt,name=field10213" json:"field10213,omitempty"`
-	Field10214   *int32                       `protobuf:"varint,11,opt,name=field10214" json:"field10214,omitempty"`
-	Field10215   *int32                       `protobuf:"varint,12,opt,name=field10215" json:"field10215,omitempty"`
-	Field10216   *float32                     `protobuf:"fixed32,41,opt,name=field10216" json:"field10216,omitempty"`
-	Field10217   *Message10154                `protobuf:"bytes,61,opt,name=field10217" json:"field10217,omitempty"`
-	Field10218   *int32                       `protobuf:"varint,23,opt,name=field10218" json:"field10218,omitempty"`
-	Field10219   []byte                       `protobuf:"bytes,24,opt,name=field10219" json:"field10219,omitempty"`
-	Field10220   *int32                       `protobuf:"varint,65,opt,name=field10220" json:"field10220,omitempty"`
-	Field10221   [][]byte                     `protobuf:"bytes,66,rep,name=field10221" json:"field10221,omitempty"`
-	Field10222   *int32                       `protobuf:"varint,70,opt,name=field10222" json:"field10222,omitempty"`
-	Field10223   []byte                       `protobuf:"bytes,71,opt,name=field10223" json:"field10223,omitempty"`
-	Field10224   []uint64                     `protobuf:"fixed64,73,rep,name=field10224" json:"field10224,omitempty"`
-	Field10225   *float32                     `protobuf:"fixed32,29,opt,name=field10225" json:"field10225,omitempty"`
-	Field10226   *int32                       `protobuf:"varint,30,opt,name=field10226" json:"field10226,omitempty"`
-	Field10227   *float32                     `protobuf:"fixed32,31,opt,name=field10227" json:"field10227,omitempty"`
-	Field10228   *int32                       `protobuf:"varint,32,opt,name=field10228" json:"field10228,omitempty"`
-	Field10229   *float32                     `protobuf:"fixed32,34,opt,name=field10229" json:"field10229,omitempty"`
-	Field10230   *int32                       `protobuf:"varint,35,opt,name=field10230" json:"field10230,omitempty"`
-	Field10231   *string                      `protobuf:"bytes,22,opt,name=field10231" json:"field10231,omitempty"`
-	Field10232   *uint64                      `protobuf:"fixed64,13,opt,name=field10232" json:"field10232,omitempty"`
-	Field10233   *uint64                      `protobuf:"fixed64,20,opt,name=field10233" json:"field10233,omitempty"`
-	Field10234   *bool                        `protobuf:"varint,79,opt,name=field10234" json:"field10234,omitempty"`
-	Field10235   []Enum10167                  `protobuf:"varint,80,rep,packed,name=field10235,enum=benchmarks.google_message3.Enum10167" json:"field10235,omitempty"`
-	Field10236   *int32                       `protobuf:"varint,14,opt,name=field10236" json:"field10236,omitempty"`
-	Field10237   *int32                       `protobuf:"varint,15,opt,name=field10237" json:"field10237,omitempty"`
-	Field10238   *int32                       `protobuf:"varint,28,opt,name=field10238" json:"field10238,omitempty"`
-	Field10239   []string                     `protobuf:"bytes,16,rep,name=field10239" json:"field10239,omitempty"`
-	Field10240   *Message9182                 `protobuf:"bytes,17,opt,name=field10240" json:"field10240,omitempty"`
-	Field10241   *int32                       `protobuf:"varint,63,opt,name=field10241" json:"field10241,omitempty"`
-	Field10242   *float32                     `protobuf:"fixed32,64,opt,name=field10242" json:"field10242,omitempty"`
-	Field10243   *float32                     `protobuf:"fixed32,37,opt,name=field10243" json:"field10243,omitempty"`
-	Field10244   []float32                    `protobuf:"fixed32,43,rep,name=field10244" json:"field10244,omitempty"`
-	Field10245   *int32                       `protobuf:"varint,44,opt,name=field10245" json:"field10245,omitempty"`
-	Field10246   *Message9242                 `protobuf:"bytes,45,opt,name=field10246" json:"field10246,omitempty"`
-	Field10247   *UnusedEmptyMessage          `protobuf:"bytes,46,opt,name=field10247" json:"field10247,omitempty"`
-	Field10248   *UnusedEmptyMessage          `protobuf:"bytes,62,opt,name=field10248" json:"field10248,omitempty"`
-	Field10249   *Message8944                 `protobuf:"bytes,48,opt,name=field10249" json:"field10249,omitempty"`
-	Field10250   *UnusedEmptyMessage          `protobuf:"bytes,87,opt,name=field10250" json:"field10250,omitempty"`
-	Field10251   *int32                       `protobuf:"varint,58,opt,name=field10251" json:"field10251,omitempty"`
-	Field10252   *int32                       `protobuf:"varint,92,opt,name=field10252" json:"field10252,omitempty"`
-	Field10253   *Message9123                 `protobuf:"bytes,93,opt,name=field10253" json:"field10253,omitempty"`
-	Field10254   *Message9160                 `protobuf:"bytes,60,opt,name=field10254" json:"field10254,omitempty"`
-	Field10255   *Message8890                 `protobuf:"bytes,67,opt,name=field10255" json:"field10255,omitempty"`
-	Field10256   *string                      `protobuf:"bytes,69,opt,name=field10256" json:"field10256,omitempty"`
-	Field10257   *int64                       `protobuf:"varint,74,opt,name=field10257" json:"field10257,omitempty"`
-	Field10258   *float32                     `protobuf:"fixed32,82,opt,name=field10258" json:"field10258,omitempty"`
-	Field10259   *float32                     `protobuf:"fixed32,85,opt,name=field10259" json:"field10259,omitempty"`
-	Field10260   *float32                     `protobuf:"fixed32,86,opt,name=field10260" json:"field10260,omitempty"`
-	Field10261   *int64                       `protobuf:"varint,83,opt,name=field10261" json:"field10261,omitempty"`
-	Field10262   *string                      `protobuf:"bytes,77,opt,name=field10262" json:"field10262,omitempty"`
-	Field10263   *bool                        `protobuf:"varint,88,opt,name=field10263" json:"field10263,omitempty"`
-	Field10264   []*Message9628               `protobuf:"bytes,94,rep,name=field10264" json:"field10264,omitempty"`
-}
-
-func (x *Message10155) Reset() {
-	*x = Message10155{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[17]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10155) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10155) ProtoMessage() {}
-
-func (x *Message10155) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[17]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10155.ProtoReflect.Descriptor instead.
-func (*Message10155) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{17}
-}
-
-func (x *Message10155) GetField10195() int32 {
-	if x != nil && x.Field10195 != nil {
-		return *x.Field10195
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10196() int32 {
-	if x != nil && x.Field10196 != nil {
-		return *x.Field10196
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10197() Enum10157 {
-	if x != nil && x.Field10197 != nil {
-		return *x.Field10197
-	}
-	return Enum10157_ENUM_VALUE10158
-}
-
-func (x *Message10155) GetField10198() int32 {
-	if x != nil && x.Field10198 != nil {
-		return *x.Field10198
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10199() int32 {
-	if x != nil && x.Field10199 != nil {
-		return *x.Field10199
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10200() int32 {
-	if x != nil && x.Field10200 != nil {
-		return *x.Field10200
-	}
-	return 0
-}
-
-func (x *Message10155) GetMessage10156() []*Message10155_Message10156 {
-	if x != nil {
-		return x.Message10156
-	}
-	return nil
-}
-
-func (x *Message10155) GetField10202() int32 {
-	if x != nil && x.Field10202 != nil {
-		return *x.Field10202
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10203() int32 {
-	if x != nil && x.Field10203 != nil {
-		return *x.Field10203
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10204() int32 {
-	if x != nil && x.Field10204 != nil {
-		return *x.Field10204
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10205() bool {
-	if x != nil && x.Field10205 != nil {
-		return *x.Field10205
-	}
-	return false
-}
-
-func (x *Message10155) GetField10206() bool {
-	if x != nil && x.Field10206 != nil {
-		return *x.Field10206
-	}
-	return false
-}
-
-func (x *Message10155) GetField10207() int32 {
-	if x != nil && x.Field10207 != nil {
-		return *x.Field10207
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10208() float32 {
-	if x != nil && x.Field10208 != nil {
-		return *x.Field10208
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10209() int32 {
-	if x != nil && x.Field10209 != nil {
-		return *x.Field10209
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10210() int32 {
-	if x != nil && x.Field10210 != nil {
-		return *x.Field10210
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10211() int32 {
-	if x != nil && x.Field10211 != nil {
-		return *x.Field10211
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10212() float32 {
-	if x != nil && x.Field10212 != nil {
-		return *x.Field10212
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10213() *Message9151 {
-	if x != nil {
-		return x.Field10213
-	}
-	return nil
-}
-
-func (x *Message10155) GetField10214() int32 {
-	if x != nil && x.Field10214 != nil {
-		return *x.Field10214
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10215() int32 {
-	if x != nil && x.Field10215 != nil {
-		return *x.Field10215
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10216() float32 {
-	if x != nil && x.Field10216 != nil {
-		return *x.Field10216
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10217() *Message10154 {
-	if x != nil {
-		return x.Field10217
-	}
-	return nil
-}
-
-func (x *Message10155) GetField10218() int32 {
-	if x != nil && x.Field10218 != nil {
-		return *x.Field10218
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10219() []byte {
-	if x != nil {
-		return x.Field10219
-	}
-	return nil
-}
-
-func (x *Message10155) GetField10220() int32 {
-	if x != nil && x.Field10220 != nil {
-		return *x.Field10220
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10221() [][]byte {
-	if x != nil {
-		return x.Field10221
-	}
-	return nil
-}
-
-func (x *Message10155) GetField10222() int32 {
-	if x != nil && x.Field10222 != nil {
-		return *x.Field10222
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10223() []byte {
-	if x != nil {
-		return x.Field10223
-	}
-	return nil
-}
-
-func (x *Message10155) GetField10224() []uint64 {
-	if x != nil {
-		return x.Field10224
-	}
-	return nil
-}
-
-func (x *Message10155) GetField10225() float32 {
-	if x != nil && x.Field10225 != nil {
-		return *x.Field10225
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10226() int32 {
-	if x != nil && x.Field10226 != nil {
-		return *x.Field10226
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10227() float32 {
-	if x != nil && x.Field10227 != nil {
-		return *x.Field10227
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10228() int32 {
-	if x != nil && x.Field10228 != nil {
-		return *x.Field10228
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10229() float32 {
-	if x != nil && x.Field10229 != nil {
-		return *x.Field10229
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10230() int32 {
-	if x != nil && x.Field10230 != nil {
-		return *x.Field10230
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10231() string {
-	if x != nil && x.Field10231 != nil {
-		return *x.Field10231
-	}
-	return ""
-}
-
-func (x *Message10155) GetField10232() uint64 {
-	if x != nil && x.Field10232 != nil {
-		return *x.Field10232
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10233() uint64 {
-	if x != nil && x.Field10233 != nil {
-		return *x.Field10233
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10234() bool {
-	if x != nil && x.Field10234 != nil {
-		return *x.Field10234
-	}
-	return false
-}
-
-func (x *Message10155) GetField10235() []Enum10167 {
-	if x != nil {
-		return x.Field10235
-	}
-	return nil
-}
-
-func (x *Message10155) GetField10236() int32 {
-	if x != nil && x.Field10236 != nil {
-		return *x.Field10236
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10237() int32 {
-	if x != nil && x.Field10237 != nil {
-		return *x.Field10237
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10238() int32 {
-	if x != nil && x.Field10238 != nil {
-		return *x.Field10238
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10239() []string {
-	if x != nil {
-		return x.Field10239
-	}
-	return nil
-}
-
-func (x *Message10155) GetField10240() *Message9182 {
-	if x != nil {
-		return x.Field10240
-	}
-	return nil
-}
-
-func (x *Message10155) GetField10241() int32 {
-	if x != nil && x.Field10241 != nil {
-		return *x.Field10241
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10242() float32 {
-	if x != nil && x.Field10242 != nil {
-		return *x.Field10242
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10243() float32 {
-	if x != nil && x.Field10243 != nil {
-		return *x.Field10243
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10244() []float32 {
-	if x != nil {
-		return x.Field10244
-	}
-	return nil
-}
-
-func (x *Message10155) GetField10245() int32 {
-	if x != nil && x.Field10245 != nil {
-		return *x.Field10245
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10246() *Message9242 {
-	if x != nil {
-		return x.Field10246
-	}
-	return nil
-}
-
-func (x *Message10155) GetField10247() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field10247
-	}
-	return nil
-}
-
-func (x *Message10155) GetField10248() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field10248
-	}
-	return nil
-}
-
-func (x *Message10155) GetField10249() *Message8944 {
-	if x != nil {
-		return x.Field10249
-	}
-	return nil
-}
-
-func (x *Message10155) GetField10250() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field10250
-	}
-	return nil
-}
-
-func (x *Message10155) GetField10251() int32 {
-	if x != nil && x.Field10251 != nil {
-		return *x.Field10251
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10252() int32 {
-	if x != nil && x.Field10252 != nil {
-		return *x.Field10252
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10253() *Message9123 {
-	if x != nil {
-		return x.Field10253
-	}
-	return nil
-}
-
-func (x *Message10155) GetField10254() *Message9160 {
-	if x != nil {
-		return x.Field10254
-	}
-	return nil
-}
-
-func (x *Message10155) GetField10255() *Message8890 {
-	if x != nil {
-		return x.Field10255
-	}
-	return nil
-}
-
-func (x *Message10155) GetField10256() string {
-	if x != nil && x.Field10256 != nil {
-		return *x.Field10256
-	}
-	return ""
-}
-
-func (x *Message10155) GetField10257() int64 {
-	if x != nil && x.Field10257 != nil {
-		return *x.Field10257
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10258() float32 {
-	if x != nil && x.Field10258 != nil {
-		return *x.Field10258
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10259() float32 {
-	if x != nil && x.Field10259 != nil {
-		return *x.Field10259
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10260() float32 {
-	if x != nil && x.Field10260 != nil {
-		return *x.Field10260
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10261() int64 {
-	if x != nil && x.Field10261 != nil {
-		return *x.Field10261
-	}
-	return 0
-}
-
-func (x *Message10155) GetField10262() string {
-	if x != nil && x.Field10262 != nil {
-		return *x.Field10262
-	}
-	return ""
-}
-
-func (x *Message10155) GetField10263() bool {
-	if x != nil && x.Field10263 != nil {
-		return *x.Field10263
-	}
-	return false
-}
-
-func (x *Message10155) GetField10264() []*Message9628 {
-	if x != nil {
-		return x.Field10264
-	}
-	return nil
-}
-
-type Message11866 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field11868 *Message11014         `protobuf:"bytes,1,req,name=field11868" json:"field11868,omitempty"`
-	Field11869 *bool                 `protobuf:"varint,2,opt,name=field11869" json:"field11869,omitempty"`
-	Field11870 *float64              `protobuf:"fixed64,3,opt,name=field11870" json:"field11870,omitempty"`
-	Field11871 *float64              `protobuf:"fixed64,4,opt,name=field11871" json:"field11871,omitempty"`
-	Field11872 []*UnusedEmptyMessage `protobuf:"bytes,5,rep,name=field11872" json:"field11872,omitempty"`
-}
-
-func (x *Message11866) Reset() {
-	*x = Message11866{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[18]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message11866) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message11866) ProtoMessage() {}
-
-func (x *Message11866) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[18]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message11866.ProtoReflect.Descriptor instead.
-func (*Message11866) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{18}
-}
-
-func (x *Message11866) GetField11868() *Message11014 {
-	if x != nil {
-		return x.Field11868
-	}
-	return nil
-}
-
-func (x *Message11866) GetField11869() bool {
-	if x != nil && x.Field11869 != nil {
-		return *x.Field11869
-	}
-	return false
-}
-
-func (x *Message11866) GetField11870() float64 {
-	if x != nil && x.Field11870 != nil {
-		return *x.Field11870
-	}
-	return 0
-}
-
-func (x *Message11866) GetField11871() float64 {
-	if x != nil && x.Field11871 != nil {
-		return *x.Field11871
-	}
-	return 0
-}
-
-func (x *Message11866) GetField11872() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field11872
-	}
-	return nil
-}
-
-type Message10469 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field10473 *string  `protobuf:"bytes,1,opt,name=field10473" json:"field10473,omitempty"`
-	Field10474 *float32 `protobuf:"fixed32,2,opt,name=field10474" json:"field10474,omitempty"`
-	Field10475 *int32   `protobuf:"varint,3,opt,name=field10475" json:"field10475,omitempty"`
-	Field10476 *int32   `protobuf:"varint,4,opt,name=field10476" json:"field10476,omitempty"`
-	Field10477 *int32   `protobuf:"varint,5,opt,name=field10477" json:"field10477,omitempty"`
-	Field10478 *bool    `protobuf:"varint,6,opt,name=field10478" json:"field10478,omitempty"`
-	Field10479 *bool    `protobuf:"varint,7,opt,name=field10479" json:"field10479,omitempty"`
-	Field10480 *int32   `protobuf:"varint,8,opt,name=field10480" json:"field10480,omitempty"`
-	Field10481 *float32 `protobuf:"fixed32,9,opt,name=field10481" json:"field10481,omitempty"`
-}
-
-func (x *Message10469) Reset() {
-	*x = Message10469{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[19]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10469) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10469) ProtoMessage() {}
-
-func (x *Message10469) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[19]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10469.ProtoReflect.Descriptor instead.
-func (*Message10469) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{19}
-}
-
-func (x *Message10469) GetField10473() string {
-	if x != nil && x.Field10473 != nil {
-		return *x.Field10473
-	}
-	return ""
-}
-
-func (x *Message10469) GetField10474() float32 {
-	if x != nil && x.Field10474 != nil {
-		return *x.Field10474
-	}
-	return 0
-}
-
-func (x *Message10469) GetField10475() int32 {
-	if x != nil && x.Field10475 != nil {
-		return *x.Field10475
-	}
-	return 0
-}
-
-func (x *Message10469) GetField10476() int32 {
-	if x != nil && x.Field10476 != nil {
-		return *x.Field10476
-	}
-	return 0
-}
-
-func (x *Message10469) GetField10477() int32 {
-	if x != nil && x.Field10477 != nil {
-		return *x.Field10477
-	}
-	return 0
-}
-
-func (x *Message10469) GetField10478() bool {
-	if x != nil && x.Field10478 != nil {
-		return *x.Field10478
-	}
-	return false
-}
-
-func (x *Message10469) GetField10479() bool {
-	if x != nil && x.Field10479 != nil {
-		return *x.Field10479
-	}
-	return false
-}
-
-func (x *Message10469) GetField10480() int32 {
-	if x != nil && x.Field10480 != nil {
-		return *x.Field10480
-	}
-	return 0
-}
-
-func (x *Message10469) GetField10481() float32 {
-	if x != nil && x.Field10481 != nil {
-		return *x.Field10481
-	}
-	return 0
-}
-
-type Message10818 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field10819 *Message10800 `protobuf:"bytes,1,opt,name=field10819" json:"field10819,omitempty"`
-	Field10820 *Message10801 `protobuf:"bytes,2,opt,name=field10820" json:"field10820,omitempty"`
-}
-
-func (x *Message10818) Reset() {
-	*x = Message10818{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[20]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10818) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10818) ProtoMessage() {}
-
-func (x *Message10818) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[20]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10818.ProtoReflect.Descriptor instead.
-func (*Message10818) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{20}
-}
-
-func (x *Message10818) GetField10819() *Message10800 {
-	if x != nil {
-		return x.Field10819
-	}
-	return nil
-}
-
-func (x *Message10818) GetField10820() *Message10801 {
-	if x != nil {
-		return x.Field10820
-	}
-	return nil
-}
-
-type Message10773 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field10774 *bool                 `protobuf:"varint,9,opt,name=field10774" json:"field10774,omitempty"`
-	Field10775 *bool                 `protobuf:"varint,1,opt,name=field10775" json:"field10775,omitempty"`
-	Field10776 *bool                 `protobuf:"varint,23,opt,name=field10776" json:"field10776,omitempty"`
-	Field10777 *bool                 `protobuf:"varint,2,opt,name=field10777" json:"field10777,omitempty"`
-	Field10778 *bool                 `protobuf:"varint,3,opt,name=field10778" json:"field10778,omitempty"`
-	Field10779 *int32                `protobuf:"varint,4,opt,name=field10779" json:"field10779,omitempty"`
-	Field10780 *int32                `protobuf:"varint,5,opt,name=field10780" json:"field10780,omitempty"`
-	Field10781 *int32                `protobuf:"varint,6,opt,name=field10781" json:"field10781,omitempty"`
-	Field10782 *int32                `protobuf:"varint,7,opt,name=field10782" json:"field10782,omitempty"`
-	Field10783 *int32                `protobuf:"varint,8,opt,name=field10783" json:"field10783,omitempty"`
-	Field10784 *int32                `protobuf:"varint,10,opt,name=field10784" json:"field10784,omitempty"`
-	Field10785 *Message10749         `protobuf:"bytes,11,opt,name=field10785" json:"field10785,omitempty"`
-	Field10786 []*UnusedEmptyMessage `protobuf:"bytes,12,rep,name=field10786" json:"field10786,omitempty"`
-	Field10787 *bool                 `protobuf:"varint,13,opt,name=field10787" json:"field10787,omitempty"`
-	Field10788 *bool                 `protobuf:"varint,15,opt,name=field10788" json:"field10788,omitempty"`
-	Field10789 *bool                 `protobuf:"varint,16,opt,name=field10789" json:"field10789,omitempty"`
-	Field10790 *int32                `protobuf:"varint,17,opt,name=field10790" json:"field10790,omitempty"`
-	Field10791 *int32                `protobuf:"varint,18,opt,name=field10791" json:"field10791,omitempty"`
-	Field10792 *bool                 `protobuf:"varint,19,opt,name=field10792" json:"field10792,omitempty"`
-	Field10793 *bool                 `protobuf:"varint,20,opt,name=field10793" json:"field10793,omitempty"`
-	Field10794 *bool                 `protobuf:"varint,21,opt,name=field10794" json:"field10794,omitempty"`
-	Field10795 *UnusedEnum           `protobuf:"varint,14,opt,name=field10795,enum=benchmarks.google_message3.UnusedEnum" json:"field10795,omitempty"`
-	Field10796 *UnusedEnum           `protobuf:"varint,22,opt,name=field10796,enum=benchmarks.google_message3.UnusedEnum" json:"field10796,omitempty"`
-}
-
-func (x *Message10773) Reset() {
-	*x = Message10773{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[21]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10773) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10773) ProtoMessage() {}
-
-func (x *Message10773) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[21]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10773.ProtoReflect.Descriptor instead.
-func (*Message10773) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{21}
-}
-
-func (x *Message10773) GetField10774() bool {
-	if x != nil && x.Field10774 != nil {
-		return *x.Field10774
-	}
-	return false
-}
-
-func (x *Message10773) GetField10775() bool {
-	if x != nil && x.Field10775 != nil {
-		return *x.Field10775
-	}
-	return false
-}
-
-func (x *Message10773) GetField10776() bool {
-	if x != nil && x.Field10776 != nil {
-		return *x.Field10776
-	}
-	return false
-}
-
-func (x *Message10773) GetField10777() bool {
-	if x != nil && x.Field10777 != nil {
-		return *x.Field10777
-	}
-	return false
-}
-
-func (x *Message10773) GetField10778() bool {
-	if x != nil && x.Field10778 != nil {
-		return *x.Field10778
-	}
-	return false
-}
-
-func (x *Message10773) GetField10779() int32 {
-	if x != nil && x.Field10779 != nil {
-		return *x.Field10779
-	}
-	return 0
-}
-
-func (x *Message10773) GetField10780() int32 {
-	if x != nil && x.Field10780 != nil {
-		return *x.Field10780
-	}
-	return 0
-}
-
-func (x *Message10773) GetField10781() int32 {
-	if x != nil && x.Field10781 != nil {
-		return *x.Field10781
-	}
-	return 0
-}
-
-func (x *Message10773) GetField10782() int32 {
-	if x != nil && x.Field10782 != nil {
-		return *x.Field10782
-	}
-	return 0
-}
-
-func (x *Message10773) GetField10783() int32 {
-	if x != nil && x.Field10783 != nil {
-		return *x.Field10783
-	}
-	return 0
-}
-
-func (x *Message10773) GetField10784() int32 {
-	if x != nil && x.Field10784 != nil {
-		return *x.Field10784
-	}
-	return 0
-}
-
-func (x *Message10773) GetField10785() *Message10749 {
-	if x != nil {
-		return x.Field10785
-	}
-	return nil
-}
-
-func (x *Message10773) GetField10786() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field10786
-	}
-	return nil
-}
-
-func (x *Message10773) GetField10787() bool {
-	if x != nil && x.Field10787 != nil {
-		return *x.Field10787
-	}
-	return false
-}
-
-func (x *Message10773) GetField10788() bool {
-	if x != nil && x.Field10788 != nil {
-		return *x.Field10788
-	}
-	return false
-}
-
-func (x *Message10773) GetField10789() bool {
-	if x != nil && x.Field10789 != nil {
-		return *x.Field10789
-	}
-	return false
-}
-
-func (x *Message10773) GetField10790() int32 {
-	if x != nil && x.Field10790 != nil {
-		return *x.Field10790
-	}
-	return 0
-}
-
-func (x *Message10773) GetField10791() int32 {
-	if x != nil && x.Field10791 != nil {
-		return *x.Field10791
-	}
-	return 0
-}
-
-func (x *Message10773) GetField10792() bool {
-	if x != nil && x.Field10792 != nil {
-		return *x.Field10792
-	}
-	return false
-}
-
-func (x *Message10773) GetField10793() bool {
-	if x != nil && x.Field10793 != nil {
-		return *x.Field10793
-	}
-	return false
-}
-
-func (x *Message10773) GetField10794() bool {
-	if x != nil && x.Field10794 != nil {
-		return *x.Field10794
-	}
-	return false
-}
-
-func (x *Message10773) GetField10795() UnusedEnum {
-	if x != nil && x.Field10795 != nil {
-		return *x.Field10795
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message10773) GetField10796() UnusedEnum {
-	if x != nil && x.Field10796 != nil {
-		return *x.Field10796
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-type Message13145 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	Field13155 *Enum13146 `protobuf:"varint,1,req,name=field13155,enum=benchmarks.google_message3.Enum13146" json:"field13155,omitempty"`
-	Field13156 *float32   `protobuf:"fixed32,2,opt,name=field13156" json:"field13156,omitempty"`
-	Field13157 *float32   `protobuf:"fixed32,3,opt,name=field13157" json:"field13157,omitempty"`
-}
-
-func (x *Message13145) Reset() {
-	*x = Message13145{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[22]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message13145) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message13145) ProtoMessage() {}
-
-func (x *Message13145) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[22]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message13145.ProtoReflect.Descriptor instead.
-func (*Message13145) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{22}
-}
-
-func (x *Message13145) GetField13155() Enum13146 {
-	if x != nil && x.Field13155 != nil {
-		return *x.Field13155
-	}
-	return Enum13146_ENUM_VALUE13147
-}
-
-func (x *Message13145) GetField13156() float32 {
-	if x != nil && x.Field13156 != nil {
-		return *x.Field13156
-	}
-	return 0
-}
-
-func (x *Message13145) GetField13157() float32 {
-	if x != nil && x.Field13157 != nil {
-		return *x.Field13157
-	}
-	return 0
-}
-
-type Message16686 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message16686) Reset() {
-	*x = Message16686{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[23]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message16686) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message16686) ProtoMessage() {}
-
-func (x *Message16686) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[23]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message16686.ProtoReflect.Descriptor instead.
-func (*Message16686) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{23}
-}
-
-type Message12796 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12800 []uint64 `protobuf:"fixed64,1,rep,name=field12800" json:"field12800,omitempty"`
-	Field12801 *uint64  `protobuf:"varint,2,opt,name=field12801" json:"field12801,omitempty"`
-}
-
-func (x *Message12796) Reset() {
-	*x = Message12796{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[24]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12796) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12796) ProtoMessage() {}
-
-func (x *Message12796) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[24]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12796.ProtoReflect.Descriptor instead.
-func (*Message12796) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{24}
-}
-
-func (x *Message12796) GetField12800() []uint64 {
-	if x != nil {
-		return x.Field12800
-	}
-	return nil
-}
-
-func (x *Message12796) GetField12801() uint64 {
-	if x != nil && x.Field12801 != nil {
-		return *x.Field12801
-	}
-	return 0
-}
-
-type Message6722 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message6722) Reset() {
-	*x = Message6722{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[25]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6722) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6722) ProtoMessage() {}
-
-func (x *Message6722) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[25]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6722.ProtoReflect.Descriptor instead.
-func (*Message6722) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{25}
-}
-
-type Message6727 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message6727) Reset() {
-	*x = Message6727{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[26]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6727) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6727) ProtoMessage() {}
-
-func (x *Message6727) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[26]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6727.ProtoReflect.Descriptor instead.
-func (*Message6727) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{26}
-}
-
-type Message6724 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message6724) Reset() {
-	*x = Message6724{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[27]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6724) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6724) ProtoMessage() {}
-
-func (x *Message6724) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[27]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6724.ProtoReflect.Descriptor instead.
-func (*Message6724) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{27}
-}
-
-type Message6735 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message6735) Reset() {
-	*x = Message6735{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[28]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6735) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6735) ProtoMessage() {}
-
-func (x *Message6735) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[28]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6735.ProtoReflect.Descriptor instead.
-func (*Message6735) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{28}
-}
-
-type Message8183 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8226 *string `protobuf:"bytes,1,opt,name=field8226" json:"field8226,omitempty"`
-	Field8227 *string `protobuf:"bytes,2,opt,name=field8227" json:"field8227,omitempty"`
-}
-
-func (x *Message8183) Reset() {
-	*x = Message8183{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[29]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8183) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8183) ProtoMessage() {}
-
-func (x *Message8183) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[29]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8183.ProtoReflect.Descriptor instead.
-func (*Message8183) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{29}
-}
-
-func (x *Message8183) GetField8226() string {
-	if x != nil && x.Field8226 != nil {
-		return *x.Field8226
-	}
-	return ""
-}
-
-func (x *Message8183) GetField8227() string {
-	if x != nil && x.Field8227 != nil {
-		return *x.Field8227
-	}
-	return ""
-}
-
-type Message8301 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	Field8328 *string             `protobuf:"bytes,1,opt,name=field8328" json:"field8328,omitempty"`
-	Field8329 *Message7966        `protobuf:"bytes,2,opt,name=field8329" json:"field8329,omitempty"`
-	Field8330 *string             `protobuf:"bytes,3,opt,name=field8330" json:"field8330,omitempty"`
-	Field8331 *string             `protobuf:"bytes,4,opt,name=field8331" json:"field8331,omitempty"`
-	Field8332 []*Message8290      `protobuf:"bytes,5,rep,name=field8332" json:"field8332,omitempty"`
-	Field8333 *Message7966        `protobuf:"bytes,6,opt,name=field8333" json:"field8333,omitempty"`
-	Field8334 []*Message8298      `protobuf:"bytes,7,rep,name=field8334" json:"field8334,omitempty"`
-	Field8335 *Message8300        `protobuf:"bytes,8,opt,name=field8335" json:"field8335,omitempty"`
-	Field8336 *int64              `protobuf:"varint,9,opt,name=field8336" json:"field8336,omitempty"`
-	Field8337 *UnusedEmptyMessage `protobuf:"bytes,10,opt,name=field8337" json:"field8337,omitempty"`
-	Field8338 *Message7965        `protobuf:"bytes,11,opt,name=field8338" json:"field8338,omitempty"`
-}
-
-func (x *Message8301) Reset() {
-	*x = Message8301{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[30]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8301) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8301) ProtoMessage() {}
-
-func (x *Message8301) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[30]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8301.ProtoReflect.Descriptor instead.
-func (*Message8301) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{30}
-}
-
-func (x *Message8301) GetField8328() string {
-	if x != nil && x.Field8328 != nil {
-		return *x.Field8328
-	}
-	return ""
-}
-
-func (x *Message8301) GetField8329() *Message7966 {
-	if x != nil {
-		return x.Field8329
-	}
-	return nil
-}
-
-func (x *Message8301) GetField8330() string {
-	if x != nil && x.Field8330 != nil {
-		return *x.Field8330
-	}
-	return ""
-}
-
-func (x *Message8301) GetField8331() string {
-	if x != nil && x.Field8331 != nil {
-		return *x.Field8331
-	}
-	return ""
-}
-
-func (x *Message8301) GetField8332() []*Message8290 {
-	if x != nil {
-		return x.Field8332
-	}
-	return nil
-}
-
-func (x *Message8301) GetField8333() *Message7966 {
-	if x != nil {
-		return x.Field8333
-	}
-	return nil
-}
-
-func (x *Message8301) GetField8334() []*Message8298 {
-	if x != nil {
-		return x.Field8334
-	}
-	return nil
-}
-
-func (x *Message8301) GetField8335() *Message8300 {
-	if x != nil {
-		return x.Field8335
-	}
-	return nil
-}
-
-func (x *Message8301) GetField8336() int64 {
-	if x != nil && x.Field8336 != nil {
-		return *x.Field8336
-	}
-	return 0
-}
-
-func (x *Message8301) GetField8337() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8337
-	}
-	return nil
-}
-
-func (x *Message8301) GetField8338() *Message7965 {
-	if x != nil {
-		return x.Field8338
-	}
-	return nil
-}
-
-type Message8456 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message8456) Reset() {
-	*x = Message8456{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[31]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8456) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8456) ProtoMessage() {}
-
-func (x *Message8456) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[31]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8456.ProtoReflect.Descriptor instead.
-func (*Message8456) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{31}
-}
-
-type Message8302 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	Field8339 *string               `protobuf:"bytes,1,opt,name=field8339" json:"field8339,omitempty"`
-	Field8340 *Message7966          `protobuf:"bytes,2,opt,name=field8340" json:"field8340,omitempty"`
-	Field8341 *string               `protobuf:"bytes,3,opt,name=field8341" json:"field8341,omitempty"`
-	Field8342 *string               `protobuf:"bytes,4,opt,name=field8342" json:"field8342,omitempty"`
-	Field8343 *string               `protobuf:"bytes,5,opt,name=field8343" json:"field8343,omitempty"`
-	Field8344 *string               `protobuf:"bytes,6,opt,name=field8344" json:"field8344,omitempty"`
-	Field8345 *string               `protobuf:"bytes,7,opt,name=field8345" json:"field8345,omitempty"`
-	Field8346 *int64                `protobuf:"varint,8,opt,name=field8346" json:"field8346,omitempty"`
-	Field8347 *int64                `protobuf:"varint,9,opt,name=field8347" json:"field8347,omitempty"`
-	Field8348 []*Message8290        `protobuf:"bytes,10,rep,name=field8348" json:"field8348,omitempty"`
-	Field8349 *string               `protobuf:"bytes,11,opt,name=field8349" json:"field8349,omitempty"`
-	Field8350 *UnusedEmptyMessage   `protobuf:"bytes,12,opt,name=field8350" json:"field8350,omitempty"`
-	Field8351 *Message8291          `protobuf:"bytes,13,opt,name=field8351" json:"field8351,omitempty"`
-	Field8352 *int64                `protobuf:"varint,14,opt,name=field8352" json:"field8352,omitempty"`
-	Field8353 *Message8296          `protobuf:"bytes,15,opt,name=field8353" json:"field8353,omitempty"`
-	Field8354 *string               `protobuf:"bytes,16,opt,name=field8354" json:"field8354,omitempty"`
-	Field8355 *UnusedEmptyMessage   `protobuf:"bytes,17,opt,name=field8355" json:"field8355,omitempty"`
-	Field8356 []int32               `protobuf:"varint,18,rep,name=field8356" json:"field8356,omitempty"`
-	Field8357 []int32               `protobuf:"varint,19,rep,name=field8357" json:"field8357,omitempty"`
-	Field8358 []*UnusedEmptyMessage `protobuf:"bytes,20,rep,name=field8358" json:"field8358,omitempty"`
-	Field8359 *Message7965          `protobuf:"bytes,21,opt,name=field8359" json:"field8359,omitempty"`
-}
-
-func (x *Message8302) Reset() {
-	*x = Message8302{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[32]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8302) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8302) ProtoMessage() {}
-
-func (x *Message8302) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[32]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8302.ProtoReflect.Descriptor instead.
-func (*Message8302) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{32}
-}
-
-func (x *Message8302) GetField8339() string {
-	if x != nil && x.Field8339 != nil {
-		return *x.Field8339
-	}
-	return ""
-}
-
-func (x *Message8302) GetField8340() *Message7966 {
-	if x != nil {
-		return x.Field8340
-	}
-	return nil
-}
-
-func (x *Message8302) GetField8341() string {
-	if x != nil && x.Field8341 != nil {
-		return *x.Field8341
-	}
-	return ""
-}
-
-func (x *Message8302) GetField8342() string {
-	if x != nil && x.Field8342 != nil {
-		return *x.Field8342
-	}
-	return ""
-}
-
-func (x *Message8302) GetField8343() string {
-	if x != nil && x.Field8343 != nil {
-		return *x.Field8343
-	}
-	return ""
-}
-
-func (x *Message8302) GetField8344() string {
-	if x != nil && x.Field8344 != nil {
-		return *x.Field8344
-	}
-	return ""
-}
-
-func (x *Message8302) GetField8345() string {
-	if x != nil && x.Field8345 != nil {
-		return *x.Field8345
-	}
-	return ""
-}
-
-func (x *Message8302) GetField8346() int64 {
-	if x != nil && x.Field8346 != nil {
-		return *x.Field8346
-	}
-	return 0
-}
-
-func (x *Message8302) GetField8347() int64 {
-	if x != nil && x.Field8347 != nil {
-		return *x.Field8347
-	}
-	return 0
-}
-
-func (x *Message8302) GetField8348() []*Message8290 {
-	if x != nil {
-		return x.Field8348
-	}
-	return nil
-}
-
-func (x *Message8302) GetField8349() string {
-	if x != nil && x.Field8349 != nil {
-		return *x.Field8349
-	}
-	return ""
-}
-
-func (x *Message8302) GetField8350() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8350
-	}
-	return nil
-}
-
-func (x *Message8302) GetField8351() *Message8291 {
-	if x != nil {
-		return x.Field8351
-	}
-	return nil
-}
-
-func (x *Message8302) GetField8352() int64 {
-	if x != nil && x.Field8352 != nil {
-		return *x.Field8352
-	}
-	return 0
-}
-
-func (x *Message8302) GetField8353() *Message8296 {
-	if x != nil {
-		return x.Field8353
-	}
-	return nil
-}
-
-func (x *Message8302) GetField8354() string {
-	if x != nil && x.Field8354 != nil {
-		return *x.Field8354
-	}
-	return ""
-}
-
-func (x *Message8302) GetField8355() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8355
-	}
-	return nil
-}
-
-func (x *Message8302) GetField8356() []int32 {
-	if x != nil {
-		return x.Field8356
-	}
-	return nil
-}
-
-func (x *Message8302) GetField8357() []int32 {
-	if x != nil {
-		return x.Field8357
-	}
-	return nil
-}
-
-func (x *Message8302) GetField8358() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8358
-	}
-	return nil
-}
-
-func (x *Message8302) GetField8359() *Message7965 {
-	if x != nil {
-		return x.Field8359
-	}
-	return nil
-}
-
-type Message8457 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message8457) Reset() {
-	*x = Message8457{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[33]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8457) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8457) ProtoMessage() {}
-
-func (x *Message8457) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[33]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8457.ProtoReflect.Descriptor instead.
-func (*Message8457) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{33}
-}
-
-type Message8449 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8458 *string      `protobuf:"bytes,1,opt,name=field8458" json:"field8458,omitempty"`
-	Field8459 *bool        `protobuf:"varint,2,opt,name=field8459" json:"field8459,omitempty"`
-	Field8460 *Enum8450    `protobuf:"varint,3,opt,name=field8460,enum=benchmarks.google_message3.Enum8450" json:"field8460,omitempty"`
-	Field8461 []string     `protobuf:"bytes,4,rep,name=field8461" json:"field8461,omitempty"`
-	Field8462 *string      `protobuf:"bytes,5,opt,name=field8462" json:"field8462,omitempty"`
-	Field8463 *string      `protobuf:"bytes,6,opt,name=field8463" json:"field8463,omitempty"`
-	Field8464 *Message7966 `protobuf:"bytes,7,opt,name=field8464" json:"field8464,omitempty"`
-}
-
-func (x *Message8449) Reset() {
-	*x = Message8449{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[34]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8449) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8449) ProtoMessage() {}
-
-func (x *Message8449) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[34]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8449.ProtoReflect.Descriptor instead.
-func (*Message8449) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{34}
-}
-
-func (x *Message8449) GetField8458() string {
-	if x != nil && x.Field8458 != nil {
-		return *x.Field8458
-	}
-	return ""
-}
-
-func (x *Message8449) GetField8459() bool {
-	if x != nil && x.Field8459 != nil {
-		return *x.Field8459
-	}
-	return false
-}
-
-func (x *Message8449) GetField8460() Enum8450 {
-	if x != nil && x.Field8460 != nil {
-		return *x.Field8460
-	}
-	return Enum8450_ENUM_VALUE8451
-}
-
-func (x *Message8449) GetField8461() []string {
-	if x != nil {
-		return x.Field8461
-	}
-	return nil
-}
-
-func (x *Message8449) GetField8462() string {
-	if x != nil && x.Field8462 != nil {
-		return *x.Field8462
-	}
-	return ""
-}
-
-func (x *Message8449) GetField8463() string {
-	if x != nil && x.Field8463 != nil {
-		return *x.Field8463
-	}
-	return ""
-}
-
-func (x *Message8449) GetField8464() *Message7966 {
-	if x != nil {
-		return x.Field8464
-	}
-	return nil
-}
-
-type Message13358 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field13359 *uint64             `protobuf:"fixed64,1,req,name=field13359" json:"field13359,omitempty"`
-	Field13360 *uint64             `protobuf:"fixed64,2,req,name=field13360" json:"field13360,omitempty"`
-	Field13361 *UnusedEmptyMessage `protobuf:"bytes,3,opt,name=field13361" json:"field13361,omitempty"`
-}
-
-func (x *Message13358) Reset() {
-	*x = Message13358{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[35]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message13358) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message13358) ProtoMessage() {}
-
-func (x *Message13358) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[35]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message13358.ProtoReflect.Descriptor instead.
-func (*Message13358) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{35}
-}
-
-func (x *Message13358) GetField13359() uint64 {
-	if x != nil && x.Field13359 != nil {
-		return *x.Field13359
-	}
-	return 0
-}
-
-func (x *Message13358) GetField13360() uint64 {
-	if x != nil && x.Field13360 != nil {
-		return *x.Field13360
-	}
-	return 0
-}
-
-func (x *Message13358) GetField13361() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field13361
-	}
-	return nil
-}
-
-type Message13912 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field13913 *uint32             `protobuf:"fixed32,1,req,name=field13913" json:"field13913,omitempty"`
-	Field13914 *uint32             `protobuf:"fixed32,2,req,name=field13914" json:"field13914,omitempty"`
-	Field13915 *UnusedEmptyMessage `protobuf:"bytes,500,opt,name=field13915" json:"field13915,omitempty"`
-	Field13916 *UnusedEmptyMessage `protobuf:"bytes,15,opt,name=field13916" json:"field13916,omitempty"`
-}
-
-func (x *Message13912) Reset() {
-	*x = Message13912{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[36]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message13912) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message13912) ProtoMessage() {}
-
-func (x *Message13912) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[36]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message13912.ProtoReflect.Descriptor instead.
-func (*Message13912) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{36}
-}
-
-func (x *Message13912) GetField13913() uint32 {
-	if x != nil && x.Field13913 != nil {
-		return *x.Field13913
-	}
-	return 0
-}
-
-func (x *Message13912) GetField13914() uint32 {
-	if x != nil && x.Field13914 != nil {
-		return *x.Field13914
-	}
-	return 0
-}
-
-func (x *Message13912) GetField13915() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field13915
-	}
-	return nil
-}
-
-func (x *Message13912) GetField13916() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field13916
-	}
-	return nil
-}
-
-type Message24316 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field24443 []string `protobuf:"bytes,1,rep,name=field24443" json:"field24443,omitempty"`
-	Field24444 []string `protobuf:"bytes,2,rep,name=field24444" json:"field24444,omitempty"`
-	Field24445 []string `protobuf:"bytes,3,rep,name=field24445" json:"field24445,omitempty"`
-}
-
-func (x *Message24316) Reset() {
-	*x = Message24316{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[37]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message24316) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message24316) ProtoMessage() {}
-
-func (x *Message24316) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[37]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message24316.ProtoReflect.Descriptor instead.
-func (*Message24316) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{37}
-}
-
-func (x *Message24316) GetField24443() []string {
-	if x != nil {
-		return x.Field24443
-	}
-	return nil
-}
-
-func (x *Message24316) GetField24444() []string {
-	if x != nil {
-		return x.Field24444
-	}
-	return nil
-}
-
-func (x *Message24316) GetField24445() []string {
-	if x != nil {
-		return x.Field24445
-	}
-	return nil
-}
-
-type Message24312 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field24421 *string  `protobuf:"bytes,1,opt,name=field24421" json:"field24421,omitempty"`
-	Field24422 *string  `protobuf:"bytes,2,opt,name=field24422" json:"field24422,omitempty"`
-	Field24423 []string `protobuf:"bytes,3,rep,name=field24423" json:"field24423,omitempty"`
-	Field24424 []string `protobuf:"bytes,4,rep,name=field24424" json:"field24424,omitempty"`
-	Field24425 []string `protobuf:"bytes,5,rep,name=field24425" json:"field24425,omitempty"`
-	Field24426 []string `protobuf:"bytes,6,rep,name=field24426" json:"field24426,omitempty"`
-}
-
-func (x *Message24312) Reset() {
-	*x = Message24312{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[38]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message24312) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message24312) ProtoMessage() {}
-
-func (x *Message24312) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[38]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message24312.ProtoReflect.Descriptor instead.
-func (*Message24312) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{38}
-}
-
-func (x *Message24312) GetField24421() string {
-	if x != nil && x.Field24421 != nil {
-		return *x.Field24421
-	}
-	return ""
-}
-
-func (x *Message24312) GetField24422() string {
-	if x != nil && x.Field24422 != nil {
-		return *x.Field24422
-	}
-	return ""
-}
-
-func (x *Message24312) GetField24423() []string {
-	if x != nil {
-		return x.Field24423
-	}
-	return nil
-}
-
-func (x *Message24312) GetField24424() []string {
-	if x != nil {
-		return x.Field24424
-	}
-	return nil
-}
-
-func (x *Message24312) GetField24425() []string {
-	if x != nil {
-		return x.Field24425
-	}
-	return nil
-}
-
-func (x *Message24312) GetField24426() []string {
-	if x != nil {
-		return x.Field24426
-	}
-	return nil
-}
-
-type Message24313 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field24427 *string  `protobuf:"bytes,1,opt,name=field24427" json:"field24427,omitempty"`
-	Field24428 *string  `protobuf:"bytes,2,opt,name=field24428" json:"field24428,omitempty"`
-	Field24429 []string `protobuf:"bytes,3,rep,name=field24429" json:"field24429,omitempty"`
-	Field24430 *string  `protobuf:"bytes,4,opt,name=field24430" json:"field24430,omitempty"`
-	Field24431 *string  `protobuf:"bytes,5,opt,name=field24431" json:"field24431,omitempty"`
-	Field24432 *string  `protobuf:"bytes,6,opt,name=field24432" json:"field24432,omitempty"`
-	Field24433 *string  `protobuf:"bytes,7,opt,name=field24433" json:"field24433,omitempty"`
-	Field24434 []string `protobuf:"bytes,8,rep,name=field24434" json:"field24434,omitempty"`
-	Field24435 *string  `protobuf:"bytes,9,opt,name=field24435" json:"field24435,omitempty"`
-	Field24436 []string `protobuf:"bytes,10,rep,name=field24436" json:"field24436,omitempty"`
-}
-
-func (x *Message24313) Reset() {
-	*x = Message24313{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[39]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message24313) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message24313) ProtoMessage() {}
-
-func (x *Message24313) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[39]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message24313.ProtoReflect.Descriptor instead.
-func (*Message24313) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{39}
-}
-
-func (x *Message24313) GetField24427() string {
-	if x != nil && x.Field24427 != nil {
-		return *x.Field24427
-	}
-	return ""
-}
-
-func (x *Message24313) GetField24428() string {
-	if x != nil && x.Field24428 != nil {
-		return *x.Field24428
-	}
-	return ""
-}
-
-func (x *Message24313) GetField24429() []string {
-	if x != nil {
-		return x.Field24429
-	}
-	return nil
-}
-
-func (x *Message24313) GetField24430() string {
-	if x != nil && x.Field24430 != nil {
-		return *x.Field24430
-	}
-	return ""
-}
-
-func (x *Message24313) GetField24431() string {
-	if x != nil && x.Field24431 != nil {
-		return *x.Field24431
-	}
-	return ""
-}
-
-func (x *Message24313) GetField24432() string {
-	if x != nil && x.Field24432 != nil {
-		return *x.Field24432
-	}
-	return ""
-}
-
-func (x *Message24313) GetField24433() string {
-	if x != nil && x.Field24433 != nil {
-		return *x.Field24433
-	}
-	return ""
-}
-
-func (x *Message24313) GetField24434() []string {
-	if x != nil {
-		return x.Field24434
-	}
-	return nil
-}
-
-func (x *Message24313) GetField24435() string {
-	if x != nil && x.Field24435 != nil {
-		return *x.Field24435
-	}
-	return ""
-}
-
-func (x *Message24313) GetField24436() []string {
-	if x != nil {
-		return x.Field24436
-	}
-	return nil
-}
-
-type Message24315 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field24440 *string  `protobuf:"bytes,1,req,name=field24440" json:"field24440,omitempty"`
-	Field24441 []string `protobuf:"bytes,2,rep,name=field24441" json:"field24441,omitempty"`
-	Field24442 []string `protobuf:"bytes,3,rep,name=field24442" json:"field24442,omitempty"`
-}
-
-func (x *Message24315) Reset() {
-	*x = Message24315{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[40]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message24315) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message24315) ProtoMessage() {}
-
-func (x *Message24315) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[40]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message24315.ProtoReflect.Descriptor instead.
-func (*Message24315) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{40}
-}
-
-func (x *Message24315) GetField24440() string {
-	if x != nil && x.Field24440 != nil {
-		return *x.Field24440
-	}
-	return ""
-}
-
-func (x *Message24315) GetField24441() []string {
-	if x != nil {
-		return x.Field24441
-	}
-	return nil
-}
-
-func (x *Message24315) GetField24442() []string {
-	if x != nil {
-		return x.Field24442
-	}
-	return nil
-}
-
-type Message716 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field872 *string     `protobuf:"bytes,1,req,name=field872" json:"field872,omitempty"`
-	Field873 *int32      `protobuf:"varint,2,req,name=field873" json:"field873,omitempty"`
-	Field874 *bool       `protobuf:"varint,3,opt,name=field874" json:"field874,omitempty"`
-	Field875 *Message717 `protobuf:"bytes,4,opt,name=field875" json:"field875,omitempty"`
-}
-
-func (x *Message716) Reset() {
-	*x = Message716{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[41]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message716) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message716) ProtoMessage() {}
-
-func (x *Message716) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[41]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message716.ProtoReflect.Descriptor instead.
-func (*Message716) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{41}
-}
-
-func (x *Message716) GetField872() string {
-	if x != nil && x.Field872 != nil {
-		return *x.Field872
-	}
-	return ""
-}
-
-func (x *Message716) GetField873() int32 {
-	if x != nil && x.Field873 != nil {
-		return *x.Field873
-	}
-	return 0
-}
-
-func (x *Message716) GetField874() bool {
-	if x != nil && x.Field874 != nil {
-		return *x.Field874
-	}
-	return false
-}
-
-func (x *Message716) GetField875() *Message717 {
-	if x != nil {
-		return x.Field875
-	}
-	return nil
-}
-
-type Message718 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field878 []string `protobuf:"bytes,1,rep,name=field878" json:"field878,omitempty"`
-	Field879 []string `protobuf:"bytes,2,rep,name=field879" json:"field879,omitempty"`
-	Field880 *string  `protobuf:"bytes,3,opt,name=field880" json:"field880,omitempty"`
-}
-
-func (x *Message718) Reset() {
-	*x = Message718{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[42]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message718) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message718) ProtoMessage() {}
-
-func (x *Message718) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[42]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message718.ProtoReflect.Descriptor instead.
-func (*Message718) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{42}
-}
-
-func (x *Message718) GetField878() []string {
-	if x != nil {
-		return x.Field878
-	}
-	return nil
-}
-
-func (x *Message718) GetField879() []string {
-	if x != nil {
-		return x.Field879
-	}
-	return nil
-}
-
-func (x *Message718) GetField880() string {
-	if x != nil && x.Field880 != nil {
-		return *x.Field880
-	}
-	return ""
-}
-
-type Message703 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field795 *string  `protobuf:"bytes,1,req,name=field795" json:"field795,omitempty"`
-	Field796 []string `protobuf:"bytes,2,rep,name=field796" json:"field796,omitempty"`
-	Field797 []string `protobuf:"bytes,3,rep,name=field797" json:"field797,omitempty"`
-	Field798 *string  `protobuf:"bytes,4,opt,name=field798" json:"field798,omitempty"`
-	Field799 []string `protobuf:"bytes,5,rep,name=field799" json:"field799,omitempty"`
-}
-
-func (x *Message703) Reset() {
-	*x = Message703{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[43]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message703) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message703) ProtoMessage() {}
-
-func (x *Message703) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[43]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message703.ProtoReflect.Descriptor instead.
-func (*Message703) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{43}
-}
-
-func (x *Message703) GetField795() string {
-	if x != nil && x.Field795 != nil {
-		return *x.Field795
-	}
-	return ""
-}
-
-func (x *Message703) GetField796() []string {
-	if x != nil {
-		return x.Field796
-	}
-	return nil
-}
-
-func (x *Message703) GetField797() []string {
-	if x != nil {
-		return x.Field797
-	}
-	return nil
-}
-
-func (x *Message703) GetField798() string {
-	if x != nil && x.Field798 != nil {
-		return *x.Field798
-	}
-	return ""
-}
-
-func (x *Message703) GetField799() []string {
-	if x != nil {
-		return x.Field799
-	}
-	return nil
-}
-
-type Message715 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field859 *string       `protobuf:"bytes,1,req,name=field859" json:"field859,omitempty"`
-	Field860 *string       `protobuf:"bytes,7,opt,name=field860" json:"field860,omitempty"`
-	Field861 []*Message707 `protobuf:"bytes,2,rep,name=field861" json:"field861,omitempty"`
-	Field862 []*Message708 `protobuf:"bytes,3,rep,name=field862" json:"field862,omitempty"`
-	Field863 []*Message711 `protobuf:"bytes,4,rep,name=field863" json:"field863,omitempty"`
-	Field864 []*Message712 `protobuf:"bytes,5,rep,name=field864" json:"field864,omitempty"`
-	Field865 []*Message713 `protobuf:"bytes,6,rep,name=field865" json:"field865,omitempty"`
-	Field866 []*Message714 `protobuf:"bytes,8,rep,name=field866" json:"field866,omitempty"`
-	Field867 []*Message710 `protobuf:"bytes,9,rep,name=field867" json:"field867,omitempty"`
-	Field868 []*Message709 `protobuf:"bytes,10,rep,name=field868" json:"field868,omitempty"`
-	Field869 []*Message705 `protobuf:"bytes,11,rep,name=field869" json:"field869,omitempty"`
-	Field870 []*Message702 `protobuf:"bytes,12,rep,name=field870" json:"field870,omitempty"`
-	Field871 []*Message706 `protobuf:"bytes,13,rep,name=field871" json:"field871,omitempty"`
-}
-
-func (x *Message715) Reset() {
-	*x = Message715{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[44]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message715) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message715) ProtoMessage() {}
-
-func (x *Message715) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[44]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message715.ProtoReflect.Descriptor instead.
-func (*Message715) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{44}
-}
-
-func (x *Message715) GetField859() string {
-	if x != nil && x.Field859 != nil {
-		return *x.Field859
-	}
-	return ""
-}
-
-func (x *Message715) GetField860() string {
-	if x != nil && x.Field860 != nil {
-		return *x.Field860
-	}
-	return ""
-}
-
-func (x *Message715) GetField861() []*Message707 {
-	if x != nil {
-		return x.Field861
-	}
-	return nil
-}
-
-func (x *Message715) GetField862() []*Message708 {
-	if x != nil {
-		return x.Field862
-	}
-	return nil
-}
-
-func (x *Message715) GetField863() []*Message711 {
-	if x != nil {
-		return x.Field863
-	}
-	return nil
-}
-
-func (x *Message715) GetField864() []*Message712 {
-	if x != nil {
-		return x.Field864
-	}
-	return nil
-}
-
-func (x *Message715) GetField865() []*Message713 {
-	if x != nil {
-		return x.Field865
-	}
-	return nil
-}
-
-func (x *Message715) GetField866() []*Message714 {
-	if x != nil {
-		return x.Field866
-	}
-	return nil
-}
-
-func (x *Message715) GetField867() []*Message710 {
-	if x != nil {
-		return x.Field867
-	}
-	return nil
-}
-
-func (x *Message715) GetField868() []*Message709 {
-	if x != nil {
-		return x.Field868
-	}
-	return nil
-}
-
-func (x *Message715) GetField869() []*Message705 {
-	if x != nil {
-		return x.Field869
-	}
-	return nil
-}
-
-func (x *Message715) GetField870() []*Message702 {
-	if x != nil {
-		return x.Field870
-	}
-	return nil
-}
-
-func (x *Message715) GetField871() []*Message706 {
-	if x != nil {
-		return x.Field871
-	}
-	return nil
-}
-
-type Message700 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field789 []string `protobuf:"bytes,1,rep,name=field789" json:"field789,omitempty"`
-	Field790 []string `protobuf:"bytes,2,rep,name=field790" json:"field790,omitempty"`
-}
-
-func (x *Message700) Reset() {
-	*x = Message700{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[45]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message700) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message700) ProtoMessage() {}
-
-func (x *Message700) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[45]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message700.ProtoReflect.Descriptor instead.
-func (*Message700) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{45}
-}
-
-func (x *Message700) GetField789() []string {
-	if x != nil {
-		return x.Field789
-	}
-	return nil
-}
-
-func (x *Message700) GetField790() []string {
-	if x != nil {
-		return x.Field790
-	}
-	return nil
-}
-
-type Message699 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field787 *string  `protobuf:"bytes,1,req,name=field787" json:"field787,omitempty"`
-	Field788 []string `protobuf:"bytes,2,rep,name=field788" json:"field788,omitempty"`
-}
-
-func (x *Message699) Reset() {
-	*x = Message699{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[46]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message699) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message699) ProtoMessage() {}
-
-func (x *Message699) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[46]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message699.ProtoReflect.Descriptor instead.
-func (*Message699) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{46}
-}
-
-func (x *Message699) GetField787() string {
-	if x != nil && x.Field787 != nil {
-		return *x.Field787
-	}
-	return ""
-}
-
-func (x *Message699) GetField788() []string {
-	if x != nil {
-		return x.Field788
-	}
-	return nil
-}
-
-type Message698 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field779 *string  `protobuf:"bytes,1,opt,name=field779" json:"field779,omitempty"`
-	Field780 *string  `protobuf:"bytes,2,opt,name=field780" json:"field780,omitempty"`
-	Field781 *string  `protobuf:"bytes,3,opt,name=field781" json:"field781,omitempty"`
-	Field782 *string  `protobuf:"bytes,4,opt,name=field782" json:"field782,omitempty"`
-	Field783 *uint64  `protobuf:"varint,5,opt,name=field783" json:"field783,omitempty"`
-	Field784 *uint32  `protobuf:"varint,6,opt,name=field784" json:"field784,omitempty"`
-	Field785 *int64   `protobuf:"varint,7,opt,name=field785" json:"field785,omitempty"`
-	Field786 []string `protobuf:"bytes,8,rep,name=field786" json:"field786,omitempty"`
-}
-
-func (x *Message698) Reset() {
-	*x = Message698{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[47]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message698) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message698) ProtoMessage() {}
-
-func (x *Message698) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[47]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message698.ProtoReflect.Descriptor instead.
-func (*Message698) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{47}
-}
-
-func (x *Message698) GetField779() string {
-	if x != nil && x.Field779 != nil {
-		return *x.Field779
-	}
-	return ""
-}
-
-func (x *Message698) GetField780() string {
-	if x != nil && x.Field780 != nil {
-		return *x.Field780
-	}
-	return ""
-}
-
-func (x *Message698) GetField781() string {
-	if x != nil && x.Field781 != nil {
-		return *x.Field781
-	}
-	return ""
-}
-
-func (x *Message698) GetField782() string {
-	if x != nil && x.Field782 != nil {
-		return *x.Field782
-	}
-	return ""
-}
-
-func (x *Message698) GetField783() uint64 {
-	if x != nil && x.Field783 != nil {
-		return *x.Field783
-	}
-	return 0
-}
-
-func (x *Message698) GetField784() uint32 {
-	if x != nil && x.Field784 != nil {
-		return *x.Field784
-	}
-	return 0
-}
-
-func (x *Message698) GetField785() int64 {
-	if x != nil && x.Field785 != nil {
-		return *x.Field785
-	}
-	return 0
-}
-
-func (x *Message698) GetField786() []string {
-	if x != nil {
-		return x.Field786
-	}
-	return nil
-}
-
-type Message10155_Message10156 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field10266 *Enum8862 `protobuf:"varint,51,opt,name=field10266,enum=benchmarks.google_message3.Enum8862" json:"field10266,omitempty"`
-	Field10267 *int32    `protobuf:"varint,52,opt,name=field10267" json:"field10267,omitempty"`
-	Field10268 *int32    `protobuf:"varint,53,opt,name=field10268" json:"field10268,omitempty"`
-	Field10269 *int32    `protobuf:"varint,54,opt,name=field10269" json:"field10269,omitempty"`
-}
-
-func (x *Message10155_Message10156) Reset() {
-	*x = Message10155_Message10156{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[48]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10155_Message10156) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10155_Message10156) ProtoMessage() {}
-
-func (x *Message10155_Message10156) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[48]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10155_Message10156.ProtoReflect.Descriptor instead.
-func (*Message10155_Message10156) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP(), []int{17, 0}
-}
-
-func (x *Message10155_Message10156) GetField10266() Enum8862 {
-	if x != nil && x.Field10266 != nil {
-		return *x.Field10266
-	}
-	return Enum8862_ENUM_VALUE8863
-}
-
-func (x *Message10155_Message10156) GetField10267() int32 {
-	if x != nil && x.Field10267 != nil {
-		return *x.Field10267
-	}
-	return 0
-}
-
-func (x *Message10155_Message10156) GetField10268() int32 {
-	if x != nil && x.Field10268 != nil {
-		return *x.Field10268
-	}
-	return 0
-}
-
-func (x *Message10155_Message10156) GetField10269() int32 {
-	if x != nil && x.Field10269 != nil {
-		return *x.Field10269
-	}
-	return 0
-}
-
-var File_datasets_google_message3_benchmark_message3_5_proto protoreflect.FileDescriptor
-
-var file_datasets_google_message3_benchmark_message3_5_proto_rawDesc = []byte{
-	0x0a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x35, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x36,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73,
-	0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x5f, 0x37, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x64, 0x61, 0x74,
-	0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x38, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x22, 0x0e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33, 0x37, 0x37,
-	0x22, 0x0e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33, 0x37, 0x38,
-	0x22, 0xae, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x34, 0x30,
-	0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x37, 0x34, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x37,
-	0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x37, 0x35, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x37,
-	0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x37, 0x36, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x37,
-	0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x37, 0x37, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x37,
-	0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x37, 0x38, 0x18,
-	0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x36, 0x37,
-	0x38, 0x22, 0x0e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33, 0x38,
-	0x30, 0x22, 0x0e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33, 0x38,
-	0x31, 0x22, 0xa1, 0x01, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x31, 0x39,
-	0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x31, 0x18, 0x01, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x31, 0x12, 0x1a, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x32, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x38, 0x33, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x38, 0x33, 0x12, 0x3f, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x34,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x37, 0x32, 0x30, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x38, 0x34, 0x22, 0xba, 0x03, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x37, 0x32, 0x38, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x37,
-	0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x37,
-	0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x38, 0x18, 0x02, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x38, 0x12, 0x42, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x39, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x37, 0x30, 0x33, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x39,
-	0x12, 0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x39, 0x30, 0x18, 0x04, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x31, 0x35, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x39, 0x30, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x39, 0x31,
-	0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x39, 0x31,
-	0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x39, 0x32, 0x18, 0x06, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x39, 0x32, 0x12, 0x42, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x39, 0x33, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x37, 0x31, 0x38, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x39, 0x33,
-	0x12, 0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x39, 0x34, 0x18, 0x08, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x31, 0x36, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x39, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x39, 0x35,
-	0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x39, 0x35,
-	0x2a, 0x04, 0x08, 0x0a, 0x10, 0x0b, 0x2a, 0x04, 0x08, 0x0b, 0x10, 0x0c, 0x2a, 0x04, 0x08, 0x0c,
-	0x10, 0x0d, 0x22, 0x80, 0x02, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x30,
-	0x34, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x30, 0x30, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x30, 0x30, 0x12, 0x1a, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x30, 0x31, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x30, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x30, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x30, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x30,
-	0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x30,
-	0x33, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x30, 0x34, 0x18, 0x04, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x30, 0x34, 0x12, 0x1a, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x30, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x30, 0x35, 0x12, 0x4a, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x30, 0x36, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45,
-	0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x30, 0x36, 0x22, 0x80, 0x09, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x36, 0x39, 0x37, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x34, 0x33,
-	0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x34, 0x33,
-	0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x34, 0x34, 0x18, 0x01, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x34, 0x34, 0x12, 0x1a, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x34, 0x35, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x34, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x34, 0x36, 0x18, 0x21, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x34, 0x36, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x34, 0x37,
-	0x18, 0x1d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x34, 0x37,
-	0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x34, 0x38, 0x18, 0x1e, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x34, 0x38, 0x12, 0x1a, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x34, 0x39, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x34, 0x39, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x35, 0x30, 0x18, 0x20, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x35, 0x30, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x31,
-	0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x31,
-	0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x32, 0x18, 0x06, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x32, 0x12, 0x1a, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x33, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x35, 0x34, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x35, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x35,
-	0x18, 0x0f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x35,
-	0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x36, 0x18, 0x10, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x36, 0x12, 0x1a, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x37, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x37, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x35, 0x38, 0x18, 0x22, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x35, 0x38, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x39,
-	0x18, 0x23, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x39,
-	0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x30, 0x18, 0x05, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x30, 0x12, 0x1a, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x31, 0x18, 0x11, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x36, 0x32, 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x36, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x33,
-	0x18, 0x13, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x33,
-	0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x34, 0x18, 0x24, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x34, 0x12, 0x1a, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x35, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x36, 0x36, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x36, 0x36, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x37,
-	0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x37,
-	0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x38, 0x18, 0x19, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x38, 0x12, 0x42, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x39, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x37, 0x30, 0x30, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x36, 0x39,
-	0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x30, 0x18, 0x0b, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x30, 0x12, 0x1a, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x31, 0x18, 0x18, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x37, 0x32, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x37, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x33,
-	0x18, 0x14, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x33,
-	0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x34, 0x18, 0x15, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x34, 0x12, 0x1a, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x35, 0x18, 0x16, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x35, 0x12, 0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x37, 0x36, 0x18, 0x17, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36,
-	0x39, 0x39, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x36, 0x12, 0x42, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x37, 0x18, 0x25, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x36, 0x39, 0x38, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x37,
-	0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x38, 0x18, 0x26, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x38, 0x2a, 0x04, 0x08, 0x1c,
-	0x10, 0x1d, 0x2a, 0x04, 0x08, 0x1a, 0x10, 0x1b, 0x22, 0x18, 0x0a, 0x08, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x30, 0x2a, 0x08, 0x08, 0x04, 0x10, 0xff, 0xff, 0xff, 0xff, 0x07, 0x3a, 0x02,
-	0x08, 0x01, 0x22, 0x95, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x35,
-	0x37, 0x38, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x33, 0x32, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x36, 0x35, 0x37, 0x39, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x36, 0x33, 0x32, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x36, 0x33, 0x33, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x36, 0x35, 0x38, 0x38, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x33, 0x33, 0x22, 0xbd, 0x01, 0x0a, 0x0b, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x30, 0x32, 0x34, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x30, 0x34, 0x38, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x36,
-	0x30, 0x32, 0x35, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x34, 0x38, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x34, 0x39, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x34, 0x39, 0x12, 0x4c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x35, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x35, 0x30, 0x22, 0x49, 0x0a, 0x0b, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x30, 0x35, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x30, 0x38, 0x34, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x30, 0x38, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x30, 0x38, 0x35, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x30, 0x38, 0x35, 0x22, 0x49, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x36, 0x30, 0x35, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x38,
-	0x39, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30,
-	0x38, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x39, 0x30, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x39, 0x30,
-	0x22, 0x83, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x35, 0x37,
-	0x33, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x35, 0x38, 0x30, 0x18,
-	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x35, 0x37, 0x36, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x35, 0x38, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x35, 0x38, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x35, 0x38, 0x31, 0x2a, 0x09, 0x08, 0x90, 0x4e,
-	0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x4e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x31, 0x30, 0x38, 0x32, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x30, 0x38, 0x32, 0x35, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x30, 0x38, 0x32, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x30, 0x38, 0x32, 0x36, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x30, 0x38, 0x32, 0x36, 0x22, 0xce, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x30, 0x35, 0x38, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x30, 0x35, 0x38, 0x33, 0x18, 0x01, 0x20, 0x02, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x35, 0x38, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x30, 0x35, 0x38, 0x34, 0x18, 0x02, 0x20, 0x02, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x35, 0x38, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x30, 0x35, 0x38, 0x35, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x35, 0x38, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x30, 0x35, 0x38, 0x36, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x35, 0x38, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x30, 0x35, 0x38, 0x37, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x35, 0x38, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x30, 0x35, 0x38, 0x38, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x35, 0x38, 0x38, 0x22, 0xa5, 0x18, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x30, 0x31, 0x35, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x30, 0x31, 0x39, 0x35, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x31, 0x39, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x30, 0x31, 0x39, 0x36, 0x18, 0x02, 0x20, 0x02, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x31, 0x39, 0x36, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x30, 0x31, 0x39, 0x37, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x30,
-	0x31, 0x35, 0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x31, 0x39, 0x37, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x31, 0x39, 0x38, 0x18, 0x12, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x31, 0x39, 0x38, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x31, 0x39, 0x39, 0x18, 0x13, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x31, 0x39, 0x39, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x30, 0x30, 0x18, 0x15, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x30, 0x30, 0x12,
-	0x59, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x31, 0x35, 0x36, 0x18,
-	0x32, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x35, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x31, 0x35, 0x35, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x31, 0x35, 0x36, 0x52, 0x0c, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x31, 0x35, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x30, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x30, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x30, 0x33, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x30, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x30, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x30, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x30, 0x35, 0x18, 0x54, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x30, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x30, 0x36, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x30, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x30, 0x37, 0x18, 0x4b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x30, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x30, 0x38, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x30, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x30, 0x39, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x30, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x31, 0x30, 0x18, 0x31, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x31, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x31, 0x31, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x31, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x31, 0x32, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x31, 0x32, 0x12, 0x47, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x31, 0x33, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x39, 0x31, 0x35, 0x31, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30,
-	0x32, 0x31, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x31,
-	0x34, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30,
-	0x32, 0x31, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x31,
-	0x35, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30,
-	0x32, 0x31, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x31,
-	0x36, 0x18, 0x29, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30,
-	0x32, 0x31, 0x36, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x31,
-	0x37, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x31, 0x35,
-	0x34, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x31, 0x37, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x31, 0x38, 0x18, 0x17, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x31, 0x38, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x31, 0x39, 0x18, 0x18, 0x20, 0x01, 0x28,
-	0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x31, 0x39, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x32, 0x30, 0x18, 0x41, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x32, 0x30, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x32, 0x31, 0x18, 0x42, 0x20, 0x03, 0x28,
-	0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x32, 0x31, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x32, 0x32, 0x18, 0x46, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x32, 0x32, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x32, 0x33, 0x18, 0x47, 0x20, 0x01, 0x28,
-	0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x32, 0x33, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x32, 0x34, 0x18, 0x49, 0x20, 0x03, 0x28,
-	0x06, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x32, 0x34, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x32, 0x35, 0x18, 0x1d, 0x20, 0x01, 0x28,
-	0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x32, 0x35, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x32, 0x36, 0x18, 0x1e, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x32, 0x36, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x32, 0x37, 0x18, 0x1f, 0x20, 0x01, 0x28,
-	0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x32, 0x37, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x32, 0x38, 0x18, 0x20, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x32, 0x38, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x32, 0x39, 0x18, 0x22, 0x20, 0x01, 0x28,
-	0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x32, 0x39, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x33, 0x30, 0x18, 0x23, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x33, 0x30, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x33, 0x31, 0x18, 0x16, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x33, 0x31, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x33, 0x32, 0x18, 0x0d, 0x20, 0x01, 0x28,
-	0x06, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x33, 0x32, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x33, 0x33, 0x18, 0x14, 0x20, 0x01, 0x28,
-	0x06, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x33, 0x33, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x33, 0x34, 0x18, 0x4f, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x33, 0x34, 0x12, 0x49, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x33, 0x35, 0x18, 0x50, 0x20, 0x03, 0x28,
-	0x0e, 0x32, 0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45,
-	0x6e, 0x75, 0x6d, 0x31, 0x30, 0x31, 0x36, 0x37, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x33, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x30, 0x32, 0x33, 0x36, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x33, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x30, 0x32, 0x33, 0x37, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x33, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x30, 0x32, 0x33, 0x38, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x33, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x30, 0x32, 0x33, 0x39, 0x18, 0x10, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x33, 0x39, 0x12, 0x47, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x30, 0x32, 0x34, 0x30, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x39, 0x31, 0x38, 0x32, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x34,
-	0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x34, 0x31, 0x18,
-	0x3f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x34,
-	0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x34, 0x32, 0x18,
-	0x40, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x34,
-	0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x34, 0x33, 0x18,
-	0x25, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x34,
-	0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x34, 0x34, 0x18,
-	0x2b, 0x20, 0x03, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x34,
-	0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x34, 0x35, 0x18,
-	0x2c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x34,
-	0x35, 0x12, 0x47, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x34, 0x36, 0x18,
-	0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x39, 0x32, 0x34, 0x32, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x34, 0x36, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x34, 0x37, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73,
-	0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x34, 0x37, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x34, 0x38, 0x18, 0x3e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73,
-	0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x34, 0x38, 0x12, 0x47, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x34, 0x39, 0x18, 0x30, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x38, 0x39, 0x34, 0x34, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30,
-	0x32, 0x34, 0x39, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x35,
-	0x30, 0x18, 0x57, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30,
-	0x32, 0x35, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x35,
-	0x31, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30,
-	0x32, 0x35, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x35,
-	0x32, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30,
-	0x32, 0x35, 0x32, 0x12, 0x47, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x35,
-	0x33, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x39, 0x31, 0x32, 0x33,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x35, 0x33, 0x12, 0x47, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x35, 0x34, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x39, 0x31, 0x36, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x30, 0x32, 0x35, 0x34, 0x12, 0x47, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30,
-	0x32, 0x35, 0x35, 0x18, 0x43, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x38,
-	0x39, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x35, 0x35, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x35, 0x36, 0x18, 0x45, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x35, 0x36, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x35, 0x37, 0x18, 0x4a, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x35, 0x37, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x35, 0x38, 0x18, 0x52, 0x20, 0x01,
-	0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x35, 0x38, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x35, 0x39, 0x18, 0x55, 0x20, 0x01,
-	0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x35, 0x39, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x36, 0x30, 0x18, 0x56, 0x20, 0x01,
-	0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x36, 0x30, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x36, 0x31, 0x18, 0x53, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x36, 0x31, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x36, 0x32, 0x18, 0x4d, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x36, 0x32, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x36, 0x33, 0x18, 0x58, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x36, 0x33, 0x12, 0x47,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x36, 0x34, 0x18, 0x5e, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x39, 0x36, 0x32, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x32, 0x36, 0x34, 0x1a, 0xb4, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x30, 0x31, 0x35, 0x36, 0x12, 0x44, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x30, 0x32, 0x36, 0x36, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x38, 0x38,
-	0x36, 0x32, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x36, 0x36, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x36, 0x37, 0x18, 0x34, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x36, 0x37, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x36, 0x38, 0x18, 0x35, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x36, 0x38, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x36, 0x39, 0x18, 0x36, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x32, 0x36, 0x39, 0x2a, 0x04,
-	0x08, 0x39, 0x10, 0x3a, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22,
-	0x88, 0x02, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x38, 0x36, 0x36,
-	0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x36, 0x38, 0x18, 0x01,
-	0x20, 0x02, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x30, 0x31, 0x34, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x36, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x36, 0x39, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x36, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x37, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x37, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x37, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x37, 0x31, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x37, 0x32, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73,
-	0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x37, 0x32, 0x22, 0xae, 0x02, 0x0a, 0x0c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x34, 0x36, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x34, 0x37, 0x33, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x34, 0x37, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x34, 0x37, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x34, 0x37, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x34, 0x37, 0x35, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x34, 0x37, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x34, 0x37, 0x36, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x34, 0x37, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x34, 0x37, 0x37, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x34, 0x37, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x34, 0x37, 0x38, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x34, 0x37, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x34, 0x37, 0x39, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x34, 0x37, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x34, 0x38, 0x30, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x34, 0x38, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x34, 0x38, 0x31, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x34, 0x38, 0x31, 0x22, 0xa2, 0x01, 0x0a, 0x0c,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x38, 0x31, 0x38, 0x12, 0x48, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x38, 0x31, 0x39, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x38, 0x30, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x30, 0x38, 0x31, 0x39, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x30, 0x38, 0x32, 0x30, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x30, 0x38, 0x30, 0x31, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x38, 0x32, 0x30,
-	0x22, 0x98, 0x07, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x37, 0x37,
-	0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x37, 0x34, 0x18,
-	0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x37,
-	0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x37, 0x35, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x37,
-	0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x37, 0x36, 0x18,
-	0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x37,
-	0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x37, 0x37, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x37,
-	0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x37, 0x38, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x37,
-	0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x37, 0x39, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x37,
-	0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x38, 0x30, 0x18,
-	0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x38,
-	0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x38, 0x31, 0x18,
-	0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x38,
-	0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x38, 0x32, 0x18,
-	0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x38,
-	0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x38, 0x33, 0x18,
-	0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x38,
-	0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x38, 0x34, 0x18,
-	0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x38,
-	0x34, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x38, 0x35, 0x18,
-	0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x37, 0x34, 0x39, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x38, 0x35, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x38, 0x36, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x38, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x38, 0x37, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x38, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x38, 0x38, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x38, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x38, 0x39, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x38, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x39, 0x30, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x39, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x39, 0x31, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x39, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x39, 0x32, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x39, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x39, 0x33, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x39, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x39, 0x34, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x39, 0x34, 0x12, 0x46, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x39, 0x35, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0e, 0x32,
-	0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30,
-	0x37, 0x39, 0x35, 0x12, 0x46, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x39,
-	0x36, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x39, 0x36, 0x22, 0xa0, 0x01, 0x0a, 0x0c,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x31, 0x34, 0x35, 0x12, 0x45, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x31, 0x35, 0x35, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0e,
-	0x32, 0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e,
-	0x75, 0x6d, 0x31, 0x33, 0x31, 0x34, 0x36, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33,
-	0x31, 0x35, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x31, 0x35,
-	0x36, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33,
-	0x31, 0x35, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x31, 0x35,
-	0x37, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33,
-	0x31, 0x35, 0x37, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x0e,
-	0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x36, 0x36, 0x38, 0x36, 0x22, 0x4e,
-	0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x37, 0x39, 0x36, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x30, 0x30, 0x18, 0x01, 0x20, 0x03,
-	0x28, 0x06, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x30, 0x30, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x30, 0x31, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x04, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x30, 0x31, 0x22, 0x0d,
-	0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x37, 0x32, 0x32, 0x22, 0x0d, 0x0a,
-	0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x37, 0x32, 0x37, 0x22, 0x0d, 0x0a, 0x0b,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x37, 0x32, 0x34, 0x22, 0x0d, 0x0a, 0x0b, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x37, 0x33, 0x35, 0x22, 0x49, 0x0a, 0x0b, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x31, 0x38, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x32, 0x32, 0x36, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x32, 0x32, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x32, 0x32, 0x37, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x32, 0x32, 0x37, 0x22, 0x87, 0x05, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x38, 0x33, 0x30, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33,
-	0x32, 0x38, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x33, 0x32, 0x38, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x32, 0x39,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x36, 0x36, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x32, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x33, 0x33, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x33, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x33, 0x33, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x33, 0x33, 0x31, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x33, 0x33, 0x32, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x32,
-	0x39, 0x30, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x33, 0x32, 0x12, 0x45, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x33, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x36, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x33, 0x33, 0x33, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x33,
-	0x34, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x32, 0x39, 0x38,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x33, 0x34, 0x12, 0x45, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x33, 0x35, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x38, 0x33, 0x30, 0x30, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33,
-	0x33, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x33, 0x36, 0x18,
-	0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x33, 0x36,
-	0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x33, 0x37, 0x18, 0x0a, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x33, 0x37, 0x12, 0x45,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x33, 0x38, 0x18, 0x0b, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x36, 0x35, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x33, 0x33, 0x38, 0x2a, 0x08, 0x08, 0x40, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22,
-	0x0d, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x34, 0x35, 0x36, 0x22, 0xea,
-	0x07, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x33, 0x30, 0x32, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x33, 0x39, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x33, 0x39, 0x12, 0x45, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x34, 0x30, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x36, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x33, 0x34, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x34, 0x31,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x34,
-	0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x34, 0x32, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x34, 0x32, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x34, 0x33, 0x18, 0x05, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x34, 0x33, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x34, 0x34, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x34, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x34, 0x35, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x34, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x33, 0x34, 0x36, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x33, 0x34, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x33, 0x34, 0x37, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x33, 0x34, 0x37, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33,
-	0x34, 0x38, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x32, 0x39,
-	0x30, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x34, 0x38, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x34, 0x39, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x34, 0x39, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x33, 0x35, 0x30, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x35, 0x30, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x33, 0x35, 0x31, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x38, 0x32, 0x39, 0x31, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x35, 0x31, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x35, 0x32, 0x18, 0x0e, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x35, 0x32, 0x12, 0x45, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x35, 0x33, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x32, 0x39, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x33, 0x35, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x35,
-	0x34, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33,
-	0x35, 0x34, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x35, 0x35, 0x18,
-	0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x35, 0x35,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x35, 0x36, 0x18, 0x12, 0x20,
-	0x03, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x35, 0x36, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x35, 0x37, 0x18, 0x13, 0x20, 0x03, 0x28,
-	0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x35, 0x37, 0x12, 0x4c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x35, 0x38, 0x18, 0x14, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x35, 0x38, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x33, 0x35, 0x39, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x37, 0x39, 0x36, 0x35, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x35,
-	0x39, 0x2a, 0x08, 0x08, 0x40, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x0d, 0x0a, 0x0b, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x34, 0x35, 0x37, 0x22, 0xae, 0x02, 0x0a, 0x0b, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x34, 0x34, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x34, 0x35, 0x38, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x35, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x34, 0x35, 0x39, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x34, 0x35, 0x39, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x34, 0x36, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x38, 0x34, 0x35, 0x30, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x36, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x34, 0x36, 0x31, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x36, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x34, 0x36, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x34, 0x36, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x34, 0x36, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x34, 0x36, 0x33, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x36,
-	0x34, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x36, 0x36,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x36, 0x34, 0x22, 0x9e, 0x01, 0x0a, 0x0c,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x33, 0x35, 0x38, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x33, 0x35, 0x39, 0x18, 0x01, 0x20, 0x02, 0x28, 0x06,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x33, 0x35, 0x39, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x33, 0x36, 0x30, 0x18, 0x02, 0x20, 0x02, 0x28, 0x06,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x33, 0x36, 0x30, 0x12, 0x4e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x33, 0x36, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e,
-	0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x33, 0x36, 0x31, 0x22, 0xef, 0x01, 0x0a,
-	0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x39, 0x31, 0x32, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x39, 0x31, 0x33, 0x18, 0x01, 0x20, 0x02, 0x28,
-	0x07, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x39, 0x31, 0x33, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x39, 0x31, 0x34, 0x18, 0x02, 0x20, 0x02, 0x28,
-	0x07, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x39, 0x31, 0x34, 0x12, 0x4f, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x39, 0x31, 0x35, 0x18, 0xf4, 0x03, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x39, 0x31, 0x35, 0x12, 0x4e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x39, 0x31, 0x36, 0x18, 0x0f, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x39, 0x31, 0x36, 0x22, 0x6e,
-	0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33, 0x31, 0x36, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x34, 0x33, 0x18, 0x01, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x34, 0x33, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x34, 0x34, 0x18, 0x02, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x34, 0x34, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x34, 0x35, 0x18, 0x03, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x34, 0x35, 0x22, 0xce,
-	0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33, 0x31, 0x32, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x32, 0x31, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x32, 0x31, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x32, 0x32, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x32, 0x32, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x32, 0x33, 0x18, 0x03, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x32, 0x33, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x32, 0x34, 0x18, 0x04, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x32, 0x34, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x32, 0x35, 0x18, 0x05, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x32, 0x35, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x32, 0x36, 0x18, 0x06, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x32, 0x36, 0x22,
-	0xce, 0x02, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33, 0x31, 0x33,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x32, 0x37, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x32, 0x37,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x32, 0x38, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x32, 0x38,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x32, 0x39, 0x18, 0x03,
-	0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x32, 0x39,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x33, 0x30, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x33, 0x30,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x33, 0x31, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x33, 0x31,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x33, 0x32, 0x18, 0x06,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x33, 0x32,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x33, 0x33, 0x18, 0x07,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x33, 0x33,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x33, 0x34, 0x18, 0x08,
-	0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x33, 0x34,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x33, 0x35, 0x18, 0x09,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x33, 0x35,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x33, 0x36, 0x18, 0x0a,
-	0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x33, 0x36,
-	0x22, 0x6e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x33, 0x31, 0x35,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x34, 0x30, 0x18, 0x01,
-	0x20, 0x02, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x34, 0x30,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x34, 0x31, 0x18, 0x02,
-	0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x34, 0x31,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x34, 0x32, 0x18, 0x03,
-	0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x34, 0x34, 0x32,
-	0x22, 0xa4, 0x01, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x31, 0x36, 0x12,
-	0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x37, 0x32, 0x18, 0x01, 0x20, 0x02, 0x28,
-	0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x37, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x37, 0x33, 0x18, 0x02, 0x20, 0x02, 0x28, 0x05, 0x52, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x37, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x37, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x37, 0x34, 0x12, 0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x37, 0x35, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x31, 0x37, 0x52, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x37, 0x35, 0x22, 0x60, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x37, 0x31, 0x38, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x37,
-	0x38, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x37,
-	0x38, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x37, 0x39, 0x18, 0x02, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x37, 0x39, 0x12, 0x1a, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x30, 0x22, 0x98, 0x01, 0x0a, 0x0a, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x30, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x39, 0x35, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x39, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x36,
-	0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x36,
-	0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x37, 0x18, 0x03, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x37, 0x12, 0x1a, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x38, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x38, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x39, 0x39, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x39, 0x39, 0x22, 0xb0, 0x06, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x37, 0x31, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x39, 0x18,
-	0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x39, 0x12,
-	0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x30, 0x18, 0x07, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x30, 0x12, 0x42, 0x0a, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x31, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x37, 0x30, 0x37, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x31, 0x12,
-	0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x32, 0x18, 0x03, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x30, 0x38, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x36, 0x32, 0x12, 0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x33, 0x18,
-	0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x31, 0x31, 0x52, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x33, 0x12, 0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x36, 0x34, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x31,
-	0x32, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x34, 0x12, 0x42, 0x0a, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x35, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x37, 0x31, 0x33, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x35, 0x12,
-	0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x36, 0x18, 0x08, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x31, 0x34, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x36, 0x36, 0x12, 0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x37, 0x18,
-	0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x31, 0x30, 0x52, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x37, 0x12, 0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x36, 0x38, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x30,
-	0x39, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x38, 0x12, 0x42, 0x0a, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x39, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x37, 0x30, 0x35, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x39, 0x12,
-	0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x37, 0x30, 0x18, 0x0c, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x30, 0x32, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x37, 0x30, 0x12, 0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x37, 0x31, 0x18,
-	0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x30, 0x36, 0x52, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x37, 0x31, 0x22, 0x44, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x37, 0x30, 0x30, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38,
-	0x39, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38,
-	0x39, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x30, 0x18, 0x02, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x30, 0x22, 0x44, 0x0a,
-	0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x39, 0x39, 0x12, 0x1a, 0x0a, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x37, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x37, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x38, 0x38, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x38, 0x38, 0x22, 0xec, 0x01, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36,
-	0x39, 0x38, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x39, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x37, 0x39, 0x12, 0x1a,
-	0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x30, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x30, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x38, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x38, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x38, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x38, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x33, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x33, 0x12, 0x1a,
-	0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x34, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d,
-	0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x38, 0x35, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x38, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x38, 0x36, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x38, 0x36, 0x42, 0x23, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0xf8, 0x01, 0x01,
-}
-
-var (
-	file_datasets_google_message3_benchmark_message3_5_proto_rawDescOnce sync.Once
-	file_datasets_google_message3_benchmark_message3_5_proto_rawDescData = file_datasets_google_message3_benchmark_message3_5_proto_rawDesc
-)
-
-func file_datasets_google_message3_benchmark_message3_5_proto_rawDescGZIP() []byte {
-	file_datasets_google_message3_benchmark_message3_5_proto_rawDescOnce.Do(func() {
-		file_datasets_google_message3_benchmark_message3_5_proto_rawDescData = protoimpl.X.CompressGZIP(file_datasets_google_message3_benchmark_message3_5_proto_rawDescData)
-	})
-	return file_datasets_google_message3_benchmark_message3_5_proto_rawDescData
-}
-
-var file_datasets_google_message3_benchmark_message3_5_proto_msgTypes = make([]protoimpl.MessageInfo, 49)
-var file_datasets_google_message3_benchmark_message3_5_proto_goTypes = []interface{}{
-	(*Message24377)(nil),              // 0: benchmarks.google_message3.Message24377
-	(*Message24378)(nil),              // 1: benchmarks.google_message3.Message24378
-	(*Message24400)(nil),              // 2: benchmarks.google_message3.Message24400
-	(*Message24380)(nil),              // 3: benchmarks.google_message3.Message24380
-	(*Message24381)(nil),              // 4: benchmarks.google_message3.Message24381
-	(*Message719)(nil),                // 5: benchmarks.google_message3.Message719
-	(*Message728)(nil),                // 6: benchmarks.google_message3.Message728
-	(*Message704)(nil),                // 7: benchmarks.google_message3.Message704
-	(*Message697)(nil),                // 8: benchmarks.google_message3.Message697
-	(*Message0)(nil),                  // 9: benchmarks.google_message3.Message0
-	(*Message6578)(nil),               // 10: benchmarks.google_message3.Message6578
-	(*Message6024)(nil),               // 11: benchmarks.google_message3.Message6024
-	(*Message6052)(nil),               // 12: benchmarks.google_message3.Message6052
-	(*Message6054)(nil),               // 13: benchmarks.google_message3.Message6054
-	(*Message10573)(nil),              // 14: benchmarks.google_message3.Message10573
-	(*Message10824)(nil),              // 15: benchmarks.google_message3.Message10824
-	(*Message10582)(nil),              // 16: benchmarks.google_message3.Message10582
-	(*Message10155)(nil),              // 17: benchmarks.google_message3.Message10155
-	(*Message11866)(nil),              // 18: benchmarks.google_message3.Message11866
-	(*Message10469)(nil),              // 19: benchmarks.google_message3.Message10469
-	(*Message10818)(nil),              // 20: benchmarks.google_message3.Message10818
-	(*Message10773)(nil),              // 21: benchmarks.google_message3.Message10773
-	(*Message13145)(nil),              // 22: benchmarks.google_message3.Message13145
-	(*Message16686)(nil),              // 23: benchmarks.google_message3.Message16686
-	(*Message12796)(nil),              // 24: benchmarks.google_message3.Message12796
-	(*Message6722)(nil),               // 25: benchmarks.google_message3.Message6722
-	(*Message6727)(nil),               // 26: benchmarks.google_message3.Message6727
-	(*Message6724)(nil),               // 27: benchmarks.google_message3.Message6724
-	(*Message6735)(nil),               // 28: benchmarks.google_message3.Message6735
-	(*Message8183)(nil),               // 29: benchmarks.google_message3.Message8183
-	(*Message8301)(nil),               // 30: benchmarks.google_message3.Message8301
-	(*Message8456)(nil),               // 31: benchmarks.google_message3.Message8456
-	(*Message8302)(nil),               // 32: benchmarks.google_message3.Message8302
-	(*Message8457)(nil),               // 33: benchmarks.google_message3.Message8457
-	(*Message8449)(nil),               // 34: benchmarks.google_message3.Message8449
-	(*Message13358)(nil),              // 35: benchmarks.google_message3.Message13358
-	(*Message13912)(nil),              // 36: benchmarks.google_message3.Message13912
-	(*Message24316)(nil),              // 37: benchmarks.google_message3.Message24316
-	(*Message24312)(nil),              // 38: benchmarks.google_message3.Message24312
-	(*Message24313)(nil),              // 39: benchmarks.google_message3.Message24313
-	(*Message24315)(nil),              // 40: benchmarks.google_message3.Message24315
-	(*Message716)(nil),                // 41: benchmarks.google_message3.Message716
-	(*Message718)(nil),                // 42: benchmarks.google_message3.Message718
-	(*Message703)(nil),                // 43: benchmarks.google_message3.Message703
-	(*Message715)(nil),                // 44: benchmarks.google_message3.Message715
-	(*Message700)(nil),                // 45: benchmarks.google_message3.Message700
-	(*Message699)(nil),                // 46: benchmarks.google_message3.Message699
-	(*Message698)(nil),                // 47: benchmarks.google_message3.Message698
-	(*Message10155_Message10156)(nil), // 48: benchmarks.google_message3.Message10155.Message10156
-	(Enum720)(0),                      // 49: benchmarks.google_message3.Enum720
-	(*UnusedEmptyMessage)(nil),        // 50: benchmarks.google_message3.UnusedEmptyMessage
-	(Enum6579)(0),                     // 51: benchmarks.google_message3.Enum6579
-	(Enum6588)(0),                     // 52: benchmarks.google_message3.Enum6588
-	(Enum6025)(0),                     // 53: benchmarks.google_message3.Enum6025
-	(*Message10576)(nil),              // 54: benchmarks.google_message3.Message10576
-	(Enum10157)(0),                    // 55: benchmarks.google_message3.Enum10157
-	(*Message9151)(nil),               // 56: benchmarks.google_message3.Message9151
-	(*Message10154)(nil),              // 57: benchmarks.google_message3.Message10154
-	(Enum10167)(0),                    // 58: benchmarks.google_message3.Enum10167
-	(*Message9182)(nil),               // 59: benchmarks.google_message3.Message9182
-	(*Message9242)(nil),               // 60: benchmarks.google_message3.Message9242
-	(*Message8944)(nil),               // 61: benchmarks.google_message3.Message8944
-	(*Message9123)(nil),               // 62: benchmarks.google_message3.Message9123
-	(*Message9160)(nil),               // 63: benchmarks.google_message3.Message9160
-	(*Message8890)(nil),               // 64: benchmarks.google_message3.Message8890
-	(*Message9628)(nil),               // 65: benchmarks.google_message3.Message9628
-	(*Message11014)(nil),              // 66: benchmarks.google_message3.Message11014
-	(*Message10800)(nil),              // 67: benchmarks.google_message3.Message10800
-	(*Message10801)(nil),              // 68: benchmarks.google_message3.Message10801
-	(*Message10749)(nil),              // 69: benchmarks.google_message3.Message10749
-	(UnusedEnum)(0),                   // 70: benchmarks.google_message3.UnusedEnum
-	(Enum13146)(0),                    // 71: benchmarks.google_message3.Enum13146
-	(*Message7966)(nil),               // 72: benchmarks.google_message3.Message7966
-	(*Message8290)(nil),               // 73: benchmarks.google_message3.Message8290
-	(*Message8298)(nil),               // 74: benchmarks.google_message3.Message8298
-	(*Message8300)(nil),               // 75: benchmarks.google_message3.Message8300
-	(*Message7965)(nil),               // 76: benchmarks.google_message3.Message7965
-	(*Message8291)(nil),               // 77: benchmarks.google_message3.Message8291
-	(*Message8296)(nil),               // 78: benchmarks.google_message3.Message8296
-	(Enum8450)(0),                     // 79: benchmarks.google_message3.Enum8450
-	(*Message717)(nil),                // 80: benchmarks.google_message3.Message717
-	(*Message707)(nil),                // 81: benchmarks.google_message3.Message707
-	(*Message708)(nil),                // 82: benchmarks.google_message3.Message708
-	(*Message711)(nil),                // 83: benchmarks.google_message3.Message711
-	(*Message712)(nil),                // 84: benchmarks.google_message3.Message712
-	(*Message713)(nil),                // 85: benchmarks.google_message3.Message713
-	(*Message714)(nil),                // 86: benchmarks.google_message3.Message714
-	(*Message710)(nil),                // 87: benchmarks.google_message3.Message710
-	(*Message709)(nil),                // 88: benchmarks.google_message3.Message709
-	(*Message705)(nil),                // 89: benchmarks.google_message3.Message705
-	(*Message702)(nil),                // 90: benchmarks.google_message3.Message702
-	(*Message706)(nil),                // 91: benchmarks.google_message3.Message706
-	(Enum8862)(0),                     // 92: benchmarks.google_message3.Enum8862
-}
-var file_datasets_google_message3_benchmark_message3_5_proto_depIdxs = []int32{
-	49, // 0: benchmarks.google_message3.Message719.field884:type_name -> benchmarks.google_message3.Enum720
-	43, // 1: benchmarks.google_message3.Message728.field889:type_name -> benchmarks.google_message3.Message703
-	44, // 2: benchmarks.google_message3.Message728.field890:type_name -> benchmarks.google_message3.Message715
-	42, // 3: benchmarks.google_message3.Message728.field893:type_name -> benchmarks.google_message3.Message718
-	41, // 4: benchmarks.google_message3.Message728.field894:type_name -> benchmarks.google_message3.Message716
-	50, // 5: benchmarks.google_message3.Message704.field806:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	45, // 6: benchmarks.google_message3.Message697.field769:type_name -> benchmarks.google_message3.Message700
-	46, // 7: benchmarks.google_message3.Message697.field776:type_name -> benchmarks.google_message3.Message699
-	47, // 8: benchmarks.google_message3.Message697.field777:type_name -> benchmarks.google_message3.Message698
-	51, // 9: benchmarks.google_message3.Message6578.field6632:type_name -> benchmarks.google_message3.Enum6579
-	52, // 10: benchmarks.google_message3.Message6578.field6633:type_name -> benchmarks.google_message3.Enum6588
-	53, // 11: benchmarks.google_message3.Message6024.field6048:type_name -> benchmarks.google_message3.Enum6025
-	50, // 12: benchmarks.google_message3.Message6024.field6050:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	54, // 13: benchmarks.google_message3.Message10573.field10580:type_name -> benchmarks.google_message3.Message10576
-	55, // 14: benchmarks.google_message3.Message10155.field10197:type_name -> benchmarks.google_message3.Enum10157
-	48, // 15: benchmarks.google_message3.Message10155.message10156:type_name -> benchmarks.google_message3.Message10155.Message10156
-	56, // 16: benchmarks.google_message3.Message10155.field10213:type_name -> benchmarks.google_message3.Message9151
-	57, // 17: benchmarks.google_message3.Message10155.field10217:type_name -> benchmarks.google_message3.Message10154
-	58, // 18: benchmarks.google_message3.Message10155.field10235:type_name -> benchmarks.google_message3.Enum10167
-	59, // 19: benchmarks.google_message3.Message10155.field10240:type_name -> benchmarks.google_message3.Message9182
-	60, // 20: benchmarks.google_message3.Message10155.field10246:type_name -> benchmarks.google_message3.Message9242
-	50, // 21: benchmarks.google_message3.Message10155.field10247:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	50, // 22: benchmarks.google_message3.Message10155.field10248:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	61, // 23: benchmarks.google_message3.Message10155.field10249:type_name -> benchmarks.google_message3.Message8944
-	50, // 24: benchmarks.google_message3.Message10155.field10250:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	62, // 25: benchmarks.google_message3.Message10155.field10253:type_name -> benchmarks.google_message3.Message9123
-	63, // 26: benchmarks.google_message3.Message10155.field10254:type_name -> benchmarks.google_message3.Message9160
-	64, // 27: benchmarks.google_message3.Message10155.field10255:type_name -> benchmarks.google_message3.Message8890
-	65, // 28: benchmarks.google_message3.Message10155.field10264:type_name -> benchmarks.google_message3.Message9628
-	66, // 29: benchmarks.google_message3.Message11866.field11868:type_name -> benchmarks.google_message3.Message11014
-	50, // 30: benchmarks.google_message3.Message11866.field11872:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	67, // 31: benchmarks.google_message3.Message10818.field10819:type_name -> benchmarks.google_message3.Message10800
-	68, // 32: benchmarks.google_message3.Message10818.field10820:type_name -> benchmarks.google_message3.Message10801
-	69, // 33: benchmarks.google_message3.Message10773.field10785:type_name -> benchmarks.google_message3.Message10749
-	50, // 34: benchmarks.google_message3.Message10773.field10786:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	70, // 35: benchmarks.google_message3.Message10773.field10795:type_name -> benchmarks.google_message3.UnusedEnum
-	70, // 36: benchmarks.google_message3.Message10773.field10796:type_name -> benchmarks.google_message3.UnusedEnum
-	71, // 37: benchmarks.google_message3.Message13145.field13155:type_name -> benchmarks.google_message3.Enum13146
-	72, // 38: benchmarks.google_message3.Message8301.field8329:type_name -> benchmarks.google_message3.Message7966
-	73, // 39: benchmarks.google_message3.Message8301.field8332:type_name -> benchmarks.google_message3.Message8290
-	72, // 40: benchmarks.google_message3.Message8301.field8333:type_name -> benchmarks.google_message3.Message7966
-	74, // 41: benchmarks.google_message3.Message8301.field8334:type_name -> benchmarks.google_message3.Message8298
-	75, // 42: benchmarks.google_message3.Message8301.field8335:type_name -> benchmarks.google_message3.Message8300
-	50, // 43: benchmarks.google_message3.Message8301.field8337:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	76, // 44: benchmarks.google_message3.Message8301.field8338:type_name -> benchmarks.google_message3.Message7965
-	72, // 45: benchmarks.google_message3.Message8302.field8340:type_name -> benchmarks.google_message3.Message7966
-	73, // 46: benchmarks.google_message3.Message8302.field8348:type_name -> benchmarks.google_message3.Message8290
-	50, // 47: benchmarks.google_message3.Message8302.field8350:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	77, // 48: benchmarks.google_message3.Message8302.field8351:type_name -> benchmarks.google_message3.Message8291
-	78, // 49: benchmarks.google_message3.Message8302.field8353:type_name -> benchmarks.google_message3.Message8296
-	50, // 50: benchmarks.google_message3.Message8302.field8355:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	50, // 51: benchmarks.google_message3.Message8302.field8358:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	76, // 52: benchmarks.google_message3.Message8302.field8359:type_name -> benchmarks.google_message3.Message7965
-	79, // 53: benchmarks.google_message3.Message8449.field8460:type_name -> benchmarks.google_message3.Enum8450
-	72, // 54: benchmarks.google_message3.Message8449.field8464:type_name -> benchmarks.google_message3.Message7966
-	50, // 55: benchmarks.google_message3.Message13358.field13361:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	50, // 56: benchmarks.google_message3.Message13912.field13915:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	50, // 57: benchmarks.google_message3.Message13912.field13916:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	80, // 58: benchmarks.google_message3.Message716.field875:type_name -> benchmarks.google_message3.Message717
-	81, // 59: benchmarks.google_message3.Message715.field861:type_name -> benchmarks.google_message3.Message707
-	82, // 60: benchmarks.google_message3.Message715.field862:type_name -> benchmarks.google_message3.Message708
-	83, // 61: benchmarks.google_message3.Message715.field863:type_name -> benchmarks.google_message3.Message711
-	84, // 62: benchmarks.google_message3.Message715.field864:type_name -> benchmarks.google_message3.Message712
-	85, // 63: benchmarks.google_message3.Message715.field865:type_name -> benchmarks.google_message3.Message713
-	86, // 64: benchmarks.google_message3.Message715.field866:type_name -> benchmarks.google_message3.Message714
-	87, // 65: benchmarks.google_message3.Message715.field867:type_name -> benchmarks.google_message3.Message710
-	88, // 66: benchmarks.google_message3.Message715.field868:type_name -> benchmarks.google_message3.Message709
-	89, // 67: benchmarks.google_message3.Message715.field869:type_name -> benchmarks.google_message3.Message705
-	90, // 68: benchmarks.google_message3.Message715.field870:type_name -> benchmarks.google_message3.Message702
-	91, // 69: benchmarks.google_message3.Message715.field871:type_name -> benchmarks.google_message3.Message706
-	92, // 70: benchmarks.google_message3.Message10155.Message10156.field10266:type_name -> benchmarks.google_message3.Enum8862
-	71, // [71:71] is the sub-list for method output_type
-	71, // [71:71] is the sub-list for method input_type
-	71, // [71:71] is the sub-list for extension type_name
-	71, // [71:71] is the sub-list for extension extendee
-	0,  // [0:71] is the sub-list for field type_name
-}
-
-func init() { file_datasets_google_message3_benchmark_message3_5_proto_init() }
-func file_datasets_google_message3_benchmark_message3_5_proto_init() {
-	if File_datasets_google_message3_benchmark_message3_5_proto != nil {
-		return
-	}
-	file_datasets_google_message3_benchmark_message3_6_proto_init()
-	file_datasets_google_message3_benchmark_message3_7_proto_init()
-	file_datasets_google_message3_benchmark_message3_8_proto_init()
-	if !protoimpl.UnsafeEnabled {
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message24377); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message24378); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message24400); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message24380); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message24381); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message719); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message728); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message704); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message697); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message0); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6578); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6024); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6052); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6054); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10573); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10824); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10582); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10155); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message11866); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10469); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10818); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10773); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message13145); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message16686); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12796); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6722); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6727); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6724); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6735); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8183); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8301); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8456); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8302); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8457); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8449); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message13358); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message13912); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message24316); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message24312); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message24313); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message24315); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message716); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message718); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message703); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message715); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message700); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message699); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message698); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_5_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10155_Message10156); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_datasets_google_message3_benchmark_message3_5_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   49,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_datasets_google_message3_benchmark_message3_5_proto_goTypes,
-		DependencyIndexes: file_datasets_google_message3_benchmark_message3_5_proto_depIdxs,
-		MessageInfos:      file_datasets_google_message3_benchmark_message3_5_proto_msgTypes,
-	}.Build()
-	File_datasets_google_message3_benchmark_message3_5_proto = out.File
-	file_datasets_google_message3_benchmark_message3_5_proto_rawDesc = nil
-	file_datasets_google_message3_benchmark_message3_5_proto_goTypes = nil
-	file_datasets_google_message3_benchmark_message3_5_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_6.pb.go b/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_6.pb.go
deleted file mode 100644
index efcfe86..0000000
--- a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_6.pb.go
+++ /dev/null
@@ -1,5701 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// LINT: ALLOW_GROUPS
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: datasets/google_message3/benchmark_message3_6.proto
-
-package google_message3
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Message10576 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message10576) Reset() {
-	*x = Message10576{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10576) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10576) ProtoMessage() {}
-
-func (x *Message10576) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10576.ProtoReflect.Descriptor instead.
-func (*Message10576) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{0}
-}
-
-type Message10154 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field10192 []byte `protobuf:"bytes,1,opt,name=field10192" json:"field10192,omitempty"`
-	Field10193 *int32 `protobuf:"varint,2,opt,name=field10193" json:"field10193,omitempty"`
-}
-
-func (x *Message10154) Reset() {
-	*x = Message10154{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10154) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10154) ProtoMessage() {}
-
-func (x *Message10154) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10154.ProtoReflect.Descriptor instead.
-func (*Message10154) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Message10154) GetField10192() []byte {
-	if x != nil {
-		return x.Field10192
-	}
-	return nil
-}
-
-func (x *Message10154) GetField10193() int32 {
-	if x != nil && x.Field10193 != nil {
-		return *x.Field10193
-	}
-	return 0
-}
-
-type Message8944 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field9045 *string      `protobuf:"bytes,2,opt,name=field9045" json:"field9045,omitempty"`
-	Field9046 *string      `protobuf:"bytes,3,opt,name=field9046" json:"field9046,omitempty"`
-	Field9047 *string      `protobuf:"bytes,23,opt,name=field9047" json:"field9047,omitempty"`
-	Field9048 *string      `protobuf:"bytes,52,opt,name=field9048" json:"field9048,omitempty"`
-	Field9049 *int32       `protobuf:"varint,53,opt,name=field9049" json:"field9049,omitempty"`
-	Field9050 *int32       `protobuf:"varint,54,opt,name=field9050" json:"field9050,omitempty"`
-	Field9051 *float32     `protobuf:"fixed32,55,opt,name=field9051" json:"field9051,omitempty"`
-	Field9052 *float32     `protobuf:"fixed32,56,opt,name=field9052" json:"field9052,omitempty"`
-	Field9053 *string      `protobuf:"bytes,57,opt,name=field9053" json:"field9053,omitempty"`
-	Field9054 *int64       `protobuf:"varint,1,opt,name=field9054" json:"field9054,omitempty"`
-	Field9055 *bool        `protobuf:"varint,4,opt,name=field9055" json:"field9055,omitempty"`
-	Field9056 *int32       `protobuf:"varint,5,opt,name=field9056" json:"field9056,omitempty"`
-	Field9057 *int32       `protobuf:"varint,6,opt,name=field9057" json:"field9057,omitempty"`
-	Field9058 *int32       `protobuf:"varint,7,opt,name=field9058" json:"field9058,omitempty"`
-	Field9059 *float32     `protobuf:"fixed32,8,opt,name=field9059" json:"field9059,omitempty"`
-	Field9060 *float32     `protobuf:"fixed32,11,opt,name=field9060" json:"field9060,omitempty"`
-	Field9061 *float32     `protobuf:"fixed32,9,opt,name=field9061" json:"field9061,omitempty"`
-	Field9062 *float32     `protobuf:"fixed32,10,opt,name=field9062" json:"field9062,omitempty"`
-	Field9063 *float32     `protobuf:"fixed32,13,opt,name=field9063" json:"field9063,omitempty"`
-	Field9064 *bool        `protobuf:"varint,14,opt,name=field9064" json:"field9064,omitempty"`
-	Field9065 *float32     `protobuf:"fixed32,70,opt,name=field9065" json:"field9065,omitempty"`
-	Field9066 *int32       `protobuf:"varint,71,opt,name=field9066" json:"field9066,omitempty"`
-	Field9067 *Enum8945    `protobuf:"varint,15,opt,name=field9067,enum=benchmarks.google_message3.Enum8945" json:"field9067,omitempty"`
-	Field9068 *int32       `protobuf:"varint,16,opt,name=field9068" json:"field9068,omitempty"`
-	Field9069 *int32       `protobuf:"varint,17,opt,name=field9069" json:"field9069,omitempty"`
-	Field9070 *float32     `protobuf:"fixed32,18,opt,name=field9070" json:"field9070,omitempty"`
-	Field9071 *float32     `protobuf:"fixed32,19,opt,name=field9071" json:"field9071,omitempty"`
-	Field9072 *int32       `protobuf:"varint,28,opt,name=field9072" json:"field9072,omitempty"`
-	Field9073 *int32       `protobuf:"varint,29,opt,name=field9073" json:"field9073,omitempty"`
-	Field9074 *float32     `protobuf:"fixed32,60,opt,name=field9074" json:"field9074,omitempty"`
-	Field9075 *float32     `protobuf:"fixed32,61,opt,name=field9075" json:"field9075,omitempty"`
-	Field9076 *int32       `protobuf:"varint,72,opt,name=field9076" json:"field9076,omitempty"`
-	Field9077 *int32       `protobuf:"varint,73,opt,name=field9077" json:"field9077,omitempty"`
-	Field9078 *Enum8951    `protobuf:"varint,62,opt,name=field9078,enum=benchmarks.google_message3.Enum8951" json:"field9078,omitempty"`
-	Field9079 *string      `protobuf:"bytes,20,opt,name=field9079" json:"field9079,omitempty"`
-	Field9080 *string      `protobuf:"bytes,21,opt,name=field9080" json:"field9080,omitempty"`
-	Field9081 *string      `protobuf:"bytes,22,opt,name=field9081" json:"field9081,omitempty"`
-	Field9082 *float64     `protobuf:"fixed64,31,opt,name=field9082" json:"field9082,omitempty"`
-	Field9083 *float64     `protobuf:"fixed64,32,opt,name=field9083" json:"field9083,omitempty"`
-	Field9084 *float64     `protobuf:"fixed64,33,opt,name=field9084" json:"field9084,omitempty"`
-	Field9085 *float64     `protobuf:"fixed64,36,opt,name=field9085" json:"field9085,omitempty"`
-	Field9086 *UnusedEnum  `protobuf:"varint,37,opt,name=field9086,enum=benchmarks.google_message3.UnusedEnum" json:"field9086,omitempty"`
-	Field9087 *float64     `protobuf:"fixed64,38,opt,name=field9087" json:"field9087,omitempty"`
-	Field9088 *float64     `protobuf:"fixed64,39,opt,name=field9088" json:"field9088,omitempty"`
-	Field9089 *float64     `protobuf:"fixed64,63,opt,name=field9089" json:"field9089,omitempty"`
-	Field9090 *float64     `protobuf:"fixed64,64,opt,name=field9090" json:"field9090,omitempty"`
-	Field9091 *float64     `protobuf:"fixed64,65,opt,name=field9091" json:"field9091,omitempty"`
-	Field9092 *float64     `protobuf:"fixed64,34,opt,name=field9092" json:"field9092,omitempty"`
-	Field9093 *UnusedEnum  `protobuf:"varint,35,opt,name=field9093,enum=benchmarks.google_message3.UnusedEnum" json:"field9093,omitempty"`
-	Field9094 *UnusedEnum  `protobuf:"varint,66,opt,name=field9094,enum=benchmarks.google_message3.UnusedEnum" json:"field9094,omitempty"`
-	Field9095 *string      `protobuf:"bytes,40,opt,name=field9095" json:"field9095,omitempty"`
-	Field9096 *string      `protobuf:"bytes,41,opt,name=field9096" json:"field9096,omitempty"`
-	Field9097 *string      `protobuf:"bytes,42,opt,name=field9097" json:"field9097,omitempty"`
-	Field9098 *string      `protobuf:"bytes,43,opt,name=field9098" json:"field9098,omitempty"`
-	Field9099 *string      `protobuf:"bytes,44,opt,name=field9099" json:"field9099,omitempty"`
-	Field9100 *string      `protobuf:"bytes,45,opt,name=field9100" json:"field9100,omitempty"`
-	Field9101 *string      `protobuf:"bytes,46,opt,name=field9101" json:"field9101,omitempty"`
-	Field9102 *string      `protobuf:"bytes,47,opt,name=field9102" json:"field9102,omitempty"`
-	Field9103 *string      `protobuf:"bytes,48,opt,name=field9103" json:"field9103,omitempty"`
-	Field9104 *string      `protobuf:"bytes,49,opt,name=field9104" json:"field9104,omitempty"`
-	Field9105 *Message8939 `protobuf:"bytes,100,opt,name=field9105" json:"field9105,omitempty"`
-	Field9106 *int64       `protobuf:"varint,101,opt,name=field9106" json:"field9106,omitempty"`
-}
-
-func (x *Message8944) Reset() {
-	*x = Message8944{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8944) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8944) ProtoMessage() {}
-
-func (x *Message8944) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8944.ProtoReflect.Descriptor instead.
-func (*Message8944) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Message8944) GetField9045() string {
-	if x != nil && x.Field9045 != nil {
-		return *x.Field9045
-	}
-	return ""
-}
-
-func (x *Message8944) GetField9046() string {
-	if x != nil && x.Field9046 != nil {
-		return *x.Field9046
-	}
-	return ""
-}
-
-func (x *Message8944) GetField9047() string {
-	if x != nil && x.Field9047 != nil {
-		return *x.Field9047
-	}
-	return ""
-}
-
-func (x *Message8944) GetField9048() string {
-	if x != nil && x.Field9048 != nil {
-		return *x.Field9048
-	}
-	return ""
-}
-
-func (x *Message8944) GetField9049() int32 {
-	if x != nil && x.Field9049 != nil {
-		return *x.Field9049
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9050() int32 {
-	if x != nil && x.Field9050 != nil {
-		return *x.Field9050
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9051() float32 {
-	if x != nil && x.Field9051 != nil {
-		return *x.Field9051
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9052() float32 {
-	if x != nil && x.Field9052 != nil {
-		return *x.Field9052
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9053() string {
-	if x != nil && x.Field9053 != nil {
-		return *x.Field9053
-	}
-	return ""
-}
-
-func (x *Message8944) GetField9054() int64 {
-	if x != nil && x.Field9054 != nil {
-		return *x.Field9054
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9055() bool {
-	if x != nil && x.Field9055 != nil {
-		return *x.Field9055
-	}
-	return false
-}
-
-func (x *Message8944) GetField9056() int32 {
-	if x != nil && x.Field9056 != nil {
-		return *x.Field9056
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9057() int32 {
-	if x != nil && x.Field9057 != nil {
-		return *x.Field9057
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9058() int32 {
-	if x != nil && x.Field9058 != nil {
-		return *x.Field9058
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9059() float32 {
-	if x != nil && x.Field9059 != nil {
-		return *x.Field9059
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9060() float32 {
-	if x != nil && x.Field9060 != nil {
-		return *x.Field9060
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9061() float32 {
-	if x != nil && x.Field9061 != nil {
-		return *x.Field9061
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9062() float32 {
-	if x != nil && x.Field9062 != nil {
-		return *x.Field9062
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9063() float32 {
-	if x != nil && x.Field9063 != nil {
-		return *x.Field9063
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9064() bool {
-	if x != nil && x.Field9064 != nil {
-		return *x.Field9064
-	}
-	return false
-}
-
-func (x *Message8944) GetField9065() float32 {
-	if x != nil && x.Field9065 != nil {
-		return *x.Field9065
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9066() int32 {
-	if x != nil && x.Field9066 != nil {
-		return *x.Field9066
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9067() Enum8945 {
-	if x != nil && x.Field9067 != nil {
-		return *x.Field9067
-	}
-	return Enum8945_ENUM_VALUE8946
-}
-
-func (x *Message8944) GetField9068() int32 {
-	if x != nil && x.Field9068 != nil {
-		return *x.Field9068
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9069() int32 {
-	if x != nil && x.Field9069 != nil {
-		return *x.Field9069
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9070() float32 {
-	if x != nil && x.Field9070 != nil {
-		return *x.Field9070
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9071() float32 {
-	if x != nil && x.Field9071 != nil {
-		return *x.Field9071
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9072() int32 {
-	if x != nil && x.Field9072 != nil {
-		return *x.Field9072
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9073() int32 {
-	if x != nil && x.Field9073 != nil {
-		return *x.Field9073
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9074() float32 {
-	if x != nil && x.Field9074 != nil {
-		return *x.Field9074
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9075() float32 {
-	if x != nil && x.Field9075 != nil {
-		return *x.Field9075
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9076() int32 {
-	if x != nil && x.Field9076 != nil {
-		return *x.Field9076
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9077() int32 {
-	if x != nil && x.Field9077 != nil {
-		return *x.Field9077
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9078() Enum8951 {
-	if x != nil && x.Field9078 != nil {
-		return *x.Field9078
-	}
-	return Enum8951_ENUM_VALUE8952
-}
-
-func (x *Message8944) GetField9079() string {
-	if x != nil && x.Field9079 != nil {
-		return *x.Field9079
-	}
-	return ""
-}
-
-func (x *Message8944) GetField9080() string {
-	if x != nil && x.Field9080 != nil {
-		return *x.Field9080
-	}
-	return ""
-}
-
-func (x *Message8944) GetField9081() string {
-	if x != nil && x.Field9081 != nil {
-		return *x.Field9081
-	}
-	return ""
-}
-
-func (x *Message8944) GetField9082() float64 {
-	if x != nil && x.Field9082 != nil {
-		return *x.Field9082
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9083() float64 {
-	if x != nil && x.Field9083 != nil {
-		return *x.Field9083
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9084() float64 {
-	if x != nil && x.Field9084 != nil {
-		return *x.Field9084
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9085() float64 {
-	if x != nil && x.Field9085 != nil {
-		return *x.Field9085
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9086() UnusedEnum {
-	if x != nil && x.Field9086 != nil {
-		return *x.Field9086
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message8944) GetField9087() float64 {
-	if x != nil && x.Field9087 != nil {
-		return *x.Field9087
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9088() float64 {
-	if x != nil && x.Field9088 != nil {
-		return *x.Field9088
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9089() float64 {
-	if x != nil && x.Field9089 != nil {
-		return *x.Field9089
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9090() float64 {
-	if x != nil && x.Field9090 != nil {
-		return *x.Field9090
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9091() float64 {
-	if x != nil && x.Field9091 != nil {
-		return *x.Field9091
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9092() float64 {
-	if x != nil && x.Field9092 != nil {
-		return *x.Field9092
-	}
-	return 0
-}
-
-func (x *Message8944) GetField9093() UnusedEnum {
-	if x != nil && x.Field9093 != nil {
-		return *x.Field9093
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message8944) GetField9094() UnusedEnum {
-	if x != nil && x.Field9094 != nil {
-		return *x.Field9094
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message8944) GetField9095() string {
-	if x != nil && x.Field9095 != nil {
-		return *x.Field9095
-	}
-	return ""
-}
-
-func (x *Message8944) GetField9096() string {
-	if x != nil && x.Field9096 != nil {
-		return *x.Field9096
-	}
-	return ""
-}
-
-func (x *Message8944) GetField9097() string {
-	if x != nil && x.Field9097 != nil {
-		return *x.Field9097
-	}
-	return ""
-}
-
-func (x *Message8944) GetField9098() string {
-	if x != nil && x.Field9098 != nil {
-		return *x.Field9098
-	}
-	return ""
-}
-
-func (x *Message8944) GetField9099() string {
-	if x != nil && x.Field9099 != nil {
-		return *x.Field9099
-	}
-	return ""
-}
-
-func (x *Message8944) GetField9100() string {
-	if x != nil && x.Field9100 != nil {
-		return *x.Field9100
-	}
-	return ""
-}
-
-func (x *Message8944) GetField9101() string {
-	if x != nil && x.Field9101 != nil {
-		return *x.Field9101
-	}
-	return ""
-}
-
-func (x *Message8944) GetField9102() string {
-	if x != nil && x.Field9102 != nil {
-		return *x.Field9102
-	}
-	return ""
-}
-
-func (x *Message8944) GetField9103() string {
-	if x != nil && x.Field9103 != nil {
-		return *x.Field9103
-	}
-	return ""
-}
-
-func (x *Message8944) GetField9104() string {
-	if x != nil && x.Field9104 != nil {
-		return *x.Field9104
-	}
-	return ""
-}
-
-func (x *Message8944) GetField9105() *Message8939 {
-	if x != nil {
-		return x.Field9105
-	}
-	return nil
-}
-
-func (x *Message8944) GetField9106() int64 {
-	if x != nil && x.Field9106 != nil {
-		return *x.Field9106
-	}
-	return 0
-}
-
-type Message9182 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	Field9205 *string               `protobuf:"bytes,1,opt,name=field9205" json:"field9205,omitempty"`
-	Field9206 *string               `protobuf:"bytes,2,opt,name=field9206" json:"field9206,omitempty"`
-	Field9207 *float32              `protobuf:"fixed32,16,opt,name=field9207" json:"field9207,omitempty"`
-	Field9208 *int32                `protobuf:"varint,17,opt,name=field9208" json:"field9208,omitempty"`
-	Field9209 *int32                `protobuf:"varint,27,opt,name=field9209" json:"field9209,omitempty"`
-	Field9210 *int32                `protobuf:"varint,7,opt,name=field9210" json:"field9210,omitempty"`
-	Field9211 *int32                `protobuf:"varint,8,opt,name=field9211" json:"field9211,omitempty"`
-	Field9212 *float32              `protobuf:"fixed32,26,opt,name=field9212" json:"field9212,omitempty"`
-	Field9213 *float32              `protobuf:"fixed32,22,opt,name=field9213" json:"field9213,omitempty"`
-	Field9214 *bool                 `protobuf:"varint,28,opt,name=field9214" json:"field9214,omitempty"`
-	Field9215 []*UnusedEmptyMessage `protobuf:"bytes,21,rep,name=field9215" json:"field9215,omitempty"`
-	Field9216 []*UnusedEmptyMessage `protobuf:"bytes,25,rep,name=field9216" json:"field9216,omitempty"`
-	Field9217 []*Message9181        `protobuf:"bytes,29,rep,name=field9217" json:"field9217,omitempty"`
-	Field9218 *bool                 `protobuf:"varint,18,opt,name=field9218" json:"field9218,omitempty"`
-	Field9219 *bool                 `protobuf:"varint,19,opt,name=field9219" json:"field9219,omitempty"`
-	Field9220 *bool                 `protobuf:"varint,20,opt,name=field9220" json:"field9220,omitempty"`
-	Field9221 *Message9164          `protobuf:"bytes,30,opt,name=field9221" json:"field9221,omitempty"`
-	Field9222 *Message9165          `protobuf:"bytes,31,opt,name=field9222" json:"field9222,omitempty"`
-	Field9223 *Message9166          `protobuf:"bytes,32,opt,name=field9223" json:"field9223,omitempty"`
-	Field9224 *float32              `protobuf:"fixed32,33,opt,name=field9224" json:"field9224,omitempty"`
-	Field9225 *Message9151          `protobuf:"bytes,34,opt,name=field9225" json:"field9225,omitempty"`
-	Field9226 *float32              `protobuf:"fixed32,35,opt,name=field9226" json:"field9226,omitempty"`
-	Field9227 *float32              `protobuf:"fixed32,36,opt,name=field9227" json:"field9227,omitempty"`
-	Field9228 *float32              `protobuf:"fixed32,37,opt,name=field9228" json:"field9228,omitempty"`
-	Field9229 *float32              `protobuf:"fixed32,38,opt,name=field9229" json:"field9229,omitempty"`
-	Field9230 *float32              `protobuf:"fixed32,39,opt,name=field9230" json:"field9230,omitempty"`
-}
-
-func (x *Message9182) Reset() {
-	*x = Message9182{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message9182) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message9182) ProtoMessage() {}
-
-func (x *Message9182) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message9182.ProtoReflect.Descriptor instead.
-func (*Message9182) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Message9182) GetField9205() string {
-	if x != nil && x.Field9205 != nil {
-		return *x.Field9205
-	}
-	return ""
-}
-
-func (x *Message9182) GetField9206() string {
-	if x != nil && x.Field9206 != nil {
-		return *x.Field9206
-	}
-	return ""
-}
-
-func (x *Message9182) GetField9207() float32 {
-	if x != nil && x.Field9207 != nil {
-		return *x.Field9207
-	}
-	return 0
-}
-
-func (x *Message9182) GetField9208() int32 {
-	if x != nil && x.Field9208 != nil {
-		return *x.Field9208
-	}
-	return 0
-}
-
-func (x *Message9182) GetField9209() int32 {
-	if x != nil && x.Field9209 != nil {
-		return *x.Field9209
-	}
-	return 0
-}
-
-func (x *Message9182) GetField9210() int32 {
-	if x != nil && x.Field9210 != nil {
-		return *x.Field9210
-	}
-	return 0
-}
-
-func (x *Message9182) GetField9211() int32 {
-	if x != nil && x.Field9211 != nil {
-		return *x.Field9211
-	}
-	return 0
-}
-
-func (x *Message9182) GetField9212() float32 {
-	if x != nil && x.Field9212 != nil {
-		return *x.Field9212
-	}
-	return 0
-}
-
-func (x *Message9182) GetField9213() float32 {
-	if x != nil && x.Field9213 != nil {
-		return *x.Field9213
-	}
-	return 0
-}
-
-func (x *Message9182) GetField9214() bool {
-	if x != nil && x.Field9214 != nil {
-		return *x.Field9214
-	}
-	return false
-}
-
-func (x *Message9182) GetField9215() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field9215
-	}
-	return nil
-}
-
-func (x *Message9182) GetField9216() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field9216
-	}
-	return nil
-}
-
-func (x *Message9182) GetField9217() []*Message9181 {
-	if x != nil {
-		return x.Field9217
-	}
-	return nil
-}
-
-func (x *Message9182) GetField9218() bool {
-	if x != nil && x.Field9218 != nil {
-		return *x.Field9218
-	}
-	return false
-}
-
-func (x *Message9182) GetField9219() bool {
-	if x != nil && x.Field9219 != nil {
-		return *x.Field9219
-	}
-	return false
-}
-
-func (x *Message9182) GetField9220() bool {
-	if x != nil && x.Field9220 != nil {
-		return *x.Field9220
-	}
-	return false
-}
-
-func (x *Message9182) GetField9221() *Message9164 {
-	if x != nil {
-		return x.Field9221
-	}
-	return nil
-}
-
-func (x *Message9182) GetField9222() *Message9165 {
-	if x != nil {
-		return x.Field9222
-	}
-	return nil
-}
-
-func (x *Message9182) GetField9223() *Message9166 {
-	if x != nil {
-		return x.Field9223
-	}
-	return nil
-}
-
-func (x *Message9182) GetField9224() float32 {
-	if x != nil && x.Field9224 != nil {
-		return *x.Field9224
-	}
-	return 0
-}
-
-func (x *Message9182) GetField9225() *Message9151 {
-	if x != nil {
-		return x.Field9225
-	}
-	return nil
-}
-
-func (x *Message9182) GetField9226() float32 {
-	if x != nil && x.Field9226 != nil {
-		return *x.Field9226
-	}
-	return 0
-}
-
-func (x *Message9182) GetField9227() float32 {
-	if x != nil && x.Field9227 != nil {
-		return *x.Field9227
-	}
-	return 0
-}
-
-func (x *Message9182) GetField9228() float32 {
-	if x != nil && x.Field9228 != nil {
-		return *x.Field9228
-	}
-	return 0
-}
-
-func (x *Message9182) GetField9229() float32 {
-	if x != nil && x.Field9229 != nil {
-		return *x.Field9229
-	}
-	return 0
-}
-
-func (x *Message9182) GetField9230() float32 {
-	if x != nil && x.Field9230 != nil {
-		return *x.Field9230
-	}
-	return 0
-}
-
-type Message9160 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field9161 *int32 `protobuf:"varint,1,opt,name=field9161" json:"field9161,omitempty"`
-	Field9162 []byte `protobuf:"bytes,2,opt,name=field9162" json:"field9162,omitempty"`
-}
-
-func (x *Message9160) Reset() {
-	*x = Message9160{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message9160) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message9160) ProtoMessage() {}
-
-func (x *Message9160) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message9160.ProtoReflect.Descriptor instead.
-func (*Message9160) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Message9160) GetField9161() int32 {
-	if x != nil && x.Field9161 != nil {
-		return *x.Field9161
-	}
-	return 0
-}
-
-func (x *Message9160) GetField9162() []byte {
-	if x != nil {
-		return x.Field9162
-	}
-	return nil
-}
-
-type Message9242 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field9327 []Enum9243 `protobuf:"varint,1,rep,name=field9327,enum=benchmarks.google_message3.Enum9243" json:"field9327,omitempty"`
-}
-
-func (x *Message9242) Reset() {
-	*x = Message9242{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message9242) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message9242) ProtoMessage() {}
-
-func (x *Message9242) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message9242.ProtoReflect.Descriptor instead.
-func (*Message9242) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *Message9242) GetField9327() []Enum9243 {
-	if x != nil {
-		return x.Field9327
-	}
-	return nil
-}
-
-type Message8890 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8916 []*Message8888 `protobuf:"bytes,1,rep,name=field8916" json:"field8916,omitempty"`
-}
-
-func (x *Message8890) Reset() {
-	*x = Message8890{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8890) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8890) ProtoMessage() {}
-
-func (x *Message8890) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8890.ProtoReflect.Descriptor instead.
-func (*Message8890) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *Message8890) GetField8916() []*Message8888 {
-	if x != nil {
-		return x.Field8916
-	}
-	return nil
-}
-
-type Message9123 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field9135 *float32 `protobuf:"fixed32,1,opt,name=field9135" json:"field9135,omitempty"`
-}
-
-func (x *Message9123) Reset() {
-	*x = Message9123{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message9123) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message9123) ProtoMessage() {}
-
-func (x *Message9123) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message9123.ProtoReflect.Descriptor instead.
-func (*Message9123) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *Message9123) GetField9135() float32 {
-	if x != nil && x.Field9135 != nil {
-		return *x.Field9135
-	}
-	return 0
-}
-
-type Message9628 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field9673 *Message9627 `protobuf:"bytes,1,opt,name=field9673" json:"field9673,omitempty"`
-	Field9674 *string      `protobuf:"bytes,2,opt,name=field9674" json:"field9674,omitempty"`
-	Field9675 []int32      `protobuf:"varint,3,rep,name=field9675" json:"field9675,omitempty"`
-	Field9676 *int32       `protobuf:"varint,4,opt,name=field9676" json:"field9676,omitempty"`
-}
-
-func (x *Message9628) Reset() {
-	*x = Message9628{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message9628) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message9628) ProtoMessage() {}
-
-func (x *Message9628) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[8]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message9628.ProtoReflect.Descriptor instead.
-func (*Message9628) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *Message9628) GetField9673() *Message9627 {
-	if x != nil {
-		return x.Field9673
-	}
-	return nil
-}
-
-func (x *Message9628) GetField9674() string {
-	if x != nil && x.Field9674 != nil {
-		return *x.Field9674
-	}
-	return ""
-}
-
-func (x *Message9628) GetField9675() []int32 {
-	if x != nil {
-		return x.Field9675
-	}
-	return nil
-}
-
-func (x *Message9628) GetField9676() int32 {
-	if x != nil && x.Field9676 != nil {
-		return *x.Field9676
-	}
-	return 0
-}
-
-type Message11014 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field11780 *int32                `protobuf:"varint,40,opt,name=field11780" json:"field11780,omitempty"`
-	Field11781 *string               `protobuf:"bytes,46,opt,name=field11781" json:"field11781,omitempty"`
-	Field11782 *bool                 `protobuf:"varint,47,opt,name=field11782" json:"field11782,omitempty"`
-	Field11783 *Enum11107            `protobuf:"varint,1,opt,name=field11783,enum=benchmarks.google_message3.Enum11107" json:"field11783,omitempty"`
-	Field11784 *int32                `protobuf:"varint,2,opt,name=field11784" json:"field11784,omitempty"`
-	Field11785 *float64              `protobuf:"fixed64,4,opt,name=field11785" json:"field11785,omitempty"`
-	Field11786 *int32                `protobuf:"varint,5,opt,name=field11786" json:"field11786,omitempty"`
-	Field11787 *int32                `protobuf:"varint,6,opt,name=field11787" json:"field11787,omitempty"`
-	Field11788 *float64              `protobuf:"fixed64,7,opt,name=field11788" json:"field11788,omitempty"`
-	Field11789 *float64              `protobuf:"fixed64,8,opt,name=field11789" json:"field11789,omitempty"`
-	Field11790 *int64                `protobuf:"varint,9,opt,name=field11790" json:"field11790,omitempty"`
-	Field11791 *bool                 `protobuf:"varint,10,opt,name=field11791" json:"field11791,omitempty"`
-	Field11792 *int64                `protobuf:"varint,28,opt,name=field11792" json:"field11792,omitempty"`
-	Field11793 *bool                 `protobuf:"varint,37,opt,name=field11793" json:"field11793,omitempty"`
-	Field11794 *Enum11541            `protobuf:"varint,44,opt,name=field11794,enum=benchmarks.google_message3.Enum11541" json:"field11794,omitempty"`
-	Field11795 *float64              `protobuf:"fixed64,49,opt,name=field11795" json:"field11795,omitempty"`
-	Field11796 *float64              `protobuf:"fixed64,51,opt,name=field11796" json:"field11796,omitempty"`
-	Field11797 *int64                `protobuf:"varint,54,opt,name=field11797" json:"field11797,omitempty"`
-	Field11798 *int64                `protobuf:"varint,55,opt,name=field11798" json:"field11798,omitempty"`
-	Field11799 *UnusedEnum           `protobuf:"varint,57,opt,name=field11799,enum=benchmarks.google_message3.UnusedEnum" json:"field11799,omitempty"`
-	Field11800 *Enum11468            `protobuf:"varint,58,opt,name=field11800,enum=benchmarks.google_message3.Enum11468" json:"field11800,omitempty"`
-	Field11801 *int32                `protobuf:"varint,59,opt,name=field11801" json:"field11801,omitempty"`
-	Field11802 *UnusedEnum           `protobuf:"varint,60,opt,name=field11802,enum=benchmarks.google_message3.UnusedEnum" json:"field11802,omitempty"`
-	Field11803 *int32                `protobuf:"varint,61,opt,name=field11803" json:"field11803,omitempty"`
-	Field11804 *int32                `protobuf:"varint,62,opt,name=field11804" json:"field11804,omitempty"`
-	Field11805 *int32                `protobuf:"varint,69,opt,name=field11805" json:"field11805,omitempty"`
-	Field11806 *UnusedEmptyMessage   `protobuf:"bytes,68,opt,name=field11806" json:"field11806,omitempty"`
-	Field11807 []*Message11018       `protobuf:"bytes,71,rep,name=field11807" json:"field11807,omitempty"`
-	Field11808 *bool                 `protobuf:"varint,50,opt,name=field11808" json:"field11808,omitempty"`
-	Field11809 *bool                 `protobuf:"varint,56,opt,name=field11809" json:"field11809,omitempty"`
-	Field11810 *bool                 `protobuf:"varint,66,opt,name=field11810" json:"field11810,omitempty"`
-	Field11811 *bool                 `protobuf:"varint,63,opt,name=field11811" json:"field11811,omitempty"`
-	Field11812 *bool                 `protobuf:"varint,64,opt,name=field11812" json:"field11812,omitempty"`
-	Field11813 *bool                 `protobuf:"varint,65,opt,name=field11813" json:"field11813,omitempty"`
-	Field11814 *bool                 `protobuf:"varint,67,opt,name=field11814" json:"field11814,omitempty"`
-	Field11815 *Enum11107            `protobuf:"varint,15,opt,name=field11815,enum=benchmarks.google_message3.Enum11107" json:"field11815,omitempty"`
-	Field11816 *int64                `protobuf:"varint,16,opt,name=field11816" json:"field11816,omitempty"`
-	Field11817 *float64              `protobuf:"fixed64,17,opt,name=field11817" json:"field11817,omitempty"`
-	Field11818 *int64                `protobuf:"varint,18,opt,name=field11818" json:"field11818,omitempty"`
-	Field11819 *int32                `protobuf:"varint,19,opt,name=field11819" json:"field11819,omitempty"`
-	Field11820 *int64                `protobuf:"varint,20,opt,name=field11820" json:"field11820,omitempty"`
-	Field11821 *int32                `protobuf:"varint,42,opt,name=field11821" json:"field11821,omitempty"`
-	Field11822 *int64                `protobuf:"varint,52,opt,name=field11822" json:"field11822,omitempty"`
-	Field11823 *int64                `protobuf:"varint,53,opt,name=field11823" json:"field11823,omitempty"`
-	Field11824 *int64                `protobuf:"varint,41,opt,name=field11824" json:"field11824,omitempty"`
-	Field11825 *float64              `protobuf:"fixed64,48,opt,name=field11825" json:"field11825,omitempty"`
-	Field11826 []*Message11020       `protobuf:"bytes,70,rep,name=field11826" json:"field11826,omitempty"`
-	Field11827 []*UnusedEmptyMessage `protobuf:"bytes,72,rep,name=field11827" json:"field11827,omitempty"`
-	Field11828 *float64              `protobuf:"fixed64,25,opt,name=field11828" json:"field11828,omitempty"`
-	Field11829 *string               `protobuf:"bytes,26,opt,name=field11829" json:"field11829,omitempty"`
-	Field11830 *int64                `protobuf:"varint,27,opt,name=field11830" json:"field11830,omitempty"`
-	Field11831 *int64                `protobuf:"varint,32,opt,name=field11831" json:"field11831,omitempty"`
-	Field11832 *uint64               `protobuf:"varint,33,opt,name=field11832" json:"field11832,omitempty"`
-	Field11833 *bool                 `protobuf:"varint,29,opt,name=field11833" json:"field11833,omitempty"`
-	Field11834 *bool                 `protobuf:"varint,34,opt,name=field11834" json:"field11834,omitempty"`
-	Field11835 *string               `protobuf:"bytes,30,opt,name=field11835" json:"field11835,omitempty"`
-	Field11836 *int32                `protobuf:"varint,3,opt,name=field11836" json:"field11836,omitempty"`
-	Field11837 *int32                `protobuf:"varint,31,opt,name=field11837" json:"field11837,omitempty"`
-	Field11838 *int32                `protobuf:"varint,73,opt,name=field11838" json:"field11838,omitempty"`
-	Field11839 *int32                `protobuf:"varint,35,opt,name=field11839" json:"field11839,omitempty"`
-	Field11840 *Enum11022            `protobuf:"varint,36,opt,name=field11840,enum=benchmarks.google_message3.Enum11022" json:"field11840,omitempty"`
-	Field11841 *Message11013         `protobuf:"bytes,38,opt,name=field11841" json:"field11841,omitempty"`
-	Field11842 *float64              `protobuf:"fixed64,39,opt,name=field11842" json:"field11842,omitempty"`
-	Field11843 *int32                `protobuf:"varint,45,opt,name=field11843" json:"field11843,omitempty"`
-	Field11844 *bool                 `protobuf:"varint,74,opt,name=field11844" json:"field11844,omitempty"`
-}
-
-func (x *Message11014) Reset() {
-	*x = Message11014{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[9]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message11014) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message11014) ProtoMessage() {}
-
-func (x *Message11014) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[9]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message11014.ProtoReflect.Descriptor instead.
-func (*Message11014) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *Message11014) GetField11780() int32 {
-	if x != nil && x.Field11780 != nil {
-		return *x.Field11780
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11781() string {
-	if x != nil && x.Field11781 != nil {
-		return *x.Field11781
-	}
-	return ""
-}
-
-func (x *Message11014) GetField11782() bool {
-	if x != nil && x.Field11782 != nil {
-		return *x.Field11782
-	}
-	return false
-}
-
-func (x *Message11014) GetField11783() Enum11107 {
-	if x != nil && x.Field11783 != nil {
-		return *x.Field11783
-	}
-	return Enum11107_ENUM_VALUE11108
-}
-
-func (x *Message11014) GetField11784() int32 {
-	if x != nil && x.Field11784 != nil {
-		return *x.Field11784
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11785() float64 {
-	if x != nil && x.Field11785 != nil {
-		return *x.Field11785
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11786() int32 {
-	if x != nil && x.Field11786 != nil {
-		return *x.Field11786
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11787() int32 {
-	if x != nil && x.Field11787 != nil {
-		return *x.Field11787
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11788() float64 {
-	if x != nil && x.Field11788 != nil {
-		return *x.Field11788
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11789() float64 {
-	if x != nil && x.Field11789 != nil {
-		return *x.Field11789
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11790() int64 {
-	if x != nil && x.Field11790 != nil {
-		return *x.Field11790
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11791() bool {
-	if x != nil && x.Field11791 != nil {
-		return *x.Field11791
-	}
-	return false
-}
-
-func (x *Message11014) GetField11792() int64 {
-	if x != nil && x.Field11792 != nil {
-		return *x.Field11792
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11793() bool {
-	if x != nil && x.Field11793 != nil {
-		return *x.Field11793
-	}
-	return false
-}
-
-func (x *Message11014) GetField11794() Enum11541 {
-	if x != nil && x.Field11794 != nil {
-		return *x.Field11794
-	}
-	return Enum11541_ENUM_VALUE11542
-}
-
-func (x *Message11014) GetField11795() float64 {
-	if x != nil && x.Field11795 != nil {
-		return *x.Field11795
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11796() float64 {
-	if x != nil && x.Field11796 != nil {
-		return *x.Field11796
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11797() int64 {
-	if x != nil && x.Field11797 != nil {
-		return *x.Field11797
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11798() int64 {
-	if x != nil && x.Field11798 != nil {
-		return *x.Field11798
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11799() UnusedEnum {
-	if x != nil && x.Field11799 != nil {
-		return *x.Field11799
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message11014) GetField11800() Enum11468 {
-	if x != nil && x.Field11800 != nil {
-		return *x.Field11800
-	}
-	return Enum11468_ENUM_VALUE11469
-}
-
-func (x *Message11014) GetField11801() int32 {
-	if x != nil && x.Field11801 != nil {
-		return *x.Field11801
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11802() UnusedEnum {
-	if x != nil && x.Field11802 != nil {
-		return *x.Field11802
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message11014) GetField11803() int32 {
-	if x != nil && x.Field11803 != nil {
-		return *x.Field11803
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11804() int32 {
-	if x != nil && x.Field11804 != nil {
-		return *x.Field11804
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11805() int32 {
-	if x != nil && x.Field11805 != nil {
-		return *x.Field11805
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11806() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field11806
-	}
-	return nil
-}
-
-func (x *Message11014) GetField11807() []*Message11018 {
-	if x != nil {
-		return x.Field11807
-	}
-	return nil
-}
-
-func (x *Message11014) GetField11808() bool {
-	if x != nil && x.Field11808 != nil {
-		return *x.Field11808
-	}
-	return false
-}
-
-func (x *Message11014) GetField11809() bool {
-	if x != nil && x.Field11809 != nil {
-		return *x.Field11809
-	}
-	return false
-}
-
-func (x *Message11014) GetField11810() bool {
-	if x != nil && x.Field11810 != nil {
-		return *x.Field11810
-	}
-	return false
-}
-
-func (x *Message11014) GetField11811() bool {
-	if x != nil && x.Field11811 != nil {
-		return *x.Field11811
-	}
-	return false
-}
-
-func (x *Message11014) GetField11812() bool {
-	if x != nil && x.Field11812 != nil {
-		return *x.Field11812
-	}
-	return false
-}
-
-func (x *Message11014) GetField11813() bool {
-	if x != nil && x.Field11813 != nil {
-		return *x.Field11813
-	}
-	return false
-}
-
-func (x *Message11014) GetField11814() bool {
-	if x != nil && x.Field11814 != nil {
-		return *x.Field11814
-	}
-	return false
-}
-
-func (x *Message11014) GetField11815() Enum11107 {
-	if x != nil && x.Field11815 != nil {
-		return *x.Field11815
-	}
-	return Enum11107_ENUM_VALUE11108
-}
-
-func (x *Message11014) GetField11816() int64 {
-	if x != nil && x.Field11816 != nil {
-		return *x.Field11816
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11817() float64 {
-	if x != nil && x.Field11817 != nil {
-		return *x.Field11817
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11818() int64 {
-	if x != nil && x.Field11818 != nil {
-		return *x.Field11818
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11819() int32 {
-	if x != nil && x.Field11819 != nil {
-		return *x.Field11819
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11820() int64 {
-	if x != nil && x.Field11820 != nil {
-		return *x.Field11820
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11821() int32 {
-	if x != nil && x.Field11821 != nil {
-		return *x.Field11821
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11822() int64 {
-	if x != nil && x.Field11822 != nil {
-		return *x.Field11822
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11823() int64 {
-	if x != nil && x.Field11823 != nil {
-		return *x.Field11823
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11824() int64 {
-	if x != nil && x.Field11824 != nil {
-		return *x.Field11824
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11825() float64 {
-	if x != nil && x.Field11825 != nil {
-		return *x.Field11825
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11826() []*Message11020 {
-	if x != nil {
-		return x.Field11826
-	}
-	return nil
-}
-
-func (x *Message11014) GetField11827() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field11827
-	}
-	return nil
-}
-
-func (x *Message11014) GetField11828() float64 {
-	if x != nil && x.Field11828 != nil {
-		return *x.Field11828
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11829() string {
-	if x != nil && x.Field11829 != nil {
-		return *x.Field11829
-	}
-	return ""
-}
-
-func (x *Message11014) GetField11830() int64 {
-	if x != nil && x.Field11830 != nil {
-		return *x.Field11830
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11831() int64 {
-	if x != nil && x.Field11831 != nil {
-		return *x.Field11831
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11832() uint64 {
-	if x != nil && x.Field11832 != nil {
-		return *x.Field11832
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11833() bool {
-	if x != nil && x.Field11833 != nil {
-		return *x.Field11833
-	}
-	return false
-}
-
-func (x *Message11014) GetField11834() bool {
-	if x != nil && x.Field11834 != nil {
-		return *x.Field11834
-	}
-	return false
-}
-
-func (x *Message11014) GetField11835() string {
-	if x != nil && x.Field11835 != nil {
-		return *x.Field11835
-	}
-	return ""
-}
-
-func (x *Message11014) GetField11836() int32 {
-	if x != nil && x.Field11836 != nil {
-		return *x.Field11836
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11837() int32 {
-	if x != nil && x.Field11837 != nil {
-		return *x.Field11837
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11838() int32 {
-	if x != nil && x.Field11838 != nil {
-		return *x.Field11838
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11839() int32 {
-	if x != nil && x.Field11839 != nil {
-		return *x.Field11839
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11840() Enum11022 {
-	if x != nil && x.Field11840 != nil {
-		return *x.Field11840
-	}
-	return Enum11022_ENUM_VALUE11023
-}
-
-func (x *Message11014) GetField11841() *Message11013 {
-	if x != nil {
-		return x.Field11841
-	}
-	return nil
-}
-
-func (x *Message11014) GetField11842() float64 {
-	if x != nil && x.Field11842 != nil {
-		return *x.Field11842
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11843() int32 {
-	if x != nil && x.Field11843 != nil {
-		return *x.Field11843
-	}
-	return 0
-}
-
-func (x *Message11014) GetField11844() bool {
-	if x != nil && x.Field11844 != nil {
-		return *x.Field11844
-	}
-	return false
-}
-
-type Message10801 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field10812 *Message10800   `protobuf:"bytes,1,opt,name=field10812" json:"field10812,omitempty"`
-	Field10813 []*Message10802 `protobuf:"bytes,2,rep,name=field10813" json:"field10813,omitempty"`
-	Field10814 *int32          `protobuf:"varint,3,opt,name=field10814" json:"field10814,omitempty"`
-}
-
-func (x *Message10801) Reset() {
-	*x = Message10801{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[10]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10801) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10801) ProtoMessage() {}
-
-func (x *Message10801) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[10]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10801.ProtoReflect.Descriptor instead.
-func (*Message10801) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *Message10801) GetField10812() *Message10800 {
-	if x != nil {
-		return x.Field10812
-	}
-	return nil
-}
-
-func (x *Message10801) GetField10813() []*Message10802 {
-	if x != nil {
-		return x.Field10813
-	}
-	return nil
-}
-
-func (x *Message10801) GetField10814() int32 {
-	if x != nil && x.Field10814 != nil {
-		return *x.Field10814
-	}
-	return 0
-}
-
-type Message10749 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field10754 []*Message10748 `protobuf:"bytes,1,rep,name=field10754" json:"field10754,omitempty"`
-}
-
-func (x *Message10749) Reset() {
-	*x = Message10749{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[11]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10749) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10749) ProtoMessage() {}
-
-func (x *Message10749) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[11]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10749.ProtoReflect.Descriptor instead.
-func (*Message10749) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *Message10749) GetField10754() []*Message10748 {
-	if x != nil {
-		return x.Field10754
-	}
-	return nil
-}
-
-type Message8298 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8321 *Message7966 `protobuf:"bytes,1,opt,name=field8321" json:"field8321,omitempty"`
-	Field8322 *int64       `protobuf:"varint,2,opt,name=field8322" json:"field8322,omitempty"`
-	Field8323 *string      `protobuf:"bytes,3,opt,name=field8323" json:"field8323,omitempty"`
-}
-
-func (x *Message8298) Reset() {
-	*x = Message8298{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[12]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8298) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8298) ProtoMessage() {}
-
-func (x *Message8298) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[12]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8298.ProtoReflect.Descriptor instead.
-func (*Message8298) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *Message8298) GetField8321() *Message7966 {
-	if x != nil {
-		return x.Field8321
-	}
-	return nil
-}
-
-func (x *Message8298) GetField8322() int64 {
-	if x != nil && x.Field8322 != nil {
-		return *x.Field8322
-	}
-	return 0
-}
-
-func (x *Message8298) GetField8323() string {
-	if x != nil && x.Field8323 != nil {
-		return *x.Field8323
-	}
-	return ""
-}
-
-type Message8300 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8326 *string      `protobuf:"bytes,1,opt,name=field8326" json:"field8326,omitempty"`
-	Field8327 *Message7966 `protobuf:"bytes,2,opt,name=field8327" json:"field8327,omitempty"`
-}
-
-func (x *Message8300) Reset() {
-	*x = Message8300{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[13]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8300) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8300) ProtoMessage() {}
-
-func (x *Message8300) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[13]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8300.ProtoReflect.Descriptor instead.
-func (*Message8300) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *Message8300) GetField8326() string {
-	if x != nil && x.Field8326 != nil {
-		return *x.Field8326
-	}
-	return ""
-}
-
-func (x *Message8300) GetField8327() *Message7966 {
-	if x != nil {
-		return x.Field8327
-	}
-	return nil
-}
-
-type Message8291 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8306 *string   `protobuf:"bytes,1,opt,name=field8306" json:"field8306,omitempty"`
-	Field8307 *int32    `protobuf:"varint,2,opt,name=field8307" json:"field8307,omitempty"`
-	Field8308 *string   `protobuf:"bytes,3,opt,name=field8308" json:"field8308,omitempty"`
-	Field8309 *string   `protobuf:"bytes,4,opt,name=field8309" json:"field8309,omitempty"`
-	Field8310 *Enum8292 `protobuf:"varint,5,opt,name=field8310,enum=benchmarks.google_message3.Enum8292" json:"field8310,omitempty"`
-}
-
-func (x *Message8291) Reset() {
-	*x = Message8291{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[14]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8291) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8291) ProtoMessage() {}
-
-func (x *Message8291) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[14]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8291.ProtoReflect.Descriptor instead.
-func (*Message8291) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *Message8291) GetField8306() string {
-	if x != nil && x.Field8306 != nil {
-		return *x.Field8306
-	}
-	return ""
-}
-
-func (x *Message8291) GetField8307() int32 {
-	if x != nil && x.Field8307 != nil {
-		return *x.Field8307
-	}
-	return 0
-}
-
-func (x *Message8291) GetField8308() string {
-	if x != nil && x.Field8308 != nil {
-		return *x.Field8308
-	}
-	return ""
-}
-
-func (x *Message8291) GetField8309() string {
-	if x != nil && x.Field8309 != nil {
-		return *x.Field8309
-	}
-	return ""
-}
-
-func (x *Message8291) GetField8310() Enum8292 {
-	if x != nil && x.Field8310 != nil {
-		return *x.Field8310
-	}
-	return Enum8292_ENUM_VALUE8293
-}
-
-type Message8296 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8311 *Message7966 `protobuf:"bytes,1,opt,name=field8311" json:"field8311,omitempty"`
-	Field8312 *string      `protobuf:"bytes,2,opt,name=field8312" json:"field8312,omitempty"`
-	Field8313 *Message7966 `protobuf:"bytes,3,opt,name=field8313" json:"field8313,omitempty"`
-	Field8314 *int32       `protobuf:"varint,4,opt,name=field8314" json:"field8314,omitempty"`
-	Field8315 *int32       `protobuf:"varint,5,opt,name=field8315" json:"field8315,omitempty"`
-	Field8316 *string      `protobuf:"bytes,6,opt,name=field8316" json:"field8316,omitempty"`
-}
-
-func (x *Message8296) Reset() {
-	*x = Message8296{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[15]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8296) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8296) ProtoMessage() {}
-
-func (x *Message8296) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[15]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8296.ProtoReflect.Descriptor instead.
-func (*Message8296) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{15}
-}
-
-func (x *Message8296) GetField8311() *Message7966 {
-	if x != nil {
-		return x.Field8311
-	}
-	return nil
-}
-
-func (x *Message8296) GetField8312() string {
-	if x != nil && x.Field8312 != nil {
-		return *x.Field8312
-	}
-	return ""
-}
-
-func (x *Message8296) GetField8313() *Message7966 {
-	if x != nil {
-		return x.Field8313
-	}
-	return nil
-}
-
-func (x *Message8296) GetField8314() int32 {
-	if x != nil && x.Field8314 != nil {
-		return *x.Field8314
-	}
-	return 0
-}
-
-func (x *Message8296) GetField8315() int32 {
-	if x != nil && x.Field8315 != nil {
-		return *x.Field8315
-	}
-	return 0
-}
-
-func (x *Message8296) GetField8316() string {
-	if x != nil && x.Field8316 != nil {
-		return *x.Field8316
-	}
-	return ""
-}
-
-type Message7965 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7967 *int32 `protobuf:"varint,1,opt,name=field7967" json:"field7967,omitempty"`
-	Field7968 *int32 `protobuf:"varint,2,opt,name=field7968" json:"field7968,omitempty"`
-}
-
-func (x *Message7965) Reset() {
-	*x = Message7965{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[16]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7965) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7965) ProtoMessage() {}
-
-func (x *Message7965) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[16]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7965.ProtoReflect.Descriptor instead.
-func (*Message7965) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *Message7965) GetField7967() int32 {
-	if x != nil && x.Field7967 != nil {
-		return *x.Field7967
-	}
-	return 0
-}
-
-func (x *Message7965) GetField7968() int32 {
-	if x != nil && x.Field7968 != nil {
-		return *x.Field7968
-	}
-	return 0
-}
-
-type Message8290 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8304 *string `protobuf:"bytes,1,opt,name=field8304" json:"field8304,omitempty"`
-	Field8305 *string `protobuf:"bytes,2,opt,name=field8305" json:"field8305,omitempty"`
-}
-
-func (x *Message8290) Reset() {
-	*x = Message8290{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[17]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8290) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8290) ProtoMessage() {}
-
-func (x *Message8290) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[17]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8290.ProtoReflect.Descriptor instead.
-func (*Message8290) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{17}
-}
-
-func (x *Message8290) GetField8304() string {
-	if x != nil && x.Field8304 != nil {
-		return *x.Field8304
-	}
-	return ""
-}
-
-func (x *Message8290) GetField8305() string {
-	if x != nil && x.Field8305 != nil {
-		return *x.Field8305
-	}
-	return ""
-}
-
-type Message717 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field876 []string `protobuf:"bytes,1,rep,name=field876" json:"field876,omitempty"`
-	Field877 *float64 `protobuf:"fixed64,2,opt,name=field877" json:"field877,omitempty"`
-}
-
-func (x *Message717) Reset() {
-	*x = Message717{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[18]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message717) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message717) ProtoMessage() {}
-
-func (x *Message717) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[18]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message717.ProtoReflect.Descriptor instead.
-func (*Message717) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{18}
-}
-
-func (x *Message717) GetField876() []string {
-	if x != nil {
-		return x.Field876
-	}
-	return nil
-}
-
-func (x *Message717) GetField877() float64 {
-	if x != nil && x.Field877 != nil {
-		return *x.Field877
-	}
-	return 0
-}
-
-type Message713 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field852 *Message708 `protobuf:"bytes,1,req,name=field852" json:"field852,omitempty"`
-	Field853 []string    `protobuf:"bytes,2,rep,name=field853" json:"field853,omitempty"`
-}
-
-func (x *Message713) Reset() {
-	*x = Message713{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[19]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message713) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message713) ProtoMessage() {}
-
-func (x *Message713) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[19]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message713.ProtoReflect.Descriptor instead.
-func (*Message713) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{19}
-}
-
-func (x *Message713) GetField852() *Message708 {
-	if x != nil {
-		return x.Field852
-	}
-	return nil
-}
-
-func (x *Message713) GetField853() []string {
-	if x != nil {
-		return x.Field853
-	}
-	return nil
-}
-
-type Message705 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field807 *string  `protobuf:"bytes,1,req,name=field807" json:"field807,omitempty"`
-	Field808 *string  `protobuf:"bytes,2,opt,name=field808" json:"field808,omitempty"`
-	Field809 *string  `protobuf:"bytes,3,opt,name=field809" json:"field809,omitempty"`
-	Field810 *bool    `protobuf:"varint,4,opt,name=field810" json:"field810,omitempty"`
-	Field811 *string  `protobuf:"bytes,5,opt,name=field811" json:"field811,omitempty"`
-	Field812 *string  `protobuf:"bytes,6,opt,name=field812" json:"field812,omitempty"`
-	Field813 []string `protobuf:"bytes,7,rep,name=field813" json:"field813,omitempty"`
-}
-
-func (x *Message705) Reset() {
-	*x = Message705{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[20]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message705) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message705) ProtoMessage() {}
-
-func (x *Message705) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[20]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message705.ProtoReflect.Descriptor instead.
-func (*Message705) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{20}
-}
-
-func (x *Message705) GetField807() string {
-	if x != nil && x.Field807 != nil {
-		return *x.Field807
-	}
-	return ""
-}
-
-func (x *Message705) GetField808() string {
-	if x != nil && x.Field808 != nil {
-		return *x.Field808
-	}
-	return ""
-}
-
-func (x *Message705) GetField809() string {
-	if x != nil && x.Field809 != nil {
-		return *x.Field809
-	}
-	return ""
-}
-
-func (x *Message705) GetField810() bool {
-	if x != nil && x.Field810 != nil {
-		return *x.Field810
-	}
-	return false
-}
-
-func (x *Message705) GetField811() string {
-	if x != nil && x.Field811 != nil {
-		return *x.Field811
-	}
-	return ""
-}
-
-func (x *Message705) GetField812() string {
-	if x != nil && x.Field812 != nil {
-		return *x.Field812
-	}
-	return ""
-}
-
-func (x *Message705) GetField813() []string {
-	if x != nil {
-		return x.Field813
-	}
-	return nil
-}
-
-type Message709 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field829 []string `protobuf:"bytes,1,rep,name=field829" json:"field829,omitempty"`
-	Field830 []string `protobuf:"bytes,2,rep,name=field830" json:"field830,omitempty"`
-	Field831 []string `protobuf:"bytes,3,rep,name=field831" json:"field831,omitempty"`
-	Field832 []string `protobuf:"bytes,4,rep,name=field832" json:"field832,omitempty"`
-	Field833 []string `protobuf:"bytes,5,rep,name=field833" json:"field833,omitempty"`
-}
-
-func (x *Message709) Reset() {
-	*x = Message709{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[21]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message709) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message709) ProtoMessage() {}
-
-func (x *Message709) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[21]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message709.ProtoReflect.Descriptor instead.
-func (*Message709) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{21}
-}
-
-func (x *Message709) GetField829() []string {
-	if x != nil {
-		return x.Field829
-	}
-	return nil
-}
-
-func (x *Message709) GetField830() []string {
-	if x != nil {
-		return x.Field830
-	}
-	return nil
-}
-
-func (x *Message709) GetField831() []string {
-	if x != nil {
-		return x.Field831
-	}
-	return nil
-}
-
-func (x *Message709) GetField832() []string {
-	if x != nil {
-		return x.Field832
-	}
-	return nil
-}
-
-func (x *Message709) GetField833() []string {
-	if x != nil {
-		return x.Field833
-	}
-	return nil
-}
-
-type Message702 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field793 *string `protobuf:"bytes,1,opt,name=field793" json:"field793,omitempty"`
-	Field794 *string `protobuf:"bytes,2,opt,name=field794" json:"field794,omitempty"`
-}
-
-func (x *Message702) Reset() {
-	*x = Message702{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[22]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message702) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message702) ProtoMessage() {}
-
-func (x *Message702) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[22]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message702.ProtoReflect.Descriptor instead.
-func (*Message702) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{22}
-}
-
-func (x *Message702) GetField793() string {
-	if x != nil && x.Field793 != nil {
-		return *x.Field793
-	}
-	return ""
-}
-
-func (x *Message702) GetField794() string {
-	if x != nil && x.Field794 != nil {
-		return *x.Field794
-	}
-	return ""
-}
-
-type Message714 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field854 *string `protobuf:"bytes,1,opt,name=field854" json:"field854,omitempty"`
-	Field855 *string `protobuf:"bytes,2,opt,name=field855" json:"field855,omitempty"`
-	Field856 *string `protobuf:"bytes,3,opt,name=field856" json:"field856,omitempty"`
-	Field857 *string `protobuf:"bytes,4,opt,name=field857" json:"field857,omitempty"`
-	Field858 *uint32 `protobuf:"varint,5,opt,name=field858" json:"field858,omitempty"`
-}
-
-func (x *Message714) Reset() {
-	*x = Message714{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[23]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message714) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message714) ProtoMessage() {}
-
-func (x *Message714) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[23]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message714.ProtoReflect.Descriptor instead.
-func (*Message714) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{23}
-}
-
-func (x *Message714) GetField854() string {
-	if x != nil && x.Field854 != nil {
-		return *x.Field854
-	}
-	return ""
-}
-
-func (x *Message714) GetField855() string {
-	if x != nil && x.Field855 != nil {
-		return *x.Field855
-	}
-	return ""
-}
-
-func (x *Message714) GetField856() string {
-	if x != nil && x.Field856 != nil {
-		return *x.Field856
-	}
-	return ""
-}
-
-func (x *Message714) GetField857() string {
-	if x != nil && x.Field857 != nil {
-		return *x.Field857
-	}
-	return ""
-}
-
-func (x *Message714) GetField858() uint32 {
-	if x != nil && x.Field858 != nil {
-		return *x.Field858
-	}
-	return 0
-}
-
-type Message710 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field834 []string `protobuf:"bytes,1,rep,name=field834" json:"field834,omitempty"`
-	Field835 *string  `protobuf:"bytes,2,opt,name=field835" json:"field835,omitempty"`
-	Field836 *string  `protobuf:"bytes,3,opt,name=field836" json:"field836,omitempty"`
-	Field837 []string `protobuf:"bytes,4,rep,name=field837" json:"field837,omitempty"`
-	Field838 []string `protobuf:"bytes,5,rep,name=field838" json:"field838,omitempty"`
-}
-
-func (x *Message710) Reset() {
-	*x = Message710{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[24]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message710) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message710) ProtoMessage() {}
-
-func (x *Message710) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[24]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message710.ProtoReflect.Descriptor instead.
-func (*Message710) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{24}
-}
-
-func (x *Message710) GetField834() []string {
-	if x != nil {
-		return x.Field834
-	}
-	return nil
-}
-
-func (x *Message710) GetField835() string {
-	if x != nil && x.Field835 != nil {
-		return *x.Field835
-	}
-	return ""
-}
-
-func (x *Message710) GetField836() string {
-	if x != nil && x.Field836 != nil {
-		return *x.Field836
-	}
-	return ""
-}
-
-func (x *Message710) GetField837() []string {
-	if x != nil {
-		return x.Field837
-	}
-	return nil
-}
-
-func (x *Message710) GetField838() []string {
-	if x != nil {
-		return x.Field838
-	}
-	return nil
-}
-
-type Message706 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field814 []string `protobuf:"bytes,1,rep,name=field814" json:"field814,omitempty"`
-	Field815 *string  `protobuf:"bytes,2,opt,name=field815" json:"field815,omitempty"`
-	Field816 []string `protobuf:"bytes,3,rep,name=field816" json:"field816,omitempty"`
-	Field817 []string `protobuf:"bytes,4,rep,name=field817" json:"field817,omitempty"`
-}
-
-func (x *Message706) Reset() {
-	*x = Message706{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[25]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message706) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message706) ProtoMessage() {}
-
-func (x *Message706) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[25]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message706.ProtoReflect.Descriptor instead.
-func (*Message706) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{25}
-}
-
-func (x *Message706) GetField814() []string {
-	if x != nil {
-		return x.Field814
-	}
-	return nil
-}
-
-func (x *Message706) GetField815() string {
-	if x != nil && x.Field815 != nil {
-		return *x.Field815
-	}
-	return ""
-}
-
-func (x *Message706) GetField816() []string {
-	if x != nil {
-		return x.Field816
-	}
-	return nil
-}
-
-func (x *Message706) GetField817() []string {
-	if x != nil {
-		return x.Field817
-	}
-	return nil
-}
-
-type Message707 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field818 *string  `protobuf:"bytes,1,req,name=field818" json:"field818,omitempty"`
-	Field819 *string  `protobuf:"bytes,2,req,name=field819" json:"field819,omitempty"`
-	Field820 *string  `protobuf:"bytes,3,req,name=field820" json:"field820,omitempty"`
-	Field821 *bool    `protobuf:"varint,4,opt,name=field821" json:"field821,omitempty"`
-	Field822 []string `protobuf:"bytes,5,rep,name=field822" json:"field822,omitempty"`
-}
-
-func (x *Message707) Reset() {
-	*x = Message707{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[26]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message707) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message707) ProtoMessage() {}
-
-func (x *Message707) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[26]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message707.ProtoReflect.Descriptor instead.
-func (*Message707) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{26}
-}
-
-func (x *Message707) GetField818() string {
-	if x != nil && x.Field818 != nil {
-		return *x.Field818
-	}
-	return ""
-}
-
-func (x *Message707) GetField819() string {
-	if x != nil && x.Field819 != nil {
-		return *x.Field819
-	}
-	return ""
-}
-
-func (x *Message707) GetField820() string {
-	if x != nil && x.Field820 != nil {
-		return *x.Field820
-	}
-	return ""
-}
-
-func (x *Message707) GetField821() bool {
-	if x != nil && x.Field821 != nil {
-		return *x.Field821
-	}
-	return false
-}
-
-func (x *Message707) GetField822() []string {
-	if x != nil {
-		return x.Field822
-	}
-	return nil
-}
-
-type Message711 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field839 *UnusedEmptyMessage `protobuf:"bytes,1,opt,name=field839" json:"field839,omitempty"`
-	Field840 []string            `protobuf:"bytes,4,rep,name=field840" json:"field840,omitempty"`
-	Field841 []string            `protobuf:"bytes,2,rep,name=field841" json:"field841,omitempty"`
-	Field842 []string            `protobuf:"bytes,3,rep,name=field842" json:"field842,omitempty"`
-}
-
-func (x *Message711) Reset() {
-	*x = Message711{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[27]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message711) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message711) ProtoMessage() {}
-
-func (x *Message711) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[27]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message711.ProtoReflect.Descriptor instead.
-func (*Message711) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{27}
-}
-
-func (x *Message711) GetField839() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field839
-	}
-	return nil
-}
-
-func (x *Message711) GetField840() []string {
-	if x != nil {
-		return x.Field840
-	}
-	return nil
-}
-
-func (x *Message711) GetField841() []string {
-	if x != nil {
-		return x.Field841
-	}
-	return nil
-}
-
-func (x *Message711) GetField842() []string {
-	if x != nil {
-		return x.Field842
-	}
-	return nil
-}
-
-type Message712 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field843 []string `protobuf:"bytes,1,rep,name=field843" json:"field843,omitempty"`
-	Field844 *string  `protobuf:"bytes,2,req,name=field844" json:"field844,omitempty"`
-	Field845 *string  `protobuf:"bytes,3,opt,name=field845" json:"field845,omitempty"`
-	Field846 []string `protobuf:"bytes,4,rep,name=field846" json:"field846,omitempty"`
-	Field847 []string `protobuf:"bytes,5,rep,name=field847" json:"field847,omitempty"`
-	Field848 *string  `protobuf:"bytes,6,opt,name=field848" json:"field848,omitempty"`
-	Field849 []string `protobuf:"bytes,7,rep,name=field849" json:"field849,omitempty"`
-	Field850 *string  `protobuf:"bytes,8,opt,name=field850" json:"field850,omitempty"`
-	Field851 *string  `protobuf:"bytes,9,opt,name=field851" json:"field851,omitempty"`
-}
-
-func (x *Message712) Reset() {
-	*x = Message712{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[28]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message712) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message712) ProtoMessage() {}
-
-func (x *Message712) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[28]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message712.ProtoReflect.Descriptor instead.
-func (*Message712) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{28}
-}
-
-func (x *Message712) GetField843() []string {
-	if x != nil {
-		return x.Field843
-	}
-	return nil
-}
-
-func (x *Message712) GetField844() string {
-	if x != nil && x.Field844 != nil {
-		return *x.Field844
-	}
-	return ""
-}
-
-func (x *Message712) GetField845() string {
-	if x != nil && x.Field845 != nil {
-		return *x.Field845
-	}
-	return ""
-}
-
-func (x *Message712) GetField846() []string {
-	if x != nil {
-		return x.Field846
-	}
-	return nil
-}
-
-func (x *Message712) GetField847() []string {
-	if x != nil {
-		return x.Field847
-	}
-	return nil
-}
-
-func (x *Message712) GetField848() string {
-	if x != nil && x.Field848 != nil {
-		return *x.Field848
-	}
-	return ""
-}
-
-func (x *Message712) GetField849() []string {
-	if x != nil {
-		return x.Field849
-	}
-	return nil
-}
-
-func (x *Message712) GetField850() string {
-	if x != nil && x.Field850 != nil {
-		return *x.Field850
-	}
-	return ""
-}
-
-func (x *Message712) GetField851() string {
-	if x != nil && x.Field851 != nil {
-		return *x.Field851
-	}
-	return ""
-}
-
-type Message8939 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field9010   *string                    `protobuf:"bytes,1,opt,name=field9010" json:"field9010,omitempty"`
-	Field9011   *string                    `protobuf:"bytes,2,opt,name=field9011" json:"field9011,omitempty"`
-	Field9012   *string                    `protobuf:"bytes,3,opt,name=field9012" json:"field9012,omitempty"`
-	Field9013   []string                   `protobuf:"bytes,4,rep,name=field9013" json:"field9013,omitempty"`
-	Field9014   *string                    `protobuf:"bytes,5,opt,name=field9014" json:"field9014,omitempty"`
-	Message8940 []*Message8939_Message8940 `protobuf:"group,11,rep,name=Message8940,json=message8940" json:"message8940,omitempty"`
-	Field9016   *int64                     `protobuf:"varint,21,opt,name=field9016" json:"field9016,omitempty"`
-	Field9017   *int64                     `protobuf:"varint,22,opt,name=field9017" json:"field9017,omitempty"`
-	Field9018   *int64                     `protobuf:"varint,23,opt,name=field9018" json:"field9018,omitempty"`
-	Message8941 *Message8939_Message8941   `protobuf:"group,31,opt,name=Message8941,json=message8941" json:"message8941,omitempty"`
-	Field9020   *Message8942               `protobuf:"bytes,38,opt,name=field9020" json:"field9020,omitempty"`
-	Field9021   []*UnusedEmptyMessage      `protobuf:"bytes,39,rep,name=field9021" json:"field9021,omitempty"`
-	Field9022   []string                   `protobuf:"bytes,41,rep,name=field9022" json:"field9022,omitempty"`
-	Field9023   *string                    `protobuf:"bytes,42,opt,name=field9023" json:"field9023,omitempty"`
-	Field9024   *string                    `protobuf:"bytes,43,opt,name=field9024" json:"field9024,omitempty"`
-	Field9025   *string                    `protobuf:"bytes,44,opt,name=field9025" json:"field9025,omitempty"`
-	Field9026   *string                    `protobuf:"bytes,45,opt,name=field9026" json:"field9026,omitempty"`
-	Field9027   *string                    `protobuf:"bytes,46,opt,name=field9027" json:"field9027,omitempty"`
-	Field9028   *string                    `protobuf:"bytes,47,opt,name=field9028" json:"field9028,omitempty"`
-	Field9029   *UnusedEnum                `protobuf:"varint,48,opt,name=field9029,enum=benchmarks.google_message3.UnusedEnum" json:"field9029,omitempty"`
-	Field9030   *UnusedEnum                `protobuf:"varint,49,opt,name=field9030,enum=benchmarks.google_message3.UnusedEnum" json:"field9030,omitempty"`
-	Message8943 *Message8939_Message8943   `protobuf:"group,51,opt,name=Message8943,json=message8943" json:"message8943,omitempty"`
-}
-
-func (x *Message8939) Reset() {
-	*x = Message8939{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[29]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8939) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8939) ProtoMessage() {}
-
-func (x *Message8939) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[29]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8939.ProtoReflect.Descriptor instead.
-func (*Message8939) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{29}
-}
-
-func (x *Message8939) GetField9010() string {
-	if x != nil && x.Field9010 != nil {
-		return *x.Field9010
-	}
-	return ""
-}
-
-func (x *Message8939) GetField9011() string {
-	if x != nil && x.Field9011 != nil {
-		return *x.Field9011
-	}
-	return ""
-}
-
-func (x *Message8939) GetField9012() string {
-	if x != nil && x.Field9012 != nil {
-		return *x.Field9012
-	}
-	return ""
-}
-
-func (x *Message8939) GetField9013() []string {
-	if x != nil {
-		return x.Field9013
-	}
-	return nil
-}
-
-func (x *Message8939) GetField9014() string {
-	if x != nil && x.Field9014 != nil {
-		return *x.Field9014
-	}
-	return ""
-}
-
-func (x *Message8939) GetMessage8940() []*Message8939_Message8940 {
-	if x != nil {
-		return x.Message8940
-	}
-	return nil
-}
-
-func (x *Message8939) GetField9016() int64 {
-	if x != nil && x.Field9016 != nil {
-		return *x.Field9016
-	}
-	return 0
-}
-
-func (x *Message8939) GetField9017() int64 {
-	if x != nil && x.Field9017 != nil {
-		return *x.Field9017
-	}
-	return 0
-}
-
-func (x *Message8939) GetField9018() int64 {
-	if x != nil && x.Field9018 != nil {
-		return *x.Field9018
-	}
-	return 0
-}
-
-func (x *Message8939) GetMessage8941() *Message8939_Message8941 {
-	if x != nil {
-		return x.Message8941
-	}
-	return nil
-}
-
-func (x *Message8939) GetField9020() *Message8942 {
-	if x != nil {
-		return x.Field9020
-	}
-	return nil
-}
-
-func (x *Message8939) GetField9021() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field9021
-	}
-	return nil
-}
-
-func (x *Message8939) GetField9022() []string {
-	if x != nil {
-		return x.Field9022
-	}
-	return nil
-}
-
-func (x *Message8939) GetField9023() string {
-	if x != nil && x.Field9023 != nil {
-		return *x.Field9023
-	}
-	return ""
-}
-
-func (x *Message8939) GetField9024() string {
-	if x != nil && x.Field9024 != nil {
-		return *x.Field9024
-	}
-	return ""
-}
-
-func (x *Message8939) GetField9025() string {
-	if x != nil && x.Field9025 != nil {
-		return *x.Field9025
-	}
-	return ""
-}
-
-func (x *Message8939) GetField9026() string {
-	if x != nil && x.Field9026 != nil {
-		return *x.Field9026
-	}
-	return ""
-}
-
-func (x *Message8939) GetField9027() string {
-	if x != nil && x.Field9027 != nil {
-		return *x.Field9027
-	}
-	return ""
-}
-
-func (x *Message8939) GetField9028() string {
-	if x != nil && x.Field9028 != nil {
-		return *x.Field9028
-	}
-	return ""
-}
-
-func (x *Message8939) GetField9029() UnusedEnum {
-	if x != nil && x.Field9029 != nil {
-		return *x.Field9029
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message8939) GetField9030() UnusedEnum {
-	if x != nil && x.Field9030 != nil {
-		return *x.Field9030
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message8939) GetMessage8943() *Message8939_Message8943 {
-	if x != nil {
-		return x.Message8943
-	}
-	return nil
-}
-
-type Message9181 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field9204 *string `protobuf:"bytes,1,opt,name=field9204" json:"field9204,omitempty"`
-}
-
-func (x *Message9181) Reset() {
-	*x = Message9181{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[30]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message9181) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message9181) ProtoMessage() {}
-
-func (x *Message9181) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[30]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message9181.ProtoReflect.Descriptor instead.
-func (*Message9181) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{30}
-}
-
-func (x *Message9181) GetField9204() string {
-	if x != nil && x.Field9204 != nil {
-		return *x.Field9204
-	}
-	return ""
-}
-
-type Message9164 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field9168 *int32 `protobuf:"varint,1,opt,name=field9168" json:"field9168,omitempty"`
-	Field9169 *int32 `protobuf:"varint,2,opt,name=field9169" json:"field9169,omitempty"`
-	Field9170 *int32 `protobuf:"varint,3,opt,name=field9170" json:"field9170,omitempty"`
-}
-
-func (x *Message9164) Reset() {
-	*x = Message9164{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[31]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message9164) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message9164) ProtoMessage() {}
-
-func (x *Message9164) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[31]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message9164.ProtoReflect.Descriptor instead.
-func (*Message9164) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{31}
-}
-
-func (x *Message9164) GetField9168() int32 {
-	if x != nil && x.Field9168 != nil {
-		return *x.Field9168
-	}
-	return 0
-}
-
-func (x *Message9164) GetField9169() int32 {
-	if x != nil && x.Field9169 != nil {
-		return *x.Field9169
-	}
-	return 0
-}
-
-func (x *Message9164) GetField9170() int32 {
-	if x != nil && x.Field9170 != nil {
-		return *x.Field9170
-	}
-	return 0
-}
-
-type Message9165 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field9171 *float32 `protobuf:"fixed32,1,opt,name=field9171" json:"field9171,omitempty"`
-	Field9172 *float32 `protobuf:"fixed32,2,opt,name=field9172" json:"field9172,omitempty"`
-}
-
-func (x *Message9165) Reset() {
-	*x = Message9165{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[32]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message9165) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message9165) ProtoMessage() {}
-
-func (x *Message9165) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[32]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message9165.ProtoReflect.Descriptor instead.
-func (*Message9165) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{32}
-}
-
-func (x *Message9165) GetField9171() float32 {
-	if x != nil && x.Field9171 != nil {
-		return *x.Field9171
-	}
-	return 0
-}
-
-func (x *Message9165) GetField9172() float32 {
-	if x != nil && x.Field9172 != nil {
-		return *x.Field9172
-	}
-	return 0
-}
-
-type Message9166 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field9173 *float32 `protobuf:"fixed32,1,opt,name=field9173" json:"field9173,omitempty"`
-	Field9174 *int32   `protobuf:"varint,2,opt,name=field9174" json:"field9174,omitempty"`
-}
-
-func (x *Message9166) Reset() {
-	*x = Message9166{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[33]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message9166) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message9166) ProtoMessage() {}
-
-func (x *Message9166) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[33]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message9166.ProtoReflect.Descriptor instead.
-func (*Message9166) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{33}
-}
-
-func (x *Message9166) GetField9173() float32 {
-	if x != nil && x.Field9173 != nil {
-		return *x.Field9173
-	}
-	return 0
-}
-
-func (x *Message9166) GetField9174() int32 {
-	if x != nil && x.Field9174 != nil {
-		return *x.Field9174
-	}
-	return 0
-}
-
-type Message9151 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field9152 *float64 `protobuf:"fixed64,1,opt,name=field9152" json:"field9152,omitempty"`
-	Field9153 *float64 `protobuf:"fixed64,2,opt,name=field9153" json:"field9153,omitempty"`
-	Field9154 *float32 `protobuf:"fixed32,3,opt,name=field9154" json:"field9154,omitempty"`
-	Field9155 *float32 `protobuf:"fixed32,4,opt,name=field9155" json:"field9155,omitempty"`
-	Field9156 *float32 `protobuf:"fixed32,5,opt,name=field9156" json:"field9156,omitempty"`
-	Field9157 *float32 `protobuf:"fixed32,6,opt,name=field9157" json:"field9157,omitempty"`
-	Field9158 *float32 `protobuf:"fixed32,7,opt,name=field9158" json:"field9158,omitempty"`
-	Field9159 *float32 `protobuf:"fixed32,8,opt,name=field9159" json:"field9159,omitempty"`
-}
-
-func (x *Message9151) Reset() {
-	*x = Message9151{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[34]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message9151) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message9151) ProtoMessage() {}
-
-func (x *Message9151) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[34]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message9151.ProtoReflect.Descriptor instead.
-func (*Message9151) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{34}
-}
-
-func (x *Message9151) GetField9152() float64 {
-	if x != nil && x.Field9152 != nil {
-		return *x.Field9152
-	}
-	return 0
-}
-
-func (x *Message9151) GetField9153() float64 {
-	if x != nil && x.Field9153 != nil {
-		return *x.Field9153
-	}
-	return 0
-}
-
-func (x *Message9151) GetField9154() float32 {
-	if x != nil && x.Field9154 != nil {
-		return *x.Field9154
-	}
-	return 0
-}
-
-func (x *Message9151) GetField9155() float32 {
-	if x != nil && x.Field9155 != nil {
-		return *x.Field9155
-	}
-	return 0
-}
-
-func (x *Message9151) GetField9156() float32 {
-	if x != nil && x.Field9156 != nil {
-		return *x.Field9156
-	}
-	return 0
-}
-
-func (x *Message9151) GetField9157() float32 {
-	if x != nil && x.Field9157 != nil {
-		return *x.Field9157
-	}
-	return 0
-}
-
-func (x *Message9151) GetField9158() float32 {
-	if x != nil && x.Field9158 != nil {
-		return *x.Field9158
-	}
-	return 0
-}
-
-func (x *Message9151) GetField9159() float32 {
-	if x != nil && x.Field9159 != nil {
-		return *x.Field9159
-	}
-	return 0
-}
-
-type Message8888 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8908 *int32    `protobuf:"varint,1,opt,name=field8908" json:"field8908,omitempty"`
-	Field8909 *Enum8900 `protobuf:"varint,4,opt,name=field8909,enum=benchmarks.google_message3.Enum8900" json:"field8909,omitempty"`
-	Field8910 []int32   `protobuf:"varint,2,rep,packed,name=field8910" json:"field8910,omitempty"`
-	Field8911 []byte    `protobuf:"bytes,3,opt,name=field8911" json:"field8911,omitempty"`
-}
-
-func (x *Message8888) Reset() {
-	*x = Message8888{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[35]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8888) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8888) ProtoMessage() {}
-
-func (x *Message8888) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[35]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8888.ProtoReflect.Descriptor instead.
-func (*Message8888) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{35}
-}
-
-func (x *Message8888) GetField8908() int32 {
-	if x != nil && x.Field8908 != nil {
-		return *x.Field8908
-	}
-	return 0
-}
-
-func (x *Message8888) GetField8909() Enum8900 {
-	if x != nil && x.Field8909 != nil {
-		return *x.Field8909
-	}
-	return Enum8900_ENUM_VALUE8901
-}
-
-func (x *Message8888) GetField8910() []int32 {
-	if x != nil {
-		return x.Field8910
-	}
-	return nil
-}
-
-func (x *Message8888) GetField8911() []byte {
-	if x != nil {
-		return x.Field8911
-	}
-	return nil
-}
-
-type Message9627 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field9668 *int32   `protobuf:"varint,1,req,name=field9668" json:"field9668,omitempty"`
-	Field9669 *int32   `protobuf:"varint,2,req,name=field9669" json:"field9669,omitempty"`
-	Field9670 *int32   `protobuf:"varint,3,req,name=field9670" json:"field9670,omitempty"`
-	Field9671 *int32   `protobuf:"varint,4,req,name=field9671" json:"field9671,omitempty"`
-	Field9672 *float32 `protobuf:"fixed32,5,opt,name=field9672" json:"field9672,omitempty"`
-}
-
-func (x *Message9627) Reset() {
-	*x = Message9627{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[36]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message9627) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message9627) ProtoMessage() {}
-
-func (x *Message9627) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[36]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message9627.ProtoReflect.Descriptor instead.
-func (*Message9627) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{36}
-}
-
-func (x *Message9627) GetField9668() int32 {
-	if x != nil && x.Field9668 != nil {
-		return *x.Field9668
-	}
-	return 0
-}
-
-func (x *Message9627) GetField9669() int32 {
-	if x != nil && x.Field9669 != nil {
-		return *x.Field9669
-	}
-	return 0
-}
-
-func (x *Message9627) GetField9670() int32 {
-	if x != nil && x.Field9670 != nil {
-		return *x.Field9670
-	}
-	return 0
-}
-
-func (x *Message9627) GetField9671() int32 {
-	if x != nil && x.Field9671 != nil {
-		return *x.Field9671
-	}
-	return 0
-}
-
-func (x *Message9627) GetField9672() float32 {
-	if x != nil && x.Field9672 != nil {
-		return *x.Field9672
-	}
-	return 0
-}
-
-type Message11020 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message11020) Reset() {
-	*x = Message11020{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[37]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message11020) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message11020) ProtoMessage() {}
-
-func (x *Message11020) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[37]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message11020.ProtoReflect.Descriptor instead.
-func (*Message11020) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{37}
-}
-
-type Message11013 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field11757 []byte              `protobuf:"bytes,19,opt,name=field11757" json:"field11757,omitempty"`
-	Field11758 []byte              `protobuf:"bytes,1,opt,name=field11758" json:"field11758,omitempty"`
-	Field11759 []byte              `protobuf:"bytes,2,opt,name=field11759" json:"field11759,omitempty"`
-	Field11760 []byte              `protobuf:"bytes,3,opt,name=field11760" json:"field11760,omitempty"`
-	Field11761 []byte              `protobuf:"bytes,4,opt,name=field11761" json:"field11761,omitempty"`
-	Field11762 []byte              `protobuf:"bytes,5,opt,name=field11762" json:"field11762,omitempty"`
-	Field11763 []byte              `protobuf:"bytes,6,opt,name=field11763" json:"field11763,omitempty"`
-	Field11764 []byte              `protobuf:"bytes,7,opt,name=field11764" json:"field11764,omitempty"`
-	Field11765 []byte              `protobuf:"bytes,8,opt,name=field11765" json:"field11765,omitempty"`
-	Field11766 []byte              `protobuf:"bytes,9,opt,name=field11766" json:"field11766,omitempty"`
-	Field11767 []byte              `protobuf:"bytes,10,opt,name=field11767" json:"field11767,omitempty"`
-	Field11768 []byte              `protobuf:"bytes,11,opt,name=field11768" json:"field11768,omitempty"`
-	Field11769 []byte              `protobuf:"bytes,12,opt,name=field11769" json:"field11769,omitempty"`
-	Field11770 []byte              `protobuf:"bytes,13,opt,name=field11770" json:"field11770,omitempty"`
-	Field11771 []byte              `protobuf:"bytes,14,opt,name=field11771" json:"field11771,omitempty"`
-	Field11772 []byte              `protobuf:"bytes,15,opt,name=field11772" json:"field11772,omitempty"`
-	Field11773 []byte              `protobuf:"bytes,16,opt,name=field11773" json:"field11773,omitempty"`
-	Field11774 []byte              `protobuf:"bytes,17,opt,name=field11774" json:"field11774,omitempty"`
-	Field11775 []byte              `protobuf:"bytes,18,opt,name=field11775" json:"field11775,omitempty"`
-	Field11776 []byte              `protobuf:"bytes,20,opt,name=field11776" json:"field11776,omitempty"`
-	Field11777 []byte              `protobuf:"bytes,21,opt,name=field11777" json:"field11777,omitempty"`
-	Field11778 *UnusedEmptyMessage `protobuf:"bytes,23,opt,name=field11778" json:"field11778,omitempty"`
-	Field11779 []*Message11011     `protobuf:"bytes,22,rep,name=field11779" json:"field11779,omitempty"`
-}
-
-func (x *Message11013) Reset() {
-	*x = Message11013{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[38]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message11013) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message11013) ProtoMessage() {}
-
-func (x *Message11013) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[38]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message11013.ProtoReflect.Descriptor instead.
-func (*Message11013) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{38}
-}
-
-func (x *Message11013) GetField11757() []byte {
-	if x != nil {
-		return x.Field11757
-	}
-	return nil
-}
-
-func (x *Message11013) GetField11758() []byte {
-	if x != nil {
-		return x.Field11758
-	}
-	return nil
-}
-
-func (x *Message11013) GetField11759() []byte {
-	if x != nil {
-		return x.Field11759
-	}
-	return nil
-}
-
-func (x *Message11013) GetField11760() []byte {
-	if x != nil {
-		return x.Field11760
-	}
-	return nil
-}
-
-func (x *Message11013) GetField11761() []byte {
-	if x != nil {
-		return x.Field11761
-	}
-	return nil
-}
-
-func (x *Message11013) GetField11762() []byte {
-	if x != nil {
-		return x.Field11762
-	}
-	return nil
-}
-
-func (x *Message11013) GetField11763() []byte {
-	if x != nil {
-		return x.Field11763
-	}
-	return nil
-}
-
-func (x *Message11013) GetField11764() []byte {
-	if x != nil {
-		return x.Field11764
-	}
-	return nil
-}
-
-func (x *Message11013) GetField11765() []byte {
-	if x != nil {
-		return x.Field11765
-	}
-	return nil
-}
-
-func (x *Message11013) GetField11766() []byte {
-	if x != nil {
-		return x.Field11766
-	}
-	return nil
-}
-
-func (x *Message11013) GetField11767() []byte {
-	if x != nil {
-		return x.Field11767
-	}
-	return nil
-}
-
-func (x *Message11013) GetField11768() []byte {
-	if x != nil {
-		return x.Field11768
-	}
-	return nil
-}
-
-func (x *Message11013) GetField11769() []byte {
-	if x != nil {
-		return x.Field11769
-	}
-	return nil
-}
-
-func (x *Message11013) GetField11770() []byte {
-	if x != nil {
-		return x.Field11770
-	}
-	return nil
-}
-
-func (x *Message11013) GetField11771() []byte {
-	if x != nil {
-		return x.Field11771
-	}
-	return nil
-}
-
-func (x *Message11013) GetField11772() []byte {
-	if x != nil {
-		return x.Field11772
-	}
-	return nil
-}
-
-func (x *Message11013) GetField11773() []byte {
-	if x != nil {
-		return x.Field11773
-	}
-	return nil
-}
-
-func (x *Message11013) GetField11774() []byte {
-	if x != nil {
-		return x.Field11774
-	}
-	return nil
-}
-
-func (x *Message11013) GetField11775() []byte {
-	if x != nil {
-		return x.Field11775
-	}
-	return nil
-}
-
-func (x *Message11013) GetField11776() []byte {
-	if x != nil {
-		return x.Field11776
-	}
-	return nil
-}
-
-func (x *Message11013) GetField11777() []byte {
-	if x != nil {
-		return x.Field11777
-	}
-	return nil
-}
-
-func (x *Message11013) GetField11778() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field11778
-	}
-	return nil
-}
-
-func (x *Message11013) GetField11779() []*Message11011 {
-	if x != nil {
-		return x.Field11779
-	}
-	return nil
-}
-
-type Message8939_Message8940 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message8939_Message8940) Reset() {
-	*x = Message8939_Message8940{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[39]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8939_Message8940) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8939_Message8940) ProtoMessage() {}
-
-func (x *Message8939_Message8940) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[39]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8939_Message8940.ProtoReflect.Descriptor instead.
-func (*Message8939_Message8940) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{29, 0}
-}
-
-type Message8939_Message8941 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field9033 *string `protobuf:"bytes,32,opt,name=field9033" json:"field9033,omitempty"`
-	Field9034 *string `protobuf:"bytes,33,opt,name=field9034" json:"field9034,omitempty"`
-	Field9035 *string `protobuf:"bytes,34,opt,name=field9035" json:"field9035,omitempty"`
-	Field9036 *string `protobuf:"bytes,35,opt,name=field9036" json:"field9036,omitempty"`
-	Field9037 *string `protobuf:"bytes,36,opt,name=field9037" json:"field9037,omitempty"`
-	Field9038 *string `protobuf:"bytes,37,opt,name=field9038" json:"field9038,omitempty"`
-}
-
-func (x *Message8939_Message8941) Reset() {
-	*x = Message8939_Message8941{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[40]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8939_Message8941) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8939_Message8941) ProtoMessage() {}
-
-func (x *Message8939_Message8941) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[40]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8939_Message8941.ProtoReflect.Descriptor instead.
-func (*Message8939_Message8941) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{29, 1}
-}
-
-func (x *Message8939_Message8941) GetField9033() string {
-	if x != nil && x.Field9033 != nil {
-		return *x.Field9033
-	}
-	return ""
-}
-
-func (x *Message8939_Message8941) GetField9034() string {
-	if x != nil && x.Field9034 != nil {
-		return *x.Field9034
-	}
-	return ""
-}
-
-func (x *Message8939_Message8941) GetField9035() string {
-	if x != nil && x.Field9035 != nil {
-		return *x.Field9035
-	}
-	return ""
-}
-
-func (x *Message8939_Message8941) GetField9036() string {
-	if x != nil && x.Field9036 != nil {
-		return *x.Field9036
-	}
-	return ""
-}
-
-func (x *Message8939_Message8941) GetField9037() string {
-	if x != nil && x.Field9037 != nil {
-		return *x.Field9037
-	}
-	return ""
-}
-
-func (x *Message8939_Message8941) GetField9038() string {
-	if x != nil && x.Field9038 != nil {
-		return *x.Field9038
-	}
-	return ""
-}
-
-type Message8939_Message8943 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field9039 *string `protobuf:"bytes,1,opt,name=field9039" json:"field9039,omitempty"`
-	Field9040 *string `protobuf:"bytes,2,opt,name=field9040" json:"field9040,omitempty"`
-	Field9041 *string `protobuf:"bytes,3,opt,name=field9041" json:"field9041,omitempty"`
-	Field9042 *string `protobuf:"bytes,4,opt,name=field9042" json:"field9042,omitempty"`
-	Field9043 *string `protobuf:"bytes,5,opt,name=field9043" json:"field9043,omitempty"`
-	Field9044 *string `protobuf:"bytes,6,opt,name=field9044" json:"field9044,omitempty"`
-}
-
-func (x *Message8939_Message8943) Reset() {
-	*x = Message8939_Message8943{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[41]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8939_Message8943) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8939_Message8943) ProtoMessage() {}
-
-func (x *Message8939_Message8943) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[41]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8939_Message8943.ProtoReflect.Descriptor instead.
-func (*Message8939_Message8943) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP(), []int{29, 2}
-}
-
-func (x *Message8939_Message8943) GetField9039() string {
-	if x != nil && x.Field9039 != nil {
-		return *x.Field9039
-	}
-	return ""
-}
-
-func (x *Message8939_Message8943) GetField9040() string {
-	if x != nil && x.Field9040 != nil {
-		return *x.Field9040
-	}
-	return ""
-}
-
-func (x *Message8939_Message8943) GetField9041() string {
-	if x != nil && x.Field9041 != nil {
-		return *x.Field9041
-	}
-	return ""
-}
-
-func (x *Message8939_Message8943) GetField9042() string {
-	if x != nil && x.Field9042 != nil {
-		return *x.Field9042
-	}
-	return ""
-}
-
-func (x *Message8939_Message8943) GetField9043() string {
-	if x != nil && x.Field9043 != nil {
-		return *x.Field9043
-	}
-	return ""
-}
-
-func (x *Message8939_Message8943) GetField9044() string {
-	if x != nil && x.Field9044 != nil {
-		return *x.Field9044
-	}
-	return ""
-}
-
-var File_datasets_google_message3_benchmark_message3_6_proto protoreflect.FileDescriptor
-
-var file_datasets_google_message3_benchmark_message3_6_proto_rawDesc = []byte{
-	0x0a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x36, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x37,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73,
-	0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x5f, 0x38, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x0e, 0x0a, 0x0c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x35, 0x37, 0x36, 0x22, 0x4e, 0x0a, 0x0c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x31, 0x35, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x31, 0x39, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x31, 0x39, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x31, 0x39, 0x33, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x31, 0x39, 0x33, 0x22, 0xbe, 0x10, 0x0a, 0x0b,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x39, 0x34, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x34, 0x35, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x34, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x30, 0x34, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x39, 0x30, 0x34, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x30, 0x34, 0x37, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x39, 0x30, 0x34, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30,
-	0x34, 0x38, 0x18, 0x34, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39,
-	0x30, 0x34, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x34, 0x39,
-	0x18, 0x35, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x34,
-	0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x35, 0x30, 0x18, 0x36,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x35, 0x30, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x35, 0x31, 0x18, 0x37, 0x20, 0x01,
-	0x28, 0x02, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x35, 0x31, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x35, 0x32, 0x18, 0x38, 0x20, 0x01, 0x28, 0x02,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x35, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x35, 0x33, 0x18, 0x39, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x35, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x30, 0x35, 0x34, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x39, 0x30, 0x35, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x30, 0x35, 0x35, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x39, 0x30, 0x35, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30,
-	0x35, 0x36, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39,
-	0x30, 0x35, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x35, 0x37,
-	0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x35,
-	0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x35, 0x38, 0x18, 0x07,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x35, 0x38, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x35, 0x39, 0x18, 0x08, 0x20, 0x01,
-	0x28, 0x02, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x35, 0x39, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x36, 0x30, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x36, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x36, 0x31, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x36, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x30, 0x36, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x39, 0x30, 0x36, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x30, 0x36, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x39, 0x30, 0x36, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30,
-	0x36, 0x34, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39,
-	0x30, 0x36, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x36, 0x35,
-	0x18, 0x46, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x36,
-	0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x36, 0x36, 0x18, 0x47,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x36, 0x36, 0x12,
-	0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x36, 0x37, 0x18, 0x0f, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x45, 0x6e, 0x75, 0x6d, 0x38, 0x39, 0x34, 0x35, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39,
-	0x30, 0x36, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x36, 0x38,
-	0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x36,
-	0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x36, 0x39, 0x18, 0x11,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x36, 0x39, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x37, 0x30, 0x18, 0x12, 0x20, 0x01,
-	0x28, 0x02, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x37, 0x30, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x37, 0x31, 0x18, 0x13, 0x20, 0x01, 0x28, 0x02,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x37, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x37, 0x32, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x37, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x30, 0x37, 0x33, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x39, 0x30, 0x37, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x30, 0x37, 0x34, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x39, 0x30, 0x37, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30,
-	0x37, 0x35, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39,
-	0x30, 0x37, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x37, 0x36,
-	0x18, 0x48, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x37,
-	0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x37, 0x37, 0x18, 0x49,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x37, 0x37, 0x12,
-	0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x37, 0x38, 0x18, 0x3e, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x45, 0x6e, 0x75, 0x6d, 0x38, 0x39, 0x35, 0x31, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39,
-	0x30, 0x37, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x37, 0x39,
-	0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x37,
-	0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x38, 0x30, 0x18, 0x15,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x38, 0x30, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x38, 0x31, 0x18, 0x16, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x38, 0x31, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x38, 0x32, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x01,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x38, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x38, 0x33, 0x18, 0x20, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x38, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x30, 0x38, 0x34, 0x18, 0x21, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x39, 0x30, 0x38, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x30, 0x38, 0x35, 0x18, 0x24, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x39, 0x30, 0x38, 0x35, 0x12, 0x44, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30,
-	0x38, 0x36, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x38, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x38, 0x37, 0x18, 0x26, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x38, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x30, 0x38, 0x38, 0x18, 0x27, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x39, 0x30, 0x38, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x30, 0x38, 0x39, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x39, 0x30, 0x38, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30,
-	0x39, 0x30, 0x18, 0x40, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39,
-	0x30, 0x39, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x39, 0x31,
-	0x18, 0x41, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x39,
-	0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x39, 0x32, 0x18, 0x22,
-	0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x39, 0x32, 0x12,
-	0x44, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x39, 0x33, 0x18, 0x23, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x39, 0x30, 0x39, 0x33, 0x12, 0x44, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30,
-	0x39, 0x34, 0x18, 0x42, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x39, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x39, 0x35, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x39, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x30, 0x39, 0x36, 0x18, 0x29, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x39, 0x30, 0x39, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x30, 0x39, 0x37, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x39, 0x30, 0x39, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30,
-	0x39, 0x38, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39,
-	0x30, 0x39, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x39, 0x39,
-	0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x39,
-	0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x30, 0x30, 0x18, 0x2d,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x30, 0x30, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x30, 0x31, 0x18, 0x2e, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x30, 0x31, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x30, 0x32, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x30, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x30, 0x33, 0x18, 0x30, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x30, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x31, 0x30, 0x34, 0x18, 0x31, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x39, 0x31, 0x30, 0x34, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x31, 0x30, 0x35, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38,
-	0x39, 0x33, 0x39, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x30, 0x35, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x30, 0x36, 0x18, 0x65, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x30, 0x36, 0x22, 0xe9, 0x08, 0x0a,
-	0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x39, 0x31, 0x38, 0x32, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x30, 0x35, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x30, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x39, 0x32, 0x30, 0x36, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x30, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x39, 0x32, 0x30, 0x37, 0x18, 0x10, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x32, 0x30, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39,
-	0x32, 0x30, 0x38, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x32, 0x30, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x30,
-	0x39, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32,
-	0x30, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x31, 0x30, 0x18,
-	0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x31, 0x30,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x31, 0x31, 0x18, 0x08, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x31, 0x31, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x31, 0x32, 0x18, 0x1a, 0x20, 0x01, 0x28,
-	0x02, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x31, 0x32, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x31, 0x33, 0x18, 0x16, 0x20, 0x01, 0x28, 0x02, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x31, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x39, 0x32, 0x31, 0x34, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x31, 0x34, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x39, 0x32, 0x31, 0x35, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45,
-	0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x32, 0x31, 0x35, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39,
-	0x32, 0x31, 0x36, 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70,
-	0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x32, 0x31, 0x36, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x31,
-	0x37, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x39, 0x31, 0x38, 0x31,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x31, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x31, 0x38, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x31, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x32, 0x31, 0x39, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x39, 0x32, 0x31, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x32, 0x32, 0x30, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x39, 0x32, 0x32, 0x30, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32,
-	0x32, 0x31, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x39, 0x31, 0x36,
-	0x34, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x32, 0x31, 0x12, 0x45, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x32, 0x32, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x39, 0x31, 0x36, 0x35, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39,
-	0x32, 0x32, 0x32, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x32, 0x33,
-	0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x39, 0x31, 0x36, 0x36, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x32, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x39, 0x32, 0x32, 0x34, 0x18, 0x21, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x32, 0x34, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x39, 0x32, 0x32, 0x35, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x39, 0x31, 0x35, 0x31, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x32, 0x35, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x32, 0x36, 0x18, 0x23, 0x20, 0x01,
-	0x28, 0x02, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x32, 0x36, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x32, 0x37, 0x18, 0x24, 0x20, 0x01, 0x28, 0x02,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x32, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x32, 0x38, 0x18, 0x25, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x32, 0x32, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x32, 0x32, 0x39, 0x18, 0x26, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x39, 0x32, 0x32, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x32, 0x33, 0x30, 0x18, 0x27, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x39, 0x32, 0x33, 0x30, 0x2a, 0x04, 0x08, 0x03, 0x10, 0x07, 0x2a, 0x04, 0x08, 0x09, 0x10,
-	0x10, 0x2a, 0x04, 0x08, 0x17, 0x10, 0x18, 0x2a, 0x04, 0x08, 0x18, 0x10, 0x19, 0x2a, 0x09, 0x08,
-	0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x49, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x39, 0x31, 0x36, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x31, 0x36, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x39, 0x31, 0x36, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31,
-	0x36, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39,
-	0x31, 0x36, 0x32, 0x22, 0x51, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x39, 0x32,
-	0x34, 0x32, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x33, 0x32, 0x37, 0x18,
-	0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x39, 0x32, 0x34, 0x33, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x33, 0x32, 0x37, 0x22, 0x54, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x38, 0x38, 0x39, 0x30, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x39,
-	0x31, 0x36, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x38, 0x38,
-	0x38, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x39, 0x31, 0x36, 0x22, 0x2b, 0x0a, 0x0b,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x39, 0x31, 0x32, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x33, 0x35, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x33, 0x35, 0x22, 0xae, 0x01, 0x0a, 0x0b, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x39, 0x36, 0x32, 0x38, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x36, 0x37, 0x33, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x39, 0x36, 0x32, 0x37, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x36, 0x37, 0x33,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x36, 0x37, 0x34, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x36, 0x37, 0x34, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x36, 0x37, 0x35, 0x18, 0x03, 0x20, 0x03, 0x28,
-	0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x36, 0x37, 0x35, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x36, 0x37, 0x36, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x36, 0x37, 0x36, 0x22, 0x9f, 0x14, 0x0a, 0x0c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x30, 0x31, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x38, 0x30, 0x18, 0x28, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x38, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x38, 0x31, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x38, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x38, 0x32, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x38, 0x32, 0x12, 0x45, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x38, 0x33, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
-	0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75,
-	0x6d, 0x31, 0x31, 0x31, 0x30, 0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37,
-	0x38, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x38, 0x34,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37,
-	0x38, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x38, 0x35,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37,
-	0x38, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x38, 0x36,
-	0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37,
-	0x38, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x38, 0x37,
-	0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37,
-	0x38, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x38, 0x38,
-	0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37,
-	0x38, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x38, 0x39,
-	0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37,
-	0x38, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x39, 0x30,
-	0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37,
-	0x39, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x39, 0x31,
-	0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37,
-	0x39, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x39, 0x32,
-	0x18, 0x1c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37,
-	0x39, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x39, 0x33,
-	0x18, 0x25, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37,
-	0x39, 0x33, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x39, 0x34,
-	0x18, 0x2c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x31, 0x35, 0x34, 0x31, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x39, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x31, 0x37, 0x39, 0x35, 0x18, 0x31, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x39, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x31, 0x37, 0x39, 0x36, 0x18, 0x33, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x39, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x31, 0x37, 0x39, 0x37, 0x18, 0x36, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x39, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x31, 0x37, 0x39, 0x38, 0x18, 0x37, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x39, 0x38, 0x12, 0x46, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x31, 0x37, 0x39, 0x39, 0x18, 0x39, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x39,
-	0x39, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x30, 0x30, 0x18,
-	0x3a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x31, 0x34, 0x36, 0x38, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x30, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x31, 0x38, 0x30, 0x31, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x30, 0x31, 0x12, 0x46, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x31, 0x38, 0x30, 0x32, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x30, 0x32,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x30, 0x33, 0x18, 0x3d,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x30, 0x33,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x30, 0x34, 0x18, 0x3e,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x30, 0x34,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x30, 0x35, 0x18, 0x45,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x30, 0x35,
-	0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x30, 0x36, 0x18, 0x44,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x30, 0x36,
-	0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x30, 0x37, 0x18, 0x47,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x30, 0x31, 0x38, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x30, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x30, 0x38, 0x18, 0x32, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x30, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x30, 0x39, 0x18, 0x38, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x30, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x31, 0x30, 0x18, 0x42, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x31, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x31, 0x31, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x31, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x31, 0x32, 0x18, 0x40, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x31, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x31, 0x33, 0x18, 0x41, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x31, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x31, 0x34, 0x18, 0x43, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x31, 0x34, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x31, 0x35, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d,
-	0x31, 0x31, 0x31, 0x30, 0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x31,
-	0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x31, 0x36, 0x18,
-	0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x31,
-	0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x31, 0x37, 0x18,
-	0x11, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x31,
-	0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x31, 0x38, 0x18,
-	0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x31,
-	0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x31, 0x39, 0x18,
-	0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x31,
-	0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x32, 0x30, 0x18,
-	0x14, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x32,
-	0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x32, 0x31, 0x18,
-	0x2a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x32,
-	0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x32, 0x32, 0x18,
-	0x34, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x32,
-	0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x32, 0x33, 0x18,
-	0x35, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x32,
-	0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x32, 0x34, 0x18,
-	0x29, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x32,
-	0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x32, 0x35, 0x18,
-	0x30, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x32,
-	0x35, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x32, 0x36, 0x18,
-	0x46, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x30, 0x32, 0x30, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x32, 0x36, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x32, 0x37, 0x18, 0x48, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x32, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x32, 0x38, 0x18, 0x19, 0x20, 0x01, 0x28, 0x01, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x32, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x32, 0x39, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x32, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x33, 0x30, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x33, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x33, 0x31, 0x18, 0x20, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x33, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x33, 0x32, 0x18, 0x21, 0x20, 0x01, 0x28, 0x04, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x33, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x33, 0x33, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x33, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x33, 0x34, 0x18, 0x22, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x33, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x33, 0x35, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x33, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x33, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x33, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x33, 0x37, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x33, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x33, 0x38, 0x18, 0x49, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x33, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x33, 0x39, 0x18, 0x23, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x33, 0x39, 0x12, 0x45, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x34, 0x30, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0e, 0x32,
-	0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75,
-	0x6d, 0x31, 0x31, 0x30, 0x32, 0x32, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38,
-	0x34, 0x30, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x34, 0x31,
-	0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x30, 0x31, 0x33,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x34, 0x31, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x34, 0x32, 0x18, 0x27, 0x20, 0x01, 0x28, 0x01,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x34, 0x32, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x34, 0x33, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x34, 0x33, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x34, 0x34, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x38, 0x34, 0x34, 0x22, 0xc2, 0x01, 0x0a,
-	0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x38, 0x30, 0x31, 0x12, 0x48, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x38, 0x31, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x38, 0x30, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x30, 0x38, 0x31, 0x32, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x30, 0x38, 0x31, 0x33, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x30, 0x38, 0x30, 0x32, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x38, 0x31,
-	0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x38, 0x31, 0x34, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x38, 0x31,
-	0x34, 0x22, 0x58, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x37, 0x34,
-	0x39, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x35, 0x34, 0x18,
-	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x37, 0x34, 0x38, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x35, 0x34, 0x22, 0x90, 0x01, 0x0a, 0x0b,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x32, 0x39, 0x38, 0x12, 0x45, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x32, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x37, 0x39, 0x36, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33,
-	0x32, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x32, 0x32, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x32, 0x32,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x32, 0x33, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x32, 0x33, 0x22, 0x72,
-	0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x33, 0x30, 0x30, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x32, 0x36, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x32, 0x36, 0x12, 0x45, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x32, 0x37, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x37, 0x39, 0x36, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33,
-	0x32, 0x37, 0x22, 0xc9, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x32,
-	0x39, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x30, 0x36, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x30, 0x36,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x30, 0x37, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x30, 0x37, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x30, 0x38, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x30, 0x38, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x30, 0x39, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x30, 0x39, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x33, 0x31, 0x30, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x38,
-	0x32, 0x39, 0x32, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x31, 0x30, 0x22, 0x93,
-	0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x32, 0x39, 0x36, 0x12, 0x45,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x31, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x36, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x33, 0x31, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33,
-	0x31, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x33, 0x31, 0x32, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x31, 0x33,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x36, 0x36, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x31, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x33, 0x31, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x31, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x33, 0x31, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x33, 0x31, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x33, 0x31, 0x36, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x33, 0x31, 0x36, 0x22, 0x49, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37,
-	0x39, 0x36, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x36, 0x37,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x36,
-	0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x36, 0x38, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x36, 0x38, 0x22,
-	0x49, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x32, 0x39, 0x30, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x30, 0x34, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x30, 0x34, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x30, 0x35, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x30, 0x35, 0x22, 0x44, 0x0a, 0x0a, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x31, 0x37, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x37, 0x36, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x37, 0x36, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x37, 0x37,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x37, 0x37,
-	0x22, 0x6c, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x31, 0x33, 0x12, 0x42,
-	0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x32, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b,
-	0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x30, 0x38, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x35, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x33, 0x18, 0x02,
-	0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x33, 0x22, 0xd0,
-	0x01, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x30, 0x35, 0x12, 0x1a, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x30, 0x37, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x30, 0x37, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x30, 0x38, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x30, 0x38, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x30,
-	0x39, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x30,
-	0x39, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x30, 0x18, 0x04, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x30, 0x12, 0x1a, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x31, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x31, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31,
-	0x33, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31,
-	0x33, 0x22, 0x98, 0x01, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x30, 0x39,
-	0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x39, 0x18, 0x01, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x39, 0x12, 0x1a, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x30, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x30, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x33, 0x31, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x33, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x32,
-	0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x32,
-	0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x33, 0x18, 0x05, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x33, 0x22, 0x44, 0x0a, 0x0a,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x30, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x39, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x39, 0x34, 0x22, 0x98, 0x01, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x31,
-	0x34, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x34, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x34, 0x12, 0x1a, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x35, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x35, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x35, 0x36, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35,
-	0x37, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35,
-	0x37, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x38, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x0d, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x38, 0x22, 0x98, 0x01,
-	0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x31, 0x30, 0x12, 0x1a, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x34, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x33, 0x35, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x33, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x36,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x36,
-	0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x37, 0x18, 0x04, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x37, 0x12, 0x1a, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x38, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x38, 0x22, 0x7c, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x37, 0x30, 0x36, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x31, 0x34, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x31, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x35, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x35, 0x12, 0x1a,
-	0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x36, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x36, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x31, 0x37, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x31, 0x37, 0x22, 0x98, 0x01, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x37, 0x30, 0x37, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31,
-	0x38, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31,
-	0x38, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x39, 0x18, 0x02, 0x20,
-	0x02, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x31, 0x39, 0x12, 0x1a, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x30, 0x18, 0x03, 0x20, 0x02, 0x28, 0x09, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x30, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x32, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x32, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32,
-	0x32, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32,
-	0x32, 0x22, 0xac, 0x01, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x31, 0x31,
-	0x12, 0x4a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x39, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x33, 0x39, 0x12, 0x1a, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x30, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x30, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x34, 0x31, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x34, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x32,
-	0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x32,
-	0x22, 0x88, 0x02, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x31, 0x32, 0x12,
-	0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x33, 0x18, 0x01, 0x20, 0x03, 0x28,
-	0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x34, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x34, 0x35, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x34, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x36, 0x18,
-	0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x36, 0x12,
-	0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x37, 0x18, 0x05, 0x20, 0x03, 0x28,
-	0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x37, 0x12, 0x1a, 0x0a, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x38, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x34, 0x38, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x34, 0x39, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x34, 0x39, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x30, 0x18,
-	0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x30, 0x12,
-	0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x31, 0x18, 0x09, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x35, 0x31, 0x22, 0x8c, 0x0b, 0x0a, 0x0b,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x39, 0x33, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x31, 0x30, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x31, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x30, 0x31, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x39, 0x30, 0x31, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x30, 0x31, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x39, 0x30, 0x31, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30,
-	0x31, 0x33, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39,
-	0x30, 0x31, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x31, 0x34,
-	0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x31,
-	0x34, 0x12, 0x55, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x39, 0x34, 0x30,
-	0x18, 0x0b, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x33, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x39, 0x33, 0x39, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x39, 0x34, 0x30, 0x52, 0x0b, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x38, 0x39, 0x34, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x39, 0x30, 0x31, 0x36, 0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x30, 0x31, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39,
-	0x30, 0x31, 0x37, 0x18, 0x16, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x30, 0x31, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x31,
-	0x38, 0x18, 0x17, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30,
-	0x31, 0x38, 0x12, 0x55, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x39, 0x34,
-	0x31, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x33, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x39, 0x33, 0x39,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x39, 0x34, 0x31, 0x52, 0x0b, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x39, 0x34, 0x31, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x30, 0x32, 0x30, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x38, 0x39, 0x34, 0x32, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x32, 0x30,
-	0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x32, 0x31, 0x18, 0x27, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x32, 0x31, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x32, 0x32, 0x18, 0x29, 0x20, 0x03, 0x28,
-	0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x32, 0x32, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x32, 0x33, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x32, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x39, 0x30, 0x32, 0x34, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x32, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x39, 0x30, 0x32, 0x35, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x30, 0x32, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39,
-	0x30, 0x32, 0x36, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x30, 0x32, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x32,
-	0x37, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30,
-	0x32, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x32, 0x38, 0x18,
-	0x2f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x32, 0x38,
-	0x12, 0x44, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x32, 0x39, 0x18, 0x30, 0x20,
-	0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x30, 0x32, 0x39, 0x12, 0x44, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39,
-	0x30, 0x33, 0x30, 0x18, 0x31, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75,
-	0x6d, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x33, 0x30, 0x12, 0x55, 0x0a, 0x0b,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x39, 0x34, 0x33, 0x18, 0x33, 0x20, 0x01, 0x28,
-	0x0a, 0x32, 0x33, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x39, 0x33, 0x39, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x38, 0x39, 0x34, 0x33, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38,
-	0x39, 0x34, 0x33, 0x1a, 0x0d, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x39,
-	0x34, 0x30, 0x1a, 0xc1, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x39,
-	0x34, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x33, 0x33, 0x18,
-	0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x33, 0x33,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x33, 0x34, 0x18, 0x21, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x33, 0x34, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x33, 0x35, 0x18, 0x22, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x33, 0x35, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x33, 0x36, 0x18, 0x23, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x33, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x39, 0x30, 0x33, 0x37, 0x18, 0x24, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x33, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x39, 0x30, 0x33, 0x38, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x30, 0x33, 0x38, 0x1a, 0xc1, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x38, 0x39, 0x34, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39,
-	0x30, 0x33, 0x39, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x30, 0x33, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x34,
-	0x30, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30,
-	0x34, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x34, 0x31, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x34, 0x31,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x34, 0x32, 0x18, 0x04, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x34, 0x32, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x34, 0x33, 0x18, 0x05, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x34, 0x33, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x34, 0x34, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x30, 0x34, 0x34, 0x22, 0x2b, 0x0a, 0x0b, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x39, 0x31, 0x38, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x32, 0x30, 0x34, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x39, 0x32, 0x30, 0x34, 0x22, 0x67, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x39, 0x31, 0x36, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39,
-	0x31, 0x36, 0x38, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x31, 0x36, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x36,
-	0x39, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31,
-	0x36, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x37, 0x30, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x37, 0x30,
-	0x22, 0x49, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x39, 0x31, 0x36, 0x35, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x37, 0x31, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x02, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x37, 0x31, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x37, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x37, 0x32, 0x22, 0x49, 0x0a, 0x0b, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x39, 0x31, 0x36, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x39, 0x31, 0x37, 0x33, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x37, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x39, 0x31, 0x37, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x31, 0x37, 0x34, 0x22, 0xfd, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x39, 0x31, 0x35, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39,
-	0x31, 0x35, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x31, 0x35, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x35,
-	0x33, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31,
-	0x35, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x35, 0x34, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x35, 0x34,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x35, 0x35, 0x18, 0x04, 0x20,
-	0x01, 0x28, 0x02, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x35, 0x35, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x35, 0x36, 0x18, 0x05, 0x20, 0x01, 0x28,
-	0x02, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x35, 0x36, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x35, 0x37, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x35, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x39, 0x31, 0x35, 0x38, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x39, 0x31, 0x35, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x39, 0x31, 0x35, 0x39, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x31, 0x35, 0x39, 0x22, 0xaf, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x38, 0x38, 0x38, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x39, 0x30, 0x38, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x39, 0x30, 0x38, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x39, 0x30,
-	0x39, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x38, 0x39, 0x30, 0x30, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x39, 0x30, 0x39, 0x12, 0x20, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x39, 0x31, 0x30, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x39, 0x31, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x39, 0x31, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x39, 0x31, 0x31, 0x22, 0xa3, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x39, 0x36, 0x32, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x39, 0x36, 0x36, 0x38, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x39, 0x36, 0x36, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39,
-	0x36, 0x36, 0x39, 0x18, 0x02, 0x20, 0x02, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x39, 0x36, 0x36, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x36, 0x37,
-	0x30, 0x18, 0x03, 0x20, 0x02, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x36,
-	0x37, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x36, 0x37, 0x31, 0x18,
-	0x04, 0x20, 0x02, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x36, 0x37, 0x31,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x36, 0x37, 0x32, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x02, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x36, 0x37, 0x32, 0x22, 0x0e,
-	0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x30, 0x32, 0x30, 0x22, 0xc8,
-	0x06, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x30, 0x31, 0x33, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x35, 0x37, 0x18, 0x13, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x35, 0x37, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x35, 0x38, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x35, 0x38, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x35, 0x39, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x35, 0x39, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x36, 0x30, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x36, 0x30, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x36, 0x31, 0x18, 0x04, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x36, 0x31, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x36, 0x32, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x36, 0x32, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x36, 0x33, 0x18, 0x06, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x36, 0x33, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x36, 0x34, 0x18, 0x07, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x36, 0x34, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x36, 0x35, 0x18, 0x08, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x36, 0x35, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x36, 0x36, 0x18, 0x09, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x36, 0x36, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x36, 0x37, 0x18, 0x0a, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x36, 0x37, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x36, 0x38, 0x18, 0x0b, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x36, 0x38, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x36, 0x39, 0x18, 0x0c, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x36, 0x39, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x37, 0x30, 0x18, 0x0d, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x37, 0x30, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x37, 0x31, 0x18, 0x0e, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x37, 0x31, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x37, 0x32, 0x18, 0x0f, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x37, 0x32, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x37, 0x33, 0x18, 0x10, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x37, 0x33, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x37, 0x34, 0x18, 0x11, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x37, 0x34, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x37, 0x35, 0x18, 0x12, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x37, 0x35, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x37, 0x36, 0x18, 0x14, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x37, 0x36, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x37, 0x37, 0x18, 0x15, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x37, 0x37, 0x12,
-	0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x37, 0x38, 0x18, 0x17, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x37, 0x38, 0x12,
-	0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x37, 0x39, 0x18, 0x16, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x30, 0x31, 0x31, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x37, 0x39, 0x42, 0x23, 0x0a, 0x1e, 0x63, 0x6f, 0x6d,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0xf8, 0x01, 0x01,
-}
-
-var (
-	file_datasets_google_message3_benchmark_message3_6_proto_rawDescOnce sync.Once
-	file_datasets_google_message3_benchmark_message3_6_proto_rawDescData = file_datasets_google_message3_benchmark_message3_6_proto_rawDesc
-)
-
-func file_datasets_google_message3_benchmark_message3_6_proto_rawDescGZIP() []byte {
-	file_datasets_google_message3_benchmark_message3_6_proto_rawDescOnce.Do(func() {
-		file_datasets_google_message3_benchmark_message3_6_proto_rawDescData = protoimpl.X.CompressGZIP(file_datasets_google_message3_benchmark_message3_6_proto_rawDescData)
-	})
-	return file_datasets_google_message3_benchmark_message3_6_proto_rawDescData
-}
-
-var file_datasets_google_message3_benchmark_message3_6_proto_msgTypes = make([]protoimpl.MessageInfo, 42)
-var file_datasets_google_message3_benchmark_message3_6_proto_goTypes = []interface{}{
-	(*Message10576)(nil),            // 0: benchmarks.google_message3.Message10576
-	(*Message10154)(nil),            // 1: benchmarks.google_message3.Message10154
-	(*Message8944)(nil),             // 2: benchmarks.google_message3.Message8944
-	(*Message9182)(nil),             // 3: benchmarks.google_message3.Message9182
-	(*Message9160)(nil),             // 4: benchmarks.google_message3.Message9160
-	(*Message9242)(nil),             // 5: benchmarks.google_message3.Message9242
-	(*Message8890)(nil),             // 6: benchmarks.google_message3.Message8890
-	(*Message9123)(nil),             // 7: benchmarks.google_message3.Message9123
-	(*Message9628)(nil),             // 8: benchmarks.google_message3.Message9628
-	(*Message11014)(nil),            // 9: benchmarks.google_message3.Message11014
-	(*Message10801)(nil),            // 10: benchmarks.google_message3.Message10801
-	(*Message10749)(nil),            // 11: benchmarks.google_message3.Message10749
-	(*Message8298)(nil),             // 12: benchmarks.google_message3.Message8298
-	(*Message8300)(nil),             // 13: benchmarks.google_message3.Message8300
-	(*Message8291)(nil),             // 14: benchmarks.google_message3.Message8291
-	(*Message8296)(nil),             // 15: benchmarks.google_message3.Message8296
-	(*Message7965)(nil),             // 16: benchmarks.google_message3.Message7965
-	(*Message8290)(nil),             // 17: benchmarks.google_message3.Message8290
-	(*Message717)(nil),              // 18: benchmarks.google_message3.Message717
-	(*Message713)(nil),              // 19: benchmarks.google_message3.Message713
-	(*Message705)(nil),              // 20: benchmarks.google_message3.Message705
-	(*Message709)(nil),              // 21: benchmarks.google_message3.Message709
-	(*Message702)(nil),              // 22: benchmarks.google_message3.Message702
-	(*Message714)(nil),              // 23: benchmarks.google_message3.Message714
-	(*Message710)(nil),              // 24: benchmarks.google_message3.Message710
-	(*Message706)(nil),              // 25: benchmarks.google_message3.Message706
-	(*Message707)(nil),              // 26: benchmarks.google_message3.Message707
-	(*Message711)(nil),              // 27: benchmarks.google_message3.Message711
-	(*Message712)(nil),              // 28: benchmarks.google_message3.Message712
-	(*Message8939)(nil),             // 29: benchmarks.google_message3.Message8939
-	(*Message9181)(nil),             // 30: benchmarks.google_message3.Message9181
-	(*Message9164)(nil),             // 31: benchmarks.google_message3.Message9164
-	(*Message9165)(nil),             // 32: benchmarks.google_message3.Message9165
-	(*Message9166)(nil),             // 33: benchmarks.google_message3.Message9166
-	(*Message9151)(nil),             // 34: benchmarks.google_message3.Message9151
-	(*Message8888)(nil),             // 35: benchmarks.google_message3.Message8888
-	(*Message9627)(nil),             // 36: benchmarks.google_message3.Message9627
-	(*Message11020)(nil),            // 37: benchmarks.google_message3.Message11020
-	(*Message11013)(nil),            // 38: benchmarks.google_message3.Message11013
-	(*Message8939_Message8940)(nil), // 39: benchmarks.google_message3.Message8939.Message8940
-	(*Message8939_Message8941)(nil), // 40: benchmarks.google_message3.Message8939.Message8941
-	(*Message8939_Message8943)(nil), // 41: benchmarks.google_message3.Message8939.Message8943
-	(Enum8945)(0),                   // 42: benchmarks.google_message3.Enum8945
-	(Enum8951)(0),                   // 43: benchmarks.google_message3.Enum8951
-	(UnusedEnum)(0),                 // 44: benchmarks.google_message3.UnusedEnum
-	(*UnusedEmptyMessage)(nil),      // 45: benchmarks.google_message3.UnusedEmptyMessage
-	(Enum9243)(0),                   // 46: benchmarks.google_message3.Enum9243
-	(Enum11107)(0),                  // 47: benchmarks.google_message3.Enum11107
-	(Enum11541)(0),                  // 48: benchmarks.google_message3.Enum11541
-	(Enum11468)(0),                  // 49: benchmarks.google_message3.Enum11468
-	(*Message11018)(nil),            // 50: benchmarks.google_message3.Message11018
-	(Enum11022)(0),                  // 51: benchmarks.google_message3.Enum11022
-	(*Message10800)(nil),            // 52: benchmarks.google_message3.Message10800
-	(*Message10802)(nil),            // 53: benchmarks.google_message3.Message10802
-	(*Message10748)(nil),            // 54: benchmarks.google_message3.Message10748
-	(*Message7966)(nil),             // 55: benchmarks.google_message3.Message7966
-	(Enum8292)(0),                   // 56: benchmarks.google_message3.Enum8292
-	(*Message708)(nil),              // 57: benchmarks.google_message3.Message708
-	(*Message8942)(nil),             // 58: benchmarks.google_message3.Message8942
-	(Enum8900)(0),                   // 59: benchmarks.google_message3.Enum8900
-	(*Message11011)(nil),            // 60: benchmarks.google_message3.Message11011
-}
-var file_datasets_google_message3_benchmark_message3_6_proto_depIdxs = []int32{
-	42, // 0: benchmarks.google_message3.Message8944.field9067:type_name -> benchmarks.google_message3.Enum8945
-	43, // 1: benchmarks.google_message3.Message8944.field9078:type_name -> benchmarks.google_message3.Enum8951
-	44, // 2: benchmarks.google_message3.Message8944.field9086:type_name -> benchmarks.google_message3.UnusedEnum
-	44, // 3: benchmarks.google_message3.Message8944.field9093:type_name -> benchmarks.google_message3.UnusedEnum
-	44, // 4: benchmarks.google_message3.Message8944.field9094:type_name -> benchmarks.google_message3.UnusedEnum
-	29, // 5: benchmarks.google_message3.Message8944.field9105:type_name -> benchmarks.google_message3.Message8939
-	45, // 6: benchmarks.google_message3.Message9182.field9215:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	45, // 7: benchmarks.google_message3.Message9182.field9216:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	30, // 8: benchmarks.google_message3.Message9182.field9217:type_name -> benchmarks.google_message3.Message9181
-	31, // 9: benchmarks.google_message3.Message9182.field9221:type_name -> benchmarks.google_message3.Message9164
-	32, // 10: benchmarks.google_message3.Message9182.field9222:type_name -> benchmarks.google_message3.Message9165
-	33, // 11: benchmarks.google_message3.Message9182.field9223:type_name -> benchmarks.google_message3.Message9166
-	34, // 12: benchmarks.google_message3.Message9182.field9225:type_name -> benchmarks.google_message3.Message9151
-	46, // 13: benchmarks.google_message3.Message9242.field9327:type_name -> benchmarks.google_message3.Enum9243
-	35, // 14: benchmarks.google_message3.Message8890.field8916:type_name -> benchmarks.google_message3.Message8888
-	36, // 15: benchmarks.google_message3.Message9628.field9673:type_name -> benchmarks.google_message3.Message9627
-	47, // 16: benchmarks.google_message3.Message11014.field11783:type_name -> benchmarks.google_message3.Enum11107
-	48, // 17: benchmarks.google_message3.Message11014.field11794:type_name -> benchmarks.google_message3.Enum11541
-	44, // 18: benchmarks.google_message3.Message11014.field11799:type_name -> benchmarks.google_message3.UnusedEnum
-	49, // 19: benchmarks.google_message3.Message11014.field11800:type_name -> benchmarks.google_message3.Enum11468
-	44, // 20: benchmarks.google_message3.Message11014.field11802:type_name -> benchmarks.google_message3.UnusedEnum
-	45, // 21: benchmarks.google_message3.Message11014.field11806:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	50, // 22: benchmarks.google_message3.Message11014.field11807:type_name -> benchmarks.google_message3.Message11018
-	47, // 23: benchmarks.google_message3.Message11014.field11815:type_name -> benchmarks.google_message3.Enum11107
-	37, // 24: benchmarks.google_message3.Message11014.field11826:type_name -> benchmarks.google_message3.Message11020
-	45, // 25: benchmarks.google_message3.Message11014.field11827:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	51, // 26: benchmarks.google_message3.Message11014.field11840:type_name -> benchmarks.google_message3.Enum11022
-	38, // 27: benchmarks.google_message3.Message11014.field11841:type_name -> benchmarks.google_message3.Message11013
-	52, // 28: benchmarks.google_message3.Message10801.field10812:type_name -> benchmarks.google_message3.Message10800
-	53, // 29: benchmarks.google_message3.Message10801.field10813:type_name -> benchmarks.google_message3.Message10802
-	54, // 30: benchmarks.google_message3.Message10749.field10754:type_name -> benchmarks.google_message3.Message10748
-	55, // 31: benchmarks.google_message3.Message8298.field8321:type_name -> benchmarks.google_message3.Message7966
-	55, // 32: benchmarks.google_message3.Message8300.field8327:type_name -> benchmarks.google_message3.Message7966
-	56, // 33: benchmarks.google_message3.Message8291.field8310:type_name -> benchmarks.google_message3.Enum8292
-	55, // 34: benchmarks.google_message3.Message8296.field8311:type_name -> benchmarks.google_message3.Message7966
-	55, // 35: benchmarks.google_message3.Message8296.field8313:type_name -> benchmarks.google_message3.Message7966
-	57, // 36: benchmarks.google_message3.Message713.field852:type_name -> benchmarks.google_message3.Message708
-	45, // 37: benchmarks.google_message3.Message711.field839:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	39, // 38: benchmarks.google_message3.Message8939.message8940:type_name -> benchmarks.google_message3.Message8939.Message8940
-	40, // 39: benchmarks.google_message3.Message8939.message8941:type_name -> benchmarks.google_message3.Message8939.Message8941
-	58, // 40: benchmarks.google_message3.Message8939.field9020:type_name -> benchmarks.google_message3.Message8942
-	45, // 41: benchmarks.google_message3.Message8939.field9021:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	44, // 42: benchmarks.google_message3.Message8939.field9029:type_name -> benchmarks.google_message3.UnusedEnum
-	44, // 43: benchmarks.google_message3.Message8939.field9030:type_name -> benchmarks.google_message3.UnusedEnum
-	41, // 44: benchmarks.google_message3.Message8939.message8943:type_name -> benchmarks.google_message3.Message8939.Message8943
-	59, // 45: benchmarks.google_message3.Message8888.field8909:type_name -> benchmarks.google_message3.Enum8900
-	45, // 46: benchmarks.google_message3.Message11013.field11778:type_name -> benchmarks.google_message3.UnusedEmptyMessage
-	60, // 47: benchmarks.google_message3.Message11013.field11779:type_name -> benchmarks.google_message3.Message11011
-	48, // [48:48] is the sub-list for method output_type
-	48, // [48:48] is the sub-list for method input_type
-	48, // [48:48] is the sub-list for extension type_name
-	48, // [48:48] is the sub-list for extension extendee
-	0,  // [0:48] is the sub-list for field type_name
-}
-
-func init() { file_datasets_google_message3_benchmark_message3_6_proto_init() }
-func file_datasets_google_message3_benchmark_message3_6_proto_init() {
-	if File_datasets_google_message3_benchmark_message3_6_proto != nil {
-		return
-	}
-	file_datasets_google_message3_benchmark_message3_7_proto_init()
-	file_datasets_google_message3_benchmark_message3_8_proto_init()
-	if !protoimpl.UnsafeEnabled {
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10576); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10154); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8944); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message9182); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message9160); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message9242); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8890); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message9123); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message9628); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message11014); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10801); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10749); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8298); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8300); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8291); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8296); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7965); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8290); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message717); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message713); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message705); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message709); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message702); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message714); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message710); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message706); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message707); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message711); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message712); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8939); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message9181); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message9164); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message9165); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message9166); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message9151); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8888); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message9627); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message11020); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message11013); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8939_Message8940); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8939_Message8941); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_6_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8939_Message8943); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_datasets_google_message3_benchmark_message3_6_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   42,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_datasets_google_message3_benchmark_message3_6_proto_goTypes,
-		DependencyIndexes: file_datasets_google_message3_benchmark_message3_6_proto_depIdxs,
-		MessageInfos:      file_datasets_google_message3_benchmark_message3_6_proto_msgTypes,
-	}.Build()
-	File_datasets_google_message3_benchmark_message3_6_proto = out.File
-	file_datasets_google_message3_benchmark_message3_6_proto_rawDesc = nil
-	file_datasets_google_message3_benchmark_message3_6_proto_goTypes = nil
-	file_datasets_google_message3_benchmark_message3_6_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_7.pb.go b/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_7.pb.go
deleted file mode 100644
index 758392f..0000000
--- a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_7.pb.go
+++ /dev/null
@@ -1,822 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: datasets/google_message3/benchmark_message3_7.proto
-
-package google_message3
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Message11018 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message11018) Reset() {
-	*x = Message11018{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message11018) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message11018) ProtoMessage() {}
-
-func (x *Message11018) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message11018.ProtoReflect.Descriptor instead.
-func (*Message11018) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_7_proto_rawDescGZIP(), []int{0}
-}
-
-type Message10800 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field10808 *string  `protobuf:"bytes,1,opt,name=field10808" json:"field10808,omitempty"`
-	Field10809 *int64   `protobuf:"varint,2,opt,name=field10809" json:"field10809,omitempty"`
-	Field10810 *bool    `protobuf:"varint,3,opt,name=field10810" json:"field10810,omitempty"`
-	Field10811 *float32 `protobuf:"fixed32,4,opt,name=field10811" json:"field10811,omitempty"`
-}
-
-func (x *Message10800) Reset() {
-	*x = Message10800{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10800) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10800) ProtoMessage() {}
-
-func (x *Message10800) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10800.ProtoReflect.Descriptor instead.
-func (*Message10800) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_7_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Message10800) GetField10808() string {
-	if x != nil && x.Field10808 != nil {
-		return *x.Field10808
-	}
-	return ""
-}
-
-func (x *Message10800) GetField10809() int64 {
-	if x != nil && x.Field10809 != nil {
-		return *x.Field10809
-	}
-	return 0
-}
-
-func (x *Message10800) GetField10810() bool {
-	if x != nil && x.Field10810 != nil {
-		return *x.Field10810
-	}
-	return false
-}
-
-func (x *Message10800) GetField10811() float32 {
-	if x != nil && x.Field10811 != nil {
-		return *x.Field10811
-	}
-	return 0
-}
-
-type Message10802 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message10802) Reset() {
-	*x = Message10802{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10802) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10802) ProtoMessage() {}
-
-func (x *Message10802) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10802.ProtoReflect.Descriptor instead.
-func (*Message10802) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_7_proto_rawDescGZIP(), []int{2}
-}
-
-type Message10748 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field10750 *string `protobuf:"bytes,1,opt,name=field10750" json:"field10750,omitempty"`
-	Field10751 *int32  `protobuf:"varint,2,opt,name=field10751" json:"field10751,omitempty"`
-	Field10752 *int32  `protobuf:"varint,3,opt,name=field10752" json:"field10752,omitempty"`
-	Field10753 *int32  `protobuf:"varint,4,opt,name=field10753" json:"field10753,omitempty"`
-}
-
-func (x *Message10748) Reset() {
-	*x = Message10748{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10748) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10748) ProtoMessage() {}
-
-func (x *Message10748) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10748.ProtoReflect.Descriptor instead.
-func (*Message10748) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_7_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Message10748) GetField10750() string {
-	if x != nil && x.Field10750 != nil {
-		return *x.Field10750
-	}
-	return ""
-}
-
-func (x *Message10748) GetField10751() int32 {
-	if x != nil && x.Field10751 != nil {
-		return *x.Field10751
-	}
-	return 0
-}
-
-func (x *Message10748) GetField10752() int32 {
-	if x != nil && x.Field10752 != nil {
-		return *x.Field10752
-	}
-	return 0
-}
-
-func (x *Message10748) GetField10753() int32 {
-	if x != nil && x.Field10753 != nil {
-		return *x.Field10753
-	}
-	return 0
-}
-
-type Message7966 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7969 *string `protobuf:"bytes,1,opt,name=field7969" json:"field7969,omitempty"`
-	Field7970 *bool   `protobuf:"varint,2,opt,name=field7970" json:"field7970,omitempty"`
-}
-
-func (x *Message7966) Reset() {
-	*x = Message7966{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7966) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7966) ProtoMessage() {}
-
-func (x *Message7966) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7966.ProtoReflect.Descriptor instead.
-func (*Message7966) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_7_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Message7966) GetField7969() string {
-	if x != nil && x.Field7969 != nil {
-		return *x.Field7969
-	}
-	return ""
-}
-
-func (x *Message7966) GetField7970() bool {
-	if x != nil && x.Field7970 != nil {
-		return *x.Field7970
-	}
-	return false
-}
-
-type Message708 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field823 *Message741 `protobuf:"bytes,1,opt,name=field823" json:"field823,omitempty"`
-	Field824 []string    `protobuf:"bytes,6,rep,name=field824" json:"field824,omitempty"`
-	Field825 *string     `protobuf:"bytes,2,opt,name=field825" json:"field825,omitempty"`
-	Field826 *string     `protobuf:"bytes,3,opt,name=field826" json:"field826,omitempty"`
-	Field827 []string    `protobuf:"bytes,4,rep,name=field827" json:"field827,omitempty"`
-	Field828 []string    `protobuf:"bytes,5,rep,name=field828" json:"field828,omitempty"`
-}
-
-func (x *Message708) Reset() {
-	*x = Message708{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message708) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message708) ProtoMessage() {}
-
-func (x *Message708) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message708.ProtoReflect.Descriptor instead.
-func (*Message708) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_7_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *Message708) GetField823() *Message741 {
-	if x != nil {
-		return x.Field823
-	}
-	return nil
-}
-
-func (x *Message708) GetField824() []string {
-	if x != nil {
-		return x.Field824
-	}
-	return nil
-}
-
-func (x *Message708) GetField825() string {
-	if x != nil && x.Field825 != nil {
-		return *x.Field825
-	}
-	return ""
-}
-
-func (x *Message708) GetField826() string {
-	if x != nil && x.Field826 != nil {
-		return *x.Field826
-	}
-	return ""
-}
-
-func (x *Message708) GetField827() []string {
-	if x != nil {
-		return x.Field827
-	}
-	return nil
-}
-
-func (x *Message708) GetField828() []string {
-	if x != nil {
-		return x.Field828
-	}
-	return nil
-}
-
-type Message8942 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message8942) Reset() {
-	*x = Message8942{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8942) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8942) ProtoMessage() {}
-
-func (x *Message8942) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8942.ProtoReflect.Descriptor instead.
-func (*Message8942) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_7_proto_rawDescGZIP(), []int{6}
-}
-
-type Message11011 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field11752 []byte `protobuf:"bytes,1,req,name=field11752" json:"field11752,omitempty"`
-	Field11753 []byte `protobuf:"bytes,2,req,name=field11753" json:"field11753,omitempty"`
-}
-
-func (x *Message11011) Reset() {
-	*x = Message11011{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message11011) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message11011) ProtoMessage() {}
-
-func (x *Message11011) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message11011.ProtoReflect.Descriptor instead.
-func (*Message11011) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_7_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *Message11011) GetField11752() []byte {
-	if x != nil {
-		return x.Field11752
-	}
-	return nil
-}
-
-func (x *Message11011) GetField11753() []byte {
-	if x != nil {
-		return x.Field11753
-	}
-	return nil
-}
-
-type UnusedEmptyMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *UnusedEmptyMessage) Reset() {
-	*x = UnusedEmptyMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *UnusedEmptyMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UnusedEmptyMessage) ProtoMessage() {}
-
-func (x *UnusedEmptyMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[8]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use UnusedEmptyMessage.ProtoReflect.Descriptor instead.
-func (*UnusedEmptyMessage) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_7_proto_rawDescGZIP(), []int{8}
-}
-
-type Message741 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field936 []string `protobuf:"bytes,1,rep,name=field936" json:"field936,omitempty"`
-}
-
-func (x *Message741) Reset() {
-	*x = Message741{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[9]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message741) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message741) ProtoMessage() {}
-
-func (x *Message741) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[9]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message741.ProtoReflect.Descriptor instead.
-func (*Message741) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_7_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *Message741) GetField936() []string {
-	if x != nil {
-		return x.Field936
-	}
-	return nil
-}
-
-var File_datasets_google_message3_benchmark_message3_7_proto protoreflect.FileDescriptor
-
-var file_datasets_google_message3_benchmark_message3_7_proto_rawDesc = []byte{
-	0x0a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x37, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x22, 0x0e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x30, 0x31,
-	0x38, 0x22, 0x8e, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x38,
-	0x30, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x38, 0x30, 0x38,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x38,
-	0x30, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x38, 0x30, 0x39,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x38,
-	0x30, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x38, 0x31, 0x30,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x38,
-	0x31, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x38, 0x31, 0x31,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x38,
-	0x31, 0x31, 0x22, 0x0e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x38,
-	0x30, 0x32, 0x22, 0x8e, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30,
-	0x37, 0x34, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x35,
-	0x30, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30,
-	0x37, 0x35, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x35,
-	0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30,
-	0x37, 0x35, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x35,
-	0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30,
-	0x37, 0x35, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x37, 0x35,
-	0x33, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30,
-	0x37, 0x35, 0x33, 0x22, 0x49, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39,
-	0x36, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x36, 0x39, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x36, 0x39,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x37, 0x30, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x37, 0x30, 0x22, 0xdc,
-	0x01, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x30, 0x38, 0x12, 0x42, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x33, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x37, 0x34, 0x31, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32,
-	0x33, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x34, 0x18, 0x06, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x34, 0x12, 0x1a, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x35, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x32, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x32, 0x36, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32,
-	0x37, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32,
-	0x37, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x38, 0x18, 0x05, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x32, 0x38, 0x22, 0x0d, 0x0a,
-	0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x39, 0x34, 0x32, 0x22, 0x4e, 0x0a, 0x0c,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x30, 0x31, 0x31, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x35, 0x32, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0c,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x35, 0x32, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x35, 0x33, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0c,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x37, 0x35, 0x33, 0x22, 0x14, 0x0a, 0x12,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x22, 0x28, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x34, 0x31,
-	0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x33, 0x36, 0x18, 0x01, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x33, 0x36, 0x42, 0x23, 0x0a, 0x1e,
-	0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0xf8, 0x01,
-	0x01,
-}
-
-var (
-	file_datasets_google_message3_benchmark_message3_7_proto_rawDescOnce sync.Once
-	file_datasets_google_message3_benchmark_message3_7_proto_rawDescData = file_datasets_google_message3_benchmark_message3_7_proto_rawDesc
-)
-
-func file_datasets_google_message3_benchmark_message3_7_proto_rawDescGZIP() []byte {
-	file_datasets_google_message3_benchmark_message3_7_proto_rawDescOnce.Do(func() {
-		file_datasets_google_message3_benchmark_message3_7_proto_rawDescData = protoimpl.X.CompressGZIP(file_datasets_google_message3_benchmark_message3_7_proto_rawDescData)
-	})
-	return file_datasets_google_message3_benchmark_message3_7_proto_rawDescData
-}
-
-var file_datasets_google_message3_benchmark_message3_7_proto_msgTypes = make([]protoimpl.MessageInfo, 10)
-var file_datasets_google_message3_benchmark_message3_7_proto_goTypes = []interface{}{
-	(*Message11018)(nil),       // 0: benchmarks.google_message3.Message11018
-	(*Message10800)(nil),       // 1: benchmarks.google_message3.Message10800
-	(*Message10802)(nil),       // 2: benchmarks.google_message3.Message10802
-	(*Message10748)(nil),       // 3: benchmarks.google_message3.Message10748
-	(*Message7966)(nil),        // 4: benchmarks.google_message3.Message7966
-	(*Message708)(nil),         // 5: benchmarks.google_message3.Message708
-	(*Message8942)(nil),        // 6: benchmarks.google_message3.Message8942
-	(*Message11011)(nil),       // 7: benchmarks.google_message3.Message11011
-	(*UnusedEmptyMessage)(nil), // 8: benchmarks.google_message3.UnusedEmptyMessage
-	(*Message741)(nil),         // 9: benchmarks.google_message3.Message741
-}
-var file_datasets_google_message3_benchmark_message3_7_proto_depIdxs = []int32{
-	9, // 0: benchmarks.google_message3.Message708.field823:type_name -> benchmarks.google_message3.Message741
-	1, // [1:1] is the sub-list for method output_type
-	1, // [1:1] is the sub-list for method input_type
-	1, // [1:1] is the sub-list for extension type_name
-	1, // [1:1] is the sub-list for extension extendee
-	0, // [0:1] is the sub-list for field type_name
-}
-
-func init() { file_datasets_google_message3_benchmark_message3_7_proto_init() }
-func file_datasets_google_message3_benchmark_message3_7_proto_init() {
-	if File_datasets_google_message3_benchmark_message3_7_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message11018); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10800); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10802); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10748); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7966); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message708); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8942); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message11011); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UnusedEmptyMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message3_benchmark_message3_7_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message741); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_datasets_google_message3_benchmark_message3_7_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   10,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_datasets_google_message3_benchmark_message3_7_proto_goTypes,
-		DependencyIndexes: file_datasets_google_message3_benchmark_message3_7_proto_depIdxs,
-		MessageInfos:      file_datasets_google_message3_benchmark_message3_7_proto_msgTypes,
-	}.Build()
-	File_datasets_google_message3_benchmark_message3_7_proto = out.File
-	file_datasets_google_message3_benchmark_message3_7_proto_rawDesc = nil
-	file_datasets_google_message3_benchmark_message3_7_proto_goTypes = nil
-	file_datasets_google_message3_benchmark_message3_7_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_8.pb.go b/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_8.pb.go
deleted file mode 100644
index 5fbb6b8..0000000
--- a/internal/testprotos/benchmarks/datasets/google_message3/benchmark_message3_8.pb.go
+++ /dev/null
@@ -1,10591 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: datasets/google_message3/benchmark_message3_8.proto
-
-package google_message3
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Enum720 int32
-
-const (
-	Enum720_ENUM_VALUE721 Enum720 = 1
-	Enum720_ENUM_VALUE722 Enum720 = 2
-)
-
-// Enum value maps for Enum720.
-var (
-	Enum720_name = map[int32]string{
-		1: "ENUM_VALUE721",
-		2: "ENUM_VALUE722",
-	}
-	Enum720_value = map[string]int32{
-		"ENUM_VALUE721": 1,
-		"ENUM_VALUE722": 2,
-	}
-)
-
-func (x Enum720) Enum() *Enum720 {
-	p := new(Enum720)
-	*p = x
-	return p
-}
-
-func (x Enum720) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum720) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[0].Descriptor()
-}
-
-func (Enum720) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[0]
-}
-
-func (x Enum720) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum720) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum720(num)
-	return nil
-}
-
-// Deprecated: Use Enum720.Descriptor instead.
-func (Enum720) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{0}
-}
-
-type Enum3476 int32
-
-const (
-	Enum3476_ENUM_VALUE3477 Enum3476 = 0
-	Enum3476_ENUM_VALUE3478 Enum3476 = 1
-	Enum3476_ENUM_VALUE3479 Enum3476 = 2
-	Enum3476_ENUM_VALUE3480 Enum3476 = 3
-	Enum3476_ENUM_VALUE3481 Enum3476 = 4
-	Enum3476_ENUM_VALUE3482 Enum3476 = 5
-	Enum3476_ENUM_VALUE3483 Enum3476 = 6
-	Enum3476_ENUM_VALUE3484 Enum3476 = 7
-	Enum3476_ENUM_VALUE3485 Enum3476 = 8
-	Enum3476_ENUM_VALUE3486 Enum3476 = 9
-	Enum3476_ENUM_VALUE3487 Enum3476 = 10
-	Enum3476_ENUM_VALUE3488 Enum3476 = 11
-	Enum3476_ENUM_VALUE3489 Enum3476 = 12
-	Enum3476_ENUM_VALUE3490 Enum3476 = 13
-	Enum3476_ENUM_VALUE3491 Enum3476 = 14
-	Enum3476_ENUM_VALUE3492 Enum3476 = 15
-	Enum3476_ENUM_VALUE3493 Enum3476 = 16
-	Enum3476_ENUM_VALUE3494 Enum3476 = 17
-	Enum3476_ENUM_VALUE3495 Enum3476 = 18
-	Enum3476_ENUM_VALUE3496 Enum3476 = 19
-	Enum3476_ENUM_VALUE3497 Enum3476 = 20
-	Enum3476_ENUM_VALUE3498 Enum3476 = 21
-	Enum3476_ENUM_VALUE3499 Enum3476 = 22
-	Enum3476_ENUM_VALUE3500 Enum3476 = 23
-	Enum3476_ENUM_VALUE3501 Enum3476 = 24
-	Enum3476_ENUM_VALUE3502 Enum3476 = 25
-	Enum3476_ENUM_VALUE3503 Enum3476 = 26
-	Enum3476_ENUM_VALUE3504 Enum3476 = 27
-	Enum3476_ENUM_VALUE3505 Enum3476 = 28
-	Enum3476_ENUM_VALUE3506 Enum3476 = 29
-	Enum3476_ENUM_VALUE3507 Enum3476 = 30
-	Enum3476_ENUM_VALUE3508 Enum3476 = 31
-	Enum3476_ENUM_VALUE3509 Enum3476 = 32
-	Enum3476_ENUM_VALUE3510 Enum3476 = 33
-	Enum3476_ENUM_VALUE3511 Enum3476 = 34
-	Enum3476_ENUM_VALUE3512 Enum3476 = 35
-	Enum3476_ENUM_VALUE3513 Enum3476 = 36
-	Enum3476_ENUM_VALUE3514 Enum3476 = 37
-	Enum3476_ENUM_VALUE3515 Enum3476 = 38
-	Enum3476_ENUM_VALUE3516 Enum3476 = 39
-	Enum3476_ENUM_VALUE3517 Enum3476 = 40
-	Enum3476_ENUM_VALUE3518 Enum3476 = 41
-	Enum3476_ENUM_VALUE3519 Enum3476 = 42
-	Enum3476_ENUM_VALUE3520 Enum3476 = 43
-	Enum3476_ENUM_VALUE3521 Enum3476 = 44
-	Enum3476_ENUM_VALUE3522 Enum3476 = 45
-	Enum3476_ENUM_VALUE3523 Enum3476 = 46
-	Enum3476_ENUM_VALUE3524 Enum3476 = 47
-	Enum3476_ENUM_VALUE3525 Enum3476 = 48
-	Enum3476_ENUM_VALUE3526 Enum3476 = 49
-	Enum3476_ENUM_VALUE3527 Enum3476 = 50
-	Enum3476_ENUM_VALUE3528 Enum3476 = 51
-	Enum3476_ENUM_VALUE3529 Enum3476 = 52
-	Enum3476_ENUM_VALUE3530 Enum3476 = 53
-	Enum3476_ENUM_VALUE3531 Enum3476 = 54
-	Enum3476_ENUM_VALUE3532 Enum3476 = 55
-	Enum3476_ENUM_VALUE3533 Enum3476 = 56
-	Enum3476_ENUM_VALUE3534 Enum3476 = 57
-	Enum3476_ENUM_VALUE3535 Enum3476 = 58
-	Enum3476_ENUM_VALUE3536 Enum3476 = 59
-	Enum3476_ENUM_VALUE3537 Enum3476 = 60
-	Enum3476_ENUM_VALUE3538 Enum3476 = 61
-	Enum3476_ENUM_VALUE3539 Enum3476 = 62
-	Enum3476_ENUM_VALUE3540 Enum3476 = 63
-	Enum3476_ENUM_VALUE3541 Enum3476 = 64
-	Enum3476_ENUM_VALUE3542 Enum3476 = 65
-	Enum3476_ENUM_VALUE3543 Enum3476 = 66
-	Enum3476_ENUM_VALUE3544 Enum3476 = 67
-	Enum3476_ENUM_VALUE3545 Enum3476 = 68
-	Enum3476_ENUM_VALUE3546 Enum3476 = 69
-	Enum3476_ENUM_VALUE3547 Enum3476 = 70
-	Enum3476_ENUM_VALUE3548 Enum3476 = 71
-	Enum3476_ENUM_VALUE3549 Enum3476 = 72
-	Enum3476_ENUM_VALUE3550 Enum3476 = 73
-	Enum3476_ENUM_VALUE3551 Enum3476 = 74
-	Enum3476_ENUM_VALUE3552 Enum3476 = 75
-	Enum3476_ENUM_VALUE3553 Enum3476 = 76
-	Enum3476_ENUM_VALUE3554 Enum3476 = 77
-	Enum3476_ENUM_VALUE3555 Enum3476 = 78
-	Enum3476_ENUM_VALUE3556 Enum3476 = 79
-	Enum3476_ENUM_VALUE3557 Enum3476 = 80
-	Enum3476_ENUM_VALUE3558 Enum3476 = 81
-	Enum3476_ENUM_VALUE3559 Enum3476 = 82
-	Enum3476_ENUM_VALUE3560 Enum3476 = 83
-	Enum3476_ENUM_VALUE3561 Enum3476 = 84
-	Enum3476_ENUM_VALUE3562 Enum3476 = 85
-	Enum3476_ENUM_VALUE3563 Enum3476 = 86
-	Enum3476_ENUM_VALUE3564 Enum3476 = 87
-	Enum3476_ENUM_VALUE3565 Enum3476 = 88
-	Enum3476_ENUM_VALUE3566 Enum3476 = 89
-	Enum3476_ENUM_VALUE3567 Enum3476 = 90
-	Enum3476_ENUM_VALUE3568 Enum3476 = 91
-	Enum3476_ENUM_VALUE3569 Enum3476 = 92
-	Enum3476_ENUM_VALUE3570 Enum3476 = 93
-	Enum3476_ENUM_VALUE3571 Enum3476 = 94
-	Enum3476_ENUM_VALUE3572 Enum3476 = 95
-	Enum3476_ENUM_VALUE3573 Enum3476 = 96
-	Enum3476_ENUM_VALUE3574 Enum3476 = 97
-	Enum3476_ENUM_VALUE3575 Enum3476 = 98
-	Enum3476_ENUM_VALUE3576 Enum3476 = 99
-	Enum3476_ENUM_VALUE3577 Enum3476 = 100
-	Enum3476_ENUM_VALUE3578 Enum3476 = 101
-	Enum3476_ENUM_VALUE3579 Enum3476 = 102
-	Enum3476_ENUM_VALUE3580 Enum3476 = 103
-	Enum3476_ENUM_VALUE3581 Enum3476 = 104
-	Enum3476_ENUM_VALUE3582 Enum3476 = 105
-	Enum3476_ENUM_VALUE3583 Enum3476 = 106
-	Enum3476_ENUM_VALUE3584 Enum3476 = 107
-	Enum3476_ENUM_VALUE3585 Enum3476 = 108
-	Enum3476_ENUM_VALUE3586 Enum3476 = 109
-	Enum3476_ENUM_VALUE3587 Enum3476 = 110
-	Enum3476_ENUM_VALUE3588 Enum3476 = 111
-	Enum3476_ENUM_VALUE3589 Enum3476 = 112
-	Enum3476_ENUM_VALUE3590 Enum3476 = 113
-	Enum3476_ENUM_VALUE3591 Enum3476 = 114
-	Enum3476_ENUM_VALUE3592 Enum3476 = 115
-	Enum3476_ENUM_VALUE3593 Enum3476 = 116
-	Enum3476_ENUM_VALUE3594 Enum3476 = 117
-	Enum3476_ENUM_VALUE3595 Enum3476 = 118
-	Enum3476_ENUM_VALUE3596 Enum3476 = 119
-	Enum3476_ENUM_VALUE3597 Enum3476 = 120
-	Enum3476_ENUM_VALUE3598 Enum3476 = 121
-	Enum3476_ENUM_VALUE3599 Enum3476 = 122
-	Enum3476_ENUM_VALUE3600 Enum3476 = 123
-	Enum3476_ENUM_VALUE3601 Enum3476 = 124
-	Enum3476_ENUM_VALUE3602 Enum3476 = 125
-	Enum3476_ENUM_VALUE3603 Enum3476 = 126
-	Enum3476_ENUM_VALUE3604 Enum3476 = 127
-	Enum3476_ENUM_VALUE3605 Enum3476 = 128
-	Enum3476_ENUM_VALUE3606 Enum3476 = 129
-	Enum3476_ENUM_VALUE3607 Enum3476 = 130
-	Enum3476_ENUM_VALUE3608 Enum3476 = 131
-	Enum3476_ENUM_VALUE3609 Enum3476 = 132
-	Enum3476_ENUM_VALUE3610 Enum3476 = 133
-	Enum3476_ENUM_VALUE3611 Enum3476 = 134
-	Enum3476_ENUM_VALUE3612 Enum3476 = 135
-	Enum3476_ENUM_VALUE3613 Enum3476 = 136
-	Enum3476_ENUM_VALUE3614 Enum3476 = 137
-	Enum3476_ENUM_VALUE3615 Enum3476 = 138
-	Enum3476_ENUM_VALUE3616 Enum3476 = 139
-	Enum3476_ENUM_VALUE3617 Enum3476 = 140
-	Enum3476_ENUM_VALUE3618 Enum3476 = 141
-	Enum3476_ENUM_VALUE3619 Enum3476 = 142
-	Enum3476_ENUM_VALUE3620 Enum3476 = 143
-	Enum3476_ENUM_VALUE3621 Enum3476 = 144
-	Enum3476_ENUM_VALUE3622 Enum3476 = 145
-	Enum3476_ENUM_VALUE3623 Enum3476 = 146
-	Enum3476_ENUM_VALUE3624 Enum3476 = 147
-	Enum3476_ENUM_VALUE3625 Enum3476 = 148
-	Enum3476_ENUM_VALUE3626 Enum3476 = 149
-	Enum3476_ENUM_VALUE3627 Enum3476 = 150
-	Enum3476_ENUM_VALUE3628 Enum3476 = 151
-	Enum3476_ENUM_VALUE3629 Enum3476 = 152
-	Enum3476_ENUM_VALUE3630 Enum3476 = 153
-	Enum3476_ENUM_VALUE3631 Enum3476 = 154
-	Enum3476_ENUM_VALUE3632 Enum3476 = 155
-	Enum3476_ENUM_VALUE3633 Enum3476 = 156
-	Enum3476_ENUM_VALUE3634 Enum3476 = 157
-	Enum3476_ENUM_VALUE3635 Enum3476 = 158
-	Enum3476_ENUM_VALUE3636 Enum3476 = 159
-	Enum3476_ENUM_VALUE3637 Enum3476 = 160
-	Enum3476_ENUM_VALUE3638 Enum3476 = 161
-	Enum3476_ENUM_VALUE3639 Enum3476 = 162
-	Enum3476_ENUM_VALUE3640 Enum3476 = 163
-	Enum3476_ENUM_VALUE3641 Enum3476 = 164
-	Enum3476_ENUM_VALUE3642 Enum3476 = 165
-	Enum3476_ENUM_VALUE3643 Enum3476 = 166
-	Enum3476_ENUM_VALUE3644 Enum3476 = 167
-	Enum3476_ENUM_VALUE3645 Enum3476 = 168
-	Enum3476_ENUM_VALUE3646 Enum3476 = 169
-	Enum3476_ENUM_VALUE3647 Enum3476 = 170
-	Enum3476_ENUM_VALUE3648 Enum3476 = 171
-	Enum3476_ENUM_VALUE3649 Enum3476 = 172
-	Enum3476_ENUM_VALUE3650 Enum3476 = 173
-	Enum3476_ENUM_VALUE3651 Enum3476 = 174
-	Enum3476_ENUM_VALUE3652 Enum3476 = 175
-	Enum3476_ENUM_VALUE3653 Enum3476 = 176
-	Enum3476_ENUM_VALUE3654 Enum3476 = 177
-	Enum3476_ENUM_VALUE3655 Enum3476 = 178
-	Enum3476_ENUM_VALUE3656 Enum3476 = 179
-	Enum3476_ENUM_VALUE3657 Enum3476 = 180
-	Enum3476_ENUM_VALUE3658 Enum3476 = 181
-	Enum3476_ENUM_VALUE3659 Enum3476 = 182
-	Enum3476_ENUM_VALUE3660 Enum3476 = 183
-)
-
-// Enum value maps for Enum3476.
-var (
-	Enum3476_name = map[int32]string{
-		0:   "ENUM_VALUE3477",
-		1:   "ENUM_VALUE3478",
-		2:   "ENUM_VALUE3479",
-		3:   "ENUM_VALUE3480",
-		4:   "ENUM_VALUE3481",
-		5:   "ENUM_VALUE3482",
-		6:   "ENUM_VALUE3483",
-		7:   "ENUM_VALUE3484",
-		8:   "ENUM_VALUE3485",
-		9:   "ENUM_VALUE3486",
-		10:  "ENUM_VALUE3487",
-		11:  "ENUM_VALUE3488",
-		12:  "ENUM_VALUE3489",
-		13:  "ENUM_VALUE3490",
-		14:  "ENUM_VALUE3491",
-		15:  "ENUM_VALUE3492",
-		16:  "ENUM_VALUE3493",
-		17:  "ENUM_VALUE3494",
-		18:  "ENUM_VALUE3495",
-		19:  "ENUM_VALUE3496",
-		20:  "ENUM_VALUE3497",
-		21:  "ENUM_VALUE3498",
-		22:  "ENUM_VALUE3499",
-		23:  "ENUM_VALUE3500",
-		24:  "ENUM_VALUE3501",
-		25:  "ENUM_VALUE3502",
-		26:  "ENUM_VALUE3503",
-		27:  "ENUM_VALUE3504",
-		28:  "ENUM_VALUE3505",
-		29:  "ENUM_VALUE3506",
-		30:  "ENUM_VALUE3507",
-		31:  "ENUM_VALUE3508",
-		32:  "ENUM_VALUE3509",
-		33:  "ENUM_VALUE3510",
-		34:  "ENUM_VALUE3511",
-		35:  "ENUM_VALUE3512",
-		36:  "ENUM_VALUE3513",
-		37:  "ENUM_VALUE3514",
-		38:  "ENUM_VALUE3515",
-		39:  "ENUM_VALUE3516",
-		40:  "ENUM_VALUE3517",
-		41:  "ENUM_VALUE3518",
-		42:  "ENUM_VALUE3519",
-		43:  "ENUM_VALUE3520",
-		44:  "ENUM_VALUE3521",
-		45:  "ENUM_VALUE3522",
-		46:  "ENUM_VALUE3523",
-		47:  "ENUM_VALUE3524",
-		48:  "ENUM_VALUE3525",
-		49:  "ENUM_VALUE3526",
-		50:  "ENUM_VALUE3527",
-		51:  "ENUM_VALUE3528",
-		52:  "ENUM_VALUE3529",
-		53:  "ENUM_VALUE3530",
-		54:  "ENUM_VALUE3531",
-		55:  "ENUM_VALUE3532",
-		56:  "ENUM_VALUE3533",
-		57:  "ENUM_VALUE3534",
-		58:  "ENUM_VALUE3535",
-		59:  "ENUM_VALUE3536",
-		60:  "ENUM_VALUE3537",
-		61:  "ENUM_VALUE3538",
-		62:  "ENUM_VALUE3539",
-		63:  "ENUM_VALUE3540",
-		64:  "ENUM_VALUE3541",
-		65:  "ENUM_VALUE3542",
-		66:  "ENUM_VALUE3543",
-		67:  "ENUM_VALUE3544",
-		68:  "ENUM_VALUE3545",
-		69:  "ENUM_VALUE3546",
-		70:  "ENUM_VALUE3547",
-		71:  "ENUM_VALUE3548",
-		72:  "ENUM_VALUE3549",
-		73:  "ENUM_VALUE3550",
-		74:  "ENUM_VALUE3551",
-		75:  "ENUM_VALUE3552",
-		76:  "ENUM_VALUE3553",
-		77:  "ENUM_VALUE3554",
-		78:  "ENUM_VALUE3555",
-		79:  "ENUM_VALUE3556",
-		80:  "ENUM_VALUE3557",
-		81:  "ENUM_VALUE3558",
-		82:  "ENUM_VALUE3559",
-		83:  "ENUM_VALUE3560",
-		84:  "ENUM_VALUE3561",
-		85:  "ENUM_VALUE3562",
-		86:  "ENUM_VALUE3563",
-		87:  "ENUM_VALUE3564",
-		88:  "ENUM_VALUE3565",
-		89:  "ENUM_VALUE3566",
-		90:  "ENUM_VALUE3567",
-		91:  "ENUM_VALUE3568",
-		92:  "ENUM_VALUE3569",
-		93:  "ENUM_VALUE3570",
-		94:  "ENUM_VALUE3571",
-		95:  "ENUM_VALUE3572",
-		96:  "ENUM_VALUE3573",
-		97:  "ENUM_VALUE3574",
-		98:  "ENUM_VALUE3575",
-		99:  "ENUM_VALUE3576",
-		100: "ENUM_VALUE3577",
-		101: "ENUM_VALUE3578",
-		102: "ENUM_VALUE3579",
-		103: "ENUM_VALUE3580",
-		104: "ENUM_VALUE3581",
-		105: "ENUM_VALUE3582",
-		106: "ENUM_VALUE3583",
-		107: "ENUM_VALUE3584",
-		108: "ENUM_VALUE3585",
-		109: "ENUM_VALUE3586",
-		110: "ENUM_VALUE3587",
-		111: "ENUM_VALUE3588",
-		112: "ENUM_VALUE3589",
-		113: "ENUM_VALUE3590",
-		114: "ENUM_VALUE3591",
-		115: "ENUM_VALUE3592",
-		116: "ENUM_VALUE3593",
-		117: "ENUM_VALUE3594",
-		118: "ENUM_VALUE3595",
-		119: "ENUM_VALUE3596",
-		120: "ENUM_VALUE3597",
-		121: "ENUM_VALUE3598",
-		122: "ENUM_VALUE3599",
-		123: "ENUM_VALUE3600",
-		124: "ENUM_VALUE3601",
-		125: "ENUM_VALUE3602",
-		126: "ENUM_VALUE3603",
-		127: "ENUM_VALUE3604",
-		128: "ENUM_VALUE3605",
-		129: "ENUM_VALUE3606",
-		130: "ENUM_VALUE3607",
-		131: "ENUM_VALUE3608",
-		132: "ENUM_VALUE3609",
-		133: "ENUM_VALUE3610",
-		134: "ENUM_VALUE3611",
-		135: "ENUM_VALUE3612",
-		136: "ENUM_VALUE3613",
-		137: "ENUM_VALUE3614",
-		138: "ENUM_VALUE3615",
-		139: "ENUM_VALUE3616",
-		140: "ENUM_VALUE3617",
-		141: "ENUM_VALUE3618",
-		142: "ENUM_VALUE3619",
-		143: "ENUM_VALUE3620",
-		144: "ENUM_VALUE3621",
-		145: "ENUM_VALUE3622",
-		146: "ENUM_VALUE3623",
-		147: "ENUM_VALUE3624",
-		148: "ENUM_VALUE3625",
-		149: "ENUM_VALUE3626",
-		150: "ENUM_VALUE3627",
-		151: "ENUM_VALUE3628",
-		152: "ENUM_VALUE3629",
-		153: "ENUM_VALUE3630",
-		154: "ENUM_VALUE3631",
-		155: "ENUM_VALUE3632",
-		156: "ENUM_VALUE3633",
-		157: "ENUM_VALUE3634",
-		158: "ENUM_VALUE3635",
-		159: "ENUM_VALUE3636",
-		160: "ENUM_VALUE3637",
-		161: "ENUM_VALUE3638",
-		162: "ENUM_VALUE3639",
-		163: "ENUM_VALUE3640",
-		164: "ENUM_VALUE3641",
-		165: "ENUM_VALUE3642",
-		166: "ENUM_VALUE3643",
-		167: "ENUM_VALUE3644",
-		168: "ENUM_VALUE3645",
-		169: "ENUM_VALUE3646",
-		170: "ENUM_VALUE3647",
-		171: "ENUM_VALUE3648",
-		172: "ENUM_VALUE3649",
-		173: "ENUM_VALUE3650",
-		174: "ENUM_VALUE3651",
-		175: "ENUM_VALUE3652",
-		176: "ENUM_VALUE3653",
-		177: "ENUM_VALUE3654",
-		178: "ENUM_VALUE3655",
-		179: "ENUM_VALUE3656",
-		180: "ENUM_VALUE3657",
-		181: "ENUM_VALUE3658",
-		182: "ENUM_VALUE3659",
-		183: "ENUM_VALUE3660",
-	}
-	Enum3476_value = map[string]int32{
-		"ENUM_VALUE3477": 0,
-		"ENUM_VALUE3478": 1,
-		"ENUM_VALUE3479": 2,
-		"ENUM_VALUE3480": 3,
-		"ENUM_VALUE3481": 4,
-		"ENUM_VALUE3482": 5,
-		"ENUM_VALUE3483": 6,
-		"ENUM_VALUE3484": 7,
-		"ENUM_VALUE3485": 8,
-		"ENUM_VALUE3486": 9,
-		"ENUM_VALUE3487": 10,
-		"ENUM_VALUE3488": 11,
-		"ENUM_VALUE3489": 12,
-		"ENUM_VALUE3490": 13,
-		"ENUM_VALUE3491": 14,
-		"ENUM_VALUE3492": 15,
-		"ENUM_VALUE3493": 16,
-		"ENUM_VALUE3494": 17,
-		"ENUM_VALUE3495": 18,
-		"ENUM_VALUE3496": 19,
-		"ENUM_VALUE3497": 20,
-		"ENUM_VALUE3498": 21,
-		"ENUM_VALUE3499": 22,
-		"ENUM_VALUE3500": 23,
-		"ENUM_VALUE3501": 24,
-		"ENUM_VALUE3502": 25,
-		"ENUM_VALUE3503": 26,
-		"ENUM_VALUE3504": 27,
-		"ENUM_VALUE3505": 28,
-		"ENUM_VALUE3506": 29,
-		"ENUM_VALUE3507": 30,
-		"ENUM_VALUE3508": 31,
-		"ENUM_VALUE3509": 32,
-		"ENUM_VALUE3510": 33,
-		"ENUM_VALUE3511": 34,
-		"ENUM_VALUE3512": 35,
-		"ENUM_VALUE3513": 36,
-		"ENUM_VALUE3514": 37,
-		"ENUM_VALUE3515": 38,
-		"ENUM_VALUE3516": 39,
-		"ENUM_VALUE3517": 40,
-		"ENUM_VALUE3518": 41,
-		"ENUM_VALUE3519": 42,
-		"ENUM_VALUE3520": 43,
-		"ENUM_VALUE3521": 44,
-		"ENUM_VALUE3522": 45,
-		"ENUM_VALUE3523": 46,
-		"ENUM_VALUE3524": 47,
-		"ENUM_VALUE3525": 48,
-		"ENUM_VALUE3526": 49,
-		"ENUM_VALUE3527": 50,
-		"ENUM_VALUE3528": 51,
-		"ENUM_VALUE3529": 52,
-		"ENUM_VALUE3530": 53,
-		"ENUM_VALUE3531": 54,
-		"ENUM_VALUE3532": 55,
-		"ENUM_VALUE3533": 56,
-		"ENUM_VALUE3534": 57,
-		"ENUM_VALUE3535": 58,
-		"ENUM_VALUE3536": 59,
-		"ENUM_VALUE3537": 60,
-		"ENUM_VALUE3538": 61,
-		"ENUM_VALUE3539": 62,
-		"ENUM_VALUE3540": 63,
-		"ENUM_VALUE3541": 64,
-		"ENUM_VALUE3542": 65,
-		"ENUM_VALUE3543": 66,
-		"ENUM_VALUE3544": 67,
-		"ENUM_VALUE3545": 68,
-		"ENUM_VALUE3546": 69,
-		"ENUM_VALUE3547": 70,
-		"ENUM_VALUE3548": 71,
-		"ENUM_VALUE3549": 72,
-		"ENUM_VALUE3550": 73,
-		"ENUM_VALUE3551": 74,
-		"ENUM_VALUE3552": 75,
-		"ENUM_VALUE3553": 76,
-		"ENUM_VALUE3554": 77,
-		"ENUM_VALUE3555": 78,
-		"ENUM_VALUE3556": 79,
-		"ENUM_VALUE3557": 80,
-		"ENUM_VALUE3558": 81,
-		"ENUM_VALUE3559": 82,
-		"ENUM_VALUE3560": 83,
-		"ENUM_VALUE3561": 84,
-		"ENUM_VALUE3562": 85,
-		"ENUM_VALUE3563": 86,
-		"ENUM_VALUE3564": 87,
-		"ENUM_VALUE3565": 88,
-		"ENUM_VALUE3566": 89,
-		"ENUM_VALUE3567": 90,
-		"ENUM_VALUE3568": 91,
-		"ENUM_VALUE3569": 92,
-		"ENUM_VALUE3570": 93,
-		"ENUM_VALUE3571": 94,
-		"ENUM_VALUE3572": 95,
-		"ENUM_VALUE3573": 96,
-		"ENUM_VALUE3574": 97,
-		"ENUM_VALUE3575": 98,
-		"ENUM_VALUE3576": 99,
-		"ENUM_VALUE3577": 100,
-		"ENUM_VALUE3578": 101,
-		"ENUM_VALUE3579": 102,
-		"ENUM_VALUE3580": 103,
-		"ENUM_VALUE3581": 104,
-		"ENUM_VALUE3582": 105,
-		"ENUM_VALUE3583": 106,
-		"ENUM_VALUE3584": 107,
-		"ENUM_VALUE3585": 108,
-		"ENUM_VALUE3586": 109,
-		"ENUM_VALUE3587": 110,
-		"ENUM_VALUE3588": 111,
-		"ENUM_VALUE3589": 112,
-		"ENUM_VALUE3590": 113,
-		"ENUM_VALUE3591": 114,
-		"ENUM_VALUE3592": 115,
-		"ENUM_VALUE3593": 116,
-		"ENUM_VALUE3594": 117,
-		"ENUM_VALUE3595": 118,
-		"ENUM_VALUE3596": 119,
-		"ENUM_VALUE3597": 120,
-		"ENUM_VALUE3598": 121,
-		"ENUM_VALUE3599": 122,
-		"ENUM_VALUE3600": 123,
-		"ENUM_VALUE3601": 124,
-		"ENUM_VALUE3602": 125,
-		"ENUM_VALUE3603": 126,
-		"ENUM_VALUE3604": 127,
-		"ENUM_VALUE3605": 128,
-		"ENUM_VALUE3606": 129,
-		"ENUM_VALUE3607": 130,
-		"ENUM_VALUE3608": 131,
-		"ENUM_VALUE3609": 132,
-		"ENUM_VALUE3610": 133,
-		"ENUM_VALUE3611": 134,
-		"ENUM_VALUE3612": 135,
-		"ENUM_VALUE3613": 136,
-		"ENUM_VALUE3614": 137,
-		"ENUM_VALUE3615": 138,
-		"ENUM_VALUE3616": 139,
-		"ENUM_VALUE3617": 140,
-		"ENUM_VALUE3618": 141,
-		"ENUM_VALUE3619": 142,
-		"ENUM_VALUE3620": 143,
-		"ENUM_VALUE3621": 144,
-		"ENUM_VALUE3622": 145,
-		"ENUM_VALUE3623": 146,
-		"ENUM_VALUE3624": 147,
-		"ENUM_VALUE3625": 148,
-		"ENUM_VALUE3626": 149,
-		"ENUM_VALUE3627": 150,
-		"ENUM_VALUE3628": 151,
-		"ENUM_VALUE3629": 152,
-		"ENUM_VALUE3630": 153,
-		"ENUM_VALUE3631": 154,
-		"ENUM_VALUE3632": 155,
-		"ENUM_VALUE3633": 156,
-		"ENUM_VALUE3634": 157,
-		"ENUM_VALUE3635": 158,
-		"ENUM_VALUE3636": 159,
-		"ENUM_VALUE3637": 160,
-		"ENUM_VALUE3638": 161,
-		"ENUM_VALUE3639": 162,
-		"ENUM_VALUE3640": 163,
-		"ENUM_VALUE3641": 164,
-		"ENUM_VALUE3642": 165,
-		"ENUM_VALUE3643": 166,
-		"ENUM_VALUE3644": 167,
-		"ENUM_VALUE3645": 168,
-		"ENUM_VALUE3646": 169,
-		"ENUM_VALUE3647": 170,
-		"ENUM_VALUE3648": 171,
-		"ENUM_VALUE3649": 172,
-		"ENUM_VALUE3650": 173,
-		"ENUM_VALUE3651": 174,
-		"ENUM_VALUE3652": 175,
-		"ENUM_VALUE3653": 176,
-		"ENUM_VALUE3654": 177,
-		"ENUM_VALUE3655": 178,
-		"ENUM_VALUE3656": 179,
-		"ENUM_VALUE3657": 180,
-		"ENUM_VALUE3658": 181,
-		"ENUM_VALUE3659": 182,
-		"ENUM_VALUE3660": 183,
-	}
-)
-
-func (x Enum3476) Enum() *Enum3476 {
-	p := new(Enum3476)
-	*p = x
-	return p
-}
-
-func (x Enum3476) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum3476) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[1].Descriptor()
-}
-
-func (Enum3476) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[1]
-}
-
-func (x Enum3476) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum3476) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum3476(num)
-	return nil
-}
-
-// Deprecated: Use Enum3476.Descriptor instead.
-func (Enum3476) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{1}
-}
-
-type Enum3805 int32
-
-const (
-	Enum3805_ENUM_VALUE3806 Enum3805 = 0
-	Enum3805_ENUM_VALUE3807 Enum3805 = 1
-	Enum3805_ENUM_VALUE3808 Enum3805 = 2
-	Enum3805_ENUM_VALUE3809 Enum3805 = 3
-	Enum3805_ENUM_VALUE3810 Enum3805 = 4
-	Enum3805_ENUM_VALUE3811 Enum3805 = 5
-	Enum3805_ENUM_VALUE3812 Enum3805 = 6
-	Enum3805_ENUM_VALUE3813 Enum3805 = 7
-	Enum3805_ENUM_VALUE3814 Enum3805 = 8
-	Enum3805_ENUM_VALUE3815 Enum3805 = 9
-	Enum3805_ENUM_VALUE3816 Enum3805 = 11
-	Enum3805_ENUM_VALUE3817 Enum3805 = 10
-)
-
-// Enum value maps for Enum3805.
-var (
-	Enum3805_name = map[int32]string{
-		0:  "ENUM_VALUE3806",
-		1:  "ENUM_VALUE3807",
-		2:  "ENUM_VALUE3808",
-		3:  "ENUM_VALUE3809",
-		4:  "ENUM_VALUE3810",
-		5:  "ENUM_VALUE3811",
-		6:  "ENUM_VALUE3812",
-		7:  "ENUM_VALUE3813",
-		8:  "ENUM_VALUE3814",
-		9:  "ENUM_VALUE3815",
-		11: "ENUM_VALUE3816",
-		10: "ENUM_VALUE3817",
-	}
-	Enum3805_value = map[string]int32{
-		"ENUM_VALUE3806": 0,
-		"ENUM_VALUE3807": 1,
-		"ENUM_VALUE3808": 2,
-		"ENUM_VALUE3809": 3,
-		"ENUM_VALUE3810": 4,
-		"ENUM_VALUE3811": 5,
-		"ENUM_VALUE3812": 6,
-		"ENUM_VALUE3813": 7,
-		"ENUM_VALUE3814": 8,
-		"ENUM_VALUE3815": 9,
-		"ENUM_VALUE3816": 11,
-		"ENUM_VALUE3817": 10,
-	}
-)
-
-func (x Enum3805) Enum() *Enum3805 {
-	p := new(Enum3805)
-	*p = x
-	return p
-}
-
-func (x Enum3805) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum3805) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[2].Descriptor()
-}
-
-func (Enum3805) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[2]
-}
-
-func (x Enum3805) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum3805) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum3805(num)
-	return nil
-}
-
-// Deprecated: Use Enum3805.Descriptor instead.
-func (Enum3805) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{2}
-}
-
-type Enum3783 int32
-
-const (
-	Enum3783_ENUM_VALUE3784 Enum3783 = 0
-	Enum3783_ENUM_VALUE3785 Enum3783 = 1
-	Enum3783_ENUM_VALUE3786 Enum3783 = 2
-	Enum3783_ENUM_VALUE3787 Enum3783 = 3
-	Enum3783_ENUM_VALUE3788 Enum3783 = 4
-	Enum3783_ENUM_VALUE3789 Enum3783 = 5
-	Enum3783_ENUM_VALUE3790 Enum3783 = 6
-	Enum3783_ENUM_VALUE3791 Enum3783 = 7
-	Enum3783_ENUM_VALUE3792 Enum3783 = 8
-	Enum3783_ENUM_VALUE3793 Enum3783 = 9
-	Enum3783_ENUM_VALUE3794 Enum3783 = 10
-	Enum3783_ENUM_VALUE3795 Enum3783 = 11
-	Enum3783_ENUM_VALUE3796 Enum3783 = 12
-	Enum3783_ENUM_VALUE3797 Enum3783 = 13
-	Enum3783_ENUM_VALUE3798 Enum3783 = 14
-	Enum3783_ENUM_VALUE3799 Enum3783 = 15
-	Enum3783_ENUM_VALUE3800 Enum3783 = 16
-	Enum3783_ENUM_VALUE3801 Enum3783 = 20
-	Enum3783_ENUM_VALUE3802 Enum3783 = 21
-	Enum3783_ENUM_VALUE3803 Enum3783 = 50
-)
-
-// Enum value maps for Enum3783.
-var (
-	Enum3783_name = map[int32]string{
-		0:  "ENUM_VALUE3784",
-		1:  "ENUM_VALUE3785",
-		2:  "ENUM_VALUE3786",
-		3:  "ENUM_VALUE3787",
-		4:  "ENUM_VALUE3788",
-		5:  "ENUM_VALUE3789",
-		6:  "ENUM_VALUE3790",
-		7:  "ENUM_VALUE3791",
-		8:  "ENUM_VALUE3792",
-		9:  "ENUM_VALUE3793",
-		10: "ENUM_VALUE3794",
-		11: "ENUM_VALUE3795",
-		12: "ENUM_VALUE3796",
-		13: "ENUM_VALUE3797",
-		14: "ENUM_VALUE3798",
-		15: "ENUM_VALUE3799",
-		16: "ENUM_VALUE3800",
-		20: "ENUM_VALUE3801",
-		21: "ENUM_VALUE3802",
-		50: "ENUM_VALUE3803",
-	}
-	Enum3783_value = map[string]int32{
-		"ENUM_VALUE3784": 0,
-		"ENUM_VALUE3785": 1,
-		"ENUM_VALUE3786": 2,
-		"ENUM_VALUE3787": 3,
-		"ENUM_VALUE3788": 4,
-		"ENUM_VALUE3789": 5,
-		"ENUM_VALUE3790": 6,
-		"ENUM_VALUE3791": 7,
-		"ENUM_VALUE3792": 8,
-		"ENUM_VALUE3793": 9,
-		"ENUM_VALUE3794": 10,
-		"ENUM_VALUE3795": 11,
-		"ENUM_VALUE3796": 12,
-		"ENUM_VALUE3797": 13,
-		"ENUM_VALUE3798": 14,
-		"ENUM_VALUE3799": 15,
-		"ENUM_VALUE3800": 16,
-		"ENUM_VALUE3801": 20,
-		"ENUM_VALUE3802": 21,
-		"ENUM_VALUE3803": 50,
-	}
-)
-
-func (x Enum3783) Enum() *Enum3783 {
-	p := new(Enum3783)
-	*p = x
-	return p
-}
-
-func (x Enum3783) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum3783) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[3].Descriptor()
-}
-
-func (Enum3783) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[3]
-}
-
-func (x Enum3783) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum3783) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum3783(num)
-	return nil
-}
-
-// Deprecated: Use Enum3783.Descriptor instead.
-func (Enum3783) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{3}
-}
-
-type Enum3851 int32
-
-const (
-	Enum3851_ENUM_VALUE3852 Enum3851 = 0
-	Enum3851_ENUM_VALUE3853 Enum3851 = 1
-	Enum3851_ENUM_VALUE3854 Enum3851 = 2
-	Enum3851_ENUM_VALUE3855 Enum3851 = 3
-	Enum3851_ENUM_VALUE3856 Enum3851 = 4
-	Enum3851_ENUM_VALUE3857 Enum3851 = 5
-	Enum3851_ENUM_VALUE3858 Enum3851 = 6
-	Enum3851_ENUM_VALUE3859 Enum3851 = 7
-	Enum3851_ENUM_VALUE3860 Enum3851 = 8
-	Enum3851_ENUM_VALUE3861 Enum3851 = 9
-	Enum3851_ENUM_VALUE3862 Enum3851 = 10
-	Enum3851_ENUM_VALUE3863 Enum3851 = 11
-	Enum3851_ENUM_VALUE3864 Enum3851 = 12
-	Enum3851_ENUM_VALUE3865 Enum3851 = 13
-	Enum3851_ENUM_VALUE3866 Enum3851 = 14
-	Enum3851_ENUM_VALUE3867 Enum3851 = 15
-	Enum3851_ENUM_VALUE3868 Enum3851 = 16
-	Enum3851_ENUM_VALUE3869 Enum3851 = 17
-)
-
-// Enum value maps for Enum3851.
-var (
-	Enum3851_name = map[int32]string{
-		0:  "ENUM_VALUE3852",
-		1:  "ENUM_VALUE3853",
-		2:  "ENUM_VALUE3854",
-		3:  "ENUM_VALUE3855",
-		4:  "ENUM_VALUE3856",
-		5:  "ENUM_VALUE3857",
-		6:  "ENUM_VALUE3858",
-		7:  "ENUM_VALUE3859",
-		8:  "ENUM_VALUE3860",
-		9:  "ENUM_VALUE3861",
-		10: "ENUM_VALUE3862",
-		11: "ENUM_VALUE3863",
-		12: "ENUM_VALUE3864",
-		13: "ENUM_VALUE3865",
-		14: "ENUM_VALUE3866",
-		15: "ENUM_VALUE3867",
-		16: "ENUM_VALUE3868",
-		17: "ENUM_VALUE3869",
-	}
-	Enum3851_value = map[string]int32{
-		"ENUM_VALUE3852": 0,
-		"ENUM_VALUE3853": 1,
-		"ENUM_VALUE3854": 2,
-		"ENUM_VALUE3855": 3,
-		"ENUM_VALUE3856": 4,
-		"ENUM_VALUE3857": 5,
-		"ENUM_VALUE3858": 6,
-		"ENUM_VALUE3859": 7,
-		"ENUM_VALUE3860": 8,
-		"ENUM_VALUE3861": 9,
-		"ENUM_VALUE3862": 10,
-		"ENUM_VALUE3863": 11,
-		"ENUM_VALUE3864": 12,
-		"ENUM_VALUE3865": 13,
-		"ENUM_VALUE3866": 14,
-		"ENUM_VALUE3867": 15,
-		"ENUM_VALUE3868": 16,
-		"ENUM_VALUE3869": 17,
-	}
-)
-
-func (x Enum3851) Enum() *Enum3851 {
-	p := new(Enum3851)
-	*p = x
-	return p
-}
-
-func (x Enum3851) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum3851) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[4].Descriptor()
-}
-
-func (Enum3851) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[4]
-}
-
-func (x Enum3851) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum3851) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum3851(num)
-	return nil
-}
-
-// Deprecated: Use Enum3851.Descriptor instead.
-func (Enum3851) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{4}
-}
-
-type UnusedEnum int32
-
-const (
-	UnusedEnum_UNUSED_ENUM_VALUE1 UnusedEnum = 0
-	UnusedEnum_UNUSED_ENUM_VALUE2 UnusedEnum = 1
-)
-
-// Enum value maps for UnusedEnum.
-var (
-	UnusedEnum_name = map[int32]string{
-		0: "UNUSED_ENUM_VALUE1",
-		1: "UNUSED_ENUM_VALUE2",
-	}
-	UnusedEnum_value = map[string]int32{
-		"UNUSED_ENUM_VALUE1": 0,
-		"UNUSED_ENUM_VALUE2": 1,
-	}
-)
-
-func (x UnusedEnum) Enum() *UnusedEnum {
-	p := new(UnusedEnum)
-	*p = x
-	return p
-}
-
-func (x UnusedEnum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (UnusedEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[5].Descriptor()
-}
-
-func (UnusedEnum) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[5]
-}
-
-func (x UnusedEnum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *UnusedEnum) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = UnusedEnum(num)
-	return nil
-}
-
-// Deprecated: Use UnusedEnum.Descriptor instead.
-func (UnusedEnum) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{5}
-}
-
-type Enum4146 int32
-
-const (
-	Enum4146_ENUM_VALUE4147 Enum4146 = 0
-	Enum4146_ENUM_VALUE4148 Enum4146 = 1
-	Enum4146_ENUM_VALUE4149 Enum4146 = 2
-	Enum4146_ENUM_VALUE4150 Enum4146 = 3
-	Enum4146_ENUM_VALUE4151 Enum4146 = 4
-)
-
-// Enum value maps for Enum4146.
-var (
-	Enum4146_name = map[int32]string{
-		0: "ENUM_VALUE4147",
-		1: "ENUM_VALUE4148",
-		2: "ENUM_VALUE4149",
-		3: "ENUM_VALUE4150",
-		4: "ENUM_VALUE4151",
-	}
-	Enum4146_value = map[string]int32{
-		"ENUM_VALUE4147": 0,
-		"ENUM_VALUE4148": 1,
-		"ENUM_VALUE4149": 2,
-		"ENUM_VALUE4150": 3,
-		"ENUM_VALUE4151": 4,
-	}
-)
-
-func (x Enum4146) Enum() *Enum4146 {
-	p := new(Enum4146)
-	*p = x
-	return p
-}
-
-func (x Enum4146) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum4146) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[6].Descriptor()
-}
-
-func (Enum4146) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[6]
-}
-
-func (x Enum4146) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum4146) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum4146(num)
-	return nil
-}
-
-// Deprecated: Use Enum4146.Descriptor instead.
-func (Enum4146) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{6}
-}
-
-type Enum4160 int32
-
-const (
-	Enum4160_ENUM_VALUE4161 Enum4160 = 0
-	Enum4160_ENUM_VALUE4162 Enum4160 = 1
-)
-
-// Enum value maps for Enum4160.
-var (
-	Enum4160_name = map[int32]string{
-		0: "ENUM_VALUE4161",
-		1: "ENUM_VALUE4162",
-	}
-	Enum4160_value = map[string]int32{
-		"ENUM_VALUE4161": 0,
-		"ENUM_VALUE4162": 1,
-	}
-)
-
-func (x Enum4160) Enum() *Enum4160 {
-	p := new(Enum4160)
-	*p = x
-	return p
-}
-
-func (x Enum4160) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum4160) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[7].Descriptor()
-}
-
-func (Enum4160) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[7]
-}
-
-func (x Enum4160) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum4160) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum4160(num)
-	return nil
-}
-
-// Deprecated: Use Enum4160.Descriptor instead.
-func (Enum4160) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{7}
-}
-
-type Enum4152 int32
-
-const (
-	Enum4152_ENUM_VALUE4153 Enum4152 = 0
-	Enum4152_ENUM_VALUE4154 Enum4152 = 1
-	Enum4152_ENUM_VALUE4155 Enum4152 = 2
-	Enum4152_ENUM_VALUE4156 Enum4152 = 3
-	Enum4152_ENUM_VALUE4157 Enum4152 = 4
-	Enum4152_ENUM_VALUE4158 Enum4152 = 5
-	Enum4152_ENUM_VALUE4159 Enum4152 = 6
-)
-
-// Enum value maps for Enum4152.
-var (
-	Enum4152_name = map[int32]string{
-		0: "ENUM_VALUE4153",
-		1: "ENUM_VALUE4154",
-		2: "ENUM_VALUE4155",
-		3: "ENUM_VALUE4156",
-		4: "ENUM_VALUE4157",
-		5: "ENUM_VALUE4158",
-		6: "ENUM_VALUE4159",
-	}
-	Enum4152_value = map[string]int32{
-		"ENUM_VALUE4153": 0,
-		"ENUM_VALUE4154": 1,
-		"ENUM_VALUE4155": 2,
-		"ENUM_VALUE4156": 3,
-		"ENUM_VALUE4157": 4,
-		"ENUM_VALUE4158": 5,
-		"ENUM_VALUE4159": 6,
-	}
-)
-
-func (x Enum4152) Enum() *Enum4152 {
-	p := new(Enum4152)
-	*p = x
-	return p
-}
-
-func (x Enum4152) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum4152) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[8].Descriptor()
-}
-
-func (Enum4152) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[8]
-}
-
-func (x Enum4152) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum4152) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum4152(num)
-	return nil
-}
-
-// Deprecated: Use Enum4152.Descriptor instead.
-func (Enum4152) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{8}
-}
-
-type Enum6025 int32
-
-const (
-	Enum6025_ENUM_VALUE6026 Enum6025 = 0
-	Enum6025_ENUM_VALUE6027 Enum6025 = 1
-	Enum6025_ENUM_VALUE6028 Enum6025 = 2
-	Enum6025_ENUM_VALUE6029 Enum6025 = 3
-	Enum6025_ENUM_VALUE6030 Enum6025 = 4
-	Enum6025_ENUM_VALUE6031 Enum6025 = 5
-	Enum6025_ENUM_VALUE6032 Enum6025 = 6
-	Enum6025_ENUM_VALUE6033 Enum6025 = 7
-	Enum6025_ENUM_VALUE6034 Enum6025 = 8
-	Enum6025_ENUM_VALUE6035 Enum6025 = 9
-	Enum6025_ENUM_VALUE6036 Enum6025 = 10
-	Enum6025_ENUM_VALUE6037 Enum6025 = 11
-	Enum6025_ENUM_VALUE6038 Enum6025 = 12
-	Enum6025_ENUM_VALUE6039 Enum6025 = 13
-	Enum6025_ENUM_VALUE6040 Enum6025 = 14
-	Enum6025_ENUM_VALUE6041 Enum6025 = 15
-	Enum6025_ENUM_VALUE6042 Enum6025 = 16
-	Enum6025_ENUM_VALUE6043 Enum6025 = 17
-	Enum6025_ENUM_VALUE6044 Enum6025 = 18
-	Enum6025_ENUM_VALUE6045 Enum6025 = 19
-	Enum6025_ENUM_VALUE6046 Enum6025 = 20
-	Enum6025_ENUM_VALUE6047 Enum6025 = 21
-)
-
-// Enum value maps for Enum6025.
-var (
-	Enum6025_name = map[int32]string{
-		0:  "ENUM_VALUE6026",
-		1:  "ENUM_VALUE6027",
-		2:  "ENUM_VALUE6028",
-		3:  "ENUM_VALUE6029",
-		4:  "ENUM_VALUE6030",
-		5:  "ENUM_VALUE6031",
-		6:  "ENUM_VALUE6032",
-		7:  "ENUM_VALUE6033",
-		8:  "ENUM_VALUE6034",
-		9:  "ENUM_VALUE6035",
-		10: "ENUM_VALUE6036",
-		11: "ENUM_VALUE6037",
-		12: "ENUM_VALUE6038",
-		13: "ENUM_VALUE6039",
-		14: "ENUM_VALUE6040",
-		15: "ENUM_VALUE6041",
-		16: "ENUM_VALUE6042",
-		17: "ENUM_VALUE6043",
-		18: "ENUM_VALUE6044",
-		19: "ENUM_VALUE6045",
-		20: "ENUM_VALUE6046",
-		21: "ENUM_VALUE6047",
-	}
-	Enum6025_value = map[string]int32{
-		"ENUM_VALUE6026": 0,
-		"ENUM_VALUE6027": 1,
-		"ENUM_VALUE6028": 2,
-		"ENUM_VALUE6029": 3,
-		"ENUM_VALUE6030": 4,
-		"ENUM_VALUE6031": 5,
-		"ENUM_VALUE6032": 6,
-		"ENUM_VALUE6033": 7,
-		"ENUM_VALUE6034": 8,
-		"ENUM_VALUE6035": 9,
-		"ENUM_VALUE6036": 10,
-		"ENUM_VALUE6037": 11,
-		"ENUM_VALUE6038": 12,
-		"ENUM_VALUE6039": 13,
-		"ENUM_VALUE6040": 14,
-		"ENUM_VALUE6041": 15,
-		"ENUM_VALUE6042": 16,
-		"ENUM_VALUE6043": 17,
-		"ENUM_VALUE6044": 18,
-		"ENUM_VALUE6045": 19,
-		"ENUM_VALUE6046": 20,
-		"ENUM_VALUE6047": 21,
-	}
-)
-
-func (x Enum6025) Enum() *Enum6025 {
-	p := new(Enum6025)
-	*p = x
-	return p
-}
-
-func (x Enum6025) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum6025) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[9].Descriptor()
-}
-
-func (Enum6025) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[9]
-}
-
-func (x Enum6025) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum6025) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum6025(num)
-	return nil
-}
-
-// Deprecated: Use Enum6025.Descriptor instead.
-func (Enum6025) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{9}
-}
-
-type Enum6065 int32
-
-const (
-	Enum6065_ENUM_VALUE6066 Enum6065 = 0
-	Enum6065_ENUM_VALUE6067 Enum6065 = 1
-	Enum6065_ENUM_VALUE6068 Enum6065 = 2
-	Enum6065_ENUM_VALUE6069 Enum6065 = 3
-	Enum6065_ENUM_VALUE6070 Enum6065 = 4
-	Enum6065_ENUM_VALUE6071 Enum6065 = 5
-	Enum6065_ENUM_VALUE6072 Enum6065 = 6
-	Enum6065_ENUM_VALUE6073 Enum6065 = 7
-	Enum6065_ENUM_VALUE6074 Enum6065 = 8
-	Enum6065_ENUM_VALUE6075 Enum6065 = 9
-	Enum6065_ENUM_VALUE6076 Enum6065 = 10
-	Enum6065_ENUM_VALUE6077 Enum6065 = 11
-	Enum6065_ENUM_VALUE6078 Enum6065 = 12
-	Enum6065_ENUM_VALUE6079 Enum6065 = 13
-	Enum6065_ENUM_VALUE6080 Enum6065 = 14
-)
-
-// Enum value maps for Enum6065.
-var (
-	Enum6065_name = map[int32]string{
-		0:  "ENUM_VALUE6066",
-		1:  "ENUM_VALUE6067",
-		2:  "ENUM_VALUE6068",
-		3:  "ENUM_VALUE6069",
-		4:  "ENUM_VALUE6070",
-		5:  "ENUM_VALUE6071",
-		6:  "ENUM_VALUE6072",
-		7:  "ENUM_VALUE6073",
-		8:  "ENUM_VALUE6074",
-		9:  "ENUM_VALUE6075",
-		10: "ENUM_VALUE6076",
-		11: "ENUM_VALUE6077",
-		12: "ENUM_VALUE6078",
-		13: "ENUM_VALUE6079",
-		14: "ENUM_VALUE6080",
-	}
-	Enum6065_value = map[string]int32{
-		"ENUM_VALUE6066": 0,
-		"ENUM_VALUE6067": 1,
-		"ENUM_VALUE6068": 2,
-		"ENUM_VALUE6069": 3,
-		"ENUM_VALUE6070": 4,
-		"ENUM_VALUE6071": 5,
-		"ENUM_VALUE6072": 6,
-		"ENUM_VALUE6073": 7,
-		"ENUM_VALUE6074": 8,
-		"ENUM_VALUE6075": 9,
-		"ENUM_VALUE6076": 10,
-		"ENUM_VALUE6077": 11,
-		"ENUM_VALUE6078": 12,
-		"ENUM_VALUE6079": 13,
-		"ENUM_VALUE6080": 14,
-	}
-)
-
-func (x Enum6065) Enum() *Enum6065 {
-	p := new(Enum6065)
-	*p = x
-	return p
-}
-
-func (x Enum6065) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum6065) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[10].Descriptor()
-}
-
-func (Enum6065) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[10]
-}
-
-func (x Enum6065) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum6065) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum6065(num)
-	return nil
-}
-
-// Deprecated: Use Enum6065.Descriptor instead.
-func (Enum6065) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{10}
-}
-
-type Enum6579 int32
-
-const (
-	Enum6579_ENUM_VALUE6580 Enum6579 = 0
-	Enum6579_ENUM_VALUE6581 Enum6579 = 2
-	Enum6579_ENUM_VALUE6582 Enum6579 = 3
-	Enum6579_ENUM_VALUE6583 Enum6579 = 5
-	Enum6579_ENUM_VALUE6584 Enum6579 = 10
-	Enum6579_ENUM_VALUE6585 Enum6579 = 15
-	Enum6579_ENUM_VALUE6586 Enum6579 = 25
-	Enum6579_ENUM_VALUE6587 Enum6579 = 30
-)
-
-// Enum value maps for Enum6579.
-var (
-	Enum6579_name = map[int32]string{
-		0:  "ENUM_VALUE6580",
-		2:  "ENUM_VALUE6581",
-		3:  "ENUM_VALUE6582",
-		5:  "ENUM_VALUE6583",
-		10: "ENUM_VALUE6584",
-		15: "ENUM_VALUE6585",
-		25: "ENUM_VALUE6586",
-		30: "ENUM_VALUE6587",
-	}
-	Enum6579_value = map[string]int32{
-		"ENUM_VALUE6580": 0,
-		"ENUM_VALUE6581": 2,
-		"ENUM_VALUE6582": 3,
-		"ENUM_VALUE6583": 5,
-		"ENUM_VALUE6584": 10,
-		"ENUM_VALUE6585": 15,
-		"ENUM_VALUE6586": 25,
-		"ENUM_VALUE6587": 30,
-	}
-)
-
-func (x Enum6579) Enum() *Enum6579 {
-	p := new(Enum6579)
-	*p = x
-	return p
-}
-
-func (x Enum6579) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum6579) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[11].Descriptor()
-}
-
-func (Enum6579) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[11]
-}
-
-func (x Enum6579) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum6579) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum6579(num)
-	return nil
-}
-
-// Deprecated: Use Enum6579.Descriptor instead.
-func (Enum6579) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{11}
-}
-
-type Enum6588 int32
-
-const (
-	Enum6588_ENUM_VALUE6589 Enum6588 = 0
-	Enum6588_ENUM_VALUE6590 Enum6588 = 1
-	Enum6588_ENUM_VALUE6591 Enum6588 = 2
-	Enum6588_ENUM_VALUE6592 Enum6588 = 3
-	Enum6588_ENUM_VALUE6593 Enum6588 = 4
-	Enum6588_ENUM_VALUE6594 Enum6588 = 5
-	Enum6588_ENUM_VALUE6595 Enum6588 = 6
-	Enum6588_ENUM_VALUE6596 Enum6588 = 7
-	Enum6588_ENUM_VALUE6597 Enum6588 = 8
-	Enum6588_ENUM_VALUE6598 Enum6588 = 9
-	Enum6588_ENUM_VALUE6599 Enum6588 = 10
-	Enum6588_ENUM_VALUE6600 Enum6588 = 11
-	Enum6588_ENUM_VALUE6601 Enum6588 = 12
-	Enum6588_ENUM_VALUE6602 Enum6588 = 13
-	Enum6588_ENUM_VALUE6603 Enum6588 = 14
-	Enum6588_ENUM_VALUE6604 Enum6588 = 15
-	Enum6588_ENUM_VALUE6605 Enum6588 = 16
-	Enum6588_ENUM_VALUE6606 Enum6588 = 17
-	Enum6588_ENUM_VALUE6607 Enum6588 = 19
-	Enum6588_ENUM_VALUE6608 Enum6588 = 20
-	Enum6588_ENUM_VALUE6609 Enum6588 = 21
-	Enum6588_ENUM_VALUE6610 Enum6588 = 22
-	Enum6588_ENUM_VALUE6611 Enum6588 = 23
-	Enum6588_ENUM_VALUE6612 Enum6588 = 24
-	Enum6588_ENUM_VALUE6613 Enum6588 = 25
-	Enum6588_ENUM_VALUE6614 Enum6588 = 26
-	Enum6588_ENUM_VALUE6615 Enum6588 = 27
-	Enum6588_ENUM_VALUE6616 Enum6588 = 28
-	Enum6588_ENUM_VALUE6617 Enum6588 = 29
-	Enum6588_ENUM_VALUE6618 Enum6588 = 30
-	Enum6588_ENUM_VALUE6619 Enum6588 = 31
-	Enum6588_ENUM_VALUE6620 Enum6588 = 32
-	Enum6588_ENUM_VALUE6621 Enum6588 = 33
-	Enum6588_ENUM_VALUE6622 Enum6588 = 34
-)
-
-// Enum value maps for Enum6588.
-var (
-	Enum6588_name = map[int32]string{
-		0:  "ENUM_VALUE6589",
-		1:  "ENUM_VALUE6590",
-		2:  "ENUM_VALUE6591",
-		3:  "ENUM_VALUE6592",
-		4:  "ENUM_VALUE6593",
-		5:  "ENUM_VALUE6594",
-		6:  "ENUM_VALUE6595",
-		7:  "ENUM_VALUE6596",
-		8:  "ENUM_VALUE6597",
-		9:  "ENUM_VALUE6598",
-		10: "ENUM_VALUE6599",
-		11: "ENUM_VALUE6600",
-		12: "ENUM_VALUE6601",
-		13: "ENUM_VALUE6602",
-		14: "ENUM_VALUE6603",
-		15: "ENUM_VALUE6604",
-		16: "ENUM_VALUE6605",
-		17: "ENUM_VALUE6606",
-		19: "ENUM_VALUE6607",
-		20: "ENUM_VALUE6608",
-		21: "ENUM_VALUE6609",
-		22: "ENUM_VALUE6610",
-		23: "ENUM_VALUE6611",
-		24: "ENUM_VALUE6612",
-		25: "ENUM_VALUE6613",
-		26: "ENUM_VALUE6614",
-		27: "ENUM_VALUE6615",
-		28: "ENUM_VALUE6616",
-		29: "ENUM_VALUE6617",
-		30: "ENUM_VALUE6618",
-		31: "ENUM_VALUE6619",
-		32: "ENUM_VALUE6620",
-		33: "ENUM_VALUE6621",
-		34: "ENUM_VALUE6622",
-	}
-	Enum6588_value = map[string]int32{
-		"ENUM_VALUE6589": 0,
-		"ENUM_VALUE6590": 1,
-		"ENUM_VALUE6591": 2,
-		"ENUM_VALUE6592": 3,
-		"ENUM_VALUE6593": 4,
-		"ENUM_VALUE6594": 5,
-		"ENUM_VALUE6595": 6,
-		"ENUM_VALUE6596": 7,
-		"ENUM_VALUE6597": 8,
-		"ENUM_VALUE6598": 9,
-		"ENUM_VALUE6599": 10,
-		"ENUM_VALUE6600": 11,
-		"ENUM_VALUE6601": 12,
-		"ENUM_VALUE6602": 13,
-		"ENUM_VALUE6603": 14,
-		"ENUM_VALUE6604": 15,
-		"ENUM_VALUE6605": 16,
-		"ENUM_VALUE6606": 17,
-		"ENUM_VALUE6607": 19,
-		"ENUM_VALUE6608": 20,
-		"ENUM_VALUE6609": 21,
-		"ENUM_VALUE6610": 22,
-		"ENUM_VALUE6611": 23,
-		"ENUM_VALUE6612": 24,
-		"ENUM_VALUE6613": 25,
-		"ENUM_VALUE6614": 26,
-		"ENUM_VALUE6615": 27,
-		"ENUM_VALUE6616": 28,
-		"ENUM_VALUE6617": 29,
-		"ENUM_VALUE6618": 30,
-		"ENUM_VALUE6619": 31,
-		"ENUM_VALUE6620": 32,
-		"ENUM_VALUE6621": 33,
-		"ENUM_VALUE6622": 34,
-	}
-)
-
-func (x Enum6588) Enum() *Enum6588 {
-	p := new(Enum6588)
-	*p = x
-	return p
-}
-
-func (x Enum6588) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum6588) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[12].Descriptor()
-}
-
-func (Enum6588) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[12]
-}
-
-func (x Enum6588) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum6588) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum6588(num)
-	return nil
-}
-
-// Deprecated: Use Enum6588.Descriptor instead.
-func (Enum6588) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{12}
-}
-
-type Enum6769 int32
-
-const (
-	Enum6769_ENUM_VALUE6770 Enum6769 = 0
-	Enum6769_ENUM_VALUE6771 Enum6769 = 1
-	Enum6769_ENUM_VALUE6772 Enum6769 = 2
-)
-
-// Enum value maps for Enum6769.
-var (
-	Enum6769_name = map[int32]string{
-		0: "ENUM_VALUE6770",
-		1: "ENUM_VALUE6771",
-		2: "ENUM_VALUE6772",
-	}
-	Enum6769_value = map[string]int32{
-		"ENUM_VALUE6770": 0,
-		"ENUM_VALUE6771": 1,
-		"ENUM_VALUE6772": 2,
-	}
-)
-
-func (x Enum6769) Enum() *Enum6769 {
-	p := new(Enum6769)
-	*p = x
-	return p
-}
-
-func (x Enum6769) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum6769) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[13].Descriptor()
-}
-
-func (Enum6769) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[13]
-}
-
-func (x Enum6769) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum6769) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum6769(num)
-	return nil
-}
-
-// Deprecated: Use Enum6769.Descriptor instead.
-func (Enum6769) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{13}
-}
-
-type Enum6774 int32
-
-const (
-	Enum6774_ENUM_VALUE6775 Enum6774 = 0
-	Enum6774_ENUM_VALUE6776 Enum6774 = 1
-	Enum6774_ENUM_VALUE6777 Enum6774 = 2
-	Enum6774_ENUM_VALUE6778 Enum6774 = 3
-	Enum6774_ENUM_VALUE6779 Enum6774 = 4
-	Enum6774_ENUM_VALUE6780 Enum6774 = 5
-	Enum6774_ENUM_VALUE6781 Enum6774 = 6
-)
-
-// Enum value maps for Enum6774.
-var (
-	Enum6774_name = map[int32]string{
-		0: "ENUM_VALUE6775",
-		1: "ENUM_VALUE6776",
-		2: "ENUM_VALUE6777",
-		3: "ENUM_VALUE6778",
-		4: "ENUM_VALUE6779",
-		5: "ENUM_VALUE6780",
-		6: "ENUM_VALUE6781",
-	}
-	Enum6774_value = map[string]int32{
-		"ENUM_VALUE6775": 0,
-		"ENUM_VALUE6776": 1,
-		"ENUM_VALUE6777": 2,
-		"ENUM_VALUE6778": 3,
-		"ENUM_VALUE6779": 4,
-		"ENUM_VALUE6780": 5,
-		"ENUM_VALUE6781": 6,
-	}
-)
-
-func (x Enum6774) Enum() *Enum6774 {
-	p := new(Enum6774)
-	*p = x
-	return p
-}
-
-func (x Enum6774) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum6774) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[14].Descriptor()
-}
-
-func (Enum6774) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[14]
-}
-
-func (x Enum6774) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum6774) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum6774(num)
-	return nil
-}
-
-// Deprecated: Use Enum6774.Descriptor instead.
-func (Enum6774) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{14}
-}
-
-type Enum6782 int32
-
-const (
-	Enum6782_ENUM_VALUE6783 Enum6782 = 0
-	Enum6782_ENUM_VALUE6784 Enum6782 = 1
-	Enum6782_ENUM_VALUE6785 Enum6782 = 2
-	Enum6782_ENUM_VALUE6786 Enum6782 = 3
-	Enum6782_ENUM_VALUE6787 Enum6782 = 4
-	Enum6782_ENUM_VALUE6788 Enum6782 = 5
-)
-
-// Enum value maps for Enum6782.
-var (
-	Enum6782_name = map[int32]string{
-		0: "ENUM_VALUE6783",
-		1: "ENUM_VALUE6784",
-		2: "ENUM_VALUE6785",
-		3: "ENUM_VALUE6786",
-		4: "ENUM_VALUE6787",
-		5: "ENUM_VALUE6788",
-	}
-	Enum6782_value = map[string]int32{
-		"ENUM_VALUE6783": 0,
-		"ENUM_VALUE6784": 1,
-		"ENUM_VALUE6785": 2,
-		"ENUM_VALUE6786": 3,
-		"ENUM_VALUE6787": 4,
-		"ENUM_VALUE6788": 5,
-	}
-)
-
-func (x Enum6782) Enum() *Enum6782 {
-	p := new(Enum6782)
-	*p = x
-	return p
-}
-
-func (x Enum6782) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum6782) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[15].Descriptor()
-}
-
-func (Enum6782) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[15]
-}
-
-func (x Enum6782) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum6782) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum6782(num)
-	return nil
-}
-
-// Deprecated: Use Enum6782.Descriptor instead.
-func (Enum6782) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{15}
-}
-
-type Enum6858 int32
-
-const (
-	Enum6858_ENUM_VALUE6859 Enum6858 = 1
-	Enum6858_ENUM_VALUE6860 Enum6858 = 2
-	Enum6858_ENUM_VALUE6861 Enum6858 = 3
-	Enum6858_ENUM_VALUE6862 Enum6858 = 4
-)
-
-// Enum value maps for Enum6858.
-var (
-	Enum6858_name = map[int32]string{
-		1: "ENUM_VALUE6859",
-		2: "ENUM_VALUE6860",
-		3: "ENUM_VALUE6861",
-		4: "ENUM_VALUE6862",
-	}
-	Enum6858_value = map[string]int32{
-		"ENUM_VALUE6859": 1,
-		"ENUM_VALUE6860": 2,
-		"ENUM_VALUE6861": 3,
-		"ENUM_VALUE6862": 4,
-	}
-)
-
-func (x Enum6858) Enum() *Enum6858 {
-	p := new(Enum6858)
-	*p = x
-	return p
-}
-
-func (x Enum6858) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum6858) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[16].Descriptor()
-}
-
-func (Enum6858) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[16]
-}
-
-func (x Enum6858) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum6858) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum6858(num)
-	return nil
-}
-
-// Deprecated: Use Enum6858.Descriptor instead.
-func (Enum6858) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{16}
-}
-
-type Enum6815 int32
-
-const (
-	Enum6815_ENUM_VALUE6816 Enum6815 = 0
-	Enum6815_ENUM_VALUE6817 Enum6815 = 1
-	Enum6815_ENUM_VALUE6818 Enum6815 = 2
-	Enum6815_ENUM_VALUE6819 Enum6815 = 3
-	Enum6815_ENUM_VALUE6820 Enum6815 = 4
-	Enum6815_ENUM_VALUE6821 Enum6815 = 5
-)
-
-// Enum value maps for Enum6815.
-var (
-	Enum6815_name = map[int32]string{
-		0: "ENUM_VALUE6816",
-		1: "ENUM_VALUE6817",
-		2: "ENUM_VALUE6818",
-		3: "ENUM_VALUE6819",
-		4: "ENUM_VALUE6820",
-		5: "ENUM_VALUE6821",
-	}
-	Enum6815_value = map[string]int32{
-		"ENUM_VALUE6816": 0,
-		"ENUM_VALUE6817": 1,
-		"ENUM_VALUE6818": 2,
-		"ENUM_VALUE6819": 3,
-		"ENUM_VALUE6820": 4,
-		"ENUM_VALUE6821": 5,
-	}
-)
-
-func (x Enum6815) Enum() *Enum6815 {
-	p := new(Enum6815)
-	*p = x
-	return p
-}
-
-func (x Enum6815) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum6815) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[17].Descriptor()
-}
-
-func (Enum6815) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[17]
-}
-
-func (x Enum6815) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum6815) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum6815(num)
-	return nil
-}
-
-// Deprecated: Use Enum6815.Descriptor instead.
-func (Enum6815) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{17}
-}
-
-type Enum6822 int32
-
-const (
-	Enum6822_ENUM_VALUE6823 Enum6822 = 0
-	Enum6822_ENUM_VALUE6824 Enum6822 = 1
-	Enum6822_ENUM_VALUE6825 Enum6822 = 2
-	Enum6822_ENUM_VALUE6826 Enum6822 = 3
-)
-
-// Enum value maps for Enum6822.
-var (
-	Enum6822_name = map[int32]string{
-		0: "ENUM_VALUE6823",
-		1: "ENUM_VALUE6824",
-		2: "ENUM_VALUE6825",
-		3: "ENUM_VALUE6826",
-	}
-	Enum6822_value = map[string]int32{
-		"ENUM_VALUE6823": 0,
-		"ENUM_VALUE6824": 1,
-		"ENUM_VALUE6825": 2,
-		"ENUM_VALUE6826": 3,
-	}
-)
-
-func (x Enum6822) Enum() *Enum6822 {
-	p := new(Enum6822)
-	*p = x
-	return p
-}
-
-func (x Enum6822) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum6822) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[18].Descriptor()
-}
-
-func (Enum6822) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[18]
-}
-
-func (x Enum6822) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum6822) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum6822(num)
-	return nil
-}
-
-// Deprecated: Use Enum6822.Descriptor instead.
-func (Enum6822) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{18}
-}
-
-type Enum7654 int32
-
-const (
-	Enum7654_ENUM_VALUE7655 Enum7654 = 1
-	Enum7654_ENUM_VALUE7656 Enum7654 = 2
-	Enum7654_ENUM_VALUE7657 Enum7654 = 3
-)
-
-// Enum value maps for Enum7654.
-var (
-	Enum7654_name = map[int32]string{
-		1: "ENUM_VALUE7655",
-		2: "ENUM_VALUE7656",
-		3: "ENUM_VALUE7657",
-	}
-	Enum7654_value = map[string]int32{
-		"ENUM_VALUE7655": 1,
-		"ENUM_VALUE7656": 2,
-		"ENUM_VALUE7657": 3,
-	}
-)
-
-func (x Enum7654) Enum() *Enum7654 {
-	p := new(Enum7654)
-	*p = x
-	return p
-}
-
-func (x Enum7654) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum7654) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[19].Descriptor()
-}
-
-func (Enum7654) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[19]
-}
-
-func (x Enum7654) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum7654) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum7654(num)
-	return nil
-}
-
-// Deprecated: Use Enum7654.Descriptor instead.
-func (Enum7654) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{19}
-}
-
-type Enum8292 int32
-
-const (
-	Enum8292_ENUM_VALUE8293 Enum8292 = 0
-	Enum8292_ENUM_VALUE8294 Enum8292 = 1
-	Enum8292_ENUM_VALUE8295 Enum8292 = 2
-)
-
-// Enum value maps for Enum8292.
-var (
-	Enum8292_name = map[int32]string{
-		0: "ENUM_VALUE8293",
-		1: "ENUM_VALUE8294",
-		2: "ENUM_VALUE8295",
-	}
-	Enum8292_value = map[string]int32{
-		"ENUM_VALUE8293": 0,
-		"ENUM_VALUE8294": 1,
-		"ENUM_VALUE8295": 2,
-	}
-)
-
-func (x Enum8292) Enum() *Enum8292 {
-	p := new(Enum8292)
-	*p = x
-	return p
-}
-
-func (x Enum8292) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum8292) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[20].Descriptor()
-}
-
-func (Enum8292) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[20]
-}
-
-func (x Enum8292) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum8292) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum8292(num)
-	return nil
-}
-
-// Deprecated: Use Enum8292.Descriptor instead.
-func (Enum8292) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{20}
-}
-
-type Enum8450 int32
-
-const (
-	Enum8450_ENUM_VALUE8451 Enum8450 = 0
-	Enum8450_ENUM_VALUE8452 Enum8450 = 1
-	Enum8450_ENUM_VALUE8453 Enum8450 = 2
-)
-
-// Enum value maps for Enum8450.
-var (
-	Enum8450_name = map[int32]string{
-		0: "ENUM_VALUE8451",
-		1: "ENUM_VALUE8452",
-		2: "ENUM_VALUE8453",
-	}
-	Enum8450_value = map[string]int32{
-		"ENUM_VALUE8451": 0,
-		"ENUM_VALUE8452": 1,
-		"ENUM_VALUE8453": 2,
-	}
-)
-
-func (x Enum8450) Enum() *Enum8450 {
-	p := new(Enum8450)
-	*p = x
-	return p
-}
-
-func (x Enum8450) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum8450) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[21].Descriptor()
-}
-
-func (Enum8450) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[21]
-}
-
-func (x Enum8450) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum8450) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum8450(num)
-	return nil
-}
-
-// Deprecated: Use Enum8450.Descriptor instead.
-func (Enum8450) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{21}
-}
-
-type Enum8900 int32
-
-const (
-	Enum8900_ENUM_VALUE8901 Enum8900 = 0
-	Enum8900_ENUM_VALUE8902 Enum8900 = 1
-	Enum8900_ENUM_VALUE8903 Enum8900 = 2
-	Enum8900_ENUM_VALUE8904 Enum8900 = 3
-	Enum8900_ENUM_VALUE8905 Enum8900 = 4
-)
-
-// Enum value maps for Enum8900.
-var (
-	Enum8900_name = map[int32]string{
-		0: "ENUM_VALUE8901",
-		1: "ENUM_VALUE8902",
-		2: "ENUM_VALUE8903",
-		3: "ENUM_VALUE8904",
-		4: "ENUM_VALUE8905",
-	}
-	Enum8900_value = map[string]int32{
-		"ENUM_VALUE8901": 0,
-		"ENUM_VALUE8902": 1,
-		"ENUM_VALUE8903": 2,
-		"ENUM_VALUE8904": 3,
-		"ENUM_VALUE8905": 4,
-	}
-)
-
-func (x Enum8900) Enum() *Enum8900 {
-	p := new(Enum8900)
-	*p = x
-	return p
-}
-
-func (x Enum8900) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum8900) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[22].Descriptor()
-}
-
-func (Enum8900) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[22]
-}
-
-func (x Enum8900) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum8900) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum8900(num)
-	return nil
-}
-
-// Deprecated: Use Enum8900.Descriptor instead.
-func (Enum8900) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{22}
-}
-
-type Enum8945 int32
-
-const (
-	Enum8945_ENUM_VALUE8946 Enum8945 = 0
-	Enum8945_ENUM_VALUE8947 Enum8945 = 1
-	Enum8945_ENUM_VALUE8948 Enum8945 = 2
-	Enum8945_ENUM_VALUE8949 Enum8945 = 3
-	Enum8945_ENUM_VALUE8950 Enum8945 = 4
-)
-
-// Enum value maps for Enum8945.
-var (
-	Enum8945_name = map[int32]string{
-		0: "ENUM_VALUE8946",
-		1: "ENUM_VALUE8947",
-		2: "ENUM_VALUE8948",
-		3: "ENUM_VALUE8949",
-		4: "ENUM_VALUE8950",
-	}
-	Enum8945_value = map[string]int32{
-		"ENUM_VALUE8946": 0,
-		"ENUM_VALUE8947": 1,
-		"ENUM_VALUE8948": 2,
-		"ENUM_VALUE8949": 3,
-		"ENUM_VALUE8950": 4,
-	}
-)
-
-func (x Enum8945) Enum() *Enum8945 {
-	p := new(Enum8945)
-	*p = x
-	return p
-}
-
-func (x Enum8945) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum8945) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[23].Descriptor()
-}
-
-func (Enum8945) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[23]
-}
-
-func (x Enum8945) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum8945) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum8945(num)
-	return nil
-}
-
-// Deprecated: Use Enum8945.Descriptor instead.
-func (Enum8945) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{23}
-}
-
-type Enum8951 int32
-
-const (
-	Enum8951_ENUM_VALUE8952 Enum8951 = 1
-	Enum8951_ENUM_VALUE8953 Enum8951 = 2
-	Enum8951_ENUM_VALUE8954 Enum8951 = 3
-	Enum8951_ENUM_VALUE8955 Enum8951 = 4
-	Enum8951_ENUM_VALUE8956 Enum8951 = 5
-	Enum8951_ENUM_VALUE8957 Enum8951 = 6
-	Enum8951_ENUM_VALUE8958 Enum8951 = 7
-	Enum8951_ENUM_VALUE8959 Enum8951 = 8
-)
-
-// Enum value maps for Enum8951.
-var (
-	Enum8951_name = map[int32]string{
-		1: "ENUM_VALUE8952",
-		2: "ENUM_VALUE8953",
-		3: "ENUM_VALUE8954",
-		4: "ENUM_VALUE8955",
-		5: "ENUM_VALUE8956",
-		6: "ENUM_VALUE8957",
-		7: "ENUM_VALUE8958",
-		8: "ENUM_VALUE8959",
-	}
-	Enum8951_value = map[string]int32{
-		"ENUM_VALUE8952": 1,
-		"ENUM_VALUE8953": 2,
-		"ENUM_VALUE8954": 3,
-		"ENUM_VALUE8955": 4,
-		"ENUM_VALUE8956": 5,
-		"ENUM_VALUE8957": 6,
-		"ENUM_VALUE8958": 7,
-		"ENUM_VALUE8959": 8,
-	}
-)
-
-func (x Enum8951) Enum() *Enum8951 {
-	p := new(Enum8951)
-	*p = x
-	return p
-}
-
-func (x Enum8951) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum8951) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[24].Descriptor()
-}
-
-func (Enum8951) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[24]
-}
-
-func (x Enum8951) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum8951) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum8951(num)
-	return nil
-}
-
-// Deprecated: Use Enum8951.Descriptor instead.
-func (Enum8951) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{24}
-}
-
-type Enum9243 int32
-
-const (
-	Enum9243_ENUM_VALUE9244 Enum9243 = -1
-	Enum9243_ENUM_VALUE9245 Enum9243 = 0
-	Enum9243_ENUM_VALUE9246 Enum9243 = 1
-	Enum9243_ENUM_VALUE9247 Enum9243 = 2
-	Enum9243_ENUM_VALUE9248 Enum9243 = 3
-	Enum9243_ENUM_VALUE9249 Enum9243 = 4
-	Enum9243_ENUM_VALUE9250 Enum9243 = 5
-	Enum9243_ENUM_VALUE9251 Enum9243 = 6
-	Enum9243_ENUM_VALUE9252 Enum9243 = 7
-	Enum9243_ENUM_VALUE9253 Enum9243 = 8
-	Enum9243_ENUM_VALUE9254 Enum9243 = 9
-	Enum9243_ENUM_VALUE9255 Enum9243 = 10
-	Enum9243_ENUM_VALUE9256 Enum9243 = 11
-	Enum9243_ENUM_VALUE9257 Enum9243 = 12
-	Enum9243_ENUM_VALUE9258 Enum9243 = 13
-	Enum9243_ENUM_VALUE9259 Enum9243 = 14
-	Enum9243_ENUM_VALUE9260 Enum9243 = 15
-	Enum9243_ENUM_VALUE9261 Enum9243 = 16
-	Enum9243_ENUM_VALUE9262 Enum9243 = 17
-	Enum9243_ENUM_VALUE9263 Enum9243 = 71
-	Enum9243_ENUM_VALUE9264 Enum9243 = 72
-	Enum9243_ENUM_VALUE9265 Enum9243 = 73
-	Enum9243_ENUM_VALUE9266 Enum9243 = 74
-	Enum9243_ENUM_VALUE9267 Enum9243 = 18
-	Enum9243_ENUM_VALUE9268 Enum9243 = 20
-	Enum9243_ENUM_VALUE9269 Enum9243 = 21
-	Enum9243_ENUM_VALUE9270 Enum9243 = 22
-	Enum9243_ENUM_VALUE9271 Enum9243 = 23
-	Enum9243_ENUM_VALUE9272 Enum9243 = 61
-	Enum9243_ENUM_VALUE9273 Enum9243 = 62
-	Enum9243_ENUM_VALUE9274 Enum9243 = 63
-	Enum9243_ENUM_VALUE9275 Enum9243 = 64
-	Enum9243_ENUM_VALUE9276 Enum9243 = 66
-	Enum9243_ENUM_VALUE9277 Enum9243 = 67
-	Enum9243_ENUM_VALUE9278 Enum9243 = 24
-	Enum9243_ENUM_VALUE9279 Enum9243 = 25
-	Enum9243_ENUM_VALUE9280 Enum9243 = 26
-	Enum9243_ENUM_VALUE9281 Enum9243 = 27
-	Enum9243_ENUM_VALUE9282 Enum9243 = 28
-	Enum9243_ENUM_VALUE9283 Enum9243 = 29
-	Enum9243_ENUM_VALUE9284 Enum9243 = 30
-	Enum9243_ENUM_VALUE9285 Enum9243 = 31
-	Enum9243_ENUM_VALUE9286 Enum9243 = 32
-	Enum9243_ENUM_VALUE9287 Enum9243 = 33
-	Enum9243_ENUM_VALUE9288 Enum9243 = 34
-	Enum9243_ENUM_VALUE9289 Enum9243 = 35
-	Enum9243_ENUM_VALUE9290 Enum9243 = 36
-	Enum9243_ENUM_VALUE9291 Enum9243 = 37
-	Enum9243_ENUM_VALUE9292 Enum9243 = 38
-	Enum9243_ENUM_VALUE9293 Enum9243 = 39
-	Enum9243_ENUM_VALUE9294 Enum9243 = 40
-	Enum9243_ENUM_VALUE9295 Enum9243 = 41
-	Enum9243_ENUM_VALUE9296 Enum9243 = 42
-	Enum9243_ENUM_VALUE9297 Enum9243 = 43
-	Enum9243_ENUM_VALUE9298 Enum9243 = 44
-	Enum9243_ENUM_VALUE9299 Enum9243 = 45
-	Enum9243_ENUM_VALUE9300 Enum9243 = 46
-	Enum9243_ENUM_VALUE9301 Enum9243 = 47
-	Enum9243_ENUM_VALUE9302 Enum9243 = 48
-	Enum9243_ENUM_VALUE9303 Enum9243 = 49
-	Enum9243_ENUM_VALUE9304 Enum9243 = 50
-	Enum9243_ENUM_VALUE9305 Enum9243 = 51
-	Enum9243_ENUM_VALUE9306 Enum9243 = 52
-	Enum9243_ENUM_VALUE9307 Enum9243 = 53
-	Enum9243_ENUM_VALUE9308 Enum9243 = 54
-	Enum9243_ENUM_VALUE9309 Enum9243 = 55
-	Enum9243_ENUM_VALUE9310 Enum9243 = 56
-	Enum9243_ENUM_VALUE9311 Enum9243 = 57
-	Enum9243_ENUM_VALUE9312 Enum9243 = 58
-	Enum9243_ENUM_VALUE9313 Enum9243 = 59
-	Enum9243_ENUM_VALUE9314 Enum9243 = 60
-	Enum9243_ENUM_VALUE9315 Enum9243 = 68
-	Enum9243_ENUM_VALUE9316 Enum9243 = 69
-	Enum9243_ENUM_VALUE9317 Enum9243 = 70
-	Enum9243_ENUM_VALUE9318 Enum9243 = 1000
-	Enum9243_ENUM_VALUE9319 Enum9243 = 1001
-	Enum9243_ENUM_VALUE9320 Enum9243 = 1002
-	Enum9243_ENUM_VALUE9321 Enum9243 = 1003
-	Enum9243_ENUM_VALUE9322 Enum9243 = 1004
-	Enum9243_ENUM_VALUE9323 Enum9243 = 1005
-	Enum9243_ENUM_VALUE9324 Enum9243 = 1006
-	Enum9243_ENUM_VALUE9325 Enum9243 = 1007
-	Enum9243_ENUM_VALUE9326 Enum9243 = 65
-)
-
-// Enum value maps for Enum9243.
-var (
-	Enum9243_name = map[int32]string{
-		-1:   "ENUM_VALUE9244",
-		0:    "ENUM_VALUE9245",
-		1:    "ENUM_VALUE9246",
-		2:    "ENUM_VALUE9247",
-		3:    "ENUM_VALUE9248",
-		4:    "ENUM_VALUE9249",
-		5:    "ENUM_VALUE9250",
-		6:    "ENUM_VALUE9251",
-		7:    "ENUM_VALUE9252",
-		8:    "ENUM_VALUE9253",
-		9:    "ENUM_VALUE9254",
-		10:   "ENUM_VALUE9255",
-		11:   "ENUM_VALUE9256",
-		12:   "ENUM_VALUE9257",
-		13:   "ENUM_VALUE9258",
-		14:   "ENUM_VALUE9259",
-		15:   "ENUM_VALUE9260",
-		16:   "ENUM_VALUE9261",
-		17:   "ENUM_VALUE9262",
-		71:   "ENUM_VALUE9263",
-		72:   "ENUM_VALUE9264",
-		73:   "ENUM_VALUE9265",
-		74:   "ENUM_VALUE9266",
-		18:   "ENUM_VALUE9267",
-		20:   "ENUM_VALUE9268",
-		21:   "ENUM_VALUE9269",
-		22:   "ENUM_VALUE9270",
-		23:   "ENUM_VALUE9271",
-		61:   "ENUM_VALUE9272",
-		62:   "ENUM_VALUE9273",
-		63:   "ENUM_VALUE9274",
-		64:   "ENUM_VALUE9275",
-		66:   "ENUM_VALUE9276",
-		67:   "ENUM_VALUE9277",
-		24:   "ENUM_VALUE9278",
-		25:   "ENUM_VALUE9279",
-		26:   "ENUM_VALUE9280",
-		27:   "ENUM_VALUE9281",
-		28:   "ENUM_VALUE9282",
-		29:   "ENUM_VALUE9283",
-		30:   "ENUM_VALUE9284",
-		31:   "ENUM_VALUE9285",
-		32:   "ENUM_VALUE9286",
-		33:   "ENUM_VALUE9287",
-		34:   "ENUM_VALUE9288",
-		35:   "ENUM_VALUE9289",
-		36:   "ENUM_VALUE9290",
-		37:   "ENUM_VALUE9291",
-		38:   "ENUM_VALUE9292",
-		39:   "ENUM_VALUE9293",
-		40:   "ENUM_VALUE9294",
-		41:   "ENUM_VALUE9295",
-		42:   "ENUM_VALUE9296",
-		43:   "ENUM_VALUE9297",
-		44:   "ENUM_VALUE9298",
-		45:   "ENUM_VALUE9299",
-		46:   "ENUM_VALUE9300",
-		47:   "ENUM_VALUE9301",
-		48:   "ENUM_VALUE9302",
-		49:   "ENUM_VALUE9303",
-		50:   "ENUM_VALUE9304",
-		51:   "ENUM_VALUE9305",
-		52:   "ENUM_VALUE9306",
-		53:   "ENUM_VALUE9307",
-		54:   "ENUM_VALUE9308",
-		55:   "ENUM_VALUE9309",
-		56:   "ENUM_VALUE9310",
-		57:   "ENUM_VALUE9311",
-		58:   "ENUM_VALUE9312",
-		59:   "ENUM_VALUE9313",
-		60:   "ENUM_VALUE9314",
-		68:   "ENUM_VALUE9315",
-		69:   "ENUM_VALUE9316",
-		70:   "ENUM_VALUE9317",
-		1000: "ENUM_VALUE9318",
-		1001: "ENUM_VALUE9319",
-		1002: "ENUM_VALUE9320",
-		1003: "ENUM_VALUE9321",
-		1004: "ENUM_VALUE9322",
-		1005: "ENUM_VALUE9323",
-		1006: "ENUM_VALUE9324",
-		1007: "ENUM_VALUE9325",
-		65:   "ENUM_VALUE9326",
-	}
-	Enum9243_value = map[string]int32{
-		"ENUM_VALUE9244": -1,
-		"ENUM_VALUE9245": 0,
-		"ENUM_VALUE9246": 1,
-		"ENUM_VALUE9247": 2,
-		"ENUM_VALUE9248": 3,
-		"ENUM_VALUE9249": 4,
-		"ENUM_VALUE9250": 5,
-		"ENUM_VALUE9251": 6,
-		"ENUM_VALUE9252": 7,
-		"ENUM_VALUE9253": 8,
-		"ENUM_VALUE9254": 9,
-		"ENUM_VALUE9255": 10,
-		"ENUM_VALUE9256": 11,
-		"ENUM_VALUE9257": 12,
-		"ENUM_VALUE9258": 13,
-		"ENUM_VALUE9259": 14,
-		"ENUM_VALUE9260": 15,
-		"ENUM_VALUE9261": 16,
-		"ENUM_VALUE9262": 17,
-		"ENUM_VALUE9263": 71,
-		"ENUM_VALUE9264": 72,
-		"ENUM_VALUE9265": 73,
-		"ENUM_VALUE9266": 74,
-		"ENUM_VALUE9267": 18,
-		"ENUM_VALUE9268": 20,
-		"ENUM_VALUE9269": 21,
-		"ENUM_VALUE9270": 22,
-		"ENUM_VALUE9271": 23,
-		"ENUM_VALUE9272": 61,
-		"ENUM_VALUE9273": 62,
-		"ENUM_VALUE9274": 63,
-		"ENUM_VALUE9275": 64,
-		"ENUM_VALUE9276": 66,
-		"ENUM_VALUE9277": 67,
-		"ENUM_VALUE9278": 24,
-		"ENUM_VALUE9279": 25,
-		"ENUM_VALUE9280": 26,
-		"ENUM_VALUE9281": 27,
-		"ENUM_VALUE9282": 28,
-		"ENUM_VALUE9283": 29,
-		"ENUM_VALUE9284": 30,
-		"ENUM_VALUE9285": 31,
-		"ENUM_VALUE9286": 32,
-		"ENUM_VALUE9287": 33,
-		"ENUM_VALUE9288": 34,
-		"ENUM_VALUE9289": 35,
-		"ENUM_VALUE9290": 36,
-		"ENUM_VALUE9291": 37,
-		"ENUM_VALUE9292": 38,
-		"ENUM_VALUE9293": 39,
-		"ENUM_VALUE9294": 40,
-		"ENUM_VALUE9295": 41,
-		"ENUM_VALUE9296": 42,
-		"ENUM_VALUE9297": 43,
-		"ENUM_VALUE9298": 44,
-		"ENUM_VALUE9299": 45,
-		"ENUM_VALUE9300": 46,
-		"ENUM_VALUE9301": 47,
-		"ENUM_VALUE9302": 48,
-		"ENUM_VALUE9303": 49,
-		"ENUM_VALUE9304": 50,
-		"ENUM_VALUE9305": 51,
-		"ENUM_VALUE9306": 52,
-		"ENUM_VALUE9307": 53,
-		"ENUM_VALUE9308": 54,
-		"ENUM_VALUE9309": 55,
-		"ENUM_VALUE9310": 56,
-		"ENUM_VALUE9311": 57,
-		"ENUM_VALUE9312": 58,
-		"ENUM_VALUE9313": 59,
-		"ENUM_VALUE9314": 60,
-		"ENUM_VALUE9315": 68,
-		"ENUM_VALUE9316": 69,
-		"ENUM_VALUE9317": 70,
-		"ENUM_VALUE9318": 1000,
-		"ENUM_VALUE9319": 1001,
-		"ENUM_VALUE9320": 1002,
-		"ENUM_VALUE9321": 1003,
-		"ENUM_VALUE9322": 1004,
-		"ENUM_VALUE9323": 1005,
-		"ENUM_VALUE9324": 1006,
-		"ENUM_VALUE9325": 1007,
-		"ENUM_VALUE9326": 65,
-	}
-)
-
-func (x Enum9243) Enum() *Enum9243 {
-	p := new(Enum9243)
-	*p = x
-	return p
-}
-
-func (x Enum9243) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum9243) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[25].Descriptor()
-}
-
-func (Enum9243) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[25]
-}
-
-func (x Enum9243) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum9243) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum9243(num)
-	return nil
-}
-
-// Deprecated: Use Enum9243.Descriptor instead.
-func (Enum9243) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{25}
-}
-
-type Enum10157 int32
-
-const (
-	Enum10157_ENUM_VALUE10158 Enum10157 = 0
-	Enum10157_ENUM_VALUE10159 Enum10157 = 1
-	Enum10157_ENUM_VALUE10160 Enum10157 = 2
-	Enum10157_ENUM_VALUE10161 Enum10157 = 3
-	Enum10157_ENUM_VALUE10162 Enum10157 = 4
-	Enum10157_ENUM_VALUE10163 Enum10157 = 5
-	Enum10157_ENUM_VALUE10164 Enum10157 = 6
-	Enum10157_ENUM_VALUE10165 Enum10157 = 7
-	Enum10157_ENUM_VALUE10166 Enum10157 = 8
-)
-
-// Enum value maps for Enum10157.
-var (
-	Enum10157_name = map[int32]string{
-		0: "ENUM_VALUE10158",
-		1: "ENUM_VALUE10159",
-		2: "ENUM_VALUE10160",
-		3: "ENUM_VALUE10161",
-		4: "ENUM_VALUE10162",
-		5: "ENUM_VALUE10163",
-		6: "ENUM_VALUE10164",
-		7: "ENUM_VALUE10165",
-		8: "ENUM_VALUE10166",
-	}
-	Enum10157_value = map[string]int32{
-		"ENUM_VALUE10158": 0,
-		"ENUM_VALUE10159": 1,
-		"ENUM_VALUE10160": 2,
-		"ENUM_VALUE10161": 3,
-		"ENUM_VALUE10162": 4,
-		"ENUM_VALUE10163": 5,
-		"ENUM_VALUE10164": 6,
-		"ENUM_VALUE10165": 7,
-		"ENUM_VALUE10166": 8,
-	}
-)
-
-func (x Enum10157) Enum() *Enum10157 {
-	p := new(Enum10157)
-	*p = x
-	return p
-}
-
-func (x Enum10157) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum10157) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[26].Descriptor()
-}
-
-func (Enum10157) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[26]
-}
-
-func (x Enum10157) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum10157) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum10157(num)
-	return nil
-}
-
-// Deprecated: Use Enum10157.Descriptor instead.
-func (Enum10157) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{26}
-}
-
-type Enum10167 int32
-
-const (
-	Enum10167_ENUM_VALUE10168 Enum10167 = 0
-	Enum10167_ENUM_VALUE10169 Enum10167 = 1
-	Enum10167_ENUM_VALUE10170 Enum10167 = 2
-	Enum10167_ENUM_VALUE10171 Enum10167 = 3
-	Enum10167_ENUM_VALUE10172 Enum10167 = 4
-	Enum10167_ENUM_VALUE10173 Enum10167 = 5
-	Enum10167_ENUM_VALUE10174 Enum10167 = 6
-	Enum10167_ENUM_VALUE10175 Enum10167 = 7
-	Enum10167_ENUM_VALUE10176 Enum10167 = 8
-)
-
-// Enum value maps for Enum10167.
-var (
-	Enum10167_name = map[int32]string{
-		0: "ENUM_VALUE10168",
-		1: "ENUM_VALUE10169",
-		2: "ENUM_VALUE10170",
-		3: "ENUM_VALUE10171",
-		4: "ENUM_VALUE10172",
-		5: "ENUM_VALUE10173",
-		6: "ENUM_VALUE10174",
-		7: "ENUM_VALUE10175",
-		8: "ENUM_VALUE10176",
-	}
-	Enum10167_value = map[string]int32{
-		"ENUM_VALUE10168": 0,
-		"ENUM_VALUE10169": 1,
-		"ENUM_VALUE10170": 2,
-		"ENUM_VALUE10171": 3,
-		"ENUM_VALUE10172": 4,
-		"ENUM_VALUE10173": 5,
-		"ENUM_VALUE10174": 6,
-		"ENUM_VALUE10175": 7,
-		"ENUM_VALUE10176": 8,
-	}
-)
-
-func (x Enum10167) Enum() *Enum10167 {
-	p := new(Enum10167)
-	*p = x
-	return p
-}
-
-func (x Enum10167) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum10167) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[27].Descriptor()
-}
-
-func (Enum10167) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[27]
-}
-
-func (x Enum10167) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum10167) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum10167(num)
-	return nil
-}
-
-// Deprecated: Use Enum10167.Descriptor instead.
-func (Enum10167) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{27}
-}
-
-type Enum8862 int32
-
-const (
-	Enum8862_ENUM_VALUE8863 Enum8862 = 0
-	Enum8862_ENUM_VALUE8864 Enum8862 = 1
-	Enum8862_ENUM_VALUE8865 Enum8862 = 2
-	Enum8862_ENUM_VALUE8866 Enum8862 = 3
-	Enum8862_ENUM_VALUE8867 Enum8862 = 4
-	Enum8862_ENUM_VALUE8868 Enum8862 = 5
-	Enum8862_ENUM_VALUE8869 Enum8862 = 6
-	Enum8862_ENUM_VALUE8870 Enum8862 = 7
-	Enum8862_ENUM_VALUE8871 Enum8862 = 13
-	Enum8862_ENUM_VALUE8872 Enum8862 = 14
-	Enum8862_ENUM_VALUE8873 Enum8862 = 8
-	Enum8862_ENUM_VALUE8874 Enum8862 = 9
-	Enum8862_ENUM_VALUE8875 Enum8862 = 10
-	Enum8862_ENUM_VALUE8876 Enum8862 = 11
-	Enum8862_ENUM_VALUE8877 Enum8862 = 12
-	Enum8862_ENUM_VALUE8878 Enum8862 = 15
-)
-
-// Enum value maps for Enum8862.
-var (
-	Enum8862_name = map[int32]string{
-		0:  "ENUM_VALUE8863",
-		1:  "ENUM_VALUE8864",
-		2:  "ENUM_VALUE8865",
-		3:  "ENUM_VALUE8866",
-		4:  "ENUM_VALUE8867",
-		5:  "ENUM_VALUE8868",
-		6:  "ENUM_VALUE8869",
-		7:  "ENUM_VALUE8870",
-		13: "ENUM_VALUE8871",
-		14: "ENUM_VALUE8872",
-		8:  "ENUM_VALUE8873",
-		9:  "ENUM_VALUE8874",
-		10: "ENUM_VALUE8875",
-		11: "ENUM_VALUE8876",
-		12: "ENUM_VALUE8877",
-		15: "ENUM_VALUE8878",
-	}
-	Enum8862_value = map[string]int32{
-		"ENUM_VALUE8863": 0,
-		"ENUM_VALUE8864": 1,
-		"ENUM_VALUE8865": 2,
-		"ENUM_VALUE8866": 3,
-		"ENUM_VALUE8867": 4,
-		"ENUM_VALUE8868": 5,
-		"ENUM_VALUE8869": 6,
-		"ENUM_VALUE8870": 7,
-		"ENUM_VALUE8871": 13,
-		"ENUM_VALUE8872": 14,
-		"ENUM_VALUE8873": 8,
-		"ENUM_VALUE8874": 9,
-		"ENUM_VALUE8875": 10,
-		"ENUM_VALUE8876": 11,
-		"ENUM_VALUE8877": 12,
-		"ENUM_VALUE8878": 15,
-	}
-)
-
-func (x Enum8862) Enum() *Enum8862 {
-	p := new(Enum8862)
-	*p = x
-	return p
-}
-
-func (x Enum8862) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum8862) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[28].Descriptor()
-}
-
-func (Enum8862) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[28]
-}
-
-func (x Enum8862) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum8862) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum8862(num)
-	return nil
-}
-
-// Deprecated: Use Enum8862.Descriptor instead.
-func (Enum8862) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{28}
-}
-
-type Enum10325 int32
-
-const (
-	Enum10325_ENUM_VALUE10326 Enum10325 = 0
-	Enum10325_ENUM_VALUE10327 Enum10325 = 1
-	Enum10325_ENUM_VALUE10328 Enum10325 = 2
-	Enum10325_ENUM_VALUE10329 Enum10325 = 3
-	Enum10325_ENUM_VALUE10330 Enum10325 = 4
-	Enum10325_ENUM_VALUE10331 Enum10325 = 5
-	Enum10325_ENUM_VALUE10332 Enum10325 = 6
-	Enum10325_ENUM_VALUE10333 Enum10325 = 7
-	Enum10325_ENUM_VALUE10334 Enum10325 = 8
-)
-
-// Enum value maps for Enum10325.
-var (
-	Enum10325_name = map[int32]string{
-		0: "ENUM_VALUE10326",
-		1: "ENUM_VALUE10327",
-		2: "ENUM_VALUE10328",
-		3: "ENUM_VALUE10329",
-		4: "ENUM_VALUE10330",
-		5: "ENUM_VALUE10331",
-		6: "ENUM_VALUE10332",
-		7: "ENUM_VALUE10333",
-		8: "ENUM_VALUE10334",
-	}
-	Enum10325_value = map[string]int32{
-		"ENUM_VALUE10326": 0,
-		"ENUM_VALUE10327": 1,
-		"ENUM_VALUE10328": 2,
-		"ENUM_VALUE10329": 3,
-		"ENUM_VALUE10330": 4,
-		"ENUM_VALUE10331": 5,
-		"ENUM_VALUE10332": 6,
-		"ENUM_VALUE10333": 7,
-		"ENUM_VALUE10334": 8,
-	}
-)
-
-func (x Enum10325) Enum() *Enum10325 {
-	p := new(Enum10325)
-	*p = x
-	return p
-}
-
-func (x Enum10325) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum10325) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[29].Descriptor()
-}
-
-func (Enum10325) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[29]
-}
-
-func (x Enum10325) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum10325) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum10325(num)
-	return nil
-}
-
-// Deprecated: Use Enum10325.Descriptor instead.
-func (Enum10325) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{29}
-}
-
-type Enum10335 int32
-
-const (
-	Enum10335_ENUM_VALUE10336 Enum10335 = 0
-)
-
-// Enum value maps for Enum10335.
-var (
-	Enum10335_name = map[int32]string{
-		0: "ENUM_VALUE10336",
-	}
-	Enum10335_value = map[string]int32{
-		"ENUM_VALUE10336": 0,
-	}
-)
-
-func (x Enum10335) Enum() *Enum10335 {
-	p := new(Enum10335)
-	*p = x
-	return p
-}
-
-func (x Enum10335) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum10335) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[30].Descriptor()
-}
-
-func (Enum10335) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[30]
-}
-
-func (x Enum10335) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum10335) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum10335(num)
-	return nil
-}
-
-// Deprecated: Use Enum10335.Descriptor instead.
-func (Enum10335) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{30}
-}
-
-type Enum10337 int32
-
-const (
-	Enum10337_ENUM_VALUE10338 Enum10337 = 0
-	Enum10337_ENUM_VALUE10339 Enum10337 = 1
-)
-
-// Enum value maps for Enum10337.
-var (
-	Enum10337_name = map[int32]string{
-		0: "ENUM_VALUE10338",
-		1: "ENUM_VALUE10339",
-	}
-	Enum10337_value = map[string]int32{
-		"ENUM_VALUE10338": 0,
-		"ENUM_VALUE10339": 1,
-	}
-)
-
-func (x Enum10337) Enum() *Enum10337 {
-	p := new(Enum10337)
-	*p = x
-	return p
-}
-
-func (x Enum10337) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum10337) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[31].Descriptor()
-}
-
-func (Enum10337) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[31]
-}
-
-func (x Enum10337) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum10337) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum10337(num)
-	return nil
-}
-
-// Deprecated: Use Enum10337.Descriptor instead.
-func (Enum10337) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{31}
-}
-
-type Enum10392 int32
-
-const (
-	Enum10392_ENUM_VALUE10393 Enum10392 = 0
-	Enum10392_ENUM_VALUE10394 Enum10392 = 1
-	Enum10392_ENUM_VALUE10395 Enum10392 = 2
-	Enum10392_ENUM_VALUE10396 Enum10392 = 3
-	Enum10392_ENUM_VALUE10397 Enum10392 = 4
-	Enum10392_ENUM_VALUE10398 Enum10392 = 5
-	Enum10392_ENUM_VALUE10399 Enum10392 = 6
-	Enum10392_ENUM_VALUE10400 Enum10392 = 7
-	Enum10392_ENUM_VALUE10401 Enum10392 = 8
-	Enum10392_ENUM_VALUE10402 Enum10392 = 15
-	Enum10392_ENUM_VALUE10403 Enum10392 = 9
-	Enum10392_ENUM_VALUE10404 Enum10392 = 10
-	Enum10392_ENUM_VALUE10405 Enum10392 = 11
-	Enum10392_ENUM_VALUE10406 Enum10392 = 12
-	Enum10392_ENUM_VALUE10407 Enum10392 = 13
-	Enum10392_ENUM_VALUE10408 Enum10392 = 14
-	Enum10392_ENUM_VALUE10409 Enum10392 = 101
-	Enum10392_ENUM_VALUE10410 Enum10392 = 102
-)
-
-// Enum value maps for Enum10392.
-var (
-	Enum10392_name = map[int32]string{
-		0:   "ENUM_VALUE10393",
-		1:   "ENUM_VALUE10394",
-		2:   "ENUM_VALUE10395",
-		3:   "ENUM_VALUE10396",
-		4:   "ENUM_VALUE10397",
-		5:   "ENUM_VALUE10398",
-		6:   "ENUM_VALUE10399",
-		7:   "ENUM_VALUE10400",
-		8:   "ENUM_VALUE10401",
-		15:  "ENUM_VALUE10402",
-		9:   "ENUM_VALUE10403",
-		10:  "ENUM_VALUE10404",
-		11:  "ENUM_VALUE10405",
-		12:  "ENUM_VALUE10406",
-		13:  "ENUM_VALUE10407",
-		14:  "ENUM_VALUE10408",
-		101: "ENUM_VALUE10409",
-		102: "ENUM_VALUE10410",
-	}
-	Enum10392_value = map[string]int32{
-		"ENUM_VALUE10393": 0,
-		"ENUM_VALUE10394": 1,
-		"ENUM_VALUE10395": 2,
-		"ENUM_VALUE10396": 3,
-		"ENUM_VALUE10397": 4,
-		"ENUM_VALUE10398": 5,
-		"ENUM_VALUE10399": 6,
-		"ENUM_VALUE10400": 7,
-		"ENUM_VALUE10401": 8,
-		"ENUM_VALUE10402": 15,
-		"ENUM_VALUE10403": 9,
-		"ENUM_VALUE10404": 10,
-		"ENUM_VALUE10405": 11,
-		"ENUM_VALUE10406": 12,
-		"ENUM_VALUE10407": 13,
-		"ENUM_VALUE10408": 14,
-		"ENUM_VALUE10409": 101,
-		"ENUM_VALUE10410": 102,
-	}
-)
-
-func (x Enum10392) Enum() *Enum10392 {
-	p := new(Enum10392)
-	*p = x
-	return p
-}
-
-func (x Enum10392) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum10392) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[32].Descriptor()
-}
-
-func (Enum10392) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[32]
-}
-
-func (x Enum10392) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum10392) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum10392(num)
-	return nil
-}
-
-// Deprecated: Use Enum10392.Descriptor instead.
-func (Enum10392) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{32}
-}
-
-type Enum11107 int32
-
-const (
-	Enum11107_ENUM_VALUE11108 Enum11107 = 0
-	Enum11107_ENUM_VALUE11109 Enum11107 = 1
-	Enum11107_ENUM_VALUE11110 Enum11107 = 2
-	Enum11107_ENUM_VALUE11111 Enum11107 = 3
-	Enum11107_ENUM_VALUE11112 Enum11107 = 4
-	Enum11107_ENUM_VALUE11113 Enum11107 = 5
-	Enum11107_ENUM_VALUE11114 Enum11107 = 6
-	Enum11107_ENUM_VALUE11115 Enum11107 = 7
-	Enum11107_ENUM_VALUE11116 Enum11107 = 8
-	Enum11107_ENUM_VALUE11117 Enum11107 = 9
-	Enum11107_ENUM_VALUE11118 Enum11107 = 10
-	Enum11107_ENUM_VALUE11119 Enum11107 = 11
-	Enum11107_ENUM_VALUE11120 Enum11107 = 12
-	Enum11107_ENUM_VALUE11121 Enum11107 = 13
-	Enum11107_ENUM_VALUE11122 Enum11107 = 14
-	Enum11107_ENUM_VALUE11123 Enum11107 = 15
-	Enum11107_ENUM_VALUE11124 Enum11107 = 16
-	Enum11107_ENUM_VALUE11125 Enum11107 = 17
-	Enum11107_ENUM_VALUE11126 Enum11107 = 18
-	Enum11107_ENUM_VALUE11127 Enum11107 = 19
-	Enum11107_ENUM_VALUE11128 Enum11107 = 20
-	Enum11107_ENUM_VALUE11129 Enum11107 = 21
-	Enum11107_ENUM_VALUE11130 Enum11107 = 22
-	Enum11107_ENUM_VALUE11131 Enum11107 = 23
-	Enum11107_ENUM_VALUE11132 Enum11107 = 24
-	Enum11107_ENUM_VALUE11133 Enum11107 = 25
-	Enum11107_ENUM_VALUE11134 Enum11107 = 26
-	Enum11107_ENUM_VALUE11135 Enum11107 = 27
-	Enum11107_ENUM_VALUE11136 Enum11107 = 28
-	Enum11107_ENUM_VALUE11137 Enum11107 = 29
-	Enum11107_ENUM_VALUE11138 Enum11107 = 30
-	Enum11107_ENUM_VALUE11139 Enum11107 = 31
-	Enum11107_ENUM_VALUE11140 Enum11107 = 32
-	Enum11107_ENUM_VALUE11141 Enum11107 = 33
-	Enum11107_ENUM_VALUE11142 Enum11107 = 34
-	Enum11107_ENUM_VALUE11143 Enum11107 = 35
-	Enum11107_ENUM_VALUE11144 Enum11107 = 36
-	Enum11107_ENUM_VALUE11145 Enum11107 = 37
-	Enum11107_ENUM_VALUE11146 Enum11107 = 38
-	Enum11107_ENUM_VALUE11147 Enum11107 = 39
-	Enum11107_ENUM_VALUE11148 Enum11107 = 40
-	Enum11107_ENUM_VALUE11149 Enum11107 = 41
-	Enum11107_ENUM_VALUE11150 Enum11107 = 42
-	Enum11107_ENUM_VALUE11151 Enum11107 = 43
-	Enum11107_ENUM_VALUE11152 Enum11107 = 44
-	Enum11107_ENUM_VALUE11153 Enum11107 = 45
-	Enum11107_ENUM_VALUE11154 Enum11107 = 46
-	Enum11107_ENUM_VALUE11155 Enum11107 = 47
-	Enum11107_ENUM_VALUE11156 Enum11107 = 48
-	Enum11107_ENUM_VALUE11157 Enum11107 = 49
-	Enum11107_ENUM_VALUE11158 Enum11107 = 50
-	Enum11107_ENUM_VALUE11159 Enum11107 = 51
-	Enum11107_ENUM_VALUE11160 Enum11107 = 52
-	Enum11107_ENUM_VALUE11161 Enum11107 = 53
-	Enum11107_ENUM_VALUE11162 Enum11107 = 54
-	Enum11107_ENUM_VALUE11163 Enum11107 = 55
-	Enum11107_ENUM_VALUE11164 Enum11107 = 56
-	Enum11107_ENUM_VALUE11165 Enum11107 = 57
-	Enum11107_ENUM_VALUE11166 Enum11107 = 58
-	Enum11107_ENUM_VALUE11167 Enum11107 = 59
-	Enum11107_ENUM_VALUE11168 Enum11107 = 60
-	Enum11107_ENUM_VALUE11169 Enum11107 = 61
-	Enum11107_ENUM_VALUE11170 Enum11107 = 62
-	Enum11107_ENUM_VALUE11171 Enum11107 = 63
-	Enum11107_ENUM_VALUE11172 Enum11107 = 64
-	Enum11107_ENUM_VALUE11173 Enum11107 = 65
-	Enum11107_ENUM_VALUE11174 Enum11107 = 66
-	Enum11107_ENUM_VALUE11175 Enum11107 = 67
-	Enum11107_ENUM_VALUE11176 Enum11107 = 68
-	Enum11107_ENUM_VALUE11177 Enum11107 = 69
-	Enum11107_ENUM_VALUE11178 Enum11107 = 70
-	Enum11107_ENUM_VALUE11179 Enum11107 = 71
-	Enum11107_ENUM_VALUE11180 Enum11107 = 72
-	Enum11107_ENUM_VALUE11181 Enum11107 = 73
-	Enum11107_ENUM_VALUE11182 Enum11107 = 74
-	Enum11107_ENUM_VALUE11183 Enum11107 = 75
-	Enum11107_ENUM_VALUE11184 Enum11107 = 76
-	Enum11107_ENUM_VALUE11185 Enum11107 = 77
-	Enum11107_ENUM_VALUE11186 Enum11107 = 78
-	Enum11107_ENUM_VALUE11187 Enum11107 = 79
-	Enum11107_ENUM_VALUE11188 Enum11107 = 80
-	Enum11107_ENUM_VALUE11189 Enum11107 = 81
-	Enum11107_ENUM_VALUE11190 Enum11107 = 82
-	Enum11107_ENUM_VALUE11191 Enum11107 = 83
-	Enum11107_ENUM_VALUE11192 Enum11107 = 84
-	Enum11107_ENUM_VALUE11193 Enum11107 = 85
-	Enum11107_ENUM_VALUE11194 Enum11107 = 86
-	Enum11107_ENUM_VALUE11195 Enum11107 = 87
-	Enum11107_ENUM_VALUE11196 Enum11107 = 88
-	Enum11107_ENUM_VALUE11197 Enum11107 = 89
-	Enum11107_ENUM_VALUE11198 Enum11107 = 90
-	Enum11107_ENUM_VALUE11199 Enum11107 = 91
-	Enum11107_ENUM_VALUE11200 Enum11107 = 92
-	Enum11107_ENUM_VALUE11201 Enum11107 = 93
-	Enum11107_ENUM_VALUE11202 Enum11107 = 94
-	Enum11107_ENUM_VALUE11203 Enum11107 = 95
-	Enum11107_ENUM_VALUE11204 Enum11107 = 96
-	Enum11107_ENUM_VALUE11205 Enum11107 = 97
-	Enum11107_ENUM_VALUE11206 Enum11107 = 98
-	Enum11107_ENUM_VALUE11207 Enum11107 = 99
-	Enum11107_ENUM_VALUE11208 Enum11107 = 100
-	Enum11107_ENUM_VALUE11209 Enum11107 = 101
-	Enum11107_ENUM_VALUE11210 Enum11107 = 102
-	Enum11107_ENUM_VALUE11211 Enum11107 = 103
-	Enum11107_ENUM_VALUE11212 Enum11107 = 104
-	Enum11107_ENUM_VALUE11213 Enum11107 = 105
-	Enum11107_ENUM_VALUE11214 Enum11107 = 106
-	Enum11107_ENUM_VALUE11215 Enum11107 = 107
-	Enum11107_ENUM_VALUE11216 Enum11107 = 108
-	Enum11107_ENUM_VALUE11217 Enum11107 = 109
-	Enum11107_ENUM_VALUE11218 Enum11107 = 110
-	Enum11107_ENUM_VALUE11219 Enum11107 = 111
-	Enum11107_ENUM_VALUE11220 Enum11107 = 112
-	Enum11107_ENUM_VALUE11221 Enum11107 = 113
-	Enum11107_ENUM_VALUE11222 Enum11107 = 114
-	Enum11107_ENUM_VALUE11223 Enum11107 = 115
-	Enum11107_ENUM_VALUE11224 Enum11107 = 116
-	Enum11107_ENUM_VALUE11225 Enum11107 = 117
-	Enum11107_ENUM_VALUE11226 Enum11107 = 118
-	Enum11107_ENUM_VALUE11227 Enum11107 = 119
-	Enum11107_ENUM_VALUE11228 Enum11107 = 120
-	Enum11107_ENUM_VALUE11229 Enum11107 = 121
-	Enum11107_ENUM_VALUE11230 Enum11107 = 122
-	Enum11107_ENUM_VALUE11231 Enum11107 = 123
-	Enum11107_ENUM_VALUE11232 Enum11107 = 124
-	Enum11107_ENUM_VALUE11233 Enum11107 = 125
-	Enum11107_ENUM_VALUE11234 Enum11107 = 126
-	Enum11107_ENUM_VALUE11235 Enum11107 = 127
-	Enum11107_ENUM_VALUE11236 Enum11107 = 128
-	Enum11107_ENUM_VALUE11237 Enum11107 = 129
-	Enum11107_ENUM_VALUE11238 Enum11107 = 130
-	Enum11107_ENUM_VALUE11239 Enum11107 = 131
-	Enum11107_ENUM_VALUE11240 Enum11107 = 132
-	Enum11107_ENUM_VALUE11241 Enum11107 = 133
-	Enum11107_ENUM_VALUE11242 Enum11107 = 134
-	Enum11107_ENUM_VALUE11243 Enum11107 = 135
-	Enum11107_ENUM_VALUE11244 Enum11107 = 136
-	Enum11107_ENUM_VALUE11245 Enum11107 = 137
-	Enum11107_ENUM_VALUE11246 Enum11107 = 138
-	Enum11107_ENUM_VALUE11247 Enum11107 = 139
-	Enum11107_ENUM_VALUE11248 Enum11107 = 140
-	Enum11107_ENUM_VALUE11249 Enum11107 = 141
-	Enum11107_ENUM_VALUE11250 Enum11107 = 142
-	Enum11107_ENUM_VALUE11251 Enum11107 = 143
-	Enum11107_ENUM_VALUE11252 Enum11107 = 144
-	Enum11107_ENUM_VALUE11253 Enum11107 = 145
-	Enum11107_ENUM_VALUE11254 Enum11107 = 146
-	Enum11107_ENUM_VALUE11255 Enum11107 = 147
-	Enum11107_ENUM_VALUE11256 Enum11107 = 148
-	Enum11107_ENUM_VALUE11257 Enum11107 = 149
-	Enum11107_ENUM_VALUE11258 Enum11107 = 150
-	Enum11107_ENUM_VALUE11259 Enum11107 = 151
-	Enum11107_ENUM_VALUE11260 Enum11107 = 152
-	Enum11107_ENUM_VALUE11261 Enum11107 = 153
-	Enum11107_ENUM_VALUE11262 Enum11107 = 154
-	Enum11107_ENUM_VALUE11263 Enum11107 = 155
-	Enum11107_ENUM_VALUE11264 Enum11107 = 156
-	Enum11107_ENUM_VALUE11265 Enum11107 = 157
-	Enum11107_ENUM_VALUE11266 Enum11107 = 158
-	Enum11107_ENUM_VALUE11267 Enum11107 = 159
-	Enum11107_ENUM_VALUE11268 Enum11107 = 160
-	Enum11107_ENUM_VALUE11269 Enum11107 = 161
-	Enum11107_ENUM_VALUE11270 Enum11107 = 163
-	Enum11107_ENUM_VALUE11271 Enum11107 = 164
-	Enum11107_ENUM_VALUE11272 Enum11107 = 165
-	Enum11107_ENUM_VALUE11273 Enum11107 = 166
-	Enum11107_ENUM_VALUE11274 Enum11107 = 167
-	Enum11107_ENUM_VALUE11275 Enum11107 = 168
-	Enum11107_ENUM_VALUE11276 Enum11107 = 169
-	Enum11107_ENUM_VALUE11277 Enum11107 = 170
-	Enum11107_ENUM_VALUE11278 Enum11107 = 171
-	Enum11107_ENUM_VALUE11279 Enum11107 = 172
-	Enum11107_ENUM_VALUE11280 Enum11107 = 173
-	Enum11107_ENUM_VALUE11281 Enum11107 = 174
-	Enum11107_ENUM_VALUE11282 Enum11107 = 175
-	Enum11107_ENUM_VALUE11283 Enum11107 = 176
-	Enum11107_ENUM_VALUE11284 Enum11107 = 177
-	Enum11107_ENUM_VALUE11285 Enum11107 = 178
-	Enum11107_ENUM_VALUE11286 Enum11107 = 179
-	Enum11107_ENUM_VALUE11287 Enum11107 = 180
-	Enum11107_ENUM_VALUE11288 Enum11107 = 181
-	Enum11107_ENUM_VALUE11289 Enum11107 = 182
-	Enum11107_ENUM_VALUE11290 Enum11107 = 183
-	Enum11107_ENUM_VALUE11291 Enum11107 = 184
-	Enum11107_ENUM_VALUE11292 Enum11107 = 185
-	Enum11107_ENUM_VALUE11293 Enum11107 = 187
-	Enum11107_ENUM_VALUE11294 Enum11107 = 188
-	Enum11107_ENUM_VALUE11295 Enum11107 = 189
-	Enum11107_ENUM_VALUE11296 Enum11107 = 190
-	Enum11107_ENUM_VALUE11297 Enum11107 = 191
-	Enum11107_ENUM_VALUE11298 Enum11107 = 192
-	Enum11107_ENUM_VALUE11299 Enum11107 = 193
-	Enum11107_ENUM_VALUE11300 Enum11107 = 194
-	Enum11107_ENUM_VALUE11301 Enum11107 = 195
-	Enum11107_ENUM_VALUE11302 Enum11107 = 196
-	Enum11107_ENUM_VALUE11303 Enum11107 = 197
-	Enum11107_ENUM_VALUE11304 Enum11107 = 198
-	Enum11107_ENUM_VALUE11305 Enum11107 = 65535
-	Enum11107_ENUM_VALUE11306 Enum11107 = 65536
-	Enum11107_ENUM_VALUE11307 Enum11107 = 65537
-	Enum11107_ENUM_VALUE11308 Enum11107 = 65538
-	Enum11107_ENUM_VALUE11309 Enum11107 = 65539
-	Enum11107_ENUM_VALUE11310 Enum11107 = 65540
-	Enum11107_ENUM_VALUE11311 Enum11107 = 65541
-	Enum11107_ENUM_VALUE11312 Enum11107 = 65542
-	Enum11107_ENUM_VALUE11313 Enum11107 = 65543
-	Enum11107_ENUM_VALUE11314 Enum11107 = 65544
-	Enum11107_ENUM_VALUE11315 Enum11107 = 65545
-	Enum11107_ENUM_VALUE11316 Enum11107 = 65546
-	Enum11107_ENUM_VALUE11317 Enum11107 = 65547
-	Enum11107_ENUM_VALUE11318 Enum11107 = 65548
-	Enum11107_ENUM_VALUE11319 Enum11107 = 65549
-	Enum11107_ENUM_VALUE11320 Enum11107 = 65550
-	Enum11107_ENUM_VALUE11321 Enum11107 = 65551
-	Enum11107_ENUM_VALUE11322 Enum11107 = 65552
-	Enum11107_ENUM_VALUE11323 Enum11107 = 65553
-	Enum11107_ENUM_VALUE11324 Enum11107 = 65554
-	Enum11107_ENUM_VALUE11325 Enum11107 = 65555
-	Enum11107_ENUM_VALUE11326 Enum11107 = 65556
-	Enum11107_ENUM_VALUE11327 Enum11107 = 65557
-	Enum11107_ENUM_VALUE11328 Enum11107 = 65558
-	Enum11107_ENUM_VALUE11329 Enum11107 = 65559
-	Enum11107_ENUM_VALUE11330 Enum11107 = 65560
-	Enum11107_ENUM_VALUE11331 Enum11107 = 65561
-	Enum11107_ENUM_VALUE11332 Enum11107 = 65562
-	Enum11107_ENUM_VALUE11333 Enum11107 = 65563
-	Enum11107_ENUM_VALUE11334 Enum11107 = 69632
-	Enum11107_ENUM_VALUE11335 Enum11107 = 69633
-	Enum11107_ENUM_VALUE11336 Enum11107 = 69634
-	Enum11107_ENUM_VALUE11337 Enum11107 = 69635
-	Enum11107_ENUM_VALUE11338 Enum11107 = 69636
-	Enum11107_ENUM_VALUE11339 Enum11107 = 69637
-	Enum11107_ENUM_VALUE11340 Enum11107 = 69638
-	Enum11107_ENUM_VALUE11341 Enum11107 = 69639
-	Enum11107_ENUM_VALUE11342 Enum11107 = 69640
-	Enum11107_ENUM_VALUE11343 Enum11107 = 69641
-	Enum11107_ENUM_VALUE11344 Enum11107 = 69642
-	Enum11107_ENUM_VALUE11345 Enum11107 = 69643
-	Enum11107_ENUM_VALUE11346 Enum11107 = 69644
-	Enum11107_ENUM_VALUE11347 Enum11107 = 69645
-	Enum11107_ENUM_VALUE11348 Enum11107 = 69646
-	Enum11107_ENUM_VALUE11349 Enum11107 = 69647
-	Enum11107_ENUM_VALUE11350 Enum11107 = 69648
-	Enum11107_ENUM_VALUE11351 Enum11107 = 69649
-	Enum11107_ENUM_VALUE11352 Enum11107 = 69650
-	Enum11107_ENUM_VALUE11353 Enum11107 = 69651
-	Enum11107_ENUM_VALUE11354 Enum11107 = 69652
-	Enum11107_ENUM_VALUE11355 Enum11107 = 69653
-	Enum11107_ENUM_VALUE11356 Enum11107 = 69654
-	Enum11107_ENUM_VALUE11357 Enum11107 = 69655
-	Enum11107_ENUM_VALUE11358 Enum11107 = 69656
-	Enum11107_ENUM_VALUE11359 Enum11107 = 69657
-	Enum11107_ENUM_VALUE11360 Enum11107 = 69658
-	Enum11107_ENUM_VALUE11361 Enum11107 = 69659
-	Enum11107_ENUM_VALUE11362 Enum11107 = 69660
-	Enum11107_ENUM_VALUE11363 Enum11107 = 69661
-	Enum11107_ENUM_VALUE11364 Enum11107 = 69662
-	Enum11107_ENUM_VALUE11365 Enum11107 = 73728
-	Enum11107_ENUM_VALUE11366 Enum11107 = 73729
-	Enum11107_ENUM_VALUE11367 Enum11107 = 77824
-	Enum11107_ENUM_VALUE11368 Enum11107 = 77825
-	Enum11107_ENUM_VALUE11369 Enum11107 = 81920
-	Enum11107_ENUM_VALUE11370 Enum11107 = 81921
-	Enum11107_ENUM_VALUE11371 Enum11107 = 81922
-	Enum11107_ENUM_VALUE11372 Enum11107 = 81923
-	Enum11107_ENUM_VALUE11373 Enum11107 = 86016
-	Enum11107_ENUM_VALUE11374 Enum11107 = 86017
-	Enum11107_ENUM_VALUE11375 Enum11107 = 86018
-	Enum11107_ENUM_VALUE11376 Enum11107 = 86019
-	Enum11107_ENUM_VALUE11377 Enum11107 = 86020
-	Enum11107_ENUM_VALUE11378 Enum11107 = 86021
-	Enum11107_ENUM_VALUE11379 Enum11107 = 86022
-	Enum11107_ENUM_VALUE11380 Enum11107 = 86023
-	Enum11107_ENUM_VALUE11381 Enum11107 = 86024
-	Enum11107_ENUM_VALUE11382 Enum11107 = 86025
-	Enum11107_ENUM_VALUE11383 Enum11107 = 86026
-	Enum11107_ENUM_VALUE11384 Enum11107 = 86027
-	Enum11107_ENUM_VALUE11385 Enum11107 = 86028
-	Enum11107_ENUM_VALUE11386 Enum11107 = 86029
-	Enum11107_ENUM_VALUE11387 Enum11107 = 86030
-	Enum11107_ENUM_VALUE11388 Enum11107 = 86031
-	Enum11107_ENUM_VALUE11389 Enum11107 = 86032
-	Enum11107_ENUM_VALUE11390 Enum11107 = 86033
-	Enum11107_ENUM_VALUE11391 Enum11107 = 86034
-	Enum11107_ENUM_VALUE11392 Enum11107 = 86035
-	Enum11107_ENUM_VALUE11393 Enum11107 = 86036
-	Enum11107_ENUM_VALUE11394 Enum11107 = 86037
-	Enum11107_ENUM_VALUE11395 Enum11107 = 86038
-	Enum11107_ENUM_VALUE11396 Enum11107 = 86039
-	Enum11107_ENUM_VALUE11397 Enum11107 = 86040
-	Enum11107_ENUM_VALUE11398 Enum11107 = 86041
-	Enum11107_ENUM_VALUE11399 Enum11107 = 86042
-	Enum11107_ENUM_VALUE11400 Enum11107 = 86043
-	Enum11107_ENUM_VALUE11401 Enum11107 = 86044
-	Enum11107_ENUM_VALUE11402 Enum11107 = 86045
-	Enum11107_ENUM_VALUE11403 Enum11107 = 86046
-	Enum11107_ENUM_VALUE11404 Enum11107 = 86047
-	Enum11107_ENUM_VALUE11405 Enum11107 = 86048
-	Enum11107_ENUM_VALUE11406 Enum11107 = 86049
-	Enum11107_ENUM_VALUE11407 Enum11107 = 86050
-	Enum11107_ENUM_VALUE11408 Enum11107 = 86051
-	Enum11107_ENUM_VALUE11409 Enum11107 = 86052
-	Enum11107_ENUM_VALUE11410 Enum11107 = 86053
-	Enum11107_ENUM_VALUE11411 Enum11107 = 86054
-	Enum11107_ENUM_VALUE11412 Enum11107 = 86055
-	Enum11107_ENUM_VALUE11413 Enum11107 = 86056
-	Enum11107_ENUM_VALUE11414 Enum11107 = 86057
-	Enum11107_ENUM_VALUE11415 Enum11107 = 86058
-	Enum11107_ENUM_VALUE11416 Enum11107 = 86059
-	Enum11107_ENUM_VALUE11417 Enum11107 = 86060
-	Enum11107_ENUM_VALUE11418 Enum11107 = 86061
-	Enum11107_ENUM_VALUE11419 Enum11107 = 86062
-	Enum11107_ENUM_VALUE11420 Enum11107 = 86063
-	Enum11107_ENUM_VALUE11421 Enum11107 = 86064
-	Enum11107_ENUM_VALUE11422 Enum11107 = 86065
-	Enum11107_ENUM_VALUE11423 Enum11107 = 86066
-	Enum11107_ENUM_VALUE11424 Enum11107 = 86067
-	Enum11107_ENUM_VALUE11425 Enum11107 = 86068
-	Enum11107_ENUM_VALUE11426 Enum11107 = 86069
-	Enum11107_ENUM_VALUE11427 Enum11107 = 86070
-	Enum11107_ENUM_VALUE11428 Enum11107 = 86071
-	Enum11107_ENUM_VALUE11429 Enum11107 = 86072
-	Enum11107_ENUM_VALUE11430 Enum11107 = 86073
-	Enum11107_ENUM_VALUE11431 Enum11107 = 86074
-	Enum11107_ENUM_VALUE11432 Enum11107 = 86077
-	Enum11107_ENUM_VALUE11433 Enum11107 = 86078
-	Enum11107_ENUM_VALUE11434 Enum11107 = 86079
-	Enum11107_ENUM_VALUE11435 Enum11107 = 86080
-	Enum11107_ENUM_VALUE11436 Enum11107 = 86081
-	Enum11107_ENUM_VALUE11437 Enum11107 = 86082
-	Enum11107_ENUM_VALUE11438 Enum11107 = 86083
-	Enum11107_ENUM_VALUE11439 Enum11107 = 86084
-	Enum11107_ENUM_VALUE11440 Enum11107 = 90112
-	Enum11107_ENUM_VALUE11441 Enum11107 = 94208
-	Enum11107_ENUM_VALUE11442 Enum11107 = 94209
-	Enum11107_ENUM_VALUE11443 Enum11107 = 94210
-	Enum11107_ENUM_VALUE11444 Enum11107 = 94211
-	Enum11107_ENUM_VALUE11445 Enum11107 = 94212
-	Enum11107_ENUM_VALUE11446 Enum11107 = 94213
-	Enum11107_ENUM_VALUE11447 Enum11107 = 94214
-	Enum11107_ENUM_VALUE11448 Enum11107 = 94215
-	Enum11107_ENUM_VALUE11449 Enum11107 = 94216
-	Enum11107_ENUM_VALUE11450 Enum11107 = 94217
-	Enum11107_ENUM_VALUE11451 Enum11107 = 94218
-	Enum11107_ENUM_VALUE11452 Enum11107 = 94219
-	Enum11107_ENUM_VALUE11453 Enum11107 = 94220
-	Enum11107_ENUM_VALUE11454 Enum11107 = 94221
-	Enum11107_ENUM_VALUE11455 Enum11107 = 94222
-	Enum11107_ENUM_VALUE11456 Enum11107 = 94223
-	Enum11107_ENUM_VALUE11457 Enum11107 = 94224
-	Enum11107_ENUM_VALUE11458 Enum11107 = 98304
-	Enum11107_ENUM_VALUE11459 Enum11107 = 98305
-	Enum11107_ENUM_VALUE11460 Enum11107 = 98306
-	Enum11107_ENUM_VALUE11461 Enum11107 = 98307
-	Enum11107_ENUM_VALUE11462 Enum11107 = 98308
-	Enum11107_ENUM_VALUE11463 Enum11107 = 102400
-	Enum11107_ENUM_VALUE11464 Enum11107 = 131072
-	Enum11107_ENUM_VALUE11465 Enum11107 = 131073
-	Enum11107_ENUM_VALUE11466 Enum11107 = 135168
-	Enum11107_ENUM_VALUE11467 Enum11107 = 9439507
-)
-
-// Enum value maps for Enum11107.
-var (
-	Enum11107_name = map[int32]string{
-		0:       "ENUM_VALUE11108",
-		1:       "ENUM_VALUE11109",
-		2:       "ENUM_VALUE11110",
-		3:       "ENUM_VALUE11111",
-		4:       "ENUM_VALUE11112",
-		5:       "ENUM_VALUE11113",
-		6:       "ENUM_VALUE11114",
-		7:       "ENUM_VALUE11115",
-		8:       "ENUM_VALUE11116",
-		9:       "ENUM_VALUE11117",
-		10:      "ENUM_VALUE11118",
-		11:      "ENUM_VALUE11119",
-		12:      "ENUM_VALUE11120",
-		13:      "ENUM_VALUE11121",
-		14:      "ENUM_VALUE11122",
-		15:      "ENUM_VALUE11123",
-		16:      "ENUM_VALUE11124",
-		17:      "ENUM_VALUE11125",
-		18:      "ENUM_VALUE11126",
-		19:      "ENUM_VALUE11127",
-		20:      "ENUM_VALUE11128",
-		21:      "ENUM_VALUE11129",
-		22:      "ENUM_VALUE11130",
-		23:      "ENUM_VALUE11131",
-		24:      "ENUM_VALUE11132",
-		25:      "ENUM_VALUE11133",
-		26:      "ENUM_VALUE11134",
-		27:      "ENUM_VALUE11135",
-		28:      "ENUM_VALUE11136",
-		29:      "ENUM_VALUE11137",
-		30:      "ENUM_VALUE11138",
-		31:      "ENUM_VALUE11139",
-		32:      "ENUM_VALUE11140",
-		33:      "ENUM_VALUE11141",
-		34:      "ENUM_VALUE11142",
-		35:      "ENUM_VALUE11143",
-		36:      "ENUM_VALUE11144",
-		37:      "ENUM_VALUE11145",
-		38:      "ENUM_VALUE11146",
-		39:      "ENUM_VALUE11147",
-		40:      "ENUM_VALUE11148",
-		41:      "ENUM_VALUE11149",
-		42:      "ENUM_VALUE11150",
-		43:      "ENUM_VALUE11151",
-		44:      "ENUM_VALUE11152",
-		45:      "ENUM_VALUE11153",
-		46:      "ENUM_VALUE11154",
-		47:      "ENUM_VALUE11155",
-		48:      "ENUM_VALUE11156",
-		49:      "ENUM_VALUE11157",
-		50:      "ENUM_VALUE11158",
-		51:      "ENUM_VALUE11159",
-		52:      "ENUM_VALUE11160",
-		53:      "ENUM_VALUE11161",
-		54:      "ENUM_VALUE11162",
-		55:      "ENUM_VALUE11163",
-		56:      "ENUM_VALUE11164",
-		57:      "ENUM_VALUE11165",
-		58:      "ENUM_VALUE11166",
-		59:      "ENUM_VALUE11167",
-		60:      "ENUM_VALUE11168",
-		61:      "ENUM_VALUE11169",
-		62:      "ENUM_VALUE11170",
-		63:      "ENUM_VALUE11171",
-		64:      "ENUM_VALUE11172",
-		65:      "ENUM_VALUE11173",
-		66:      "ENUM_VALUE11174",
-		67:      "ENUM_VALUE11175",
-		68:      "ENUM_VALUE11176",
-		69:      "ENUM_VALUE11177",
-		70:      "ENUM_VALUE11178",
-		71:      "ENUM_VALUE11179",
-		72:      "ENUM_VALUE11180",
-		73:      "ENUM_VALUE11181",
-		74:      "ENUM_VALUE11182",
-		75:      "ENUM_VALUE11183",
-		76:      "ENUM_VALUE11184",
-		77:      "ENUM_VALUE11185",
-		78:      "ENUM_VALUE11186",
-		79:      "ENUM_VALUE11187",
-		80:      "ENUM_VALUE11188",
-		81:      "ENUM_VALUE11189",
-		82:      "ENUM_VALUE11190",
-		83:      "ENUM_VALUE11191",
-		84:      "ENUM_VALUE11192",
-		85:      "ENUM_VALUE11193",
-		86:      "ENUM_VALUE11194",
-		87:      "ENUM_VALUE11195",
-		88:      "ENUM_VALUE11196",
-		89:      "ENUM_VALUE11197",
-		90:      "ENUM_VALUE11198",
-		91:      "ENUM_VALUE11199",
-		92:      "ENUM_VALUE11200",
-		93:      "ENUM_VALUE11201",
-		94:      "ENUM_VALUE11202",
-		95:      "ENUM_VALUE11203",
-		96:      "ENUM_VALUE11204",
-		97:      "ENUM_VALUE11205",
-		98:      "ENUM_VALUE11206",
-		99:      "ENUM_VALUE11207",
-		100:     "ENUM_VALUE11208",
-		101:     "ENUM_VALUE11209",
-		102:     "ENUM_VALUE11210",
-		103:     "ENUM_VALUE11211",
-		104:     "ENUM_VALUE11212",
-		105:     "ENUM_VALUE11213",
-		106:     "ENUM_VALUE11214",
-		107:     "ENUM_VALUE11215",
-		108:     "ENUM_VALUE11216",
-		109:     "ENUM_VALUE11217",
-		110:     "ENUM_VALUE11218",
-		111:     "ENUM_VALUE11219",
-		112:     "ENUM_VALUE11220",
-		113:     "ENUM_VALUE11221",
-		114:     "ENUM_VALUE11222",
-		115:     "ENUM_VALUE11223",
-		116:     "ENUM_VALUE11224",
-		117:     "ENUM_VALUE11225",
-		118:     "ENUM_VALUE11226",
-		119:     "ENUM_VALUE11227",
-		120:     "ENUM_VALUE11228",
-		121:     "ENUM_VALUE11229",
-		122:     "ENUM_VALUE11230",
-		123:     "ENUM_VALUE11231",
-		124:     "ENUM_VALUE11232",
-		125:     "ENUM_VALUE11233",
-		126:     "ENUM_VALUE11234",
-		127:     "ENUM_VALUE11235",
-		128:     "ENUM_VALUE11236",
-		129:     "ENUM_VALUE11237",
-		130:     "ENUM_VALUE11238",
-		131:     "ENUM_VALUE11239",
-		132:     "ENUM_VALUE11240",
-		133:     "ENUM_VALUE11241",
-		134:     "ENUM_VALUE11242",
-		135:     "ENUM_VALUE11243",
-		136:     "ENUM_VALUE11244",
-		137:     "ENUM_VALUE11245",
-		138:     "ENUM_VALUE11246",
-		139:     "ENUM_VALUE11247",
-		140:     "ENUM_VALUE11248",
-		141:     "ENUM_VALUE11249",
-		142:     "ENUM_VALUE11250",
-		143:     "ENUM_VALUE11251",
-		144:     "ENUM_VALUE11252",
-		145:     "ENUM_VALUE11253",
-		146:     "ENUM_VALUE11254",
-		147:     "ENUM_VALUE11255",
-		148:     "ENUM_VALUE11256",
-		149:     "ENUM_VALUE11257",
-		150:     "ENUM_VALUE11258",
-		151:     "ENUM_VALUE11259",
-		152:     "ENUM_VALUE11260",
-		153:     "ENUM_VALUE11261",
-		154:     "ENUM_VALUE11262",
-		155:     "ENUM_VALUE11263",
-		156:     "ENUM_VALUE11264",
-		157:     "ENUM_VALUE11265",
-		158:     "ENUM_VALUE11266",
-		159:     "ENUM_VALUE11267",
-		160:     "ENUM_VALUE11268",
-		161:     "ENUM_VALUE11269",
-		163:     "ENUM_VALUE11270",
-		164:     "ENUM_VALUE11271",
-		165:     "ENUM_VALUE11272",
-		166:     "ENUM_VALUE11273",
-		167:     "ENUM_VALUE11274",
-		168:     "ENUM_VALUE11275",
-		169:     "ENUM_VALUE11276",
-		170:     "ENUM_VALUE11277",
-		171:     "ENUM_VALUE11278",
-		172:     "ENUM_VALUE11279",
-		173:     "ENUM_VALUE11280",
-		174:     "ENUM_VALUE11281",
-		175:     "ENUM_VALUE11282",
-		176:     "ENUM_VALUE11283",
-		177:     "ENUM_VALUE11284",
-		178:     "ENUM_VALUE11285",
-		179:     "ENUM_VALUE11286",
-		180:     "ENUM_VALUE11287",
-		181:     "ENUM_VALUE11288",
-		182:     "ENUM_VALUE11289",
-		183:     "ENUM_VALUE11290",
-		184:     "ENUM_VALUE11291",
-		185:     "ENUM_VALUE11292",
-		187:     "ENUM_VALUE11293",
-		188:     "ENUM_VALUE11294",
-		189:     "ENUM_VALUE11295",
-		190:     "ENUM_VALUE11296",
-		191:     "ENUM_VALUE11297",
-		192:     "ENUM_VALUE11298",
-		193:     "ENUM_VALUE11299",
-		194:     "ENUM_VALUE11300",
-		195:     "ENUM_VALUE11301",
-		196:     "ENUM_VALUE11302",
-		197:     "ENUM_VALUE11303",
-		198:     "ENUM_VALUE11304",
-		65535:   "ENUM_VALUE11305",
-		65536:   "ENUM_VALUE11306",
-		65537:   "ENUM_VALUE11307",
-		65538:   "ENUM_VALUE11308",
-		65539:   "ENUM_VALUE11309",
-		65540:   "ENUM_VALUE11310",
-		65541:   "ENUM_VALUE11311",
-		65542:   "ENUM_VALUE11312",
-		65543:   "ENUM_VALUE11313",
-		65544:   "ENUM_VALUE11314",
-		65545:   "ENUM_VALUE11315",
-		65546:   "ENUM_VALUE11316",
-		65547:   "ENUM_VALUE11317",
-		65548:   "ENUM_VALUE11318",
-		65549:   "ENUM_VALUE11319",
-		65550:   "ENUM_VALUE11320",
-		65551:   "ENUM_VALUE11321",
-		65552:   "ENUM_VALUE11322",
-		65553:   "ENUM_VALUE11323",
-		65554:   "ENUM_VALUE11324",
-		65555:   "ENUM_VALUE11325",
-		65556:   "ENUM_VALUE11326",
-		65557:   "ENUM_VALUE11327",
-		65558:   "ENUM_VALUE11328",
-		65559:   "ENUM_VALUE11329",
-		65560:   "ENUM_VALUE11330",
-		65561:   "ENUM_VALUE11331",
-		65562:   "ENUM_VALUE11332",
-		65563:   "ENUM_VALUE11333",
-		69632:   "ENUM_VALUE11334",
-		69633:   "ENUM_VALUE11335",
-		69634:   "ENUM_VALUE11336",
-		69635:   "ENUM_VALUE11337",
-		69636:   "ENUM_VALUE11338",
-		69637:   "ENUM_VALUE11339",
-		69638:   "ENUM_VALUE11340",
-		69639:   "ENUM_VALUE11341",
-		69640:   "ENUM_VALUE11342",
-		69641:   "ENUM_VALUE11343",
-		69642:   "ENUM_VALUE11344",
-		69643:   "ENUM_VALUE11345",
-		69644:   "ENUM_VALUE11346",
-		69645:   "ENUM_VALUE11347",
-		69646:   "ENUM_VALUE11348",
-		69647:   "ENUM_VALUE11349",
-		69648:   "ENUM_VALUE11350",
-		69649:   "ENUM_VALUE11351",
-		69650:   "ENUM_VALUE11352",
-		69651:   "ENUM_VALUE11353",
-		69652:   "ENUM_VALUE11354",
-		69653:   "ENUM_VALUE11355",
-		69654:   "ENUM_VALUE11356",
-		69655:   "ENUM_VALUE11357",
-		69656:   "ENUM_VALUE11358",
-		69657:   "ENUM_VALUE11359",
-		69658:   "ENUM_VALUE11360",
-		69659:   "ENUM_VALUE11361",
-		69660:   "ENUM_VALUE11362",
-		69661:   "ENUM_VALUE11363",
-		69662:   "ENUM_VALUE11364",
-		73728:   "ENUM_VALUE11365",
-		73729:   "ENUM_VALUE11366",
-		77824:   "ENUM_VALUE11367",
-		77825:   "ENUM_VALUE11368",
-		81920:   "ENUM_VALUE11369",
-		81921:   "ENUM_VALUE11370",
-		81922:   "ENUM_VALUE11371",
-		81923:   "ENUM_VALUE11372",
-		86016:   "ENUM_VALUE11373",
-		86017:   "ENUM_VALUE11374",
-		86018:   "ENUM_VALUE11375",
-		86019:   "ENUM_VALUE11376",
-		86020:   "ENUM_VALUE11377",
-		86021:   "ENUM_VALUE11378",
-		86022:   "ENUM_VALUE11379",
-		86023:   "ENUM_VALUE11380",
-		86024:   "ENUM_VALUE11381",
-		86025:   "ENUM_VALUE11382",
-		86026:   "ENUM_VALUE11383",
-		86027:   "ENUM_VALUE11384",
-		86028:   "ENUM_VALUE11385",
-		86029:   "ENUM_VALUE11386",
-		86030:   "ENUM_VALUE11387",
-		86031:   "ENUM_VALUE11388",
-		86032:   "ENUM_VALUE11389",
-		86033:   "ENUM_VALUE11390",
-		86034:   "ENUM_VALUE11391",
-		86035:   "ENUM_VALUE11392",
-		86036:   "ENUM_VALUE11393",
-		86037:   "ENUM_VALUE11394",
-		86038:   "ENUM_VALUE11395",
-		86039:   "ENUM_VALUE11396",
-		86040:   "ENUM_VALUE11397",
-		86041:   "ENUM_VALUE11398",
-		86042:   "ENUM_VALUE11399",
-		86043:   "ENUM_VALUE11400",
-		86044:   "ENUM_VALUE11401",
-		86045:   "ENUM_VALUE11402",
-		86046:   "ENUM_VALUE11403",
-		86047:   "ENUM_VALUE11404",
-		86048:   "ENUM_VALUE11405",
-		86049:   "ENUM_VALUE11406",
-		86050:   "ENUM_VALUE11407",
-		86051:   "ENUM_VALUE11408",
-		86052:   "ENUM_VALUE11409",
-		86053:   "ENUM_VALUE11410",
-		86054:   "ENUM_VALUE11411",
-		86055:   "ENUM_VALUE11412",
-		86056:   "ENUM_VALUE11413",
-		86057:   "ENUM_VALUE11414",
-		86058:   "ENUM_VALUE11415",
-		86059:   "ENUM_VALUE11416",
-		86060:   "ENUM_VALUE11417",
-		86061:   "ENUM_VALUE11418",
-		86062:   "ENUM_VALUE11419",
-		86063:   "ENUM_VALUE11420",
-		86064:   "ENUM_VALUE11421",
-		86065:   "ENUM_VALUE11422",
-		86066:   "ENUM_VALUE11423",
-		86067:   "ENUM_VALUE11424",
-		86068:   "ENUM_VALUE11425",
-		86069:   "ENUM_VALUE11426",
-		86070:   "ENUM_VALUE11427",
-		86071:   "ENUM_VALUE11428",
-		86072:   "ENUM_VALUE11429",
-		86073:   "ENUM_VALUE11430",
-		86074:   "ENUM_VALUE11431",
-		86077:   "ENUM_VALUE11432",
-		86078:   "ENUM_VALUE11433",
-		86079:   "ENUM_VALUE11434",
-		86080:   "ENUM_VALUE11435",
-		86081:   "ENUM_VALUE11436",
-		86082:   "ENUM_VALUE11437",
-		86083:   "ENUM_VALUE11438",
-		86084:   "ENUM_VALUE11439",
-		90112:   "ENUM_VALUE11440",
-		94208:   "ENUM_VALUE11441",
-		94209:   "ENUM_VALUE11442",
-		94210:   "ENUM_VALUE11443",
-		94211:   "ENUM_VALUE11444",
-		94212:   "ENUM_VALUE11445",
-		94213:   "ENUM_VALUE11446",
-		94214:   "ENUM_VALUE11447",
-		94215:   "ENUM_VALUE11448",
-		94216:   "ENUM_VALUE11449",
-		94217:   "ENUM_VALUE11450",
-		94218:   "ENUM_VALUE11451",
-		94219:   "ENUM_VALUE11452",
-		94220:   "ENUM_VALUE11453",
-		94221:   "ENUM_VALUE11454",
-		94222:   "ENUM_VALUE11455",
-		94223:   "ENUM_VALUE11456",
-		94224:   "ENUM_VALUE11457",
-		98304:   "ENUM_VALUE11458",
-		98305:   "ENUM_VALUE11459",
-		98306:   "ENUM_VALUE11460",
-		98307:   "ENUM_VALUE11461",
-		98308:   "ENUM_VALUE11462",
-		102400:  "ENUM_VALUE11463",
-		131072:  "ENUM_VALUE11464",
-		131073:  "ENUM_VALUE11465",
-		135168:  "ENUM_VALUE11466",
-		9439507: "ENUM_VALUE11467",
-	}
-	Enum11107_value = map[string]int32{
-		"ENUM_VALUE11108": 0,
-		"ENUM_VALUE11109": 1,
-		"ENUM_VALUE11110": 2,
-		"ENUM_VALUE11111": 3,
-		"ENUM_VALUE11112": 4,
-		"ENUM_VALUE11113": 5,
-		"ENUM_VALUE11114": 6,
-		"ENUM_VALUE11115": 7,
-		"ENUM_VALUE11116": 8,
-		"ENUM_VALUE11117": 9,
-		"ENUM_VALUE11118": 10,
-		"ENUM_VALUE11119": 11,
-		"ENUM_VALUE11120": 12,
-		"ENUM_VALUE11121": 13,
-		"ENUM_VALUE11122": 14,
-		"ENUM_VALUE11123": 15,
-		"ENUM_VALUE11124": 16,
-		"ENUM_VALUE11125": 17,
-		"ENUM_VALUE11126": 18,
-		"ENUM_VALUE11127": 19,
-		"ENUM_VALUE11128": 20,
-		"ENUM_VALUE11129": 21,
-		"ENUM_VALUE11130": 22,
-		"ENUM_VALUE11131": 23,
-		"ENUM_VALUE11132": 24,
-		"ENUM_VALUE11133": 25,
-		"ENUM_VALUE11134": 26,
-		"ENUM_VALUE11135": 27,
-		"ENUM_VALUE11136": 28,
-		"ENUM_VALUE11137": 29,
-		"ENUM_VALUE11138": 30,
-		"ENUM_VALUE11139": 31,
-		"ENUM_VALUE11140": 32,
-		"ENUM_VALUE11141": 33,
-		"ENUM_VALUE11142": 34,
-		"ENUM_VALUE11143": 35,
-		"ENUM_VALUE11144": 36,
-		"ENUM_VALUE11145": 37,
-		"ENUM_VALUE11146": 38,
-		"ENUM_VALUE11147": 39,
-		"ENUM_VALUE11148": 40,
-		"ENUM_VALUE11149": 41,
-		"ENUM_VALUE11150": 42,
-		"ENUM_VALUE11151": 43,
-		"ENUM_VALUE11152": 44,
-		"ENUM_VALUE11153": 45,
-		"ENUM_VALUE11154": 46,
-		"ENUM_VALUE11155": 47,
-		"ENUM_VALUE11156": 48,
-		"ENUM_VALUE11157": 49,
-		"ENUM_VALUE11158": 50,
-		"ENUM_VALUE11159": 51,
-		"ENUM_VALUE11160": 52,
-		"ENUM_VALUE11161": 53,
-		"ENUM_VALUE11162": 54,
-		"ENUM_VALUE11163": 55,
-		"ENUM_VALUE11164": 56,
-		"ENUM_VALUE11165": 57,
-		"ENUM_VALUE11166": 58,
-		"ENUM_VALUE11167": 59,
-		"ENUM_VALUE11168": 60,
-		"ENUM_VALUE11169": 61,
-		"ENUM_VALUE11170": 62,
-		"ENUM_VALUE11171": 63,
-		"ENUM_VALUE11172": 64,
-		"ENUM_VALUE11173": 65,
-		"ENUM_VALUE11174": 66,
-		"ENUM_VALUE11175": 67,
-		"ENUM_VALUE11176": 68,
-		"ENUM_VALUE11177": 69,
-		"ENUM_VALUE11178": 70,
-		"ENUM_VALUE11179": 71,
-		"ENUM_VALUE11180": 72,
-		"ENUM_VALUE11181": 73,
-		"ENUM_VALUE11182": 74,
-		"ENUM_VALUE11183": 75,
-		"ENUM_VALUE11184": 76,
-		"ENUM_VALUE11185": 77,
-		"ENUM_VALUE11186": 78,
-		"ENUM_VALUE11187": 79,
-		"ENUM_VALUE11188": 80,
-		"ENUM_VALUE11189": 81,
-		"ENUM_VALUE11190": 82,
-		"ENUM_VALUE11191": 83,
-		"ENUM_VALUE11192": 84,
-		"ENUM_VALUE11193": 85,
-		"ENUM_VALUE11194": 86,
-		"ENUM_VALUE11195": 87,
-		"ENUM_VALUE11196": 88,
-		"ENUM_VALUE11197": 89,
-		"ENUM_VALUE11198": 90,
-		"ENUM_VALUE11199": 91,
-		"ENUM_VALUE11200": 92,
-		"ENUM_VALUE11201": 93,
-		"ENUM_VALUE11202": 94,
-		"ENUM_VALUE11203": 95,
-		"ENUM_VALUE11204": 96,
-		"ENUM_VALUE11205": 97,
-		"ENUM_VALUE11206": 98,
-		"ENUM_VALUE11207": 99,
-		"ENUM_VALUE11208": 100,
-		"ENUM_VALUE11209": 101,
-		"ENUM_VALUE11210": 102,
-		"ENUM_VALUE11211": 103,
-		"ENUM_VALUE11212": 104,
-		"ENUM_VALUE11213": 105,
-		"ENUM_VALUE11214": 106,
-		"ENUM_VALUE11215": 107,
-		"ENUM_VALUE11216": 108,
-		"ENUM_VALUE11217": 109,
-		"ENUM_VALUE11218": 110,
-		"ENUM_VALUE11219": 111,
-		"ENUM_VALUE11220": 112,
-		"ENUM_VALUE11221": 113,
-		"ENUM_VALUE11222": 114,
-		"ENUM_VALUE11223": 115,
-		"ENUM_VALUE11224": 116,
-		"ENUM_VALUE11225": 117,
-		"ENUM_VALUE11226": 118,
-		"ENUM_VALUE11227": 119,
-		"ENUM_VALUE11228": 120,
-		"ENUM_VALUE11229": 121,
-		"ENUM_VALUE11230": 122,
-		"ENUM_VALUE11231": 123,
-		"ENUM_VALUE11232": 124,
-		"ENUM_VALUE11233": 125,
-		"ENUM_VALUE11234": 126,
-		"ENUM_VALUE11235": 127,
-		"ENUM_VALUE11236": 128,
-		"ENUM_VALUE11237": 129,
-		"ENUM_VALUE11238": 130,
-		"ENUM_VALUE11239": 131,
-		"ENUM_VALUE11240": 132,
-		"ENUM_VALUE11241": 133,
-		"ENUM_VALUE11242": 134,
-		"ENUM_VALUE11243": 135,
-		"ENUM_VALUE11244": 136,
-		"ENUM_VALUE11245": 137,
-		"ENUM_VALUE11246": 138,
-		"ENUM_VALUE11247": 139,
-		"ENUM_VALUE11248": 140,
-		"ENUM_VALUE11249": 141,
-		"ENUM_VALUE11250": 142,
-		"ENUM_VALUE11251": 143,
-		"ENUM_VALUE11252": 144,
-		"ENUM_VALUE11253": 145,
-		"ENUM_VALUE11254": 146,
-		"ENUM_VALUE11255": 147,
-		"ENUM_VALUE11256": 148,
-		"ENUM_VALUE11257": 149,
-		"ENUM_VALUE11258": 150,
-		"ENUM_VALUE11259": 151,
-		"ENUM_VALUE11260": 152,
-		"ENUM_VALUE11261": 153,
-		"ENUM_VALUE11262": 154,
-		"ENUM_VALUE11263": 155,
-		"ENUM_VALUE11264": 156,
-		"ENUM_VALUE11265": 157,
-		"ENUM_VALUE11266": 158,
-		"ENUM_VALUE11267": 159,
-		"ENUM_VALUE11268": 160,
-		"ENUM_VALUE11269": 161,
-		"ENUM_VALUE11270": 163,
-		"ENUM_VALUE11271": 164,
-		"ENUM_VALUE11272": 165,
-		"ENUM_VALUE11273": 166,
-		"ENUM_VALUE11274": 167,
-		"ENUM_VALUE11275": 168,
-		"ENUM_VALUE11276": 169,
-		"ENUM_VALUE11277": 170,
-		"ENUM_VALUE11278": 171,
-		"ENUM_VALUE11279": 172,
-		"ENUM_VALUE11280": 173,
-		"ENUM_VALUE11281": 174,
-		"ENUM_VALUE11282": 175,
-		"ENUM_VALUE11283": 176,
-		"ENUM_VALUE11284": 177,
-		"ENUM_VALUE11285": 178,
-		"ENUM_VALUE11286": 179,
-		"ENUM_VALUE11287": 180,
-		"ENUM_VALUE11288": 181,
-		"ENUM_VALUE11289": 182,
-		"ENUM_VALUE11290": 183,
-		"ENUM_VALUE11291": 184,
-		"ENUM_VALUE11292": 185,
-		"ENUM_VALUE11293": 187,
-		"ENUM_VALUE11294": 188,
-		"ENUM_VALUE11295": 189,
-		"ENUM_VALUE11296": 190,
-		"ENUM_VALUE11297": 191,
-		"ENUM_VALUE11298": 192,
-		"ENUM_VALUE11299": 193,
-		"ENUM_VALUE11300": 194,
-		"ENUM_VALUE11301": 195,
-		"ENUM_VALUE11302": 196,
-		"ENUM_VALUE11303": 197,
-		"ENUM_VALUE11304": 198,
-		"ENUM_VALUE11305": 65535,
-		"ENUM_VALUE11306": 65536,
-		"ENUM_VALUE11307": 65537,
-		"ENUM_VALUE11308": 65538,
-		"ENUM_VALUE11309": 65539,
-		"ENUM_VALUE11310": 65540,
-		"ENUM_VALUE11311": 65541,
-		"ENUM_VALUE11312": 65542,
-		"ENUM_VALUE11313": 65543,
-		"ENUM_VALUE11314": 65544,
-		"ENUM_VALUE11315": 65545,
-		"ENUM_VALUE11316": 65546,
-		"ENUM_VALUE11317": 65547,
-		"ENUM_VALUE11318": 65548,
-		"ENUM_VALUE11319": 65549,
-		"ENUM_VALUE11320": 65550,
-		"ENUM_VALUE11321": 65551,
-		"ENUM_VALUE11322": 65552,
-		"ENUM_VALUE11323": 65553,
-		"ENUM_VALUE11324": 65554,
-		"ENUM_VALUE11325": 65555,
-		"ENUM_VALUE11326": 65556,
-		"ENUM_VALUE11327": 65557,
-		"ENUM_VALUE11328": 65558,
-		"ENUM_VALUE11329": 65559,
-		"ENUM_VALUE11330": 65560,
-		"ENUM_VALUE11331": 65561,
-		"ENUM_VALUE11332": 65562,
-		"ENUM_VALUE11333": 65563,
-		"ENUM_VALUE11334": 69632,
-		"ENUM_VALUE11335": 69633,
-		"ENUM_VALUE11336": 69634,
-		"ENUM_VALUE11337": 69635,
-		"ENUM_VALUE11338": 69636,
-		"ENUM_VALUE11339": 69637,
-		"ENUM_VALUE11340": 69638,
-		"ENUM_VALUE11341": 69639,
-		"ENUM_VALUE11342": 69640,
-		"ENUM_VALUE11343": 69641,
-		"ENUM_VALUE11344": 69642,
-		"ENUM_VALUE11345": 69643,
-		"ENUM_VALUE11346": 69644,
-		"ENUM_VALUE11347": 69645,
-		"ENUM_VALUE11348": 69646,
-		"ENUM_VALUE11349": 69647,
-		"ENUM_VALUE11350": 69648,
-		"ENUM_VALUE11351": 69649,
-		"ENUM_VALUE11352": 69650,
-		"ENUM_VALUE11353": 69651,
-		"ENUM_VALUE11354": 69652,
-		"ENUM_VALUE11355": 69653,
-		"ENUM_VALUE11356": 69654,
-		"ENUM_VALUE11357": 69655,
-		"ENUM_VALUE11358": 69656,
-		"ENUM_VALUE11359": 69657,
-		"ENUM_VALUE11360": 69658,
-		"ENUM_VALUE11361": 69659,
-		"ENUM_VALUE11362": 69660,
-		"ENUM_VALUE11363": 69661,
-		"ENUM_VALUE11364": 69662,
-		"ENUM_VALUE11365": 73728,
-		"ENUM_VALUE11366": 73729,
-		"ENUM_VALUE11367": 77824,
-		"ENUM_VALUE11368": 77825,
-		"ENUM_VALUE11369": 81920,
-		"ENUM_VALUE11370": 81921,
-		"ENUM_VALUE11371": 81922,
-		"ENUM_VALUE11372": 81923,
-		"ENUM_VALUE11373": 86016,
-		"ENUM_VALUE11374": 86017,
-		"ENUM_VALUE11375": 86018,
-		"ENUM_VALUE11376": 86019,
-		"ENUM_VALUE11377": 86020,
-		"ENUM_VALUE11378": 86021,
-		"ENUM_VALUE11379": 86022,
-		"ENUM_VALUE11380": 86023,
-		"ENUM_VALUE11381": 86024,
-		"ENUM_VALUE11382": 86025,
-		"ENUM_VALUE11383": 86026,
-		"ENUM_VALUE11384": 86027,
-		"ENUM_VALUE11385": 86028,
-		"ENUM_VALUE11386": 86029,
-		"ENUM_VALUE11387": 86030,
-		"ENUM_VALUE11388": 86031,
-		"ENUM_VALUE11389": 86032,
-		"ENUM_VALUE11390": 86033,
-		"ENUM_VALUE11391": 86034,
-		"ENUM_VALUE11392": 86035,
-		"ENUM_VALUE11393": 86036,
-		"ENUM_VALUE11394": 86037,
-		"ENUM_VALUE11395": 86038,
-		"ENUM_VALUE11396": 86039,
-		"ENUM_VALUE11397": 86040,
-		"ENUM_VALUE11398": 86041,
-		"ENUM_VALUE11399": 86042,
-		"ENUM_VALUE11400": 86043,
-		"ENUM_VALUE11401": 86044,
-		"ENUM_VALUE11402": 86045,
-		"ENUM_VALUE11403": 86046,
-		"ENUM_VALUE11404": 86047,
-		"ENUM_VALUE11405": 86048,
-		"ENUM_VALUE11406": 86049,
-		"ENUM_VALUE11407": 86050,
-		"ENUM_VALUE11408": 86051,
-		"ENUM_VALUE11409": 86052,
-		"ENUM_VALUE11410": 86053,
-		"ENUM_VALUE11411": 86054,
-		"ENUM_VALUE11412": 86055,
-		"ENUM_VALUE11413": 86056,
-		"ENUM_VALUE11414": 86057,
-		"ENUM_VALUE11415": 86058,
-		"ENUM_VALUE11416": 86059,
-		"ENUM_VALUE11417": 86060,
-		"ENUM_VALUE11418": 86061,
-		"ENUM_VALUE11419": 86062,
-		"ENUM_VALUE11420": 86063,
-		"ENUM_VALUE11421": 86064,
-		"ENUM_VALUE11422": 86065,
-		"ENUM_VALUE11423": 86066,
-		"ENUM_VALUE11424": 86067,
-		"ENUM_VALUE11425": 86068,
-		"ENUM_VALUE11426": 86069,
-		"ENUM_VALUE11427": 86070,
-		"ENUM_VALUE11428": 86071,
-		"ENUM_VALUE11429": 86072,
-		"ENUM_VALUE11430": 86073,
-		"ENUM_VALUE11431": 86074,
-		"ENUM_VALUE11432": 86077,
-		"ENUM_VALUE11433": 86078,
-		"ENUM_VALUE11434": 86079,
-		"ENUM_VALUE11435": 86080,
-		"ENUM_VALUE11436": 86081,
-		"ENUM_VALUE11437": 86082,
-		"ENUM_VALUE11438": 86083,
-		"ENUM_VALUE11439": 86084,
-		"ENUM_VALUE11440": 90112,
-		"ENUM_VALUE11441": 94208,
-		"ENUM_VALUE11442": 94209,
-		"ENUM_VALUE11443": 94210,
-		"ENUM_VALUE11444": 94211,
-		"ENUM_VALUE11445": 94212,
-		"ENUM_VALUE11446": 94213,
-		"ENUM_VALUE11447": 94214,
-		"ENUM_VALUE11448": 94215,
-		"ENUM_VALUE11449": 94216,
-		"ENUM_VALUE11450": 94217,
-		"ENUM_VALUE11451": 94218,
-		"ENUM_VALUE11452": 94219,
-		"ENUM_VALUE11453": 94220,
-		"ENUM_VALUE11454": 94221,
-		"ENUM_VALUE11455": 94222,
-		"ENUM_VALUE11456": 94223,
-		"ENUM_VALUE11457": 94224,
-		"ENUM_VALUE11458": 98304,
-		"ENUM_VALUE11459": 98305,
-		"ENUM_VALUE11460": 98306,
-		"ENUM_VALUE11461": 98307,
-		"ENUM_VALUE11462": 98308,
-		"ENUM_VALUE11463": 102400,
-		"ENUM_VALUE11464": 131072,
-		"ENUM_VALUE11465": 131073,
-		"ENUM_VALUE11466": 135168,
-		"ENUM_VALUE11467": 9439507,
-	}
-)
-
-func (x Enum11107) Enum() *Enum11107 {
-	p := new(Enum11107)
-	*p = x
-	return p
-}
-
-func (x Enum11107) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum11107) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[33].Descriptor()
-}
-
-func (Enum11107) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[33]
-}
-
-func (x Enum11107) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum11107) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum11107(num)
-	return nil
-}
-
-// Deprecated: Use Enum11107.Descriptor instead.
-func (Enum11107) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{33}
-}
-
-type Enum11541 int32
-
-const (
-	Enum11541_ENUM_VALUE11542 Enum11541 = -1
-	Enum11541_ENUM_VALUE11543 Enum11541 = 0
-	Enum11541_ENUM_VALUE11544 Enum11541 = 1
-	Enum11541_ENUM_VALUE11545 Enum11541 = 2
-	Enum11541_ENUM_VALUE11546 Enum11541 = 3
-	Enum11541_ENUM_VALUE11547 Enum11541 = 4
-	Enum11541_ENUM_VALUE11548 Enum11541 = 5
-	Enum11541_ENUM_VALUE11549 Enum11541 = 6
-	Enum11541_ENUM_VALUE11550 Enum11541 = 7
-	Enum11541_ENUM_VALUE11551 Enum11541 = 8
-	Enum11541_ENUM_VALUE11552 Enum11541 = 9
-	Enum11541_ENUM_VALUE11553 Enum11541 = 10
-	Enum11541_ENUM_VALUE11554 Enum11541 = 11
-	Enum11541_ENUM_VALUE11555 Enum11541 = 12
-	Enum11541_ENUM_VALUE11556 Enum11541 = 13
-	Enum11541_ENUM_VALUE11557 Enum11541 = 14
-	Enum11541_ENUM_VALUE11558 Enum11541 = 15
-	Enum11541_ENUM_VALUE11559 Enum11541 = 16
-	Enum11541_ENUM_VALUE11560 Enum11541 = 17
-	Enum11541_ENUM_VALUE11561 Enum11541 = 18
-	Enum11541_ENUM_VALUE11562 Enum11541 = 19
-	Enum11541_ENUM_VALUE11563 Enum11541 = 20
-	Enum11541_ENUM_VALUE11564 Enum11541 = 21
-	Enum11541_ENUM_VALUE11565 Enum11541 = 22
-	Enum11541_ENUM_VALUE11566 Enum11541 = 23
-	Enum11541_ENUM_VALUE11567 Enum11541 = 24
-	Enum11541_ENUM_VALUE11568 Enum11541 = 25
-	Enum11541_ENUM_VALUE11569 Enum11541 = 26
-	Enum11541_ENUM_VALUE11570 Enum11541 = 27
-	Enum11541_ENUM_VALUE11571 Enum11541 = 28
-	Enum11541_ENUM_VALUE11572 Enum11541 = 29
-	Enum11541_ENUM_VALUE11573 Enum11541 = 30
-	Enum11541_ENUM_VALUE11574 Enum11541 = 31
-	Enum11541_ENUM_VALUE11575 Enum11541 = 32
-	Enum11541_ENUM_VALUE11576 Enum11541 = 33
-	Enum11541_ENUM_VALUE11577 Enum11541 = 34
-	Enum11541_ENUM_VALUE11578 Enum11541 = 35
-	Enum11541_ENUM_VALUE11579 Enum11541 = 36
-	Enum11541_ENUM_VALUE11580 Enum11541 = 37
-	Enum11541_ENUM_VALUE11581 Enum11541 = 38
-	Enum11541_ENUM_VALUE11582 Enum11541 = 39
-	Enum11541_ENUM_VALUE11583 Enum11541 = 40
-	Enum11541_ENUM_VALUE11584 Enum11541 = 41
-	Enum11541_ENUM_VALUE11585 Enum11541 = 42
-	Enum11541_ENUM_VALUE11586 Enum11541 = 43
-	Enum11541_ENUM_VALUE11587 Enum11541 = 44
-	Enum11541_ENUM_VALUE11588 Enum11541 = 45
-	Enum11541_ENUM_VALUE11589 Enum11541 = 46
-	Enum11541_ENUM_VALUE11590 Enum11541 = 47
-	Enum11541_ENUM_VALUE11591 Enum11541 = 48
-	Enum11541_ENUM_VALUE11592 Enum11541 = 49
-	Enum11541_ENUM_VALUE11593 Enum11541 = 50
-	Enum11541_ENUM_VALUE11594 Enum11541 = 51
-	Enum11541_ENUM_VALUE11595 Enum11541 = 52
-	Enum11541_ENUM_VALUE11596 Enum11541 = 53
-	Enum11541_ENUM_VALUE11597 Enum11541 = 54
-	Enum11541_ENUM_VALUE11598 Enum11541 = 55
-	Enum11541_ENUM_VALUE11599 Enum11541 = 56
-	Enum11541_ENUM_VALUE11600 Enum11541 = 57
-	Enum11541_ENUM_VALUE11601 Enum11541 = 58
-	Enum11541_ENUM_VALUE11602 Enum11541 = 59
-	Enum11541_ENUM_VALUE11603 Enum11541 = 60
-	Enum11541_ENUM_VALUE11604 Enum11541 = 61
-	Enum11541_ENUM_VALUE11605 Enum11541 = 62
-	Enum11541_ENUM_VALUE11606 Enum11541 = 63
-	Enum11541_ENUM_VALUE11607 Enum11541 = 64
-	Enum11541_ENUM_VALUE11608 Enum11541 = 65
-	Enum11541_ENUM_VALUE11609 Enum11541 = 66
-	Enum11541_ENUM_VALUE11610 Enum11541 = 67
-	Enum11541_ENUM_VALUE11611 Enum11541 = 68
-	Enum11541_ENUM_VALUE11612 Enum11541 = 69
-	Enum11541_ENUM_VALUE11613 Enum11541 = 70
-	Enum11541_ENUM_VALUE11614 Enum11541 = 71
-	Enum11541_ENUM_VALUE11615 Enum11541 = 72
-	Enum11541_ENUM_VALUE11616 Enum11541 = 73
-	Enum11541_ENUM_VALUE11617 Enum11541 = 74
-	Enum11541_ENUM_VALUE11618 Enum11541 = 75
-	Enum11541_ENUM_VALUE11619 Enum11541 = 76
-	Enum11541_ENUM_VALUE11620 Enum11541 = 77
-	Enum11541_ENUM_VALUE11621 Enum11541 = 78
-	Enum11541_ENUM_VALUE11622 Enum11541 = 79
-	Enum11541_ENUM_VALUE11623 Enum11541 = 80
-	Enum11541_ENUM_VALUE11624 Enum11541 = 81
-	Enum11541_ENUM_VALUE11625 Enum11541 = 82
-	Enum11541_ENUM_VALUE11626 Enum11541 = 83
-	Enum11541_ENUM_VALUE11627 Enum11541 = 84
-	Enum11541_ENUM_VALUE11628 Enum11541 = 85
-	Enum11541_ENUM_VALUE11629 Enum11541 = 86
-	Enum11541_ENUM_VALUE11630 Enum11541 = 87
-	Enum11541_ENUM_VALUE11631 Enum11541 = 88
-	Enum11541_ENUM_VALUE11632 Enum11541 = 89
-	Enum11541_ENUM_VALUE11633 Enum11541 = 90
-	Enum11541_ENUM_VALUE11634 Enum11541 = 91
-	Enum11541_ENUM_VALUE11635 Enum11541 = 92
-	Enum11541_ENUM_VALUE11636 Enum11541 = 93
-	Enum11541_ENUM_VALUE11637 Enum11541 = 94
-	Enum11541_ENUM_VALUE11638 Enum11541 = 95
-	Enum11541_ENUM_VALUE11639 Enum11541 = 96
-	Enum11541_ENUM_VALUE11640 Enum11541 = 97
-	Enum11541_ENUM_VALUE11641 Enum11541 = 98
-	Enum11541_ENUM_VALUE11642 Enum11541 = 99
-	Enum11541_ENUM_VALUE11643 Enum11541 = 100
-	Enum11541_ENUM_VALUE11644 Enum11541 = 101
-	Enum11541_ENUM_VALUE11645 Enum11541 = 102
-	Enum11541_ENUM_VALUE11646 Enum11541 = 103
-	Enum11541_ENUM_VALUE11647 Enum11541 = 104
-	Enum11541_ENUM_VALUE11648 Enum11541 = 105
-	Enum11541_ENUM_VALUE11649 Enum11541 = 106
-	Enum11541_ENUM_VALUE11650 Enum11541 = 107
-	Enum11541_ENUM_VALUE11651 Enum11541 = 108
-	Enum11541_ENUM_VALUE11652 Enum11541 = 109
-	Enum11541_ENUM_VALUE11653 Enum11541 = 110
-	Enum11541_ENUM_VALUE11654 Enum11541 = 111
-	Enum11541_ENUM_VALUE11655 Enum11541 = 112
-	Enum11541_ENUM_VALUE11656 Enum11541 = 113
-	Enum11541_ENUM_VALUE11657 Enum11541 = 114
-	Enum11541_ENUM_VALUE11658 Enum11541 = 115
-	Enum11541_ENUM_VALUE11659 Enum11541 = 116
-	Enum11541_ENUM_VALUE11660 Enum11541 = 117
-	Enum11541_ENUM_VALUE11661 Enum11541 = 118
-	Enum11541_ENUM_VALUE11662 Enum11541 = 119
-	Enum11541_ENUM_VALUE11663 Enum11541 = 120
-	Enum11541_ENUM_VALUE11664 Enum11541 = 121
-	Enum11541_ENUM_VALUE11665 Enum11541 = 122
-	Enum11541_ENUM_VALUE11666 Enum11541 = 123
-	Enum11541_ENUM_VALUE11667 Enum11541 = 124
-	Enum11541_ENUM_VALUE11668 Enum11541 = 125
-	Enum11541_ENUM_VALUE11669 Enum11541 = 126
-	Enum11541_ENUM_VALUE11670 Enum11541 = 127
-	Enum11541_ENUM_VALUE11671 Enum11541 = 128
-	Enum11541_ENUM_VALUE11672 Enum11541 = 129
-	Enum11541_ENUM_VALUE11673 Enum11541 = 130
-	Enum11541_ENUM_VALUE11674 Enum11541 = 131
-	Enum11541_ENUM_VALUE11675 Enum11541 = 132
-	Enum11541_ENUM_VALUE11676 Enum11541 = 133
-	Enum11541_ENUM_VALUE11677 Enum11541 = 134
-	Enum11541_ENUM_VALUE11678 Enum11541 = 135
-	Enum11541_ENUM_VALUE11679 Enum11541 = 136
-	Enum11541_ENUM_VALUE11680 Enum11541 = 137
-	Enum11541_ENUM_VALUE11681 Enum11541 = 138
-	Enum11541_ENUM_VALUE11682 Enum11541 = 139
-	Enum11541_ENUM_VALUE11683 Enum11541 = 140
-	Enum11541_ENUM_VALUE11684 Enum11541 = 141
-	Enum11541_ENUM_VALUE11685 Enum11541 = 142
-	Enum11541_ENUM_VALUE11686 Enum11541 = 143
-	Enum11541_ENUM_VALUE11687 Enum11541 = 144
-	Enum11541_ENUM_VALUE11688 Enum11541 = 145
-	Enum11541_ENUM_VALUE11689 Enum11541 = 146
-	Enum11541_ENUM_VALUE11690 Enum11541 = 147
-	Enum11541_ENUM_VALUE11691 Enum11541 = 148
-	Enum11541_ENUM_VALUE11692 Enum11541 = 149
-	Enum11541_ENUM_VALUE11693 Enum11541 = 150
-	Enum11541_ENUM_VALUE11694 Enum11541 = 151
-	Enum11541_ENUM_VALUE11695 Enum11541 = 152
-	Enum11541_ENUM_VALUE11696 Enum11541 = 153
-	Enum11541_ENUM_VALUE11697 Enum11541 = 154
-	Enum11541_ENUM_VALUE11698 Enum11541 = 155
-	Enum11541_ENUM_VALUE11699 Enum11541 = 156
-	Enum11541_ENUM_VALUE11700 Enum11541 = 157
-	Enum11541_ENUM_VALUE11701 Enum11541 = 158
-	Enum11541_ENUM_VALUE11702 Enum11541 = 159
-	Enum11541_ENUM_VALUE11703 Enum11541 = 160
-	Enum11541_ENUM_VALUE11704 Enum11541 = 161
-	Enum11541_ENUM_VALUE11705 Enum11541 = 162
-	Enum11541_ENUM_VALUE11706 Enum11541 = 163
-	Enum11541_ENUM_VALUE11707 Enum11541 = 164
-	Enum11541_ENUM_VALUE11708 Enum11541 = 165
-	Enum11541_ENUM_VALUE11709 Enum11541 = 166
-	Enum11541_ENUM_VALUE11710 Enum11541 = 167
-	Enum11541_ENUM_VALUE11711 Enum11541 = 168
-	Enum11541_ENUM_VALUE11712 Enum11541 = 169
-	Enum11541_ENUM_VALUE11713 Enum11541 = 170
-	Enum11541_ENUM_VALUE11714 Enum11541 = 171
-	Enum11541_ENUM_VALUE11715 Enum11541 = 172
-	Enum11541_ENUM_VALUE11716 Enum11541 = 173
-	Enum11541_ENUM_VALUE11717 Enum11541 = 174
-	Enum11541_ENUM_VALUE11718 Enum11541 = 175
-	Enum11541_ENUM_VALUE11719 Enum11541 = 176
-	Enum11541_ENUM_VALUE11720 Enum11541 = 177
-	Enum11541_ENUM_VALUE11721 Enum11541 = 178
-	Enum11541_ENUM_VALUE11722 Enum11541 = 179
-	Enum11541_ENUM_VALUE11723 Enum11541 = 180
-	Enum11541_ENUM_VALUE11724 Enum11541 = 181
-	Enum11541_ENUM_VALUE11725 Enum11541 = 182
-	Enum11541_ENUM_VALUE11726 Enum11541 = 183
-	Enum11541_ENUM_VALUE11727 Enum11541 = 184
-	Enum11541_ENUM_VALUE11728 Enum11541 = 185
-	Enum11541_ENUM_VALUE11729 Enum11541 = 186
-	Enum11541_ENUM_VALUE11730 Enum11541 = 187
-	Enum11541_ENUM_VALUE11731 Enum11541 = 188
-	Enum11541_ENUM_VALUE11732 Enum11541 = 16777215
-)
-
-// Enum value maps for Enum11541.
-var (
-	Enum11541_name = map[int32]string{
-		-1:       "ENUM_VALUE11542",
-		0:        "ENUM_VALUE11543",
-		1:        "ENUM_VALUE11544",
-		2:        "ENUM_VALUE11545",
-		3:        "ENUM_VALUE11546",
-		4:        "ENUM_VALUE11547",
-		5:        "ENUM_VALUE11548",
-		6:        "ENUM_VALUE11549",
-		7:        "ENUM_VALUE11550",
-		8:        "ENUM_VALUE11551",
-		9:        "ENUM_VALUE11552",
-		10:       "ENUM_VALUE11553",
-		11:       "ENUM_VALUE11554",
-		12:       "ENUM_VALUE11555",
-		13:       "ENUM_VALUE11556",
-		14:       "ENUM_VALUE11557",
-		15:       "ENUM_VALUE11558",
-		16:       "ENUM_VALUE11559",
-		17:       "ENUM_VALUE11560",
-		18:       "ENUM_VALUE11561",
-		19:       "ENUM_VALUE11562",
-		20:       "ENUM_VALUE11563",
-		21:       "ENUM_VALUE11564",
-		22:       "ENUM_VALUE11565",
-		23:       "ENUM_VALUE11566",
-		24:       "ENUM_VALUE11567",
-		25:       "ENUM_VALUE11568",
-		26:       "ENUM_VALUE11569",
-		27:       "ENUM_VALUE11570",
-		28:       "ENUM_VALUE11571",
-		29:       "ENUM_VALUE11572",
-		30:       "ENUM_VALUE11573",
-		31:       "ENUM_VALUE11574",
-		32:       "ENUM_VALUE11575",
-		33:       "ENUM_VALUE11576",
-		34:       "ENUM_VALUE11577",
-		35:       "ENUM_VALUE11578",
-		36:       "ENUM_VALUE11579",
-		37:       "ENUM_VALUE11580",
-		38:       "ENUM_VALUE11581",
-		39:       "ENUM_VALUE11582",
-		40:       "ENUM_VALUE11583",
-		41:       "ENUM_VALUE11584",
-		42:       "ENUM_VALUE11585",
-		43:       "ENUM_VALUE11586",
-		44:       "ENUM_VALUE11587",
-		45:       "ENUM_VALUE11588",
-		46:       "ENUM_VALUE11589",
-		47:       "ENUM_VALUE11590",
-		48:       "ENUM_VALUE11591",
-		49:       "ENUM_VALUE11592",
-		50:       "ENUM_VALUE11593",
-		51:       "ENUM_VALUE11594",
-		52:       "ENUM_VALUE11595",
-		53:       "ENUM_VALUE11596",
-		54:       "ENUM_VALUE11597",
-		55:       "ENUM_VALUE11598",
-		56:       "ENUM_VALUE11599",
-		57:       "ENUM_VALUE11600",
-		58:       "ENUM_VALUE11601",
-		59:       "ENUM_VALUE11602",
-		60:       "ENUM_VALUE11603",
-		61:       "ENUM_VALUE11604",
-		62:       "ENUM_VALUE11605",
-		63:       "ENUM_VALUE11606",
-		64:       "ENUM_VALUE11607",
-		65:       "ENUM_VALUE11608",
-		66:       "ENUM_VALUE11609",
-		67:       "ENUM_VALUE11610",
-		68:       "ENUM_VALUE11611",
-		69:       "ENUM_VALUE11612",
-		70:       "ENUM_VALUE11613",
-		71:       "ENUM_VALUE11614",
-		72:       "ENUM_VALUE11615",
-		73:       "ENUM_VALUE11616",
-		74:       "ENUM_VALUE11617",
-		75:       "ENUM_VALUE11618",
-		76:       "ENUM_VALUE11619",
-		77:       "ENUM_VALUE11620",
-		78:       "ENUM_VALUE11621",
-		79:       "ENUM_VALUE11622",
-		80:       "ENUM_VALUE11623",
-		81:       "ENUM_VALUE11624",
-		82:       "ENUM_VALUE11625",
-		83:       "ENUM_VALUE11626",
-		84:       "ENUM_VALUE11627",
-		85:       "ENUM_VALUE11628",
-		86:       "ENUM_VALUE11629",
-		87:       "ENUM_VALUE11630",
-		88:       "ENUM_VALUE11631",
-		89:       "ENUM_VALUE11632",
-		90:       "ENUM_VALUE11633",
-		91:       "ENUM_VALUE11634",
-		92:       "ENUM_VALUE11635",
-		93:       "ENUM_VALUE11636",
-		94:       "ENUM_VALUE11637",
-		95:       "ENUM_VALUE11638",
-		96:       "ENUM_VALUE11639",
-		97:       "ENUM_VALUE11640",
-		98:       "ENUM_VALUE11641",
-		99:       "ENUM_VALUE11642",
-		100:      "ENUM_VALUE11643",
-		101:      "ENUM_VALUE11644",
-		102:      "ENUM_VALUE11645",
-		103:      "ENUM_VALUE11646",
-		104:      "ENUM_VALUE11647",
-		105:      "ENUM_VALUE11648",
-		106:      "ENUM_VALUE11649",
-		107:      "ENUM_VALUE11650",
-		108:      "ENUM_VALUE11651",
-		109:      "ENUM_VALUE11652",
-		110:      "ENUM_VALUE11653",
-		111:      "ENUM_VALUE11654",
-		112:      "ENUM_VALUE11655",
-		113:      "ENUM_VALUE11656",
-		114:      "ENUM_VALUE11657",
-		115:      "ENUM_VALUE11658",
-		116:      "ENUM_VALUE11659",
-		117:      "ENUM_VALUE11660",
-		118:      "ENUM_VALUE11661",
-		119:      "ENUM_VALUE11662",
-		120:      "ENUM_VALUE11663",
-		121:      "ENUM_VALUE11664",
-		122:      "ENUM_VALUE11665",
-		123:      "ENUM_VALUE11666",
-		124:      "ENUM_VALUE11667",
-		125:      "ENUM_VALUE11668",
-		126:      "ENUM_VALUE11669",
-		127:      "ENUM_VALUE11670",
-		128:      "ENUM_VALUE11671",
-		129:      "ENUM_VALUE11672",
-		130:      "ENUM_VALUE11673",
-		131:      "ENUM_VALUE11674",
-		132:      "ENUM_VALUE11675",
-		133:      "ENUM_VALUE11676",
-		134:      "ENUM_VALUE11677",
-		135:      "ENUM_VALUE11678",
-		136:      "ENUM_VALUE11679",
-		137:      "ENUM_VALUE11680",
-		138:      "ENUM_VALUE11681",
-		139:      "ENUM_VALUE11682",
-		140:      "ENUM_VALUE11683",
-		141:      "ENUM_VALUE11684",
-		142:      "ENUM_VALUE11685",
-		143:      "ENUM_VALUE11686",
-		144:      "ENUM_VALUE11687",
-		145:      "ENUM_VALUE11688",
-		146:      "ENUM_VALUE11689",
-		147:      "ENUM_VALUE11690",
-		148:      "ENUM_VALUE11691",
-		149:      "ENUM_VALUE11692",
-		150:      "ENUM_VALUE11693",
-		151:      "ENUM_VALUE11694",
-		152:      "ENUM_VALUE11695",
-		153:      "ENUM_VALUE11696",
-		154:      "ENUM_VALUE11697",
-		155:      "ENUM_VALUE11698",
-		156:      "ENUM_VALUE11699",
-		157:      "ENUM_VALUE11700",
-		158:      "ENUM_VALUE11701",
-		159:      "ENUM_VALUE11702",
-		160:      "ENUM_VALUE11703",
-		161:      "ENUM_VALUE11704",
-		162:      "ENUM_VALUE11705",
-		163:      "ENUM_VALUE11706",
-		164:      "ENUM_VALUE11707",
-		165:      "ENUM_VALUE11708",
-		166:      "ENUM_VALUE11709",
-		167:      "ENUM_VALUE11710",
-		168:      "ENUM_VALUE11711",
-		169:      "ENUM_VALUE11712",
-		170:      "ENUM_VALUE11713",
-		171:      "ENUM_VALUE11714",
-		172:      "ENUM_VALUE11715",
-		173:      "ENUM_VALUE11716",
-		174:      "ENUM_VALUE11717",
-		175:      "ENUM_VALUE11718",
-		176:      "ENUM_VALUE11719",
-		177:      "ENUM_VALUE11720",
-		178:      "ENUM_VALUE11721",
-		179:      "ENUM_VALUE11722",
-		180:      "ENUM_VALUE11723",
-		181:      "ENUM_VALUE11724",
-		182:      "ENUM_VALUE11725",
-		183:      "ENUM_VALUE11726",
-		184:      "ENUM_VALUE11727",
-		185:      "ENUM_VALUE11728",
-		186:      "ENUM_VALUE11729",
-		187:      "ENUM_VALUE11730",
-		188:      "ENUM_VALUE11731",
-		16777215: "ENUM_VALUE11732",
-	}
-	Enum11541_value = map[string]int32{
-		"ENUM_VALUE11542": -1,
-		"ENUM_VALUE11543": 0,
-		"ENUM_VALUE11544": 1,
-		"ENUM_VALUE11545": 2,
-		"ENUM_VALUE11546": 3,
-		"ENUM_VALUE11547": 4,
-		"ENUM_VALUE11548": 5,
-		"ENUM_VALUE11549": 6,
-		"ENUM_VALUE11550": 7,
-		"ENUM_VALUE11551": 8,
-		"ENUM_VALUE11552": 9,
-		"ENUM_VALUE11553": 10,
-		"ENUM_VALUE11554": 11,
-		"ENUM_VALUE11555": 12,
-		"ENUM_VALUE11556": 13,
-		"ENUM_VALUE11557": 14,
-		"ENUM_VALUE11558": 15,
-		"ENUM_VALUE11559": 16,
-		"ENUM_VALUE11560": 17,
-		"ENUM_VALUE11561": 18,
-		"ENUM_VALUE11562": 19,
-		"ENUM_VALUE11563": 20,
-		"ENUM_VALUE11564": 21,
-		"ENUM_VALUE11565": 22,
-		"ENUM_VALUE11566": 23,
-		"ENUM_VALUE11567": 24,
-		"ENUM_VALUE11568": 25,
-		"ENUM_VALUE11569": 26,
-		"ENUM_VALUE11570": 27,
-		"ENUM_VALUE11571": 28,
-		"ENUM_VALUE11572": 29,
-		"ENUM_VALUE11573": 30,
-		"ENUM_VALUE11574": 31,
-		"ENUM_VALUE11575": 32,
-		"ENUM_VALUE11576": 33,
-		"ENUM_VALUE11577": 34,
-		"ENUM_VALUE11578": 35,
-		"ENUM_VALUE11579": 36,
-		"ENUM_VALUE11580": 37,
-		"ENUM_VALUE11581": 38,
-		"ENUM_VALUE11582": 39,
-		"ENUM_VALUE11583": 40,
-		"ENUM_VALUE11584": 41,
-		"ENUM_VALUE11585": 42,
-		"ENUM_VALUE11586": 43,
-		"ENUM_VALUE11587": 44,
-		"ENUM_VALUE11588": 45,
-		"ENUM_VALUE11589": 46,
-		"ENUM_VALUE11590": 47,
-		"ENUM_VALUE11591": 48,
-		"ENUM_VALUE11592": 49,
-		"ENUM_VALUE11593": 50,
-		"ENUM_VALUE11594": 51,
-		"ENUM_VALUE11595": 52,
-		"ENUM_VALUE11596": 53,
-		"ENUM_VALUE11597": 54,
-		"ENUM_VALUE11598": 55,
-		"ENUM_VALUE11599": 56,
-		"ENUM_VALUE11600": 57,
-		"ENUM_VALUE11601": 58,
-		"ENUM_VALUE11602": 59,
-		"ENUM_VALUE11603": 60,
-		"ENUM_VALUE11604": 61,
-		"ENUM_VALUE11605": 62,
-		"ENUM_VALUE11606": 63,
-		"ENUM_VALUE11607": 64,
-		"ENUM_VALUE11608": 65,
-		"ENUM_VALUE11609": 66,
-		"ENUM_VALUE11610": 67,
-		"ENUM_VALUE11611": 68,
-		"ENUM_VALUE11612": 69,
-		"ENUM_VALUE11613": 70,
-		"ENUM_VALUE11614": 71,
-		"ENUM_VALUE11615": 72,
-		"ENUM_VALUE11616": 73,
-		"ENUM_VALUE11617": 74,
-		"ENUM_VALUE11618": 75,
-		"ENUM_VALUE11619": 76,
-		"ENUM_VALUE11620": 77,
-		"ENUM_VALUE11621": 78,
-		"ENUM_VALUE11622": 79,
-		"ENUM_VALUE11623": 80,
-		"ENUM_VALUE11624": 81,
-		"ENUM_VALUE11625": 82,
-		"ENUM_VALUE11626": 83,
-		"ENUM_VALUE11627": 84,
-		"ENUM_VALUE11628": 85,
-		"ENUM_VALUE11629": 86,
-		"ENUM_VALUE11630": 87,
-		"ENUM_VALUE11631": 88,
-		"ENUM_VALUE11632": 89,
-		"ENUM_VALUE11633": 90,
-		"ENUM_VALUE11634": 91,
-		"ENUM_VALUE11635": 92,
-		"ENUM_VALUE11636": 93,
-		"ENUM_VALUE11637": 94,
-		"ENUM_VALUE11638": 95,
-		"ENUM_VALUE11639": 96,
-		"ENUM_VALUE11640": 97,
-		"ENUM_VALUE11641": 98,
-		"ENUM_VALUE11642": 99,
-		"ENUM_VALUE11643": 100,
-		"ENUM_VALUE11644": 101,
-		"ENUM_VALUE11645": 102,
-		"ENUM_VALUE11646": 103,
-		"ENUM_VALUE11647": 104,
-		"ENUM_VALUE11648": 105,
-		"ENUM_VALUE11649": 106,
-		"ENUM_VALUE11650": 107,
-		"ENUM_VALUE11651": 108,
-		"ENUM_VALUE11652": 109,
-		"ENUM_VALUE11653": 110,
-		"ENUM_VALUE11654": 111,
-		"ENUM_VALUE11655": 112,
-		"ENUM_VALUE11656": 113,
-		"ENUM_VALUE11657": 114,
-		"ENUM_VALUE11658": 115,
-		"ENUM_VALUE11659": 116,
-		"ENUM_VALUE11660": 117,
-		"ENUM_VALUE11661": 118,
-		"ENUM_VALUE11662": 119,
-		"ENUM_VALUE11663": 120,
-		"ENUM_VALUE11664": 121,
-		"ENUM_VALUE11665": 122,
-		"ENUM_VALUE11666": 123,
-		"ENUM_VALUE11667": 124,
-		"ENUM_VALUE11668": 125,
-		"ENUM_VALUE11669": 126,
-		"ENUM_VALUE11670": 127,
-		"ENUM_VALUE11671": 128,
-		"ENUM_VALUE11672": 129,
-		"ENUM_VALUE11673": 130,
-		"ENUM_VALUE11674": 131,
-		"ENUM_VALUE11675": 132,
-		"ENUM_VALUE11676": 133,
-		"ENUM_VALUE11677": 134,
-		"ENUM_VALUE11678": 135,
-		"ENUM_VALUE11679": 136,
-		"ENUM_VALUE11680": 137,
-		"ENUM_VALUE11681": 138,
-		"ENUM_VALUE11682": 139,
-		"ENUM_VALUE11683": 140,
-		"ENUM_VALUE11684": 141,
-		"ENUM_VALUE11685": 142,
-		"ENUM_VALUE11686": 143,
-		"ENUM_VALUE11687": 144,
-		"ENUM_VALUE11688": 145,
-		"ENUM_VALUE11689": 146,
-		"ENUM_VALUE11690": 147,
-		"ENUM_VALUE11691": 148,
-		"ENUM_VALUE11692": 149,
-		"ENUM_VALUE11693": 150,
-		"ENUM_VALUE11694": 151,
-		"ENUM_VALUE11695": 152,
-		"ENUM_VALUE11696": 153,
-		"ENUM_VALUE11697": 154,
-		"ENUM_VALUE11698": 155,
-		"ENUM_VALUE11699": 156,
-		"ENUM_VALUE11700": 157,
-		"ENUM_VALUE11701": 158,
-		"ENUM_VALUE11702": 159,
-		"ENUM_VALUE11703": 160,
-		"ENUM_VALUE11704": 161,
-		"ENUM_VALUE11705": 162,
-		"ENUM_VALUE11706": 163,
-		"ENUM_VALUE11707": 164,
-		"ENUM_VALUE11708": 165,
-		"ENUM_VALUE11709": 166,
-		"ENUM_VALUE11710": 167,
-		"ENUM_VALUE11711": 168,
-		"ENUM_VALUE11712": 169,
-		"ENUM_VALUE11713": 170,
-		"ENUM_VALUE11714": 171,
-		"ENUM_VALUE11715": 172,
-		"ENUM_VALUE11716": 173,
-		"ENUM_VALUE11717": 174,
-		"ENUM_VALUE11718": 175,
-		"ENUM_VALUE11719": 176,
-		"ENUM_VALUE11720": 177,
-		"ENUM_VALUE11721": 178,
-		"ENUM_VALUE11722": 179,
-		"ENUM_VALUE11723": 180,
-		"ENUM_VALUE11724": 181,
-		"ENUM_VALUE11725": 182,
-		"ENUM_VALUE11726": 183,
-		"ENUM_VALUE11727": 184,
-		"ENUM_VALUE11728": 185,
-		"ENUM_VALUE11729": 186,
-		"ENUM_VALUE11730": 187,
-		"ENUM_VALUE11731": 188,
-		"ENUM_VALUE11732": 16777215,
-	}
-)
-
-func (x Enum11541) Enum() *Enum11541 {
-	p := new(Enum11541)
-	*p = x
-	return p
-}
-
-func (x Enum11541) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum11541) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[34].Descriptor()
-}
-
-func (Enum11541) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[34]
-}
-
-func (x Enum11541) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum11541) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum11541(num)
-	return nil
-}
-
-// Deprecated: Use Enum11541.Descriptor instead.
-func (Enum11541) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{34}
-}
-
-type Enum11468 int32
-
-const (
-	Enum11468_ENUM_VALUE11469 Enum11468 = -99
-	Enum11468_ENUM_VALUE11470 Enum11468 = 0
-	Enum11468_ENUM_VALUE11471 Enum11468 = 1
-	Enum11468_ENUM_VALUE11472 Enum11468 = 2
-	Enum11468_ENUM_VALUE11473 Enum11468 = 3
-	Enum11468_ENUM_VALUE11474 Enum11468 = 4
-	Enum11468_ENUM_VALUE11475 Enum11468 = 28
-	Enum11468_ENUM_VALUE11476 Enum11468 = 22
-	Enum11468_ENUM_VALUE11477 Enum11468 = 38
-	Enum11468_ENUM_VALUE11478 Enum11468 = 512
-	Enum11468_ENUM_VALUE11479 Enum11468 = 2048
-	Enum11468_ENUM_VALUE11480 Enum11468 = 66
-	Enum11468_ENUM_VALUE11481 Enum11468 = 578
-	Enum11468_ENUM_VALUE11482 Enum11468 = 77
-	Enum11468_ENUM_VALUE11483 Enum11468 = 88
-	Enum11468_ENUM_VALUE11484 Enum11468 = 100
-	Enum11468_ENUM_VALUE11485 Enum11468 = 110
-	Enum11468_ENUM_VALUE11486 Enum11468 = 2158
-	Enum11468_ENUM_VALUE11487 Enum11468 = 122
-	Enum11468_ENUM_VALUE11488 Enum11468 = 2170
-	Enum11468_ENUM_VALUE11489 Enum11468 = 144
-	Enum11468_ENUM_VALUE11490 Enum11468 = 244
-	Enum11468_ENUM_VALUE11491 Enum11468 = 2292
-	Enum11468_ENUM_VALUE11492 Enum11468 = 44
-)
-
-// Enum value maps for Enum11468.
-var (
-	Enum11468_name = map[int32]string{
-		-99:  "ENUM_VALUE11469",
-		0:    "ENUM_VALUE11470",
-		1:    "ENUM_VALUE11471",
-		2:    "ENUM_VALUE11472",
-		3:    "ENUM_VALUE11473",
-		4:    "ENUM_VALUE11474",
-		28:   "ENUM_VALUE11475",
-		22:   "ENUM_VALUE11476",
-		38:   "ENUM_VALUE11477",
-		512:  "ENUM_VALUE11478",
-		2048: "ENUM_VALUE11479",
-		66:   "ENUM_VALUE11480",
-		578:  "ENUM_VALUE11481",
-		77:   "ENUM_VALUE11482",
-		88:   "ENUM_VALUE11483",
-		100:  "ENUM_VALUE11484",
-		110:  "ENUM_VALUE11485",
-		2158: "ENUM_VALUE11486",
-		122:  "ENUM_VALUE11487",
-		2170: "ENUM_VALUE11488",
-		144:  "ENUM_VALUE11489",
-		244:  "ENUM_VALUE11490",
-		2292: "ENUM_VALUE11491",
-		44:   "ENUM_VALUE11492",
-	}
-	Enum11468_value = map[string]int32{
-		"ENUM_VALUE11469": -99,
-		"ENUM_VALUE11470": 0,
-		"ENUM_VALUE11471": 1,
-		"ENUM_VALUE11472": 2,
-		"ENUM_VALUE11473": 3,
-		"ENUM_VALUE11474": 4,
-		"ENUM_VALUE11475": 28,
-		"ENUM_VALUE11476": 22,
-		"ENUM_VALUE11477": 38,
-		"ENUM_VALUE11478": 512,
-		"ENUM_VALUE11479": 2048,
-		"ENUM_VALUE11480": 66,
-		"ENUM_VALUE11481": 578,
-		"ENUM_VALUE11482": 77,
-		"ENUM_VALUE11483": 88,
-		"ENUM_VALUE11484": 100,
-		"ENUM_VALUE11485": 110,
-		"ENUM_VALUE11486": 2158,
-		"ENUM_VALUE11487": 122,
-		"ENUM_VALUE11488": 2170,
-		"ENUM_VALUE11489": 144,
-		"ENUM_VALUE11490": 244,
-		"ENUM_VALUE11491": 2292,
-		"ENUM_VALUE11492": 44,
-	}
-)
-
-func (x Enum11468) Enum() *Enum11468 {
-	p := new(Enum11468)
-	*p = x
-	return p
-}
-
-func (x Enum11468) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum11468) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[35].Descriptor()
-}
-
-func (Enum11468) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[35]
-}
-
-func (x Enum11468) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum11468) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum11468(num)
-	return nil
-}
-
-// Deprecated: Use Enum11468.Descriptor instead.
-func (Enum11468) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{35}
-}
-
-type Enum11022 int32
-
-const (
-	Enum11022_ENUM_VALUE11023 Enum11022 = 0
-	Enum11022_ENUM_VALUE11024 Enum11022 = 1
-	Enum11022_ENUM_VALUE11025 Enum11022 = 2
-	Enum11022_ENUM_VALUE11026 Enum11022 = 3
-	Enum11022_ENUM_VALUE11027 Enum11022 = 4
-	Enum11022_ENUM_VALUE11028 Enum11022 = 5
-	Enum11022_ENUM_VALUE11029 Enum11022 = 6
-	Enum11022_ENUM_VALUE11030 Enum11022 = 7
-	Enum11022_ENUM_VALUE11031 Enum11022 = 8
-	Enum11022_ENUM_VALUE11032 Enum11022 = 9
-	Enum11022_ENUM_VALUE11033 Enum11022 = 10
-	Enum11022_ENUM_VALUE11034 Enum11022 = 11
-	Enum11022_ENUM_VALUE11035 Enum11022 = 12
-	Enum11022_ENUM_VALUE11036 Enum11022 = 13
-	Enum11022_ENUM_VALUE11037 Enum11022 = 14
-	Enum11022_ENUM_VALUE11038 Enum11022 = 15
-	Enum11022_ENUM_VALUE11039 Enum11022 = 16
-	Enum11022_ENUM_VALUE11040 Enum11022 = 17
-	Enum11022_ENUM_VALUE11041 Enum11022 = 18
-	Enum11022_ENUM_VALUE11042 Enum11022 = 19
-	Enum11022_ENUM_VALUE11043 Enum11022 = 20
-	Enum11022_ENUM_VALUE11044 Enum11022 = 21
-	Enum11022_ENUM_VALUE11045 Enum11022 = 22
-	Enum11022_ENUM_VALUE11046 Enum11022 = 23
-	Enum11022_ENUM_VALUE11047 Enum11022 = 24
-	Enum11022_ENUM_VALUE11048 Enum11022 = 25
-	Enum11022_ENUM_VALUE11049 Enum11022 = 26
-	Enum11022_ENUM_VALUE11050 Enum11022 = 27
-	Enum11022_ENUM_VALUE11051 Enum11022 = 28
-	Enum11022_ENUM_VALUE11052 Enum11022 = 29
-	Enum11022_ENUM_VALUE11053 Enum11022 = 30
-	Enum11022_ENUM_VALUE11054 Enum11022 = 31
-	Enum11022_ENUM_VALUE11055 Enum11022 = 32
-	Enum11022_ENUM_VALUE11056 Enum11022 = 33
-	Enum11022_ENUM_VALUE11057 Enum11022 = 34
-	Enum11022_ENUM_VALUE11058 Enum11022 = 35
-	Enum11022_ENUM_VALUE11059 Enum11022 = 36
-	Enum11022_ENUM_VALUE11060 Enum11022 = 37
-	Enum11022_ENUM_VALUE11061 Enum11022 = 38
-	Enum11022_ENUM_VALUE11062 Enum11022 = 39
-	Enum11022_ENUM_VALUE11063 Enum11022 = 40
-	Enum11022_ENUM_VALUE11064 Enum11022 = 41
-	Enum11022_ENUM_VALUE11065 Enum11022 = 42
-	Enum11022_ENUM_VALUE11066 Enum11022 = 43
-	Enum11022_ENUM_VALUE11067 Enum11022 = 44
-	Enum11022_ENUM_VALUE11068 Enum11022 = 45
-	Enum11022_ENUM_VALUE11069 Enum11022 = 46
-	Enum11022_ENUM_VALUE11070 Enum11022 = 47
-	Enum11022_ENUM_VALUE11071 Enum11022 = 48
-	Enum11022_ENUM_VALUE11072 Enum11022 = 49
-	Enum11022_ENUM_VALUE11073 Enum11022 = 50
-	Enum11022_ENUM_VALUE11074 Enum11022 = 51
-	Enum11022_ENUM_VALUE11075 Enum11022 = 52
-	Enum11022_ENUM_VALUE11076 Enum11022 = 53
-	Enum11022_ENUM_VALUE11077 Enum11022 = 54
-	Enum11022_ENUM_VALUE11078 Enum11022 = 55
-	Enum11022_ENUM_VALUE11079 Enum11022 = 56
-	Enum11022_ENUM_VALUE11080 Enum11022 = 57
-	Enum11022_ENUM_VALUE11081 Enum11022 = 58
-	Enum11022_ENUM_VALUE11082 Enum11022 = 59
-	Enum11022_ENUM_VALUE11083 Enum11022 = 60
-	Enum11022_ENUM_VALUE11084 Enum11022 = 61
-	Enum11022_ENUM_VALUE11085 Enum11022 = 62
-	Enum11022_ENUM_VALUE11086 Enum11022 = 63
-	Enum11022_ENUM_VALUE11087 Enum11022 = 64
-	Enum11022_ENUM_VALUE11088 Enum11022 = 65
-	Enum11022_ENUM_VALUE11089 Enum11022 = 66
-	Enum11022_ENUM_VALUE11090 Enum11022 = 67
-	Enum11022_ENUM_VALUE11091 Enum11022 = 68
-	Enum11022_ENUM_VALUE11092 Enum11022 = 69
-	Enum11022_ENUM_VALUE11093 Enum11022 = 70
-	Enum11022_ENUM_VALUE11094 Enum11022 = 71
-	Enum11022_ENUM_VALUE11095 Enum11022 = 72
-	Enum11022_ENUM_VALUE11096 Enum11022 = 73
-	Enum11022_ENUM_VALUE11097 Enum11022 = 74
-	Enum11022_ENUM_VALUE11098 Enum11022 = 75
-	Enum11022_ENUM_VALUE11099 Enum11022 = 76
-	Enum11022_ENUM_VALUE11100 Enum11022 = 77
-	Enum11022_ENUM_VALUE11101 Enum11022 = 78
-	Enum11022_ENUM_VALUE11102 Enum11022 = 79
-	Enum11022_ENUM_VALUE11103 Enum11022 = 80
-	Enum11022_ENUM_VALUE11104 Enum11022 = 81
-	Enum11022_ENUM_VALUE11105 Enum11022 = 82
-	Enum11022_ENUM_VALUE11106 Enum11022 = 83
-)
-
-// Enum value maps for Enum11022.
-var (
-	Enum11022_name = map[int32]string{
-		0:  "ENUM_VALUE11023",
-		1:  "ENUM_VALUE11024",
-		2:  "ENUM_VALUE11025",
-		3:  "ENUM_VALUE11026",
-		4:  "ENUM_VALUE11027",
-		5:  "ENUM_VALUE11028",
-		6:  "ENUM_VALUE11029",
-		7:  "ENUM_VALUE11030",
-		8:  "ENUM_VALUE11031",
-		9:  "ENUM_VALUE11032",
-		10: "ENUM_VALUE11033",
-		11: "ENUM_VALUE11034",
-		12: "ENUM_VALUE11035",
-		13: "ENUM_VALUE11036",
-		14: "ENUM_VALUE11037",
-		15: "ENUM_VALUE11038",
-		16: "ENUM_VALUE11039",
-		17: "ENUM_VALUE11040",
-		18: "ENUM_VALUE11041",
-		19: "ENUM_VALUE11042",
-		20: "ENUM_VALUE11043",
-		21: "ENUM_VALUE11044",
-		22: "ENUM_VALUE11045",
-		23: "ENUM_VALUE11046",
-		24: "ENUM_VALUE11047",
-		25: "ENUM_VALUE11048",
-		26: "ENUM_VALUE11049",
-		27: "ENUM_VALUE11050",
-		28: "ENUM_VALUE11051",
-		29: "ENUM_VALUE11052",
-		30: "ENUM_VALUE11053",
-		31: "ENUM_VALUE11054",
-		32: "ENUM_VALUE11055",
-		33: "ENUM_VALUE11056",
-		34: "ENUM_VALUE11057",
-		35: "ENUM_VALUE11058",
-		36: "ENUM_VALUE11059",
-		37: "ENUM_VALUE11060",
-		38: "ENUM_VALUE11061",
-		39: "ENUM_VALUE11062",
-		40: "ENUM_VALUE11063",
-		41: "ENUM_VALUE11064",
-		42: "ENUM_VALUE11065",
-		43: "ENUM_VALUE11066",
-		44: "ENUM_VALUE11067",
-		45: "ENUM_VALUE11068",
-		46: "ENUM_VALUE11069",
-		47: "ENUM_VALUE11070",
-		48: "ENUM_VALUE11071",
-		49: "ENUM_VALUE11072",
-		50: "ENUM_VALUE11073",
-		51: "ENUM_VALUE11074",
-		52: "ENUM_VALUE11075",
-		53: "ENUM_VALUE11076",
-		54: "ENUM_VALUE11077",
-		55: "ENUM_VALUE11078",
-		56: "ENUM_VALUE11079",
-		57: "ENUM_VALUE11080",
-		58: "ENUM_VALUE11081",
-		59: "ENUM_VALUE11082",
-		60: "ENUM_VALUE11083",
-		61: "ENUM_VALUE11084",
-		62: "ENUM_VALUE11085",
-		63: "ENUM_VALUE11086",
-		64: "ENUM_VALUE11087",
-		65: "ENUM_VALUE11088",
-		66: "ENUM_VALUE11089",
-		67: "ENUM_VALUE11090",
-		68: "ENUM_VALUE11091",
-		69: "ENUM_VALUE11092",
-		70: "ENUM_VALUE11093",
-		71: "ENUM_VALUE11094",
-		72: "ENUM_VALUE11095",
-		73: "ENUM_VALUE11096",
-		74: "ENUM_VALUE11097",
-		75: "ENUM_VALUE11098",
-		76: "ENUM_VALUE11099",
-		77: "ENUM_VALUE11100",
-		78: "ENUM_VALUE11101",
-		79: "ENUM_VALUE11102",
-		80: "ENUM_VALUE11103",
-		81: "ENUM_VALUE11104",
-		82: "ENUM_VALUE11105",
-		83: "ENUM_VALUE11106",
-	}
-	Enum11022_value = map[string]int32{
-		"ENUM_VALUE11023": 0,
-		"ENUM_VALUE11024": 1,
-		"ENUM_VALUE11025": 2,
-		"ENUM_VALUE11026": 3,
-		"ENUM_VALUE11027": 4,
-		"ENUM_VALUE11028": 5,
-		"ENUM_VALUE11029": 6,
-		"ENUM_VALUE11030": 7,
-		"ENUM_VALUE11031": 8,
-		"ENUM_VALUE11032": 9,
-		"ENUM_VALUE11033": 10,
-		"ENUM_VALUE11034": 11,
-		"ENUM_VALUE11035": 12,
-		"ENUM_VALUE11036": 13,
-		"ENUM_VALUE11037": 14,
-		"ENUM_VALUE11038": 15,
-		"ENUM_VALUE11039": 16,
-		"ENUM_VALUE11040": 17,
-		"ENUM_VALUE11041": 18,
-		"ENUM_VALUE11042": 19,
-		"ENUM_VALUE11043": 20,
-		"ENUM_VALUE11044": 21,
-		"ENUM_VALUE11045": 22,
-		"ENUM_VALUE11046": 23,
-		"ENUM_VALUE11047": 24,
-		"ENUM_VALUE11048": 25,
-		"ENUM_VALUE11049": 26,
-		"ENUM_VALUE11050": 27,
-		"ENUM_VALUE11051": 28,
-		"ENUM_VALUE11052": 29,
-		"ENUM_VALUE11053": 30,
-		"ENUM_VALUE11054": 31,
-		"ENUM_VALUE11055": 32,
-		"ENUM_VALUE11056": 33,
-		"ENUM_VALUE11057": 34,
-		"ENUM_VALUE11058": 35,
-		"ENUM_VALUE11059": 36,
-		"ENUM_VALUE11060": 37,
-		"ENUM_VALUE11061": 38,
-		"ENUM_VALUE11062": 39,
-		"ENUM_VALUE11063": 40,
-		"ENUM_VALUE11064": 41,
-		"ENUM_VALUE11065": 42,
-		"ENUM_VALUE11066": 43,
-		"ENUM_VALUE11067": 44,
-		"ENUM_VALUE11068": 45,
-		"ENUM_VALUE11069": 46,
-		"ENUM_VALUE11070": 47,
-		"ENUM_VALUE11071": 48,
-		"ENUM_VALUE11072": 49,
-		"ENUM_VALUE11073": 50,
-		"ENUM_VALUE11074": 51,
-		"ENUM_VALUE11075": 52,
-		"ENUM_VALUE11076": 53,
-		"ENUM_VALUE11077": 54,
-		"ENUM_VALUE11078": 55,
-		"ENUM_VALUE11079": 56,
-		"ENUM_VALUE11080": 57,
-		"ENUM_VALUE11081": 58,
-		"ENUM_VALUE11082": 59,
-		"ENUM_VALUE11083": 60,
-		"ENUM_VALUE11084": 61,
-		"ENUM_VALUE11085": 62,
-		"ENUM_VALUE11086": 63,
-		"ENUM_VALUE11087": 64,
-		"ENUM_VALUE11088": 65,
-		"ENUM_VALUE11089": 66,
-		"ENUM_VALUE11090": 67,
-		"ENUM_VALUE11091": 68,
-		"ENUM_VALUE11092": 69,
-		"ENUM_VALUE11093": 70,
-		"ENUM_VALUE11094": 71,
-		"ENUM_VALUE11095": 72,
-		"ENUM_VALUE11096": 73,
-		"ENUM_VALUE11097": 74,
-		"ENUM_VALUE11098": 75,
-		"ENUM_VALUE11099": 76,
-		"ENUM_VALUE11100": 77,
-		"ENUM_VALUE11101": 78,
-		"ENUM_VALUE11102": 79,
-		"ENUM_VALUE11103": 80,
-		"ENUM_VALUE11104": 81,
-		"ENUM_VALUE11105": 82,
-		"ENUM_VALUE11106": 83,
-	}
-)
-
-func (x Enum11022) Enum() *Enum11022 {
-	p := new(Enum11022)
-	*p = x
-	return p
-}
-
-func (x Enum11022) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum11022) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[36].Descriptor()
-}
-
-func (Enum11022) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[36]
-}
-
-func (x Enum11022) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum11022) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum11022(num)
-	return nil
-}
-
-// Deprecated: Use Enum11022.Descriptor instead.
-func (Enum11022) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{36}
-}
-
-type Enum12670 int32
-
-const (
-	Enum12670_ENUM_VALUE12671 Enum12670 = 0
-	Enum12670_ENUM_VALUE12672 Enum12670 = 1
-	Enum12670_ENUM_VALUE12673 Enum12670 = 2
-)
-
-// Enum value maps for Enum12670.
-var (
-	Enum12670_name = map[int32]string{
-		0: "ENUM_VALUE12671",
-		1: "ENUM_VALUE12672",
-		2: "ENUM_VALUE12673",
-	}
-	Enum12670_value = map[string]int32{
-		"ENUM_VALUE12671": 0,
-		"ENUM_VALUE12672": 1,
-		"ENUM_VALUE12673": 2,
-	}
-)
-
-func (x Enum12670) Enum() *Enum12670 {
-	p := new(Enum12670)
-	*p = x
-	return p
-}
-
-func (x Enum12670) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum12670) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[37].Descriptor()
-}
-
-func (Enum12670) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[37]
-}
-
-func (x Enum12670) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum12670) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum12670(num)
-	return nil
-}
-
-// Deprecated: Use Enum12670.Descriptor instead.
-func (Enum12670) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{37}
-}
-
-type Enum12871 int32
-
-const (
-	Enum12871_ENUM_VALUE12872 Enum12871 = 1
-	Enum12871_ENUM_VALUE12873 Enum12871 = 2
-	Enum12871_ENUM_VALUE12874 Enum12871 = 3
-	Enum12871_ENUM_VALUE12875 Enum12871 = 4
-	Enum12871_ENUM_VALUE12876 Enum12871 = 5
-	Enum12871_ENUM_VALUE12877 Enum12871 = 6
-)
-
-// Enum value maps for Enum12871.
-var (
-	Enum12871_name = map[int32]string{
-		1: "ENUM_VALUE12872",
-		2: "ENUM_VALUE12873",
-		3: "ENUM_VALUE12874",
-		4: "ENUM_VALUE12875",
-		5: "ENUM_VALUE12876",
-		6: "ENUM_VALUE12877",
-	}
-	Enum12871_value = map[string]int32{
-		"ENUM_VALUE12872": 1,
-		"ENUM_VALUE12873": 2,
-		"ENUM_VALUE12874": 3,
-		"ENUM_VALUE12875": 4,
-		"ENUM_VALUE12876": 5,
-		"ENUM_VALUE12877": 6,
-	}
-)
-
-func (x Enum12871) Enum() *Enum12871 {
-	p := new(Enum12871)
-	*p = x
-	return p
-}
-
-func (x Enum12871) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum12871) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[38].Descriptor()
-}
-
-func (Enum12871) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[38]
-}
-
-func (x Enum12871) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum12871) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum12871(num)
-	return nil
-}
-
-// Deprecated: Use Enum12871.Descriptor instead.
-func (Enum12871) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{38}
-}
-
-type Enum13092 int32
-
-const (
-	Enum13092_ENUM_VALUE13093 Enum13092 = 1
-	Enum13092_ENUM_VALUE13094 Enum13092 = 2
-	Enum13092_ENUM_VALUE13095 Enum13092 = 3
-)
-
-// Enum value maps for Enum13092.
-var (
-	Enum13092_name = map[int32]string{
-		1: "ENUM_VALUE13093",
-		2: "ENUM_VALUE13094",
-		3: "ENUM_VALUE13095",
-	}
-	Enum13092_value = map[string]int32{
-		"ENUM_VALUE13093": 1,
-		"ENUM_VALUE13094": 2,
-		"ENUM_VALUE13095": 3,
-	}
-)
-
-func (x Enum13092) Enum() *Enum13092 {
-	p := new(Enum13092)
-	*p = x
-	return p
-}
-
-func (x Enum13092) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum13092) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[39].Descriptor()
-}
-
-func (Enum13092) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[39]
-}
-
-func (x Enum13092) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum13092) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum13092(num)
-	return nil
-}
-
-// Deprecated: Use Enum13092.Descriptor instead.
-func (Enum13092) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{39}
-}
-
-type Enum13146 int32
-
-const (
-	Enum13146_ENUM_VALUE13147 Enum13146 = 0
-	Enum13146_ENUM_VALUE13148 Enum13146 = 1
-	Enum13146_ENUM_VALUE13149 Enum13146 = 2
-	Enum13146_ENUM_VALUE13150 Enum13146 = 3
-)
-
-// Enum value maps for Enum13146.
-var (
-	Enum13146_name = map[int32]string{
-		0: "ENUM_VALUE13147",
-		1: "ENUM_VALUE13148",
-		2: "ENUM_VALUE13149",
-		3: "ENUM_VALUE13150",
-	}
-	Enum13146_value = map[string]int32{
-		"ENUM_VALUE13147": 0,
-		"ENUM_VALUE13148": 1,
-		"ENUM_VALUE13149": 2,
-		"ENUM_VALUE13150": 3,
-	}
-)
-
-func (x Enum13146) Enum() *Enum13146 {
-	p := new(Enum13146)
-	*p = x
-	return p
-}
-
-func (x Enum13146) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum13146) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[40].Descriptor()
-}
-
-func (Enum13146) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[40]
-}
-
-func (x Enum13146) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum13146) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum13146(num)
-	return nil
-}
-
-// Deprecated: Use Enum13146.Descriptor instead.
-func (Enum13146) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{40}
-}
-
-type Enum16042 int32
-
-const (
-	Enum16042_ENUM_VALUE16043 Enum16042 = 0
-	Enum16042_ENUM_VALUE16044 Enum16042 = 1
-	Enum16042_ENUM_VALUE16045 Enum16042 = 17
-	Enum16042_ENUM_VALUE16046 Enum16042 = 273
-	Enum16042_ENUM_VALUE16047 Enum16042 = 274
-	Enum16042_ENUM_VALUE16048 Enum16042 = 4385
-	Enum16042_ENUM_VALUE16049 Enum16042 = 4386
-	Enum16042_ENUM_VALUE16050 Enum16042 = 4387
-	Enum16042_ENUM_VALUE16051 Enum16042 = 4388
-	Enum16042_ENUM_VALUE16052 Enum16042 = 4389
-	Enum16042_ENUM_VALUE16053 Enum16042 = 4390
-	Enum16042_ENUM_VALUE16054 Enum16042 = 4391
-	Enum16042_ENUM_VALUE16055 Enum16042 = 4392
-	Enum16042_ENUM_VALUE16056 Enum16042 = 4393
-	Enum16042_ENUM_VALUE16057 Enum16042 = 276
-	Enum16042_ENUM_VALUE16058 Enum16042 = 277
-	Enum16042_ENUM_VALUE16059 Enum16042 = 18
-	Enum16042_ENUM_VALUE16060 Enum16042 = 289
-	Enum16042_ENUM_VALUE16061 Enum16042 = 291
-	Enum16042_ENUM_VALUE16062 Enum16042 = 4657
-	Enum16042_ENUM_VALUE16063 Enum16042 = 74513
-	Enum16042_ENUM_VALUE16064 Enum16042 = 4658
-	Enum16042_ENUM_VALUE16065 Enum16042 = 4659
-	Enum16042_ENUM_VALUE16066 Enum16042 = 4660
-	Enum16042_ENUM_VALUE16067 Enum16042 = 4661
-	Enum16042_ENUM_VALUE16068 Enum16042 = 4662
-	Enum16042_ENUM_VALUE16069 Enum16042 = 4663
-	Enum16042_ENUM_VALUE16070 Enum16042 = 4664
-	Enum16042_ENUM_VALUE16071 Enum16042 = 292
-	Enum16042_ENUM_VALUE16072 Enum16042 = 4673
-	Enum16042_ENUM_VALUE16073 Enum16042 = 4674
-	Enum16042_ENUM_VALUE16074 Enum16042 = 293
-	Enum16042_ENUM_VALUE16075 Enum16042 = 19
-	Enum16042_ENUM_VALUE16076 Enum16042 = 20
-	Enum16042_ENUM_VALUE16077 Enum16042 = 321
-	Enum16042_ENUM_VALUE16078 Enum16042 = 5137
-	Enum16042_ENUM_VALUE16079 Enum16042 = 5138
-	Enum16042_ENUM_VALUE16080 Enum16042 = 5139
-	Enum16042_ENUM_VALUE16081 Enum16042 = 5140
-	Enum16042_ENUM_VALUE16082 Enum16042 = 5141
-	Enum16042_ENUM_VALUE16083 Enum16042 = 5142
-	Enum16042_ENUM_VALUE16084 Enum16042 = 82273
-	Enum16042_ENUM_VALUE16085 Enum16042 = 82274
-	Enum16042_ENUM_VALUE16086 Enum16042 = 82275
-	Enum16042_ENUM_VALUE16087 Enum16042 = 82276
-	Enum16042_ENUM_VALUE16088 Enum16042 = 82277
-	Enum16042_ENUM_VALUE16089 Enum16042 = 82278
-	Enum16042_ENUM_VALUE16090 Enum16042 = 5143
-	Enum16042_ENUM_VALUE16091 Enum16042 = 5144
-	Enum16042_ENUM_VALUE16092 Enum16042 = 5145
-	Enum16042_ENUM_VALUE16093 Enum16042 = 5146
-	Enum16042_ENUM_VALUE16094 Enum16042 = 82337
-	Enum16042_ENUM_VALUE16095 Enum16042 = 5147
-	Enum16042_ENUM_VALUE16096 Enum16042 = 5148
-	Enum16042_ENUM_VALUE16097 Enum16042 = 322
-	Enum16042_ENUM_VALUE16098 Enum16042 = 323
-	Enum16042_ENUM_VALUE16099 Enum16042 = 324
-	Enum16042_ENUM_VALUE16100 Enum16042 = 325
-	Enum16042_ENUM_VALUE16101 Enum16042 = 326
-	Enum16042_ENUM_VALUE16102 Enum16042 = 327
-	Enum16042_ENUM_VALUE16103 Enum16042 = 328
-	Enum16042_ENUM_VALUE16104 Enum16042 = 21
-	Enum16042_ENUM_VALUE16105 Enum16042 = 337
-	Enum16042_ENUM_VALUE16106 Enum16042 = 22
-	Enum16042_ENUM_VALUE16107 Enum16042 = 23
-	Enum16042_ENUM_VALUE16108 Enum16042 = 24
-	Enum16042_ENUM_VALUE16109 Enum16042 = 2
-	Enum16042_ENUM_VALUE16110 Enum16042 = 33
-	Enum16042_ENUM_VALUE16111 Enum16042 = 34
-	Enum16042_ENUM_VALUE16112 Enum16042 = 545
-	Enum16042_ENUM_VALUE16113 Enum16042 = 8721
-	Enum16042_ENUM_VALUE16114 Enum16042 = 8723
-	Enum16042_ENUM_VALUE16115 Enum16042 = 8724
-	Enum16042_ENUM_VALUE16116 Enum16042 = 546
-	Enum16042_ENUM_VALUE16117 Enum16042 = 8739
-	Enum16042_ENUM_VALUE16118 Enum16042 = 8740
-	Enum16042_ENUM_VALUE16119 Enum16042 = 547
-	Enum16042_ENUM_VALUE16120 Enum16042 = 548
-	Enum16042_ENUM_VALUE16121 Enum16042 = 549
-	Enum16042_ENUM_VALUE16122 Enum16042 = 550
-	Enum16042_ENUM_VALUE16123 Enum16042 = 551
-	Enum16042_ENUM_VALUE16124 Enum16042 = 552
-	Enum16042_ENUM_VALUE16125 Enum16042 = 553
-	Enum16042_ENUM_VALUE16126 Enum16042 = 35
-	Enum16042_ENUM_VALUE16127 Enum16042 = 36
-	Enum16042_ENUM_VALUE16128 Enum16042 = 37
-	Enum16042_ENUM_VALUE16129 Enum16042 = 593
-	Enum16042_ENUM_VALUE16130 Enum16042 = 594
-	Enum16042_ENUM_VALUE16131 Enum16042 = 595
-	Enum16042_ENUM_VALUE16132 Enum16042 = 596
-	Enum16042_ENUM_VALUE16133 Enum16042 = 597
-	Enum16042_ENUM_VALUE16134 Enum16042 = 38
-	Enum16042_ENUM_VALUE16135 Enum16042 = 609
-	Enum16042_ENUM_VALUE16136 Enum16042 = 610
-	Enum16042_ENUM_VALUE16137 Enum16042 = 617
-	Enum16042_ENUM_VALUE16138 Enum16042 = 614
-	Enum16042_ENUM_VALUE16139 Enum16042 = 615
-	Enum16042_ENUM_VALUE16140 Enum16042 = 616
-	Enum16042_ENUM_VALUE16141 Enum16042 = 618
-	Enum16042_ENUM_VALUE16142 Enum16042 = 620
-	Enum16042_ENUM_VALUE16143 Enum16042 = 9937
-	Enum16042_ENUM_VALUE16144 Enum16042 = 9938
-	Enum16042_ENUM_VALUE16145 Enum16042 = 9939
-	Enum16042_ENUM_VALUE16146 Enum16042 = 9940
-	Enum16042_ENUM_VALUE16147 Enum16042 = 9941
-	Enum16042_ENUM_VALUE16148 Enum16042 = 39
-	Enum16042_ENUM_VALUE16149 Enum16042 = 40
-	Enum16042_ENUM_VALUE16150 Enum16042 = 41
-	Enum16042_ENUM_VALUE16151 Enum16042 = 42
-	Enum16042_ENUM_VALUE16152 Enum16042 = 43
-	Enum16042_ENUM_VALUE16153 Enum16042 = 44
-	Enum16042_ENUM_VALUE16154 Enum16042 = 45
-	Enum16042_ENUM_VALUE16155 Enum16042 = 11793
-	Enum16042_ENUM_VALUE16156 Enum16042 = 3
-	Enum16042_ENUM_VALUE16157 Enum16042 = 49
-	Enum16042_ENUM_VALUE16158 Enum16042 = 50
-	Enum16042_ENUM_VALUE16159 Enum16042 = 51
-	Enum16042_ENUM_VALUE16160 Enum16042 = 817
-	Enum16042_ENUM_VALUE16161 Enum16042 = 818
-	Enum16042_ENUM_VALUE16162 Enum16042 = 819
-	Enum16042_ENUM_VALUE16163 Enum16042 = 52
-	Enum16042_ENUM_VALUE16164 Enum16042 = 833
-	Enum16042_ENUM_VALUE16165 Enum16042 = 53
-	Enum16042_ENUM_VALUE16166 Enum16042 = 54
-	Enum16042_ENUM_VALUE16167 Enum16042 = 4
-	Enum16042_ENUM_VALUE16168 Enum16042 = 1041
-	Enum16042_ENUM_VALUE16169 Enum16042 = 16657
-	Enum16042_ENUM_VALUE16170 Enum16042 = 16658
-	Enum16042_ENUM_VALUE16171 Enum16042 = 16659
-	Enum16042_ENUM_VALUE16172 Enum16042 = 16660
-	Enum16042_ENUM_VALUE16173 Enum16042 = 16661
-	Enum16042_ENUM_VALUE16174 Enum16042 = 1042
-	Enum16042_ENUM_VALUE16175 Enum16042 = 16673
-	Enum16042_ENUM_VALUE16176 Enum16042 = 1043
-	Enum16042_ENUM_VALUE16177 Enum16042 = 16689
-	Enum16042_ENUM_VALUE16178 Enum16042 = 16690
-	Enum16042_ENUM_VALUE16179 Enum16042 = 16691
-	Enum16042_ENUM_VALUE16180 Enum16042 = 16692
-	Enum16042_ENUM_VALUE16181 Enum16042 = 16693
-	Enum16042_ENUM_VALUE16182 Enum16042 = 16694
-	Enum16042_ENUM_VALUE16183 Enum16042 = 16695
-	Enum16042_ENUM_VALUE16184 Enum16042 = 1044
-	Enum16042_ENUM_VALUE16185 Enum16042 = 16705
-	Enum16042_ENUM_VALUE16186 Enum16042 = 16706
-	Enum16042_ENUM_VALUE16187 Enum16042 = 16707
-	Enum16042_ENUM_VALUE16188 Enum16042 = 16708
-	Enum16042_ENUM_VALUE16189 Enum16042 = 16709
-	Enum16042_ENUM_VALUE16190 Enum16042 = 16710
-	Enum16042_ENUM_VALUE16191 Enum16042 = 16711
-	Enum16042_ENUM_VALUE16192 Enum16042 = 16712
-	Enum16042_ENUM_VALUE16193 Enum16042 = 16713
-	Enum16042_ENUM_VALUE16194 Enum16042 = 1046
-	Enum16042_ENUM_VALUE16195 Enum16042 = 16737
-	Enum16042_ENUM_VALUE16196 Enum16042 = 1047
-	Enum16042_ENUM_VALUE16197 Enum16042 = 16753
-	Enum16042_ENUM_VALUE16198 Enum16042 = 268049
-	Enum16042_ENUM_VALUE16199 Enum16042 = 268050
-	Enum16042_ENUM_VALUE16200 Enum16042 = 268051
-	Enum16042_ENUM_VALUE16201 Enum16042 = 268052
-	Enum16042_ENUM_VALUE16202 Enum16042 = 1048
-	Enum16042_ENUM_VALUE16203 Enum16042 = 16769
-	Enum16042_ENUM_VALUE16204 Enum16042 = 16770
-	Enum16042_ENUM_VALUE16205 Enum16042 = 16771
-	Enum16042_ENUM_VALUE16206 Enum16042 = 16772
-	Enum16042_ENUM_VALUE16207 Enum16042 = 16773
-	Enum16042_ENUM_VALUE16208 Enum16042 = 1049
-	Enum16042_ENUM_VALUE16209 Enum16042 = 1056
-	Enum16042_ENUM_VALUE16210 Enum16042 = 1058
-	Enum16042_ENUM_VALUE16211 Enum16042 = 1059
-	Enum16042_ENUM_VALUE16212 Enum16042 = 1060
-	Enum16042_ENUM_VALUE16213 Enum16042 = 1061
-	Enum16042_ENUM_VALUE16214 Enum16042 = 5
-	Enum16042_ENUM_VALUE16215 Enum16042 = 6
-	Enum16042_ENUM_VALUE16216 Enum16042 = 97
-	Enum16042_ENUM_VALUE16217 Enum16042 = 98
-	Enum16042_ENUM_VALUE16218 Enum16042 = 99
-	Enum16042_ENUM_VALUE16219 Enum16042 = 100
-	Enum16042_ENUM_VALUE16220 Enum16042 = 101
-	Enum16042_ENUM_VALUE16221 Enum16042 = 102
-	Enum16042_ENUM_VALUE16222 Enum16042 = 103
-	Enum16042_ENUM_VALUE16223 Enum16042 = 104
-	Enum16042_ENUM_VALUE16224 Enum16042 = 105
-	Enum16042_ENUM_VALUE16225 Enum16042 = 106
-	Enum16042_ENUM_VALUE16226 Enum16042 = 108
-	Enum16042_ENUM_VALUE16227 Enum16042 = 1729
-	Enum16042_ENUM_VALUE16228 Enum16042 = 1730
-	Enum16042_ENUM_VALUE16229 Enum16042 = 1731
-	Enum16042_ENUM_VALUE16230 Enum16042 = 7
-	Enum16042_ENUM_VALUE16231 Enum16042 = 8
-	Enum16042_ENUM_VALUE16232 Enum16042 = 9
-	Enum16042_ENUM_VALUE16233 Enum16042 = 10
-	Enum16042_ENUM_VALUE16234 Enum16042 = 161
-	Enum16042_ENUM_VALUE16235 Enum16042 = 2577
-	Enum16042_ENUM_VALUE16236 Enum16042 = 41233
-	Enum16042_ENUM_VALUE16237 Enum16042 = 41234
-	Enum16042_ENUM_VALUE16238 Enum16042 = 2578
-	Enum16042_ENUM_VALUE16239 Enum16042 = 2579
-	Enum16042_ENUM_VALUE16240 Enum16042 = 41265
-	Enum16042_ENUM_VALUE16241 Enum16042 = 2580
-	Enum16042_ENUM_VALUE16242 Enum16042 = 2581
-	Enum16042_ENUM_VALUE16243 Enum16042 = 41297
-	Enum16042_ENUM_VALUE16244 Enum16042 = 41298
-	Enum16042_ENUM_VALUE16245 Enum16042 = 41299
-	Enum16042_ENUM_VALUE16246 Enum16042 = 41300
-	Enum16042_ENUM_VALUE16247 Enum16042 = 2582
-	Enum16042_ENUM_VALUE16248 Enum16042 = 2583
-	Enum16042_ENUM_VALUE16249 Enum16042 = 2584
-	Enum16042_ENUM_VALUE16250 Enum16042 = 162
-	Enum16042_ENUM_VALUE16251 Enum16042 = 2593
-	Enum16042_ENUM_VALUE16252 Enum16042 = 41489
-	Enum16042_ENUM_VALUE16253 Enum16042 = 663825
-	Enum16042_ENUM_VALUE16254 Enum16042 = 663826
-	Enum16042_ENUM_VALUE16255 Enum16042 = 41490
-	Enum16042_ENUM_VALUE16256 Enum16042 = 41491
-	Enum16042_ENUM_VALUE16257 Enum16042 = 41492
-	Enum16042_ENUM_VALUE16258 Enum16042 = 663873
-	Enum16042_ENUM_VALUE16259 Enum16042 = 2594
-	Enum16042_ENUM_VALUE16260 Enum16042 = 41505
-	Enum16042_ENUM_VALUE16261 Enum16042 = 41506
-	Enum16042_ENUM_VALUE16262 Enum16042 = 41507
-	Enum16042_ENUM_VALUE16263 Enum16042 = 2595
-	Enum16042_ENUM_VALUE16264 Enum16042 = 41521
-	Enum16042_ENUM_VALUE16265 Enum16042 = 41522
-	Enum16042_ENUM_VALUE16266 Enum16042 = 41523
-	Enum16042_ENUM_VALUE16267 Enum16042 = 41524
-	Enum16042_ENUM_VALUE16268 Enum16042 = 41525
-	Enum16042_ENUM_VALUE16269 Enum16042 = 664401
-	Enum16042_ENUM_VALUE16270 Enum16042 = 664402
-	Enum16042_ENUM_VALUE16271 Enum16042 = 41526
-	Enum16042_ENUM_VALUE16272 Enum16042 = 41527
-	Enum16042_ENUM_VALUE16273 Enum16042 = 2596
-	Enum16042_ENUM_VALUE16274 Enum16042 = 2597
-	Enum16042_ENUM_VALUE16275 Enum16042 = 2598
-	Enum16042_ENUM_VALUE16276 Enum16042 = 41569
-	Enum16042_ENUM_VALUE16277 Enum16042 = 41570
-	Enum16042_ENUM_VALUE16278 Enum16042 = 41571
-	Enum16042_ENUM_VALUE16279 Enum16042 = 41572
-	Enum16042_ENUM_VALUE16280 Enum16042 = 41573
-	Enum16042_ENUM_VALUE16281 Enum16042 = 665169
-	Enum16042_ENUM_VALUE16282 Enum16042 = 665170
-	Enum16042_ENUM_VALUE16283 Enum16042 = 665171
-	Enum16042_ENUM_VALUE16284 Enum16042 = 665172
-	Enum16042_ENUM_VALUE16285 Enum16042 = 2599
-	Enum16042_ENUM_VALUE16286 Enum16042 = 2600
-	Enum16042_ENUM_VALUE16287 Enum16042 = 2601
-	Enum16042_ENUM_VALUE16288 Enum16042 = 2603
-	Enum16042_ENUM_VALUE16289 Enum16042 = 2604
-	Enum16042_ENUM_VALUE16290 Enum16042 = 163
-	Enum16042_ENUM_VALUE16291 Enum16042 = 2608
-	Enum16042_ENUM_VALUE16292 Enum16042 = 2609
-	Enum16042_ENUM_VALUE16293 Enum16042 = 2610
-	Enum16042_ENUM_VALUE16294 Enum16042 = 2611
-	Enum16042_ENUM_VALUE16295 Enum16042 = 2612
-	Enum16042_ENUM_VALUE16296 Enum16042 = 164
-	Enum16042_ENUM_VALUE16297 Enum16042 = 2625
-	Enum16042_ENUM_VALUE16298 Enum16042 = 2626
-	Enum16042_ENUM_VALUE16299 Enum16042 = 42017
-	Enum16042_ENUM_VALUE16300 Enum16042 = 42018
-	Enum16042_ENUM_VALUE16301 Enum16042 = 42019
-	Enum16042_ENUM_VALUE16302 Enum16042 = 2627
-	Enum16042_ENUM_VALUE16303 Enum16042 = 2628
-	Enum16042_ENUM_VALUE16304 Enum16042 = 165
-	Enum16042_ENUM_VALUE16305 Enum16042 = 2641
-	Enum16042_ENUM_VALUE16306 Enum16042 = 42257
-	Enum16042_ENUM_VALUE16307 Enum16042 = 42258
-	Enum16042_ENUM_VALUE16308 Enum16042 = 2642
-	Enum16042_ENUM_VALUE16309 Enum16042 = 2643
-	Enum16042_ENUM_VALUE16310 Enum16042 = 2644
-	Enum16042_ENUM_VALUE16311 Enum16042 = 2646
-	Enum16042_ENUM_VALUE16312 Enum16042 = 2647
-	Enum16042_ENUM_VALUE16313 Enum16042 = 42353
-	Enum16042_ENUM_VALUE16314 Enum16042 = 2648
-	Enum16042_ENUM_VALUE16315 Enum16042 = 2649
-	Enum16042_ENUM_VALUE16316 Enum16042 = 2650
-	Enum16042_ENUM_VALUE16317 Enum16042 = 2651
-	Enum16042_ENUM_VALUE16318 Enum16042 = 2652
-	Enum16042_ENUM_VALUE16319 Enum16042 = 2653
-	Enum16042_ENUM_VALUE16320 Enum16042 = 2654
-	Enum16042_ENUM_VALUE16321 Enum16042 = 42481
-	Enum16042_ENUM_VALUE16322 Enum16042 = 42482
-	Enum16042_ENUM_VALUE16323 Enum16042 = 42483
-	Enum16042_ENUM_VALUE16324 Enum16042 = 166
-	Enum16042_ENUM_VALUE16325 Enum16042 = 2657
-	Enum16042_ENUM_VALUE16326 Enum16042 = 2658
-	Enum16042_ENUM_VALUE16327 Enum16042 = 42529
-	Enum16042_ENUM_VALUE16328 Enum16042 = 2659
-	Enum16042_ENUM_VALUE16329 Enum16042 = 2660
-	Enum16042_ENUM_VALUE16330 Enum16042 = 2661
-	Enum16042_ENUM_VALUE16331 Enum16042 = 2662
-	Enum16042_ENUM_VALUE16332 Enum16042 = 2663
-	Enum16042_ENUM_VALUE16333 Enum16042 = 42609
-	Enum16042_ENUM_VALUE16334 Enum16042 = 2664
-	Enum16042_ENUM_VALUE16335 Enum16042 = 2665
-	Enum16042_ENUM_VALUE16336 Enum16042 = 42753
-	Enum16042_ENUM_VALUE16337 Enum16042 = 42754
-	Enum16042_ENUM_VALUE16338 Enum16042 = 42755
-	Enum16042_ENUM_VALUE16339 Enum16042 = 11
-	Enum16042_ENUM_VALUE16340 Enum16042 = 177
-	Enum16042_ENUM_VALUE16341 Enum16042 = 2833
-	Enum16042_ENUM_VALUE16342 Enum16042 = 179
-	Enum16042_ENUM_VALUE16343 Enum16042 = 180
-	Enum16042_ENUM_VALUE16344 Enum16042 = 2881
-	Enum16042_ENUM_VALUE16345 Enum16042 = 182
-	Enum16042_ENUM_VALUE16346 Enum16042 = 183
-	Enum16042_ENUM_VALUE16347 Enum16042 = 12
-	Enum16042_ENUM_VALUE16348 Enum16042 = 3089
-	Enum16042_ENUM_VALUE16349 Enum16042 = 194
-	Enum16042_ENUM_VALUE16350 Enum16042 = 195
-	Enum16042_ENUM_VALUE16351 Enum16042 = 196
-	Enum16042_ENUM_VALUE16352 Enum16042 = 198
-	Enum16042_ENUM_VALUE16353 Enum16042 = 3169
-	Enum16042_ENUM_VALUE16354 Enum16042 = 199
-	Enum16042_ENUM_VALUE16355 Enum16042 = 200
-	Enum16042_ENUM_VALUE16356 Enum16042 = 208
-	Enum16042_ENUM_VALUE16357 Enum16042 = 3329
-	Enum16042_ENUM_VALUE16358 Enum16042 = 3330
-	Enum16042_ENUM_VALUE16359 Enum16042 = 3331
-	Enum16042_ENUM_VALUE16360 Enum16042 = 209
-	Enum16042_ENUM_VALUE16361 Enum16042 = 210
-	Enum16042_ENUM_VALUE16362 Enum16042 = 211
-	Enum16042_ENUM_VALUE16363 Enum16042 = 3377
-	Enum16042_ENUM_VALUE16364 Enum16042 = 3378
-	Enum16042_ENUM_VALUE16365 Enum16042 = 3379
-	Enum16042_ENUM_VALUE16366 Enum16042 = 3380
-	Enum16042_ENUM_VALUE16367 Enum16042 = 3381
-	Enum16042_ENUM_VALUE16368 Enum16042 = 865809
-	Enum16042_ENUM_VALUE16369 Enum16042 = 865810
-	Enum16042_ENUM_VALUE16370 Enum16042 = 865811
-	Enum16042_ENUM_VALUE16371 Enum16042 = 865812
-	Enum16042_ENUM_VALUE16372 Enum16042 = 865813
-	Enum16042_ENUM_VALUE16373 Enum16042 = 865814
-	Enum16042_ENUM_VALUE16374 Enum16042 = 865815
-	Enum16042_ENUM_VALUE16375 Enum16042 = 865816
-	Enum16042_ENUM_VALUE16376 Enum16042 = 865817
-	Enum16042_ENUM_VALUE16377 Enum16042 = 865818
-	Enum16042_ENUM_VALUE16378 Enum16042 = 865819
-	Enum16042_ENUM_VALUE16379 Enum16042 = 865820
-	Enum16042_ENUM_VALUE16380 Enum16042 = 865821
-	Enum16042_ENUM_VALUE16381 Enum16042 = 865822
-	Enum16042_ENUM_VALUE16382 Enum16042 = 865823
-	Enum16042_ENUM_VALUE16383 Enum16042 = 865824
-	Enum16042_ENUM_VALUE16384 Enum16042 = 865825
-	Enum16042_ENUM_VALUE16385 Enum16042 = 865826
-	Enum16042_ENUM_VALUE16386 Enum16042 = 865827
-	Enum16042_ENUM_VALUE16387 Enum16042 = 865828
-	Enum16042_ENUM_VALUE16388 Enum16042 = 865829
-	Enum16042_ENUM_VALUE16389 Enum16042 = 212
-	Enum16042_ENUM_VALUE16390 Enum16042 = 3393
-	Enum16042_ENUM_VALUE16391 Enum16042 = 3394
-	Enum16042_ENUM_VALUE16392 Enum16042 = 3395
-	Enum16042_ENUM_VALUE16393 Enum16042 = 213
-	Enum16042_ENUM_VALUE16394 Enum16042 = 214
-	Enum16042_ENUM_VALUE16395 Enum16042 = 215
-	Enum16042_ENUM_VALUE16396 Enum16042 = 3441
-	Enum16042_ENUM_VALUE16397 Enum16042 = 3442
-	Enum16042_ENUM_VALUE16398 Enum16042 = 216
-	Enum16042_ENUM_VALUE16399 Enum16042 = 217
-	Enum16042_ENUM_VALUE16400 Enum16042 = 3473
-	Enum16042_ENUM_VALUE16401 Enum16042 = 3474
-	Enum16042_ENUM_VALUE16402 Enum16042 = 3475
-	Enum16042_ENUM_VALUE16403 Enum16042 = 254
-	Enum16042_ENUM_VALUE16404 Enum16042 = 255
-)
-
-// Enum value maps for Enum16042.
-var (
-	Enum16042_name = map[int32]string{
-		0:      "ENUM_VALUE16043",
-		1:      "ENUM_VALUE16044",
-		17:     "ENUM_VALUE16045",
-		273:    "ENUM_VALUE16046",
-		274:    "ENUM_VALUE16047",
-		4385:   "ENUM_VALUE16048",
-		4386:   "ENUM_VALUE16049",
-		4387:   "ENUM_VALUE16050",
-		4388:   "ENUM_VALUE16051",
-		4389:   "ENUM_VALUE16052",
-		4390:   "ENUM_VALUE16053",
-		4391:   "ENUM_VALUE16054",
-		4392:   "ENUM_VALUE16055",
-		4393:   "ENUM_VALUE16056",
-		276:    "ENUM_VALUE16057",
-		277:    "ENUM_VALUE16058",
-		18:     "ENUM_VALUE16059",
-		289:    "ENUM_VALUE16060",
-		291:    "ENUM_VALUE16061",
-		4657:   "ENUM_VALUE16062",
-		74513:  "ENUM_VALUE16063",
-		4658:   "ENUM_VALUE16064",
-		4659:   "ENUM_VALUE16065",
-		4660:   "ENUM_VALUE16066",
-		4661:   "ENUM_VALUE16067",
-		4662:   "ENUM_VALUE16068",
-		4663:   "ENUM_VALUE16069",
-		4664:   "ENUM_VALUE16070",
-		292:    "ENUM_VALUE16071",
-		4673:   "ENUM_VALUE16072",
-		4674:   "ENUM_VALUE16073",
-		293:    "ENUM_VALUE16074",
-		19:     "ENUM_VALUE16075",
-		20:     "ENUM_VALUE16076",
-		321:    "ENUM_VALUE16077",
-		5137:   "ENUM_VALUE16078",
-		5138:   "ENUM_VALUE16079",
-		5139:   "ENUM_VALUE16080",
-		5140:   "ENUM_VALUE16081",
-		5141:   "ENUM_VALUE16082",
-		5142:   "ENUM_VALUE16083",
-		82273:  "ENUM_VALUE16084",
-		82274:  "ENUM_VALUE16085",
-		82275:  "ENUM_VALUE16086",
-		82276:  "ENUM_VALUE16087",
-		82277:  "ENUM_VALUE16088",
-		82278:  "ENUM_VALUE16089",
-		5143:   "ENUM_VALUE16090",
-		5144:   "ENUM_VALUE16091",
-		5145:   "ENUM_VALUE16092",
-		5146:   "ENUM_VALUE16093",
-		82337:  "ENUM_VALUE16094",
-		5147:   "ENUM_VALUE16095",
-		5148:   "ENUM_VALUE16096",
-		322:    "ENUM_VALUE16097",
-		323:    "ENUM_VALUE16098",
-		324:    "ENUM_VALUE16099",
-		325:    "ENUM_VALUE16100",
-		326:    "ENUM_VALUE16101",
-		327:    "ENUM_VALUE16102",
-		328:    "ENUM_VALUE16103",
-		21:     "ENUM_VALUE16104",
-		337:    "ENUM_VALUE16105",
-		22:     "ENUM_VALUE16106",
-		23:     "ENUM_VALUE16107",
-		24:     "ENUM_VALUE16108",
-		2:      "ENUM_VALUE16109",
-		33:     "ENUM_VALUE16110",
-		34:     "ENUM_VALUE16111",
-		545:    "ENUM_VALUE16112",
-		8721:   "ENUM_VALUE16113",
-		8723:   "ENUM_VALUE16114",
-		8724:   "ENUM_VALUE16115",
-		546:    "ENUM_VALUE16116",
-		8739:   "ENUM_VALUE16117",
-		8740:   "ENUM_VALUE16118",
-		547:    "ENUM_VALUE16119",
-		548:    "ENUM_VALUE16120",
-		549:    "ENUM_VALUE16121",
-		550:    "ENUM_VALUE16122",
-		551:    "ENUM_VALUE16123",
-		552:    "ENUM_VALUE16124",
-		553:    "ENUM_VALUE16125",
-		35:     "ENUM_VALUE16126",
-		36:     "ENUM_VALUE16127",
-		37:     "ENUM_VALUE16128",
-		593:    "ENUM_VALUE16129",
-		594:    "ENUM_VALUE16130",
-		595:    "ENUM_VALUE16131",
-		596:    "ENUM_VALUE16132",
-		597:    "ENUM_VALUE16133",
-		38:     "ENUM_VALUE16134",
-		609:    "ENUM_VALUE16135",
-		610:    "ENUM_VALUE16136",
-		617:    "ENUM_VALUE16137",
-		614:    "ENUM_VALUE16138",
-		615:    "ENUM_VALUE16139",
-		616:    "ENUM_VALUE16140",
-		618:    "ENUM_VALUE16141",
-		620:    "ENUM_VALUE16142",
-		9937:   "ENUM_VALUE16143",
-		9938:   "ENUM_VALUE16144",
-		9939:   "ENUM_VALUE16145",
-		9940:   "ENUM_VALUE16146",
-		9941:   "ENUM_VALUE16147",
-		39:     "ENUM_VALUE16148",
-		40:     "ENUM_VALUE16149",
-		41:     "ENUM_VALUE16150",
-		42:     "ENUM_VALUE16151",
-		43:     "ENUM_VALUE16152",
-		44:     "ENUM_VALUE16153",
-		45:     "ENUM_VALUE16154",
-		11793:  "ENUM_VALUE16155",
-		3:      "ENUM_VALUE16156",
-		49:     "ENUM_VALUE16157",
-		50:     "ENUM_VALUE16158",
-		51:     "ENUM_VALUE16159",
-		817:    "ENUM_VALUE16160",
-		818:    "ENUM_VALUE16161",
-		819:    "ENUM_VALUE16162",
-		52:     "ENUM_VALUE16163",
-		833:    "ENUM_VALUE16164",
-		53:     "ENUM_VALUE16165",
-		54:     "ENUM_VALUE16166",
-		4:      "ENUM_VALUE16167",
-		1041:   "ENUM_VALUE16168",
-		16657:  "ENUM_VALUE16169",
-		16658:  "ENUM_VALUE16170",
-		16659:  "ENUM_VALUE16171",
-		16660:  "ENUM_VALUE16172",
-		16661:  "ENUM_VALUE16173",
-		1042:   "ENUM_VALUE16174",
-		16673:  "ENUM_VALUE16175",
-		1043:   "ENUM_VALUE16176",
-		16689:  "ENUM_VALUE16177",
-		16690:  "ENUM_VALUE16178",
-		16691:  "ENUM_VALUE16179",
-		16692:  "ENUM_VALUE16180",
-		16693:  "ENUM_VALUE16181",
-		16694:  "ENUM_VALUE16182",
-		16695:  "ENUM_VALUE16183",
-		1044:   "ENUM_VALUE16184",
-		16705:  "ENUM_VALUE16185",
-		16706:  "ENUM_VALUE16186",
-		16707:  "ENUM_VALUE16187",
-		16708:  "ENUM_VALUE16188",
-		16709:  "ENUM_VALUE16189",
-		16710:  "ENUM_VALUE16190",
-		16711:  "ENUM_VALUE16191",
-		16712:  "ENUM_VALUE16192",
-		16713:  "ENUM_VALUE16193",
-		1046:   "ENUM_VALUE16194",
-		16737:  "ENUM_VALUE16195",
-		1047:   "ENUM_VALUE16196",
-		16753:  "ENUM_VALUE16197",
-		268049: "ENUM_VALUE16198",
-		268050: "ENUM_VALUE16199",
-		268051: "ENUM_VALUE16200",
-		268052: "ENUM_VALUE16201",
-		1048:   "ENUM_VALUE16202",
-		16769:  "ENUM_VALUE16203",
-		16770:  "ENUM_VALUE16204",
-		16771:  "ENUM_VALUE16205",
-		16772:  "ENUM_VALUE16206",
-		16773:  "ENUM_VALUE16207",
-		1049:   "ENUM_VALUE16208",
-		1056:   "ENUM_VALUE16209",
-		1058:   "ENUM_VALUE16210",
-		1059:   "ENUM_VALUE16211",
-		1060:   "ENUM_VALUE16212",
-		1061:   "ENUM_VALUE16213",
-		5:      "ENUM_VALUE16214",
-		6:      "ENUM_VALUE16215",
-		97:     "ENUM_VALUE16216",
-		98:     "ENUM_VALUE16217",
-		99:     "ENUM_VALUE16218",
-		100:    "ENUM_VALUE16219",
-		101:    "ENUM_VALUE16220",
-		102:    "ENUM_VALUE16221",
-		103:    "ENUM_VALUE16222",
-		104:    "ENUM_VALUE16223",
-		105:    "ENUM_VALUE16224",
-		106:    "ENUM_VALUE16225",
-		108:    "ENUM_VALUE16226",
-		1729:   "ENUM_VALUE16227",
-		1730:   "ENUM_VALUE16228",
-		1731:   "ENUM_VALUE16229",
-		7:      "ENUM_VALUE16230",
-		8:      "ENUM_VALUE16231",
-		9:      "ENUM_VALUE16232",
-		10:     "ENUM_VALUE16233",
-		161:    "ENUM_VALUE16234",
-		2577:   "ENUM_VALUE16235",
-		41233:  "ENUM_VALUE16236",
-		41234:  "ENUM_VALUE16237",
-		2578:   "ENUM_VALUE16238",
-		2579:   "ENUM_VALUE16239",
-		41265:  "ENUM_VALUE16240",
-		2580:   "ENUM_VALUE16241",
-		2581:   "ENUM_VALUE16242",
-		41297:  "ENUM_VALUE16243",
-		41298:  "ENUM_VALUE16244",
-		41299:  "ENUM_VALUE16245",
-		41300:  "ENUM_VALUE16246",
-		2582:   "ENUM_VALUE16247",
-		2583:   "ENUM_VALUE16248",
-		2584:   "ENUM_VALUE16249",
-		162:    "ENUM_VALUE16250",
-		2593:   "ENUM_VALUE16251",
-		41489:  "ENUM_VALUE16252",
-		663825: "ENUM_VALUE16253",
-		663826: "ENUM_VALUE16254",
-		41490:  "ENUM_VALUE16255",
-		41491:  "ENUM_VALUE16256",
-		41492:  "ENUM_VALUE16257",
-		663873: "ENUM_VALUE16258",
-		2594:   "ENUM_VALUE16259",
-		41505:  "ENUM_VALUE16260",
-		41506:  "ENUM_VALUE16261",
-		41507:  "ENUM_VALUE16262",
-		2595:   "ENUM_VALUE16263",
-		41521:  "ENUM_VALUE16264",
-		41522:  "ENUM_VALUE16265",
-		41523:  "ENUM_VALUE16266",
-		41524:  "ENUM_VALUE16267",
-		41525:  "ENUM_VALUE16268",
-		664401: "ENUM_VALUE16269",
-		664402: "ENUM_VALUE16270",
-		41526:  "ENUM_VALUE16271",
-		41527:  "ENUM_VALUE16272",
-		2596:   "ENUM_VALUE16273",
-		2597:   "ENUM_VALUE16274",
-		2598:   "ENUM_VALUE16275",
-		41569:  "ENUM_VALUE16276",
-		41570:  "ENUM_VALUE16277",
-		41571:  "ENUM_VALUE16278",
-		41572:  "ENUM_VALUE16279",
-		41573:  "ENUM_VALUE16280",
-		665169: "ENUM_VALUE16281",
-		665170: "ENUM_VALUE16282",
-		665171: "ENUM_VALUE16283",
-		665172: "ENUM_VALUE16284",
-		2599:   "ENUM_VALUE16285",
-		2600:   "ENUM_VALUE16286",
-		2601:   "ENUM_VALUE16287",
-		2603:   "ENUM_VALUE16288",
-		2604:   "ENUM_VALUE16289",
-		163:    "ENUM_VALUE16290",
-		2608:   "ENUM_VALUE16291",
-		2609:   "ENUM_VALUE16292",
-		2610:   "ENUM_VALUE16293",
-		2611:   "ENUM_VALUE16294",
-		2612:   "ENUM_VALUE16295",
-		164:    "ENUM_VALUE16296",
-		2625:   "ENUM_VALUE16297",
-		2626:   "ENUM_VALUE16298",
-		42017:  "ENUM_VALUE16299",
-		42018:  "ENUM_VALUE16300",
-		42019:  "ENUM_VALUE16301",
-		2627:   "ENUM_VALUE16302",
-		2628:   "ENUM_VALUE16303",
-		165:    "ENUM_VALUE16304",
-		2641:   "ENUM_VALUE16305",
-		42257:  "ENUM_VALUE16306",
-		42258:  "ENUM_VALUE16307",
-		2642:   "ENUM_VALUE16308",
-		2643:   "ENUM_VALUE16309",
-		2644:   "ENUM_VALUE16310",
-		2646:   "ENUM_VALUE16311",
-		2647:   "ENUM_VALUE16312",
-		42353:  "ENUM_VALUE16313",
-		2648:   "ENUM_VALUE16314",
-		2649:   "ENUM_VALUE16315",
-		2650:   "ENUM_VALUE16316",
-		2651:   "ENUM_VALUE16317",
-		2652:   "ENUM_VALUE16318",
-		2653:   "ENUM_VALUE16319",
-		2654:   "ENUM_VALUE16320",
-		42481:  "ENUM_VALUE16321",
-		42482:  "ENUM_VALUE16322",
-		42483:  "ENUM_VALUE16323",
-		166:    "ENUM_VALUE16324",
-		2657:   "ENUM_VALUE16325",
-		2658:   "ENUM_VALUE16326",
-		42529:  "ENUM_VALUE16327",
-		2659:   "ENUM_VALUE16328",
-		2660:   "ENUM_VALUE16329",
-		2661:   "ENUM_VALUE16330",
-		2662:   "ENUM_VALUE16331",
-		2663:   "ENUM_VALUE16332",
-		42609:  "ENUM_VALUE16333",
-		2664:   "ENUM_VALUE16334",
-		2665:   "ENUM_VALUE16335",
-		42753:  "ENUM_VALUE16336",
-		42754:  "ENUM_VALUE16337",
-		42755:  "ENUM_VALUE16338",
-		11:     "ENUM_VALUE16339",
-		177:    "ENUM_VALUE16340",
-		2833:   "ENUM_VALUE16341",
-		179:    "ENUM_VALUE16342",
-		180:    "ENUM_VALUE16343",
-		2881:   "ENUM_VALUE16344",
-		182:    "ENUM_VALUE16345",
-		183:    "ENUM_VALUE16346",
-		12:     "ENUM_VALUE16347",
-		3089:   "ENUM_VALUE16348",
-		194:    "ENUM_VALUE16349",
-		195:    "ENUM_VALUE16350",
-		196:    "ENUM_VALUE16351",
-		198:    "ENUM_VALUE16352",
-		3169:   "ENUM_VALUE16353",
-		199:    "ENUM_VALUE16354",
-		200:    "ENUM_VALUE16355",
-		208:    "ENUM_VALUE16356",
-		3329:   "ENUM_VALUE16357",
-		3330:   "ENUM_VALUE16358",
-		3331:   "ENUM_VALUE16359",
-		209:    "ENUM_VALUE16360",
-		210:    "ENUM_VALUE16361",
-		211:    "ENUM_VALUE16362",
-		3377:   "ENUM_VALUE16363",
-		3378:   "ENUM_VALUE16364",
-		3379:   "ENUM_VALUE16365",
-		3380:   "ENUM_VALUE16366",
-		3381:   "ENUM_VALUE16367",
-		865809: "ENUM_VALUE16368",
-		865810: "ENUM_VALUE16369",
-		865811: "ENUM_VALUE16370",
-		865812: "ENUM_VALUE16371",
-		865813: "ENUM_VALUE16372",
-		865814: "ENUM_VALUE16373",
-		865815: "ENUM_VALUE16374",
-		865816: "ENUM_VALUE16375",
-		865817: "ENUM_VALUE16376",
-		865818: "ENUM_VALUE16377",
-		865819: "ENUM_VALUE16378",
-		865820: "ENUM_VALUE16379",
-		865821: "ENUM_VALUE16380",
-		865822: "ENUM_VALUE16381",
-		865823: "ENUM_VALUE16382",
-		865824: "ENUM_VALUE16383",
-		865825: "ENUM_VALUE16384",
-		865826: "ENUM_VALUE16385",
-		865827: "ENUM_VALUE16386",
-		865828: "ENUM_VALUE16387",
-		865829: "ENUM_VALUE16388",
-		212:    "ENUM_VALUE16389",
-		3393:   "ENUM_VALUE16390",
-		3394:   "ENUM_VALUE16391",
-		3395:   "ENUM_VALUE16392",
-		213:    "ENUM_VALUE16393",
-		214:    "ENUM_VALUE16394",
-		215:    "ENUM_VALUE16395",
-		3441:   "ENUM_VALUE16396",
-		3442:   "ENUM_VALUE16397",
-		216:    "ENUM_VALUE16398",
-		217:    "ENUM_VALUE16399",
-		3473:   "ENUM_VALUE16400",
-		3474:   "ENUM_VALUE16401",
-		3475:   "ENUM_VALUE16402",
-		254:    "ENUM_VALUE16403",
-		255:    "ENUM_VALUE16404",
-	}
-	Enum16042_value = map[string]int32{
-		"ENUM_VALUE16043": 0,
-		"ENUM_VALUE16044": 1,
-		"ENUM_VALUE16045": 17,
-		"ENUM_VALUE16046": 273,
-		"ENUM_VALUE16047": 274,
-		"ENUM_VALUE16048": 4385,
-		"ENUM_VALUE16049": 4386,
-		"ENUM_VALUE16050": 4387,
-		"ENUM_VALUE16051": 4388,
-		"ENUM_VALUE16052": 4389,
-		"ENUM_VALUE16053": 4390,
-		"ENUM_VALUE16054": 4391,
-		"ENUM_VALUE16055": 4392,
-		"ENUM_VALUE16056": 4393,
-		"ENUM_VALUE16057": 276,
-		"ENUM_VALUE16058": 277,
-		"ENUM_VALUE16059": 18,
-		"ENUM_VALUE16060": 289,
-		"ENUM_VALUE16061": 291,
-		"ENUM_VALUE16062": 4657,
-		"ENUM_VALUE16063": 74513,
-		"ENUM_VALUE16064": 4658,
-		"ENUM_VALUE16065": 4659,
-		"ENUM_VALUE16066": 4660,
-		"ENUM_VALUE16067": 4661,
-		"ENUM_VALUE16068": 4662,
-		"ENUM_VALUE16069": 4663,
-		"ENUM_VALUE16070": 4664,
-		"ENUM_VALUE16071": 292,
-		"ENUM_VALUE16072": 4673,
-		"ENUM_VALUE16073": 4674,
-		"ENUM_VALUE16074": 293,
-		"ENUM_VALUE16075": 19,
-		"ENUM_VALUE16076": 20,
-		"ENUM_VALUE16077": 321,
-		"ENUM_VALUE16078": 5137,
-		"ENUM_VALUE16079": 5138,
-		"ENUM_VALUE16080": 5139,
-		"ENUM_VALUE16081": 5140,
-		"ENUM_VALUE16082": 5141,
-		"ENUM_VALUE16083": 5142,
-		"ENUM_VALUE16084": 82273,
-		"ENUM_VALUE16085": 82274,
-		"ENUM_VALUE16086": 82275,
-		"ENUM_VALUE16087": 82276,
-		"ENUM_VALUE16088": 82277,
-		"ENUM_VALUE16089": 82278,
-		"ENUM_VALUE16090": 5143,
-		"ENUM_VALUE16091": 5144,
-		"ENUM_VALUE16092": 5145,
-		"ENUM_VALUE16093": 5146,
-		"ENUM_VALUE16094": 82337,
-		"ENUM_VALUE16095": 5147,
-		"ENUM_VALUE16096": 5148,
-		"ENUM_VALUE16097": 322,
-		"ENUM_VALUE16098": 323,
-		"ENUM_VALUE16099": 324,
-		"ENUM_VALUE16100": 325,
-		"ENUM_VALUE16101": 326,
-		"ENUM_VALUE16102": 327,
-		"ENUM_VALUE16103": 328,
-		"ENUM_VALUE16104": 21,
-		"ENUM_VALUE16105": 337,
-		"ENUM_VALUE16106": 22,
-		"ENUM_VALUE16107": 23,
-		"ENUM_VALUE16108": 24,
-		"ENUM_VALUE16109": 2,
-		"ENUM_VALUE16110": 33,
-		"ENUM_VALUE16111": 34,
-		"ENUM_VALUE16112": 545,
-		"ENUM_VALUE16113": 8721,
-		"ENUM_VALUE16114": 8723,
-		"ENUM_VALUE16115": 8724,
-		"ENUM_VALUE16116": 546,
-		"ENUM_VALUE16117": 8739,
-		"ENUM_VALUE16118": 8740,
-		"ENUM_VALUE16119": 547,
-		"ENUM_VALUE16120": 548,
-		"ENUM_VALUE16121": 549,
-		"ENUM_VALUE16122": 550,
-		"ENUM_VALUE16123": 551,
-		"ENUM_VALUE16124": 552,
-		"ENUM_VALUE16125": 553,
-		"ENUM_VALUE16126": 35,
-		"ENUM_VALUE16127": 36,
-		"ENUM_VALUE16128": 37,
-		"ENUM_VALUE16129": 593,
-		"ENUM_VALUE16130": 594,
-		"ENUM_VALUE16131": 595,
-		"ENUM_VALUE16132": 596,
-		"ENUM_VALUE16133": 597,
-		"ENUM_VALUE16134": 38,
-		"ENUM_VALUE16135": 609,
-		"ENUM_VALUE16136": 610,
-		"ENUM_VALUE16137": 617,
-		"ENUM_VALUE16138": 614,
-		"ENUM_VALUE16139": 615,
-		"ENUM_VALUE16140": 616,
-		"ENUM_VALUE16141": 618,
-		"ENUM_VALUE16142": 620,
-		"ENUM_VALUE16143": 9937,
-		"ENUM_VALUE16144": 9938,
-		"ENUM_VALUE16145": 9939,
-		"ENUM_VALUE16146": 9940,
-		"ENUM_VALUE16147": 9941,
-		"ENUM_VALUE16148": 39,
-		"ENUM_VALUE16149": 40,
-		"ENUM_VALUE16150": 41,
-		"ENUM_VALUE16151": 42,
-		"ENUM_VALUE16152": 43,
-		"ENUM_VALUE16153": 44,
-		"ENUM_VALUE16154": 45,
-		"ENUM_VALUE16155": 11793,
-		"ENUM_VALUE16156": 3,
-		"ENUM_VALUE16157": 49,
-		"ENUM_VALUE16158": 50,
-		"ENUM_VALUE16159": 51,
-		"ENUM_VALUE16160": 817,
-		"ENUM_VALUE16161": 818,
-		"ENUM_VALUE16162": 819,
-		"ENUM_VALUE16163": 52,
-		"ENUM_VALUE16164": 833,
-		"ENUM_VALUE16165": 53,
-		"ENUM_VALUE16166": 54,
-		"ENUM_VALUE16167": 4,
-		"ENUM_VALUE16168": 1041,
-		"ENUM_VALUE16169": 16657,
-		"ENUM_VALUE16170": 16658,
-		"ENUM_VALUE16171": 16659,
-		"ENUM_VALUE16172": 16660,
-		"ENUM_VALUE16173": 16661,
-		"ENUM_VALUE16174": 1042,
-		"ENUM_VALUE16175": 16673,
-		"ENUM_VALUE16176": 1043,
-		"ENUM_VALUE16177": 16689,
-		"ENUM_VALUE16178": 16690,
-		"ENUM_VALUE16179": 16691,
-		"ENUM_VALUE16180": 16692,
-		"ENUM_VALUE16181": 16693,
-		"ENUM_VALUE16182": 16694,
-		"ENUM_VALUE16183": 16695,
-		"ENUM_VALUE16184": 1044,
-		"ENUM_VALUE16185": 16705,
-		"ENUM_VALUE16186": 16706,
-		"ENUM_VALUE16187": 16707,
-		"ENUM_VALUE16188": 16708,
-		"ENUM_VALUE16189": 16709,
-		"ENUM_VALUE16190": 16710,
-		"ENUM_VALUE16191": 16711,
-		"ENUM_VALUE16192": 16712,
-		"ENUM_VALUE16193": 16713,
-		"ENUM_VALUE16194": 1046,
-		"ENUM_VALUE16195": 16737,
-		"ENUM_VALUE16196": 1047,
-		"ENUM_VALUE16197": 16753,
-		"ENUM_VALUE16198": 268049,
-		"ENUM_VALUE16199": 268050,
-		"ENUM_VALUE16200": 268051,
-		"ENUM_VALUE16201": 268052,
-		"ENUM_VALUE16202": 1048,
-		"ENUM_VALUE16203": 16769,
-		"ENUM_VALUE16204": 16770,
-		"ENUM_VALUE16205": 16771,
-		"ENUM_VALUE16206": 16772,
-		"ENUM_VALUE16207": 16773,
-		"ENUM_VALUE16208": 1049,
-		"ENUM_VALUE16209": 1056,
-		"ENUM_VALUE16210": 1058,
-		"ENUM_VALUE16211": 1059,
-		"ENUM_VALUE16212": 1060,
-		"ENUM_VALUE16213": 1061,
-		"ENUM_VALUE16214": 5,
-		"ENUM_VALUE16215": 6,
-		"ENUM_VALUE16216": 97,
-		"ENUM_VALUE16217": 98,
-		"ENUM_VALUE16218": 99,
-		"ENUM_VALUE16219": 100,
-		"ENUM_VALUE16220": 101,
-		"ENUM_VALUE16221": 102,
-		"ENUM_VALUE16222": 103,
-		"ENUM_VALUE16223": 104,
-		"ENUM_VALUE16224": 105,
-		"ENUM_VALUE16225": 106,
-		"ENUM_VALUE16226": 108,
-		"ENUM_VALUE16227": 1729,
-		"ENUM_VALUE16228": 1730,
-		"ENUM_VALUE16229": 1731,
-		"ENUM_VALUE16230": 7,
-		"ENUM_VALUE16231": 8,
-		"ENUM_VALUE16232": 9,
-		"ENUM_VALUE16233": 10,
-		"ENUM_VALUE16234": 161,
-		"ENUM_VALUE16235": 2577,
-		"ENUM_VALUE16236": 41233,
-		"ENUM_VALUE16237": 41234,
-		"ENUM_VALUE16238": 2578,
-		"ENUM_VALUE16239": 2579,
-		"ENUM_VALUE16240": 41265,
-		"ENUM_VALUE16241": 2580,
-		"ENUM_VALUE16242": 2581,
-		"ENUM_VALUE16243": 41297,
-		"ENUM_VALUE16244": 41298,
-		"ENUM_VALUE16245": 41299,
-		"ENUM_VALUE16246": 41300,
-		"ENUM_VALUE16247": 2582,
-		"ENUM_VALUE16248": 2583,
-		"ENUM_VALUE16249": 2584,
-		"ENUM_VALUE16250": 162,
-		"ENUM_VALUE16251": 2593,
-		"ENUM_VALUE16252": 41489,
-		"ENUM_VALUE16253": 663825,
-		"ENUM_VALUE16254": 663826,
-		"ENUM_VALUE16255": 41490,
-		"ENUM_VALUE16256": 41491,
-		"ENUM_VALUE16257": 41492,
-		"ENUM_VALUE16258": 663873,
-		"ENUM_VALUE16259": 2594,
-		"ENUM_VALUE16260": 41505,
-		"ENUM_VALUE16261": 41506,
-		"ENUM_VALUE16262": 41507,
-		"ENUM_VALUE16263": 2595,
-		"ENUM_VALUE16264": 41521,
-		"ENUM_VALUE16265": 41522,
-		"ENUM_VALUE16266": 41523,
-		"ENUM_VALUE16267": 41524,
-		"ENUM_VALUE16268": 41525,
-		"ENUM_VALUE16269": 664401,
-		"ENUM_VALUE16270": 664402,
-		"ENUM_VALUE16271": 41526,
-		"ENUM_VALUE16272": 41527,
-		"ENUM_VALUE16273": 2596,
-		"ENUM_VALUE16274": 2597,
-		"ENUM_VALUE16275": 2598,
-		"ENUM_VALUE16276": 41569,
-		"ENUM_VALUE16277": 41570,
-		"ENUM_VALUE16278": 41571,
-		"ENUM_VALUE16279": 41572,
-		"ENUM_VALUE16280": 41573,
-		"ENUM_VALUE16281": 665169,
-		"ENUM_VALUE16282": 665170,
-		"ENUM_VALUE16283": 665171,
-		"ENUM_VALUE16284": 665172,
-		"ENUM_VALUE16285": 2599,
-		"ENUM_VALUE16286": 2600,
-		"ENUM_VALUE16287": 2601,
-		"ENUM_VALUE16288": 2603,
-		"ENUM_VALUE16289": 2604,
-		"ENUM_VALUE16290": 163,
-		"ENUM_VALUE16291": 2608,
-		"ENUM_VALUE16292": 2609,
-		"ENUM_VALUE16293": 2610,
-		"ENUM_VALUE16294": 2611,
-		"ENUM_VALUE16295": 2612,
-		"ENUM_VALUE16296": 164,
-		"ENUM_VALUE16297": 2625,
-		"ENUM_VALUE16298": 2626,
-		"ENUM_VALUE16299": 42017,
-		"ENUM_VALUE16300": 42018,
-		"ENUM_VALUE16301": 42019,
-		"ENUM_VALUE16302": 2627,
-		"ENUM_VALUE16303": 2628,
-		"ENUM_VALUE16304": 165,
-		"ENUM_VALUE16305": 2641,
-		"ENUM_VALUE16306": 42257,
-		"ENUM_VALUE16307": 42258,
-		"ENUM_VALUE16308": 2642,
-		"ENUM_VALUE16309": 2643,
-		"ENUM_VALUE16310": 2644,
-		"ENUM_VALUE16311": 2646,
-		"ENUM_VALUE16312": 2647,
-		"ENUM_VALUE16313": 42353,
-		"ENUM_VALUE16314": 2648,
-		"ENUM_VALUE16315": 2649,
-		"ENUM_VALUE16316": 2650,
-		"ENUM_VALUE16317": 2651,
-		"ENUM_VALUE16318": 2652,
-		"ENUM_VALUE16319": 2653,
-		"ENUM_VALUE16320": 2654,
-		"ENUM_VALUE16321": 42481,
-		"ENUM_VALUE16322": 42482,
-		"ENUM_VALUE16323": 42483,
-		"ENUM_VALUE16324": 166,
-		"ENUM_VALUE16325": 2657,
-		"ENUM_VALUE16326": 2658,
-		"ENUM_VALUE16327": 42529,
-		"ENUM_VALUE16328": 2659,
-		"ENUM_VALUE16329": 2660,
-		"ENUM_VALUE16330": 2661,
-		"ENUM_VALUE16331": 2662,
-		"ENUM_VALUE16332": 2663,
-		"ENUM_VALUE16333": 42609,
-		"ENUM_VALUE16334": 2664,
-		"ENUM_VALUE16335": 2665,
-		"ENUM_VALUE16336": 42753,
-		"ENUM_VALUE16337": 42754,
-		"ENUM_VALUE16338": 42755,
-		"ENUM_VALUE16339": 11,
-		"ENUM_VALUE16340": 177,
-		"ENUM_VALUE16341": 2833,
-		"ENUM_VALUE16342": 179,
-		"ENUM_VALUE16343": 180,
-		"ENUM_VALUE16344": 2881,
-		"ENUM_VALUE16345": 182,
-		"ENUM_VALUE16346": 183,
-		"ENUM_VALUE16347": 12,
-		"ENUM_VALUE16348": 3089,
-		"ENUM_VALUE16349": 194,
-		"ENUM_VALUE16350": 195,
-		"ENUM_VALUE16351": 196,
-		"ENUM_VALUE16352": 198,
-		"ENUM_VALUE16353": 3169,
-		"ENUM_VALUE16354": 199,
-		"ENUM_VALUE16355": 200,
-		"ENUM_VALUE16356": 208,
-		"ENUM_VALUE16357": 3329,
-		"ENUM_VALUE16358": 3330,
-		"ENUM_VALUE16359": 3331,
-		"ENUM_VALUE16360": 209,
-		"ENUM_VALUE16361": 210,
-		"ENUM_VALUE16362": 211,
-		"ENUM_VALUE16363": 3377,
-		"ENUM_VALUE16364": 3378,
-		"ENUM_VALUE16365": 3379,
-		"ENUM_VALUE16366": 3380,
-		"ENUM_VALUE16367": 3381,
-		"ENUM_VALUE16368": 865809,
-		"ENUM_VALUE16369": 865810,
-		"ENUM_VALUE16370": 865811,
-		"ENUM_VALUE16371": 865812,
-		"ENUM_VALUE16372": 865813,
-		"ENUM_VALUE16373": 865814,
-		"ENUM_VALUE16374": 865815,
-		"ENUM_VALUE16375": 865816,
-		"ENUM_VALUE16376": 865817,
-		"ENUM_VALUE16377": 865818,
-		"ENUM_VALUE16378": 865819,
-		"ENUM_VALUE16379": 865820,
-		"ENUM_VALUE16380": 865821,
-		"ENUM_VALUE16381": 865822,
-		"ENUM_VALUE16382": 865823,
-		"ENUM_VALUE16383": 865824,
-		"ENUM_VALUE16384": 865825,
-		"ENUM_VALUE16385": 865826,
-		"ENUM_VALUE16386": 865827,
-		"ENUM_VALUE16387": 865828,
-		"ENUM_VALUE16388": 865829,
-		"ENUM_VALUE16389": 212,
-		"ENUM_VALUE16390": 3393,
-		"ENUM_VALUE16391": 3394,
-		"ENUM_VALUE16392": 3395,
-		"ENUM_VALUE16393": 213,
-		"ENUM_VALUE16394": 214,
-		"ENUM_VALUE16395": 215,
-		"ENUM_VALUE16396": 3441,
-		"ENUM_VALUE16397": 3442,
-		"ENUM_VALUE16398": 216,
-		"ENUM_VALUE16399": 217,
-		"ENUM_VALUE16400": 3473,
-		"ENUM_VALUE16401": 3474,
-		"ENUM_VALUE16402": 3475,
-		"ENUM_VALUE16403": 254,
-		"ENUM_VALUE16404": 255,
-	}
-)
-
-func (x Enum16042) Enum() *Enum16042 {
-	p := new(Enum16042)
-	*p = x
-	return p
-}
-
-func (x Enum16042) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum16042) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[41].Descriptor()
-}
-
-func (Enum16042) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[41]
-}
-
-func (x Enum16042) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum16042) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum16042(num)
-	return nil
-}
-
-// Deprecated: Use Enum16042.Descriptor instead.
-func (Enum16042) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{41}
-}
-
-type Enum16553 int32
-
-const (
-	Enum16553_ENUM_VALUE16554 Enum16553 = 0
-	Enum16553_ENUM_VALUE16555 Enum16553 = 1
-	Enum16553_ENUM_VALUE16556 Enum16553 = 2
-	Enum16553_ENUM_VALUE16557 Enum16553 = 3
-	Enum16553_ENUM_VALUE16558 Enum16553 = 4
-	Enum16553_ENUM_VALUE16559 Enum16553 = 5
-	Enum16553_ENUM_VALUE16560 Enum16553 = 6
-	Enum16553_ENUM_VALUE16561 Enum16553 = 7
-	Enum16553_ENUM_VALUE16562 Enum16553 = 8
-	Enum16553_ENUM_VALUE16563 Enum16553 = 9
-)
-
-// Enum value maps for Enum16553.
-var (
-	Enum16553_name = map[int32]string{
-		0: "ENUM_VALUE16554",
-		1: "ENUM_VALUE16555",
-		2: "ENUM_VALUE16556",
-		3: "ENUM_VALUE16557",
-		4: "ENUM_VALUE16558",
-		5: "ENUM_VALUE16559",
-		6: "ENUM_VALUE16560",
-		7: "ENUM_VALUE16561",
-		8: "ENUM_VALUE16562",
-		9: "ENUM_VALUE16563",
-	}
-	Enum16553_value = map[string]int32{
-		"ENUM_VALUE16554": 0,
-		"ENUM_VALUE16555": 1,
-		"ENUM_VALUE16556": 2,
-		"ENUM_VALUE16557": 3,
-		"ENUM_VALUE16558": 4,
-		"ENUM_VALUE16559": 5,
-		"ENUM_VALUE16560": 6,
-		"ENUM_VALUE16561": 7,
-		"ENUM_VALUE16562": 8,
-		"ENUM_VALUE16563": 9,
-	}
-)
-
-func (x Enum16553) Enum() *Enum16553 {
-	p := new(Enum16553)
-	*p = x
-	return p
-}
-
-func (x Enum16553) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum16553) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[42].Descriptor()
-}
-
-func (Enum16553) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[42]
-}
-
-func (x Enum16553) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum16553) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum16553(num)
-	return nil
-}
-
-// Deprecated: Use Enum16553.Descriptor instead.
-func (Enum16553) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{42}
-}
-
-type Enum16728 int32
-
-const (
-	Enum16728_ENUM_VALUE16729 Enum16728 = 1
-	Enum16728_ENUM_VALUE16730 Enum16728 = 2
-	Enum16728_ENUM_VALUE16731 Enum16728 = 3
-)
-
-// Enum value maps for Enum16728.
-var (
-	Enum16728_name = map[int32]string{
-		1: "ENUM_VALUE16729",
-		2: "ENUM_VALUE16730",
-		3: "ENUM_VALUE16731",
-	}
-	Enum16728_value = map[string]int32{
-		"ENUM_VALUE16729": 1,
-		"ENUM_VALUE16730": 2,
-		"ENUM_VALUE16731": 3,
-	}
-)
-
-func (x Enum16728) Enum() *Enum16728 {
-	p := new(Enum16728)
-	*p = x
-	return p
-}
-
-func (x Enum16728) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum16728) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[43].Descriptor()
-}
-
-func (Enum16728) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[43]
-}
-
-func (x Enum16728) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum16728) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum16728(num)
-	return nil
-}
-
-// Deprecated: Use Enum16728.Descriptor instead.
-func (Enum16728) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{43}
-}
-
-type Enum16732 int32
-
-const (
-	Enum16732_ENUM_VALUE16733 Enum16732 = 1
-	Enum16732_ENUM_VALUE16734 Enum16732 = 2
-	Enum16732_ENUM_VALUE16735 Enum16732 = 3
-	Enum16732_ENUM_VALUE16736 Enum16732 = 4
-	Enum16732_ENUM_VALUE16737 Enum16732 = 5
-)
-
-// Enum value maps for Enum16732.
-var (
-	Enum16732_name = map[int32]string{
-		1: "ENUM_VALUE16733",
-		2: "ENUM_VALUE16734",
-		3: "ENUM_VALUE16735",
-		4: "ENUM_VALUE16736",
-		5: "ENUM_VALUE16737",
-	}
-	Enum16732_value = map[string]int32{
-		"ENUM_VALUE16733": 1,
-		"ENUM_VALUE16734": 2,
-		"ENUM_VALUE16735": 3,
-		"ENUM_VALUE16736": 4,
-		"ENUM_VALUE16737": 5,
-	}
-)
-
-func (x Enum16732) Enum() *Enum16732 {
-	p := new(Enum16732)
-	*p = x
-	return p
-}
-
-func (x Enum16732) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum16732) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[44].Descriptor()
-}
-
-func (Enum16732) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[44]
-}
-
-func (x Enum16732) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum16732) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum16732(num)
-	return nil
-}
-
-// Deprecated: Use Enum16732.Descriptor instead.
-func (Enum16732) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{44}
-}
-
-type Enum16738 int32
-
-const (
-	Enum16738_ENUM_VALUE16739 Enum16738 = 1
-	Enum16738_ENUM_VALUE16740 Enum16738 = 2
-	Enum16738_ENUM_VALUE16741 Enum16738 = 3
-	Enum16738_ENUM_VALUE16742 Enum16738 = 4
-	Enum16738_ENUM_VALUE16743 Enum16738 = 5
-	Enum16738_ENUM_VALUE16744 Enum16738 = 6
-	Enum16738_ENUM_VALUE16745 Enum16738 = 7
-)
-
-// Enum value maps for Enum16738.
-var (
-	Enum16738_name = map[int32]string{
-		1: "ENUM_VALUE16739",
-		2: "ENUM_VALUE16740",
-		3: "ENUM_VALUE16741",
-		4: "ENUM_VALUE16742",
-		5: "ENUM_VALUE16743",
-		6: "ENUM_VALUE16744",
-		7: "ENUM_VALUE16745",
-	}
-	Enum16738_value = map[string]int32{
-		"ENUM_VALUE16739": 1,
-		"ENUM_VALUE16740": 2,
-		"ENUM_VALUE16741": 3,
-		"ENUM_VALUE16742": 4,
-		"ENUM_VALUE16743": 5,
-		"ENUM_VALUE16744": 6,
-		"ENUM_VALUE16745": 7,
-	}
-)
-
-func (x Enum16738) Enum() *Enum16738 {
-	p := new(Enum16738)
-	*p = x
-	return p
-}
-
-func (x Enum16738) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum16738) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[45].Descriptor()
-}
-
-func (Enum16738) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[45]
-}
-
-func (x Enum16738) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum16738) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum16738(num)
-	return nil
-}
-
-// Deprecated: Use Enum16738.Descriptor instead.
-func (Enum16738) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{45}
-}
-
-type Enum16698 int32
-
-const (
-	Enum16698_ENUM_VALUE16699 Enum16698 = -1
-	Enum16698_ENUM_VALUE16700 Enum16698 = 100
-	Enum16698_ENUM_VALUE16701 Enum16698 = 2
-	Enum16698_ENUM_VALUE16702 Enum16698 = 0
-	Enum16698_ENUM_VALUE16703 Enum16698 = 1
-	Enum16698_ENUM_VALUE16704 Enum16698 = 4
-	Enum16698_ENUM_VALUE16705 Enum16698 = 11
-	Enum16698_ENUM_VALUE16706 Enum16698 = 12
-	Enum16698_ENUM_VALUE16707 Enum16698 = 3
-	Enum16698_ENUM_VALUE16708 Enum16698 = 5
-	Enum16698_ENUM_VALUE16709 Enum16698 = 6
-	Enum16698_ENUM_VALUE16710 Enum16698 = 7
-	Enum16698_ENUM_VALUE16711 Enum16698 = 8
-	Enum16698_ENUM_VALUE16712 Enum16698 = 9
-	Enum16698_ENUM_VALUE16713 Enum16698 = 10
-	Enum16698_ENUM_VALUE16714 Enum16698 = 13
-	Enum16698_ENUM_VALUE16715 Enum16698 = 14
-	Enum16698_ENUM_VALUE16716 Enum16698 = 15
-	Enum16698_ENUM_VALUE16717 Enum16698 = 16
-	Enum16698_ENUM_VALUE16718 Enum16698 = 18
-	Enum16698_ENUM_VALUE16719 Enum16698 = 17
-	Enum16698_ENUM_VALUE16720 Enum16698 = 19
-	Enum16698_ENUM_VALUE16721 Enum16698 = 20
-)
-
-// Enum value maps for Enum16698.
-var (
-	Enum16698_name = map[int32]string{
-		-1:  "ENUM_VALUE16699",
-		100: "ENUM_VALUE16700",
-		2:   "ENUM_VALUE16701",
-		0:   "ENUM_VALUE16702",
-		1:   "ENUM_VALUE16703",
-		4:   "ENUM_VALUE16704",
-		11:  "ENUM_VALUE16705",
-		12:  "ENUM_VALUE16706",
-		3:   "ENUM_VALUE16707",
-		5:   "ENUM_VALUE16708",
-		6:   "ENUM_VALUE16709",
-		7:   "ENUM_VALUE16710",
-		8:   "ENUM_VALUE16711",
-		9:   "ENUM_VALUE16712",
-		10:  "ENUM_VALUE16713",
-		13:  "ENUM_VALUE16714",
-		14:  "ENUM_VALUE16715",
-		15:  "ENUM_VALUE16716",
-		16:  "ENUM_VALUE16717",
-		18:  "ENUM_VALUE16718",
-		17:  "ENUM_VALUE16719",
-		19:  "ENUM_VALUE16720",
-		20:  "ENUM_VALUE16721",
-	}
-	Enum16698_value = map[string]int32{
-		"ENUM_VALUE16699": -1,
-		"ENUM_VALUE16700": 100,
-		"ENUM_VALUE16701": 2,
-		"ENUM_VALUE16702": 0,
-		"ENUM_VALUE16703": 1,
-		"ENUM_VALUE16704": 4,
-		"ENUM_VALUE16705": 11,
-		"ENUM_VALUE16706": 12,
-		"ENUM_VALUE16707": 3,
-		"ENUM_VALUE16708": 5,
-		"ENUM_VALUE16709": 6,
-		"ENUM_VALUE16710": 7,
-		"ENUM_VALUE16711": 8,
-		"ENUM_VALUE16712": 9,
-		"ENUM_VALUE16713": 10,
-		"ENUM_VALUE16714": 13,
-		"ENUM_VALUE16715": 14,
-		"ENUM_VALUE16716": 15,
-		"ENUM_VALUE16717": 16,
-		"ENUM_VALUE16718": 18,
-		"ENUM_VALUE16719": 17,
-		"ENUM_VALUE16720": 19,
-		"ENUM_VALUE16721": 20,
-	}
-)
-
-func (x Enum16698) Enum() *Enum16698 {
-	p := new(Enum16698)
-	*p = x
-	return p
-}
-
-func (x Enum16698) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum16698) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[46].Descriptor()
-}
-
-func (Enum16698) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[46]
-}
-
-func (x Enum16698) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum16698) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum16698(num)
-	return nil
-}
-
-// Deprecated: Use Enum16698.Descriptor instead.
-func (Enum16698) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{46}
-}
-
-type Enum16819 int32
-
-const (
-	Enum16819_ENUM_VALUE16820 Enum16819 = 0
-	Enum16819_ENUM_VALUE16821 Enum16819 = 1
-	Enum16819_ENUM_VALUE16822 Enum16819 = 2
-	Enum16819_ENUM_VALUE16823 Enum16819 = 3
-	Enum16819_ENUM_VALUE16824 Enum16819 = 4
-	Enum16819_ENUM_VALUE16825 Enum16819 = 5
-)
-
-// Enum value maps for Enum16819.
-var (
-	Enum16819_name = map[int32]string{
-		0: "ENUM_VALUE16820",
-		1: "ENUM_VALUE16821",
-		2: "ENUM_VALUE16822",
-		3: "ENUM_VALUE16823",
-		4: "ENUM_VALUE16824",
-		5: "ENUM_VALUE16825",
-	}
-	Enum16819_value = map[string]int32{
-		"ENUM_VALUE16820": 0,
-		"ENUM_VALUE16821": 1,
-		"ENUM_VALUE16822": 2,
-		"ENUM_VALUE16823": 3,
-		"ENUM_VALUE16824": 4,
-		"ENUM_VALUE16825": 5,
-	}
-)
-
-func (x Enum16819) Enum() *Enum16819 {
-	p := new(Enum16819)
-	*p = x
-	return p
-}
-
-func (x Enum16819) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum16819) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[47].Descriptor()
-}
-
-func (Enum16819) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[47]
-}
-
-func (x Enum16819) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum16819) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum16819(num)
-	return nil
-}
-
-// Deprecated: Use Enum16819.Descriptor instead.
-func (Enum16819) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{47}
-}
-
-type Enum16925 int32
-
-const (
-	Enum16925_ENUM_VALUE16926 Enum16925 = 0
-	Enum16925_ENUM_VALUE16927 Enum16925 = 1
-	Enum16925_ENUM_VALUE16928 Enum16925 = 2
-	Enum16925_ENUM_VALUE16929 Enum16925 = 3
-	Enum16925_ENUM_VALUE16930 Enum16925 = 4
-	Enum16925_ENUM_VALUE16931 Enum16925 = 5
-	Enum16925_ENUM_VALUE16932 Enum16925 = 6
-	Enum16925_ENUM_VALUE16933 Enum16925 = 7
-	Enum16925_ENUM_VALUE16934 Enum16925 = 8
-	Enum16925_ENUM_VALUE16935 Enum16925 = 9
-	Enum16925_ENUM_VALUE16936 Enum16925 = 10
-	Enum16925_ENUM_VALUE16937 Enum16925 = 11
-	Enum16925_ENUM_VALUE16938 Enum16925 = 12
-	Enum16925_ENUM_VALUE16939 Enum16925 = 13
-)
-
-// Enum value maps for Enum16925.
-var (
-	Enum16925_name = map[int32]string{
-		0:  "ENUM_VALUE16926",
-		1:  "ENUM_VALUE16927",
-		2:  "ENUM_VALUE16928",
-		3:  "ENUM_VALUE16929",
-		4:  "ENUM_VALUE16930",
-		5:  "ENUM_VALUE16931",
-		6:  "ENUM_VALUE16932",
-		7:  "ENUM_VALUE16933",
-		8:  "ENUM_VALUE16934",
-		9:  "ENUM_VALUE16935",
-		10: "ENUM_VALUE16936",
-		11: "ENUM_VALUE16937",
-		12: "ENUM_VALUE16938",
-		13: "ENUM_VALUE16939",
-	}
-	Enum16925_value = map[string]int32{
-		"ENUM_VALUE16926": 0,
-		"ENUM_VALUE16927": 1,
-		"ENUM_VALUE16928": 2,
-		"ENUM_VALUE16929": 3,
-		"ENUM_VALUE16930": 4,
-		"ENUM_VALUE16931": 5,
-		"ENUM_VALUE16932": 6,
-		"ENUM_VALUE16933": 7,
-		"ENUM_VALUE16934": 8,
-		"ENUM_VALUE16935": 9,
-		"ENUM_VALUE16936": 10,
-		"ENUM_VALUE16937": 11,
-		"ENUM_VALUE16938": 12,
-		"ENUM_VALUE16939": 13,
-	}
-)
-
-func (x Enum16925) Enum() *Enum16925 {
-	p := new(Enum16925)
-	*p = x
-	return p
-}
-
-func (x Enum16925) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum16925) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[48].Descriptor()
-}
-
-func (Enum16925) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[48]
-}
-
-func (x Enum16925) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum16925) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum16925(num)
-	return nil
-}
-
-// Deprecated: Use Enum16925.Descriptor instead.
-func (Enum16925) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{48}
-}
-
-type Enum22854 int32
-
-const (
-	Enum22854_ENUM_VALUE22855 Enum22854 = 0
-	Enum22854_ENUM_VALUE22856 Enum22854 = 1
-)
-
-// Enum value maps for Enum22854.
-var (
-	Enum22854_name = map[int32]string{
-		0: "ENUM_VALUE22855",
-		1: "ENUM_VALUE22856",
-	}
-	Enum22854_value = map[string]int32{
-		"ENUM_VALUE22855": 0,
-		"ENUM_VALUE22856": 1,
-	}
-)
-
-func (x Enum22854) Enum() *Enum22854 {
-	p := new(Enum22854)
-	*p = x
-	return p
-}
-
-func (x Enum22854) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum22854) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[49].Descriptor()
-}
-
-func (Enum22854) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[49]
-}
-
-func (x Enum22854) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum22854) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum22854(num)
-	return nil
-}
-
-// Deprecated: Use Enum22854.Descriptor instead.
-func (Enum22854) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{49}
-}
-
-type Enum24361 int32
-
-const (
-	Enum24361_ENUM_VALUE24362 Enum24361 = 0
-	Enum24361_ENUM_VALUE24363 Enum24361 = 1
-	Enum24361_ENUM_VALUE24364 Enum24361 = 2
-	Enum24361_ENUM_VALUE24365 Enum24361 = 3
-)
-
-// Enum value maps for Enum24361.
-var (
-	Enum24361_name = map[int32]string{
-		0: "ENUM_VALUE24362",
-		1: "ENUM_VALUE24363",
-		2: "ENUM_VALUE24364",
-		3: "ENUM_VALUE24365",
-	}
-	Enum24361_value = map[string]int32{
-		"ENUM_VALUE24362": 0,
-		"ENUM_VALUE24363": 1,
-		"ENUM_VALUE24364": 2,
-		"ENUM_VALUE24365": 3,
-	}
-)
-
-func (x Enum24361) Enum() *Enum24361 {
-	p := new(Enum24361)
-	*p = x
-	return p
-}
-
-func (x Enum24361) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum24361) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[50].Descriptor()
-}
-
-func (Enum24361) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[50]
-}
-
-func (x Enum24361) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum24361) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum24361(num)
-	return nil
-}
-
-// Deprecated: Use Enum24361.Descriptor instead.
-func (Enum24361) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{50}
-}
-
-type Enum16891 int32
-
-const (
-	Enum16891_ENUM_VALUE16892 Enum16891 = 0
-	Enum16891_ENUM_VALUE16893 Enum16891 = 1
-	Enum16891_ENUM_VALUE16894 Enum16891 = 2
-	Enum16891_ENUM_VALUE16895 Enum16891 = 3
-	Enum16891_ENUM_VALUE16896 Enum16891 = 4
-	Enum16891_ENUM_VALUE16897 Enum16891 = 5
-	Enum16891_ENUM_VALUE16898 Enum16891 = 6
-	Enum16891_ENUM_VALUE16899 Enum16891 = 7
-	Enum16891_ENUM_VALUE16900 Enum16891 = 8
-	Enum16891_ENUM_VALUE16901 Enum16891 = 9
-	Enum16891_ENUM_VALUE16902 Enum16891 = 10
-	Enum16891_ENUM_VALUE16903 Enum16891 = 11
-	Enum16891_ENUM_VALUE16904 Enum16891 = 12
-	Enum16891_ENUM_VALUE16905 Enum16891 = 13
-	Enum16891_ENUM_VALUE16906 Enum16891 = 14
-	Enum16891_ENUM_VALUE16907 Enum16891 = 15
-	Enum16891_ENUM_VALUE16908 Enum16891 = 16
-	Enum16891_ENUM_VALUE16909 Enum16891 = 17
-	Enum16891_ENUM_VALUE16910 Enum16891 = 18
-	Enum16891_ENUM_VALUE16911 Enum16891 = 19
-	Enum16891_ENUM_VALUE16912 Enum16891 = 20
-	Enum16891_ENUM_VALUE16913 Enum16891 = 21
-	Enum16891_ENUM_VALUE16914 Enum16891 = 22
-	Enum16891_ENUM_VALUE16915 Enum16891 = 23
-	Enum16891_ENUM_VALUE16916 Enum16891 = 24
-	Enum16891_ENUM_VALUE16917 Enum16891 = 25
-	Enum16891_ENUM_VALUE16918 Enum16891 = 26
-	Enum16891_ENUM_VALUE16919 Enum16891 = 27
-	Enum16891_ENUM_VALUE16920 Enum16891 = 28
-	Enum16891_ENUM_VALUE16921 Enum16891 = 29
-	Enum16891_ENUM_VALUE16922 Enum16891 = 30
-	Enum16891_ENUM_VALUE16923 Enum16891 = 31
-)
-
-// Enum value maps for Enum16891.
-var (
-	Enum16891_name = map[int32]string{
-		0:  "ENUM_VALUE16892",
-		1:  "ENUM_VALUE16893",
-		2:  "ENUM_VALUE16894",
-		3:  "ENUM_VALUE16895",
-		4:  "ENUM_VALUE16896",
-		5:  "ENUM_VALUE16897",
-		6:  "ENUM_VALUE16898",
-		7:  "ENUM_VALUE16899",
-		8:  "ENUM_VALUE16900",
-		9:  "ENUM_VALUE16901",
-		10: "ENUM_VALUE16902",
-		11: "ENUM_VALUE16903",
-		12: "ENUM_VALUE16904",
-		13: "ENUM_VALUE16905",
-		14: "ENUM_VALUE16906",
-		15: "ENUM_VALUE16907",
-		16: "ENUM_VALUE16908",
-		17: "ENUM_VALUE16909",
-		18: "ENUM_VALUE16910",
-		19: "ENUM_VALUE16911",
-		20: "ENUM_VALUE16912",
-		21: "ENUM_VALUE16913",
-		22: "ENUM_VALUE16914",
-		23: "ENUM_VALUE16915",
-		24: "ENUM_VALUE16916",
-		25: "ENUM_VALUE16917",
-		26: "ENUM_VALUE16918",
-		27: "ENUM_VALUE16919",
-		28: "ENUM_VALUE16920",
-		29: "ENUM_VALUE16921",
-		30: "ENUM_VALUE16922",
-		31: "ENUM_VALUE16923",
-	}
-	Enum16891_value = map[string]int32{
-		"ENUM_VALUE16892": 0,
-		"ENUM_VALUE16893": 1,
-		"ENUM_VALUE16894": 2,
-		"ENUM_VALUE16895": 3,
-		"ENUM_VALUE16896": 4,
-		"ENUM_VALUE16897": 5,
-		"ENUM_VALUE16898": 6,
-		"ENUM_VALUE16899": 7,
-		"ENUM_VALUE16900": 8,
-		"ENUM_VALUE16901": 9,
-		"ENUM_VALUE16902": 10,
-		"ENUM_VALUE16903": 11,
-		"ENUM_VALUE16904": 12,
-		"ENUM_VALUE16905": 13,
-		"ENUM_VALUE16906": 14,
-		"ENUM_VALUE16907": 15,
-		"ENUM_VALUE16908": 16,
-		"ENUM_VALUE16909": 17,
-		"ENUM_VALUE16910": 18,
-		"ENUM_VALUE16911": 19,
-		"ENUM_VALUE16912": 20,
-		"ENUM_VALUE16913": 21,
-		"ENUM_VALUE16914": 22,
-		"ENUM_VALUE16915": 23,
-		"ENUM_VALUE16916": 24,
-		"ENUM_VALUE16917": 25,
-		"ENUM_VALUE16918": 26,
-		"ENUM_VALUE16919": 27,
-		"ENUM_VALUE16920": 28,
-		"ENUM_VALUE16921": 29,
-		"ENUM_VALUE16922": 30,
-		"ENUM_VALUE16923": 31,
-	}
-)
-
-func (x Enum16891) Enum() *Enum16891 {
-	p := new(Enum16891)
-	*p = x
-	return p
-}
-
-func (x Enum16891) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum16891) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[51].Descriptor()
-}
-
-func (Enum16891) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[51]
-}
-
-func (x Enum16891) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum16891) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum16891(num)
-	return nil
-}
-
-// Deprecated: Use Enum16891.Descriptor instead.
-func (Enum16891) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{51}
-}
-
-type Enum27361 int32
-
-const (
-	Enum27361_ENUM_VALUE27362 Enum27361 = 0
-	Enum27361_ENUM_VALUE27363 Enum27361 = 1
-	Enum27361_ENUM_VALUE27364 Enum27361 = 2
-	Enum27361_ENUM_VALUE27365 Enum27361 = 3
-	Enum27361_ENUM_VALUE27366 Enum27361 = 4
-)
-
-// Enum value maps for Enum27361.
-var (
-	Enum27361_name = map[int32]string{
-		0: "ENUM_VALUE27362",
-		1: "ENUM_VALUE27363",
-		2: "ENUM_VALUE27364",
-		3: "ENUM_VALUE27365",
-		4: "ENUM_VALUE27366",
-	}
-	Enum27361_value = map[string]int32{
-		"ENUM_VALUE27362": 0,
-		"ENUM_VALUE27363": 1,
-		"ENUM_VALUE27364": 2,
-		"ENUM_VALUE27365": 3,
-		"ENUM_VALUE27366": 4,
-	}
-)
-
-func (x Enum27361) Enum() *Enum27361 {
-	p := new(Enum27361)
-	*p = x
-	return p
-}
-
-func (x Enum27361) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum27361) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[52].Descriptor()
-}
-
-func (Enum27361) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[52]
-}
-
-func (x Enum27361) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum27361) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum27361(num)
-	return nil
-}
-
-// Deprecated: Use Enum27361.Descriptor instead.
-func (Enum27361) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{52}
-}
-
-type Enum33960 int32
-
-const (
-	Enum33960_ENUM_VALUE33961 Enum33960 = 0
-	Enum33960_ENUM_VALUE33962 Enum33960 = 1
-	Enum33960_ENUM_VALUE33963 Enum33960 = 2
-	Enum33960_ENUM_VALUE33964 Enum33960 = 3
-	Enum33960_ENUM_VALUE33965 Enum33960 = 4
-	Enum33960_ENUM_VALUE33966 Enum33960 = 5
-	Enum33960_ENUM_VALUE33967 Enum33960 = 6
-)
-
-// Enum value maps for Enum33960.
-var (
-	Enum33960_name = map[int32]string{
-		0: "ENUM_VALUE33961",
-		1: "ENUM_VALUE33962",
-		2: "ENUM_VALUE33963",
-		3: "ENUM_VALUE33964",
-		4: "ENUM_VALUE33965",
-		5: "ENUM_VALUE33966",
-		6: "ENUM_VALUE33967",
-	}
-	Enum33960_value = map[string]int32{
-		"ENUM_VALUE33961": 0,
-		"ENUM_VALUE33962": 1,
-		"ENUM_VALUE33963": 2,
-		"ENUM_VALUE33964": 3,
-		"ENUM_VALUE33965": 4,
-		"ENUM_VALUE33966": 5,
-		"ENUM_VALUE33967": 6,
-	}
-)
-
-func (x Enum33960) Enum() *Enum33960 {
-	p := new(Enum33960)
-	*p = x
-	return p
-}
-
-func (x Enum33960) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum33960) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[53].Descriptor()
-}
-
-func (Enum33960) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[53]
-}
-
-func (x Enum33960) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum33960) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum33960(num)
-	return nil
-}
-
-// Deprecated: Use Enum33960.Descriptor instead.
-func (Enum33960) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{53}
-}
-
-type Enum34388 int32
-
-const (
-	Enum34388_ENUM_VALUE34389 Enum34388 = 1
-)
-
-// Enum value maps for Enum34388.
-var (
-	Enum34388_name = map[int32]string{
-		1: "ENUM_VALUE34389",
-	}
-	Enum34388_value = map[string]int32{
-		"ENUM_VALUE34389": 1,
-	}
-)
-
-func (x Enum34388) Enum() *Enum34388 {
-	p := new(Enum34388)
-	*p = x
-	return p
-}
-
-func (x Enum34388) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum34388) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[54].Descriptor()
-}
-
-func (Enum34388) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[54]
-}
-
-func (x Enum34388) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum34388) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum34388(num)
-	return nil
-}
-
-// Deprecated: Use Enum34388.Descriptor instead.
-func (Enum34388) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{54}
-}
-
-type Enum35477 int32
-
-const (
-	Enum35477_ENUM_VALUE35478 Enum35477 = 4
-	Enum35477_ENUM_VALUE35479 Enum35477 = 3
-	Enum35477_ENUM_VALUE35480 Enum35477 = 2
-	Enum35477_ENUM_VALUE35481 Enum35477 = 1
-	Enum35477_ENUM_VALUE35482 Enum35477 = 0
-)
-
-// Enum value maps for Enum35477.
-var (
-	Enum35477_name = map[int32]string{
-		4: "ENUM_VALUE35478",
-		3: "ENUM_VALUE35479",
-		2: "ENUM_VALUE35480",
-		1: "ENUM_VALUE35481",
-		0: "ENUM_VALUE35482",
-	}
-	Enum35477_value = map[string]int32{
-		"ENUM_VALUE35478": 4,
-		"ENUM_VALUE35479": 3,
-		"ENUM_VALUE35480": 2,
-		"ENUM_VALUE35481": 1,
-		"ENUM_VALUE35482": 0,
-	}
-)
-
-func (x Enum35477) Enum() *Enum35477 {
-	p := new(Enum35477)
-	*p = x
-	return p
-}
-
-func (x Enum35477) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum35477) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[55].Descriptor()
-}
-
-func (Enum35477) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[55]
-}
-
-func (x Enum35477) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum35477) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum35477(num)
-	return nil
-}
-
-// Deprecated: Use Enum35477.Descriptor instead.
-func (Enum35477) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{55}
-}
-
-type Enum35507 int32
-
-const (
-	Enum35507_ENUM_VALUE35508 Enum35507 = 0
-	Enum35507_ENUM_VALUE35509 Enum35507 = 1
-	Enum35507_ENUM_VALUE35510 Enum35507 = 2
-	Enum35507_ENUM_VALUE35511 Enum35507 = 3
-	Enum35507_ENUM_VALUE35512 Enum35507 = 4
-	Enum35507_ENUM_VALUE35513 Enum35507 = 5
-	Enum35507_ENUM_VALUE35514 Enum35507 = 6
-	Enum35507_ENUM_VALUE35515 Enum35507 = 7
-	Enum35507_ENUM_VALUE35516 Enum35507 = 8
-	Enum35507_ENUM_VALUE35517 Enum35507 = 9
-)
-
-// Enum value maps for Enum35507.
-var (
-	Enum35507_name = map[int32]string{
-		0: "ENUM_VALUE35508",
-		1: "ENUM_VALUE35509",
-		2: "ENUM_VALUE35510",
-		3: "ENUM_VALUE35511",
-		4: "ENUM_VALUE35512",
-		5: "ENUM_VALUE35513",
-		6: "ENUM_VALUE35514",
-		7: "ENUM_VALUE35515",
-		8: "ENUM_VALUE35516",
-		9: "ENUM_VALUE35517",
-	}
-	Enum35507_value = map[string]int32{
-		"ENUM_VALUE35508": 0,
-		"ENUM_VALUE35509": 1,
-		"ENUM_VALUE35510": 2,
-		"ENUM_VALUE35511": 3,
-		"ENUM_VALUE35512": 4,
-		"ENUM_VALUE35513": 5,
-		"ENUM_VALUE35514": 6,
-		"ENUM_VALUE35515": 7,
-		"ENUM_VALUE35516": 8,
-		"ENUM_VALUE35517": 9,
-	}
-)
-
-func (x Enum35507) Enum() *Enum35507 {
-	p := new(Enum35507)
-	*p = x
-	return p
-}
-
-func (x Enum35507) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum35507) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[56].Descriptor()
-}
-
-func (Enum35507) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[56]
-}
-
-func (x Enum35507) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum35507) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum35507(num)
-	return nil
-}
-
-// Deprecated: Use Enum35507.Descriptor instead.
-func (Enum35507) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{56}
-}
-
-type Enum36860 int32
-
-const (
-	Enum36860_ENUM_VALUE36861 Enum36860 = 0
-	Enum36860_ENUM_VALUE36862 Enum36860 = 1
-	Enum36860_ENUM_VALUE36863 Enum36860 = 2
-	Enum36860_ENUM_VALUE36864 Enum36860 = 3
-	Enum36860_ENUM_VALUE36865 Enum36860 = 4
-	Enum36860_ENUM_VALUE36866 Enum36860 = 5
-	Enum36860_ENUM_VALUE36867 Enum36860 = 6
-	Enum36860_ENUM_VALUE36868 Enum36860 = 7
-)
-
-// Enum value maps for Enum36860.
-var (
-	Enum36860_name = map[int32]string{
-		0: "ENUM_VALUE36861",
-		1: "ENUM_VALUE36862",
-		2: "ENUM_VALUE36863",
-		3: "ENUM_VALUE36864",
-		4: "ENUM_VALUE36865",
-		5: "ENUM_VALUE36866",
-		6: "ENUM_VALUE36867",
-		7: "ENUM_VALUE36868",
-	}
-	Enum36860_value = map[string]int32{
-		"ENUM_VALUE36861": 0,
-		"ENUM_VALUE36862": 1,
-		"ENUM_VALUE36863": 2,
-		"ENUM_VALUE36864": 3,
-		"ENUM_VALUE36865": 4,
-		"ENUM_VALUE36866": 5,
-		"ENUM_VALUE36867": 6,
-		"ENUM_VALUE36868": 7,
-	}
-)
-
-func (x Enum36860) Enum() *Enum36860 {
-	p := new(Enum36860)
-	*p = x
-	return p
-}
-
-func (x Enum36860) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum36860) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[57].Descriptor()
-}
-
-func (Enum36860) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[57]
-}
-
-func (x Enum36860) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum36860) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum36860(num)
-	return nil
-}
-
-// Deprecated: Use Enum36860.Descriptor instead.
-func (Enum36860) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{57}
-}
-
-type Enum36890 int32
-
-const (
-	Enum36890_ENUM_VALUE36891 Enum36890 = 0
-	Enum36890_ENUM_VALUE36892 Enum36890 = 1
-)
-
-// Enum value maps for Enum36890.
-var (
-	Enum36890_name = map[int32]string{
-		0: "ENUM_VALUE36891",
-		1: "ENUM_VALUE36892",
-	}
-	Enum36890_value = map[string]int32{
-		"ENUM_VALUE36891": 0,
-		"ENUM_VALUE36892": 1,
-	}
-)
-
-func (x Enum36890) Enum() *Enum36890 {
-	p := new(Enum36890)
-	*p = x
-	return p
-}
-
-func (x Enum36890) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum36890) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[58].Descriptor()
-}
-
-func (Enum36890) Type() protoreflect.EnumType {
-	return &file_datasets_google_message3_benchmark_message3_8_proto_enumTypes[58]
-}
-
-func (x Enum36890) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum36890) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum36890(num)
-	return nil
-}
-
-// Deprecated: Use Enum36890.Descriptor instead.
-func (Enum36890) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP(), []int{58}
-}
-
-var File_datasets_google_message3_benchmark_message3_8_proto protoreflect.FileDescriptor
-
-var file_datasets_google_message3_benchmark_message3_8_proto_rawDesc = []byte{
-	0x0a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x5f, 0x38, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x2a, 0x2f, 0x0a, 0x07, 0x45, 0x6e, 0x75, 0x6d, 0x37, 0x32, 0x30, 0x12, 0x11, 0x0a, 0x0d,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x37, 0x32, 0x31, 0x10, 0x01, 0x12,
-	0x11, 0x0a, 0x0d, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x37, 0x32, 0x32,
-	0x10, 0x02, 0x2a, 0xa2, 0x1d, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x34, 0x37, 0x36, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x37,
-	0x37, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x34, 0x37, 0x38, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x37, 0x39, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x38, 0x30, 0x10, 0x03, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x38,
-	0x31, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x34, 0x38, 0x32, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x38, 0x33, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x38, 0x34, 0x10, 0x07, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x38,
-	0x35, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x34, 0x38, 0x36, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x38, 0x37, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x38, 0x38, 0x10, 0x0b, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x38,
-	0x39, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x34, 0x39, 0x30, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x39, 0x31, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x39, 0x32, 0x10, 0x0f, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x39,
-	0x33, 0x10, 0x10, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x34, 0x39, 0x34, 0x10, 0x11, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x39, 0x35, 0x10, 0x12, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x39, 0x36, 0x10, 0x13, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x39,
-	0x37, 0x10, 0x14, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x34, 0x39, 0x38, 0x10, 0x15, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x39, 0x39, 0x10, 0x16, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x30, 0x30, 0x10, 0x17, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x30,
-	0x31, 0x10, 0x18, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x30, 0x32, 0x10, 0x19, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x30, 0x33, 0x10, 0x1a, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x30, 0x34, 0x10, 0x1b, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x30,
-	0x35, 0x10, 0x1c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x30, 0x36, 0x10, 0x1d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x30, 0x37, 0x10, 0x1e, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x30, 0x38, 0x10, 0x1f, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x30,
-	0x39, 0x10, 0x20, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x31, 0x30, 0x10, 0x21, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x31, 0x31, 0x10, 0x22, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x31, 0x32, 0x10, 0x23, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x31,
-	0x33, 0x10, 0x24, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x31, 0x34, 0x10, 0x25, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x31, 0x35, 0x10, 0x26, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x31, 0x36, 0x10, 0x27, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x31,
-	0x37, 0x10, 0x28, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x31, 0x38, 0x10, 0x29, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x31, 0x39, 0x10, 0x2a, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x32, 0x30, 0x10, 0x2b, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x32,
-	0x31, 0x10, 0x2c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x32, 0x32, 0x10, 0x2d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x32, 0x33, 0x10, 0x2e, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x32, 0x34, 0x10, 0x2f, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x32,
-	0x35, 0x10, 0x30, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x32, 0x36, 0x10, 0x31, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x32, 0x37, 0x10, 0x32, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x32, 0x38, 0x10, 0x33, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x32,
-	0x39, 0x10, 0x34, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x33, 0x30, 0x10, 0x35, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x33, 0x31, 0x10, 0x36, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x33, 0x32, 0x10, 0x37, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x33,
-	0x33, 0x10, 0x38, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x33, 0x34, 0x10, 0x39, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x33, 0x35, 0x10, 0x3a, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x33, 0x36, 0x10, 0x3b, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x33,
-	0x37, 0x10, 0x3c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x33, 0x38, 0x10, 0x3d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x33, 0x39, 0x10, 0x3e, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x34, 0x30, 0x10, 0x3f, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x34,
-	0x31, 0x10, 0x40, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x34, 0x32, 0x10, 0x41, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x34, 0x33, 0x10, 0x42, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x34, 0x34, 0x10, 0x43, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x34,
-	0x35, 0x10, 0x44, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x34, 0x36, 0x10, 0x45, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x34, 0x37, 0x10, 0x46, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x34, 0x38, 0x10, 0x47, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x34,
-	0x39, 0x10, 0x48, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x35, 0x30, 0x10, 0x49, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x35, 0x31, 0x10, 0x4a, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x35, 0x32, 0x10, 0x4b, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x35,
-	0x33, 0x10, 0x4c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x35, 0x34, 0x10, 0x4d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x35, 0x35, 0x10, 0x4e, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x35, 0x36, 0x10, 0x4f, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x35,
-	0x37, 0x10, 0x50, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x35, 0x38, 0x10, 0x51, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x35, 0x39, 0x10, 0x52, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x36, 0x30, 0x10, 0x53, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x36,
-	0x31, 0x10, 0x54, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x36, 0x32, 0x10, 0x55, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x36, 0x33, 0x10, 0x56, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x36, 0x34, 0x10, 0x57, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x36,
-	0x35, 0x10, 0x58, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x36, 0x36, 0x10, 0x59, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x36, 0x37, 0x10, 0x5a, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x36, 0x38, 0x10, 0x5b, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x36,
-	0x39, 0x10, 0x5c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x37, 0x30, 0x10, 0x5d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x37, 0x31, 0x10, 0x5e, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x37, 0x32, 0x10, 0x5f, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x37,
-	0x33, 0x10, 0x60, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x37, 0x34, 0x10, 0x61, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x37, 0x35, 0x10, 0x62, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x37, 0x36, 0x10, 0x63, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x37,
-	0x37, 0x10, 0x64, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x37, 0x38, 0x10, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x37, 0x39, 0x10, 0x66, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x38, 0x30, 0x10, 0x67, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x38,
-	0x31, 0x10, 0x68, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x38, 0x32, 0x10, 0x69, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x38, 0x33, 0x10, 0x6a, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x38, 0x34, 0x10, 0x6b, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x38,
-	0x35, 0x10, 0x6c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x38, 0x36, 0x10, 0x6d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x38, 0x37, 0x10, 0x6e, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x38, 0x38, 0x10, 0x6f, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x38,
-	0x39, 0x10, 0x70, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x39, 0x30, 0x10, 0x71, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x39, 0x31, 0x10, 0x72, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x39, 0x32, 0x10, 0x73, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x39,
-	0x33, 0x10, 0x74, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x39, 0x34, 0x10, 0x75, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x39, 0x35, 0x10, 0x76, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x39, 0x36, 0x10, 0x77, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x39,
-	0x37, 0x10, 0x78, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x39, 0x38, 0x10, 0x79, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x39, 0x39, 0x10, 0x7a, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x30, 0x30, 0x10, 0x7b, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x30,
-	0x31, 0x10, 0x7c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x36, 0x30, 0x32, 0x10, 0x7d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x30, 0x33, 0x10, 0x7e, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x30, 0x34, 0x10, 0x7f, 0x12,
-	0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x30,
-	0x35, 0x10, 0x80, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x36, 0x30, 0x36, 0x10, 0x81, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x30, 0x37, 0x10, 0x82, 0x01, 0x12, 0x13,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x30, 0x38,
-	0x10, 0x83, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x36, 0x30, 0x39, 0x10, 0x84, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x31, 0x30, 0x10, 0x85, 0x01, 0x12, 0x13, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x31, 0x31, 0x10,
-	0x86, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x33, 0x36, 0x31, 0x32, 0x10, 0x87, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x31, 0x33, 0x10, 0x88, 0x01, 0x12, 0x13, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x31, 0x34, 0x10, 0x89,
-	0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33,
-	0x36, 0x31, 0x35, 0x10, 0x8a, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x31, 0x36, 0x10, 0x8b, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x31, 0x37, 0x10, 0x8c, 0x01,
-	0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36,
-	0x31, 0x38, 0x10, 0x8d, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x33, 0x36, 0x31, 0x39, 0x10, 0x8e, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x32, 0x30, 0x10, 0x8f, 0x01, 0x12,
-	0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x32,
-	0x31, 0x10, 0x90, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x36, 0x32, 0x32, 0x10, 0x91, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x32, 0x33, 0x10, 0x92, 0x01, 0x12, 0x13,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x32, 0x34,
-	0x10, 0x93, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x36, 0x32, 0x35, 0x10, 0x94, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x32, 0x36, 0x10, 0x95, 0x01, 0x12, 0x13, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x32, 0x37, 0x10,
-	0x96, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x33, 0x36, 0x32, 0x38, 0x10, 0x97, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x32, 0x39, 0x10, 0x98, 0x01, 0x12, 0x13, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x33, 0x30, 0x10, 0x99,
-	0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33,
-	0x36, 0x33, 0x31, 0x10, 0x9a, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x33, 0x32, 0x10, 0x9b, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x33, 0x33, 0x10, 0x9c, 0x01,
-	0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36,
-	0x33, 0x34, 0x10, 0x9d, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x33, 0x36, 0x33, 0x35, 0x10, 0x9e, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x33, 0x36, 0x10, 0x9f, 0x01, 0x12,
-	0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x33,
-	0x37, 0x10, 0xa0, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x36, 0x33, 0x38, 0x10, 0xa1, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x33, 0x39, 0x10, 0xa2, 0x01, 0x12, 0x13,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x34, 0x30,
-	0x10, 0xa3, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x36, 0x34, 0x31, 0x10, 0xa4, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x34, 0x32, 0x10, 0xa5, 0x01, 0x12, 0x13, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x34, 0x33, 0x10,
-	0xa6, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x33, 0x36, 0x34, 0x34, 0x10, 0xa7, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x34, 0x35, 0x10, 0xa8, 0x01, 0x12, 0x13, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x34, 0x36, 0x10, 0xa9,
-	0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33,
-	0x36, 0x34, 0x37, 0x10, 0xaa, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x34, 0x38, 0x10, 0xab, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x34, 0x39, 0x10, 0xac, 0x01,
-	0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36,
-	0x35, 0x30, 0x10, 0xad, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x33, 0x36, 0x35, 0x31, 0x10, 0xae, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x35, 0x32, 0x10, 0xaf, 0x01, 0x12,
-	0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x35,
-	0x33, 0x10, 0xb0, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x36, 0x35, 0x34, 0x10, 0xb1, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x35, 0x35, 0x10, 0xb2, 0x01, 0x12, 0x13,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x35, 0x36,
-	0x10, 0xb3, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x36, 0x35, 0x37, 0x10, 0xb4, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x35, 0x38, 0x10, 0xb5, 0x01, 0x12, 0x13, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x35, 0x39, 0x10,
-	0xb6, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x33, 0x36, 0x36, 0x30, 0x10, 0xb7, 0x01, 0x2a, 0xfa, 0x01, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d,
-	0x33, 0x38, 0x30, 0x35, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x38, 0x30, 0x36, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x30, 0x37, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x30, 0x38, 0x10, 0x02,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38,
-	0x30, 0x39, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x38, 0x31, 0x30, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x31, 0x31, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x31, 0x32, 0x10, 0x06,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38,
-	0x31, 0x33, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x38, 0x31, 0x34, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x31, 0x35, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x31, 0x36, 0x10, 0x0b,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38,
-	0x31, 0x37, 0x10, 0x0a, 0x2a, 0x9a, 0x03, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x37, 0x38,
-	0x33, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33,
-	0x37, 0x38, 0x34, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x33, 0x37, 0x38, 0x35, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x37, 0x38, 0x36, 0x10, 0x02, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x37, 0x38, 0x37, 0x10,
-	0x03, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33,
-	0x37, 0x38, 0x38, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x33, 0x37, 0x38, 0x39, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x37, 0x39, 0x30, 0x10, 0x06, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x37, 0x39, 0x31, 0x10,
-	0x07, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33,
-	0x37, 0x39, 0x32, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x33, 0x37, 0x39, 0x33, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x37, 0x39, 0x34, 0x10, 0x0a, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x37, 0x39, 0x35, 0x10,
-	0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33,
-	0x37, 0x39, 0x36, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x33, 0x37, 0x39, 0x37, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x37, 0x39, 0x38, 0x10, 0x0e, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x37, 0x39, 0x39, 0x10,
-	0x0f, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33,
-	0x38, 0x30, 0x30, 0x10, 0x10, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x33, 0x38, 0x30, 0x31, 0x10, 0x14, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x30, 0x32, 0x10, 0x15, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x30, 0x33, 0x10,
-	0x32, 0x2a, 0xf2, 0x02, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x38, 0x35, 0x31, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x35, 0x32,
-	0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x33, 0x38, 0x35, 0x33, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x35, 0x34, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x35, 0x35, 0x10, 0x03, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x35, 0x36,
-	0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x33, 0x38, 0x35, 0x37, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x35, 0x38, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x35, 0x39, 0x10, 0x07, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x36, 0x30,
-	0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x33, 0x38, 0x36, 0x31, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x36, 0x32, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x36, 0x33, 0x10, 0x0b, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x36, 0x34,
-	0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x33, 0x38, 0x36, 0x35, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x36, 0x36, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x36, 0x37, 0x10, 0x0f, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x36, 0x38,
-	0x10, 0x10, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x33, 0x38, 0x36, 0x39, 0x10, 0x11, 0x2a, 0x3c, 0x0a, 0x0a, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6e, 0x75, 0x6d, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x4e, 0x55, 0x53, 0x45, 0x44, 0x5f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12,
-	0x55, 0x4e, 0x55, 0x53, 0x45, 0x44, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x32, 0x10, 0x01, 0x2a, 0x6e, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x34, 0x31, 0x34, 0x36,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x34, 0x31,
-	0x34, 0x37, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x34, 0x31, 0x34, 0x38, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x34, 0x31, 0x34, 0x39, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x34, 0x31, 0x35, 0x30, 0x10, 0x03,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x34, 0x31,
-	0x35, 0x31, 0x10, 0x04, 0x2a, 0x32, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x34, 0x31, 0x36, 0x30,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x34, 0x31,
-	0x36, 0x31, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x34, 0x31, 0x36, 0x32, 0x10, 0x01, 0x2a, 0x96, 0x01, 0x0a, 0x08, 0x45, 0x6e, 0x75,
-	0x6d, 0x34, 0x31, 0x35, 0x32, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x34, 0x31, 0x35, 0x33, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x34, 0x31, 0x35, 0x34, 0x10, 0x01, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x34, 0x31, 0x35, 0x35, 0x10,
-	0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x34,
-	0x31, 0x35, 0x36, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x34, 0x31, 0x35, 0x37, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x34, 0x31, 0x35, 0x38, 0x10, 0x05, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x34, 0x31, 0x35, 0x39, 0x10,
-	0x06, 0x2a, 0xc2, 0x03, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x36, 0x30, 0x32, 0x35, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x32, 0x36,
-	0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x36, 0x30, 0x32, 0x37, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x32, 0x38, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x32, 0x39, 0x10, 0x03, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x33, 0x30,
-	0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x36, 0x30, 0x33, 0x31, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x33, 0x32, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x33, 0x33, 0x10, 0x07, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x33, 0x34,
-	0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x36, 0x30, 0x33, 0x35, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x33, 0x36, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x33, 0x37, 0x10, 0x0b, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x33, 0x38,
-	0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x36, 0x30, 0x33, 0x39, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x34, 0x30, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x34, 0x31, 0x10, 0x0f, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x34, 0x32,
-	0x10, 0x10, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x36, 0x30, 0x34, 0x33, 0x10, 0x11, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x34, 0x34, 0x10, 0x12, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x34, 0x35, 0x10, 0x13, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x34, 0x36,
-	0x10, 0x14, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x36, 0x30, 0x34, 0x37, 0x10, 0x15, 0x2a, 0xb6, 0x02, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x36,
-	0x30, 0x36, 0x35, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x36, 0x30, 0x36, 0x36, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x36, 0x37, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x36, 0x38, 0x10, 0x02, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x36,
-	0x39, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x36, 0x30, 0x37, 0x30, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x37, 0x31, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x37, 0x32, 0x10, 0x06, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x37,
-	0x33, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x36, 0x30, 0x37, 0x34, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x37, 0x35, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x37, 0x36, 0x10, 0x0a, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x37,
-	0x37, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x36, 0x30, 0x37, 0x38, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x37, 0x39, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x38, 0x30, 0x10, 0x0e, 0x2a,
-	0xaa, 0x01, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x36, 0x35, 0x37, 0x39, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x35, 0x38, 0x30, 0x10, 0x00,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x35,
-	0x38, 0x31, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x36, 0x35, 0x38, 0x32, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x35, 0x38, 0x33, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x35, 0x38, 0x34, 0x10, 0x0a,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x35,
-	0x38, 0x35, 0x10, 0x0f, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x36, 0x35, 0x38, 0x36, 0x10, 0x19, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x35, 0x38, 0x37, 0x10, 0x1e, 0x2a, 0xb2, 0x05, 0x0a,
-	0x08, 0x45, 0x6e, 0x75, 0x6d, 0x36, 0x35, 0x38, 0x38, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x35, 0x38, 0x39, 0x10, 0x00, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x35, 0x39, 0x30, 0x10,
-	0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36,
-	0x35, 0x39, 0x31, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x36, 0x35, 0x39, 0x32, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x35, 0x39, 0x33, 0x10, 0x04, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x35, 0x39, 0x34, 0x10,
-	0x05, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36,
-	0x35, 0x39, 0x35, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x36, 0x35, 0x39, 0x36, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x35, 0x39, 0x37, 0x10, 0x08, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x35, 0x39, 0x38, 0x10,
-	0x09, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36,
-	0x35, 0x39, 0x39, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x36, 0x36, 0x30, 0x30, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x30, 0x31, 0x10, 0x0c, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x30, 0x32, 0x10,
-	0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36,
-	0x36, 0x30, 0x33, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x36, 0x36, 0x30, 0x34, 0x10, 0x0f, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x30, 0x35, 0x10, 0x10, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x30, 0x36, 0x10,
-	0x11, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36,
-	0x36, 0x30, 0x37, 0x10, 0x13, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x36, 0x36, 0x30, 0x38, 0x10, 0x14, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x30, 0x39, 0x10, 0x15, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x31, 0x30, 0x10,
-	0x16, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36,
-	0x36, 0x31, 0x31, 0x10, 0x17, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x36, 0x36, 0x31, 0x32, 0x10, 0x18, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x31, 0x33, 0x10, 0x19, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x31, 0x34, 0x10,
-	0x1a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36,
-	0x36, 0x31, 0x35, 0x10, 0x1b, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x36, 0x36, 0x31, 0x36, 0x10, 0x1c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x31, 0x37, 0x10, 0x1d, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x31, 0x38, 0x10,
-	0x1e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36,
-	0x36, 0x31, 0x39, 0x10, 0x1f, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x36, 0x36, 0x32, 0x30, 0x10, 0x20, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x32, 0x31, 0x10, 0x21, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x32, 0x32, 0x10,
-	0x22, 0x2a, 0x46, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x36, 0x37, 0x36, 0x39, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x37, 0x37, 0x30, 0x10,
-	0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36,
-	0x37, 0x37, 0x31, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x36, 0x37, 0x37, 0x32, 0x10, 0x02, 0x2a, 0x96, 0x01, 0x0a, 0x08, 0x45, 0x6e,
-	0x75, 0x6d, 0x36, 0x37, 0x37, 0x34, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x36, 0x37, 0x37, 0x35, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x37, 0x37, 0x36, 0x10, 0x01, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x37, 0x37, 0x37,
-	0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x36, 0x37, 0x37, 0x38, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x36, 0x37, 0x37, 0x39, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x37, 0x38, 0x30, 0x10, 0x05, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x37, 0x38, 0x31,
-	0x10, 0x06, 0x2a, 0x82, 0x01, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x36, 0x37, 0x38, 0x32, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x37, 0x38,
-	0x33, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x36, 0x37, 0x38, 0x34, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x37, 0x38, 0x35, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x37, 0x38, 0x36, 0x10, 0x03, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x37, 0x38,
-	0x37, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x36, 0x37, 0x38, 0x38, 0x10, 0x05, 0x2a, 0x5a, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x36,
-	0x38, 0x35, 0x38, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x36, 0x38, 0x35, 0x39, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x38, 0x36, 0x30, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x38, 0x36, 0x31, 0x10, 0x03, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x38, 0x36,
-	0x32, 0x10, 0x04, 0x2a, 0x82, 0x01, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x36, 0x38, 0x31, 0x35,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x38,
-	0x31, 0x36, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x36, 0x38, 0x31, 0x37, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x38, 0x31, 0x38, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x38, 0x31, 0x39, 0x10, 0x03,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x38,
-	0x32, 0x30, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x36, 0x38, 0x32, 0x31, 0x10, 0x05, 0x2a, 0x5a, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d,
-	0x36, 0x38, 0x32, 0x32, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x36, 0x38, 0x32, 0x33, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x38, 0x32, 0x34, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x38, 0x32, 0x35, 0x10, 0x02,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x38,
-	0x32, 0x36, 0x10, 0x03, 0x2a, 0x46, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x37, 0x36, 0x35, 0x34,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x37, 0x36,
-	0x35, 0x35, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x37, 0x36, 0x35, 0x36, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x37, 0x36, 0x35, 0x37, 0x10, 0x03, 0x2a, 0x46, 0x0a, 0x08,
-	0x45, 0x6e, 0x75, 0x6d, 0x38, 0x32, 0x39, 0x32, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x32, 0x39, 0x33, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x32, 0x39, 0x34, 0x10, 0x01,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x32,
-	0x39, 0x35, 0x10, 0x02, 0x2a, 0x46, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x38, 0x34, 0x35, 0x30,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x34,
-	0x35, 0x31, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x38, 0x34, 0x35, 0x32, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x34, 0x35, 0x33, 0x10, 0x02, 0x2a, 0x6e, 0x0a, 0x08,
-	0x45, 0x6e, 0x75, 0x6d, 0x38, 0x39, 0x30, 0x30, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x39, 0x30, 0x31, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x39, 0x30, 0x32, 0x10, 0x01,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x39,
-	0x30, 0x33, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x38, 0x39, 0x30, 0x34, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x39, 0x30, 0x35, 0x10, 0x04, 0x2a, 0x6e, 0x0a, 0x08,
-	0x45, 0x6e, 0x75, 0x6d, 0x38, 0x39, 0x34, 0x35, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x39, 0x34, 0x36, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x39, 0x34, 0x37, 0x10, 0x01,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x39,
-	0x34, 0x38, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x38, 0x39, 0x34, 0x39, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x39, 0x35, 0x30, 0x10, 0x04, 0x2a, 0xaa, 0x01, 0x0a,
-	0x08, 0x45, 0x6e, 0x75, 0x6d, 0x38, 0x39, 0x35, 0x31, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x39, 0x35, 0x32, 0x10, 0x01, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x39, 0x35, 0x33, 0x10,
-	0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38,
-	0x39, 0x35, 0x34, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x38, 0x39, 0x35, 0x35, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x39, 0x35, 0x36, 0x10, 0x05, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x39, 0x35, 0x37, 0x10,
-	0x06, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38,
-	0x39, 0x35, 0x38, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x38, 0x39, 0x35, 0x39, 0x10, 0x08, 0x2a, 0x97, 0x0d, 0x0a, 0x08, 0x45, 0x6e,
-	0x75, 0x6d, 0x39, 0x32, 0x34, 0x33, 0x12, 0x1b, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x34, 0x34, 0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-	0xff, 0xff, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x39, 0x32, 0x34, 0x35, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x34, 0x36, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x34, 0x37, 0x10, 0x02, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x34,
-	0x38, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x39, 0x32, 0x34, 0x39, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x35, 0x30, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x35, 0x31, 0x10, 0x06, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x35,
-	0x32, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x39, 0x32, 0x35, 0x33, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x35, 0x34, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x35, 0x35, 0x10, 0x0a, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x35,
-	0x36, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x39, 0x32, 0x35, 0x37, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x35, 0x38, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x35, 0x39, 0x10, 0x0e, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x36,
-	0x30, 0x10, 0x0f, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x39, 0x32, 0x36, 0x31, 0x10, 0x10, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x36, 0x32, 0x10, 0x11, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x36, 0x33, 0x10, 0x47, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x36,
-	0x34, 0x10, 0x48, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x39, 0x32, 0x36, 0x35, 0x10, 0x49, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x36, 0x36, 0x10, 0x4a, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x36, 0x37, 0x10, 0x12, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x36,
-	0x38, 0x10, 0x14, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x39, 0x32, 0x36, 0x39, 0x10, 0x15, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x37, 0x30, 0x10, 0x16, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x37, 0x31, 0x10, 0x17, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x37,
-	0x32, 0x10, 0x3d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x39, 0x32, 0x37, 0x33, 0x10, 0x3e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x37, 0x34, 0x10, 0x3f, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x37, 0x35, 0x10, 0x40, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x37,
-	0x36, 0x10, 0x42, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x39, 0x32, 0x37, 0x37, 0x10, 0x43, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x37, 0x38, 0x10, 0x18, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x37, 0x39, 0x10, 0x19, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x38,
-	0x30, 0x10, 0x1a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x39, 0x32, 0x38, 0x31, 0x10, 0x1b, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x38, 0x32, 0x10, 0x1c, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x38, 0x33, 0x10, 0x1d, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x38,
-	0x34, 0x10, 0x1e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x39, 0x32, 0x38, 0x35, 0x10, 0x1f, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x38, 0x36, 0x10, 0x20, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x38, 0x37, 0x10, 0x21, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x38,
-	0x38, 0x10, 0x22, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x39, 0x32, 0x38, 0x39, 0x10, 0x23, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x39, 0x30, 0x10, 0x24, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x39, 0x31, 0x10, 0x25, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x39,
-	0x32, 0x10, 0x26, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x39, 0x32, 0x39, 0x33, 0x10, 0x27, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x39, 0x34, 0x10, 0x28, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x39, 0x35, 0x10, 0x29, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x39,
-	0x36, 0x10, 0x2a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x39, 0x32, 0x39, 0x37, 0x10, 0x2b, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x39, 0x38, 0x10, 0x2c, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x32, 0x39, 0x39, 0x10, 0x2d, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x33, 0x30,
-	0x30, 0x10, 0x2e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x39, 0x33, 0x30, 0x31, 0x10, 0x2f, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x33, 0x30, 0x32, 0x10, 0x30, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x33, 0x30, 0x33, 0x10, 0x31, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x33, 0x30,
-	0x34, 0x10, 0x32, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x39, 0x33, 0x30, 0x35, 0x10, 0x33, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x33, 0x30, 0x36, 0x10, 0x34, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x33, 0x30, 0x37, 0x10, 0x35, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x33, 0x30,
-	0x38, 0x10, 0x36, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x39, 0x33, 0x30, 0x39, 0x10, 0x37, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x33, 0x31, 0x30, 0x10, 0x38, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x33, 0x31, 0x31, 0x10, 0x39, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x33, 0x31,
-	0x32, 0x10, 0x3a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x39, 0x33, 0x31, 0x33, 0x10, 0x3b, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x33, 0x31, 0x34, 0x10, 0x3c, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x33, 0x31, 0x35, 0x10, 0x44, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x33, 0x31,
-	0x36, 0x10, 0x45, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x39, 0x33, 0x31, 0x37, 0x10, 0x46, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x33, 0x31, 0x38, 0x10, 0xe8, 0x07, 0x12, 0x13, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x33, 0x31, 0x39, 0x10, 0xe9,
-	0x07, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39,
-	0x33, 0x32, 0x30, 0x10, 0xea, 0x07, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x39, 0x33, 0x32, 0x31, 0x10, 0xeb, 0x07, 0x12, 0x13, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x33, 0x32, 0x32, 0x10, 0xec, 0x07,
-	0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x33,
-	0x32, 0x33, 0x10, 0xed, 0x07, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x39, 0x33, 0x32, 0x34, 0x10, 0xee, 0x07, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x33, 0x32, 0x35, 0x10, 0xef, 0x07, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x39, 0x33, 0x32,
-	0x36, 0x10, 0x41, 0x2a, 0xc8, 0x01, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x30, 0x31, 0x35,
-	0x37, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x30, 0x31, 0x35, 0x38, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x31, 0x35, 0x39, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x31, 0x36, 0x30, 0x10, 0x02,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30,
-	0x31, 0x36, 0x31, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x30, 0x31, 0x36, 0x32, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x31, 0x36, 0x33, 0x10, 0x05, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x31,
-	0x36, 0x34, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x30, 0x31, 0x36, 0x35, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x31, 0x36, 0x36, 0x10, 0x08, 0x2a, 0xc8,
-	0x01, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x30, 0x31, 0x36, 0x37, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x31, 0x36, 0x38, 0x10,
-	0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x30, 0x31, 0x36, 0x39, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x31, 0x37, 0x30, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x31, 0x37, 0x31, 0x10, 0x03,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30,
-	0x31, 0x37, 0x32, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x30, 0x31, 0x37, 0x33, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x31, 0x37, 0x34, 0x10, 0x06, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x31,
-	0x37, 0x35, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x30, 0x31, 0x37, 0x36, 0x10, 0x08, 0x2a, 0xca, 0x02, 0x0a, 0x08, 0x45, 0x6e,
-	0x75, 0x6d, 0x38, 0x38, 0x36, 0x32, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x38, 0x38, 0x36, 0x33, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x38, 0x36, 0x34, 0x10, 0x01, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x38, 0x36, 0x35,
-	0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x38, 0x38, 0x36, 0x36, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x38, 0x38, 0x36, 0x37, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x38, 0x36, 0x38, 0x10, 0x05, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x38, 0x36, 0x39,
-	0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x38, 0x38, 0x37, 0x30, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x38, 0x38, 0x37, 0x31, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x38, 0x37, 0x32, 0x10, 0x0e, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x38, 0x37, 0x33,
-	0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x38, 0x38, 0x37, 0x34, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x38, 0x38, 0x37, 0x35, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x38, 0x37, 0x36, 0x10, 0x0b, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x38, 0x38, 0x37, 0x37,
-	0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x38, 0x38, 0x37, 0x38, 0x10, 0x0f, 0x2a, 0xc8, 0x01, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x31,
-	0x30, 0x33, 0x32, 0x35, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x30, 0x33, 0x32, 0x36, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x33, 0x32, 0x37, 0x10, 0x01, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x33, 0x32,
-	0x38, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x30, 0x33, 0x32, 0x39, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x33, 0x33, 0x30, 0x10, 0x04, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x33, 0x33, 0x31,
-	0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x30, 0x33, 0x33, 0x32, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x33, 0x33, 0x33, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x33, 0x33, 0x34, 0x10,
-	0x08, 0x2a, 0x20, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x30, 0x33, 0x33, 0x35, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x33, 0x33,
-	0x36, 0x10, 0x00, 0x2a, 0x35, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x30, 0x33, 0x33, 0x37,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30,
-	0x33, 0x33, 0x38, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x30, 0x33, 0x33, 0x39, 0x10, 0x01, 0x2a, 0x85, 0x03, 0x0a, 0x09, 0x45,
-	0x6e, 0x75, 0x6d, 0x31, 0x30, 0x33, 0x39, 0x32, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x33, 0x39, 0x33, 0x10, 0x00, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x33, 0x39, 0x34,
-	0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x30, 0x33, 0x39, 0x35, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x33, 0x39, 0x36, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x33, 0x39, 0x37, 0x10,
-	0x04, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x30, 0x33, 0x39, 0x38, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x33, 0x39, 0x39, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x34, 0x30, 0x30, 0x10, 0x07,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30,
-	0x34, 0x30, 0x31, 0x10, 0x08, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x30, 0x34, 0x30, 0x32, 0x10, 0x0f, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x34, 0x30, 0x33, 0x10, 0x09, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x34,
-	0x30, 0x34, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x30, 0x34, 0x30, 0x35, 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x34, 0x30, 0x36, 0x10, 0x0c, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x34, 0x30,
-	0x37, 0x10, 0x0d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x30, 0x34, 0x30, 0x38, 0x10, 0x0e, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x34, 0x30, 0x39, 0x10, 0x65, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x34, 0x31, 0x30,
-	0x10, 0x66, 0x2a, 0x9f, 0x3e, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x31, 0x31, 0x30, 0x37,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x31, 0x30, 0x38, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x30, 0x39, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x31, 0x30, 0x10, 0x02, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31,
-	0x31, 0x31, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x31, 0x31, 0x32, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x31, 0x33, 0x10, 0x05, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x31,
-	0x34, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x31, 0x31, 0x35, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x31, 0x36, 0x10, 0x08, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x31, 0x37,
-	0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x31, 0x31, 0x38, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x31, 0x39, 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x32, 0x30, 0x10,
-	0x0c, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x31, 0x32, 0x31, 0x10, 0x0d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x32, 0x32, 0x10, 0x0e, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x32, 0x33, 0x10, 0x0f,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x31, 0x32, 0x34, 0x10, 0x10, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x32, 0x35, 0x10, 0x11, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x32, 0x36, 0x10, 0x12, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31,
-	0x32, 0x37, 0x10, 0x13, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x31, 0x32, 0x38, 0x10, 0x14, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x32, 0x39, 0x10, 0x15, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x33,
-	0x30, 0x10, 0x16, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x31, 0x33, 0x31, 0x10, 0x17, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x33, 0x32, 0x10, 0x18, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x33, 0x33,
-	0x10, 0x19, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x31, 0x33, 0x34, 0x10, 0x1a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x33, 0x35, 0x10, 0x1b, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x33, 0x36, 0x10,
-	0x1c, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x31, 0x33, 0x37, 0x10, 0x1d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x33, 0x38, 0x10, 0x1e, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x33, 0x39, 0x10, 0x1f,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x31, 0x34, 0x30, 0x10, 0x20, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x34, 0x31, 0x10, 0x21, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x34, 0x32, 0x10, 0x22, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31,
-	0x34, 0x33, 0x10, 0x23, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x31, 0x34, 0x34, 0x10, 0x24, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x34, 0x35, 0x10, 0x25, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x34,
-	0x36, 0x10, 0x26, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x31, 0x34, 0x37, 0x10, 0x27, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x34, 0x38, 0x10, 0x28, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x34, 0x39,
-	0x10, 0x29, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x31, 0x35, 0x30, 0x10, 0x2a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x35, 0x31, 0x10, 0x2b, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x35, 0x32, 0x10,
-	0x2c, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x31, 0x35, 0x33, 0x10, 0x2d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x35, 0x34, 0x10, 0x2e, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x35, 0x35, 0x10, 0x2f,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x31, 0x35, 0x36, 0x10, 0x30, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x35, 0x37, 0x10, 0x31, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x35, 0x38, 0x10, 0x32, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31,
-	0x35, 0x39, 0x10, 0x33, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x31, 0x36, 0x30, 0x10, 0x34, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x36, 0x31, 0x10, 0x35, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x36,
-	0x32, 0x10, 0x36, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x31, 0x36, 0x33, 0x10, 0x37, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x36, 0x34, 0x10, 0x38, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x36, 0x35,
-	0x10, 0x39, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x31, 0x36, 0x36, 0x10, 0x3a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x36, 0x37, 0x10, 0x3b, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x36, 0x38, 0x10,
-	0x3c, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x31, 0x36, 0x39, 0x10, 0x3d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x37, 0x30, 0x10, 0x3e, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x37, 0x31, 0x10, 0x3f,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x31, 0x37, 0x32, 0x10, 0x40, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x37, 0x33, 0x10, 0x41, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x37, 0x34, 0x10, 0x42, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31,
-	0x37, 0x35, 0x10, 0x43, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x31, 0x37, 0x36, 0x10, 0x44, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x37, 0x37, 0x10, 0x45, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x37,
-	0x38, 0x10, 0x46, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x31, 0x37, 0x39, 0x10, 0x47, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x38, 0x30, 0x10, 0x48, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x38, 0x31,
-	0x10, 0x49, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x31, 0x38, 0x32, 0x10, 0x4a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x38, 0x33, 0x10, 0x4b, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x38, 0x34, 0x10,
-	0x4c, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x31, 0x38, 0x35, 0x10, 0x4d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x38, 0x36, 0x10, 0x4e, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x38, 0x37, 0x10, 0x4f,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x31, 0x38, 0x38, 0x10, 0x50, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x38, 0x39, 0x10, 0x51, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x39, 0x30, 0x10, 0x52, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31,
-	0x39, 0x31, 0x10, 0x53, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x31, 0x39, 0x32, 0x10, 0x54, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x39, 0x33, 0x10, 0x55, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x39,
-	0x34, 0x10, 0x56, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x31, 0x39, 0x35, 0x10, 0x57, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x39, 0x36, 0x10, 0x58, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x39, 0x37,
-	0x10, 0x59, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x31, 0x39, 0x38, 0x10, 0x5a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x39, 0x39, 0x10, 0x5b, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x30, 0x30, 0x10,
-	0x5c, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x32, 0x30, 0x31, 0x10, 0x5d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x30, 0x32, 0x10, 0x5e, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x30, 0x33, 0x10, 0x5f,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x32, 0x30, 0x34, 0x10, 0x60, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x30, 0x35, 0x10, 0x61, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x30, 0x36, 0x10, 0x62, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32,
-	0x30, 0x37, 0x10, 0x63, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x32, 0x30, 0x38, 0x10, 0x64, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x30, 0x39, 0x10, 0x65, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x31,
-	0x30, 0x10, 0x66, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x32, 0x31, 0x31, 0x10, 0x67, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x31, 0x32, 0x10, 0x68, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x31, 0x33,
-	0x10, 0x69, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x32, 0x31, 0x34, 0x10, 0x6a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x31, 0x35, 0x10, 0x6b, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x31, 0x36, 0x10,
-	0x6c, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x32, 0x31, 0x37, 0x10, 0x6d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x31, 0x38, 0x10, 0x6e, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x31, 0x39, 0x10, 0x6f,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x32, 0x32, 0x30, 0x10, 0x70, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x32, 0x31, 0x10, 0x71, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x32, 0x32, 0x10, 0x72, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32,
-	0x32, 0x33, 0x10, 0x73, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x32, 0x32, 0x34, 0x10, 0x74, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x32, 0x35, 0x10, 0x75, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x32,
-	0x36, 0x10, 0x76, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x32, 0x32, 0x37, 0x10, 0x77, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x32, 0x38, 0x10, 0x78, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x32, 0x39,
-	0x10, 0x79, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x32, 0x33, 0x30, 0x10, 0x7a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x33, 0x31, 0x10, 0x7b, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x33, 0x32, 0x10,
-	0x7c, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x32, 0x33, 0x33, 0x10, 0x7d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x33, 0x34, 0x10, 0x7e, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x33, 0x35, 0x10, 0x7f,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x32, 0x33, 0x36, 0x10, 0x80, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x33, 0x37, 0x10, 0x81, 0x01, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x33, 0x38, 0x10,
-	0x82, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x32, 0x33, 0x39, 0x10, 0x83, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x34, 0x30, 0x10, 0x84, 0x01, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x34,
-	0x31, 0x10, 0x85, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x32, 0x34, 0x32, 0x10, 0x86, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x34, 0x33, 0x10, 0x87, 0x01,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x32, 0x34, 0x34, 0x10, 0x88, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x34, 0x35, 0x10, 0x89, 0x01, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x34, 0x36, 0x10,
-	0x8a, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x32, 0x34, 0x37, 0x10, 0x8b, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x34, 0x38, 0x10, 0x8c, 0x01, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x34,
-	0x39, 0x10, 0x8d, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x32, 0x35, 0x30, 0x10, 0x8e, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x35, 0x31, 0x10, 0x8f, 0x01,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x32, 0x35, 0x32, 0x10, 0x90, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x35, 0x33, 0x10, 0x91, 0x01, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x35, 0x34, 0x10,
-	0x92, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x32, 0x35, 0x35, 0x10, 0x93, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x35, 0x36, 0x10, 0x94, 0x01, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x35,
-	0x37, 0x10, 0x95, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x32, 0x35, 0x38, 0x10, 0x96, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x35, 0x39, 0x10, 0x97, 0x01,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x32, 0x36, 0x30, 0x10, 0x98, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x36, 0x31, 0x10, 0x99, 0x01, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x36, 0x32, 0x10,
-	0x9a, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x32, 0x36, 0x33, 0x10, 0x9b, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x36, 0x34, 0x10, 0x9c, 0x01, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x36,
-	0x35, 0x10, 0x9d, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x32, 0x36, 0x36, 0x10, 0x9e, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x36, 0x37, 0x10, 0x9f, 0x01,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x32, 0x36, 0x38, 0x10, 0xa0, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x36, 0x39, 0x10, 0xa1, 0x01, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x37, 0x30, 0x10,
-	0xa3, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x32, 0x37, 0x31, 0x10, 0xa4, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x37, 0x32, 0x10, 0xa5, 0x01, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x37,
-	0x33, 0x10, 0xa6, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x32, 0x37, 0x34, 0x10, 0xa7, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x37, 0x35, 0x10, 0xa8, 0x01,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x32, 0x37, 0x36, 0x10, 0xa9, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x37, 0x37, 0x10, 0xaa, 0x01, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x37, 0x38, 0x10,
-	0xab, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x32, 0x37, 0x39, 0x10, 0xac, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x38, 0x30, 0x10, 0xad, 0x01, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x38,
-	0x31, 0x10, 0xae, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x32, 0x38, 0x32, 0x10, 0xaf, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x38, 0x33, 0x10, 0xb0, 0x01,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x32, 0x38, 0x34, 0x10, 0xb1, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x38, 0x35, 0x10, 0xb2, 0x01, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x38, 0x36, 0x10,
-	0xb3, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x32, 0x38, 0x37, 0x10, 0xb4, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x38, 0x38, 0x10, 0xb5, 0x01, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x38,
-	0x39, 0x10, 0xb6, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x32, 0x39, 0x30, 0x10, 0xb7, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x39, 0x31, 0x10, 0xb8, 0x01,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x32, 0x39, 0x32, 0x10, 0xb9, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x39, 0x33, 0x10, 0xbb, 0x01, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x39, 0x34, 0x10,
-	0xbc, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x32, 0x39, 0x35, 0x10, 0xbd, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x39, 0x36, 0x10, 0xbe, 0x01, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x39,
-	0x37, 0x10, 0xbf, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x32, 0x39, 0x38, 0x10, 0xc0, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x32, 0x39, 0x39, 0x10, 0xc1, 0x01,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x33, 0x30, 0x30, 0x10, 0xc2, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x30, 0x31, 0x10, 0xc3, 0x01, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x30, 0x32, 0x10,
-	0xc4, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x33, 0x30, 0x33, 0x10, 0xc5, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x30, 0x34, 0x10, 0xc6, 0x01, 0x12, 0x15,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x30,
-	0x35, 0x10, 0xff, 0xff, 0x03, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x30, 0x36, 0x10, 0x80, 0x80, 0x04, 0x12, 0x15, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x30, 0x37, 0x10,
-	0x81, 0x80, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x33, 0x30, 0x38, 0x10, 0x82, 0x80, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x30, 0x39, 0x10, 0x83, 0x80,
-	0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x33, 0x31, 0x30, 0x10, 0x84, 0x80, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x31, 0x31, 0x10, 0x85, 0x80, 0x04, 0x12,
-	0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33,
-	0x31, 0x32, 0x10, 0x86, 0x80, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x31, 0x33, 0x10, 0x87, 0x80, 0x04, 0x12, 0x15, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x31, 0x34,
-	0x10, 0x88, 0x80, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x33, 0x31, 0x35, 0x10, 0x89, 0x80, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x31, 0x36, 0x10, 0x8a,
-	0x80, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x33, 0x31, 0x37, 0x10, 0x8b, 0x80, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x31, 0x38, 0x10, 0x8c, 0x80, 0x04,
-	0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x33, 0x31, 0x39, 0x10, 0x8d, 0x80, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x32, 0x30, 0x10, 0x8e, 0x80, 0x04, 0x12, 0x15,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x32,
-	0x31, 0x10, 0x8f, 0x80, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x32, 0x32, 0x10, 0x90, 0x80, 0x04, 0x12, 0x15, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x32, 0x33, 0x10,
-	0x91, 0x80, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x33, 0x32, 0x34, 0x10, 0x92, 0x80, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x32, 0x35, 0x10, 0x93, 0x80,
-	0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x33, 0x32, 0x36, 0x10, 0x94, 0x80, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x32, 0x37, 0x10, 0x95, 0x80, 0x04, 0x12,
-	0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33,
-	0x32, 0x38, 0x10, 0x96, 0x80, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x32, 0x39, 0x10, 0x97, 0x80, 0x04, 0x12, 0x15, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x33, 0x30,
-	0x10, 0x98, 0x80, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x33, 0x33, 0x31, 0x10, 0x99, 0x80, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x33, 0x32, 0x10, 0x9a,
-	0x80, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x33, 0x33, 0x33, 0x10, 0x9b, 0x80, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x33, 0x34, 0x10, 0x80, 0xa0, 0x04,
-	0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x33, 0x33, 0x35, 0x10, 0x81, 0xa0, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x33, 0x36, 0x10, 0x82, 0xa0, 0x04, 0x12, 0x15,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x33,
-	0x37, 0x10, 0x83, 0xa0, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x33, 0x38, 0x10, 0x84, 0xa0, 0x04, 0x12, 0x15, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x33, 0x39, 0x10,
-	0x85, 0xa0, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x33, 0x34, 0x30, 0x10, 0x86, 0xa0, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x34, 0x31, 0x10, 0x87, 0xa0,
-	0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x33, 0x34, 0x32, 0x10, 0x88, 0xa0, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x34, 0x33, 0x10, 0x89, 0xa0, 0x04, 0x12,
-	0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33,
-	0x34, 0x34, 0x10, 0x8a, 0xa0, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x34, 0x35, 0x10, 0x8b, 0xa0, 0x04, 0x12, 0x15, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x34, 0x36,
-	0x10, 0x8c, 0xa0, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x33, 0x34, 0x37, 0x10, 0x8d, 0xa0, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x34, 0x38, 0x10, 0x8e,
-	0xa0, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x33, 0x34, 0x39, 0x10, 0x8f, 0xa0, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x35, 0x30, 0x10, 0x90, 0xa0, 0x04,
-	0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x33, 0x35, 0x31, 0x10, 0x91, 0xa0, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x35, 0x32, 0x10, 0x92, 0xa0, 0x04, 0x12, 0x15,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x35,
-	0x33, 0x10, 0x93, 0xa0, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x35, 0x34, 0x10, 0x94, 0xa0, 0x04, 0x12, 0x15, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x35, 0x35, 0x10,
-	0x95, 0xa0, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x33, 0x35, 0x36, 0x10, 0x96, 0xa0, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x35, 0x37, 0x10, 0x97, 0xa0,
-	0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x33, 0x35, 0x38, 0x10, 0x98, 0xa0, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x35, 0x39, 0x10, 0x99, 0xa0, 0x04, 0x12,
-	0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33,
-	0x36, 0x30, 0x10, 0x9a, 0xa0, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x36, 0x31, 0x10, 0x9b, 0xa0, 0x04, 0x12, 0x15, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x36, 0x32,
-	0x10, 0x9c, 0xa0, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x33, 0x36, 0x33, 0x10, 0x9d, 0xa0, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x36, 0x34, 0x10, 0x9e,
-	0xa0, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x33, 0x36, 0x35, 0x10, 0x80, 0xc0, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x36, 0x36, 0x10, 0x81, 0xc0, 0x04,
-	0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x33, 0x36, 0x37, 0x10, 0x80, 0xe0, 0x04, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x36, 0x38, 0x10, 0x81, 0xe0, 0x04, 0x12, 0x15,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x36,
-	0x39, 0x10, 0x80, 0x80, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x37, 0x30, 0x10, 0x81, 0x80, 0x05, 0x12, 0x15, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x37, 0x31, 0x10,
-	0x82, 0x80, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x33, 0x37, 0x32, 0x10, 0x83, 0x80, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x37, 0x33, 0x10, 0x80, 0xa0,
-	0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x33, 0x37, 0x34, 0x10, 0x81, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x37, 0x35, 0x10, 0x82, 0xa0, 0x05, 0x12,
-	0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33,
-	0x37, 0x36, 0x10, 0x83, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x37, 0x37, 0x10, 0x84, 0xa0, 0x05, 0x12, 0x15, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x37, 0x38,
-	0x10, 0x85, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x33, 0x37, 0x39, 0x10, 0x86, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x38, 0x30, 0x10, 0x87,
-	0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x33, 0x38, 0x31, 0x10, 0x88, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x38, 0x32, 0x10, 0x89, 0xa0, 0x05,
-	0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x33, 0x38, 0x33, 0x10, 0x8a, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x38, 0x34, 0x10, 0x8b, 0xa0, 0x05, 0x12, 0x15,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x38,
-	0x35, 0x10, 0x8c, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x38, 0x36, 0x10, 0x8d, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x38, 0x37, 0x10,
-	0x8e, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x33, 0x38, 0x38, 0x10, 0x8f, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x38, 0x39, 0x10, 0x90, 0xa0,
-	0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x33, 0x39, 0x30, 0x10, 0x91, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x39, 0x31, 0x10, 0x92, 0xa0, 0x05, 0x12,
-	0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33,
-	0x39, 0x32, 0x10, 0x93, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x39, 0x33, 0x10, 0x94, 0xa0, 0x05, 0x12, 0x15, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x39, 0x34,
-	0x10, 0x95, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x33, 0x39, 0x35, 0x10, 0x96, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x39, 0x36, 0x10, 0x97,
-	0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x33, 0x39, 0x37, 0x10, 0x98, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x33, 0x39, 0x38, 0x10, 0x99, 0xa0, 0x05,
-	0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x33, 0x39, 0x39, 0x10, 0x9a, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x30, 0x30, 0x10, 0x9b, 0xa0, 0x05, 0x12, 0x15,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x30,
-	0x31, 0x10, 0x9c, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x30, 0x32, 0x10, 0x9d, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x30, 0x33, 0x10,
-	0x9e, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x34, 0x30, 0x34, 0x10, 0x9f, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x30, 0x35, 0x10, 0xa0, 0xa0,
-	0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x34, 0x30, 0x36, 0x10, 0xa1, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x30, 0x37, 0x10, 0xa2, 0xa0, 0x05, 0x12,
-	0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34,
-	0x30, 0x38, 0x10, 0xa3, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x30, 0x39, 0x10, 0xa4, 0xa0, 0x05, 0x12, 0x15, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x31, 0x30,
-	0x10, 0xa5, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x34, 0x31, 0x31, 0x10, 0xa6, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x31, 0x32, 0x10, 0xa7,
-	0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x34, 0x31, 0x33, 0x10, 0xa8, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x31, 0x34, 0x10, 0xa9, 0xa0, 0x05,
-	0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x34, 0x31, 0x35, 0x10, 0xaa, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x31, 0x36, 0x10, 0xab, 0xa0, 0x05, 0x12, 0x15,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x31,
-	0x37, 0x10, 0xac, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x31, 0x38, 0x10, 0xad, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x31, 0x39, 0x10,
-	0xae, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x34, 0x32, 0x30, 0x10, 0xaf, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x32, 0x31, 0x10, 0xb0, 0xa0,
-	0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x34, 0x32, 0x32, 0x10, 0xb1, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x32, 0x33, 0x10, 0xb2, 0xa0, 0x05, 0x12,
-	0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34,
-	0x32, 0x34, 0x10, 0xb3, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x32, 0x35, 0x10, 0xb4, 0xa0, 0x05, 0x12, 0x15, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x32, 0x36,
-	0x10, 0xb5, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x34, 0x32, 0x37, 0x10, 0xb6, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x32, 0x38, 0x10, 0xb7,
-	0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x34, 0x32, 0x39, 0x10, 0xb8, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x33, 0x30, 0x10, 0xb9, 0xa0, 0x05,
-	0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x34, 0x33, 0x31, 0x10, 0xba, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x33, 0x32, 0x10, 0xbd, 0xa0, 0x05, 0x12, 0x15,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x33,
-	0x33, 0x10, 0xbe, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x33, 0x34, 0x10, 0xbf, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x33, 0x35, 0x10,
-	0xc0, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x34, 0x33, 0x36, 0x10, 0xc1, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x33, 0x37, 0x10, 0xc2, 0xa0,
-	0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x34, 0x33, 0x38, 0x10, 0xc3, 0xa0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x33, 0x39, 0x10, 0xc4, 0xa0, 0x05, 0x12,
-	0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34,
-	0x34, 0x30, 0x10, 0x80, 0xc0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x34, 0x31, 0x10, 0x80, 0xe0, 0x05, 0x12, 0x15, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x34, 0x32,
-	0x10, 0x81, 0xe0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x34, 0x34, 0x33, 0x10, 0x82, 0xe0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x34, 0x34, 0x10, 0x83,
-	0xe0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x34, 0x34, 0x35, 0x10, 0x84, 0xe0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x34, 0x36, 0x10, 0x85, 0xe0, 0x05,
-	0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x34, 0x34, 0x37, 0x10, 0x86, 0xe0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x34, 0x38, 0x10, 0x87, 0xe0, 0x05, 0x12, 0x15,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x34,
-	0x39, 0x10, 0x88, 0xe0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x35, 0x30, 0x10, 0x89, 0xe0, 0x05, 0x12, 0x15, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x35, 0x31, 0x10,
-	0x8a, 0xe0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x34, 0x35, 0x32, 0x10, 0x8b, 0xe0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x35, 0x33, 0x10, 0x8c, 0xe0,
-	0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x34, 0x35, 0x34, 0x10, 0x8d, 0xe0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x35, 0x35, 0x10, 0x8e, 0xe0, 0x05, 0x12,
-	0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34,
-	0x35, 0x36, 0x10, 0x8f, 0xe0, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x35, 0x37, 0x10, 0x90, 0xe0, 0x05, 0x12, 0x15, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x35, 0x38,
-	0x10, 0x80, 0x80, 0x06, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x34, 0x35, 0x39, 0x10, 0x81, 0x80, 0x06, 0x12, 0x15, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x36, 0x30, 0x10, 0x82,
-	0x80, 0x06, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x34, 0x36, 0x31, 0x10, 0x83, 0x80, 0x06, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x36, 0x32, 0x10, 0x84, 0x80, 0x06,
-	0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x34, 0x36, 0x33, 0x10, 0x80, 0xa0, 0x06, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x36, 0x34, 0x10, 0x80, 0x80, 0x08, 0x12, 0x15,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x36,
-	0x35, 0x10, 0x81, 0x80, 0x08, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x36, 0x36, 0x10, 0x80, 0xa0, 0x08, 0x12, 0x16, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x36, 0x37, 0x10,
-	0x93, 0x92, 0xc0, 0x04, 0x2a, 0xff, 0x1f, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x31, 0x35,
-	0x34, 0x31, 0x12, 0x1c, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x35, 0x34, 0x32, 0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x35, 0x34, 0x33, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x34, 0x34, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x34, 0x35, 0x10, 0x02, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35,
-	0x34, 0x36, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x35, 0x34, 0x37, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x34, 0x38, 0x10, 0x05, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x34,
-	0x39, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x35, 0x35, 0x30, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x35, 0x31, 0x10, 0x08, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x35, 0x32,
-	0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x35, 0x35, 0x33, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x35, 0x34, 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x35, 0x35, 0x10,
-	0x0c, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x35, 0x35, 0x36, 0x10, 0x0d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x35, 0x37, 0x10, 0x0e, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x35, 0x38, 0x10, 0x0f,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x35, 0x35, 0x39, 0x10, 0x10, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x36, 0x30, 0x10, 0x11, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x36, 0x31, 0x10, 0x12, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35,
-	0x36, 0x32, 0x10, 0x13, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x35, 0x36, 0x33, 0x10, 0x14, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x36, 0x34, 0x10, 0x15, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x36,
-	0x35, 0x10, 0x16, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x35, 0x36, 0x36, 0x10, 0x17, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x36, 0x37, 0x10, 0x18, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x36, 0x38,
-	0x10, 0x19, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x35, 0x36, 0x39, 0x10, 0x1a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x37, 0x30, 0x10, 0x1b, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x37, 0x31, 0x10,
-	0x1c, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x35, 0x37, 0x32, 0x10, 0x1d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x37, 0x33, 0x10, 0x1e, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x37, 0x34, 0x10, 0x1f,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x35, 0x37, 0x35, 0x10, 0x20, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x37, 0x36, 0x10, 0x21, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x37, 0x37, 0x10, 0x22, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35,
-	0x37, 0x38, 0x10, 0x23, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x35, 0x37, 0x39, 0x10, 0x24, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x38, 0x30, 0x10, 0x25, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x38,
-	0x31, 0x10, 0x26, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x35, 0x38, 0x32, 0x10, 0x27, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x38, 0x33, 0x10, 0x28, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x38, 0x34,
-	0x10, 0x29, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x35, 0x38, 0x35, 0x10, 0x2a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x38, 0x36, 0x10, 0x2b, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x38, 0x37, 0x10,
-	0x2c, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x35, 0x38, 0x38, 0x10, 0x2d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x38, 0x39, 0x10, 0x2e, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x39, 0x30, 0x10, 0x2f,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x35, 0x39, 0x31, 0x10, 0x30, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x39, 0x32, 0x10, 0x31, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x39, 0x33, 0x10, 0x32, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35,
-	0x39, 0x34, 0x10, 0x33, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x35, 0x39, 0x35, 0x10, 0x34, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x39, 0x36, 0x10, 0x35, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x39,
-	0x37, 0x10, 0x36, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x35, 0x39, 0x38, 0x10, 0x37, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x35, 0x39, 0x39, 0x10, 0x38, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x30, 0x30,
-	0x10, 0x39, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x36, 0x30, 0x31, 0x10, 0x3a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x30, 0x32, 0x10, 0x3b, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x30, 0x33, 0x10,
-	0x3c, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x36, 0x30, 0x34, 0x10, 0x3d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x30, 0x35, 0x10, 0x3e, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x30, 0x36, 0x10, 0x3f,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x36, 0x30, 0x37, 0x10, 0x40, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x30, 0x38, 0x10, 0x41, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x30, 0x39, 0x10, 0x42, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36,
-	0x31, 0x30, 0x10, 0x43, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x36, 0x31, 0x31, 0x10, 0x44, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x31, 0x32, 0x10, 0x45, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x31,
-	0x33, 0x10, 0x46, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x36, 0x31, 0x34, 0x10, 0x47, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x31, 0x35, 0x10, 0x48, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x31, 0x36,
-	0x10, 0x49, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x36, 0x31, 0x37, 0x10, 0x4a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x31, 0x38, 0x10, 0x4b, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x31, 0x39, 0x10,
-	0x4c, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x36, 0x32, 0x30, 0x10, 0x4d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x32, 0x31, 0x10, 0x4e, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x32, 0x32, 0x10, 0x4f,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x36, 0x32, 0x33, 0x10, 0x50, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x32, 0x34, 0x10, 0x51, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x32, 0x35, 0x10, 0x52, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36,
-	0x32, 0x36, 0x10, 0x53, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x36, 0x32, 0x37, 0x10, 0x54, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x32, 0x38, 0x10, 0x55, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x32,
-	0x39, 0x10, 0x56, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x36, 0x33, 0x30, 0x10, 0x57, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x33, 0x31, 0x10, 0x58, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x33, 0x32,
-	0x10, 0x59, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x36, 0x33, 0x33, 0x10, 0x5a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x33, 0x34, 0x10, 0x5b, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x33, 0x35, 0x10,
-	0x5c, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x36, 0x33, 0x36, 0x10, 0x5d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x33, 0x37, 0x10, 0x5e, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x33, 0x38, 0x10, 0x5f,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x36, 0x33, 0x39, 0x10, 0x60, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x34, 0x30, 0x10, 0x61, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x34, 0x31, 0x10, 0x62, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36,
-	0x34, 0x32, 0x10, 0x63, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x36, 0x34, 0x33, 0x10, 0x64, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x34, 0x34, 0x10, 0x65, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x34,
-	0x35, 0x10, 0x66, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x36, 0x34, 0x36, 0x10, 0x67, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x34, 0x37, 0x10, 0x68, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x34, 0x38,
-	0x10, 0x69, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x36, 0x34, 0x39, 0x10, 0x6a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x35, 0x30, 0x10, 0x6b, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x35, 0x31, 0x10,
-	0x6c, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x36, 0x35, 0x32, 0x10, 0x6d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x35, 0x33, 0x10, 0x6e, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x35, 0x34, 0x10, 0x6f,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x36, 0x35, 0x35, 0x10, 0x70, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x35, 0x36, 0x10, 0x71, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x35, 0x37, 0x10, 0x72, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36,
-	0x35, 0x38, 0x10, 0x73, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x36, 0x35, 0x39, 0x10, 0x74, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x36, 0x30, 0x10, 0x75, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x36,
-	0x31, 0x10, 0x76, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x36, 0x36, 0x32, 0x10, 0x77, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x36, 0x33, 0x10, 0x78, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x36, 0x34,
-	0x10, 0x79, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x36, 0x36, 0x35, 0x10, 0x7a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x36, 0x36, 0x10, 0x7b, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x36, 0x37, 0x10,
-	0x7c, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x36, 0x36, 0x38, 0x10, 0x7d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x36, 0x39, 0x10, 0x7e, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x37, 0x30, 0x10, 0x7f,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x36, 0x37, 0x31, 0x10, 0x80, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x37, 0x32, 0x10, 0x81, 0x01, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x37, 0x33, 0x10,
-	0x82, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x36, 0x37, 0x34, 0x10, 0x83, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x37, 0x35, 0x10, 0x84, 0x01, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x37,
-	0x36, 0x10, 0x85, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x36, 0x37, 0x37, 0x10, 0x86, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x37, 0x38, 0x10, 0x87, 0x01,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x36, 0x37, 0x39, 0x10, 0x88, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x38, 0x30, 0x10, 0x89, 0x01, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x38, 0x31, 0x10,
-	0x8a, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x36, 0x38, 0x32, 0x10, 0x8b, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x38, 0x33, 0x10, 0x8c, 0x01, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x38,
-	0x34, 0x10, 0x8d, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x36, 0x38, 0x35, 0x10, 0x8e, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x38, 0x36, 0x10, 0x8f, 0x01,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x36, 0x38, 0x37, 0x10, 0x90, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x38, 0x38, 0x10, 0x91, 0x01, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x38, 0x39, 0x10,
-	0x92, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x36, 0x39, 0x30, 0x10, 0x93, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x39, 0x31, 0x10, 0x94, 0x01, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x39,
-	0x32, 0x10, 0x95, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x36, 0x39, 0x33, 0x10, 0x96, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x39, 0x34, 0x10, 0x97, 0x01,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x36, 0x39, 0x35, 0x10, 0x98, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x39, 0x36, 0x10, 0x99, 0x01, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x39, 0x37, 0x10,
-	0x9a, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x36, 0x39, 0x38, 0x10, 0x9b, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x36, 0x39, 0x39, 0x10, 0x9c, 0x01, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x37, 0x30,
-	0x30, 0x10, 0x9d, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x37, 0x30, 0x31, 0x10, 0x9e, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x37, 0x30, 0x32, 0x10, 0x9f, 0x01,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x37, 0x30, 0x33, 0x10, 0xa0, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x37, 0x30, 0x34, 0x10, 0xa1, 0x01, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x37, 0x30, 0x35, 0x10,
-	0xa2, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x37, 0x30, 0x36, 0x10, 0xa3, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x37, 0x30, 0x37, 0x10, 0xa4, 0x01, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x37, 0x30,
-	0x38, 0x10, 0xa5, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x37, 0x30, 0x39, 0x10, 0xa6, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x37, 0x31, 0x30, 0x10, 0xa7, 0x01,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x37, 0x31, 0x31, 0x10, 0xa8, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x37, 0x31, 0x32, 0x10, 0xa9, 0x01, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x37, 0x31, 0x33, 0x10,
-	0xaa, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x37, 0x31, 0x34, 0x10, 0xab, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x37, 0x31, 0x35, 0x10, 0xac, 0x01, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x37, 0x31,
-	0x36, 0x10, 0xad, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x37, 0x31, 0x37, 0x10, 0xae, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x37, 0x31, 0x38, 0x10, 0xaf, 0x01,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x37, 0x31, 0x39, 0x10, 0xb0, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x37, 0x32, 0x30, 0x10, 0xb1, 0x01, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x37, 0x32, 0x31, 0x10,
-	0xb2, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x37, 0x32, 0x32, 0x10, 0xb3, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x37, 0x32, 0x33, 0x10, 0xb4, 0x01, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x37, 0x32,
-	0x34, 0x10, 0xb5, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x37, 0x32, 0x35, 0x10, 0xb6, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x37, 0x32, 0x36, 0x10, 0xb7, 0x01,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x37, 0x32, 0x37, 0x10, 0xb8, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x37, 0x32, 0x38, 0x10, 0xb9, 0x01, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x37, 0x32, 0x39, 0x10,
-	0xba, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x37, 0x33, 0x30, 0x10, 0xbb, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x37, 0x33, 0x31, 0x10, 0xbc, 0x01, 0x12, 0x16,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x37, 0x33,
-	0x32, 0x10, 0xff, 0xff, 0xff, 0x07, 0x2a, 0x94, 0x04, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x31,
-	0x31, 0x34, 0x36, 0x38, 0x12, 0x1c, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x34, 0x36, 0x39, 0x10, 0x9d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-	0xff, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x34, 0x37, 0x30, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x37, 0x31, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x37, 0x32, 0x10,
-	0x02, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x34, 0x37, 0x33, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x37, 0x34, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x37, 0x35, 0x10, 0x1c,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x34, 0x37, 0x36, 0x10, 0x16, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x37, 0x37, 0x10, 0x26, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x37, 0x38, 0x10, 0x80, 0x04,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x34, 0x37, 0x39, 0x10, 0x80, 0x10, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x38, 0x30, 0x10, 0x42, 0x12, 0x14, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x38, 0x31, 0x10, 0xc2,
-	0x04, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x34, 0x38, 0x32, 0x10, 0x4d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x38, 0x33, 0x10, 0x58, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x38, 0x34, 0x10, 0x64,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x34, 0x38, 0x35, 0x10, 0x6e, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x38, 0x36, 0x10, 0xee, 0x10, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x38, 0x37, 0x10, 0x7a,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x34, 0x38, 0x38, 0x10, 0xfa, 0x10, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x38, 0x39, 0x10, 0x90, 0x01, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x39, 0x30, 0x10,
-	0xf4, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x34, 0x39, 0x31, 0x10, 0xf4, 0x11, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x34, 0x39, 0x32, 0x10, 0x2c, 0x2a, 0xef, 0x0d,
-	0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x31, 0x30, 0x32, 0x32, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x32, 0x33, 0x10, 0x00,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x30, 0x32, 0x34, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x32, 0x35, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x32, 0x36, 0x10, 0x03, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30,
-	0x32, 0x37, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x30, 0x32, 0x38, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x32, 0x39, 0x10, 0x06, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x33,
-	0x30, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x30, 0x33, 0x31, 0x10, 0x08, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x33, 0x32, 0x10, 0x09, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x33, 0x33,
-	0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x30, 0x33, 0x34, 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x33, 0x35, 0x10, 0x0c, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x33, 0x36, 0x10,
-	0x0d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x30, 0x33, 0x37, 0x10, 0x0e, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x33, 0x38, 0x10, 0x0f, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x33, 0x39, 0x10, 0x10,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x30, 0x34, 0x30, 0x10, 0x11, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x34, 0x31, 0x10, 0x12, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x34, 0x32, 0x10, 0x13, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30,
-	0x34, 0x33, 0x10, 0x14, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x30, 0x34, 0x34, 0x10, 0x15, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x34, 0x35, 0x10, 0x16, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x34,
-	0x36, 0x10, 0x17, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x30, 0x34, 0x37, 0x10, 0x18, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x34, 0x38, 0x10, 0x19, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x34, 0x39,
-	0x10, 0x1a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x30, 0x35, 0x30, 0x10, 0x1b, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x35, 0x31, 0x10, 0x1c, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x35, 0x32, 0x10,
-	0x1d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x30, 0x35, 0x33, 0x10, 0x1e, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x35, 0x34, 0x10, 0x1f, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x35, 0x35, 0x10, 0x20,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x30, 0x35, 0x36, 0x10, 0x21, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x35, 0x37, 0x10, 0x22, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x35, 0x38, 0x10, 0x23, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30,
-	0x35, 0x39, 0x10, 0x24, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x30, 0x36, 0x30, 0x10, 0x25, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x36, 0x31, 0x10, 0x26, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x36,
-	0x32, 0x10, 0x27, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x30, 0x36, 0x33, 0x10, 0x28, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x36, 0x34, 0x10, 0x29, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x36, 0x35,
-	0x10, 0x2a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x30, 0x36, 0x36, 0x10, 0x2b, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x36, 0x37, 0x10, 0x2c, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x36, 0x38, 0x10,
-	0x2d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x30, 0x36, 0x39, 0x10, 0x2e, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x37, 0x30, 0x10, 0x2f, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x37, 0x31, 0x10, 0x30,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x30, 0x37, 0x32, 0x10, 0x31, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x37, 0x33, 0x10, 0x32, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x37, 0x34, 0x10, 0x33, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30,
-	0x37, 0x35, 0x10, 0x34, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x30, 0x37, 0x36, 0x10, 0x35, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x37, 0x37, 0x10, 0x36, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x37,
-	0x38, 0x10, 0x37, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x30, 0x37, 0x39, 0x10, 0x38, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x38, 0x30, 0x10, 0x39, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x38, 0x31,
-	0x10, 0x3a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x30, 0x38, 0x32, 0x10, 0x3b, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x38, 0x33, 0x10, 0x3c, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x38, 0x34, 0x10,
-	0x3d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x30, 0x38, 0x35, 0x10, 0x3e, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x38, 0x36, 0x10, 0x3f, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x38, 0x37, 0x10, 0x40,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x30, 0x38, 0x38, 0x10, 0x41, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x38, 0x39, 0x10, 0x42, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x39, 0x30, 0x10, 0x43, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30,
-	0x39, 0x31, 0x10, 0x44, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x30, 0x39, 0x32, 0x10, 0x45, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x39, 0x33, 0x10, 0x46, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x39,
-	0x34, 0x10, 0x47, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x31, 0x30, 0x39, 0x35, 0x10, 0x48, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x39, 0x36, 0x10, 0x49, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x39, 0x37,
-	0x10, 0x4a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x31, 0x30, 0x39, 0x38, 0x10, 0x4b, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x30, 0x39, 0x39, 0x10, 0x4c, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x30, 0x30, 0x10,
-	0x4d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x31, 0x31, 0x30, 0x31, 0x10, 0x4e, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x30, 0x32, 0x10, 0x4f, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x30, 0x33, 0x10, 0x50,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31,
-	0x31, 0x30, 0x34, 0x10, 0x51, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x30, 0x35, 0x10, 0x52, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x31, 0x30, 0x36, 0x10, 0x53, 0x2a,
-	0x4a, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x32, 0x36, 0x37, 0x30, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x32, 0x36, 0x37, 0x31, 0x10,
-	0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x32, 0x36, 0x37, 0x32, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x32, 0x36, 0x37, 0x33, 0x10, 0x02, 0x2a, 0x89, 0x01, 0x0a, 0x09,
-	0x45, 0x6e, 0x75, 0x6d, 0x31, 0x32, 0x38, 0x37, 0x31, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x32, 0x38, 0x37, 0x32, 0x10, 0x01, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x32, 0x38, 0x37,
-	0x33, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x32, 0x38, 0x37, 0x34, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x32, 0x38, 0x37, 0x35, 0x10, 0x04, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x32, 0x38, 0x37, 0x36,
-	0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x32, 0x38, 0x37, 0x37, 0x10, 0x06, 0x2a, 0x4a, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x31,
-	0x33, 0x30, 0x39, 0x32, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x33, 0x30, 0x39, 0x33, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x33, 0x30, 0x39, 0x34, 0x10, 0x02, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x33, 0x30, 0x39,
-	0x35, 0x10, 0x03, 0x2a, 0x5f, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x33, 0x31, 0x34, 0x36,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x33,
-	0x31, 0x34, 0x37, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x33, 0x31, 0x34, 0x38, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x33, 0x31, 0x34, 0x39, 0x10, 0x02, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x33, 0x31,
-	0x35, 0x30, 0x10, 0x03, 0x2a, 0xe3, 0x3e, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x36, 0x30,
-	0x34, 0x32, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x30, 0x34, 0x33, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x34, 0x34, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x34, 0x35, 0x10,
-	0x11, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x30, 0x34, 0x36, 0x10, 0x91, 0x02, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x34, 0x37, 0x10, 0x92, 0x02, 0x12, 0x14, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x34, 0x38,
-	0x10, 0xa1, 0x22, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x30, 0x34, 0x39, 0x10, 0xa2, 0x22, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x35, 0x30, 0x10, 0xa3, 0x22, 0x12,
-	0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30,
-	0x35, 0x31, 0x10, 0xa4, 0x22, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x35, 0x32, 0x10, 0xa5, 0x22, 0x12, 0x14, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x35, 0x33, 0x10, 0xa6,
-	0x22, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x30, 0x35, 0x34, 0x10, 0xa7, 0x22, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x35, 0x35, 0x10, 0xa8, 0x22, 0x12, 0x14, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x35, 0x36,
-	0x10, 0xa9, 0x22, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x30, 0x35, 0x37, 0x10, 0x94, 0x02, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x35, 0x38, 0x10, 0x95, 0x02, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30,
-	0x35, 0x39, 0x10, 0x12, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x30, 0x36, 0x30, 0x10, 0xa1, 0x02, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x36, 0x31, 0x10, 0xa3, 0x02,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36,
-	0x30, 0x36, 0x32, 0x10, 0xb1, 0x24, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x36, 0x33, 0x10, 0x91, 0xc6, 0x04, 0x12, 0x14, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x36, 0x34,
-	0x10, 0xb2, 0x24, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x30, 0x36, 0x35, 0x10, 0xb3, 0x24, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x36, 0x36, 0x10, 0xb4, 0x24, 0x12,
-	0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30,
-	0x36, 0x37, 0x10, 0xb5, 0x24, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x36, 0x38, 0x10, 0xb6, 0x24, 0x12, 0x14, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x36, 0x39, 0x10, 0xb7,
-	0x24, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x30, 0x37, 0x30, 0x10, 0xb8, 0x24, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x37, 0x31, 0x10, 0xa4, 0x02, 0x12, 0x14, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x37, 0x32,
-	0x10, 0xc1, 0x24, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x30, 0x37, 0x33, 0x10, 0xc2, 0x24, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x37, 0x34, 0x10, 0xa5, 0x02, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30,
-	0x37, 0x35, 0x10, 0x13, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x30, 0x37, 0x36, 0x10, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x37, 0x37, 0x10, 0xc1, 0x02, 0x12,
-	0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30,
-	0x37, 0x38, 0x10, 0x91, 0x28, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x37, 0x39, 0x10, 0x92, 0x28, 0x12, 0x14, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x38, 0x30, 0x10, 0x93,
-	0x28, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x30, 0x38, 0x31, 0x10, 0x94, 0x28, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x38, 0x32, 0x10, 0x95, 0x28, 0x12, 0x14, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x38, 0x33,
-	0x10, 0x96, 0x28, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x30, 0x38, 0x34, 0x10, 0xe1, 0x82, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x38, 0x35, 0x10, 0xe2, 0x82,
-	0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x30, 0x38, 0x36, 0x10, 0xe3, 0x82, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x38, 0x37, 0x10, 0xe4, 0x82, 0x05, 0x12,
-	0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30,
-	0x38, 0x38, 0x10, 0xe5, 0x82, 0x05, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x38, 0x39, 0x10, 0xe6, 0x82, 0x05, 0x12, 0x14, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x39, 0x30,
-	0x10, 0x97, 0x28, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x30, 0x39, 0x31, 0x10, 0x98, 0x28, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x39, 0x32, 0x10, 0x99, 0x28, 0x12,
-	0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30,
-	0x39, 0x33, 0x10, 0x9a, 0x28, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x39, 0x34, 0x10, 0xa1, 0x83, 0x05, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x39, 0x35, 0x10,
-	0x9b, 0x28, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x30, 0x39, 0x36, 0x10, 0x9c, 0x28, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x39, 0x37, 0x10, 0xc2, 0x02, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x30, 0x39,
-	0x38, 0x10, 0xc3, 0x02, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x30, 0x39, 0x39, 0x10, 0xc4, 0x02, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x30, 0x30, 0x10, 0xc5, 0x02,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36,
-	0x31, 0x30, 0x31, 0x10, 0xc6, 0x02, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x30, 0x32, 0x10, 0xc7, 0x02, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x30, 0x33, 0x10,
-	0xc8, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x31, 0x30, 0x34, 0x10, 0x15, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x30, 0x35, 0x10, 0xd1, 0x02, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x30, 0x36,
-	0x10, 0x16, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x31, 0x30, 0x37, 0x10, 0x17, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x30, 0x38, 0x10, 0x18, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x30, 0x39, 0x10,
-	0x02, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x31, 0x31, 0x30, 0x10, 0x21, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x31, 0x31, 0x10, 0x22, 0x12, 0x14, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x31, 0x32, 0x10, 0xa1,
-	0x04, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x31, 0x31, 0x33, 0x10, 0x91, 0x44, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x31, 0x34, 0x10, 0x93, 0x44, 0x12, 0x14, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x31, 0x35,
-	0x10, 0x94, 0x44, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x31, 0x31, 0x36, 0x10, 0xa2, 0x04, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x31, 0x37, 0x10, 0xa3, 0x44, 0x12,
-	0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31,
-	0x31, 0x38, 0x10, 0xa4, 0x44, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x31, 0x39, 0x10, 0xa3, 0x04, 0x12, 0x14, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x32, 0x30, 0x10, 0xa4,
-	0x04, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x31, 0x32, 0x31, 0x10, 0xa5, 0x04, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x32, 0x32, 0x10, 0xa6, 0x04, 0x12, 0x14, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x32, 0x33,
-	0x10, 0xa7, 0x04, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x31, 0x32, 0x34, 0x10, 0xa8, 0x04, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x32, 0x35, 0x10, 0xa9, 0x04, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31,
-	0x32, 0x36, 0x10, 0x23, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x31, 0x32, 0x37, 0x10, 0x24, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x32, 0x38, 0x10, 0x25, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x32,
-	0x39, 0x10, 0xd1, 0x04, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x31, 0x33, 0x30, 0x10, 0xd2, 0x04, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x33, 0x31, 0x10, 0xd3, 0x04,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36,
-	0x31, 0x33, 0x32, 0x10, 0xd4, 0x04, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x33, 0x33, 0x10, 0xd5, 0x04, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x33, 0x34, 0x10,
-	0x26, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x31, 0x33, 0x35, 0x10, 0xe1, 0x04, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x33, 0x36, 0x10, 0xe2, 0x04, 0x12, 0x14, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x33, 0x37,
-	0x10, 0xe9, 0x04, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x31, 0x33, 0x38, 0x10, 0xe6, 0x04, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x33, 0x39, 0x10, 0xe7, 0x04, 0x12,
-	0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31,
-	0x34, 0x30, 0x10, 0xe8, 0x04, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x34, 0x31, 0x10, 0xea, 0x04, 0x12, 0x14, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x34, 0x32, 0x10, 0xec,
-	0x04, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x31, 0x34, 0x33, 0x10, 0xd1, 0x4d, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x34, 0x34, 0x10, 0xd2, 0x4d, 0x12, 0x14, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x34, 0x35,
-	0x10, 0xd3, 0x4d, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x31, 0x34, 0x36, 0x10, 0xd4, 0x4d, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x34, 0x37, 0x10, 0xd5, 0x4d, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31,
-	0x34, 0x38, 0x10, 0x27, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x31, 0x34, 0x39, 0x10, 0x28, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x35, 0x30, 0x10, 0x29, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x35,
-	0x31, 0x10, 0x2a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x31, 0x35, 0x32, 0x10, 0x2b, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x35, 0x33, 0x10, 0x2c, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x35, 0x34,
-	0x10, 0x2d, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x31, 0x35, 0x35, 0x10, 0x91, 0x5c, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x35, 0x36, 0x10, 0x03, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x35, 0x37,
-	0x10, 0x31, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x31, 0x35, 0x38, 0x10, 0x32, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x35, 0x39, 0x10, 0x33, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x36, 0x30, 0x10,
-	0xb1, 0x06, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x31, 0x36, 0x31, 0x10, 0xb2, 0x06, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x36, 0x32, 0x10, 0xb3, 0x06, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x36,
-	0x33, 0x10, 0x34, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x31, 0x36, 0x34, 0x10, 0xc1, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x36, 0x35, 0x10, 0x35, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x36,
-	0x36, 0x10, 0x36, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x31, 0x36, 0x37, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x36, 0x38, 0x10, 0x91, 0x08, 0x12, 0x15,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x36,
-	0x39, 0x10, 0x91, 0x82, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x37, 0x30, 0x10, 0x92, 0x82, 0x01, 0x12, 0x15, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x37, 0x31, 0x10,
-	0x93, 0x82, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x31, 0x37, 0x32, 0x10, 0x94, 0x82, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x37, 0x33, 0x10, 0x95, 0x82,
-	0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x31, 0x37, 0x34, 0x10, 0x92, 0x08, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x37, 0x35, 0x10, 0xa1, 0x82, 0x01, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x37,
-	0x36, 0x10, 0x93, 0x08, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x31, 0x37, 0x37, 0x10, 0xb1, 0x82, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x37, 0x38, 0x10, 0xb2,
-	0x82, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x31, 0x37, 0x39, 0x10, 0xb3, 0x82, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x38, 0x30, 0x10, 0xb4, 0x82, 0x01,
-	0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36,
-	0x31, 0x38, 0x31, 0x10, 0xb5, 0x82, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x38, 0x32, 0x10, 0xb6, 0x82, 0x01, 0x12, 0x15,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x38,
-	0x33, 0x10, 0xb7, 0x82, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x38, 0x34, 0x10, 0x94, 0x08, 0x12, 0x15, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x38, 0x35, 0x10, 0xc1,
-	0x82, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x31, 0x38, 0x36, 0x10, 0xc2, 0x82, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x38, 0x37, 0x10, 0xc3, 0x82, 0x01,
-	0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36,
-	0x31, 0x38, 0x38, 0x10, 0xc4, 0x82, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x38, 0x39, 0x10, 0xc5, 0x82, 0x01, 0x12, 0x15,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x39,
-	0x30, 0x10, 0xc6, 0x82, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x39, 0x31, 0x10, 0xc7, 0x82, 0x01, 0x12, 0x15, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x39, 0x32, 0x10,
-	0xc8, 0x82, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x31, 0x39, 0x33, 0x10, 0xc9, 0x82, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x39, 0x34, 0x10, 0x96, 0x08,
-	0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36,
-	0x31, 0x39, 0x35, 0x10, 0xe1, 0x82, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x39, 0x36, 0x10, 0x97, 0x08, 0x12, 0x15, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x39, 0x37,
-	0x10, 0xf1, 0x82, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x31, 0x39, 0x38, 0x10, 0x91, 0xae, 0x10, 0x12, 0x15, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x31, 0x39, 0x39, 0x10, 0x92,
-	0xae, 0x10, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x32, 0x30, 0x30, 0x10, 0x93, 0xae, 0x10, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x30, 0x31, 0x10, 0x94, 0xae, 0x10,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36,
-	0x32, 0x30, 0x32, 0x10, 0x98, 0x08, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x30, 0x33, 0x10, 0x81, 0x83, 0x01, 0x12, 0x15, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x30, 0x34,
-	0x10, 0x82, 0x83, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x32, 0x30, 0x35, 0x10, 0x83, 0x83, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x30, 0x36, 0x10, 0x84,
-	0x83, 0x01, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x32, 0x30, 0x37, 0x10, 0x85, 0x83, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x30, 0x38, 0x10, 0x99, 0x08, 0x12,
-	0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32,
-	0x30, 0x39, 0x10, 0xa0, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x31, 0x30, 0x10, 0xa2, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x31, 0x31, 0x10, 0xa3,
-	0x08, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x32, 0x31, 0x32, 0x10, 0xa4, 0x08, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x31, 0x33, 0x10, 0xa5, 0x08, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x31, 0x34,
-	0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x32, 0x31, 0x35, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x31, 0x36, 0x10, 0x61, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x31, 0x37, 0x10,
-	0x62, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x32, 0x31, 0x38, 0x10, 0x63, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x31, 0x39, 0x10, 0x64, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x32, 0x30, 0x10, 0x65,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36,
-	0x32, 0x32, 0x31, 0x10, 0x66, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x32, 0x32, 0x10, 0x67, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x32, 0x33, 0x10, 0x68, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32,
-	0x32, 0x34, 0x10, 0x69, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x32, 0x32, 0x35, 0x10, 0x6a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x32, 0x36, 0x10, 0x6c, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x32,
-	0x37, 0x10, 0xc1, 0x0d, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x32, 0x32, 0x38, 0x10, 0xc2, 0x0d, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x32, 0x39, 0x10, 0xc3, 0x0d,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36,
-	0x32, 0x33, 0x30, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x33, 0x31, 0x10, 0x08, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x33, 0x32, 0x10, 0x09, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32,
-	0x33, 0x33, 0x10, 0x0a, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x32, 0x33, 0x34, 0x10, 0xa1, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x33, 0x35, 0x10, 0x91, 0x14,
-	0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36,
-	0x32, 0x33, 0x36, 0x10, 0x91, 0xc2, 0x02, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x33, 0x37, 0x10, 0x92, 0xc2, 0x02, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x33,
-	0x38, 0x10, 0x92, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x32, 0x33, 0x39, 0x10, 0x93, 0x14, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x34, 0x30, 0x10, 0xb1, 0xc2,
-	0x02, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x32, 0x34, 0x31, 0x10, 0x94, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x34, 0x32, 0x10, 0x95, 0x14, 0x12, 0x15, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x34, 0x33,
-	0x10, 0xd1, 0xc2, 0x02, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x32, 0x34, 0x34, 0x10, 0xd2, 0xc2, 0x02, 0x12, 0x15, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x34, 0x35, 0x10, 0xd3,
-	0xc2, 0x02, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x32, 0x34, 0x36, 0x10, 0xd4, 0xc2, 0x02, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x34, 0x37, 0x10, 0x96, 0x14, 0x12,
-	0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32,
-	0x34, 0x38, 0x10, 0x97, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x34, 0x39, 0x10, 0x98, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x35, 0x30, 0x10, 0xa2,
-	0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x32, 0x35, 0x31, 0x10, 0xa1, 0x14, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x35, 0x32, 0x10, 0x91, 0xc4, 0x02, 0x12, 0x15,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x35,
-	0x33, 0x10, 0x91, 0xc2, 0x28, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x35, 0x34, 0x10, 0x92, 0xc2, 0x28, 0x12, 0x15, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x35, 0x35, 0x10,
-	0x92, 0xc4, 0x02, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x32, 0x35, 0x36, 0x10, 0x93, 0xc4, 0x02, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x35, 0x37, 0x10, 0x94, 0xc4,
-	0x02, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x32, 0x35, 0x38, 0x10, 0xc1, 0xc2, 0x28, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x35, 0x39, 0x10, 0xa2, 0x14, 0x12, 0x15,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x36,
-	0x30, 0x10, 0xa1, 0xc4, 0x02, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x36, 0x31, 0x10, 0xa2, 0xc4, 0x02, 0x12, 0x15, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x36, 0x32, 0x10,
-	0xa3, 0xc4, 0x02, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x32, 0x36, 0x33, 0x10, 0xa3, 0x14, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x36, 0x34, 0x10, 0xb1, 0xc4, 0x02,
-	0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36,
-	0x32, 0x36, 0x35, 0x10, 0xb2, 0xc4, 0x02, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x36, 0x36, 0x10, 0xb3, 0xc4, 0x02, 0x12, 0x15,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x36,
-	0x37, 0x10, 0xb4, 0xc4, 0x02, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x36, 0x38, 0x10, 0xb5, 0xc4, 0x02, 0x12, 0x15, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x36, 0x39, 0x10,
-	0xd1, 0xc6, 0x28, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x32, 0x37, 0x30, 0x10, 0xd2, 0xc6, 0x28, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x37, 0x31, 0x10, 0xb6, 0xc4,
-	0x02, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x32, 0x37, 0x32, 0x10, 0xb7, 0xc4, 0x02, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x37, 0x33, 0x10, 0xa4, 0x14, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x37,
-	0x34, 0x10, 0xa5, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x32, 0x37, 0x35, 0x10, 0xa6, 0x14, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x37, 0x36, 0x10, 0xe1, 0xc4,
-	0x02, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x32, 0x37, 0x37, 0x10, 0xe2, 0xc4, 0x02, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x37, 0x38, 0x10, 0xe3, 0xc4, 0x02, 0x12,
-	0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32,
-	0x37, 0x39, 0x10, 0xe4, 0xc4, 0x02, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x38, 0x30, 0x10, 0xe5, 0xc4, 0x02, 0x12, 0x15, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x38, 0x31,
-	0x10, 0xd1, 0xcc, 0x28, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x32, 0x38, 0x32, 0x10, 0xd2, 0xcc, 0x28, 0x12, 0x15, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x38, 0x33, 0x10, 0xd3,
-	0xcc, 0x28, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x32, 0x38, 0x34, 0x10, 0xd4, 0xcc, 0x28, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x38, 0x35, 0x10, 0xa7, 0x14, 0x12,
-	0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32,
-	0x38, 0x36, 0x10, 0xa8, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x38, 0x37, 0x10, 0xa9, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x38, 0x38, 0x10, 0xab,
-	0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x32, 0x38, 0x39, 0x10, 0xac, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x39, 0x30, 0x10, 0xa3, 0x01, 0x12, 0x14, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x39, 0x31,
-	0x10, 0xb0, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x32, 0x39, 0x32, 0x10, 0xb1, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x39, 0x33, 0x10, 0xb2, 0x14, 0x12,
-	0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32,
-	0x39, 0x34, 0x10, 0xb3, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x39, 0x35, 0x10, 0xb4, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x39, 0x36, 0x10, 0xa4,
-	0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x32, 0x39, 0x37, 0x10, 0xc1, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x39, 0x38, 0x10, 0xc2, 0x14, 0x12, 0x15, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x32, 0x39, 0x39,
-	0x10, 0xa1, 0xc8, 0x02, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x33, 0x30, 0x30, 0x10, 0xa2, 0xc8, 0x02, 0x12, 0x15, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x30, 0x31, 0x10, 0xa3,
-	0xc8, 0x02, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x33, 0x30, 0x32, 0x10, 0xc3, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x30, 0x33, 0x10, 0xc4, 0x14, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x30,
-	0x34, 0x10, 0xa5, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x33, 0x30, 0x35, 0x10, 0xd1, 0x14, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x30, 0x36, 0x10, 0x91, 0xca,
-	0x02, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x33, 0x30, 0x37, 0x10, 0x92, 0xca, 0x02, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x30, 0x38, 0x10, 0xd2, 0x14, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x30,
-	0x39, 0x10, 0xd3, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x33, 0x31, 0x30, 0x10, 0xd4, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x31, 0x31, 0x10, 0xd6, 0x14,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36,
-	0x33, 0x31, 0x32, 0x10, 0xd7, 0x14, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x31, 0x33, 0x10, 0xf1, 0xca, 0x02, 0x12, 0x14, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x31, 0x34,
-	0x10, 0xd8, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x33, 0x31, 0x35, 0x10, 0xd9, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x31, 0x36, 0x10, 0xda, 0x14, 0x12,
-	0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33,
-	0x31, 0x37, 0x10, 0xdb, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x31, 0x38, 0x10, 0xdc, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x31, 0x39, 0x10, 0xdd,
-	0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x33, 0x32, 0x30, 0x10, 0xde, 0x14, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x32, 0x31, 0x10, 0xf1, 0xcb, 0x02, 0x12, 0x15,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x32,
-	0x32, 0x10, 0xf2, 0xcb, 0x02, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x32, 0x33, 0x10, 0xf3, 0xcb, 0x02, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x32, 0x34, 0x10,
-	0xa6, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x33, 0x32, 0x35, 0x10, 0xe1, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x32, 0x36, 0x10, 0xe2, 0x14, 0x12, 0x15,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x32,
-	0x37, 0x10, 0xa1, 0xcc, 0x02, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x32, 0x38, 0x10, 0xe3, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x32, 0x39, 0x10, 0xe4,
-	0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x33, 0x33, 0x30, 0x10, 0xe5, 0x14, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x33, 0x31, 0x10, 0xe6, 0x14, 0x12, 0x14, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x33, 0x32,
-	0x10, 0xe7, 0x14, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x33, 0x33, 0x33, 0x10, 0xf1, 0xcc, 0x02, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x33, 0x34, 0x10, 0xe8, 0x14,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36,
-	0x33, 0x33, 0x35, 0x10, 0xe9, 0x14, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x33, 0x36, 0x10, 0x81, 0xce, 0x02, 0x12, 0x15, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x33, 0x37,
-	0x10, 0x82, 0xce, 0x02, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x33, 0x33, 0x38, 0x10, 0x83, 0xce, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x33, 0x39, 0x10, 0x0b,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36,
-	0x33, 0x34, 0x30, 0x10, 0xb1, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x34, 0x31, 0x10, 0x91, 0x16, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x34, 0x32, 0x10,
-	0xb3, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x33, 0x34, 0x33, 0x10, 0xb4, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x34, 0x34, 0x10, 0xc1, 0x16, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x34,
-	0x35, 0x10, 0xb6, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x33, 0x34, 0x36, 0x10, 0xb7, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x34, 0x37, 0x10, 0x0c, 0x12,
-	0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33,
-	0x34, 0x38, 0x10, 0x91, 0x18, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x34, 0x39, 0x10, 0xc2, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x35, 0x30, 0x10, 0xc3,
-	0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x33, 0x35, 0x31, 0x10, 0xc4, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x35, 0x32, 0x10, 0xc6, 0x01, 0x12, 0x14, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x35, 0x33,
-	0x10, 0xe1, 0x18, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x33, 0x35, 0x34, 0x10, 0xc7, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x35, 0x35, 0x10, 0xc8, 0x01, 0x12,
-	0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33,
-	0x35, 0x36, 0x10, 0xd0, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x35, 0x37, 0x10, 0x81, 0x1a, 0x12, 0x14, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x35, 0x38, 0x10, 0x82,
-	0x1a, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x33, 0x35, 0x39, 0x10, 0x83, 0x1a, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x36, 0x30, 0x10, 0xd1, 0x01, 0x12, 0x14, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x36, 0x31,
-	0x10, 0xd2, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x33, 0x36, 0x32, 0x10, 0xd3, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x36, 0x33, 0x10, 0xb1, 0x1a, 0x12,
-	0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33,
-	0x36, 0x34, 0x10, 0xb2, 0x1a, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x36, 0x35, 0x10, 0xb3, 0x1a, 0x12, 0x14, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x36, 0x36, 0x10, 0xb4,
-	0x1a, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x33, 0x36, 0x37, 0x10, 0xb5, 0x1a, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x36, 0x38, 0x10, 0x91, 0xec, 0x34, 0x12, 0x15,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x36,
-	0x39, 0x10, 0x92, 0xec, 0x34, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x37, 0x30, 0x10, 0x93, 0xec, 0x34, 0x12, 0x15, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x37, 0x31, 0x10,
-	0x94, 0xec, 0x34, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x33, 0x37, 0x32, 0x10, 0x95, 0xec, 0x34, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x37, 0x33, 0x10, 0x96, 0xec,
-	0x34, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x33, 0x37, 0x34, 0x10, 0x97, 0xec, 0x34, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x37, 0x35, 0x10, 0x98, 0xec, 0x34, 0x12,
-	0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33,
-	0x37, 0x36, 0x10, 0x99, 0xec, 0x34, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x37, 0x37, 0x10, 0x9a, 0xec, 0x34, 0x12, 0x15, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x37, 0x38,
-	0x10, 0x9b, 0xec, 0x34, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x33, 0x37, 0x39, 0x10, 0x9c, 0xec, 0x34, 0x12, 0x15, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x38, 0x30, 0x10, 0x9d,
-	0xec, 0x34, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x33, 0x38, 0x31, 0x10, 0x9e, 0xec, 0x34, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x38, 0x32, 0x10, 0x9f, 0xec, 0x34,
-	0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36,
-	0x33, 0x38, 0x33, 0x10, 0xa0, 0xec, 0x34, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x38, 0x34, 0x10, 0xa1, 0xec, 0x34, 0x12, 0x15,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x38,
-	0x35, 0x10, 0xa2, 0xec, 0x34, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x38, 0x36, 0x10, 0xa3, 0xec, 0x34, 0x12, 0x15, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x38, 0x37, 0x10,
-	0xa4, 0xec, 0x34, 0x12, 0x15, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x33, 0x38, 0x38, 0x10, 0xa5, 0xec, 0x34, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x38, 0x39, 0x10, 0xd4, 0x01,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36,
-	0x33, 0x39, 0x30, 0x10, 0xc1, 0x1a, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x39, 0x31, 0x10, 0xc2, 0x1a, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x39, 0x32, 0x10,
-	0xc3, 0x1a, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x33, 0x39, 0x33, 0x10, 0xd5, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x39, 0x34, 0x10, 0xd6, 0x01, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x39,
-	0x35, 0x10, 0xd7, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x33, 0x39, 0x36, 0x10, 0xf1, 0x1a, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x39, 0x37, 0x10, 0xf2, 0x1a,
-	0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36,
-	0x33, 0x39, 0x38, 0x10, 0xd8, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x33, 0x39, 0x39, 0x10, 0xd9, 0x01, 0x12, 0x14, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x34, 0x30, 0x30, 0x10,
-	0x91, 0x1b, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x34, 0x30, 0x31, 0x10, 0x92, 0x1b, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x34, 0x30, 0x32, 0x10, 0x93, 0x1b, 0x12, 0x14,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x34, 0x30,
-	0x33, 0x10, 0xfe, 0x01, 0x12, 0x14, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x34, 0x30, 0x34, 0x10, 0xff, 0x01, 0x2a, 0xdd, 0x01, 0x0a, 0x09, 0x45,
-	0x6e, 0x75, 0x6d, 0x31, 0x36, 0x35, 0x35, 0x33, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x35, 0x35, 0x34, 0x10, 0x00, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x35, 0x35, 0x35,
-	0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x35, 0x35, 0x36, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x35, 0x35, 0x37, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x35, 0x35, 0x38, 0x10,
-	0x04, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x35, 0x35, 0x39, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x35, 0x36, 0x30, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x35, 0x36, 0x31, 0x10, 0x07,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36,
-	0x35, 0x36, 0x32, 0x10, 0x08, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x35, 0x36, 0x33, 0x10, 0x09, 0x2a, 0x4a, 0x0a, 0x09, 0x45, 0x6e,
-	0x75, 0x6d, 0x31, 0x36, 0x37, 0x32, 0x38, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37, 0x32, 0x39, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37, 0x33, 0x30, 0x10,
-	0x02, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x37, 0x33, 0x31, 0x10, 0x03, 0x2a, 0x74, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x36,
-	0x37, 0x33, 0x32, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x37, 0x33, 0x33, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37, 0x33, 0x34, 0x10, 0x02, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37, 0x33, 0x35,
-	0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x37, 0x33, 0x36, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37, 0x33, 0x37, 0x10, 0x05, 0x2a, 0x9e, 0x01, 0x0a,
-	0x09, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x36, 0x37, 0x33, 0x38, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37, 0x33, 0x39, 0x10, 0x01, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37,
-	0x34, 0x30, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x37, 0x34, 0x31, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37, 0x34, 0x32, 0x10, 0x04, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37, 0x34,
-	0x33, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x37, 0x34, 0x34, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37, 0x34, 0x35, 0x10, 0x07, 0x2a, 0xf7, 0x03,
-	0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x36, 0x36, 0x39, 0x38, 0x12, 0x1c, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x36, 0x39, 0x39, 0x10, 0xff,
-	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37, 0x30, 0x30, 0x10, 0x64, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37, 0x30,
-	0x31, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x37, 0x30, 0x32, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37, 0x30, 0x33, 0x10, 0x01, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37, 0x30, 0x34,
-	0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x37, 0x30, 0x35, 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37, 0x30, 0x36, 0x10, 0x0c, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37, 0x30, 0x37, 0x10,
-	0x03, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x37, 0x30, 0x38, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37, 0x30, 0x39, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37, 0x31, 0x30, 0x10, 0x07,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36,
-	0x37, 0x31, 0x31, 0x10, 0x08, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x37, 0x31, 0x32, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37, 0x31, 0x33, 0x10, 0x0a, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37,
-	0x31, 0x34, 0x10, 0x0d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x37, 0x31, 0x35, 0x10, 0x0e, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37, 0x31, 0x36, 0x10, 0x0f, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37, 0x31,
-	0x37, 0x10, 0x10, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x37, 0x31, 0x38, 0x10, 0x12, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37, 0x31, 0x39, 0x10, 0x11, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x37, 0x32, 0x30,
-	0x10, 0x13, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x37, 0x32, 0x31, 0x10, 0x14, 0x2a, 0x89, 0x01, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d,
-	0x31, 0x36, 0x38, 0x31, 0x39, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x38, 0x32, 0x30, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x38, 0x32, 0x31, 0x10, 0x01, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x38,
-	0x32, 0x32, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x38, 0x32, 0x33, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x38, 0x32, 0x34, 0x10, 0x04, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x38, 0x32,
-	0x35, 0x10, 0x05, 0x2a, 0xb1, 0x02, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x36, 0x39, 0x32,
-	0x35, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x39, 0x32, 0x36, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x39, 0x32, 0x37, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x39, 0x32, 0x38, 0x10, 0x02,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36,
-	0x39, 0x32, 0x39, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x39, 0x33, 0x30, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x39, 0x33, 0x31, 0x10, 0x05, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x39,
-	0x33, 0x32, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x39, 0x33, 0x33, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x39, 0x33, 0x34, 0x10, 0x08, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x39, 0x33,
-	0x35, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x39, 0x33, 0x36, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x39, 0x33, 0x37, 0x10, 0x0b, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x39, 0x33, 0x38,
-	0x10, 0x0c, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x39, 0x33, 0x39, 0x10, 0x0d, 0x2a, 0x35, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x32,
-	0x32, 0x38, 0x35, 0x34, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x32, 0x32, 0x38, 0x35, 0x35, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x32, 0x38, 0x35, 0x36, 0x10, 0x01, 0x2a, 0x5f,
-	0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x34, 0x33, 0x36, 0x31, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x34, 0x33, 0x36, 0x32, 0x10, 0x00,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x34,
-	0x33, 0x36, 0x33, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x32, 0x34, 0x33, 0x36, 0x34, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x34, 0x33, 0x36, 0x35, 0x10, 0x03, 0x2a,
-	0xab, 0x05, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x36, 0x38, 0x39, 0x31, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x38, 0x39, 0x32,
-	0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x38, 0x39, 0x33, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x38, 0x39, 0x34, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x38, 0x39, 0x35, 0x10,
-	0x03, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x38, 0x39, 0x36, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x38, 0x39, 0x37, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x38, 0x39, 0x38, 0x10, 0x06,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36,
-	0x38, 0x39, 0x39, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x39, 0x30, 0x30, 0x10, 0x08, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x39, 0x30, 0x31, 0x10, 0x09, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x39,
-	0x30, 0x32, 0x10, 0x0a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x39, 0x30, 0x33, 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x39, 0x30, 0x34, 0x10, 0x0c, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x39, 0x30,
-	0x35, 0x10, 0x0d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x39, 0x30, 0x36, 0x10, 0x0e, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x39, 0x30, 0x37, 0x10, 0x0f, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x39, 0x30, 0x38,
-	0x10, 0x10, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x36, 0x39, 0x30, 0x39, 0x10, 0x11, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x39, 0x31, 0x30, 0x10, 0x12, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x39, 0x31, 0x31, 0x10,
-	0x13, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x36, 0x39, 0x31, 0x32, 0x10, 0x14, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x39, 0x31, 0x33, 0x10, 0x15, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x39, 0x31, 0x34, 0x10, 0x16,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36,
-	0x39, 0x31, 0x35, 0x10, 0x17, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x36, 0x39, 0x31, 0x36, 0x10, 0x18, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x39, 0x31, 0x37, 0x10, 0x19, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x39,
-	0x31, 0x38, 0x10, 0x1a, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x36, 0x39, 0x31, 0x39, 0x10, 0x1b, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x39, 0x32, 0x30, 0x10, 0x1c, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x39, 0x32,
-	0x31, 0x10, 0x1d, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x36, 0x39, 0x32, 0x32, 0x10, 0x1e, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x36, 0x39, 0x32, 0x33, 0x10, 0x1f, 0x2a, 0x74, 0x0a,
-	0x09, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x37, 0x33, 0x36, 0x31, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x37, 0x33, 0x36, 0x32, 0x10, 0x00, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x37, 0x33,
-	0x36, 0x33, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x32, 0x37, 0x33, 0x36, 0x34, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x37, 0x33, 0x36, 0x35, 0x10, 0x03, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x37, 0x33, 0x36,
-	0x36, 0x10, 0x04, 0x2a, 0x9e, 0x01, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x33, 0x39, 0x36,
-	0x30, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33,
-	0x33, 0x39, 0x36, 0x31, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x33, 0x33, 0x39, 0x36, 0x32, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x33, 0x39, 0x36, 0x33, 0x10, 0x02,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x33,
-	0x39, 0x36, 0x34, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x33, 0x33, 0x39, 0x36, 0x35, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x33, 0x39, 0x36, 0x36, 0x10, 0x05, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x33, 0x39,
-	0x36, 0x37, 0x10, 0x06, 0x2a, 0x20, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x34, 0x33, 0x38,
-	0x38, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33,
-	0x34, 0x33, 0x38, 0x39, 0x10, 0x01, 0x2a, 0x74, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x35,
-	0x34, 0x37, 0x37, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x34, 0x37, 0x38, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x34, 0x37, 0x39, 0x10, 0x03, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x34, 0x38, 0x30,
-	0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x33, 0x35, 0x34, 0x38, 0x31, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x34, 0x38, 0x32, 0x10, 0x00, 0x2a, 0xdd, 0x01, 0x0a,
-	0x09, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x35, 0x35, 0x30, 0x37, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x35, 0x30, 0x38, 0x10, 0x00, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x35,
-	0x30, 0x39, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x35, 0x31, 0x30, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x35, 0x31, 0x31, 0x10, 0x03, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x35, 0x31,
-	0x32, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x35, 0x35, 0x31, 0x33, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x35, 0x31, 0x34, 0x10, 0x06, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x35, 0x31, 0x35,
-	0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x33, 0x35, 0x35, 0x31, 0x36, 0x10, 0x08, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x35, 0x31, 0x37, 0x10, 0x09, 0x2a, 0xb3, 0x01, 0x0a,
-	0x09, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x36, 0x38, 0x36, 0x30, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x38, 0x36, 0x31, 0x10, 0x00, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x38,
-	0x36, 0x32, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x36, 0x38, 0x36, 0x33, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x38, 0x36, 0x34, 0x10, 0x03, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x38, 0x36,
-	0x35, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x36, 0x38, 0x36, 0x36, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x38, 0x36, 0x37, 0x10, 0x06, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x38, 0x36, 0x38,
-	0x10, 0x07, 0x2a, 0x35, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x36, 0x38, 0x39, 0x30, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x38,
-	0x39, 0x31, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x36, 0x38, 0x39, 0x32, 0x10, 0x01, 0x42, 0x23, 0x0a, 0x1e, 0x63, 0x6f, 0x6d,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0xf8, 0x01, 0x01,
-}
-
-var (
-	file_datasets_google_message3_benchmark_message3_8_proto_rawDescOnce sync.Once
-	file_datasets_google_message3_benchmark_message3_8_proto_rawDescData = file_datasets_google_message3_benchmark_message3_8_proto_rawDesc
-)
-
-func file_datasets_google_message3_benchmark_message3_8_proto_rawDescGZIP() []byte {
-	file_datasets_google_message3_benchmark_message3_8_proto_rawDescOnce.Do(func() {
-		file_datasets_google_message3_benchmark_message3_8_proto_rawDescData = protoimpl.X.CompressGZIP(file_datasets_google_message3_benchmark_message3_8_proto_rawDescData)
-	})
-	return file_datasets_google_message3_benchmark_message3_8_proto_rawDescData
-}
-
-var file_datasets_google_message3_benchmark_message3_8_proto_enumTypes = make([]protoimpl.EnumInfo, 59)
-var file_datasets_google_message3_benchmark_message3_8_proto_goTypes = []interface{}{
-	(Enum720)(0),    // 0: benchmarks.google_message3.Enum720
-	(Enum3476)(0),   // 1: benchmarks.google_message3.Enum3476
-	(Enum3805)(0),   // 2: benchmarks.google_message3.Enum3805
-	(Enum3783)(0),   // 3: benchmarks.google_message3.Enum3783
-	(Enum3851)(0),   // 4: benchmarks.google_message3.Enum3851
-	(UnusedEnum)(0), // 5: benchmarks.google_message3.UnusedEnum
-	(Enum4146)(0),   // 6: benchmarks.google_message3.Enum4146
-	(Enum4160)(0),   // 7: benchmarks.google_message3.Enum4160
-	(Enum4152)(0),   // 8: benchmarks.google_message3.Enum4152
-	(Enum6025)(0),   // 9: benchmarks.google_message3.Enum6025
-	(Enum6065)(0),   // 10: benchmarks.google_message3.Enum6065
-	(Enum6579)(0),   // 11: benchmarks.google_message3.Enum6579
-	(Enum6588)(0),   // 12: benchmarks.google_message3.Enum6588
-	(Enum6769)(0),   // 13: benchmarks.google_message3.Enum6769
-	(Enum6774)(0),   // 14: benchmarks.google_message3.Enum6774
-	(Enum6782)(0),   // 15: benchmarks.google_message3.Enum6782
-	(Enum6858)(0),   // 16: benchmarks.google_message3.Enum6858
-	(Enum6815)(0),   // 17: benchmarks.google_message3.Enum6815
-	(Enum6822)(0),   // 18: benchmarks.google_message3.Enum6822
-	(Enum7654)(0),   // 19: benchmarks.google_message3.Enum7654
-	(Enum8292)(0),   // 20: benchmarks.google_message3.Enum8292
-	(Enum8450)(0),   // 21: benchmarks.google_message3.Enum8450
-	(Enum8900)(0),   // 22: benchmarks.google_message3.Enum8900
-	(Enum8945)(0),   // 23: benchmarks.google_message3.Enum8945
-	(Enum8951)(0),   // 24: benchmarks.google_message3.Enum8951
-	(Enum9243)(0),   // 25: benchmarks.google_message3.Enum9243
-	(Enum10157)(0),  // 26: benchmarks.google_message3.Enum10157
-	(Enum10167)(0),  // 27: benchmarks.google_message3.Enum10167
-	(Enum8862)(0),   // 28: benchmarks.google_message3.Enum8862
-	(Enum10325)(0),  // 29: benchmarks.google_message3.Enum10325
-	(Enum10335)(0),  // 30: benchmarks.google_message3.Enum10335
-	(Enum10337)(0),  // 31: benchmarks.google_message3.Enum10337
-	(Enum10392)(0),  // 32: benchmarks.google_message3.Enum10392
-	(Enum11107)(0),  // 33: benchmarks.google_message3.Enum11107
-	(Enum11541)(0),  // 34: benchmarks.google_message3.Enum11541
-	(Enum11468)(0),  // 35: benchmarks.google_message3.Enum11468
-	(Enum11022)(0),  // 36: benchmarks.google_message3.Enum11022
-	(Enum12670)(0),  // 37: benchmarks.google_message3.Enum12670
-	(Enum12871)(0),  // 38: benchmarks.google_message3.Enum12871
-	(Enum13092)(0),  // 39: benchmarks.google_message3.Enum13092
-	(Enum13146)(0),  // 40: benchmarks.google_message3.Enum13146
-	(Enum16042)(0),  // 41: benchmarks.google_message3.Enum16042
-	(Enum16553)(0),  // 42: benchmarks.google_message3.Enum16553
-	(Enum16728)(0),  // 43: benchmarks.google_message3.Enum16728
-	(Enum16732)(0),  // 44: benchmarks.google_message3.Enum16732
-	(Enum16738)(0),  // 45: benchmarks.google_message3.Enum16738
-	(Enum16698)(0),  // 46: benchmarks.google_message3.Enum16698
-	(Enum16819)(0),  // 47: benchmarks.google_message3.Enum16819
-	(Enum16925)(0),  // 48: benchmarks.google_message3.Enum16925
-	(Enum22854)(0),  // 49: benchmarks.google_message3.Enum22854
-	(Enum24361)(0),  // 50: benchmarks.google_message3.Enum24361
-	(Enum16891)(0),  // 51: benchmarks.google_message3.Enum16891
-	(Enum27361)(0),  // 52: benchmarks.google_message3.Enum27361
-	(Enum33960)(0),  // 53: benchmarks.google_message3.Enum33960
-	(Enum34388)(0),  // 54: benchmarks.google_message3.Enum34388
-	(Enum35477)(0),  // 55: benchmarks.google_message3.Enum35477
-	(Enum35507)(0),  // 56: benchmarks.google_message3.Enum35507
-	(Enum36860)(0),  // 57: benchmarks.google_message3.Enum36860
-	(Enum36890)(0),  // 58: benchmarks.google_message3.Enum36890
-}
-var file_datasets_google_message3_benchmark_message3_8_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_datasets_google_message3_benchmark_message3_8_proto_init() }
-func file_datasets_google_message3_benchmark_message3_8_proto_init() {
-	if File_datasets_google_message3_benchmark_message3_8_proto != nil {
-		return
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_datasets_google_message3_benchmark_message3_8_proto_rawDesc,
-			NumEnums:      59,
-			NumMessages:   0,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_datasets_google_message3_benchmark_message3_8_proto_goTypes,
-		DependencyIndexes: file_datasets_google_message3_benchmark_message3_8_proto_depIdxs,
-		EnumInfos:         file_datasets_google_message3_benchmark_message3_8_proto_enumTypes,
-	}.Build()
-	File_datasets_google_message3_benchmark_message3_8_proto = out.File
-	file_datasets_google_message3_benchmark_message3_8_proto_rawDesc = nil
-	file_datasets_google_message3_benchmark_message3_8_proto_goTypes = nil
-	file_datasets_google_message3_benchmark_message3_8_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4.pb.go b/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4.pb.go
deleted file mode 100644
index deba28c..0000000
--- a/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4.pb.go
+++ /dev/null
@@ -1,6177 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// LINT: ALLOW_GROUPS
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: datasets/google_message4/benchmark_message4.proto
-
-package google_message4
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type GoogleMessage4 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field37503 *int32              `protobuf:"varint,1,opt,name=field37503" json:"field37503,omitempty"`
-	Field37504 *UnusedEmptyMessage `protobuf:"bytes,2,opt,name=field37504" json:"field37504,omitempty"`
-	Field37505 *UnusedEmptyMessage `protobuf:"bytes,3,opt,name=field37505" json:"field37505,omitempty"`
-	Field37506 *UnusedEmptyMessage `protobuf:"bytes,4,opt,name=field37506" json:"field37506,omitempty"`
-	Field37507 *UnusedEmptyMessage `protobuf:"bytes,5,opt,name=field37507" json:"field37507,omitempty"`
-	Field37508 *Message37489       `protobuf:"bytes,6,opt,name=field37508" json:"field37508,omitempty"`
-	Field37509 *UnusedEmptyMessage `protobuf:"bytes,7,opt,name=field37509" json:"field37509,omitempty"`
-	Field37510 *UnusedEmptyMessage `protobuf:"bytes,8,opt,name=field37510" json:"field37510,omitempty"`
-	Field37511 *UnusedEmptyMessage `protobuf:"bytes,9,opt,name=field37511" json:"field37511,omitempty"`
-	Field37512 *UnusedEmptyMessage `protobuf:"bytes,10,opt,name=field37512" json:"field37512,omitempty"`
-	Field37513 *UnusedEmptyMessage `protobuf:"bytes,11,opt,name=field37513" json:"field37513,omitempty"`
-	Field37514 *UnusedEmptyMessage `protobuf:"bytes,12,opt,name=field37514" json:"field37514,omitempty"`
-	Field37515 *UnusedEmptyMessage `protobuf:"bytes,13,opt,name=field37515" json:"field37515,omitempty"`
-	Field37516 *UnusedEmptyMessage `protobuf:"bytes,14,opt,name=field37516" json:"field37516,omitempty"`
-	Field37517 *UnusedEmptyMessage `protobuf:"bytes,15,opt,name=field37517" json:"field37517,omitempty"`
-	Field37518 *UnusedEmptyMessage `protobuf:"bytes,16,opt,name=field37518" json:"field37518,omitempty"`
-}
-
-func (x *GoogleMessage4) Reset() {
-	*x = GoogleMessage4{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GoogleMessage4) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GoogleMessage4) ProtoMessage() {}
-
-func (x *GoogleMessage4) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use GoogleMessage4.ProtoReflect.Descriptor instead.
-func (*GoogleMessage4) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *GoogleMessage4) GetField37503() int32 {
-	if x != nil && x.Field37503 != nil {
-		return *x.Field37503
-	}
-	return 0
-}
-
-func (x *GoogleMessage4) GetField37504() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37504
-	}
-	return nil
-}
-
-func (x *GoogleMessage4) GetField37505() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37505
-	}
-	return nil
-}
-
-func (x *GoogleMessage4) GetField37506() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37506
-	}
-	return nil
-}
-
-func (x *GoogleMessage4) GetField37507() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37507
-	}
-	return nil
-}
-
-func (x *GoogleMessage4) GetField37508() *Message37489 {
-	if x != nil {
-		return x.Field37508
-	}
-	return nil
-}
-
-func (x *GoogleMessage4) GetField37509() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37509
-	}
-	return nil
-}
-
-func (x *GoogleMessage4) GetField37510() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37510
-	}
-	return nil
-}
-
-func (x *GoogleMessage4) GetField37511() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37511
-	}
-	return nil
-}
-
-func (x *GoogleMessage4) GetField37512() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37512
-	}
-	return nil
-}
-
-func (x *GoogleMessage4) GetField37513() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37513
-	}
-	return nil
-}
-
-func (x *GoogleMessage4) GetField37514() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37514
-	}
-	return nil
-}
-
-func (x *GoogleMessage4) GetField37515() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37515
-	}
-	return nil
-}
-
-func (x *GoogleMessage4) GetField37516() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37516
-	}
-	return nil
-}
-
-func (x *GoogleMessage4) GetField37517() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37517
-	}
-	return nil
-}
-
-func (x *GoogleMessage4) GetField37518() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37518
-	}
-	return nil
-}
-
-type Message37489 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field37534 *Message2517  `protobuf:"bytes,3,opt,name=field37534" json:"field37534,omitempty"`
-	Field37535 *Message7330  `protobuf:"bytes,4,opt,name=field37535" json:"field37535,omitempty"`
-	Field37536 *Message8815  `protobuf:"bytes,6,opt,name=field37536" json:"field37536,omitempty"`
-	Field37537 *Message8817  `protobuf:"bytes,7,opt,name=field37537" json:"field37537,omitempty"`
-	Field37538 *Message8835  `protobuf:"bytes,8,opt,name=field37538" json:"field37538,omitempty"`
-	Field37539 *Message8848  `protobuf:"bytes,9,opt,name=field37539" json:"field37539,omitempty"`
-	Field37540 *Message8856  `protobuf:"bytes,11,opt,name=field37540" json:"field37540,omitempty"`
-	Field37541 *Message12717 `protobuf:"bytes,15,opt,name=field37541" json:"field37541,omitempty"`
-	Field37542 *Message12748 `protobuf:"bytes,20,opt,name=field37542" json:"field37542,omitempty"`
-	Field37543 *Message7319  `protobuf:"bytes,22,opt,name=field37543" json:"field37543,omitempty"`
-	Field37544 *Message12908 `protobuf:"bytes,24,opt,name=field37544" json:"field37544,omitempty"`
-	Field37545 *Message12910 `protobuf:"bytes,25,opt,name=field37545" json:"field37545,omitempty"`
-	Field37546 *Message12960 `protobuf:"bytes,30,opt,name=field37546" json:"field37546,omitempty"`
-	Field37547 *Message176   `protobuf:"bytes,33,opt,name=field37547" json:"field37547,omitempty"`
-	Field37548 *Message13000 `protobuf:"bytes,34,opt,name=field37548" json:"field37548,omitempty"`
-	Field37549 *Message13035 `protobuf:"bytes,35,opt,name=field37549" json:"field37549,omitempty"`
-	Field37550 *Message37331 `protobuf:"bytes,36,opt,name=field37550" json:"field37550,omitempty"`
-	Field37551 *Message37329 `protobuf:"bytes,37,opt,name=field37551" json:"field37551,omitempty"`
-	Field37552 *Message37327 `protobuf:"bytes,38,opt,name=field37552" json:"field37552,omitempty"`
-	Field37553 *Message37333 `protobuf:"bytes,39,opt,name=field37553" json:"field37553,omitempty"`
-	Field37554 *Message37335 `protobuf:"bytes,40,opt,name=field37554" json:"field37554,omitempty"`
-}
-
-func (x *Message37489) Reset() {
-	*x = Message37489{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message37489) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message37489) ProtoMessage() {}
-
-func (x *Message37489) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message37489.ProtoReflect.Descriptor instead.
-func (*Message37489) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Message37489) GetField37534() *Message2517 {
-	if x != nil {
-		return x.Field37534
-	}
-	return nil
-}
-
-func (x *Message37489) GetField37535() *Message7330 {
-	if x != nil {
-		return x.Field37535
-	}
-	return nil
-}
-
-func (x *Message37489) GetField37536() *Message8815 {
-	if x != nil {
-		return x.Field37536
-	}
-	return nil
-}
-
-func (x *Message37489) GetField37537() *Message8817 {
-	if x != nil {
-		return x.Field37537
-	}
-	return nil
-}
-
-func (x *Message37489) GetField37538() *Message8835 {
-	if x != nil {
-		return x.Field37538
-	}
-	return nil
-}
-
-func (x *Message37489) GetField37539() *Message8848 {
-	if x != nil {
-		return x.Field37539
-	}
-	return nil
-}
-
-func (x *Message37489) GetField37540() *Message8856 {
-	if x != nil {
-		return x.Field37540
-	}
-	return nil
-}
-
-func (x *Message37489) GetField37541() *Message12717 {
-	if x != nil {
-		return x.Field37541
-	}
-	return nil
-}
-
-func (x *Message37489) GetField37542() *Message12748 {
-	if x != nil {
-		return x.Field37542
-	}
-	return nil
-}
-
-func (x *Message37489) GetField37543() *Message7319 {
-	if x != nil {
-		return x.Field37543
-	}
-	return nil
-}
-
-func (x *Message37489) GetField37544() *Message12908 {
-	if x != nil {
-		return x.Field37544
-	}
-	return nil
-}
-
-func (x *Message37489) GetField37545() *Message12910 {
-	if x != nil {
-		return x.Field37545
-	}
-	return nil
-}
-
-func (x *Message37489) GetField37546() *Message12960 {
-	if x != nil {
-		return x.Field37546
-	}
-	return nil
-}
-
-func (x *Message37489) GetField37547() *Message176 {
-	if x != nil {
-		return x.Field37547
-	}
-	return nil
-}
-
-func (x *Message37489) GetField37548() *Message13000 {
-	if x != nil {
-		return x.Field37548
-	}
-	return nil
-}
-
-func (x *Message37489) GetField37549() *Message13035 {
-	if x != nil {
-		return x.Field37549
-	}
-	return nil
-}
-
-func (x *Message37489) GetField37550() *Message37331 {
-	if x != nil {
-		return x.Field37550
-	}
-	return nil
-}
-
-func (x *Message37489) GetField37551() *Message37329 {
-	if x != nil {
-		return x.Field37551
-	}
-	return nil
-}
-
-func (x *Message37489) GetField37552() *Message37327 {
-	if x != nil {
-		return x.Field37552
-	}
-	return nil
-}
-
-func (x *Message37489) GetField37553() *Message37333 {
-	if x != nil {
-		return x.Field37553
-	}
-	return nil
-}
-
-func (x *Message37489) GetField37554() *Message37335 {
-	if x != nil {
-		return x.Field37554
-	}
-	return nil
-}
-
-type Message7319 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7321 *UnusedEmptyMessage `protobuf:"bytes,1,opt,name=field7321" json:"field7321,omitempty"`
-	Field7322 *UnusedEmptyMessage `protobuf:"bytes,7,opt,name=field7322" json:"field7322,omitempty"`
-}
-
-func (x *Message7319) Reset() {
-	*x = Message7319{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7319) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7319) ProtoMessage() {}
-
-func (x *Message7319) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7319.ProtoReflect.Descriptor instead.
-func (*Message7319) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Message7319) GetField7321() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7321
-	}
-	return nil
-}
-
-func (x *Message7319) GetField7322() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7322
-	}
-	return nil
-}
-
-type Message12717 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12719 *UnusedEmptyMessage `protobuf:"bytes,1,opt,name=field12719" json:"field12719,omitempty"`
-	Field12720 *string             `protobuf:"bytes,2,opt,name=field12720" json:"field12720,omitempty"`
-	Field12721 *uint32             `protobuf:"varint,3,opt,name=field12721" json:"field12721,omitempty"`
-	Field12722 *Message11976       `protobuf:"bytes,4,opt,name=field12722" json:"field12722,omitempty"`
-	Field12723 []*Message11948     `protobuf:"bytes,5,rep,name=field12723" json:"field12723,omitempty"`
-	Field12724 *Message11947       `protobuf:"bytes,6,opt,name=field12724" json:"field12724,omitempty"`
-	Field12725 *Message12687       `protobuf:"bytes,7,opt,name=field12725" json:"field12725,omitempty"`
-	Field12726 []*Message11948     `protobuf:"bytes,8,rep,name=field12726" json:"field12726,omitempty"`
-	Field12727 *int64              `protobuf:"varint,9,opt,name=field12727" json:"field12727,omitempty"`
-}
-
-func (x *Message12717) Reset() {
-	*x = Message12717{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12717) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12717) ProtoMessage() {}
-
-func (x *Message12717) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12717.ProtoReflect.Descriptor instead.
-func (*Message12717) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Message12717) GetField12719() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field12719
-	}
-	return nil
-}
-
-func (x *Message12717) GetField12720() string {
-	if x != nil && x.Field12720 != nil {
-		return *x.Field12720
-	}
-	return ""
-}
-
-func (x *Message12717) GetField12721() uint32 {
-	if x != nil && x.Field12721 != nil {
-		return *x.Field12721
-	}
-	return 0
-}
-
-func (x *Message12717) GetField12722() *Message11976 {
-	if x != nil {
-		return x.Field12722
-	}
-	return nil
-}
-
-func (x *Message12717) GetField12723() []*Message11948 {
-	if x != nil {
-		return x.Field12723
-	}
-	return nil
-}
-
-func (x *Message12717) GetField12724() *Message11947 {
-	if x != nil {
-		return x.Field12724
-	}
-	return nil
-}
-
-func (x *Message12717) GetField12725() *Message12687 {
-	if x != nil {
-		return x.Field12725
-	}
-	return nil
-}
-
-func (x *Message12717) GetField12726() []*Message11948 {
-	if x != nil {
-		return x.Field12726
-	}
-	return nil
-}
-
-func (x *Message12717) GetField12727() int64 {
-	if x != nil && x.Field12727 != nil {
-		return *x.Field12727
-	}
-	return 0
-}
-
-type Message37331 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field37367 *UnusedEmptyMessage `protobuf:"bytes,4,opt,name=field37367" json:"field37367,omitempty"`
-	Field37368 *Message37326       `protobuf:"bytes,1,req,name=field37368" json:"field37368,omitempty"`
-	Field37369 *int64              `protobuf:"varint,2,req,name=field37369" json:"field37369,omitempty"`
-	Field37370 []byte              `protobuf:"bytes,3,req,name=field37370" json:"field37370,omitempty"`
-}
-
-func (x *Message37331) Reset() {
-	*x = Message37331{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message37331) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message37331) ProtoMessage() {}
-
-func (x *Message37331) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message37331.ProtoReflect.Descriptor instead.
-func (*Message37331) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Message37331) GetField37367() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37367
-	}
-	return nil
-}
-
-func (x *Message37331) GetField37368() *Message37326 {
-	if x != nil {
-		return x.Field37368
-	}
-	return nil
-}
-
-func (x *Message37331) GetField37369() int64 {
-	if x != nil && x.Field37369 != nil {
-		return *x.Field37369
-	}
-	return 0
-}
-
-func (x *Message37331) GetField37370() []byte {
-	if x != nil {
-		return x.Field37370
-	}
-	return nil
-}
-
-type Message8815 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8819 *UnusedEmptyMessage `protobuf:"bytes,1,opt,name=field8819" json:"field8819,omitempty"`
-	Field8820 []*Message8768      `protobuf:"bytes,2,rep,name=field8820" json:"field8820,omitempty"`
-	Field8821 *bool               `protobuf:"varint,3,opt,name=field8821" json:"field8821,omitempty"`
-}
-
-func (x *Message8815) Reset() {
-	*x = Message8815{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8815) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8815) ProtoMessage() {}
-
-func (x *Message8815) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8815.ProtoReflect.Descriptor instead.
-func (*Message8815) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *Message8815) GetField8819() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8819
-	}
-	return nil
-}
-
-func (x *Message8815) GetField8820() []*Message8768 {
-	if x != nil {
-		return x.Field8820
-	}
-	return nil
-}
-
-func (x *Message8815) GetField8821() bool {
-	if x != nil && x.Field8821 != nil {
-		return *x.Field8821
-	}
-	return false
-}
-
-type Message7330 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7332 *UnusedEmptyMessage `protobuf:"bytes,1,opt,name=field7332" json:"field7332,omitempty"`
-	Field7333 *Message3069        `protobuf:"bytes,2,opt,name=field7333" json:"field7333,omitempty"`
-	Field7334 *Message7320        `protobuf:"bytes,3,opt,name=field7334" json:"field7334,omitempty"`
-	Field7335 *UnusedEmptyMessage `protobuf:"bytes,4,opt,name=field7335" json:"field7335,omitempty"`
-	Field7336 *bool               `protobuf:"varint,5,opt,name=field7336" json:"field7336,omitempty"`
-	Field7337 *int64              `protobuf:"varint,6,opt,name=field7337" json:"field7337,omitempty"`
-}
-
-func (x *Message7330) Reset() {
-	*x = Message7330{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7330) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7330) ProtoMessage() {}
-
-func (x *Message7330) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7330.ProtoReflect.Descriptor instead.
-func (*Message7330) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *Message7330) GetField7332() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7332
-	}
-	return nil
-}
-
-func (x *Message7330) GetField7333() *Message3069 {
-	if x != nil {
-		return x.Field7333
-	}
-	return nil
-}
-
-func (x *Message7330) GetField7334() *Message7320 {
-	if x != nil {
-		return x.Field7334
-	}
-	return nil
-}
-
-func (x *Message7330) GetField7335() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7335
-	}
-	return nil
-}
-
-func (x *Message7330) GetField7336() bool {
-	if x != nil && x.Field7336 != nil {
-		return *x.Field7336
-	}
-	return false
-}
-
-func (x *Message7330) GetField7337() int64 {
-	if x != nil && x.Field7337 != nil {
-		return *x.Field7337
-	}
-	return 0
-}
-
-type Message12960 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12962 *UnusedEmptyMessage `protobuf:"bytes,1,opt,name=field12962" json:"field12962,omitempty"`
-	Field12963 *Message12948       `protobuf:"bytes,2,opt,name=field12963" json:"field12963,omitempty"`
-}
-
-func (x *Message12960) Reset() {
-	*x = Message12960{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12960) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12960) ProtoMessage() {}
-
-func (x *Message12960) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12960.ProtoReflect.Descriptor instead.
-func (*Message12960) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *Message12960) GetField12962() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field12962
-	}
-	return nil
-}
-
-func (x *Message12960) GetField12963() *Message12948 {
-	if x != nil {
-		return x.Field12963
-	}
-	return nil
-}
-
-type Message176 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field408   *string                  `protobuf:"bytes,1,req,name=field408" json:"field408,omitempty"`
-	Field409   *int32                   `protobuf:"varint,4,opt,name=field409" json:"field409,omitempty"`
-	Field410   *string                  `protobuf:"bytes,50,opt,name=field410" json:"field410,omitempty"`
-	Field411   *int32                   `protobuf:"varint,2,opt,name=field411" json:"field411,omitempty"`
-	Field412   *uint64                  `protobuf:"varint,47,opt,name=field412" json:"field412,omitempty"`
-	Field413   *string                  `protobuf:"bytes,56,opt,name=field413" json:"field413,omitempty"`
-	Field414   *int32                   `protobuf:"varint,24,opt,name=field414" json:"field414,omitempty"`
-	Field415   *string                  `protobuf:"bytes,21,opt,name=field415" json:"field415,omitempty"`
-	Field416   []byte                   `protobuf:"bytes,3,opt,name=field416" json:"field416,omitempty"`
-	Field417   *string                  `protobuf:"bytes,57,opt,name=field417" json:"field417,omitempty"`
-	Field418   *int32                   `protobuf:"varint,51,opt,name=field418" json:"field418,omitempty"`
-	Field419   *float32                 `protobuf:"fixed32,7,opt,name=field419" json:"field419,omitempty"`
-	Field420   *bool                    `protobuf:"varint,5,opt,name=field420" json:"field420,omitempty"`
-	Field421   *bool                    `protobuf:"varint,28,opt,name=field421" json:"field421,omitempty"`
-	Field422   *int32                   `protobuf:"varint,6,opt,name=field422" json:"field422,omitempty"`
-	Field423   []int32                  `protobuf:"varint,40,rep,name=field423" json:"field423,omitempty"`
-	Field424   *UnusedEmptyMessage      `protobuf:"bytes,41,opt,name=field424" json:"field424,omitempty"`
-	Field425   *bool                    `protobuf:"varint,25,opt,name=field425" json:"field425,omitempty"`
-	Field426   *uint64                  `protobuf:"varint,26,opt,name=field426" json:"field426,omitempty"`
-	Field427   *int32                   `protobuf:"varint,38,opt,name=field427" json:"field427,omitempty"`
-	Field428   []byte                   `protobuf:"bytes,15,opt,name=field428" json:"field428,omitempty"`
-	Field429   []byte                   `protobuf:"bytes,55,opt,name=field429" json:"field429,omitempty"`
-	Field430   []byte                   `protobuf:"bytes,16,opt,name=field430" json:"field430,omitempty"`
-	Field431   []byte                   `protobuf:"bytes,23,opt,name=field431" json:"field431,omitempty"`
-	Field432   *bool                    `protobuf:"varint,33,opt,name=field432" json:"field432,omitempty"`
-	Field433   []byte                   `protobuf:"bytes,31,opt,name=field433" json:"field433,omitempty"`
-	Field434   []byte                   `protobuf:"bytes,32,opt,name=field434" json:"field434,omitempty"`
-	Field435   *int32                   `protobuf:"varint,36,opt,name=field435" json:"field435,omitempty"`
-	Field436   *uint64                  `protobuf:"varint,17,opt,name=field436" json:"field436,omitempty"`
-	Field437   *int32                   `protobuf:"varint,45,opt,name=field437" json:"field437,omitempty"`
-	Field438   *uint64                  `protobuf:"varint,18,opt,name=field438" json:"field438,omitempty"`
-	Field439   *string                  `protobuf:"bytes,46,opt,name=field439" json:"field439,omitempty"`
-	Field440   *UnusedEmptyMessage      `protobuf:"bytes,64,opt,name=field440" json:"field440,omitempty"`
-	Field441   *int32                   `protobuf:"varint,39,opt,name=field441" json:"field441,omitempty"`
-	Field442   *uint64                  `protobuf:"varint,48,opt,name=field442" json:"field442,omitempty"`
-	Field443   []byte                   `protobuf:"bytes,19,opt,name=field443" json:"field443,omitempty"`
-	Field444   []byte                   `protobuf:"bytes,42,opt,name=field444" json:"field444,omitempty"`
-	Field445   []byte                   `protobuf:"bytes,43,opt,name=field445" json:"field445,omitempty"`
-	Field446   *string                  `protobuf:"bytes,44,opt,name=field446" json:"field446,omitempty"`
-	Field447   *string                  `protobuf:"bytes,49,opt,name=field447" json:"field447,omitempty"`
-	Field448   *int64                   `protobuf:"varint,20,opt,name=field448" json:"field448,omitempty"`
-	Field449   *bool                    `protobuf:"varint,53,opt,name=field449" json:"field449,omitempty"`
-	Field450   *UnusedEmptyMessage      `protobuf:"bytes,54,opt,name=field450" json:"field450,omitempty"`
-	Field451   []*UnusedEmptyMessage    `protobuf:"bytes,22,rep,name=field451" json:"field451,omitempty"`
-	Field452   *UnusedEnum              `protobuf:"varint,27,opt,name=field452,enum=benchmarks.google_message4.UnusedEnum" json:"field452,omitempty"`
-	Field453   *int32                   `protobuf:"varint,29,opt,name=field453" json:"field453,omitempty"`
-	Field454   *int32                   `protobuf:"varint,30,opt,name=field454" json:"field454,omitempty"`
-	Field455   *UnusedEnum              `protobuf:"varint,37,opt,name=field455,enum=benchmarks.google_message4.UnusedEnum" json:"field455,omitempty"`
-	Field456   *UnusedEnum              `protobuf:"varint,34,opt,name=field456,enum=benchmarks.google_message4.UnusedEnum" json:"field456,omitempty"`
-	Field457   *int32                   `protobuf:"varint,35,opt,name=field457" json:"field457,omitempty"`
-	Message178 []*Message176_Message178 `protobuf:"group,101,rep,name=Message178,json=message178" json:"message178,omitempty"`
-	Field459   *bool                    `protobuf:"varint,52,opt,name=field459" json:"field459,omitempty"`
-	Field460   *uint64                  `protobuf:"varint,58,opt,name=field460" json:"field460,omitempty"`
-	Field461   *uint64                  `protobuf:"varint,59,opt,name=field461" json:"field461,omitempty"`
-	Field462   *UnusedEmptyMessage      `protobuf:"bytes,60,opt,name=field462" json:"field462,omitempty"`
-	Field463   *UnusedEmptyMessage      `protobuf:"bytes,61,opt,name=field463" json:"field463,omitempty"`
-	Field464   *UnusedEnum              `protobuf:"varint,62,opt,name=field464,enum=benchmarks.google_message4.UnusedEnum" json:"field464,omitempty"`
-	Field465   []string                 `protobuf:"bytes,63,rep,name=field465" json:"field465,omitempty"`
-	Field466   *UnusedEmptyMessage      `protobuf:"bytes,65,opt,name=field466" json:"field466,omitempty"`
-}
-
-func (x *Message176) Reset() {
-	*x = Message176{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message176) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message176) ProtoMessage() {}
-
-func (x *Message176) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[8]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message176.ProtoReflect.Descriptor instead.
-func (*Message176) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *Message176) GetField408() string {
-	if x != nil && x.Field408 != nil {
-		return *x.Field408
-	}
-	return ""
-}
-
-func (x *Message176) GetField409() int32 {
-	if x != nil && x.Field409 != nil {
-		return *x.Field409
-	}
-	return 0
-}
-
-func (x *Message176) GetField410() string {
-	if x != nil && x.Field410 != nil {
-		return *x.Field410
-	}
-	return ""
-}
-
-func (x *Message176) GetField411() int32 {
-	if x != nil && x.Field411 != nil {
-		return *x.Field411
-	}
-	return 0
-}
-
-func (x *Message176) GetField412() uint64 {
-	if x != nil && x.Field412 != nil {
-		return *x.Field412
-	}
-	return 0
-}
-
-func (x *Message176) GetField413() string {
-	if x != nil && x.Field413 != nil {
-		return *x.Field413
-	}
-	return ""
-}
-
-func (x *Message176) GetField414() int32 {
-	if x != nil && x.Field414 != nil {
-		return *x.Field414
-	}
-	return 0
-}
-
-func (x *Message176) GetField415() string {
-	if x != nil && x.Field415 != nil {
-		return *x.Field415
-	}
-	return ""
-}
-
-func (x *Message176) GetField416() []byte {
-	if x != nil {
-		return x.Field416
-	}
-	return nil
-}
-
-func (x *Message176) GetField417() string {
-	if x != nil && x.Field417 != nil {
-		return *x.Field417
-	}
-	return ""
-}
-
-func (x *Message176) GetField418() int32 {
-	if x != nil && x.Field418 != nil {
-		return *x.Field418
-	}
-	return 0
-}
-
-func (x *Message176) GetField419() float32 {
-	if x != nil && x.Field419 != nil {
-		return *x.Field419
-	}
-	return 0
-}
-
-func (x *Message176) GetField420() bool {
-	if x != nil && x.Field420 != nil {
-		return *x.Field420
-	}
-	return false
-}
-
-func (x *Message176) GetField421() bool {
-	if x != nil && x.Field421 != nil {
-		return *x.Field421
-	}
-	return false
-}
-
-func (x *Message176) GetField422() int32 {
-	if x != nil && x.Field422 != nil {
-		return *x.Field422
-	}
-	return 0
-}
-
-func (x *Message176) GetField423() []int32 {
-	if x != nil {
-		return x.Field423
-	}
-	return nil
-}
-
-func (x *Message176) GetField424() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field424
-	}
-	return nil
-}
-
-func (x *Message176) GetField425() bool {
-	if x != nil && x.Field425 != nil {
-		return *x.Field425
-	}
-	return false
-}
-
-func (x *Message176) GetField426() uint64 {
-	if x != nil && x.Field426 != nil {
-		return *x.Field426
-	}
-	return 0
-}
-
-func (x *Message176) GetField427() int32 {
-	if x != nil && x.Field427 != nil {
-		return *x.Field427
-	}
-	return 0
-}
-
-func (x *Message176) GetField428() []byte {
-	if x != nil {
-		return x.Field428
-	}
-	return nil
-}
-
-func (x *Message176) GetField429() []byte {
-	if x != nil {
-		return x.Field429
-	}
-	return nil
-}
-
-func (x *Message176) GetField430() []byte {
-	if x != nil {
-		return x.Field430
-	}
-	return nil
-}
-
-func (x *Message176) GetField431() []byte {
-	if x != nil {
-		return x.Field431
-	}
-	return nil
-}
-
-func (x *Message176) GetField432() bool {
-	if x != nil && x.Field432 != nil {
-		return *x.Field432
-	}
-	return false
-}
-
-func (x *Message176) GetField433() []byte {
-	if x != nil {
-		return x.Field433
-	}
-	return nil
-}
-
-func (x *Message176) GetField434() []byte {
-	if x != nil {
-		return x.Field434
-	}
-	return nil
-}
-
-func (x *Message176) GetField435() int32 {
-	if x != nil && x.Field435 != nil {
-		return *x.Field435
-	}
-	return 0
-}
-
-func (x *Message176) GetField436() uint64 {
-	if x != nil && x.Field436 != nil {
-		return *x.Field436
-	}
-	return 0
-}
-
-func (x *Message176) GetField437() int32 {
-	if x != nil && x.Field437 != nil {
-		return *x.Field437
-	}
-	return 0
-}
-
-func (x *Message176) GetField438() uint64 {
-	if x != nil && x.Field438 != nil {
-		return *x.Field438
-	}
-	return 0
-}
-
-func (x *Message176) GetField439() string {
-	if x != nil && x.Field439 != nil {
-		return *x.Field439
-	}
-	return ""
-}
-
-func (x *Message176) GetField440() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field440
-	}
-	return nil
-}
-
-func (x *Message176) GetField441() int32 {
-	if x != nil && x.Field441 != nil {
-		return *x.Field441
-	}
-	return 0
-}
-
-func (x *Message176) GetField442() uint64 {
-	if x != nil && x.Field442 != nil {
-		return *x.Field442
-	}
-	return 0
-}
-
-func (x *Message176) GetField443() []byte {
-	if x != nil {
-		return x.Field443
-	}
-	return nil
-}
-
-func (x *Message176) GetField444() []byte {
-	if x != nil {
-		return x.Field444
-	}
-	return nil
-}
-
-func (x *Message176) GetField445() []byte {
-	if x != nil {
-		return x.Field445
-	}
-	return nil
-}
-
-func (x *Message176) GetField446() string {
-	if x != nil && x.Field446 != nil {
-		return *x.Field446
-	}
-	return ""
-}
-
-func (x *Message176) GetField447() string {
-	if x != nil && x.Field447 != nil {
-		return *x.Field447
-	}
-	return ""
-}
-
-func (x *Message176) GetField448() int64 {
-	if x != nil && x.Field448 != nil {
-		return *x.Field448
-	}
-	return 0
-}
-
-func (x *Message176) GetField449() bool {
-	if x != nil && x.Field449 != nil {
-		return *x.Field449
-	}
-	return false
-}
-
-func (x *Message176) GetField450() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field450
-	}
-	return nil
-}
-
-func (x *Message176) GetField451() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field451
-	}
-	return nil
-}
-
-func (x *Message176) GetField452() UnusedEnum {
-	if x != nil && x.Field452 != nil {
-		return *x.Field452
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message176) GetField453() int32 {
-	if x != nil && x.Field453 != nil {
-		return *x.Field453
-	}
-	return 0
-}
-
-func (x *Message176) GetField454() int32 {
-	if x != nil && x.Field454 != nil {
-		return *x.Field454
-	}
-	return 0
-}
-
-func (x *Message176) GetField455() UnusedEnum {
-	if x != nil && x.Field455 != nil {
-		return *x.Field455
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message176) GetField456() UnusedEnum {
-	if x != nil && x.Field456 != nil {
-		return *x.Field456
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message176) GetField457() int32 {
-	if x != nil && x.Field457 != nil {
-		return *x.Field457
-	}
-	return 0
-}
-
-func (x *Message176) GetMessage178() []*Message176_Message178 {
-	if x != nil {
-		return x.Message178
-	}
-	return nil
-}
-
-func (x *Message176) GetField459() bool {
-	if x != nil && x.Field459 != nil {
-		return *x.Field459
-	}
-	return false
-}
-
-func (x *Message176) GetField460() uint64 {
-	if x != nil && x.Field460 != nil {
-		return *x.Field460
-	}
-	return 0
-}
-
-func (x *Message176) GetField461() uint64 {
-	if x != nil && x.Field461 != nil {
-		return *x.Field461
-	}
-	return 0
-}
-
-func (x *Message176) GetField462() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field462
-	}
-	return nil
-}
-
-func (x *Message176) GetField463() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field463
-	}
-	return nil
-}
-
-func (x *Message176) GetField464() UnusedEnum {
-	if x != nil && x.Field464 != nil {
-		return *x.Field464
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message176) GetField465() []string {
-	if x != nil {
-		return x.Field465
-	}
-	return nil
-}
-
-func (x *Message176) GetField466() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field466
-	}
-	return nil
-}
-
-type Message8817 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8825 *UnusedEmptyMessage `protobuf:"bytes,1,opt,name=field8825" json:"field8825,omitempty"`
-	Field8826 []*Message8768      `protobuf:"bytes,2,rep,name=field8826" json:"field8826,omitempty"`
-	Field8827 *string             `protobuf:"bytes,3,opt,name=field8827" json:"field8827,omitempty"`
-}
-
-func (x *Message8817) Reset() {
-	*x = Message8817{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[9]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8817) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8817) ProtoMessage() {}
-
-func (x *Message8817) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[9]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8817.ProtoReflect.Descriptor instead.
-func (*Message8817) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *Message8817) GetField8825() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8825
-	}
-	return nil
-}
-
-func (x *Message8817) GetField8826() []*Message8768 {
-	if x != nil {
-		return x.Field8826
-	}
-	return nil
-}
-
-func (x *Message8817) GetField8827() string {
-	if x != nil && x.Field8827 != nil {
-		return *x.Field8827
-	}
-	return ""
-}
-
-type Message8835 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8837 *UnusedEmptyMessage `protobuf:"bytes,1,opt,name=field8837" json:"field8837,omitempty"`
-	Field8838 []string            `protobuf:"bytes,2,rep,name=field8838" json:"field8838,omitempty"`
-	Field8839 *UnusedEnum         `protobuf:"varint,3,opt,name=field8839,enum=benchmarks.google_message4.UnusedEnum" json:"field8839,omitempty"`
-}
-
-func (x *Message8835) Reset() {
-	*x = Message8835{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[10]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8835) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8835) ProtoMessage() {}
-
-func (x *Message8835) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[10]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8835.ProtoReflect.Descriptor instead.
-func (*Message8835) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *Message8835) GetField8837() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8837
-	}
-	return nil
-}
-
-func (x *Message8835) GetField8838() []string {
-	if x != nil {
-		return x.Field8838
-	}
-	return nil
-}
-
-func (x *Message8835) GetField8839() UnusedEnum {
-	if x != nil && x.Field8839 != nil {
-		return *x.Field8839
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-type Message37333 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field37372 *UnusedEmptyMessage `protobuf:"bytes,3,opt,name=field37372" json:"field37372,omitempty"`
-	Field37373 *Message37326       `protobuf:"bytes,1,req,name=field37373" json:"field37373,omitempty"`
-	Field37374 *uint64             `protobuf:"varint,2,opt,name=field37374" json:"field37374,omitempty"`
-}
-
-func (x *Message37333) Reset() {
-	*x = Message37333{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[11]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message37333) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message37333) ProtoMessage() {}
-
-func (x *Message37333) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[11]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message37333.ProtoReflect.Descriptor instead.
-func (*Message37333) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *Message37333) GetField37372() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37372
-	}
-	return nil
-}
-
-func (x *Message37333) GetField37373() *Message37326 {
-	if x != nil {
-		return x.Field37373
-	}
-	return nil
-}
-
-func (x *Message37333) GetField37374() uint64 {
-	if x != nil && x.Field37374 != nil {
-		return *x.Field37374
-	}
-	return 0
-}
-
-type Message13000 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field13015 *int64          `protobuf:"varint,1,opt,name=field13015" json:"field13015,omitempty"`
-	Field13016 []*Message12979 `protobuf:"bytes,2,rep,name=field13016" json:"field13016,omitempty"`
-}
-
-func (x *Message13000) Reset() {
-	*x = Message13000{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[12]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message13000) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message13000) ProtoMessage() {}
-
-func (x *Message13000) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[12]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message13000.ProtoReflect.Descriptor instead.
-func (*Message13000) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *Message13000) GetField13015() int64 {
-	if x != nil && x.Field13015 != nil {
-		return *x.Field13015
-	}
-	return 0
-}
-
-func (x *Message13000) GetField13016() []*Message12979 {
-	if x != nil {
-		return x.Field13016
-	}
-	return nil
-}
-
-type Message37335 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field37376 *UnusedEmptyMessage `protobuf:"bytes,4,opt,name=field37376" json:"field37376,omitempty"`
-	Field37377 *Message37326       `protobuf:"bytes,1,req,name=field37377" json:"field37377,omitempty"`
-	Field37378 *Message37173       `protobuf:"bytes,2,req,name=field37378" json:"field37378,omitempty"`
-	Field37379 *uint64             `protobuf:"varint,3,opt,name=field37379" json:"field37379,omitempty"`
-}
-
-func (x *Message37335) Reset() {
-	*x = Message37335{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[13]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message37335) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message37335) ProtoMessage() {}
-
-func (x *Message37335) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[13]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message37335.ProtoReflect.Descriptor instead.
-func (*Message37335) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *Message37335) GetField37376() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37376
-	}
-	return nil
-}
-
-func (x *Message37335) GetField37377() *Message37326 {
-	if x != nil {
-		return x.Field37377
-	}
-	return nil
-}
-
-func (x *Message37335) GetField37378() *Message37173 {
-	if x != nil {
-		return x.Field37378
-	}
-	return nil
-}
-
-func (x *Message37335) GetField37379() uint64 {
-	if x != nil && x.Field37379 != nil {
-		return *x.Field37379
-	}
-	return 0
-}
-
-type Message8848 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8850 *UnusedEmptyMessage `protobuf:"bytes,1,opt,name=field8850" json:"field8850,omitempty"`
-	Field8851 *string             `protobuf:"bytes,2,opt,name=field8851" json:"field8851,omitempty"`
-	Field8852 []byte              `protobuf:"bytes,3,opt,name=field8852" json:"field8852,omitempty"`
-}
-
-func (x *Message8848) Reset() {
-	*x = Message8848{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[14]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8848) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8848) ProtoMessage() {}
-
-func (x *Message8848) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[14]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8848.ProtoReflect.Descriptor instead.
-func (*Message8848) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *Message8848) GetField8850() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8850
-	}
-	return nil
-}
-
-func (x *Message8848) GetField8851() string {
-	if x != nil && x.Field8851 != nil {
-		return *x.Field8851
-	}
-	return ""
-}
-
-func (x *Message8848) GetField8852() []byte {
-	if x != nil {
-		return x.Field8852
-	}
-	return nil
-}
-
-type Message13035 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field13058 *int64  `protobuf:"varint,1,opt,name=field13058" json:"field13058,omitempty"`
-	Field13059 []int64 `protobuf:"varint,2,rep,name=field13059" json:"field13059,omitempty"`
-}
-
-func (x *Message13035) Reset() {
-	*x = Message13035{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[15]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message13035) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message13035) ProtoMessage() {}
-
-func (x *Message13035) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[15]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message13035.ProtoReflect.Descriptor instead.
-func (*Message13035) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{15}
-}
-
-func (x *Message13035) GetField13058() int64 {
-	if x != nil && x.Field13058 != nil {
-		return *x.Field13058
-	}
-	return 0
-}
-
-func (x *Message13035) GetField13059() []int64 {
-	if x != nil {
-		return x.Field13059
-	}
-	return nil
-}
-
-type Message8856 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8858 *UnusedEmptyMessage `protobuf:"bytes,1,opt,name=field8858" json:"field8858,omitempty"`
-	Field8859 *string             `protobuf:"bytes,2,opt,name=field8859" json:"field8859,omitempty"`
-}
-
-func (x *Message8856) Reset() {
-	*x = Message8856{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[16]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8856) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8856) ProtoMessage() {}
-
-func (x *Message8856) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[16]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8856.ProtoReflect.Descriptor instead.
-func (*Message8856) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *Message8856) GetField8858() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8858
-	}
-	return nil
-}
-
-func (x *Message8856) GetField8859() string {
-	if x != nil && x.Field8859 != nil {
-		return *x.Field8859
-	}
-	return ""
-}
-
-type Message12908 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12912 *UnusedEmptyMessage `protobuf:"bytes,1,opt,name=field12912" json:"field12912,omitempty"`
-	Field12913 *string             `protobuf:"bytes,2,opt,name=field12913" json:"field12913,omitempty"`
-	Field12914 *Message12799       `protobuf:"bytes,3,opt,name=field12914" json:"field12914,omitempty"`
-	Field12915 *int64              `protobuf:"varint,4,opt,name=field12915" json:"field12915,omitempty"`
-	Field12916 *Message3804        `protobuf:"bytes,5,opt,name=field12916" json:"field12916,omitempty"`
-	Field12917 *Message12870       `protobuf:"bytes,6,opt,name=field12917" json:"field12917,omitempty"`
-}
-
-func (x *Message12908) Reset() {
-	*x = Message12908{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[17]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12908) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12908) ProtoMessage() {}
-
-func (x *Message12908) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[17]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12908.ProtoReflect.Descriptor instead.
-func (*Message12908) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{17}
-}
-
-func (x *Message12908) GetField12912() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field12912
-	}
-	return nil
-}
-
-func (x *Message12908) GetField12913() string {
-	if x != nil && x.Field12913 != nil {
-		return *x.Field12913
-	}
-	return ""
-}
-
-func (x *Message12908) GetField12914() *Message12799 {
-	if x != nil {
-		return x.Field12914
-	}
-	return nil
-}
-
-func (x *Message12908) GetField12915() int64 {
-	if x != nil && x.Field12915 != nil {
-		return *x.Field12915
-	}
-	return 0
-}
-
-func (x *Message12908) GetField12916() *Message3804 {
-	if x != nil {
-		return x.Field12916
-	}
-	return nil
-}
-
-func (x *Message12908) GetField12917() *Message12870 {
-	if x != nil {
-		return x.Field12917
-	}
-	return nil
-}
-
-type Message12910 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12920 *UnusedEmptyMessage `protobuf:"bytes,1,opt,name=field12920" json:"field12920,omitempty"`
-	Field12921 *Message12818       `protobuf:"bytes,2,opt,name=field12921" json:"field12921,omitempty"`
-	Field12922 []*Message12903     `protobuf:"bytes,3,rep,name=field12922" json:"field12922,omitempty"`
-}
-
-func (x *Message12910) Reset() {
-	*x = Message12910{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[18]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12910) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12910) ProtoMessage() {}
-
-func (x *Message12910) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[18]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12910.ProtoReflect.Descriptor instead.
-func (*Message12910) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{18}
-}
-
-func (x *Message12910) GetField12920() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field12920
-	}
-	return nil
-}
-
-func (x *Message12910) GetField12921() *Message12818 {
-	if x != nil {
-		return x.Field12921
-	}
-	return nil
-}
-
-func (x *Message12910) GetField12922() []*Message12903 {
-	if x != nil {
-		return x.Field12922
-	}
-	return nil
-}
-
-type Message37327 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field37347 *UnusedEmptyMessage `protobuf:"bytes,11,opt,name=field37347" json:"field37347,omitempty"`
-	Field37348 *Message37326       `protobuf:"bytes,1,req,name=field37348" json:"field37348,omitempty"`
-	Field37349 *bool               `protobuf:"varint,2,opt,name=field37349" json:"field37349,omitempty"`
-	Field37350 *bool               `protobuf:"varint,3,opt,name=field37350" json:"field37350,omitempty"`
-	Field37351 *bool               `protobuf:"varint,4,opt,name=field37351" json:"field37351,omitempty"`
-	Field37352 *bool               `protobuf:"varint,5,opt,name=field37352" json:"field37352,omitempty"`
-	Field37353 *bool               `protobuf:"varint,6,opt,name=field37353" json:"field37353,omitempty"`
-	Field37354 *UnusedEmptyMessage `protobuf:"bytes,7,opt,name=field37354" json:"field37354,omitempty"`
-	Field37355 *uint64             `protobuf:"varint,8,opt,name=field37355" json:"field37355,omitempty"`
-	Field37356 *bool               `protobuf:"varint,9,opt,name=field37356" json:"field37356,omitempty"`
-	Field37357 *bool               `protobuf:"varint,10,opt,name=field37357" json:"field37357,omitempty"`
-}
-
-func (x *Message37327) Reset() {
-	*x = Message37327{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[19]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message37327) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message37327) ProtoMessage() {}
-
-func (x *Message37327) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[19]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message37327.ProtoReflect.Descriptor instead.
-func (*Message37327) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{19}
-}
-
-func (x *Message37327) GetField37347() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37347
-	}
-	return nil
-}
-
-func (x *Message37327) GetField37348() *Message37326 {
-	if x != nil {
-		return x.Field37348
-	}
-	return nil
-}
-
-func (x *Message37327) GetField37349() bool {
-	if x != nil && x.Field37349 != nil {
-		return *x.Field37349
-	}
-	return false
-}
-
-func (x *Message37327) GetField37350() bool {
-	if x != nil && x.Field37350 != nil {
-		return *x.Field37350
-	}
-	return false
-}
-
-func (x *Message37327) GetField37351() bool {
-	if x != nil && x.Field37351 != nil {
-		return *x.Field37351
-	}
-	return false
-}
-
-func (x *Message37327) GetField37352() bool {
-	if x != nil && x.Field37352 != nil {
-		return *x.Field37352
-	}
-	return false
-}
-
-func (x *Message37327) GetField37353() bool {
-	if x != nil && x.Field37353 != nil {
-		return *x.Field37353
-	}
-	return false
-}
-
-func (x *Message37327) GetField37354() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37354
-	}
-	return nil
-}
-
-func (x *Message37327) GetField37355() uint64 {
-	if x != nil && x.Field37355 != nil {
-		return *x.Field37355
-	}
-	return 0
-}
-
-func (x *Message37327) GetField37356() bool {
-	if x != nil && x.Field37356 != nil {
-		return *x.Field37356
-	}
-	return false
-}
-
-func (x *Message37327) GetField37357() bool {
-	if x != nil && x.Field37357 != nil {
-		return *x.Field37357
-	}
-	return false
-}
-
-type Message37329 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field37359 *UnusedEmptyMessage `protobuf:"bytes,6,opt,name=field37359" json:"field37359,omitempty"`
-	Field37360 *Message37326       `protobuf:"bytes,1,req,name=field37360" json:"field37360,omitempty"`
-	Field37361 *int64              `protobuf:"varint,2,req,name=field37361" json:"field37361,omitempty"`
-	Field37362 *int64              `protobuf:"varint,3,req,name=field37362" json:"field37362,omitempty"`
-	Field37363 *bool               `protobuf:"varint,4,opt,name=field37363" json:"field37363,omitempty"`
-}
-
-func (x *Message37329) Reset() {
-	*x = Message37329{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[20]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message37329) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message37329) ProtoMessage() {}
-
-func (x *Message37329) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[20]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message37329.ProtoReflect.Descriptor instead.
-func (*Message37329) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{20}
-}
-
-func (x *Message37329) GetField37359() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37359
-	}
-	return nil
-}
-
-func (x *Message37329) GetField37360() *Message37326 {
-	if x != nil {
-		return x.Field37360
-	}
-	return nil
-}
-
-func (x *Message37329) GetField37361() int64 {
-	if x != nil && x.Field37361 != nil {
-		return *x.Field37361
-	}
-	return 0
-}
-
-func (x *Message37329) GetField37362() int64 {
-	if x != nil && x.Field37362 != nil {
-		return *x.Field37362
-	}
-	return 0
-}
-
-func (x *Message37329) GetField37363() bool {
-	if x != nil && x.Field37363 != nil {
-		return *x.Field37363
-	}
-	return false
-}
-
-type Message2517 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field2519 *UnusedEmptyMessage `protobuf:"bytes,1,opt,name=field2519" json:"field2519,omitempty"`
-	Field2520 *Message2356        `protobuf:"bytes,2,opt,name=field2520" json:"field2520,omitempty"`
-	Field2521 *Message0           `protobuf:"bytes,3,opt,name=field2521" json:"field2521,omitempty"`
-	Field2522 *Message2463        `protobuf:"bytes,4,opt,name=field2522" json:"field2522,omitempty"`
-	Field2523 []*Message971       `protobuf:"bytes,5,rep,name=field2523" json:"field2523,omitempty"`
-}
-
-func (x *Message2517) Reset() {
-	*x = Message2517{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[21]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message2517) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message2517) ProtoMessage() {}
-
-func (x *Message2517) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[21]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message2517.ProtoReflect.Descriptor instead.
-func (*Message2517) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{21}
-}
-
-func (x *Message2517) GetField2519() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field2519
-	}
-	return nil
-}
-
-func (x *Message2517) GetField2520() *Message2356 {
-	if x != nil {
-		return x.Field2520
-	}
-	return nil
-}
-
-func (x *Message2517) GetField2521() *Message0 {
-	if x != nil {
-		return x.Field2521
-	}
-	return nil
-}
-
-func (x *Message2517) GetField2522() *Message2463 {
-	if x != nil {
-		return x.Field2522
-	}
-	return nil
-}
-
-func (x *Message2517) GetField2523() []*Message971 {
-	if x != nil {
-		return x.Field2523
-	}
-	return nil
-}
-
-type Message12748 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12754 *UnusedEmptyMessage `protobuf:"bytes,1,opt,name=field12754" json:"field12754,omitempty"`
-	Field12755 *string             `protobuf:"bytes,2,opt,name=field12755" json:"field12755,omitempty"`
-	Field12756 *string             `protobuf:"bytes,3,opt,name=field12756" json:"field12756,omitempty"`
-	Field12757 *Enum12735          `protobuf:"varint,4,opt,name=field12757,enum=benchmarks.google_message4.Enum12735" json:"field12757,omitempty"`
-}
-
-func (x *Message12748) Reset() {
-	*x = Message12748{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[22]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12748) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12748) ProtoMessage() {}
-
-func (x *Message12748) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[22]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12748.ProtoReflect.Descriptor instead.
-func (*Message12748) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{22}
-}
-
-func (x *Message12748) GetField12754() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field12754
-	}
-	return nil
-}
-
-func (x *Message12748) GetField12755() string {
-	if x != nil && x.Field12755 != nil {
-		return *x.Field12755
-	}
-	return ""
-}
-
-func (x *Message12748) GetField12756() string {
-	if x != nil && x.Field12756 != nil {
-		return *x.Field12756
-	}
-	return ""
-}
-
-func (x *Message12748) GetField12757() Enum12735 {
-	if x != nil && x.Field12757 != nil {
-		return *x.Field12757
-	}
-	return Enum12735_ENUM_VALUE12736
-}
-
-type Message12687 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12701 []*Message12686 `protobuf:"bytes,1,rep,name=field12701" json:"field12701,omitempty"`
-}
-
-func (x *Message12687) Reset() {
-	*x = Message12687{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[23]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12687) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12687) ProtoMessage() {}
-
-func (x *Message12687) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[23]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12687.ProtoReflect.Descriptor instead.
-func (*Message12687) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{23}
-}
-
-func (x *Message12687) GetField12701() []*Message12686 {
-	if x != nil {
-		return x.Field12701
-	}
-	return nil
-}
-
-type Message11948 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field11954 *string         `protobuf:"bytes,1,opt,name=field11954" json:"field11954,omitempty"`
-	Field11955 []*Message11949 `protobuf:"bytes,2,rep,name=field11955" json:"field11955,omitempty"`
-	Field11956 *bool           `protobuf:"varint,3,opt,name=field11956" json:"field11956,omitempty"`
-}
-
-func (x *Message11948) Reset() {
-	*x = Message11948{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[24]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message11948) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message11948) ProtoMessage() {}
-
-func (x *Message11948) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[24]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message11948.ProtoReflect.Descriptor instead.
-func (*Message11948) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{24}
-}
-
-func (x *Message11948) GetField11954() string {
-	if x != nil && x.Field11954 != nil {
-		return *x.Field11954
-	}
-	return ""
-}
-
-func (x *Message11948) GetField11955() []*Message11949 {
-	if x != nil {
-		return x.Field11955
-	}
-	return nil
-}
-
-func (x *Message11948) GetField11956() bool {
-	if x != nil && x.Field11956 != nil {
-		return *x.Field11956
-	}
-	return false
-}
-
-type Message11976 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12002 []*Message11975 `protobuf:"bytes,1,rep,name=field12002" json:"field12002,omitempty"`
-}
-
-func (x *Message11976) Reset() {
-	*x = Message11976{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[25]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message11976) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message11976) ProtoMessage() {}
-
-func (x *Message11976) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[25]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message11976.ProtoReflect.Descriptor instead.
-func (*Message11976) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{25}
-}
-
-func (x *Message11976) GetField12002() []*Message11975 {
-	if x != nil {
-		return x.Field12002
-	}
-	return nil
-}
-
-type Message7320 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7323 *UnusedEmptyMessage `protobuf:"bytes,1,opt,name=field7323" json:"field7323,omitempty"`
-	Field7324 *Message7287        `protobuf:"bytes,8,opt,name=field7324" json:"field7324,omitempty"`
-}
-
-func (x *Message7320) Reset() {
-	*x = Message7320{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[26]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7320) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7320) ProtoMessage() {}
-
-func (x *Message7320) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[26]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7320.ProtoReflect.Descriptor instead.
-func (*Message7320) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{26}
-}
-
-func (x *Message7320) GetField7323() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7323
-	}
-	return nil
-}
-
-func (x *Message7320) GetField7324() *Message7287 {
-	if x != nil {
-		return x.Field7324
-	}
-	return nil
-}
-
-type Message3069 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	Field3374   *Message3061               `protobuf:"bytes,1,opt,name=field3374" json:"field3374,omitempty"`
-	Field3375   []byte                     `protobuf:"bytes,2,opt,name=field3375" json:"field3375,omitempty"`
-	Message3070 []*Message3069_Message3070 `protobuf:"group,3,rep,name=Message3070,json=message3070" json:"message3070,omitempty"`
-}
-
-func (x *Message3069) Reset() {
-	*x = Message3069{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[27]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3069) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3069) ProtoMessage() {}
-
-func (x *Message3069) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[27]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3069.ProtoReflect.Descriptor instead.
-func (*Message3069) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{27}
-}
-
-func (x *Message3069) GetField3374() *Message3061 {
-	if x != nil {
-		return x.Field3374
-	}
-	return nil
-}
-
-func (x *Message3069) GetField3375() []byte {
-	if x != nil {
-		return x.Field3375
-	}
-	return nil
-}
-
-func (x *Message3069) GetMessage3070() []*Message3069_Message3070 {
-	if x != nil {
-		return x.Message3070
-	}
-	return nil
-}
-
-type Message12948 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12958 []*Message12949 `protobuf:"bytes,1,rep,name=field12958" json:"field12958,omitempty"`
-}
-
-func (x *Message12948) Reset() {
-	*x = Message12948{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[28]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12948) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12948) ProtoMessage() {}
-
-func (x *Message12948) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[28]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12948.ProtoReflect.Descriptor instead.
-func (*Message12948) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{28}
-}
-
-func (x *Message12948) GetField12958() []*Message12949 {
-	if x != nil {
-		return x.Field12958
-	}
-	return nil
-}
-
-type Message8768 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8782 *string             `protobuf:"bytes,1,opt,name=field8782" json:"field8782,omitempty"`
-	Field8783 *Message8572        `protobuf:"bytes,2,opt,name=field8783" json:"field8783,omitempty"`
-	Field8784 *bool               `protobuf:"varint,3,opt,name=field8784" json:"field8784,omitempty"`
-	Field8785 []*Message8774      `protobuf:"bytes,4,rep,name=field8785" json:"field8785,omitempty"`
-	Field8786 *int64              `protobuf:"varint,5,opt,name=field8786" json:"field8786,omitempty"`
-	Field8787 *UnusedEmptyMessage `protobuf:"bytes,6,opt,name=field8787" json:"field8787,omitempty"`
-	Field8788 *string             `protobuf:"bytes,7,opt,name=field8788" json:"field8788,omitempty"`
-}
-
-func (x *Message8768) Reset() {
-	*x = Message8768{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[29]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8768) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8768) ProtoMessage() {}
-
-func (x *Message8768) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[29]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8768.ProtoReflect.Descriptor instead.
-func (*Message8768) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{29}
-}
-
-func (x *Message8768) GetField8782() string {
-	if x != nil && x.Field8782 != nil {
-		return *x.Field8782
-	}
-	return ""
-}
-
-func (x *Message8768) GetField8783() *Message8572 {
-	if x != nil {
-		return x.Field8783
-	}
-	return nil
-}
-
-func (x *Message8768) GetField8784() bool {
-	if x != nil && x.Field8784 != nil {
-		return *x.Field8784
-	}
-	return false
-}
-
-func (x *Message8768) GetField8785() []*Message8774 {
-	if x != nil {
-		return x.Field8785
-	}
-	return nil
-}
-
-func (x *Message8768) GetField8786() int64 {
-	if x != nil && x.Field8786 != nil {
-		return *x.Field8786
-	}
-	return 0
-}
-
-func (x *Message8768) GetField8787() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8787
-	}
-	return nil
-}
-
-func (x *Message8768) GetField8788() string {
-	if x != nil && x.Field8788 != nil {
-		return *x.Field8788
-	}
-	return ""
-}
-
-type Message12979 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12981 []byte              `protobuf:"bytes,1,req,name=field12981" json:"field12981,omitempty"`
-	Field12982 []string            `protobuf:"bytes,2,rep,name=field12982" json:"field12982,omitempty"`
-	Field12983 *UnusedEmptyMessage `protobuf:"bytes,3,opt,name=field12983" json:"field12983,omitempty"`
-	Field12984 *int64              `protobuf:"varint,4,opt,name=field12984" json:"field12984,omitempty"`
-	Field12985 *string             `protobuf:"bytes,5,opt,name=field12985" json:"field12985,omitempty"`
-	Field12986 *int32              `protobuf:"varint,6,opt,name=field12986" json:"field12986,omitempty"`
-	Field12987 *UnusedEmptyMessage `protobuf:"bytes,7,opt,name=field12987" json:"field12987,omitempty"`
-}
-
-func (x *Message12979) Reset() {
-	*x = Message12979{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[30]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12979) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12979) ProtoMessage() {}
-
-func (x *Message12979) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[30]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12979.ProtoReflect.Descriptor instead.
-func (*Message12979) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{30}
-}
-
-func (x *Message12979) GetField12981() []byte {
-	if x != nil {
-		return x.Field12981
-	}
-	return nil
-}
-
-func (x *Message12979) GetField12982() []string {
-	if x != nil {
-		return x.Field12982
-	}
-	return nil
-}
-
-func (x *Message12979) GetField12983() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field12983
-	}
-	return nil
-}
-
-func (x *Message12979) GetField12984() int64 {
-	if x != nil && x.Field12984 != nil {
-		return *x.Field12984
-	}
-	return 0
-}
-
-func (x *Message12979) GetField12985() string {
-	if x != nil && x.Field12985 != nil {
-		return *x.Field12985
-	}
-	return ""
-}
-
-func (x *Message12979) GetField12986() int32 {
-	if x != nil && x.Field12986 != nil {
-		return *x.Field12986
-	}
-	return 0
-}
-
-func (x *Message12979) GetField12987() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field12987
-	}
-	return nil
-}
-
-type Message37173 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field37252 *string             `protobuf:"bytes,1,opt,name=field37252" json:"field37252,omitempty"`
-	Field37253 *int64              `protobuf:"varint,2,opt,name=field37253" json:"field37253,omitempty"`
-	Field37254 *UnusedEnum         `protobuf:"varint,4,opt,name=field37254,enum=benchmarks.google_message4.UnusedEnum" json:"field37254,omitempty"`
-	Field37255 *bool               `protobuf:"varint,5,opt,name=field37255" json:"field37255,omitempty"`
-	Field37256 *bool               `protobuf:"varint,6,opt,name=field37256" json:"field37256,omitempty"`
-	Field37257 *bool               `protobuf:"varint,7,opt,name=field37257" json:"field37257,omitempty"`
-	Field37258 *string             `protobuf:"bytes,8,opt,name=field37258" json:"field37258,omitempty"`
-	Field37259 *string             `protobuf:"bytes,9,opt,name=field37259" json:"field37259,omitempty"`
-	Field37260 *uint32             `protobuf:"varint,10,opt,name=field37260" json:"field37260,omitempty"`
-	Field37261 *uint32             `protobuf:"fixed32,11,opt,name=field37261" json:"field37261,omitempty"`
-	Field37262 *string             `protobuf:"bytes,12,opt,name=field37262" json:"field37262,omitempty"`
-	Field37263 *string             `protobuf:"bytes,13,opt,name=field37263" json:"field37263,omitempty"`
-	Field37264 *string             `protobuf:"bytes,14,opt,name=field37264" json:"field37264,omitempty"`
-	Field37265 *int32              `protobuf:"varint,15,opt,name=field37265" json:"field37265,omitempty"`
-	Field37266 *int64              `protobuf:"varint,16,opt,name=field37266" json:"field37266,omitempty"`
-	Field37267 *int64              `protobuf:"varint,17,opt,name=field37267" json:"field37267,omitempty"`
-	Field37268 *int32              `protobuf:"varint,18,opt,name=field37268" json:"field37268,omitempty"`
-	Field37269 *int32              `protobuf:"varint,19,opt,name=field37269" json:"field37269,omitempty"`
-	Field37270 *UnusedEmptyMessage `protobuf:"bytes,20,opt,name=field37270" json:"field37270,omitempty"`
-	Field37271 *UnusedEmptyMessage `protobuf:"bytes,21,opt,name=field37271" json:"field37271,omitempty"`
-	Field37272 *UnusedEmptyMessage `protobuf:"bytes,22,opt,name=field37272" json:"field37272,omitempty"`
-	Field37273 *UnusedEmptyMessage `protobuf:"bytes,23,opt,name=field37273" json:"field37273,omitempty"`
-	Field37274 *UnusedEmptyMessage `protobuf:"bytes,24,opt,name=field37274" json:"field37274,omitempty"`
-	Field37275 *string             `protobuf:"bytes,25,opt,name=field37275" json:"field37275,omitempty"`
-	Field37276 *bool               `protobuf:"varint,26,opt,name=field37276" json:"field37276,omitempty"`
-}
-
-func (x *Message37173) Reset() {
-	*x = Message37173{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[31]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message37173) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message37173) ProtoMessage() {}
-
-func (x *Message37173) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[31]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message37173.ProtoReflect.Descriptor instead.
-func (*Message37173) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{31}
-}
-
-func (x *Message37173) GetField37252() string {
-	if x != nil && x.Field37252 != nil {
-		return *x.Field37252
-	}
-	return ""
-}
-
-func (x *Message37173) GetField37253() int64 {
-	if x != nil && x.Field37253 != nil {
-		return *x.Field37253
-	}
-	return 0
-}
-
-func (x *Message37173) GetField37254() UnusedEnum {
-	if x != nil && x.Field37254 != nil {
-		return *x.Field37254
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message37173) GetField37255() bool {
-	if x != nil && x.Field37255 != nil {
-		return *x.Field37255
-	}
-	return false
-}
-
-func (x *Message37173) GetField37256() bool {
-	if x != nil && x.Field37256 != nil {
-		return *x.Field37256
-	}
-	return false
-}
-
-func (x *Message37173) GetField37257() bool {
-	if x != nil && x.Field37257 != nil {
-		return *x.Field37257
-	}
-	return false
-}
-
-func (x *Message37173) GetField37258() string {
-	if x != nil && x.Field37258 != nil {
-		return *x.Field37258
-	}
-	return ""
-}
-
-func (x *Message37173) GetField37259() string {
-	if x != nil && x.Field37259 != nil {
-		return *x.Field37259
-	}
-	return ""
-}
-
-func (x *Message37173) GetField37260() uint32 {
-	if x != nil && x.Field37260 != nil {
-		return *x.Field37260
-	}
-	return 0
-}
-
-func (x *Message37173) GetField37261() uint32 {
-	if x != nil && x.Field37261 != nil {
-		return *x.Field37261
-	}
-	return 0
-}
-
-func (x *Message37173) GetField37262() string {
-	if x != nil && x.Field37262 != nil {
-		return *x.Field37262
-	}
-	return ""
-}
-
-func (x *Message37173) GetField37263() string {
-	if x != nil && x.Field37263 != nil {
-		return *x.Field37263
-	}
-	return ""
-}
-
-func (x *Message37173) GetField37264() string {
-	if x != nil && x.Field37264 != nil {
-		return *x.Field37264
-	}
-	return ""
-}
-
-func (x *Message37173) GetField37265() int32 {
-	if x != nil && x.Field37265 != nil {
-		return *x.Field37265
-	}
-	return 0
-}
-
-func (x *Message37173) GetField37266() int64 {
-	if x != nil && x.Field37266 != nil {
-		return *x.Field37266
-	}
-	return 0
-}
-
-func (x *Message37173) GetField37267() int64 {
-	if x != nil && x.Field37267 != nil {
-		return *x.Field37267
-	}
-	return 0
-}
-
-func (x *Message37173) GetField37268() int32 {
-	if x != nil && x.Field37268 != nil {
-		return *x.Field37268
-	}
-	return 0
-}
-
-func (x *Message37173) GetField37269() int32 {
-	if x != nil && x.Field37269 != nil {
-		return *x.Field37269
-	}
-	return 0
-}
-
-func (x *Message37173) GetField37270() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37270
-	}
-	return nil
-}
-
-func (x *Message37173) GetField37271() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37271
-	}
-	return nil
-}
-
-func (x *Message37173) GetField37272() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37272
-	}
-	return nil
-}
-
-func (x *Message37173) GetField37273() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37273
-	}
-	return nil
-}
-
-func (x *Message37173) GetField37274() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field37274
-	}
-	return nil
-}
-
-func (x *Message37173) GetField37275() string {
-	if x != nil && x.Field37275 != nil {
-		return *x.Field37275
-	}
-	return ""
-}
-
-func (x *Message37173) GetField37276() bool {
-	if x != nil && x.Field37276 != nil {
-		return *x.Field37276
-	}
-	return false
-}
-
-type Message12799 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12809 *string         `protobuf:"bytes,1,req,name=field12809" json:"field12809,omitempty"`
-	Field12810 []uint64        `protobuf:"fixed64,2,rep,name=field12810" json:"field12810,omitempty"`
-	Field12811 []*Message12776 `protobuf:"bytes,8,rep,name=field12811" json:"field12811,omitempty"`
-	Field12812 []int32         `protobuf:"varint,4,rep,name=field12812" json:"field12812,omitempty"`
-	Field12813 []*Message12798 `protobuf:"bytes,5,rep,name=field12813" json:"field12813,omitempty"`
-	Field12814 *int32          `protobuf:"varint,3,req,name=field12814" json:"field12814,omitempty"`
-	Field12815 *int32          `protobuf:"varint,6,opt,name=field12815" json:"field12815,omitempty"`
-	Field12816 *Message12797   `protobuf:"bytes,7,opt,name=field12816" json:"field12816,omitempty"`
-}
-
-func (x *Message12799) Reset() {
-	*x = Message12799{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[32]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12799) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12799) ProtoMessage() {}
-
-func (x *Message12799) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[32]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12799.ProtoReflect.Descriptor instead.
-func (*Message12799) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{32}
-}
-
-func (x *Message12799) GetField12809() string {
-	if x != nil && x.Field12809 != nil {
-		return *x.Field12809
-	}
-	return ""
-}
-
-func (x *Message12799) GetField12810() []uint64 {
-	if x != nil {
-		return x.Field12810
-	}
-	return nil
-}
-
-func (x *Message12799) GetField12811() []*Message12776 {
-	if x != nil {
-		return x.Field12811
-	}
-	return nil
-}
-
-func (x *Message12799) GetField12812() []int32 {
-	if x != nil {
-		return x.Field12812
-	}
-	return nil
-}
-
-func (x *Message12799) GetField12813() []*Message12798 {
-	if x != nil {
-		return x.Field12813
-	}
-	return nil
-}
-
-func (x *Message12799) GetField12814() int32 {
-	if x != nil && x.Field12814 != nil {
-		return *x.Field12814
-	}
-	return 0
-}
-
-func (x *Message12799) GetField12815() int32 {
-	if x != nil && x.Field12815 != nil {
-		return *x.Field12815
-	}
-	return 0
-}
-
-func (x *Message12799) GetField12816() *Message12797 {
-	if x != nil {
-		return x.Field12816
-	}
-	return nil
-}
-
-type Message12870 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12879 *int32          `protobuf:"varint,1,req,name=field12879" json:"field12879,omitempty"`
-	Field12880 *int32          `protobuf:"varint,7,opt,name=field12880" json:"field12880,omitempty"`
-	Field12881 *int32          `protobuf:"varint,2,req,name=field12881" json:"field12881,omitempty"`
-	Field12882 *uint64         `protobuf:"varint,3,opt,name=field12882" json:"field12882,omitempty"`
-	Field12883 *string         `protobuf:"bytes,2001,opt,name=field12883" json:"field12883,omitempty"`
-	Field12884 *uint64         `protobuf:"fixed64,4,opt,name=field12884" json:"field12884,omitempty"`
-	Field12885 []uint64        `protobuf:"fixed64,14,rep,name=field12885" json:"field12885,omitempty"`
-	Field12886 *int32          `protobuf:"varint,9,opt,name=field12886" json:"field12886,omitempty"`
-	Field12887 *int64          `protobuf:"varint,18,opt,name=field12887" json:"field12887,omitempty"`
-	Field12888 []*Message12870 `protobuf:"bytes,8,rep,name=field12888" json:"field12888,omitempty"`
-	Field12889 *int32          `protobuf:"varint,5,opt,name=field12889" json:"field12889,omitempty"`
-	Field12890 *uint64         `protobuf:"varint,6,opt,name=field12890" json:"field12890,omitempty"`
-	Field12891 *int32          `protobuf:"varint,10,opt,name=field12891" json:"field12891,omitempty"`
-	Field12892 *int32          `protobuf:"varint,11,opt,name=field12892" json:"field12892,omitempty"`
-	Field12893 *float64        `protobuf:"fixed64,12,opt,name=field12893" json:"field12893,omitempty"`
-	Field12894 *Message12825   `protobuf:"bytes,13,opt,name=field12894" json:"field12894,omitempty"`
-	Field12895 *float64        `protobuf:"fixed64,15,opt,name=field12895" json:"field12895,omitempty"`
-	Field12896 *string         `protobuf:"bytes,16,opt,name=field12896" json:"field12896,omitempty"`
-	Field12897 *Enum12871      `protobuf:"varint,17,opt,name=field12897,enum=benchmarks.google_message4.Enum12871" json:"field12897,omitempty"`
-	Field12898 *int32          `protobuf:"varint,19,opt,name=field12898" json:"field12898,omitempty"`
-}
-
-func (x *Message12870) Reset() {
-	*x = Message12870{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[33]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12870) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12870) ProtoMessage() {}
-
-func (x *Message12870) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[33]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12870.ProtoReflect.Descriptor instead.
-func (*Message12870) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{33}
-}
-
-func (x *Message12870) GetField12879() int32 {
-	if x != nil && x.Field12879 != nil {
-		return *x.Field12879
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12880() int32 {
-	if x != nil && x.Field12880 != nil {
-		return *x.Field12880
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12881() int32 {
-	if x != nil && x.Field12881 != nil {
-		return *x.Field12881
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12882() uint64 {
-	if x != nil && x.Field12882 != nil {
-		return *x.Field12882
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12883() string {
-	if x != nil && x.Field12883 != nil {
-		return *x.Field12883
-	}
-	return ""
-}
-
-func (x *Message12870) GetField12884() uint64 {
-	if x != nil && x.Field12884 != nil {
-		return *x.Field12884
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12885() []uint64 {
-	if x != nil {
-		return x.Field12885
-	}
-	return nil
-}
-
-func (x *Message12870) GetField12886() int32 {
-	if x != nil && x.Field12886 != nil {
-		return *x.Field12886
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12887() int64 {
-	if x != nil && x.Field12887 != nil {
-		return *x.Field12887
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12888() []*Message12870 {
-	if x != nil {
-		return x.Field12888
-	}
-	return nil
-}
-
-func (x *Message12870) GetField12889() int32 {
-	if x != nil && x.Field12889 != nil {
-		return *x.Field12889
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12890() uint64 {
-	if x != nil && x.Field12890 != nil {
-		return *x.Field12890
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12891() int32 {
-	if x != nil && x.Field12891 != nil {
-		return *x.Field12891
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12892() int32 {
-	if x != nil && x.Field12892 != nil {
-		return *x.Field12892
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12893() float64 {
-	if x != nil && x.Field12893 != nil {
-		return *x.Field12893
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12894() *Message12825 {
-	if x != nil {
-		return x.Field12894
-	}
-	return nil
-}
-
-func (x *Message12870) GetField12895() float64 {
-	if x != nil && x.Field12895 != nil {
-		return *x.Field12895
-	}
-	return 0
-}
-
-func (x *Message12870) GetField12896() string {
-	if x != nil && x.Field12896 != nil {
-		return *x.Field12896
-	}
-	return ""
-}
-
-func (x *Message12870) GetField12897() Enum12871 {
-	if x != nil && x.Field12897 != nil {
-		return *x.Field12897
-	}
-	return Enum12871_ENUM_VALUE12872
-}
-
-func (x *Message12870) GetField12898() int32 {
-	if x != nil && x.Field12898 != nil {
-		return *x.Field12898
-	}
-	return 0
-}
-
-type Message3804 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field3818 *int64     `protobuf:"varint,1,req,name=field3818" json:"field3818,omitempty"`
-	Field3819 *bool      `protobuf:"varint,2,req,name=field3819" json:"field3819,omitempty"`
-	Field3820 []Enum3805 `protobuf:"varint,4,rep,name=field3820,enum=benchmarks.google_message4.Enum3805" json:"field3820,omitempty"`
-	Field3821 *int32     `protobuf:"varint,5,opt,name=field3821" json:"field3821,omitempty"`
-	Field3822 *bool      `protobuf:"varint,6,opt,name=field3822" json:"field3822,omitempty"`
-	Field3823 *int64     `protobuf:"varint,7,opt,name=field3823" json:"field3823,omitempty"`
-	Field3824 *Enum3783  `protobuf:"varint,8,opt,name=field3824,enum=benchmarks.google_message4.Enum3783" json:"field3824,omitempty"`
-}
-
-func (x *Message3804) Reset() {
-	*x = Message3804{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[34]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3804) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3804) ProtoMessage() {}
-
-func (x *Message3804) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[34]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3804.ProtoReflect.Descriptor instead.
-func (*Message3804) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{34}
-}
-
-func (x *Message3804) GetField3818() int64 {
-	if x != nil && x.Field3818 != nil {
-		return *x.Field3818
-	}
-	return 0
-}
-
-func (x *Message3804) GetField3819() bool {
-	if x != nil && x.Field3819 != nil {
-		return *x.Field3819
-	}
-	return false
-}
-
-func (x *Message3804) GetField3820() []Enum3805 {
-	if x != nil {
-		return x.Field3820
-	}
-	return nil
-}
-
-func (x *Message3804) GetField3821() int32 {
-	if x != nil && x.Field3821 != nil {
-		return *x.Field3821
-	}
-	return 0
-}
-
-func (x *Message3804) GetField3822() bool {
-	if x != nil && x.Field3822 != nil {
-		return *x.Field3822
-	}
-	return false
-}
-
-func (x *Message3804) GetField3823() int64 {
-	if x != nil && x.Field3823 != nil {
-		return *x.Field3823
-	}
-	return 0
-}
-
-func (x *Message3804) GetField3824() Enum3783 {
-	if x != nil && x.Field3824 != nil {
-		return *x.Field3824
-	}
-	return Enum3783_ENUM_VALUE3784
-}
-
-type Message12903 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12905 *string        `protobuf:"bytes,1,opt,name=field12905" json:"field12905,omitempty"`
-	Field12906 *Message8587   `protobuf:"bytes,2,opt,name=field12906" json:"field12906,omitempty"`
-	Field12907 []*Message8590 `protobuf:"bytes,3,rep,name=field12907" json:"field12907,omitempty"`
-}
-
-func (x *Message12903) Reset() {
-	*x = Message12903{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[35]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12903) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12903) ProtoMessage() {}
-
-func (x *Message12903) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[35]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12903.ProtoReflect.Descriptor instead.
-func (*Message12903) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{35}
-}
-
-func (x *Message12903) GetField12905() string {
-	if x != nil && x.Field12905 != nil {
-		return *x.Field12905
-	}
-	return ""
-}
-
-func (x *Message12903) GetField12906() *Message8587 {
-	if x != nil {
-		return x.Field12906
-	}
-	return nil
-}
-
-func (x *Message12903) GetField12907() []*Message8590 {
-	if x != nil {
-		return x.Field12907
-	}
-	return nil
-}
-
-type Message37326 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field37345 *string `protobuf:"bytes,1,req,name=field37345" json:"field37345,omitempty"`
-	Field37346 *string `protobuf:"bytes,2,opt,name=field37346" json:"field37346,omitempty"`
-}
-
-func (x *Message37326) Reset() {
-	*x = Message37326{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[36]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message37326) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message37326) ProtoMessage() {}
-
-func (x *Message37326) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[36]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message37326.ProtoReflect.Descriptor instead.
-func (*Message37326) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{36}
-}
-
-func (x *Message37326) GetField37345() string {
-	if x != nil && x.Field37345 != nil {
-		return *x.Field37345
-	}
-	return ""
-}
-
-func (x *Message37326) GetField37346() string {
-	if x != nil && x.Field37346 != nil {
-		return *x.Field37346
-	}
-	return ""
-}
-
-type Message2356 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field2368   *Message1374               `protobuf:"bytes,121,opt,name=field2368" json:"field2368,omitempty"`
-	Field2369   *uint64                    `protobuf:"varint,1,opt,name=field2369" json:"field2369,omitempty"`
-	Field2370   *int32                     `protobuf:"varint,2,opt,name=field2370" json:"field2370,omitempty"`
-	Field2371   *int32                     `protobuf:"varint,17,opt,name=field2371" json:"field2371,omitempty"`
-	Field2372   *string                    `protobuf:"bytes,3,req,name=field2372" json:"field2372,omitempty"`
-	Field2373   *int32                     `protobuf:"varint,7,opt,name=field2373" json:"field2373,omitempty"`
-	Field2374   []byte                     `protobuf:"bytes,8,opt,name=field2374" json:"field2374,omitempty"`
-	Field2375   *string                    `protobuf:"bytes,4,opt,name=field2375" json:"field2375,omitempty"`
-	Field2376   *string                    `protobuf:"bytes,101,opt,name=field2376" json:"field2376,omitempty"`
-	Field2377   *int32                     `protobuf:"varint,102,opt,name=field2377" json:"field2377,omitempty"`
-	Field2378   *int32                     `protobuf:"varint,103,opt,name=field2378" json:"field2378,omitempty"`
-	Field2379   *int32                     `protobuf:"varint,104,opt,name=field2379" json:"field2379,omitempty"`
-	Field2380   *int32                     `protobuf:"varint,113,opt,name=field2380" json:"field2380,omitempty"`
-	Field2381   *int32                     `protobuf:"varint,114,opt,name=field2381" json:"field2381,omitempty"`
-	Field2382   *int32                     `protobuf:"varint,115,opt,name=field2382" json:"field2382,omitempty"`
-	Field2383   *int32                     `protobuf:"varint,117,opt,name=field2383" json:"field2383,omitempty"`
-	Field2384   *int32                     `protobuf:"varint,118,opt,name=field2384" json:"field2384,omitempty"`
-	Field2385   *int32                     `protobuf:"varint,119,opt,name=field2385" json:"field2385,omitempty"`
-	Field2386   *int32                     `protobuf:"varint,105,opt,name=field2386" json:"field2386,omitempty"`
-	Field2387   []byte                     `protobuf:"bytes,5,opt,name=field2387" json:"field2387,omitempty"`
-	Message2357 *Message2356_Message2357   `protobuf:"group,6,opt,name=Message2357,json=message2357" json:"message2357,omitempty"`
-	Field2389   *string                    `protobuf:"bytes,120,opt,name=field2389" json:"field2389,omitempty"`
-	Message2358 *Message2356_Message2358   `protobuf:"group,107,opt,name=Message2358,json=message2358" json:"message2358,omitempty"`
-	Message2359 []*Message2356_Message2359 `protobuf:"group,40,rep,name=Message2359,json=message2359" json:"message2359,omitempty"`
-	Field2392   *int32                     `protobuf:"varint,50,opt,name=field2392" json:"field2392,omitempty"`
-	Field2393   *UnusedEmptyMessage        `protobuf:"bytes,60,opt,name=field2393" json:"field2393,omitempty"`
-	Field2394   *UnusedEmptyMessage        `protobuf:"bytes,70,opt,name=field2394" json:"field2394,omitempty"`
-	Field2395   *UnusedEmptyMessage        `protobuf:"bytes,80,opt,name=field2395" json:"field2395,omitempty"`
-	Field2396   *UnusedEmptyMessage        `protobuf:"bytes,90,opt,name=field2396" json:"field2396,omitempty"`
-	Field2397   *string                    `protobuf:"bytes,100,opt,name=field2397" json:"field2397,omitempty"`
-	Field2398   *string                    `protobuf:"bytes,123,opt,name=field2398" json:"field2398,omitempty"`
-}
-
-func (x *Message2356) Reset() {
-	*x = Message2356{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[37]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message2356) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message2356) ProtoMessage() {}
-
-func (x *Message2356) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[37]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message2356.ProtoReflect.Descriptor instead.
-func (*Message2356) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{37}
-}
-
-func (x *Message2356) GetField2368() *Message1374 {
-	if x != nil {
-		return x.Field2368
-	}
-	return nil
-}
-
-func (x *Message2356) GetField2369() uint64 {
-	if x != nil && x.Field2369 != nil {
-		return *x.Field2369
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2370() int32 {
-	if x != nil && x.Field2370 != nil {
-		return *x.Field2370
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2371() int32 {
-	if x != nil && x.Field2371 != nil {
-		return *x.Field2371
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2372() string {
-	if x != nil && x.Field2372 != nil {
-		return *x.Field2372
-	}
-	return ""
-}
-
-func (x *Message2356) GetField2373() int32 {
-	if x != nil && x.Field2373 != nil {
-		return *x.Field2373
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2374() []byte {
-	if x != nil {
-		return x.Field2374
-	}
-	return nil
-}
-
-func (x *Message2356) GetField2375() string {
-	if x != nil && x.Field2375 != nil {
-		return *x.Field2375
-	}
-	return ""
-}
-
-func (x *Message2356) GetField2376() string {
-	if x != nil && x.Field2376 != nil {
-		return *x.Field2376
-	}
-	return ""
-}
-
-func (x *Message2356) GetField2377() int32 {
-	if x != nil && x.Field2377 != nil {
-		return *x.Field2377
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2378() int32 {
-	if x != nil && x.Field2378 != nil {
-		return *x.Field2378
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2379() int32 {
-	if x != nil && x.Field2379 != nil {
-		return *x.Field2379
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2380() int32 {
-	if x != nil && x.Field2380 != nil {
-		return *x.Field2380
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2381() int32 {
-	if x != nil && x.Field2381 != nil {
-		return *x.Field2381
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2382() int32 {
-	if x != nil && x.Field2382 != nil {
-		return *x.Field2382
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2383() int32 {
-	if x != nil && x.Field2383 != nil {
-		return *x.Field2383
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2384() int32 {
-	if x != nil && x.Field2384 != nil {
-		return *x.Field2384
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2385() int32 {
-	if x != nil && x.Field2385 != nil {
-		return *x.Field2385
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2386() int32 {
-	if x != nil && x.Field2386 != nil {
-		return *x.Field2386
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2387() []byte {
-	if x != nil {
-		return x.Field2387
-	}
-	return nil
-}
-
-func (x *Message2356) GetMessage2357() *Message2356_Message2357 {
-	if x != nil {
-		return x.Message2357
-	}
-	return nil
-}
-
-func (x *Message2356) GetField2389() string {
-	if x != nil && x.Field2389 != nil {
-		return *x.Field2389
-	}
-	return ""
-}
-
-func (x *Message2356) GetMessage2358() *Message2356_Message2358 {
-	if x != nil {
-		return x.Message2358
-	}
-	return nil
-}
-
-func (x *Message2356) GetMessage2359() []*Message2356_Message2359 {
-	if x != nil {
-		return x.Message2359
-	}
-	return nil
-}
-
-func (x *Message2356) GetField2392() int32 {
-	if x != nil && x.Field2392 != nil {
-		return *x.Field2392
-	}
-	return 0
-}
-
-func (x *Message2356) GetField2393() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field2393
-	}
-	return nil
-}
-
-func (x *Message2356) GetField2394() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field2394
-	}
-	return nil
-}
-
-func (x *Message2356) GetField2395() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field2395
-	}
-	return nil
-}
-
-func (x *Message2356) GetField2396() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field2396
-	}
-	return nil
-}
-
-func (x *Message2356) GetField2397() string {
-	if x != nil && x.Field2397 != nil {
-		return *x.Field2397
-	}
-	return ""
-}
-
-func (x *Message2356) GetField2398() string {
-	if x != nil && x.Field2398 != nil {
-		return *x.Field2398
-	}
-	return ""
-}
-
-type Message0 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-}
-
-func (x *Message0) Reset() {
-	*x = Message0{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[38]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message0) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message0) ProtoMessage() {}
-
-func (x *Message0) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[38]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message0.ProtoReflect.Descriptor instead.
-func (*Message0) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{38}
-}
-
-type Message971 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field972 *string `protobuf:"bytes,1,opt,name=field972" json:"field972,omitempty"`
-	Field973 *int32  `protobuf:"varint,2,opt,name=field973" json:"field973,omitempty"`
-	Field974 *bool   `protobuf:"varint,3,opt,name=field974" json:"field974,omitempty"`
-}
-
-func (x *Message971) Reset() {
-	*x = Message971{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[39]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message971) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message971) ProtoMessage() {}
-
-func (x *Message971) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[39]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message971.ProtoReflect.Descriptor instead.
-func (*Message971) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{39}
-}
-
-func (x *Message971) GetField972() string {
-	if x != nil && x.Field972 != nil {
-		return *x.Field972
-	}
-	return ""
-}
-
-func (x *Message971) GetField973() int32 {
-	if x != nil && x.Field973 != nil {
-		return *x.Field973
-	}
-	return 0
-}
-
-func (x *Message971) GetField974() bool {
-	if x != nil && x.Field974 != nil {
-		return *x.Field974
-	}
-	return false
-}
-
-type Message176_Message178 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message176_Message178) Reset() {
-	*x = Message176_Message178{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[40]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message176_Message178) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message176_Message178) ProtoMessage() {}
-
-func (x *Message176_Message178) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[40]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message176_Message178.ProtoReflect.Descriptor instead.
-func (*Message176_Message178) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{8, 0}
-}
-
-type Message3069_Message3070 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field3378 *Enum3071 `protobuf:"varint,4,req,name=field3378,enum=benchmarks.google_message4.Enum3071" json:"field3378,omitempty"`
-	Field3379 []byte    `protobuf:"bytes,5,req,name=field3379" json:"field3379,omitempty"`
-}
-
-func (x *Message3069_Message3070) Reset() {
-	*x = Message3069_Message3070{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[41]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3069_Message3070) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3069_Message3070) ProtoMessage() {}
-
-func (x *Message3069_Message3070) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[41]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3069_Message3070.ProtoReflect.Descriptor instead.
-func (*Message3069_Message3070) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{27, 0}
-}
-
-func (x *Message3069_Message3070) GetField3378() Enum3071 {
-	if x != nil && x.Field3378 != nil {
-		return *x.Field3378
-	}
-	return Enum3071_ENUM_VALUE3072
-}
-
-func (x *Message3069_Message3070) GetField3379() []byte {
-	if x != nil {
-		return x.Field3379
-	}
-	return nil
-}
-
-type Message2356_Message2357 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field2399 *int64 `protobuf:"varint,9,opt,name=field2399" json:"field2399,omitempty"`
-	Field2400 *int32 `protobuf:"varint,10,opt,name=field2400" json:"field2400,omitempty"`
-	Field2401 *int32 `protobuf:"varint,11,opt,name=field2401" json:"field2401,omitempty"`
-	Field2402 *int32 `protobuf:"varint,12,opt,name=field2402" json:"field2402,omitempty"`
-	Field2403 *int32 `protobuf:"varint,13,opt,name=field2403" json:"field2403,omitempty"`
-	Field2404 *int32 `protobuf:"varint,116,opt,name=field2404" json:"field2404,omitempty"`
-	Field2405 *int32 `protobuf:"varint,106,opt,name=field2405" json:"field2405,omitempty"`
-	Field2406 []byte `protobuf:"bytes,14,req,name=field2406" json:"field2406,omitempty"`
-	Field2407 *int32 `protobuf:"varint,45,opt,name=field2407" json:"field2407,omitempty"`
-	Field2408 *int32 `protobuf:"varint,112,opt,name=field2408" json:"field2408,omitempty"`
-	Field2409 *bool  `protobuf:"varint,122,opt,name=field2409" json:"field2409,omitempty"`
-	Field2410 []byte `protobuf:"bytes,124,opt,name=field2410" json:"field2410,omitempty"`
-}
-
-func (x *Message2356_Message2357) Reset() {
-	*x = Message2356_Message2357{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[42]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message2356_Message2357) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message2356_Message2357) ProtoMessage() {}
-
-func (x *Message2356_Message2357) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[42]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message2356_Message2357.ProtoReflect.Descriptor instead.
-func (*Message2356_Message2357) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{37, 0}
-}
-
-func (x *Message2356_Message2357) GetField2399() int64 {
-	if x != nil && x.Field2399 != nil {
-		return *x.Field2399
-	}
-	return 0
-}
-
-func (x *Message2356_Message2357) GetField2400() int32 {
-	if x != nil && x.Field2400 != nil {
-		return *x.Field2400
-	}
-	return 0
-}
-
-func (x *Message2356_Message2357) GetField2401() int32 {
-	if x != nil && x.Field2401 != nil {
-		return *x.Field2401
-	}
-	return 0
-}
-
-func (x *Message2356_Message2357) GetField2402() int32 {
-	if x != nil && x.Field2402 != nil {
-		return *x.Field2402
-	}
-	return 0
-}
-
-func (x *Message2356_Message2357) GetField2403() int32 {
-	if x != nil && x.Field2403 != nil {
-		return *x.Field2403
-	}
-	return 0
-}
-
-func (x *Message2356_Message2357) GetField2404() int32 {
-	if x != nil && x.Field2404 != nil {
-		return *x.Field2404
-	}
-	return 0
-}
-
-func (x *Message2356_Message2357) GetField2405() int32 {
-	if x != nil && x.Field2405 != nil {
-		return *x.Field2405
-	}
-	return 0
-}
-
-func (x *Message2356_Message2357) GetField2406() []byte {
-	if x != nil {
-		return x.Field2406
-	}
-	return nil
-}
-
-func (x *Message2356_Message2357) GetField2407() int32 {
-	if x != nil && x.Field2407 != nil {
-		return *x.Field2407
-	}
-	return 0
-}
-
-func (x *Message2356_Message2357) GetField2408() int32 {
-	if x != nil && x.Field2408 != nil {
-		return *x.Field2408
-	}
-	return 0
-}
-
-func (x *Message2356_Message2357) GetField2409() bool {
-	if x != nil && x.Field2409 != nil {
-		return *x.Field2409
-	}
-	return false
-}
-
-func (x *Message2356_Message2357) GetField2410() []byte {
-	if x != nil {
-		return x.Field2410
-	}
-	return nil
-}
-
-type Message2356_Message2358 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message2356_Message2358) Reset() {
-	*x = Message2356_Message2358{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[43]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message2356_Message2358) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message2356_Message2358) ProtoMessage() {}
-
-func (x *Message2356_Message2358) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[43]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message2356_Message2358.ProtoReflect.Descriptor instead.
-func (*Message2356_Message2358) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{37, 1}
-}
-
-type Message2356_Message2359 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message2356_Message2359) Reset() {
-	*x = Message2356_Message2359{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[44]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message2356_Message2359) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message2356_Message2359) ProtoMessage() {}
-
-func (x *Message2356_Message2359) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_proto_msgTypes[44]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message2356_Message2359.ProtoReflect.Descriptor instead.
-func (*Message2356_Message2359) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP(), []int{37, 2}
-}
-
-var File_datasets_google_message4_benchmark_message4_proto protoreflect.FileDescriptor
-
-var file_datasets_google_message4_benchmark_message4_proto_rawDesc = []byte{
-	0x0a, 0x31, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x1a,
-	0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x5f, 0x31, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2f, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x5f, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73,
-	0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x5f, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xda,
-	0x09, 0x0a, 0x0e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x30, 0x33, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x30,
-	0x33, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x30, 0x34, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x30,
-	0x34, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x30, 0x35, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x30,
-	0x35, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x30, 0x36, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x30,
-	0x36, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x30, 0x37, 0x18,
-	0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x30,
-	0x37, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x30, 0x38, 0x18,
-	0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x37, 0x34, 0x38, 0x39, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x30, 0x38, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x30, 0x39, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x30, 0x39, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x31, 0x30, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x31, 0x30, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x31, 0x31, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x31, 0x31, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x31, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x31, 0x32, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x31, 0x33, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x31, 0x33, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x31, 0x34, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x31, 0x34, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x31, 0x35, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x31, 0x35, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x31, 0x36, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x31, 0x36, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x31, 0x37, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x31, 0x37, 0x12, 0x4e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x31, 0x38, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x31, 0x38, 0x22, 0x96, 0x0c, 0x0a, 0x0c,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x37, 0x34, 0x38, 0x39, 0x12, 0x47, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x33, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x35, 0x31, 0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x37, 0x35, 0x33, 0x34, 0x12, 0x47, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37,
-	0x35, 0x33, 0x35, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x33,
-	0x33, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x33, 0x35, 0x12, 0x47,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x33, 0x36, 0x18, 0x06, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x38, 0x31, 0x35, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x35, 0x33, 0x36, 0x12, 0x47, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x37, 0x35, 0x33, 0x37, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x38, 0x38, 0x31, 0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x33, 0x37,
-	0x12, 0x47, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x33, 0x38, 0x18, 0x08,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x38, 0x33, 0x35, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x33, 0x38, 0x12, 0x47, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x35, 0x33, 0x39, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x38, 0x38, 0x34, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35,
-	0x33, 0x39, 0x12, 0x47, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x34, 0x30,
-	0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x38, 0x35, 0x36, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x34, 0x30, 0x12, 0x48, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x34, 0x31, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x37, 0x31, 0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x37, 0x35, 0x34, 0x31, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37,
-	0x35, 0x34, 0x32, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32,
-	0x37, 0x34, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x34, 0x32, 0x12,
-	0x47, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x34, 0x33, 0x18, 0x16, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x33, 0x31, 0x39, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x34, 0x33, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x37, 0x35, 0x34, 0x34, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x31, 0x32, 0x39, 0x30, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35,
-	0x34, 0x34, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x34, 0x35,
-	0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x39, 0x31, 0x30,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x34, 0x35, 0x12, 0x48, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x34, 0x36, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x39, 0x36, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x37, 0x35, 0x34, 0x36, 0x12, 0x46, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x37, 0x35, 0x34, 0x37, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x37, 0x36, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x34, 0x37, 0x12, 0x48,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x34, 0x38, 0x18, 0x22, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x30, 0x30, 0x30, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x34, 0x38, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x37, 0x35, 0x34, 0x39, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x31, 0x33, 0x30, 0x33, 0x35, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35,
-	0x34, 0x39, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x35, 0x30,
-	0x18, 0x24, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x37, 0x33, 0x33, 0x31,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x35, 0x30, 0x12, 0x48, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x35, 0x31, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x37, 0x33, 0x32, 0x39, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x37, 0x35, 0x35, 0x31, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x37, 0x35, 0x35, 0x32, 0x18, 0x26, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x37, 0x33, 0x32, 0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x35, 0x32,
-	0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x35, 0x33, 0x18, 0x27,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x37, 0x33, 0x33, 0x33, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x35, 0x33, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x37, 0x35, 0x35, 0x34, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x37, 0x33, 0x33, 0x35, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x37, 0x35, 0x35, 0x34, 0x22, 0xa9, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x37, 0x33, 0x31, 0x39, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x32,
-	0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33,
-	0x32, 0x31, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x32, 0x32, 0x18,
-	0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x32, 0x32,
-	0x22, 0xb0, 0x04, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x37, 0x31,
-	0x37, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x31, 0x39, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x31,
-	0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x32, 0x30, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x32,
-	0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x32, 0x31, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x32,
-	0x31, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x32, 0x32, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x39, 0x37, 0x36, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x32, 0x32, 0x12, 0x48, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x32, 0x33, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x39, 0x34, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x37, 0x32, 0x33, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x37, 0x32, 0x34, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31,
-	0x39, 0x34, 0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x32, 0x34, 0x12,
-	0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x32, 0x35, 0x18, 0x07, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x36, 0x38, 0x37, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x32, 0x35, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x37, 0x32, 0x36, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x31, 0x39, 0x34, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x37, 0x32, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x32,
-	0x37, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x37, 0x32, 0x37, 0x22, 0xe8, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x37, 0x33, 0x33, 0x31, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33,
-	0x36, 0x37, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74,
-	0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x37, 0x33, 0x36, 0x37, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33,
-	0x36, 0x38, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x37, 0x33,
-	0x32, 0x36, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x36, 0x38, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x36, 0x39, 0x18, 0x02, 0x20, 0x02,
-	0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x36, 0x39, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x37, 0x30, 0x18, 0x03, 0x20, 0x02,
-	0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x37, 0x30, 0x22, 0xc0,
-	0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x38, 0x31, 0x35, 0x12, 0x4c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x31, 0x39, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x31, 0x39, 0x12, 0x45, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x32, 0x30, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x38, 0x37, 0x36, 0x38, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x38, 0x32, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x32, 0x31,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x32,
-	0x31, 0x22, 0xf3, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x33, 0x33,
-	0x30, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x33, 0x32, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x33, 0x32, 0x12,
-	0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x33, 0x33, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x36, 0x39, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x33, 0x33, 0x33, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x33, 0x33, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x33,
-	0x32, 0x30, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x33, 0x34, 0x12, 0x4c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x33, 0x35, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e,
-	0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x33, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x33, 0x36, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x33, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x33, 0x33, 0x37, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x33, 0x33, 0x37, 0x22, 0xa8, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x32, 0x39, 0x36, 0x30, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x39, 0x36, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x36, 0x32, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x39, 0x36, 0x33, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x31, 0x32, 0x39, 0x34, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39,
-	0x36, 0x33, 0x22, 0xb5, 0x11, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x37,
-	0x36, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x30, 0x38, 0x18, 0x01, 0x20,
-	0x02, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x30, 0x38, 0x12, 0x1a, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x30, 0x39, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x30, 0x39, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x31, 0x30, 0x18, 0x32, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x31, 0x30, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x31,
-	0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x31,
-	0x31, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x31, 0x32, 0x18, 0x2f, 0x20,
-	0x01, 0x28, 0x04, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x31, 0x32, 0x12, 0x1a, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x31, 0x33, 0x18, 0x38, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x31, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x31, 0x34, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x31, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x31,
-	0x35, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x31,
-	0x35, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x31, 0x36, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x31, 0x36, 0x12, 0x1a, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x31, 0x37, 0x18, 0x39, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x31, 0x37, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x31, 0x38, 0x18, 0x33, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x31, 0x38, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x31,
-	0x39, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x31,
-	0x39, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x32, 0x30, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x32, 0x30, 0x12, 0x1a, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x32, 0x31, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x32, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x32, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x32, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x32,
-	0x33, 0x18, 0x28, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x32,
-	0x33, 0x12, 0x4a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x32, 0x34, 0x18, 0x29, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x32, 0x34, 0x12, 0x1a, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x32, 0x35, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x32, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x32, 0x36, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x32, 0x36, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x32,
-	0x37, 0x18, 0x26, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x32,
-	0x37, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x32, 0x38, 0x18, 0x0f, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x32, 0x38, 0x12, 0x1a, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x32, 0x39, 0x18, 0x37, 0x20, 0x01, 0x28, 0x0c, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x32, 0x39, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x33, 0x30, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x33, 0x30, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x33,
-	0x31, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x33,
-	0x31, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x33, 0x32, 0x18, 0x21, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x33, 0x32, 0x12, 0x1a, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x33, 0x33, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0c, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x33, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x33, 0x34, 0x18, 0x20, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x33, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x33,
-	0x35, 0x18, 0x24, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x33,
-	0x35, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x33, 0x36, 0x18, 0x11, 0x20,
-	0x01, 0x28, 0x04, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x33, 0x36, 0x12, 0x1a, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x33, 0x37, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x33, 0x37, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x33, 0x38, 0x18, 0x12, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x33, 0x38, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x33,
-	0x39, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x33,
-	0x39, 0x12, 0x4a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x34, 0x30, 0x18, 0x40, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x34, 0x30, 0x12, 0x1a, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x34, 0x31, 0x18, 0x27, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x34, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x34, 0x32, 0x18, 0x30, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x34, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x34,
-	0x33, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x34,
-	0x33, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x34, 0x34, 0x18, 0x2a, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x34, 0x34, 0x12, 0x1a, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x34, 0x35, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0c, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x34, 0x35, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x34, 0x36, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x34, 0x36, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x34,
-	0x37, 0x18, 0x31, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x34,
-	0x37, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x34, 0x38, 0x18, 0x14, 0x20,
-	0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x34, 0x38, 0x12, 0x1a, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x34, 0x39, 0x18, 0x35, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x34, 0x39, 0x12, 0x4a, 0x0a, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x35, 0x30, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45,
-	0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x35, 0x30, 0x12, 0x4a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x35,
-	0x31, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x35,
-	0x31, 0x12, 0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x35, 0x32, 0x18, 0x1b, 0x20,
-	0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x35, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x35,
-	0x33, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x35,
-	0x33, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x35, 0x34, 0x18, 0x1e, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x35, 0x34, 0x12, 0x42, 0x0a,
-	0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x35, 0x35, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0e, 0x32,
-	0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x35,
-	0x35, 0x12, 0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x35, 0x36, 0x18, 0x22, 0x20,
-	0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x08, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x35, 0x36, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x35,
-	0x37, 0x18, 0x23, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x35,
-	0x37, 0x12, 0x51, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x37, 0x38, 0x18,
-	0x65, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x31, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x37, 0x36, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x37, 0x38, 0x52, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x31, 0x37, 0x38, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x35, 0x39,
-	0x18, 0x34, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x35, 0x39,
-	0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x36, 0x30, 0x18, 0x3a, 0x20, 0x01,
-	0x28, 0x04, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x36, 0x30, 0x12, 0x1a, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x36, 0x31, 0x18, 0x3b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x36, 0x31, 0x12, 0x4a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x34, 0x36, 0x32, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d,
-	0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x34, 0x36, 0x32, 0x12, 0x4a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x36, 0x33,
-	0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x36, 0x33,
-	0x12, 0x42, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x36, 0x34, 0x18, 0x3e, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x34, 0x36, 0x34, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x36, 0x35,
-	0x18, 0x3f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x36, 0x35,
-	0x12, 0x4a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x36, 0x36, 0x18, 0x41, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x36, 0x36, 0x1a, 0x0c, 0x0a, 0x0a,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x37, 0x38, 0x22, 0xc0, 0x01, 0x0a, 0x0b, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x38, 0x31, 0x37, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x38, 0x32, 0x35, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x32, 0x35, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x38, 0x32, 0x36, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x38, 0x37, 0x36, 0x38, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x32, 0x36, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x32, 0x37, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x32, 0x37, 0x22, 0xbf, 0x01,
-	0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x38, 0x33, 0x35, 0x12, 0x4c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x33, 0x37, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e,
-	0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x33, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x33, 0x38, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x33, 0x38, 0x12, 0x44, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x38, 0x33, 0x39, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6e, 0x75, 0x6d, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x33, 0x39, 0x22,
-	0xc8, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x37, 0x33, 0x33, 0x33,
-	0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x37, 0x32, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x37, 0x32,
-	0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x37, 0x33, 0x18, 0x01,
-	0x20, 0x02, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x37, 0x33, 0x32, 0x36, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x37, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x37, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x37, 0x34, 0x22, 0x78, 0x0a, 0x0c, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x30, 0x30, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x33, 0x30, 0x31, 0x35, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x30, 0x31, 0x35, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x33, 0x30, 0x31, 0x36, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x32, 0x39, 0x37, 0x39, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x33, 0x30, 0x31, 0x36, 0x22, 0x92, 0x02, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x37, 0x33, 0x33, 0x35, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37,
-	0x33, 0x37, 0x36, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70,
-	0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x37, 0x33, 0x37, 0x36, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37,
-	0x33, 0x37, 0x37, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x37,
-	0x33, 0x32, 0x36, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x37, 0x37, 0x12,
-	0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x37, 0x38, 0x18, 0x02, 0x20,
-	0x02, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x37, 0x31, 0x37, 0x33, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x37, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x33, 0x37, 0x39, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x37, 0x39, 0x22, 0x97, 0x01, 0x0a, 0x0b, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x38, 0x34, 0x38, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x38, 0x35, 0x30, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x38, 0x35, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x38, 0x35, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x38, 0x35, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38,
-	0x35, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x38, 0x35, 0x32, 0x22, 0x4e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33,
-	0x30, 0x33, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x30, 0x35,
-	0x38, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33,
-	0x30, 0x35, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x30, 0x35,
-	0x39, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33,
-	0x30, 0x35, 0x39, 0x22, 0x79, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x38,
-	0x35, 0x36, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x35, 0x38, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x35, 0x38,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x35, 0x39, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x35, 0x39, 0x22, 0xfb,
-	0x02, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x39, 0x30, 0x38, 0x12,
-	0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x31, 0x32, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x31, 0x32, 0x12,
-	0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x31, 0x33, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x31, 0x33, 0x12,
-	0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x31, 0x34, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x37, 0x39, 0x39, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x31, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x39, 0x31, 0x35, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x31, 0x35, 0x12, 0x47, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x39, 0x31, 0x36, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x38, 0x30, 0x34, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39,
-	0x31, 0x36, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x31, 0x37,
-	0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x38, 0x37, 0x30,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x31, 0x37, 0x22, 0xf2, 0x01, 0x0a,
-	0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x39, 0x31, 0x30, 0x12, 0x4e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x32, 0x30, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x32, 0x30, 0x12, 0x48, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x32, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x38, 0x31, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x39, 0x32, 0x31, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x39, 0x32, 0x32, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x32, 0x39, 0x30, 0x33, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x32,
-	0x32, 0x22, 0xf8, 0x03, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x37, 0x33,
-	0x32, 0x37, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x34, 0x37,
-	0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33,
-	0x34, 0x37, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x34, 0x38,
-	0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x37, 0x33, 0x32, 0x36,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x34, 0x38, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x34, 0x39, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x34, 0x39, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x35, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x35, 0x30, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x35, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x35, 0x31, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x35, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x35, 0x32, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x35, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x35, 0x33, 0x12, 0x4e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x35, 0x34, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e,
-	0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x35, 0x34, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x35, 0x35, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x35, 0x35, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x35, 0x36, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x35, 0x36, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x35, 0x37, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x35, 0x37, 0x22, 0x88, 0x02, 0x0a,
-	0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x37, 0x33, 0x32, 0x39, 0x12, 0x4e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x35, 0x39, 0x18, 0x06, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x35, 0x39, 0x12, 0x48, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x33, 0x36, 0x30, 0x18, 0x01, 0x20, 0x02, 0x28,
-	0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x37, 0x33, 0x32, 0x36, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x33, 0x36, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x37, 0x33, 0x36, 0x31, 0x18, 0x02, 0x20, 0x02, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x33, 0x36, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x37, 0x33, 0x36, 0x32, 0x18, 0x03, 0x20, 0x02, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x33, 0x36, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x37, 0x33, 0x36, 0x33, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x33, 0x36, 0x33, 0x22, 0xf3, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x32, 0x35, 0x31, 0x37, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x35, 0x31, 0x39, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d,
-	0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x35, 0x31, 0x39, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x35,
-	0x32, 0x30, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x33, 0x35,
-	0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x35, 0x32, 0x30, 0x12, 0x42, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x35, 0x32, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x30, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x35, 0x32, 0x31,
-	0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x35, 0x32, 0x32, 0x18, 0x04, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x36, 0x33, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x35, 0x32, 0x32, 0x12, 0x44, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x35, 0x32, 0x33, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x39,
-	0x37, 0x31, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x35, 0x32, 0x33, 0x22, 0xe5, 0x01,
-	0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x37, 0x34, 0x38, 0x12, 0x4e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x35, 0x34, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e,
-	0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x35, 0x34, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x35, 0x35, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x35, 0x35, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x35, 0x36, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x35, 0x36, 0x12, 0x45,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x35, 0x37, 0x18, 0x04, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e,
-	0x45, 0x6e, 0x75, 0x6d, 0x31, 0x32, 0x37, 0x33, 0x35, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x37, 0x35, 0x37, 0x22, 0x58, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x32, 0x36, 0x38, 0x37, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x37, 0x30, 0x31, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32,
-	0x36, 0x38, 0x36, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x30, 0x31, 0x22,
-	0x98, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x39, 0x34, 0x38,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x35, 0x34, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x35, 0x34,
-	0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x35, 0x35, 0x18, 0x02,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x39, 0x34, 0x39, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x35, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x35, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x35, 0x36, 0x22, 0x58, 0x0a, 0x0c, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x39, 0x37, 0x36, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x30, 0x30, 0x32, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x31, 0x39, 0x37, 0x35, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x30, 0x30, 0x32, 0x22, 0xa2, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x37, 0x33, 0x32, 0x30, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x32,
-	0x33, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33,
-	0x32, 0x33, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x32, 0x34, 0x18,
-	0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x32, 0x38, 0x37, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x32, 0x34, 0x22, 0xc5, 0x02, 0x0a, 0x0b, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x36, 0x39, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x33, 0x37, 0x34, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x30, 0x36, 0x31, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x37, 0x34,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x37, 0x35, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x37, 0x35, 0x12, 0x55,
-	0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x37, 0x30, 0x18, 0x03, 0x20,
-	0x03, 0x28, 0x0a, 0x32, 0x33, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x36, 0x39, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x37, 0x30, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x30, 0x37, 0x30, 0x1a, 0x6f, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x30, 0x37, 0x30, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x37,
-	0x38, 0x18, 0x04, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x30, 0x37, 0x31, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x37, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x33, 0x37, 0x39, 0x18, 0x05, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x33, 0x37, 0x39, 0x2a, 0x09, 0x08, 0x90, 0x4e, 0x10, 0x80, 0x80, 0x80, 0x80,
-	0x02, 0x22, 0x58, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x39, 0x34,
-	0x38, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x35, 0x38, 0x18,
-	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x39, 0x34, 0x39, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x35, 0x38, 0x22, 0xe1, 0x02, 0x0a, 0x0b,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x37, 0x36, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x37, 0x38, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x37, 0x38, 0x32, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x37, 0x38, 0x33, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x38, 0x35, 0x37, 0x32, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x37, 0x38, 0x33,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x37, 0x38, 0x34, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x37, 0x38, 0x34, 0x12, 0x45,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x37, 0x38, 0x35, 0x18, 0x04, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x37, 0x37, 0x34, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x37, 0x38, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x37,
-	0x38, 0x36, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x37, 0x38, 0x36, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x37, 0x38, 0x37,
-	0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x37, 0x38,
-	0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x37, 0x38, 0x38, 0x18, 0x07,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x37, 0x38, 0x38, 0x22,
-	0xce, 0x02, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x39, 0x37, 0x39,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x38, 0x31, 0x18, 0x01,
-	0x20, 0x02, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x38, 0x31,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x38, 0x32, 0x18, 0x02,
-	0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x38, 0x32,
-	0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x38, 0x33, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x38, 0x33,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x38, 0x34, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x38, 0x34,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x38, 0x35, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x38, 0x35,
-	0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x38, 0x36, 0x18, 0x06,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x38, 0x36,
-	0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x38, 0x37, 0x18, 0x07,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x38, 0x37,
-	0x22, 0xc6, 0x08, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x37, 0x31, 0x37,
-	0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x35, 0x32, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x35,
-	0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x35, 0x33, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x35,
-	0x33, 0x12, 0x46, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x35, 0x34, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x35, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x32, 0x35, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x35, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x32, 0x35, 0x36, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x35, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x32, 0x35, 0x37, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x35, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x32, 0x35, 0x38, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x35, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x32, 0x35, 0x39, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x35, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x32, 0x36, 0x30, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x36, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x32, 0x36, 0x31, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x36, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x32, 0x36, 0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x36, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x32, 0x36, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x36, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x32, 0x36, 0x34, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x36, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x32, 0x36, 0x35, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x36, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x32, 0x36, 0x36, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x36, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x32, 0x36, 0x37, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x36, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x32, 0x36, 0x38, 0x18, 0x12, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x36, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x32, 0x36, 0x39, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x36, 0x39, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x32, 0x37, 0x30, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x37, 0x30, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x32, 0x37, 0x31, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x37, 0x31, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x32, 0x37, 0x32, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x37, 0x32, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x32, 0x37, 0x33, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x37, 0x33, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x32, 0x37, 0x34, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x37, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x32, 0x37, 0x35, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x37, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x37, 0x32, 0x37, 0x36, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x37, 0x32, 0x37, 0x36, 0x22, 0x8c, 0x03, 0x0a, 0x0c, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x37, 0x39, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x30, 0x39, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x30, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x31, 0x30, 0x18, 0x02, 0x20, 0x03, 0x28, 0x06, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x31, 0x30, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x31, 0x31, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x32, 0x37, 0x37, 0x36, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x31, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38,
-	0x31, 0x32, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x31, 0x32, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38,
-	0x31, 0x33, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x37,
-	0x39, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x31, 0x33, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x31, 0x34, 0x18, 0x03, 0x20, 0x02,
-	0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x31, 0x34, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x31, 0x35, 0x18, 0x06, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x31, 0x35, 0x12, 0x48,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x31, 0x36, 0x18, 0x07, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x37, 0x39, 0x37, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x31, 0x36, 0x22, 0x8a, 0x06, 0x0a, 0x0c, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x38, 0x37, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x38, 0x37, 0x39, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x37, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x38, 0x38, 0x30, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x38, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x38, 0x38, 0x31, 0x18, 0x02, 0x20, 0x02, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x38, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x38, 0x38, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x38, 0x32, 0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x38, 0x38, 0x33, 0x18, 0xd1, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x38, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x38, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x38, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x38, 0x35, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x06, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x38, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x38, 0x36, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x38, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x38, 0x37, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x38, 0x37, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x38, 0x38, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x32, 0x38, 0x37, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x38, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38,
-	0x38, 0x39, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x38, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38,
-	0x39, 0x30, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x39, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38,
-	0x39, 0x31, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x39, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38,
-	0x39, 0x32, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x39, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38,
-	0x39, 0x33, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x39, 0x33, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38,
-	0x39, 0x34, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x38,
-	0x32, 0x35, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39, 0x34, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39, 0x35, 0x18, 0x0f, 0x20, 0x01,
-	0x28, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39, 0x35, 0x12, 0x1e,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39, 0x36, 0x18, 0x10, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39, 0x36, 0x12, 0x45,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x39, 0x37, 0x18, 0x11, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e,
-	0x45, 0x6e, 0x75, 0x6d, 0x31, 0x32, 0x38, 0x37, 0x31, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x39, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x38, 0x39, 0x38, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x39, 0x38, 0x22, 0xab, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x38, 0x30, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x38,
-	0x31, 0x38, 0x18, 0x01, 0x20, 0x02, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x38, 0x31, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x38, 0x31, 0x39,
-	0x18, 0x02, 0x20, 0x02, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x38, 0x31,
-	0x39, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x38, 0x32, 0x30, 0x18, 0x04,
-	0x20, 0x03, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x38, 0x30, 0x35, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x38, 0x32, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x38,
-	0x32, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x38, 0x32, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x38, 0x32, 0x32,
-	0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x38, 0x32,
-	0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x38, 0x32, 0x33, 0x18, 0x07,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x38, 0x32, 0x33, 0x12,
-	0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x38, 0x32, 0x34, 0x18, 0x08, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e,
-	0x45, 0x6e, 0x75, 0x6d, 0x33, 0x37, 0x38, 0x33, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x38, 0x32, 0x34, 0x22, 0xc0, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x32, 0x39, 0x30, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39,
-	0x30, 0x35, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x39, 0x30, 0x35, 0x12, 0x47, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39,
-	0x30, 0x36, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x35, 0x38,
-	0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x30, 0x36, 0x12, 0x47, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x39, 0x30, 0x37, 0x18, 0x03, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x35, 0x39, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x39, 0x30, 0x37, 0x22, 0x4e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x37, 0x33, 0x32, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x37, 0x33, 0x34, 0x35, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x37, 0x33, 0x34, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x37, 0x33, 0x34, 0x36, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x37, 0x33, 0x34, 0x36, 0x22, 0xd9, 0x0d, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x32, 0x33, 0x35, 0x36, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x33, 0x36, 0x38, 0x18, 0x79, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33,
-	0x37, 0x34, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x36, 0x38, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x36, 0x39, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x36, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x30, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x33, 0x37, 0x31, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x33, 0x37, 0x32, 0x18, 0x03, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x33, 0x37, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33,
-	0x37, 0x33, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x33, 0x37, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x34,
-	0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37,
-	0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x35, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x35, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x36, 0x18, 0x65, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x36, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x37, 0x18, 0x66, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x38, 0x18, 0x67, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x33, 0x37, 0x39, 0x18, 0x68, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x33, 0x37, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x33, 0x38, 0x30, 0x18, 0x71, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x33, 0x38, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33,
-	0x38, 0x31, 0x18, 0x72, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x33, 0x38, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x38, 0x32,
-	0x18, 0x73, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x38,
-	0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x38, 0x33, 0x18, 0x75,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x38, 0x33, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x38, 0x34, 0x18, 0x76, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x38, 0x34, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x38, 0x35, 0x18, 0x77, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x38, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x38, 0x36, 0x18, 0x69, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x38, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x33, 0x38, 0x37, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x33, 0x38, 0x37, 0x12, 0x55, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x32, 0x33, 0x35, 0x37, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x33, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x32, 0x33, 0x35, 0x36, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x33, 0x35,
-	0x37, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x33, 0x35, 0x37, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x38, 0x39, 0x18, 0x78, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x38, 0x39, 0x12, 0x55, 0x0a, 0x0b,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x33, 0x35, 0x38, 0x18, 0x6b, 0x20, 0x01, 0x28,
-	0x0a, 0x32, 0x33, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x33, 0x35, 0x36, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x32, 0x33, 0x35, 0x38, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32,
-	0x33, 0x35, 0x38, 0x12, 0x55, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x33,
-	0x35, 0x39, 0x18, 0x28, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x33, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x33, 0x35,
-	0x36, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x33, 0x35, 0x39, 0x52, 0x0b, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x33, 0x35, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x33, 0x39, 0x32, 0x18, 0x32, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x39, 0x32, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x33, 0x39, 0x33, 0x18, 0x3c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45,
-	0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x33, 0x39, 0x33, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x33, 0x39, 0x34, 0x18, 0x46, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70,
-	0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x33, 0x39, 0x34, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x39,
-	0x35, 0x18, 0x50, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33,
-	0x39, 0x35, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x39, 0x36, 0x18,
-	0x5a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x39, 0x36,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x39, 0x37, 0x18, 0x64, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x39, 0x37, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x39, 0x38, 0x18, 0x7b, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x39, 0x38, 0x1a, 0xf5, 0x02, 0x0a,
-	0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x33, 0x35, 0x37, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x39, 0x39, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x33, 0x39, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x30, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x34, 0x30, 0x31, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x34, 0x30, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x30, 0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x30, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30,
-	0x33, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34,
-	0x30, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x34, 0x18,
-	0x74, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x34,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x35, 0x18, 0x6a, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x35, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x36, 0x18, 0x0e, 0x20, 0x02, 0x28,
-	0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x36, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x37, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x38, 0x18, 0x70, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x30, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x32, 0x34, 0x30, 0x39, 0x18, 0x7a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x32, 0x34, 0x30, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x34, 0x31, 0x30, 0x18, 0x7c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x34, 0x31, 0x30, 0x1a, 0x0d, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32,
-	0x33, 0x35, 0x38, 0x1a, 0x0d, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x33,
-	0x35, 0x39, 0x22, 0x18, 0x0a, 0x08, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x30, 0x2a, 0x08,
-	0x08, 0x04, 0x10, 0xff, 0xff, 0xff, 0xff, 0x07, 0x3a, 0x02, 0x08, 0x01, 0x22, 0x60, 0x0a, 0x0a,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x39, 0x37, 0x31, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x39, 0x37, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x39, 0x37, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39,
-	0x37, 0x33, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39,
-	0x37, 0x33, 0x12, 0x1a, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x37, 0x34, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x39, 0x37, 0x34, 0x42, 0x23,
-	0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0xf8, 0x01, 0x01,
-}
-
-var (
-	file_datasets_google_message4_benchmark_message4_proto_rawDescOnce sync.Once
-	file_datasets_google_message4_benchmark_message4_proto_rawDescData = file_datasets_google_message4_benchmark_message4_proto_rawDesc
-)
-
-func file_datasets_google_message4_benchmark_message4_proto_rawDescGZIP() []byte {
-	file_datasets_google_message4_benchmark_message4_proto_rawDescOnce.Do(func() {
-		file_datasets_google_message4_benchmark_message4_proto_rawDescData = protoimpl.X.CompressGZIP(file_datasets_google_message4_benchmark_message4_proto_rawDescData)
-	})
-	return file_datasets_google_message4_benchmark_message4_proto_rawDescData
-}
-
-var file_datasets_google_message4_benchmark_message4_proto_msgTypes = make([]protoimpl.MessageInfo, 45)
-var file_datasets_google_message4_benchmark_message4_proto_goTypes = []interface{}{
-	(*GoogleMessage4)(nil),          // 0: benchmarks.google_message4.GoogleMessage4
-	(*Message37489)(nil),            // 1: benchmarks.google_message4.Message37489
-	(*Message7319)(nil),             // 2: benchmarks.google_message4.Message7319
-	(*Message12717)(nil),            // 3: benchmarks.google_message4.Message12717
-	(*Message37331)(nil),            // 4: benchmarks.google_message4.Message37331
-	(*Message8815)(nil),             // 5: benchmarks.google_message4.Message8815
-	(*Message7330)(nil),             // 6: benchmarks.google_message4.Message7330
-	(*Message12960)(nil),            // 7: benchmarks.google_message4.Message12960
-	(*Message176)(nil),              // 8: benchmarks.google_message4.Message176
-	(*Message8817)(nil),             // 9: benchmarks.google_message4.Message8817
-	(*Message8835)(nil),             // 10: benchmarks.google_message4.Message8835
-	(*Message37333)(nil),            // 11: benchmarks.google_message4.Message37333
-	(*Message13000)(nil),            // 12: benchmarks.google_message4.Message13000
-	(*Message37335)(nil),            // 13: benchmarks.google_message4.Message37335
-	(*Message8848)(nil),             // 14: benchmarks.google_message4.Message8848
-	(*Message13035)(nil),            // 15: benchmarks.google_message4.Message13035
-	(*Message8856)(nil),             // 16: benchmarks.google_message4.Message8856
-	(*Message12908)(nil),            // 17: benchmarks.google_message4.Message12908
-	(*Message12910)(nil),            // 18: benchmarks.google_message4.Message12910
-	(*Message37327)(nil),            // 19: benchmarks.google_message4.Message37327
-	(*Message37329)(nil),            // 20: benchmarks.google_message4.Message37329
-	(*Message2517)(nil),             // 21: benchmarks.google_message4.Message2517
-	(*Message12748)(nil),            // 22: benchmarks.google_message4.Message12748
-	(*Message12687)(nil),            // 23: benchmarks.google_message4.Message12687
-	(*Message11948)(nil),            // 24: benchmarks.google_message4.Message11948
-	(*Message11976)(nil),            // 25: benchmarks.google_message4.Message11976
-	(*Message7320)(nil),             // 26: benchmarks.google_message4.Message7320
-	(*Message3069)(nil),             // 27: benchmarks.google_message4.Message3069
-	(*Message12948)(nil),            // 28: benchmarks.google_message4.Message12948
-	(*Message8768)(nil),             // 29: benchmarks.google_message4.Message8768
-	(*Message12979)(nil),            // 30: benchmarks.google_message4.Message12979
-	(*Message37173)(nil),            // 31: benchmarks.google_message4.Message37173
-	(*Message12799)(nil),            // 32: benchmarks.google_message4.Message12799
-	(*Message12870)(nil),            // 33: benchmarks.google_message4.Message12870
-	(*Message3804)(nil),             // 34: benchmarks.google_message4.Message3804
-	(*Message12903)(nil),            // 35: benchmarks.google_message4.Message12903
-	(*Message37326)(nil),            // 36: benchmarks.google_message4.Message37326
-	(*Message2356)(nil),             // 37: benchmarks.google_message4.Message2356
-	(*Message0)(nil),                // 38: benchmarks.google_message4.Message0
-	(*Message971)(nil),              // 39: benchmarks.google_message4.Message971
-	(*Message176_Message178)(nil),   // 40: benchmarks.google_message4.Message176.Message178
-	(*Message3069_Message3070)(nil), // 41: benchmarks.google_message4.Message3069.Message3070
-	(*Message2356_Message2357)(nil), // 42: benchmarks.google_message4.Message2356.Message2357
-	(*Message2356_Message2358)(nil), // 43: benchmarks.google_message4.Message2356.Message2358
-	(*Message2356_Message2359)(nil), // 44: benchmarks.google_message4.Message2356.Message2359
-	(*UnusedEmptyMessage)(nil),      // 45: benchmarks.google_message4.UnusedEmptyMessage
-	(*Message11947)(nil),            // 46: benchmarks.google_message4.Message11947
-	(UnusedEnum)(0),                 // 47: benchmarks.google_message4.UnusedEnum
-	(*Message12818)(nil),            // 48: benchmarks.google_message4.Message12818
-	(*Message2463)(nil),             // 49: benchmarks.google_message4.Message2463
-	(Enum12735)(0),                  // 50: benchmarks.google_message4.Enum12735
-	(*Message12686)(nil),            // 51: benchmarks.google_message4.Message12686
-	(*Message11949)(nil),            // 52: benchmarks.google_message4.Message11949
-	(*Message11975)(nil),            // 53: benchmarks.google_message4.Message11975
-	(*Message7287)(nil),             // 54: benchmarks.google_message4.Message7287
-	(*Message3061)(nil),             // 55: benchmarks.google_message4.Message3061
-	(*Message12949)(nil),            // 56: benchmarks.google_message4.Message12949
-	(*Message8572)(nil),             // 57: benchmarks.google_message4.Message8572
-	(*Message8774)(nil),             // 58: benchmarks.google_message4.Message8774
-	(*Message12776)(nil),            // 59: benchmarks.google_message4.Message12776
-	(*Message12798)(nil),            // 60: benchmarks.google_message4.Message12798
-	(*Message12797)(nil),            // 61: benchmarks.google_message4.Message12797
-	(*Message12825)(nil),            // 62: benchmarks.google_message4.Message12825
-	(Enum12871)(0),                  // 63: benchmarks.google_message4.Enum12871
-	(Enum3805)(0),                   // 64: benchmarks.google_message4.Enum3805
-	(Enum3783)(0),                   // 65: benchmarks.google_message4.Enum3783
-	(*Message8587)(nil),             // 66: benchmarks.google_message4.Message8587
-	(*Message8590)(nil),             // 67: benchmarks.google_message4.Message8590
-	(*Message1374)(nil),             // 68: benchmarks.google_message4.Message1374
-	(Enum3071)(0),                   // 69: benchmarks.google_message4.Enum3071
-}
-var file_datasets_google_message4_benchmark_message4_proto_depIdxs = []int32{
-	45,  // 0: benchmarks.google_message4.GoogleMessage4.field37504:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 1: benchmarks.google_message4.GoogleMessage4.field37505:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 2: benchmarks.google_message4.GoogleMessage4.field37506:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 3: benchmarks.google_message4.GoogleMessage4.field37507:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	1,   // 4: benchmarks.google_message4.GoogleMessage4.field37508:type_name -> benchmarks.google_message4.Message37489
-	45,  // 5: benchmarks.google_message4.GoogleMessage4.field37509:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 6: benchmarks.google_message4.GoogleMessage4.field37510:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 7: benchmarks.google_message4.GoogleMessage4.field37511:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 8: benchmarks.google_message4.GoogleMessage4.field37512:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 9: benchmarks.google_message4.GoogleMessage4.field37513:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 10: benchmarks.google_message4.GoogleMessage4.field37514:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 11: benchmarks.google_message4.GoogleMessage4.field37515:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 12: benchmarks.google_message4.GoogleMessage4.field37516:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 13: benchmarks.google_message4.GoogleMessage4.field37517:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 14: benchmarks.google_message4.GoogleMessage4.field37518:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	21,  // 15: benchmarks.google_message4.Message37489.field37534:type_name -> benchmarks.google_message4.Message2517
-	6,   // 16: benchmarks.google_message4.Message37489.field37535:type_name -> benchmarks.google_message4.Message7330
-	5,   // 17: benchmarks.google_message4.Message37489.field37536:type_name -> benchmarks.google_message4.Message8815
-	9,   // 18: benchmarks.google_message4.Message37489.field37537:type_name -> benchmarks.google_message4.Message8817
-	10,  // 19: benchmarks.google_message4.Message37489.field37538:type_name -> benchmarks.google_message4.Message8835
-	14,  // 20: benchmarks.google_message4.Message37489.field37539:type_name -> benchmarks.google_message4.Message8848
-	16,  // 21: benchmarks.google_message4.Message37489.field37540:type_name -> benchmarks.google_message4.Message8856
-	3,   // 22: benchmarks.google_message4.Message37489.field37541:type_name -> benchmarks.google_message4.Message12717
-	22,  // 23: benchmarks.google_message4.Message37489.field37542:type_name -> benchmarks.google_message4.Message12748
-	2,   // 24: benchmarks.google_message4.Message37489.field37543:type_name -> benchmarks.google_message4.Message7319
-	17,  // 25: benchmarks.google_message4.Message37489.field37544:type_name -> benchmarks.google_message4.Message12908
-	18,  // 26: benchmarks.google_message4.Message37489.field37545:type_name -> benchmarks.google_message4.Message12910
-	7,   // 27: benchmarks.google_message4.Message37489.field37546:type_name -> benchmarks.google_message4.Message12960
-	8,   // 28: benchmarks.google_message4.Message37489.field37547:type_name -> benchmarks.google_message4.Message176
-	12,  // 29: benchmarks.google_message4.Message37489.field37548:type_name -> benchmarks.google_message4.Message13000
-	15,  // 30: benchmarks.google_message4.Message37489.field37549:type_name -> benchmarks.google_message4.Message13035
-	4,   // 31: benchmarks.google_message4.Message37489.field37550:type_name -> benchmarks.google_message4.Message37331
-	20,  // 32: benchmarks.google_message4.Message37489.field37551:type_name -> benchmarks.google_message4.Message37329
-	19,  // 33: benchmarks.google_message4.Message37489.field37552:type_name -> benchmarks.google_message4.Message37327
-	11,  // 34: benchmarks.google_message4.Message37489.field37553:type_name -> benchmarks.google_message4.Message37333
-	13,  // 35: benchmarks.google_message4.Message37489.field37554:type_name -> benchmarks.google_message4.Message37335
-	45,  // 36: benchmarks.google_message4.Message7319.field7321:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 37: benchmarks.google_message4.Message7319.field7322:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 38: benchmarks.google_message4.Message12717.field12719:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	25,  // 39: benchmarks.google_message4.Message12717.field12722:type_name -> benchmarks.google_message4.Message11976
-	24,  // 40: benchmarks.google_message4.Message12717.field12723:type_name -> benchmarks.google_message4.Message11948
-	46,  // 41: benchmarks.google_message4.Message12717.field12724:type_name -> benchmarks.google_message4.Message11947
-	23,  // 42: benchmarks.google_message4.Message12717.field12725:type_name -> benchmarks.google_message4.Message12687
-	24,  // 43: benchmarks.google_message4.Message12717.field12726:type_name -> benchmarks.google_message4.Message11948
-	45,  // 44: benchmarks.google_message4.Message37331.field37367:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	36,  // 45: benchmarks.google_message4.Message37331.field37368:type_name -> benchmarks.google_message4.Message37326
-	45,  // 46: benchmarks.google_message4.Message8815.field8819:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	29,  // 47: benchmarks.google_message4.Message8815.field8820:type_name -> benchmarks.google_message4.Message8768
-	45,  // 48: benchmarks.google_message4.Message7330.field7332:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	27,  // 49: benchmarks.google_message4.Message7330.field7333:type_name -> benchmarks.google_message4.Message3069
-	26,  // 50: benchmarks.google_message4.Message7330.field7334:type_name -> benchmarks.google_message4.Message7320
-	45,  // 51: benchmarks.google_message4.Message7330.field7335:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 52: benchmarks.google_message4.Message12960.field12962:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	28,  // 53: benchmarks.google_message4.Message12960.field12963:type_name -> benchmarks.google_message4.Message12948
-	45,  // 54: benchmarks.google_message4.Message176.field424:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 55: benchmarks.google_message4.Message176.field440:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 56: benchmarks.google_message4.Message176.field450:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 57: benchmarks.google_message4.Message176.field451:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	47,  // 58: benchmarks.google_message4.Message176.field452:type_name -> benchmarks.google_message4.UnusedEnum
-	47,  // 59: benchmarks.google_message4.Message176.field455:type_name -> benchmarks.google_message4.UnusedEnum
-	47,  // 60: benchmarks.google_message4.Message176.field456:type_name -> benchmarks.google_message4.UnusedEnum
-	40,  // 61: benchmarks.google_message4.Message176.message178:type_name -> benchmarks.google_message4.Message176.Message178
-	45,  // 62: benchmarks.google_message4.Message176.field462:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 63: benchmarks.google_message4.Message176.field463:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	47,  // 64: benchmarks.google_message4.Message176.field464:type_name -> benchmarks.google_message4.UnusedEnum
-	45,  // 65: benchmarks.google_message4.Message176.field466:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 66: benchmarks.google_message4.Message8817.field8825:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	29,  // 67: benchmarks.google_message4.Message8817.field8826:type_name -> benchmarks.google_message4.Message8768
-	45,  // 68: benchmarks.google_message4.Message8835.field8837:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	47,  // 69: benchmarks.google_message4.Message8835.field8839:type_name -> benchmarks.google_message4.UnusedEnum
-	45,  // 70: benchmarks.google_message4.Message37333.field37372:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	36,  // 71: benchmarks.google_message4.Message37333.field37373:type_name -> benchmarks.google_message4.Message37326
-	30,  // 72: benchmarks.google_message4.Message13000.field13016:type_name -> benchmarks.google_message4.Message12979
-	45,  // 73: benchmarks.google_message4.Message37335.field37376:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	36,  // 74: benchmarks.google_message4.Message37335.field37377:type_name -> benchmarks.google_message4.Message37326
-	31,  // 75: benchmarks.google_message4.Message37335.field37378:type_name -> benchmarks.google_message4.Message37173
-	45,  // 76: benchmarks.google_message4.Message8848.field8850:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 77: benchmarks.google_message4.Message8856.field8858:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 78: benchmarks.google_message4.Message12908.field12912:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	32,  // 79: benchmarks.google_message4.Message12908.field12914:type_name -> benchmarks.google_message4.Message12799
-	34,  // 80: benchmarks.google_message4.Message12908.field12916:type_name -> benchmarks.google_message4.Message3804
-	33,  // 81: benchmarks.google_message4.Message12908.field12917:type_name -> benchmarks.google_message4.Message12870
-	45,  // 82: benchmarks.google_message4.Message12910.field12920:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	48,  // 83: benchmarks.google_message4.Message12910.field12921:type_name -> benchmarks.google_message4.Message12818
-	35,  // 84: benchmarks.google_message4.Message12910.field12922:type_name -> benchmarks.google_message4.Message12903
-	45,  // 85: benchmarks.google_message4.Message37327.field37347:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	36,  // 86: benchmarks.google_message4.Message37327.field37348:type_name -> benchmarks.google_message4.Message37326
-	45,  // 87: benchmarks.google_message4.Message37327.field37354:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 88: benchmarks.google_message4.Message37329.field37359:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	36,  // 89: benchmarks.google_message4.Message37329.field37360:type_name -> benchmarks.google_message4.Message37326
-	45,  // 90: benchmarks.google_message4.Message2517.field2519:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	37,  // 91: benchmarks.google_message4.Message2517.field2520:type_name -> benchmarks.google_message4.Message2356
-	38,  // 92: benchmarks.google_message4.Message2517.field2521:type_name -> benchmarks.google_message4.Message0
-	49,  // 93: benchmarks.google_message4.Message2517.field2522:type_name -> benchmarks.google_message4.Message2463
-	39,  // 94: benchmarks.google_message4.Message2517.field2523:type_name -> benchmarks.google_message4.Message971
-	45,  // 95: benchmarks.google_message4.Message12748.field12754:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	50,  // 96: benchmarks.google_message4.Message12748.field12757:type_name -> benchmarks.google_message4.Enum12735
-	51,  // 97: benchmarks.google_message4.Message12687.field12701:type_name -> benchmarks.google_message4.Message12686
-	52,  // 98: benchmarks.google_message4.Message11948.field11955:type_name -> benchmarks.google_message4.Message11949
-	53,  // 99: benchmarks.google_message4.Message11976.field12002:type_name -> benchmarks.google_message4.Message11975
-	45,  // 100: benchmarks.google_message4.Message7320.field7323:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	54,  // 101: benchmarks.google_message4.Message7320.field7324:type_name -> benchmarks.google_message4.Message7287
-	55,  // 102: benchmarks.google_message4.Message3069.field3374:type_name -> benchmarks.google_message4.Message3061
-	41,  // 103: benchmarks.google_message4.Message3069.message3070:type_name -> benchmarks.google_message4.Message3069.Message3070
-	56,  // 104: benchmarks.google_message4.Message12948.field12958:type_name -> benchmarks.google_message4.Message12949
-	57,  // 105: benchmarks.google_message4.Message8768.field8783:type_name -> benchmarks.google_message4.Message8572
-	58,  // 106: benchmarks.google_message4.Message8768.field8785:type_name -> benchmarks.google_message4.Message8774
-	45,  // 107: benchmarks.google_message4.Message8768.field8787:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 108: benchmarks.google_message4.Message12979.field12983:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 109: benchmarks.google_message4.Message12979.field12987:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	47,  // 110: benchmarks.google_message4.Message37173.field37254:type_name -> benchmarks.google_message4.UnusedEnum
-	45,  // 111: benchmarks.google_message4.Message37173.field37270:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 112: benchmarks.google_message4.Message37173.field37271:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 113: benchmarks.google_message4.Message37173.field37272:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 114: benchmarks.google_message4.Message37173.field37273:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 115: benchmarks.google_message4.Message37173.field37274:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	59,  // 116: benchmarks.google_message4.Message12799.field12811:type_name -> benchmarks.google_message4.Message12776
-	60,  // 117: benchmarks.google_message4.Message12799.field12813:type_name -> benchmarks.google_message4.Message12798
-	61,  // 118: benchmarks.google_message4.Message12799.field12816:type_name -> benchmarks.google_message4.Message12797
-	33,  // 119: benchmarks.google_message4.Message12870.field12888:type_name -> benchmarks.google_message4.Message12870
-	62,  // 120: benchmarks.google_message4.Message12870.field12894:type_name -> benchmarks.google_message4.Message12825
-	63,  // 121: benchmarks.google_message4.Message12870.field12897:type_name -> benchmarks.google_message4.Enum12871
-	64,  // 122: benchmarks.google_message4.Message3804.field3820:type_name -> benchmarks.google_message4.Enum3805
-	65,  // 123: benchmarks.google_message4.Message3804.field3824:type_name -> benchmarks.google_message4.Enum3783
-	66,  // 124: benchmarks.google_message4.Message12903.field12906:type_name -> benchmarks.google_message4.Message8587
-	67,  // 125: benchmarks.google_message4.Message12903.field12907:type_name -> benchmarks.google_message4.Message8590
-	68,  // 126: benchmarks.google_message4.Message2356.field2368:type_name -> benchmarks.google_message4.Message1374
-	42,  // 127: benchmarks.google_message4.Message2356.message2357:type_name -> benchmarks.google_message4.Message2356.Message2357
-	43,  // 128: benchmarks.google_message4.Message2356.message2358:type_name -> benchmarks.google_message4.Message2356.Message2358
-	44,  // 129: benchmarks.google_message4.Message2356.message2359:type_name -> benchmarks.google_message4.Message2356.Message2359
-	45,  // 130: benchmarks.google_message4.Message2356.field2393:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 131: benchmarks.google_message4.Message2356.field2394:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 132: benchmarks.google_message4.Message2356.field2395:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 133: benchmarks.google_message4.Message2356.field2396:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	69,  // 134: benchmarks.google_message4.Message3069.Message3070.field3378:type_name -> benchmarks.google_message4.Enum3071
-	135, // [135:135] is the sub-list for method output_type
-	135, // [135:135] is the sub-list for method input_type
-	135, // [135:135] is the sub-list for extension type_name
-	135, // [135:135] is the sub-list for extension extendee
-	0,   // [0:135] is the sub-list for field type_name
-}
-
-func init() { file_datasets_google_message4_benchmark_message4_proto_init() }
-func file_datasets_google_message4_benchmark_message4_proto_init() {
-	if File_datasets_google_message4_benchmark_message4_proto != nil {
-		return
-	}
-	file_datasets_google_message4_benchmark_message4_1_proto_init()
-	file_datasets_google_message4_benchmark_message4_2_proto_init()
-	file_datasets_google_message4_benchmark_message4_3_proto_init()
-	if !protoimpl.UnsafeEnabled {
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GoogleMessage4); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message37489); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7319); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12717); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message37331); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8815); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7330); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12960); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message176); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8817); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8835); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message37333); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message13000); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message37335); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8848); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message13035); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8856); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12908); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12910); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message37327); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message37329); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message2517); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12748); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12687); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message11948); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message11976); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7320); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3069); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12948); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8768); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12979); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message37173); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12799); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12870); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3804); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12903); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message37326); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message2356); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message0); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message971); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message176_Message178); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3069_Message3070); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message2356_Message2357); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message2356_Message2358); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message2356_Message2359); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_datasets_google_message4_benchmark_message4_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   45,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_datasets_google_message4_benchmark_message4_proto_goTypes,
-		DependencyIndexes: file_datasets_google_message4_benchmark_message4_proto_depIdxs,
-		MessageInfos:      file_datasets_google_message4_benchmark_message4_proto_msgTypes,
-	}.Build()
-	File_datasets_google_message4_benchmark_message4_proto = out.File
-	file_datasets_google_message4_benchmark_message4_proto_rawDesc = nil
-	file_datasets_google_message4_benchmark_message4_proto_goTypes = nil
-	file_datasets_google_message4_benchmark_message4_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4_1.pb.go b/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4_1.pb.go
deleted file mode 100644
index 25d247a..0000000
--- a/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4_1.pb.go
+++ /dev/null
@@ -1,6267 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// LINT: ALLOW_GROUPS
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: datasets/google_message4/benchmark_message4_1.proto
-
-package google_message4
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Message2463 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field2498 []*Message2462 `protobuf:"bytes,1,rep,name=field2498" json:"field2498,omitempty"`
-}
-
-func (x *Message2463) Reset() {
-	*x = Message2463{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message2463) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message2463) ProtoMessage() {}
-
-func (x *Message2463) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message2463.ProtoReflect.Descriptor instead.
-func (*Message2463) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Message2463) GetField2498() []*Message2462 {
-	if x != nil {
-		return x.Field2498
-	}
-	return nil
-}
-
-type Message12686 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12699 *string       `protobuf:"bytes,1,opt,name=field12699" json:"field12699,omitempty"`
-	Field12700 *Message12685 `protobuf:"bytes,2,opt,name=field12700" json:"field12700,omitempty"`
-}
-
-func (x *Message12686) Reset() {
-	*x = Message12686{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12686) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12686) ProtoMessage() {}
-
-func (x *Message12686) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12686.ProtoReflect.Descriptor instead.
-func (*Message12686) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Message12686) GetField12699() string {
-	if x != nil && x.Field12699 != nil {
-		return *x.Field12699
-	}
-	return ""
-}
-
-func (x *Message12686) GetField12700() *Message12685 {
-	if x != nil {
-		return x.Field12700
-	}
-	return nil
-}
-
-type Message11949 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message11949) Reset() {
-	*x = Message11949{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message11949) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message11949) ProtoMessage() {}
-
-func (x *Message11949) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message11949.ProtoReflect.Descriptor instead.
-func (*Message11949) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{2}
-}
-
-type Message11975 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field11992 *string         `protobuf:"bytes,1,opt,name=field11992" json:"field11992,omitempty"`
-	Field11993 *int32          `protobuf:"varint,2,opt,name=field11993" json:"field11993,omitempty"`
-	Field11994 []*Message10320 `protobuf:"bytes,3,rep,name=field11994" json:"field11994,omitempty"`
-	Field11995 *Message11947   `protobuf:"bytes,4,opt,name=field11995" json:"field11995,omitempty"`
-	Field11996 *Message11920   `protobuf:"bytes,5,opt,name=field11996" json:"field11996,omitempty"`
-	Field11997 *bool           `protobuf:"varint,6,opt,name=field11997" json:"field11997,omitempty"`
-	Field11998 []string        `protobuf:"bytes,7,rep,name=field11998" json:"field11998,omitempty"`
-	Field11999 *float32        `protobuf:"fixed32,8,opt,name=field11999" json:"field11999,omitempty"`
-	Field12000 []UnusedEnum    `protobuf:"varint,9,rep,name=field12000,enum=benchmarks.google_message4.UnusedEnum" json:"field12000,omitempty"`
-	Field12001 *int32          `protobuf:"varint,11,opt,name=field12001" json:"field12001,omitempty"`
-}
-
-func (x *Message11975) Reset() {
-	*x = Message11975{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message11975) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message11975) ProtoMessage() {}
-
-func (x *Message11975) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message11975.ProtoReflect.Descriptor instead.
-func (*Message11975) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Message11975) GetField11992() string {
-	if x != nil && x.Field11992 != nil {
-		return *x.Field11992
-	}
-	return ""
-}
-
-func (x *Message11975) GetField11993() int32 {
-	if x != nil && x.Field11993 != nil {
-		return *x.Field11993
-	}
-	return 0
-}
-
-func (x *Message11975) GetField11994() []*Message10320 {
-	if x != nil {
-		return x.Field11994
-	}
-	return nil
-}
-
-func (x *Message11975) GetField11995() *Message11947 {
-	if x != nil {
-		return x.Field11995
-	}
-	return nil
-}
-
-func (x *Message11975) GetField11996() *Message11920 {
-	if x != nil {
-		return x.Field11996
-	}
-	return nil
-}
-
-func (x *Message11975) GetField11997() bool {
-	if x != nil && x.Field11997 != nil {
-		return *x.Field11997
-	}
-	return false
-}
-
-func (x *Message11975) GetField11998() []string {
-	if x != nil {
-		return x.Field11998
-	}
-	return nil
-}
-
-func (x *Message11975) GetField11999() float32 {
-	if x != nil && x.Field11999 != nil {
-		return *x.Field11999
-	}
-	return 0
-}
-
-func (x *Message11975) GetField12000() []UnusedEnum {
-	if x != nil {
-		return x.Field12000
-	}
-	return nil
-}
-
-func (x *Message11975) GetField12001() int32 {
-	if x != nil && x.Field12001 != nil {
-		return *x.Field12001
-	}
-	return 0
-}
-
-type Message7287 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7311 *Message6133        `protobuf:"bytes,1,opt,name=field7311" json:"field7311,omitempty"`
-	Field7312 *UnusedEmptyMessage `protobuf:"bytes,8,opt,name=field7312" json:"field7312,omitempty"`
-	Field7313 *string             `protobuf:"bytes,3,opt,name=field7313" json:"field7313,omitempty"`
-	Field7314 *Message6643        `protobuf:"bytes,4,opt,name=field7314" json:"field7314,omitempty"`
-	Field7315 *Enum7288           `protobuf:"varint,5,opt,name=field7315,enum=benchmarks.google_message4.Enum7288" json:"field7315,omitempty"`
-	Field7316 []byte              `protobuf:"bytes,6,opt,name=field7316" json:"field7316,omitempty"`
-	Field7317 *UnusedEmptyMessage `protobuf:"bytes,7,opt,name=field7317" json:"field7317,omitempty"`
-	Field7318 *UnusedEmptyMessage `protobuf:"bytes,9,opt,name=field7318" json:"field7318,omitempty"`
-}
-
-func (x *Message7287) Reset() {
-	*x = Message7287{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7287) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7287) ProtoMessage() {}
-
-func (x *Message7287) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7287.ProtoReflect.Descriptor instead.
-func (*Message7287) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Message7287) GetField7311() *Message6133 {
-	if x != nil {
-		return x.Field7311
-	}
-	return nil
-}
-
-func (x *Message7287) GetField7312() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7312
-	}
-	return nil
-}
-
-func (x *Message7287) GetField7313() string {
-	if x != nil && x.Field7313 != nil {
-		return *x.Field7313
-	}
-	return ""
-}
-
-func (x *Message7287) GetField7314() *Message6643 {
-	if x != nil {
-		return x.Field7314
-	}
-	return nil
-}
-
-func (x *Message7287) GetField7315() Enum7288 {
-	if x != nil && x.Field7315 != nil {
-		return *x.Field7315
-	}
-	return Enum7288_ENUM_VALUE7289
-}
-
-func (x *Message7287) GetField7316() []byte {
-	if x != nil {
-		return x.Field7316
-	}
-	return nil
-}
-
-func (x *Message7287) GetField7317() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7317
-	}
-	return nil
-}
-
-func (x *Message7287) GetField7318() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7318
-	}
-	return nil
-}
-
-type Message3061 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field3286   *string                    `protobuf:"bytes,2,opt,name=field3286" json:"field3286,omitempty"`
-	Field3287   *int32                     `protobuf:"varint,77,opt,name=field3287" json:"field3287,omitempty"`
-	Field3288   *string                    `protobuf:"bytes,49,opt,name=field3288" json:"field3288,omitempty"`
-	Field3289   *Message3046               `protobuf:"bytes,3,req,name=field3289" json:"field3289,omitempty"`
-	Field3290   *Message3046               `protobuf:"bytes,58,opt,name=field3290" json:"field3290,omitempty"`
-	Message3062 *Message3061_Message3062   `protobuf:"group,4,opt,name=Message3062,json=message3062" json:"message3062,omitempty"`
-	Field3292   *Message3060               `protobuf:"bytes,104,opt,name=field3292" json:"field3292,omitempty"`
-	Field3293   *int64                     `protobuf:"varint,32,opt,name=field3293" json:"field3293,omitempty"`
-	Field3294   *int32                     `protobuf:"varint,41,opt,name=field3294" json:"field3294,omitempty"`
-	Message3063 *Message3061_Message3063   `protobuf:"group,13,opt,name=Message3063,json=message3063" json:"message3063,omitempty"`
-	Field3296   *Enum2834                  `protobuf:"varint,94,opt,name=field3296,enum=benchmarks.google_message4.Enum2834" json:"field3296,omitempty"`
-	Field3297   *bool                      `protobuf:"varint,25,opt,name=field3297" json:"field3297,omitempty"`
-	Field3298   *bool                      `protobuf:"varint,50,opt,name=field3298" json:"field3298,omitempty"`
-	Field3299   *string                    `protobuf:"bytes,89,opt,name=field3299" json:"field3299,omitempty"`
-	Field3300   *string                    `protobuf:"bytes,91,opt,name=field3300" json:"field3300,omitempty"`
-	Field3301   *string                    `protobuf:"bytes,105,opt,name=field3301" json:"field3301,omitempty"`
-	Field3302   *Message3050               `protobuf:"bytes,53,opt,name=field3302" json:"field3302,omitempty"`
-	Field3303   *uint64                    `protobuf:"fixed64,51,opt,name=field3303" json:"field3303,omitempty"`
-	Field3304   *uint64                    `protobuf:"fixed64,106,opt,name=field3304" json:"field3304,omitempty"`
-	Field3305   *int32                     `protobuf:"varint,60,opt,name=field3305" json:"field3305,omitempty"`
-	Field3306   *string                    `protobuf:"bytes,44,opt,name=field3306" json:"field3306,omitempty"`
-	Field3307   []byte                     `protobuf:"bytes,81,opt,name=field3307" json:"field3307,omitempty"`
-	Field3308   *string                    `protobuf:"bytes,70,opt,name=field3308" json:"field3308,omitempty"`
-	Field3309   []byte                     `protobuf:"bytes,45,opt,name=field3309" json:"field3309,omitempty"`
-	Field3310   *Enum2806                  `protobuf:"varint,71,opt,name=field3310,enum=benchmarks.google_message4.Enum2806" json:"field3310,omitempty"`
-	Field3311   *int32                     `protobuf:"varint,72,opt,name=field3311" json:"field3311,omitempty"`
-	Field3312   []byte                     `protobuf:"bytes,78,opt,name=field3312" json:"field3312,omitempty"`
-	Field3313   *int32                     `protobuf:"varint,20,opt,name=field3313" json:"field3313,omitempty"`
-	Message3064 []*Message3061_Message3064 `protobuf:"group,8,rep,name=Message3064,json=message3064" json:"message3064,omitempty"`
-	Field3315   *UnusedEmptyMessage        `protobuf:"bytes,39,opt,name=field3315" json:"field3315,omitempty"`
-	Field3316   *int32                     `protobuf:"varint,76,opt,name=field3316" json:"field3316,omitempty"`
-	Message3065 *Message3061_Message3065   `protobuf:"group,63,opt,name=Message3065,json=message3065" json:"message3065,omitempty"`
-	Field3318   *Enum2806                  `protobuf:"varint,54,opt,name=field3318,enum=benchmarks.google_message4.Enum2806" json:"field3318,omitempty"`
-	Field3319   *int32                     `protobuf:"varint,46,opt,name=field3319" json:"field3319,omitempty"`
-	Field3320   []string                   `protobuf:"bytes,24,rep,name=field3320" json:"field3320,omitempty"`
-	Field3321   *uint32                    `protobuf:"fixed32,38,opt,name=field3321" json:"field3321,omitempty"`
-	Field3322   []byte                     `protobuf:"bytes,99,opt,name=field3322" json:"field3322,omitempty"`
-	Field3323   *uint64                    `protobuf:"fixed64,1,opt,name=field3323" json:"field3323,omitempty"`
-	Field3324   *uint64                    `protobuf:"fixed64,97,opt,name=field3324" json:"field3324,omitempty"`
-	Field3325   []*Message3040             `protobuf:"bytes,16,rep,name=field3325" json:"field3325,omitempty"`
-	Field3326   []*Message3041             `protobuf:"bytes,61,rep,name=field3326" json:"field3326,omitempty"`
-	Message3066 *Message3061_Message3066   `protobuf:"group,21,opt,name=Message3066,json=message3066" json:"message3066,omitempty"`
-	Field3328   *UnusedEmptyMessage        `protobuf:"bytes,47,opt,name=field3328" json:"field3328,omitempty"`
-	Field3329   *UnusedEmptyMessage        `protobuf:"bytes,48,opt,name=field3329" json:"field3329,omitempty"`
-	Field3330   *uint64                    `protobuf:"fixed64,40,opt,name=field3330" json:"field3330,omitempty"`
-	Field3331   *UnusedEmptyMessage        `protobuf:"bytes,86,opt,name=field3331" json:"field3331,omitempty"`
-	Field3332   *UnusedEmptyMessage        `protobuf:"bytes,59,opt,name=field3332" json:"field3332,omitempty"`
-	Field3333   *int32                     `protobuf:"varint,17,opt,name=field3333" json:"field3333,omitempty"`
-}
-
-func (x *Message3061) Reset() {
-	*x = Message3061{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3061) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3061) ProtoMessage() {}
-
-func (x *Message3061) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3061.ProtoReflect.Descriptor instead.
-func (*Message3061) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *Message3061) GetField3286() string {
-	if x != nil && x.Field3286 != nil {
-		return *x.Field3286
-	}
-	return ""
-}
-
-func (x *Message3061) GetField3287() int32 {
-	if x != nil && x.Field3287 != nil {
-		return *x.Field3287
-	}
-	return 0
-}
-
-func (x *Message3061) GetField3288() string {
-	if x != nil && x.Field3288 != nil {
-		return *x.Field3288
-	}
-	return ""
-}
-
-func (x *Message3061) GetField3289() *Message3046 {
-	if x != nil {
-		return x.Field3289
-	}
-	return nil
-}
-
-func (x *Message3061) GetField3290() *Message3046 {
-	if x != nil {
-		return x.Field3290
-	}
-	return nil
-}
-
-func (x *Message3061) GetMessage3062() *Message3061_Message3062 {
-	if x != nil {
-		return x.Message3062
-	}
-	return nil
-}
-
-func (x *Message3061) GetField3292() *Message3060 {
-	if x != nil {
-		return x.Field3292
-	}
-	return nil
-}
-
-func (x *Message3061) GetField3293() int64 {
-	if x != nil && x.Field3293 != nil {
-		return *x.Field3293
-	}
-	return 0
-}
-
-func (x *Message3061) GetField3294() int32 {
-	if x != nil && x.Field3294 != nil {
-		return *x.Field3294
-	}
-	return 0
-}
-
-func (x *Message3061) GetMessage3063() *Message3061_Message3063 {
-	if x != nil {
-		return x.Message3063
-	}
-	return nil
-}
-
-func (x *Message3061) GetField3296() Enum2834 {
-	if x != nil && x.Field3296 != nil {
-		return *x.Field3296
-	}
-	return Enum2834_ENUM_VALUE2835
-}
-
-func (x *Message3061) GetField3297() bool {
-	if x != nil && x.Field3297 != nil {
-		return *x.Field3297
-	}
-	return false
-}
-
-func (x *Message3061) GetField3298() bool {
-	if x != nil && x.Field3298 != nil {
-		return *x.Field3298
-	}
-	return false
-}
-
-func (x *Message3061) GetField3299() string {
-	if x != nil && x.Field3299 != nil {
-		return *x.Field3299
-	}
-	return ""
-}
-
-func (x *Message3061) GetField3300() string {
-	if x != nil && x.Field3300 != nil {
-		return *x.Field3300
-	}
-	return ""
-}
-
-func (x *Message3061) GetField3301() string {
-	if x != nil && x.Field3301 != nil {
-		return *x.Field3301
-	}
-	return ""
-}
-
-func (x *Message3061) GetField3302() *Message3050 {
-	if x != nil {
-		return x.Field3302
-	}
-	return nil
-}
-
-func (x *Message3061) GetField3303() uint64 {
-	if x != nil && x.Field3303 != nil {
-		return *x.Field3303
-	}
-	return 0
-}
-
-func (x *Message3061) GetField3304() uint64 {
-	if x != nil && x.Field3304 != nil {
-		return *x.Field3304
-	}
-	return 0
-}
-
-func (x *Message3061) GetField3305() int32 {
-	if x != nil && x.Field3305 != nil {
-		return *x.Field3305
-	}
-	return 0
-}
-
-func (x *Message3061) GetField3306() string {
-	if x != nil && x.Field3306 != nil {
-		return *x.Field3306
-	}
-	return ""
-}
-
-func (x *Message3061) GetField3307() []byte {
-	if x != nil {
-		return x.Field3307
-	}
-	return nil
-}
-
-func (x *Message3061) GetField3308() string {
-	if x != nil && x.Field3308 != nil {
-		return *x.Field3308
-	}
-	return ""
-}
-
-func (x *Message3061) GetField3309() []byte {
-	if x != nil {
-		return x.Field3309
-	}
-	return nil
-}
-
-func (x *Message3061) GetField3310() Enum2806 {
-	if x != nil && x.Field3310 != nil {
-		return *x.Field3310
-	}
-	return Enum2806_ENUM_VALUE2807
-}
-
-func (x *Message3061) GetField3311() int32 {
-	if x != nil && x.Field3311 != nil {
-		return *x.Field3311
-	}
-	return 0
-}
-
-func (x *Message3061) GetField3312() []byte {
-	if x != nil {
-		return x.Field3312
-	}
-	return nil
-}
-
-func (x *Message3061) GetField3313() int32 {
-	if x != nil && x.Field3313 != nil {
-		return *x.Field3313
-	}
-	return 0
-}
-
-func (x *Message3061) GetMessage3064() []*Message3061_Message3064 {
-	if x != nil {
-		return x.Message3064
-	}
-	return nil
-}
-
-func (x *Message3061) GetField3315() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field3315
-	}
-	return nil
-}
-
-func (x *Message3061) GetField3316() int32 {
-	if x != nil && x.Field3316 != nil {
-		return *x.Field3316
-	}
-	return 0
-}
-
-func (x *Message3061) GetMessage3065() *Message3061_Message3065 {
-	if x != nil {
-		return x.Message3065
-	}
-	return nil
-}
-
-func (x *Message3061) GetField3318() Enum2806 {
-	if x != nil && x.Field3318 != nil {
-		return *x.Field3318
-	}
-	return Enum2806_ENUM_VALUE2807
-}
-
-func (x *Message3061) GetField3319() int32 {
-	if x != nil && x.Field3319 != nil {
-		return *x.Field3319
-	}
-	return 0
-}
-
-func (x *Message3061) GetField3320() []string {
-	if x != nil {
-		return x.Field3320
-	}
-	return nil
-}
-
-func (x *Message3061) GetField3321() uint32 {
-	if x != nil && x.Field3321 != nil {
-		return *x.Field3321
-	}
-	return 0
-}
-
-func (x *Message3061) GetField3322() []byte {
-	if x != nil {
-		return x.Field3322
-	}
-	return nil
-}
-
-func (x *Message3061) GetField3323() uint64 {
-	if x != nil && x.Field3323 != nil {
-		return *x.Field3323
-	}
-	return 0
-}
-
-func (x *Message3061) GetField3324() uint64 {
-	if x != nil && x.Field3324 != nil {
-		return *x.Field3324
-	}
-	return 0
-}
-
-func (x *Message3061) GetField3325() []*Message3040 {
-	if x != nil {
-		return x.Field3325
-	}
-	return nil
-}
-
-func (x *Message3061) GetField3326() []*Message3041 {
-	if x != nil {
-		return x.Field3326
-	}
-	return nil
-}
-
-func (x *Message3061) GetMessage3066() *Message3061_Message3066 {
-	if x != nil {
-		return x.Message3066
-	}
-	return nil
-}
-
-func (x *Message3061) GetField3328() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field3328
-	}
-	return nil
-}
-
-func (x *Message3061) GetField3329() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field3329
-	}
-	return nil
-}
-
-func (x *Message3061) GetField3330() uint64 {
-	if x != nil && x.Field3330 != nil {
-		return *x.Field3330
-	}
-	return 0
-}
-
-func (x *Message3061) GetField3331() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field3331
-	}
-	return nil
-}
-
-func (x *Message3061) GetField3332() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field3332
-	}
-	return nil
-}
-
-func (x *Message3061) GetField3333() int32 {
-	if x != nil && x.Field3333 != nil {
-		return *x.Field3333
-	}
-	return 0
-}
-
-type Message12949 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message12949) Reset() {
-	*x = Message12949{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12949) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12949) ProtoMessage() {}
-
-func (x *Message12949) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12949.ProtoReflect.Descriptor instead.
-func (*Message12949) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{6}
-}
-
-type Message8572 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8647 []byte              `protobuf:"bytes,1,opt,name=field8647" json:"field8647,omitempty"`
-	Field8648 []byte              `protobuf:"bytes,3,opt,name=field8648" json:"field8648,omitempty"`
-	Field8649 *Message3886        `protobuf:"bytes,4,opt,name=field8649" json:"field8649,omitempty"`
-	Field8650 *Message3919        `protobuf:"bytes,57,opt,name=field8650" json:"field8650,omitempty"`
-	Field8651 *bool               `protobuf:"varint,5,opt,name=field8651" json:"field8651,omitempty"`
-	Field8652 *int32              `protobuf:"varint,6,opt,name=field8652" json:"field8652,omitempty"`
-	Field8653 *int32              `protobuf:"varint,49,opt,name=field8653" json:"field8653,omitempty"`
-	Field8654 *Message7905        `protobuf:"bytes,7,opt,name=field8654" json:"field8654,omitempty"`
-	Field8655 *int32              `protobuf:"varint,10,opt,name=field8655" json:"field8655,omitempty"`
-	Field8656 *UnusedEmptyMessage `protobuf:"bytes,11,opt,name=field8656" json:"field8656,omitempty"`
-	Field8657 *bool               `protobuf:"varint,35,opt,name=field8657" json:"field8657,omitempty"`
-	Field8658 []byte              `protobuf:"bytes,12,opt,name=field8658" json:"field8658,omitempty"`
-	Field8659 *string             `protobuf:"bytes,14,opt,name=field8659" json:"field8659,omitempty"`
-	Field8660 *UnusedEmptyMessage `protobuf:"bytes,13,opt,name=field8660" json:"field8660,omitempty"`
-	Field8661 []byte              `protobuf:"bytes,15,opt,name=field8661" json:"field8661,omitempty"`
-	Field8662 *UnusedEmptyMessage `protobuf:"bytes,17,opt,name=field8662" json:"field8662,omitempty"`
-	Field8663 *int32              `protobuf:"varint,18,opt,name=field8663" json:"field8663,omitempty"`
-	Field8664 *int32              `protobuf:"varint,19,opt,name=field8664" json:"field8664,omitempty"`
-	Field8665 *bool               `protobuf:"varint,20,opt,name=field8665" json:"field8665,omitempty"`
-	Field8666 *Enum3476           `protobuf:"varint,31,opt,name=field8666,enum=benchmarks.google_message4.Enum3476" json:"field8666,omitempty"`
-	Field8667 *bool               `protobuf:"varint,36,opt,name=field8667" json:"field8667,omitempty"`
-	Field8668 *UnusedEmptyMessage `protobuf:"bytes,39,opt,name=field8668" json:"field8668,omitempty"`
-	Field8669 []byte              `protobuf:"bytes,22,opt,name=field8669" json:"field8669,omitempty"`
-	Field8670 *int32              `protobuf:"varint,24,opt,name=field8670" json:"field8670,omitempty"`
-	Field8671 *Message3052        `protobuf:"bytes,25,opt,name=field8671" json:"field8671,omitempty"`
-	Field8672 []byte              `protobuf:"bytes,26,opt,name=field8672" json:"field8672,omitempty"`
-	Field8673 []byte              `protobuf:"bytes,28,opt,name=field8673" json:"field8673,omitempty"`
-	Field8674 *int32              `protobuf:"varint,29,opt,name=field8674" json:"field8674,omitempty"`
-	Field8675 []byte              `protobuf:"bytes,30,opt,name=field8675" json:"field8675,omitempty"`
-	Field8676 []byte              `protobuf:"bytes,32,opt,name=field8676" json:"field8676,omitempty"`
-	Field8677 *string             `protobuf:"bytes,33,opt,name=field8677" json:"field8677,omitempty"`
-	Field8678 *int32              `protobuf:"varint,34,opt,name=field8678" json:"field8678,omitempty"`
-	Field8679 *int32              `protobuf:"varint,37,opt,name=field8679" json:"field8679,omitempty"`
-	Field8680 *float64            `protobuf:"fixed64,38,opt,name=field8680" json:"field8680,omitempty"`
-	Field8681 *float64            `protobuf:"fixed64,42,opt,name=field8681" json:"field8681,omitempty"`
-	Field8682 *Message3922        `protobuf:"bytes,40,opt,name=field8682" json:"field8682,omitempty"`
-	Field8683 *UnusedEmptyMessage `protobuf:"bytes,43,opt,name=field8683" json:"field8683,omitempty"`
-	Field8684 *int64              `protobuf:"varint,44,opt,name=field8684" json:"field8684,omitempty"`
-	Field8685 *Message7929        `protobuf:"bytes,45,opt,name=field8685" json:"field8685,omitempty"`
-	Field8686 *uint64             `protobuf:"varint,46,opt,name=field8686" json:"field8686,omitempty"`
-	Field8687 *uint32             `protobuf:"varint,48,opt,name=field8687" json:"field8687,omitempty"`
-	Field8688 *Message7843        `protobuf:"bytes,47,opt,name=field8688" json:"field8688,omitempty"`
-	Field8689 *Message7864        `protobuf:"bytes,50,opt,name=field8689" json:"field8689,omitempty"`
-	Field8690 *UnusedEmptyMessage `protobuf:"bytes,52,opt,name=field8690" json:"field8690,omitempty"`
-	Field8691 *bool               `protobuf:"varint,58,opt,name=field8691" json:"field8691,omitempty"`
-	Field8692 *bool               `protobuf:"varint,54,opt,name=field8692" json:"field8692,omitempty"`
-	Field8693 *string             `protobuf:"bytes,55,opt,name=field8693" json:"field8693,omitempty"`
-	Field8694 *UnusedEmptyMessage `protobuf:"bytes,41,opt,name=field8694" json:"field8694,omitempty"`
-	Field8695 *UnusedEmptyMessage `protobuf:"bytes,53,opt,name=field8695" json:"field8695,omitempty"`
-	Field8696 *Message8575        `protobuf:"bytes,61,opt,name=field8696" json:"field8696,omitempty"`
-}
-
-func (x *Message8572) Reset() {
-	*x = Message8572{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8572) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8572) ProtoMessage() {}
-
-func (x *Message8572) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8572.ProtoReflect.Descriptor instead.
-func (*Message8572) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *Message8572) GetField8647() []byte {
-	if x != nil {
-		return x.Field8647
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8648() []byte {
-	if x != nil {
-		return x.Field8648
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8649() *Message3886 {
-	if x != nil {
-		return x.Field8649
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8650() *Message3919 {
-	if x != nil {
-		return x.Field8650
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8651() bool {
-	if x != nil && x.Field8651 != nil {
-		return *x.Field8651
-	}
-	return false
-}
-
-func (x *Message8572) GetField8652() int32 {
-	if x != nil && x.Field8652 != nil {
-		return *x.Field8652
-	}
-	return 0
-}
-
-func (x *Message8572) GetField8653() int32 {
-	if x != nil && x.Field8653 != nil {
-		return *x.Field8653
-	}
-	return 0
-}
-
-func (x *Message8572) GetField8654() *Message7905 {
-	if x != nil {
-		return x.Field8654
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8655() int32 {
-	if x != nil && x.Field8655 != nil {
-		return *x.Field8655
-	}
-	return 0
-}
-
-func (x *Message8572) GetField8656() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8656
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8657() bool {
-	if x != nil && x.Field8657 != nil {
-		return *x.Field8657
-	}
-	return false
-}
-
-func (x *Message8572) GetField8658() []byte {
-	if x != nil {
-		return x.Field8658
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8659() string {
-	if x != nil && x.Field8659 != nil {
-		return *x.Field8659
-	}
-	return ""
-}
-
-func (x *Message8572) GetField8660() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8660
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8661() []byte {
-	if x != nil {
-		return x.Field8661
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8662() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8662
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8663() int32 {
-	if x != nil && x.Field8663 != nil {
-		return *x.Field8663
-	}
-	return 0
-}
-
-func (x *Message8572) GetField8664() int32 {
-	if x != nil && x.Field8664 != nil {
-		return *x.Field8664
-	}
-	return 0
-}
-
-func (x *Message8572) GetField8665() bool {
-	if x != nil && x.Field8665 != nil {
-		return *x.Field8665
-	}
-	return false
-}
-
-func (x *Message8572) GetField8666() Enum3476 {
-	if x != nil && x.Field8666 != nil {
-		return *x.Field8666
-	}
-	return Enum3476_ENUM_VALUE3477
-}
-
-func (x *Message8572) GetField8667() bool {
-	if x != nil && x.Field8667 != nil {
-		return *x.Field8667
-	}
-	return false
-}
-
-func (x *Message8572) GetField8668() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8668
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8669() []byte {
-	if x != nil {
-		return x.Field8669
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8670() int32 {
-	if x != nil && x.Field8670 != nil {
-		return *x.Field8670
-	}
-	return 0
-}
-
-func (x *Message8572) GetField8671() *Message3052 {
-	if x != nil {
-		return x.Field8671
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8672() []byte {
-	if x != nil {
-		return x.Field8672
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8673() []byte {
-	if x != nil {
-		return x.Field8673
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8674() int32 {
-	if x != nil && x.Field8674 != nil {
-		return *x.Field8674
-	}
-	return 0
-}
-
-func (x *Message8572) GetField8675() []byte {
-	if x != nil {
-		return x.Field8675
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8676() []byte {
-	if x != nil {
-		return x.Field8676
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8677() string {
-	if x != nil && x.Field8677 != nil {
-		return *x.Field8677
-	}
-	return ""
-}
-
-func (x *Message8572) GetField8678() int32 {
-	if x != nil && x.Field8678 != nil {
-		return *x.Field8678
-	}
-	return 0
-}
-
-func (x *Message8572) GetField8679() int32 {
-	if x != nil && x.Field8679 != nil {
-		return *x.Field8679
-	}
-	return 0
-}
-
-func (x *Message8572) GetField8680() float64 {
-	if x != nil && x.Field8680 != nil {
-		return *x.Field8680
-	}
-	return 0
-}
-
-func (x *Message8572) GetField8681() float64 {
-	if x != nil && x.Field8681 != nil {
-		return *x.Field8681
-	}
-	return 0
-}
-
-func (x *Message8572) GetField8682() *Message3922 {
-	if x != nil {
-		return x.Field8682
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8683() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8683
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8684() int64 {
-	if x != nil && x.Field8684 != nil {
-		return *x.Field8684
-	}
-	return 0
-}
-
-func (x *Message8572) GetField8685() *Message7929 {
-	if x != nil {
-		return x.Field8685
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8686() uint64 {
-	if x != nil && x.Field8686 != nil {
-		return *x.Field8686
-	}
-	return 0
-}
-
-func (x *Message8572) GetField8687() uint32 {
-	if x != nil && x.Field8687 != nil {
-		return *x.Field8687
-	}
-	return 0
-}
-
-func (x *Message8572) GetField8688() *Message7843 {
-	if x != nil {
-		return x.Field8688
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8689() *Message7864 {
-	if x != nil {
-		return x.Field8689
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8690() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8690
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8691() bool {
-	if x != nil && x.Field8691 != nil {
-		return *x.Field8691
-	}
-	return false
-}
-
-func (x *Message8572) GetField8692() bool {
-	if x != nil && x.Field8692 != nil {
-		return *x.Field8692
-	}
-	return false
-}
-
-func (x *Message8572) GetField8693() string {
-	if x != nil && x.Field8693 != nil {
-		return *x.Field8693
-	}
-	return ""
-}
-
-func (x *Message8572) GetField8694() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8694
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8695() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field8695
-	}
-	return nil
-}
-
-func (x *Message8572) GetField8696() *Message8575 {
-	if x != nil {
-		return x.Field8696
-	}
-	return nil
-}
-
-type Message8774 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field8810 *string `protobuf:"bytes,1,opt,name=field8810" json:"field8810,omitempty"`
-	Field8811 *string `protobuf:"bytes,2,opt,name=field8811" json:"field8811,omitempty"`
-	Field8812 *string `protobuf:"bytes,3,opt,name=field8812" json:"field8812,omitempty"`
-	Field8813 *string `protobuf:"bytes,4,opt,name=field8813" json:"field8813,omitempty"`
-	Field8814 *string `protobuf:"bytes,5,opt,name=field8814" json:"field8814,omitempty"`
-}
-
-func (x *Message8774) Reset() {
-	*x = Message8774{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8774) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8774) ProtoMessage() {}
-
-func (x *Message8774) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[8]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8774.ProtoReflect.Descriptor instead.
-func (*Message8774) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *Message8774) GetField8810() string {
-	if x != nil && x.Field8810 != nil {
-		return *x.Field8810
-	}
-	return ""
-}
-
-func (x *Message8774) GetField8811() string {
-	if x != nil && x.Field8811 != nil {
-		return *x.Field8811
-	}
-	return ""
-}
-
-func (x *Message8774) GetField8812() string {
-	if x != nil && x.Field8812 != nil {
-		return *x.Field8812
-	}
-	return ""
-}
-
-func (x *Message8774) GetField8813() string {
-	if x != nil && x.Field8813 != nil {
-		return *x.Field8813
-	}
-	return ""
-}
-
-func (x *Message8774) GetField8814() string {
-	if x != nil && x.Field8814 != nil {
-		return *x.Field8814
-	}
-	return ""
-}
-
-type Message12776 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	Field12786 *string             `protobuf:"bytes,1,opt,name=field12786" json:"field12786,omitempty"`
-	Field12787 *uint64             `protobuf:"fixed64,11,opt,name=field12787" json:"field12787,omitempty"`
-	Field12788 *int32              `protobuf:"varint,6,opt,name=field12788" json:"field12788,omitempty"`
-	Field12789 *int32              `protobuf:"varint,13,opt,name=field12789" json:"field12789,omitempty"`
-	Field12790 *int32              `protobuf:"varint,14,opt,name=field12790" json:"field12790,omitempty"`
-	Field12791 *int32              `protobuf:"varint,15,opt,name=field12791" json:"field12791,omitempty"`
-	Field12792 *int32              `protobuf:"varint,16,opt,name=field12792" json:"field12792,omitempty"`
-	Field12793 *UnusedEmptyMessage `protobuf:"bytes,8,opt,name=field12793" json:"field12793,omitempty"`
-	Field12794 *Message12774       `protobuf:"bytes,10,opt,name=field12794" json:"field12794,omitempty"`
-	Field12795 *UnusedEmptyMessage `protobuf:"bytes,12,opt,name=field12795" json:"field12795,omitempty"`
-}
-
-func (x *Message12776) Reset() {
-	*x = Message12776{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[9]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12776) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12776) ProtoMessage() {}
-
-func (x *Message12776) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[9]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12776.ProtoReflect.Descriptor instead.
-func (*Message12776) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *Message12776) GetField12786() string {
-	if x != nil && x.Field12786 != nil {
-		return *x.Field12786
-	}
-	return ""
-}
-
-func (x *Message12776) GetField12787() uint64 {
-	if x != nil && x.Field12787 != nil {
-		return *x.Field12787
-	}
-	return 0
-}
-
-func (x *Message12776) GetField12788() int32 {
-	if x != nil && x.Field12788 != nil {
-		return *x.Field12788
-	}
-	return 0
-}
-
-func (x *Message12776) GetField12789() int32 {
-	if x != nil && x.Field12789 != nil {
-		return *x.Field12789
-	}
-	return 0
-}
-
-func (x *Message12776) GetField12790() int32 {
-	if x != nil && x.Field12790 != nil {
-		return *x.Field12790
-	}
-	return 0
-}
-
-func (x *Message12776) GetField12791() int32 {
-	if x != nil && x.Field12791 != nil {
-		return *x.Field12791
-	}
-	return 0
-}
-
-func (x *Message12776) GetField12792() int32 {
-	if x != nil && x.Field12792 != nil {
-		return *x.Field12792
-	}
-	return 0
-}
-
-func (x *Message12776) GetField12793() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field12793
-	}
-	return nil
-}
-
-func (x *Message12776) GetField12794() *Message12774 {
-	if x != nil {
-		return x.Field12794
-	}
-	return nil
-}
-
-func (x *Message12776) GetField12795() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field12795
-	}
-	return nil
-}
-
-type Message12798 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12805 *int32        `protobuf:"varint,1,opt,name=field12805" json:"field12805,omitempty"`
-	Field12806 *int32        `protobuf:"varint,2,opt,name=field12806" json:"field12806,omitempty"`
-	Field12807 *Message12774 `protobuf:"bytes,6,opt,name=field12807" json:"field12807,omitempty"`
-	Field12808 *bool         `protobuf:"varint,7,opt,name=field12808" json:"field12808,omitempty"`
-}
-
-func (x *Message12798) Reset() {
-	*x = Message12798{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[10]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12798) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12798) ProtoMessage() {}
-
-func (x *Message12798) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[10]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12798.ProtoReflect.Descriptor instead.
-func (*Message12798) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *Message12798) GetField12805() int32 {
-	if x != nil && x.Field12805 != nil {
-		return *x.Field12805
-	}
-	return 0
-}
-
-func (x *Message12798) GetField12806() int32 {
-	if x != nil && x.Field12806 != nil {
-		return *x.Field12806
-	}
-	return 0
-}
-
-func (x *Message12798) GetField12807() *Message12774 {
-	if x != nil {
-		return x.Field12807
-	}
-	return nil
-}
-
-func (x *Message12798) GetField12808() bool {
-	if x != nil && x.Field12808 != nil {
-		return *x.Field12808
-	}
-	return false
-}
-
-type Message12797 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12802 *Message12796   `protobuf:"bytes,1,opt,name=field12802" json:"field12802,omitempty"`
-	Field12803 []*Message12796 `protobuf:"bytes,2,rep,name=field12803" json:"field12803,omitempty"`
-	Field12804 *string         `protobuf:"bytes,3,opt,name=field12804" json:"field12804,omitempty"`
-}
-
-func (x *Message12797) Reset() {
-	*x = Message12797{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[11]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12797) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12797) ProtoMessage() {}
-
-func (x *Message12797) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[11]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12797.ProtoReflect.Descriptor instead.
-func (*Message12797) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *Message12797) GetField12802() *Message12796 {
-	if x != nil {
-		return x.Field12802
-	}
-	return nil
-}
-
-func (x *Message12797) GetField12803() []*Message12796 {
-	if x != nil {
-		return x.Field12803
-	}
-	return nil
-}
-
-func (x *Message12797) GetField12804() string {
-	if x != nil && x.Field12804 != nil {
-		return *x.Field12804
-	}
-	return ""
-}
-
-type Message12825 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12862 []*Message12818       `protobuf:"bytes,1,rep,name=field12862" json:"field12862,omitempty"`
-	Field12863 *int32                `protobuf:"varint,2,opt,name=field12863" json:"field12863,omitempty"`
-	Field12864 *Message12819         `protobuf:"bytes,3,opt,name=field12864" json:"field12864,omitempty"`
-	Field12865 *Message12820         `protobuf:"bytes,4,opt,name=field12865" json:"field12865,omitempty"`
-	Field12866 *int32                `protobuf:"varint,5,opt,name=field12866" json:"field12866,omitempty"`
-	Field12867 []*Message12821       `protobuf:"bytes,6,rep,name=field12867" json:"field12867,omitempty"`
-	Field12868 []*UnusedEmptyMessage `protobuf:"bytes,7,rep,name=field12868" json:"field12868,omitempty"`
-}
-
-func (x *Message12825) Reset() {
-	*x = Message12825{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[12]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12825) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12825) ProtoMessage() {}
-
-func (x *Message12825) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[12]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12825.ProtoReflect.Descriptor instead.
-func (*Message12825) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *Message12825) GetField12862() []*Message12818 {
-	if x != nil {
-		return x.Field12862
-	}
-	return nil
-}
-
-func (x *Message12825) GetField12863() int32 {
-	if x != nil && x.Field12863 != nil {
-		return *x.Field12863
-	}
-	return 0
-}
-
-func (x *Message12825) GetField12864() *Message12819 {
-	if x != nil {
-		return x.Field12864
-	}
-	return nil
-}
-
-func (x *Message12825) GetField12865() *Message12820 {
-	if x != nil {
-		return x.Field12865
-	}
-	return nil
-}
-
-func (x *Message12825) GetField12866() int32 {
-	if x != nil && x.Field12866 != nil {
-		return *x.Field12866
-	}
-	return 0
-}
-
-func (x *Message12825) GetField12867() []*Message12821 {
-	if x != nil {
-		return x.Field12867
-	}
-	return nil
-}
-
-func (x *Message12825) GetField12868() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field12868
-	}
-	return nil
-}
-
-type Message8590 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message8590) Reset() {
-	*x = Message8590{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[13]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8590) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8590) ProtoMessage() {}
-
-func (x *Message8590) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[13]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8590.ProtoReflect.Descriptor instead.
-func (*Message8590) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{13}
-}
-
-type Message8587 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message8587) Reset() {
-	*x = Message8587{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[14]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8587) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8587) ProtoMessage() {}
-
-func (x *Message8587) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[14]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8587.ProtoReflect.Descriptor instead.
-func (*Message8587) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{14}
-}
-
-type Message1374 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field1375 *string `protobuf:"bytes,1,req,name=field1375" json:"field1375,omitempty"`
-	Field1376 *string `protobuf:"bytes,2,opt,name=field1376" json:"field1376,omitempty"`
-}
-
-func (x *Message1374) Reset() {
-	*x = Message1374{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[15]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message1374) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message1374) ProtoMessage() {}
-
-func (x *Message1374) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[15]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message1374.ProtoReflect.Descriptor instead.
-func (*Message1374) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{15}
-}
-
-func (x *Message1374) GetField1375() string {
-	if x != nil && x.Field1375 != nil {
-		return *x.Field1375
-	}
-	return ""
-}
-
-func (x *Message1374) GetField1376() string {
-	if x != nil && x.Field1376 != nil {
-		return *x.Field1376
-	}
-	return ""
-}
-
-type Message2462 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field2496 []byte   `protobuf:"bytes,1,req,name=field2496" json:"field2496,omitempty"`
-	Field2497 *float64 `protobuf:"fixed64,2,req,name=field2497" json:"field2497,omitempty"`
-}
-
-func (x *Message2462) Reset() {
-	*x = Message2462{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[16]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message2462) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message2462) ProtoMessage() {}
-
-func (x *Message2462) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[16]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message2462.ProtoReflect.Descriptor instead.
-func (*Message2462) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *Message2462) GetField2496() []byte {
-	if x != nil {
-		return x.Field2496
-	}
-	return nil
-}
-
-func (x *Message2462) GetField2497() float64 {
-	if x != nil && x.Field2497 != nil {
-		return *x.Field2497
-	}
-	return 0
-}
-
-type Message12685 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12692 []string `protobuf:"bytes,1,rep,name=field12692" json:"field12692,omitempty"`
-	Field12693 []string `protobuf:"bytes,2,rep,name=field12693" json:"field12693,omitempty"`
-	Field12694 *int64   `protobuf:"varint,3,opt,name=field12694" json:"field12694,omitempty"`
-	Field12695 *uint32  `protobuf:"varint,4,opt,name=field12695" json:"field12695,omitempty"`
-	Field12696 []string `protobuf:"bytes,5,rep,name=field12696" json:"field12696,omitempty"`
-	Field12697 *string  `protobuf:"bytes,6,opt,name=field12697" json:"field12697,omitempty"`
-	Field12698 *string  `protobuf:"bytes,7,opt,name=field12698" json:"field12698,omitempty"`
-}
-
-func (x *Message12685) Reset() {
-	*x = Message12685{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[17]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12685) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12685) ProtoMessage() {}
-
-func (x *Message12685) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[17]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12685.ProtoReflect.Descriptor instead.
-func (*Message12685) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{17}
-}
-
-func (x *Message12685) GetField12692() []string {
-	if x != nil {
-		return x.Field12692
-	}
-	return nil
-}
-
-func (x *Message12685) GetField12693() []string {
-	if x != nil {
-		return x.Field12693
-	}
-	return nil
-}
-
-func (x *Message12685) GetField12694() int64 {
-	if x != nil && x.Field12694 != nil {
-		return *x.Field12694
-	}
-	return 0
-}
-
-func (x *Message12685) GetField12695() uint32 {
-	if x != nil && x.Field12695 != nil {
-		return *x.Field12695
-	}
-	return 0
-}
-
-func (x *Message12685) GetField12696() []string {
-	if x != nil {
-		return x.Field12696
-	}
-	return nil
-}
-
-func (x *Message12685) GetField12697() string {
-	if x != nil && x.Field12697 != nil {
-		return *x.Field12697
-	}
-	return ""
-}
-
-func (x *Message12685) GetField12698() string {
-	if x != nil && x.Field12698 != nil {
-		return *x.Field12698
-	}
-	return ""
-}
-
-type Message10320 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field10347 *Enum10335      `protobuf:"varint,1,opt,name=field10347,enum=benchmarks.google_message4.Enum10335" json:"field10347,omitempty"`
-	Field10348 []*Message10319 `protobuf:"bytes,2,rep,name=field10348" json:"field10348,omitempty"`
-	Field10349 *int32          `protobuf:"varint,3,opt,name=field10349" json:"field10349,omitempty"`
-	Field10350 *int32          `protobuf:"varint,4,opt,name=field10350" json:"field10350,omitempty"`
-	Field10351 *int32          `protobuf:"varint,5,opt,name=field10351" json:"field10351,omitempty"`
-	Field10352 *int32          `protobuf:"varint,6,opt,name=field10352" json:"field10352,omitempty"`
-	Field10353 *Enum10337      `protobuf:"varint,7,opt,name=field10353,enum=benchmarks.google_message4.Enum10337" json:"field10353,omitempty"`
-}
-
-func (x *Message10320) Reset() {
-	*x = Message10320{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[18]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10320) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10320) ProtoMessage() {}
-
-func (x *Message10320) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[18]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10320.ProtoReflect.Descriptor instead.
-func (*Message10320) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{18}
-}
-
-func (x *Message10320) GetField10347() Enum10335 {
-	if x != nil && x.Field10347 != nil {
-		return *x.Field10347
-	}
-	return Enum10335_ENUM_VALUE10336
-}
-
-func (x *Message10320) GetField10348() []*Message10319 {
-	if x != nil {
-		return x.Field10348
-	}
-	return nil
-}
-
-func (x *Message10320) GetField10349() int32 {
-	if x != nil && x.Field10349 != nil {
-		return *x.Field10349
-	}
-	return 0
-}
-
-func (x *Message10320) GetField10350() int32 {
-	if x != nil && x.Field10350 != nil {
-		return *x.Field10350
-	}
-	return 0
-}
-
-func (x *Message10320) GetField10351() int32 {
-	if x != nil && x.Field10351 != nil {
-		return *x.Field10351
-	}
-	return 0
-}
-
-func (x *Message10320) GetField10352() int32 {
-	if x != nil && x.Field10352 != nil {
-		return *x.Field10352
-	}
-	return 0
-}
-
-func (x *Message10320) GetField10353() Enum10337 {
-	if x != nil && x.Field10353 != nil {
-		return *x.Field10353
-	}
-	return Enum10337_ENUM_VALUE10338
-}
-
-type Message11947 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field11951 *uint32 `protobuf:"varint,1,opt,name=field11951" json:"field11951,omitempty"`
-	Field11952 *bool   `protobuf:"varint,2,opt,name=field11952" json:"field11952,omitempty"`
-	Field11953 *int32  `protobuf:"varint,3,opt,name=field11953" json:"field11953,omitempty"`
-}
-
-func (x *Message11947) Reset() {
-	*x = Message11947{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[19]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message11947) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message11947) ProtoMessage() {}
-
-func (x *Message11947) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[19]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message11947.ProtoReflect.Descriptor instead.
-func (*Message11947) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{19}
-}
-
-func (x *Message11947) GetField11951() uint32 {
-	if x != nil && x.Field11951 != nil {
-		return *x.Field11951
-	}
-	return 0
-}
-
-func (x *Message11947) GetField11952() bool {
-	if x != nil && x.Field11952 != nil {
-		return *x.Field11952
-	}
-	return false
-}
-
-func (x *Message11947) GetField11953() int32 {
-	if x != nil && x.Field11953 != nil {
-		return *x.Field11953
-	}
-	return 0
-}
-
-type Message11920 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field11945 *Enum11901  `protobuf:"varint,1,opt,name=field11945,enum=benchmarks.google_message4.Enum11901" json:"field11945,omitempty"`
-	Field11946 *UnusedEnum `protobuf:"varint,2,opt,name=field11946,enum=benchmarks.google_message4.UnusedEnum" json:"field11946,omitempty"`
-}
-
-func (x *Message11920) Reset() {
-	*x = Message11920{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[20]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message11920) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message11920) ProtoMessage() {}
-
-func (x *Message11920) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[20]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message11920.ProtoReflect.Descriptor instead.
-func (*Message11920) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{20}
-}
-
-func (x *Message11920) GetField11945() Enum11901 {
-	if x != nil && x.Field11945 != nil {
-		return *x.Field11945
-	}
-	return Enum11901_ENUM_VALUE11902
-}
-
-func (x *Message11920) GetField11946() UnusedEnum {
-	if x != nil && x.Field11946 != nil {
-		return *x.Field11946
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-type Message6643 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6683 *UnusedEmptyMessage   `protobuf:"bytes,3,opt,name=field6683" json:"field6683,omitempty"`
-	Field6684 *UnusedEmptyMessage   `protobuf:"bytes,4,opt,name=field6684" json:"field6684,omitempty"`
-	Field6685 *float64              `protobuf:"fixed64,5,opt,name=field6685" json:"field6685,omitempty"`
-	Field6686 *float64              `protobuf:"fixed64,6,opt,name=field6686" json:"field6686,omitempty"`
-	Field6687 *int32                `protobuf:"varint,1,opt,name=field6687" json:"field6687,omitempty"`
-	Field6688 *int32                `protobuf:"varint,2,opt,name=field6688" json:"field6688,omitempty"`
-	Field6689 *float64              `protobuf:"fixed64,9,opt,name=field6689" json:"field6689,omitempty"`
-	Field6690 []byte                `protobuf:"bytes,10,opt,name=field6690" json:"field6690,omitempty"`
-	Field6691 *int32                `protobuf:"varint,11,opt,name=field6691" json:"field6691,omitempty"`
-	Field6692 *bool                 `protobuf:"varint,12,opt,name=field6692" json:"field6692,omitempty"`
-	Field6693 *bool                 `protobuf:"varint,13,opt,name=field6693" json:"field6693,omitempty"`
-	Field6694 *Message6578          `protobuf:"bytes,15,opt,name=field6694" json:"field6694,omitempty"`
-	Field6695 *UnusedEnum           `protobuf:"varint,16,opt,name=field6695,enum=benchmarks.google_message4.UnusedEnum" json:"field6695,omitempty"`
-	Field6696 *int64                `protobuf:"varint,17,opt,name=field6696" json:"field6696,omitempty"`
-	Field6697 []*UnusedEmptyMessage `protobuf:"bytes,22,rep,name=field6697" json:"field6697,omitempty"`
-	Field6698 *UnusedEmptyMessage   `protobuf:"bytes,19,opt,name=field6698" json:"field6698,omitempty"`
-	Field6699 *UnusedEmptyMessage   `protobuf:"bytes,20,opt,name=field6699" json:"field6699,omitempty"`
-	Field6700 *int32                `protobuf:"varint,21,opt,name=field6700" json:"field6700,omitempty"`
-}
-
-func (x *Message6643) Reset() {
-	*x = Message6643{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[21]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6643) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6643) ProtoMessage() {}
-
-func (x *Message6643) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[21]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6643.ProtoReflect.Descriptor instead.
-func (*Message6643) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{21}
-}
-
-func (x *Message6643) GetField6683() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6683
-	}
-	return nil
-}
-
-func (x *Message6643) GetField6684() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6684
-	}
-	return nil
-}
-
-func (x *Message6643) GetField6685() float64 {
-	if x != nil && x.Field6685 != nil {
-		return *x.Field6685
-	}
-	return 0
-}
-
-func (x *Message6643) GetField6686() float64 {
-	if x != nil && x.Field6686 != nil {
-		return *x.Field6686
-	}
-	return 0
-}
-
-func (x *Message6643) GetField6687() int32 {
-	if x != nil && x.Field6687 != nil {
-		return *x.Field6687
-	}
-	return 0
-}
-
-func (x *Message6643) GetField6688() int32 {
-	if x != nil && x.Field6688 != nil {
-		return *x.Field6688
-	}
-	return 0
-}
-
-func (x *Message6643) GetField6689() float64 {
-	if x != nil && x.Field6689 != nil {
-		return *x.Field6689
-	}
-	return 0
-}
-
-func (x *Message6643) GetField6690() []byte {
-	if x != nil {
-		return x.Field6690
-	}
-	return nil
-}
-
-func (x *Message6643) GetField6691() int32 {
-	if x != nil && x.Field6691 != nil {
-		return *x.Field6691
-	}
-	return 0
-}
-
-func (x *Message6643) GetField6692() bool {
-	if x != nil && x.Field6692 != nil {
-		return *x.Field6692
-	}
-	return false
-}
-
-func (x *Message6643) GetField6693() bool {
-	if x != nil && x.Field6693 != nil {
-		return *x.Field6693
-	}
-	return false
-}
-
-func (x *Message6643) GetField6694() *Message6578 {
-	if x != nil {
-		return x.Field6694
-	}
-	return nil
-}
-
-func (x *Message6643) GetField6695() UnusedEnum {
-	if x != nil && x.Field6695 != nil {
-		return *x.Field6695
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message6643) GetField6696() int64 {
-	if x != nil && x.Field6696 != nil {
-		return *x.Field6696
-	}
-	return 0
-}
-
-func (x *Message6643) GetField6697() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6697
-	}
-	return nil
-}
-
-func (x *Message6643) GetField6698() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6698
-	}
-	return nil
-}
-
-func (x *Message6643) GetField6699() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6699
-	}
-	return nil
-}
-
-func (x *Message6643) GetField6700() int32 {
-	if x != nil && x.Field6700 != nil {
-		return *x.Field6700
-	}
-	return 0
-}
-
-type Message6133 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6173 *Message4016   `protobuf:"bytes,12,opt,name=field6173" json:"field6173,omitempty"`
-	Field6174 *float64       `protobuf:"fixed64,16,opt,name=field6174" json:"field6174,omitempty"`
-	Field6175 *string        `protobuf:"bytes,1,req,name=field6175" json:"field6175,omitempty"`
-	Field6176 *string        `protobuf:"bytes,2,req,name=field6176" json:"field6176,omitempty"`
-	Field6177 *string        `protobuf:"bytes,3,req,name=field6177" json:"field6177,omitempty"`
-	Field6178 *string        `protobuf:"bytes,4,opt,name=field6178" json:"field6178,omitempty"`
-	Field6179 *string        `protobuf:"bytes,8,opt,name=field6179" json:"field6179,omitempty"`
-	Field6180 []*Message6109 `protobuf:"bytes,5,rep,name=field6180" json:"field6180,omitempty"`
-	Field6181 []*Message5908 `protobuf:"bytes,13,rep,name=field6181" json:"field6181,omitempty"`
-	Field6182 []*Message6107 `protobuf:"bytes,7,rep,name=field6182" json:"field6182,omitempty"`
-	Field6183 []*Message6126 `protobuf:"bytes,9,rep,name=field6183" json:"field6183,omitempty"`
-	Field6184 []*Message6129 `protobuf:"bytes,15,rep,name=field6184" json:"field6184,omitempty"`
-	Field6185 *int32         `protobuf:"varint,10,opt,name=field6185" json:"field6185,omitempty"`
-	Field6186 *int32         `protobuf:"varint,11,opt,name=field6186" json:"field6186,omitempty"`
-	Field6187 *Message4016   `protobuf:"bytes,17,opt,name=field6187" json:"field6187,omitempty"`
-	Field6188 *float64       `protobuf:"fixed64,14,opt,name=field6188" json:"field6188,omitempty"`
-	Field6189 *float64       `protobuf:"fixed64,18,opt,name=field6189" json:"field6189,omitempty"`
-	Field6190 *string        `protobuf:"bytes,19,opt,name=field6190" json:"field6190,omitempty"`
-	Field6191 *string        `protobuf:"bytes,20,opt,name=field6191" json:"field6191,omitempty"`
-	Field6192 []*Message5881 `protobuf:"bytes,21,rep,name=field6192" json:"field6192,omitempty"`
-}
-
-func (x *Message6133) Reset() {
-	*x = Message6133{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[22]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6133) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6133) ProtoMessage() {}
-
-func (x *Message6133) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[22]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6133.ProtoReflect.Descriptor instead.
-func (*Message6133) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{22}
-}
-
-func (x *Message6133) GetField6173() *Message4016 {
-	if x != nil {
-		return x.Field6173
-	}
-	return nil
-}
-
-func (x *Message6133) GetField6174() float64 {
-	if x != nil && x.Field6174 != nil {
-		return *x.Field6174
-	}
-	return 0
-}
-
-func (x *Message6133) GetField6175() string {
-	if x != nil && x.Field6175 != nil {
-		return *x.Field6175
-	}
-	return ""
-}
-
-func (x *Message6133) GetField6176() string {
-	if x != nil && x.Field6176 != nil {
-		return *x.Field6176
-	}
-	return ""
-}
-
-func (x *Message6133) GetField6177() string {
-	if x != nil && x.Field6177 != nil {
-		return *x.Field6177
-	}
-	return ""
-}
-
-func (x *Message6133) GetField6178() string {
-	if x != nil && x.Field6178 != nil {
-		return *x.Field6178
-	}
-	return ""
-}
-
-func (x *Message6133) GetField6179() string {
-	if x != nil && x.Field6179 != nil {
-		return *x.Field6179
-	}
-	return ""
-}
-
-func (x *Message6133) GetField6180() []*Message6109 {
-	if x != nil {
-		return x.Field6180
-	}
-	return nil
-}
-
-func (x *Message6133) GetField6181() []*Message5908 {
-	if x != nil {
-		return x.Field6181
-	}
-	return nil
-}
-
-func (x *Message6133) GetField6182() []*Message6107 {
-	if x != nil {
-		return x.Field6182
-	}
-	return nil
-}
-
-func (x *Message6133) GetField6183() []*Message6126 {
-	if x != nil {
-		return x.Field6183
-	}
-	return nil
-}
-
-func (x *Message6133) GetField6184() []*Message6129 {
-	if x != nil {
-		return x.Field6184
-	}
-	return nil
-}
-
-func (x *Message6133) GetField6185() int32 {
-	if x != nil && x.Field6185 != nil {
-		return *x.Field6185
-	}
-	return 0
-}
-
-func (x *Message6133) GetField6186() int32 {
-	if x != nil && x.Field6186 != nil {
-		return *x.Field6186
-	}
-	return 0
-}
-
-func (x *Message6133) GetField6187() *Message4016 {
-	if x != nil {
-		return x.Field6187
-	}
-	return nil
-}
-
-func (x *Message6133) GetField6188() float64 {
-	if x != nil && x.Field6188 != nil {
-		return *x.Field6188
-	}
-	return 0
-}
-
-func (x *Message6133) GetField6189() float64 {
-	if x != nil && x.Field6189 != nil {
-		return *x.Field6189
-	}
-	return 0
-}
-
-func (x *Message6133) GetField6190() string {
-	if x != nil && x.Field6190 != nil {
-		return *x.Field6190
-	}
-	return ""
-}
-
-func (x *Message6133) GetField6191() string {
-	if x != nil && x.Field6191 != nil {
-		return *x.Field6191
-	}
-	return ""
-}
-
-func (x *Message6133) GetField6192() []*Message5881 {
-	if x != nil {
-		return x.Field6192
-	}
-	return nil
-}
-
-type Message6109 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	Field6140 *string        `protobuf:"bytes,1,opt,name=field6140" json:"field6140,omitempty"`
-	Field6141 *Enum6111      `protobuf:"varint,2,req,name=field6141,enum=benchmarks.google_message4.Enum6111" json:"field6141,omitempty"`
-	Field6142 *int32         `protobuf:"varint,9,opt,name=field6142" json:"field6142,omitempty"`
-	Field6143 *string        `protobuf:"bytes,3,opt,name=field6143" json:"field6143,omitempty"`
-	Field6144 []*Message6110 `protobuf:"bytes,4,rep,name=field6144" json:"field6144,omitempty"`
-	Field6145 []int32        `protobuf:"varint,7,rep,name=field6145" json:"field6145,omitempty"`
-	Field6146 []int32        `protobuf:"varint,8,rep,name=field6146" json:"field6146,omitempty"`
-	Field6147 *Message6133   `protobuf:"bytes,10,opt,name=field6147" json:"field6147,omitempty"`
-	Field6148 []int32        `protobuf:"varint,11,rep,name=field6148" json:"field6148,omitempty"`
-	Field6149 *string        `protobuf:"bytes,12,opt,name=field6149" json:"field6149,omitempty"`
-	Field6150 *string        `protobuf:"bytes,13,opt,name=field6150" json:"field6150,omitempty"`
-	Field6151 *bool          `protobuf:"varint,14,opt,name=field6151" json:"field6151,omitempty"`
-}
-
-func (x *Message6109) Reset() {
-	*x = Message6109{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[23]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6109) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6109) ProtoMessage() {}
-
-func (x *Message6109) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[23]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6109.ProtoReflect.Descriptor instead.
-func (*Message6109) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{23}
-}
-
-func (x *Message6109) GetField6140() string {
-	if x != nil && x.Field6140 != nil {
-		return *x.Field6140
-	}
-	return ""
-}
-
-func (x *Message6109) GetField6141() Enum6111 {
-	if x != nil && x.Field6141 != nil {
-		return *x.Field6141
-	}
-	return Enum6111_ENUM_VALUE6112
-}
-
-func (x *Message6109) GetField6142() int32 {
-	if x != nil && x.Field6142 != nil {
-		return *x.Field6142
-	}
-	return 0
-}
-
-func (x *Message6109) GetField6143() string {
-	if x != nil && x.Field6143 != nil {
-		return *x.Field6143
-	}
-	return ""
-}
-
-func (x *Message6109) GetField6144() []*Message6110 {
-	if x != nil {
-		return x.Field6144
-	}
-	return nil
-}
-
-func (x *Message6109) GetField6145() []int32 {
-	if x != nil {
-		return x.Field6145
-	}
-	return nil
-}
-
-func (x *Message6109) GetField6146() []int32 {
-	if x != nil {
-		return x.Field6146
-	}
-	return nil
-}
-
-func (x *Message6109) GetField6147() *Message6133 {
-	if x != nil {
-		return x.Field6147
-	}
-	return nil
-}
-
-func (x *Message6109) GetField6148() []int32 {
-	if x != nil {
-		return x.Field6148
-	}
-	return nil
-}
-
-func (x *Message6109) GetField6149() string {
-	if x != nil && x.Field6149 != nil {
-		return *x.Field6149
-	}
-	return ""
-}
-
-func (x *Message6109) GetField6150() string {
-	if x != nil && x.Field6150 != nil {
-		return *x.Field6150
-	}
-	return ""
-}
-
-func (x *Message6109) GetField6151() bool {
-	if x != nil && x.Field6151 != nil {
-		return *x.Field6151
-	}
-	return false
-}
-
-type Message3046 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field3222 *Enum2593 `protobuf:"varint,1,req,name=field3222,enum=benchmarks.google_message4.Enum2593" json:"field3222,omitempty"`
-	Field3223 *int32    `protobuf:"varint,4,opt,name=field3223" json:"field3223,omitempty"`
-}
-
-func (x *Message3046) Reset() {
-	*x = Message3046{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[24]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3046) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3046) ProtoMessage() {}
-
-func (x *Message3046) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[24]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3046.ProtoReflect.Descriptor instead.
-func (*Message3046) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{24}
-}
-
-func (x *Message3046) GetField3222() Enum2593 {
-	if x != nil && x.Field3222 != nil {
-		return *x.Field3222
-	}
-	return Enum2593_ENUM_VALUE2594
-}
-
-func (x *Message3046) GetField3223() int32 {
-	if x != nil && x.Field3223 != nil {
-		return *x.Field3223
-	}
-	return 0
-}
-
-type Message3060 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field3283 *int64 `protobuf:"varint,1,opt,name=field3283" json:"field3283,omitempty"`
-	Field3284 *int64 `protobuf:"varint,2,opt,name=field3284" json:"field3284,omitempty"`
-	Field3285 *int64 `protobuf:"varint,3,opt,name=field3285" json:"field3285,omitempty"`
-}
-
-func (x *Message3060) Reset() {
-	*x = Message3060{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[25]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3060) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3060) ProtoMessage() {}
-
-func (x *Message3060) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[25]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3060.ProtoReflect.Descriptor instead.
-func (*Message3060) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{25}
-}
-
-func (x *Message3060) GetField3283() int64 {
-	if x != nil && x.Field3283 != nil {
-		return *x.Field3283
-	}
-	return 0
-}
-
-func (x *Message3060) GetField3284() int64 {
-	if x != nil && x.Field3284 != nil {
-		return *x.Field3284
-	}
-	return 0
-}
-
-func (x *Message3060) GetField3285() int64 {
-	if x != nil && x.Field3285 != nil {
-		return *x.Field3285
-	}
-	return 0
-}
-
-type Message3041 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field3214 *string `protobuf:"bytes,1,opt,name=field3214" json:"field3214,omitempty"`
-	Field3215 *int32  `protobuf:"varint,2,opt,name=field3215" json:"field3215,omitempty"`
-}
-
-func (x *Message3041) Reset() {
-	*x = Message3041{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[26]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3041) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3041) ProtoMessage() {}
-
-func (x *Message3041) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[26]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3041.ProtoReflect.Descriptor instead.
-func (*Message3041) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{26}
-}
-
-func (x *Message3041) GetField3214() string {
-	if x != nil && x.Field3214 != nil {
-		return *x.Field3214
-	}
-	return ""
-}
-
-func (x *Message3041) GetField3215() int32 {
-	if x != nil && x.Field3215 != nil {
-		return *x.Field3215
-	}
-	return 0
-}
-
-type Message3040 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field3209 *uint64  `protobuf:"fixed64,1,req,name=field3209" json:"field3209,omitempty"`
-	Field3210 []uint64 `protobuf:"fixed64,4,rep,name=field3210" json:"field3210,omitempty"`
-	Field3211 *int32   `protobuf:"varint,5,opt,name=field3211" json:"field3211,omitempty"`
-	Field3212 *uint64  `protobuf:"fixed64,2,opt,name=field3212" json:"field3212,omitempty"`
-	Field3213 *string  `protobuf:"bytes,3,req,name=field3213" json:"field3213,omitempty"`
-}
-
-func (x *Message3040) Reset() {
-	*x = Message3040{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[27]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3040) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3040) ProtoMessage() {}
-
-func (x *Message3040) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[27]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3040.ProtoReflect.Descriptor instead.
-func (*Message3040) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{27}
-}
-
-func (x *Message3040) GetField3209() uint64 {
-	if x != nil && x.Field3209 != nil {
-		return *x.Field3209
-	}
-	return 0
-}
-
-func (x *Message3040) GetField3210() []uint64 {
-	if x != nil {
-		return x.Field3210
-	}
-	return nil
-}
-
-func (x *Message3040) GetField3211() int32 {
-	if x != nil && x.Field3211 != nil {
-		return *x.Field3211
-	}
-	return 0
-}
-
-func (x *Message3040) GetField3212() uint64 {
-	if x != nil && x.Field3212 != nil {
-		return *x.Field3212
-	}
-	return 0
-}
-
-func (x *Message3040) GetField3213() string {
-	if x != nil && x.Field3213 != nil {
-		return *x.Field3213
-	}
-	return ""
-}
-
-type Message3050 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field3245 []byte  `protobuf:"bytes,5,opt,name=field3245" json:"field3245,omitempty"`
-	Field3246 *int32  `protobuf:"varint,2,opt,name=field3246" json:"field3246,omitempty"`
-	Field3247 []byte  `protobuf:"bytes,6,opt,name=field3247" json:"field3247,omitempty"`
-	Field3248 *int32  `protobuf:"varint,4,opt,name=field3248" json:"field3248,omitempty"`
-	Field3249 *uint32 `protobuf:"fixed32,1,opt,name=field3249" json:"field3249,omitempty"`
-	Field3250 *uint32 `protobuf:"fixed32,3,opt,name=field3250" json:"field3250,omitempty"`
-}
-
-func (x *Message3050) Reset() {
-	*x = Message3050{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[28]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3050) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3050) ProtoMessage() {}
-
-func (x *Message3050) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[28]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3050.ProtoReflect.Descriptor instead.
-func (*Message3050) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{28}
-}
-
-func (x *Message3050) GetField3245() []byte {
-	if x != nil {
-		return x.Field3245
-	}
-	return nil
-}
-
-func (x *Message3050) GetField3246() int32 {
-	if x != nil && x.Field3246 != nil {
-		return *x.Field3246
-	}
-	return 0
-}
-
-func (x *Message3050) GetField3247() []byte {
-	if x != nil {
-		return x.Field3247
-	}
-	return nil
-}
-
-func (x *Message3050) GetField3248() int32 {
-	if x != nil && x.Field3248 != nil {
-		return *x.Field3248
-	}
-	return 0
-}
-
-func (x *Message3050) GetField3249() uint32 {
-	if x != nil && x.Field3249 != nil {
-		return *x.Field3249
-	}
-	return 0
-}
-
-func (x *Message3050) GetField3250() uint32 {
-	if x != nil && x.Field3250 != nil {
-		return *x.Field3250
-	}
-	return 0
-}
-
-type Message7905 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7911 *int32 `protobuf:"varint,1,opt,name=field7911" json:"field7911,omitempty"`
-	Field7912 *bool  `protobuf:"varint,2,opt,name=field7912" json:"field7912,omitempty"`
-	Field7913 []byte `protobuf:"bytes,3,opt,name=field7913" json:"field7913,omitempty"`
-	Field7914 *int32 `protobuf:"varint,4,opt,name=field7914" json:"field7914,omitempty"`
-	Field7915 *int32 `protobuf:"varint,5,opt,name=field7915" json:"field7915,omitempty"`
-	Field7916 []byte `protobuf:"bytes,6,opt,name=field7916" json:"field7916,omitempty"`
-	Field7917 *int32 `protobuf:"varint,7,opt,name=field7917" json:"field7917,omitempty"`
-}
-
-func (x *Message7905) Reset() {
-	*x = Message7905{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[29]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7905) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7905) ProtoMessage() {}
-
-func (x *Message7905) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[29]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7905.ProtoReflect.Descriptor instead.
-func (*Message7905) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{29}
-}
-
-func (x *Message7905) GetField7911() int32 {
-	if x != nil && x.Field7911 != nil {
-		return *x.Field7911
-	}
-	return 0
-}
-
-func (x *Message7905) GetField7912() bool {
-	if x != nil && x.Field7912 != nil {
-		return *x.Field7912
-	}
-	return false
-}
-
-func (x *Message7905) GetField7913() []byte {
-	if x != nil {
-		return x.Field7913
-	}
-	return nil
-}
-
-func (x *Message7905) GetField7914() int32 {
-	if x != nil && x.Field7914 != nil {
-		return *x.Field7914
-	}
-	return 0
-}
-
-func (x *Message7905) GetField7915() int32 {
-	if x != nil && x.Field7915 != nil {
-		return *x.Field7915
-	}
-	return 0
-}
-
-func (x *Message7905) GetField7916() []byte {
-	if x != nil {
-		return x.Field7916
-	}
-	return nil
-}
-
-func (x *Message7905) GetField7917() int32 {
-	if x != nil && x.Field7917 != nil {
-		return *x.Field7917
-	}
-	return 0
-}
-
-type Message3886 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Message3887 []*Message3886_Message3887 `protobuf:"group,1,rep,name=Message3887,json=message3887" json:"message3887,omitempty"`
-}
-
-func (x *Message3886) Reset() {
-	*x = Message3886{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[30]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3886) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3886) ProtoMessage() {}
-
-func (x *Message3886) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[30]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3886.ProtoReflect.Descriptor instead.
-func (*Message3886) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{30}
-}
-
-func (x *Message3886) GetMessage3887() []*Message3886_Message3887 {
-	if x != nil {
-		return x.Message3887
-	}
-	return nil
-}
-
-type Message7864 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7866 *string               `protobuf:"bytes,1,opt,name=field7866" json:"field7866,omitempty"`
-	Field7867 *string               `protobuf:"bytes,2,opt,name=field7867" json:"field7867,omitempty"`
-	Field7868 []*Message7865        `protobuf:"bytes,5,rep,name=field7868" json:"field7868,omitempty"`
-	Field7869 []*Message7865        `protobuf:"bytes,6,rep,name=field7869" json:"field7869,omitempty"`
-	Field7870 []*Message7865        `protobuf:"bytes,7,rep,name=field7870" json:"field7870,omitempty"`
-	Field7871 []*UnusedEmptyMessage `protobuf:"bytes,8,rep,name=field7871" json:"field7871,omitempty"`
-}
-
-func (x *Message7864) Reset() {
-	*x = Message7864{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[31]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7864) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7864) ProtoMessage() {}
-
-func (x *Message7864) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[31]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7864.ProtoReflect.Descriptor instead.
-func (*Message7864) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{31}
-}
-
-func (x *Message7864) GetField7866() string {
-	if x != nil && x.Field7866 != nil {
-		return *x.Field7866
-	}
-	return ""
-}
-
-func (x *Message7864) GetField7867() string {
-	if x != nil && x.Field7867 != nil {
-		return *x.Field7867
-	}
-	return ""
-}
-
-func (x *Message7864) GetField7868() []*Message7865 {
-	if x != nil {
-		return x.Field7868
-	}
-	return nil
-}
-
-func (x *Message7864) GetField7869() []*Message7865 {
-	if x != nil {
-		return x.Field7869
-	}
-	return nil
-}
-
-func (x *Message7864) GetField7870() []*Message7865 {
-	if x != nil {
-		return x.Field7870
-	}
-	return nil
-}
-
-func (x *Message7864) GetField7871() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7871
-	}
-	return nil
-}
-
-type Message3922 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field4012 *uint64 `protobuf:"varint,1,opt,name=field4012" json:"field4012,omitempty"`
-}
-
-func (x *Message3922) Reset() {
-	*x = Message3922{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[32]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3922) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3922) ProtoMessage() {}
-
-func (x *Message3922) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[32]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3922.ProtoReflect.Descriptor instead.
-func (*Message3922) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{32}
-}
-
-func (x *Message3922) GetField4012() uint64 {
-	if x != nil && x.Field4012 != nil {
-		return *x.Field4012
-	}
-	return 0
-}
-
-type Message3052 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field3254 []string `protobuf:"bytes,1,rep,name=field3254" json:"field3254,omitempty"`
-	Field3255 []string `protobuf:"bytes,2,rep,name=field3255" json:"field3255,omitempty"`
-	Field3256 [][]byte `protobuf:"bytes,3,rep,name=field3256" json:"field3256,omitempty"`
-	Field3257 []string `protobuf:"bytes,4,rep,name=field3257" json:"field3257,omitempty"`
-	Field3258 *bool    `protobuf:"varint,5,opt,name=field3258" json:"field3258,omitempty"`
-	Field3259 *int32   `protobuf:"varint,6,opt,name=field3259" json:"field3259,omitempty"`
-	Field3260 *int32   `protobuf:"varint,7,opt,name=field3260" json:"field3260,omitempty"`
-	Field3261 *string  `protobuf:"bytes,8,opt,name=field3261" json:"field3261,omitempty"`
-	Field3262 *string  `protobuf:"bytes,9,opt,name=field3262" json:"field3262,omitempty"`
-}
-
-func (x *Message3052) Reset() {
-	*x = Message3052{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[33]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3052) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3052) ProtoMessage() {}
-
-func (x *Message3052) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[33]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3052.ProtoReflect.Descriptor instead.
-func (*Message3052) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{33}
-}
-
-func (x *Message3052) GetField3254() []string {
-	if x != nil {
-		return x.Field3254
-	}
-	return nil
-}
-
-func (x *Message3052) GetField3255() []string {
-	if x != nil {
-		return x.Field3255
-	}
-	return nil
-}
-
-func (x *Message3052) GetField3256() [][]byte {
-	if x != nil {
-		return x.Field3256
-	}
-	return nil
-}
-
-func (x *Message3052) GetField3257() []string {
-	if x != nil {
-		return x.Field3257
-	}
-	return nil
-}
-
-func (x *Message3052) GetField3258() bool {
-	if x != nil && x.Field3258 != nil {
-		return *x.Field3258
-	}
-	return false
-}
-
-func (x *Message3052) GetField3259() int32 {
-	if x != nil && x.Field3259 != nil {
-		return *x.Field3259
-	}
-	return 0
-}
-
-func (x *Message3052) GetField3260() int32 {
-	if x != nil && x.Field3260 != nil {
-		return *x.Field3260
-	}
-	return 0
-}
-
-func (x *Message3052) GetField3261() string {
-	if x != nil && x.Field3261 != nil {
-		return *x.Field3261
-	}
-	return ""
-}
-
-func (x *Message3052) GetField3262() string {
-	if x != nil && x.Field3262 != nil {
-		return *x.Field3262
-	}
-	return ""
-}
-
-type Message8575 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message8575) Reset() {
-	*x = Message8575{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[34]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message8575) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message8575) ProtoMessage() {}
-
-func (x *Message8575) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[34]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message8575.ProtoReflect.Descriptor instead.
-func (*Message8575) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{34}
-}
-
-type Message7843 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7844 *bool               `protobuf:"varint,5,opt,name=field7844" json:"field7844,omitempty"`
-	Field7845 *int32              `protobuf:"varint,1,opt,name=field7845" json:"field7845,omitempty"`
-	Field7846 *UnusedEmptyMessage `protobuf:"bytes,22,opt,name=field7846" json:"field7846,omitempty"`
-	Field7847 []int32             `protobuf:"varint,3,rep,name=field7847" json:"field7847,omitempty"`
-	Field7848 []string            `protobuf:"bytes,11,rep,name=field7848" json:"field7848,omitempty"`
-	Field7849 *UnusedEnum         `protobuf:"varint,15,opt,name=field7849,enum=benchmarks.google_message4.UnusedEnum" json:"field7849,omitempty"`
-	Field7850 *UnusedEmptyMessage `protobuf:"bytes,6,opt,name=field7850" json:"field7850,omitempty"`
-	Field7851 *UnusedEmptyMessage `protobuf:"bytes,14,opt,name=field7851" json:"field7851,omitempty"`
-	Field7852 *UnusedEmptyMessage `protobuf:"bytes,10,opt,name=field7852" json:"field7852,omitempty"`
-	Field7853 *Message7511        `protobuf:"bytes,13,opt,name=field7853" json:"field7853,omitempty"`
-	Field7854 *UnusedEmptyMessage `protobuf:"bytes,16,opt,name=field7854" json:"field7854,omitempty"`
-	Field7855 *UnusedEmptyMessage `protobuf:"bytes,17,opt,name=field7855" json:"field7855,omitempty"`
-	Field7856 *UnusedEmptyMessage `protobuf:"bytes,19,opt,name=field7856" json:"field7856,omitempty"`
-	Field7857 *UnusedEmptyMessage `protobuf:"bytes,18,opt,name=field7857" json:"field7857,omitempty"`
-	Field7858 *UnusedEnum         `protobuf:"varint,20,opt,name=field7858,enum=benchmarks.google_message4.UnusedEnum" json:"field7858,omitempty"`
-	Field7859 *int32              `protobuf:"varint,2,opt,name=field7859" json:"field7859,omitempty"`
-}
-
-func (x *Message7843) Reset() {
-	*x = Message7843{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[35]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7843) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7843) ProtoMessage() {}
-
-func (x *Message7843) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[35]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7843.ProtoReflect.Descriptor instead.
-func (*Message7843) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{35}
-}
-
-func (x *Message7843) GetField7844() bool {
-	if x != nil && x.Field7844 != nil {
-		return *x.Field7844
-	}
-	return false
-}
-
-func (x *Message7843) GetField7845() int32 {
-	if x != nil && x.Field7845 != nil {
-		return *x.Field7845
-	}
-	return 0
-}
-
-func (x *Message7843) GetField7846() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7846
-	}
-	return nil
-}
-
-func (x *Message7843) GetField7847() []int32 {
-	if x != nil {
-		return x.Field7847
-	}
-	return nil
-}
-
-func (x *Message7843) GetField7848() []string {
-	if x != nil {
-		return x.Field7848
-	}
-	return nil
-}
-
-func (x *Message7843) GetField7849() UnusedEnum {
-	if x != nil && x.Field7849 != nil {
-		return *x.Field7849
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message7843) GetField7850() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7850
-	}
-	return nil
-}
-
-func (x *Message7843) GetField7851() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7851
-	}
-	return nil
-}
-
-func (x *Message7843) GetField7852() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7852
-	}
-	return nil
-}
-
-func (x *Message7843) GetField7853() *Message7511 {
-	if x != nil {
-		return x.Field7853
-	}
-	return nil
-}
-
-func (x *Message7843) GetField7854() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7854
-	}
-	return nil
-}
-
-func (x *Message7843) GetField7855() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7855
-	}
-	return nil
-}
-
-func (x *Message7843) GetField7856() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7856
-	}
-	return nil
-}
-
-func (x *Message7843) GetField7857() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7857
-	}
-	return nil
-}
-
-func (x *Message7843) GetField7858() UnusedEnum {
-	if x != nil && x.Field7858 != nil {
-		return *x.Field7858
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message7843) GetField7859() int32 {
-	if x != nil && x.Field7859 != nil {
-		return *x.Field7859
-	}
-	return 0
-}
-
-type Message3919 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field4009 []*Message3920 `protobuf:"bytes,1,rep,name=field4009" json:"field4009,omitempty"`
-}
-
-func (x *Message3919) Reset() {
-	*x = Message3919{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[36]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3919) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3919) ProtoMessage() {}
-
-func (x *Message3919) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[36]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3919.ProtoReflect.Descriptor instead.
-func (*Message3919) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{36}
-}
-
-func (x *Message3919) GetField4009() []*Message3920 {
-	if x != nil {
-		return x.Field4009
-	}
-	return nil
-}
-
-type Message7929 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7942 *int64                `protobuf:"varint,1,opt,name=field7942" json:"field7942,omitempty"`
-	Field7943 *int64                `protobuf:"varint,4,opt,name=field7943" json:"field7943,omitempty"`
-	Field7944 *int64                `protobuf:"varint,5,opt,name=field7944" json:"field7944,omitempty"`
-	Field7945 *int64                `protobuf:"varint,12,opt,name=field7945" json:"field7945,omitempty"`
-	Field7946 *int64                `protobuf:"varint,13,opt,name=field7946" json:"field7946,omitempty"`
-	Field7947 *int64                `protobuf:"varint,18,opt,name=field7947" json:"field7947,omitempty"`
-	Field7948 *int64                `protobuf:"varint,6,opt,name=field7948" json:"field7948,omitempty"`
-	Field7949 *int64                `protobuf:"varint,7,opt,name=field7949" json:"field7949,omitempty"`
-	Field7950 []*Message7919        `protobuf:"bytes,8,rep,name=field7950" json:"field7950,omitempty"`
-	Field7951 []*UnusedEmptyMessage `protobuf:"bytes,20,rep,name=field7951" json:"field7951,omitempty"`
-	Field7952 []*Message7920        `protobuf:"bytes,14,rep,name=field7952" json:"field7952,omitempty"`
-	Field7953 []*Message7921        `protobuf:"bytes,15,rep,name=field7953" json:"field7953,omitempty"`
-	Field7954 []*Message7928        `protobuf:"bytes,17,rep,name=field7954" json:"field7954,omitempty"`
-	Field7955 *int64                `protobuf:"varint,19,opt,name=field7955" json:"field7955,omitempty"`
-	Field7956 *bool                 `protobuf:"varint,2,opt,name=field7956" json:"field7956,omitempty"`
-	Field7957 *int64                `protobuf:"varint,3,opt,name=field7957" json:"field7957,omitempty"`
-	Field7958 *int64                `protobuf:"varint,9,opt,name=field7958" json:"field7958,omitempty"`
-	Field7959 []*UnusedEmptyMessage `protobuf:"bytes,10,rep,name=field7959" json:"field7959,omitempty"`
-	Field7960 [][]byte              `protobuf:"bytes,11,rep,name=field7960" json:"field7960,omitempty"`
-	Field7961 *int64                `protobuf:"varint,16,opt,name=field7961" json:"field7961,omitempty"`
-}
-
-func (x *Message7929) Reset() {
-	*x = Message7929{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[37]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7929) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7929) ProtoMessage() {}
-
-func (x *Message7929) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[37]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7929.ProtoReflect.Descriptor instead.
-func (*Message7929) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{37}
-}
-
-func (x *Message7929) GetField7942() int64 {
-	if x != nil && x.Field7942 != nil {
-		return *x.Field7942
-	}
-	return 0
-}
-
-func (x *Message7929) GetField7943() int64 {
-	if x != nil && x.Field7943 != nil {
-		return *x.Field7943
-	}
-	return 0
-}
-
-func (x *Message7929) GetField7944() int64 {
-	if x != nil && x.Field7944 != nil {
-		return *x.Field7944
-	}
-	return 0
-}
-
-func (x *Message7929) GetField7945() int64 {
-	if x != nil && x.Field7945 != nil {
-		return *x.Field7945
-	}
-	return 0
-}
-
-func (x *Message7929) GetField7946() int64 {
-	if x != nil && x.Field7946 != nil {
-		return *x.Field7946
-	}
-	return 0
-}
-
-func (x *Message7929) GetField7947() int64 {
-	if x != nil && x.Field7947 != nil {
-		return *x.Field7947
-	}
-	return 0
-}
-
-func (x *Message7929) GetField7948() int64 {
-	if x != nil && x.Field7948 != nil {
-		return *x.Field7948
-	}
-	return 0
-}
-
-func (x *Message7929) GetField7949() int64 {
-	if x != nil && x.Field7949 != nil {
-		return *x.Field7949
-	}
-	return 0
-}
-
-func (x *Message7929) GetField7950() []*Message7919 {
-	if x != nil {
-		return x.Field7950
-	}
-	return nil
-}
-
-func (x *Message7929) GetField7951() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7951
-	}
-	return nil
-}
-
-func (x *Message7929) GetField7952() []*Message7920 {
-	if x != nil {
-		return x.Field7952
-	}
-	return nil
-}
-
-func (x *Message7929) GetField7953() []*Message7921 {
-	if x != nil {
-		return x.Field7953
-	}
-	return nil
-}
-
-func (x *Message7929) GetField7954() []*Message7928 {
-	if x != nil {
-		return x.Field7954
-	}
-	return nil
-}
-
-func (x *Message7929) GetField7955() int64 {
-	if x != nil && x.Field7955 != nil {
-		return *x.Field7955
-	}
-	return 0
-}
-
-func (x *Message7929) GetField7956() bool {
-	if x != nil && x.Field7956 != nil {
-		return *x.Field7956
-	}
-	return false
-}
-
-func (x *Message7929) GetField7957() int64 {
-	if x != nil && x.Field7957 != nil {
-		return *x.Field7957
-	}
-	return 0
-}
-
-func (x *Message7929) GetField7958() int64 {
-	if x != nil && x.Field7958 != nil {
-		return *x.Field7958
-	}
-	return 0
-}
-
-func (x *Message7929) GetField7959() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field7959
-	}
-	return nil
-}
-
-func (x *Message7929) GetField7960() [][]byte {
-	if x != nil {
-		return x.Field7960
-	}
-	return nil
-}
-
-func (x *Message7929) GetField7961() int64 {
-	if x != nil && x.Field7961 != nil {
-		return *x.Field7961
-	}
-	return 0
-}
-
-type Message3061_Message3062 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field3335 *int32 `protobuf:"varint,5,req,name=field3335" json:"field3335,omitempty"`
-	Field3336 *int32 `protobuf:"varint,6,opt,name=field3336" json:"field3336,omitempty"`
-	Field3337 *int32 `protobuf:"varint,7,opt,name=field3337" json:"field3337,omitempty"`
-}
-
-func (x *Message3061_Message3062) Reset() {
-	*x = Message3061_Message3062{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[38]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3061_Message3062) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3061_Message3062) ProtoMessage() {}
-
-func (x *Message3061_Message3062) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[38]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3061_Message3062.ProtoReflect.Descriptor instead.
-func (*Message3061_Message3062) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{5, 0}
-}
-
-func (x *Message3061_Message3062) GetField3335() int32 {
-	if x != nil && x.Field3335 != nil {
-		return *x.Field3335
-	}
-	return 0
-}
-
-func (x *Message3061_Message3062) GetField3336() int32 {
-	if x != nil && x.Field3336 != nil {
-		return *x.Field3336
-	}
-	return 0
-}
-
-func (x *Message3061_Message3062) GetField3337() int32 {
-	if x != nil && x.Field3337 != nil {
-		return *x.Field3337
-	}
-	return 0
-}
-
-type Message3061_Message3063 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field3338 *int32    `protobuf:"varint,14,req,name=field3338" json:"field3338,omitempty"`
-	Field3339 *Enum2851 `protobuf:"varint,18,opt,name=field3339,enum=benchmarks.google_message4.Enum2851" json:"field3339,omitempty"`
-	Field3340 *int64    `protobuf:"varint,15,opt,name=field3340" json:"field3340,omitempty"`
-	Field3341 *int64    `protobuf:"varint,23,opt,name=field3341" json:"field3341,omitempty"`
-}
-
-func (x *Message3061_Message3063) Reset() {
-	*x = Message3061_Message3063{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[39]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3061_Message3063) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3061_Message3063) ProtoMessage() {}
-
-func (x *Message3061_Message3063) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[39]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3061_Message3063.ProtoReflect.Descriptor instead.
-func (*Message3061_Message3063) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{5, 1}
-}
-
-func (x *Message3061_Message3063) GetField3338() int32 {
-	if x != nil && x.Field3338 != nil {
-		return *x.Field3338
-	}
-	return 0
-}
-
-func (x *Message3061_Message3063) GetField3339() Enum2851 {
-	if x != nil && x.Field3339 != nil {
-		return *x.Field3339
-	}
-	return Enum2851_ENUM_VALUE2852
-}
-
-func (x *Message3061_Message3063) GetField3340() int64 {
-	if x != nil && x.Field3340 != nil {
-		return *x.Field3340
-	}
-	return 0
-}
-
-func (x *Message3061_Message3063) GetField3341() int64 {
-	if x != nil && x.Field3341 != nil {
-		return *x.Field3341
-	}
-	return 0
-}
-
-type Message3061_Message3064 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field3342 *Enum2602           `protobuf:"varint,9,req,name=field3342,enum=benchmarks.google_message4.Enum2602" json:"field3342,omitempty"`
-	Field3343 *int32              `protobuf:"varint,92,opt,name=field3343" json:"field3343,omitempty"`
-	Field3344 *string             `protobuf:"bytes,10,opt,name=field3344" json:"field3344,omitempty"`
-	Field3345 []byte              `protobuf:"bytes,11,opt,name=field3345" json:"field3345,omitempty"`
-	Field3346 *int32              `protobuf:"varint,12,opt,name=field3346" json:"field3346,omitempty"`
-	Field3347 *Message3060        `protobuf:"bytes,98,opt,name=field3347" json:"field3347,omitempty"`
-	Field3348 *UnusedEmptyMessage `protobuf:"bytes,82,opt,name=field3348" json:"field3348,omitempty"`
-	Field3349 *Message3050        `protobuf:"bytes,80,opt,name=field3349" json:"field3349,omitempty"`
-	Field3350 *uint64             `protobuf:"fixed64,52,opt,name=field3350" json:"field3350,omitempty"`
-	Field3351 *int32              `protobuf:"varint,33,opt,name=field3351" json:"field3351,omitempty"`
-	Field3352 *string             `protobuf:"bytes,42,opt,name=field3352" json:"field3352,omitempty"`
-	Field3353 *string             `protobuf:"bytes,69,opt,name=field3353" json:"field3353,omitempty"`
-	Field3354 []byte              `protobuf:"bytes,43,opt,name=field3354" json:"field3354,omitempty"`
-	Field3355 *Enum2806           `protobuf:"varint,73,opt,name=field3355,enum=benchmarks.google_message4.Enum2806" json:"field3355,omitempty"`
-	Field3356 *int32              `protobuf:"varint,74,opt,name=field3356" json:"field3356,omitempty"`
-	Field3357 *int32              `protobuf:"varint,90,opt,name=field3357" json:"field3357,omitempty"`
-	Field3358 []byte              `protobuf:"bytes,79,opt,name=field3358" json:"field3358,omitempty"`
-	Field3359 *int32              `protobuf:"varint,19,opt,name=field3359" json:"field3359,omitempty"`
-	Field3360 *Enum2834           `protobuf:"varint,95,opt,name=field3360,enum=benchmarks.google_message4.Enum2834" json:"field3360,omitempty"`
-}
-
-func (x *Message3061_Message3064) Reset() {
-	*x = Message3061_Message3064{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[40]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3061_Message3064) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3061_Message3064) ProtoMessage() {}
-
-func (x *Message3061_Message3064) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[40]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3061_Message3064.ProtoReflect.Descriptor instead.
-func (*Message3061_Message3064) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{5, 2}
-}
-
-func (x *Message3061_Message3064) GetField3342() Enum2602 {
-	if x != nil && x.Field3342 != nil {
-		return *x.Field3342
-	}
-	return Enum2602_ENUM_VALUE2603
-}
-
-func (x *Message3061_Message3064) GetField3343() int32 {
-	if x != nil && x.Field3343 != nil {
-		return *x.Field3343
-	}
-	return 0
-}
-
-func (x *Message3061_Message3064) GetField3344() string {
-	if x != nil && x.Field3344 != nil {
-		return *x.Field3344
-	}
-	return ""
-}
-
-func (x *Message3061_Message3064) GetField3345() []byte {
-	if x != nil {
-		return x.Field3345
-	}
-	return nil
-}
-
-func (x *Message3061_Message3064) GetField3346() int32 {
-	if x != nil && x.Field3346 != nil {
-		return *x.Field3346
-	}
-	return 0
-}
-
-func (x *Message3061_Message3064) GetField3347() *Message3060 {
-	if x != nil {
-		return x.Field3347
-	}
-	return nil
-}
-
-func (x *Message3061_Message3064) GetField3348() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field3348
-	}
-	return nil
-}
-
-func (x *Message3061_Message3064) GetField3349() *Message3050 {
-	if x != nil {
-		return x.Field3349
-	}
-	return nil
-}
-
-func (x *Message3061_Message3064) GetField3350() uint64 {
-	if x != nil && x.Field3350 != nil {
-		return *x.Field3350
-	}
-	return 0
-}
-
-func (x *Message3061_Message3064) GetField3351() int32 {
-	if x != nil && x.Field3351 != nil {
-		return *x.Field3351
-	}
-	return 0
-}
-
-func (x *Message3061_Message3064) GetField3352() string {
-	if x != nil && x.Field3352 != nil {
-		return *x.Field3352
-	}
-	return ""
-}
-
-func (x *Message3061_Message3064) GetField3353() string {
-	if x != nil && x.Field3353 != nil {
-		return *x.Field3353
-	}
-	return ""
-}
-
-func (x *Message3061_Message3064) GetField3354() []byte {
-	if x != nil {
-		return x.Field3354
-	}
-	return nil
-}
-
-func (x *Message3061_Message3064) GetField3355() Enum2806 {
-	if x != nil && x.Field3355 != nil {
-		return *x.Field3355
-	}
-	return Enum2806_ENUM_VALUE2807
-}
-
-func (x *Message3061_Message3064) GetField3356() int32 {
-	if x != nil && x.Field3356 != nil {
-		return *x.Field3356
-	}
-	return 0
-}
-
-func (x *Message3061_Message3064) GetField3357() int32 {
-	if x != nil && x.Field3357 != nil {
-		return *x.Field3357
-	}
-	return 0
-}
-
-func (x *Message3061_Message3064) GetField3358() []byte {
-	if x != nil {
-		return x.Field3358
-	}
-	return nil
-}
-
-func (x *Message3061_Message3064) GetField3359() int32 {
-	if x != nil && x.Field3359 != nil {
-		return *x.Field3359
-	}
-	return 0
-}
-
-func (x *Message3061_Message3064) GetField3360() Enum2834 {
-	if x != nil && x.Field3360 != nil {
-		return *x.Field3360
-	}
-	return Enum2834_ENUM_VALUE2835
-}
-
-type Message3061_Message3065 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message3061_Message3065) Reset() {
-	*x = Message3061_Message3065{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[41]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3061_Message3065) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3061_Message3065) ProtoMessage() {}
-
-func (x *Message3061_Message3065) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[41]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3061_Message3065.ProtoReflect.Descriptor instead.
-func (*Message3061_Message3065) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{5, 3}
-}
-
-type Message3061_Message3066 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field3366 *int32              `protobuf:"varint,22,opt,name=field3366" json:"field3366,omitempty"`
-	Field3367 *int32              `protobuf:"varint,55,opt,name=field3367" json:"field3367,omitempty"`
-	Field3368 *int32              `protobuf:"varint,88,opt,name=field3368" json:"field3368,omitempty"`
-	Field3369 *int32              `protobuf:"varint,56,opt,name=field3369" json:"field3369,omitempty"`
-	Field3370 *int32              `protobuf:"varint,75,opt,name=field3370" json:"field3370,omitempty"`
-	Field3371 *int32              `protobuf:"varint,57,opt,name=field3371" json:"field3371,omitempty"`
-	Field3372 *UnusedEmptyMessage `protobuf:"bytes,85,opt,name=field3372" json:"field3372,omitempty"`
-	Field3373 *UnusedEmptyMessage `protobuf:"bytes,96,opt,name=field3373" json:"field3373,omitempty"`
-}
-
-func (x *Message3061_Message3066) Reset() {
-	*x = Message3061_Message3066{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[42]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3061_Message3066) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3061_Message3066) ProtoMessage() {}
-
-func (x *Message3061_Message3066) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[42]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3061_Message3066.ProtoReflect.Descriptor instead.
-func (*Message3061_Message3066) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{5, 4}
-}
-
-func (x *Message3061_Message3066) GetField3366() int32 {
-	if x != nil && x.Field3366 != nil {
-		return *x.Field3366
-	}
-	return 0
-}
-
-func (x *Message3061_Message3066) GetField3367() int32 {
-	if x != nil && x.Field3367 != nil {
-		return *x.Field3367
-	}
-	return 0
-}
-
-func (x *Message3061_Message3066) GetField3368() int32 {
-	if x != nil && x.Field3368 != nil {
-		return *x.Field3368
-	}
-	return 0
-}
-
-func (x *Message3061_Message3066) GetField3369() int32 {
-	if x != nil && x.Field3369 != nil {
-		return *x.Field3369
-	}
-	return 0
-}
-
-func (x *Message3061_Message3066) GetField3370() int32 {
-	if x != nil && x.Field3370 != nil {
-		return *x.Field3370
-	}
-	return 0
-}
-
-func (x *Message3061_Message3066) GetField3371() int32 {
-	if x != nil && x.Field3371 != nil {
-		return *x.Field3371
-	}
-	return 0
-}
-
-func (x *Message3061_Message3066) GetField3372() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field3372
-	}
-	return nil
-}
-
-func (x *Message3061_Message3066) GetField3373() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field3373
-	}
-	return nil
-}
-
-type Message3886_Message3887 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field3932 *string      `protobuf:"bytes,2,req,name=field3932" json:"field3932,omitempty"`
-	Field3933 *string      `protobuf:"bytes,9,opt,name=field3933" json:"field3933,omitempty"`
-	Field3934 *Message3850 `protobuf:"bytes,3,opt,name=field3934" json:"field3934,omitempty"`
-	Field3935 []byte       `protobuf:"bytes,8,opt,name=field3935" json:"field3935,omitempty"`
-}
-
-func (x *Message3886_Message3887) Reset() {
-	*x = Message3886_Message3887{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[43]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3886_Message3887) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3886_Message3887) ProtoMessage() {}
-
-func (x *Message3886_Message3887) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[43]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3886_Message3887.ProtoReflect.Descriptor instead.
-func (*Message3886_Message3887) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP(), []int{30, 0}
-}
-
-func (x *Message3886_Message3887) GetField3932() string {
-	if x != nil && x.Field3932 != nil {
-		return *x.Field3932
-	}
-	return ""
-}
-
-func (x *Message3886_Message3887) GetField3933() string {
-	if x != nil && x.Field3933 != nil {
-		return *x.Field3933
-	}
-	return ""
-}
-
-func (x *Message3886_Message3887) GetField3934() *Message3850 {
-	if x != nil {
-		return x.Field3934
-	}
-	return nil
-}
-
-func (x *Message3886_Message3887) GetField3935() []byte {
-	if x != nil {
-		return x.Field3935
-	}
-	return nil
-}
-
-var File_datasets_google_message4_benchmark_message4_1_proto protoreflect.FileDescriptor
-
-var file_datasets_google_message4_benchmark_message4_1_proto_rawDesc = []byte{
-	0x0a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x5f, 0x31, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2f, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x5f, 0x32,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73,
-	0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34,
-	0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x5f, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x54, 0x0a, 0x0b, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x36, 0x33, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x34, 0x39, 0x38, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x32, 0x34, 0x36, 0x32, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x39,
-	0x38, 0x22, 0x78, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x36, 0x38,
-	0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x36, 0x39, 0x39, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x36, 0x39,
-	0x39, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x30, 0x30, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x36, 0x38, 0x35, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x30, 0x30, 0x22, 0x0e, 0x0a, 0x0c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x39, 0x34, 0x39, 0x22, 0xf4, 0x03, 0x0a, 0x0c,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x39, 0x37, 0x35, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x39, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x39, 0x32, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x39, 0x33, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x39, 0x33, 0x12, 0x48, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x39, 0x34, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x33, 0x32, 0x30, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x31, 0x39, 0x39, 0x34, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x31, 0x39, 0x39, 0x35, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x31, 0x39, 0x34, 0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x39, 0x35,
-	0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x39, 0x36, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x39, 0x32, 0x30, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x39, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x39, 0x37, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x39, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x39, 0x38, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x39, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x39, 0x39, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x39, 0x39, 0x12, 0x46, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x30, 0x30, 0x30, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x26,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73,
-	0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x30,
-	0x30, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x30, 0x30, 0x31,
-	0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x30,
-	0x30, 0x31, 0x22, 0x85, 0x04, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x32,
-	0x38, 0x37, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x31, 0x31, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x31, 0x33, 0x33, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x31, 0x31, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x33, 0x31, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x33, 0x31, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x33, 0x31, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x33, 0x31, 0x33, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33,
-	0x31, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x36, 0x34,
-	0x33, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x31, 0x34, 0x12, 0x42, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x31, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32,
-	0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75,
-	0x6d, 0x37, 0x32, 0x38, 0x38, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x31, 0x35,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x31, 0x36, 0x18, 0x06, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x31, 0x36, 0x12, 0x4c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x31, 0x37, 0x18, 0x07, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x31, 0x37, 0x12, 0x4c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x31, 0x38, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x33, 0x31, 0x38, 0x22, 0xe6, 0x1d, 0x0a, 0x0b, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x36, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x32, 0x38, 0x36, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x38, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x32, 0x38, 0x37, 0x18, 0x4d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x32, 0x38, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x32, 0x38, 0x38, 0x18, 0x31, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x32, 0x38, 0x38, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x38,
-	0x39, 0x18, 0x03, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x34, 0x36,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x38, 0x39, 0x12, 0x45, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x39, 0x30, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x33, 0x30, 0x34, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32,
-	0x39, 0x30, 0x12, 0x55, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x36,
-	0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x33, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x36, 0x31,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x36, 0x32, 0x52, 0x0b, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x36, 0x32, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x32, 0x39, 0x32, 0x18, 0x68, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x30, 0x36, 0x30, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x39, 0x32,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x39, 0x33, 0x18, 0x20, 0x20,
-	0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x39, 0x33, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x39, 0x34, 0x18, 0x29, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x39, 0x34, 0x12, 0x55, 0x0a, 0x0b,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x36, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28,
-	0x0a, 0x32, 0x33, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x36, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x30, 0x36, 0x33, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x30, 0x36, 0x33, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x39, 0x36,
-	0x18, 0x5e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x38, 0x33, 0x34, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x32, 0x39, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x32, 0x39, 0x37, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x32, 0x39, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32,
-	0x39, 0x38, 0x18, 0x32, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x32, 0x39, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x39, 0x39,
-	0x18, 0x59, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x39,
-	0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x30, 0x30, 0x18, 0x5b,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x30, 0x30, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x30, 0x31, 0x18, 0x69, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x30, 0x31, 0x12, 0x45, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x30, 0x32, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x35, 0x30, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x33, 0x30, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x30,
-	0x33, 0x18, 0x33, 0x20, 0x01, 0x28, 0x06, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33,
-	0x30, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x30, 0x34, 0x18,
-	0x6a, 0x20, 0x01, 0x28, 0x06, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x30, 0x34,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x30, 0x35, 0x18, 0x3c, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x30, 0x35, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x30, 0x36, 0x18, 0x2c, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x30, 0x36, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x30, 0x37, 0x18, 0x51, 0x20, 0x01, 0x28, 0x0c, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x30, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x33, 0x30, 0x38, 0x18, 0x46, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x30, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x33, 0x30, 0x39, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x33, 0x30, 0x39, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x33, 0x31, 0x30, 0x18, 0x47, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x38, 0x30, 0x36, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x31, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x33, 0x31, 0x31, 0x18, 0x48, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x31, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x33, 0x31, 0x32, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x33, 0x31, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x33, 0x31, 0x33, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x33, 0x31, 0x33, 0x12, 0x55, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x30, 0x36, 0x34, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x33, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30,
-	0x36, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x36, 0x34, 0x52, 0x0b,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x36, 0x34, 0x12, 0x4c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x31, 0x35, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73,
-	0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x31, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x33, 0x31, 0x36, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x33, 0x31, 0x36, 0x12, 0x55, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x30, 0x36, 0x35, 0x18, 0x3f, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x33, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x30, 0x36, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x36,
-	0x35, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x36, 0x35, 0x12, 0x42,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x31, 0x38, 0x18, 0x36, 0x20, 0x01, 0x28,
-	0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45,
-	0x6e, 0x75, 0x6d, 0x32, 0x38, 0x30, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33,
-	0x31, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x31, 0x39, 0x18,
-	0x2e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x31, 0x39,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x32, 0x30, 0x18, 0x18, 0x20,
-	0x03, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x32, 0x30, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x32, 0x31, 0x18, 0x26, 0x20, 0x01, 0x28,
-	0x07, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x32, 0x31, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x32, 0x32, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0c, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x32, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x33, 0x32, 0x33, 0x18, 0x01, 0x20, 0x01, 0x28, 0x06, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x32, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x33, 0x32, 0x34, 0x18, 0x61, 0x20, 0x01, 0x28, 0x06, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x33, 0x32, 0x34, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x33, 0x32, 0x35, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30,
-	0x34, 0x30, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x32, 0x35, 0x12, 0x45, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x32, 0x36, 0x18, 0x3d, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x34, 0x31, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x33, 0x32, 0x36, 0x12, 0x55, 0x0a, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x30, 0x36, 0x36, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x33, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30,
-	0x36, 0x31, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x36, 0x36, 0x52, 0x0b,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x36, 0x36, 0x12, 0x4c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x32, 0x38, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73,
-	0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x32, 0x38, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x33, 0x32, 0x39, 0x18, 0x30, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x33, 0x32, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x33, 0x33, 0x30, 0x18, 0x28, 0x20, 0x01, 0x28, 0x06, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x33, 0x33, 0x30, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33,
-	0x33, 0x31, 0x18, 0x56, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74,
-	0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x33, 0x33, 0x31, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x33, 0x32,
-	0x18, 0x3b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x33,
-	0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x33, 0x33, 0x18, 0x11,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x33, 0x33, 0x1a,
-	0x67, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x36, 0x32, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x33, 0x35, 0x18, 0x05, 0x20, 0x02, 0x28,
-	0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x33, 0x35, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x33, 0x36, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x33, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x33, 0x33, 0x37, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x33, 0x37, 0x1a, 0xab, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x36, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x33, 0x33, 0x38, 0x18, 0x0e, 0x20, 0x02, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x33, 0x33, 0x38, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x33, 0x33, 0x39, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x38, 0x35, 0x31, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x33, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x33, 0x34, 0x30, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x34, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x33, 0x34, 0x31, 0x18, 0x17, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x33, 0x34, 0x31, 0x1a, 0xbb, 0x06, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x30, 0x36, 0x34, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x33, 0x34, 0x32, 0x18, 0x09, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x36, 0x30, 0x32, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x34, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x33, 0x34, 0x33, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x34, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x33, 0x34, 0x34, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x33, 0x34, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x33, 0x34, 0x35, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x33, 0x34, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x34,
-	0x36, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33,
-	0x34, 0x36, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x34, 0x37, 0x18,
-	0x62, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x36, 0x30, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x34, 0x37, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x33, 0x34, 0x38, 0x18, 0x52, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x33, 0x34, 0x38, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x33, 0x34, 0x39, 0x18, 0x50, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x30, 0x35, 0x30, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x34, 0x39, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x35, 0x30, 0x18, 0x34, 0x20, 0x01, 0x28,
-	0x06, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x35, 0x30, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x35, 0x31, 0x18, 0x21, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x35, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x33, 0x35, 0x32, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x35, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x33, 0x35, 0x33, 0x18, 0x45, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x33, 0x35, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x33, 0x35, 0x34, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x33, 0x35, 0x34, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x35,
-	0x35, 0x18, 0x49, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x38, 0x30, 0x36, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x35, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x33, 0x35, 0x36, 0x18, 0x4a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x33, 0x35, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x33, 0x35, 0x37, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x33, 0x35, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x35,
-	0x38, 0x18, 0x4f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33,
-	0x35, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x35, 0x39, 0x18,
-	0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x35, 0x39,
-	0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x36, 0x30, 0x18, 0x5f, 0x20,
-	0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34,
-	0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x38, 0x33, 0x34, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x33, 0x36, 0x30, 0x1a, 0x0d, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x30, 0x36, 0x35, 0x1a, 0xdd, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x30, 0x36, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x36, 0x36,
-	0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x36,
-	0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x36, 0x37, 0x18, 0x37,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x36, 0x37, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x36, 0x38, 0x18, 0x58, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x36, 0x38, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x36, 0x39, 0x18, 0x38, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x36, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x37, 0x30, 0x18, 0x4b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33, 0x37, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x33, 0x37, 0x31, 0x18, 0x39, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x33, 0x37, 0x31, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x33, 0x37, 0x32, 0x18, 0x55, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d,
-	0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x33, 0x37, 0x32, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x33,
-	0x37, 0x33, 0x18, 0x60, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74,
-	0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x33, 0x37, 0x33, 0x22, 0x0e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32,
-	0x39, 0x34, 0x39, 0x22, 0x80, 0x12, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38,
-	0x35, 0x37, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x34, 0x37,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x34,
-	0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x34, 0x38, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x34, 0x38, 0x12,
-	0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x34, 0x39, 0x18, 0x04, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x38, 0x38, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x36, 0x34, 0x39, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x36, 0x35, 0x30, 0x18, 0x39, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x39,
-	0x31, 0x39, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x35, 0x30, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x35, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x35, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x35, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x35, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x36, 0x35, 0x33, 0x18, 0x31, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x36, 0x35, 0x33, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x36, 0x35, 0x34, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37,
-	0x39, 0x30, 0x35, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x35, 0x34, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x35, 0x35, 0x18, 0x0a, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x35, 0x35, 0x12, 0x4c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x35, 0x36, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x35, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x36, 0x35, 0x37, 0x18, 0x23, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x35, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x36, 0x35, 0x38, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x36, 0x35, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x36, 0x35, 0x39, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x36, 0x35, 0x39, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x36,
-	0x30, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36,
-	0x36, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x36, 0x31, 0x18,
-	0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x36, 0x31,
-	0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x36, 0x32, 0x18, 0x11, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x36, 0x32, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x36, 0x33, 0x18, 0x12, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x36, 0x33, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x36, 0x34, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x36, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x36, 0x36, 0x35, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x36, 0x35, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x36, 0x36, 0x36, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x34, 0x37,
-	0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x36, 0x36, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x36, 0x37, 0x18, 0x24, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x36, 0x37, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x36, 0x36, 0x38, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x36, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x36, 0x36, 0x39, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x36, 0x36, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x36, 0x37, 0x30, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x36, 0x37, 0x30, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x37,
-	0x31, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x35, 0x32,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x37, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x37, 0x32, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x37, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x36, 0x37, 0x33, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x36, 0x37, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x36, 0x37, 0x34, 0x18, 0x1d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x36, 0x37, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36,
-	0x37, 0x35, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x36, 0x37, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x37, 0x36,
-	0x18, 0x20, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x37,
-	0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x37, 0x37, 0x18, 0x21,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x37, 0x37, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x37, 0x38, 0x18, 0x22, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x37, 0x38, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x37, 0x39, 0x18, 0x25, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x37, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x38, 0x30, 0x18, 0x26, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x38, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x36, 0x38, 0x31, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x36, 0x38, 0x31, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x36, 0x38, 0x32, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x39, 0x32, 0x32, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x38, 0x32, 0x12, 0x4c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x38, 0x33, 0x18, 0x2b, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x38, 0x33, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x38, 0x34, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x38, 0x34, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x36, 0x38, 0x35, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x37, 0x39, 0x32, 0x39, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x38,
-	0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x38, 0x36, 0x18, 0x2e,
-	0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x38, 0x36, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x38, 0x37, 0x18, 0x30, 0x20, 0x01,
-	0x28, 0x0d, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x38, 0x37, 0x12, 0x45, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x38, 0x38, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x38, 0x34, 0x33, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x36, 0x38, 0x38, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x38,
-	0x39, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x38, 0x36, 0x34,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x38, 0x39, 0x12, 0x4c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x39, 0x30, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73,
-	0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x39, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x36, 0x39, 0x31, 0x18, 0x3a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x38, 0x36, 0x39, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x36, 0x39, 0x32, 0x18, 0x36, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x38, 0x36, 0x39, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36,
-	0x39, 0x33, 0x18, 0x37, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x36, 0x39, 0x33, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x39, 0x34,
-	0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x39,
-	0x34, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x39, 0x35, 0x18, 0x35,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x39, 0x35, 0x12,
-	0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x36, 0x39, 0x36, 0x18, 0x3d, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x35, 0x37, 0x35, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x38, 0x36, 0x39, 0x36, 0x22, 0xa3, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x38, 0x37, 0x37, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38,
-	0x38, 0x31, 0x30, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x38, 0x38, 0x31, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x31,
-	0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38,
-	0x31, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x31, 0x32, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x31, 0x32,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x31, 0x33, 0x18, 0x04, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x31, 0x33, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x31, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x38, 0x38, 0x31, 0x34, 0x22, 0xfc, 0x03, 0x0a,
-	0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x37, 0x37, 0x36, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x38, 0x36, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x38, 0x36, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x38, 0x37, 0x18, 0x0b, 0x20, 0x01, 0x28,
-	0x06, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x38, 0x37, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x38, 0x38, 0x18, 0x06, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x38, 0x38, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x38, 0x39, 0x18, 0x0d, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x38, 0x39, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x39, 0x30, 0x18, 0x0e, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x39, 0x30, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x39, 0x31, 0x18, 0x0f, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x39, 0x31, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x39, 0x32, 0x18, 0x10, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x39, 0x32, 0x12, 0x4e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x39, 0x33, 0x18, 0x08, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55,
-	0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x39, 0x33, 0x12, 0x48, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x37, 0x39, 0x34, 0x18, 0x0a, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x37, 0x37, 0x34, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x37, 0x39, 0x34, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x37, 0x39, 0x35, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45,
-	0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x37, 0x39, 0x35, 0x2a, 0x04, 0x08, 0x02, 0x10, 0x03, 0x2a, 0x04, 0x08,
-	0x03, 0x10, 0x04, 0x2a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x2a, 0x04, 0x08, 0x05, 0x10, 0x06, 0x2a,
-	0x04, 0x08, 0x07, 0x10, 0x08, 0x2a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x22, 0xb8, 0x01, 0x0a, 0x0c,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x37, 0x39, 0x38, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x30, 0x35, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x30, 0x35, 0x12, 0x1e, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x30, 0x36, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x30, 0x36, 0x12, 0x48, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x30, 0x37, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x37, 0x37, 0x34, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x38, 0x30, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x30, 0x38, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x38, 0x30, 0x38, 0x22, 0xc2, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x32, 0x37, 0x39, 0x37, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x30, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x32, 0x37, 0x39, 0x36, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x30,
-	0x32, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x30, 0x33, 0x18,
-	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x37, 0x39, 0x36, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x30, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x30, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x30, 0x34, 0x22, 0xc6, 0x03, 0x0a, 0x0c,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x38, 0x32, 0x35, 0x12, 0x48, 0x0a, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x36, 0x32, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x38, 0x31, 0x38, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x38, 0x36, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x36, 0x33, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x38, 0x36, 0x33, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31,
-	0x32, 0x38, 0x31, 0x39, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x36, 0x34,
-	0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x36, 0x35, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x38, 0x32, 0x30, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x36, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x36, 0x36, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x36, 0x36, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x36, 0x37, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x32, 0x38, 0x32, 0x31, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x36, 0x37, 0x12, 0x4e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38,
-	0x36, 0x38, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74,
-	0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x32, 0x38, 0x36, 0x38, 0x22, 0x0d, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38,
-	0x35, 0x39, 0x30, 0x22, 0x0d, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x35,
-	0x38, 0x37, 0x22, 0x49, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x33, 0x37,
-	0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x37, 0x35, 0x18, 0x01,
-	0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x37, 0x35, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x37, 0x36, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x33, 0x37, 0x36, 0x22, 0x49, 0x0a,
-	0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x34, 0x36, 0x32, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x39, 0x36, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0c, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x39, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x32, 0x34, 0x39, 0x37, 0x18, 0x02, 0x20, 0x02, 0x28, 0x01, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x32, 0x34, 0x39, 0x37, 0x22, 0xee, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x36, 0x38, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x36, 0x39, 0x32, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x36, 0x39, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x36, 0x39, 0x33, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x36, 0x39, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x36, 0x39, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x36, 0x39, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x36, 0x39, 0x35, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x36, 0x39, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x36, 0x39, 0x36, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x36, 0x39, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x36, 0x39, 0x37, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x36, 0x39, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x36, 0x39, 0x38, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x36, 0x39, 0x38, 0x22, 0xe6, 0x02, 0x0a, 0x0c, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x33, 0x32, 0x30, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x37, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d,
-	0x31, 0x30, 0x33, 0x33, 0x35, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34,
-	0x37, 0x12, 0x48, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x38, 0x18,
-	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x30, 0x33, 0x31, 0x39, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x39, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x35, 0x30, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x35, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x35, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x35, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x35, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x35, 0x32, 0x12, 0x45, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x35, 0x33, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32,
-	0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75,
-	0x6d, 0x31, 0x30, 0x33, 0x33, 0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33,
-	0x35, 0x33, 0x22, 0x6e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31, 0x39,
-	0x34, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x35, 0x31,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39,
-	0x35, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x35, 0x32,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39,
-	0x35, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x35, 0x33,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39,
-	0x35, 0x33, 0x22, 0x9d, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x31,
-	0x39, 0x32, 0x30, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x34,
-	0x35, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x31, 0x39, 0x30, 0x31, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x34, 0x35, 0x12, 0x46, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x31, 0x39, 0x34, 0x36, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73,
-	0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x31, 0x39,
-	0x34, 0x36, 0x22, 0xea, 0x06, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x36,
-	0x34, 0x33, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x38, 0x33, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x38, 0x33,
-	0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x38, 0x34, 0x18, 0x04, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34,
-	0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x38, 0x34, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x38, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28,
-	0x01, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x38, 0x35, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x38, 0x36, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x38, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x36, 0x38, 0x37, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x38, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x36, 0x38, 0x38, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x36, 0x38, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x36, 0x38, 0x39, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x36, 0x38, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39,
-	0x30, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36,
-	0x39, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x31, 0x18,
-	0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x31,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x32, 0x18, 0x0c, 0x20,
-	0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x32, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x33, 0x18, 0x0d, 0x20, 0x01, 0x28,
-	0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x33, 0x12, 0x45, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x34, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x36, 0x35, 0x37, 0x38, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x36, 0x39, 0x34, 0x12, 0x44, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x35,
-	0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x36, 0x39, 0x36, 0x18, 0x11, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x36, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x36, 0x39, 0x37, 0x18, 0x16, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d,
-	0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x36, 0x39, 0x37, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36,
-	0x39, 0x38, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74,
-	0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x36, 0x39, 0x38, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39, 0x39,
-	0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x39,
-	0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x30, 0x30, 0x18, 0x15,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x37, 0x30, 0x30, 0x22,
-	0xad, 0x07, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x31, 0x33, 0x33, 0x12,
-	0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x37, 0x33, 0x18, 0x0c, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x30, 0x31, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x31, 0x37, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x31, 0x37, 0x34, 0x18, 0x10, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x31, 0x37, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x37,
-	0x35, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31,
-	0x37, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x37, 0x36, 0x18,
-	0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x37, 0x36,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x37, 0x37, 0x18, 0x03, 0x20,
-	0x02, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x37, 0x37, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x37, 0x38, 0x18, 0x04, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x37, 0x38, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x37, 0x39, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x37, 0x39, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x31, 0x38, 0x30, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x36, 0x31, 0x30, 0x39, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x38,
-	0x30, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x38, 0x31, 0x18, 0x0d,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x35, 0x39, 0x30, 0x38, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x38, 0x31, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x31, 0x38, 0x32, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x36, 0x31, 0x30, 0x37, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x38, 0x32, 0x12,
-	0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x38, 0x33, 0x18, 0x09, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x31, 0x32, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x31, 0x38, 0x33, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x31, 0x38, 0x34, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x31,
-	0x32, 0x39, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x38, 0x34, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x38, 0x35, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x38, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x38, 0x36, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x38, 0x36, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x31, 0x38, 0x37, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x30, 0x31, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x38, 0x37,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x38, 0x38, 0x18, 0x0e, 0x20,
-	0x01, 0x28, 0x01, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x38, 0x38, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x38, 0x39, 0x18, 0x12, 0x20, 0x01, 0x28,
-	0x01, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x38, 0x39, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x39, 0x30, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x39, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x31, 0x39, 0x31, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x39, 0x31, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x31, 0x39, 0x32, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x35, 0x38, 0x38, 0x31, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x39, 0x32, 0x22,
-	0xf8, 0x03, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x31, 0x30, 0x39, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x34, 0x30, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x34, 0x30, 0x12, 0x42, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x34, 0x31, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0e,
-	0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e,
-	0x75, 0x6d, 0x36, 0x31, 0x31, 0x31, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x34,
-	0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x34, 0x32, 0x18, 0x09,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x34, 0x32, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x34, 0x33, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x34, 0x33, 0x12, 0x45, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x34, 0x34, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x31, 0x31, 0x30, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x31, 0x34, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x34,
-	0x35, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31,
-	0x34, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x34, 0x36, 0x18,
-	0x08, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x34, 0x36,
-	0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x34, 0x37, 0x18, 0x0a, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x31, 0x33, 0x33, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x31, 0x34, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x31, 0x34, 0x38, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x31, 0x34, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31,
-	0x34, 0x39, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x31, 0x34, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x35, 0x30,
-	0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x35,
-	0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x35, 0x31, 0x18, 0x0e,
-	0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x35, 0x31, 0x2a,
-	0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x6f, 0x0a, 0x0b, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x34, 0x36, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x32, 0x32, 0x32, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x35,
-	0x39, 0x33, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x32, 0x32, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x32, 0x33, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x32, 0x33, 0x22, 0x67, 0x0a, 0x0b, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x36, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x32, 0x38, 0x33, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x38, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x32, 0x38, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x32, 0x38, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x32, 0x38, 0x35, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x32, 0x38, 0x35, 0x22, 0x49, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33,
-	0x30, 0x34, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x31, 0x34,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x31,
-	0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x31, 0x35, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x31, 0x35, 0x22,
-	0xa3, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x34, 0x30, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x30, 0x39, 0x18, 0x01, 0x20, 0x02,
-	0x28, 0x06, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x30, 0x39, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x31, 0x30, 0x18, 0x04, 0x20, 0x03, 0x28, 0x06,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x31, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x31, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x31, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x32, 0x31, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x06, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x32, 0x31, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x32, 0x31, 0x33, 0x18, 0x03, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x32, 0x31, 0x33, 0x22, 0xc1, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x30, 0x35, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32,
-	0x34, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x32, 0x34, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x34, 0x36,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x34,
-	0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x34, 0x37, 0x18, 0x06,
-	0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x34, 0x37, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x34, 0x38, 0x18, 0x04, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x34, 0x38, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x34, 0x39, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x34, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x35, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x07, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x35, 0x30, 0x22, 0xdf, 0x01, 0x0a, 0x0b, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x30, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x39, 0x31, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x39, 0x31, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x39, 0x31, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x39, 0x31, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39,
-	0x31, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x39, 0x31, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x31, 0x34,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x31,
-	0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x31, 0x35, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x31, 0x35, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x31, 0x36, 0x18, 0x06, 0x20, 0x01,
-	0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x31, 0x36, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x31, 0x37, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x31, 0x37, 0x22, 0x95, 0x02, 0x0a, 0x0b,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x38, 0x38, 0x36, 0x12, 0x55, 0x0a, 0x0b, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x38, 0x38, 0x37, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0a,
-	0x32, 0x33, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x38, 0x38, 0x36, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x33, 0x38, 0x38, 0x37, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x38,
-	0x38, 0x37, 0x1a, 0xae, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x38,
-	0x38, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x33, 0x32, 0x18,
-	0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x33, 0x32,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x33, 0x33, 0x18, 0x09, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x33, 0x33, 0x12, 0x45,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x33, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x38, 0x35, 0x30, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x39, 0x33, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39,
-	0x33, 0x35, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x39, 0x33, 0x35, 0x22, 0xec, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37,
-	0x38, 0x36, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x36, 0x36,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x36,
-	0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x36, 0x37, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x36, 0x37, 0x12,
-	0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x36, 0x38, 0x18, 0x05, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x38, 0x36, 0x35, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x38, 0x36, 0x38, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x38, 0x36, 0x39, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x38,
-	0x36, 0x35, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x36, 0x39, 0x12, 0x45, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x37, 0x30, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x38, 0x36, 0x35, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x38, 0x37, 0x30, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x37,
-	0x31, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38,
-	0x37, 0x31, 0x22, 0x2b, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x39, 0x32,
-	0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x30, 0x31, 0x32, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x30, 0x31, 0x32, 0x22,
-	0x9b, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x30, 0x35, 0x32, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x35, 0x34, 0x18, 0x01, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x35, 0x34, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x35, 0x35, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x35, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x35, 0x36, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x35, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x32, 0x35, 0x37, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x32, 0x35, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x32, 0x35, 0x38, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x32, 0x35, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32,
-	0x35, 0x39, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x32, 0x35, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x36, 0x30,
-	0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x36,
-	0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x36, 0x31, 0x18, 0x08,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x36, 0x31, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x36, 0x32, 0x18, 0x09, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x36, 0x32, 0x22, 0x0d, 0x0a,
-	0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x38, 0x35, 0x37, 0x35, 0x22, 0xe6, 0x07, 0x0a,
-	0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x38, 0x34, 0x33, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x34, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x34, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x38, 0x34, 0x35, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x34, 0x35, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x38, 0x34, 0x36, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45,
-	0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x38, 0x34, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x38, 0x34, 0x37, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x38, 0x34, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x34,
-	0x38, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38,
-	0x34, 0x38, 0x12, 0x44, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x34, 0x39, 0x18,
-	0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x34, 0x39, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x38, 0x35, 0x30, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45,
-	0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x38, 0x35, 0x30, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x38, 0x35, 0x31, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70,
-	0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x38, 0x35, 0x31, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x35,
-	0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38,
-	0x35, 0x32, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x35, 0x33, 0x18,
-	0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x35, 0x31, 0x31, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x35, 0x33, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x38, 0x35, 0x34, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x38, 0x35, 0x34, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x38, 0x35, 0x35, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d,
-	0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x38, 0x35, 0x35, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38,
-	0x35, 0x36, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74,
-	0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x38, 0x35, 0x36, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x35, 0x37,
-	0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x35,
-	0x37, 0x12, 0x44, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x38, 0x35, 0x38, 0x18, 0x14,
-	0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x38, 0x35, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x38, 0x35, 0x39, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x38, 0x35, 0x39, 0x22, 0x54, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x33, 0x39, 0x31, 0x39, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x30, 0x30,
-	0x39, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x33, 0x39, 0x32, 0x30,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x30, 0x30, 0x39, 0x22, 0xe9, 0x06, 0x0a, 0x0b,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x32, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x34, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x34, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x39, 0x34, 0x33, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x39, 0x34, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x39, 0x34, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x39, 0x34, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39,
-	0x34, 0x35, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x39, 0x34, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x34, 0x36,
-	0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x34,
-	0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x34, 0x37, 0x18, 0x12,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x34, 0x37, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x34, 0x38, 0x18, 0x06, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x34, 0x38, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x34, 0x39, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x34, 0x39, 0x12, 0x45, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x30, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x37, 0x39, 0x31, 0x39, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39,
-	0x35, 0x30, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x31, 0x18,
-	0x14, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x31,
-	0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x32, 0x18, 0x0e, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x32, 0x30, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x32, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x39, 0x35, 0x33, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37,
-	0x39, 0x32, 0x31, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x33, 0x12, 0x45,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x34, 0x18, 0x11, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x32, 0x38, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x39, 0x35, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39,
-	0x35, 0x35, 0x18, 0x13, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x39, 0x35, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x36,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35,
-	0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x37, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x37, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x38, 0x18, 0x09, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x38, 0x12, 0x4c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x39, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e,
-	0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x35, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x36, 0x30, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x36, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x39, 0x36, 0x31, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x39, 0x36, 0x31, 0x42, 0x23, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0xf8, 0x01, 0x01,
-}
-
-var (
-	file_datasets_google_message4_benchmark_message4_1_proto_rawDescOnce sync.Once
-	file_datasets_google_message4_benchmark_message4_1_proto_rawDescData = file_datasets_google_message4_benchmark_message4_1_proto_rawDesc
-)
-
-func file_datasets_google_message4_benchmark_message4_1_proto_rawDescGZIP() []byte {
-	file_datasets_google_message4_benchmark_message4_1_proto_rawDescOnce.Do(func() {
-		file_datasets_google_message4_benchmark_message4_1_proto_rawDescData = protoimpl.X.CompressGZIP(file_datasets_google_message4_benchmark_message4_1_proto_rawDescData)
-	})
-	return file_datasets_google_message4_benchmark_message4_1_proto_rawDescData
-}
-
-var file_datasets_google_message4_benchmark_message4_1_proto_msgTypes = make([]protoimpl.MessageInfo, 44)
-var file_datasets_google_message4_benchmark_message4_1_proto_goTypes = []interface{}{
-	(*Message2463)(nil),             // 0: benchmarks.google_message4.Message2463
-	(*Message12686)(nil),            // 1: benchmarks.google_message4.Message12686
-	(*Message11949)(nil),            // 2: benchmarks.google_message4.Message11949
-	(*Message11975)(nil),            // 3: benchmarks.google_message4.Message11975
-	(*Message7287)(nil),             // 4: benchmarks.google_message4.Message7287
-	(*Message3061)(nil),             // 5: benchmarks.google_message4.Message3061
-	(*Message12949)(nil),            // 6: benchmarks.google_message4.Message12949
-	(*Message8572)(nil),             // 7: benchmarks.google_message4.Message8572
-	(*Message8774)(nil),             // 8: benchmarks.google_message4.Message8774
-	(*Message12776)(nil),            // 9: benchmarks.google_message4.Message12776
-	(*Message12798)(nil),            // 10: benchmarks.google_message4.Message12798
-	(*Message12797)(nil),            // 11: benchmarks.google_message4.Message12797
-	(*Message12825)(nil),            // 12: benchmarks.google_message4.Message12825
-	(*Message8590)(nil),             // 13: benchmarks.google_message4.Message8590
-	(*Message8587)(nil),             // 14: benchmarks.google_message4.Message8587
-	(*Message1374)(nil),             // 15: benchmarks.google_message4.Message1374
-	(*Message2462)(nil),             // 16: benchmarks.google_message4.Message2462
-	(*Message12685)(nil),            // 17: benchmarks.google_message4.Message12685
-	(*Message10320)(nil),            // 18: benchmarks.google_message4.Message10320
-	(*Message11947)(nil),            // 19: benchmarks.google_message4.Message11947
-	(*Message11920)(nil),            // 20: benchmarks.google_message4.Message11920
-	(*Message6643)(nil),             // 21: benchmarks.google_message4.Message6643
-	(*Message6133)(nil),             // 22: benchmarks.google_message4.Message6133
-	(*Message6109)(nil),             // 23: benchmarks.google_message4.Message6109
-	(*Message3046)(nil),             // 24: benchmarks.google_message4.Message3046
-	(*Message3060)(nil),             // 25: benchmarks.google_message4.Message3060
-	(*Message3041)(nil),             // 26: benchmarks.google_message4.Message3041
-	(*Message3040)(nil),             // 27: benchmarks.google_message4.Message3040
-	(*Message3050)(nil),             // 28: benchmarks.google_message4.Message3050
-	(*Message7905)(nil),             // 29: benchmarks.google_message4.Message7905
-	(*Message3886)(nil),             // 30: benchmarks.google_message4.Message3886
-	(*Message7864)(nil),             // 31: benchmarks.google_message4.Message7864
-	(*Message3922)(nil),             // 32: benchmarks.google_message4.Message3922
-	(*Message3052)(nil),             // 33: benchmarks.google_message4.Message3052
-	(*Message8575)(nil),             // 34: benchmarks.google_message4.Message8575
-	(*Message7843)(nil),             // 35: benchmarks.google_message4.Message7843
-	(*Message3919)(nil),             // 36: benchmarks.google_message4.Message3919
-	(*Message7929)(nil),             // 37: benchmarks.google_message4.Message7929
-	(*Message3061_Message3062)(nil), // 38: benchmarks.google_message4.Message3061.Message3062
-	(*Message3061_Message3063)(nil), // 39: benchmarks.google_message4.Message3061.Message3063
-	(*Message3061_Message3064)(nil), // 40: benchmarks.google_message4.Message3061.Message3064
-	(*Message3061_Message3065)(nil), // 41: benchmarks.google_message4.Message3061.Message3065
-	(*Message3061_Message3066)(nil), // 42: benchmarks.google_message4.Message3061.Message3066
-	(*Message3886_Message3887)(nil), // 43: benchmarks.google_message4.Message3886.Message3887
-	(UnusedEnum)(0),                 // 44: benchmarks.google_message4.UnusedEnum
-	(*UnusedEmptyMessage)(nil),      // 45: benchmarks.google_message4.UnusedEmptyMessage
-	(Enum7288)(0),                   // 46: benchmarks.google_message4.Enum7288
-	(Enum2834)(0),                   // 47: benchmarks.google_message4.Enum2834
-	(Enum2806)(0),                   // 48: benchmarks.google_message4.Enum2806
-	(Enum3476)(0),                   // 49: benchmarks.google_message4.Enum3476
-	(*Message12774)(nil),            // 50: benchmarks.google_message4.Message12774
-	(*Message12796)(nil),            // 51: benchmarks.google_message4.Message12796
-	(*Message12818)(nil),            // 52: benchmarks.google_message4.Message12818
-	(*Message12819)(nil),            // 53: benchmarks.google_message4.Message12819
-	(*Message12820)(nil),            // 54: benchmarks.google_message4.Message12820
-	(*Message12821)(nil),            // 55: benchmarks.google_message4.Message12821
-	(Enum10335)(0),                  // 56: benchmarks.google_message4.Enum10335
-	(*Message10319)(nil),            // 57: benchmarks.google_message4.Message10319
-	(Enum10337)(0),                  // 58: benchmarks.google_message4.Enum10337
-	(Enum11901)(0),                  // 59: benchmarks.google_message4.Enum11901
-	(*Message6578)(nil),             // 60: benchmarks.google_message4.Message6578
-	(*Message4016)(nil),             // 61: benchmarks.google_message4.Message4016
-	(*Message5908)(nil),             // 62: benchmarks.google_message4.Message5908
-	(*Message6107)(nil),             // 63: benchmarks.google_message4.Message6107
-	(*Message6126)(nil),             // 64: benchmarks.google_message4.Message6126
-	(*Message6129)(nil),             // 65: benchmarks.google_message4.Message6129
-	(*Message5881)(nil),             // 66: benchmarks.google_message4.Message5881
-	(Enum6111)(0),                   // 67: benchmarks.google_message4.Enum6111
-	(*Message6110)(nil),             // 68: benchmarks.google_message4.Message6110
-	(Enum2593)(0),                   // 69: benchmarks.google_message4.Enum2593
-	(*Message7865)(nil),             // 70: benchmarks.google_message4.Message7865
-	(*Message7511)(nil),             // 71: benchmarks.google_message4.Message7511
-	(*Message3920)(nil),             // 72: benchmarks.google_message4.Message3920
-	(*Message7919)(nil),             // 73: benchmarks.google_message4.Message7919
-	(*Message7920)(nil),             // 74: benchmarks.google_message4.Message7920
-	(*Message7921)(nil),             // 75: benchmarks.google_message4.Message7921
-	(*Message7928)(nil),             // 76: benchmarks.google_message4.Message7928
-	(Enum2851)(0),                   // 77: benchmarks.google_message4.Enum2851
-	(Enum2602)(0),                   // 78: benchmarks.google_message4.Enum2602
-	(*Message3850)(nil),             // 79: benchmarks.google_message4.Message3850
-}
-var file_datasets_google_message4_benchmark_message4_1_proto_depIdxs = []int32{
-	16,  // 0: benchmarks.google_message4.Message2463.field2498:type_name -> benchmarks.google_message4.Message2462
-	17,  // 1: benchmarks.google_message4.Message12686.field12700:type_name -> benchmarks.google_message4.Message12685
-	18,  // 2: benchmarks.google_message4.Message11975.field11994:type_name -> benchmarks.google_message4.Message10320
-	19,  // 3: benchmarks.google_message4.Message11975.field11995:type_name -> benchmarks.google_message4.Message11947
-	20,  // 4: benchmarks.google_message4.Message11975.field11996:type_name -> benchmarks.google_message4.Message11920
-	44,  // 5: benchmarks.google_message4.Message11975.field12000:type_name -> benchmarks.google_message4.UnusedEnum
-	22,  // 6: benchmarks.google_message4.Message7287.field7311:type_name -> benchmarks.google_message4.Message6133
-	45,  // 7: benchmarks.google_message4.Message7287.field7312:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	21,  // 8: benchmarks.google_message4.Message7287.field7314:type_name -> benchmarks.google_message4.Message6643
-	46,  // 9: benchmarks.google_message4.Message7287.field7315:type_name -> benchmarks.google_message4.Enum7288
-	45,  // 10: benchmarks.google_message4.Message7287.field7317:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 11: benchmarks.google_message4.Message7287.field7318:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	24,  // 12: benchmarks.google_message4.Message3061.field3289:type_name -> benchmarks.google_message4.Message3046
-	24,  // 13: benchmarks.google_message4.Message3061.field3290:type_name -> benchmarks.google_message4.Message3046
-	38,  // 14: benchmarks.google_message4.Message3061.message3062:type_name -> benchmarks.google_message4.Message3061.Message3062
-	25,  // 15: benchmarks.google_message4.Message3061.field3292:type_name -> benchmarks.google_message4.Message3060
-	39,  // 16: benchmarks.google_message4.Message3061.message3063:type_name -> benchmarks.google_message4.Message3061.Message3063
-	47,  // 17: benchmarks.google_message4.Message3061.field3296:type_name -> benchmarks.google_message4.Enum2834
-	28,  // 18: benchmarks.google_message4.Message3061.field3302:type_name -> benchmarks.google_message4.Message3050
-	48,  // 19: benchmarks.google_message4.Message3061.field3310:type_name -> benchmarks.google_message4.Enum2806
-	40,  // 20: benchmarks.google_message4.Message3061.message3064:type_name -> benchmarks.google_message4.Message3061.Message3064
-	45,  // 21: benchmarks.google_message4.Message3061.field3315:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	41,  // 22: benchmarks.google_message4.Message3061.message3065:type_name -> benchmarks.google_message4.Message3061.Message3065
-	48,  // 23: benchmarks.google_message4.Message3061.field3318:type_name -> benchmarks.google_message4.Enum2806
-	27,  // 24: benchmarks.google_message4.Message3061.field3325:type_name -> benchmarks.google_message4.Message3040
-	26,  // 25: benchmarks.google_message4.Message3061.field3326:type_name -> benchmarks.google_message4.Message3041
-	42,  // 26: benchmarks.google_message4.Message3061.message3066:type_name -> benchmarks.google_message4.Message3061.Message3066
-	45,  // 27: benchmarks.google_message4.Message3061.field3328:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 28: benchmarks.google_message4.Message3061.field3329:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 29: benchmarks.google_message4.Message3061.field3331:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 30: benchmarks.google_message4.Message3061.field3332:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	30,  // 31: benchmarks.google_message4.Message8572.field8649:type_name -> benchmarks.google_message4.Message3886
-	36,  // 32: benchmarks.google_message4.Message8572.field8650:type_name -> benchmarks.google_message4.Message3919
-	29,  // 33: benchmarks.google_message4.Message8572.field8654:type_name -> benchmarks.google_message4.Message7905
-	45,  // 34: benchmarks.google_message4.Message8572.field8656:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 35: benchmarks.google_message4.Message8572.field8660:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 36: benchmarks.google_message4.Message8572.field8662:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	49,  // 37: benchmarks.google_message4.Message8572.field8666:type_name -> benchmarks.google_message4.Enum3476
-	45,  // 38: benchmarks.google_message4.Message8572.field8668:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	33,  // 39: benchmarks.google_message4.Message8572.field8671:type_name -> benchmarks.google_message4.Message3052
-	32,  // 40: benchmarks.google_message4.Message8572.field8682:type_name -> benchmarks.google_message4.Message3922
-	45,  // 41: benchmarks.google_message4.Message8572.field8683:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	37,  // 42: benchmarks.google_message4.Message8572.field8685:type_name -> benchmarks.google_message4.Message7929
-	35,  // 43: benchmarks.google_message4.Message8572.field8688:type_name -> benchmarks.google_message4.Message7843
-	31,  // 44: benchmarks.google_message4.Message8572.field8689:type_name -> benchmarks.google_message4.Message7864
-	45,  // 45: benchmarks.google_message4.Message8572.field8690:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 46: benchmarks.google_message4.Message8572.field8694:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 47: benchmarks.google_message4.Message8572.field8695:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	34,  // 48: benchmarks.google_message4.Message8572.field8696:type_name -> benchmarks.google_message4.Message8575
-	45,  // 49: benchmarks.google_message4.Message12776.field12793:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	50,  // 50: benchmarks.google_message4.Message12776.field12794:type_name -> benchmarks.google_message4.Message12774
-	45,  // 51: benchmarks.google_message4.Message12776.field12795:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	50,  // 52: benchmarks.google_message4.Message12798.field12807:type_name -> benchmarks.google_message4.Message12774
-	51,  // 53: benchmarks.google_message4.Message12797.field12802:type_name -> benchmarks.google_message4.Message12796
-	51,  // 54: benchmarks.google_message4.Message12797.field12803:type_name -> benchmarks.google_message4.Message12796
-	52,  // 55: benchmarks.google_message4.Message12825.field12862:type_name -> benchmarks.google_message4.Message12818
-	53,  // 56: benchmarks.google_message4.Message12825.field12864:type_name -> benchmarks.google_message4.Message12819
-	54,  // 57: benchmarks.google_message4.Message12825.field12865:type_name -> benchmarks.google_message4.Message12820
-	55,  // 58: benchmarks.google_message4.Message12825.field12867:type_name -> benchmarks.google_message4.Message12821
-	45,  // 59: benchmarks.google_message4.Message12825.field12868:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	56,  // 60: benchmarks.google_message4.Message10320.field10347:type_name -> benchmarks.google_message4.Enum10335
-	57,  // 61: benchmarks.google_message4.Message10320.field10348:type_name -> benchmarks.google_message4.Message10319
-	58,  // 62: benchmarks.google_message4.Message10320.field10353:type_name -> benchmarks.google_message4.Enum10337
-	59,  // 63: benchmarks.google_message4.Message11920.field11945:type_name -> benchmarks.google_message4.Enum11901
-	44,  // 64: benchmarks.google_message4.Message11920.field11946:type_name -> benchmarks.google_message4.UnusedEnum
-	45,  // 65: benchmarks.google_message4.Message6643.field6683:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 66: benchmarks.google_message4.Message6643.field6684:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	60,  // 67: benchmarks.google_message4.Message6643.field6694:type_name -> benchmarks.google_message4.Message6578
-	44,  // 68: benchmarks.google_message4.Message6643.field6695:type_name -> benchmarks.google_message4.UnusedEnum
-	45,  // 69: benchmarks.google_message4.Message6643.field6697:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 70: benchmarks.google_message4.Message6643.field6698:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 71: benchmarks.google_message4.Message6643.field6699:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	61,  // 72: benchmarks.google_message4.Message6133.field6173:type_name -> benchmarks.google_message4.Message4016
-	23,  // 73: benchmarks.google_message4.Message6133.field6180:type_name -> benchmarks.google_message4.Message6109
-	62,  // 74: benchmarks.google_message4.Message6133.field6181:type_name -> benchmarks.google_message4.Message5908
-	63,  // 75: benchmarks.google_message4.Message6133.field6182:type_name -> benchmarks.google_message4.Message6107
-	64,  // 76: benchmarks.google_message4.Message6133.field6183:type_name -> benchmarks.google_message4.Message6126
-	65,  // 77: benchmarks.google_message4.Message6133.field6184:type_name -> benchmarks.google_message4.Message6129
-	61,  // 78: benchmarks.google_message4.Message6133.field6187:type_name -> benchmarks.google_message4.Message4016
-	66,  // 79: benchmarks.google_message4.Message6133.field6192:type_name -> benchmarks.google_message4.Message5881
-	67,  // 80: benchmarks.google_message4.Message6109.field6141:type_name -> benchmarks.google_message4.Enum6111
-	68,  // 81: benchmarks.google_message4.Message6109.field6144:type_name -> benchmarks.google_message4.Message6110
-	22,  // 82: benchmarks.google_message4.Message6109.field6147:type_name -> benchmarks.google_message4.Message6133
-	69,  // 83: benchmarks.google_message4.Message3046.field3222:type_name -> benchmarks.google_message4.Enum2593
-	43,  // 84: benchmarks.google_message4.Message3886.message3887:type_name -> benchmarks.google_message4.Message3886.Message3887
-	70,  // 85: benchmarks.google_message4.Message7864.field7868:type_name -> benchmarks.google_message4.Message7865
-	70,  // 86: benchmarks.google_message4.Message7864.field7869:type_name -> benchmarks.google_message4.Message7865
-	70,  // 87: benchmarks.google_message4.Message7864.field7870:type_name -> benchmarks.google_message4.Message7865
-	45,  // 88: benchmarks.google_message4.Message7864.field7871:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 89: benchmarks.google_message4.Message7843.field7846:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	44,  // 90: benchmarks.google_message4.Message7843.field7849:type_name -> benchmarks.google_message4.UnusedEnum
-	45,  // 91: benchmarks.google_message4.Message7843.field7850:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 92: benchmarks.google_message4.Message7843.field7851:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 93: benchmarks.google_message4.Message7843.field7852:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	71,  // 94: benchmarks.google_message4.Message7843.field7853:type_name -> benchmarks.google_message4.Message7511
-	45,  // 95: benchmarks.google_message4.Message7843.field7854:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 96: benchmarks.google_message4.Message7843.field7855:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 97: benchmarks.google_message4.Message7843.field7856:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 98: benchmarks.google_message4.Message7843.field7857:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	44,  // 99: benchmarks.google_message4.Message7843.field7858:type_name -> benchmarks.google_message4.UnusedEnum
-	72,  // 100: benchmarks.google_message4.Message3919.field4009:type_name -> benchmarks.google_message4.Message3920
-	73,  // 101: benchmarks.google_message4.Message7929.field7950:type_name -> benchmarks.google_message4.Message7919
-	45,  // 102: benchmarks.google_message4.Message7929.field7951:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	74,  // 103: benchmarks.google_message4.Message7929.field7952:type_name -> benchmarks.google_message4.Message7920
-	75,  // 104: benchmarks.google_message4.Message7929.field7953:type_name -> benchmarks.google_message4.Message7921
-	76,  // 105: benchmarks.google_message4.Message7929.field7954:type_name -> benchmarks.google_message4.Message7928
-	45,  // 106: benchmarks.google_message4.Message7929.field7959:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	77,  // 107: benchmarks.google_message4.Message3061.Message3063.field3339:type_name -> benchmarks.google_message4.Enum2851
-	78,  // 108: benchmarks.google_message4.Message3061.Message3064.field3342:type_name -> benchmarks.google_message4.Enum2602
-	25,  // 109: benchmarks.google_message4.Message3061.Message3064.field3347:type_name -> benchmarks.google_message4.Message3060
-	45,  // 110: benchmarks.google_message4.Message3061.Message3064.field3348:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	28,  // 111: benchmarks.google_message4.Message3061.Message3064.field3349:type_name -> benchmarks.google_message4.Message3050
-	48,  // 112: benchmarks.google_message4.Message3061.Message3064.field3355:type_name -> benchmarks.google_message4.Enum2806
-	47,  // 113: benchmarks.google_message4.Message3061.Message3064.field3360:type_name -> benchmarks.google_message4.Enum2834
-	45,  // 114: benchmarks.google_message4.Message3061.Message3066.field3372:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	45,  // 115: benchmarks.google_message4.Message3061.Message3066.field3373:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	79,  // 116: benchmarks.google_message4.Message3886.Message3887.field3934:type_name -> benchmarks.google_message4.Message3850
-	117, // [117:117] is the sub-list for method output_type
-	117, // [117:117] is the sub-list for method input_type
-	117, // [117:117] is the sub-list for extension type_name
-	117, // [117:117] is the sub-list for extension extendee
-	0,   // [0:117] is the sub-list for field type_name
-}
-
-func init() { file_datasets_google_message4_benchmark_message4_1_proto_init() }
-func file_datasets_google_message4_benchmark_message4_1_proto_init() {
-	if File_datasets_google_message4_benchmark_message4_1_proto != nil {
-		return
-	}
-	file_datasets_google_message4_benchmark_message4_2_proto_init()
-	file_datasets_google_message4_benchmark_message4_3_proto_init()
-	if !protoimpl.UnsafeEnabled {
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message2463); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12686); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message11949); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message11975); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7287); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3061); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12949); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8572); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8774); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12776); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12798); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12797); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12825); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8590); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8587); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message1374); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message2462); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12685); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10320); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message11947); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message11920); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6643); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6133); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6109); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3046); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3060); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3041); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3040); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3050); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7905); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3886); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7864); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3922); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3052); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message8575); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7843); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3919); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7929); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3061_Message3062); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3061_Message3063); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3061_Message3064); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3061_Message3065); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3061_Message3066); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_1_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3886_Message3887); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_datasets_google_message4_benchmark_message4_1_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   44,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_datasets_google_message4_benchmark_message4_1_proto_goTypes,
-		DependencyIndexes: file_datasets_google_message4_benchmark_message4_1_proto_depIdxs,
-		MessageInfos:      file_datasets_google_message4_benchmark_message4_1_proto_msgTypes,
-	}.Build()
-	File_datasets_google_message4_benchmark_message4_1_proto = out.File
-	file_datasets_google_message4_benchmark_message4_1_proto_rawDesc = nil
-	file_datasets_google_message4_benchmark_message4_1_proto_goTypes = nil
-	file_datasets_google_message4_benchmark_message4_1_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4_2.pb.go b/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4_2.pb.go
deleted file mode 100644
index dde28c0..0000000
--- a/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4_2.pb.go
+++ /dev/null
@@ -1,3969 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: datasets/google_message4/benchmark_message4_2.proto
-
-package google_message4
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Message12774 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12777 *uint32 `protobuf:"varint,1,opt,name=field12777" json:"field12777,omitempty"`
-	Field12778 *uint32 `protobuf:"varint,2,opt,name=field12778" json:"field12778,omitempty"`
-	Field12779 *uint32 `protobuf:"varint,3,opt,name=field12779" json:"field12779,omitempty"`
-	Field12780 *uint32 `protobuf:"varint,4,opt,name=field12780" json:"field12780,omitempty"`
-	Field12781 *uint32 `protobuf:"varint,5,opt,name=field12781" json:"field12781,omitempty"`
-	Field12782 *bool   `protobuf:"varint,6,opt,name=field12782" json:"field12782,omitempty"`
-}
-
-func (x *Message12774) Reset() {
-	*x = Message12774{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12774) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12774) ProtoMessage() {}
-
-func (x *Message12774) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12774.ProtoReflect.Descriptor instead.
-func (*Message12774) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Message12774) GetField12777() uint32 {
-	if x != nil && x.Field12777 != nil {
-		return *x.Field12777
-	}
-	return 0
-}
-
-func (x *Message12774) GetField12778() uint32 {
-	if x != nil && x.Field12778 != nil {
-		return *x.Field12778
-	}
-	return 0
-}
-
-func (x *Message12774) GetField12779() uint32 {
-	if x != nil && x.Field12779 != nil {
-		return *x.Field12779
-	}
-	return 0
-}
-
-func (x *Message12774) GetField12780() uint32 {
-	if x != nil && x.Field12780 != nil {
-		return *x.Field12780
-	}
-	return 0
-}
-
-func (x *Message12774) GetField12781() uint32 {
-	if x != nil && x.Field12781 != nil {
-		return *x.Field12781
-	}
-	return 0
-}
-
-func (x *Message12774) GetField12782() bool {
-	if x != nil && x.Field12782 != nil {
-		return *x.Field12782
-	}
-	return false
-}
-
-type Message12796 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12800 []uint64 `protobuf:"fixed64,1,rep,name=field12800" json:"field12800,omitempty"`
-	Field12801 *uint64  `protobuf:"varint,2,opt,name=field12801" json:"field12801,omitempty"`
-}
-
-func (x *Message12796) Reset() {
-	*x = Message12796{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12796) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12796) ProtoMessage() {}
-
-func (x *Message12796) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12796.ProtoReflect.Descriptor instead.
-func (*Message12796) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Message12796) GetField12800() []uint64 {
-	if x != nil {
-		return x.Field12800
-	}
-	return nil
-}
-
-func (x *Message12796) GetField12801() uint64 {
-	if x != nil && x.Field12801 != nil {
-		return *x.Field12801
-	}
-	return 0
-}
-
-type Message12821 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12848 *int32 `protobuf:"varint,1,opt,name=field12848" json:"field12848,omitempty"`
-	Field12849 *int32 `protobuf:"varint,2,opt,name=field12849" json:"field12849,omitempty"`
-	Field12850 *int32 `protobuf:"varint,3,opt,name=field12850" json:"field12850,omitempty"`
-	Field12851 *int32 `protobuf:"varint,4,opt,name=field12851" json:"field12851,omitempty"`
-	Field12852 *int32 `protobuf:"varint,5,opt,name=field12852" json:"field12852,omitempty"`
-}
-
-func (x *Message12821) Reset() {
-	*x = Message12821{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12821) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12821) ProtoMessage() {}
-
-func (x *Message12821) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12821.ProtoReflect.Descriptor instead.
-func (*Message12821) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Message12821) GetField12848() int32 {
-	if x != nil && x.Field12848 != nil {
-		return *x.Field12848
-	}
-	return 0
-}
-
-func (x *Message12821) GetField12849() int32 {
-	if x != nil && x.Field12849 != nil {
-		return *x.Field12849
-	}
-	return 0
-}
-
-func (x *Message12821) GetField12850() int32 {
-	if x != nil && x.Field12850 != nil {
-		return *x.Field12850
-	}
-	return 0
-}
-
-func (x *Message12821) GetField12851() int32 {
-	if x != nil && x.Field12851 != nil {
-		return *x.Field12851
-	}
-	return 0
-}
-
-func (x *Message12821) GetField12852() int32 {
-	if x != nil && x.Field12852 != nil {
-		return *x.Field12852
-	}
-	return 0
-}
-
-type Message12820 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12840 *int32 `protobuf:"varint,1,opt,name=field12840" json:"field12840,omitempty"`
-	Field12841 *int32 `protobuf:"varint,2,opt,name=field12841" json:"field12841,omitempty"`
-	Field12842 *int32 `protobuf:"varint,3,opt,name=field12842" json:"field12842,omitempty"`
-	Field12843 *int32 `protobuf:"varint,8,opt,name=field12843" json:"field12843,omitempty"`
-	Field12844 *int32 `protobuf:"varint,4,opt,name=field12844" json:"field12844,omitempty"`
-	Field12845 *int32 `protobuf:"varint,5,opt,name=field12845" json:"field12845,omitempty"`
-	Field12846 *int32 `protobuf:"varint,6,opt,name=field12846" json:"field12846,omitempty"`
-	Field12847 *int32 `protobuf:"varint,7,opt,name=field12847" json:"field12847,omitempty"`
-}
-
-func (x *Message12820) Reset() {
-	*x = Message12820{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12820) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12820) ProtoMessage() {}
-
-func (x *Message12820) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12820.ProtoReflect.Descriptor instead.
-func (*Message12820) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Message12820) GetField12840() int32 {
-	if x != nil && x.Field12840 != nil {
-		return *x.Field12840
-	}
-	return 0
-}
-
-func (x *Message12820) GetField12841() int32 {
-	if x != nil && x.Field12841 != nil {
-		return *x.Field12841
-	}
-	return 0
-}
-
-func (x *Message12820) GetField12842() int32 {
-	if x != nil && x.Field12842 != nil {
-		return *x.Field12842
-	}
-	return 0
-}
-
-func (x *Message12820) GetField12843() int32 {
-	if x != nil && x.Field12843 != nil {
-		return *x.Field12843
-	}
-	return 0
-}
-
-func (x *Message12820) GetField12844() int32 {
-	if x != nil && x.Field12844 != nil {
-		return *x.Field12844
-	}
-	return 0
-}
-
-func (x *Message12820) GetField12845() int32 {
-	if x != nil && x.Field12845 != nil {
-		return *x.Field12845
-	}
-	return 0
-}
-
-func (x *Message12820) GetField12846() int32 {
-	if x != nil && x.Field12846 != nil {
-		return *x.Field12846
-	}
-	return 0
-}
-
-func (x *Message12820) GetField12847() int32 {
-	if x != nil && x.Field12847 != nil {
-		return *x.Field12847
-	}
-	return 0
-}
-
-type Message12819 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12834 *float64 `protobuf:"fixed64,1,opt,name=field12834" json:"field12834,omitempty"`
-	Field12835 *float64 `protobuf:"fixed64,2,opt,name=field12835" json:"field12835,omitempty"`
-	Field12836 *float64 `protobuf:"fixed64,3,opt,name=field12836" json:"field12836,omitempty"`
-	Field12837 *float64 `protobuf:"fixed64,4,opt,name=field12837" json:"field12837,omitempty"`
-	Field12838 *float64 `protobuf:"fixed64,5,opt,name=field12838" json:"field12838,omitempty"`
-	Field12839 *float64 `protobuf:"fixed64,6,opt,name=field12839" json:"field12839,omitempty"`
-}
-
-func (x *Message12819) Reset() {
-	*x = Message12819{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12819) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12819) ProtoMessage() {}
-
-func (x *Message12819) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12819.ProtoReflect.Descriptor instead.
-func (*Message12819) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Message12819) GetField12834() float64 {
-	if x != nil && x.Field12834 != nil {
-		return *x.Field12834
-	}
-	return 0
-}
-
-func (x *Message12819) GetField12835() float64 {
-	if x != nil && x.Field12835 != nil {
-		return *x.Field12835
-	}
-	return 0
-}
-
-func (x *Message12819) GetField12836() float64 {
-	if x != nil && x.Field12836 != nil {
-		return *x.Field12836
-	}
-	return 0
-}
-
-func (x *Message12819) GetField12837() float64 {
-	if x != nil && x.Field12837 != nil {
-		return *x.Field12837
-	}
-	return 0
-}
-
-func (x *Message12819) GetField12838() float64 {
-	if x != nil && x.Field12838 != nil {
-		return *x.Field12838
-	}
-	return 0
-}
-
-func (x *Message12819) GetField12839() float64 {
-	if x != nil && x.Field12839 != nil {
-		return *x.Field12839
-	}
-	return 0
-}
-
-type Message12818 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12829 *uint64         `protobuf:"varint,1,opt,name=field12829" json:"field12829,omitempty"`
-	Field12830 *int32          `protobuf:"varint,2,opt,name=field12830" json:"field12830,omitempty"`
-	Field12831 *int32          `protobuf:"varint,3,opt,name=field12831" json:"field12831,omitempty"`
-	Field12832 *int32          `protobuf:"varint,5,opt,name=field12832" json:"field12832,omitempty"`
-	Field12833 []*Message12817 `protobuf:"bytes,4,rep,name=field12833" json:"field12833,omitempty"`
-}
-
-func (x *Message12818) Reset() {
-	*x = Message12818{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12818) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12818) ProtoMessage() {}
-
-func (x *Message12818) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12818.ProtoReflect.Descriptor instead.
-func (*Message12818) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *Message12818) GetField12829() uint64 {
-	if x != nil && x.Field12829 != nil {
-		return *x.Field12829
-	}
-	return 0
-}
-
-func (x *Message12818) GetField12830() int32 {
-	if x != nil && x.Field12830 != nil {
-		return *x.Field12830
-	}
-	return 0
-}
-
-func (x *Message12818) GetField12831() int32 {
-	if x != nil && x.Field12831 != nil {
-		return *x.Field12831
-	}
-	return 0
-}
-
-func (x *Message12818) GetField12832() int32 {
-	if x != nil && x.Field12832 != nil {
-		return *x.Field12832
-	}
-	return 0
-}
-
-func (x *Message12818) GetField12833() []*Message12817 {
-	if x != nil {
-		return x.Field12833
-	}
-	return nil
-}
-
-type Message10319 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field10340 *Enum10325 `protobuf:"varint,1,opt,name=field10340,enum=benchmarks.google_message4.Enum10325" json:"field10340,omitempty"`
-	Field10341 *int32     `protobuf:"varint,4,opt,name=field10341" json:"field10341,omitempty"`
-	Field10342 *int32     `protobuf:"varint,5,opt,name=field10342" json:"field10342,omitempty"`
-	Field10343 []byte     `protobuf:"bytes,3,opt,name=field10343" json:"field10343,omitempty"`
-	Field10344 *string    `protobuf:"bytes,2,opt,name=field10344" json:"field10344,omitempty"`
-	Field10345 *string    `protobuf:"bytes,6,opt,name=field10345" json:"field10345,omitempty"`
-	Field10346 *string    `protobuf:"bytes,7,opt,name=field10346" json:"field10346,omitempty"`
-}
-
-func (x *Message10319) Reset() {
-	*x = Message10319{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message10319) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message10319) ProtoMessage() {}
-
-func (x *Message10319) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message10319.ProtoReflect.Descriptor instead.
-func (*Message10319) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *Message10319) GetField10340() Enum10325 {
-	if x != nil && x.Field10340 != nil {
-		return *x.Field10340
-	}
-	return Enum10325_ENUM_VALUE10326
-}
-
-func (x *Message10319) GetField10341() int32 {
-	if x != nil && x.Field10341 != nil {
-		return *x.Field10341
-	}
-	return 0
-}
-
-func (x *Message10319) GetField10342() int32 {
-	if x != nil && x.Field10342 != nil {
-		return *x.Field10342
-	}
-	return 0
-}
-
-func (x *Message10319) GetField10343() []byte {
-	if x != nil {
-		return x.Field10343
-	}
-	return nil
-}
-
-func (x *Message10319) GetField10344() string {
-	if x != nil && x.Field10344 != nil {
-		return *x.Field10344
-	}
-	return ""
-}
-
-func (x *Message10319) GetField10345() string {
-	if x != nil && x.Field10345 != nil {
-		return *x.Field10345
-	}
-	return ""
-}
-
-func (x *Message10319) GetField10346() string {
-	if x != nil && x.Field10346 != nil {
-		return *x.Field10346
-	}
-	return ""
-}
-
-type Message6578 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6632 *Enum6579 `protobuf:"varint,1,opt,name=field6632,enum=benchmarks.google_message4.Enum6579" json:"field6632,omitempty"`
-	Field6633 *Enum6588 `protobuf:"varint,2,opt,name=field6633,enum=benchmarks.google_message4.Enum6588" json:"field6633,omitempty"`
-}
-
-func (x *Message6578) Reset() {
-	*x = Message6578{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6578) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6578) ProtoMessage() {}
-
-func (x *Message6578) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6578.ProtoReflect.Descriptor instead.
-func (*Message6578) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *Message6578) GetField6632() Enum6579 {
-	if x != nil && x.Field6632 != nil {
-		return *x.Field6632
-	}
-	return Enum6579_ENUM_VALUE6580
-}
-
-func (x *Message6578) GetField6633() Enum6588 {
-	if x != nil && x.Field6633 != nil {
-		return *x.Field6633
-	}
-	return Enum6588_ENUM_VALUE6589
-}
-
-type Message6126 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6152 *string               `protobuf:"bytes,1,req,name=field6152" json:"field6152,omitempty"`
-	Field6153 []*Message6127        `protobuf:"bytes,9,rep,name=field6153" json:"field6153,omitempty"`
-	Field6154 *int32                `protobuf:"varint,14,opt,name=field6154" json:"field6154,omitempty"`
-	Field6155 []byte                `protobuf:"bytes,10,opt,name=field6155" json:"field6155,omitempty"`
-	Field6156 *Message6024          `protobuf:"bytes,12,opt,name=field6156" json:"field6156,omitempty"`
-	Field6157 *int32                `protobuf:"varint,4,opt,name=field6157" json:"field6157,omitempty"`
-	Field6158 *string               `protobuf:"bytes,5,opt,name=field6158" json:"field6158,omitempty"`
-	Field6159 *int32                `protobuf:"varint,6,opt,name=field6159" json:"field6159,omitempty"`
-	Field6160 []int32               `protobuf:"varint,2,rep,name=field6160" json:"field6160,omitempty"`
-	Field6161 []int32               `protobuf:"varint,3,rep,name=field6161" json:"field6161,omitempty"`
-	Field6162 []*Message6052        `protobuf:"bytes,7,rep,name=field6162" json:"field6162,omitempty"`
-	Field6163 []*UnusedEmptyMessage `protobuf:"bytes,11,rep,name=field6163" json:"field6163,omitempty"`
-	Field6164 *Enum6065             `protobuf:"varint,15,opt,name=field6164,enum=benchmarks.google_message4.Enum6065" json:"field6164,omitempty"`
-	Field6165 []*Message6127        `protobuf:"bytes,8,rep,name=field6165" json:"field6165,omitempty"`
-	Field6166 *bool                 `protobuf:"varint,13,opt,name=field6166" json:"field6166,omitempty"`
-	Field6167 *bool                 `protobuf:"varint,16,opt,name=field6167" json:"field6167,omitempty"`
-	Field6168 *bool                 `protobuf:"varint,18,opt,name=field6168" json:"field6168,omitempty"`
-	Field6169 []*Message6054        `protobuf:"bytes,17,rep,name=field6169" json:"field6169,omitempty"`
-	Field6170 *int32                `protobuf:"varint,19,opt,name=field6170" json:"field6170,omitempty"`
-}
-
-func (x *Message6126) Reset() {
-	*x = Message6126{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6126) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6126) ProtoMessage() {}
-
-func (x *Message6126) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[8]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6126.ProtoReflect.Descriptor instead.
-func (*Message6126) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *Message6126) GetField6152() string {
-	if x != nil && x.Field6152 != nil {
-		return *x.Field6152
-	}
-	return ""
-}
-
-func (x *Message6126) GetField6153() []*Message6127 {
-	if x != nil {
-		return x.Field6153
-	}
-	return nil
-}
-
-func (x *Message6126) GetField6154() int32 {
-	if x != nil && x.Field6154 != nil {
-		return *x.Field6154
-	}
-	return 0
-}
-
-func (x *Message6126) GetField6155() []byte {
-	if x != nil {
-		return x.Field6155
-	}
-	return nil
-}
-
-func (x *Message6126) GetField6156() *Message6024 {
-	if x != nil {
-		return x.Field6156
-	}
-	return nil
-}
-
-func (x *Message6126) GetField6157() int32 {
-	if x != nil && x.Field6157 != nil {
-		return *x.Field6157
-	}
-	return 0
-}
-
-func (x *Message6126) GetField6158() string {
-	if x != nil && x.Field6158 != nil {
-		return *x.Field6158
-	}
-	return ""
-}
-
-func (x *Message6126) GetField6159() int32 {
-	if x != nil && x.Field6159 != nil {
-		return *x.Field6159
-	}
-	return 0
-}
-
-func (x *Message6126) GetField6160() []int32 {
-	if x != nil {
-		return x.Field6160
-	}
-	return nil
-}
-
-func (x *Message6126) GetField6161() []int32 {
-	if x != nil {
-		return x.Field6161
-	}
-	return nil
-}
-
-func (x *Message6126) GetField6162() []*Message6052 {
-	if x != nil {
-		return x.Field6162
-	}
-	return nil
-}
-
-func (x *Message6126) GetField6163() []*UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6163
-	}
-	return nil
-}
-
-func (x *Message6126) GetField6164() Enum6065 {
-	if x != nil && x.Field6164 != nil {
-		return *x.Field6164
-	}
-	return Enum6065_ENUM_VALUE6066
-}
-
-func (x *Message6126) GetField6165() []*Message6127 {
-	if x != nil {
-		return x.Field6165
-	}
-	return nil
-}
-
-func (x *Message6126) GetField6166() bool {
-	if x != nil && x.Field6166 != nil {
-		return *x.Field6166
-	}
-	return false
-}
-
-func (x *Message6126) GetField6167() bool {
-	if x != nil && x.Field6167 != nil {
-		return *x.Field6167
-	}
-	return false
-}
-
-func (x *Message6126) GetField6168() bool {
-	if x != nil && x.Field6168 != nil {
-		return *x.Field6168
-	}
-	return false
-}
-
-func (x *Message6126) GetField6169() []*Message6054 {
-	if x != nil {
-		return x.Field6169
-	}
-	return nil
-}
-
-func (x *Message6126) GetField6170() int32 {
-	if x != nil && x.Field6170 != nil {
-		return *x.Field6170
-	}
-	return 0
-}
-
-type Message5881 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field5897 *float64            `protobuf:"fixed64,1,req,name=field5897" json:"field5897,omitempty"`
-	Field5898 *string             `protobuf:"bytes,5,opt,name=field5898" json:"field5898,omitempty"`
-	Field5899 *Message5861        `protobuf:"bytes,2,opt,name=field5899" json:"field5899,omitempty"`
-	Field5900 *UnusedEmptyMessage `protobuf:"bytes,3,opt,name=field5900" json:"field5900,omitempty"`
-	Field5901 *Message5867        `protobuf:"bytes,4,opt,name=field5901" json:"field5901,omitempty"`
-	Field5902 *Message5880        `protobuf:"bytes,6,opt,name=field5902" json:"field5902,omitempty"`
-}
-
-func (x *Message5881) Reset() {
-	*x = Message5881{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[9]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message5881) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message5881) ProtoMessage() {}
-
-func (x *Message5881) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[9]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message5881.ProtoReflect.Descriptor instead.
-func (*Message5881) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *Message5881) GetField5897() float64 {
-	if x != nil && x.Field5897 != nil {
-		return *x.Field5897
-	}
-	return 0
-}
-
-func (x *Message5881) GetField5898() string {
-	if x != nil && x.Field5898 != nil {
-		return *x.Field5898
-	}
-	return ""
-}
-
-func (x *Message5881) GetField5899() *Message5861 {
-	if x != nil {
-		return x.Field5899
-	}
-	return nil
-}
-
-func (x *Message5881) GetField5900() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field5900
-	}
-	return nil
-}
-
-func (x *Message5881) GetField5901() *Message5867 {
-	if x != nil {
-		return x.Field5901
-	}
-	return nil
-}
-
-func (x *Message5881) GetField5902() *Message5880 {
-	if x != nil {
-		return x.Field5902
-	}
-	return nil
-}
-
-type Message6110 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message6110) Reset() {
-	*x = Message6110{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[10]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6110) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6110) ProtoMessage() {}
-
-func (x *Message6110) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[10]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6110.ProtoReflect.Descriptor instead.
-func (*Message6110) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{10}
-}
-
-type Message6107 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6134 *Message4016   `protobuf:"bytes,1,opt,name=field6134" json:"field6134,omitempty"`
-	Field6135 *int32         `protobuf:"varint,2,opt,name=field6135" json:"field6135,omitempty"`
-	Field6136 *string        `protobuf:"bytes,3,opt,name=field6136" json:"field6136,omitempty"`
-	Field6137 []int32        `protobuf:"varint,4,rep,name=field6137" json:"field6137,omitempty"`
-	Field6138 *int32         `protobuf:"varint,5,opt,name=field6138" json:"field6138,omitempty"`
-	Field6139 []*Message6108 `protobuf:"bytes,6,rep,name=field6139" json:"field6139,omitempty"`
-}
-
-func (x *Message6107) Reset() {
-	*x = Message6107{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[11]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6107) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6107) ProtoMessage() {}
-
-func (x *Message6107) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[11]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6107.ProtoReflect.Descriptor instead.
-func (*Message6107) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *Message6107) GetField6134() *Message4016 {
-	if x != nil {
-		return x.Field6134
-	}
-	return nil
-}
-
-func (x *Message6107) GetField6135() int32 {
-	if x != nil && x.Field6135 != nil {
-		return *x.Field6135
-	}
-	return 0
-}
-
-func (x *Message6107) GetField6136() string {
-	if x != nil && x.Field6136 != nil {
-		return *x.Field6136
-	}
-	return ""
-}
-
-func (x *Message6107) GetField6137() []int32 {
-	if x != nil {
-		return x.Field6137
-	}
-	return nil
-}
-
-func (x *Message6107) GetField6138() int32 {
-	if x != nil && x.Field6138 != nil {
-		return *x.Field6138
-	}
-	return 0
-}
-
-func (x *Message6107) GetField6139() []*Message6108 {
-	if x != nil {
-		return x.Field6139
-	}
-	return nil
-}
-
-type Message6129 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6171 *Enum6130 `protobuf:"varint,1,req,name=field6171,enum=benchmarks.google_message4.Enum6130" json:"field6171,omitempty"`
-	Field6172 *string   `protobuf:"bytes,2,req,name=field6172" json:"field6172,omitempty"`
-}
-
-func (x *Message6129) Reset() {
-	*x = Message6129{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[12]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6129) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6129) ProtoMessage() {}
-
-func (x *Message6129) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[12]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6129.ProtoReflect.Descriptor instead.
-func (*Message6129) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *Message6129) GetField6171() Enum6130 {
-	if x != nil && x.Field6171 != nil {
-		return *x.Field6171
-	}
-	return Enum6130_ENUM_VALUE6131
-}
-
-func (x *Message6129) GetField6172() string {
-	if x != nil && x.Field6172 != nil {
-		return *x.Field6172
-	}
-	return ""
-}
-
-type Message5908 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field5971 *string      `protobuf:"bytes,1,opt,name=field5971" json:"field5971,omitempty"`
-	Field5972 *int32       `protobuf:"varint,2,opt,name=field5972" json:"field5972,omitempty"`
-	Field5973 *int32       `protobuf:"varint,3,opt,name=field5973" json:"field5973,omitempty"`
-	Field5974 *Enum5909    `protobuf:"varint,45,opt,name=field5974,enum=benchmarks.google_message4.Enum5909" json:"field5974,omitempty"`
-	Field5975 *Enum5912    `protobuf:"varint,4,opt,name=field5975,enum=benchmarks.google_message4.Enum5912" json:"field5975,omitempty"`
-	Field5976 *uint32      `protobuf:"fixed32,50,opt,name=field5976" json:"field5976,omitempty"`
-	Field5977 *uint32      `protobuf:"fixed32,5,opt,name=field5977" json:"field5977,omitempty"`
-	Field5978 *uint32      `protobuf:"fixed32,6,opt,name=field5978" json:"field5978,omitempty"`
-	Field5979 *string      `protobuf:"bytes,7,opt,name=field5979" json:"field5979,omitempty"`
-	Field5980 *Enum5915    `protobuf:"varint,8,opt,name=field5980,enum=benchmarks.google_message4.Enum5915" json:"field5980,omitempty"`
-	Field5981 *Message5903 `protobuf:"bytes,9,opt,name=field5981" json:"field5981,omitempty"`
-	Field5982 *Message5903 `protobuf:"bytes,10,opt,name=field5982" json:"field5982,omitempty"`
-	Field5983 *Enum5920    `protobuf:"varint,11,opt,name=field5983,enum=benchmarks.google_message4.Enum5920" json:"field5983,omitempty"`
-	Field5984 *Enum5923    `protobuf:"varint,40,opt,name=field5984,enum=benchmarks.google_message4.Enum5923" json:"field5984,omitempty"`
-	Field5985 *Message5903 `protobuf:"bytes,41,opt,name=field5985" json:"field5985,omitempty"`
-	Field5986 *Message5903 `protobuf:"bytes,42,opt,name=field5986" json:"field5986,omitempty"`
-	Field5987 *Enum5928    `protobuf:"varint,47,opt,name=field5987,enum=benchmarks.google_message4.Enum5928" json:"field5987,omitempty"`
-	Field5988 *bool        `protobuf:"varint,48,opt,name=field5988" json:"field5988,omitempty"`
-	Field5989 []uint32     `protobuf:"fixed32,49,rep,name=field5989" json:"field5989,omitempty"`
-	Field5990 *string      `protobuf:"bytes,12,opt,name=field5990" json:"field5990,omitempty"`
-	Field5991 *Message5903 `protobuf:"bytes,13,opt,name=field5991" json:"field5991,omitempty"`
-	Field5992 *Message5903 `protobuf:"bytes,14,opt,name=field5992" json:"field5992,omitempty"`
-	Field5993 *Message5903 `protobuf:"bytes,15,opt,name=field5993" json:"field5993,omitempty"`
-	Field5994 *Message5903 `protobuf:"bytes,16,opt,name=field5994" json:"field5994,omitempty"`
-	Field5995 *Message5903 `protobuf:"bytes,32,opt,name=field5995" json:"field5995,omitempty"`
-	Field5996 *Message5903 `protobuf:"bytes,33,opt,name=field5996" json:"field5996,omitempty"`
-	Field5997 *Message5903 `protobuf:"bytes,34,opt,name=field5997" json:"field5997,omitempty"`
-	Field5998 *Message5903 `protobuf:"bytes,35,opt,name=field5998" json:"field5998,omitempty"`
-	Field5999 *Enum5931    `protobuf:"varint,17,opt,name=field5999,enum=benchmarks.google_message4.Enum5931" json:"field5999,omitempty"`
-	Field6000 *Enum5935    `protobuf:"varint,18,opt,name=field6000,enum=benchmarks.google_message4.Enum5935" json:"field6000,omitempty"`
-	Field6001 *Enum5939    `protobuf:"varint,36,opt,name=field6001,enum=benchmarks.google_message4.Enum5939" json:"field6001,omitempty"`
-	Field6002 *Enum5939    `protobuf:"varint,37,opt,name=field6002,enum=benchmarks.google_message4.Enum5939" json:"field6002,omitempty"`
-	Field6003 []int32      `protobuf:"varint,19,rep,name=field6003" json:"field6003,omitempty"`
-	Field6004 *uint32      `protobuf:"varint,20,opt,name=field6004" json:"field6004,omitempty"`
-	Field6005 *uint32      `protobuf:"varint,21,opt,name=field6005" json:"field6005,omitempty"`
-	Field6006 *uint32      `protobuf:"varint,22,opt,name=field6006" json:"field6006,omitempty"`
-	Field6007 *uint32      `protobuf:"varint,23,opt,name=field6007" json:"field6007,omitempty"`
-	Field6008 *Enum5946    `protobuf:"varint,24,opt,name=field6008,enum=benchmarks.google_message4.Enum5946" json:"field6008,omitempty"`
-	Field6009 *Enum5946    `protobuf:"varint,25,opt,name=field6009,enum=benchmarks.google_message4.Enum5946" json:"field6009,omitempty"`
-	Field6010 *Enum5946    `protobuf:"varint,26,opt,name=field6010,enum=benchmarks.google_message4.Enum5946" json:"field6010,omitempty"`
-	Field6011 *Enum5946    `protobuf:"varint,27,opt,name=field6011,enum=benchmarks.google_message4.Enum5946" json:"field6011,omitempty"`
-	Field6012 *uint32      `protobuf:"fixed32,28,opt,name=field6012" json:"field6012,omitempty"`
-	Field6013 *uint32      `protobuf:"fixed32,29,opt,name=field6013" json:"field6013,omitempty"`
-	Field6014 *uint32      `protobuf:"fixed32,30,opt,name=field6014" json:"field6014,omitempty"`
-	Field6015 *uint32      `protobuf:"fixed32,31,opt,name=field6015" json:"field6015,omitempty"`
-	Field6016 *int32       `protobuf:"varint,38,opt,name=field6016" json:"field6016,omitempty"`
-	Field6017 *float32     `protobuf:"fixed32,39,opt,name=field6017" json:"field6017,omitempty"`
-	Field6018 *Enum5957    `protobuf:"varint,43,opt,name=field6018,enum=benchmarks.google_message4.Enum5957" json:"field6018,omitempty"`
-	Field6019 *Message5907 `protobuf:"bytes,44,opt,name=field6019" json:"field6019,omitempty"`
-	Field6020 *Enum5962    `protobuf:"varint,46,opt,name=field6020,enum=benchmarks.google_message4.Enum5962" json:"field6020,omitempty"`
-}
-
-func (x *Message5908) Reset() {
-	*x = Message5908{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[13]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message5908) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message5908) ProtoMessage() {}
-
-func (x *Message5908) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[13]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message5908.ProtoReflect.Descriptor instead.
-func (*Message5908) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *Message5908) GetField5971() string {
-	if x != nil && x.Field5971 != nil {
-		return *x.Field5971
-	}
-	return ""
-}
-
-func (x *Message5908) GetField5972() int32 {
-	if x != nil && x.Field5972 != nil {
-		return *x.Field5972
-	}
-	return 0
-}
-
-func (x *Message5908) GetField5973() int32 {
-	if x != nil && x.Field5973 != nil {
-		return *x.Field5973
-	}
-	return 0
-}
-
-func (x *Message5908) GetField5974() Enum5909 {
-	if x != nil && x.Field5974 != nil {
-		return *x.Field5974
-	}
-	return Enum5909_ENUM_VALUE5910
-}
-
-func (x *Message5908) GetField5975() Enum5912 {
-	if x != nil && x.Field5975 != nil {
-		return *x.Field5975
-	}
-	return Enum5912_ENUM_VALUE5913
-}
-
-func (x *Message5908) GetField5976() uint32 {
-	if x != nil && x.Field5976 != nil {
-		return *x.Field5976
-	}
-	return 0
-}
-
-func (x *Message5908) GetField5977() uint32 {
-	if x != nil && x.Field5977 != nil {
-		return *x.Field5977
-	}
-	return 0
-}
-
-func (x *Message5908) GetField5978() uint32 {
-	if x != nil && x.Field5978 != nil {
-		return *x.Field5978
-	}
-	return 0
-}
-
-func (x *Message5908) GetField5979() string {
-	if x != nil && x.Field5979 != nil {
-		return *x.Field5979
-	}
-	return ""
-}
-
-func (x *Message5908) GetField5980() Enum5915 {
-	if x != nil && x.Field5980 != nil {
-		return *x.Field5980
-	}
-	return Enum5915_ENUM_VALUE5916
-}
-
-func (x *Message5908) GetField5981() *Message5903 {
-	if x != nil {
-		return x.Field5981
-	}
-	return nil
-}
-
-func (x *Message5908) GetField5982() *Message5903 {
-	if x != nil {
-		return x.Field5982
-	}
-	return nil
-}
-
-func (x *Message5908) GetField5983() Enum5920 {
-	if x != nil && x.Field5983 != nil {
-		return *x.Field5983
-	}
-	return Enum5920_ENUM_VALUE5921
-}
-
-func (x *Message5908) GetField5984() Enum5923 {
-	if x != nil && x.Field5984 != nil {
-		return *x.Field5984
-	}
-	return Enum5923_ENUM_VALUE5924
-}
-
-func (x *Message5908) GetField5985() *Message5903 {
-	if x != nil {
-		return x.Field5985
-	}
-	return nil
-}
-
-func (x *Message5908) GetField5986() *Message5903 {
-	if x != nil {
-		return x.Field5986
-	}
-	return nil
-}
-
-func (x *Message5908) GetField5987() Enum5928 {
-	if x != nil && x.Field5987 != nil {
-		return *x.Field5987
-	}
-	return Enum5928_ENUM_VALUE5929
-}
-
-func (x *Message5908) GetField5988() bool {
-	if x != nil && x.Field5988 != nil {
-		return *x.Field5988
-	}
-	return false
-}
-
-func (x *Message5908) GetField5989() []uint32 {
-	if x != nil {
-		return x.Field5989
-	}
-	return nil
-}
-
-func (x *Message5908) GetField5990() string {
-	if x != nil && x.Field5990 != nil {
-		return *x.Field5990
-	}
-	return ""
-}
-
-func (x *Message5908) GetField5991() *Message5903 {
-	if x != nil {
-		return x.Field5991
-	}
-	return nil
-}
-
-func (x *Message5908) GetField5992() *Message5903 {
-	if x != nil {
-		return x.Field5992
-	}
-	return nil
-}
-
-func (x *Message5908) GetField5993() *Message5903 {
-	if x != nil {
-		return x.Field5993
-	}
-	return nil
-}
-
-func (x *Message5908) GetField5994() *Message5903 {
-	if x != nil {
-		return x.Field5994
-	}
-	return nil
-}
-
-func (x *Message5908) GetField5995() *Message5903 {
-	if x != nil {
-		return x.Field5995
-	}
-	return nil
-}
-
-func (x *Message5908) GetField5996() *Message5903 {
-	if x != nil {
-		return x.Field5996
-	}
-	return nil
-}
-
-func (x *Message5908) GetField5997() *Message5903 {
-	if x != nil {
-		return x.Field5997
-	}
-	return nil
-}
-
-func (x *Message5908) GetField5998() *Message5903 {
-	if x != nil {
-		return x.Field5998
-	}
-	return nil
-}
-
-func (x *Message5908) GetField5999() Enum5931 {
-	if x != nil && x.Field5999 != nil {
-		return *x.Field5999
-	}
-	return Enum5931_ENUM_VALUE5932
-}
-
-func (x *Message5908) GetField6000() Enum5935 {
-	if x != nil && x.Field6000 != nil {
-		return *x.Field6000
-	}
-	return Enum5935_ENUM_VALUE5936
-}
-
-func (x *Message5908) GetField6001() Enum5939 {
-	if x != nil && x.Field6001 != nil {
-		return *x.Field6001
-	}
-	return Enum5939_ENUM_VALUE5940
-}
-
-func (x *Message5908) GetField6002() Enum5939 {
-	if x != nil && x.Field6002 != nil {
-		return *x.Field6002
-	}
-	return Enum5939_ENUM_VALUE5940
-}
-
-func (x *Message5908) GetField6003() []int32 {
-	if x != nil {
-		return x.Field6003
-	}
-	return nil
-}
-
-func (x *Message5908) GetField6004() uint32 {
-	if x != nil && x.Field6004 != nil {
-		return *x.Field6004
-	}
-	return 0
-}
-
-func (x *Message5908) GetField6005() uint32 {
-	if x != nil && x.Field6005 != nil {
-		return *x.Field6005
-	}
-	return 0
-}
-
-func (x *Message5908) GetField6006() uint32 {
-	if x != nil && x.Field6006 != nil {
-		return *x.Field6006
-	}
-	return 0
-}
-
-func (x *Message5908) GetField6007() uint32 {
-	if x != nil && x.Field6007 != nil {
-		return *x.Field6007
-	}
-	return 0
-}
-
-func (x *Message5908) GetField6008() Enum5946 {
-	if x != nil && x.Field6008 != nil {
-		return *x.Field6008
-	}
-	return Enum5946_ENUM_VALUE5947
-}
-
-func (x *Message5908) GetField6009() Enum5946 {
-	if x != nil && x.Field6009 != nil {
-		return *x.Field6009
-	}
-	return Enum5946_ENUM_VALUE5947
-}
-
-func (x *Message5908) GetField6010() Enum5946 {
-	if x != nil && x.Field6010 != nil {
-		return *x.Field6010
-	}
-	return Enum5946_ENUM_VALUE5947
-}
-
-func (x *Message5908) GetField6011() Enum5946 {
-	if x != nil && x.Field6011 != nil {
-		return *x.Field6011
-	}
-	return Enum5946_ENUM_VALUE5947
-}
-
-func (x *Message5908) GetField6012() uint32 {
-	if x != nil && x.Field6012 != nil {
-		return *x.Field6012
-	}
-	return 0
-}
-
-func (x *Message5908) GetField6013() uint32 {
-	if x != nil && x.Field6013 != nil {
-		return *x.Field6013
-	}
-	return 0
-}
-
-func (x *Message5908) GetField6014() uint32 {
-	if x != nil && x.Field6014 != nil {
-		return *x.Field6014
-	}
-	return 0
-}
-
-func (x *Message5908) GetField6015() uint32 {
-	if x != nil && x.Field6015 != nil {
-		return *x.Field6015
-	}
-	return 0
-}
-
-func (x *Message5908) GetField6016() int32 {
-	if x != nil && x.Field6016 != nil {
-		return *x.Field6016
-	}
-	return 0
-}
-
-func (x *Message5908) GetField6017() float32 {
-	if x != nil && x.Field6017 != nil {
-		return *x.Field6017
-	}
-	return 0
-}
-
-func (x *Message5908) GetField6018() Enum5957 {
-	if x != nil && x.Field6018 != nil {
-		return *x.Field6018
-	}
-	return Enum5957_ENUM_VALUE5958
-}
-
-func (x *Message5908) GetField6019() *Message5907 {
-	if x != nil {
-		return x.Field6019
-	}
-	return nil
-}
-
-func (x *Message5908) GetField6020() Enum5962 {
-	if x != nil && x.Field6020 != nil {
-		return *x.Field6020
-	}
-	return Enum5962_ENUM_VALUE5963
-}
-
-type Message3850 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field3924 *Enum3851 `protobuf:"varint,2,opt,name=field3924,enum=benchmarks.google_message4.Enum3851" json:"field3924,omitempty"`
-	Field3925 *bool     `protobuf:"varint,12,opt,name=field3925" json:"field3925,omitempty"`
-	Field3926 *int32    `protobuf:"varint,4,opt,name=field3926" json:"field3926,omitempty"`
-	Field3927 *bool     `protobuf:"varint,10,opt,name=field3927" json:"field3927,omitempty"`
-	Field3928 *bool     `protobuf:"varint,13,opt,name=field3928" json:"field3928,omitempty"`
-	Field3929 *bool     `protobuf:"varint,14,opt,name=field3929" json:"field3929,omitempty"`
-}
-
-func (x *Message3850) Reset() {
-	*x = Message3850{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[14]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3850) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3850) ProtoMessage() {}
-
-func (x *Message3850) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[14]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3850.ProtoReflect.Descriptor instead.
-func (*Message3850) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *Message3850) GetField3924() Enum3851 {
-	if x != nil && x.Field3924 != nil {
-		return *x.Field3924
-	}
-	return Enum3851_ENUM_VALUE3852
-}
-
-func (x *Message3850) GetField3925() bool {
-	if x != nil && x.Field3925 != nil {
-		return *x.Field3925
-	}
-	return false
-}
-
-func (x *Message3850) GetField3926() int32 {
-	if x != nil && x.Field3926 != nil {
-		return *x.Field3926
-	}
-	return 0
-}
-
-func (x *Message3850) GetField3927() bool {
-	if x != nil && x.Field3927 != nil {
-		return *x.Field3927
-	}
-	return false
-}
-
-func (x *Message3850) GetField3928() bool {
-	if x != nil && x.Field3928 != nil {
-		return *x.Field3928
-	}
-	return false
-}
-
-func (x *Message3850) GetField3929() bool {
-	if x != nil && x.Field3929 != nil {
-		return *x.Field3929
-	}
-	return false
-}
-
-type Message7865 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message7865) Reset() {
-	*x = Message7865{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[15]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7865) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7865) ProtoMessage() {}
-
-func (x *Message7865) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[15]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7865.ProtoReflect.Descriptor instead.
-func (*Message7865) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{15}
-}
-
-type Message7511 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7523 *bool     `protobuf:"varint,1,opt,name=field7523" json:"field7523,omitempty"`
-	Field7524 *Enum7512 `protobuf:"varint,2,opt,name=field7524,enum=benchmarks.google_message4.Enum7512" json:"field7524,omitempty"`
-	Field7525 *int32    `protobuf:"varint,3,opt,name=field7525" json:"field7525,omitempty"`
-	Field7526 *int32    `protobuf:"varint,4,opt,name=field7526" json:"field7526,omitempty"`
-	Field7527 *bool     `protobuf:"varint,5,opt,name=field7527" json:"field7527,omitempty"`
-	Field7528 *int32    `protobuf:"varint,6,opt,name=field7528" json:"field7528,omitempty"`
-	Field7529 *int32    `protobuf:"varint,7,opt,name=field7529" json:"field7529,omitempty"`
-}
-
-func (x *Message7511) Reset() {
-	*x = Message7511{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[16]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7511) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7511) ProtoMessage() {}
-
-func (x *Message7511) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[16]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7511.ProtoReflect.Descriptor instead.
-func (*Message7511) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *Message7511) GetField7523() bool {
-	if x != nil && x.Field7523 != nil {
-		return *x.Field7523
-	}
-	return false
-}
-
-func (x *Message7511) GetField7524() Enum7512 {
-	if x != nil && x.Field7524 != nil {
-		return *x.Field7524
-	}
-	return Enum7512_ENUM_VALUE7513
-}
-
-func (x *Message7511) GetField7525() int32 {
-	if x != nil && x.Field7525 != nil {
-		return *x.Field7525
-	}
-	return 0
-}
-
-func (x *Message7511) GetField7526() int32 {
-	if x != nil && x.Field7526 != nil {
-		return *x.Field7526
-	}
-	return 0
-}
-
-func (x *Message7511) GetField7527() bool {
-	if x != nil && x.Field7527 != nil {
-		return *x.Field7527
-	}
-	return false
-}
-
-func (x *Message7511) GetField7528() int32 {
-	if x != nil && x.Field7528 != nil {
-		return *x.Field7528
-	}
-	return 0
-}
-
-func (x *Message7511) GetField7529() int32 {
-	if x != nil && x.Field7529 != nil {
-		return *x.Field7529
-	}
-	return 0
-}
-
-type Message3920 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message3920) Reset() {
-	*x = Message3920{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[17]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3920) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3920) ProtoMessage() {}
-
-func (x *Message3920) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[17]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3920.ProtoReflect.Descriptor instead.
-func (*Message3920) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{17}
-}
-
-type Message7928 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7940 *string `protobuf:"bytes,1,opt,name=field7940" json:"field7940,omitempty"`
-	Field7941 *int64  `protobuf:"varint,2,opt,name=field7941" json:"field7941,omitempty"`
-}
-
-func (x *Message7928) Reset() {
-	*x = Message7928{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[18]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7928) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7928) ProtoMessage() {}
-
-func (x *Message7928) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[18]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7928.ProtoReflect.Descriptor instead.
-func (*Message7928) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{18}
-}
-
-func (x *Message7928) GetField7940() string {
-	if x != nil && x.Field7940 != nil {
-		return *x.Field7940
-	}
-	return ""
-}
-
-func (x *Message7928) GetField7941() int64 {
-	if x != nil && x.Field7941 != nil {
-		return *x.Field7941
-	}
-	return 0
-}
-
-type Message7921 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7936 *int32    `protobuf:"varint,1,opt,name=field7936" json:"field7936,omitempty"`
-	Field7937 *int64    `protobuf:"varint,2,opt,name=field7937" json:"field7937,omitempty"`
-	Field7938 *float32  `protobuf:"fixed32,3,opt,name=field7938" json:"field7938,omitempty"`
-	Field7939 *Enum7922 `protobuf:"varint,4,opt,name=field7939,enum=benchmarks.google_message4.Enum7922" json:"field7939,omitempty"`
-}
-
-func (x *Message7921) Reset() {
-	*x = Message7921{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[19]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7921) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7921) ProtoMessage() {}
-
-func (x *Message7921) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[19]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7921.ProtoReflect.Descriptor instead.
-func (*Message7921) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{19}
-}
-
-func (x *Message7921) GetField7936() int32 {
-	if x != nil && x.Field7936 != nil {
-		return *x.Field7936
-	}
-	return 0
-}
-
-func (x *Message7921) GetField7937() int64 {
-	if x != nil && x.Field7937 != nil {
-		return *x.Field7937
-	}
-	return 0
-}
-
-func (x *Message7921) GetField7938() float32 {
-	if x != nil && x.Field7938 != nil {
-		return *x.Field7938
-	}
-	return 0
-}
-
-func (x *Message7921) GetField7939() Enum7922 {
-	if x != nil && x.Field7939 != nil {
-		return *x.Field7939
-	}
-	return Enum7922_ENUM_VALUE7923
-}
-
-type Message7920 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7934 *int64 `protobuf:"varint,1,opt,name=field7934" json:"field7934,omitempty"`
-	Field7935 *int64 `protobuf:"varint,2,opt,name=field7935" json:"field7935,omitempty"`
-}
-
-func (x *Message7920) Reset() {
-	*x = Message7920{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[20]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7920) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7920) ProtoMessage() {}
-
-func (x *Message7920) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[20]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7920.ProtoReflect.Descriptor instead.
-func (*Message7920) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{20}
-}
-
-func (x *Message7920) GetField7934() int64 {
-	if x != nil && x.Field7934 != nil {
-		return *x.Field7934
-	}
-	return 0
-}
-
-func (x *Message7920) GetField7935() int64 {
-	if x != nil && x.Field7935 != nil {
-		return *x.Field7935
-	}
-	return 0
-}
-
-type Message7919 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field7931 *uint64 `protobuf:"fixed64,1,opt,name=field7931" json:"field7931,omitempty"`
-	Field7932 *int64  `protobuf:"varint,2,opt,name=field7932" json:"field7932,omitempty"`
-	Field7933 []byte  `protobuf:"bytes,3,opt,name=field7933" json:"field7933,omitempty"`
-}
-
-func (x *Message7919) Reset() {
-	*x = Message7919{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[21]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message7919) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message7919) ProtoMessage() {}
-
-func (x *Message7919) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[21]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message7919.ProtoReflect.Descriptor instead.
-func (*Message7919) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{21}
-}
-
-func (x *Message7919) GetField7931() uint64 {
-	if x != nil && x.Field7931 != nil {
-		return *x.Field7931
-	}
-	return 0
-}
-
-func (x *Message7919) GetField7932() int64 {
-	if x != nil && x.Field7932 != nil {
-		return *x.Field7932
-	}
-	return 0
-}
-
-func (x *Message7919) GetField7933() []byte {
-	if x != nil {
-		return x.Field7933
-	}
-	return nil
-}
-
-type Message12817 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field12826 *int32 `protobuf:"varint,1,opt,name=field12826" json:"field12826,omitempty"`
-	Field12827 *int32 `protobuf:"varint,2,opt,name=field12827" json:"field12827,omitempty"`
-	Field12828 *int32 `protobuf:"varint,3,opt,name=field12828" json:"field12828,omitempty"`
-}
-
-func (x *Message12817) Reset() {
-	*x = Message12817{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[22]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message12817) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message12817) ProtoMessage() {}
-
-func (x *Message12817) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[22]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message12817.ProtoReflect.Descriptor instead.
-func (*Message12817) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{22}
-}
-
-func (x *Message12817) GetField12826() int32 {
-	if x != nil && x.Field12826 != nil {
-		return *x.Field12826
-	}
-	return 0
-}
-
-func (x *Message12817) GetField12827() int32 {
-	if x != nil && x.Field12827 != nil {
-		return *x.Field12827
-	}
-	return 0
-}
-
-func (x *Message12817) GetField12828() int32 {
-	if x != nil && x.Field12828 != nil {
-		return *x.Field12828
-	}
-	return 0
-}
-
-type Message6054 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6089 *string `protobuf:"bytes,1,req,name=field6089" json:"field6089,omitempty"`
-	Field6090 *string `protobuf:"bytes,2,opt,name=field6090" json:"field6090,omitempty"`
-}
-
-func (x *Message6054) Reset() {
-	*x = Message6054{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[23]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6054) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6054) ProtoMessage() {}
-
-func (x *Message6054) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[23]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6054.ProtoReflect.Descriptor instead.
-func (*Message6054) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{23}
-}
-
-func (x *Message6054) GetField6089() string {
-	if x != nil && x.Field6089 != nil {
-		return *x.Field6089
-	}
-	return ""
-}
-
-func (x *Message6054) GetField6090() string {
-	if x != nil && x.Field6090 != nil {
-		return *x.Field6090
-	}
-	return ""
-}
-
-type Message6127 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message6127) Reset() {
-	*x = Message6127{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[24]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6127) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6127) ProtoMessage() {}
-
-func (x *Message6127) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[24]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6127.ProtoReflect.Descriptor instead.
-func (*Message6127) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{24}
-}
-
-type Message6052 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6084 *string `protobuf:"bytes,1,req,name=field6084" json:"field6084,omitempty"`
-	Field6085 []byte  `protobuf:"bytes,2,req,name=field6085" json:"field6085,omitempty"`
-}
-
-func (x *Message6052) Reset() {
-	*x = Message6052{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[25]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6052) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6052) ProtoMessage() {}
-
-func (x *Message6052) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[25]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6052.ProtoReflect.Descriptor instead.
-func (*Message6052) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{25}
-}
-
-func (x *Message6052) GetField6084() string {
-	if x != nil && x.Field6084 != nil {
-		return *x.Field6084
-	}
-	return ""
-}
-
-func (x *Message6052) GetField6085() []byte {
-	if x != nil {
-		return x.Field6085
-	}
-	return nil
-}
-
-type Message6024 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field6048 *Enum6025           `protobuf:"varint,1,opt,name=field6048,enum=benchmarks.google_message4.Enum6025" json:"field6048,omitempty"`
-	Field6049 *string             `protobuf:"bytes,2,opt,name=field6049" json:"field6049,omitempty"`
-	Field6050 *UnusedEmptyMessage `protobuf:"bytes,3,opt,name=field6050" json:"field6050,omitempty"`
-}
-
-func (x *Message6024) Reset() {
-	*x = Message6024{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[26]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6024) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6024) ProtoMessage() {}
-
-func (x *Message6024) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[26]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6024.ProtoReflect.Descriptor instead.
-func (*Message6024) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{26}
-}
-
-func (x *Message6024) GetField6048() Enum6025 {
-	if x != nil && x.Field6048 != nil {
-		return *x.Field6048
-	}
-	return Enum6025_ENUM_VALUE6026
-}
-
-func (x *Message6024) GetField6049() string {
-	if x != nil && x.Field6049 != nil {
-		return *x.Field6049
-	}
-	return ""
-}
-
-func (x *Message6024) GetField6050() *UnusedEmptyMessage {
-	if x != nil {
-		return x.Field6050
-	}
-	return nil
-}
-
-type Message5861 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field5882 *Enum5862 `protobuf:"varint,1,req,name=field5882,enum=benchmarks.google_message4.Enum5862" json:"field5882,omitempty"`
-	Field5883 *string   `protobuf:"bytes,2,req,name=field5883" json:"field5883,omitempty"`
-	Field5884 *bool     `protobuf:"varint,3,opt,name=field5884" json:"field5884,omitempty"`
-	Field5885 *string   `protobuf:"bytes,4,opt,name=field5885" json:"field5885,omitempty"`
-}
-
-func (x *Message5861) Reset() {
-	*x = Message5861{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[27]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message5861) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message5861) ProtoMessage() {}
-
-func (x *Message5861) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[27]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message5861.ProtoReflect.Descriptor instead.
-func (*Message5861) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{27}
-}
-
-func (x *Message5861) GetField5882() Enum5862 {
-	if x != nil && x.Field5882 != nil {
-		return *x.Field5882
-	}
-	return Enum5862_ENUM_VALUE5863
-}
-
-func (x *Message5861) GetField5883() string {
-	if x != nil && x.Field5883 != nil {
-		return *x.Field5883
-	}
-	return ""
-}
-
-func (x *Message5861) GetField5884() bool {
-	if x != nil && x.Field5884 != nil {
-		return *x.Field5884
-	}
-	return false
-}
-
-func (x *Message5861) GetField5885() string {
-	if x != nil && x.Field5885 != nil {
-		return *x.Field5885
-	}
-	return ""
-}
-
-type Message5880 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field5896 *string `protobuf:"bytes,1,opt,name=field5896" json:"field5896,omitempty"`
-}
-
-func (x *Message5880) Reset() {
-	*x = Message5880{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[28]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message5880) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message5880) ProtoMessage() {}
-
-func (x *Message5880) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[28]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message5880.ProtoReflect.Descriptor instead.
-func (*Message5880) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{28}
-}
-
-func (x *Message5880) GetField5896() string {
-	if x != nil && x.Field5896 != nil {
-		return *x.Field5896
-	}
-	return ""
-}
-
-type Message5867 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field5890 *Enum5868   `protobuf:"varint,1,opt,name=field5890,enum=benchmarks.google_message4.Enum5868" json:"field5890,omitempty"`
-	Field5891 *string     `protobuf:"bytes,2,opt,name=field5891" json:"field5891,omitempty"`
-	Field5892 *Enum5873   `protobuf:"varint,3,opt,name=field5892,enum=benchmarks.google_message4.Enum5873" json:"field5892,omitempty"`
-	Field5893 *int32      `protobuf:"varint,4,opt,name=field5893" json:"field5893,omitempty"`
-	Field5894 *UnusedEnum `protobuf:"varint,5,opt,name=field5894,enum=benchmarks.google_message4.UnusedEnum" json:"field5894,omitempty"`
-	Field5895 *bool       `protobuf:"varint,6,opt,name=field5895" json:"field5895,omitempty"`
-}
-
-func (x *Message5867) Reset() {
-	*x = Message5867{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[29]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message5867) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message5867) ProtoMessage() {}
-
-func (x *Message5867) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[29]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message5867.ProtoReflect.Descriptor instead.
-func (*Message5867) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{29}
-}
-
-func (x *Message5867) GetField5890() Enum5868 {
-	if x != nil && x.Field5890 != nil {
-		return *x.Field5890
-	}
-	return Enum5868_ENUM_VALUE5869
-}
-
-func (x *Message5867) GetField5891() string {
-	if x != nil && x.Field5891 != nil {
-		return *x.Field5891
-	}
-	return ""
-}
-
-func (x *Message5867) GetField5892() Enum5873 {
-	if x != nil && x.Field5892 != nil {
-		return *x.Field5892
-	}
-	return Enum5873_ENUM_VALUE5874
-}
-
-func (x *Message5867) GetField5893() int32 {
-	if x != nil && x.Field5893 != nil {
-		return *x.Field5893
-	}
-	return 0
-}
-
-func (x *Message5867) GetField5894() UnusedEnum {
-	if x != nil && x.Field5894 != nil {
-		return *x.Field5894
-	}
-	return UnusedEnum_UNUSED_ENUM_VALUE1
-}
-
-func (x *Message5867) GetField5895() bool {
-	if x != nil && x.Field5895 != nil {
-		return *x.Field5895
-	}
-	return false
-}
-
-type Message4016 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field4017 *int32 `protobuf:"varint,1,req,name=field4017" json:"field4017,omitempty"`
-	Field4018 *int32 `protobuf:"varint,2,req,name=field4018" json:"field4018,omitempty"`
-	Field4019 *int32 `protobuf:"varint,3,req,name=field4019" json:"field4019,omitempty"`
-	Field4020 *int32 `protobuf:"varint,4,req,name=field4020" json:"field4020,omitempty"`
-}
-
-func (x *Message4016) Reset() {
-	*x = Message4016{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[30]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message4016) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message4016) ProtoMessage() {}
-
-func (x *Message4016) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[30]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message4016.ProtoReflect.Descriptor instead.
-func (*Message4016) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{30}
-}
-
-func (x *Message4016) GetField4017() int32 {
-	if x != nil && x.Field4017 != nil {
-		return *x.Field4017
-	}
-	return 0
-}
-
-func (x *Message4016) GetField4018() int32 {
-	if x != nil && x.Field4018 != nil {
-		return *x.Field4018
-	}
-	return 0
-}
-
-func (x *Message4016) GetField4019() int32 {
-	if x != nil && x.Field4019 != nil {
-		return *x.Field4019
-	}
-	return 0
-}
-
-func (x *Message4016) GetField4020() int32 {
-	if x != nil && x.Field4020 != nil {
-		return *x.Field4020
-	}
-	return 0
-}
-
-type Message6108 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message6108) Reset() {
-	*x = Message6108{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[31]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message6108) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message6108) ProtoMessage() {}
-
-func (x *Message6108) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[31]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message6108.ProtoReflect.Descriptor instead.
-func (*Message6108) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{31}
-}
-
-type Message5907 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field5967 *Message5903 `protobuf:"bytes,1,opt,name=field5967" json:"field5967,omitempty"`
-	Field5968 *Message5903 `protobuf:"bytes,2,opt,name=field5968" json:"field5968,omitempty"`
-	Field5969 *Message5903 `protobuf:"bytes,3,opt,name=field5969" json:"field5969,omitempty"`
-	Field5970 *Message5903 `protobuf:"bytes,4,opt,name=field5970" json:"field5970,omitempty"`
-}
-
-func (x *Message5907) Reset() {
-	*x = Message5907{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[32]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message5907) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message5907) ProtoMessage() {}
-
-func (x *Message5907) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[32]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message5907.ProtoReflect.Descriptor instead.
-func (*Message5907) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{32}
-}
-
-func (x *Message5907) GetField5967() *Message5903 {
-	if x != nil {
-		return x.Field5967
-	}
-	return nil
-}
-
-func (x *Message5907) GetField5968() *Message5903 {
-	if x != nil {
-		return x.Field5968
-	}
-	return nil
-}
-
-func (x *Message5907) GetField5969() *Message5903 {
-	if x != nil {
-		return x.Field5969
-	}
-	return nil
-}
-
-func (x *Message5907) GetField5970() *Message5903 {
-	if x != nil {
-		return x.Field5970
-	}
-	return nil
-}
-
-type UnusedEmptyMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *UnusedEmptyMessage) Reset() {
-	*x = UnusedEmptyMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[33]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *UnusedEmptyMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UnusedEmptyMessage) ProtoMessage() {}
-
-func (x *UnusedEmptyMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[33]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use UnusedEmptyMessage.ProtoReflect.Descriptor instead.
-func (*UnusedEmptyMessage) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{33}
-}
-
-type Message5903 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Field5965 *int32    `protobuf:"varint,1,req,name=field5965" json:"field5965,omitempty"`
-	Field5966 *Enum5904 `protobuf:"varint,2,opt,name=field5966,enum=benchmarks.google_message4.Enum5904" json:"field5966,omitempty"`
-}
-
-func (x *Message5903) Reset() {
-	*x = Message5903{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[34]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message5903) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message5903) ProtoMessage() {}
-
-func (x *Message5903) ProtoReflect() protoreflect.Message {
-	mi := &file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[34]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message5903.ProtoReflect.Descriptor instead.
-func (*Message5903) Descriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP(), []int{34}
-}
-
-func (x *Message5903) GetField5965() int32 {
-	if x != nil && x.Field5965 != nil {
-		return *x.Field5965
-	}
-	return 0
-}
-
-func (x *Message5903) GetField5966() Enum5904 {
-	if x != nil && x.Field5966 != nil {
-		return *x.Field5966
-	}
-	return Enum5904_ENUM_VALUE5905
-}
-
-var File_datasets_google_message4_benchmark_message4_2_proto protoreflect.FileDescriptor
-
-var file_datasets_google_message4_benchmark_message4_2_proto_rawDesc = []byte{
-	0x0a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x5f, 0x32, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x1a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2f, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x5f, 0x33,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xce, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x32, 0x37, 0x37, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x37, 0x37, 0x37, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x37, 0x37, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x37, 0x37, 0x38, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x37, 0x37, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x37, 0x37, 0x39, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x37, 0x37, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x37, 0x38, 0x30, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x37, 0x38, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x37, 0x38, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x37, 0x38, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x37, 0x38, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x37, 0x38, 0x32, 0x22, 0x4e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x32, 0x37, 0x39, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x30, 0x30, 0x18, 0x01, 0x20, 0x03, 0x28, 0x06, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x38, 0x30, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x30, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x38, 0x30, 0x31, 0x22, 0xae, 0x01, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x32, 0x38, 0x32, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x38, 0x34, 0x38, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x34, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x38, 0x34, 0x39, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x34, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x38, 0x35, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x35, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x38, 0x35, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x35, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x31, 0x32, 0x38, 0x35, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x35, 0x32, 0x22, 0x8e, 0x02, 0x0a, 0x0c, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x38, 0x32, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x38, 0x34, 0x30, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x34, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x38, 0x34, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x34, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x38, 0x34, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x34, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x38, 0x34, 0x33, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x34, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x38, 0x34, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x34, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x38, 0x34, 0x35, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x34, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x38, 0x34, 0x36, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x34, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x38, 0x34, 0x37, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x34, 0x37, 0x22, 0xce, 0x01, 0x0a, 0x0c, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x38, 0x31, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x33, 0x34, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x33, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x33, 0x35, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x33, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x33, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x33, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x33, 0x37, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x33, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x33, 0x38, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x33, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x33, 0x39, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x33, 0x39, 0x22, 0xd8, 0x01, 0x0a, 0x0c, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x38, 0x31, 0x38, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x32, 0x39, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x32, 0x39, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x33, 0x30, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x33, 0x30, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x33, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x33, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x33, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x33, 0x32, 0x12, 0x48, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x38, 0x33, 0x33, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x28, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x31, 0x32, 0x38, 0x31, 0x37, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x33, 0x33, 0x22, 0x95, 0x02, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x31, 0x30, 0x33, 0x31, 0x39, 0x12, 0x45, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31,
-	0x30, 0x33, 0x34, 0x30, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x30, 0x33, 0x32,
-	0x35, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x30, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x31, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x32, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x33, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x34, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x35, 0x18, 0x06, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x35, 0x12, 0x1e, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x36, 0x18, 0x07, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x33, 0x34, 0x36, 0x22, 0x95, 0x01,
-	0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x35, 0x37, 0x38, 0x12, 0x42, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x33, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
-	0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e,
-	0x75, 0x6d, 0x36, 0x35, 0x37, 0x39, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x33,
-	0x32, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x36, 0x33, 0x33, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x36, 0x35, 0x38, 0x38, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x36, 0x33, 0x33, 0x22, 0xea, 0x06, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x36, 0x31, 0x32, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31,
-	0x35, 0x32, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x31, 0x35, 0x32, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x35, 0x33,
-	0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x31, 0x32, 0x37, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x35, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x31, 0x35, 0x34, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x35, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x31, 0x35, 0x35, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x31, 0x35, 0x35, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x31, 0x35, 0x36, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63,
-	0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x30,
-	0x32, 0x34, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x35, 0x36, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x35, 0x37, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x35, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x35, 0x38, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x35, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x31, 0x35, 0x39, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x31, 0x35, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x31, 0x36, 0x30, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x31, 0x36, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31,
-	0x36, 0x31, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x31, 0x36, 0x31, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x36, 0x32,
-	0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x30, 0x35, 0x32, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x36, 0x32, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x31, 0x36, 0x33, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65,
-	0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x36, 0x33, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x31, 0x36, 0x34, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x36, 0x30, 0x36,
-	0x35, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x36, 0x34, 0x12, 0x45, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x36, 0x35, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x36, 0x31, 0x32, 0x37, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x31, 0x36, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x36, 0x36,
-	0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x36,
-	0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x36, 0x37, 0x18, 0x10,
-	0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x36, 0x37, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x36, 0x38, 0x18, 0x12, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x36, 0x38, 0x12, 0x45, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x36, 0x39, 0x18, 0x11, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x30, 0x35, 0x34, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x31, 0x36, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x37,
-	0x30, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31,
-	0x37, 0x30, 0x22, 0xec, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x35, 0x38,
-	0x38, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x38, 0x39, 0x37, 0x18,
-	0x01, 0x20, 0x02, 0x28, 0x01, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x38, 0x39, 0x37,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x38, 0x39, 0x38, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x38, 0x39, 0x38, 0x12, 0x45,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x38, 0x39, 0x39, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x35, 0x38, 0x36, 0x31, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x35, 0x38, 0x39, 0x39, 0x12, 0x4c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39,
-	0x30, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74,
-	0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35,
-	0x39, 0x30, 0x30, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x30, 0x31,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x35, 0x38, 0x36, 0x37, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x30, 0x31, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x35, 0x39, 0x30, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x35, 0x38, 0x38, 0x30, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x30,
-	0x32, 0x22, 0x0d, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x31, 0x31, 0x30,
-	0x22, 0x93, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x31, 0x30, 0x37,
-	0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x33, 0x34, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x30, 0x31, 0x36, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x31, 0x33, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x31, 0x33, 0x35, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x31, 0x33, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31,
-	0x33, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x31, 0x33, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x33, 0x37,
-	0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x33,
-	0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x33, 0x38, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x33, 0x38, 0x12,
-	0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x33, 0x39, 0x18, 0x06, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x31, 0x30, 0x38, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x31, 0x33, 0x39, 0x22, 0x6f, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x36, 0x31, 0x32, 0x39, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31,
-	0x37, 0x31, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x36, 0x31, 0x33, 0x30, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x31, 0x37, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x31, 0x37, 0x32, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x31, 0x37, 0x32, 0x22, 0xde, 0x14, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x35, 0x39, 0x30, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x35, 0x39, 0x37, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x35, 0x39, 0x37, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39,
-	0x37, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35,
-	0x39, 0x37, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x37, 0x33,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x37,
-	0x33, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x37, 0x34, 0x18, 0x2d,
-	0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x39, 0x30, 0x39, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x35, 0x39, 0x37, 0x34, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39,
-	0x37, 0x35, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x39, 0x31, 0x32, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x37, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x35, 0x39, 0x37, 0x36, 0x18, 0x32, 0x20, 0x01, 0x28, 0x07, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x35, 0x39, 0x37, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x35, 0x39, 0x37, 0x37, 0x18, 0x05, 0x20, 0x01, 0x28, 0x07, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x35, 0x39, 0x37, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39,
-	0x37, 0x38, 0x18, 0x06, 0x20, 0x01, 0x28, 0x07, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35,
-	0x39, 0x37, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x37, 0x39,
-	0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x37,
-	0x39, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x38, 0x30, 0x18, 0x08,
-	0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x39, 0x31, 0x35, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x35, 0x39, 0x38, 0x30, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39,
-	0x38, 0x31, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x35, 0x39, 0x30,
-	0x33, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x38, 0x31, 0x12, 0x45, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x38, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x35, 0x39, 0x30, 0x33, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35,
-	0x39, 0x38, 0x32, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x38, 0x33,
-	0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x39, 0x32, 0x30, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x35, 0x39, 0x38, 0x33, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x35, 0x39, 0x38, 0x34, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x39, 0x32, 0x33,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x38, 0x34, 0x12, 0x45, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x38, 0x35, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x35, 0x39, 0x30, 0x33, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39,
-	0x38, 0x35, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x38, 0x36, 0x18,
-	0x2a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x35, 0x39, 0x30, 0x33, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x38, 0x36, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x35, 0x39, 0x38, 0x37, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x39,
-	0x32, 0x38, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x38, 0x37, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x38, 0x38, 0x18, 0x30, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x38, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x38, 0x39, 0x18, 0x31, 0x20, 0x03, 0x28, 0x07, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x38, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x35, 0x39, 0x39, 0x30, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x35, 0x39, 0x39, 0x30, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x35, 0x39, 0x39, 0x31, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x35,
-	0x39, 0x30, 0x33, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x39, 0x31, 0x12, 0x45,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x39, 0x32, 0x18, 0x0e, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x35, 0x39, 0x30, 0x33, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x35, 0x39, 0x39, 0x32, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39,
-	0x39, 0x33, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x35, 0x39, 0x30,
-	0x33, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x39, 0x33, 0x12, 0x45, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x39, 0x34, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x35, 0x39, 0x30, 0x33, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35,
-	0x39, 0x39, 0x34, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x39, 0x35,
-	0x18, 0x20, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x35, 0x39, 0x30, 0x33, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x39, 0x35, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x35, 0x39, 0x39, 0x36, 0x18, 0x21, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x35, 0x39, 0x30, 0x33, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x39,
-	0x36, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x39, 0x37, 0x18, 0x22,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x35, 0x39, 0x30, 0x33, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x39, 0x37, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x35, 0x39, 0x39, 0x38, 0x18, 0x23, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x35, 0x39, 0x30, 0x33, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x39, 0x38, 0x12,
-	0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x39, 0x39, 0x18, 0x11, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e,
-	0x45, 0x6e, 0x75, 0x6d, 0x35, 0x39, 0x33, 0x31, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35,
-	0x39, 0x39, 0x39, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x30, 0x30,
-	0x18, 0x12, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x39, 0x33, 0x35, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x30, 0x30, 0x30, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x30, 0x30, 0x31, 0x18, 0x24, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x39, 0x33, 0x39,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x30, 0x31, 0x12, 0x42, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x30, 0x32, 0x18, 0x25, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d,
-	0x35, 0x39, 0x33, 0x39, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x30, 0x32, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x30, 0x33, 0x18, 0x13, 0x20, 0x03,
-	0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x30, 0x33, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x30, 0x34, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x30, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x30, 0x35, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x30, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x30, 0x30, 0x36, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x30, 0x30, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x30, 0x30, 0x37, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x30, 0x30, 0x37, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30,
-	0x30, 0x38, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x39, 0x34, 0x36, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x30, 0x38, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x30, 0x30, 0x39, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x39,
-	0x34, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x30, 0x39, 0x12, 0x42, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x31, 0x30, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0e,
-	0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e,
-	0x75, 0x6d, 0x35, 0x39, 0x34, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x31,
-	0x30, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x31, 0x31, 0x18, 0x1b,
-	0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x39, 0x34, 0x36, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x36, 0x30, 0x31, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30,
-	0x31, 0x32, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x07, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36,
-	0x30, 0x31, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x31, 0x33,
-	0x18, 0x1d, 0x20, 0x01, 0x28, 0x07, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x31,
-	0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x31, 0x34, 0x18, 0x1e,
-	0x20, 0x01, 0x28, 0x07, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x31, 0x34, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x31, 0x35, 0x18, 0x1f, 0x20, 0x01,
-	0x28, 0x07, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x31, 0x35, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x31, 0x36, 0x18, 0x26, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x31, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x31, 0x37, 0x18, 0x27, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x31, 0x37, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x36, 0x30, 0x31, 0x38, 0x18, 0x2b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x39,
-	0x35, 0x37, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x31, 0x38, 0x12, 0x45, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x31, 0x39, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x35, 0x39, 0x30, 0x37, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x36, 0x30, 0x31, 0x39, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x32,
-	0x30, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x39, 0x36, 0x32, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x32, 0x30, 0x22, 0xe7, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x38, 0x35, 0x30, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x39, 0x32, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x38, 0x35,
-	0x31, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x32, 0x34, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x32, 0x35, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x32, 0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x39, 0x32, 0x36, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x32, 0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x33, 0x39, 0x32, 0x37, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x33, 0x39, 0x32, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33,
-	0x39, 0x32, 0x38, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x33, 0x39, 0x32, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39, 0x32,
-	0x39, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x39,
-	0x32, 0x39, 0x22, 0x0d, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x38, 0x36,
-	0x35, 0x22, 0x85, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x35, 0x31,
-	0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x32, 0x33, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x32, 0x33, 0x12,
-	0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x32, 0x34, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e,
-	0x45, 0x6e, 0x75, 0x6d, 0x37, 0x35, 0x31, 0x32, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x35, 0x32, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x32, 0x35,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x32,
-	0x35, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x32, 0x36, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x32, 0x36, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x32, 0x37, 0x18, 0x05, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x32, 0x37, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x32, 0x38, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x32, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x32, 0x39, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x35, 0x32, 0x39, 0x22, 0x0d, 0x0a, 0x0b, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x33, 0x39, 0x32, 0x30, 0x22, 0x49, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x37, 0x39, 0x32, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x39, 0x34, 0x30, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x39, 0x34, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39,
-	0x34, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37,
-	0x39, 0x34, 0x31, 0x22, 0xab, 0x01, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37,
-	0x39, 0x32, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x36,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33,
-	0x36, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x37, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x37, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x38, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x02, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x38, 0x12, 0x42, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x39, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e,
-	0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e,
-	0x75, 0x6d, 0x37, 0x39, 0x32, 0x32, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33,
-	0x39, 0x22, 0x49, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x32, 0x30,
-	0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x34, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x34, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x35, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x35, 0x22, 0x67, 0x0a, 0x0b,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x37, 0x39, 0x31, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x06, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x31, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x37, 0x39, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x37, 0x39, 0x33, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x37, 0x39, 0x33, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x37, 0x39, 0x33, 0x33, 0x22, 0x6e, 0x0a, 0x0c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x32, 0x38, 0x31, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x38, 0x32, 0x36, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x32, 0x36, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x38, 0x32, 0x37, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x32, 0x37, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32,
-	0x38, 0x32, 0x38, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x32, 0x38, 0x32, 0x38, 0x22, 0x49, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x36, 0x30, 0x35, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x38,
-	0x39, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30,
-	0x38, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x39, 0x30, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x39, 0x30,
-	0x22, 0x0d, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x31, 0x32, 0x37, 0x22,
-	0x49, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x30, 0x35, 0x32, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x38, 0x34, 0x18, 0x01, 0x20, 0x02, 0x28,
-	0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x38, 0x34, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x38, 0x35, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0c, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x38, 0x35, 0x22, 0xbd, 0x01, 0x0a, 0x0b, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x36, 0x30, 0x32, 0x34, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x36, 0x30, 0x34, 0x38, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x36,
-	0x30, 0x32, 0x35, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x34, 0x38, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x34, 0x39, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x34, 0x39, 0x12, 0x4c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x35, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2e, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75,
-	0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x36, 0x30, 0x35, 0x30, 0x22, 0xab, 0x01, 0x0a, 0x0b, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x35, 0x38, 0x36, 0x31, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x35, 0x38, 0x38, 0x32, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x24, 0x2e,
-	0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x35,
-	0x38, 0x36, 0x32, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x38, 0x38, 0x32, 0x12, 0x1c,
-	0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x38, 0x38, 0x33, 0x18, 0x02, 0x20, 0x02, 0x28,
-	0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x38, 0x38, 0x33, 0x12, 0x1c, 0x0a, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x38, 0x38, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x38, 0x38, 0x34, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x35, 0x38, 0x38, 0x35, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x35, 0x38, 0x38, 0x35, 0x22, 0x2b, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x35, 0x38, 0x38, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x35, 0x38, 0x39, 0x36, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x35, 0x38, 0x39, 0x36, 0x22, 0xb5, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x35, 0x38, 0x36, 0x37, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x38,
-	0x39, 0x30, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x38, 0x36, 0x38, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x38, 0x39, 0x30, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x35, 0x38, 0x39, 0x31, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x35, 0x38, 0x39, 0x31, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x35, 0x38, 0x39, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e,
-	0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x38, 0x37, 0x33,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x38, 0x39, 0x32, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x35, 0x38, 0x39, 0x33, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x38, 0x39, 0x33, 0x12, 0x44, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x35, 0x38, 0x39, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64,
-	0x45, 0x6e, 0x75, 0x6d, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x38, 0x39, 0x34, 0x12,
-	0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x38, 0x39, 0x35, 0x18, 0x06, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x38, 0x39, 0x35, 0x22, 0x85, 0x01,
-	0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x30, 0x31, 0x36, 0x12, 0x1c, 0x0a,
-	0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x30, 0x31, 0x37, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x30, 0x31, 0x37, 0x12, 0x1c, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x34, 0x30, 0x31, 0x38, 0x18, 0x02, 0x20, 0x02, 0x28, 0x05, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x34, 0x30, 0x31, 0x38, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x34, 0x30, 0x31, 0x39, 0x18, 0x03, 0x20, 0x02, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x34, 0x30, 0x31, 0x39, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x34, 0x30, 0x32, 0x30, 0x18, 0x04, 0x20, 0x02, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x34, 0x30, 0x32, 0x30, 0x22, 0x0d, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x36, 0x31, 0x30, 0x38, 0x22, 0xa9, 0x02, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x35, 0x39, 0x30, 0x37, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x36,
-	0x37, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d,
-	0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x35, 0x39, 0x30, 0x33,
-	0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x36, 0x37, 0x12, 0x45, 0x0a, 0x09, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x36, 0x38, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27,
-	0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x35, 0x39, 0x30, 0x33, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39,
-	0x36, 0x38, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x36, 0x39, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x35, 0x39, 0x30, 0x33, 0x52, 0x09,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x36, 0x39, 0x12, 0x45, 0x0a, 0x09, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x35, 0x39, 0x37, 0x30, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x35, 0x39, 0x30, 0x33, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x37, 0x30,
-	0x22, 0x14, 0x0a, 0x12, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x6f, 0x0a, 0x0b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x35, 0x39, 0x30, 0x33, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39,
-	0x36, 0x35, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35,
-	0x39, 0x36, 0x35, 0x12, 0x42, 0x0a, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x35, 0x39, 0x36, 0x36,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61,
-	0x72, 0x6b, 0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x34, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x39, 0x30, 0x34, 0x52, 0x09, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x35, 0x39, 0x36, 0x36, 0x42, 0x23, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x62,
-	0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0xf8, 0x01, 0x01,
-}
-
-var (
-	file_datasets_google_message4_benchmark_message4_2_proto_rawDescOnce sync.Once
-	file_datasets_google_message4_benchmark_message4_2_proto_rawDescData = file_datasets_google_message4_benchmark_message4_2_proto_rawDesc
-)
-
-func file_datasets_google_message4_benchmark_message4_2_proto_rawDescGZIP() []byte {
-	file_datasets_google_message4_benchmark_message4_2_proto_rawDescOnce.Do(func() {
-		file_datasets_google_message4_benchmark_message4_2_proto_rawDescData = protoimpl.X.CompressGZIP(file_datasets_google_message4_benchmark_message4_2_proto_rawDescData)
-	})
-	return file_datasets_google_message4_benchmark_message4_2_proto_rawDescData
-}
-
-var file_datasets_google_message4_benchmark_message4_2_proto_msgTypes = make([]protoimpl.MessageInfo, 35)
-var file_datasets_google_message4_benchmark_message4_2_proto_goTypes = []interface{}{
-	(*Message12774)(nil),       // 0: benchmarks.google_message4.Message12774
-	(*Message12796)(nil),       // 1: benchmarks.google_message4.Message12796
-	(*Message12821)(nil),       // 2: benchmarks.google_message4.Message12821
-	(*Message12820)(nil),       // 3: benchmarks.google_message4.Message12820
-	(*Message12819)(nil),       // 4: benchmarks.google_message4.Message12819
-	(*Message12818)(nil),       // 5: benchmarks.google_message4.Message12818
-	(*Message10319)(nil),       // 6: benchmarks.google_message4.Message10319
-	(*Message6578)(nil),        // 7: benchmarks.google_message4.Message6578
-	(*Message6126)(nil),        // 8: benchmarks.google_message4.Message6126
-	(*Message5881)(nil),        // 9: benchmarks.google_message4.Message5881
-	(*Message6110)(nil),        // 10: benchmarks.google_message4.Message6110
-	(*Message6107)(nil),        // 11: benchmarks.google_message4.Message6107
-	(*Message6129)(nil),        // 12: benchmarks.google_message4.Message6129
-	(*Message5908)(nil),        // 13: benchmarks.google_message4.Message5908
-	(*Message3850)(nil),        // 14: benchmarks.google_message4.Message3850
-	(*Message7865)(nil),        // 15: benchmarks.google_message4.Message7865
-	(*Message7511)(nil),        // 16: benchmarks.google_message4.Message7511
-	(*Message3920)(nil),        // 17: benchmarks.google_message4.Message3920
-	(*Message7928)(nil),        // 18: benchmarks.google_message4.Message7928
-	(*Message7921)(nil),        // 19: benchmarks.google_message4.Message7921
-	(*Message7920)(nil),        // 20: benchmarks.google_message4.Message7920
-	(*Message7919)(nil),        // 21: benchmarks.google_message4.Message7919
-	(*Message12817)(nil),       // 22: benchmarks.google_message4.Message12817
-	(*Message6054)(nil),        // 23: benchmarks.google_message4.Message6054
-	(*Message6127)(nil),        // 24: benchmarks.google_message4.Message6127
-	(*Message6052)(nil),        // 25: benchmarks.google_message4.Message6052
-	(*Message6024)(nil),        // 26: benchmarks.google_message4.Message6024
-	(*Message5861)(nil),        // 27: benchmarks.google_message4.Message5861
-	(*Message5880)(nil),        // 28: benchmarks.google_message4.Message5880
-	(*Message5867)(nil),        // 29: benchmarks.google_message4.Message5867
-	(*Message4016)(nil),        // 30: benchmarks.google_message4.Message4016
-	(*Message6108)(nil),        // 31: benchmarks.google_message4.Message6108
-	(*Message5907)(nil),        // 32: benchmarks.google_message4.Message5907
-	(*UnusedEmptyMessage)(nil), // 33: benchmarks.google_message4.UnusedEmptyMessage
-	(*Message5903)(nil),        // 34: benchmarks.google_message4.Message5903
-	(Enum10325)(0),             // 35: benchmarks.google_message4.Enum10325
-	(Enum6579)(0),              // 36: benchmarks.google_message4.Enum6579
-	(Enum6588)(0),              // 37: benchmarks.google_message4.Enum6588
-	(Enum6065)(0),              // 38: benchmarks.google_message4.Enum6065
-	(Enum6130)(0),              // 39: benchmarks.google_message4.Enum6130
-	(Enum5909)(0),              // 40: benchmarks.google_message4.Enum5909
-	(Enum5912)(0),              // 41: benchmarks.google_message4.Enum5912
-	(Enum5915)(0),              // 42: benchmarks.google_message4.Enum5915
-	(Enum5920)(0),              // 43: benchmarks.google_message4.Enum5920
-	(Enum5923)(0),              // 44: benchmarks.google_message4.Enum5923
-	(Enum5928)(0),              // 45: benchmarks.google_message4.Enum5928
-	(Enum5931)(0),              // 46: benchmarks.google_message4.Enum5931
-	(Enum5935)(0),              // 47: benchmarks.google_message4.Enum5935
-	(Enum5939)(0),              // 48: benchmarks.google_message4.Enum5939
-	(Enum5946)(0),              // 49: benchmarks.google_message4.Enum5946
-	(Enum5957)(0),              // 50: benchmarks.google_message4.Enum5957
-	(Enum5962)(0),              // 51: benchmarks.google_message4.Enum5962
-	(Enum3851)(0),              // 52: benchmarks.google_message4.Enum3851
-	(Enum7512)(0),              // 53: benchmarks.google_message4.Enum7512
-	(Enum7922)(0),              // 54: benchmarks.google_message4.Enum7922
-	(Enum6025)(0),              // 55: benchmarks.google_message4.Enum6025
-	(Enum5862)(0),              // 56: benchmarks.google_message4.Enum5862
-	(Enum5868)(0),              // 57: benchmarks.google_message4.Enum5868
-	(Enum5873)(0),              // 58: benchmarks.google_message4.Enum5873
-	(UnusedEnum)(0),            // 59: benchmarks.google_message4.UnusedEnum
-	(Enum5904)(0),              // 60: benchmarks.google_message4.Enum5904
-}
-var file_datasets_google_message4_benchmark_message4_2_proto_depIdxs = []int32{
-	22, // 0: benchmarks.google_message4.Message12818.field12833:type_name -> benchmarks.google_message4.Message12817
-	35, // 1: benchmarks.google_message4.Message10319.field10340:type_name -> benchmarks.google_message4.Enum10325
-	36, // 2: benchmarks.google_message4.Message6578.field6632:type_name -> benchmarks.google_message4.Enum6579
-	37, // 3: benchmarks.google_message4.Message6578.field6633:type_name -> benchmarks.google_message4.Enum6588
-	24, // 4: benchmarks.google_message4.Message6126.field6153:type_name -> benchmarks.google_message4.Message6127
-	26, // 5: benchmarks.google_message4.Message6126.field6156:type_name -> benchmarks.google_message4.Message6024
-	25, // 6: benchmarks.google_message4.Message6126.field6162:type_name -> benchmarks.google_message4.Message6052
-	33, // 7: benchmarks.google_message4.Message6126.field6163:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	38, // 8: benchmarks.google_message4.Message6126.field6164:type_name -> benchmarks.google_message4.Enum6065
-	24, // 9: benchmarks.google_message4.Message6126.field6165:type_name -> benchmarks.google_message4.Message6127
-	23, // 10: benchmarks.google_message4.Message6126.field6169:type_name -> benchmarks.google_message4.Message6054
-	27, // 11: benchmarks.google_message4.Message5881.field5899:type_name -> benchmarks.google_message4.Message5861
-	33, // 12: benchmarks.google_message4.Message5881.field5900:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	29, // 13: benchmarks.google_message4.Message5881.field5901:type_name -> benchmarks.google_message4.Message5867
-	28, // 14: benchmarks.google_message4.Message5881.field5902:type_name -> benchmarks.google_message4.Message5880
-	30, // 15: benchmarks.google_message4.Message6107.field6134:type_name -> benchmarks.google_message4.Message4016
-	31, // 16: benchmarks.google_message4.Message6107.field6139:type_name -> benchmarks.google_message4.Message6108
-	39, // 17: benchmarks.google_message4.Message6129.field6171:type_name -> benchmarks.google_message4.Enum6130
-	40, // 18: benchmarks.google_message4.Message5908.field5974:type_name -> benchmarks.google_message4.Enum5909
-	41, // 19: benchmarks.google_message4.Message5908.field5975:type_name -> benchmarks.google_message4.Enum5912
-	42, // 20: benchmarks.google_message4.Message5908.field5980:type_name -> benchmarks.google_message4.Enum5915
-	34, // 21: benchmarks.google_message4.Message5908.field5981:type_name -> benchmarks.google_message4.Message5903
-	34, // 22: benchmarks.google_message4.Message5908.field5982:type_name -> benchmarks.google_message4.Message5903
-	43, // 23: benchmarks.google_message4.Message5908.field5983:type_name -> benchmarks.google_message4.Enum5920
-	44, // 24: benchmarks.google_message4.Message5908.field5984:type_name -> benchmarks.google_message4.Enum5923
-	34, // 25: benchmarks.google_message4.Message5908.field5985:type_name -> benchmarks.google_message4.Message5903
-	34, // 26: benchmarks.google_message4.Message5908.field5986:type_name -> benchmarks.google_message4.Message5903
-	45, // 27: benchmarks.google_message4.Message5908.field5987:type_name -> benchmarks.google_message4.Enum5928
-	34, // 28: benchmarks.google_message4.Message5908.field5991:type_name -> benchmarks.google_message4.Message5903
-	34, // 29: benchmarks.google_message4.Message5908.field5992:type_name -> benchmarks.google_message4.Message5903
-	34, // 30: benchmarks.google_message4.Message5908.field5993:type_name -> benchmarks.google_message4.Message5903
-	34, // 31: benchmarks.google_message4.Message5908.field5994:type_name -> benchmarks.google_message4.Message5903
-	34, // 32: benchmarks.google_message4.Message5908.field5995:type_name -> benchmarks.google_message4.Message5903
-	34, // 33: benchmarks.google_message4.Message5908.field5996:type_name -> benchmarks.google_message4.Message5903
-	34, // 34: benchmarks.google_message4.Message5908.field5997:type_name -> benchmarks.google_message4.Message5903
-	34, // 35: benchmarks.google_message4.Message5908.field5998:type_name -> benchmarks.google_message4.Message5903
-	46, // 36: benchmarks.google_message4.Message5908.field5999:type_name -> benchmarks.google_message4.Enum5931
-	47, // 37: benchmarks.google_message4.Message5908.field6000:type_name -> benchmarks.google_message4.Enum5935
-	48, // 38: benchmarks.google_message4.Message5908.field6001:type_name -> benchmarks.google_message4.Enum5939
-	48, // 39: benchmarks.google_message4.Message5908.field6002:type_name -> benchmarks.google_message4.Enum5939
-	49, // 40: benchmarks.google_message4.Message5908.field6008:type_name -> benchmarks.google_message4.Enum5946
-	49, // 41: benchmarks.google_message4.Message5908.field6009:type_name -> benchmarks.google_message4.Enum5946
-	49, // 42: benchmarks.google_message4.Message5908.field6010:type_name -> benchmarks.google_message4.Enum5946
-	49, // 43: benchmarks.google_message4.Message5908.field6011:type_name -> benchmarks.google_message4.Enum5946
-	50, // 44: benchmarks.google_message4.Message5908.field6018:type_name -> benchmarks.google_message4.Enum5957
-	32, // 45: benchmarks.google_message4.Message5908.field6019:type_name -> benchmarks.google_message4.Message5907
-	51, // 46: benchmarks.google_message4.Message5908.field6020:type_name -> benchmarks.google_message4.Enum5962
-	52, // 47: benchmarks.google_message4.Message3850.field3924:type_name -> benchmarks.google_message4.Enum3851
-	53, // 48: benchmarks.google_message4.Message7511.field7524:type_name -> benchmarks.google_message4.Enum7512
-	54, // 49: benchmarks.google_message4.Message7921.field7939:type_name -> benchmarks.google_message4.Enum7922
-	55, // 50: benchmarks.google_message4.Message6024.field6048:type_name -> benchmarks.google_message4.Enum6025
-	33, // 51: benchmarks.google_message4.Message6024.field6050:type_name -> benchmarks.google_message4.UnusedEmptyMessage
-	56, // 52: benchmarks.google_message4.Message5861.field5882:type_name -> benchmarks.google_message4.Enum5862
-	57, // 53: benchmarks.google_message4.Message5867.field5890:type_name -> benchmarks.google_message4.Enum5868
-	58, // 54: benchmarks.google_message4.Message5867.field5892:type_name -> benchmarks.google_message4.Enum5873
-	59, // 55: benchmarks.google_message4.Message5867.field5894:type_name -> benchmarks.google_message4.UnusedEnum
-	34, // 56: benchmarks.google_message4.Message5907.field5967:type_name -> benchmarks.google_message4.Message5903
-	34, // 57: benchmarks.google_message4.Message5907.field5968:type_name -> benchmarks.google_message4.Message5903
-	34, // 58: benchmarks.google_message4.Message5907.field5969:type_name -> benchmarks.google_message4.Message5903
-	34, // 59: benchmarks.google_message4.Message5907.field5970:type_name -> benchmarks.google_message4.Message5903
-	60, // 60: benchmarks.google_message4.Message5903.field5966:type_name -> benchmarks.google_message4.Enum5904
-	61, // [61:61] is the sub-list for method output_type
-	61, // [61:61] is the sub-list for method input_type
-	61, // [61:61] is the sub-list for extension type_name
-	61, // [61:61] is the sub-list for extension extendee
-	0,  // [0:61] is the sub-list for field type_name
-}
-
-func init() { file_datasets_google_message4_benchmark_message4_2_proto_init() }
-func file_datasets_google_message4_benchmark_message4_2_proto_init() {
-	if File_datasets_google_message4_benchmark_message4_2_proto != nil {
-		return
-	}
-	file_datasets_google_message4_benchmark_message4_3_proto_init()
-	if !protoimpl.UnsafeEnabled {
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12774); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12796); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12821); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12820); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12819); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12818); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message10319); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6578); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6126); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message5881); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6110); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6107); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6129); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message5908); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3850); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7865); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7511); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3920); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7928); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7921); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7920); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message7919); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message12817); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6054); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6127); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6052); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6024); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message5861); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message5880); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message5867); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message4016); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message6108); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message5907); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UnusedEmptyMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_datasets_google_message4_benchmark_message4_2_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message5903); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_datasets_google_message4_benchmark_message4_2_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   35,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_datasets_google_message4_benchmark_message4_2_proto_goTypes,
-		DependencyIndexes: file_datasets_google_message4_benchmark_message4_2_proto_depIdxs,
-		MessageInfos:      file_datasets_google_message4_benchmark_message4_2_proto_msgTypes,
-	}.Build()
-	File_datasets_google_message4_benchmark_message4_2_proto = out.File
-	file_datasets_google_message4_benchmark_message4_2_proto_rawDesc = nil
-	file_datasets_google_message4_benchmark_message4_2_proto_goTypes = nil
-	file_datasets_google_message4_benchmark_message4_2_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4_3.pb.go b/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4_3.pb.go
deleted file mode 100644
index 0bf6b28..0000000
--- a/internal/testprotos/benchmarks/datasets/google_message4/benchmark_message4_3.pb.go
+++ /dev/null
@@ -1,4905 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: datasets/google_message4/benchmark_message4_3.proto
-
-package google_message4
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type UnusedEnum int32
-
-const (
-	UnusedEnum_UNUSED_ENUM_VALUE1 UnusedEnum = 0
-	UnusedEnum_UNUSED_ENUM_VALUE2 UnusedEnum = 1
-)
-
-// Enum value maps for UnusedEnum.
-var (
-	UnusedEnum_name = map[int32]string{
-		0: "UNUSED_ENUM_VALUE1",
-		1: "UNUSED_ENUM_VALUE2",
-	}
-	UnusedEnum_value = map[string]int32{
-		"UNUSED_ENUM_VALUE1": 0,
-		"UNUSED_ENUM_VALUE2": 1,
-	}
-)
-
-func (x UnusedEnum) Enum() *UnusedEnum {
-	p := new(UnusedEnum)
-	*p = x
-	return p
-}
-
-func (x UnusedEnum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (UnusedEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[0].Descriptor()
-}
-
-func (UnusedEnum) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[0]
-}
-
-func (x UnusedEnum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *UnusedEnum) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = UnusedEnum(num)
-	return nil
-}
-
-// Deprecated: Use UnusedEnum.Descriptor instead.
-func (UnusedEnum) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{0}
-}
-
-type Enum2593 int32
-
-const (
-	Enum2593_ENUM_VALUE2594 Enum2593 = 0
-	Enum2593_ENUM_VALUE2595 Enum2593 = 1
-	Enum2593_ENUM_VALUE2596 Enum2593 = 2
-	Enum2593_ENUM_VALUE2597 Enum2593 = 3
-	Enum2593_ENUM_VALUE2598 Enum2593 = 4
-	Enum2593_ENUM_VALUE2599 Enum2593 = 5
-	Enum2593_ENUM_VALUE2600 Enum2593 = 6
-	Enum2593_ENUM_VALUE2601 Enum2593 = 7
-)
-
-// Enum value maps for Enum2593.
-var (
-	Enum2593_name = map[int32]string{
-		0: "ENUM_VALUE2594",
-		1: "ENUM_VALUE2595",
-		2: "ENUM_VALUE2596",
-		3: "ENUM_VALUE2597",
-		4: "ENUM_VALUE2598",
-		5: "ENUM_VALUE2599",
-		6: "ENUM_VALUE2600",
-		7: "ENUM_VALUE2601",
-	}
-	Enum2593_value = map[string]int32{
-		"ENUM_VALUE2594": 0,
-		"ENUM_VALUE2595": 1,
-		"ENUM_VALUE2596": 2,
-		"ENUM_VALUE2597": 3,
-		"ENUM_VALUE2598": 4,
-		"ENUM_VALUE2599": 5,
-		"ENUM_VALUE2600": 6,
-		"ENUM_VALUE2601": 7,
-	}
-)
-
-func (x Enum2593) Enum() *Enum2593 {
-	p := new(Enum2593)
-	*p = x
-	return p
-}
-
-func (x Enum2593) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum2593) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[1].Descriptor()
-}
-
-func (Enum2593) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[1]
-}
-
-func (x Enum2593) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum2593) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum2593(num)
-	return nil
-}
-
-// Deprecated: Use Enum2593.Descriptor instead.
-func (Enum2593) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{1}
-}
-
-type Enum2834 int32
-
-const (
-	Enum2834_ENUM_VALUE2835 Enum2834 = 0
-	Enum2834_ENUM_VALUE2836 Enum2834 = 1
-	Enum2834_ENUM_VALUE2837 Enum2834 = 2
-)
-
-// Enum value maps for Enum2834.
-var (
-	Enum2834_name = map[int32]string{
-		0: "ENUM_VALUE2835",
-		1: "ENUM_VALUE2836",
-		2: "ENUM_VALUE2837",
-	}
-	Enum2834_value = map[string]int32{
-		"ENUM_VALUE2835": 0,
-		"ENUM_VALUE2836": 1,
-		"ENUM_VALUE2837": 2,
-	}
-)
-
-func (x Enum2834) Enum() *Enum2834 {
-	p := new(Enum2834)
-	*p = x
-	return p
-}
-
-func (x Enum2834) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum2834) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[2].Descriptor()
-}
-
-func (Enum2834) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[2]
-}
-
-func (x Enum2834) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum2834) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum2834(num)
-	return nil
-}
-
-// Deprecated: Use Enum2834.Descriptor instead.
-func (Enum2834) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{2}
-}
-
-type Enum2806 int32
-
-const (
-	Enum2806_ENUM_VALUE2807 Enum2806 = 0
-	Enum2806_ENUM_VALUE2808 Enum2806 = 1
-	Enum2806_ENUM_VALUE2809 Enum2806 = 2
-	Enum2806_ENUM_VALUE2810 Enum2806 = 3
-	Enum2806_ENUM_VALUE2811 Enum2806 = 4
-	Enum2806_ENUM_VALUE2812 Enum2806 = 5
-	Enum2806_ENUM_VALUE2813 Enum2806 = 6
-	Enum2806_ENUM_VALUE2814 Enum2806 = 7
-	Enum2806_ENUM_VALUE2815 Enum2806 = 8
-	Enum2806_ENUM_VALUE2816 Enum2806 = 9
-	Enum2806_ENUM_VALUE2817 Enum2806 = 10
-	Enum2806_ENUM_VALUE2818 Enum2806 = 11
-	Enum2806_ENUM_VALUE2819 Enum2806 = 12
-	Enum2806_ENUM_VALUE2820 Enum2806 = 13
-	Enum2806_ENUM_VALUE2821 Enum2806 = 14
-)
-
-// Enum value maps for Enum2806.
-var (
-	Enum2806_name = map[int32]string{
-		0:  "ENUM_VALUE2807",
-		1:  "ENUM_VALUE2808",
-		2:  "ENUM_VALUE2809",
-		3:  "ENUM_VALUE2810",
-		4:  "ENUM_VALUE2811",
-		5:  "ENUM_VALUE2812",
-		6:  "ENUM_VALUE2813",
-		7:  "ENUM_VALUE2814",
-		8:  "ENUM_VALUE2815",
-		9:  "ENUM_VALUE2816",
-		10: "ENUM_VALUE2817",
-		11: "ENUM_VALUE2818",
-		12: "ENUM_VALUE2819",
-		13: "ENUM_VALUE2820",
-		14: "ENUM_VALUE2821",
-	}
-	Enum2806_value = map[string]int32{
-		"ENUM_VALUE2807": 0,
-		"ENUM_VALUE2808": 1,
-		"ENUM_VALUE2809": 2,
-		"ENUM_VALUE2810": 3,
-		"ENUM_VALUE2811": 4,
-		"ENUM_VALUE2812": 5,
-		"ENUM_VALUE2813": 6,
-		"ENUM_VALUE2814": 7,
-		"ENUM_VALUE2815": 8,
-		"ENUM_VALUE2816": 9,
-		"ENUM_VALUE2817": 10,
-		"ENUM_VALUE2818": 11,
-		"ENUM_VALUE2819": 12,
-		"ENUM_VALUE2820": 13,
-		"ENUM_VALUE2821": 14,
-	}
-)
-
-func (x Enum2806) Enum() *Enum2806 {
-	p := new(Enum2806)
-	*p = x
-	return p
-}
-
-func (x Enum2806) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum2806) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[3].Descriptor()
-}
-
-func (Enum2806) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[3]
-}
-
-func (x Enum2806) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum2806) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum2806(num)
-	return nil
-}
-
-// Deprecated: Use Enum2806.Descriptor instead.
-func (Enum2806) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{3}
-}
-
-type Enum2851 int32
-
-const (
-	Enum2851_ENUM_VALUE2852 Enum2851 = 0
-	Enum2851_ENUM_VALUE2853 Enum2851 = 0
-	Enum2851_ENUM_VALUE2854 Enum2851 = 1
-	Enum2851_ENUM_VALUE2855 Enum2851 = 2
-	Enum2851_ENUM_VALUE2856 Enum2851 = 3
-	Enum2851_ENUM_VALUE2857 Enum2851 = 4
-	Enum2851_ENUM_VALUE2858 Enum2851 = 5
-	Enum2851_ENUM_VALUE2859 Enum2851 = 6
-	Enum2851_ENUM_VALUE2860 Enum2851 = 7
-	Enum2851_ENUM_VALUE2861 Enum2851 = 8
-	Enum2851_ENUM_VALUE2862 Enum2851 = 9
-	Enum2851_ENUM_VALUE2863 Enum2851 = 10
-	Enum2851_ENUM_VALUE2864 Enum2851 = 11
-	Enum2851_ENUM_VALUE2865 Enum2851 = 12
-	Enum2851_ENUM_VALUE2866 Enum2851 = 13
-	Enum2851_ENUM_VALUE2867 Enum2851 = 14
-	Enum2851_ENUM_VALUE2868 Enum2851 = 15
-	Enum2851_ENUM_VALUE2869 Enum2851 = 16
-	Enum2851_ENUM_VALUE2870 Enum2851 = 17
-	Enum2851_ENUM_VALUE2871 Enum2851 = 18
-	Enum2851_ENUM_VALUE2872 Enum2851 = 19
-	Enum2851_ENUM_VALUE2873 Enum2851 = 20
-	Enum2851_ENUM_VALUE2874 Enum2851 = 21
-	Enum2851_ENUM_VALUE2875 Enum2851 = 22
-	Enum2851_ENUM_VALUE2876 Enum2851 = 23
-	Enum2851_ENUM_VALUE2877 Enum2851 = 24
-	Enum2851_ENUM_VALUE2878 Enum2851 = 25
-	Enum2851_ENUM_VALUE2879 Enum2851 = 26
-	Enum2851_ENUM_VALUE2880 Enum2851 = 27
-	Enum2851_ENUM_VALUE2881 Enum2851 = 28
-	Enum2851_ENUM_VALUE2882 Enum2851 = 29
-	Enum2851_ENUM_VALUE2883 Enum2851 = 30
-	Enum2851_ENUM_VALUE2884 Enum2851 = 31
-	Enum2851_ENUM_VALUE2885 Enum2851 = 32
-	Enum2851_ENUM_VALUE2886 Enum2851 = 33
-	Enum2851_ENUM_VALUE2887 Enum2851 = 34
-	Enum2851_ENUM_VALUE2888 Enum2851 = 35
-	Enum2851_ENUM_VALUE2889 Enum2851 = 36
-	Enum2851_ENUM_VALUE2890 Enum2851 = 37
-	Enum2851_ENUM_VALUE2891 Enum2851 = 38
-	Enum2851_ENUM_VALUE2892 Enum2851 = 39
-	Enum2851_ENUM_VALUE2893 Enum2851 = 40
-	Enum2851_ENUM_VALUE2894 Enum2851 = 41
-	Enum2851_ENUM_VALUE2895 Enum2851 = 42
-	Enum2851_ENUM_VALUE2896 Enum2851 = 43
-	Enum2851_ENUM_VALUE2897 Enum2851 = 44
-	Enum2851_ENUM_VALUE2898 Enum2851 = 45
-	Enum2851_ENUM_VALUE2899 Enum2851 = 46
-	Enum2851_ENUM_VALUE2900 Enum2851 = 47
-	Enum2851_ENUM_VALUE2901 Enum2851 = 48
-	Enum2851_ENUM_VALUE2902 Enum2851 = 49
-	Enum2851_ENUM_VALUE2903 Enum2851 = 50
-	Enum2851_ENUM_VALUE2904 Enum2851 = 51
-	Enum2851_ENUM_VALUE2905 Enum2851 = 52
-	Enum2851_ENUM_VALUE2906 Enum2851 = 53
-	Enum2851_ENUM_VALUE2907 Enum2851 = 54
-	Enum2851_ENUM_VALUE2908 Enum2851 = 55
-	Enum2851_ENUM_VALUE2909 Enum2851 = 56
-	Enum2851_ENUM_VALUE2910 Enum2851 = 57
-	Enum2851_ENUM_VALUE2911 Enum2851 = 58
-	Enum2851_ENUM_VALUE2912 Enum2851 = 59
-	Enum2851_ENUM_VALUE2913 Enum2851 = 60
-	Enum2851_ENUM_VALUE2914 Enum2851 = 61
-	Enum2851_ENUM_VALUE2915 Enum2851 = 62
-	Enum2851_ENUM_VALUE2916 Enum2851 = 63
-	Enum2851_ENUM_VALUE2917 Enum2851 = 64
-	Enum2851_ENUM_VALUE2918 Enum2851 = 65
-	Enum2851_ENUM_VALUE2919 Enum2851 = 66
-	Enum2851_ENUM_VALUE2920 Enum2851 = 67
-	Enum2851_ENUM_VALUE2921 Enum2851 = 68
-	Enum2851_ENUM_VALUE2922 Enum2851 = 69
-	Enum2851_ENUM_VALUE2923 Enum2851 = 70
-	Enum2851_ENUM_VALUE2924 Enum2851 = 71
-	Enum2851_ENUM_VALUE2925 Enum2851 = 72
-	Enum2851_ENUM_VALUE2926 Enum2851 = 73
-	Enum2851_ENUM_VALUE2927 Enum2851 = 74
-	Enum2851_ENUM_VALUE2928 Enum2851 = 75
-	Enum2851_ENUM_VALUE2929 Enum2851 = 76
-	Enum2851_ENUM_VALUE2930 Enum2851 = 77
-	Enum2851_ENUM_VALUE2931 Enum2851 = 78
-	Enum2851_ENUM_VALUE2932 Enum2851 = 79
-	Enum2851_ENUM_VALUE2933 Enum2851 = 80
-	Enum2851_ENUM_VALUE2934 Enum2851 = 81
-	Enum2851_ENUM_VALUE2935 Enum2851 = 82
-	Enum2851_ENUM_VALUE2936 Enum2851 = 83
-	Enum2851_ENUM_VALUE2937 Enum2851 = 84
-	Enum2851_ENUM_VALUE2938 Enum2851 = 85
-	Enum2851_ENUM_VALUE2939 Enum2851 = 86
-	Enum2851_ENUM_VALUE2940 Enum2851 = 87
-	Enum2851_ENUM_VALUE2941 Enum2851 = 88
-	Enum2851_ENUM_VALUE2942 Enum2851 = 89
-	Enum2851_ENUM_VALUE2943 Enum2851 = 90
-	Enum2851_ENUM_VALUE2944 Enum2851 = 91
-	Enum2851_ENUM_VALUE2945 Enum2851 = 92
-	Enum2851_ENUM_VALUE2946 Enum2851 = 93
-	Enum2851_ENUM_VALUE2947 Enum2851 = 94
-	Enum2851_ENUM_VALUE2948 Enum2851 = 95
-	Enum2851_ENUM_VALUE2949 Enum2851 = 96
-	Enum2851_ENUM_VALUE2950 Enum2851 = 97
-	Enum2851_ENUM_VALUE2951 Enum2851 = 98
-	Enum2851_ENUM_VALUE2952 Enum2851 = 99
-	Enum2851_ENUM_VALUE2953 Enum2851 = 100
-	Enum2851_ENUM_VALUE2954 Enum2851 = 101
-	Enum2851_ENUM_VALUE2955 Enum2851 = 102
-	Enum2851_ENUM_VALUE2956 Enum2851 = 103
-	Enum2851_ENUM_VALUE2957 Enum2851 = 104
-	Enum2851_ENUM_VALUE2958 Enum2851 = 105
-	Enum2851_ENUM_VALUE2959 Enum2851 = 106
-	Enum2851_ENUM_VALUE2960 Enum2851 = 107
-	Enum2851_ENUM_VALUE2961 Enum2851 = 108
-	Enum2851_ENUM_VALUE2962 Enum2851 = 109
-	Enum2851_ENUM_VALUE2963 Enum2851 = 110
-	Enum2851_ENUM_VALUE2964 Enum2851 = 111
-	Enum2851_ENUM_VALUE2965 Enum2851 = 112
-	Enum2851_ENUM_VALUE2966 Enum2851 = 113
-	Enum2851_ENUM_VALUE2967 Enum2851 = 114
-	Enum2851_ENUM_VALUE2968 Enum2851 = 115
-	Enum2851_ENUM_VALUE2969 Enum2851 = 116
-	Enum2851_ENUM_VALUE2970 Enum2851 = 117
-	Enum2851_ENUM_VALUE2971 Enum2851 = 118
-	Enum2851_ENUM_VALUE2972 Enum2851 = 119
-)
-
-// Enum value maps for Enum2851.
-var (
-	Enum2851_name = map[int32]string{
-		0: "ENUM_VALUE2852",
-		// Duplicate value: 0: "ENUM_VALUE2853",
-		1:   "ENUM_VALUE2854",
-		2:   "ENUM_VALUE2855",
-		3:   "ENUM_VALUE2856",
-		4:   "ENUM_VALUE2857",
-		5:   "ENUM_VALUE2858",
-		6:   "ENUM_VALUE2859",
-		7:   "ENUM_VALUE2860",
-		8:   "ENUM_VALUE2861",
-		9:   "ENUM_VALUE2862",
-		10:  "ENUM_VALUE2863",
-		11:  "ENUM_VALUE2864",
-		12:  "ENUM_VALUE2865",
-		13:  "ENUM_VALUE2866",
-		14:  "ENUM_VALUE2867",
-		15:  "ENUM_VALUE2868",
-		16:  "ENUM_VALUE2869",
-		17:  "ENUM_VALUE2870",
-		18:  "ENUM_VALUE2871",
-		19:  "ENUM_VALUE2872",
-		20:  "ENUM_VALUE2873",
-		21:  "ENUM_VALUE2874",
-		22:  "ENUM_VALUE2875",
-		23:  "ENUM_VALUE2876",
-		24:  "ENUM_VALUE2877",
-		25:  "ENUM_VALUE2878",
-		26:  "ENUM_VALUE2879",
-		27:  "ENUM_VALUE2880",
-		28:  "ENUM_VALUE2881",
-		29:  "ENUM_VALUE2882",
-		30:  "ENUM_VALUE2883",
-		31:  "ENUM_VALUE2884",
-		32:  "ENUM_VALUE2885",
-		33:  "ENUM_VALUE2886",
-		34:  "ENUM_VALUE2887",
-		35:  "ENUM_VALUE2888",
-		36:  "ENUM_VALUE2889",
-		37:  "ENUM_VALUE2890",
-		38:  "ENUM_VALUE2891",
-		39:  "ENUM_VALUE2892",
-		40:  "ENUM_VALUE2893",
-		41:  "ENUM_VALUE2894",
-		42:  "ENUM_VALUE2895",
-		43:  "ENUM_VALUE2896",
-		44:  "ENUM_VALUE2897",
-		45:  "ENUM_VALUE2898",
-		46:  "ENUM_VALUE2899",
-		47:  "ENUM_VALUE2900",
-		48:  "ENUM_VALUE2901",
-		49:  "ENUM_VALUE2902",
-		50:  "ENUM_VALUE2903",
-		51:  "ENUM_VALUE2904",
-		52:  "ENUM_VALUE2905",
-		53:  "ENUM_VALUE2906",
-		54:  "ENUM_VALUE2907",
-		55:  "ENUM_VALUE2908",
-		56:  "ENUM_VALUE2909",
-		57:  "ENUM_VALUE2910",
-		58:  "ENUM_VALUE2911",
-		59:  "ENUM_VALUE2912",
-		60:  "ENUM_VALUE2913",
-		61:  "ENUM_VALUE2914",
-		62:  "ENUM_VALUE2915",
-		63:  "ENUM_VALUE2916",
-		64:  "ENUM_VALUE2917",
-		65:  "ENUM_VALUE2918",
-		66:  "ENUM_VALUE2919",
-		67:  "ENUM_VALUE2920",
-		68:  "ENUM_VALUE2921",
-		69:  "ENUM_VALUE2922",
-		70:  "ENUM_VALUE2923",
-		71:  "ENUM_VALUE2924",
-		72:  "ENUM_VALUE2925",
-		73:  "ENUM_VALUE2926",
-		74:  "ENUM_VALUE2927",
-		75:  "ENUM_VALUE2928",
-		76:  "ENUM_VALUE2929",
-		77:  "ENUM_VALUE2930",
-		78:  "ENUM_VALUE2931",
-		79:  "ENUM_VALUE2932",
-		80:  "ENUM_VALUE2933",
-		81:  "ENUM_VALUE2934",
-		82:  "ENUM_VALUE2935",
-		83:  "ENUM_VALUE2936",
-		84:  "ENUM_VALUE2937",
-		85:  "ENUM_VALUE2938",
-		86:  "ENUM_VALUE2939",
-		87:  "ENUM_VALUE2940",
-		88:  "ENUM_VALUE2941",
-		89:  "ENUM_VALUE2942",
-		90:  "ENUM_VALUE2943",
-		91:  "ENUM_VALUE2944",
-		92:  "ENUM_VALUE2945",
-		93:  "ENUM_VALUE2946",
-		94:  "ENUM_VALUE2947",
-		95:  "ENUM_VALUE2948",
-		96:  "ENUM_VALUE2949",
-		97:  "ENUM_VALUE2950",
-		98:  "ENUM_VALUE2951",
-		99:  "ENUM_VALUE2952",
-		100: "ENUM_VALUE2953",
-		101: "ENUM_VALUE2954",
-		102: "ENUM_VALUE2955",
-		103: "ENUM_VALUE2956",
-		104: "ENUM_VALUE2957",
-		105: "ENUM_VALUE2958",
-		106: "ENUM_VALUE2959",
-		107: "ENUM_VALUE2960",
-		108: "ENUM_VALUE2961",
-		109: "ENUM_VALUE2962",
-		110: "ENUM_VALUE2963",
-		111: "ENUM_VALUE2964",
-		112: "ENUM_VALUE2965",
-		113: "ENUM_VALUE2966",
-		114: "ENUM_VALUE2967",
-		115: "ENUM_VALUE2968",
-		116: "ENUM_VALUE2969",
-		117: "ENUM_VALUE2970",
-		118: "ENUM_VALUE2971",
-		119: "ENUM_VALUE2972",
-	}
-	Enum2851_value = map[string]int32{
-		"ENUM_VALUE2852": 0,
-		"ENUM_VALUE2853": 0,
-		"ENUM_VALUE2854": 1,
-		"ENUM_VALUE2855": 2,
-		"ENUM_VALUE2856": 3,
-		"ENUM_VALUE2857": 4,
-		"ENUM_VALUE2858": 5,
-		"ENUM_VALUE2859": 6,
-		"ENUM_VALUE2860": 7,
-		"ENUM_VALUE2861": 8,
-		"ENUM_VALUE2862": 9,
-		"ENUM_VALUE2863": 10,
-		"ENUM_VALUE2864": 11,
-		"ENUM_VALUE2865": 12,
-		"ENUM_VALUE2866": 13,
-		"ENUM_VALUE2867": 14,
-		"ENUM_VALUE2868": 15,
-		"ENUM_VALUE2869": 16,
-		"ENUM_VALUE2870": 17,
-		"ENUM_VALUE2871": 18,
-		"ENUM_VALUE2872": 19,
-		"ENUM_VALUE2873": 20,
-		"ENUM_VALUE2874": 21,
-		"ENUM_VALUE2875": 22,
-		"ENUM_VALUE2876": 23,
-		"ENUM_VALUE2877": 24,
-		"ENUM_VALUE2878": 25,
-		"ENUM_VALUE2879": 26,
-		"ENUM_VALUE2880": 27,
-		"ENUM_VALUE2881": 28,
-		"ENUM_VALUE2882": 29,
-		"ENUM_VALUE2883": 30,
-		"ENUM_VALUE2884": 31,
-		"ENUM_VALUE2885": 32,
-		"ENUM_VALUE2886": 33,
-		"ENUM_VALUE2887": 34,
-		"ENUM_VALUE2888": 35,
-		"ENUM_VALUE2889": 36,
-		"ENUM_VALUE2890": 37,
-		"ENUM_VALUE2891": 38,
-		"ENUM_VALUE2892": 39,
-		"ENUM_VALUE2893": 40,
-		"ENUM_VALUE2894": 41,
-		"ENUM_VALUE2895": 42,
-		"ENUM_VALUE2896": 43,
-		"ENUM_VALUE2897": 44,
-		"ENUM_VALUE2898": 45,
-		"ENUM_VALUE2899": 46,
-		"ENUM_VALUE2900": 47,
-		"ENUM_VALUE2901": 48,
-		"ENUM_VALUE2902": 49,
-		"ENUM_VALUE2903": 50,
-		"ENUM_VALUE2904": 51,
-		"ENUM_VALUE2905": 52,
-		"ENUM_VALUE2906": 53,
-		"ENUM_VALUE2907": 54,
-		"ENUM_VALUE2908": 55,
-		"ENUM_VALUE2909": 56,
-		"ENUM_VALUE2910": 57,
-		"ENUM_VALUE2911": 58,
-		"ENUM_VALUE2912": 59,
-		"ENUM_VALUE2913": 60,
-		"ENUM_VALUE2914": 61,
-		"ENUM_VALUE2915": 62,
-		"ENUM_VALUE2916": 63,
-		"ENUM_VALUE2917": 64,
-		"ENUM_VALUE2918": 65,
-		"ENUM_VALUE2919": 66,
-		"ENUM_VALUE2920": 67,
-		"ENUM_VALUE2921": 68,
-		"ENUM_VALUE2922": 69,
-		"ENUM_VALUE2923": 70,
-		"ENUM_VALUE2924": 71,
-		"ENUM_VALUE2925": 72,
-		"ENUM_VALUE2926": 73,
-		"ENUM_VALUE2927": 74,
-		"ENUM_VALUE2928": 75,
-		"ENUM_VALUE2929": 76,
-		"ENUM_VALUE2930": 77,
-		"ENUM_VALUE2931": 78,
-		"ENUM_VALUE2932": 79,
-		"ENUM_VALUE2933": 80,
-		"ENUM_VALUE2934": 81,
-		"ENUM_VALUE2935": 82,
-		"ENUM_VALUE2936": 83,
-		"ENUM_VALUE2937": 84,
-		"ENUM_VALUE2938": 85,
-		"ENUM_VALUE2939": 86,
-		"ENUM_VALUE2940": 87,
-		"ENUM_VALUE2941": 88,
-		"ENUM_VALUE2942": 89,
-		"ENUM_VALUE2943": 90,
-		"ENUM_VALUE2944": 91,
-		"ENUM_VALUE2945": 92,
-		"ENUM_VALUE2946": 93,
-		"ENUM_VALUE2947": 94,
-		"ENUM_VALUE2948": 95,
-		"ENUM_VALUE2949": 96,
-		"ENUM_VALUE2950": 97,
-		"ENUM_VALUE2951": 98,
-		"ENUM_VALUE2952": 99,
-		"ENUM_VALUE2953": 100,
-		"ENUM_VALUE2954": 101,
-		"ENUM_VALUE2955": 102,
-		"ENUM_VALUE2956": 103,
-		"ENUM_VALUE2957": 104,
-		"ENUM_VALUE2958": 105,
-		"ENUM_VALUE2959": 106,
-		"ENUM_VALUE2960": 107,
-		"ENUM_VALUE2961": 108,
-		"ENUM_VALUE2962": 109,
-		"ENUM_VALUE2963": 110,
-		"ENUM_VALUE2964": 111,
-		"ENUM_VALUE2965": 112,
-		"ENUM_VALUE2966": 113,
-		"ENUM_VALUE2967": 114,
-		"ENUM_VALUE2968": 115,
-		"ENUM_VALUE2969": 116,
-		"ENUM_VALUE2970": 117,
-		"ENUM_VALUE2971": 118,
-		"ENUM_VALUE2972": 119,
-	}
-)
-
-func (x Enum2851) Enum() *Enum2851 {
-	p := new(Enum2851)
-	*p = x
-	return p
-}
-
-func (x Enum2851) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum2851) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[4].Descriptor()
-}
-
-func (Enum2851) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[4]
-}
-
-func (x Enum2851) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum2851) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum2851(num)
-	return nil
-}
-
-// Deprecated: Use Enum2851.Descriptor instead.
-func (Enum2851) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{4}
-}
-
-type Enum2602 int32
-
-const (
-	Enum2602_ENUM_VALUE2603 Enum2602 = 0
-	Enum2602_ENUM_VALUE2604 Enum2602 = 1
-	Enum2602_ENUM_VALUE2605 Enum2602 = 2
-	Enum2602_ENUM_VALUE2606 Enum2602 = 3
-	Enum2602_ENUM_VALUE2607 Enum2602 = 4
-	Enum2602_ENUM_VALUE2608 Enum2602 = 5
-	Enum2602_ENUM_VALUE2609 Enum2602 = 6
-	Enum2602_ENUM_VALUE2610 Enum2602 = 7
-	Enum2602_ENUM_VALUE2611 Enum2602 = 8
-	Enum2602_ENUM_VALUE2612 Enum2602 = 9
-	Enum2602_ENUM_VALUE2613 Enum2602 = 10
-	Enum2602_ENUM_VALUE2614 Enum2602 = 11
-)
-
-// Enum value maps for Enum2602.
-var (
-	Enum2602_name = map[int32]string{
-		0:  "ENUM_VALUE2603",
-		1:  "ENUM_VALUE2604",
-		2:  "ENUM_VALUE2605",
-		3:  "ENUM_VALUE2606",
-		4:  "ENUM_VALUE2607",
-		5:  "ENUM_VALUE2608",
-		6:  "ENUM_VALUE2609",
-		7:  "ENUM_VALUE2610",
-		8:  "ENUM_VALUE2611",
-		9:  "ENUM_VALUE2612",
-		10: "ENUM_VALUE2613",
-		11: "ENUM_VALUE2614",
-	}
-	Enum2602_value = map[string]int32{
-		"ENUM_VALUE2603": 0,
-		"ENUM_VALUE2604": 1,
-		"ENUM_VALUE2605": 2,
-		"ENUM_VALUE2606": 3,
-		"ENUM_VALUE2607": 4,
-		"ENUM_VALUE2608": 5,
-		"ENUM_VALUE2609": 6,
-		"ENUM_VALUE2610": 7,
-		"ENUM_VALUE2611": 8,
-		"ENUM_VALUE2612": 9,
-		"ENUM_VALUE2613": 10,
-		"ENUM_VALUE2614": 11,
-	}
-)
-
-func (x Enum2602) Enum() *Enum2602 {
-	p := new(Enum2602)
-	*p = x
-	return p
-}
-
-func (x Enum2602) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum2602) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[5].Descriptor()
-}
-
-func (Enum2602) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[5]
-}
-
-func (x Enum2602) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum2602) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum2602(num)
-	return nil
-}
-
-// Deprecated: Use Enum2602.Descriptor instead.
-func (Enum2602) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{5}
-}
-
-type Enum3071 int32
-
-const (
-	Enum3071_ENUM_VALUE3072 Enum3071 = 1
-	Enum3071_ENUM_VALUE3073 Enum3071 = 2
-	Enum3071_ENUM_VALUE3074 Enum3071 = 3
-	Enum3071_ENUM_VALUE3075 Enum3071 = 4
-	Enum3071_ENUM_VALUE3076 Enum3071 = 5
-	Enum3071_ENUM_VALUE3077 Enum3071 = 6
-	Enum3071_ENUM_VALUE3078 Enum3071 = 7
-	Enum3071_ENUM_VALUE3079 Enum3071 = 8
-	Enum3071_ENUM_VALUE3080 Enum3071 = 9
-	Enum3071_ENUM_VALUE3081 Enum3071 = 10
-	Enum3071_ENUM_VALUE3082 Enum3071 = 11
-	Enum3071_ENUM_VALUE3083 Enum3071 = 12
-	Enum3071_ENUM_VALUE3084 Enum3071 = 13
-	Enum3071_ENUM_VALUE3085 Enum3071 = 14
-	Enum3071_ENUM_VALUE3086 Enum3071 = 15
-	Enum3071_ENUM_VALUE3087 Enum3071 = 16
-	Enum3071_ENUM_VALUE3088 Enum3071 = 17
-	Enum3071_ENUM_VALUE3089 Enum3071 = 18
-	Enum3071_ENUM_VALUE3090 Enum3071 = 19
-	Enum3071_ENUM_VALUE3091 Enum3071 = 20
-	Enum3071_ENUM_VALUE3092 Enum3071 = 21
-	Enum3071_ENUM_VALUE3093 Enum3071 = 22
-	Enum3071_ENUM_VALUE3094 Enum3071 = 23
-	Enum3071_ENUM_VALUE3095 Enum3071 = 24
-	Enum3071_ENUM_VALUE3096 Enum3071 = 25
-	Enum3071_ENUM_VALUE3097 Enum3071 = 26
-	Enum3071_ENUM_VALUE3098 Enum3071 = 27
-	Enum3071_ENUM_VALUE3099 Enum3071 = 28
-)
-
-// Enum value maps for Enum3071.
-var (
-	Enum3071_name = map[int32]string{
-		1:  "ENUM_VALUE3072",
-		2:  "ENUM_VALUE3073",
-		3:  "ENUM_VALUE3074",
-		4:  "ENUM_VALUE3075",
-		5:  "ENUM_VALUE3076",
-		6:  "ENUM_VALUE3077",
-		7:  "ENUM_VALUE3078",
-		8:  "ENUM_VALUE3079",
-		9:  "ENUM_VALUE3080",
-		10: "ENUM_VALUE3081",
-		11: "ENUM_VALUE3082",
-		12: "ENUM_VALUE3083",
-		13: "ENUM_VALUE3084",
-		14: "ENUM_VALUE3085",
-		15: "ENUM_VALUE3086",
-		16: "ENUM_VALUE3087",
-		17: "ENUM_VALUE3088",
-		18: "ENUM_VALUE3089",
-		19: "ENUM_VALUE3090",
-		20: "ENUM_VALUE3091",
-		21: "ENUM_VALUE3092",
-		22: "ENUM_VALUE3093",
-		23: "ENUM_VALUE3094",
-		24: "ENUM_VALUE3095",
-		25: "ENUM_VALUE3096",
-		26: "ENUM_VALUE3097",
-		27: "ENUM_VALUE3098",
-		28: "ENUM_VALUE3099",
-	}
-	Enum3071_value = map[string]int32{
-		"ENUM_VALUE3072": 1,
-		"ENUM_VALUE3073": 2,
-		"ENUM_VALUE3074": 3,
-		"ENUM_VALUE3075": 4,
-		"ENUM_VALUE3076": 5,
-		"ENUM_VALUE3077": 6,
-		"ENUM_VALUE3078": 7,
-		"ENUM_VALUE3079": 8,
-		"ENUM_VALUE3080": 9,
-		"ENUM_VALUE3081": 10,
-		"ENUM_VALUE3082": 11,
-		"ENUM_VALUE3083": 12,
-		"ENUM_VALUE3084": 13,
-		"ENUM_VALUE3085": 14,
-		"ENUM_VALUE3086": 15,
-		"ENUM_VALUE3087": 16,
-		"ENUM_VALUE3088": 17,
-		"ENUM_VALUE3089": 18,
-		"ENUM_VALUE3090": 19,
-		"ENUM_VALUE3091": 20,
-		"ENUM_VALUE3092": 21,
-		"ENUM_VALUE3093": 22,
-		"ENUM_VALUE3094": 23,
-		"ENUM_VALUE3095": 24,
-		"ENUM_VALUE3096": 25,
-		"ENUM_VALUE3097": 26,
-		"ENUM_VALUE3098": 27,
-		"ENUM_VALUE3099": 28,
-	}
-)
-
-func (x Enum3071) Enum() *Enum3071 {
-	p := new(Enum3071)
-	*p = x
-	return p
-}
-
-func (x Enum3071) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum3071) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[6].Descriptor()
-}
-
-func (Enum3071) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[6]
-}
-
-func (x Enum3071) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum3071) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum3071(num)
-	return nil
-}
-
-// Deprecated: Use Enum3071.Descriptor instead.
-func (Enum3071) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{6}
-}
-
-type Enum3805 int32
-
-const (
-	Enum3805_ENUM_VALUE3806 Enum3805 = 0
-	Enum3805_ENUM_VALUE3807 Enum3805 = 1
-	Enum3805_ENUM_VALUE3808 Enum3805 = 2
-	Enum3805_ENUM_VALUE3809 Enum3805 = 3
-	Enum3805_ENUM_VALUE3810 Enum3805 = 4
-	Enum3805_ENUM_VALUE3811 Enum3805 = 5
-	Enum3805_ENUM_VALUE3812 Enum3805 = 6
-	Enum3805_ENUM_VALUE3813 Enum3805 = 7
-	Enum3805_ENUM_VALUE3814 Enum3805 = 8
-	Enum3805_ENUM_VALUE3815 Enum3805 = 9
-	Enum3805_ENUM_VALUE3816 Enum3805 = 11
-	Enum3805_ENUM_VALUE3817 Enum3805 = 10
-)
-
-// Enum value maps for Enum3805.
-var (
-	Enum3805_name = map[int32]string{
-		0:  "ENUM_VALUE3806",
-		1:  "ENUM_VALUE3807",
-		2:  "ENUM_VALUE3808",
-		3:  "ENUM_VALUE3809",
-		4:  "ENUM_VALUE3810",
-		5:  "ENUM_VALUE3811",
-		6:  "ENUM_VALUE3812",
-		7:  "ENUM_VALUE3813",
-		8:  "ENUM_VALUE3814",
-		9:  "ENUM_VALUE3815",
-		11: "ENUM_VALUE3816",
-		10: "ENUM_VALUE3817",
-	}
-	Enum3805_value = map[string]int32{
-		"ENUM_VALUE3806": 0,
-		"ENUM_VALUE3807": 1,
-		"ENUM_VALUE3808": 2,
-		"ENUM_VALUE3809": 3,
-		"ENUM_VALUE3810": 4,
-		"ENUM_VALUE3811": 5,
-		"ENUM_VALUE3812": 6,
-		"ENUM_VALUE3813": 7,
-		"ENUM_VALUE3814": 8,
-		"ENUM_VALUE3815": 9,
-		"ENUM_VALUE3816": 11,
-		"ENUM_VALUE3817": 10,
-	}
-)
-
-func (x Enum3805) Enum() *Enum3805 {
-	p := new(Enum3805)
-	*p = x
-	return p
-}
-
-func (x Enum3805) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum3805) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[7].Descriptor()
-}
-
-func (Enum3805) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[7]
-}
-
-func (x Enum3805) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum3805) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum3805(num)
-	return nil
-}
-
-// Deprecated: Use Enum3805.Descriptor instead.
-func (Enum3805) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{7}
-}
-
-type Enum3783 int32
-
-const (
-	Enum3783_ENUM_VALUE3784 Enum3783 = 0
-	Enum3783_ENUM_VALUE3785 Enum3783 = 1
-	Enum3783_ENUM_VALUE3786 Enum3783 = 2
-	Enum3783_ENUM_VALUE3787 Enum3783 = 3
-	Enum3783_ENUM_VALUE3788 Enum3783 = 4
-	Enum3783_ENUM_VALUE3789 Enum3783 = 5
-	Enum3783_ENUM_VALUE3790 Enum3783 = 6
-	Enum3783_ENUM_VALUE3791 Enum3783 = 7
-	Enum3783_ENUM_VALUE3792 Enum3783 = 8
-	Enum3783_ENUM_VALUE3793 Enum3783 = 9
-	Enum3783_ENUM_VALUE3794 Enum3783 = 10
-	Enum3783_ENUM_VALUE3795 Enum3783 = 11
-	Enum3783_ENUM_VALUE3796 Enum3783 = 12
-	Enum3783_ENUM_VALUE3797 Enum3783 = 13
-	Enum3783_ENUM_VALUE3798 Enum3783 = 14
-	Enum3783_ENUM_VALUE3799 Enum3783 = 15
-	Enum3783_ENUM_VALUE3800 Enum3783 = 16
-	Enum3783_ENUM_VALUE3801 Enum3783 = 20
-	Enum3783_ENUM_VALUE3802 Enum3783 = 21
-	Enum3783_ENUM_VALUE3803 Enum3783 = 50
-)
-
-// Enum value maps for Enum3783.
-var (
-	Enum3783_name = map[int32]string{
-		0:  "ENUM_VALUE3784",
-		1:  "ENUM_VALUE3785",
-		2:  "ENUM_VALUE3786",
-		3:  "ENUM_VALUE3787",
-		4:  "ENUM_VALUE3788",
-		5:  "ENUM_VALUE3789",
-		6:  "ENUM_VALUE3790",
-		7:  "ENUM_VALUE3791",
-		8:  "ENUM_VALUE3792",
-		9:  "ENUM_VALUE3793",
-		10: "ENUM_VALUE3794",
-		11: "ENUM_VALUE3795",
-		12: "ENUM_VALUE3796",
-		13: "ENUM_VALUE3797",
-		14: "ENUM_VALUE3798",
-		15: "ENUM_VALUE3799",
-		16: "ENUM_VALUE3800",
-		20: "ENUM_VALUE3801",
-		21: "ENUM_VALUE3802",
-		50: "ENUM_VALUE3803",
-	}
-	Enum3783_value = map[string]int32{
-		"ENUM_VALUE3784": 0,
-		"ENUM_VALUE3785": 1,
-		"ENUM_VALUE3786": 2,
-		"ENUM_VALUE3787": 3,
-		"ENUM_VALUE3788": 4,
-		"ENUM_VALUE3789": 5,
-		"ENUM_VALUE3790": 6,
-		"ENUM_VALUE3791": 7,
-		"ENUM_VALUE3792": 8,
-		"ENUM_VALUE3793": 9,
-		"ENUM_VALUE3794": 10,
-		"ENUM_VALUE3795": 11,
-		"ENUM_VALUE3796": 12,
-		"ENUM_VALUE3797": 13,
-		"ENUM_VALUE3798": 14,
-		"ENUM_VALUE3799": 15,
-		"ENUM_VALUE3800": 16,
-		"ENUM_VALUE3801": 20,
-		"ENUM_VALUE3802": 21,
-		"ENUM_VALUE3803": 50,
-	}
-)
-
-func (x Enum3783) Enum() *Enum3783 {
-	p := new(Enum3783)
-	*p = x
-	return p
-}
-
-func (x Enum3783) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum3783) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[8].Descriptor()
-}
-
-func (Enum3783) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[8]
-}
-
-func (x Enum3783) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum3783) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum3783(num)
-	return nil
-}
-
-// Deprecated: Use Enum3783.Descriptor instead.
-func (Enum3783) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{8}
-}
-
-type Enum3851 int32
-
-const (
-	Enum3851_ENUM_VALUE3852 Enum3851 = 0
-	Enum3851_ENUM_VALUE3853 Enum3851 = 1
-	Enum3851_ENUM_VALUE3854 Enum3851 = 2
-	Enum3851_ENUM_VALUE3855 Enum3851 = 3
-	Enum3851_ENUM_VALUE3856 Enum3851 = 4
-	Enum3851_ENUM_VALUE3857 Enum3851 = 5
-	Enum3851_ENUM_VALUE3858 Enum3851 = 6
-	Enum3851_ENUM_VALUE3859 Enum3851 = 7
-	Enum3851_ENUM_VALUE3860 Enum3851 = 8
-	Enum3851_ENUM_VALUE3861 Enum3851 = 9
-	Enum3851_ENUM_VALUE3862 Enum3851 = 10
-	Enum3851_ENUM_VALUE3863 Enum3851 = 11
-	Enum3851_ENUM_VALUE3864 Enum3851 = 12
-	Enum3851_ENUM_VALUE3865 Enum3851 = 13
-	Enum3851_ENUM_VALUE3866 Enum3851 = 14
-	Enum3851_ENUM_VALUE3867 Enum3851 = 15
-	Enum3851_ENUM_VALUE3868 Enum3851 = 16
-	Enum3851_ENUM_VALUE3869 Enum3851 = 17
-)
-
-// Enum value maps for Enum3851.
-var (
-	Enum3851_name = map[int32]string{
-		0:  "ENUM_VALUE3852",
-		1:  "ENUM_VALUE3853",
-		2:  "ENUM_VALUE3854",
-		3:  "ENUM_VALUE3855",
-		4:  "ENUM_VALUE3856",
-		5:  "ENUM_VALUE3857",
-		6:  "ENUM_VALUE3858",
-		7:  "ENUM_VALUE3859",
-		8:  "ENUM_VALUE3860",
-		9:  "ENUM_VALUE3861",
-		10: "ENUM_VALUE3862",
-		11: "ENUM_VALUE3863",
-		12: "ENUM_VALUE3864",
-		13: "ENUM_VALUE3865",
-		14: "ENUM_VALUE3866",
-		15: "ENUM_VALUE3867",
-		16: "ENUM_VALUE3868",
-		17: "ENUM_VALUE3869",
-	}
-	Enum3851_value = map[string]int32{
-		"ENUM_VALUE3852": 0,
-		"ENUM_VALUE3853": 1,
-		"ENUM_VALUE3854": 2,
-		"ENUM_VALUE3855": 3,
-		"ENUM_VALUE3856": 4,
-		"ENUM_VALUE3857": 5,
-		"ENUM_VALUE3858": 6,
-		"ENUM_VALUE3859": 7,
-		"ENUM_VALUE3860": 8,
-		"ENUM_VALUE3861": 9,
-		"ENUM_VALUE3862": 10,
-		"ENUM_VALUE3863": 11,
-		"ENUM_VALUE3864": 12,
-		"ENUM_VALUE3865": 13,
-		"ENUM_VALUE3866": 14,
-		"ENUM_VALUE3867": 15,
-		"ENUM_VALUE3868": 16,
-		"ENUM_VALUE3869": 17,
-	}
-)
-
-func (x Enum3851) Enum() *Enum3851 {
-	p := new(Enum3851)
-	*p = x
-	return p
-}
-
-func (x Enum3851) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum3851) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[9].Descriptor()
-}
-
-func (Enum3851) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[9]
-}
-
-func (x Enum3851) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum3851) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum3851(num)
-	return nil
-}
-
-// Deprecated: Use Enum3851.Descriptor instead.
-func (Enum3851) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{9}
-}
-
-type Enum5862 int32
-
-const (
-	Enum5862_ENUM_VALUE5863 Enum5862 = 1
-	Enum5862_ENUM_VALUE5864 Enum5862 = 2
-	Enum5862_ENUM_VALUE5865 Enum5862 = 3
-)
-
-// Enum value maps for Enum5862.
-var (
-	Enum5862_name = map[int32]string{
-		1: "ENUM_VALUE5863",
-		2: "ENUM_VALUE5864",
-		3: "ENUM_VALUE5865",
-	}
-	Enum5862_value = map[string]int32{
-		"ENUM_VALUE5863": 1,
-		"ENUM_VALUE5864": 2,
-		"ENUM_VALUE5865": 3,
-	}
-)
-
-func (x Enum5862) Enum() *Enum5862 {
-	p := new(Enum5862)
-	*p = x
-	return p
-}
-
-func (x Enum5862) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum5862) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[10].Descriptor()
-}
-
-func (Enum5862) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[10]
-}
-
-func (x Enum5862) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum5862) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum5862(num)
-	return nil
-}
-
-// Deprecated: Use Enum5862.Descriptor instead.
-func (Enum5862) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{10}
-}
-
-type Enum5868 int32
-
-const (
-	Enum5868_ENUM_VALUE5869 Enum5868 = 0
-	Enum5868_ENUM_VALUE5870 Enum5868 = 1
-	Enum5868_ENUM_VALUE5871 Enum5868 = 2
-	Enum5868_ENUM_VALUE5872 Enum5868 = 3
-)
-
-// Enum value maps for Enum5868.
-var (
-	Enum5868_name = map[int32]string{
-		0: "ENUM_VALUE5869",
-		1: "ENUM_VALUE5870",
-		2: "ENUM_VALUE5871",
-		3: "ENUM_VALUE5872",
-	}
-	Enum5868_value = map[string]int32{
-		"ENUM_VALUE5869": 0,
-		"ENUM_VALUE5870": 1,
-		"ENUM_VALUE5871": 2,
-		"ENUM_VALUE5872": 3,
-	}
-)
-
-func (x Enum5868) Enum() *Enum5868 {
-	p := new(Enum5868)
-	*p = x
-	return p
-}
-
-func (x Enum5868) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum5868) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[11].Descriptor()
-}
-
-func (Enum5868) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[11]
-}
-
-func (x Enum5868) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum5868) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum5868(num)
-	return nil
-}
-
-// Deprecated: Use Enum5868.Descriptor instead.
-func (Enum5868) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{11}
-}
-
-type Enum5873 int32
-
-const (
-	Enum5873_ENUM_VALUE5874 Enum5873 = 0
-	Enum5873_ENUM_VALUE5875 Enum5873 = 1
-	Enum5873_ENUM_VALUE5876 Enum5873 = 2
-)
-
-// Enum value maps for Enum5873.
-var (
-	Enum5873_name = map[int32]string{
-		0: "ENUM_VALUE5874",
-		1: "ENUM_VALUE5875",
-		2: "ENUM_VALUE5876",
-	}
-	Enum5873_value = map[string]int32{
-		"ENUM_VALUE5874": 0,
-		"ENUM_VALUE5875": 1,
-		"ENUM_VALUE5876": 2,
-	}
-)
-
-func (x Enum5873) Enum() *Enum5873 {
-	p := new(Enum5873)
-	*p = x
-	return p
-}
-
-func (x Enum5873) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum5873) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[12].Descriptor()
-}
-
-func (Enum5873) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[12]
-}
-
-func (x Enum5873) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum5873) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum5873(num)
-	return nil
-}
-
-// Deprecated: Use Enum5873.Descriptor instead.
-func (Enum5873) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{12}
-}
-
-type Enum5904 int32
-
-const (
-	Enum5904_ENUM_VALUE5905 Enum5904 = 0
-	Enum5904_ENUM_VALUE5906 Enum5904 = 1
-)
-
-// Enum value maps for Enum5904.
-var (
-	Enum5904_name = map[int32]string{
-		0: "ENUM_VALUE5905",
-		1: "ENUM_VALUE5906",
-	}
-	Enum5904_value = map[string]int32{
-		"ENUM_VALUE5905": 0,
-		"ENUM_VALUE5906": 1,
-	}
-)
-
-func (x Enum5904) Enum() *Enum5904 {
-	p := new(Enum5904)
-	*p = x
-	return p
-}
-
-func (x Enum5904) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum5904) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[13].Descriptor()
-}
-
-func (Enum5904) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[13]
-}
-
-func (x Enum5904) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum5904) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum5904(num)
-	return nil
-}
-
-// Deprecated: Use Enum5904.Descriptor instead.
-func (Enum5904) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{13}
-}
-
-type Enum5909 int32
-
-const (
-	Enum5909_ENUM_VALUE5910 Enum5909 = 0
-	Enum5909_ENUM_VALUE5911 Enum5909 = 1
-)
-
-// Enum value maps for Enum5909.
-var (
-	Enum5909_name = map[int32]string{
-		0: "ENUM_VALUE5910",
-		1: "ENUM_VALUE5911",
-	}
-	Enum5909_value = map[string]int32{
-		"ENUM_VALUE5910": 0,
-		"ENUM_VALUE5911": 1,
-	}
-)
-
-func (x Enum5909) Enum() *Enum5909 {
-	p := new(Enum5909)
-	*p = x
-	return p
-}
-
-func (x Enum5909) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum5909) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[14].Descriptor()
-}
-
-func (Enum5909) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[14]
-}
-
-func (x Enum5909) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum5909) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum5909(num)
-	return nil
-}
-
-// Deprecated: Use Enum5909.Descriptor instead.
-func (Enum5909) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{14}
-}
-
-type Enum5912 int32
-
-const (
-	Enum5912_ENUM_VALUE5913 Enum5912 = 0
-	Enum5912_ENUM_VALUE5914 Enum5912 = 1
-)
-
-// Enum value maps for Enum5912.
-var (
-	Enum5912_name = map[int32]string{
-		0: "ENUM_VALUE5913",
-		1: "ENUM_VALUE5914",
-	}
-	Enum5912_value = map[string]int32{
-		"ENUM_VALUE5913": 0,
-		"ENUM_VALUE5914": 1,
-	}
-)
-
-func (x Enum5912) Enum() *Enum5912 {
-	p := new(Enum5912)
-	*p = x
-	return p
-}
-
-func (x Enum5912) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum5912) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[15].Descriptor()
-}
-
-func (Enum5912) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[15]
-}
-
-func (x Enum5912) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum5912) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum5912(num)
-	return nil
-}
-
-// Deprecated: Use Enum5912.Descriptor instead.
-func (Enum5912) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{15}
-}
-
-type Enum5915 int32
-
-const (
-	Enum5915_ENUM_VALUE5916 Enum5915 = 0
-	Enum5915_ENUM_VALUE5917 Enum5915 = 1
-	Enum5915_ENUM_VALUE5918 Enum5915 = 2
-	Enum5915_ENUM_VALUE5919 Enum5915 = 3
-)
-
-// Enum value maps for Enum5915.
-var (
-	Enum5915_name = map[int32]string{
-		0: "ENUM_VALUE5916",
-		1: "ENUM_VALUE5917",
-		2: "ENUM_VALUE5918",
-		3: "ENUM_VALUE5919",
-	}
-	Enum5915_value = map[string]int32{
-		"ENUM_VALUE5916": 0,
-		"ENUM_VALUE5917": 1,
-		"ENUM_VALUE5918": 2,
-		"ENUM_VALUE5919": 3,
-	}
-)
-
-func (x Enum5915) Enum() *Enum5915 {
-	p := new(Enum5915)
-	*p = x
-	return p
-}
-
-func (x Enum5915) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum5915) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[16].Descriptor()
-}
-
-func (Enum5915) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[16]
-}
-
-func (x Enum5915) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum5915) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum5915(num)
-	return nil
-}
-
-// Deprecated: Use Enum5915.Descriptor instead.
-func (Enum5915) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{16}
-}
-
-type Enum5920 int32
-
-const (
-	Enum5920_ENUM_VALUE5921 Enum5920 = 0
-	Enum5920_ENUM_VALUE5922 Enum5920 = 1
-)
-
-// Enum value maps for Enum5920.
-var (
-	Enum5920_name = map[int32]string{
-		0: "ENUM_VALUE5921",
-		1: "ENUM_VALUE5922",
-	}
-	Enum5920_value = map[string]int32{
-		"ENUM_VALUE5921": 0,
-		"ENUM_VALUE5922": 1,
-	}
-)
-
-func (x Enum5920) Enum() *Enum5920 {
-	p := new(Enum5920)
-	*p = x
-	return p
-}
-
-func (x Enum5920) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum5920) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[17].Descriptor()
-}
-
-func (Enum5920) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[17]
-}
-
-func (x Enum5920) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum5920) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum5920(num)
-	return nil
-}
-
-// Deprecated: Use Enum5920.Descriptor instead.
-func (Enum5920) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{17}
-}
-
-type Enum5923 int32
-
-const (
-	Enum5923_ENUM_VALUE5924 Enum5923 = 0
-	Enum5923_ENUM_VALUE5925 Enum5923 = 1
-	Enum5923_ENUM_VALUE5926 Enum5923 = 2
-	Enum5923_ENUM_VALUE5927 Enum5923 = 3
-)
-
-// Enum value maps for Enum5923.
-var (
-	Enum5923_name = map[int32]string{
-		0: "ENUM_VALUE5924",
-		1: "ENUM_VALUE5925",
-		2: "ENUM_VALUE5926",
-		3: "ENUM_VALUE5927",
-	}
-	Enum5923_value = map[string]int32{
-		"ENUM_VALUE5924": 0,
-		"ENUM_VALUE5925": 1,
-		"ENUM_VALUE5926": 2,
-		"ENUM_VALUE5927": 3,
-	}
-)
-
-func (x Enum5923) Enum() *Enum5923 {
-	p := new(Enum5923)
-	*p = x
-	return p
-}
-
-func (x Enum5923) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum5923) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[18].Descriptor()
-}
-
-func (Enum5923) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[18]
-}
-
-func (x Enum5923) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum5923) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum5923(num)
-	return nil
-}
-
-// Deprecated: Use Enum5923.Descriptor instead.
-func (Enum5923) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{18}
-}
-
-type Enum5928 int32
-
-const (
-	Enum5928_ENUM_VALUE5929 Enum5928 = 0
-	Enum5928_ENUM_VALUE5930 Enum5928 = 1
-)
-
-// Enum value maps for Enum5928.
-var (
-	Enum5928_name = map[int32]string{
-		0: "ENUM_VALUE5929",
-		1: "ENUM_VALUE5930",
-	}
-	Enum5928_value = map[string]int32{
-		"ENUM_VALUE5929": 0,
-		"ENUM_VALUE5930": 1,
-	}
-)
-
-func (x Enum5928) Enum() *Enum5928 {
-	p := new(Enum5928)
-	*p = x
-	return p
-}
-
-func (x Enum5928) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum5928) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[19].Descriptor()
-}
-
-func (Enum5928) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[19]
-}
-
-func (x Enum5928) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum5928) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum5928(num)
-	return nil
-}
-
-// Deprecated: Use Enum5928.Descriptor instead.
-func (Enum5928) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{19}
-}
-
-type Enum5931 int32
-
-const (
-	Enum5931_ENUM_VALUE5932 Enum5931 = 0
-	Enum5931_ENUM_VALUE5933 Enum5931 = 1
-	Enum5931_ENUM_VALUE5934 Enum5931 = 2
-)
-
-// Enum value maps for Enum5931.
-var (
-	Enum5931_name = map[int32]string{
-		0: "ENUM_VALUE5932",
-		1: "ENUM_VALUE5933",
-		2: "ENUM_VALUE5934",
-	}
-	Enum5931_value = map[string]int32{
-		"ENUM_VALUE5932": 0,
-		"ENUM_VALUE5933": 1,
-		"ENUM_VALUE5934": 2,
-	}
-)
-
-func (x Enum5931) Enum() *Enum5931 {
-	p := new(Enum5931)
-	*p = x
-	return p
-}
-
-func (x Enum5931) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum5931) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[20].Descriptor()
-}
-
-func (Enum5931) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[20]
-}
-
-func (x Enum5931) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum5931) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum5931(num)
-	return nil
-}
-
-// Deprecated: Use Enum5931.Descriptor instead.
-func (Enum5931) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{20}
-}
-
-type Enum5935 int32
-
-const (
-	Enum5935_ENUM_VALUE5936 Enum5935 = 0
-	Enum5935_ENUM_VALUE5937 Enum5935 = 1
-	Enum5935_ENUM_VALUE5938 Enum5935 = 2
-)
-
-// Enum value maps for Enum5935.
-var (
-	Enum5935_name = map[int32]string{
-		0: "ENUM_VALUE5936",
-		1: "ENUM_VALUE5937",
-		2: "ENUM_VALUE5938",
-	}
-	Enum5935_value = map[string]int32{
-		"ENUM_VALUE5936": 0,
-		"ENUM_VALUE5937": 1,
-		"ENUM_VALUE5938": 2,
-	}
-)
-
-func (x Enum5935) Enum() *Enum5935 {
-	p := new(Enum5935)
-	*p = x
-	return p
-}
-
-func (x Enum5935) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum5935) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[21].Descriptor()
-}
-
-func (Enum5935) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[21]
-}
-
-func (x Enum5935) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum5935) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum5935(num)
-	return nil
-}
-
-// Deprecated: Use Enum5935.Descriptor instead.
-func (Enum5935) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{21}
-}
-
-type Enum5939 int32
-
-const (
-	Enum5939_ENUM_VALUE5940 Enum5939 = 0
-	Enum5939_ENUM_VALUE5941 Enum5939 = 1
-	Enum5939_ENUM_VALUE5942 Enum5939 = 2
-	Enum5939_ENUM_VALUE5943 Enum5939 = 3
-	Enum5939_ENUM_VALUE5944 Enum5939 = 4
-	Enum5939_ENUM_VALUE5945 Enum5939 = 5
-)
-
-// Enum value maps for Enum5939.
-var (
-	Enum5939_name = map[int32]string{
-		0: "ENUM_VALUE5940",
-		1: "ENUM_VALUE5941",
-		2: "ENUM_VALUE5942",
-		3: "ENUM_VALUE5943",
-		4: "ENUM_VALUE5944",
-		5: "ENUM_VALUE5945",
-	}
-	Enum5939_value = map[string]int32{
-		"ENUM_VALUE5940": 0,
-		"ENUM_VALUE5941": 1,
-		"ENUM_VALUE5942": 2,
-		"ENUM_VALUE5943": 3,
-		"ENUM_VALUE5944": 4,
-		"ENUM_VALUE5945": 5,
-	}
-)
-
-func (x Enum5939) Enum() *Enum5939 {
-	p := new(Enum5939)
-	*p = x
-	return p
-}
-
-func (x Enum5939) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum5939) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[22].Descriptor()
-}
-
-func (Enum5939) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[22]
-}
-
-func (x Enum5939) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum5939) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum5939(num)
-	return nil
-}
-
-// Deprecated: Use Enum5939.Descriptor instead.
-func (Enum5939) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{22}
-}
-
-type Enum5946 int32
-
-const (
-	Enum5946_ENUM_VALUE5947 Enum5946 = 0
-	Enum5946_ENUM_VALUE5948 Enum5946 = 1
-	Enum5946_ENUM_VALUE5949 Enum5946 = 2
-	Enum5946_ENUM_VALUE5950 Enum5946 = 3
-	Enum5946_ENUM_VALUE5951 Enum5946 = 4
-	Enum5946_ENUM_VALUE5952 Enum5946 = 5
-	Enum5946_ENUM_VALUE5953 Enum5946 = 6
-	Enum5946_ENUM_VALUE5954 Enum5946 = 7
-	Enum5946_ENUM_VALUE5955 Enum5946 = 8
-	Enum5946_ENUM_VALUE5956 Enum5946 = 9
-)
-
-// Enum value maps for Enum5946.
-var (
-	Enum5946_name = map[int32]string{
-		0: "ENUM_VALUE5947",
-		1: "ENUM_VALUE5948",
-		2: "ENUM_VALUE5949",
-		3: "ENUM_VALUE5950",
-		4: "ENUM_VALUE5951",
-		5: "ENUM_VALUE5952",
-		6: "ENUM_VALUE5953",
-		7: "ENUM_VALUE5954",
-		8: "ENUM_VALUE5955",
-		9: "ENUM_VALUE5956",
-	}
-	Enum5946_value = map[string]int32{
-		"ENUM_VALUE5947": 0,
-		"ENUM_VALUE5948": 1,
-		"ENUM_VALUE5949": 2,
-		"ENUM_VALUE5950": 3,
-		"ENUM_VALUE5951": 4,
-		"ENUM_VALUE5952": 5,
-		"ENUM_VALUE5953": 6,
-		"ENUM_VALUE5954": 7,
-		"ENUM_VALUE5955": 8,
-		"ENUM_VALUE5956": 9,
-	}
-)
-
-func (x Enum5946) Enum() *Enum5946 {
-	p := new(Enum5946)
-	*p = x
-	return p
-}
-
-func (x Enum5946) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum5946) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[23].Descriptor()
-}
-
-func (Enum5946) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[23]
-}
-
-func (x Enum5946) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum5946) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum5946(num)
-	return nil
-}
-
-// Deprecated: Use Enum5946.Descriptor instead.
-func (Enum5946) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{23}
-}
-
-type Enum5957 int32
-
-const (
-	Enum5957_ENUM_VALUE5958 Enum5957 = 0
-	Enum5957_ENUM_VALUE5959 Enum5957 = 1
-	Enum5957_ENUM_VALUE5960 Enum5957 = 2
-	Enum5957_ENUM_VALUE5961 Enum5957 = 3
-)
-
-// Enum value maps for Enum5957.
-var (
-	Enum5957_name = map[int32]string{
-		0: "ENUM_VALUE5958",
-		1: "ENUM_VALUE5959",
-		2: "ENUM_VALUE5960",
-		3: "ENUM_VALUE5961",
-	}
-	Enum5957_value = map[string]int32{
-		"ENUM_VALUE5958": 0,
-		"ENUM_VALUE5959": 1,
-		"ENUM_VALUE5960": 2,
-		"ENUM_VALUE5961": 3,
-	}
-)
-
-func (x Enum5957) Enum() *Enum5957 {
-	p := new(Enum5957)
-	*p = x
-	return p
-}
-
-func (x Enum5957) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum5957) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[24].Descriptor()
-}
-
-func (Enum5957) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[24]
-}
-
-func (x Enum5957) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum5957) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum5957(num)
-	return nil
-}
-
-// Deprecated: Use Enum5957.Descriptor instead.
-func (Enum5957) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{24}
-}
-
-type Enum5962 int32
-
-const (
-	Enum5962_ENUM_VALUE5963 Enum5962 = 0
-	Enum5962_ENUM_VALUE5964 Enum5962 = 1
-)
-
-// Enum value maps for Enum5962.
-var (
-	Enum5962_name = map[int32]string{
-		0: "ENUM_VALUE5963",
-		1: "ENUM_VALUE5964",
-	}
-	Enum5962_value = map[string]int32{
-		"ENUM_VALUE5963": 0,
-		"ENUM_VALUE5964": 1,
-	}
-)
-
-func (x Enum5962) Enum() *Enum5962 {
-	p := new(Enum5962)
-	*p = x
-	return p
-}
-
-func (x Enum5962) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum5962) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[25].Descriptor()
-}
-
-func (Enum5962) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[25]
-}
-
-func (x Enum5962) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum5962) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum5962(num)
-	return nil
-}
-
-// Deprecated: Use Enum5962.Descriptor instead.
-func (Enum5962) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{25}
-}
-
-type Enum6025 int32
-
-const (
-	Enum6025_ENUM_VALUE6026 Enum6025 = 0
-	Enum6025_ENUM_VALUE6027 Enum6025 = 1
-	Enum6025_ENUM_VALUE6028 Enum6025 = 2
-	Enum6025_ENUM_VALUE6029 Enum6025 = 3
-	Enum6025_ENUM_VALUE6030 Enum6025 = 4
-	Enum6025_ENUM_VALUE6031 Enum6025 = 5
-	Enum6025_ENUM_VALUE6032 Enum6025 = 6
-	Enum6025_ENUM_VALUE6033 Enum6025 = 7
-	Enum6025_ENUM_VALUE6034 Enum6025 = 8
-	Enum6025_ENUM_VALUE6035 Enum6025 = 9
-	Enum6025_ENUM_VALUE6036 Enum6025 = 10
-	Enum6025_ENUM_VALUE6037 Enum6025 = 11
-	Enum6025_ENUM_VALUE6038 Enum6025 = 12
-	Enum6025_ENUM_VALUE6039 Enum6025 = 13
-	Enum6025_ENUM_VALUE6040 Enum6025 = 14
-	Enum6025_ENUM_VALUE6041 Enum6025 = 15
-	Enum6025_ENUM_VALUE6042 Enum6025 = 16
-	Enum6025_ENUM_VALUE6043 Enum6025 = 17
-	Enum6025_ENUM_VALUE6044 Enum6025 = 18
-	Enum6025_ENUM_VALUE6045 Enum6025 = 19
-	Enum6025_ENUM_VALUE6046 Enum6025 = 20
-	Enum6025_ENUM_VALUE6047 Enum6025 = 21
-)
-
-// Enum value maps for Enum6025.
-var (
-	Enum6025_name = map[int32]string{
-		0:  "ENUM_VALUE6026",
-		1:  "ENUM_VALUE6027",
-		2:  "ENUM_VALUE6028",
-		3:  "ENUM_VALUE6029",
-		4:  "ENUM_VALUE6030",
-		5:  "ENUM_VALUE6031",
-		6:  "ENUM_VALUE6032",
-		7:  "ENUM_VALUE6033",
-		8:  "ENUM_VALUE6034",
-		9:  "ENUM_VALUE6035",
-		10: "ENUM_VALUE6036",
-		11: "ENUM_VALUE6037",
-		12: "ENUM_VALUE6038",
-		13: "ENUM_VALUE6039",
-		14: "ENUM_VALUE6040",
-		15: "ENUM_VALUE6041",
-		16: "ENUM_VALUE6042",
-		17: "ENUM_VALUE6043",
-		18: "ENUM_VALUE6044",
-		19: "ENUM_VALUE6045",
-		20: "ENUM_VALUE6046",
-		21: "ENUM_VALUE6047",
-	}
-	Enum6025_value = map[string]int32{
-		"ENUM_VALUE6026": 0,
-		"ENUM_VALUE6027": 1,
-		"ENUM_VALUE6028": 2,
-		"ENUM_VALUE6029": 3,
-		"ENUM_VALUE6030": 4,
-		"ENUM_VALUE6031": 5,
-		"ENUM_VALUE6032": 6,
-		"ENUM_VALUE6033": 7,
-		"ENUM_VALUE6034": 8,
-		"ENUM_VALUE6035": 9,
-		"ENUM_VALUE6036": 10,
-		"ENUM_VALUE6037": 11,
-		"ENUM_VALUE6038": 12,
-		"ENUM_VALUE6039": 13,
-		"ENUM_VALUE6040": 14,
-		"ENUM_VALUE6041": 15,
-		"ENUM_VALUE6042": 16,
-		"ENUM_VALUE6043": 17,
-		"ENUM_VALUE6044": 18,
-		"ENUM_VALUE6045": 19,
-		"ENUM_VALUE6046": 20,
-		"ENUM_VALUE6047": 21,
-	}
-)
-
-func (x Enum6025) Enum() *Enum6025 {
-	p := new(Enum6025)
-	*p = x
-	return p
-}
-
-func (x Enum6025) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum6025) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[26].Descriptor()
-}
-
-func (Enum6025) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[26]
-}
-
-func (x Enum6025) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum6025) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum6025(num)
-	return nil
-}
-
-// Deprecated: Use Enum6025.Descriptor instead.
-func (Enum6025) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{26}
-}
-
-type Enum6111 int32
-
-const (
-	Enum6111_ENUM_VALUE6112 Enum6111 = 1
-	Enum6111_ENUM_VALUE6113 Enum6111 = 2
-	Enum6111_ENUM_VALUE6114 Enum6111 = 3
-	Enum6111_ENUM_VALUE6115 Enum6111 = 4
-	Enum6111_ENUM_VALUE6116 Enum6111 = 5
-	Enum6111_ENUM_VALUE6117 Enum6111 = 6
-	Enum6111_ENUM_VALUE6118 Enum6111 = 7
-	Enum6111_ENUM_VALUE6119 Enum6111 = 8
-	Enum6111_ENUM_VALUE6120 Enum6111 = 9
-	Enum6111_ENUM_VALUE6121 Enum6111 = 10
-	Enum6111_ENUM_VALUE6122 Enum6111 = 11
-	Enum6111_ENUM_VALUE6123 Enum6111 = 12
-	Enum6111_ENUM_VALUE6124 Enum6111 = 13
-	Enum6111_ENUM_VALUE6125 Enum6111 = 14
-)
-
-// Enum value maps for Enum6111.
-var (
-	Enum6111_name = map[int32]string{
-		1:  "ENUM_VALUE6112",
-		2:  "ENUM_VALUE6113",
-		3:  "ENUM_VALUE6114",
-		4:  "ENUM_VALUE6115",
-		5:  "ENUM_VALUE6116",
-		6:  "ENUM_VALUE6117",
-		7:  "ENUM_VALUE6118",
-		8:  "ENUM_VALUE6119",
-		9:  "ENUM_VALUE6120",
-		10: "ENUM_VALUE6121",
-		11: "ENUM_VALUE6122",
-		12: "ENUM_VALUE6123",
-		13: "ENUM_VALUE6124",
-		14: "ENUM_VALUE6125",
-	}
-	Enum6111_value = map[string]int32{
-		"ENUM_VALUE6112": 1,
-		"ENUM_VALUE6113": 2,
-		"ENUM_VALUE6114": 3,
-		"ENUM_VALUE6115": 4,
-		"ENUM_VALUE6116": 5,
-		"ENUM_VALUE6117": 6,
-		"ENUM_VALUE6118": 7,
-		"ENUM_VALUE6119": 8,
-		"ENUM_VALUE6120": 9,
-		"ENUM_VALUE6121": 10,
-		"ENUM_VALUE6122": 11,
-		"ENUM_VALUE6123": 12,
-		"ENUM_VALUE6124": 13,
-		"ENUM_VALUE6125": 14,
-	}
-)
-
-func (x Enum6111) Enum() *Enum6111 {
-	p := new(Enum6111)
-	*p = x
-	return p
-}
-
-func (x Enum6111) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum6111) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[27].Descriptor()
-}
-
-func (Enum6111) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[27]
-}
-
-func (x Enum6111) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum6111) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum6111(num)
-	return nil
-}
-
-// Deprecated: Use Enum6111.Descriptor instead.
-func (Enum6111) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{27}
-}
-
-type Enum6065 int32
-
-const (
-	Enum6065_ENUM_VALUE6066 Enum6065 = 0
-	Enum6065_ENUM_VALUE6067 Enum6065 = 1
-	Enum6065_ENUM_VALUE6068 Enum6065 = 2
-	Enum6065_ENUM_VALUE6069 Enum6065 = 3
-	Enum6065_ENUM_VALUE6070 Enum6065 = 4
-	Enum6065_ENUM_VALUE6071 Enum6065 = 5
-	Enum6065_ENUM_VALUE6072 Enum6065 = 6
-	Enum6065_ENUM_VALUE6073 Enum6065 = 7
-	Enum6065_ENUM_VALUE6074 Enum6065 = 8
-	Enum6065_ENUM_VALUE6075 Enum6065 = 9
-	Enum6065_ENUM_VALUE6076 Enum6065 = 10
-	Enum6065_ENUM_VALUE6077 Enum6065 = 11
-	Enum6065_ENUM_VALUE6078 Enum6065 = 12
-	Enum6065_ENUM_VALUE6079 Enum6065 = 13
-	Enum6065_ENUM_VALUE6080 Enum6065 = 14
-)
-
-// Enum value maps for Enum6065.
-var (
-	Enum6065_name = map[int32]string{
-		0:  "ENUM_VALUE6066",
-		1:  "ENUM_VALUE6067",
-		2:  "ENUM_VALUE6068",
-		3:  "ENUM_VALUE6069",
-		4:  "ENUM_VALUE6070",
-		5:  "ENUM_VALUE6071",
-		6:  "ENUM_VALUE6072",
-		7:  "ENUM_VALUE6073",
-		8:  "ENUM_VALUE6074",
-		9:  "ENUM_VALUE6075",
-		10: "ENUM_VALUE6076",
-		11: "ENUM_VALUE6077",
-		12: "ENUM_VALUE6078",
-		13: "ENUM_VALUE6079",
-		14: "ENUM_VALUE6080",
-	}
-	Enum6065_value = map[string]int32{
-		"ENUM_VALUE6066": 0,
-		"ENUM_VALUE6067": 1,
-		"ENUM_VALUE6068": 2,
-		"ENUM_VALUE6069": 3,
-		"ENUM_VALUE6070": 4,
-		"ENUM_VALUE6071": 5,
-		"ENUM_VALUE6072": 6,
-		"ENUM_VALUE6073": 7,
-		"ENUM_VALUE6074": 8,
-		"ENUM_VALUE6075": 9,
-		"ENUM_VALUE6076": 10,
-		"ENUM_VALUE6077": 11,
-		"ENUM_VALUE6078": 12,
-		"ENUM_VALUE6079": 13,
-		"ENUM_VALUE6080": 14,
-	}
-)
-
-func (x Enum6065) Enum() *Enum6065 {
-	p := new(Enum6065)
-	*p = x
-	return p
-}
-
-func (x Enum6065) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum6065) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[28].Descriptor()
-}
-
-func (Enum6065) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[28]
-}
-
-func (x Enum6065) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum6065) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum6065(num)
-	return nil
-}
-
-// Deprecated: Use Enum6065.Descriptor instead.
-func (Enum6065) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{28}
-}
-
-type Enum6130 int32
-
-const (
-	Enum6130_ENUM_VALUE6131 Enum6130 = 0
-	Enum6130_ENUM_VALUE6132 Enum6130 = 1
-)
-
-// Enum value maps for Enum6130.
-var (
-	Enum6130_name = map[int32]string{
-		0: "ENUM_VALUE6131",
-		1: "ENUM_VALUE6132",
-	}
-	Enum6130_value = map[string]int32{
-		"ENUM_VALUE6131": 0,
-		"ENUM_VALUE6132": 1,
-	}
-)
-
-func (x Enum6130) Enum() *Enum6130 {
-	p := new(Enum6130)
-	*p = x
-	return p
-}
-
-func (x Enum6130) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum6130) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[29].Descriptor()
-}
-
-func (Enum6130) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[29]
-}
-
-func (x Enum6130) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum6130) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum6130(num)
-	return nil
-}
-
-// Deprecated: Use Enum6130.Descriptor instead.
-func (Enum6130) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{29}
-}
-
-type Enum6579 int32
-
-const (
-	Enum6579_ENUM_VALUE6580 Enum6579 = 0
-	Enum6579_ENUM_VALUE6581 Enum6579 = 2
-	Enum6579_ENUM_VALUE6582 Enum6579 = 3
-	Enum6579_ENUM_VALUE6583 Enum6579 = 5
-	Enum6579_ENUM_VALUE6584 Enum6579 = 10
-	Enum6579_ENUM_VALUE6585 Enum6579 = 15
-	Enum6579_ENUM_VALUE6586 Enum6579 = 25
-	Enum6579_ENUM_VALUE6587 Enum6579 = 30
-)
-
-// Enum value maps for Enum6579.
-var (
-	Enum6579_name = map[int32]string{
-		0:  "ENUM_VALUE6580",
-		2:  "ENUM_VALUE6581",
-		3:  "ENUM_VALUE6582",
-		5:  "ENUM_VALUE6583",
-		10: "ENUM_VALUE6584",
-		15: "ENUM_VALUE6585",
-		25: "ENUM_VALUE6586",
-		30: "ENUM_VALUE6587",
-	}
-	Enum6579_value = map[string]int32{
-		"ENUM_VALUE6580": 0,
-		"ENUM_VALUE6581": 2,
-		"ENUM_VALUE6582": 3,
-		"ENUM_VALUE6583": 5,
-		"ENUM_VALUE6584": 10,
-		"ENUM_VALUE6585": 15,
-		"ENUM_VALUE6586": 25,
-		"ENUM_VALUE6587": 30,
-	}
-)
-
-func (x Enum6579) Enum() *Enum6579 {
-	p := new(Enum6579)
-	*p = x
-	return p
-}
-
-func (x Enum6579) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum6579) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[30].Descriptor()
-}
-
-func (Enum6579) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[30]
-}
-
-func (x Enum6579) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum6579) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum6579(num)
-	return nil
-}
-
-// Deprecated: Use Enum6579.Descriptor instead.
-func (Enum6579) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{30}
-}
-
-type Enum6588 int32
-
-const (
-	Enum6588_ENUM_VALUE6589 Enum6588 = 0
-	Enum6588_ENUM_VALUE6590 Enum6588 = 1
-	Enum6588_ENUM_VALUE6591 Enum6588 = 2
-	Enum6588_ENUM_VALUE6592 Enum6588 = 3
-	Enum6588_ENUM_VALUE6593 Enum6588 = 4
-	Enum6588_ENUM_VALUE6594 Enum6588 = 5
-	Enum6588_ENUM_VALUE6595 Enum6588 = 6
-	Enum6588_ENUM_VALUE6596 Enum6588 = 7
-	Enum6588_ENUM_VALUE6597 Enum6588 = 8
-	Enum6588_ENUM_VALUE6598 Enum6588 = 9
-	Enum6588_ENUM_VALUE6599 Enum6588 = 10
-	Enum6588_ENUM_VALUE6600 Enum6588 = 11
-	Enum6588_ENUM_VALUE6601 Enum6588 = 12
-	Enum6588_ENUM_VALUE6602 Enum6588 = 13
-	Enum6588_ENUM_VALUE6603 Enum6588 = 14
-	Enum6588_ENUM_VALUE6604 Enum6588 = 15
-	Enum6588_ENUM_VALUE6605 Enum6588 = 16
-	Enum6588_ENUM_VALUE6606 Enum6588 = 17
-	Enum6588_ENUM_VALUE6607 Enum6588 = 19
-	Enum6588_ENUM_VALUE6608 Enum6588 = 20
-	Enum6588_ENUM_VALUE6609 Enum6588 = 21
-	Enum6588_ENUM_VALUE6610 Enum6588 = 22
-	Enum6588_ENUM_VALUE6611 Enum6588 = 23
-	Enum6588_ENUM_VALUE6612 Enum6588 = 24
-	Enum6588_ENUM_VALUE6613 Enum6588 = 25
-	Enum6588_ENUM_VALUE6614 Enum6588 = 26
-	Enum6588_ENUM_VALUE6615 Enum6588 = 27
-	Enum6588_ENUM_VALUE6616 Enum6588 = 28
-	Enum6588_ENUM_VALUE6617 Enum6588 = 29
-	Enum6588_ENUM_VALUE6618 Enum6588 = 30
-	Enum6588_ENUM_VALUE6619 Enum6588 = 31
-	Enum6588_ENUM_VALUE6620 Enum6588 = 32
-	Enum6588_ENUM_VALUE6621 Enum6588 = 33
-	Enum6588_ENUM_VALUE6622 Enum6588 = 34
-)
-
-// Enum value maps for Enum6588.
-var (
-	Enum6588_name = map[int32]string{
-		0:  "ENUM_VALUE6589",
-		1:  "ENUM_VALUE6590",
-		2:  "ENUM_VALUE6591",
-		3:  "ENUM_VALUE6592",
-		4:  "ENUM_VALUE6593",
-		5:  "ENUM_VALUE6594",
-		6:  "ENUM_VALUE6595",
-		7:  "ENUM_VALUE6596",
-		8:  "ENUM_VALUE6597",
-		9:  "ENUM_VALUE6598",
-		10: "ENUM_VALUE6599",
-		11: "ENUM_VALUE6600",
-		12: "ENUM_VALUE6601",
-		13: "ENUM_VALUE6602",
-		14: "ENUM_VALUE6603",
-		15: "ENUM_VALUE6604",
-		16: "ENUM_VALUE6605",
-		17: "ENUM_VALUE6606",
-		19: "ENUM_VALUE6607",
-		20: "ENUM_VALUE6608",
-		21: "ENUM_VALUE6609",
-		22: "ENUM_VALUE6610",
-		23: "ENUM_VALUE6611",
-		24: "ENUM_VALUE6612",
-		25: "ENUM_VALUE6613",
-		26: "ENUM_VALUE6614",
-		27: "ENUM_VALUE6615",
-		28: "ENUM_VALUE6616",
-		29: "ENUM_VALUE6617",
-		30: "ENUM_VALUE6618",
-		31: "ENUM_VALUE6619",
-		32: "ENUM_VALUE6620",
-		33: "ENUM_VALUE6621",
-		34: "ENUM_VALUE6622",
-	}
-	Enum6588_value = map[string]int32{
-		"ENUM_VALUE6589": 0,
-		"ENUM_VALUE6590": 1,
-		"ENUM_VALUE6591": 2,
-		"ENUM_VALUE6592": 3,
-		"ENUM_VALUE6593": 4,
-		"ENUM_VALUE6594": 5,
-		"ENUM_VALUE6595": 6,
-		"ENUM_VALUE6596": 7,
-		"ENUM_VALUE6597": 8,
-		"ENUM_VALUE6598": 9,
-		"ENUM_VALUE6599": 10,
-		"ENUM_VALUE6600": 11,
-		"ENUM_VALUE6601": 12,
-		"ENUM_VALUE6602": 13,
-		"ENUM_VALUE6603": 14,
-		"ENUM_VALUE6604": 15,
-		"ENUM_VALUE6605": 16,
-		"ENUM_VALUE6606": 17,
-		"ENUM_VALUE6607": 19,
-		"ENUM_VALUE6608": 20,
-		"ENUM_VALUE6609": 21,
-		"ENUM_VALUE6610": 22,
-		"ENUM_VALUE6611": 23,
-		"ENUM_VALUE6612": 24,
-		"ENUM_VALUE6613": 25,
-		"ENUM_VALUE6614": 26,
-		"ENUM_VALUE6615": 27,
-		"ENUM_VALUE6616": 28,
-		"ENUM_VALUE6617": 29,
-		"ENUM_VALUE6618": 30,
-		"ENUM_VALUE6619": 31,
-		"ENUM_VALUE6620": 32,
-		"ENUM_VALUE6621": 33,
-		"ENUM_VALUE6622": 34,
-	}
-)
-
-func (x Enum6588) Enum() *Enum6588 {
-	p := new(Enum6588)
-	*p = x
-	return p
-}
-
-func (x Enum6588) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum6588) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[31].Descriptor()
-}
-
-func (Enum6588) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[31]
-}
-
-func (x Enum6588) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum6588) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum6588(num)
-	return nil
-}
-
-// Deprecated: Use Enum6588.Descriptor instead.
-func (Enum6588) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{31}
-}
-
-type Enum7288 int32
-
-const (
-	Enum7288_ENUM_VALUE7289 Enum7288 = 0
-	Enum7288_ENUM_VALUE7290 Enum7288 = 1
-	Enum7288_ENUM_VALUE7291 Enum7288 = 2
-	Enum7288_ENUM_VALUE7292 Enum7288 = 3
-)
-
-// Enum value maps for Enum7288.
-var (
-	Enum7288_name = map[int32]string{
-		0: "ENUM_VALUE7289",
-		1: "ENUM_VALUE7290",
-		2: "ENUM_VALUE7291",
-		3: "ENUM_VALUE7292",
-	}
-	Enum7288_value = map[string]int32{
-		"ENUM_VALUE7289": 0,
-		"ENUM_VALUE7290": 1,
-		"ENUM_VALUE7291": 2,
-		"ENUM_VALUE7292": 3,
-	}
-)
-
-func (x Enum7288) Enum() *Enum7288 {
-	p := new(Enum7288)
-	*p = x
-	return p
-}
-
-func (x Enum7288) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum7288) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[32].Descriptor()
-}
-
-func (Enum7288) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[32]
-}
-
-func (x Enum7288) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum7288) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum7288(num)
-	return nil
-}
-
-// Deprecated: Use Enum7288.Descriptor instead.
-func (Enum7288) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{32}
-}
-
-type Enum7512 int32
-
-const (
-	Enum7512_ENUM_VALUE7513 Enum7512 = 0
-	Enum7512_ENUM_VALUE7514 Enum7512 = 1
-	Enum7512_ENUM_VALUE7515 Enum7512 = 2
-	Enum7512_ENUM_VALUE7516 Enum7512 = 3
-	Enum7512_ENUM_VALUE7517 Enum7512 = 4
-	Enum7512_ENUM_VALUE7518 Enum7512 = 5
-	Enum7512_ENUM_VALUE7519 Enum7512 = 6
-	Enum7512_ENUM_VALUE7520 Enum7512 = 7
-)
-
-// Enum value maps for Enum7512.
-var (
-	Enum7512_name = map[int32]string{
-		0: "ENUM_VALUE7513",
-		1: "ENUM_VALUE7514",
-		2: "ENUM_VALUE7515",
-		3: "ENUM_VALUE7516",
-		4: "ENUM_VALUE7517",
-		5: "ENUM_VALUE7518",
-		6: "ENUM_VALUE7519",
-		7: "ENUM_VALUE7520",
-	}
-	Enum7512_value = map[string]int32{
-		"ENUM_VALUE7513": 0,
-		"ENUM_VALUE7514": 1,
-		"ENUM_VALUE7515": 2,
-		"ENUM_VALUE7516": 3,
-		"ENUM_VALUE7517": 4,
-		"ENUM_VALUE7518": 5,
-		"ENUM_VALUE7519": 6,
-		"ENUM_VALUE7520": 7,
-	}
-)
-
-func (x Enum7512) Enum() *Enum7512 {
-	p := new(Enum7512)
-	*p = x
-	return p
-}
-
-func (x Enum7512) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum7512) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[33].Descriptor()
-}
-
-func (Enum7512) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[33]
-}
-
-func (x Enum7512) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum7512) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum7512(num)
-	return nil
-}
-
-// Deprecated: Use Enum7512.Descriptor instead.
-func (Enum7512) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{33}
-}
-
-type Enum7922 int32
-
-const (
-	Enum7922_ENUM_VALUE7923 Enum7922 = 1
-	Enum7922_ENUM_VALUE7924 Enum7922 = 2
-	Enum7922_ENUM_VALUE7925 Enum7922 = 3
-	Enum7922_ENUM_VALUE7926 Enum7922 = 4
-	Enum7922_ENUM_VALUE7927 Enum7922 = 5
-)
-
-// Enum value maps for Enum7922.
-var (
-	Enum7922_name = map[int32]string{
-		1: "ENUM_VALUE7923",
-		2: "ENUM_VALUE7924",
-		3: "ENUM_VALUE7925",
-		4: "ENUM_VALUE7926",
-		5: "ENUM_VALUE7927",
-	}
-	Enum7922_value = map[string]int32{
-		"ENUM_VALUE7923": 1,
-		"ENUM_VALUE7924": 2,
-		"ENUM_VALUE7925": 3,
-		"ENUM_VALUE7926": 4,
-		"ENUM_VALUE7927": 5,
-	}
-)
-
-func (x Enum7922) Enum() *Enum7922 {
-	p := new(Enum7922)
-	*p = x
-	return p
-}
-
-func (x Enum7922) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum7922) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[34].Descriptor()
-}
-
-func (Enum7922) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[34]
-}
-
-func (x Enum7922) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum7922) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum7922(num)
-	return nil
-}
-
-// Deprecated: Use Enum7922.Descriptor instead.
-func (Enum7922) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{34}
-}
-
-type Enum3476 int32
-
-const (
-	Enum3476_ENUM_VALUE3477 Enum3476 = 0
-	Enum3476_ENUM_VALUE3478 Enum3476 = 1
-	Enum3476_ENUM_VALUE3479 Enum3476 = 2
-	Enum3476_ENUM_VALUE3480 Enum3476 = 3
-	Enum3476_ENUM_VALUE3481 Enum3476 = 4
-	Enum3476_ENUM_VALUE3482 Enum3476 = 5
-	Enum3476_ENUM_VALUE3483 Enum3476 = 6
-	Enum3476_ENUM_VALUE3484 Enum3476 = 7
-	Enum3476_ENUM_VALUE3485 Enum3476 = 8
-	Enum3476_ENUM_VALUE3486 Enum3476 = 9
-	Enum3476_ENUM_VALUE3487 Enum3476 = 10
-	Enum3476_ENUM_VALUE3488 Enum3476 = 11
-	Enum3476_ENUM_VALUE3489 Enum3476 = 12
-	Enum3476_ENUM_VALUE3490 Enum3476 = 13
-	Enum3476_ENUM_VALUE3491 Enum3476 = 14
-	Enum3476_ENUM_VALUE3492 Enum3476 = 15
-	Enum3476_ENUM_VALUE3493 Enum3476 = 16
-	Enum3476_ENUM_VALUE3494 Enum3476 = 17
-	Enum3476_ENUM_VALUE3495 Enum3476 = 18
-	Enum3476_ENUM_VALUE3496 Enum3476 = 19
-	Enum3476_ENUM_VALUE3497 Enum3476 = 20
-	Enum3476_ENUM_VALUE3498 Enum3476 = 21
-	Enum3476_ENUM_VALUE3499 Enum3476 = 22
-	Enum3476_ENUM_VALUE3500 Enum3476 = 23
-	Enum3476_ENUM_VALUE3501 Enum3476 = 24
-	Enum3476_ENUM_VALUE3502 Enum3476 = 25
-	Enum3476_ENUM_VALUE3503 Enum3476 = 26
-	Enum3476_ENUM_VALUE3504 Enum3476 = 27
-	Enum3476_ENUM_VALUE3505 Enum3476 = 28
-	Enum3476_ENUM_VALUE3506 Enum3476 = 29
-	Enum3476_ENUM_VALUE3507 Enum3476 = 30
-	Enum3476_ENUM_VALUE3508 Enum3476 = 31
-	Enum3476_ENUM_VALUE3509 Enum3476 = 32
-	Enum3476_ENUM_VALUE3510 Enum3476 = 33
-	Enum3476_ENUM_VALUE3511 Enum3476 = 34
-	Enum3476_ENUM_VALUE3512 Enum3476 = 35
-	Enum3476_ENUM_VALUE3513 Enum3476 = 36
-	Enum3476_ENUM_VALUE3514 Enum3476 = 37
-	Enum3476_ENUM_VALUE3515 Enum3476 = 38
-	Enum3476_ENUM_VALUE3516 Enum3476 = 39
-	Enum3476_ENUM_VALUE3517 Enum3476 = 40
-	Enum3476_ENUM_VALUE3518 Enum3476 = 41
-	Enum3476_ENUM_VALUE3519 Enum3476 = 42
-	Enum3476_ENUM_VALUE3520 Enum3476 = 43
-	Enum3476_ENUM_VALUE3521 Enum3476 = 44
-	Enum3476_ENUM_VALUE3522 Enum3476 = 45
-	Enum3476_ENUM_VALUE3523 Enum3476 = 46
-	Enum3476_ENUM_VALUE3524 Enum3476 = 47
-	Enum3476_ENUM_VALUE3525 Enum3476 = 48
-	Enum3476_ENUM_VALUE3526 Enum3476 = 49
-	Enum3476_ENUM_VALUE3527 Enum3476 = 50
-	Enum3476_ENUM_VALUE3528 Enum3476 = 51
-	Enum3476_ENUM_VALUE3529 Enum3476 = 52
-	Enum3476_ENUM_VALUE3530 Enum3476 = 53
-	Enum3476_ENUM_VALUE3531 Enum3476 = 54
-	Enum3476_ENUM_VALUE3532 Enum3476 = 55
-	Enum3476_ENUM_VALUE3533 Enum3476 = 56
-	Enum3476_ENUM_VALUE3534 Enum3476 = 57
-	Enum3476_ENUM_VALUE3535 Enum3476 = 58
-	Enum3476_ENUM_VALUE3536 Enum3476 = 59
-	Enum3476_ENUM_VALUE3537 Enum3476 = 60
-	Enum3476_ENUM_VALUE3538 Enum3476 = 61
-	Enum3476_ENUM_VALUE3539 Enum3476 = 62
-	Enum3476_ENUM_VALUE3540 Enum3476 = 63
-	Enum3476_ENUM_VALUE3541 Enum3476 = 64
-	Enum3476_ENUM_VALUE3542 Enum3476 = 65
-	Enum3476_ENUM_VALUE3543 Enum3476 = 66
-	Enum3476_ENUM_VALUE3544 Enum3476 = 67
-	Enum3476_ENUM_VALUE3545 Enum3476 = 68
-	Enum3476_ENUM_VALUE3546 Enum3476 = 69
-	Enum3476_ENUM_VALUE3547 Enum3476 = 70
-	Enum3476_ENUM_VALUE3548 Enum3476 = 71
-	Enum3476_ENUM_VALUE3549 Enum3476 = 72
-	Enum3476_ENUM_VALUE3550 Enum3476 = 73
-	Enum3476_ENUM_VALUE3551 Enum3476 = 74
-	Enum3476_ENUM_VALUE3552 Enum3476 = 75
-	Enum3476_ENUM_VALUE3553 Enum3476 = 76
-	Enum3476_ENUM_VALUE3554 Enum3476 = 77
-	Enum3476_ENUM_VALUE3555 Enum3476 = 78
-	Enum3476_ENUM_VALUE3556 Enum3476 = 79
-	Enum3476_ENUM_VALUE3557 Enum3476 = 80
-	Enum3476_ENUM_VALUE3558 Enum3476 = 81
-	Enum3476_ENUM_VALUE3559 Enum3476 = 82
-	Enum3476_ENUM_VALUE3560 Enum3476 = 83
-	Enum3476_ENUM_VALUE3561 Enum3476 = 84
-	Enum3476_ENUM_VALUE3562 Enum3476 = 85
-	Enum3476_ENUM_VALUE3563 Enum3476 = 86
-	Enum3476_ENUM_VALUE3564 Enum3476 = 87
-	Enum3476_ENUM_VALUE3565 Enum3476 = 88
-	Enum3476_ENUM_VALUE3566 Enum3476 = 89
-	Enum3476_ENUM_VALUE3567 Enum3476 = 90
-	Enum3476_ENUM_VALUE3568 Enum3476 = 91
-	Enum3476_ENUM_VALUE3569 Enum3476 = 92
-	Enum3476_ENUM_VALUE3570 Enum3476 = 93
-	Enum3476_ENUM_VALUE3571 Enum3476 = 94
-	Enum3476_ENUM_VALUE3572 Enum3476 = 95
-	Enum3476_ENUM_VALUE3573 Enum3476 = 96
-	Enum3476_ENUM_VALUE3574 Enum3476 = 97
-	Enum3476_ENUM_VALUE3575 Enum3476 = 98
-	Enum3476_ENUM_VALUE3576 Enum3476 = 99
-	Enum3476_ENUM_VALUE3577 Enum3476 = 100
-	Enum3476_ENUM_VALUE3578 Enum3476 = 101
-	Enum3476_ENUM_VALUE3579 Enum3476 = 102
-	Enum3476_ENUM_VALUE3580 Enum3476 = 103
-	Enum3476_ENUM_VALUE3581 Enum3476 = 104
-	Enum3476_ENUM_VALUE3582 Enum3476 = 105
-	Enum3476_ENUM_VALUE3583 Enum3476 = 106
-	Enum3476_ENUM_VALUE3584 Enum3476 = 107
-	Enum3476_ENUM_VALUE3585 Enum3476 = 108
-	Enum3476_ENUM_VALUE3586 Enum3476 = 109
-	Enum3476_ENUM_VALUE3587 Enum3476 = 110
-	Enum3476_ENUM_VALUE3588 Enum3476 = 111
-	Enum3476_ENUM_VALUE3589 Enum3476 = 112
-	Enum3476_ENUM_VALUE3590 Enum3476 = 113
-	Enum3476_ENUM_VALUE3591 Enum3476 = 114
-	Enum3476_ENUM_VALUE3592 Enum3476 = 115
-	Enum3476_ENUM_VALUE3593 Enum3476 = 116
-	Enum3476_ENUM_VALUE3594 Enum3476 = 117
-	Enum3476_ENUM_VALUE3595 Enum3476 = 118
-	Enum3476_ENUM_VALUE3596 Enum3476 = 119
-	Enum3476_ENUM_VALUE3597 Enum3476 = 120
-	Enum3476_ENUM_VALUE3598 Enum3476 = 121
-	Enum3476_ENUM_VALUE3599 Enum3476 = 122
-	Enum3476_ENUM_VALUE3600 Enum3476 = 123
-	Enum3476_ENUM_VALUE3601 Enum3476 = 124
-	Enum3476_ENUM_VALUE3602 Enum3476 = 125
-	Enum3476_ENUM_VALUE3603 Enum3476 = 126
-	Enum3476_ENUM_VALUE3604 Enum3476 = 127
-	Enum3476_ENUM_VALUE3605 Enum3476 = 128
-	Enum3476_ENUM_VALUE3606 Enum3476 = 129
-	Enum3476_ENUM_VALUE3607 Enum3476 = 130
-	Enum3476_ENUM_VALUE3608 Enum3476 = 131
-	Enum3476_ENUM_VALUE3609 Enum3476 = 132
-	Enum3476_ENUM_VALUE3610 Enum3476 = 133
-	Enum3476_ENUM_VALUE3611 Enum3476 = 134
-	Enum3476_ENUM_VALUE3612 Enum3476 = 135
-	Enum3476_ENUM_VALUE3613 Enum3476 = 136
-	Enum3476_ENUM_VALUE3614 Enum3476 = 137
-	Enum3476_ENUM_VALUE3615 Enum3476 = 138
-	Enum3476_ENUM_VALUE3616 Enum3476 = 139
-	Enum3476_ENUM_VALUE3617 Enum3476 = 140
-	Enum3476_ENUM_VALUE3618 Enum3476 = 141
-	Enum3476_ENUM_VALUE3619 Enum3476 = 142
-	Enum3476_ENUM_VALUE3620 Enum3476 = 143
-	Enum3476_ENUM_VALUE3621 Enum3476 = 144
-	Enum3476_ENUM_VALUE3622 Enum3476 = 145
-	Enum3476_ENUM_VALUE3623 Enum3476 = 146
-	Enum3476_ENUM_VALUE3624 Enum3476 = 147
-	Enum3476_ENUM_VALUE3625 Enum3476 = 148
-	Enum3476_ENUM_VALUE3626 Enum3476 = 149
-	Enum3476_ENUM_VALUE3627 Enum3476 = 150
-	Enum3476_ENUM_VALUE3628 Enum3476 = 151
-	Enum3476_ENUM_VALUE3629 Enum3476 = 152
-	Enum3476_ENUM_VALUE3630 Enum3476 = 153
-	Enum3476_ENUM_VALUE3631 Enum3476 = 154
-	Enum3476_ENUM_VALUE3632 Enum3476 = 155
-	Enum3476_ENUM_VALUE3633 Enum3476 = 156
-	Enum3476_ENUM_VALUE3634 Enum3476 = 157
-	Enum3476_ENUM_VALUE3635 Enum3476 = 158
-	Enum3476_ENUM_VALUE3636 Enum3476 = 159
-	Enum3476_ENUM_VALUE3637 Enum3476 = 160
-	Enum3476_ENUM_VALUE3638 Enum3476 = 161
-	Enum3476_ENUM_VALUE3639 Enum3476 = 162
-	Enum3476_ENUM_VALUE3640 Enum3476 = 163
-	Enum3476_ENUM_VALUE3641 Enum3476 = 164
-	Enum3476_ENUM_VALUE3642 Enum3476 = 165
-	Enum3476_ENUM_VALUE3643 Enum3476 = 166
-	Enum3476_ENUM_VALUE3644 Enum3476 = 167
-	Enum3476_ENUM_VALUE3645 Enum3476 = 168
-	Enum3476_ENUM_VALUE3646 Enum3476 = 169
-	Enum3476_ENUM_VALUE3647 Enum3476 = 170
-	Enum3476_ENUM_VALUE3648 Enum3476 = 171
-	Enum3476_ENUM_VALUE3649 Enum3476 = 172
-	Enum3476_ENUM_VALUE3650 Enum3476 = 173
-	Enum3476_ENUM_VALUE3651 Enum3476 = 174
-	Enum3476_ENUM_VALUE3652 Enum3476 = 175
-	Enum3476_ENUM_VALUE3653 Enum3476 = 176
-	Enum3476_ENUM_VALUE3654 Enum3476 = 177
-	Enum3476_ENUM_VALUE3655 Enum3476 = 178
-	Enum3476_ENUM_VALUE3656 Enum3476 = 179
-	Enum3476_ENUM_VALUE3657 Enum3476 = 180
-	Enum3476_ENUM_VALUE3658 Enum3476 = 181
-	Enum3476_ENUM_VALUE3659 Enum3476 = 182
-	Enum3476_ENUM_VALUE3660 Enum3476 = 183
-)
-
-// Enum value maps for Enum3476.
-var (
-	Enum3476_name = map[int32]string{
-		0:   "ENUM_VALUE3477",
-		1:   "ENUM_VALUE3478",
-		2:   "ENUM_VALUE3479",
-		3:   "ENUM_VALUE3480",
-		4:   "ENUM_VALUE3481",
-		5:   "ENUM_VALUE3482",
-		6:   "ENUM_VALUE3483",
-		7:   "ENUM_VALUE3484",
-		8:   "ENUM_VALUE3485",
-		9:   "ENUM_VALUE3486",
-		10:  "ENUM_VALUE3487",
-		11:  "ENUM_VALUE3488",
-		12:  "ENUM_VALUE3489",
-		13:  "ENUM_VALUE3490",
-		14:  "ENUM_VALUE3491",
-		15:  "ENUM_VALUE3492",
-		16:  "ENUM_VALUE3493",
-		17:  "ENUM_VALUE3494",
-		18:  "ENUM_VALUE3495",
-		19:  "ENUM_VALUE3496",
-		20:  "ENUM_VALUE3497",
-		21:  "ENUM_VALUE3498",
-		22:  "ENUM_VALUE3499",
-		23:  "ENUM_VALUE3500",
-		24:  "ENUM_VALUE3501",
-		25:  "ENUM_VALUE3502",
-		26:  "ENUM_VALUE3503",
-		27:  "ENUM_VALUE3504",
-		28:  "ENUM_VALUE3505",
-		29:  "ENUM_VALUE3506",
-		30:  "ENUM_VALUE3507",
-		31:  "ENUM_VALUE3508",
-		32:  "ENUM_VALUE3509",
-		33:  "ENUM_VALUE3510",
-		34:  "ENUM_VALUE3511",
-		35:  "ENUM_VALUE3512",
-		36:  "ENUM_VALUE3513",
-		37:  "ENUM_VALUE3514",
-		38:  "ENUM_VALUE3515",
-		39:  "ENUM_VALUE3516",
-		40:  "ENUM_VALUE3517",
-		41:  "ENUM_VALUE3518",
-		42:  "ENUM_VALUE3519",
-		43:  "ENUM_VALUE3520",
-		44:  "ENUM_VALUE3521",
-		45:  "ENUM_VALUE3522",
-		46:  "ENUM_VALUE3523",
-		47:  "ENUM_VALUE3524",
-		48:  "ENUM_VALUE3525",
-		49:  "ENUM_VALUE3526",
-		50:  "ENUM_VALUE3527",
-		51:  "ENUM_VALUE3528",
-		52:  "ENUM_VALUE3529",
-		53:  "ENUM_VALUE3530",
-		54:  "ENUM_VALUE3531",
-		55:  "ENUM_VALUE3532",
-		56:  "ENUM_VALUE3533",
-		57:  "ENUM_VALUE3534",
-		58:  "ENUM_VALUE3535",
-		59:  "ENUM_VALUE3536",
-		60:  "ENUM_VALUE3537",
-		61:  "ENUM_VALUE3538",
-		62:  "ENUM_VALUE3539",
-		63:  "ENUM_VALUE3540",
-		64:  "ENUM_VALUE3541",
-		65:  "ENUM_VALUE3542",
-		66:  "ENUM_VALUE3543",
-		67:  "ENUM_VALUE3544",
-		68:  "ENUM_VALUE3545",
-		69:  "ENUM_VALUE3546",
-		70:  "ENUM_VALUE3547",
-		71:  "ENUM_VALUE3548",
-		72:  "ENUM_VALUE3549",
-		73:  "ENUM_VALUE3550",
-		74:  "ENUM_VALUE3551",
-		75:  "ENUM_VALUE3552",
-		76:  "ENUM_VALUE3553",
-		77:  "ENUM_VALUE3554",
-		78:  "ENUM_VALUE3555",
-		79:  "ENUM_VALUE3556",
-		80:  "ENUM_VALUE3557",
-		81:  "ENUM_VALUE3558",
-		82:  "ENUM_VALUE3559",
-		83:  "ENUM_VALUE3560",
-		84:  "ENUM_VALUE3561",
-		85:  "ENUM_VALUE3562",
-		86:  "ENUM_VALUE3563",
-		87:  "ENUM_VALUE3564",
-		88:  "ENUM_VALUE3565",
-		89:  "ENUM_VALUE3566",
-		90:  "ENUM_VALUE3567",
-		91:  "ENUM_VALUE3568",
-		92:  "ENUM_VALUE3569",
-		93:  "ENUM_VALUE3570",
-		94:  "ENUM_VALUE3571",
-		95:  "ENUM_VALUE3572",
-		96:  "ENUM_VALUE3573",
-		97:  "ENUM_VALUE3574",
-		98:  "ENUM_VALUE3575",
-		99:  "ENUM_VALUE3576",
-		100: "ENUM_VALUE3577",
-		101: "ENUM_VALUE3578",
-		102: "ENUM_VALUE3579",
-		103: "ENUM_VALUE3580",
-		104: "ENUM_VALUE3581",
-		105: "ENUM_VALUE3582",
-		106: "ENUM_VALUE3583",
-		107: "ENUM_VALUE3584",
-		108: "ENUM_VALUE3585",
-		109: "ENUM_VALUE3586",
-		110: "ENUM_VALUE3587",
-		111: "ENUM_VALUE3588",
-		112: "ENUM_VALUE3589",
-		113: "ENUM_VALUE3590",
-		114: "ENUM_VALUE3591",
-		115: "ENUM_VALUE3592",
-		116: "ENUM_VALUE3593",
-		117: "ENUM_VALUE3594",
-		118: "ENUM_VALUE3595",
-		119: "ENUM_VALUE3596",
-		120: "ENUM_VALUE3597",
-		121: "ENUM_VALUE3598",
-		122: "ENUM_VALUE3599",
-		123: "ENUM_VALUE3600",
-		124: "ENUM_VALUE3601",
-		125: "ENUM_VALUE3602",
-		126: "ENUM_VALUE3603",
-		127: "ENUM_VALUE3604",
-		128: "ENUM_VALUE3605",
-		129: "ENUM_VALUE3606",
-		130: "ENUM_VALUE3607",
-		131: "ENUM_VALUE3608",
-		132: "ENUM_VALUE3609",
-		133: "ENUM_VALUE3610",
-		134: "ENUM_VALUE3611",
-		135: "ENUM_VALUE3612",
-		136: "ENUM_VALUE3613",
-		137: "ENUM_VALUE3614",
-		138: "ENUM_VALUE3615",
-		139: "ENUM_VALUE3616",
-		140: "ENUM_VALUE3617",
-		141: "ENUM_VALUE3618",
-		142: "ENUM_VALUE3619",
-		143: "ENUM_VALUE3620",
-		144: "ENUM_VALUE3621",
-		145: "ENUM_VALUE3622",
-		146: "ENUM_VALUE3623",
-		147: "ENUM_VALUE3624",
-		148: "ENUM_VALUE3625",
-		149: "ENUM_VALUE3626",
-		150: "ENUM_VALUE3627",
-		151: "ENUM_VALUE3628",
-		152: "ENUM_VALUE3629",
-		153: "ENUM_VALUE3630",
-		154: "ENUM_VALUE3631",
-		155: "ENUM_VALUE3632",
-		156: "ENUM_VALUE3633",
-		157: "ENUM_VALUE3634",
-		158: "ENUM_VALUE3635",
-		159: "ENUM_VALUE3636",
-		160: "ENUM_VALUE3637",
-		161: "ENUM_VALUE3638",
-		162: "ENUM_VALUE3639",
-		163: "ENUM_VALUE3640",
-		164: "ENUM_VALUE3641",
-		165: "ENUM_VALUE3642",
-		166: "ENUM_VALUE3643",
-		167: "ENUM_VALUE3644",
-		168: "ENUM_VALUE3645",
-		169: "ENUM_VALUE3646",
-		170: "ENUM_VALUE3647",
-		171: "ENUM_VALUE3648",
-		172: "ENUM_VALUE3649",
-		173: "ENUM_VALUE3650",
-		174: "ENUM_VALUE3651",
-		175: "ENUM_VALUE3652",
-		176: "ENUM_VALUE3653",
-		177: "ENUM_VALUE3654",
-		178: "ENUM_VALUE3655",
-		179: "ENUM_VALUE3656",
-		180: "ENUM_VALUE3657",
-		181: "ENUM_VALUE3658",
-		182: "ENUM_VALUE3659",
-		183: "ENUM_VALUE3660",
-	}
-	Enum3476_value = map[string]int32{
-		"ENUM_VALUE3477": 0,
-		"ENUM_VALUE3478": 1,
-		"ENUM_VALUE3479": 2,
-		"ENUM_VALUE3480": 3,
-		"ENUM_VALUE3481": 4,
-		"ENUM_VALUE3482": 5,
-		"ENUM_VALUE3483": 6,
-		"ENUM_VALUE3484": 7,
-		"ENUM_VALUE3485": 8,
-		"ENUM_VALUE3486": 9,
-		"ENUM_VALUE3487": 10,
-		"ENUM_VALUE3488": 11,
-		"ENUM_VALUE3489": 12,
-		"ENUM_VALUE3490": 13,
-		"ENUM_VALUE3491": 14,
-		"ENUM_VALUE3492": 15,
-		"ENUM_VALUE3493": 16,
-		"ENUM_VALUE3494": 17,
-		"ENUM_VALUE3495": 18,
-		"ENUM_VALUE3496": 19,
-		"ENUM_VALUE3497": 20,
-		"ENUM_VALUE3498": 21,
-		"ENUM_VALUE3499": 22,
-		"ENUM_VALUE3500": 23,
-		"ENUM_VALUE3501": 24,
-		"ENUM_VALUE3502": 25,
-		"ENUM_VALUE3503": 26,
-		"ENUM_VALUE3504": 27,
-		"ENUM_VALUE3505": 28,
-		"ENUM_VALUE3506": 29,
-		"ENUM_VALUE3507": 30,
-		"ENUM_VALUE3508": 31,
-		"ENUM_VALUE3509": 32,
-		"ENUM_VALUE3510": 33,
-		"ENUM_VALUE3511": 34,
-		"ENUM_VALUE3512": 35,
-		"ENUM_VALUE3513": 36,
-		"ENUM_VALUE3514": 37,
-		"ENUM_VALUE3515": 38,
-		"ENUM_VALUE3516": 39,
-		"ENUM_VALUE3517": 40,
-		"ENUM_VALUE3518": 41,
-		"ENUM_VALUE3519": 42,
-		"ENUM_VALUE3520": 43,
-		"ENUM_VALUE3521": 44,
-		"ENUM_VALUE3522": 45,
-		"ENUM_VALUE3523": 46,
-		"ENUM_VALUE3524": 47,
-		"ENUM_VALUE3525": 48,
-		"ENUM_VALUE3526": 49,
-		"ENUM_VALUE3527": 50,
-		"ENUM_VALUE3528": 51,
-		"ENUM_VALUE3529": 52,
-		"ENUM_VALUE3530": 53,
-		"ENUM_VALUE3531": 54,
-		"ENUM_VALUE3532": 55,
-		"ENUM_VALUE3533": 56,
-		"ENUM_VALUE3534": 57,
-		"ENUM_VALUE3535": 58,
-		"ENUM_VALUE3536": 59,
-		"ENUM_VALUE3537": 60,
-		"ENUM_VALUE3538": 61,
-		"ENUM_VALUE3539": 62,
-		"ENUM_VALUE3540": 63,
-		"ENUM_VALUE3541": 64,
-		"ENUM_VALUE3542": 65,
-		"ENUM_VALUE3543": 66,
-		"ENUM_VALUE3544": 67,
-		"ENUM_VALUE3545": 68,
-		"ENUM_VALUE3546": 69,
-		"ENUM_VALUE3547": 70,
-		"ENUM_VALUE3548": 71,
-		"ENUM_VALUE3549": 72,
-		"ENUM_VALUE3550": 73,
-		"ENUM_VALUE3551": 74,
-		"ENUM_VALUE3552": 75,
-		"ENUM_VALUE3553": 76,
-		"ENUM_VALUE3554": 77,
-		"ENUM_VALUE3555": 78,
-		"ENUM_VALUE3556": 79,
-		"ENUM_VALUE3557": 80,
-		"ENUM_VALUE3558": 81,
-		"ENUM_VALUE3559": 82,
-		"ENUM_VALUE3560": 83,
-		"ENUM_VALUE3561": 84,
-		"ENUM_VALUE3562": 85,
-		"ENUM_VALUE3563": 86,
-		"ENUM_VALUE3564": 87,
-		"ENUM_VALUE3565": 88,
-		"ENUM_VALUE3566": 89,
-		"ENUM_VALUE3567": 90,
-		"ENUM_VALUE3568": 91,
-		"ENUM_VALUE3569": 92,
-		"ENUM_VALUE3570": 93,
-		"ENUM_VALUE3571": 94,
-		"ENUM_VALUE3572": 95,
-		"ENUM_VALUE3573": 96,
-		"ENUM_VALUE3574": 97,
-		"ENUM_VALUE3575": 98,
-		"ENUM_VALUE3576": 99,
-		"ENUM_VALUE3577": 100,
-		"ENUM_VALUE3578": 101,
-		"ENUM_VALUE3579": 102,
-		"ENUM_VALUE3580": 103,
-		"ENUM_VALUE3581": 104,
-		"ENUM_VALUE3582": 105,
-		"ENUM_VALUE3583": 106,
-		"ENUM_VALUE3584": 107,
-		"ENUM_VALUE3585": 108,
-		"ENUM_VALUE3586": 109,
-		"ENUM_VALUE3587": 110,
-		"ENUM_VALUE3588": 111,
-		"ENUM_VALUE3589": 112,
-		"ENUM_VALUE3590": 113,
-		"ENUM_VALUE3591": 114,
-		"ENUM_VALUE3592": 115,
-		"ENUM_VALUE3593": 116,
-		"ENUM_VALUE3594": 117,
-		"ENUM_VALUE3595": 118,
-		"ENUM_VALUE3596": 119,
-		"ENUM_VALUE3597": 120,
-		"ENUM_VALUE3598": 121,
-		"ENUM_VALUE3599": 122,
-		"ENUM_VALUE3600": 123,
-		"ENUM_VALUE3601": 124,
-		"ENUM_VALUE3602": 125,
-		"ENUM_VALUE3603": 126,
-		"ENUM_VALUE3604": 127,
-		"ENUM_VALUE3605": 128,
-		"ENUM_VALUE3606": 129,
-		"ENUM_VALUE3607": 130,
-		"ENUM_VALUE3608": 131,
-		"ENUM_VALUE3609": 132,
-		"ENUM_VALUE3610": 133,
-		"ENUM_VALUE3611": 134,
-		"ENUM_VALUE3612": 135,
-		"ENUM_VALUE3613": 136,
-		"ENUM_VALUE3614": 137,
-		"ENUM_VALUE3615": 138,
-		"ENUM_VALUE3616": 139,
-		"ENUM_VALUE3617": 140,
-		"ENUM_VALUE3618": 141,
-		"ENUM_VALUE3619": 142,
-		"ENUM_VALUE3620": 143,
-		"ENUM_VALUE3621": 144,
-		"ENUM_VALUE3622": 145,
-		"ENUM_VALUE3623": 146,
-		"ENUM_VALUE3624": 147,
-		"ENUM_VALUE3625": 148,
-		"ENUM_VALUE3626": 149,
-		"ENUM_VALUE3627": 150,
-		"ENUM_VALUE3628": 151,
-		"ENUM_VALUE3629": 152,
-		"ENUM_VALUE3630": 153,
-		"ENUM_VALUE3631": 154,
-		"ENUM_VALUE3632": 155,
-		"ENUM_VALUE3633": 156,
-		"ENUM_VALUE3634": 157,
-		"ENUM_VALUE3635": 158,
-		"ENUM_VALUE3636": 159,
-		"ENUM_VALUE3637": 160,
-		"ENUM_VALUE3638": 161,
-		"ENUM_VALUE3639": 162,
-		"ENUM_VALUE3640": 163,
-		"ENUM_VALUE3641": 164,
-		"ENUM_VALUE3642": 165,
-		"ENUM_VALUE3643": 166,
-		"ENUM_VALUE3644": 167,
-		"ENUM_VALUE3645": 168,
-		"ENUM_VALUE3646": 169,
-		"ENUM_VALUE3647": 170,
-		"ENUM_VALUE3648": 171,
-		"ENUM_VALUE3649": 172,
-		"ENUM_VALUE3650": 173,
-		"ENUM_VALUE3651": 174,
-		"ENUM_VALUE3652": 175,
-		"ENUM_VALUE3653": 176,
-		"ENUM_VALUE3654": 177,
-		"ENUM_VALUE3655": 178,
-		"ENUM_VALUE3656": 179,
-		"ENUM_VALUE3657": 180,
-		"ENUM_VALUE3658": 181,
-		"ENUM_VALUE3659": 182,
-		"ENUM_VALUE3660": 183,
-	}
-)
-
-func (x Enum3476) Enum() *Enum3476 {
-	p := new(Enum3476)
-	*p = x
-	return p
-}
-
-func (x Enum3476) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum3476) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[35].Descriptor()
-}
-
-func (Enum3476) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[35]
-}
-
-func (x Enum3476) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum3476) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum3476(num)
-	return nil
-}
-
-// Deprecated: Use Enum3476.Descriptor instead.
-func (Enum3476) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{35}
-}
-
-type Enum10325 int32
-
-const (
-	Enum10325_ENUM_VALUE10326 Enum10325 = 0
-	Enum10325_ENUM_VALUE10327 Enum10325 = 1
-	Enum10325_ENUM_VALUE10328 Enum10325 = 2
-	Enum10325_ENUM_VALUE10329 Enum10325 = 3
-	Enum10325_ENUM_VALUE10330 Enum10325 = 4
-	Enum10325_ENUM_VALUE10331 Enum10325 = 5
-	Enum10325_ENUM_VALUE10332 Enum10325 = 6
-	Enum10325_ENUM_VALUE10333 Enum10325 = 7
-	Enum10325_ENUM_VALUE10334 Enum10325 = 8
-)
-
-// Enum value maps for Enum10325.
-var (
-	Enum10325_name = map[int32]string{
-		0: "ENUM_VALUE10326",
-		1: "ENUM_VALUE10327",
-		2: "ENUM_VALUE10328",
-		3: "ENUM_VALUE10329",
-		4: "ENUM_VALUE10330",
-		5: "ENUM_VALUE10331",
-		6: "ENUM_VALUE10332",
-		7: "ENUM_VALUE10333",
-		8: "ENUM_VALUE10334",
-	}
-	Enum10325_value = map[string]int32{
-		"ENUM_VALUE10326": 0,
-		"ENUM_VALUE10327": 1,
-		"ENUM_VALUE10328": 2,
-		"ENUM_VALUE10329": 3,
-		"ENUM_VALUE10330": 4,
-		"ENUM_VALUE10331": 5,
-		"ENUM_VALUE10332": 6,
-		"ENUM_VALUE10333": 7,
-		"ENUM_VALUE10334": 8,
-	}
-)
-
-func (x Enum10325) Enum() *Enum10325 {
-	p := new(Enum10325)
-	*p = x
-	return p
-}
-
-func (x Enum10325) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum10325) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[36].Descriptor()
-}
-
-func (Enum10325) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[36]
-}
-
-func (x Enum10325) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum10325) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum10325(num)
-	return nil
-}
-
-// Deprecated: Use Enum10325.Descriptor instead.
-func (Enum10325) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{36}
-}
-
-type Enum10335 int32
-
-const (
-	Enum10335_ENUM_VALUE10336 Enum10335 = 0
-)
-
-// Enum value maps for Enum10335.
-var (
-	Enum10335_name = map[int32]string{
-		0: "ENUM_VALUE10336",
-	}
-	Enum10335_value = map[string]int32{
-		"ENUM_VALUE10336": 0,
-	}
-)
-
-func (x Enum10335) Enum() *Enum10335 {
-	p := new(Enum10335)
-	*p = x
-	return p
-}
-
-func (x Enum10335) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum10335) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[37].Descriptor()
-}
-
-func (Enum10335) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[37]
-}
-
-func (x Enum10335) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum10335) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum10335(num)
-	return nil
-}
-
-// Deprecated: Use Enum10335.Descriptor instead.
-func (Enum10335) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{37}
-}
-
-type Enum10337 int32
-
-const (
-	Enum10337_ENUM_VALUE10338 Enum10337 = 0
-	Enum10337_ENUM_VALUE10339 Enum10337 = 1
-)
-
-// Enum value maps for Enum10337.
-var (
-	Enum10337_name = map[int32]string{
-		0: "ENUM_VALUE10338",
-		1: "ENUM_VALUE10339",
-	}
-	Enum10337_value = map[string]int32{
-		"ENUM_VALUE10338": 0,
-		"ENUM_VALUE10339": 1,
-	}
-)
-
-func (x Enum10337) Enum() *Enum10337 {
-	p := new(Enum10337)
-	*p = x
-	return p
-}
-
-func (x Enum10337) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum10337) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[38].Descriptor()
-}
-
-func (Enum10337) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[38]
-}
-
-func (x Enum10337) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum10337) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum10337(num)
-	return nil
-}
-
-// Deprecated: Use Enum10337.Descriptor instead.
-func (Enum10337) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{38}
-}
-
-type Enum11901 int32
-
-const (
-	Enum11901_ENUM_VALUE11902 Enum11901 = 0
-	Enum11901_ENUM_VALUE11903 Enum11901 = 1
-	Enum11901_ENUM_VALUE11904 Enum11901 = 2
-	Enum11901_ENUM_VALUE11905 Enum11901 = 3
-)
-
-// Enum value maps for Enum11901.
-var (
-	Enum11901_name = map[int32]string{
-		0: "ENUM_VALUE11902",
-		1: "ENUM_VALUE11903",
-		2: "ENUM_VALUE11904",
-		3: "ENUM_VALUE11905",
-	}
-	Enum11901_value = map[string]int32{
-		"ENUM_VALUE11902": 0,
-		"ENUM_VALUE11903": 1,
-		"ENUM_VALUE11904": 2,
-		"ENUM_VALUE11905": 3,
-	}
-)
-
-func (x Enum11901) Enum() *Enum11901 {
-	p := new(Enum11901)
-	*p = x
-	return p
-}
-
-func (x Enum11901) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum11901) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[39].Descriptor()
-}
-
-func (Enum11901) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[39]
-}
-
-func (x Enum11901) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum11901) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum11901(num)
-	return nil
-}
-
-// Deprecated: Use Enum11901.Descriptor instead.
-func (Enum11901) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{39}
-}
-
-type Enum12735 int32
-
-const (
-	Enum12735_ENUM_VALUE12736 Enum12735 = 0
-	Enum12735_ENUM_VALUE12737 Enum12735 = 1
-	Enum12735_ENUM_VALUE12738 Enum12735 = 2
-	Enum12735_ENUM_VALUE12739 Enum12735 = 3
-)
-
-// Enum value maps for Enum12735.
-var (
-	Enum12735_name = map[int32]string{
-		0: "ENUM_VALUE12736",
-		1: "ENUM_VALUE12737",
-		2: "ENUM_VALUE12738",
-		3: "ENUM_VALUE12739",
-	}
-	Enum12735_value = map[string]int32{
-		"ENUM_VALUE12736": 0,
-		"ENUM_VALUE12737": 1,
-		"ENUM_VALUE12738": 2,
-		"ENUM_VALUE12739": 3,
-	}
-)
-
-func (x Enum12735) Enum() *Enum12735 {
-	p := new(Enum12735)
-	*p = x
-	return p
-}
-
-func (x Enum12735) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum12735) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[40].Descriptor()
-}
-
-func (Enum12735) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[40]
-}
-
-func (x Enum12735) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum12735) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum12735(num)
-	return nil
-}
-
-// Deprecated: Use Enum12735.Descriptor instead.
-func (Enum12735) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{40}
-}
-
-type Enum12871 int32
-
-const (
-	Enum12871_ENUM_VALUE12872 Enum12871 = 1
-	Enum12871_ENUM_VALUE12873 Enum12871 = 2
-	Enum12871_ENUM_VALUE12874 Enum12871 = 3
-	Enum12871_ENUM_VALUE12875 Enum12871 = 4
-	Enum12871_ENUM_VALUE12876 Enum12871 = 5
-	Enum12871_ENUM_VALUE12877 Enum12871 = 6
-)
-
-// Enum value maps for Enum12871.
-var (
-	Enum12871_name = map[int32]string{
-		1: "ENUM_VALUE12872",
-		2: "ENUM_VALUE12873",
-		3: "ENUM_VALUE12874",
-		4: "ENUM_VALUE12875",
-		5: "ENUM_VALUE12876",
-		6: "ENUM_VALUE12877",
-	}
-	Enum12871_value = map[string]int32{
-		"ENUM_VALUE12872": 1,
-		"ENUM_VALUE12873": 2,
-		"ENUM_VALUE12874": 3,
-		"ENUM_VALUE12875": 4,
-		"ENUM_VALUE12876": 5,
-		"ENUM_VALUE12877": 6,
-	}
-)
-
-func (x Enum12871) Enum() *Enum12871 {
-	p := new(Enum12871)
-	*p = x
-	return p
-}
-
-func (x Enum12871) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum12871) Descriptor() protoreflect.EnumDescriptor {
-	return file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[41].Descriptor()
-}
-
-func (Enum12871) Type() protoreflect.EnumType {
-	return &file_datasets_google_message4_benchmark_message4_3_proto_enumTypes[41]
-}
-
-func (x Enum12871) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum12871) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum12871(num)
-	return nil
-}
-
-// Deprecated: Use Enum12871.Descriptor instead.
-func (Enum12871) EnumDescriptor() ([]byte, []int) {
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP(), []int{41}
-}
-
-var File_datasets_google_message4_benchmark_message4_3_proto protoreflect.FileDescriptor
-
-var file_datasets_google_message4_benchmark_message4_3_proto_rawDesc = []byte{
-	0x0a, 0x33, 0x64, 0x61, 0x74, 0x61, 0x73, 0x65, 0x74, 0x73, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68,
-	0x6d, 0x61, 0x72, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34, 0x5f, 0x33, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b,
-	0x73, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x34, 0x2a, 0x3c, 0x0a, 0x0a, 0x55, 0x6e, 0x75, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12,
-	0x16, 0x0a, 0x12, 0x55, 0x4e, 0x55, 0x53, 0x45, 0x44, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x4e, 0x55, 0x53, 0x45,
-	0x44, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x10, 0x01, 0x2a,
-	0xaa, 0x01, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x35, 0x39, 0x33, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x35, 0x39, 0x34, 0x10, 0x00,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x35,
-	0x39, 0x35, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x32, 0x35, 0x39, 0x36, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x35, 0x39, 0x37, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x35, 0x39, 0x38, 0x10, 0x04,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x35,
-	0x39, 0x39, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x32, 0x36, 0x30, 0x30, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x36, 0x30, 0x31, 0x10, 0x07, 0x2a, 0x46, 0x0a, 0x08,
-	0x45, 0x6e, 0x75, 0x6d, 0x32, 0x38, 0x33, 0x34, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x33, 0x35, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x33, 0x36, 0x10, 0x01,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38,
-	0x33, 0x37, 0x10, 0x02, 0x2a, 0xb6, 0x02, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x38, 0x30,
-	0x36, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32,
-	0x38, 0x30, 0x37, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x32, 0x38, 0x30, 0x38, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x30, 0x39, 0x10, 0x02, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x31, 0x30, 0x10,
-	0x03, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32,
-	0x38, 0x31, 0x31, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x32, 0x38, 0x31, 0x32, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x31, 0x33, 0x10, 0x06, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x31, 0x34, 0x10,
-	0x07, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32,
-	0x38, 0x31, 0x35, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x32, 0x38, 0x31, 0x36, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x31, 0x37, 0x10, 0x0a, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x31, 0x38, 0x10,
-	0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32,
-	0x38, 0x31, 0x39, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x32, 0x38, 0x32, 0x30, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x32, 0x31, 0x10, 0x0e, 0x2a, 0x82, 0x13,
-	0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x38, 0x35, 0x31, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x35, 0x32, 0x10, 0x00, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x35, 0x33,
-	0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x38, 0x35, 0x34, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x35, 0x35, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x35, 0x36, 0x10, 0x03, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x35, 0x37,
-	0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x38, 0x35, 0x38, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x35, 0x39, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x36, 0x30, 0x10, 0x07, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x36, 0x31,
-	0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x38, 0x36, 0x32, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x36, 0x33, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x36, 0x34, 0x10, 0x0b, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x36, 0x35,
-	0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x38, 0x36, 0x36, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x36, 0x37, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x36, 0x38, 0x10, 0x0f, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x36, 0x39,
-	0x10, 0x10, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x38, 0x37, 0x30, 0x10, 0x11, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x37, 0x31, 0x10, 0x12, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x37, 0x32, 0x10, 0x13, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x37, 0x33,
-	0x10, 0x14, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x38, 0x37, 0x34, 0x10, 0x15, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x37, 0x35, 0x10, 0x16, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x37, 0x36, 0x10, 0x17, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x37, 0x37,
-	0x10, 0x18, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x38, 0x37, 0x38, 0x10, 0x19, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x37, 0x39, 0x10, 0x1a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x38, 0x30, 0x10, 0x1b, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x38, 0x31,
-	0x10, 0x1c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x38, 0x38, 0x32, 0x10, 0x1d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x38, 0x33, 0x10, 0x1e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x38, 0x34, 0x10, 0x1f, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x38, 0x35,
-	0x10, 0x20, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x38, 0x38, 0x36, 0x10, 0x21, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x38, 0x37, 0x10, 0x22, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x38, 0x38, 0x10, 0x23, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x38, 0x39,
-	0x10, 0x24, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x38, 0x39, 0x30, 0x10, 0x25, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x39, 0x31, 0x10, 0x26, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x39, 0x32, 0x10, 0x27, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x39, 0x33,
-	0x10, 0x28, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x38, 0x39, 0x34, 0x10, 0x29, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x39, 0x35, 0x10, 0x2a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x39, 0x36, 0x10, 0x2b, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x39, 0x37,
-	0x10, 0x2c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x38, 0x39, 0x38, 0x10, 0x2d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x38, 0x39, 0x39, 0x10, 0x2e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x30, 0x30, 0x10, 0x2f, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x30, 0x31,
-	0x10, 0x30, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x39, 0x30, 0x32, 0x10, 0x31, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x30, 0x33, 0x10, 0x32, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x30, 0x34, 0x10, 0x33, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x30, 0x35,
-	0x10, 0x34, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x39, 0x30, 0x36, 0x10, 0x35, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x30, 0x37, 0x10, 0x36, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x30, 0x38, 0x10, 0x37, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x30, 0x39,
-	0x10, 0x38, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x39, 0x31, 0x30, 0x10, 0x39, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x31, 0x31, 0x10, 0x3a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x31, 0x32, 0x10, 0x3b, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x31, 0x33,
-	0x10, 0x3c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x39, 0x31, 0x34, 0x10, 0x3d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x31, 0x35, 0x10, 0x3e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x31, 0x36, 0x10, 0x3f, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x31, 0x37,
-	0x10, 0x40, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x39, 0x31, 0x38, 0x10, 0x41, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x31, 0x39, 0x10, 0x42, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x32, 0x30, 0x10, 0x43, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x32, 0x31,
-	0x10, 0x44, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x39, 0x32, 0x32, 0x10, 0x45, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x32, 0x33, 0x10, 0x46, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x32, 0x34, 0x10, 0x47, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x32, 0x35,
-	0x10, 0x48, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x39, 0x32, 0x36, 0x10, 0x49, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x32, 0x37, 0x10, 0x4a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x32, 0x38, 0x10, 0x4b, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x32, 0x39,
-	0x10, 0x4c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x39, 0x33, 0x30, 0x10, 0x4d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x33, 0x31, 0x10, 0x4e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x33, 0x32, 0x10, 0x4f, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x33, 0x33,
-	0x10, 0x50, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x39, 0x33, 0x34, 0x10, 0x51, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x33, 0x35, 0x10, 0x52, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x33, 0x36, 0x10, 0x53, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x33, 0x37,
-	0x10, 0x54, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x39, 0x33, 0x38, 0x10, 0x55, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x33, 0x39, 0x10, 0x56, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x34, 0x30, 0x10, 0x57, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x34, 0x31,
-	0x10, 0x58, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x39, 0x34, 0x32, 0x10, 0x59, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x34, 0x33, 0x10, 0x5a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x34, 0x34, 0x10, 0x5b, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x34, 0x35,
-	0x10, 0x5c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x39, 0x34, 0x36, 0x10, 0x5d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x34, 0x37, 0x10, 0x5e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x34, 0x38, 0x10, 0x5f, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x34, 0x39,
-	0x10, 0x60, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x39, 0x35, 0x30, 0x10, 0x61, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x35, 0x31, 0x10, 0x62, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x35, 0x32, 0x10, 0x63, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x35, 0x33,
-	0x10, 0x64, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x39, 0x35, 0x34, 0x10, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x35, 0x35, 0x10, 0x66, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x35, 0x36, 0x10, 0x67, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x35, 0x37,
-	0x10, 0x68, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x39, 0x35, 0x38, 0x10, 0x69, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x35, 0x39, 0x10, 0x6a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x36, 0x30, 0x10, 0x6b, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x36, 0x31,
-	0x10, 0x6c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x39, 0x36, 0x32, 0x10, 0x6d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x36, 0x33, 0x10, 0x6e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x36, 0x34, 0x10, 0x6f, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x36, 0x35,
-	0x10, 0x70, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x39, 0x36, 0x36, 0x10, 0x71, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x36, 0x37, 0x10, 0x72, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x36, 0x38, 0x10, 0x73, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x36, 0x39,
-	0x10, 0x74, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x32, 0x39, 0x37, 0x30, 0x10, 0x75, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x37, 0x31, 0x10, 0x76, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x39, 0x37, 0x32, 0x10, 0x77, 0x1a, 0x02,
-	0x10, 0x01, 0x2a, 0xfa, 0x01, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x36, 0x30, 0x32, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x36, 0x30,
-	0x33, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x32, 0x36, 0x30, 0x34, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x36, 0x30, 0x35, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x36, 0x30, 0x36, 0x10, 0x03, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x36, 0x30,
-	0x37, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x32, 0x36, 0x30, 0x38, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x36, 0x30, 0x39, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x36, 0x31, 0x30, 0x10, 0x07, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x36, 0x31,
-	0x31, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x32, 0x36, 0x31, 0x32, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x36, 0x31, 0x33, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x32, 0x36, 0x31, 0x34, 0x10, 0x0b, 0x2a,
-	0xba, 0x04, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x30, 0x37, 0x31, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x30, 0x37, 0x32, 0x10, 0x01,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x30,
-	0x37, 0x33, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x30, 0x37, 0x34, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x30, 0x37, 0x35, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x30, 0x37, 0x36, 0x10, 0x05,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x30,
-	0x37, 0x37, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x30, 0x37, 0x38, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x30, 0x37, 0x39, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x30, 0x38, 0x30, 0x10, 0x09,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x30,
-	0x38, 0x31, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x30, 0x38, 0x32, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x30, 0x38, 0x33, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x30, 0x38, 0x34, 0x10, 0x0d,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x30,
-	0x38, 0x35, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x30, 0x38, 0x36, 0x10, 0x0f, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x30, 0x38, 0x37, 0x10, 0x10, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x30, 0x38, 0x38, 0x10, 0x11,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x30,
-	0x38, 0x39, 0x10, 0x12, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x30, 0x39, 0x30, 0x10, 0x13, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x30, 0x39, 0x31, 0x10, 0x14, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x30, 0x39, 0x32, 0x10, 0x15,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x30,
-	0x39, 0x33, 0x10, 0x16, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x30, 0x39, 0x34, 0x10, 0x17, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x30, 0x39, 0x35, 0x10, 0x18, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x30, 0x39, 0x36, 0x10, 0x19,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x30,
-	0x39, 0x37, 0x10, 0x1a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x30, 0x39, 0x38, 0x10, 0x1b, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x30, 0x39, 0x39, 0x10, 0x1c, 0x2a, 0xfa, 0x01, 0x0a,
-	0x08, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x38, 0x30, 0x35, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x30, 0x36, 0x10, 0x00, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x30, 0x37, 0x10,
-	0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33,
-	0x38, 0x30, 0x38, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x33, 0x38, 0x30, 0x39, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x31, 0x30, 0x10, 0x04, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x31, 0x31, 0x10,
-	0x05, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33,
-	0x38, 0x31, 0x32, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x33, 0x38, 0x31, 0x33, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x31, 0x34, 0x10, 0x08, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x31, 0x35, 0x10,
-	0x09, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33,
-	0x38, 0x31, 0x36, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x33, 0x38, 0x31, 0x37, 0x10, 0x0a, 0x2a, 0x9a, 0x03, 0x0a, 0x08, 0x45, 0x6e,
-	0x75, 0x6d, 0x33, 0x37, 0x38, 0x33, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x33, 0x37, 0x38, 0x34, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x37, 0x38, 0x35, 0x10, 0x01, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x37, 0x38, 0x36,
-	0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x33, 0x37, 0x38, 0x37, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x33, 0x37, 0x38, 0x38, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x37, 0x38, 0x39, 0x10, 0x05, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x37, 0x39, 0x30,
-	0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x33, 0x37, 0x39, 0x31, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x33, 0x37, 0x39, 0x32, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x37, 0x39, 0x33, 0x10, 0x09, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x37, 0x39, 0x34,
-	0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x33, 0x37, 0x39, 0x35, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x33, 0x37, 0x39, 0x36, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x37, 0x39, 0x37, 0x10, 0x0d, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x37, 0x39, 0x38,
-	0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x33, 0x37, 0x39, 0x39, 0x10, 0x0f, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x30, 0x30, 0x10, 0x10, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x30, 0x31, 0x10, 0x14, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x30, 0x32,
-	0x10, 0x15, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x33, 0x38, 0x30, 0x33, 0x10, 0x32, 0x2a, 0xf2, 0x02, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x33,
-	0x38, 0x35, 0x31, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x38, 0x35, 0x32, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x35, 0x33, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x35, 0x34, 0x10, 0x02, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x35,
-	0x35, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x38, 0x35, 0x36, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x35, 0x37, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x35, 0x38, 0x10, 0x06, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x35,
-	0x39, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x38, 0x36, 0x30, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x36, 0x31, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x36, 0x32, 0x10, 0x0a, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x36,
-	0x33, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x38, 0x36, 0x34, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x36, 0x35, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x36, 0x36, 0x10, 0x0e, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x36,
-	0x37, 0x10, 0x0f, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x38, 0x36, 0x38, 0x10, 0x10, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x38, 0x36, 0x39, 0x10, 0x11, 0x2a, 0x46, 0x0a, 0x08, 0x45,
-	0x6e, 0x75, 0x6d, 0x35, 0x38, 0x36, 0x32, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x38, 0x36, 0x33, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x38, 0x36, 0x34, 0x10, 0x02, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x38, 0x36,
-	0x35, 0x10, 0x03, 0x2a, 0x5a, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x38, 0x36, 0x38, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x38, 0x36,
-	0x39, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x35, 0x38, 0x37, 0x30, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x38, 0x37, 0x31, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x38, 0x37, 0x32, 0x10, 0x03, 0x2a,
-	0x46, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x38, 0x37, 0x33, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x38, 0x37, 0x34, 0x10, 0x00, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x38, 0x37,
-	0x35, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x35, 0x38, 0x37, 0x36, 0x10, 0x02, 0x2a, 0x32, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x35,
-	0x39, 0x30, 0x34, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x35, 0x39, 0x30, 0x35, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x30, 0x36, 0x10, 0x01, 0x2a, 0x32, 0x0a, 0x08, 0x45,
-	0x6e, 0x75, 0x6d, 0x35, 0x39, 0x30, 0x39, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x31, 0x30, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x31, 0x31, 0x10, 0x01, 0x2a,
-	0x32, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x39, 0x31, 0x32, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x31, 0x33, 0x10, 0x00, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x31,
-	0x34, 0x10, 0x01, 0x2a, 0x5a, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x39, 0x31, 0x35, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x31,
-	0x36, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x35, 0x39, 0x31, 0x37, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x31, 0x38, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x31, 0x39, 0x10, 0x03, 0x2a,
-	0x32, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x39, 0x32, 0x30, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x32, 0x31, 0x10, 0x00, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x32,
-	0x32, 0x10, 0x01, 0x2a, 0x5a, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x39, 0x32, 0x33, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x32,
-	0x34, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x35, 0x39, 0x32, 0x35, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x32, 0x36, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x32, 0x37, 0x10, 0x03, 0x2a,
-	0x32, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x39, 0x32, 0x38, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x32, 0x39, 0x10, 0x00, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x33,
-	0x30, 0x10, 0x01, 0x2a, 0x46, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x39, 0x33, 0x31, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x33,
-	0x32, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x35, 0x39, 0x33, 0x33, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x33, 0x34, 0x10, 0x02, 0x2a, 0x46, 0x0a, 0x08, 0x45,
-	0x6e, 0x75, 0x6d, 0x35, 0x39, 0x33, 0x35, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x33, 0x36, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x33, 0x37, 0x10, 0x01, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x33,
-	0x38, 0x10, 0x02, 0x2a, 0x82, 0x01, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x39, 0x33, 0x39,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39,
-	0x34, 0x30, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x35, 0x39, 0x34, 0x31, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x34, 0x32, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x34, 0x33, 0x10, 0x03,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39,
-	0x34, 0x34, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x35, 0x39, 0x34, 0x35, 0x10, 0x05, 0x2a, 0xd2, 0x01, 0x0a, 0x08, 0x45, 0x6e, 0x75,
-	0x6d, 0x35, 0x39, 0x34, 0x36, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x35, 0x39, 0x34, 0x37, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x34, 0x38, 0x10, 0x01, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x34, 0x39, 0x10,
-	0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35,
-	0x39, 0x35, 0x30, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x35, 0x39, 0x35, 0x31, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x35, 0x32, 0x10, 0x05, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x35, 0x33, 0x10,
-	0x06, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35,
-	0x39, 0x35, 0x34, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x35, 0x39, 0x35, 0x35, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x35, 0x36, 0x10, 0x09, 0x2a, 0x5a, 0x0a,
-	0x08, 0x45, 0x6e, 0x75, 0x6d, 0x35, 0x39, 0x35, 0x37, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x35, 0x38, 0x10, 0x00, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x35, 0x39, 0x10,
-	0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35,
-	0x39, 0x36, 0x30, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x35, 0x39, 0x36, 0x31, 0x10, 0x03, 0x2a, 0x32, 0x0a, 0x08, 0x45, 0x6e, 0x75,
-	0x6d, 0x35, 0x39, 0x36, 0x32, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x35, 0x39, 0x36, 0x33, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x35, 0x39, 0x36, 0x34, 0x10, 0x01, 0x2a, 0xc2, 0x03,
-	0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x36, 0x30, 0x32, 0x35, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x32, 0x36, 0x10, 0x00, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x32, 0x37,
-	0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x36, 0x30, 0x32, 0x38, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x32, 0x39, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x33, 0x30, 0x10, 0x04, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x33, 0x31,
-	0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x36, 0x30, 0x33, 0x32, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x33, 0x33, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x33, 0x34, 0x10, 0x08, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x33, 0x35,
-	0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x36, 0x30, 0x33, 0x36, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x33, 0x37, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x33, 0x38, 0x10, 0x0c, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x33, 0x39,
-	0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x36, 0x30, 0x34, 0x30, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x34, 0x31, 0x10, 0x0f, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x34, 0x32, 0x10, 0x10, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x34, 0x33,
-	0x10, 0x11, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x36, 0x30, 0x34, 0x34, 0x10, 0x12, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x34, 0x35, 0x10, 0x13, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x34, 0x36, 0x10, 0x14, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x34, 0x37,
-	0x10, 0x15, 0x2a, 0xa2, 0x02, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x36, 0x31, 0x31, 0x31, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x31, 0x31,
-	0x32, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x36, 0x31, 0x31, 0x33, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x31, 0x31, 0x34, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x31, 0x31, 0x35, 0x10, 0x04, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x31, 0x31,
-	0x36, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x36, 0x31, 0x31, 0x37, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x31, 0x31, 0x38, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x31, 0x31, 0x39, 0x10, 0x08, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x31, 0x32,
-	0x30, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x36, 0x31, 0x32, 0x31, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x31, 0x32, 0x32, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x31, 0x32, 0x33, 0x10, 0x0c, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x31, 0x32,
-	0x34, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x36, 0x31, 0x32, 0x35, 0x10, 0x0e, 0x2a, 0xb6, 0x02, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d,
-	0x36, 0x30, 0x36, 0x35, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x36, 0x30, 0x36, 0x36, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x36, 0x37, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x36, 0x38, 0x10, 0x02,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30,
-	0x36, 0x39, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x36, 0x30, 0x37, 0x30, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x37, 0x31, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x37, 0x32, 0x10, 0x06,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30,
-	0x37, 0x33, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x36, 0x30, 0x37, 0x34, 0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x37, 0x35, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x37, 0x36, 0x10, 0x0a,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30,
-	0x37, 0x37, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x36, 0x30, 0x37, 0x38, 0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x37, 0x39, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x30, 0x38, 0x30, 0x10, 0x0e,
-	0x2a, 0x32, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x36, 0x31, 0x33, 0x30, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x31, 0x33, 0x31, 0x10, 0x00,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x31,
-	0x33, 0x32, 0x10, 0x01, 0x2a, 0xaa, 0x01, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x36, 0x35, 0x37,
-	0x39, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36,
-	0x35, 0x38, 0x30, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x36, 0x35, 0x38, 0x31, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x35, 0x38, 0x32, 0x10, 0x03, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x35, 0x38, 0x33, 0x10,
-	0x05, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36,
-	0x35, 0x38, 0x34, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x36, 0x35, 0x38, 0x35, 0x10, 0x0f, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x35, 0x38, 0x36, 0x10, 0x19, 0x12, 0x12, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x35, 0x38, 0x37, 0x10,
-	0x1e, 0x2a, 0xb2, 0x05, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x36, 0x35, 0x38, 0x38, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x35, 0x38, 0x39,
-	0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x36, 0x35, 0x39, 0x30, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x36, 0x35, 0x39, 0x31, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x35, 0x39, 0x32, 0x10, 0x03, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x35, 0x39, 0x33,
-	0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x36, 0x35, 0x39, 0x34, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x36, 0x35, 0x39, 0x35, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x35, 0x39, 0x36, 0x10, 0x07, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x35, 0x39, 0x37,
-	0x10, 0x08, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x36, 0x35, 0x39, 0x38, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x36, 0x35, 0x39, 0x39, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x30, 0x30, 0x10, 0x0b, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x30, 0x31,
-	0x10, 0x0c, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x36, 0x36, 0x30, 0x32, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x30, 0x33, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x30, 0x34, 0x10, 0x0f, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x30, 0x35,
-	0x10, 0x10, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x36, 0x36, 0x30, 0x36, 0x10, 0x11, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x30, 0x37, 0x10, 0x13, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x30, 0x38, 0x10, 0x14, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x30, 0x39,
-	0x10, 0x15, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x36, 0x36, 0x31, 0x30, 0x10, 0x16, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x31, 0x31, 0x10, 0x17, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x31, 0x32, 0x10, 0x18, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x31, 0x33,
-	0x10, 0x19, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x36, 0x36, 0x31, 0x34, 0x10, 0x1a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x31, 0x35, 0x10, 0x1b, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x31, 0x36, 0x10, 0x1c, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x31, 0x37,
-	0x10, 0x1d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x36, 0x36, 0x31, 0x38, 0x10, 0x1e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x31, 0x39, 0x10, 0x1f, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x32, 0x30, 0x10, 0x20, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x36, 0x36, 0x32, 0x31,
-	0x10, 0x21, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x36, 0x36, 0x32, 0x32, 0x10, 0x22, 0x2a, 0x5a, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x37, 0x32,
-	0x38, 0x38, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x37, 0x32, 0x38, 0x39, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x37, 0x32, 0x39, 0x30, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x37, 0x32, 0x39, 0x31, 0x10, 0x02, 0x12, 0x12,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x37, 0x32, 0x39, 0x32,
-	0x10, 0x03, 0x2a, 0xaa, 0x01, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x37, 0x35, 0x31, 0x32, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x37, 0x35, 0x31,
-	0x33, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x37, 0x35, 0x31, 0x34, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x37, 0x35, 0x31, 0x35, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x37, 0x35, 0x31, 0x36, 0x10, 0x03, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x37, 0x35, 0x31,
-	0x37, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x37, 0x35, 0x31, 0x38, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x37, 0x35, 0x31, 0x39, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x37, 0x35, 0x32, 0x30, 0x10, 0x07, 0x2a,
-	0x6e, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x37, 0x39, 0x32, 0x32, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x37, 0x39, 0x32, 0x33, 0x10, 0x01, 0x12,
-	0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x37, 0x39, 0x32,
-	0x34, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x37, 0x39, 0x32, 0x35, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x37, 0x39, 0x32, 0x36, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x37, 0x39, 0x32, 0x37, 0x10, 0x05, 0x2a,
-	0xa2, 0x1d, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x34, 0x37, 0x36, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x37, 0x37, 0x10, 0x00,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34,
-	0x37, 0x38, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x34, 0x37, 0x39, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x38, 0x30, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x38, 0x31, 0x10, 0x04,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34,
-	0x38, 0x32, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x34, 0x38, 0x33, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x38, 0x34, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x38, 0x35, 0x10, 0x08,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34,
-	0x38, 0x36, 0x10, 0x09, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x34, 0x38, 0x37, 0x10, 0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x38, 0x38, 0x10, 0x0b, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x38, 0x39, 0x10, 0x0c,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34,
-	0x39, 0x30, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x34, 0x39, 0x31, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x39, 0x32, 0x10, 0x0f, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x39, 0x33, 0x10, 0x10,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34,
-	0x39, 0x34, 0x10, 0x11, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x34, 0x39, 0x35, 0x10, 0x12, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x39, 0x36, 0x10, 0x13, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34, 0x39, 0x37, 0x10, 0x14,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x34,
-	0x39, 0x38, 0x10, 0x15, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x34, 0x39, 0x39, 0x10, 0x16, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x30, 0x30, 0x10, 0x17, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x30, 0x31, 0x10, 0x18,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x30, 0x32, 0x10, 0x19, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x30, 0x33, 0x10, 0x1a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x30, 0x34, 0x10, 0x1b, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x30, 0x35, 0x10, 0x1c,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x30, 0x36, 0x10, 0x1d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x30, 0x37, 0x10, 0x1e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x30, 0x38, 0x10, 0x1f, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x30, 0x39, 0x10, 0x20,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x31, 0x30, 0x10, 0x21, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x31, 0x31, 0x10, 0x22, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x31, 0x32, 0x10, 0x23, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x31, 0x33, 0x10, 0x24,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x31, 0x34, 0x10, 0x25, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x31, 0x35, 0x10, 0x26, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x31, 0x36, 0x10, 0x27, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x31, 0x37, 0x10, 0x28,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x31, 0x38, 0x10, 0x29, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x31, 0x39, 0x10, 0x2a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x32, 0x30, 0x10, 0x2b, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x32, 0x31, 0x10, 0x2c,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x32, 0x32, 0x10, 0x2d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x32, 0x33, 0x10, 0x2e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x32, 0x34, 0x10, 0x2f, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x32, 0x35, 0x10, 0x30,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x32, 0x36, 0x10, 0x31, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x32, 0x37, 0x10, 0x32, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x32, 0x38, 0x10, 0x33, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x32, 0x39, 0x10, 0x34,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x33, 0x30, 0x10, 0x35, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x33, 0x31, 0x10, 0x36, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x33, 0x32, 0x10, 0x37, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x33, 0x33, 0x10, 0x38,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x33, 0x34, 0x10, 0x39, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x33, 0x35, 0x10, 0x3a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x33, 0x36, 0x10, 0x3b, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x33, 0x37, 0x10, 0x3c,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x33, 0x38, 0x10, 0x3d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x33, 0x39, 0x10, 0x3e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x34, 0x30, 0x10, 0x3f, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x34, 0x31, 0x10, 0x40,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x34, 0x32, 0x10, 0x41, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x34, 0x33, 0x10, 0x42, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x34, 0x34, 0x10, 0x43, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x34, 0x35, 0x10, 0x44,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x34, 0x36, 0x10, 0x45, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x34, 0x37, 0x10, 0x46, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x34, 0x38, 0x10, 0x47, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x34, 0x39, 0x10, 0x48,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x35, 0x30, 0x10, 0x49, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x35, 0x31, 0x10, 0x4a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x35, 0x32, 0x10, 0x4b, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x35, 0x33, 0x10, 0x4c,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x35, 0x34, 0x10, 0x4d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x35, 0x35, 0x10, 0x4e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x35, 0x36, 0x10, 0x4f, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x35, 0x37, 0x10, 0x50,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x35, 0x38, 0x10, 0x51, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x35, 0x39, 0x10, 0x52, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x36, 0x30, 0x10, 0x53, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x36, 0x31, 0x10, 0x54,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x36, 0x32, 0x10, 0x55, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x36, 0x33, 0x10, 0x56, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x36, 0x34, 0x10, 0x57, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x36, 0x35, 0x10, 0x58,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x36, 0x36, 0x10, 0x59, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x36, 0x37, 0x10, 0x5a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x36, 0x38, 0x10, 0x5b, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x36, 0x39, 0x10, 0x5c,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x37, 0x30, 0x10, 0x5d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x37, 0x31, 0x10, 0x5e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x37, 0x32, 0x10, 0x5f, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x37, 0x33, 0x10, 0x60,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x37, 0x34, 0x10, 0x61, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x37, 0x35, 0x10, 0x62, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x37, 0x36, 0x10, 0x63, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x37, 0x37, 0x10, 0x64,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x37, 0x38, 0x10, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x37, 0x39, 0x10, 0x66, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x38, 0x30, 0x10, 0x67, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x38, 0x31, 0x10, 0x68,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x38, 0x32, 0x10, 0x69, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x38, 0x33, 0x10, 0x6a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x38, 0x34, 0x10, 0x6b, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x38, 0x35, 0x10, 0x6c,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x38, 0x36, 0x10, 0x6d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x38, 0x37, 0x10, 0x6e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x38, 0x38, 0x10, 0x6f, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x38, 0x39, 0x10, 0x70,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x39, 0x30, 0x10, 0x71, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x39, 0x31, 0x10, 0x72, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x39, 0x32, 0x10, 0x73, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x39, 0x33, 0x10, 0x74,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x39, 0x34, 0x10, 0x75, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x39, 0x35, 0x10, 0x76, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x39, 0x36, 0x10, 0x77, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35, 0x39, 0x37, 0x10, 0x78,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x35,
-	0x39, 0x38, 0x10, 0x79, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x35, 0x39, 0x39, 0x10, 0x7a, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x30, 0x30, 0x10, 0x7b, 0x12, 0x12, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x30, 0x31, 0x10, 0x7c,
-	0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36,
-	0x30, 0x32, 0x10, 0x7d, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x36, 0x30, 0x33, 0x10, 0x7e, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x30, 0x34, 0x10, 0x7f, 0x12, 0x13, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x30, 0x35, 0x10, 0x80,
-	0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33,
-	0x36, 0x30, 0x36, 0x10, 0x81, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x30, 0x37, 0x10, 0x82, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x30, 0x38, 0x10, 0x83, 0x01,
-	0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36,
-	0x30, 0x39, 0x10, 0x84, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x33, 0x36, 0x31, 0x30, 0x10, 0x85, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x31, 0x31, 0x10, 0x86, 0x01, 0x12,
-	0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x31,
-	0x32, 0x10, 0x87, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x36, 0x31, 0x33, 0x10, 0x88, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x31, 0x34, 0x10, 0x89, 0x01, 0x12, 0x13,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x31, 0x35,
-	0x10, 0x8a, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x36, 0x31, 0x36, 0x10, 0x8b, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x31, 0x37, 0x10, 0x8c, 0x01, 0x12, 0x13, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x31, 0x38, 0x10,
-	0x8d, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x33, 0x36, 0x31, 0x39, 0x10, 0x8e, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x32, 0x30, 0x10, 0x8f, 0x01, 0x12, 0x13, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x32, 0x31, 0x10, 0x90,
-	0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33,
-	0x36, 0x32, 0x32, 0x10, 0x91, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x32, 0x33, 0x10, 0x92, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x32, 0x34, 0x10, 0x93, 0x01,
-	0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36,
-	0x32, 0x35, 0x10, 0x94, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x33, 0x36, 0x32, 0x36, 0x10, 0x95, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x32, 0x37, 0x10, 0x96, 0x01, 0x12,
-	0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x32,
-	0x38, 0x10, 0x97, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x36, 0x32, 0x39, 0x10, 0x98, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x33, 0x30, 0x10, 0x99, 0x01, 0x12, 0x13,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x33, 0x31,
-	0x10, 0x9a, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x36, 0x33, 0x32, 0x10, 0x9b, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x33, 0x33, 0x10, 0x9c, 0x01, 0x12, 0x13, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x33, 0x34, 0x10,
-	0x9d, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x33, 0x36, 0x33, 0x35, 0x10, 0x9e, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x33, 0x36, 0x10, 0x9f, 0x01, 0x12, 0x13, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x33, 0x37, 0x10, 0xa0,
-	0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33,
-	0x36, 0x33, 0x38, 0x10, 0xa1, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x33, 0x39, 0x10, 0xa2, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x34, 0x30, 0x10, 0xa3, 0x01,
-	0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36,
-	0x34, 0x31, 0x10, 0xa4, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x33, 0x36, 0x34, 0x32, 0x10, 0xa5, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x34, 0x33, 0x10, 0xa6, 0x01, 0x12,
-	0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x34,
-	0x34, 0x10, 0xa7, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x33, 0x36, 0x34, 0x35, 0x10, 0xa8, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55,
-	0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x34, 0x36, 0x10, 0xa9, 0x01, 0x12, 0x13,
-	0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x34, 0x37,
-	0x10, 0xaa, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x33, 0x36, 0x34, 0x38, 0x10, 0xab, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x34, 0x39, 0x10, 0xac, 0x01, 0x12, 0x13, 0x0a,
-	0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x35, 0x30, 0x10,
-	0xad, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x33, 0x36, 0x35, 0x31, 0x10, 0xae, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x35, 0x32, 0x10, 0xaf, 0x01, 0x12, 0x13, 0x0a, 0x0e,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x35, 0x33, 0x10, 0xb0,
-	0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33,
-	0x36, 0x35, 0x34, 0x10, 0xb1, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x35, 0x35, 0x10, 0xb2, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x35, 0x36, 0x10, 0xb3, 0x01,
-	0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36,
-	0x35, 0x37, 0x10, 0xb4, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x33, 0x36, 0x35, 0x38, 0x10, 0xb5, 0x01, 0x12, 0x13, 0x0a, 0x0e, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x35, 0x39, 0x10, 0xb6, 0x01, 0x12,
-	0x13, 0x0a, 0x0e, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x33, 0x36, 0x36,
-	0x30, 0x10, 0xb7, 0x01, 0x2a, 0xc8, 0x01, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x30, 0x33,
-	0x32, 0x35, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x30, 0x33, 0x32, 0x36, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x33, 0x32, 0x37, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x33, 0x32, 0x38, 0x10,
-	0x02, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x30, 0x33, 0x32, 0x39, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x33, 0x33, 0x30, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x33, 0x33, 0x31, 0x10, 0x05,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30,
-	0x33, 0x33, 0x32, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x30, 0x33, 0x33, 0x33, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x33, 0x33, 0x34, 0x10, 0x08, 0x2a,
-	0x20, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x30, 0x33, 0x33, 0x35, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x33, 0x33, 0x36, 0x10,
-	0x00, 0x2a, 0x35, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x30, 0x33, 0x33, 0x37, 0x12, 0x13,
-	0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x30, 0x33, 0x33,
-	0x38, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55,
-	0x45, 0x31, 0x30, 0x33, 0x33, 0x39, 0x10, 0x01, 0x2a, 0x5f, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d,
-	0x31, 0x31, 0x39, 0x30, 0x31, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x31, 0x39, 0x30, 0x32, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e,
-	0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x39, 0x30, 0x33, 0x10, 0x01, 0x12,
-	0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x31, 0x39,
-	0x30, 0x34, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c,
-	0x55, 0x45, 0x31, 0x31, 0x39, 0x30, 0x35, 0x10, 0x03, 0x2a, 0x5f, 0x0a, 0x09, 0x45, 0x6e, 0x75,
-	0x6d, 0x31, 0x32, 0x37, 0x33, 0x35, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56,
-	0x41, 0x4c, 0x55, 0x45, 0x31, 0x32, 0x37, 0x33, 0x36, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45,
-	0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x32, 0x37, 0x33, 0x37, 0x10, 0x01,
-	0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x32,
-	0x37, 0x33, 0x38, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41,
-	0x4c, 0x55, 0x45, 0x31, 0x32, 0x37, 0x33, 0x39, 0x10, 0x03, 0x2a, 0x89, 0x01, 0x0a, 0x09, 0x45,
-	0x6e, 0x75, 0x6d, 0x31, 0x32, 0x38, 0x37, 0x31, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d,
-	0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x32, 0x38, 0x37, 0x32, 0x10, 0x01, 0x12, 0x13, 0x0a,
-	0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x32, 0x38, 0x37, 0x33,
-	0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45,
-	0x31, 0x32, 0x38, 0x37, 0x34, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f,
-	0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x32, 0x38, 0x37, 0x35, 0x10, 0x04, 0x12, 0x13, 0x0a, 0x0f,
-	0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31, 0x32, 0x38, 0x37, 0x36, 0x10,
-	0x05, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x31,
-	0x32, 0x38, 0x37, 0x37, 0x10, 0x06, 0x42, 0x23, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x62, 0x65,
-	0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0xf8, 0x01, 0x01,
-}
-
-var (
-	file_datasets_google_message4_benchmark_message4_3_proto_rawDescOnce sync.Once
-	file_datasets_google_message4_benchmark_message4_3_proto_rawDescData = file_datasets_google_message4_benchmark_message4_3_proto_rawDesc
-)
-
-func file_datasets_google_message4_benchmark_message4_3_proto_rawDescGZIP() []byte {
-	file_datasets_google_message4_benchmark_message4_3_proto_rawDescOnce.Do(func() {
-		file_datasets_google_message4_benchmark_message4_3_proto_rawDescData = protoimpl.X.CompressGZIP(file_datasets_google_message4_benchmark_message4_3_proto_rawDescData)
-	})
-	return file_datasets_google_message4_benchmark_message4_3_proto_rawDescData
-}
-
-var file_datasets_google_message4_benchmark_message4_3_proto_enumTypes = make([]protoimpl.EnumInfo, 42)
-var file_datasets_google_message4_benchmark_message4_3_proto_goTypes = []interface{}{
-	(UnusedEnum)(0), // 0: benchmarks.google_message4.UnusedEnum
-	(Enum2593)(0),   // 1: benchmarks.google_message4.Enum2593
-	(Enum2834)(0),   // 2: benchmarks.google_message4.Enum2834
-	(Enum2806)(0),   // 3: benchmarks.google_message4.Enum2806
-	(Enum2851)(0),   // 4: benchmarks.google_message4.Enum2851
-	(Enum2602)(0),   // 5: benchmarks.google_message4.Enum2602
-	(Enum3071)(0),   // 6: benchmarks.google_message4.Enum3071
-	(Enum3805)(0),   // 7: benchmarks.google_message4.Enum3805
-	(Enum3783)(0),   // 8: benchmarks.google_message4.Enum3783
-	(Enum3851)(0),   // 9: benchmarks.google_message4.Enum3851
-	(Enum5862)(0),   // 10: benchmarks.google_message4.Enum5862
-	(Enum5868)(0),   // 11: benchmarks.google_message4.Enum5868
-	(Enum5873)(0),   // 12: benchmarks.google_message4.Enum5873
-	(Enum5904)(0),   // 13: benchmarks.google_message4.Enum5904
-	(Enum5909)(0),   // 14: benchmarks.google_message4.Enum5909
-	(Enum5912)(0),   // 15: benchmarks.google_message4.Enum5912
-	(Enum5915)(0),   // 16: benchmarks.google_message4.Enum5915
-	(Enum5920)(0),   // 17: benchmarks.google_message4.Enum5920
-	(Enum5923)(0),   // 18: benchmarks.google_message4.Enum5923
-	(Enum5928)(0),   // 19: benchmarks.google_message4.Enum5928
-	(Enum5931)(0),   // 20: benchmarks.google_message4.Enum5931
-	(Enum5935)(0),   // 21: benchmarks.google_message4.Enum5935
-	(Enum5939)(0),   // 22: benchmarks.google_message4.Enum5939
-	(Enum5946)(0),   // 23: benchmarks.google_message4.Enum5946
-	(Enum5957)(0),   // 24: benchmarks.google_message4.Enum5957
-	(Enum5962)(0),   // 25: benchmarks.google_message4.Enum5962
-	(Enum6025)(0),   // 26: benchmarks.google_message4.Enum6025
-	(Enum6111)(0),   // 27: benchmarks.google_message4.Enum6111
-	(Enum6065)(0),   // 28: benchmarks.google_message4.Enum6065
-	(Enum6130)(0),   // 29: benchmarks.google_message4.Enum6130
-	(Enum6579)(0),   // 30: benchmarks.google_message4.Enum6579
-	(Enum6588)(0),   // 31: benchmarks.google_message4.Enum6588
-	(Enum7288)(0),   // 32: benchmarks.google_message4.Enum7288
-	(Enum7512)(0),   // 33: benchmarks.google_message4.Enum7512
-	(Enum7922)(0),   // 34: benchmarks.google_message4.Enum7922
-	(Enum3476)(0),   // 35: benchmarks.google_message4.Enum3476
-	(Enum10325)(0),  // 36: benchmarks.google_message4.Enum10325
-	(Enum10335)(0),  // 37: benchmarks.google_message4.Enum10335
-	(Enum10337)(0),  // 38: benchmarks.google_message4.Enum10337
-	(Enum11901)(0),  // 39: benchmarks.google_message4.Enum11901
-	(Enum12735)(0),  // 40: benchmarks.google_message4.Enum12735
-	(Enum12871)(0),  // 41: benchmarks.google_message4.Enum12871
-}
-var file_datasets_google_message4_benchmark_message4_3_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_datasets_google_message4_benchmark_message4_3_proto_init() }
-func file_datasets_google_message4_benchmark_message4_3_proto_init() {
-	if File_datasets_google_message4_benchmark_message4_3_proto != nil {
-		return
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_datasets_google_message4_benchmark_message4_3_proto_rawDesc,
-			NumEnums:      42,
-			NumMessages:   0,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_datasets_google_message4_benchmark_message4_3_proto_goTypes,
-		DependencyIndexes: file_datasets_google_message4_benchmark_message4_3_proto_depIdxs,
-		EnumInfos:         file_datasets_google_message4_benchmark_message4_3_proto_enumTypes,
-	}.Build()
-	File_datasets_google_message4_benchmark_message4_3_proto = out.File
-	file_datasets_google_message4_benchmark_message4_3_proto_rawDesc = nil
-	file_datasets_google_message4_benchmark_message4_3_proto_goTypes = nil
-	file_datasets_google_message4_benchmark_message4_3_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/benchmarks/micro/micro.pb.go b/internal/testprotos/benchmarks/micro/micro.pb.go
deleted file mode 100644
index 591b8e6..0000000
--- a/internal/testprotos/benchmarks/micro/micro.pb.go
+++ /dev/null
@@ -1,278 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/benchmarks/micro/micro.proto
-
-package micro
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type SixteenRequired struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	F1  *int32 `protobuf:"varint,1,req,name=f1" json:"f1,omitempty"`
-	F2  *int32 `protobuf:"varint,2,req,name=f2" json:"f2,omitempty"`
-	F3  *int32 `protobuf:"varint,3,req,name=f3" json:"f3,omitempty"`
-	F4  *int32 `protobuf:"varint,4,req,name=f4" json:"f4,omitempty"`
-	F5  *int32 `protobuf:"varint,5,req,name=f5" json:"f5,omitempty"`
-	F6  *int32 `protobuf:"varint,6,req,name=f6" json:"f6,omitempty"`
-	F7  *int32 `protobuf:"varint,7,req,name=f7" json:"f7,omitempty"`
-	F8  *int32 `protobuf:"varint,8,req,name=f8" json:"f8,omitempty"`
-	F9  *int32 `protobuf:"varint,9,req,name=f9" json:"f9,omitempty"`
-	F10 *int32 `protobuf:"varint,10,req,name=f10" json:"f10,omitempty"`
-	F11 *int32 `protobuf:"varint,11,req,name=f11" json:"f11,omitempty"`
-	F12 *int32 `protobuf:"varint,12,req,name=f12" json:"f12,omitempty"`
-	F13 *int32 `protobuf:"varint,13,req,name=f13" json:"f13,omitempty"`
-	F14 *int32 `protobuf:"varint,14,req,name=f14" json:"f14,omitempty"`
-	F15 *int32 `protobuf:"varint,15,req,name=f15" json:"f15,omitempty"`
-	F16 *int32 `protobuf:"varint,16,req,name=f16" json:"f16,omitempty"`
-}
-
-func (x *SixteenRequired) Reset() {
-	*x = SixteenRequired{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_benchmarks_micro_micro_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SixteenRequired) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SixteenRequired) ProtoMessage() {}
-
-func (x *SixteenRequired) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_benchmarks_micro_micro_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SixteenRequired.ProtoReflect.Descriptor instead.
-func (*SixteenRequired) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_benchmarks_micro_micro_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *SixteenRequired) GetF1() int32 {
-	if x != nil && x.F1 != nil {
-		return *x.F1
-	}
-	return 0
-}
-
-func (x *SixteenRequired) GetF2() int32 {
-	if x != nil && x.F2 != nil {
-		return *x.F2
-	}
-	return 0
-}
-
-func (x *SixteenRequired) GetF3() int32 {
-	if x != nil && x.F3 != nil {
-		return *x.F3
-	}
-	return 0
-}
-
-func (x *SixteenRequired) GetF4() int32 {
-	if x != nil && x.F4 != nil {
-		return *x.F4
-	}
-	return 0
-}
-
-func (x *SixteenRequired) GetF5() int32 {
-	if x != nil && x.F5 != nil {
-		return *x.F5
-	}
-	return 0
-}
-
-func (x *SixteenRequired) GetF6() int32 {
-	if x != nil && x.F6 != nil {
-		return *x.F6
-	}
-	return 0
-}
-
-func (x *SixteenRequired) GetF7() int32 {
-	if x != nil && x.F7 != nil {
-		return *x.F7
-	}
-	return 0
-}
-
-func (x *SixteenRequired) GetF8() int32 {
-	if x != nil && x.F8 != nil {
-		return *x.F8
-	}
-	return 0
-}
-
-func (x *SixteenRequired) GetF9() int32 {
-	if x != nil && x.F9 != nil {
-		return *x.F9
-	}
-	return 0
-}
-
-func (x *SixteenRequired) GetF10() int32 {
-	if x != nil && x.F10 != nil {
-		return *x.F10
-	}
-	return 0
-}
-
-func (x *SixteenRequired) GetF11() int32 {
-	if x != nil && x.F11 != nil {
-		return *x.F11
-	}
-	return 0
-}
-
-func (x *SixteenRequired) GetF12() int32 {
-	if x != nil && x.F12 != nil {
-		return *x.F12
-	}
-	return 0
-}
-
-func (x *SixteenRequired) GetF13() int32 {
-	if x != nil && x.F13 != nil {
-		return *x.F13
-	}
-	return 0
-}
-
-func (x *SixteenRequired) GetF14() int32 {
-	if x != nil && x.F14 != nil {
-		return *x.F14
-	}
-	return 0
-}
-
-func (x *SixteenRequired) GetF15() int32 {
-	if x != nil && x.F15 != nil {
-		return *x.F15
-	}
-	return 0
-}
-
-func (x *SixteenRequired) GetF16() int32 {
-	if x != nil && x.F16 != nil {
-		return *x.F16
-	}
-	return 0
-}
-
-var File_internal_testprotos_benchmarks_micro_micro_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_benchmarks_micro_micro_proto_rawDesc = []byte{
-	0x0a, 0x30, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73,
-	0x2f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x2f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x12, 0x1f, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72, 0x6b, 0x73, 0x2e, 0x6d, 0x69, 0x63,
-	0x72, 0x6f, 0x74, 0x22, 0x9f, 0x02, 0x0a, 0x0f, 0x53, 0x69, 0x78, 0x74, 0x65, 0x65, 0x6e, 0x52,
-	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x66, 0x31, 0x18, 0x01, 0x20,
-	0x02, 0x28, 0x05, 0x52, 0x02, 0x66, 0x31, 0x12, 0x0e, 0x0a, 0x02, 0x66, 0x32, 0x18, 0x02, 0x20,
-	0x02, 0x28, 0x05, 0x52, 0x02, 0x66, 0x32, 0x12, 0x0e, 0x0a, 0x02, 0x66, 0x33, 0x18, 0x03, 0x20,
-	0x02, 0x28, 0x05, 0x52, 0x02, 0x66, 0x33, 0x12, 0x0e, 0x0a, 0x02, 0x66, 0x34, 0x18, 0x04, 0x20,
-	0x02, 0x28, 0x05, 0x52, 0x02, 0x66, 0x34, 0x12, 0x0e, 0x0a, 0x02, 0x66, 0x35, 0x18, 0x05, 0x20,
-	0x02, 0x28, 0x05, 0x52, 0x02, 0x66, 0x35, 0x12, 0x0e, 0x0a, 0x02, 0x66, 0x36, 0x18, 0x06, 0x20,
-	0x02, 0x28, 0x05, 0x52, 0x02, 0x66, 0x36, 0x12, 0x0e, 0x0a, 0x02, 0x66, 0x37, 0x18, 0x07, 0x20,
-	0x02, 0x28, 0x05, 0x52, 0x02, 0x66, 0x37, 0x12, 0x0e, 0x0a, 0x02, 0x66, 0x38, 0x18, 0x08, 0x20,
-	0x02, 0x28, 0x05, 0x52, 0x02, 0x66, 0x38, 0x12, 0x0e, 0x0a, 0x02, 0x66, 0x39, 0x18, 0x09, 0x20,
-	0x02, 0x28, 0x05, 0x52, 0x02, 0x66, 0x39, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x31, 0x30, 0x18, 0x0a,
-	0x20, 0x02, 0x28, 0x05, 0x52, 0x03, 0x66, 0x31, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x31, 0x31,
-	0x18, 0x0b, 0x20, 0x02, 0x28, 0x05, 0x52, 0x03, 0x66, 0x31, 0x31, 0x12, 0x10, 0x0a, 0x03, 0x66,
-	0x31, 0x32, 0x18, 0x0c, 0x20, 0x02, 0x28, 0x05, 0x52, 0x03, 0x66, 0x31, 0x32, 0x12, 0x10, 0x0a,
-	0x03, 0x66, 0x31, 0x33, 0x18, 0x0d, 0x20, 0x02, 0x28, 0x05, 0x52, 0x03, 0x66, 0x31, 0x33, 0x12,
-	0x10, 0x0a, 0x03, 0x66, 0x31, 0x34, 0x18, 0x0e, 0x20, 0x02, 0x28, 0x05, 0x52, 0x03, 0x66, 0x31,
-	0x34, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x31, 0x35, 0x18, 0x0f, 0x20, 0x02, 0x28, 0x05, 0x52, 0x03,
-	0x66, 0x31, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x31, 0x36, 0x18, 0x10, 0x20, 0x02, 0x28, 0x05,
-	0x52, 0x03, 0x66, 0x31, 0x36, 0x42, 0x41, 0x5a, 0x3f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
-	0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73,
-	0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x62, 0x65, 0x6e, 0x63, 0x68, 0x6d, 0x61, 0x72,
-	0x6b, 0x73, 0x2f, 0x6d, 0x69, 0x63, 0x72, 0x6f,
-}
-
-var (
-	file_internal_testprotos_benchmarks_micro_micro_proto_rawDescOnce sync.Once
-	file_internal_testprotos_benchmarks_micro_micro_proto_rawDescData = file_internal_testprotos_benchmarks_micro_micro_proto_rawDesc
-)
-
-func file_internal_testprotos_benchmarks_micro_micro_proto_rawDescGZIP() []byte {
-	file_internal_testprotos_benchmarks_micro_micro_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_benchmarks_micro_micro_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_benchmarks_micro_micro_proto_rawDescData)
-	})
-	return file_internal_testprotos_benchmarks_micro_micro_proto_rawDescData
-}
-
-var file_internal_testprotos_benchmarks_micro_micro_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_internal_testprotos_benchmarks_micro_micro_proto_goTypes = []interface{}{
-	(*SixteenRequired)(nil), // 0: goproto.proto.benchmarks.microt.SixteenRequired
-}
-var file_internal_testprotos_benchmarks_micro_micro_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_benchmarks_micro_micro_proto_init() }
-func file_internal_testprotos_benchmarks_micro_micro_proto_init() {
-	if File_internal_testprotos_benchmarks_micro_micro_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_internal_testprotos_benchmarks_micro_micro_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SixteenRequired); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_benchmarks_micro_micro_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_internal_testprotos_benchmarks_micro_micro_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_benchmarks_micro_micro_proto_depIdxs,
-		MessageInfos:      file_internal_testprotos_benchmarks_micro_micro_proto_msgTypes,
-	}.Build()
-	File_internal_testprotos_benchmarks_micro_micro_proto = out.File
-	file_internal_testprotos_benchmarks_micro_micro_proto_rawDesc = nil
-	file_internal_testprotos_benchmarks_micro_micro_proto_goTypes = nil
-	file_internal_testprotos_benchmarks_micro_micro_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/benchmarks/micro/micro.proto b/internal/testprotos/benchmarks/micro/micro.proto
deleted file mode 100644
index a0303c1..0000000
--- a/internal/testprotos/benchmarks/micro/micro.proto
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.proto.benchmarks.microt;
-
-option go_package = "google.golang.org/protobuf/internal/testprotos/benchmarks/micro";
-
-message SixteenRequired {
-  required int32 f1 = 1;
-  required int32 f2 = 2;
-  required int32 f3 = 3;
-  required int32 f4 = 4;
-  required int32 f5 = 5;
-  required int32 f6 = 6;
-  required int32 f7 = 7;
-  required int32 f8 = 8;
-  required int32 f9 = 9;
-  required int32 f10 = 10;
-  required int32 f11 = 11;
-  required int32 f12 = 12;
-  required int32 f13 = 13;
-  required int32 f14 = 14;
-  required int32 f15 = 15;
-  required int32 f16 = 16;
-}
diff --git a/internal/testprotos/conformance/conformance.pb.go b/internal/testprotos/conformance/conformance.pb.go
deleted file mode 100644
index fcdeb2b..0000000
--- a/internal/testprotos/conformance/conformance.pb.go
+++ /dev/null
@@ -1,830 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: conformance/conformance.proto
-
-package conformance
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type WireFormat int32
-
-const (
-	WireFormat_UNSPECIFIED WireFormat = 0
-	WireFormat_PROTOBUF    WireFormat = 1
-	WireFormat_JSON        WireFormat = 2
-	WireFormat_JSPB        WireFormat = 3 // Google internal only. Opensource testees just skip it.
-	WireFormat_TEXT_FORMAT WireFormat = 4
-)
-
-// Enum value maps for WireFormat.
-var (
-	WireFormat_name = map[int32]string{
-		0: "UNSPECIFIED",
-		1: "PROTOBUF",
-		2: "JSON",
-		3: "JSPB",
-		4: "TEXT_FORMAT",
-	}
-	WireFormat_value = map[string]int32{
-		"UNSPECIFIED": 0,
-		"PROTOBUF":    1,
-		"JSON":        2,
-		"JSPB":        3,
-		"TEXT_FORMAT": 4,
-	}
-)
-
-func (x WireFormat) Enum() *WireFormat {
-	p := new(WireFormat)
-	*p = x
-	return p
-}
-
-func (x WireFormat) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (WireFormat) Descriptor() protoreflect.EnumDescriptor {
-	return file_conformance_conformance_proto_enumTypes[0].Descriptor()
-}
-
-func (WireFormat) Type() protoreflect.EnumType {
-	return &file_conformance_conformance_proto_enumTypes[0]
-}
-
-func (x WireFormat) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use WireFormat.Descriptor instead.
-func (WireFormat) EnumDescriptor() ([]byte, []int) {
-	return file_conformance_conformance_proto_rawDescGZIP(), []int{0}
-}
-
-type TestCategory int32
-
-const (
-	TestCategory_UNSPECIFIED_TEST TestCategory = 0
-	TestCategory_BINARY_TEST      TestCategory = 1 // Test binary wire format.
-	TestCategory_JSON_TEST        TestCategory = 2 // Test json wire format.
-	// Similar to JSON_TEST. However, during parsing json, testee should ignore
-	// unknown fields. This feature is optional. Each implementation can decide
-	// whether to support it.  See
-	// https://developers.google.com/protocol-buffers/docs/proto3#json_options
-	// for more detail.
-	TestCategory_JSON_IGNORE_UNKNOWN_PARSING_TEST TestCategory = 3
-	// Test jspb wire format. Google internal only. Opensource testees just skip it.
-	TestCategory_JSPB_TEST TestCategory = 4
-	// Test text format. For cpp, java and python, testees can already deal with
-	// this type. Testees of other languages can simply skip it.
-	TestCategory_TEXT_FORMAT_TEST TestCategory = 5
-)
-
-// Enum value maps for TestCategory.
-var (
-	TestCategory_name = map[int32]string{
-		0: "UNSPECIFIED_TEST",
-		1: "BINARY_TEST",
-		2: "JSON_TEST",
-		3: "JSON_IGNORE_UNKNOWN_PARSING_TEST",
-		4: "JSPB_TEST",
-		5: "TEXT_FORMAT_TEST",
-	}
-	TestCategory_value = map[string]int32{
-		"UNSPECIFIED_TEST":                 0,
-		"BINARY_TEST":                      1,
-		"JSON_TEST":                        2,
-		"JSON_IGNORE_UNKNOWN_PARSING_TEST": 3,
-		"JSPB_TEST":                        4,
-		"TEXT_FORMAT_TEST":                 5,
-	}
-)
-
-func (x TestCategory) Enum() *TestCategory {
-	p := new(TestCategory)
-	*p = x
-	return p
-}
-
-func (x TestCategory) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (TestCategory) Descriptor() protoreflect.EnumDescriptor {
-	return file_conformance_conformance_proto_enumTypes[1].Descriptor()
-}
-
-func (TestCategory) Type() protoreflect.EnumType {
-	return &file_conformance_conformance_proto_enumTypes[1]
-}
-
-func (x TestCategory) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use TestCategory.Descriptor instead.
-func (TestCategory) EnumDescriptor() ([]byte, []int) {
-	return file_conformance_conformance_proto_rawDescGZIP(), []int{1}
-}
-
-// The conformance runner will request a list of failures as the first request.
-// This will be known by message_type == "conformance.FailureSet", a conformance
-// test should return a serialized FailureSet in protobuf_payload.
-type FailureSet struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Failure []string `protobuf:"bytes,1,rep,name=failure,proto3" json:"failure,omitempty"`
-}
-
-func (x *FailureSet) Reset() {
-	*x = FailureSet{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_conformance_conformance_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *FailureSet) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FailureSet) ProtoMessage() {}
-
-func (x *FailureSet) ProtoReflect() protoreflect.Message {
-	mi := &file_conformance_conformance_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use FailureSet.ProtoReflect.Descriptor instead.
-func (*FailureSet) Descriptor() ([]byte, []int) {
-	return file_conformance_conformance_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *FailureSet) GetFailure() []string {
-	if x != nil {
-		return x.Failure
-	}
-	return nil
-}
-
-// Represents a single test case's input.  The testee should:
-//
-//   1. parse this proto (which should always succeed)
-//   2. parse the protobuf or JSON payload in "payload" (which may fail)
-//   3. if the parse succeeded, serialize the message in the requested format.
-type ConformanceRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// The payload (whether protobuf of JSON) is always for a
-	// protobuf_test_messages.proto3.TestAllTypes proto (as defined in
-	// src/google/protobuf/proto3_test_messages.proto).
-	//
-	// TODO(haberman): if/when we expand the conformance tests to support proto2,
-	// we will want to include a field that lets the payload/response be a
-	// protobuf_test_messages.proto2.TestAllTypes message instead.
-	//
-	// Types that are assignable to Payload:
-	//	*ConformanceRequest_ProtobufPayload
-	//	*ConformanceRequest_JsonPayload
-	//	*ConformanceRequest_JspbPayload
-	//	*ConformanceRequest_TextPayload
-	Payload isConformanceRequest_Payload `protobuf_oneof:"payload"`
-	// Which format should the testee serialize its message to?
-	RequestedOutputFormat WireFormat `protobuf:"varint,3,opt,name=requested_output_format,json=requestedOutputFormat,proto3,enum=conformance.WireFormat" json:"requested_output_format,omitempty"`
-	// The full name for the test message to use; for the moment, either:
-	// protobuf_test_messages.proto3.TestAllTypesProto3 or
-	// protobuf_test_messages.proto2.TestAllTypesProto2.
-	MessageType string `protobuf:"bytes,4,opt,name=message_type,json=messageType,proto3" json:"message_type,omitempty"`
-	// Each test is given a specific test category. Some category may need
-	// specific support in testee programs. Refer to the definition of TestCategory
-	// for more information.
-	TestCategory TestCategory `protobuf:"varint,5,opt,name=test_category,json=testCategory,proto3,enum=conformance.TestCategory" json:"test_category,omitempty"`
-	// Specify details for how to encode jspb.
-	JspbEncodingOptions *JspbEncodingConfig `protobuf:"bytes,6,opt,name=jspb_encoding_options,json=jspbEncodingOptions,proto3" json:"jspb_encoding_options,omitempty"`
-	// This can be used in json and text format. If true, testee should print
-	// unknown fields instead of ignore. This feature is optional.
-	PrintUnknownFields bool `protobuf:"varint,9,opt,name=print_unknown_fields,json=printUnknownFields,proto3" json:"print_unknown_fields,omitempty"`
-}
-
-func (x *ConformanceRequest) Reset() {
-	*x = ConformanceRequest{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_conformance_conformance_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ConformanceRequest) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ConformanceRequest) ProtoMessage() {}
-
-func (x *ConformanceRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_conformance_conformance_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ConformanceRequest.ProtoReflect.Descriptor instead.
-func (*ConformanceRequest) Descriptor() ([]byte, []int) {
-	return file_conformance_conformance_proto_rawDescGZIP(), []int{1}
-}
-
-func (m *ConformanceRequest) GetPayload() isConformanceRequest_Payload {
-	if m != nil {
-		return m.Payload
-	}
-	return nil
-}
-
-func (x *ConformanceRequest) GetProtobufPayload() []byte {
-	if x, ok := x.GetPayload().(*ConformanceRequest_ProtobufPayload); ok {
-		return x.ProtobufPayload
-	}
-	return nil
-}
-
-func (x *ConformanceRequest) GetJsonPayload() string {
-	if x, ok := x.GetPayload().(*ConformanceRequest_JsonPayload); ok {
-		return x.JsonPayload
-	}
-	return ""
-}
-
-func (x *ConformanceRequest) GetJspbPayload() string {
-	if x, ok := x.GetPayload().(*ConformanceRequest_JspbPayload); ok {
-		return x.JspbPayload
-	}
-	return ""
-}
-
-func (x *ConformanceRequest) GetTextPayload() string {
-	if x, ok := x.GetPayload().(*ConformanceRequest_TextPayload); ok {
-		return x.TextPayload
-	}
-	return ""
-}
-
-func (x *ConformanceRequest) GetRequestedOutputFormat() WireFormat {
-	if x != nil {
-		return x.RequestedOutputFormat
-	}
-	return WireFormat_UNSPECIFIED
-}
-
-func (x *ConformanceRequest) GetMessageType() string {
-	if x != nil {
-		return x.MessageType
-	}
-	return ""
-}
-
-func (x *ConformanceRequest) GetTestCategory() TestCategory {
-	if x != nil {
-		return x.TestCategory
-	}
-	return TestCategory_UNSPECIFIED_TEST
-}
-
-func (x *ConformanceRequest) GetJspbEncodingOptions() *JspbEncodingConfig {
-	if x != nil {
-		return x.JspbEncodingOptions
-	}
-	return nil
-}
-
-func (x *ConformanceRequest) GetPrintUnknownFields() bool {
-	if x != nil {
-		return x.PrintUnknownFields
-	}
-	return false
-}
-
-type isConformanceRequest_Payload interface {
-	isConformanceRequest_Payload()
-}
-
-type ConformanceRequest_ProtobufPayload struct {
-	ProtobufPayload []byte `protobuf:"bytes,1,opt,name=protobuf_payload,json=protobufPayload,proto3,oneof"`
-}
-
-type ConformanceRequest_JsonPayload struct {
-	JsonPayload string `protobuf:"bytes,2,opt,name=json_payload,json=jsonPayload,proto3,oneof"`
-}
-
-type ConformanceRequest_JspbPayload struct {
-	// Google internal only.  Opensource testees just skip it.
-	JspbPayload string `protobuf:"bytes,7,opt,name=jspb_payload,json=jspbPayload,proto3,oneof"`
-}
-
-type ConformanceRequest_TextPayload struct {
-	TextPayload string `protobuf:"bytes,8,opt,name=text_payload,json=textPayload,proto3,oneof"`
-}
-
-func (*ConformanceRequest_ProtobufPayload) isConformanceRequest_Payload() {}
-
-func (*ConformanceRequest_JsonPayload) isConformanceRequest_Payload() {}
-
-func (*ConformanceRequest_JspbPayload) isConformanceRequest_Payload() {}
-
-func (*ConformanceRequest_TextPayload) isConformanceRequest_Payload() {}
-
-// Represents a single test case's output.
-type ConformanceResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Types that are assignable to Result:
-	//	*ConformanceResponse_ParseError
-	//	*ConformanceResponse_SerializeError
-	//	*ConformanceResponse_RuntimeError
-	//	*ConformanceResponse_ProtobufPayload
-	//	*ConformanceResponse_JsonPayload
-	//	*ConformanceResponse_Skipped
-	//	*ConformanceResponse_JspbPayload
-	//	*ConformanceResponse_TextPayload
-	Result isConformanceResponse_Result `protobuf_oneof:"result"`
-}
-
-func (x *ConformanceResponse) Reset() {
-	*x = ConformanceResponse{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_conformance_conformance_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ConformanceResponse) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ConformanceResponse) ProtoMessage() {}
-
-func (x *ConformanceResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_conformance_conformance_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ConformanceResponse.ProtoReflect.Descriptor instead.
-func (*ConformanceResponse) Descriptor() ([]byte, []int) {
-	return file_conformance_conformance_proto_rawDescGZIP(), []int{2}
-}
-
-func (m *ConformanceResponse) GetResult() isConformanceResponse_Result {
-	if m != nil {
-		return m.Result
-	}
-	return nil
-}
-
-func (x *ConformanceResponse) GetParseError() string {
-	if x, ok := x.GetResult().(*ConformanceResponse_ParseError); ok {
-		return x.ParseError
-	}
-	return ""
-}
-
-func (x *ConformanceResponse) GetSerializeError() string {
-	if x, ok := x.GetResult().(*ConformanceResponse_SerializeError); ok {
-		return x.SerializeError
-	}
-	return ""
-}
-
-func (x *ConformanceResponse) GetRuntimeError() string {
-	if x, ok := x.GetResult().(*ConformanceResponse_RuntimeError); ok {
-		return x.RuntimeError
-	}
-	return ""
-}
-
-func (x *ConformanceResponse) GetProtobufPayload() []byte {
-	if x, ok := x.GetResult().(*ConformanceResponse_ProtobufPayload); ok {
-		return x.ProtobufPayload
-	}
-	return nil
-}
-
-func (x *ConformanceResponse) GetJsonPayload() string {
-	if x, ok := x.GetResult().(*ConformanceResponse_JsonPayload); ok {
-		return x.JsonPayload
-	}
-	return ""
-}
-
-func (x *ConformanceResponse) GetSkipped() string {
-	if x, ok := x.GetResult().(*ConformanceResponse_Skipped); ok {
-		return x.Skipped
-	}
-	return ""
-}
-
-func (x *ConformanceResponse) GetJspbPayload() string {
-	if x, ok := x.GetResult().(*ConformanceResponse_JspbPayload); ok {
-		return x.JspbPayload
-	}
-	return ""
-}
-
-func (x *ConformanceResponse) GetTextPayload() string {
-	if x, ok := x.GetResult().(*ConformanceResponse_TextPayload); ok {
-		return x.TextPayload
-	}
-	return ""
-}
-
-type isConformanceResponse_Result interface {
-	isConformanceResponse_Result()
-}
-
-type ConformanceResponse_ParseError struct {
-	// This string should be set to indicate parsing failed.  The string can
-	// provide more information about the parse error if it is available.
-	//
-	// Setting this string does not necessarily mean the testee failed the
-	// test.  Some of the test cases are intentionally invalid input.
-	ParseError string `protobuf:"bytes,1,opt,name=parse_error,json=parseError,proto3,oneof"`
-}
-
-type ConformanceResponse_SerializeError struct {
-	// If the input was successfully parsed but errors occurred when
-	// serializing it to the requested output format, set the error message in
-	// this field.
-	SerializeError string `protobuf:"bytes,6,opt,name=serialize_error,json=serializeError,proto3,oneof"`
-}
-
-type ConformanceResponse_RuntimeError struct {
-	// This should be set if some other error occurred.  This will always
-	// indicate that the test failed.  The string can provide more information
-	// about the failure.
-	RuntimeError string `protobuf:"bytes,2,opt,name=runtime_error,json=runtimeError,proto3,oneof"`
-}
-
-type ConformanceResponse_ProtobufPayload struct {
-	// If the input was successfully parsed and the requested output was
-	// protobuf, serialize it to protobuf and set it in this field.
-	ProtobufPayload []byte `protobuf:"bytes,3,opt,name=protobuf_payload,json=protobufPayload,proto3,oneof"`
-}
-
-type ConformanceResponse_JsonPayload struct {
-	// If the input was successfully parsed and the requested output was JSON,
-	// serialize to JSON and set it in this field.
-	JsonPayload string `protobuf:"bytes,4,opt,name=json_payload,json=jsonPayload,proto3,oneof"`
-}
-
-type ConformanceResponse_Skipped struct {
-	// For when the testee skipped the test, likely because a certain feature
-	// wasn't supported, like JSON input/output.
-	Skipped string `protobuf:"bytes,5,opt,name=skipped,proto3,oneof"`
-}
-
-type ConformanceResponse_JspbPayload struct {
-	// If the input was successfully parsed and the requested output was JSPB,
-	// serialize to JSPB and set it in this field. JSPB is google internal only
-	// format. Opensource testees can just skip it.
-	JspbPayload string `protobuf:"bytes,7,opt,name=jspb_payload,json=jspbPayload,proto3,oneof"`
-}
-
-type ConformanceResponse_TextPayload struct {
-	// If the input was successfully parsed and the requested output was
-	// TEXT_FORMAT, serialize to TEXT_FORMAT and set it in this field.
-	TextPayload string `protobuf:"bytes,8,opt,name=text_payload,json=textPayload,proto3,oneof"`
-}
-
-func (*ConformanceResponse_ParseError) isConformanceResponse_Result() {}
-
-func (*ConformanceResponse_SerializeError) isConformanceResponse_Result() {}
-
-func (*ConformanceResponse_RuntimeError) isConformanceResponse_Result() {}
-
-func (*ConformanceResponse_ProtobufPayload) isConformanceResponse_Result() {}
-
-func (*ConformanceResponse_JsonPayload) isConformanceResponse_Result() {}
-
-func (*ConformanceResponse_Skipped) isConformanceResponse_Result() {}
-
-func (*ConformanceResponse_JspbPayload) isConformanceResponse_Result() {}
-
-func (*ConformanceResponse_TextPayload) isConformanceResponse_Result() {}
-
-// Encoding options for jspb format.
-type JspbEncodingConfig struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Encode the value field of Any as jspb array if true, otherwise binary.
-	UseJspbArrayAnyFormat bool `protobuf:"varint,1,opt,name=use_jspb_array_any_format,json=useJspbArrayAnyFormat,proto3" json:"use_jspb_array_any_format,omitempty"`
-}
-
-func (x *JspbEncodingConfig) Reset() {
-	*x = JspbEncodingConfig{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_conformance_conformance_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *JspbEncodingConfig) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*JspbEncodingConfig) ProtoMessage() {}
-
-func (x *JspbEncodingConfig) ProtoReflect() protoreflect.Message {
-	mi := &file_conformance_conformance_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use JspbEncodingConfig.ProtoReflect.Descriptor instead.
-func (*JspbEncodingConfig) Descriptor() ([]byte, []int) {
-	return file_conformance_conformance_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *JspbEncodingConfig) GetUseJspbArrayAnyFormat() bool {
-	if x != nil {
-		return x.UseJspbArrayAnyFormat
-	}
-	return false
-}
-
-var File_conformance_conformance_proto protoreflect.FileDescriptor
-
-var file_conformance_conformance_proto_rawDesc = []byte{
-	0x0a, 0x1d, 0x63, 0x6f, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x2f, 0x63, 0x6f,
-	0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
-	0x0b, 0x63, 0x6f, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x26, 0x0a, 0x0a,
-	0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x61,
-	0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x66, 0x61, 0x69,
-	0x6c, 0x75, 0x72, 0x65, 0x22, 0xf6, 0x03, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x66, 0x6f, 0x72, 0x6d,
-	0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x10, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x23, 0x0a, 0x0c, 0x6a, 0x73, 0x6f, 0x6e,
-	0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
-	0x52, 0x0b, 0x6a, 0x73, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x23, 0x0a,
-	0x0c, 0x6a, 0x73, 0x70, 0x62, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x07, 0x20,
-	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x6a, 0x73, 0x70, 0x62, 0x50, 0x61, 0x79, 0x6c, 0x6f,
-	0x61, 0x64, 0x12, 0x23, 0x0a, 0x0c, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f,
-	0x61, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x65, 0x78, 0x74,
-	0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x4f, 0x0a, 0x17, 0x72, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x6d,
-	0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x6f,
-	0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x57, 0x69, 0x72, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61,
-	0x74, 0x52, 0x15, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4f, 0x75, 0x74, 0x70,
-	0x75, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3e, 0x0a, 0x0d, 0x74,
-	0x65, 0x73, 0x74, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x0c, 0x74,
-	0x65, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x53, 0x0a, 0x15, 0x6a,
-	0x73, 0x70, 0x62, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x63, 0x6f, 0x6e,
-	0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x4a, 0x73, 0x70, 0x62, 0x45, 0x6e, 0x63,
-	0x6f, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x13, 0x6a, 0x73, 0x70,
-	0x62, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x12, 0x30, 0x0a, 0x14, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x5f, 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77,
-	0x6e, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12,
-	0x70, 0x72, 0x69, 0x6e, 0x74, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x46, 0x69, 0x65, 0x6c,
-	0x64, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xcc, 0x02,
-	0x0a, 0x13, 0x43, 0x6f, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x73, 0x65, 0x5f, 0x65,
-	0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61,
-	0x72, 0x73, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x29, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x69,
-	0x61, 0x6c, 0x69, 0x7a, 0x65, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28,
-	0x09, 0x48, 0x00, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x45, 0x72,
-	0x72, 0x6f, 0x72, 0x12, 0x25, 0x0a, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65,
-	0x72, 0x72, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x75,
-	0x6e, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x2b, 0x0a, 0x10, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x23, 0x0a, 0x0c, 0x6a, 0x73, 0x6f, 0x6e, 0x5f,
-	0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
-	0x0b, 0x6a, 0x73, 0x6f, 0x6e, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x1a, 0x0a, 0x07,
-	0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52,
-	0x07, 0x73, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0c, 0x6a, 0x73, 0x70, 0x62,
-	0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
-	0x52, 0x0b, 0x6a, 0x73, 0x70, 0x62, 0x50, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x23, 0x0a,
-	0x0c, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x08, 0x20,
-	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x65, 0x78, 0x74, 0x50, 0x61, 0x79, 0x6c, 0x6f,
-	0x61, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x4e, 0x0a, 0x12,
-	0x4a, 0x73, 0x70, 0x62, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66,
-	0x69, 0x67, 0x12, 0x38, 0x0a, 0x19, 0x75, 0x73, 0x65, 0x5f, 0x6a, 0x73, 0x70, 0x62, 0x5f, 0x61,
-	0x72, 0x72, 0x61, 0x79, 0x5f, 0x61, 0x6e, 0x79, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x75, 0x73, 0x65, 0x4a, 0x73, 0x70, 0x62, 0x41, 0x72,
-	0x72, 0x61, 0x79, 0x41, 0x6e, 0x79, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2a, 0x50, 0x0a, 0x0a,
-	0x57, 0x69, 0x72, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x4e,
-	0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x50,
-	0x52, 0x4f, 0x54, 0x4f, 0x42, 0x55, 0x46, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x4a, 0x53, 0x4f,
-	0x4e, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4a, 0x53, 0x50, 0x42, 0x10, 0x03, 0x12, 0x0f, 0x0a,
-	0x0b, 0x54, 0x45, 0x58, 0x54, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x10, 0x04, 0x2a, 0x8f,
-	0x01, 0x0a, 0x0c, 0x54, 0x65, 0x73, 0x74, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12,
-	0x14, 0x0a, 0x10, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x5f, 0x54,
-	0x45, 0x53, 0x54, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x42, 0x49, 0x4e, 0x41, 0x52, 0x59, 0x5f,
-	0x54, 0x45, 0x53, 0x54, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4a, 0x53, 0x4f, 0x4e, 0x5f, 0x54,
-	0x45, 0x53, 0x54, 0x10, 0x02, 0x12, 0x24, 0x0a, 0x20, 0x4a, 0x53, 0x4f, 0x4e, 0x5f, 0x49, 0x47,
-	0x4e, 0x4f, 0x52, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x50, 0x41, 0x52,
-	0x53, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x4a,
-	0x53, 0x50, 0x42, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x45,
-	0x58, 0x54, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x10, 0x05,
-	0x42, 0x21, 0x0a, 0x1f, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61,
-	0x6e, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_conformance_conformance_proto_rawDescOnce sync.Once
-	file_conformance_conformance_proto_rawDescData = file_conformance_conformance_proto_rawDesc
-)
-
-func file_conformance_conformance_proto_rawDescGZIP() []byte {
-	file_conformance_conformance_proto_rawDescOnce.Do(func() {
-		file_conformance_conformance_proto_rawDescData = protoimpl.X.CompressGZIP(file_conformance_conformance_proto_rawDescData)
-	})
-	return file_conformance_conformance_proto_rawDescData
-}
-
-var file_conformance_conformance_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_conformance_conformance_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
-var file_conformance_conformance_proto_goTypes = []interface{}{
-	(WireFormat)(0),             // 0: conformance.WireFormat
-	(TestCategory)(0),           // 1: conformance.TestCategory
-	(*FailureSet)(nil),          // 2: conformance.FailureSet
-	(*ConformanceRequest)(nil),  // 3: conformance.ConformanceRequest
-	(*ConformanceResponse)(nil), // 4: conformance.ConformanceResponse
-	(*JspbEncodingConfig)(nil),  // 5: conformance.JspbEncodingConfig
-}
-var file_conformance_conformance_proto_depIdxs = []int32{
-	0, // 0: conformance.ConformanceRequest.requested_output_format:type_name -> conformance.WireFormat
-	1, // 1: conformance.ConformanceRequest.test_category:type_name -> conformance.TestCategory
-	5, // 2: conformance.ConformanceRequest.jspb_encoding_options:type_name -> conformance.JspbEncodingConfig
-	3, // [3:3] is the sub-list for method output_type
-	3, // [3:3] is the sub-list for method input_type
-	3, // [3:3] is the sub-list for extension type_name
-	3, // [3:3] is the sub-list for extension extendee
-	0, // [0:3] is the sub-list for field type_name
-}
-
-func init() { file_conformance_conformance_proto_init() }
-func file_conformance_conformance_proto_init() {
-	if File_conformance_conformance_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_conformance_conformance_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FailureSet); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_conformance_conformance_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ConformanceRequest); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_conformance_conformance_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ConformanceResponse); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_conformance_conformance_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*JspbEncodingConfig); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	file_conformance_conformance_proto_msgTypes[1].OneofWrappers = []interface{}{
-		(*ConformanceRequest_ProtobufPayload)(nil),
-		(*ConformanceRequest_JsonPayload)(nil),
-		(*ConformanceRequest_JspbPayload)(nil),
-		(*ConformanceRequest_TextPayload)(nil),
-	}
-	file_conformance_conformance_proto_msgTypes[2].OneofWrappers = []interface{}{
-		(*ConformanceResponse_ParseError)(nil),
-		(*ConformanceResponse_SerializeError)(nil),
-		(*ConformanceResponse_RuntimeError)(nil),
-		(*ConformanceResponse_ProtobufPayload)(nil),
-		(*ConformanceResponse_JsonPayload)(nil),
-		(*ConformanceResponse_Skipped)(nil),
-		(*ConformanceResponse_JspbPayload)(nil),
-		(*ConformanceResponse_TextPayload)(nil),
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_conformance_conformance_proto_rawDesc,
-			NumEnums:      2,
-			NumMessages:   4,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_conformance_conformance_proto_goTypes,
-		DependencyIndexes: file_conformance_conformance_proto_depIdxs,
-		EnumInfos:         file_conformance_conformance_proto_enumTypes,
-		MessageInfos:      file_conformance_conformance_proto_msgTypes,
-	}.Build()
-	File_conformance_conformance_proto = out.File
-	file_conformance_conformance_proto_rawDesc = nil
-	file_conformance_conformance_proto_goTypes = nil
-	file_conformance_conformance_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/conformance/test_messages_proto2.pb.go b/internal/testprotos/conformance/test_messages_proto2.pb.go
deleted file mode 100644
index 78298d7..0000000
--- a/internal/testprotos/conformance/test_messages_proto2.pb.go
+++ /dev/null
@@ -1,2605 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Test schema for proto2 messages.  This test schema is used by:
-//
-// - conformance tests
-//
-
-// LINT: ALLOW_GROUPS
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google/protobuf/test_messages_proto2.proto
-
-package conformance
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type ForeignEnumProto2 int32
-
-const (
-	ForeignEnumProto2_FOREIGN_FOO ForeignEnumProto2 = 0
-	ForeignEnumProto2_FOREIGN_BAR ForeignEnumProto2 = 1
-	ForeignEnumProto2_FOREIGN_BAZ ForeignEnumProto2 = 2
-)
-
-// Enum value maps for ForeignEnumProto2.
-var (
-	ForeignEnumProto2_name = map[int32]string{
-		0: "FOREIGN_FOO",
-		1: "FOREIGN_BAR",
-		2: "FOREIGN_BAZ",
-	}
-	ForeignEnumProto2_value = map[string]int32{
-		"FOREIGN_FOO": 0,
-		"FOREIGN_BAR": 1,
-		"FOREIGN_BAZ": 2,
-	}
-)
-
-func (x ForeignEnumProto2) Enum() *ForeignEnumProto2 {
-	p := new(ForeignEnumProto2)
-	*p = x
-	return p
-}
-
-func (x ForeignEnumProto2) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ForeignEnumProto2) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_test_messages_proto2_proto_enumTypes[0].Descriptor()
-}
-
-func (ForeignEnumProto2) Type() protoreflect.EnumType {
-	return &file_google_protobuf_test_messages_proto2_proto_enumTypes[0]
-}
-
-func (x ForeignEnumProto2) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *ForeignEnumProto2) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = ForeignEnumProto2(num)
-	return nil
-}
-
-// Deprecated: Use ForeignEnumProto2.Descriptor instead.
-func (ForeignEnumProto2) EnumDescriptor() ([]byte, []int) {
-	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{0}
-}
-
-type TestAllTypesProto2_NestedEnum int32
-
-const (
-	TestAllTypesProto2_FOO TestAllTypesProto2_NestedEnum = 0
-	TestAllTypesProto2_BAR TestAllTypesProto2_NestedEnum = 1
-	TestAllTypesProto2_BAZ TestAllTypesProto2_NestedEnum = 2
-	TestAllTypesProto2_NEG TestAllTypesProto2_NestedEnum = -1 // Intentionally negative.
-)
-
-// Enum value maps for TestAllTypesProto2_NestedEnum.
-var (
-	TestAllTypesProto2_NestedEnum_name = map[int32]string{
-		0:  "FOO",
-		1:  "BAR",
-		2:  "BAZ",
-		-1: "NEG",
-	}
-	TestAllTypesProto2_NestedEnum_value = map[string]int32{
-		"FOO": 0,
-		"BAR": 1,
-		"BAZ": 2,
-		"NEG": -1,
-	}
-)
-
-func (x TestAllTypesProto2_NestedEnum) Enum() *TestAllTypesProto2_NestedEnum {
-	p := new(TestAllTypesProto2_NestedEnum)
-	*p = x
-	return p
-}
-
-func (x TestAllTypesProto2_NestedEnum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (TestAllTypesProto2_NestedEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_test_messages_proto2_proto_enumTypes[1].Descriptor()
-}
-
-func (TestAllTypesProto2_NestedEnum) Type() protoreflect.EnumType {
-	return &file_google_protobuf_test_messages_proto2_proto_enumTypes[1]
-}
-
-func (x TestAllTypesProto2_NestedEnum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *TestAllTypesProto2_NestedEnum) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = TestAllTypesProto2_NestedEnum(num)
-	return nil
-}
-
-// Deprecated: Use TestAllTypesProto2_NestedEnum.Descriptor instead.
-func (TestAllTypesProto2_NestedEnum) EnumDescriptor() ([]byte, []int) {
-	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{0, 0}
-}
-
-// This proto includes every type of field in both singular and repeated
-// forms.
-//
-// Also, crucially, all messages and enums in this file are eventually
-// submessages of this message.  So for example, a fuzz test of TestAllTypes
-// could trigger bugs that occur in any message type in this file.  We verify
-// this stays true in a unit test.
-type TestAllTypesProto2 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	// Singular
-	OptionalInt32          *int32                            `protobuf:"varint,1,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
-	OptionalInt64          *int64                            `protobuf:"varint,2,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
-	OptionalUint32         *uint32                           `protobuf:"varint,3,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
-	OptionalUint64         *uint64                           `protobuf:"varint,4,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
-	OptionalSint32         *int32                            `protobuf:"zigzag32,5,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
-	OptionalSint64         *int64                            `protobuf:"zigzag64,6,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
-	OptionalFixed32        *uint32                           `protobuf:"fixed32,7,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
-	OptionalFixed64        *uint64                           `protobuf:"fixed64,8,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
-	OptionalSfixed32       *int32                            `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
-	OptionalSfixed64       *int64                            `protobuf:"fixed64,10,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
-	OptionalFloat          *float32                          `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
-	OptionalDouble         *float64                          `protobuf:"fixed64,12,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
-	OptionalBool           *bool                             `protobuf:"varint,13,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
-	OptionalString         *string                           `protobuf:"bytes,14,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
-	OptionalBytes          []byte                            `protobuf:"bytes,15,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
-	OptionalNestedMessage  *TestAllTypesProto2_NestedMessage `protobuf:"bytes,18,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
-	OptionalForeignMessage *ForeignMessageProto2             `protobuf:"bytes,19,opt,name=optional_foreign_message,json=optionalForeignMessage" json:"optional_foreign_message,omitempty"`
-	OptionalNestedEnum     *TestAllTypesProto2_NestedEnum    `protobuf:"varint,21,opt,name=optional_nested_enum,json=optionalNestedEnum,enum=protobuf_test_messages.proto2.TestAllTypesProto2_NestedEnum" json:"optional_nested_enum,omitempty"`
-	OptionalForeignEnum    *ForeignEnumProto2                `protobuf:"varint,22,opt,name=optional_foreign_enum,json=optionalForeignEnum,enum=protobuf_test_messages.proto2.ForeignEnumProto2" json:"optional_foreign_enum,omitempty"`
-	OptionalStringPiece    *string                           `protobuf:"bytes,24,opt,name=optional_string_piece,json=optionalStringPiece" json:"optional_string_piece,omitempty"`
-	OptionalCord           *string                           `protobuf:"bytes,25,opt,name=optional_cord,json=optionalCord" json:"optional_cord,omitempty"`
-	RecursiveMessage       *TestAllTypesProto2               `protobuf:"bytes,27,opt,name=recursive_message,json=recursiveMessage" json:"recursive_message,omitempty"`
-	// Repeated
-	RepeatedInt32          []int32                             `protobuf:"varint,31,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
-	RepeatedInt64          []int64                             `protobuf:"varint,32,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
-	RepeatedUint32         []uint32                            `protobuf:"varint,33,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
-	RepeatedUint64         []uint64                            `protobuf:"varint,34,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
-	RepeatedSint32         []int32                             `protobuf:"zigzag32,35,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
-	RepeatedSint64         []int64                             `protobuf:"zigzag64,36,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
-	RepeatedFixed32        []uint32                            `protobuf:"fixed32,37,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
-	RepeatedFixed64        []uint64                            `protobuf:"fixed64,38,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
-	RepeatedSfixed32       []int32                             `protobuf:"fixed32,39,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
-	RepeatedSfixed64       []int64                             `protobuf:"fixed64,40,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
-	RepeatedFloat          []float32                           `protobuf:"fixed32,41,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
-	RepeatedDouble         []float64                           `protobuf:"fixed64,42,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
-	RepeatedBool           []bool                              `protobuf:"varint,43,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
-	RepeatedString         []string                            `protobuf:"bytes,44,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
-	RepeatedBytes          [][]byte                            `protobuf:"bytes,45,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
-	RepeatedNestedMessage  []*TestAllTypesProto2_NestedMessage `protobuf:"bytes,48,rep,name=repeated_nested_message,json=repeatedNestedMessage" json:"repeated_nested_message,omitempty"`
-	RepeatedForeignMessage []*ForeignMessageProto2             `protobuf:"bytes,49,rep,name=repeated_foreign_message,json=repeatedForeignMessage" json:"repeated_foreign_message,omitempty"`
-	RepeatedNestedEnum     []TestAllTypesProto2_NestedEnum     `protobuf:"varint,51,rep,name=repeated_nested_enum,json=repeatedNestedEnum,enum=protobuf_test_messages.proto2.TestAllTypesProto2_NestedEnum" json:"repeated_nested_enum,omitempty"`
-	RepeatedForeignEnum    []ForeignEnumProto2                 `protobuf:"varint,52,rep,name=repeated_foreign_enum,json=repeatedForeignEnum,enum=protobuf_test_messages.proto2.ForeignEnumProto2" json:"repeated_foreign_enum,omitempty"`
-	RepeatedStringPiece    []string                            `protobuf:"bytes,54,rep,name=repeated_string_piece,json=repeatedStringPiece" json:"repeated_string_piece,omitempty"`
-	RepeatedCord           []string                            `protobuf:"bytes,55,rep,name=repeated_cord,json=repeatedCord" json:"repeated_cord,omitempty"`
-	// Packed
-	PackedInt32      []int32                         `protobuf:"varint,75,rep,packed,name=packed_int32,json=packedInt32" json:"packed_int32,omitempty"`
-	PackedInt64      []int64                         `protobuf:"varint,76,rep,packed,name=packed_int64,json=packedInt64" json:"packed_int64,omitempty"`
-	PackedUint32     []uint32                        `protobuf:"varint,77,rep,packed,name=packed_uint32,json=packedUint32" json:"packed_uint32,omitempty"`
-	PackedUint64     []uint64                        `protobuf:"varint,78,rep,packed,name=packed_uint64,json=packedUint64" json:"packed_uint64,omitempty"`
-	PackedSint32     []int32                         `protobuf:"zigzag32,79,rep,packed,name=packed_sint32,json=packedSint32" json:"packed_sint32,omitempty"`
-	PackedSint64     []int64                         `protobuf:"zigzag64,80,rep,packed,name=packed_sint64,json=packedSint64" json:"packed_sint64,omitempty"`
-	PackedFixed32    []uint32                        `protobuf:"fixed32,81,rep,packed,name=packed_fixed32,json=packedFixed32" json:"packed_fixed32,omitempty"`
-	PackedFixed64    []uint64                        `protobuf:"fixed64,82,rep,packed,name=packed_fixed64,json=packedFixed64" json:"packed_fixed64,omitempty"`
-	PackedSfixed32   []int32                         `protobuf:"fixed32,83,rep,packed,name=packed_sfixed32,json=packedSfixed32" json:"packed_sfixed32,omitempty"`
-	PackedSfixed64   []int64                         `protobuf:"fixed64,84,rep,packed,name=packed_sfixed64,json=packedSfixed64" json:"packed_sfixed64,omitempty"`
-	PackedFloat      []float32                       `protobuf:"fixed32,85,rep,packed,name=packed_float,json=packedFloat" json:"packed_float,omitempty"`
-	PackedDouble     []float64                       `protobuf:"fixed64,86,rep,packed,name=packed_double,json=packedDouble" json:"packed_double,omitempty"`
-	PackedBool       []bool                          `protobuf:"varint,87,rep,packed,name=packed_bool,json=packedBool" json:"packed_bool,omitempty"`
-	PackedNestedEnum []TestAllTypesProto2_NestedEnum `protobuf:"varint,88,rep,packed,name=packed_nested_enum,json=packedNestedEnum,enum=protobuf_test_messages.proto2.TestAllTypesProto2_NestedEnum" json:"packed_nested_enum,omitempty"`
-	// Unpacked
-	UnpackedInt32      []int32                         `protobuf:"varint,89,rep,name=unpacked_int32,json=unpackedInt32" json:"unpacked_int32,omitempty"`
-	UnpackedInt64      []int64                         `protobuf:"varint,90,rep,name=unpacked_int64,json=unpackedInt64" json:"unpacked_int64,omitempty"`
-	UnpackedUint32     []uint32                        `protobuf:"varint,91,rep,name=unpacked_uint32,json=unpackedUint32" json:"unpacked_uint32,omitempty"`
-	UnpackedUint64     []uint64                        `protobuf:"varint,92,rep,name=unpacked_uint64,json=unpackedUint64" json:"unpacked_uint64,omitempty"`
-	UnpackedSint32     []int32                         `protobuf:"zigzag32,93,rep,name=unpacked_sint32,json=unpackedSint32" json:"unpacked_sint32,omitempty"`
-	UnpackedSint64     []int64                         `protobuf:"zigzag64,94,rep,name=unpacked_sint64,json=unpackedSint64" json:"unpacked_sint64,omitempty"`
-	UnpackedFixed32    []uint32                        `protobuf:"fixed32,95,rep,name=unpacked_fixed32,json=unpackedFixed32" json:"unpacked_fixed32,omitempty"`
-	UnpackedFixed64    []uint64                        `protobuf:"fixed64,96,rep,name=unpacked_fixed64,json=unpackedFixed64" json:"unpacked_fixed64,omitempty"`
-	UnpackedSfixed32   []int32                         `protobuf:"fixed32,97,rep,name=unpacked_sfixed32,json=unpackedSfixed32" json:"unpacked_sfixed32,omitempty"`
-	UnpackedSfixed64   []int64                         `protobuf:"fixed64,98,rep,name=unpacked_sfixed64,json=unpackedSfixed64" json:"unpacked_sfixed64,omitempty"`
-	UnpackedFloat      []float32                       `protobuf:"fixed32,99,rep,name=unpacked_float,json=unpackedFloat" json:"unpacked_float,omitempty"`
-	UnpackedDouble     []float64                       `protobuf:"fixed64,100,rep,name=unpacked_double,json=unpackedDouble" json:"unpacked_double,omitempty"`
-	UnpackedBool       []bool                          `protobuf:"varint,101,rep,name=unpacked_bool,json=unpackedBool" json:"unpacked_bool,omitempty"`
-	UnpackedNestedEnum []TestAllTypesProto2_NestedEnum `protobuf:"varint,102,rep,name=unpacked_nested_enum,json=unpackedNestedEnum,enum=protobuf_test_messages.proto2.TestAllTypesProto2_NestedEnum" json:"unpacked_nested_enum,omitempty"`
-	// Map
-	MapInt32Int32           map[int32]int32                              `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32" json:"map_int32_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapInt64Int64           map[int64]int64                              `protobuf:"bytes,57,rep,name=map_int64_int64,json=mapInt64Int64" json:"map_int64_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint32Uint32         map[uint32]uint32                            `protobuf:"bytes,58,rep,name=map_uint32_uint32,json=mapUint32Uint32" json:"map_uint32_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint64Uint64         map[uint64]uint64                            `protobuf:"bytes,59,rep,name=map_uint64_uint64,json=mapUint64Uint64" json:"map_uint64_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint32Sint32         map[int32]int32                              `protobuf:"bytes,60,rep,name=map_sint32_sint32,json=mapSint32Sint32" json:"map_sint32_sint32,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
-	MapSint64Sint64         map[int64]int64                              `protobuf:"bytes,61,rep,name=map_sint64_sint64,json=mapSint64Sint64" json:"map_sint64_sint64,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
-	MapFixed32Fixed32       map[uint32]uint32                            `protobuf:"bytes,62,rep,name=map_fixed32_fixed32,json=mapFixed32Fixed32" json:"map_fixed32_fixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapFixed64Fixed64       map[uint64]uint64                            `protobuf:"bytes,63,rep,name=map_fixed64_fixed64,json=mapFixed64Fixed64" json:"map_fixed64_fixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapSfixed32Sfixed32     map[int32]int32                              `protobuf:"bytes,64,rep,name=map_sfixed32_sfixed32,json=mapSfixed32Sfixed32" json:"map_sfixed32_sfixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapSfixed64Sfixed64     map[int64]int64                              `protobuf:"bytes,65,rep,name=map_sfixed64_sfixed64,json=mapSfixed64Sfixed64" json:"map_sfixed64_sfixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapInt32Float           map[int32]float32                            `protobuf:"bytes,66,rep,name=map_int32_float,json=mapInt32Float" json:"map_int32_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapInt32Double          map[int32]float64                            `protobuf:"bytes,67,rep,name=map_int32_double,json=mapInt32Double" json:"map_int32_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolBool             map[bool]bool                                `protobuf:"bytes,68,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapStringString         map[string]string                            `protobuf:"bytes,69,rep,name=map_string_string,json=mapStringString" json:"map_string_string,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapStringBytes          map[string][]byte                            `protobuf:"bytes,70,rep,name=map_string_bytes,json=mapStringBytes" json:"map_string_bytes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapStringNestedMessage  map[string]*TestAllTypesProto2_NestedMessage `protobuf:"bytes,71,rep,name=map_string_nested_message,json=mapStringNestedMessage" json:"map_string_nested_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapStringForeignMessage map[string]*ForeignMessageProto2             `protobuf:"bytes,72,rep,name=map_string_foreign_message,json=mapStringForeignMessage" json:"map_string_foreign_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapStringNestedEnum     map[string]TestAllTypesProto2_NestedEnum     `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=protobuf_test_messages.proto2.TestAllTypesProto2_NestedEnum"`
-	MapStringForeignEnum    map[string]ForeignEnumProto2                 `protobuf:"bytes,74,rep,name=map_string_foreign_enum,json=mapStringForeignEnum" json:"map_string_foreign_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=protobuf_test_messages.proto2.ForeignEnumProto2"`
-	// Types that are assignable to OneofField:
-	//	*TestAllTypesProto2_OneofUint32
-	//	*TestAllTypesProto2_OneofNestedMessage
-	//	*TestAllTypesProto2_OneofString
-	//	*TestAllTypesProto2_OneofBytes
-	//	*TestAllTypesProto2_OneofBool
-	//	*TestAllTypesProto2_OneofUint64
-	//	*TestAllTypesProto2_OneofFloat
-	//	*TestAllTypesProto2_OneofDouble
-	//	*TestAllTypesProto2_OneofEnum
-	OneofField isTestAllTypesProto2_OneofField `protobuf_oneof:"oneof_field"`
-	Data       *TestAllTypesProto2_Data        `protobuf:"group,201,opt,name=Data,json=data" json:"data,omitempty"`
-	// Test field-name-to-JSON-name convention.
-	// (protobuf says names can be any valid C/C++ identifier.)
-	Fieldname1    *int32 `protobuf:"varint,401,opt,name=fieldname1" json:"fieldname1,omitempty"`
-	FieldName2    *int32 `protobuf:"varint,402,opt,name=field_name2,json=fieldName2" json:"field_name2,omitempty"`
-	XFieldName3   *int32 `protobuf:"varint,403,opt,name=_field_name3,json=FieldName3" json:"_field_name3,omitempty"`
-	Field_Name4_  *int32 `protobuf:"varint,404,opt,name=field__name4_,json=fieldName4" json:"field__name4_,omitempty"`
-	Field0Name5   *int32 `protobuf:"varint,405,opt,name=field0name5" json:"field0name5,omitempty"`
-	Field_0Name6  *int32 `protobuf:"varint,406,opt,name=field_0_name6,json=field0Name6" json:"field_0_name6,omitempty"`
-	FieldName7    *int32 `protobuf:"varint,407,opt,name=fieldName7" json:"fieldName7,omitempty"`
-	FieldName8    *int32 `protobuf:"varint,408,opt,name=FieldName8" json:"FieldName8,omitempty"`
-	Field_Name9   *int32 `protobuf:"varint,409,opt,name=field_Name9,json=fieldName9" json:"field_Name9,omitempty"`
-	Field_Name10  *int32 `protobuf:"varint,410,opt,name=Field_Name10,json=FieldName10" json:"Field_Name10,omitempty"`
-	FIELD_NAME11  *int32 `protobuf:"varint,411,opt,name=FIELD_NAME11,json=FIELDNAME11" json:"FIELD_NAME11,omitempty"`
-	FIELDName12   *int32 `protobuf:"varint,412,opt,name=FIELD_name12,json=FIELDName12" json:"FIELD_name12,omitempty"`
-	XFieldName13  *int32 `protobuf:"varint,413,opt,name=__field_name13,json=FieldName13" json:"__field_name13,omitempty"`
-	X_FieldName14 *int32 `protobuf:"varint,414,opt,name=__Field_name14,json=FieldName14" json:"__Field_name14,omitempty"`
-	Field_Name15  *int32 `protobuf:"varint,415,opt,name=field__name15,json=fieldName15" json:"field__name15,omitempty"`
-	Field__Name16 *int32 `protobuf:"varint,416,opt,name=field__Name16,json=fieldName16" json:"field__Name16,omitempty"`
-	FieldName17__ *int32 `protobuf:"varint,417,opt,name=field_name17__,json=fieldName17" json:"field_name17__,omitempty"`
-	FieldName18__ *int32 `protobuf:"varint,418,opt,name=Field_name18__,json=FieldName18" json:"Field_name18__,omitempty"`
-}
-
-func (x *TestAllTypesProto2) Reset() {
-	*x = TestAllTypesProto2{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestAllTypesProto2) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestAllTypesProto2) ProtoMessage() {}
-
-func (x *TestAllTypesProto2) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestAllTypesProto2.ProtoReflect.Descriptor instead.
-func (*TestAllTypesProto2) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *TestAllTypesProto2) GetOptionalInt32() int32 {
-	if x != nil && x.OptionalInt32 != nil {
-		return *x.OptionalInt32
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetOptionalInt64() int64 {
-	if x != nil && x.OptionalInt64 != nil {
-		return *x.OptionalInt64
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetOptionalUint32() uint32 {
-	if x != nil && x.OptionalUint32 != nil {
-		return *x.OptionalUint32
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetOptionalUint64() uint64 {
-	if x != nil && x.OptionalUint64 != nil {
-		return *x.OptionalUint64
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetOptionalSint32() int32 {
-	if x != nil && x.OptionalSint32 != nil {
-		return *x.OptionalSint32
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetOptionalSint64() int64 {
-	if x != nil && x.OptionalSint64 != nil {
-		return *x.OptionalSint64
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetOptionalFixed32() uint32 {
-	if x != nil && x.OptionalFixed32 != nil {
-		return *x.OptionalFixed32
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetOptionalFixed64() uint64 {
-	if x != nil && x.OptionalFixed64 != nil {
-		return *x.OptionalFixed64
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetOptionalSfixed32() int32 {
-	if x != nil && x.OptionalSfixed32 != nil {
-		return *x.OptionalSfixed32
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetOptionalSfixed64() int64 {
-	if x != nil && x.OptionalSfixed64 != nil {
-		return *x.OptionalSfixed64
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetOptionalFloat() float32 {
-	if x != nil && x.OptionalFloat != nil {
-		return *x.OptionalFloat
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetOptionalDouble() float64 {
-	if x != nil && x.OptionalDouble != nil {
-		return *x.OptionalDouble
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetOptionalBool() bool {
-	if x != nil && x.OptionalBool != nil {
-		return *x.OptionalBool
-	}
-	return false
-}
-
-func (x *TestAllTypesProto2) GetOptionalString() string {
-	if x != nil && x.OptionalString != nil {
-		return *x.OptionalString
-	}
-	return ""
-}
-
-func (x *TestAllTypesProto2) GetOptionalBytes() []byte {
-	if x != nil {
-		return x.OptionalBytes
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetOptionalNestedMessage() *TestAllTypesProto2_NestedMessage {
-	if x != nil {
-		return x.OptionalNestedMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetOptionalForeignMessage() *ForeignMessageProto2 {
-	if x != nil {
-		return x.OptionalForeignMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetOptionalNestedEnum() TestAllTypesProto2_NestedEnum {
-	if x != nil && x.OptionalNestedEnum != nil {
-		return *x.OptionalNestedEnum
-	}
-	return TestAllTypesProto2_FOO
-}
-
-func (x *TestAllTypesProto2) GetOptionalForeignEnum() ForeignEnumProto2 {
-	if x != nil && x.OptionalForeignEnum != nil {
-		return *x.OptionalForeignEnum
-	}
-	return ForeignEnumProto2_FOREIGN_FOO
-}
-
-func (x *TestAllTypesProto2) GetOptionalStringPiece() string {
-	if x != nil && x.OptionalStringPiece != nil {
-		return *x.OptionalStringPiece
-	}
-	return ""
-}
-
-func (x *TestAllTypesProto2) GetOptionalCord() string {
-	if x != nil && x.OptionalCord != nil {
-		return *x.OptionalCord
-	}
-	return ""
-}
-
-func (x *TestAllTypesProto2) GetRecursiveMessage() *TestAllTypesProto2 {
-	if x != nil {
-		return x.RecursiveMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetRepeatedInt32() []int32 {
-	if x != nil {
-		return x.RepeatedInt32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetRepeatedInt64() []int64 {
-	if x != nil {
-		return x.RepeatedInt64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetRepeatedUint32() []uint32 {
-	if x != nil {
-		return x.RepeatedUint32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetRepeatedUint64() []uint64 {
-	if x != nil {
-		return x.RepeatedUint64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetRepeatedSint32() []int32 {
-	if x != nil {
-		return x.RepeatedSint32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetRepeatedSint64() []int64 {
-	if x != nil {
-		return x.RepeatedSint64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetRepeatedFixed32() []uint32 {
-	if x != nil {
-		return x.RepeatedFixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetRepeatedFixed64() []uint64 {
-	if x != nil {
-		return x.RepeatedFixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetRepeatedSfixed32() []int32 {
-	if x != nil {
-		return x.RepeatedSfixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetRepeatedSfixed64() []int64 {
-	if x != nil {
-		return x.RepeatedSfixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetRepeatedFloat() []float32 {
-	if x != nil {
-		return x.RepeatedFloat
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetRepeatedDouble() []float64 {
-	if x != nil {
-		return x.RepeatedDouble
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetRepeatedBool() []bool {
-	if x != nil {
-		return x.RepeatedBool
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetRepeatedString() []string {
-	if x != nil {
-		return x.RepeatedString
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetRepeatedBytes() [][]byte {
-	if x != nil {
-		return x.RepeatedBytes
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetRepeatedNestedMessage() []*TestAllTypesProto2_NestedMessage {
-	if x != nil {
-		return x.RepeatedNestedMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetRepeatedForeignMessage() []*ForeignMessageProto2 {
-	if x != nil {
-		return x.RepeatedForeignMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetRepeatedNestedEnum() []TestAllTypesProto2_NestedEnum {
-	if x != nil {
-		return x.RepeatedNestedEnum
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetRepeatedForeignEnum() []ForeignEnumProto2 {
-	if x != nil {
-		return x.RepeatedForeignEnum
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetRepeatedStringPiece() []string {
-	if x != nil {
-		return x.RepeatedStringPiece
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetRepeatedCord() []string {
-	if x != nil {
-		return x.RepeatedCord
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetPackedInt32() []int32 {
-	if x != nil {
-		return x.PackedInt32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetPackedInt64() []int64 {
-	if x != nil {
-		return x.PackedInt64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetPackedUint32() []uint32 {
-	if x != nil {
-		return x.PackedUint32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetPackedUint64() []uint64 {
-	if x != nil {
-		return x.PackedUint64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetPackedSint32() []int32 {
-	if x != nil {
-		return x.PackedSint32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetPackedSint64() []int64 {
-	if x != nil {
-		return x.PackedSint64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetPackedFixed32() []uint32 {
-	if x != nil {
-		return x.PackedFixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetPackedFixed64() []uint64 {
-	if x != nil {
-		return x.PackedFixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetPackedSfixed32() []int32 {
-	if x != nil {
-		return x.PackedSfixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetPackedSfixed64() []int64 {
-	if x != nil {
-		return x.PackedSfixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetPackedFloat() []float32 {
-	if x != nil {
-		return x.PackedFloat
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetPackedDouble() []float64 {
-	if x != nil {
-		return x.PackedDouble
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetPackedBool() []bool {
-	if x != nil {
-		return x.PackedBool
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetPackedNestedEnum() []TestAllTypesProto2_NestedEnum {
-	if x != nil {
-		return x.PackedNestedEnum
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetUnpackedInt32() []int32 {
-	if x != nil {
-		return x.UnpackedInt32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetUnpackedInt64() []int64 {
-	if x != nil {
-		return x.UnpackedInt64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetUnpackedUint32() []uint32 {
-	if x != nil {
-		return x.UnpackedUint32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetUnpackedUint64() []uint64 {
-	if x != nil {
-		return x.UnpackedUint64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetUnpackedSint32() []int32 {
-	if x != nil {
-		return x.UnpackedSint32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetUnpackedSint64() []int64 {
-	if x != nil {
-		return x.UnpackedSint64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetUnpackedFixed32() []uint32 {
-	if x != nil {
-		return x.UnpackedFixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetUnpackedFixed64() []uint64 {
-	if x != nil {
-		return x.UnpackedFixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetUnpackedSfixed32() []int32 {
-	if x != nil {
-		return x.UnpackedSfixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetUnpackedSfixed64() []int64 {
-	if x != nil {
-		return x.UnpackedSfixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetUnpackedFloat() []float32 {
-	if x != nil {
-		return x.UnpackedFloat
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetUnpackedDouble() []float64 {
-	if x != nil {
-		return x.UnpackedDouble
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetUnpackedBool() []bool {
-	if x != nil {
-		return x.UnpackedBool
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetUnpackedNestedEnum() []TestAllTypesProto2_NestedEnum {
-	if x != nil {
-		return x.UnpackedNestedEnum
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetMapInt32Int32() map[int32]int32 {
-	if x != nil {
-		return x.MapInt32Int32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetMapInt64Int64() map[int64]int64 {
-	if x != nil {
-		return x.MapInt64Int64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetMapUint32Uint32() map[uint32]uint32 {
-	if x != nil {
-		return x.MapUint32Uint32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetMapUint64Uint64() map[uint64]uint64 {
-	if x != nil {
-		return x.MapUint64Uint64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetMapSint32Sint32() map[int32]int32 {
-	if x != nil {
-		return x.MapSint32Sint32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetMapSint64Sint64() map[int64]int64 {
-	if x != nil {
-		return x.MapSint64Sint64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetMapFixed32Fixed32() map[uint32]uint32 {
-	if x != nil {
-		return x.MapFixed32Fixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetMapFixed64Fixed64() map[uint64]uint64 {
-	if x != nil {
-		return x.MapFixed64Fixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetMapSfixed32Sfixed32() map[int32]int32 {
-	if x != nil {
-		return x.MapSfixed32Sfixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetMapSfixed64Sfixed64() map[int64]int64 {
-	if x != nil {
-		return x.MapSfixed64Sfixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetMapInt32Float() map[int32]float32 {
-	if x != nil {
-		return x.MapInt32Float
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetMapInt32Double() map[int32]float64 {
-	if x != nil {
-		return x.MapInt32Double
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetMapBoolBool() map[bool]bool {
-	if x != nil {
-		return x.MapBoolBool
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetMapStringString() map[string]string {
-	if x != nil {
-		return x.MapStringString
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetMapStringBytes() map[string][]byte {
-	if x != nil {
-		return x.MapStringBytes
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetMapStringNestedMessage() map[string]*TestAllTypesProto2_NestedMessage {
-	if x != nil {
-		return x.MapStringNestedMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetMapStringForeignMessage() map[string]*ForeignMessageProto2 {
-	if x != nil {
-		return x.MapStringForeignMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetMapStringNestedEnum() map[string]TestAllTypesProto2_NestedEnum {
-	if x != nil {
-		return x.MapStringNestedEnum
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetMapStringForeignEnum() map[string]ForeignEnumProto2 {
-	if x != nil {
-		return x.MapStringForeignEnum
-	}
-	return nil
-}
-
-func (m *TestAllTypesProto2) GetOneofField() isTestAllTypesProto2_OneofField {
-	if m != nil {
-		return m.OneofField
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetOneofUint32() uint32 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofUint32); ok {
-		return x.OneofUint32
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetOneofNestedMessage() *TestAllTypesProto2_NestedMessage {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofNestedMessage); ok {
-		return x.OneofNestedMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetOneofString() string {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofString); ok {
-		return x.OneofString
-	}
-	return ""
-}
-
-func (x *TestAllTypesProto2) GetOneofBytes() []byte {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofBytes); ok {
-		return x.OneofBytes
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetOneofBool() bool {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofBool); ok {
-		return x.OneofBool
-	}
-	return false
-}
-
-func (x *TestAllTypesProto2) GetOneofUint64() uint64 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofUint64); ok {
-		return x.OneofUint64
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetOneofFloat() float32 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofFloat); ok {
-		return x.OneofFloat
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetOneofDouble() float64 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofDouble); ok {
-		return x.OneofDouble
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetOneofEnum() TestAllTypesProto2_NestedEnum {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto2_OneofEnum); ok {
-		return x.OneofEnum
-	}
-	return TestAllTypesProto2_FOO
-}
-
-func (x *TestAllTypesProto2) GetData() *TestAllTypesProto2_Data {
-	if x != nil {
-		return x.Data
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto2) GetFieldname1() int32 {
-	if x != nil && x.Fieldname1 != nil {
-		return *x.Fieldname1
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetFieldName2() int32 {
-	if x != nil && x.FieldName2 != nil {
-		return *x.FieldName2
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetXFieldName3() int32 {
-	if x != nil && x.XFieldName3 != nil {
-		return *x.XFieldName3
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetField_Name4_() int32 {
-	if x != nil && x.Field_Name4_ != nil {
-		return *x.Field_Name4_
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetField0Name5() int32 {
-	if x != nil && x.Field0Name5 != nil {
-		return *x.Field0Name5
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetField_0Name6() int32 {
-	if x != nil && x.Field_0Name6 != nil {
-		return *x.Field_0Name6
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetFieldName7() int32 {
-	if x != nil && x.FieldName7 != nil {
-		return *x.FieldName7
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetFieldName8() int32 {
-	if x != nil && x.FieldName8 != nil {
-		return *x.FieldName8
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetField_Name9() int32 {
-	if x != nil && x.Field_Name9 != nil {
-		return *x.Field_Name9
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetField_Name10() int32 {
-	if x != nil && x.Field_Name10 != nil {
-		return *x.Field_Name10
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetFIELD_NAME11() int32 {
-	if x != nil && x.FIELD_NAME11 != nil {
-		return *x.FIELD_NAME11
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetFIELDName12() int32 {
-	if x != nil && x.FIELDName12 != nil {
-		return *x.FIELDName12
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetXFieldName13() int32 {
-	if x != nil && x.XFieldName13 != nil {
-		return *x.XFieldName13
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetX_FieldName14() int32 {
-	if x != nil && x.X_FieldName14 != nil {
-		return *x.X_FieldName14
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetField_Name15() int32 {
-	if x != nil && x.Field_Name15 != nil {
-		return *x.Field_Name15
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetField__Name16() int32 {
-	if x != nil && x.Field__Name16 != nil {
-		return *x.Field__Name16
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetFieldName17__() int32 {
-	if x != nil && x.FieldName17__ != nil {
-		return *x.FieldName17__
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2) GetFieldName18__() int32 {
-	if x != nil && x.FieldName18__ != nil {
-		return *x.FieldName18__
-	}
-	return 0
-}
-
-type isTestAllTypesProto2_OneofField interface {
-	isTestAllTypesProto2_OneofField()
-}
-
-type TestAllTypesProto2_OneofUint32 struct {
-	OneofUint32 uint32 `protobuf:"varint,111,opt,name=oneof_uint32,json=oneofUint32,oneof"`
-}
-
-type TestAllTypesProto2_OneofNestedMessage struct {
-	OneofNestedMessage *TestAllTypesProto2_NestedMessage `protobuf:"bytes,112,opt,name=oneof_nested_message,json=oneofNestedMessage,oneof"`
-}
-
-type TestAllTypesProto2_OneofString struct {
-	OneofString string `protobuf:"bytes,113,opt,name=oneof_string,json=oneofString,oneof"`
-}
-
-type TestAllTypesProto2_OneofBytes struct {
-	OneofBytes []byte `protobuf:"bytes,114,opt,name=oneof_bytes,json=oneofBytes,oneof"`
-}
-
-type TestAllTypesProto2_OneofBool struct {
-	OneofBool bool `protobuf:"varint,115,opt,name=oneof_bool,json=oneofBool,oneof"`
-}
-
-type TestAllTypesProto2_OneofUint64 struct {
-	OneofUint64 uint64 `protobuf:"varint,116,opt,name=oneof_uint64,json=oneofUint64,oneof"`
-}
-
-type TestAllTypesProto2_OneofFloat struct {
-	OneofFloat float32 `protobuf:"fixed32,117,opt,name=oneof_float,json=oneofFloat,oneof"`
-}
-
-type TestAllTypesProto2_OneofDouble struct {
-	OneofDouble float64 `protobuf:"fixed64,118,opt,name=oneof_double,json=oneofDouble,oneof"`
-}
-
-type TestAllTypesProto2_OneofEnum struct {
-	OneofEnum TestAllTypesProto2_NestedEnum `protobuf:"varint,119,opt,name=oneof_enum,json=oneofEnum,enum=protobuf_test_messages.proto2.TestAllTypesProto2_NestedEnum,oneof"`
-}
-
-func (*TestAllTypesProto2_OneofUint32) isTestAllTypesProto2_OneofField() {}
-
-func (*TestAllTypesProto2_OneofNestedMessage) isTestAllTypesProto2_OneofField() {}
-
-func (*TestAllTypesProto2_OneofString) isTestAllTypesProto2_OneofField() {}
-
-func (*TestAllTypesProto2_OneofBytes) isTestAllTypesProto2_OneofField() {}
-
-func (*TestAllTypesProto2_OneofBool) isTestAllTypesProto2_OneofField() {}
-
-func (*TestAllTypesProto2_OneofUint64) isTestAllTypesProto2_OneofField() {}
-
-func (*TestAllTypesProto2_OneofFloat) isTestAllTypesProto2_OneofField() {}
-
-func (*TestAllTypesProto2_OneofDouble) isTestAllTypesProto2_OneofField() {}
-
-func (*TestAllTypesProto2_OneofEnum) isTestAllTypesProto2_OneofField() {}
-
-type ForeignMessageProto2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	C *int32 `protobuf:"varint,1,opt,name=c" json:"c,omitempty"`
-}
-
-func (x *ForeignMessageProto2) Reset() {
-	*x = ForeignMessageProto2{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ForeignMessageProto2) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ForeignMessageProto2) ProtoMessage() {}
-
-func (x *ForeignMessageProto2) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ForeignMessageProto2.ProtoReflect.Descriptor instead.
-func (*ForeignMessageProto2) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *ForeignMessageProto2) GetC() int32 {
-	if x != nil && x.C != nil {
-		return *x.C
-	}
-	return 0
-}
-
-type UnknownToTestAllTypes struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OptionalInt32  *int32                               `protobuf:"varint,1001,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
-	OptionalString *string                              `protobuf:"bytes,1002,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
-	NestedMessage  *ForeignMessageProto2                `protobuf:"bytes,1003,opt,name=nested_message,json=nestedMessage" json:"nested_message,omitempty"`
-	Optionalgroup  *UnknownToTestAllTypes_OptionalGroup `protobuf:"group,1004,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
-	OptionalBool   *bool                                `protobuf:"varint,1006,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
-	RepeatedInt32  []int32                              `protobuf:"varint,1011,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
-}
-
-func (x *UnknownToTestAllTypes) Reset() {
-	*x = UnknownToTestAllTypes{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *UnknownToTestAllTypes) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UnknownToTestAllTypes) ProtoMessage() {}
-
-func (x *UnknownToTestAllTypes) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use UnknownToTestAllTypes.ProtoReflect.Descriptor instead.
-func (*UnknownToTestAllTypes) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *UnknownToTestAllTypes) GetOptionalInt32() int32 {
-	if x != nil && x.OptionalInt32 != nil {
-		return *x.OptionalInt32
-	}
-	return 0
-}
-
-func (x *UnknownToTestAllTypes) GetOptionalString() string {
-	if x != nil && x.OptionalString != nil {
-		return *x.OptionalString
-	}
-	return ""
-}
-
-func (x *UnknownToTestAllTypes) GetNestedMessage() *ForeignMessageProto2 {
-	if x != nil {
-		return x.NestedMessage
-	}
-	return nil
-}
-
-func (x *UnknownToTestAllTypes) GetOptionalgroup() *UnknownToTestAllTypes_OptionalGroup {
-	if x != nil {
-		return x.Optionalgroup
-	}
-	return nil
-}
-
-func (x *UnknownToTestAllTypes) GetOptionalBool() bool {
-	if x != nil && x.OptionalBool != nil {
-		return *x.OptionalBool
-	}
-	return false
-}
-
-func (x *UnknownToTestAllTypes) GetRepeatedInt32() []int32 {
-	if x != nil {
-		return x.RepeatedInt32
-	}
-	return nil
-}
-
-type TestAllTypesProto2_NestedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	A           *int32              `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
-	Corecursive *TestAllTypesProto2 `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
-}
-
-func (x *TestAllTypesProto2_NestedMessage) Reset() {
-	*x = TestAllTypesProto2_NestedMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestAllTypesProto2_NestedMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestAllTypesProto2_NestedMessage) ProtoMessage() {}
-
-func (x *TestAllTypesProto2_NestedMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestAllTypesProto2_NestedMessage.ProtoReflect.Descriptor instead.
-func (*TestAllTypesProto2_NestedMessage) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{0, 0}
-}
-
-func (x *TestAllTypesProto2_NestedMessage) GetA() int32 {
-	if x != nil && x.A != nil {
-		return *x.A
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2_NestedMessage) GetCorecursive() *TestAllTypesProto2 {
-	if x != nil {
-		return x.Corecursive
-	}
-	return nil
-}
-
-// groups
-type TestAllTypesProto2_Data struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	GroupInt32  *int32  `protobuf:"varint,202,opt,name=group_int32,json=groupInt32" json:"group_int32,omitempty"`
-	GroupUint32 *uint32 `protobuf:"varint,203,opt,name=group_uint32,json=groupUint32" json:"group_uint32,omitempty"`
-}
-
-func (x *TestAllTypesProto2_Data) Reset() {
-	*x = TestAllTypesProto2_Data{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[23]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestAllTypesProto2_Data) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestAllTypesProto2_Data) ProtoMessage() {}
-
-func (x *TestAllTypesProto2_Data) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[23]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestAllTypesProto2_Data.ProtoReflect.Descriptor instead.
-func (*TestAllTypesProto2_Data) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{0, 20}
-}
-
-func (x *TestAllTypesProto2_Data) GetGroupInt32() int32 {
-	if x != nil && x.GroupInt32 != nil {
-		return *x.GroupInt32
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto2_Data) GetGroupUint32() uint32 {
-	if x != nil && x.GroupUint32 != nil {
-		return *x.GroupUint32
-	}
-	return 0
-}
-
-// message_set test case.
-type TestAllTypesProto2_MessageSetCorrect struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-}
-
-func (x *TestAllTypesProto2_MessageSetCorrect) Reset() {
-	*x = TestAllTypesProto2_MessageSetCorrect{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[24]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestAllTypesProto2_MessageSetCorrect) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestAllTypesProto2_MessageSetCorrect) ProtoMessage() {}
-
-func (x *TestAllTypesProto2_MessageSetCorrect) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[24]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestAllTypesProto2_MessageSetCorrect.ProtoReflect.Descriptor instead.
-func (*TestAllTypesProto2_MessageSetCorrect) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{0, 21}
-}
-
-type TestAllTypesProto2_MessageSetCorrectExtension1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Str *string `protobuf:"bytes,25,opt,name=str" json:"str,omitempty"`
-}
-
-func (x *TestAllTypesProto2_MessageSetCorrectExtension1) Reset() {
-	*x = TestAllTypesProto2_MessageSetCorrectExtension1{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[25]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestAllTypesProto2_MessageSetCorrectExtension1) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestAllTypesProto2_MessageSetCorrectExtension1) ProtoMessage() {}
-
-func (x *TestAllTypesProto2_MessageSetCorrectExtension1) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[25]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestAllTypesProto2_MessageSetCorrectExtension1.ProtoReflect.Descriptor instead.
-func (*TestAllTypesProto2_MessageSetCorrectExtension1) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{0, 22}
-}
-
-func (x *TestAllTypesProto2_MessageSetCorrectExtension1) GetStr() string {
-	if x != nil && x.Str != nil {
-		return *x.Str
-	}
-	return ""
-}
-
-type TestAllTypesProto2_MessageSetCorrectExtension2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	I *int32 `protobuf:"varint,9,opt,name=i" json:"i,omitempty"`
-}
-
-func (x *TestAllTypesProto2_MessageSetCorrectExtension2) Reset() {
-	*x = TestAllTypesProto2_MessageSetCorrectExtension2{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[26]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestAllTypesProto2_MessageSetCorrectExtension2) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestAllTypesProto2_MessageSetCorrectExtension2) ProtoMessage() {}
-
-func (x *TestAllTypesProto2_MessageSetCorrectExtension2) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[26]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestAllTypesProto2_MessageSetCorrectExtension2.ProtoReflect.Descriptor instead.
-func (*TestAllTypesProto2_MessageSetCorrectExtension2) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{0, 23}
-}
-
-func (x *TestAllTypesProto2_MessageSetCorrectExtension2) GetI() int32 {
-	if x != nil && x.I != nil {
-		return *x.I
-	}
-	return 0
-}
-
-type UnknownToTestAllTypes_OptionalGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	A *int32 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
-}
-
-func (x *UnknownToTestAllTypes_OptionalGroup) Reset() {
-	*x = UnknownToTestAllTypes_OptionalGroup{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[27]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *UnknownToTestAllTypes_OptionalGroup) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UnknownToTestAllTypes_OptionalGroup) ProtoMessage() {}
-
-func (x *UnknownToTestAllTypes_OptionalGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto2_proto_msgTypes[27]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use UnknownToTestAllTypes_OptionalGroup.ProtoReflect.Descriptor instead.
-func (*UnknownToTestAllTypes_OptionalGroup) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_test_messages_proto2_proto_rawDescGZIP(), []int{2, 0}
-}
-
-func (x *UnknownToTestAllTypes_OptionalGroup) GetA() int32 {
-	if x != nil && x.A != nil {
-		return *x.A
-	}
-	return 0
-}
-
-var file_google_protobuf_test_messages_proto2_proto_extTypes = []protoimpl.ExtensionInfo{
-	{
-		ExtendedType:  (*TestAllTypesProto2)(nil),
-		ExtensionType: (*int32)(nil),
-		Field:         120,
-		Name:          "protobuf_test_messages.proto2.extension_int32",
-		Tag:           "varint,120,opt,name=extension_int32",
-		Filename:      "google/protobuf/test_messages_proto2.proto",
-	},
-	{
-		ExtendedType:  (*TestAllTypesProto2_MessageSetCorrect)(nil),
-		ExtensionType: (*TestAllTypesProto2_MessageSetCorrectExtension1)(nil),
-		Field:         1547769,
-		Name:          "protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension1.message_set_extension",
-		Tag:           "bytes,1547769,opt,name=message_set_extension",
-		Filename:      "google/protobuf/test_messages_proto2.proto",
-	},
-	{
-		ExtendedType:  (*TestAllTypesProto2_MessageSetCorrect)(nil),
-		ExtensionType: (*TestAllTypesProto2_MessageSetCorrectExtension2)(nil),
-		Field:         4135312,
-		Name:          "protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension2.message_set_extension",
-		Tag:           "bytes,4135312,opt,name=message_set_extension",
-		Filename:      "google/protobuf/test_messages_proto2.proto",
-	},
-}
-
-// Extension fields to TestAllTypesProto2.
-var (
-	// optional int32 extension_int32 = 120;
-	E_ExtensionInt32 = &file_google_protobuf_test_messages_proto2_proto_extTypes[0]
-)
-
-// Extension fields to TestAllTypesProto2_MessageSetCorrect.
-var (
-	// optional protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension1 message_set_extension = 1547769;
-	E_TestAllTypesProto2_MessageSetCorrectExtension1_MessageSetExtension = &file_google_protobuf_test_messages_proto2_proto_extTypes[1]
-	// optional protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension2 message_set_extension = 4135312;
-	E_TestAllTypesProto2_MessageSetCorrectExtension2_MessageSetExtension = &file_google_protobuf_test_messages_proto2_proto_extTypes[2]
-)
-
-var File_google_protobuf_test_messages_proto2_proto protoreflect.FileDescriptor
-
-var file_google_protobuf_test_messages_proto2_proto_rawDesc = []byte{
-	0x0a, 0x2a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x5f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1d, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x22, 0x92, 0x4b, 0x0a, 0x12,
-	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74,
-	0x6f, 0x32, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34,
-	0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x04, 0x20, 0x01,
-	0x28, 0x04, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0e, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x06,
-	0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0f,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12,
-	0x29, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x36, 0x34, 0x18, 0x08, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18,
-	0x09, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0a, 0x20, 0x01,
-	0x28, 0x10, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x0c,
-	0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x44, 0x6f,
-	0x75, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0e, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62,
-	0x79, 0x74, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x77, 0x0a, 0x17, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
-	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x12, 0x6d, 0x0a, 0x18, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66,
-	0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x13,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f,
-	0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x52, 0x16, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x12, 0x6e, 0x0a, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e, 0x32,
-	0x3c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e,
-	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74,
-	0x6f, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75,
-	0x6d, 0x12, 0x64, 0x0a, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f,
-	0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0e,
-	0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32,
-	0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x50, 0x72, 0x6f, 0x74,
-	0x6f, 0x32, 0x52, 0x13, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65,
-	0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x36, 0x0a, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65,
-	0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x08, 0x02, 0x52, 0x13, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x65, 0x63, 0x65, 0x12,
-	0x27, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x72, 0x64,
-	0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x08, 0x01, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x6f, 0x72, 0x64, 0x12, 0x5e, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x75,
-	0x72, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x1b, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74,
-	0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
-	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x52, 0x10, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76,
-	0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x05,
-	0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12,
-	0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36,
-	0x34, 0x18, 0x20, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0d, 0x52,
-	0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12,
-	0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x18, 0x22, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x23, 0x20, 0x03, 0x28,
-	0x11, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x18, 0x24, 0x20, 0x03, 0x28, 0x12, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x25,
-	0x20, 0x03, 0x28, 0x07, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69,
-	0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x26, 0x20, 0x03, 0x28, 0x06, 0x52,
-	0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
-	0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x27, 0x20, 0x03, 0x28, 0x0f, 0x52, 0x10, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a,
-	0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x36, 0x34, 0x18, 0x28, 0x20, 0x03, 0x28, 0x10, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x29, 0x20, 0x03,
-	0x28, 0x02, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61,
-	0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x6f,
-	0x75, 0x62, 0x6c, 0x65, 0x18, 0x2a, 0x20, 0x03, 0x28, 0x01, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x2b, 0x20, 0x03, 0x28,
-	0x08, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x12,
-	0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x18, 0x2c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x2d, 0x20, 0x03, 0x28, 0x0c,
-	0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12,
-	0x77, 0x0a, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x30, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x3f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f,
-	0x74, 0x6f, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x6d, 0x0a, 0x18, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x18, 0x31, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69,
-	0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x52,
-	0x16, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x6e, 0x0a, 0x14, 0x72, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18,
-	0x33, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
-	0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45,
-	0x6e, 0x75, 0x6d, 0x52, 0x12, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x64, 0x0a, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d,
-	0x18, 0x34, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e,
-	0x75, 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x52, 0x13, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x36, 0x0a,
-	0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x18, 0x36, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x08, 0x02,
-	0x52, 0x13, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x50, 0x69, 0x65, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x5f, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x37, 0x20, 0x03, 0x28, 0x09, 0x42, 0x02, 0x08, 0x01,
-	0x52, 0x0c, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x72, 0x64, 0x12, 0x25,
-	0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x4b,
-	0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x4c, 0x20, 0x03, 0x28, 0x03, 0x42, 0x02, 0x10, 0x01, 0x52,
-	0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0d,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x4d, 0x20,
-	0x03, 0x28, 0x0d, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
-	0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x4e, 0x20, 0x03, 0x28, 0x04, 0x42, 0x02, 0x10, 0x01,
-	0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27,
-	0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
-	0x4f, 0x20, 0x03, 0x28, 0x11, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x50, 0x20, 0x03, 0x28, 0x12, 0x42, 0x02,
-	0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x12, 0x29, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x18, 0x51, 0x20, 0x03, 0x28, 0x07, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x0e, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x52, 0x20,
-	0x03, 0x28, 0x06, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46,
-	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x53, 0x20, 0x03, 0x28, 0x0f, 0x42,
-	0x02, 0x10, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x54, 0x20, 0x03, 0x28, 0x10, 0x42, 0x02, 0x10, 0x01,
-	0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
-	0x12, 0x25, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74,
-	0x18, 0x55, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x27, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x56, 0x20, 0x03, 0x28, 0x01, 0x42, 0x02,
-	0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-	0x12, 0x23, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18,
-	0x57, 0x20, 0x03, 0x28, 0x08, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x6e, 0x0a, 0x12, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
-	0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x58, 0x20, 0x03, 0x28,
-	0x0e, 0x32, 0x3c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73,
-	0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x32, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72,
-	0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x42,
-	0x02, 0x10, 0x01, 0x52, 0x10, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x29, 0x0a, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x59, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10,
-	0x00, 0x52, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32,
-	0x12, 0x29, 0x0a, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x18, 0x5a, 0x20, 0x03, 0x28, 0x03, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0d, 0x75, 0x6e,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x0f, 0x75,
-	0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x5b,
-	0x20, 0x03, 0x28, 0x0d, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5c, 0x20, 0x03, 0x28,
-	0x04, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x5d, 0x20, 0x03, 0x28, 0x11, 0x42, 0x02,
-	0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x12, 0x2b, 0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5e, 0x20, 0x03, 0x28, 0x12, 0x42, 0x02, 0x10, 0x00, 0x52,
-	0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
-	0x2d, 0x0a, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x33, 0x32, 0x18, 0x5f, 0x20, 0x03, 0x28, 0x07, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0f, 0x75,
-	0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2d,
-	0x0a, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x36, 0x34, 0x18, 0x60, 0x20, 0x03, 0x28, 0x06, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0f, 0x75, 0x6e,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2f, 0x0a,
-	0x11, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x18, 0x61, 0x20, 0x03, 0x28, 0x0f, 0x42, 0x02, 0x10, 0x00, 0x52, 0x10, 0x75, 0x6e,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2f,
-	0x0a, 0x11, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x36, 0x34, 0x18, 0x62, 0x20, 0x03, 0x28, 0x10, 0x42, 0x02, 0x10, 0x00, 0x52, 0x10, 0x75,
-	0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12,
-	0x29, 0x0a, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61,
-	0x74, 0x18, 0x63, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0d, 0x75, 0x6e, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2b, 0x0a, 0x0f, 0x75, 0x6e,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x64, 0x20,
-	0x03, 0x28, 0x01, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63,
-	0x6b, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x65, 0x20, 0x03, 0x28, 0x08, 0x42, 0x02,
-	0x10, 0x00, 0x52, 0x0c, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c,
-	0x12, 0x72, 0x0a, 0x14, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x66, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x3c,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x54,
-	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f,
-	0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x10, 0x00,
-	0x52, 0x12, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x45, 0x6e, 0x75, 0x6d, 0x12, 0x6c, 0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x38, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65,
-	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32,
-	0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e,
-	0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74,
-	0x33, 0x32, 0x12, 0x6c, 0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x39, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73, 0x74,
-	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4d,
-	0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e, 0x74, 0x36, 0x34,
-	0x12, 0x72, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x75,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x3a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73, 0x74,
-	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4d,
-	0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e,
-	0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x12, 0x72, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x75, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x3b, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x46, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e,
-	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74,
-	0x6f, 0x32, 0x2e, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x55, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x72, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f,
-	0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x3c, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74,
-	0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
-	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70,
-	0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x72, 0x0a, 0x11,
-	0x6d, 0x61, 0x70, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36,
-	0x34, 0x18, 0x3d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
-	0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
-	0x0f, 0x6d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x12, 0x78, 0x0a, 0x13, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x5f,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x3e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65,
-	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32,
-	0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x46, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65,
-	0x64, 0x33, 0x32, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x78, 0x0a, 0x13, 0x6d, 0x61,
-	0x70, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
-	0x34, 0x18, 0x3f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
-	0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69,
-	0x78, 0x65, 0x64, 0x36, 0x34, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x52, 0x11, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x46, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x12, 0x7e, 0x0a, 0x15, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x33, 0x32, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x40, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74,
-	0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
-	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
-	0x13, 0x6d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x53, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x33, 0x32, 0x12, 0x7e, 0x0a, 0x15, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x41, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74,
-	0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
-	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x36, 0x34, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
-	0x13, 0x6d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x53, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x12, 0x6c, 0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x42, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65,
-	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32,
-	0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x45, 0x6e,
-	0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x46, 0x6c, 0x6f,
-	0x61, 0x74, 0x12, 0x6f, 0x0a, 0x10, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f,
-	0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x43, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73,
-	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e,
-	0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x45, 0x6e,
-	0x74, 0x72, 0x79, 0x52, 0x0e, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75,
-	0x62, 0x6c, 0x65, 0x12, 0x66, 0x0a, 0x0d, 0x6d, 0x61, 0x70, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x5f,
-	0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x44, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
-	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4d, 0x61,
-	0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b,
-	0x6d, 0x61, 0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x72, 0x0a, 0x11, 0x6d,
-	0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x18, 0x45, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
-	0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f,
-	0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12,
-	0x6f, 0x0a, 0x10, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x79,
-	0x74, 0x65, 0x73, 0x18, 0x46, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
-	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4d, 0x61, 0x70,
-	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
-	0x52, 0x0e, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73,
-	0x12, 0x88, 0x01, 0x0a, 0x19, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f,
-	0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x47,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f,
-	0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
-	0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e,
-	0x74, 0x72, 0x79, 0x52, 0x16, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x1a,
-	0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69,
-	0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x48, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x4e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f,
-	0x74, 0x6f, 0x32, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x6f, 0x72,
-	0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79,
-	0x52, 0x17, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x6f, 0x72, 0x65, 0x69,
-	0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x7f, 0x0a, 0x16, 0x6d, 0x61, 0x70,
-	0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65,
-	0x6e, 0x75, 0x6d, 0x18, 0x49, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
-	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4d, 0x61, 0x70,
-	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d,
-	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x82, 0x01, 0x0a, 0x17, 0x6d,
-	0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67,
-	0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x4a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73,
-	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e,
-	0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
-	0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x14, 0x6d, 0x61, 0x70, 0x53, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12,
-	0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
-	0x6f, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x55, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x12, 0x73, 0x0a, 0x14, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x70, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65,
-	0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50,
-	0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x12, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65,
-	0x6f, 0x66, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x71, 0x20, 0x01, 0x28, 0x09, 0x48,
-	0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x21,
-	0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x72, 0x20,
-	0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0x79, 0x74, 0x65,
-	0x73, 0x12, 0x1f, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18,
-	0x73, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0x6f,
-	0x6f, 0x6c, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x75, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x18, 0x74, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f,
-	0x66, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x21, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
-	0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x75, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0a,
-	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e,
-	0x65, 0x6f, 0x66, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x76, 0x20, 0x01, 0x28, 0x01,
-	0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12,
-	0x5d, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x77, 0x20,
-	0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74,
-	0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
-	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75,
-	0x6d, 0x48, 0x00, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x4b,
-	0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0xc9, 0x01, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x36, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65,
-	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32,
-	0x2e, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1f, 0x0a, 0x0a, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x31, 0x18, 0x91, 0x03, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x31, 0x12, 0x20, 0x0a, 0x0b,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x32, 0x18, 0x92, 0x03, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x32, 0x12, 0x21,
-	0x0a, 0x0c, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x33, 0x18, 0x93,
-	0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65,
-	0x33, 0x12, 0x22, 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
-	0x34, 0x5f, 0x18, 0x94, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x4e, 0x61, 0x6d, 0x65, 0x34, 0x12, 0x21, 0x0a, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x30, 0x6e,
-	0x61, 0x6d, 0x65, 0x35, 0x18, 0x95, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x30, 0x6e, 0x61, 0x6d, 0x65, 0x35, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x5f, 0x30, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x36, 0x18, 0x96, 0x03, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x30, 0x4e, 0x61, 0x6d, 0x65, 0x36, 0x12, 0x1f, 0x0a,
-	0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x37, 0x18, 0x97, 0x03, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x37, 0x12, 0x1f,
-	0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x38, 0x18, 0x98, 0x03, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x38, 0x12,
-	0x20, 0x0a, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x39, 0x18, 0x99,
-	0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65,
-	0x39, 0x12, 0x22, 0x0a, 0x0c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x31,
-	0x30, 0x18, 0x9a, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e,
-	0x61, 0x6d, 0x65, 0x31, 0x30, 0x12, 0x22, 0x0a, 0x0c, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x4e,
-	0x41, 0x4d, 0x45, 0x31, 0x31, 0x18, 0x9b, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x46, 0x49,
-	0x45, 0x4c, 0x44, 0x4e, 0x41, 0x4d, 0x45, 0x31, 0x31, 0x12, 0x22, 0x0a, 0x0c, 0x46, 0x49, 0x45,
-	0x4c, 0x44, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x31, 0x32, 0x18, 0x9c, 0x03, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x0b, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x31, 0x32, 0x12, 0x24, 0x0a,
-	0x0e, 0x5f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x31, 0x33, 0x18,
-	0x9d, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d,
-	0x65, 0x31, 0x33, 0x12, 0x24, 0x0a, 0x0e, 0x5f, 0x5f, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e,
-	0x61, 0x6d, 0x65, 0x31, 0x34, 0x18, 0x9e, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x46, 0x69,
-	0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x31, 0x34, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x69, 0x65,
-	0x6c, 0x64, 0x5f, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x31, 0x35, 0x18, 0x9f, 0x03, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x31, 0x35, 0x12, 0x23,
-	0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x5f, 0x4e, 0x61, 0x6d, 0x65, 0x31, 0x36, 0x18,
-	0xa0, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d,
-	0x65, 0x31, 0x36, 0x12, 0x24, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d,
-	0x65, 0x31, 0x37, 0x5f, 0x5f, 0x18, 0xa1, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x31, 0x37, 0x12, 0x24, 0x0a, 0x0e, 0x46, 0x69, 0x65,
-	0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x31, 0x38, 0x5f, 0x5f, 0x18, 0xa2, 0x03, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x0b, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x31, 0x38, 0x1a,
-	0x72, 0x0a, 0x0d, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x61, 0x12, 0x53,
-	0x0a, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74,
-	0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
-	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x52, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73,
-	0x69, 0x76, 0x65, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x49,
-	0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x36,
-	0x34, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
-	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61,
-	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x55, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
-	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65,
-	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d,
-	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d,
-	0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e,
-	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04,
-	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
-	0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x11, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
-	0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
-	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52, 0x05, 0x76, 0x61,
-	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x61, 0x70, 0x46, 0x69,
-	0x78, 0x65, 0x64, 0x33, 0x32, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x52, 0x03,
-	0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x07, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a,
-	0x16, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x46, 0x69, 0x78, 0x65, 0x64,
-	0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x06, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x06, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
-	0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
-	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x03, 0x6b, 0x65,
-	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0f,
-	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x18, 0x4d,
-	0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x10, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x10, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
-	0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x46,
-	0x6c, 0x6f, 0x61, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33,
-	0x32, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
-	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
-	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x4d, 0x61, 0x70, 0x42,
-	0x6f, 0x6f, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
-	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
-	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79,
-	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
-	0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13,
-	0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x45, 0x6e,
-	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
-	0x8a, 0x01, 0x0a, 0x1b, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
-	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
-	0x79, 0x12, 0x55, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x3f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f,
-	0x74, 0x6f, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x7f, 0x0a, 0x1c,
-	0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
-	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x49,
-	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x46, 0x6f,
-	0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x74,
-	0x6f, 0x32, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x84, 0x01,
-	0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
-	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x52, 0x0a, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73, 0x74,
-	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
-	0x3a, 0x02, 0x38, 0x01, 0x1a, 0x79, 0x0a, 0x19, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
-	0x6b, 0x65, 0x79, 0x12, 0x46, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65,
-	0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x32, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x50, 0x72,
-	0x6f, 0x74, 0x6f, 0x32, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
-	0x4c, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x67, 0x72, 0x6f, 0x75, 0x70,
-	0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0xca, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x67,
-	0x72, 0x6f, 0x75, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x22, 0x0a, 0x0c, 0x67, 0x72, 0x6f,
-	0x75, 0x70, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0xcb, 0x01, 0x20, 0x01, 0x28, 0x0d,
-	0x52, 0x0b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x1a, 0x21, 0x0a,
-	0x11, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x72, 0x72, 0x65,
-	0x63, 0x74, 0x2a, 0x08, 0x08, 0x04, 0x10, 0xff, 0xff, 0xff, 0xff, 0x07, 0x3a, 0x02, 0x08, 0x01,
-	0x1a, 0xfa, 0x01, 0x0a, 0x1b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x43,
-	0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x31,
-	0x12, 0x10, 0x0a, 0x03, 0x73, 0x74, 0x72, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73,
-	0x74, 0x72, 0x32, 0xc8, 0x01, 0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73,
-	0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73,
-	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63,
-	0x74, 0x18, 0xf9, 0xbb, 0x5e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
-	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x1a, 0xf7, 0x01,
-	0x0a, 0x1b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x43, 0x6f, 0x72, 0x72,
-	0x65, 0x63, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0x12, 0x0c, 0x0a,
-	0x01, 0x69, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x69, 0x32, 0xc9, 0x01, 0x0a, 0x15,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
-	0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x53, 0x65, 0x74, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x18, 0x90, 0xb3, 0xfc, 0x01, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74,
-	0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
-	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65,
-	0x74, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x32, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x39, 0x0a, 0x0a, 0x4e, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x07, 0x0a, 0x03, 0x46, 0x4f, 0x4f, 0x10, 0x00, 0x12, 0x07,
-	0x0a, 0x03, 0x42, 0x41, 0x52, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x41, 0x5a, 0x10, 0x02,
-	0x12, 0x10, 0x0a, 0x03, 0x4e, 0x45, 0x47, 0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-	0xff, 0x01, 0x2a, 0x05, 0x08, 0x78, 0x10, 0xc9, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x6f, 0x6e, 0x65,
-	0x6f, 0x66, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4a, 0x06, 0x08, 0xe8, 0x07, 0x10, 0x90, 0x4e,
-	0x22, 0x24, 0x0a, 0x14, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x12, 0x0c, 0x0a, 0x01, 0x63, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x01, 0x63, 0x22, 0x9e, 0x03, 0x0a, 0x15, 0x55, 0x6e, 0x6b, 0x6e, 0x6f,
-	0x77, 0x6e, 0x54, 0x6f, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
-	0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x28, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0xea, 0x07, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x12, 0x5b, 0x0a, 0x0e, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x46, 0x6f, 0x72, 0x65,
-	0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32,
-	0x52, 0x0d, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12,
-	0x69, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67, 0x72, 0x6f, 0x75, 0x70,
-	0x18, 0xec, 0x07, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x42, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x2e, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x54,
-	0x6f, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0d, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x24, 0x0a, 0x0d, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0xee, 0x07, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6c,
-	0x12, 0x26, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x18, 0xf3, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x1a, 0x1d, 0x0a, 0x0d, 0x4f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x61, 0x2a, 0x46, 0x0a, 0x11, 0x46, 0x6f, 0x72, 0x65, 0x69,
-	0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x12, 0x0f, 0x0a, 0x0b,
-	0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x46, 0x4f, 0x4f, 0x10, 0x00, 0x12, 0x0f, 0x0a,
-	0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x42, 0x41, 0x52, 0x10, 0x01, 0x12, 0x0f,
-	0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x42, 0x41, 0x5a, 0x10, 0x02, 0x3a,
-	0x5a, 0x0a, 0x0f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x12, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65,
-	0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x32, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50,
-	0x72, 0x6f, 0x74, 0x6f, 0x32, 0x18, 0x78, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x42, 0x2f, 0x0a, 0x28, 0x63,
-	0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x48, 0x01, 0xf8, 0x01, 0x01,
-}
-
-var (
-	file_google_protobuf_test_messages_proto2_proto_rawDescOnce sync.Once
-	file_google_protobuf_test_messages_proto2_proto_rawDescData = file_google_protobuf_test_messages_proto2_proto_rawDesc
-)
-
-func file_google_protobuf_test_messages_proto2_proto_rawDescGZIP() []byte {
-	file_google_protobuf_test_messages_proto2_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_test_messages_proto2_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_protobuf_test_messages_proto2_proto_rawDescData)
-	})
-	return file_google_protobuf_test_messages_proto2_proto_rawDescData
-}
-
-var file_google_protobuf_test_messages_proto2_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_google_protobuf_test_messages_proto2_proto_msgTypes = make([]protoimpl.MessageInfo, 28)
-var file_google_protobuf_test_messages_proto2_proto_goTypes = []interface{}{
-	(ForeignEnumProto2)(0),                   // 0: protobuf_test_messages.proto2.ForeignEnumProto2
-	(TestAllTypesProto2_NestedEnum)(0),       // 1: protobuf_test_messages.proto2.TestAllTypesProto2.NestedEnum
-	(*TestAllTypesProto2)(nil),               // 2: protobuf_test_messages.proto2.TestAllTypesProto2
-	(*ForeignMessageProto2)(nil),             // 3: protobuf_test_messages.proto2.ForeignMessageProto2
-	(*UnknownToTestAllTypes)(nil),            // 4: protobuf_test_messages.proto2.UnknownToTestAllTypes
-	(*TestAllTypesProto2_NestedMessage)(nil), // 5: protobuf_test_messages.proto2.TestAllTypesProto2.NestedMessage
-	nil,                                      // 6: protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32Int32Entry
-	nil,                                      // 7: protobuf_test_messages.proto2.TestAllTypesProto2.MapInt64Int64Entry
-	nil,                                      // 8: protobuf_test_messages.proto2.TestAllTypesProto2.MapUint32Uint32Entry
-	nil,                                      // 9: protobuf_test_messages.proto2.TestAllTypesProto2.MapUint64Uint64Entry
-	nil,                                      // 10: protobuf_test_messages.proto2.TestAllTypesProto2.MapSint32Sint32Entry
-	nil,                                      // 11: protobuf_test_messages.proto2.TestAllTypesProto2.MapSint64Sint64Entry
-	nil,                                      // 12: protobuf_test_messages.proto2.TestAllTypesProto2.MapFixed32Fixed32Entry
-	nil,                                      // 13: protobuf_test_messages.proto2.TestAllTypesProto2.MapFixed64Fixed64Entry
-	nil,                                      // 14: protobuf_test_messages.proto2.TestAllTypesProto2.MapSfixed32Sfixed32Entry
-	nil,                                      // 15: protobuf_test_messages.proto2.TestAllTypesProto2.MapSfixed64Sfixed64Entry
-	nil,                                      // 16: protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32FloatEntry
-	nil,                                      // 17: protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32DoubleEntry
-	nil,                                      // 18: protobuf_test_messages.proto2.TestAllTypesProto2.MapBoolBoolEntry
-	nil,                                      // 19: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringStringEntry
-	nil,                                      // 20: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringBytesEntry
-	nil,                                      // 21: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringNestedMessageEntry
-	nil,                                      // 22: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringForeignMessageEntry
-	nil,                                      // 23: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringNestedEnumEntry
-	nil,                                      // 24: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringForeignEnumEntry
-	(*TestAllTypesProto2_Data)(nil),          // 25: protobuf_test_messages.proto2.TestAllTypesProto2.Data
-	(*TestAllTypesProto2_MessageSetCorrect)(nil),           // 26: protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrect
-	(*TestAllTypesProto2_MessageSetCorrectExtension1)(nil), // 27: protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension1
-	(*TestAllTypesProto2_MessageSetCorrectExtension2)(nil), // 28: protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension2
-	(*UnknownToTestAllTypes_OptionalGroup)(nil),            // 29: protobuf_test_messages.proto2.UnknownToTestAllTypes.OptionalGroup
-}
-var file_google_protobuf_test_messages_proto2_proto_depIdxs = []int32{
-	5,  // 0: protobuf_test_messages.proto2.TestAllTypesProto2.optional_nested_message:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.NestedMessage
-	3,  // 1: protobuf_test_messages.proto2.TestAllTypesProto2.optional_foreign_message:type_name -> protobuf_test_messages.proto2.ForeignMessageProto2
-	1,  // 2: protobuf_test_messages.proto2.TestAllTypesProto2.optional_nested_enum:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.NestedEnum
-	0,  // 3: protobuf_test_messages.proto2.TestAllTypesProto2.optional_foreign_enum:type_name -> protobuf_test_messages.proto2.ForeignEnumProto2
-	2,  // 4: protobuf_test_messages.proto2.TestAllTypesProto2.recursive_message:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2
-	5,  // 5: protobuf_test_messages.proto2.TestAllTypesProto2.repeated_nested_message:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.NestedMessage
-	3,  // 6: protobuf_test_messages.proto2.TestAllTypesProto2.repeated_foreign_message:type_name -> protobuf_test_messages.proto2.ForeignMessageProto2
-	1,  // 7: protobuf_test_messages.proto2.TestAllTypesProto2.repeated_nested_enum:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.NestedEnum
-	0,  // 8: protobuf_test_messages.proto2.TestAllTypesProto2.repeated_foreign_enum:type_name -> protobuf_test_messages.proto2.ForeignEnumProto2
-	1,  // 9: protobuf_test_messages.proto2.TestAllTypesProto2.packed_nested_enum:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.NestedEnum
-	1,  // 10: protobuf_test_messages.proto2.TestAllTypesProto2.unpacked_nested_enum:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.NestedEnum
-	6,  // 11: protobuf_test_messages.proto2.TestAllTypesProto2.map_int32_int32:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32Int32Entry
-	7,  // 12: protobuf_test_messages.proto2.TestAllTypesProto2.map_int64_int64:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapInt64Int64Entry
-	8,  // 13: protobuf_test_messages.proto2.TestAllTypesProto2.map_uint32_uint32:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapUint32Uint32Entry
-	9,  // 14: protobuf_test_messages.proto2.TestAllTypesProto2.map_uint64_uint64:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapUint64Uint64Entry
-	10, // 15: protobuf_test_messages.proto2.TestAllTypesProto2.map_sint32_sint32:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapSint32Sint32Entry
-	11, // 16: protobuf_test_messages.proto2.TestAllTypesProto2.map_sint64_sint64:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapSint64Sint64Entry
-	12, // 17: protobuf_test_messages.proto2.TestAllTypesProto2.map_fixed32_fixed32:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapFixed32Fixed32Entry
-	13, // 18: protobuf_test_messages.proto2.TestAllTypesProto2.map_fixed64_fixed64:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapFixed64Fixed64Entry
-	14, // 19: protobuf_test_messages.proto2.TestAllTypesProto2.map_sfixed32_sfixed32:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapSfixed32Sfixed32Entry
-	15, // 20: protobuf_test_messages.proto2.TestAllTypesProto2.map_sfixed64_sfixed64:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapSfixed64Sfixed64Entry
-	16, // 21: protobuf_test_messages.proto2.TestAllTypesProto2.map_int32_float:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32FloatEntry
-	17, // 22: protobuf_test_messages.proto2.TestAllTypesProto2.map_int32_double:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapInt32DoubleEntry
-	18, // 23: protobuf_test_messages.proto2.TestAllTypesProto2.map_bool_bool:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapBoolBoolEntry
-	19, // 24: protobuf_test_messages.proto2.TestAllTypesProto2.map_string_string:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapStringStringEntry
-	20, // 25: protobuf_test_messages.proto2.TestAllTypesProto2.map_string_bytes:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapStringBytesEntry
-	21, // 26: protobuf_test_messages.proto2.TestAllTypesProto2.map_string_nested_message:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapStringNestedMessageEntry
-	22, // 27: protobuf_test_messages.proto2.TestAllTypesProto2.map_string_foreign_message:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapStringForeignMessageEntry
-	23, // 28: protobuf_test_messages.proto2.TestAllTypesProto2.map_string_nested_enum:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapStringNestedEnumEntry
-	24, // 29: protobuf_test_messages.proto2.TestAllTypesProto2.map_string_foreign_enum:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MapStringForeignEnumEntry
-	5,  // 30: protobuf_test_messages.proto2.TestAllTypesProto2.oneof_nested_message:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.NestedMessage
-	1,  // 31: protobuf_test_messages.proto2.TestAllTypesProto2.oneof_enum:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.NestedEnum
-	25, // 32: protobuf_test_messages.proto2.TestAllTypesProto2.data:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.Data
-	3,  // 33: protobuf_test_messages.proto2.UnknownToTestAllTypes.nested_message:type_name -> protobuf_test_messages.proto2.ForeignMessageProto2
-	29, // 34: protobuf_test_messages.proto2.UnknownToTestAllTypes.optionalgroup:type_name -> protobuf_test_messages.proto2.UnknownToTestAllTypes.OptionalGroup
-	2,  // 35: protobuf_test_messages.proto2.TestAllTypesProto2.NestedMessage.corecursive:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2
-	5,  // 36: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringNestedMessageEntry.value:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.NestedMessage
-	3,  // 37: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringForeignMessageEntry.value:type_name -> protobuf_test_messages.proto2.ForeignMessageProto2
-	1,  // 38: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringNestedEnumEntry.value:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.NestedEnum
-	0,  // 39: protobuf_test_messages.proto2.TestAllTypesProto2.MapStringForeignEnumEntry.value:type_name -> protobuf_test_messages.proto2.ForeignEnumProto2
-	2,  // 40: protobuf_test_messages.proto2.extension_int32:extendee -> protobuf_test_messages.proto2.TestAllTypesProto2
-	26, // 41: protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension1.message_set_extension:extendee -> protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrect
-	26, // 42: protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension2.message_set_extension:extendee -> protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrect
-	27, // 43: protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension1.message_set_extension:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension1
-	28, // 44: protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension2.message_set_extension:type_name -> protobuf_test_messages.proto2.TestAllTypesProto2.MessageSetCorrectExtension2
-	45, // [45:45] is the sub-list for method output_type
-	45, // [45:45] is the sub-list for method input_type
-	43, // [43:45] is the sub-list for extension type_name
-	40, // [40:43] is the sub-list for extension extendee
-	0,  // [0:40] is the sub-list for field type_name
-}
-
-func init() { file_google_protobuf_test_messages_proto2_proto_init() }
-func file_google_protobuf_test_messages_proto2_proto_init() {
-	if File_google_protobuf_test_messages_proto2_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_google_protobuf_test_messages_proto2_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestAllTypesProto2); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_test_messages_proto2_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ForeignMessageProto2); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_test_messages_proto2_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UnknownToTestAllTypes); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_test_messages_proto2_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestAllTypesProto2_NestedMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_test_messages_proto2_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestAllTypesProto2_Data); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_test_messages_proto2_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestAllTypesProto2_MessageSetCorrect); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_test_messages_proto2_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestAllTypesProto2_MessageSetCorrectExtension1); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_test_messages_proto2_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestAllTypesProto2_MessageSetCorrectExtension2); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_test_messages_proto2_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UnknownToTestAllTypes_OptionalGroup); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	file_google_protobuf_test_messages_proto2_proto_msgTypes[0].OneofWrappers = []interface{}{
-		(*TestAllTypesProto2_OneofUint32)(nil),
-		(*TestAllTypesProto2_OneofNestedMessage)(nil),
-		(*TestAllTypesProto2_OneofString)(nil),
-		(*TestAllTypesProto2_OneofBytes)(nil),
-		(*TestAllTypesProto2_OneofBool)(nil),
-		(*TestAllTypesProto2_OneofUint64)(nil),
-		(*TestAllTypesProto2_OneofFloat)(nil),
-		(*TestAllTypesProto2_OneofDouble)(nil),
-		(*TestAllTypesProto2_OneofEnum)(nil),
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_google_protobuf_test_messages_proto2_proto_rawDesc,
-			NumEnums:      2,
-			NumMessages:   28,
-			NumExtensions: 3,
-			NumServices:   0,
-		},
-		GoTypes:           file_google_protobuf_test_messages_proto2_proto_goTypes,
-		DependencyIndexes: file_google_protobuf_test_messages_proto2_proto_depIdxs,
-		EnumInfos:         file_google_protobuf_test_messages_proto2_proto_enumTypes,
-		MessageInfos:      file_google_protobuf_test_messages_proto2_proto_msgTypes,
-		ExtensionInfos:    file_google_protobuf_test_messages_proto2_proto_extTypes,
-	}.Build()
-	File_google_protobuf_test_messages_proto2_proto = out.File
-	file_google_protobuf_test_messages_proto2_proto_rawDesc = nil
-	file_google_protobuf_test_messages_proto2_proto_goTypes = nil
-	file_google_protobuf_test_messages_proto2_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/conformance/test_messages_proto3.pb.go b/internal/testprotos/conformance/test_messages_proto3.pb.go
deleted file mode 100644
index 8387873..0000000
--- a/internal/testprotos/conformance/test_messages_proto3.pb.go
+++ /dev/null
@@ -1,2625 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Test schema for proto3 messages.  This test schema is used by:
-//
-// - benchmarks
-// - fuzz tests
-// - conformance tests
-//
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google/protobuf/test_messages_proto3.proto
-
-package conformance
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	anypb "google.golang.org/protobuf/types/known/anypb"
-	durationpb "google.golang.org/protobuf/types/known/durationpb"
-	fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
-	structpb "google.golang.org/protobuf/types/known/structpb"
-	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
-	wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
-	reflect "reflect"
-	sync "sync"
-)
-
-type ForeignEnum int32
-
-const (
-	ForeignEnum_FOREIGN_FOO ForeignEnum = 0
-	ForeignEnum_FOREIGN_BAR ForeignEnum = 1
-	ForeignEnum_FOREIGN_BAZ ForeignEnum = 2
-)
-
-// Enum value maps for ForeignEnum.
-var (
-	ForeignEnum_name = map[int32]string{
-		0: "FOREIGN_FOO",
-		1: "FOREIGN_BAR",
-		2: "FOREIGN_BAZ",
-	}
-	ForeignEnum_value = map[string]int32{
-		"FOREIGN_FOO": 0,
-		"FOREIGN_BAR": 1,
-		"FOREIGN_BAZ": 2,
-	}
-)
-
-func (x ForeignEnum) Enum() *ForeignEnum {
-	p := new(ForeignEnum)
-	*p = x
-	return p
-}
-
-func (x ForeignEnum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ForeignEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_test_messages_proto3_proto_enumTypes[0].Descriptor()
-}
-
-func (ForeignEnum) Type() protoreflect.EnumType {
-	return &file_google_protobuf_test_messages_proto3_proto_enumTypes[0]
-}
-
-func (x ForeignEnum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ForeignEnum.Descriptor instead.
-func (ForeignEnum) EnumDescriptor() ([]byte, []int) {
-	return file_google_protobuf_test_messages_proto3_proto_rawDescGZIP(), []int{0}
-}
-
-type TestAllTypesProto3_NestedEnum int32
-
-const (
-	TestAllTypesProto3_FOO TestAllTypesProto3_NestedEnum = 0
-	TestAllTypesProto3_BAR TestAllTypesProto3_NestedEnum = 1
-	TestAllTypesProto3_BAZ TestAllTypesProto3_NestedEnum = 2
-	TestAllTypesProto3_NEG TestAllTypesProto3_NestedEnum = -1 // Intentionally negative.
-)
-
-// Enum value maps for TestAllTypesProto3_NestedEnum.
-var (
-	TestAllTypesProto3_NestedEnum_name = map[int32]string{
-		0:  "FOO",
-		1:  "BAR",
-		2:  "BAZ",
-		-1: "NEG",
-	}
-	TestAllTypesProto3_NestedEnum_value = map[string]int32{
-		"FOO": 0,
-		"BAR": 1,
-		"BAZ": 2,
-		"NEG": -1,
-	}
-)
-
-func (x TestAllTypesProto3_NestedEnum) Enum() *TestAllTypesProto3_NestedEnum {
-	p := new(TestAllTypesProto3_NestedEnum)
-	*p = x
-	return p
-}
-
-func (x TestAllTypesProto3_NestedEnum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (TestAllTypesProto3_NestedEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_test_messages_proto3_proto_enumTypes[1].Descriptor()
-}
-
-func (TestAllTypesProto3_NestedEnum) Type() protoreflect.EnumType {
-	return &file_google_protobuf_test_messages_proto3_proto_enumTypes[1]
-}
-
-func (x TestAllTypesProto3_NestedEnum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use TestAllTypesProto3_NestedEnum.Descriptor instead.
-func (TestAllTypesProto3_NestedEnum) EnumDescriptor() ([]byte, []int) {
-	return file_google_protobuf_test_messages_proto3_proto_rawDescGZIP(), []int{0, 0}
-}
-
-type TestAllTypesProto3_AliasedEnum int32
-
-const (
-	TestAllTypesProto3_ALIAS_FOO TestAllTypesProto3_AliasedEnum = 0
-	TestAllTypesProto3_ALIAS_BAR TestAllTypesProto3_AliasedEnum = 1
-	TestAllTypesProto3_ALIAS_BAZ TestAllTypesProto3_AliasedEnum = 2
-	TestAllTypesProto3_QUX       TestAllTypesProto3_AliasedEnum = 2
-	TestAllTypesProto3_qux       TestAllTypesProto3_AliasedEnum = 2
-	TestAllTypesProto3_bAz       TestAllTypesProto3_AliasedEnum = 2
-)
-
-// Enum value maps for TestAllTypesProto3_AliasedEnum.
-var (
-	TestAllTypesProto3_AliasedEnum_name = map[int32]string{
-		0: "ALIAS_FOO",
-		1: "ALIAS_BAR",
-		2: "ALIAS_BAZ",
-		// Duplicate value: 2: "QUX",
-		// Duplicate value: 2: "qux",
-		// Duplicate value: 2: "bAz",
-	}
-	TestAllTypesProto3_AliasedEnum_value = map[string]int32{
-		"ALIAS_FOO": 0,
-		"ALIAS_BAR": 1,
-		"ALIAS_BAZ": 2,
-		"QUX":       2,
-		"qux":       2,
-		"bAz":       2,
-	}
-)
-
-func (x TestAllTypesProto3_AliasedEnum) Enum() *TestAllTypesProto3_AliasedEnum {
-	p := new(TestAllTypesProto3_AliasedEnum)
-	*p = x
-	return p
-}
-
-func (x TestAllTypesProto3_AliasedEnum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (TestAllTypesProto3_AliasedEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_test_messages_proto3_proto_enumTypes[2].Descriptor()
-}
-
-func (TestAllTypesProto3_AliasedEnum) Type() protoreflect.EnumType {
-	return &file_google_protobuf_test_messages_proto3_proto_enumTypes[2]
-}
-
-func (x TestAllTypesProto3_AliasedEnum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use TestAllTypesProto3_AliasedEnum.Descriptor instead.
-func (TestAllTypesProto3_AliasedEnum) EnumDescriptor() ([]byte, []int) {
-	return file_google_protobuf_test_messages_proto3_proto_rawDescGZIP(), []int{0, 1}
-}
-
-// This proto includes every type of field in both singular and repeated
-// forms.
-//
-// Also, crucially, all messages and enums in this file are eventually
-// submessages of this message.  So for example, a fuzz test of TestAllTypes
-// could trigger bugs that occur in any message type in this file.  We verify
-// this stays true in a unit test.
-type TestAllTypesProto3 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Singular
-	OptionalInt32          int32                             `protobuf:"varint,1,opt,name=optional_int32,json=optionalInt32,proto3" json:"optional_int32,omitempty"`
-	OptionalInt64          int64                             `protobuf:"varint,2,opt,name=optional_int64,json=optionalInt64,proto3" json:"optional_int64,omitempty"`
-	OptionalUint32         uint32                            `protobuf:"varint,3,opt,name=optional_uint32,json=optionalUint32,proto3" json:"optional_uint32,omitempty"`
-	OptionalUint64         uint64                            `protobuf:"varint,4,opt,name=optional_uint64,json=optionalUint64,proto3" json:"optional_uint64,omitempty"`
-	OptionalSint32         int32                             `protobuf:"zigzag32,5,opt,name=optional_sint32,json=optionalSint32,proto3" json:"optional_sint32,omitempty"`
-	OptionalSint64         int64                             `protobuf:"zigzag64,6,opt,name=optional_sint64,json=optionalSint64,proto3" json:"optional_sint64,omitempty"`
-	OptionalFixed32        uint32                            `protobuf:"fixed32,7,opt,name=optional_fixed32,json=optionalFixed32,proto3" json:"optional_fixed32,omitempty"`
-	OptionalFixed64        uint64                            `protobuf:"fixed64,8,opt,name=optional_fixed64,json=optionalFixed64,proto3" json:"optional_fixed64,omitempty"`
-	OptionalSfixed32       int32                             `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32,proto3" json:"optional_sfixed32,omitempty"`
-	OptionalSfixed64       int64                             `protobuf:"fixed64,10,opt,name=optional_sfixed64,json=optionalSfixed64,proto3" json:"optional_sfixed64,omitempty"`
-	OptionalFloat          float32                           `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat,proto3" json:"optional_float,omitempty"`
-	OptionalDouble         float64                           `protobuf:"fixed64,12,opt,name=optional_double,json=optionalDouble,proto3" json:"optional_double,omitempty"`
-	OptionalBool           bool                              `protobuf:"varint,13,opt,name=optional_bool,json=optionalBool,proto3" json:"optional_bool,omitempty"`
-	OptionalString         string                            `protobuf:"bytes,14,opt,name=optional_string,json=optionalString,proto3" json:"optional_string,omitempty"`
-	OptionalBytes          []byte                            `protobuf:"bytes,15,opt,name=optional_bytes,json=optionalBytes,proto3" json:"optional_bytes,omitempty"`
-	OptionalNestedMessage  *TestAllTypesProto3_NestedMessage `protobuf:"bytes,18,opt,name=optional_nested_message,json=optionalNestedMessage,proto3" json:"optional_nested_message,omitempty"`
-	OptionalForeignMessage *ForeignMessage                   `protobuf:"bytes,19,opt,name=optional_foreign_message,json=optionalForeignMessage,proto3" json:"optional_foreign_message,omitempty"`
-	OptionalNestedEnum     TestAllTypesProto3_NestedEnum     `protobuf:"varint,21,opt,name=optional_nested_enum,json=optionalNestedEnum,proto3,enum=protobuf_test_messages.proto3.TestAllTypesProto3_NestedEnum" json:"optional_nested_enum,omitempty"`
-	OptionalForeignEnum    ForeignEnum                       `protobuf:"varint,22,opt,name=optional_foreign_enum,json=optionalForeignEnum,proto3,enum=protobuf_test_messages.proto3.ForeignEnum" json:"optional_foreign_enum,omitempty"`
-	OptionalAliasedEnum    TestAllTypesProto3_AliasedEnum    `protobuf:"varint,23,opt,name=optional_aliased_enum,json=optionalAliasedEnum,proto3,enum=protobuf_test_messages.proto3.TestAllTypesProto3_AliasedEnum" json:"optional_aliased_enum,omitempty"`
-	OptionalStringPiece    string                            `protobuf:"bytes,24,opt,name=optional_string_piece,json=optionalStringPiece,proto3" json:"optional_string_piece,omitempty"`
-	OptionalCord           string                            `protobuf:"bytes,25,opt,name=optional_cord,json=optionalCord,proto3" json:"optional_cord,omitempty"`
-	RecursiveMessage       *TestAllTypesProto3               `protobuf:"bytes,27,opt,name=recursive_message,json=recursiveMessage,proto3" json:"recursive_message,omitempty"`
-	// Repeated
-	RepeatedInt32          []int32                             `protobuf:"varint,31,rep,packed,name=repeated_int32,json=repeatedInt32,proto3" json:"repeated_int32,omitempty"`
-	RepeatedInt64          []int64                             `protobuf:"varint,32,rep,packed,name=repeated_int64,json=repeatedInt64,proto3" json:"repeated_int64,omitempty"`
-	RepeatedUint32         []uint32                            `protobuf:"varint,33,rep,packed,name=repeated_uint32,json=repeatedUint32,proto3" json:"repeated_uint32,omitempty"`
-	RepeatedUint64         []uint64                            `protobuf:"varint,34,rep,packed,name=repeated_uint64,json=repeatedUint64,proto3" json:"repeated_uint64,omitempty"`
-	RepeatedSint32         []int32                             `protobuf:"zigzag32,35,rep,packed,name=repeated_sint32,json=repeatedSint32,proto3" json:"repeated_sint32,omitempty"`
-	RepeatedSint64         []int64                             `protobuf:"zigzag64,36,rep,packed,name=repeated_sint64,json=repeatedSint64,proto3" json:"repeated_sint64,omitempty"`
-	RepeatedFixed32        []uint32                            `protobuf:"fixed32,37,rep,packed,name=repeated_fixed32,json=repeatedFixed32,proto3" json:"repeated_fixed32,omitempty"`
-	RepeatedFixed64        []uint64                            `protobuf:"fixed64,38,rep,packed,name=repeated_fixed64,json=repeatedFixed64,proto3" json:"repeated_fixed64,omitempty"`
-	RepeatedSfixed32       []int32                             `protobuf:"fixed32,39,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32,proto3" json:"repeated_sfixed32,omitempty"`
-	RepeatedSfixed64       []int64                             `protobuf:"fixed64,40,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64,proto3" json:"repeated_sfixed64,omitempty"`
-	RepeatedFloat          []float32                           `protobuf:"fixed32,41,rep,packed,name=repeated_float,json=repeatedFloat,proto3" json:"repeated_float,omitempty"`
-	RepeatedDouble         []float64                           `protobuf:"fixed64,42,rep,packed,name=repeated_double,json=repeatedDouble,proto3" json:"repeated_double,omitempty"`
-	RepeatedBool           []bool                              `protobuf:"varint,43,rep,packed,name=repeated_bool,json=repeatedBool,proto3" json:"repeated_bool,omitempty"`
-	RepeatedString         []string                            `protobuf:"bytes,44,rep,name=repeated_string,json=repeatedString,proto3" json:"repeated_string,omitempty"`
-	RepeatedBytes          [][]byte                            `protobuf:"bytes,45,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"`
-	RepeatedNestedMessage  []*TestAllTypesProto3_NestedMessage `protobuf:"bytes,48,rep,name=repeated_nested_message,json=repeatedNestedMessage,proto3" json:"repeated_nested_message,omitempty"`
-	RepeatedForeignMessage []*ForeignMessage                   `protobuf:"bytes,49,rep,name=repeated_foreign_message,json=repeatedForeignMessage,proto3" json:"repeated_foreign_message,omitempty"`
-	RepeatedNestedEnum     []TestAllTypesProto3_NestedEnum     `protobuf:"varint,51,rep,packed,name=repeated_nested_enum,json=repeatedNestedEnum,proto3,enum=protobuf_test_messages.proto3.TestAllTypesProto3_NestedEnum" json:"repeated_nested_enum,omitempty"`
-	RepeatedForeignEnum    []ForeignEnum                       `protobuf:"varint,52,rep,packed,name=repeated_foreign_enum,json=repeatedForeignEnum,proto3,enum=protobuf_test_messages.proto3.ForeignEnum" json:"repeated_foreign_enum,omitempty"`
-	RepeatedStringPiece    []string                            `protobuf:"bytes,54,rep,name=repeated_string_piece,json=repeatedStringPiece,proto3" json:"repeated_string_piece,omitempty"`
-	RepeatedCord           []string                            `protobuf:"bytes,55,rep,name=repeated_cord,json=repeatedCord,proto3" json:"repeated_cord,omitempty"`
-	// Packed
-	PackedInt32      []int32                         `protobuf:"varint,75,rep,packed,name=packed_int32,json=packedInt32,proto3" json:"packed_int32,omitempty"`
-	PackedInt64      []int64                         `protobuf:"varint,76,rep,packed,name=packed_int64,json=packedInt64,proto3" json:"packed_int64,omitempty"`
-	PackedUint32     []uint32                        `protobuf:"varint,77,rep,packed,name=packed_uint32,json=packedUint32,proto3" json:"packed_uint32,omitempty"`
-	PackedUint64     []uint64                        `protobuf:"varint,78,rep,packed,name=packed_uint64,json=packedUint64,proto3" json:"packed_uint64,omitempty"`
-	PackedSint32     []int32                         `protobuf:"zigzag32,79,rep,packed,name=packed_sint32,json=packedSint32,proto3" json:"packed_sint32,omitempty"`
-	PackedSint64     []int64                         `protobuf:"zigzag64,80,rep,packed,name=packed_sint64,json=packedSint64,proto3" json:"packed_sint64,omitempty"`
-	PackedFixed32    []uint32                        `protobuf:"fixed32,81,rep,packed,name=packed_fixed32,json=packedFixed32,proto3" json:"packed_fixed32,omitempty"`
-	PackedFixed64    []uint64                        `protobuf:"fixed64,82,rep,packed,name=packed_fixed64,json=packedFixed64,proto3" json:"packed_fixed64,omitempty"`
-	PackedSfixed32   []int32                         `protobuf:"fixed32,83,rep,packed,name=packed_sfixed32,json=packedSfixed32,proto3" json:"packed_sfixed32,omitempty"`
-	PackedSfixed64   []int64                         `protobuf:"fixed64,84,rep,packed,name=packed_sfixed64,json=packedSfixed64,proto3" json:"packed_sfixed64,omitempty"`
-	PackedFloat      []float32                       `protobuf:"fixed32,85,rep,packed,name=packed_float,json=packedFloat,proto3" json:"packed_float,omitempty"`
-	PackedDouble     []float64                       `protobuf:"fixed64,86,rep,packed,name=packed_double,json=packedDouble,proto3" json:"packed_double,omitempty"`
-	PackedBool       []bool                          `protobuf:"varint,87,rep,packed,name=packed_bool,json=packedBool,proto3" json:"packed_bool,omitempty"`
-	PackedNestedEnum []TestAllTypesProto3_NestedEnum `protobuf:"varint,88,rep,packed,name=packed_nested_enum,json=packedNestedEnum,proto3,enum=protobuf_test_messages.proto3.TestAllTypesProto3_NestedEnum" json:"packed_nested_enum,omitempty"`
-	// Unpacked
-	UnpackedInt32      []int32                         `protobuf:"varint,89,rep,name=unpacked_int32,json=unpackedInt32,proto3" json:"unpacked_int32,omitempty"`
-	UnpackedInt64      []int64                         `protobuf:"varint,90,rep,name=unpacked_int64,json=unpackedInt64,proto3" json:"unpacked_int64,omitempty"`
-	UnpackedUint32     []uint32                        `protobuf:"varint,91,rep,name=unpacked_uint32,json=unpackedUint32,proto3" json:"unpacked_uint32,omitempty"`
-	UnpackedUint64     []uint64                        `protobuf:"varint,92,rep,name=unpacked_uint64,json=unpackedUint64,proto3" json:"unpacked_uint64,omitempty"`
-	UnpackedSint32     []int32                         `protobuf:"zigzag32,93,rep,name=unpacked_sint32,json=unpackedSint32,proto3" json:"unpacked_sint32,omitempty"`
-	UnpackedSint64     []int64                         `protobuf:"zigzag64,94,rep,name=unpacked_sint64,json=unpackedSint64,proto3" json:"unpacked_sint64,omitempty"`
-	UnpackedFixed32    []uint32                        `protobuf:"fixed32,95,rep,name=unpacked_fixed32,json=unpackedFixed32,proto3" json:"unpacked_fixed32,omitempty"`
-	UnpackedFixed64    []uint64                        `protobuf:"fixed64,96,rep,name=unpacked_fixed64,json=unpackedFixed64,proto3" json:"unpacked_fixed64,omitempty"`
-	UnpackedSfixed32   []int32                         `protobuf:"fixed32,97,rep,name=unpacked_sfixed32,json=unpackedSfixed32,proto3" json:"unpacked_sfixed32,omitempty"`
-	UnpackedSfixed64   []int64                         `protobuf:"fixed64,98,rep,name=unpacked_sfixed64,json=unpackedSfixed64,proto3" json:"unpacked_sfixed64,omitempty"`
-	UnpackedFloat      []float32                       `protobuf:"fixed32,99,rep,name=unpacked_float,json=unpackedFloat,proto3" json:"unpacked_float,omitempty"`
-	UnpackedDouble     []float64                       `protobuf:"fixed64,100,rep,name=unpacked_double,json=unpackedDouble,proto3" json:"unpacked_double,omitempty"`
-	UnpackedBool       []bool                          `protobuf:"varint,101,rep,name=unpacked_bool,json=unpackedBool,proto3" json:"unpacked_bool,omitempty"`
-	UnpackedNestedEnum []TestAllTypesProto3_NestedEnum `protobuf:"varint,102,rep,name=unpacked_nested_enum,json=unpackedNestedEnum,proto3,enum=protobuf_test_messages.proto3.TestAllTypesProto3_NestedEnum" json:"unpacked_nested_enum,omitempty"`
-	// Map
-	MapInt32Int32           map[int32]int32                              `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32,proto3" json:"map_int32_int32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapInt64Int64           map[int64]int64                              `protobuf:"bytes,57,rep,name=map_int64_int64,json=mapInt64Int64,proto3" json:"map_int64_int64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapUint32Uint32         map[uint32]uint32                            `protobuf:"bytes,58,rep,name=map_uint32_uint32,json=mapUint32Uint32,proto3" json:"map_uint32_uint32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapUint64Uint64         map[uint64]uint64                            `protobuf:"bytes,59,rep,name=map_uint64_uint64,json=mapUint64Uint64,proto3" json:"map_uint64_uint64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapSint32Sint32         map[int32]int32                              `protobuf:"bytes,60,rep,name=map_sint32_sint32,json=mapSint32Sint32,proto3" json:"map_sint32_sint32,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"zigzag32,2,opt,name=value,proto3"`
-	MapSint64Sint64         map[int64]int64                              `protobuf:"bytes,61,rep,name=map_sint64_sint64,json=mapSint64Sint64,proto3" json:"map_sint64_sint64,omitempty" protobuf_key:"zigzag64,1,opt,name=key,proto3" protobuf_val:"zigzag64,2,opt,name=value,proto3"`
-	MapFixed32Fixed32       map[uint32]uint32                            `protobuf:"bytes,62,rep,name=map_fixed32_fixed32,json=mapFixed32Fixed32,proto3" json:"map_fixed32_fixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapFixed64Fixed64       map[uint64]uint64                            `protobuf:"bytes,63,rep,name=map_fixed64_fixed64,json=mapFixed64Fixed64,proto3" json:"map_fixed64_fixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapSfixed32Sfixed32     map[int32]int32                              `protobuf:"bytes,64,rep,name=map_sfixed32_sfixed32,json=mapSfixed32Sfixed32,proto3" json:"map_sfixed32_sfixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapSfixed64Sfixed64     map[int64]int64                              `protobuf:"bytes,65,rep,name=map_sfixed64_sfixed64,json=mapSfixed64Sfixed64,proto3" json:"map_sfixed64_sfixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapInt32Float           map[int32]float32                            `protobuf:"bytes,66,rep,name=map_int32_float,json=mapInt32Float,proto3" json:"map_int32_float,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapInt32Double          map[int32]float64                            `protobuf:"bytes,67,rep,name=map_int32_double,json=mapInt32Double,proto3" json:"map_int32_double,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapBoolBool             map[bool]bool                                `protobuf:"bytes,68,rep,name=map_bool_bool,json=mapBoolBool,proto3" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapStringString         map[string]string                            `protobuf:"bytes,69,rep,name=map_string_string,json=mapStringString,proto3" json:"map_string_string,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapStringBytes          map[string][]byte                            `protobuf:"bytes,70,rep,name=map_string_bytes,json=mapStringBytes,proto3" json:"map_string_bytes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapStringNestedMessage  map[string]*TestAllTypesProto3_NestedMessage `protobuf:"bytes,71,rep,name=map_string_nested_message,json=mapStringNestedMessage,proto3" json:"map_string_nested_message,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapStringForeignMessage map[string]*ForeignMessage                   `protobuf:"bytes,72,rep,name=map_string_foreign_message,json=mapStringForeignMessage,proto3" json:"map_string_foreign_message,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapStringNestedEnum     map[string]TestAllTypesProto3_NestedEnum     `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum,proto3" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=protobuf_test_messages.proto3.TestAllTypesProto3_NestedEnum"`
-	MapStringForeignEnum    map[string]ForeignEnum                       `protobuf:"bytes,74,rep,name=map_string_foreign_enum,json=mapStringForeignEnum,proto3" json:"map_string_foreign_enum,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=protobuf_test_messages.proto3.ForeignEnum"`
-	// Types that are assignable to OneofField:
-	//	*TestAllTypesProto3_OneofUint32
-	//	*TestAllTypesProto3_OneofNestedMessage
-	//	*TestAllTypesProto3_OneofString
-	//	*TestAllTypesProto3_OneofBytes
-	//	*TestAllTypesProto3_OneofBool
-	//	*TestAllTypesProto3_OneofUint64
-	//	*TestAllTypesProto3_OneofFloat
-	//	*TestAllTypesProto3_OneofDouble
-	//	*TestAllTypesProto3_OneofEnum
-	//	*TestAllTypesProto3_OneofNullValue
-	OneofField isTestAllTypesProto3_OneofField `protobuf_oneof:"oneof_field"`
-	// Well-known types
-	OptionalBoolWrapper   *wrapperspb.BoolValue     `protobuf:"bytes,201,opt,name=optional_bool_wrapper,json=optionalBoolWrapper,proto3" json:"optional_bool_wrapper,omitempty"`
-	OptionalInt32Wrapper  *wrapperspb.Int32Value    `protobuf:"bytes,202,opt,name=optional_int32_wrapper,json=optionalInt32Wrapper,proto3" json:"optional_int32_wrapper,omitempty"`
-	OptionalInt64Wrapper  *wrapperspb.Int64Value    `protobuf:"bytes,203,opt,name=optional_int64_wrapper,json=optionalInt64Wrapper,proto3" json:"optional_int64_wrapper,omitempty"`
-	OptionalUint32Wrapper *wrapperspb.UInt32Value   `protobuf:"bytes,204,opt,name=optional_uint32_wrapper,json=optionalUint32Wrapper,proto3" json:"optional_uint32_wrapper,omitempty"`
-	OptionalUint64Wrapper *wrapperspb.UInt64Value   `protobuf:"bytes,205,opt,name=optional_uint64_wrapper,json=optionalUint64Wrapper,proto3" json:"optional_uint64_wrapper,omitempty"`
-	OptionalFloatWrapper  *wrapperspb.FloatValue    `protobuf:"bytes,206,opt,name=optional_float_wrapper,json=optionalFloatWrapper,proto3" json:"optional_float_wrapper,omitempty"`
-	OptionalDoubleWrapper *wrapperspb.DoubleValue   `protobuf:"bytes,207,opt,name=optional_double_wrapper,json=optionalDoubleWrapper,proto3" json:"optional_double_wrapper,omitempty"`
-	OptionalStringWrapper *wrapperspb.StringValue   `protobuf:"bytes,208,opt,name=optional_string_wrapper,json=optionalStringWrapper,proto3" json:"optional_string_wrapper,omitempty"`
-	OptionalBytesWrapper  *wrapperspb.BytesValue    `protobuf:"bytes,209,opt,name=optional_bytes_wrapper,json=optionalBytesWrapper,proto3" json:"optional_bytes_wrapper,omitempty"`
-	RepeatedBoolWrapper   []*wrapperspb.BoolValue   `protobuf:"bytes,211,rep,name=repeated_bool_wrapper,json=repeatedBoolWrapper,proto3" json:"repeated_bool_wrapper,omitempty"`
-	RepeatedInt32Wrapper  []*wrapperspb.Int32Value  `protobuf:"bytes,212,rep,name=repeated_int32_wrapper,json=repeatedInt32Wrapper,proto3" json:"repeated_int32_wrapper,omitempty"`
-	RepeatedInt64Wrapper  []*wrapperspb.Int64Value  `protobuf:"bytes,213,rep,name=repeated_int64_wrapper,json=repeatedInt64Wrapper,proto3" json:"repeated_int64_wrapper,omitempty"`
-	RepeatedUint32Wrapper []*wrapperspb.UInt32Value `protobuf:"bytes,214,rep,name=repeated_uint32_wrapper,json=repeatedUint32Wrapper,proto3" json:"repeated_uint32_wrapper,omitempty"`
-	RepeatedUint64Wrapper []*wrapperspb.UInt64Value `protobuf:"bytes,215,rep,name=repeated_uint64_wrapper,json=repeatedUint64Wrapper,proto3" json:"repeated_uint64_wrapper,omitempty"`
-	RepeatedFloatWrapper  []*wrapperspb.FloatValue  `protobuf:"bytes,216,rep,name=repeated_float_wrapper,json=repeatedFloatWrapper,proto3" json:"repeated_float_wrapper,omitempty"`
-	RepeatedDoubleWrapper []*wrapperspb.DoubleValue `protobuf:"bytes,217,rep,name=repeated_double_wrapper,json=repeatedDoubleWrapper,proto3" json:"repeated_double_wrapper,omitempty"`
-	RepeatedStringWrapper []*wrapperspb.StringValue `protobuf:"bytes,218,rep,name=repeated_string_wrapper,json=repeatedStringWrapper,proto3" json:"repeated_string_wrapper,omitempty"`
-	RepeatedBytesWrapper  []*wrapperspb.BytesValue  `protobuf:"bytes,219,rep,name=repeated_bytes_wrapper,json=repeatedBytesWrapper,proto3" json:"repeated_bytes_wrapper,omitempty"`
-	OptionalDuration      *durationpb.Duration      `protobuf:"bytes,301,opt,name=optional_duration,json=optionalDuration,proto3" json:"optional_duration,omitempty"`
-	OptionalTimestamp     *timestamppb.Timestamp    `protobuf:"bytes,302,opt,name=optional_timestamp,json=optionalTimestamp,proto3" json:"optional_timestamp,omitempty"`
-	OptionalFieldMask     *fieldmaskpb.FieldMask    `protobuf:"bytes,303,opt,name=optional_field_mask,json=optionalFieldMask,proto3" json:"optional_field_mask,omitempty"`
-	OptionalStruct        *structpb.Struct          `protobuf:"bytes,304,opt,name=optional_struct,json=optionalStruct,proto3" json:"optional_struct,omitempty"`
-	OptionalAny           *anypb.Any                `protobuf:"bytes,305,opt,name=optional_any,json=optionalAny,proto3" json:"optional_any,omitempty"`
-	OptionalValue         *structpb.Value           `protobuf:"bytes,306,opt,name=optional_value,json=optionalValue,proto3" json:"optional_value,omitempty"`
-	OptionalNullValue     structpb.NullValue        `protobuf:"varint,307,opt,name=optional_null_value,json=optionalNullValue,proto3,enum=google.protobuf.NullValue" json:"optional_null_value,omitempty"`
-	RepeatedDuration      []*durationpb.Duration    `protobuf:"bytes,311,rep,name=repeated_duration,json=repeatedDuration,proto3" json:"repeated_duration,omitempty"`
-	RepeatedTimestamp     []*timestamppb.Timestamp  `protobuf:"bytes,312,rep,name=repeated_timestamp,json=repeatedTimestamp,proto3" json:"repeated_timestamp,omitempty"`
-	RepeatedFieldmask     []*fieldmaskpb.FieldMask  `protobuf:"bytes,313,rep,name=repeated_fieldmask,json=repeatedFieldmask,proto3" json:"repeated_fieldmask,omitempty"`
-	RepeatedStruct        []*structpb.Struct        `protobuf:"bytes,324,rep,name=repeated_struct,json=repeatedStruct,proto3" json:"repeated_struct,omitempty"`
-	RepeatedAny           []*anypb.Any              `protobuf:"bytes,315,rep,name=repeated_any,json=repeatedAny,proto3" json:"repeated_any,omitempty"`
-	RepeatedValue         []*structpb.Value         `protobuf:"bytes,316,rep,name=repeated_value,json=repeatedValue,proto3" json:"repeated_value,omitempty"`
-	RepeatedListValue     []*structpb.ListValue     `protobuf:"bytes,317,rep,name=repeated_list_value,json=repeatedListValue,proto3" json:"repeated_list_value,omitempty"`
-	// Test field-name-to-JSON-name convention.
-	// (protobuf says names can be any valid C/C++ identifier.)
-	Fieldname1    int32 `protobuf:"varint,401,opt,name=fieldname1,proto3" json:"fieldname1,omitempty"`
-	FieldName2    int32 `protobuf:"varint,402,opt,name=field_name2,json=fieldName2,proto3" json:"field_name2,omitempty"`
-	XFieldName3   int32 `protobuf:"varint,403,opt,name=_field_name3,json=FieldName3,proto3" json:"_field_name3,omitempty"`
-	Field_Name4_  int32 `protobuf:"varint,404,opt,name=field__name4_,json=fieldName4,proto3" json:"field__name4_,omitempty"`
-	Field0Name5   int32 `protobuf:"varint,405,opt,name=field0name5,proto3" json:"field0name5,omitempty"`
-	Field_0Name6  int32 `protobuf:"varint,406,opt,name=field_0_name6,json=field0Name6,proto3" json:"field_0_name6,omitempty"`
-	FieldName7    int32 `protobuf:"varint,407,opt,name=fieldName7,proto3" json:"fieldName7,omitempty"`
-	FieldName8    int32 `protobuf:"varint,408,opt,name=FieldName8,proto3" json:"FieldName8,omitempty"`
-	Field_Name9   int32 `protobuf:"varint,409,opt,name=field_Name9,json=fieldName9,proto3" json:"field_Name9,omitempty"`
-	Field_Name10  int32 `protobuf:"varint,410,opt,name=Field_Name10,json=FieldName10,proto3" json:"Field_Name10,omitempty"`
-	FIELD_NAME11  int32 `protobuf:"varint,411,opt,name=FIELD_NAME11,json=FIELDNAME11,proto3" json:"FIELD_NAME11,omitempty"`
-	FIELDName12   int32 `protobuf:"varint,412,opt,name=FIELD_name12,json=FIELDName12,proto3" json:"FIELD_name12,omitempty"`
-	XFieldName13  int32 `protobuf:"varint,413,opt,name=__field_name13,json=FieldName13,proto3" json:"__field_name13,omitempty"`
-	X_FieldName14 int32 `protobuf:"varint,414,opt,name=__Field_name14,json=FieldName14,proto3" json:"__Field_name14,omitempty"`
-	Field_Name15  int32 `protobuf:"varint,415,opt,name=field__name15,json=fieldName15,proto3" json:"field__name15,omitempty"`
-	Field__Name16 int32 `protobuf:"varint,416,opt,name=field__Name16,json=fieldName16,proto3" json:"field__Name16,omitempty"`
-	FieldName17__ int32 `protobuf:"varint,417,opt,name=field_name17__,json=fieldName17,proto3" json:"field_name17__,omitempty"`
-	FieldName18__ int32 `protobuf:"varint,418,opt,name=Field_name18__,json=FieldName18,proto3" json:"Field_name18__,omitempty"`
-}
-
-func (x *TestAllTypesProto3) Reset() {
-	*x = TestAllTypesProto3{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_test_messages_proto3_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestAllTypesProto3) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestAllTypesProto3) ProtoMessage() {}
-
-func (x *TestAllTypesProto3) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto3_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestAllTypesProto3.ProtoReflect.Descriptor instead.
-func (*TestAllTypesProto3) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_test_messages_proto3_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *TestAllTypesProto3) GetOptionalInt32() int32 {
-	if x != nil {
-		return x.OptionalInt32
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetOptionalInt64() int64 {
-	if x != nil {
-		return x.OptionalInt64
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetOptionalUint32() uint32 {
-	if x != nil {
-		return x.OptionalUint32
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetOptionalUint64() uint64 {
-	if x != nil {
-		return x.OptionalUint64
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetOptionalSint32() int32 {
-	if x != nil {
-		return x.OptionalSint32
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetOptionalSint64() int64 {
-	if x != nil {
-		return x.OptionalSint64
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetOptionalFixed32() uint32 {
-	if x != nil {
-		return x.OptionalFixed32
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetOptionalFixed64() uint64 {
-	if x != nil {
-		return x.OptionalFixed64
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetOptionalSfixed32() int32 {
-	if x != nil {
-		return x.OptionalSfixed32
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetOptionalSfixed64() int64 {
-	if x != nil {
-		return x.OptionalSfixed64
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetOptionalFloat() float32 {
-	if x != nil {
-		return x.OptionalFloat
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetOptionalDouble() float64 {
-	if x != nil {
-		return x.OptionalDouble
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetOptionalBool() bool {
-	if x != nil {
-		return x.OptionalBool
-	}
-	return false
-}
-
-func (x *TestAllTypesProto3) GetOptionalString() string {
-	if x != nil {
-		return x.OptionalString
-	}
-	return ""
-}
-
-func (x *TestAllTypesProto3) GetOptionalBytes() []byte {
-	if x != nil {
-		return x.OptionalBytes
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetOptionalNestedMessage() *TestAllTypesProto3_NestedMessage {
-	if x != nil {
-		return x.OptionalNestedMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetOptionalForeignMessage() *ForeignMessage {
-	if x != nil {
-		return x.OptionalForeignMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetOptionalNestedEnum() TestAllTypesProto3_NestedEnum {
-	if x != nil {
-		return x.OptionalNestedEnum
-	}
-	return TestAllTypesProto3_FOO
-}
-
-func (x *TestAllTypesProto3) GetOptionalForeignEnum() ForeignEnum {
-	if x != nil {
-		return x.OptionalForeignEnum
-	}
-	return ForeignEnum_FOREIGN_FOO
-}
-
-func (x *TestAllTypesProto3) GetOptionalAliasedEnum() TestAllTypesProto3_AliasedEnum {
-	if x != nil {
-		return x.OptionalAliasedEnum
-	}
-	return TestAllTypesProto3_ALIAS_FOO
-}
-
-func (x *TestAllTypesProto3) GetOptionalStringPiece() string {
-	if x != nil {
-		return x.OptionalStringPiece
-	}
-	return ""
-}
-
-func (x *TestAllTypesProto3) GetOptionalCord() string {
-	if x != nil {
-		return x.OptionalCord
-	}
-	return ""
-}
-
-func (x *TestAllTypesProto3) GetRecursiveMessage() *TestAllTypesProto3 {
-	if x != nil {
-		return x.RecursiveMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedInt32() []int32 {
-	if x != nil {
-		return x.RepeatedInt32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedInt64() []int64 {
-	if x != nil {
-		return x.RepeatedInt64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedUint32() []uint32 {
-	if x != nil {
-		return x.RepeatedUint32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedUint64() []uint64 {
-	if x != nil {
-		return x.RepeatedUint64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedSint32() []int32 {
-	if x != nil {
-		return x.RepeatedSint32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedSint64() []int64 {
-	if x != nil {
-		return x.RepeatedSint64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedFixed32() []uint32 {
-	if x != nil {
-		return x.RepeatedFixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedFixed64() []uint64 {
-	if x != nil {
-		return x.RepeatedFixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedSfixed32() []int32 {
-	if x != nil {
-		return x.RepeatedSfixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedSfixed64() []int64 {
-	if x != nil {
-		return x.RepeatedSfixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedFloat() []float32 {
-	if x != nil {
-		return x.RepeatedFloat
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedDouble() []float64 {
-	if x != nil {
-		return x.RepeatedDouble
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedBool() []bool {
-	if x != nil {
-		return x.RepeatedBool
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedString() []string {
-	if x != nil {
-		return x.RepeatedString
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedBytes() [][]byte {
-	if x != nil {
-		return x.RepeatedBytes
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedNestedMessage() []*TestAllTypesProto3_NestedMessage {
-	if x != nil {
-		return x.RepeatedNestedMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedForeignMessage() []*ForeignMessage {
-	if x != nil {
-		return x.RepeatedForeignMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedNestedEnum() []TestAllTypesProto3_NestedEnum {
-	if x != nil {
-		return x.RepeatedNestedEnum
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedForeignEnum() []ForeignEnum {
-	if x != nil {
-		return x.RepeatedForeignEnum
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedStringPiece() []string {
-	if x != nil {
-		return x.RepeatedStringPiece
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedCord() []string {
-	if x != nil {
-		return x.RepeatedCord
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetPackedInt32() []int32 {
-	if x != nil {
-		return x.PackedInt32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetPackedInt64() []int64 {
-	if x != nil {
-		return x.PackedInt64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetPackedUint32() []uint32 {
-	if x != nil {
-		return x.PackedUint32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetPackedUint64() []uint64 {
-	if x != nil {
-		return x.PackedUint64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetPackedSint32() []int32 {
-	if x != nil {
-		return x.PackedSint32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetPackedSint64() []int64 {
-	if x != nil {
-		return x.PackedSint64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetPackedFixed32() []uint32 {
-	if x != nil {
-		return x.PackedFixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetPackedFixed64() []uint64 {
-	if x != nil {
-		return x.PackedFixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetPackedSfixed32() []int32 {
-	if x != nil {
-		return x.PackedSfixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetPackedSfixed64() []int64 {
-	if x != nil {
-		return x.PackedSfixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetPackedFloat() []float32 {
-	if x != nil {
-		return x.PackedFloat
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetPackedDouble() []float64 {
-	if x != nil {
-		return x.PackedDouble
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetPackedBool() []bool {
-	if x != nil {
-		return x.PackedBool
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetPackedNestedEnum() []TestAllTypesProto3_NestedEnum {
-	if x != nil {
-		return x.PackedNestedEnum
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetUnpackedInt32() []int32 {
-	if x != nil {
-		return x.UnpackedInt32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetUnpackedInt64() []int64 {
-	if x != nil {
-		return x.UnpackedInt64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetUnpackedUint32() []uint32 {
-	if x != nil {
-		return x.UnpackedUint32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetUnpackedUint64() []uint64 {
-	if x != nil {
-		return x.UnpackedUint64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetUnpackedSint32() []int32 {
-	if x != nil {
-		return x.UnpackedSint32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetUnpackedSint64() []int64 {
-	if x != nil {
-		return x.UnpackedSint64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetUnpackedFixed32() []uint32 {
-	if x != nil {
-		return x.UnpackedFixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetUnpackedFixed64() []uint64 {
-	if x != nil {
-		return x.UnpackedFixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetUnpackedSfixed32() []int32 {
-	if x != nil {
-		return x.UnpackedSfixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetUnpackedSfixed64() []int64 {
-	if x != nil {
-		return x.UnpackedSfixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetUnpackedFloat() []float32 {
-	if x != nil {
-		return x.UnpackedFloat
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetUnpackedDouble() []float64 {
-	if x != nil {
-		return x.UnpackedDouble
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetUnpackedBool() []bool {
-	if x != nil {
-		return x.UnpackedBool
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetUnpackedNestedEnum() []TestAllTypesProto3_NestedEnum {
-	if x != nil {
-		return x.UnpackedNestedEnum
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetMapInt32Int32() map[int32]int32 {
-	if x != nil {
-		return x.MapInt32Int32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetMapInt64Int64() map[int64]int64 {
-	if x != nil {
-		return x.MapInt64Int64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetMapUint32Uint32() map[uint32]uint32 {
-	if x != nil {
-		return x.MapUint32Uint32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetMapUint64Uint64() map[uint64]uint64 {
-	if x != nil {
-		return x.MapUint64Uint64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetMapSint32Sint32() map[int32]int32 {
-	if x != nil {
-		return x.MapSint32Sint32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetMapSint64Sint64() map[int64]int64 {
-	if x != nil {
-		return x.MapSint64Sint64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetMapFixed32Fixed32() map[uint32]uint32 {
-	if x != nil {
-		return x.MapFixed32Fixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetMapFixed64Fixed64() map[uint64]uint64 {
-	if x != nil {
-		return x.MapFixed64Fixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetMapSfixed32Sfixed32() map[int32]int32 {
-	if x != nil {
-		return x.MapSfixed32Sfixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetMapSfixed64Sfixed64() map[int64]int64 {
-	if x != nil {
-		return x.MapSfixed64Sfixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetMapInt32Float() map[int32]float32 {
-	if x != nil {
-		return x.MapInt32Float
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetMapInt32Double() map[int32]float64 {
-	if x != nil {
-		return x.MapInt32Double
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetMapBoolBool() map[bool]bool {
-	if x != nil {
-		return x.MapBoolBool
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetMapStringString() map[string]string {
-	if x != nil {
-		return x.MapStringString
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetMapStringBytes() map[string][]byte {
-	if x != nil {
-		return x.MapStringBytes
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetMapStringNestedMessage() map[string]*TestAllTypesProto3_NestedMessage {
-	if x != nil {
-		return x.MapStringNestedMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetMapStringForeignMessage() map[string]*ForeignMessage {
-	if x != nil {
-		return x.MapStringForeignMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetMapStringNestedEnum() map[string]TestAllTypesProto3_NestedEnum {
-	if x != nil {
-		return x.MapStringNestedEnum
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetMapStringForeignEnum() map[string]ForeignEnum {
-	if x != nil {
-		return x.MapStringForeignEnum
-	}
-	return nil
-}
-
-func (m *TestAllTypesProto3) GetOneofField() isTestAllTypesProto3_OneofField {
-	if m != nil {
-		return m.OneofField
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetOneofUint32() uint32 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofUint32); ok {
-		return x.OneofUint32
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetOneofNestedMessage() *TestAllTypesProto3_NestedMessage {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofNestedMessage); ok {
-		return x.OneofNestedMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetOneofString() string {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofString); ok {
-		return x.OneofString
-	}
-	return ""
-}
-
-func (x *TestAllTypesProto3) GetOneofBytes() []byte {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofBytes); ok {
-		return x.OneofBytes
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetOneofBool() bool {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofBool); ok {
-		return x.OneofBool
-	}
-	return false
-}
-
-func (x *TestAllTypesProto3) GetOneofUint64() uint64 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofUint64); ok {
-		return x.OneofUint64
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetOneofFloat() float32 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofFloat); ok {
-		return x.OneofFloat
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetOneofDouble() float64 {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofDouble); ok {
-		return x.OneofDouble
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetOneofEnum() TestAllTypesProto3_NestedEnum {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofEnum); ok {
-		return x.OneofEnum
-	}
-	return TestAllTypesProto3_FOO
-}
-
-func (x *TestAllTypesProto3) GetOneofNullValue() structpb.NullValue {
-	if x, ok := x.GetOneofField().(*TestAllTypesProto3_OneofNullValue); ok {
-		return x.OneofNullValue
-	}
-	return structpb.NullValue(0)
-}
-
-func (x *TestAllTypesProto3) GetOptionalBoolWrapper() *wrapperspb.BoolValue {
-	if x != nil {
-		return x.OptionalBoolWrapper
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetOptionalInt32Wrapper() *wrapperspb.Int32Value {
-	if x != nil {
-		return x.OptionalInt32Wrapper
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetOptionalInt64Wrapper() *wrapperspb.Int64Value {
-	if x != nil {
-		return x.OptionalInt64Wrapper
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetOptionalUint32Wrapper() *wrapperspb.UInt32Value {
-	if x != nil {
-		return x.OptionalUint32Wrapper
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetOptionalUint64Wrapper() *wrapperspb.UInt64Value {
-	if x != nil {
-		return x.OptionalUint64Wrapper
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetOptionalFloatWrapper() *wrapperspb.FloatValue {
-	if x != nil {
-		return x.OptionalFloatWrapper
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetOptionalDoubleWrapper() *wrapperspb.DoubleValue {
-	if x != nil {
-		return x.OptionalDoubleWrapper
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetOptionalStringWrapper() *wrapperspb.StringValue {
-	if x != nil {
-		return x.OptionalStringWrapper
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetOptionalBytesWrapper() *wrapperspb.BytesValue {
-	if x != nil {
-		return x.OptionalBytesWrapper
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedBoolWrapper() []*wrapperspb.BoolValue {
-	if x != nil {
-		return x.RepeatedBoolWrapper
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedInt32Wrapper() []*wrapperspb.Int32Value {
-	if x != nil {
-		return x.RepeatedInt32Wrapper
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedInt64Wrapper() []*wrapperspb.Int64Value {
-	if x != nil {
-		return x.RepeatedInt64Wrapper
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedUint32Wrapper() []*wrapperspb.UInt32Value {
-	if x != nil {
-		return x.RepeatedUint32Wrapper
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedUint64Wrapper() []*wrapperspb.UInt64Value {
-	if x != nil {
-		return x.RepeatedUint64Wrapper
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedFloatWrapper() []*wrapperspb.FloatValue {
-	if x != nil {
-		return x.RepeatedFloatWrapper
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedDoubleWrapper() []*wrapperspb.DoubleValue {
-	if x != nil {
-		return x.RepeatedDoubleWrapper
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedStringWrapper() []*wrapperspb.StringValue {
-	if x != nil {
-		return x.RepeatedStringWrapper
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedBytesWrapper() []*wrapperspb.BytesValue {
-	if x != nil {
-		return x.RepeatedBytesWrapper
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetOptionalDuration() *durationpb.Duration {
-	if x != nil {
-		return x.OptionalDuration
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetOptionalTimestamp() *timestamppb.Timestamp {
-	if x != nil {
-		return x.OptionalTimestamp
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetOptionalFieldMask() *fieldmaskpb.FieldMask {
-	if x != nil {
-		return x.OptionalFieldMask
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetOptionalStruct() *structpb.Struct {
-	if x != nil {
-		return x.OptionalStruct
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetOptionalAny() *anypb.Any {
-	if x != nil {
-		return x.OptionalAny
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetOptionalValue() *structpb.Value {
-	if x != nil {
-		return x.OptionalValue
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetOptionalNullValue() structpb.NullValue {
-	if x != nil {
-		return x.OptionalNullValue
-	}
-	return structpb.NullValue(0)
-}
-
-func (x *TestAllTypesProto3) GetRepeatedDuration() []*durationpb.Duration {
-	if x != nil {
-		return x.RepeatedDuration
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedTimestamp() []*timestamppb.Timestamp {
-	if x != nil {
-		return x.RepeatedTimestamp
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedFieldmask() []*fieldmaskpb.FieldMask {
-	if x != nil {
-		return x.RepeatedFieldmask
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedStruct() []*structpb.Struct {
-	if x != nil {
-		return x.RepeatedStruct
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedAny() []*anypb.Any {
-	if x != nil {
-		return x.RepeatedAny
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedValue() []*structpb.Value {
-	if x != nil {
-		return x.RepeatedValue
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetRepeatedListValue() []*structpb.ListValue {
-	if x != nil {
-		return x.RepeatedListValue
-	}
-	return nil
-}
-
-func (x *TestAllTypesProto3) GetFieldname1() int32 {
-	if x != nil {
-		return x.Fieldname1
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetFieldName2() int32 {
-	if x != nil {
-		return x.FieldName2
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetXFieldName3() int32 {
-	if x != nil {
-		return x.XFieldName3
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetField_Name4_() int32 {
-	if x != nil {
-		return x.Field_Name4_
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetField0Name5() int32 {
-	if x != nil {
-		return x.Field0Name5
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetField_0Name6() int32 {
-	if x != nil {
-		return x.Field_0Name6
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetFieldName7() int32 {
-	if x != nil {
-		return x.FieldName7
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetFieldName8() int32 {
-	if x != nil {
-		return x.FieldName8
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetField_Name9() int32 {
-	if x != nil {
-		return x.Field_Name9
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetField_Name10() int32 {
-	if x != nil {
-		return x.Field_Name10
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetFIELD_NAME11() int32 {
-	if x != nil {
-		return x.FIELD_NAME11
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetFIELDName12() int32 {
-	if x != nil {
-		return x.FIELDName12
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetXFieldName13() int32 {
-	if x != nil {
-		return x.XFieldName13
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetX_FieldName14() int32 {
-	if x != nil {
-		return x.X_FieldName14
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetField_Name15() int32 {
-	if x != nil {
-		return x.Field_Name15
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetField__Name16() int32 {
-	if x != nil {
-		return x.Field__Name16
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetFieldName17__() int32 {
-	if x != nil {
-		return x.FieldName17__
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3) GetFieldName18__() int32 {
-	if x != nil {
-		return x.FieldName18__
-	}
-	return 0
-}
-
-type isTestAllTypesProto3_OneofField interface {
-	isTestAllTypesProto3_OneofField()
-}
-
-type TestAllTypesProto3_OneofUint32 struct {
-	OneofUint32 uint32 `protobuf:"varint,111,opt,name=oneof_uint32,json=oneofUint32,proto3,oneof"`
-}
-
-type TestAllTypesProto3_OneofNestedMessage struct {
-	OneofNestedMessage *TestAllTypesProto3_NestedMessage `protobuf:"bytes,112,opt,name=oneof_nested_message,json=oneofNestedMessage,proto3,oneof"`
-}
-
-type TestAllTypesProto3_OneofString struct {
-	OneofString string `protobuf:"bytes,113,opt,name=oneof_string,json=oneofString,proto3,oneof"`
-}
-
-type TestAllTypesProto3_OneofBytes struct {
-	OneofBytes []byte `protobuf:"bytes,114,opt,name=oneof_bytes,json=oneofBytes,proto3,oneof"`
-}
-
-type TestAllTypesProto3_OneofBool struct {
-	OneofBool bool `protobuf:"varint,115,opt,name=oneof_bool,json=oneofBool,proto3,oneof"`
-}
-
-type TestAllTypesProto3_OneofUint64 struct {
-	OneofUint64 uint64 `protobuf:"varint,116,opt,name=oneof_uint64,json=oneofUint64,proto3,oneof"`
-}
-
-type TestAllTypesProto3_OneofFloat struct {
-	OneofFloat float32 `protobuf:"fixed32,117,opt,name=oneof_float,json=oneofFloat,proto3,oneof"`
-}
-
-type TestAllTypesProto3_OneofDouble struct {
-	OneofDouble float64 `protobuf:"fixed64,118,opt,name=oneof_double,json=oneofDouble,proto3,oneof"`
-}
-
-type TestAllTypesProto3_OneofEnum struct {
-	OneofEnum TestAllTypesProto3_NestedEnum `protobuf:"varint,119,opt,name=oneof_enum,json=oneofEnum,proto3,enum=protobuf_test_messages.proto3.TestAllTypesProto3_NestedEnum,oneof"`
-}
-
-type TestAllTypesProto3_OneofNullValue struct {
-	OneofNullValue structpb.NullValue `protobuf:"varint,120,opt,name=oneof_null_value,json=oneofNullValue,proto3,enum=google.protobuf.NullValue,oneof"`
-}
-
-func (*TestAllTypesProto3_OneofUint32) isTestAllTypesProto3_OneofField() {}
-
-func (*TestAllTypesProto3_OneofNestedMessage) isTestAllTypesProto3_OneofField() {}
-
-func (*TestAllTypesProto3_OneofString) isTestAllTypesProto3_OneofField() {}
-
-func (*TestAllTypesProto3_OneofBytes) isTestAllTypesProto3_OneofField() {}
-
-func (*TestAllTypesProto3_OneofBool) isTestAllTypesProto3_OneofField() {}
-
-func (*TestAllTypesProto3_OneofUint64) isTestAllTypesProto3_OneofField() {}
-
-func (*TestAllTypesProto3_OneofFloat) isTestAllTypesProto3_OneofField() {}
-
-func (*TestAllTypesProto3_OneofDouble) isTestAllTypesProto3_OneofField() {}
-
-func (*TestAllTypesProto3_OneofEnum) isTestAllTypesProto3_OneofField() {}
-
-func (*TestAllTypesProto3_OneofNullValue) isTestAllTypesProto3_OneofField() {}
-
-type ForeignMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	C int32 `protobuf:"varint,1,opt,name=c,proto3" json:"c,omitempty"`
-}
-
-func (x *ForeignMessage) Reset() {
-	*x = ForeignMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_test_messages_proto3_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ForeignMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ForeignMessage) ProtoMessage() {}
-
-func (x *ForeignMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto3_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ForeignMessage.ProtoReflect.Descriptor instead.
-func (*ForeignMessage) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_test_messages_proto3_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *ForeignMessage) GetC() int32 {
-	if x != nil {
-		return x.C
-	}
-	return 0
-}
-
-type TestAllTypesProto3_NestedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	A           int32               `protobuf:"varint,1,opt,name=a,proto3" json:"a,omitempty"`
-	Corecursive *TestAllTypesProto3 `protobuf:"bytes,2,opt,name=corecursive,proto3" json:"corecursive,omitempty"`
-}
-
-func (x *TestAllTypesProto3_NestedMessage) Reset() {
-	*x = TestAllTypesProto3_NestedMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_test_messages_proto3_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestAllTypesProto3_NestedMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestAllTypesProto3_NestedMessage) ProtoMessage() {}
-
-func (x *TestAllTypesProto3_NestedMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_test_messages_proto3_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestAllTypesProto3_NestedMessage.ProtoReflect.Descriptor instead.
-func (*TestAllTypesProto3_NestedMessage) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_test_messages_proto3_proto_rawDescGZIP(), []int{0, 0}
-}
-
-func (x *TestAllTypesProto3_NestedMessage) GetA() int32 {
-	if x != nil {
-		return x.A
-	}
-	return 0
-}
-
-func (x *TestAllTypesProto3_NestedMessage) GetCorecursive() *TestAllTypesProto3 {
-	if x != nil {
-		return x.Corecursive
-	}
-	return nil
-}
-
-var File_google_protobuf_test_messages_proto3_proto protoreflect.FileDescriptor
-
-var file_google_protobuf_test_messages_proto3_proto_rawDesc = []byte{
-	0x0a, 0x2a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x5f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1d, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x1a, 0x19, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61,
-	0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
-	0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72,
-	0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x99, 0x5b, 0x0a, 0x12, 0x54, 0x65, 0x73, 0x74,
-	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x12, 0x25,
-	0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27,
-	0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12,
-	0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x33, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x10, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18,
-	0x08, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46,
-	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28,
-	0x0f, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
-	0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x10, 0x52, 0x10,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
-	0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f,
-	0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01,
-	0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-	0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x6f, 0x6f,
-	0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25,
-	0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73,
-	0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x77, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
-	0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x67,
-	0x0a, 0x18, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69,
-	0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-	0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x16, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x6e, 0x0a, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18,
-	0x15, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
-	0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45,
-	0x6e, 0x75, 0x6d, 0x52, 0x12, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x5e, 0x0a, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d,
-	0x18, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e,
-	0x75, 0x6d, 0x52, 0x13, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65,
-	0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x71, 0x0a, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d,
-	0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
-	0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65,
-	0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x13, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x41,
-	0x6c, 0x69, 0x61, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x36, 0x0a, 0x15, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x69,
-	0x65, 0x63, 0x65, 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x08, 0x02, 0x52, 0x13, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x65,
-	0x63, 0x65, 0x12, 0x27, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x63,
-	0x6f, 0x72, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x08, 0x01, 0x52, 0x0c, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x43, 0x6f, 0x72, 0x64, 0x12, 0x5e, 0x0a, 0x11, 0x72,
-	0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
-	0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x52, 0x10, 0x72, 0x65, 0x63, 0x75, 0x72,
-	0x73, 0x69, 0x76, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x1f, 0x20,
-	0x03, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74,
-	0x33, 0x32, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x18, 0x20, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x21, 0x20, 0x03,
-	0x28, 0x0d, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x22, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0e, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x23,
-	0x20, 0x03, 0x28, 0x11, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x24, 0x20, 0x03, 0x28, 0x12, 0x52, 0x0e, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x29, 0x0a,
-	0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
-	0x32, 0x18, 0x25, 0x20, 0x03, 0x28, 0x07, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x26, 0x20, 0x03,
-	0x28, 0x06, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65,
-	0x64, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
-	0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x27, 0x20, 0x03, 0x28, 0x0f, 0x52, 0x10,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
-	0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x28, 0x20, 0x03, 0x28, 0x10, 0x52, 0x10, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x0a,
-	0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18,
-	0x29, 0x20, 0x03, 0x28, 0x02, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46,
-	0x6c, 0x6f, 0x61, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x2a, 0x20, 0x03, 0x28, 0x01, 0x52, 0x0e, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a,
-	0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x2b,
-	0x20, 0x03, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x6f,
-	0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x2c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x2d, 0x20,
-	0x03, 0x28, 0x0c, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x74,
-	0x65, 0x73, 0x12, 0x77, 0x0a, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x30, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74,
-	0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
-	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x67, 0x0a, 0x18, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x31, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x46, 0x6f,
-	0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x16, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x12, 0x6e, 0x0a, 0x14, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x33, 0x20, 0x03,
-	0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65,
-	0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50,
-	0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d,
-	0x52, 0x12, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x45, 0x6e, 0x75, 0x6d, 0x12, 0x5e, 0x0a, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x34, 0x20,
-	0x03, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74,
-	0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x33, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x52,
-	0x13, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
-	0x45, 0x6e, 0x75, 0x6d, 0x12, 0x36, 0x0a, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x69, 0x65, 0x63, 0x65, 0x18, 0x36, 0x20,
-	0x03, 0x28, 0x09, 0x42, 0x02, 0x08, 0x02, 0x52, 0x13, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x69, 0x65, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x0d,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x37, 0x20,
-	0x03, 0x28, 0x09, 0x42, 0x02, 0x08, 0x01, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x43, 0x6f, 0x72, 0x64, 0x12, 0x25, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x4b, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52,
-	0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x0a, 0x0c,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x4c, 0x20, 0x03,
-	0x28, 0x03, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e,
-	0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x18, 0x4d, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0d,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x4e, 0x20,
-	0x03, 0x28, 0x04, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
-	0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x4f, 0x20, 0x03, 0x28, 0x11, 0x42, 0x02, 0x10, 0x01,
-	0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27,
-	0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18,
-	0x50, 0x20, 0x03, 0x28, 0x12, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x51, 0x20, 0x03, 0x28, 0x07, 0x42,
-	0x02, 0x10, 0x01, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x12, 0x29, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x18, 0x52, 0x20, 0x03, 0x28, 0x06, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0d,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2b, 0x0a,
-	0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
-	0x18, 0x53, 0x20, 0x03, 0x28, 0x0f, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x0f, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x54, 0x20,
-	0x03, 0x28, 0x10, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x55, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10,
-	0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x27,
-	0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18,
-	0x56, 0x20, 0x03, 0x28, 0x01, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x57, 0x20, 0x03, 0x28, 0x08, 0x42, 0x02, 0x10, 0x01,
-	0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x6e, 0x0a, 0x12,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e,
-	0x75, 0x6d, 0x18, 0x58, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
-	0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x10, 0x01, 0x52, 0x10, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x29, 0x0a, 0x0e,
-	0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x59,
-	0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63,
-	0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5a, 0x20, 0x03, 0x28, 0x03, 0x42,
-	0x02, 0x10, 0x00, 0x52, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74,
-	0x36, 0x34, 0x12, 0x2b, 0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x5b, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x02, 0x10, 0x00, 0x52,
-	0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12,
-	0x2b, 0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x18, 0x5c, 0x20, 0x03, 0x28, 0x04, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x0f,
-	0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
-	0x5d, 0x20, 0x03, 0x28, 0x11, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63,
-	0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x0f, 0x75, 0x6e, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5e, 0x20, 0x03,
-	0x28, 0x12, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2d, 0x0a, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x5f, 0x20, 0x03, 0x28, 0x07,
-	0x42, 0x02, 0x10, 0x00, 0x52, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69,
-	0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2d, 0x0a, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x60, 0x20, 0x03, 0x28, 0x06, 0x42,
-	0x02, 0x10, 0x00, 0x52, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x12, 0x2f, 0x0a, 0x11, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x61, 0x20, 0x03, 0x28, 0x0f, 0x42,
-	0x02, 0x10, 0x00, 0x52, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2f, 0x0a, 0x11, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x62, 0x20, 0x03, 0x28, 0x10,
-	0x42, 0x02, 0x10, 0x00, 0x52, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x63, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02,
-	0x10, 0x00, 0x52, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61,
-	0x74, 0x12, 0x2b, 0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x6f,
-	0x75, 0x62, 0x6c, 0x65, 0x18, 0x64, 0x20, 0x03, 0x28, 0x01, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e,
-	0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x27,
-	0x0a, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18,
-	0x65, 0x20, 0x03, 0x28, 0x08, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0c, 0x75, 0x6e, 0x70, 0x61, 0x63,
-	0x6b, 0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x72, 0x0a, 0x14, 0x75, 0x6e, 0x70, 0x61, 0x63,
-	0x6b, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18,
-	0x66, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
-	0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45,
-	0x6e, 0x75, 0x6d, 0x42, 0x02, 0x10, 0x00, 0x52, 0x12, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x6c, 0x0a, 0x0f, 0x6d,
-	0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x38,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f,
-	0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
-	0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32,
-	0x49, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49,
-	0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x6c, 0x0a, 0x0f, 0x6d, 0x61, 0x70,
-	0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x39, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x44, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65,
-	0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50,
-	0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e,
-	0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74,
-	0x36, 0x34, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x72, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x75,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x3a, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x46, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65,
-	0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50,
-	0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x55,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x72, 0x0a, 0x11, 0x6d,
-	0x61, 0x70, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x18, 0x3b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
-	0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f,
-	0x6d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
-	0x72, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x73, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x18, 0x3c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
-	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4d, 0x61,
-	0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74,
-	0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x12, 0x72, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36,
-	0x34, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x3d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x54,
-	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f,
-	0x33, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74, 0x36,
-	0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x36,
-	0x34, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x78, 0x0a, 0x13, 0x6d, 0x61, 0x70, 0x5f, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x3e,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x48, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f,
-	0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
-	0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11,
-	0x6d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33,
-	0x32, 0x12, 0x78, 0x0a, 0x13, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
-	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x3f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x48,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x54,
-	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f,
-	0x33, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x46, 0x69, 0x78, 0x65,
-	0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x7e, 0x0a, 0x15, 0x6d,
-	0x61, 0x70, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x5f, 0x73, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x33, 0x32, 0x18, 0x40, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
-	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4d, 0x61,
-	0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
-	0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x6d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x33, 0x32, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x7e, 0x0a, 0x15, 0x6d,
-	0x61, 0x70, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x5f, 0x73, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x18, 0x41, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
-	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4d, 0x61,
-	0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
-	0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x6d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x36, 0x34, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x6c, 0x0a, 0x0f, 0x6d,
-	0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x42,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x44, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f,
-	0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
-	0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32,
-	0x46, 0x6c, 0x6f, 0x61, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49,
-	0x6e, 0x74, 0x33, 0x32, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x6f, 0x0a, 0x10, 0x6d, 0x61, 0x70,
-	0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x43, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74,
-	0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
-	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x44,
-	0x6f, 0x75, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6d, 0x61, 0x70, 0x49,
-	0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x66, 0x0a, 0x0d, 0x6d, 0x61,
-	0x70, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x44, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x42, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73,
-	0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72,
-	0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4d, 0x61, 0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42, 0x6f, 0x6f, 0x6c,
-	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x6d, 0x61, 0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42, 0x6f,
-	0x6f, 0x6c, 0x12, 0x72, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x45, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65,
-	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-	0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x6f, 0x0a, 0x10, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x46, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x45, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f,
-	0x74, 0x6f, 0x33, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74,
-	0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x88, 0x01, 0x0a, 0x19, 0x6d, 0x61, 0x70, 0x5f,
-	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x47, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4d, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74,
-	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4d,
-	0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x6d, 0x61, 0x70, 0x53,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x12, 0x8b, 0x01, 0x0a, 0x1a, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x18, 0x48, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
-	0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x17, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x12, 0x7f, 0x0a, 0x16, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x49, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x4a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f,
-	0x74, 0x6f, 0x33, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x6d, 0x61,
-	0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75,
-	0x6d, 0x12, 0x82, 0x01, 0x0a, 0x17, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x4a, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74,
-	0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
-	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79,
-	0x52, 0x14, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x6f, 0x72, 0x65, 0x69,
-	0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f,
-	0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0b,
-	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x73, 0x0a, 0x14, 0x6f,
-	0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x18, 0x70, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
-	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4e, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x12, 0x6f, 0x6e,
-	0x65, 0x6f, 0x66, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x18, 0x71, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x53,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x62,
-	0x79, 0x74, 0x65, 0x73, 0x18, 0x72, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e,
-	0x65, 0x6f, 0x66, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f,
-	0x66, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x73, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09,
-	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65,
-	0x6f, 0x66, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x74, 0x20, 0x01, 0x28, 0x04, 0x48,
-	0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x21,
-	0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x75, 0x20,
-	0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x46, 0x6c, 0x6f, 0x61,
-	0x74, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-	0x65, 0x18, 0x76, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
-	0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x5d, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f,
-	0x65, 0x6e, 0x75, 0x6d, 0x18, 0x77, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
-	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f,
-	0x66, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x46, 0x0a, 0x10, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6e,
-	0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x78, 0x20, 0x01, 0x28, 0x0e, 0x32,
-	0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x0e, 0x6f,
-	0x6e, 0x65, 0x6f, 0x66, 0x4e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4f, 0x0a,
-	0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x77,
-	0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x18, 0xc9, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x12, 0x52,
-	0x0a, 0x16, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x18, 0xca, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x57, 0x72, 0x61, 0x70, 0x70,
-	0x65, 0x72, 0x12, 0x52, 0x0a, 0x16, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x18, 0xcb, 0x01, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65,
-	0x52, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x57,
-	0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x12, 0x55, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65,
-	0x72, 0x18, 0xcc, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33,
-	0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x12, 0x55, 0x0a,
-	0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x18, 0xcd, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x57, 0x72, 0x61,
-	0x70, 0x70, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x16, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x18, 0xce,
-	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c,
-	0x75, 0x65, 0x52, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x61,
-	0x74, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x12, 0x55, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x77, 0x72, 0x61, 0x70,
-	0x70, 0x65, 0x72, 0x18, 0xcf, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75,
-	0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x12,
-	0x55, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x18, 0xd0, 0x01, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
-	0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x57,
-	0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x16, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72,
-	0x18, 0xd1, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x56,
-	0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x79,
-	0x74, 0x65, 0x73, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x15, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x77, 0x72, 0x61, 0x70,
-	0x70, 0x65, 0x72, 0x18, 0xd3, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f,
-	0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x13, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x42, 0x6f, 0x6f, 0x6c, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x16, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x77, 0x72,
-	0x61, 0x70, 0x70, 0x65, 0x72, 0x18, 0xd4, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49,
-	0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x72, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x12,
-	0x52, 0x0a, 0x16, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36,
-	0x34, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x18, 0xd5, 0x01, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x57, 0x72, 0x61, 0x70,
-	0x70, 0x65, 0x72, 0x12, 0x55, 0x0a, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
-	0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x18, 0xd6,
-	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61,
-	0x6c, 0x75, 0x65, 0x52, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x12, 0x55, 0x0a, 0x17, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x77, 0x72,
-	0x61, 0x70, 0x70, 0x65, 0x72, 0x18, 0xd7, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55,
-	0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65,
-	0x72, 0x12, 0x52, 0x0a, 0x16, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6c,
-	0x6f, 0x61, 0x74, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x18, 0xd8, 0x01, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
-	0x14, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x57, 0x72,
-	0x61, 0x70, 0x70, 0x65, 0x72, 0x12, 0x55, 0x0a, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72,
-	0x18, 0xd9, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-	0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44,
-	0x6f, 0x75, 0x62, 0x6c, 0x65, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x12, 0x55, 0x0a, 0x17,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f,
-	0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x18, 0xda, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x15, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x57, 0x72, 0x61, 0x70,
-	0x70, 0x65, 0x72, 0x12, 0x52, 0x0a, 0x16, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
-	0x62, 0x79, 0x74, 0x65, 0x73, 0x5f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x18, 0xdb, 0x01,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x79, 0x74, 0x65, 0x73, 0x56, 0x61, 0x6c, 0x75,
-	0x65, 0x52, 0x14, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73,
-	0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xad, 0x02, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x12, 0x4a, 0x0a, 0x12, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x69, 0x6d,
-	0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0xae, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4b, 0x0a, 0x13,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d,
-	0x61, 0x73, 0x6b, 0x18, 0xaf, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65,
-	0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x41, 0x0a, 0x0f, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x18, 0xb0, 0x02, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0e, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x38, 0x0a, 0x0c,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x61, 0x6e, 0x79, 0x18, 0xb1, 0x02, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x41, 0x6e, 0x79, 0x12, 0x3e, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0xb2, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x4b, 0x0a, 0x13, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0xb3, 0x02,
-	0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65,
-	0x52, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x75, 0x6c, 0x6c, 0x56, 0x61,
-	0x6c, 0x75, 0x65, 0x12, 0x47, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
-	0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xb7, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x12,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
-	0x6d, 0x70, 0x18, 0xb8, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
-	0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x54,
-	0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x4a, 0x0a, 0x12, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0xb9,
-	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73,
-	0x6b, 0x52, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64,
-	0x6d, 0x61, 0x73, 0x6b, 0x12, 0x41, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x18, 0xc4, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x38, 0x0a, 0x0c, 0x72, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x5f, 0x61, 0x6e, 0x79, 0x18, 0xbb, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2e, 0x41, 0x6e, 0x79, 0x52, 0x0b, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x6e,
-	0x79, 0x12, 0x3e, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x61,
-	0x6c, 0x75, 0x65, 0x18, 0xbc, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c,
-	0x75, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x56, 0x61, 0x6c, 0x75,
-	0x65, 0x12, 0x4b, 0x0a, 0x13, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6c, 0x69,
-	0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0xbd, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f,
-	0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x31, 0x18, 0x91, 0x03, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x6e, 0x61, 0x6d, 0x65, 0x31, 0x12,
-	0x20, 0x0a, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x32, 0x18, 0x92,
-	0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65,
-	0x32, 0x12, 0x21, 0x0a, 0x0c, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
-	0x33, 0x18, 0x93, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e,
-	0x61, 0x6d, 0x65, 0x33, 0x12, 0x22, 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x5f, 0x6e,
-	0x61, 0x6d, 0x65, 0x34, 0x5f, 0x18, 0x94, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x34, 0x12, 0x21, 0x0a, 0x0b, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x30, 0x6e, 0x61, 0x6d, 0x65, 0x35, 0x18, 0x95, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x30, 0x6e, 0x61, 0x6d, 0x65, 0x35, 0x12, 0x23, 0x0a, 0x0d, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x5f, 0x30, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x36, 0x18, 0x96, 0x03, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x30, 0x4e, 0x61, 0x6d, 0x65, 0x36,
-	0x12, 0x1f, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x37, 0x18, 0x97,
-	0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65,
-	0x37, 0x12, 0x1f, 0x0a, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x38, 0x18,
-	0x98, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d,
-	0x65, 0x38, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x4e, 0x61, 0x6d, 0x65,
-	0x39, 0x18, 0x99, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e,
-	0x61, 0x6d, 0x65, 0x39, 0x12, 0x22, 0x0a, 0x0c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x4e, 0x61,
-	0x6d, 0x65, 0x31, 0x30, 0x18, 0x9a, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x46, 0x69, 0x65,
-	0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x31, 0x30, 0x12, 0x22, 0x0a, 0x0c, 0x46, 0x49, 0x45, 0x4c,
-	0x44, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x31, 0x31, 0x18, 0x9b, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0b, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x4e, 0x41, 0x4d, 0x45, 0x31, 0x31, 0x12, 0x22, 0x0a, 0x0c,
-	0x46, 0x49, 0x45, 0x4c, 0x44, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x31, 0x32, 0x18, 0x9c, 0x03, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x0b, 0x46, 0x49, 0x45, 0x4c, 0x44, 0x4e, 0x61, 0x6d, 0x65, 0x31, 0x32,
-	0x12, 0x24, 0x0a, 0x0e, 0x5f, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
-	0x31, 0x33, 0x18, 0x9d, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x46, 0x69, 0x65, 0x6c, 0x64,
-	0x4e, 0x61, 0x6d, 0x65, 0x31, 0x33, 0x12, 0x24, 0x0a, 0x0e, 0x5f, 0x5f, 0x46, 0x69, 0x65, 0x6c,
-	0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x31, 0x34, 0x18, 0x9e, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0b, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x31, 0x34, 0x12, 0x23, 0x0a, 0x0d,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x31, 0x35, 0x18, 0x9f, 0x03,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x31,
-	0x35, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x5f, 0x4e, 0x61, 0x6d, 0x65,
-	0x31, 0x36, 0x18, 0xa0, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x4e, 0x61, 0x6d, 0x65, 0x31, 0x36, 0x12, 0x24, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f,
-	0x6e, 0x61, 0x6d, 0x65, 0x31, 0x37, 0x5f, 0x5f, 0x18, 0xa1, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x31, 0x37, 0x12, 0x24, 0x0a, 0x0e,
-	0x46, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x31, 0x38, 0x5f, 0x5f, 0x18, 0xa2,
-	0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x61, 0x6d, 0x65,
-	0x31, 0x38, 0x1a, 0x72, 0x0a, 0x0d, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01,
-	0x61, 0x12, 0x53, 0x0a, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
-	0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x52, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x63,
-	0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74,
-	0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
-	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
-	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49,
-	0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
-	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79,
-	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61,
-	0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74,
-	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52,
-	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42,
-	0x0a, 0x14, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x55, 0x69, 0x6e, 0x74, 0x36,
-	0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
-	0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
-	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
-	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, 0x52, 0x03, 0x6b, 0x65, 0x79,
-	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x61,
-	0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45,
-	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x07, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x07, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
-	0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x46, 0x69,
-	0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
-	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x06, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x06, 0x52, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x33, 0x32, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74,
-	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0f, 0x52,
-	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x0f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46,
-	0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x53, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
-	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x10, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x10, 0x52, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74,
-	0x33, 0x32, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
-	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
-	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x4d, 0x61, 0x70, 0x49,
-	0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
-	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65,
-	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01,
-	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x4d,
-	0x61, 0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
-	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x6b, 0x65,
-	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d,
-	0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e,
-	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
-	0x41, 0x0a, 0x13, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65,
-	0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
-	0x38, 0x01, 0x1a, 0x8a, 0x01, 0x0a, 0x1b, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74,
-	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x03, 0x6b, 0x65, 0x79, 0x12, 0x55, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74,
-	0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
-	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
-	0x79, 0x0a, 0x1c, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x6f, 0x72, 0x65,
-	0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
-	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65,
-	0x79, 0x12, 0x43, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-	0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x84, 0x01, 0x0a, 0x18, 0x4d,
-	0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e,
-	0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x52, 0x0a, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x3c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
-	0x54, 0x79, 0x70, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e, 0x4e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
-	0x01, 0x1a, 0x73, 0x0a, 0x19, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x6f,
-	0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
-	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
-	0x12, 0x40, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
-	0x2a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73, 0x74, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x2e,
-	0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x39, 0x0a, 0x0a, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x45, 0x6e, 0x75, 0x6d, 0x12, 0x07, 0x0a, 0x03, 0x46, 0x4f, 0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a,
-	0x03, 0x42, 0x41, 0x52, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x41, 0x5a, 0x10, 0x02, 0x12,
-	0x10, 0x0a, 0x03, 0x4e, 0x45, 0x47, 0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-	0x01, 0x22, 0x59, 0x0a, 0x0b, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d,
-	0x12, 0x0d, 0x0a, 0x09, 0x41, 0x4c, 0x49, 0x41, 0x53, 0x5f, 0x46, 0x4f, 0x4f, 0x10, 0x00, 0x12,
-	0x0d, 0x0a, 0x09, 0x41, 0x4c, 0x49, 0x41, 0x53, 0x5f, 0x42, 0x41, 0x52, 0x10, 0x01, 0x12, 0x0d,
-	0x0a, 0x09, 0x41, 0x4c, 0x49, 0x41, 0x53, 0x5f, 0x42, 0x41, 0x5a, 0x10, 0x02, 0x12, 0x07, 0x0a,
-	0x03, 0x51, 0x55, 0x58, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x71, 0x75, 0x78, 0x10, 0x02, 0x12,
-	0x07, 0x0a, 0x03, 0x62, 0x41, 0x7a, 0x10, 0x02, 0x1a, 0x02, 0x10, 0x01, 0x42, 0x0d, 0x0a, 0x0b,
-	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4a, 0x06, 0x08, 0xf5, 0x03,
-	0x10, 0xff, 0x03, 0x22, 0x1e, 0x0a, 0x0e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x01, 0x63, 0x2a, 0x40, 0x0a, 0x0b, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e,
-	0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x46, 0x4f,
-	0x4f, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x42,
-	0x41, 0x52, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f,
-	0x42, 0x41, 0x5a, 0x10, 0x02, 0x42, 0x38, 0x0a, 0x28, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x5f, 0x74, 0x65, 0x73,
-	0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x33, 0x48, 0x01, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x06, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x62,
-	0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_google_protobuf_test_messages_proto3_proto_rawDescOnce sync.Once
-	file_google_protobuf_test_messages_proto3_proto_rawDescData = file_google_protobuf_test_messages_proto3_proto_rawDesc
-)
-
-func file_google_protobuf_test_messages_proto3_proto_rawDescGZIP() []byte {
-	file_google_protobuf_test_messages_proto3_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_test_messages_proto3_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_protobuf_test_messages_proto3_proto_rawDescData)
-	})
-	return file_google_protobuf_test_messages_proto3_proto_rawDescData
-}
-
-var file_google_protobuf_test_messages_proto3_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
-var file_google_protobuf_test_messages_proto3_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
-var file_google_protobuf_test_messages_proto3_proto_goTypes = []interface{}{
-	(ForeignEnum)(0),                         // 0: protobuf_test_messages.proto3.ForeignEnum
-	(TestAllTypesProto3_NestedEnum)(0),       // 1: protobuf_test_messages.proto3.TestAllTypesProto3.NestedEnum
-	(TestAllTypesProto3_AliasedEnum)(0),      // 2: protobuf_test_messages.proto3.TestAllTypesProto3.AliasedEnum
-	(*TestAllTypesProto3)(nil),               // 3: protobuf_test_messages.proto3.TestAllTypesProto3
-	(*ForeignMessage)(nil),                   // 4: protobuf_test_messages.proto3.ForeignMessage
-	(*TestAllTypesProto3_NestedMessage)(nil), // 5: protobuf_test_messages.proto3.TestAllTypesProto3.NestedMessage
-	nil,                                      // 6: protobuf_test_messages.proto3.TestAllTypesProto3.MapInt32Int32Entry
-	nil,                                      // 7: protobuf_test_messages.proto3.TestAllTypesProto3.MapInt64Int64Entry
-	nil,                                      // 8: protobuf_test_messages.proto3.TestAllTypesProto3.MapUint32Uint32Entry
-	nil,                                      // 9: protobuf_test_messages.proto3.TestAllTypesProto3.MapUint64Uint64Entry
-	nil,                                      // 10: protobuf_test_messages.proto3.TestAllTypesProto3.MapSint32Sint32Entry
-	nil,                                      // 11: protobuf_test_messages.proto3.TestAllTypesProto3.MapSint64Sint64Entry
-	nil,                                      // 12: protobuf_test_messages.proto3.TestAllTypesProto3.MapFixed32Fixed32Entry
-	nil,                                      // 13: protobuf_test_messages.proto3.TestAllTypesProto3.MapFixed64Fixed64Entry
-	nil,                                      // 14: protobuf_test_messages.proto3.TestAllTypesProto3.MapSfixed32Sfixed32Entry
-	nil,                                      // 15: protobuf_test_messages.proto3.TestAllTypesProto3.MapSfixed64Sfixed64Entry
-	nil,                                      // 16: protobuf_test_messages.proto3.TestAllTypesProto3.MapInt32FloatEntry
-	nil,                                      // 17: protobuf_test_messages.proto3.TestAllTypesProto3.MapInt32DoubleEntry
-	nil,                                      // 18: protobuf_test_messages.proto3.TestAllTypesProto3.MapBoolBoolEntry
-	nil,                                      // 19: protobuf_test_messages.proto3.TestAllTypesProto3.MapStringStringEntry
-	nil,                                      // 20: protobuf_test_messages.proto3.TestAllTypesProto3.MapStringBytesEntry
-	nil,                                      // 21: protobuf_test_messages.proto3.TestAllTypesProto3.MapStringNestedMessageEntry
-	nil,                                      // 22: protobuf_test_messages.proto3.TestAllTypesProto3.MapStringForeignMessageEntry
-	nil,                                      // 23: protobuf_test_messages.proto3.TestAllTypesProto3.MapStringNestedEnumEntry
-	nil,                                      // 24: protobuf_test_messages.proto3.TestAllTypesProto3.MapStringForeignEnumEntry
-	(structpb.NullValue)(0),                  // 25: google.protobuf.NullValue
-	(*wrapperspb.BoolValue)(nil),             // 26: google.protobuf.BoolValue
-	(*wrapperspb.Int32Value)(nil),            // 27: google.protobuf.Int32Value
-	(*wrapperspb.Int64Value)(nil),            // 28: google.protobuf.Int64Value
-	(*wrapperspb.UInt32Value)(nil),           // 29: google.protobuf.UInt32Value
-	(*wrapperspb.UInt64Value)(nil),           // 30: google.protobuf.UInt64Value
-	(*wrapperspb.FloatValue)(nil),            // 31: google.protobuf.FloatValue
-	(*wrapperspb.DoubleValue)(nil),           // 32: google.protobuf.DoubleValue
-	(*wrapperspb.StringValue)(nil),           // 33: google.protobuf.StringValue
-	(*wrapperspb.BytesValue)(nil),            // 34: google.protobuf.BytesValue
-	(*durationpb.Duration)(nil),              // 35: google.protobuf.Duration
-	(*timestamppb.Timestamp)(nil),            // 36: google.protobuf.Timestamp
-	(*fieldmaskpb.FieldMask)(nil),            // 37: google.protobuf.FieldMask
-	(*structpb.Struct)(nil),                  // 38: google.protobuf.Struct
-	(*anypb.Any)(nil),                        // 39: google.protobuf.Any
-	(*structpb.Value)(nil),                   // 40: google.protobuf.Value
-	(*structpb.ListValue)(nil),               // 41: google.protobuf.ListValue
-}
-var file_google_protobuf_test_messages_proto3_proto_depIdxs = []int32{
-	5,  // 0: protobuf_test_messages.proto3.TestAllTypesProto3.optional_nested_message:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.NestedMessage
-	4,  // 1: protobuf_test_messages.proto3.TestAllTypesProto3.optional_foreign_message:type_name -> protobuf_test_messages.proto3.ForeignMessage
-	1,  // 2: protobuf_test_messages.proto3.TestAllTypesProto3.optional_nested_enum:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.NestedEnum
-	0,  // 3: protobuf_test_messages.proto3.TestAllTypesProto3.optional_foreign_enum:type_name -> protobuf_test_messages.proto3.ForeignEnum
-	2,  // 4: protobuf_test_messages.proto3.TestAllTypesProto3.optional_aliased_enum:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.AliasedEnum
-	3,  // 5: protobuf_test_messages.proto3.TestAllTypesProto3.recursive_message:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3
-	5,  // 6: protobuf_test_messages.proto3.TestAllTypesProto3.repeated_nested_message:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.NestedMessage
-	4,  // 7: protobuf_test_messages.proto3.TestAllTypesProto3.repeated_foreign_message:type_name -> protobuf_test_messages.proto3.ForeignMessage
-	1,  // 8: protobuf_test_messages.proto3.TestAllTypesProto3.repeated_nested_enum:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.NestedEnum
-	0,  // 9: protobuf_test_messages.proto3.TestAllTypesProto3.repeated_foreign_enum:type_name -> protobuf_test_messages.proto3.ForeignEnum
-	1,  // 10: protobuf_test_messages.proto3.TestAllTypesProto3.packed_nested_enum:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.NestedEnum
-	1,  // 11: protobuf_test_messages.proto3.TestAllTypesProto3.unpacked_nested_enum:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.NestedEnum
-	6,  // 12: protobuf_test_messages.proto3.TestAllTypesProto3.map_int32_int32:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.MapInt32Int32Entry
-	7,  // 13: protobuf_test_messages.proto3.TestAllTypesProto3.map_int64_int64:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.MapInt64Int64Entry
-	8,  // 14: protobuf_test_messages.proto3.TestAllTypesProto3.map_uint32_uint32:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.MapUint32Uint32Entry
-	9,  // 15: protobuf_test_messages.proto3.TestAllTypesProto3.map_uint64_uint64:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.MapUint64Uint64Entry
-	10, // 16: protobuf_test_messages.proto3.TestAllTypesProto3.map_sint32_sint32:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.MapSint32Sint32Entry
-	11, // 17: protobuf_test_messages.proto3.TestAllTypesProto3.map_sint64_sint64:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.MapSint64Sint64Entry
-	12, // 18: protobuf_test_messages.proto3.TestAllTypesProto3.map_fixed32_fixed32:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.MapFixed32Fixed32Entry
-	13, // 19: protobuf_test_messages.proto3.TestAllTypesProto3.map_fixed64_fixed64:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.MapFixed64Fixed64Entry
-	14, // 20: protobuf_test_messages.proto3.TestAllTypesProto3.map_sfixed32_sfixed32:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.MapSfixed32Sfixed32Entry
-	15, // 21: protobuf_test_messages.proto3.TestAllTypesProto3.map_sfixed64_sfixed64:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.MapSfixed64Sfixed64Entry
-	16, // 22: protobuf_test_messages.proto3.TestAllTypesProto3.map_int32_float:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.MapInt32FloatEntry
-	17, // 23: protobuf_test_messages.proto3.TestAllTypesProto3.map_int32_double:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.MapInt32DoubleEntry
-	18, // 24: protobuf_test_messages.proto3.TestAllTypesProto3.map_bool_bool:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.MapBoolBoolEntry
-	19, // 25: protobuf_test_messages.proto3.TestAllTypesProto3.map_string_string:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.MapStringStringEntry
-	20, // 26: protobuf_test_messages.proto3.TestAllTypesProto3.map_string_bytes:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.MapStringBytesEntry
-	21, // 27: protobuf_test_messages.proto3.TestAllTypesProto3.map_string_nested_message:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.MapStringNestedMessageEntry
-	22, // 28: protobuf_test_messages.proto3.TestAllTypesProto3.map_string_foreign_message:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.MapStringForeignMessageEntry
-	23, // 29: protobuf_test_messages.proto3.TestAllTypesProto3.map_string_nested_enum:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.MapStringNestedEnumEntry
-	24, // 30: protobuf_test_messages.proto3.TestAllTypesProto3.map_string_foreign_enum:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.MapStringForeignEnumEntry
-	5,  // 31: protobuf_test_messages.proto3.TestAllTypesProto3.oneof_nested_message:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.NestedMessage
-	1,  // 32: protobuf_test_messages.proto3.TestAllTypesProto3.oneof_enum:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.NestedEnum
-	25, // 33: protobuf_test_messages.proto3.TestAllTypesProto3.oneof_null_value:type_name -> google.protobuf.NullValue
-	26, // 34: protobuf_test_messages.proto3.TestAllTypesProto3.optional_bool_wrapper:type_name -> google.protobuf.BoolValue
-	27, // 35: protobuf_test_messages.proto3.TestAllTypesProto3.optional_int32_wrapper:type_name -> google.protobuf.Int32Value
-	28, // 36: protobuf_test_messages.proto3.TestAllTypesProto3.optional_int64_wrapper:type_name -> google.protobuf.Int64Value
-	29, // 37: protobuf_test_messages.proto3.TestAllTypesProto3.optional_uint32_wrapper:type_name -> google.protobuf.UInt32Value
-	30, // 38: protobuf_test_messages.proto3.TestAllTypesProto3.optional_uint64_wrapper:type_name -> google.protobuf.UInt64Value
-	31, // 39: protobuf_test_messages.proto3.TestAllTypesProto3.optional_float_wrapper:type_name -> google.protobuf.FloatValue
-	32, // 40: protobuf_test_messages.proto3.TestAllTypesProto3.optional_double_wrapper:type_name -> google.protobuf.DoubleValue
-	33, // 41: protobuf_test_messages.proto3.TestAllTypesProto3.optional_string_wrapper:type_name -> google.protobuf.StringValue
-	34, // 42: protobuf_test_messages.proto3.TestAllTypesProto3.optional_bytes_wrapper:type_name -> google.protobuf.BytesValue
-	26, // 43: protobuf_test_messages.proto3.TestAllTypesProto3.repeated_bool_wrapper:type_name -> google.protobuf.BoolValue
-	27, // 44: protobuf_test_messages.proto3.TestAllTypesProto3.repeated_int32_wrapper:type_name -> google.protobuf.Int32Value
-	28, // 45: protobuf_test_messages.proto3.TestAllTypesProto3.repeated_int64_wrapper:type_name -> google.protobuf.Int64Value
-	29, // 46: protobuf_test_messages.proto3.TestAllTypesProto3.repeated_uint32_wrapper:type_name -> google.protobuf.UInt32Value
-	30, // 47: protobuf_test_messages.proto3.TestAllTypesProto3.repeated_uint64_wrapper:type_name -> google.protobuf.UInt64Value
-	31, // 48: protobuf_test_messages.proto3.TestAllTypesProto3.repeated_float_wrapper:type_name -> google.protobuf.FloatValue
-	32, // 49: protobuf_test_messages.proto3.TestAllTypesProto3.repeated_double_wrapper:type_name -> google.protobuf.DoubleValue
-	33, // 50: protobuf_test_messages.proto3.TestAllTypesProto3.repeated_string_wrapper:type_name -> google.protobuf.StringValue
-	34, // 51: protobuf_test_messages.proto3.TestAllTypesProto3.repeated_bytes_wrapper:type_name -> google.protobuf.BytesValue
-	35, // 52: protobuf_test_messages.proto3.TestAllTypesProto3.optional_duration:type_name -> google.protobuf.Duration
-	36, // 53: protobuf_test_messages.proto3.TestAllTypesProto3.optional_timestamp:type_name -> google.protobuf.Timestamp
-	37, // 54: protobuf_test_messages.proto3.TestAllTypesProto3.optional_field_mask:type_name -> google.protobuf.FieldMask
-	38, // 55: protobuf_test_messages.proto3.TestAllTypesProto3.optional_struct:type_name -> google.protobuf.Struct
-	39, // 56: protobuf_test_messages.proto3.TestAllTypesProto3.optional_any:type_name -> google.protobuf.Any
-	40, // 57: protobuf_test_messages.proto3.TestAllTypesProto3.optional_value:type_name -> google.protobuf.Value
-	25, // 58: protobuf_test_messages.proto3.TestAllTypesProto3.optional_null_value:type_name -> google.protobuf.NullValue
-	35, // 59: protobuf_test_messages.proto3.TestAllTypesProto3.repeated_duration:type_name -> google.protobuf.Duration
-	36, // 60: protobuf_test_messages.proto3.TestAllTypesProto3.repeated_timestamp:type_name -> google.protobuf.Timestamp
-	37, // 61: protobuf_test_messages.proto3.TestAllTypesProto3.repeated_fieldmask:type_name -> google.protobuf.FieldMask
-	38, // 62: protobuf_test_messages.proto3.TestAllTypesProto3.repeated_struct:type_name -> google.protobuf.Struct
-	39, // 63: protobuf_test_messages.proto3.TestAllTypesProto3.repeated_any:type_name -> google.protobuf.Any
-	40, // 64: protobuf_test_messages.proto3.TestAllTypesProto3.repeated_value:type_name -> google.protobuf.Value
-	41, // 65: protobuf_test_messages.proto3.TestAllTypesProto3.repeated_list_value:type_name -> google.protobuf.ListValue
-	3,  // 66: protobuf_test_messages.proto3.TestAllTypesProto3.NestedMessage.corecursive:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3
-	5,  // 67: protobuf_test_messages.proto3.TestAllTypesProto3.MapStringNestedMessageEntry.value:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.NestedMessage
-	4,  // 68: protobuf_test_messages.proto3.TestAllTypesProto3.MapStringForeignMessageEntry.value:type_name -> protobuf_test_messages.proto3.ForeignMessage
-	1,  // 69: protobuf_test_messages.proto3.TestAllTypesProto3.MapStringNestedEnumEntry.value:type_name -> protobuf_test_messages.proto3.TestAllTypesProto3.NestedEnum
-	0,  // 70: protobuf_test_messages.proto3.TestAllTypesProto3.MapStringForeignEnumEntry.value:type_name -> protobuf_test_messages.proto3.ForeignEnum
-	71, // [71:71] is the sub-list for method output_type
-	71, // [71:71] is the sub-list for method input_type
-	71, // [71:71] is the sub-list for extension type_name
-	71, // [71:71] is the sub-list for extension extendee
-	0,  // [0:71] is the sub-list for field type_name
-}
-
-func init() { file_google_protobuf_test_messages_proto3_proto_init() }
-func file_google_protobuf_test_messages_proto3_proto_init() {
-	if File_google_protobuf_test_messages_proto3_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_google_protobuf_test_messages_proto3_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestAllTypesProto3); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_test_messages_proto3_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ForeignMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_test_messages_proto3_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestAllTypesProto3_NestedMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	file_google_protobuf_test_messages_proto3_proto_msgTypes[0].OneofWrappers = []interface{}{
-		(*TestAllTypesProto3_OneofUint32)(nil),
-		(*TestAllTypesProto3_OneofNestedMessage)(nil),
-		(*TestAllTypesProto3_OneofString)(nil),
-		(*TestAllTypesProto3_OneofBytes)(nil),
-		(*TestAllTypesProto3_OneofBool)(nil),
-		(*TestAllTypesProto3_OneofUint64)(nil),
-		(*TestAllTypesProto3_OneofFloat)(nil),
-		(*TestAllTypesProto3_OneofDouble)(nil),
-		(*TestAllTypesProto3_OneofEnum)(nil),
-		(*TestAllTypesProto3_OneofNullValue)(nil),
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_google_protobuf_test_messages_proto3_proto_rawDesc,
-			NumEnums:      3,
-			NumMessages:   22,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_google_protobuf_test_messages_proto3_proto_goTypes,
-		DependencyIndexes: file_google_protobuf_test_messages_proto3_proto_depIdxs,
-		EnumInfos:         file_google_protobuf_test_messages_proto3_proto_enumTypes,
-		MessageInfos:      file_google_protobuf_test_messages_proto3_proto_msgTypes,
-	}.Build()
-	File_google_protobuf_test_messages_proto3_proto = out.File
-	file_google_protobuf_test_messages_proto3_proto_rawDesc = nil
-	file_google_protobuf_test_messages_proto3_proto_goTypes = nil
-	file_google_protobuf_test_messages_proto3_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/enums/enums.pb.go b/internal/testprotos/enums/enums.pb.go
deleted file mode 100644
index 061d112..0000000
--- a/internal/testprotos/enums/enums.pb.go
+++ /dev/null
@@ -1,159 +0,0 @@
-// Copyright 2021 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/enums/enums.proto
-
-package enums
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Enum int32
-
-const (
-	Enum_DEFAULT     Enum = 1337
-	Enum_ZERO        Enum = 0
-	Enum_ONE         Enum = 1
-	Enum_ELEVENT     Enum = 11
-	Enum_SEVENTEEN   Enum = 17
-	Enum_THIRTYSEVEN Enum = 37
-	Enum_SIXTYSEVEN  Enum = 67
-	Enum_NEGATIVE    Enum = -1
-)
-
-// Enum value maps for Enum.
-var (
-	Enum_name = map[int32]string{
-		1337: "DEFAULT",
-		0:    "ZERO",
-		1:    "ONE",
-		11:   "ELEVENT",
-		17:   "SEVENTEEN",
-		37:   "THIRTYSEVEN",
-		67:   "SIXTYSEVEN",
-		-1:   "NEGATIVE",
-	}
-	Enum_value = map[string]int32{
-		"DEFAULT":     1337,
-		"ZERO":        0,
-		"ONE":         1,
-		"ELEVENT":     11,
-		"SEVENTEEN":   17,
-		"THIRTYSEVEN": 37,
-		"SIXTYSEVEN":  67,
-		"NEGATIVE":    -1,
-	}
-)
-
-func (x Enum) Enum() *Enum {
-	p := new(Enum)
-	*p = x
-	return p
-}
-
-func (x Enum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum) Descriptor() protoreflect.EnumDescriptor {
-	return file_internal_testprotos_enums_enums_proto_enumTypes[0].Descriptor()
-}
-
-func (Enum) Type() protoreflect.EnumType {
-	return &file_internal_testprotos_enums_enums_proto_enumTypes[0]
-}
-
-func (x Enum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum(num)
-	return nil
-}
-
-// Deprecated: Use Enum.Descriptor instead.
-func (Enum) EnumDescriptor() ([]byte, []int) {
-	return file_internal_testprotos_enums_enums_proto_rawDescGZIP(), []int{0}
-}
-
-var File_internal_testprotos_enums_enums_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_enums_enums_proto_rawDesc = []byte{
-	0x0a, 0x25, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2f, 0x65, 0x6e, 0x75, 0x6d,
-	0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2a, 0x7b, 0x0a, 0x04,
-	0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0c, 0x0a, 0x07, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10,
-	0xb9, 0x0a, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03,
-	0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4c, 0x45, 0x56, 0x45, 0x4e, 0x54,
-	0x10, 0x0b, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x45, 0x45, 0x4e, 0x10,
-	0x11, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x48, 0x49, 0x52, 0x54, 0x59, 0x53, 0x45, 0x56, 0x45, 0x4e,
-	0x10, 0x25, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x49, 0x58, 0x54, 0x59, 0x53, 0x45, 0x56, 0x45, 0x4e,
-	0x10, 0x43, 0x12, 0x15, 0x0a, 0x08, 0x4e, 0x45, 0x47, 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0xff,
-	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
-	0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x65, 0x6e, 0x75, 0x6d,
-	0x73,
-}
-
-var (
-	file_internal_testprotos_enums_enums_proto_rawDescOnce sync.Once
-	file_internal_testprotos_enums_enums_proto_rawDescData = file_internal_testprotos_enums_enums_proto_rawDesc
-)
-
-func file_internal_testprotos_enums_enums_proto_rawDescGZIP() []byte {
-	file_internal_testprotos_enums_enums_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_enums_enums_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_enums_enums_proto_rawDescData)
-	})
-	return file_internal_testprotos_enums_enums_proto_rawDescData
-}
-
-var file_internal_testprotos_enums_enums_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_internal_testprotos_enums_enums_proto_goTypes = []interface{}{
-	(Enum)(0), // 0: goproto.proto.enums.Enum
-}
-var file_internal_testprotos_enums_enums_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_enums_enums_proto_init() }
-func file_internal_testprotos_enums_enums_proto_init() {
-	if File_internal_testprotos_enums_enums_proto != nil {
-		return
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_enums_enums_proto_rawDesc,
-			NumEnums:      1,
-			NumMessages:   0,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_internal_testprotos_enums_enums_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_enums_enums_proto_depIdxs,
-		EnumInfos:         file_internal_testprotos_enums_enums_proto_enumTypes,
-	}.Build()
-	File_internal_testprotos_enums_enums_proto = out.File
-	file_internal_testprotos_enums_enums_proto_rawDesc = nil
-	file_internal_testprotos_enums_enums_proto_goTypes = nil
-	file_internal_testprotos_enums_enums_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/enums/enums.proto b/internal/testprotos/enums/enums.proto
deleted file mode 100644
index b8452d4..0000000
--- a/internal/testprotos/enums/enums.proto
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2021 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.proto.enums;
-
-option go_package = "google.golang.org/protobuf/internal/testprotos/enums";
-
-enum Enum {
-  DEFAULT = 1337;
-  ZERO = 0;
-  ONE = 1;
-  ELEVENT = 11;
-  SEVENTEEN = 17;
-  THIRTYSEVEN = 37;
-  SIXTYSEVEN = 67;
-  NEGATIVE = -1;
-}
diff --git a/internal/testprotos/fieldtrack/fieldtrack.pb.go b/internal/testprotos/fieldtrack/fieldtrack.pb.go
deleted file mode 100644
index 4cbb98b..0000000
--- a/internal/testprotos/fieldtrack/fieldtrack.pb.go
+++ /dev/null
@@ -1,1042 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/fieldtrack/fieldtrack.proto
-
-package fieldtrack
-
-import (
-	_ "google.golang.org/protobuf/internal/testprotos/annotation"
-	test "google.golang.org/protobuf/internal/testprotos/test"
-	proto "google.golang.org/protobuf/proto"
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type TestFieldTrack struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	weakFields    protoimpl.WeakFields
-	unknownFields protoimpl.UnknownFields
-
-	OptionalInt32         *int32                                      `protobuf:"varint,1,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty" go:"track"`
-	OptionalInt64         *int64                                      `protobuf:"varint,2,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty" go:"track"`
-	OptionalUint32        *uint32                                     `protobuf:"varint,3,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty" go:"track"`
-	OptionalUint64        *uint64                                     `protobuf:"varint,4,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty" go:"track"`
-	OptionalSint32        *int32                                      `protobuf:"zigzag32,5,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty" go:"track"`
-	OptionalSint64        *int64                                      `protobuf:"zigzag64,6,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty" go:"track"`
-	OptionalFixed32       *uint32                                     `protobuf:"fixed32,7,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty" go:"track"`
-	OptionalFixed64       *uint64                                     `protobuf:"fixed64,8,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty" go:"track"`
-	OptionalSfixed32      *int32                                      `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty" go:"track"`
-	OptionalSfixed64      *int64                                      `protobuf:"fixed64,10,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty" go:"track"`
-	OptionalFloat         *float32                                    `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty" go:"track"`
-	OptionalDouble        *float64                                    `protobuf:"fixed64,12,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty" go:"track"`
-	OptionalBool          *bool                                       `protobuf:"varint,13,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty" go:"track"`
-	OptionalString        *string                                     `protobuf:"bytes,14,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty" go:"track"`
-	OptionalBytes         []byte                                      `protobuf:"bytes,15,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty" go:"track"`
-	OptionalEnum          *test.TestAllTypes_NestedEnum               `protobuf:"varint,16,opt,name=optional_enum,json=optionalEnum,enum=goproto.proto.test.TestAllTypes_NestedEnum" json:"optional_enum,omitempty" go:"track"`
-	OptionalMessage       *test.TestAllTypes_NestedMessage            `protobuf:"bytes,17,opt,name=optional_message,json=optionalMessage" json:"optional_message,omitempty" go:"track"`
-	RepeatedInt32         []int32                                     `protobuf:"varint,21,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty" go:"track"`
-	RepeatedInt64         []int64                                     `protobuf:"varint,22,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty" go:"track"`
-	RepeatedUint32        []uint32                                    `protobuf:"varint,23,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty" go:"track"`
-	RepeatedUint64        []uint64                                    `protobuf:"varint,24,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty" go:"track"`
-	RepeatedSint32        []int32                                     `protobuf:"zigzag32,25,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty" go:"track"`
-	RepeatedSint64        []int64                                     `protobuf:"zigzag64,26,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty" go:"track"`
-	RepeatedFixed32       []uint32                                    `protobuf:"fixed32,27,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty" go:"track"`
-	RepeatedFixed64       []uint64                                    `protobuf:"fixed64,28,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty" go:"track"`
-	RepeatedSfixed32      []int32                                     `protobuf:"fixed32,29,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty" go:"track"`
-	RepeatedSfixed64      []int64                                     `protobuf:"fixed64,30,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty" go:"track"`
-	RepeatedFloat         []float32                                   `protobuf:"fixed32,31,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty" go:"track"`
-	RepeatedDouble        []float64                                   `protobuf:"fixed64,32,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty" go:"track"`
-	RepeatedBool          []bool                                      `protobuf:"varint,33,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty" go:"track"`
-	RepeatedString        []string                                    `protobuf:"bytes,34,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty" go:"track"`
-	RepeatedBytes         [][]byte                                    `protobuf:"bytes,35,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty" go:"track"`
-	RepeatedEnum          []test.TestAllTypes_NestedEnum              `protobuf:"varint,36,rep,name=repeated_enum,json=repeatedEnum,enum=goproto.proto.test.TestAllTypes_NestedEnum" json:"repeated_enum,omitempty" go:"track"`
-	RepeatedMessage       []*test.TestAllTypes_NestedMessage          `protobuf:"bytes,37,rep,name=repeated_message,json=repeatedMessage" json:"repeated_message,omitempty" go:"track"`
-	MapStringInt32        map[string]int32                            `protobuf:"bytes,41,rep,name=map_string_int32,json=mapStringInt32" json:"map_string_int32,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value" go:"track"`
-	MapStringInt64        map[string]int64                            `protobuf:"bytes,42,rep,name=map_string_int64,json=mapStringInt64" json:"map_string_int64,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value" go:"track"`
-	MapStringUint32       map[string]uint32                           `protobuf:"bytes,43,rep,name=map_string_uint32,json=mapStringUint32" json:"map_string_uint32,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value" go:"track"`
-	MapStringUint64       map[string]uint64                           `protobuf:"bytes,44,rep,name=map_string_uint64,json=mapStringUint64" json:"map_string_uint64,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value" go:"track"`
-	MapStringSint32       map[string]int32                            `protobuf:"bytes,45,rep,name=map_string_sint32,json=mapStringSint32" json:"map_string_sint32,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value" go:"track"`
-	MapStringSint64       map[string]int64                            `protobuf:"bytes,46,rep,name=map_string_sint64,json=mapStringSint64" json:"map_string_sint64,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value" go:"track"`
-	MapStringFixed32      map[string]uint32                           `protobuf:"bytes,47,rep,name=map_string_fixed32,json=mapStringFixed32" json:"map_string_fixed32,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value" go:"track"`
-	MapStringFixed64      map[string]uint64                           `protobuf:"bytes,48,rep,name=map_string_fixed64,json=mapStringFixed64" json:"map_string_fixed64,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value" go:"track"`
-	MapStringSfixed32     map[string]int32                            `protobuf:"bytes,49,rep,name=map_string_sfixed32,json=mapStringSfixed32" json:"map_string_sfixed32,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value" go:"track"`
-	MapStringSfixed64     map[string]int64                            `protobuf:"bytes,50,rep,name=map_string_sfixed64,json=mapStringSfixed64" json:"map_string_sfixed64,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value" go:"track"`
-	MapStringFloat        map[string]float32                          `protobuf:"bytes,51,rep,name=map_string_float,json=mapStringFloat" json:"map_string_float,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value" go:"track"`
-	MapStringDouble       map[string]float64                          `protobuf:"bytes,52,rep,name=map_string_double,json=mapStringDouble" json:"map_string_double,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value" go:"track"`
-	MapStringBool         map[string]bool                             `protobuf:"bytes,53,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value" go:"track"`
-	MapStringString       map[string]string                           `protobuf:"bytes,54,rep,name=map_string_string,json=mapStringString" json:"map_string_string,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value" go:"track"`
-	MapStringBytes        map[string][]byte                           `protobuf:"bytes,55,rep,name=map_string_bytes,json=mapStringBytes" json:"map_string_bytes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value" go:"track"`
-	MapStringEnum         map[string]test.TestAllTypes_NestedEnum     `protobuf:"bytes,56,rep,name=map_string_enum,json=mapStringEnum" json:"map_string_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=goproto.proto.test.TestAllTypes_NestedEnum" go:"track"`
-	MapStringMessage      map[string]*test.TestAllTypes_NestedMessage `protobuf:"bytes,57,rep,name=map_string_message,json=mapStringMessage" json:"map_string_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value" go:"track"`
-	XXX_weak_WeakMessage1 struct{}                                    `protobuf:"bytes,100,opt,name=weak_message1,json=weakMessage1,weak=goproto.proto.test.weak.WeakImportMessage1" json:"weak_message1,omitempty" go:"track"`
-	XXX_weak_WeakMessage2 struct{}                                    `protobuf:"bytes,101,opt,name=weak_message2,json=weakMessage2,weak=goproto.proto.test.weak.WeakImportMessage2" json:"weak_message2,omitempty" go:"track"`
-}
-
-func (x *TestFieldTrack) Reset() {
-	*x = TestFieldTrack{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_fieldtrack_fieldtrack_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestFieldTrack) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestFieldTrack) ProtoMessage() {}
-
-func (x *TestFieldTrack) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_fieldtrack_fieldtrack_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestFieldTrack.ProtoReflect.Descriptor instead.
-func (*TestFieldTrack) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDescGZIP(), []int{0}
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetOptionalInt32() int32 {
-	if x != nil && x.OptionalInt32 != nil {
-		return *x.OptionalInt32
-	}
-	return 0
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetOptionalInt64() int64 {
-	if x != nil && x.OptionalInt64 != nil {
-		return *x.OptionalInt64
-	}
-	return 0
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetOptionalUint32() uint32 {
-	if x != nil && x.OptionalUint32 != nil {
-		return *x.OptionalUint32
-	}
-	return 0
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetOptionalUint64() uint64 {
-	if x != nil && x.OptionalUint64 != nil {
-		return *x.OptionalUint64
-	}
-	return 0
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetOptionalSint32() int32 {
-	if x != nil && x.OptionalSint32 != nil {
-		return *x.OptionalSint32
-	}
-	return 0
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetOptionalSint64() int64 {
-	if x != nil && x.OptionalSint64 != nil {
-		return *x.OptionalSint64
-	}
-	return 0
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetOptionalFixed32() uint32 {
-	if x != nil && x.OptionalFixed32 != nil {
-		return *x.OptionalFixed32
-	}
-	return 0
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetOptionalFixed64() uint64 {
-	if x != nil && x.OptionalFixed64 != nil {
-		return *x.OptionalFixed64
-	}
-	return 0
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetOptionalSfixed32() int32 {
-	if x != nil && x.OptionalSfixed32 != nil {
-		return *x.OptionalSfixed32
-	}
-	return 0
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetOptionalSfixed64() int64 {
-	if x != nil && x.OptionalSfixed64 != nil {
-		return *x.OptionalSfixed64
-	}
-	return 0
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetOptionalFloat() float32 {
-	if x != nil && x.OptionalFloat != nil {
-		return *x.OptionalFloat
-	}
-	return 0
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetOptionalDouble() float64 {
-	if x != nil && x.OptionalDouble != nil {
-		return *x.OptionalDouble
-	}
-	return 0
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetOptionalBool() bool {
-	if x != nil && x.OptionalBool != nil {
-		return *x.OptionalBool
-	}
-	return false
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetOptionalString() string {
-	if x != nil && x.OptionalString != nil {
-		return *x.OptionalString
-	}
-	return ""
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetOptionalBytes() []byte {
-	if x != nil {
-		return x.OptionalBytes
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetOptionalEnum() test.TestAllTypes_NestedEnum {
-	if x != nil && x.OptionalEnum != nil {
-		return *x.OptionalEnum
-	}
-	return test.TestAllTypes_NestedEnum(0)
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetOptionalMessage() *test.TestAllTypes_NestedMessage {
-	if x != nil {
-		return x.OptionalMessage
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetRepeatedInt32() []int32 {
-	if x != nil {
-		return x.RepeatedInt32
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetRepeatedInt64() []int64 {
-	if x != nil {
-		return x.RepeatedInt64
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetRepeatedUint32() []uint32 {
-	if x != nil {
-		return x.RepeatedUint32
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetRepeatedUint64() []uint64 {
-	if x != nil {
-		return x.RepeatedUint64
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetRepeatedSint32() []int32 {
-	if x != nil {
-		return x.RepeatedSint32
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetRepeatedSint64() []int64 {
-	if x != nil {
-		return x.RepeatedSint64
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetRepeatedFixed32() []uint32 {
-	if x != nil {
-		return x.RepeatedFixed32
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetRepeatedFixed64() []uint64 {
-	if x != nil {
-		return x.RepeatedFixed64
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetRepeatedSfixed32() []int32 {
-	if x != nil {
-		return x.RepeatedSfixed32
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetRepeatedSfixed64() []int64 {
-	if x != nil {
-		return x.RepeatedSfixed64
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetRepeatedFloat() []float32 {
-	if x != nil {
-		return x.RepeatedFloat
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetRepeatedDouble() []float64 {
-	if x != nil {
-		return x.RepeatedDouble
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetRepeatedBool() []bool {
-	if x != nil {
-		return x.RepeatedBool
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetRepeatedString() []string {
-	if x != nil {
-		return x.RepeatedString
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetRepeatedBytes() [][]byte {
-	if x != nil {
-		return x.RepeatedBytes
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetRepeatedEnum() []test.TestAllTypes_NestedEnum {
-	if x != nil {
-		return x.RepeatedEnum
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetRepeatedMessage() []*test.TestAllTypes_NestedMessage {
-	if x != nil {
-		return x.RepeatedMessage
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetMapStringInt32() map[string]int32 {
-	if x != nil {
-		return x.MapStringInt32
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetMapStringInt64() map[string]int64 {
-	if x != nil {
-		return x.MapStringInt64
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetMapStringUint32() map[string]uint32 {
-	if x != nil {
-		return x.MapStringUint32
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetMapStringUint64() map[string]uint64 {
-	if x != nil {
-		return x.MapStringUint64
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetMapStringSint32() map[string]int32 {
-	if x != nil {
-		return x.MapStringSint32
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetMapStringSint64() map[string]int64 {
-	if x != nil {
-		return x.MapStringSint64
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetMapStringFixed32() map[string]uint32 {
-	if x != nil {
-		return x.MapStringFixed32
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetMapStringFixed64() map[string]uint64 {
-	if x != nil {
-		return x.MapStringFixed64
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetMapStringSfixed32() map[string]int32 {
-	if x != nil {
-		return x.MapStringSfixed32
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetMapStringSfixed64() map[string]int64 {
-	if x != nil {
-		return x.MapStringSfixed64
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetMapStringFloat() map[string]float32 {
-	if x != nil {
-		return x.MapStringFloat
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetMapStringDouble() map[string]float64 {
-	if x != nil {
-		return x.MapStringDouble
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetMapStringBool() map[string]bool {
-	if x != nil {
-		return x.MapStringBool
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetMapStringString() map[string]string {
-	if x != nil {
-		return x.MapStringString
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetMapStringBytes() map[string][]byte {
-	if x != nil {
-		return x.MapStringBytes
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetMapStringEnum() map[string]test.TestAllTypes_NestedEnum {
-	if x != nil {
-		return x.MapStringEnum
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetMapStringMessage() map[string]*test.TestAllTypes_NestedMessage {
-	if x != nil {
-		return x.MapStringMessage
-	}
-	return nil
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetWeakMessage1() proto.Message {
-	var w protoimpl.WeakFields
-	if x != nil {
-		w = x.weakFields
-		_ = x.XXX_weak_WeakMessage1
-	}
-	return protoimpl.X.GetWeak(w, 100, "goproto.proto.test.weak.WeakImportMessage1")
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) GetWeakMessage2() proto.Message {
-	var w protoimpl.WeakFields
-	if x != nil {
-		w = x.weakFields
-		_ = x.XXX_weak_WeakMessage2
-	}
-	return protoimpl.X.GetWeak(w, 101, "goproto.proto.test.weak.WeakImportMessage2")
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) SetWeakMessage1(v proto.Message) {
-	var w *protoimpl.WeakFields
-	if x != nil {
-		w = &x.weakFields
-		_ = x.XXX_weak_WeakMessage1
-	}
-	protoimpl.X.SetWeak(w, 100, "goproto.proto.test.weak.WeakImportMessage1", v)
-}
-
-//go:nointerface
-
-func (x *TestFieldTrack) SetWeakMessage2(v proto.Message) {
-	var w *protoimpl.WeakFields
-	if x != nil {
-		w = &x.weakFields
-		_ = x.XXX_weak_WeakMessage2
-	}
-	protoimpl.X.SetWeak(w, 101, "goproto.proto.test.weak.WeakImportMessage2", v)
-}
-
-var File_internal_testprotos_fieldtrack_fieldtrack_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDesc = []byte{
-	0x0a, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74, 0x72, 0x61, 0x63, 0x6b,
-	0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x12, 0x12, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x74, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f,
-	0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74,
-	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x23, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
-	0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74,
-	0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x69, 0x6e, 0x74,
-	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
-	0x2f, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x77, 0x65, 0x61, 0x6b, 0x31, 0x2f, 0x74, 0x65, 0x73, 0x74,
-	0x5f, 0x77, 0x65, 0x61, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x69, 0x6e, 0x74,
-	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
-	0x2f, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x77, 0x65, 0x61, 0x6b, 0x32, 0x2f, 0x74, 0x65, 0x73, 0x74,
-	0x5f, 0x77, 0x65, 0x61, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xfe, 0x24, 0x0a, 0x0e,
-	0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x12, 0x25,
-	0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27,
-	0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12,
-	0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x33, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x10, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18,
-	0x08, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46,
-	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28,
-	0x0f, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
-	0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x10, 0x52, 0x10,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
-	0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f,
-	0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01,
-	0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-	0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x6f, 0x6f,
-	0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25,
-	0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73,
-	0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x50, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x59, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
-	0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x18, 0x15, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x16, 0x20, 0x03, 0x28,
-	0x03, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34,
-	0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x18, 0x17, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x18, 0x20, 0x03,
-	0x28, 0x04, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x19, 0x20, 0x03, 0x28, 0x11, 0x52, 0x0e, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x1a,
-	0x20, 0x03, 0x28, 0x12, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x07, 0x52, 0x0f,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12,
-	0x29, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x36, 0x34, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x06, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18,
-	0x1d, 0x20, 0x03, 0x28, 0x0f, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x1e, 0x20, 0x03,
-	0x28, 0x10, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x02, 0x52, 0x0d, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x20,
-	0x20, 0x03, 0x28, 0x01, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44, 0x6f,
-	0x75, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x21, 0x20, 0x03, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x22, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62,
-	0x79, 0x74, 0x65, 0x73, 0x18, 0x23, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x50, 0x0a, 0x0d, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x24, 0x20, 0x03, 0x28, 0x0e,
-	0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
-	0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0c, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x59, 0x0a, 0x10, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
-	0x25, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
-	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x60, 0x0a, 0x10, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x29, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x36, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54,
-	0x72, 0x61, 0x63, 0x6b, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x49, 0x6e,
-	0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x60, 0x0a, 0x10, 0x6d, 0x61, 0x70, 0x5f,
-	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x2a, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x65, 0x6c,
-	0x64, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x49, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6d, 0x61, 0x70, 0x53,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x63, 0x0a, 0x11, 0x6d, 0x61,
-	0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
-	0x2b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46,
-	0x69, 0x65, 0x6c, 0x64, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f,
-	0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12,
-	0x63, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x75, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x18, 0x2c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
-	0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x2e, 0x4d,
-	0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e,
-	0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x55, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x12, 0x63, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x2d, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x37, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x72,
-	0x61, 0x63, 0x6b, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x63, 0x0a, 0x11, 0x6d, 0x61, 0x70,
-	0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x2e,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69,
-	0x65, 0x6c, 0x64, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d,
-	0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x66,
-	0x0a, 0x12, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x33, 0x32, 0x18, 0x2f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
-	0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x2e, 0x4d,
-	0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45,
-	0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46,
-	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x66, 0x0a, 0x12, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x30, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x65, 0x6c,
-	0x64, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x6d, 0x61,
-	0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x69,
-	0x0a, 0x13, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x31, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x2e,
-	0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
-	0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x69, 0x0a, 0x13, 0x6d, 0x61, 0x70,
-	0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
-	0x18, 0x32, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74,
-	0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x52, 0x11, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x12, 0x60, 0x0a, 0x10, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x33, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x72, 0x61,
-	0x63, 0x6b, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x6c, 0x6f, 0x61,
-	0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x63, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x34, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64,
-	0x54, 0x72, 0x61, 0x63, 0x6b, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x44,
-	0x6f, 0x75, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x5d, 0x0a, 0x0f, 0x6d,
-	0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x35,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69,
-	0x65, 0x6c, 0x64, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70,
-	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x63, 0x0a, 0x11, 0x6d, 0x61,
-	0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18,
-	0x36, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46,
-	0x69, 0x65, 0x6c, 0x64, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f,
-	0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12,
-	0x60, 0x0a, 0x10, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x79,
-	0x74, 0x65, 0x73, 0x18, 0x37, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54,
-	0x65, 0x73, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x2e, 0x4d, 0x61,
-	0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x52, 0x0e, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65,
-	0x73, 0x12, 0x5d, 0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f,
-	0x65, 0x6e, 0x75, 0x6d, 0x18, 0x38, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
-	0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x2e, 0x4d,
-	0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x75, 0x6d,
-	0x12, 0x66, 0x0a, 0x12, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x39, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x54, 0x72, 0x61, 0x63, 0x6b,
-	0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x54, 0x0a, 0x0d, 0x77, 0x65, 0x61, 0x6b,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2b, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x2e, 0x77, 0x65, 0x61, 0x6b, 0x2e, 0x57, 0x65, 0x61, 0x6b, 0x49, 0x6d,
-	0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x42, 0x02, 0x50, 0x01,
-	0x52, 0x0c, 0x77, 0x65, 0x61, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x12, 0x54,
-	0x0a, 0x0d, 0x77, 0x65, 0x61, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x18,
-	0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x77, 0x65, 0x61, 0x6b, 0x2e,
-	0x57, 0x65, 0x61, 0x6b, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x32, 0x42, 0x02, 0x50, 0x01, 0x52, 0x0c, 0x77, 0x65, 0x61, 0x6b, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x32, 0x1a, 0x41, 0x0a, 0x13, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
-	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61,
-	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x4d, 0x61, 0x70, 0x53, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
-	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
-	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61,
-	0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74,
-	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42,
-	0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x55, 0x69, 0x6e, 0x74, 0x36,
-	0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
-	0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
-	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
-	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
-	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x43, 0x0a, 0x15, 0x4d, 0x61,
-	0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e,
-	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x07, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
-	0x43, 0x0a, 0x15, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x78, 0x65,
-	0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
-	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x06, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
-	0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
-	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
-	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0f, 0x52,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x61,
-	0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45,
-	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x10, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
-	0x1a, 0x41, 0x0a, 0x13, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x6c, 0x6f,
-	0x61, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
-	0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
-	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61,
-	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x53, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
-	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
-	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70,
-	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
-	0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a,
-	0x13, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x45,
-	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
-	0x1a, 0x6d, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x75,
-	0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x41, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73,
-	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
-	0x73, 0x0a, 0x15, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x44, 0x0a, 0x05, 0x76, 0x61,
-	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54,
-	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
-	0x3a, 0x02, 0x38, 0x01, 0x3a, 0x06, 0xa8, 0xe0, 0xcd, 0x8e, 0x01, 0x01, 0x42, 0x3b, 0x5a, 0x39,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72,
-	0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72,
-	0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x58, 0x02, 0x58, 0x03,
-}
-
-var (
-	file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDescOnce sync.Once
-	file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDescData = file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDesc
-)
-
-func file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDescGZIP() []byte {
-	file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDescData)
-	})
-	return file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDescData
-}
-
-var file_internal_testprotos_fieldtrack_fieldtrack_proto_msgTypes = make([]protoimpl.MessageInfo, 18)
-var file_internal_testprotos_fieldtrack_fieldtrack_proto_goTypes = []interface{}{
-	(*TestFieldTrack)(nil),                  // 0: goproto.proto.test.TestFieldTrack
-	nil,                                     // 1: goproto.proto.test.TestFieldTrack.MapStringInt32Entry
-	nil,                                     // 2: goproto.proto.test.TestFieldTrack.MapStringInt64Entry
-	nil,                                     // 3: goproto.proto.test.TestFieldTrack.MapStringUint32Entry
-	nil,                                     // 4: goproto.proto.test.TestFieldTrack.MapStringUint64Entry
-	nil,                                     // 5: goproto.proto.test.TestFieldTrack.MapStringSint32Entry
-	nil,                                     // 6: goproto.proto.test.TestFieldTrack.MapStringSint64Entry
-	nil,                                     // 7: goproto.proto.test.TestFieldTrack.MapStringFixed32Entry
-	nil,                                     // 8: goproto.proto.test.TestFieldTrack.MapStringFixed64Entry
-	nil,                                     // 9: goproto.proto.test.TestFieldTrack.MapStringSfixed32Entry
-	nil,                                     // 10: goproto.proto.test.TestFieldTrack.MapStringSfixed64Entry
-	nil,                                     // 11: goproto.proto.test.TestFieldTrack.MapStringFloatEntry
-	nil,                                     // 12: goproto.proto.test.TestFieldTrack.MapStringDoubleEntry
-	nil,                                     // 13: goproto.proto.test.TestFieldTrack.MapStringBoolEntry
-	nil,                                     // 14: goproto.proto.test.TestFieldTrack.MapStringStringEntry
-	nil,                                     // 15: goproto.proto.test.TestFieldTrack.MapStringBytesEntry
-	nil,                                     // 16: goproto.proto.test.TestFieldTrack.MapStringEnumEntry
-	nil,                                     // 17: goproto.proto.test.TestFieldTrack.MapStringMessageEntry
-	(test.TestAllTypes_NestedEnum)(0),       // 18: goproto.proto.test.TestAllTypes.NestedEnum
-	(*test.TestAllTypes_NestedMessage)(nil), // 19: goproto.proto.test.TestAllTypes.NestedMessage
-}
-var file_internal_testprotos_fieldtrack_fieldtrack_proto_depIdxs = []int32{
-	18, // 0: goproto.proto.test.TestFieldTrack.optional_enum:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
-	19, // 1: goproto.proto.test.TestFieldTrack.optional_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
-	18, // 2: goproto.proto.test.TestFieldTrack.repeated_enum:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
-	19, // 3: goproto.proto.test.TestFieldTrack.repeated_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
-	1,  // 4: goproto.proto.test.TestFieldTrack.map_string_int32:type_name -> goproto.proto.test.TestFieldTrack.MapStringInt32Entry
-	2,  // 5: goproto.proto.test.TestFieldTrack.map_string_int64:type_name -> goproto.proto.test.TestFieldTrack.MapStringInt64Entry
-	3,  // 6: goproto.proto.test.TestFieldTrack.map_string_uint32:type_name -> goproto.proto.test.TestFieldTrack.MapStringUint32Entry
-	4,  // 7: goproto.proto.test.TestFieldTrack.map_string_uint64:type_name -> goproto.proto.test.TestFieldTrack.MapStringUint64Entry
-	5,  // 8: goproto.proto.test.TestFieldTrack.map_string_sint32:type_name -> goproto.proto.test.TestFieldTrack.MapStringSint32Entry
-	6,  // 9: goproto.proto.test.TestFieldTrack.map_string_sint64:type_name -> goproto.proto.test.TestFieldTrack.MapStringSint64Entry
-	7,  // 10: goproto.proto.test.TestFieldTrack.map_string_fixed32:type_name -> goproto.proto.test.TestFieldTrack.MapStringFixed32Entry
-	8,  // 11: goproto.proto.test.TestFieldTrack.map_string_fixed64:type_name -> goproto.proto.test.TestFieldTrack.MapStringFixed64Entry
-	9,  // 12: goproto.proto.test.TestFieldTrack.map_string_sfixed32:type_name -> goproto.proto.test.TestFieldTrack.MapStringSfixed32Entry
-	10, // 13: goproto.proto.test.TestFieldTrack.map_string_sfixed64:type_name -> goproto.proto.test.TestFieldTrack.MapStringSfixed64Entry
-	11, // 14: goproto.proto.test.TestFieldTrack.map_string_float:type_name -> goproto.proto.test.TestFieldTrack.MapStringFloatEntry
-	12, // 15: goproto.proto.test.TestFieldTrack.map_string_double:type_name -> goproto.proto.test.TestFieldTrack.MapStringDoubleEntry
-	13, // 16: goproto.proto.test.TestFieldTrack.map_string_bool:type_name -> goproto.proto.test.TestFieldTrack.MapStringBoolEntry
-	14, // 17: goproto.proto.test.TestFieldTrack.map_string_string:type_name -> goproto.proto.test.TestFieldTrack.MapStringStringEntry
-	15, // 18: goproto.proto.test.TestFieldTrack.map_string_bytes:type_name -> goproto.proto.test.TestFieldTrack.MapStringBytesEntry
-	16, // 19: goproto.proto.test.TestFieldTrack.map_string_enum:type_name -> goproto.proto.test.TestFieldTrack.MapStringEnumEntry
-	17, // 20: goproto.proto.test.TestFieldTrack.map_string_message:type_name -> goproto.proto.test.TestFieldTrack.MapStringMessageEntry
-	18, // 21: goproto.proto.test.TestFieldTrack.MapStringEnumEntry.value:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
-	19, // 22: goproto.proto.test.TestFieldTrack.MapStringMessageEntry.value:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
-	23, // [23:23] is the sub-list for method output_type
-	23, // [23:23] is the sub-list for method input_type
-	23, // [23:23] is the sub-list for extension type_name
-	23, // [23:23] is the sub-list for extension extendee
-	0,  // [0:23] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_fieldtrack_fieldtrack_proto_init() }
-func file_internal_testprotos_fieldtrack_fieldtrack_proto_init() {
-	if File_internal_testprotos_fieldtrack_fieldtrack_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_internal_testprotos_fieldtrack_fieldtrack_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestFieldTrack); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.weakFields
-			case 3:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   18,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_internal_testprotos_fieldtrack_fieldtrack_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_fieldtrack_fieldtrack_proto_depIdxs,
-		MessageInfos:      file_internal_testprotos_fieldtrack_fieldtrack_proto_msgTypes,
-	}.Build()
-	File_internal_testprotos_fieldtrack_fieldtrack_proto = out.File
-	file_internal_testprotos_fieldtrack_fieldtrack_proto_rawDesc = nil
-	file_internal_testprotos_fieldtrack_fieldtrack_proto_goTypes = nil
-	file_internal_testprotos_fieldtrack_fieldtrack_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/fieldtrack/fieldtrack.proto b/internal/testprotos/fieldtrack/fieldtrack.proto
deleted file mode 100644
index 4e727e6..0000000
--- a/internal/testprotos/fieldtrack/fieldtrack.proto
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.proto.test;
-
-import "internal/testprotos/annotation/annotation.proto";
-import "internal/testprotos/test/test.proto";
-import weak "internal/testprotos/test/weak1/test_weak.proto";
-import weak "internal/testprotos/test/weak2/test_weak.proto";
-
-option go_package = "google.golang.org/protobuf/internal/testprotos/fieldtrack";
-
-message TestFieldTrack {
-  option (go_annotation.track_field_use) = true;
-
-  optional int32    optional_int32    =  1;
-  optional int64    optional_int64    =  2;
-  optional uint32   optional_uint32   =  3;
-  optional uint64   optional_uint64   =  4;
-  optional sint32   optional_sint32   =  5;
-  optional sint64   optional_sint64   =  6;
-  optional fixed32  optional_fixed32  =  7;
-  optional fixed64  optional_fixed64  =  8;
-  optional sfixed32 optional_sfixed32 =  9;
-  optional sfixed64 optional_sfixed64 = 10;
-  optional float    optional_float    = 11;
-  optional double   optional_double   = 12;
-  optional bool     optional_bool     = 13;
-  optional string   optional_string   = 14;
-  optional bytes    optional_bytes    = 15;
-  optional goproto.proto.test.TestAllTypes.NestedEnum    optional_enum    = 16;
-  optional goproto.proto.test.TestAllTypes.NestedMessage optional_message = 17;
-
-  repeated int32    repeated_int32    = 21;
-  repeated int64    repeated_int64    = 22;
-  repeated uint32   repeated_uint32   = 23;
-  repeated uint64   repeated_uint64   = 24;
-  repeated sint32   repeated_sint32   = 25;
-  repeated sint64   repeated_sint64   = 26;
-  repeated fixed32  repeated_fixed32  = 27;
-  repeated fixed64  repeated_fixed64  = 28;
-  repeated sfixed32 repeated_sfixed32 = 29;
-  repeated sfixed64 repeated_sfixed64 = 30;
-  repeated float    repeated_float    = 31;
-  repeated double   repeated_double   = 32;
-  repeated bool     repeated_bool     = 33;
-  repeated string   repeated_string   = 34;
-  repeated bytes    repeated_bytes    = 35;
-  repeated goproto.proto.test.TestAllTypes.NestedEnum    repeated_enum    = 36;
-  repeated goproto.proto.test.TestAllTypes.NestedMessage repeated_message = 37;
-
-  map <string, int32>    map_string_int32    = 41;
-  map <string, int64>    map_string_int64    = 42;
-  map <string, uint32>   map_string_uint32   = 43;
-  map <string, uint64>   map_string_uint64   = 44;
-  map <string, sint32>   map_string_sint32   = 45;
-  map <string, sint64>   map_string_sint64   = 46;
-  map <string, fixed32>  map_string_fixed32  = 47;
-  map <string, fixed64>  map_string_fixed64  = 48;
-  map <string, sfixed32> map_string_sfixed32 = 49;
-  map <string, sfixed64> map_string_sfixed64 = 50;
-  map <string, float>    map_string_float    = 51;
-  map <string, double>   map_string_double   = 52;
-  map <string, bool>     map_string_bool     = 53;
-  map <string, string>   map_string_string   = 54;
-  map <string, bytes>    map_string_bytes    = 55;
-  map <string, goproto.proto.test.TestAllTypes.NestedEnum>    map_string_enum    = 56;
-  map <string, goproto.proto.test.TestAllTypes.NestedMessage> map_string_message = 57;
-
-  optional goproto.proto.test.weak.WeakImportMessage1 weak_message1 = 100 [weak=true];
-  optional goproto.proto.test.weak.WeakImportMessage2 weak_message2 = 101 [weak=true];
-}
diff --git a/internal/testprotos/fuzz/fuzz.pb.go b/internal/testprotos/fuzz/fuzz.pb.go
deleted file mode 100644
index e677f97..0000000
--- a/internal/testprotos/fuzz/fuzz.pb.go
+++ /dev/null
@@ -1,260 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/fuzz/fuzz.proto
-
-package fuzz
-
-import (
-	test "google.golang.org/protobuf/internal/testprotos/test"
-	test3 "google.golang.org/protobuf/internal/testprotos/test3"
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-// Fuzz is a container for every message we want to make available to the fuzzer.
-type Fuzz struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	TestAllTypes            *test.TestAllTypes            `protobuf:"bytes,1,opt,name=test_all_types,json=testAllTypes" json:"test_all_types,omitempty"`
-	TestAllExtensions       *test.TestAllExtensions       `protobuf:"bytes,2,opt,name=test_all_extensions,json=testAllExtensions" json:"test_all_extensions,omitempty"`
-	TestRequired            *test.TestRequired            `protobuf:"bytes,3,opt,name=test_required,json=testRequired" json:"test_required,omitempty"`
-	TestRequiredForeign     *test.TestRequiredForeign     `protobuf:"bytes,4,opt,name=test_required_foreign,json=testRequiredForeign" json:"test_required_foreign,omitempty"`
-	TestRequiredGroupFields *test.TestRequiredGroupFields `protobuf:"bytes,5,opt,name=test_required_group_fields,json=testRequiredGroupFields" json:"test_required_group_fields,omitempty"`
-	TestPackedTypes         *test.TestPackedTypes         `protobuf:"bytes,6,opt,name=test_packed_types,json=testPackedTypes" json:"test_packed_types,omitempty"`
-	TestPackedExtensions    *test.TestPackedExtensions    `protobuf:"bytes,7,opt,name=test_packed_extensions,json=testPackedExtensions" json:"test_packed_extensions,omitempty"`
-	TestAllTypes3           *test3.TestAllTypes           `protobuf:"bytes,8,opt,name=test_all_types3,json=testAllTypes3" json:"test_all_types3,omitempty"`
-}
-
-func (x *Fuzz) Reset() {
-	*x = Fuzz{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_fuzz_fuzz_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Fuzz) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Fuzz) ProtoMessage() {}
-
-func (x *Fuzz) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_fuzz_fuzz_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Fuzz.ProtoReflect.Descriptor instead.
-func (*Fuzz) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_fuzz_fuzz_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Fuzz) GetTestAllTypes() *test.TestAllTypes {
-	if x != nil {
-		return x.TestAllTypes
-	}
-	return nil
-}
-
-func (x *Fuzz) GetTestAllExtensions() *test.TestAllExtensions {
-	if x != nil {
-		return x.TestAllExtensions
-	}
-	return nil
-}
-
-func (x *Fuzz) GetTestRequired() *test.TestRequired {
-	if x != nil {
-		return x.TestRequired
-	}
-	return nil
-}
-
-func (x *Fuzz) GetTestRequiredForeign() *test.TestRequiredForeign {
-	if x != nil {
-		return x.TestRequiredForeign
-	}
-	return nil
-}
-
-func (x *Fuzz) GetTestRequiredGroupFields() *test.TestRequiredGroupFields {
-	if x != nil {
-		return x.TestRequiredGroupFields
-	}
-	return nil
-}
-
-func (x *Fuzz) GetTestPackedTypes() *test.TestPackedTypes {
-	if x != nil {
-		return x.TestPackedTypes
-	}
-	return nil
-}
-
-func (x *Fuzz) GetTestPackedExtensions() *test.TestPackedExtensions {
-	if x != nil {
-		return x.TestPackedExtensions
-	}
-	return nil
-}
-
-func (x *Fuzz) GetTestAllTypes3() *test3.TestAllTypes {
-	if x != nil {
-		return x.TestAllTypes3
-	}
-	return nil
-}
-
-var File_internal_testprotos_fuzz_fuzz_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_fuzz_fuzz_proto_rawDesc = []byte{
-	0x0a, 0x23, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x66, 0x75, 0x7a, 0x7a, 0x2f, 0x66, 0x75, 0x7a, 0x7a, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x66, 0x75, 0x7a, 0x7a, 0x1a, 0x23, 0x69, 0x6e, 0x74, 0x65, 0x72,
-	0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74,
-	0x65, 0x73, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24,
-	0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x22, 0xaf, 0x05, 0x0a, 0x04, 0x46, 0x75, 0x7a, 0x7a, 0x12, 0x46, 0x0a,
-	0x0e, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
-	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
-	0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x55, 0x0a, 0x13, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x6c,
-	0x6c, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x11, 0x74, 0x65, 0x73, 0x74, 0x41,
-	0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x45, 0x0a, 0x0d,
-	0x74, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71,
-	0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69,
-	0x72, 0x65, 0x64, 0x12, 0x5b, 0x0a, 0x15, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75,
-	0x69, 0x72, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x18, 0x04, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75,
-	0x69, 0x72, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x52, 0x13, 0x74, 0x65, 0x73,
-	0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
-	0x12, 0x68, 0x0a, 0x1a, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
-	0x64, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65,
-	0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64,
-	0x73, 0x52, 0x17, 0x74, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x47,
-	0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x4f, 0x0a, 0x11, 0x74, 0x65,
-	0x73, 0x74, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18,
-	0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x0f, 0x74, 0x65, 0x73, 0x74,
-	0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x5e, 0x0a, 0x16, 0x74,
-	0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x14, 0x74, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x49, 0x0a, 0x0f, 0x74,
-	0x65, 0x73, 0x74, 0x5f, 0x61, 0x6c, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x33, 0x18, 0x08,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
-	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x0d, 0x74, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
-	0x54, 0x79, 0x70, 0x65, 0x73, 0x33, 0x42, 0x35, 0x5a, 0x33, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65,
-	0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x66, 0x75, 0x7a, 0x7a,
-}
-
-var (
-	file_internal_testprotos_fuzz_fuzz_proto_rawDescOnce sync.Once
-	file_internal_testprotos_fuzz_fuzz_proto_rawDescData = file_internal_testprotos_fuzz_fuzz_proto_rawDesc
-)
-
-func file_internal_testprotos_fuzz_fuzz_proto_rawDescGZIP() []byte {
-	file_internal_testprotos_fuzz_fuzz_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_fuzz_fuzz_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_fuzz_fuzz_proto_rawDescData)
-	})
-	return file_internal_testprotos_fuzz_fuzz_proto_rawDescData
-}
-
-var file_internal_testprotos_fuzz_fuzz_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_internal_testprotos_fuzz_fuzz_proto_goTypes = []interface{}{
-	(*Fuzz)(nil),                         // 0: goproto.proto.fuzz.Fuzz
-	(*test.TestAllTypes)(nil),            // 1: goproto.proto.test.TestAllTypes
-	(*test.TestAllExtensions)(nil),       // 2: goproto.proto.test.TestAllExtensions
-	(*test.TestRequired)(nil),            // 3: goproto.proto.test.TestRequired
-	(*test.TestRequiredForeign)(nil),     // 4: goproto.proto.test.TestRequiredForeign
-	(*test.TestRequiredGroupFields)(nil), // 5: goproto.proto.test.TestRequiredGroupFields
-	(*test.TestPackedTypes)(nil),         // 6: goproto.proto.test.TestPackedTypes
-	(*test.TestPackedExtensions)(nil),    // 7: goproto.proto.test.TestPackedExtensions
-	(*test3.TestAllTypes)(nil),           // 8: goproto.proto.test3.TestAllTypes
-}
-var file_internal_testprotos_fuzz_fuzz_proto_depIdxs = []int32{
-	1, // 0: goproto.proto.fuzz.Fuzz.test_all_types:type_name -> goproto.proto.test.TestAllTypes
-	2, // 1: goproto.proto.fuzz.Fuzz.test_all_extensions:type_name -> goproto.proto.test.TestAllExtensions
-	3, // 2: goproto.proto.fuzz.Fuzz.test_required:type_name -> goproto.proto.test.TestRequired
-	4, // 3: goproto.proto.fuzz.Fuzz.test_required_foreign:type_name -> goproto.proto.test.TestRequiredForeign
-	5, // 4: goproto.proto.fuzz.Fuzz.test_required_group_fields:type_name -> goproto.proto.test.TestRequiredGroupFields
-	6, // 5: goproto.proto.fuzz.Fuzz.test_packed_types:type_name -> goproto.proto.test.TestPackedTypes
-	7, // 6: goproto.proto.fuzz.Fuzz.test_packed_extensions:type_name -> goproto.proto.test.TestPackedExtensions
-	8, // 7: goproto.proto.fuzz.Fuzz.test_all_types3:type_name -> goproto.proto.test3.TestAllTypes
-	8, // [8:8] is the sub-list for method output_type
-	8, // [8:8] is the sub-list for method input_type
-	8, // [8:8] is the sub-list for extension type_name
-	8, // [8:8] is the sub-list for extension extendee
-	0, // [0:8] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_fuzz_fuzz_proto_init() }
-func file_internal_testprotos_fuzz_fuzz_proto_init() {
-	if File_internal_testprotos_fuzz_fuzz_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_internal_testprotos_fuzz_fuzz_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Fuzz); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_fuzz_fuzz_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_internal_testprotos_fuzz_fuzz_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_fuzz_fuzz_proto_depIdxs,
-		MessageInfos:      file_internal_testprotos_fuzz_fuzz_proto_msgTypes,
-	}.Build()
-	File_internal_testprotos_fuzz_fuzz_proto = out.File
-	file_internal_testprotos_fuzz_fuzz_proto_rawDesc = nil
-	file_internal_testprotos_fuzz_fuzz_proto_goTypes = nil
-	file_internal_testprotos_fuzz_fuzz_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/fuzz/fuzz.proto b/internal/testprotos/fuzz/fuzz.proto
deleted file mode 100644
index 3b3ffe1..0000000
--- a/internal/testprotos/fuzz/fuzz.proto
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.proto.fuzz;
-
-import "internal/testprotos/test/test.proto";
-import "internal/testprotos/test3/test.proto";
-
-option go_package = "google.golang.org/protobuf/internal/testprotos/fuzz";
-
-// Fuzz is a container for every message we want to make available to the fuzzer.
-message Fuzz {
-  optional goproto.proto.test.TestAllTypes test_all_types = 1;
-  optional goproto.proto.test.TestAllExtensions test_all_extensions = 2;
-  optional goproto.proto.test.TestRequired test_required = 3;
-  optional goproto.proto.test.TestRequiredForeign test_required_foreign = 4;
-  optional goproto.proto.test.TestRequiredGroupFields test_required_group_fields = 5;
-  optional goproto.proto.test.TestPackedTypes test_packed_types = 6;
-  optional goproto.proto.test.TestPackedExtensions test_packed_extensions = 7;
-  optional goproto.proto.test3.TestAllTypes test_all_types3 = 8;
-}
diff --git a/internal/testprotos/irregular/irregular.go b/internal/testprotos/irregular/irregular.go
deleted file mode 100644
index 48fbd16..0000000
--- a/internal/testprotos/irregular/irregular.go
+++ /dev/null
@@ -1,134 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package irregular
-
-import (
-	"google.golang.org/protobuf/encoding/prototext"
-	"google.golang.org/protobuf/reflect/protodesc"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/runtime/protoiface"
-
-	"google.golang.org/protobuf/types/descriptorpb"
-)
-
-type IrregularMessage struct {
-	set   bool
-	value string
-}
-
-func (m *IrregularMessage) ProtoReflect() pref.Message { return (*message)(m) }
-
-type message IrregularMessage
-
-type messageType struct{}
-
-func (messageType) New() pref.Message                  { return &message{} }
-func (messageType) Zero() pref.Message                 { return (*message)(nil) }
-func (messageType) Descriptor() pref.MessageDescriptor { return fileDesc.Messages().Get(0) }
-
-func (m *message) New() pref.Message                  { return &message{} }
-func (m *message) Descriptor() pref.MessageDescriptor { return fileDesc.Messages().Get(0) }
-func (m *message) Type() pref.MessageType             { return messageType{} }
-func (m *message) Interface() pref.ProtoMessage       { return (*IrregularMessage)(m) }
-func (m *message) ProtoMethods() *protoiface.Methods  { return nil }
-
-var fieldDescS = fileDesc.Messages().Get(0).Fields().Get(0)
-
-func (m *message) Range(f func(pref.FieldDescriptor, pref.Value) bool) {
-	if m.set {
-		f(fieldDescS, pref.ValueOf(m.value))
-	}
-}
-
-func (m *message) Has(fd pref.FieldDescriptor) bool {
-	if fd == fieldDescS {
-		return m.set
-	}
-	panic("invalid field descriptor")
-}
-
-func (m *message) Clear(fd pref.FieldDescriptor) {
-	if fd == fieldDescS {
-		m.value = ""
-		m.set = false
-		return
-	}
-	panic("invalid field descriptor")
-}
-
-func (m *message) Get(fd pref.FieldDescriptor) pref.Value {
-	if fd == fieldDescS {
-		return pref.ValueOf(m.value)
-	}
-	panic("invalid field descriptor")
-}
-
-func (m *message) Set(fd pref.FieldDescriptor, v pref.Value) {
-	if fd == fieldDescS {
-		m.value = v.String()
-		m.set = true
-		return
-	}
-	panic("invalid field descriptor")
-}
-
-func (m *message) Mutable(pref.FieldDescriptor) pref.Value {
-	panic("invalid field descriptor")
-}
-
-func (m *message) NewField(pref.FieldDescriptor) pref.Value {
-	panic("invalid field descriptor")
-}
-
-func (m *message) WhichOneof(pref.OneofDescriptor) pref.FieldDescriptor {
-	panic("invalid oneof descriptor")
-}
-
-func (m *message) GetUnknown() pref.RawFields { return nil }
-func (m *message) SetUnknown(pref.RawFields)  { return }
-
-func (m *message) IsValid() bool {
-	return m != nil
-}
-
-var fileDesc = func() pref.FileDescriptor {
-	p := &descriptorpb.FileDescriptorProto{}
-	if err := prototext.Unmarshal([]byte(descriptorText), p); err != nil {
-		panic(err)
-	}
-	file, err := protodesc.NewFile(p, nil)
-	if err != nil {
-		panic(err)
-	}
-	return file
-}()
-
-func file_internal_testprotos_irregular_irregular_proto_init() { _ = fileDesc }
-
-const descriptorText = `
-  name: "internal/testprotos/irregular/irregular.proto"
-  package: "goproto.proto.thirdparty"
-  message_type {
-    name: "IrregularMessage"
-    field {
-      name: "s"
-      number: 1
-      label: LABEL_OPTIONAL
-      type: TYPE_STRING
-      json_name: "s"
-    }
-  }
-  options {
-    go_package: "google.golang.org/protobuf/internal/testprotos/irregular"
-  }
-`
-
-type AberrantMessage int
-
-func (m AberrantMessage) ProtoMessage()            {}
-func (m AberrantMessage) Reset()                   {}
-func (m AberrantMessage) String() string           { return "" }
-func (m AberrantMessage) Marshal() ([]byte, error) { return nil, nil }
-func (m AberrantMessage) Unmarshal([]byte) error   { return nil }
diff --git a/internal/testprotos/irregular/irregular.proto b/internal/testprotos/irregular/irregular.proto
deleted file mode 100644
index 949316b..0000000
--- a/internal/testprotos/irregular/irregular.proto
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.proto.irregular;
-
-option go_package = "google.golang.org/protobuf/internal/testprotos/irregular";
-
-// IrregularMessage is a message with an implementation that does not match the
-// usual structure of a generated message.
-message IrregularMessage {
-  optional string s = 1;
-}
-
-// AberrantMessage is a message with an implementation with a non-struct underlying type.
-message AberrantMessage {
-}
diff --git a/internal/testprotos/irregular/test.pb.go b/internal/testprotos/irregular/test.pb.go
deleted file mode 100644
index 6a323a4..0000000
--- a/internal/testprotos/irregular/test.pb.go
+++ /dev/null
@@ -1,337 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// This file contains a message which references a message that implements the
-// proto.Message interface but does not have the structure of a normal generated
-// message.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/irregular/test.proto
-
-package irregular
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Message struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OptionalMessage *IrregularMessage            `protobuf:"bytes,1,opt,name=optional_message,json=optionalMessage" json:"optional_message,omitempty"`
-	RepeatedMessage []*IrregularMessage          `protobuf:"bytes,2,rep,name=repeated_message,json=repeatedMessage" json:"repeated_message,omitempty"`
-	RequiredMessage *IrregularMessage            `protobuf:"bytes,3,req,name=required_message,json=requiredMessage" json:"required_message,omitempty"`
-	MapMessage      map[string]*IrregularMessage `protobuf:"bytes,4,rep,name=map_message,json=mapMessage" json:"map_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	// Types that are assignable to Union:
-	//	*Message_OneofMessage
-	//	*Message_OneofAberrantMessage
-	Union                   isMessage_Union             `protobuf_oneof:"union"`
-	OptionalAberrantMessage *AberrantMessage            `protobuf:"bytes,7,opt,name=optional_aberrant_message,json=optionalAberrantMessage" json:"optional_aberrant_message,omitempty"`
-	RepeatedAberrantMessage []*AberrantMessage          `protobuf:"bytes,8,rep,name=repeated_aberrant_message,json=repeatedAberrantMessage" json:"repeated_aberrant_message,omitempty"`
-	RequiredAberrantMessage *AberrantMessage            `protobuf:"bytes,9,req,name=required_aberrant_message,json=requiredAberrantMessage" json:"required_aberrant_message,omitempty"`
-	MapAberrantMessage      map[string]*AberrantMessage `protobuf:"bytes,10,rep,name=map_aberrant_message,json=mapAberrantMessage" json:"map_aberrant_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-}
-
-func (x *Message) Reset() {
-	*x = Message{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_irregular_test_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message) ProtoMessage() {}
-
-func (x *Message) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_irregular_test_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message.ProtoReflect.Descriptor instead.
-func (*Message) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_irregular_test_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Message) GetOptionalMessage() *IrregularMessage {
-	if x != nil {
-		return x.OptionalMessage
-	}
-	return nil
-}
-
-func (x *Message) GetRepeatedMessage() []*IrregularMessage {
-	if x != nil {
-		return x.RepeatedMessage
-	}
-	return nil
-}
-
-func (x *Message) GetRequiredMessage() *IrregularMessage {
-	if x != nil {
-		return x.RequiredMessage
-	}
-	return nil
-}
-
-func (x *Message) GetMapMessage() map[string]*IrregularMessage {
-	if x != nil {
-		return x.MapMessage
-	}
-	return nil
-}
-
-func (m *Message) GetUnion() isMessage_Union {
-	if m != nil {
-		return m.Union
-	}
-	return nil
-}
-
-func (x *Message) GetOneofMessage() *IrregularMessage {
-	if x, ok := x.GetUnion().(*Message_OneofMessage); ok {
-		return x.OneofMessage
-	}
-	return nil
-}
-
-func (x *Message) GetOneofAberrantMessage() *AberrantMessage {
-	if x, ok := x.GetUnion().(*Message_OneofAberrantMessage); ok {
-		return x.OneofAberrantMessage
-	}
-	return nil
-}
-
-func (x *Message) GetOptionalAberrantMessage() *AberrantMessage {
-	if x != nil {
-		return x.OptionalAberrantMessage
-	}
-	return nil
-}
-
-func (x *Message) GetRepeatedAberrantMessage() []*AberrantMessage {
-	if x != nil {
-		return x.RepeatedAberrantMessage
-	}
-	return nil
-}
-
-func (x *Message) GetRequiredAberrantMessage() *AberrantMessage {
-	if x != nil {
-		return x.RequiredAberrantMessage
-	}
-	return nil
-}
-
-func (x *Message) GetMapAberrantMessage() map[string]*AberrantMessage {
-	if x != nil {
-		return x.MapAberrantMessage
-	}
-	return nil
-}
-
-type isMessage_Union interface {
-	isMessage_Union()
-}
-
-type Message_OneofMessage struct {
-	OneofMessage *IrregularMessage `protobuf:"bytes,5,opt,name=oneof_message,json=oneofMessage,oneof"`
-}
-
-type Message_OneofAberrantMessage struct {
-	OneofAberrantMessage *AberrantMessage `protobuf:"bytes,6,opt,name=oneof_aberrant_message,json=oneofAberrantMessage,oneof"`
-}
-
-func (*Message_OneofMessage) isMessage_Union() {}
-
-func (*Message_OneofAberrantMessage) isMessage_Union() {}
-
-var File_internal_testprotos_irregular_test_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_irregular_test_proto_rawDesc = []byte{
-	0x0a, 0x28, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x69, 0x72, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x2f,
-	0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x17, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x72, 0x72, 0x65, 0x67, 0x75,
-	0x6c, 0x61, 0x72, 0x1a, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65,
-	0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x69, 0x72, 0x72, 0x65, 0x67, 0x75, 0x6c,
-	0x61, 0x72, 0x2f, 0x69, 0x72, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x22, 0x94, 0x09, 0x0a, 0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x54,
-	0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x72, 0x72, 0x65, 0x67, 0x75, 0x6c,
-	0x61, 0x72, 0x2e, 0x49, 0x72, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x12, 0x54, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69,
-	0x72, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x2e, 0x49, 0x72, 0x72, 0x65, 0x67, 0x75, 0x6c,
-	0x61, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x54, 0x0a, 0x10, 0x72, 0x65,
-	0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03,
-	0x20, 0x02, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x72, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x2e, 0x49,
-	0x72, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x12, 0x51, 0x0a, 0x0b, 0x6d, 0x61, 0x70, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
-	0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x72, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x61, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6d, 0x61, 0x70, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x12, 0x50, 0x0a, 0x0d, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x72, 0x72, 0x65, 0x67,
-	0x75, 0x6c, 0x61, 0x72, 0x2e, 0x49, 0x72, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x60, 0x0a, 0x16, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x61,
-	0x62, 0x65, 0x72, 0x72, 0x61, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
-	0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x72, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x2e,
-	0x41, 0x62, 0x65, 0x72, 0x72, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48,
-	0x00, 0x52, 0x14, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x41, 0x62, 0x65, 0x72, 0x72, 0x61, 0x6e, 0x74,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x64, 0x0a, 0x19, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x5f, 0x61, 0x62, 0x65, 0x72, 0x72, 0x61, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x72, 0x72, 0x65, 0x67,
-	0x75, 0x6c, 0x61, 0x72, 0x2e, 0x41, 0x62, 0x65, 0x72, 0x72, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x52, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x41, 0x62,
-	0x65, 0x72, 0x72, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x64, 0x0a,
-	0x19, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x62, 0x65, 0x72, 0x72, 0x61,
-	0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x69, 0x72, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x2e, 0x41, 0x62, 0x65, 0x72, 0x72,
-	0x61, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x17, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x41, 0x62, 0x65, 0x72, 0x72, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x12, 0x64, 0x0a, 0x19, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f,
-	0x61, 0x62, 0x65, 0x72, 0x72, 0x61, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x18, 0x09, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x72, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72,
-	0x2e, 0x41, 0x62, 0x65, 0x72, 0x72, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x52, 0x17, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x41, 0x62, 0x65, 0x72, 0x72, 0x61,
-	0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x6a, 0x0a, 0x14, 0x6d, 0x61, 0x70,
-	0x5f, 0x61, 0x62, 0x65, 0x72, 0x72, 0x61, 0x6e, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x72, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61,
-	0x72, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x61, 0x70, 0x41, 0x62, 0x65,
-	0x72, 0x72, 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x52, 0x12, 0x6d, 0x61, 0x70, 0x41, 0x62, 0x65, 0x72, 0x72, 0x61, 0x6e, 0x74, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x68, 0x0a, 0x0f, 0x4d, 0x61, 0x70, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3f, 0x0a, 0x05, 0x76, 0x61,
-	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x72, 0x72, 0x65, 0x67, 0x75,
-	0x6c, 0x61, 0x72, 0x2e, 0x49, 0x72, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
-	0x6f, 0x0a, 0x17, 0x4d, 0x61, 0x70, 0x41, 0x62, 0x65, 0x72, 0x72, 0x61, 0x6e, 0x74, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
-	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3e, 0x0a, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x72, 0x72, 0x65,
-	0x67, 0x75, 0x6c, 0x61, 0x72, 0x2e, 0x41, 0x62, 0x65, 0x72, 0x72, 0x61, 0x6e, 0x74, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
-	0x42, 0x07, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x42, 0x3a, 0x5a, 0x38, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
-	0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x69, 0x72, 0x72, 0x65,
-	0x67, 0x75, 0x6c, 0x61, 0x72,
-}
-
-var (
-	file_internal_testprotos_irregular_test_proto_rawDescOnce sync.Once
-	file_internal_testprotos_irregular_test_proto_rawDescData = file_internal_testprotos_irregular_test_proto_rawDesc
-)
-
-func file_internal_testprotos_irregular_test_proto_rawDescGZIP() []byte {
-	file_internal_testprotos_irregular_test_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_irregular_test_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_irregular_test_proto_rawDescData)
-	})
-	return file_internal_testprotos_irregular_test_proto_rawDescData
-}
-
-var file_internal_testprotos_irregular_test_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
-var file_internal_testprotos_irregular_test_proto_goTypes = []interface{}{
-	(*Message)(nil),          // 0: goproto.proto.irregular.Message
-	nil,                      // 1: goproto.proto.irregular.Message.MapMessageEntry
-	nil,                      // 2: goproto.proto.irregular.Message.MapAberrantMessageEntry
-	(*IrregularMessage)(nil), // 3: goproto.proto.irregular.IrregularMessage
-	(*AberrantMessage)(nil),  // 4: goproto.proto.irregular.AberrantMessage
-}
-var file_internal_testprotos_irregular_test_proto_depIdxs = []int32{
-	3,  // 0: goproto.proto.irregular.Message.optional_message:type_name -> goproto.proto.irregular.IrregularMessage
-	3,  // 1: goproto.proto.irregular.Message.repeated_message:type_name -> goproto.proto.irregular.IrregularMessage
-	3,  // 2: goproto.proto.irregular.Message.required_message:type_name -> goproto.proto.irregular.IrregularMessage
-	1,  // 3: goproto.proto.irregular.Message.map_message:type_name -> goproto.proto.irregular.Message.MapMessageEntry
-	3,  // 4: goproto.proto.irregular.Message.oneof_message:type_name -> goproto.proto.irregular.IrregularMessage
-	4,  // 5: goproto.proto.irregular.Message.oneof_aberrant_message:type_name -> goproto.proto.irregular.AberrantMessage
-	4,  // 6: goproto.proto.irregular.Message.optional_aberrant_message:type_name -> goproto.proto.irregular.AberrantMessage
-	4,  // 7: goproto.proto.irregular.Message.repeated_aberrant_message:type_name -> goproto.proto.irregular.AberrantMessage
-	4,  // 8: goproto.proto.irregular.Message.required_aberrant_message:type_name -> goproto.proto.irregular.AberrantMessage
-	2,  // 9: goproto.proto.irregular.Message.map_aberrant_message:type_name -> goproto.proto.irregular.Message.MapAberrantMessageEntry
-	3,  // 10: goproto.proto.irregular.Message.MapMessageEntry.value:type_name -> goproto.proto.irregular.IrregularMessage
-	4,  // 11: goproto.proto.irregular.Message.MapAberrantMessageEntry.value:type_name -> goproto.proto.irregular.AberrantMessage
-	12, // [12:12] is the sub-list for method output_type
-	12, // [12:12] is the sub-list for method input_type
-	12, // [12:12] is the sub-list for extension type_name
-	12, // [12:12] is the sub-list for extension extendee
-	0,  // [0:12] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_irregular_test_proto_init() }
-func file_internal_testprotos_irregular_test_proto_init() {
-	if File_internal_testprotos_irregular_test_proto != nil {
-		return
-	}
-	file_internal_testprotos_irregular_irregular_proto_init()
-	if !protoimpl.UnsafeEnabled {
-		file_internal_testprotos_irregular_test_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	file_internal_testprotos_irregular_test_proto_msgTypes[0].OneofWrappers = []interface{}{
-		(*Message_OneofMessage)(nil),
-		(*Message_OneofAberrantMessage)(nil),
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_irregular_test_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   3,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_internal_testprotos_irregular_test_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_irregular_test_proto_depIdxs,
-		MessageInfos:      file_internal_testprotos_irregular_test_proto_msgTypes,
-	}.Build()
-	File_internal_testprotos_irregular_test_proto = out.File
-	file_internal_testprotos_irregular_test_proto_rawDesc = nil
-	file_internal_testprotos_irregular_test_proto_goTypes = nil
-	file_internal_testprotos_irregular_test_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/irregular/test.proto b/internal/testprotos/irregular/test.proto
deleted file mode 100644
index b128f7e..0000000
--- a/internal/testprotos/irregular/test.proto
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// This file contains a message which references a message that implements the
-// proto.Message interface but does not have the structure of a normal generated
-// message.
-
-syntax = "proto2";
-
-package goproto.proto.irregular;
-
-import "internal/testprotos/irregular/irregular.proto";
-
-option go_package = "google.golang.org/protobuf/internal/testprotos/irregular";
-
-message Message {
-  optional IrregularMessage optional_message = 1;
-  repeated IrregularMessage repeated_message = 2;
-  required IrregularMessage required_message = 3;
-  map<string,IrregularMessage> map_message = 4;
-  oneof union {
-    IrregularMessage oneof_message = 5;
-    AberrantMessage oneof_aberrant_message = 6;
-  }
-
-  optional AberrantMessage optional_aberrant_message = 7;
-  repeated AberrantMessage repeated_aberrant_message = 8;
-  required AberrantMessage required_aberrant_message = 9;
-  map<string,AberrantMessage> map_aberrant_message = 10;
-}
diff --git a/internal/testprotos/legacy/bug1052/bug1052.pb.go b/internal/testprotos/legacy/bug1052/bug1052.pb.go
deleted file mode 100644
index 8906a8c..0000000
--- a/internal/testprotos/legacy/bug1052/bug1052.pb.go
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/legacy/bug1052/bug1052.proto
-
-package bug1052
-
-import (
-	fmt "fmt"
-	math "math"
-
-	proto "google.golang.org/protobuf/internal/protolegacy"
-	descriptor "google.golang.org/protobuf/types/descriptorpb"
-)
-
-// 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
-
-type Enum int32
-
-const (
-	Enum_ZERO Enum = 0
-)
-
-var Enum_name = map[int32]string{
-	0: "ZERO",
-}
-
-var Enum_value = map[string]int32{
-	"ZERO": 0,
-}
-
-func (x Enum) Enum() *Enum {
-	p := new(Enum)
-	*p = x
-	return p
-}
-
-func (x Enum) String() string {
-	return proto.EnumName(Enum_name, int32(x))
-}
-
-func (x *Enum) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(Enum_value, data, "Enum")
-	if err != nil {
-		return err
-	}
-	*x = Enum(value)
-	return nil
-}
-
-func (Enum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_2d34d4f47c51af27, []int{0}
-}
-
-var E_ExtensionEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*descriptor.MethodOptions)(nil),
-	ExtensionType: (*Enum)(nil),
-	Field:         5000,
-	Name:          "goproto.proto.legacy.extension_enum",
-	Tag:           "varint,5000,opt,name=extension_enum,enum=goproto.proto.legacy.Enum",
-	Filename:      "internal/testprotos/legacy/bug1052/bug1052.proto",
-}
-
-func init() {
-	proto.RegisterEnum("goproto.proto.legacy.Enum", Enum_name, Enum_value)
-	proto.RegisterExtension(E_ExtensionEnum)
-}
-
-func init() {
-	proto.RegisterFile("internal/testprotos/legacy/bug1052/bug1052.proto", fileDescriptor_2d34d4f47c51af27)
-}
-
-var fileDescriptor_2d34d4f47c51af27 = []byte{
-	// 200 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x32, 0xc8, 0xcc, 0x2b, 0x49,
-	0x2d, 0xca, 0x4b, 0xcc, 0xd1, 0x2f, 0x49, 0x2d, 0x2e, 0x29, 0x28, 0xca, 0x2f, 0xc9, 0x2f, 0xd6,
-	0xcf, 0x49, 0x4d, 0x4f, 0x4c, 0xae, 0xd4, 0x4f, 0x2a, 0x4d, 0x37, 0x34, 0x30, 0x35, 0x82, 0xd1,
-	0x7a, 0x60, 0x59, 0x21, 0x91, 0xf4, 0x7c, 0x30, 0x03, 0xc2, 0xd5, 0x83, 0xa8, 0x95, 0x52, 0x48,
-	0xcf, 0xcf, 0x4f, 0xcf, 0x49, 0xd5, 0x07, 0x0b, 0x26, 0x95, 0xa6, 0xe9, 0xa7, 0xa4, 0x16, 0x27,
-	0x17, 0x65, 0x16, 0x94, 0xe4, 0x17, 0x41, 0x14, 0x6a, 0x09, 0x70, 0xb1, 0xb8, 0xe6, 0x95, 0xe6,
-	0x0a, 0x71, 0x70, 0xb1, 0x44, 0xb9, 0x06, 0xf9, 0x0b, 0x30, 0x58, 0x25, 0x71, 0xf1, 0xa5, 0x56,
-	0x94, 0xa4, 0xe6, 0x15, 0x67, 0xe6, 0xe7, 0xc5, 0xa7, 0x82, 0xe4, 0xe4, 0xf4, 0x20, 0xc6, 0xe8,
-	0xc1, 0x8c, 0xd1, 0xf3, 0x4d, 0x2d, 0xc9, 0xc8, 0x4f, 0xf1, 0x2f, 0x28, 0xc9, 0xcc, 0xcf, 0x2b,
-	0x96, 0xe8, 0x50, 0x57, 0x60, 0xd4, 0xe0, 0x33, 0x92, 0xd2, 0xc3, 0xe6, 0x06, 0x3d, 0x90, 0xf1,
-	0x41, 0xbc, 0x70, 0x23, 0x41, 0x5c, 0x27, 0xfb, 0x28, 0x5b, 0xa8, 0x91, 0xe9, 0xf9, 0x39, 0x89,
-	0x79, 0xe9, 0x7a, 0xf9, 0x45, 0xe9, 0x08, 0x47, 0x12, 0xf6, 0x3c, 0x20, 0x00, 0x00, 0xff, 0xff,
-	0x1d, 0x9e, 0x09, 0x6e, 0x21, 0x01, 0x00, 0x00,
-}
diff --git a/internal/testprotos/legacy/bug1052/bug1052.proto b/internal/testprotos/legacy/bug1052/bug1052.proto
deleted file mode 100644
index adcb118..0000000
--- a/internal/testprotos/legacy/bug1052/bug1052.proto
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// This file exercises a deadlock in registation of legacy extensions:
-// https://github.com/golang/protobuf/issues/1052
-//
-// The corresponding .pb.go file was generated with protoc 3.11.3 and
-// protoc-gen-go 1.3.3.
-
-syntax = "proto2";
-
-package goproto.proto.legacy;
-
-import "google/protobuf/descriptor.proto";
-
-option go_package = "google.golang.org/protobuf/internal/testprotos/legacy/bug1052";
-
-enum Enum {
-  ZERO = 0;
-}
-
-extend google.protobuf.MethodOptions {
-  optional Enum extension_enum = 5000;
-}
-
diff --git a/internal/testprotos/legacy/bug1052/bug1052_test.go b/internal/testprotos/legacy/bug1052/bug1052_test.go
deleted file mode 100644
index eb0881c..0000000
--- a/internal/testprotos/legacy/bug1052/bug1052_test.go
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package bug1052_test
-
-import (
-	_ "google.golang.org/protobuf/internal/testprotos/legacy/bug1052"
-)
diff --git a/internal/testprotos/legacy/legacy.pb.go b/internal/testprotos/legacy/legacy.pb.go
deleted file mode 100644
index d486d3b..0000000
--- a/internal/testprotos/legacy/legacy.pb.go
+++ /dev/null
@@ -1,356 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/legacy/legacy.proto
-
-package legacy
-
-import (
-	proto2_20160225_2fc053c5 "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20160225_2fc053c5"
-	proto2_20160519_a4ab9ec5 "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20160519_a4ab9ec5"
-	proto2_20180125_92554152 "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20180125_92554152"
-	proto2_20180430_b4deda09 "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20180430_b4deda09"
-	proto2_20180814_aa810b61 "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20180814_aa810b61"
-	proto2_20190205_c823c79e "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20190205_c823c79e"
-	proto3_20160225_2fc053c5 "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20160225_2fc053c5"
-	proto3_20160519_a4ab9ec5 "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20160519_a4ab9ec5"
-	proto3_20180125_92554152 "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20180125_92554152"
-	proto3_20180430_b4deda09 "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20180430_b4deda09"
-	proto3_20180814_aa810b61 "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20180814_aa810b61"
-	proto3_20190205_c823c79e "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20190205_c823c79e"
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Legacy struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	F1  *proto2_20160225_2fc053c5.Message `protobuf:"bytes,1,opt,name=f1,proto3" json:"f1,omitempty"`
-	F2  *proto3_20160225_2fc053c5.Message `protobuf:"bytes,2,opt,name=f2,proto3" json:"f2,omitempty"`
-	F3  *proto2_20160519_a4ab9ec5.Message `protobuf:"bytes,3,opt,name=f3,proto3" json:"f3,omitempty"`
-	F4  *proto3_20160519_a4ab9ec5.Message `protobuf:"bytes,4,opt,name=f4,proto3" json:"f4,omitempty"`
-	F5  *proto2_20180125_92554152.Message `protobuf:"bytes,5,opt,name=f5,proto3" json:"f5,omitempty"`
-	F6  *proto3_20180125_92554152.Message `protobuf:"bytes,6,opt,name=f6,proto3" json:"f6,omitempty"`
-	F7  *proto2_20180430_b4deda09.Message `protobuf:"bytes,7,opt,name=f7,proto3" json:"f7,omitempty"`
-	F8  *proto3_20180430_b4deda09.Message `protobuf:"bytes,8,opt,name=f8,proto3" json:"f8,omitempty"`
-	F9  *proto2_20180814_aa810b61.Message `protobuf:"bytes,9,opt,name=f9,proto3" json:"f9,omitempty"`
-	F10 *proto3_20180814_aa810b61.Message `protobuf:"bytes,10,opt,name=f10,proto3" json:"f10,omitempty"`
-	F11 *proto2_20190205_c823c79e.Message `protobuf:"bytes,11,opt,name=f11,proto3" json:"f11,omitempty"`
-	F12 *proto3_20190205_c823c79e.Message `protobuf:"bytes,12,opt,name=f12,proto3" json:"f12,omitempty"`
-}
-
-func (x *Legacy) Reset() {
-	*x = Legacy{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_legacy_legacy_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Legacy) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Legacy) ProtoMessage() {}
-
-func (x *Legacy) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_legacy_legacy_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Legacy.ProtoReflect.Descriptor instead.
-func (*Legacy) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_legacy_legacy_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Legacy) GetF1() *proto2_20160225_2fc053c5.Message {
-	if x != nil {
-		return x.F1
-	}
-	return nil
-}
-
-func (x *Legacy) GetF2() *proto3_20160225_2fc053c5.Message {
-	if x != nil {
-		return x.F2
-	}
-	return nil
-}
-
-func (x *Legacy) GetF3() *proto2_20160519_a4ab9ec5.Message {
-	if x != nil {
-		return x.F3
-	}
-	return nil
-}
-
-func (x *Legacy) GetF4() *proto3_20160519_a4ab9ec5.Message {
-	if x != nil {
-		return x.F4
-	}
-	return nil
-}
-
-func (x *Legacy) GetF5() *proto2_20180125_92554152.Message {
-	if x != nil {
-		return x.F5
-	}
-	return nil
-}
-
-func (x *Legacy) GetF6() *proto3_20180125_92554152.Message {
-	if x != nil {
-		return x.F6
-	}
-	return nil
-}
-
-func (x *Legacy) GetF7() *proto2_20180430_b4deda09.Message {
-	if x != nil {
-		return x.F7
-	}
-	return nil
-}
-
-func (x *Legacy) GetF8() *proto3_20180430_b4deda09.Message {
-	if x != nil {
-		return x.F8
-	}
-	return nil
-}
-
-func (x *Legacy) GetF9() *proto2_20180814_aa810b61.Message {
-	if x != nil {
-		return x.F9
-	}
-	return nil
-}
-
-func (x *Legacy) GetF10() *proto3_20180814_aa810b61.Message {
-	if x != nil {
-		return x.F10
-	}
-	return nil
-}
-
-func (x *Legacy) GetF11() *proto2_20190205_c823c79e.Message {
-	if x != nil {
-		return x.F11
-	}
-	return nil
-}
-
-func (x *Legacy) GetF12() *proto3_20190205_c823c79e.Message {
-	if x != nil {
-		return x.F12
-	}
-	return nil
-}
-
-var File_internal_testprotos_legacy_legacy_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_legacy_legacy_proto_rawDesc = []byte{
-	0x0a, 0x27, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x6c, 0x65, 0x67,
-	0x61, 0x63, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x1a, 0x3e, 0x69, 0x6e,
-	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x73, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x5f,
-	0x32, 0x30, 0x31, 0x36, 0x30, 0x32, 0x32, 0x35, 0x5f, 0x32, 0x66, 0x63, 0x30, 0x35, 0x33, 0x63,
-	0x35, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x69, 0x6e,
-	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x73, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x5f,
-	0x32, 0x30, 0x31, 0x36, 0x30, 0x32, 0x32, 0x35, 0x5f, 0x32, 0x66, 0x63, 0x30, 0x35, 0x33, 0x63,
-	0x35, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x69, 0x6e,
-	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x73, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x5f,
-	0x32, 0x30, 0x31, 0x36, 0x30, 0x35, 0x31, 0x39, 0x5f, 0x61, 0x34, 0x61, 0x62, 0x39, 0x65, 0x63,
-	0x35, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x69, 0x6e,
-	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x73, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x5f,
-	0x32, 0x30, 0x31, 0x36, 0x30, 0x35, 0x31, 0x39, 0x5f, 0x61, 0x34, 0x61, 0x62, 0x39, 0x65, 0x63,
-	0x35, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x69, 0x6e,
-	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x73, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x5f,
-	0x32, 0x30, 0x31, 0x38, 0x30, 0x31, 0x32, 0x35, 0x5f, 0x39, 0x32, 0x35, 0x35, 0x34, 0x31, 0x35,
-	0x32, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x69, 0x6e,
-	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x73, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x5f,
-	0x32, 0x30, 0x31, 0x38, 0x30, 0x31, 0x32, 0x35, 0x5f, 0x39, 0x32, 0x35, 0x35, 0x34, 0x31, 0x35,
-	0x32, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x69, 0x6e,
-	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x73, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x5f,
-	0x32, 0x30, 0x31, 0x38, 0x30, 0x34, 0x33, 0x30, 0x5f, 0x62, 0x34, 0x64, 0x65, 0x64, 0x61, 0x30,
-	0x39, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x69, 0x6e,
-	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x73, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x5f,
-	0x32, 0x30, 0x31, 0x38, 0x30, 0x34, 0x33, 0x30, 0x5f, 0x62, 0x34, 0x64, 0x65, 0x64, 0x61, 0x30,
-	0x39, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x69, 0x6e,
-	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x73, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x5f,
-	0x32, 0x30, 0x31, 0x38, 0x30, 0x38, 0x31, 0x34, 0x5f, 0x61, 0x61, 0x38, 0x31, 0x30, 0x62, 0x36,
-	0x31, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x69, 0x6e,
-	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x73, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x5f,
-	0x32, 0x30, 0x31, 0x38, 0x30, 0x38, 0x31, 0x34, 0x5f, 0x61, 0x61, 0x38, 0x31, 0x30, 0x62, 0x36,
-	0x31, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x69, 0x6e,
-	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x73, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x5f,
-	0x32, 0x30, 0x31, 0x39, 0x30, 0x32, 0x30, 0x35, 0x5f, 0x63, 0x38, 0x32, 0x33, 0x63, 0x37, 0x39,
-	0x65, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x3e, 0x69, 0x6e,
-	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x73, 0x2f, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x5f,
-	0x32, 0x30, 0x31, 0x39, 0x30, 0x32, 0x30, 0x35, 0x5f, 0x63, 0x38, 0x32, 0x33, 0x63, 0x37, 0x39,
-	0x65, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xde, 0x05, 0x0a,
-	0x06, 0x4c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x12, 0x3a, 0x0a, 0x02, 0x66, 0x31, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c,
-	0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x5f, 0x32,
-	0x30, 0x31, 0x36, 0x30, 0x32, 0x32, 0x35, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x02, 0x66, 0x31, 0x12, 0x3a, 0x0a, 0x02, 0x66, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
-	0x6f, 0x72, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x5f, 0x32, 0x30, 0x31, 0x36, 0x30,
-	0x32, 0x32, 0x35, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x02, 0x66, 0x32, 0x12,
-	0x3a, 0x0a, 0x02, 0x66, 0x33, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x5f, 0x32, 0x30, 0x31, 0x36, 0x30, 0x35, 0x31, 0x39, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x02, 0x66, 0x33, 0x12, 0x3a, 0x0a, 0x02, 0x66,
-	0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x33, 0x5f, 0x32, 0x30, 0x31, 0x36, 0x30, 0x35, 0x31, 0x39, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x02, 0x66, 0x34, 0x12, 0x3a, 0x0a, 0x02, 0x66, 0x35, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c,
-	0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x5f, 0x32,
-	0x30, 0x31, 0x38, 0x30, 0x31, 0x32, 0x35, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x02, 0x66, 0x35, 0x12, 0x3a, 0x0a, 0x02, 0x66, 0x36, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
-	0x6f, 0x72, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x5f, 0x32, 0x30, 0x31, 0x38, 0x30,
-	0x31, 0x32, 0x35, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x02, 0x66, 0x36, 0x12,
-	0x3a, 0x0a, 0x02, 0x66, 0x37, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x5f, 0x32, 0x30, 0x31, 0x38, 0x30, 0x34, 0x33, 0x30, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x02, 0x66, 0x37, 0x12, 0x3a, 0x0a, 0x02, 0x66,
-	0x38, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x33, 0x5f, 0x32, 0x30, 0x31, 0x38, 0x30, 0x34, 0x33, 0x30, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x02, 0x66, 0x38, 0x12, 0x3a, 0x0a, 0x02, 0x66, 0x39, 0x18, 0x09, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c,
-	0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x5f, 0x32,
-	0x30, 0x31, 0x38, 0x30, 0x38, 0x31, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x02, 0x66, 0x39, 0x12, 0x3c, 0x0a, 0x03, 0x66, 0x31, 0x30, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
-	0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x5f, 0x32, 0x30, 0x31, 0x38,
-	0x30, 0x38, 0x31, 0x34, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x03, 0x66, 0x31,
-	0x30, 0x12, 0x3c, 0x0a, 0x03, 0x66, 0x31, 0x31, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f,
-	0x72, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, 0x5f, 0x32, 0x30, 0x31, 0x39, 0x30, 0x32,
-	0x30, 0x35, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x03, 0x66, 0x31, 0x31, 0x12,
-	0x3c, 0x0a, 0x03, 0x66, 0x31, 0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x5f, 0x32, 0x30, 0x31, 0x39, 0x30, 0x32, 0x30, 0x35,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x03, 0x66, 0x31, 0x32, 0x42, 0x37, 0x5a,
-	0x35, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f,
-	0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65,
-	0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f,
-	0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_internal_testprotos_legacy_legacy_proto_rawDescOnce sync.Once
-	file_internal_testprotos_legacy_legacy_proto_rawDescData = file_internal_testprotos_legacy_legacy_proto_rawDesc
-)
-
-func file_internal_testprotos_legacy_legacy_proto_rawDescGZIP() []byte {
-	file_internal_testprotos_legacy_legacy_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_legacy_legacy_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_legacy_legacy_proto_rawDescData)
-	})
-	return file_internal_testprotos_legacy_legacy_proto_rawDescData
-}
-
-var file_internal_testprotos_legacy_legacy_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_internal_testprotos_legacy_legacy_proto_goTypes = []interface{}{
-	(*Legacy)(nil),                           // 0: google.golang.org.Legacy
-	(*proto2_20160225_2fc053c5.Message)(nil), // 1: google.golang.org.proto2_20160225.Message
-	(*proto3_20160225_2fc053c5.Message)(nil), // 2: google.golang.org.proto3_20160225.Message
-	(*proto2_20160519_a4ab9ec5.Message)(nil), // 3: google.golang.org.proto2_20160519.Message
-	(*proto3_20160519_a4ab9ec5.Message)(nil), // 4: google.golang.org.proto3_20160519.Message
-	(*proto2_20180125_92554152.Message)(nil), // 5: google.golang.org.proto2_20180125.Message
-	(*proto3_20180125_92554152.Message)(nil), // 6: google.golang.org.proto3_20180125.Message
-	(*proto2_20180430_b4deda09.Message)(nil), // 7: google.golang.org.proto2_20180430.Message
-	(*proto3_20180430_b4deda09.Message)(nil), // 8: google.golang.org.proto3_20180430.Message
-	(*proto2_20180814_aa810b61.Message)(nil), // 9: google.golang.org.proto2_20180814.Message
-	(*proto3_20180814_aa810b61.Message)(nil), // 10: google.golang.org.proto3_20180814.Message
-	(*proto2_20190205_c823c79e.Message)(nil), // 11: google.golang.org.proto2_20190205.Message
-	(*proto3_20190205_c823c79e.Message)(nil), // 12: google.golang.org.proto3_20190205.Message
-}
-var file_internal_testprotos_legacy_legacy_proto_depIdxs = []int32{
-	1,  // 0: google.golang.org.Legacy.f1:type_name -> google.golang.org.proto2_20160225.Message
-	2,  // 1: google.golang.org.Legacy.f2:type_name -> google.golang.org.proto3_20160225.Message
-	3,  // 2: google.golang.org.Legacy.f3:type_name -> google.golang.org.proto2_20160519.Message
-	4,  // 3: google.golang.org.Legacy.f4:type_name -> google.golang.org.proto3_20160519.Message
-	5,  // 4: google.golang.org.Legacy.f5:type_name -> google.golang.org.proto2_20180125.Message
-	6,  // 5: google.golang.org.Legacy.f6:type_name -> google.golang.org.proto3_20180125.Message
-	7,  // 6: google.golang.org.Legacy.f7:type_name -> google.golang.org.proto2_20180430.Message
-	8,  // 7: google.golang.org.Legacy.f8:type_name -> google.golang.org.proto3_20180430.Message
-	9,  // 8: google.golang.org.Legacy.f9:type_name -> google.golang.org.proto2_20180814.Message
-	10, // 9: google.golang.org.Legacy.f10:type_name -> google.golang.org.proto3_20180814.Message
-	11, // 10: google.golang.org.Legacy.f11:type_name -> google.golang.org.proto2_20190205.Message
-	12, // 11: google.golang.org.Legacy.f12:type_name -> google.golang.org.proto3_20190205.Message
-	12, // [12:12] is the sub-list for method output_type
-	12, // [12:12] is the sub-list for method input_type
-	12, // [12:12] is the sub-list for extension type_name
-	12, // [12:12] is the sub-list for extension extendee
-	0,  // [0:12] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_legacy_legacy_proto_init() }
-func file_internal_testprotos_legacy_legacy_proto_init() {
-	if File_internal_testprotos_legacy_legacy_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_internal_testprotos_legacy_legacy_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Legacy); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_legacy_legacy_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_internal_testprotos_legacy_legacy_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_legacy_legacy_proto_depIdxs,
-		MessageInfos:      file_internal_testprotos_legacy_legacy_proto_msgTypes,
-	}.Build()
-	File_internal_testprotos_legacy_legacy_proto = out.File
-	file_internal_testprotos_legacy_legacy_proto_rawDesc = nil
-	file_internal_testprotos_legacy_legacy_proto_goTypes = nil
-	file_internal_testprotos_legacy_legacy_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/legacy/legacy.proto b/internal/testprotos/legacy/legacy.proto
deleted file mode 100644
index 7f59ebc..0000000
--- a/internal/testprotos/legacy/legacy.proto
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-
-package google.golang.org;
-option go_package = "google.golang.org/protobuf/internal/testprotos/legacy";
-
-// This file imports other files generated from a build of protoc-gen-go
-// locked to a specific version. For all imports, they were built using
-// Go v1.13 and protoc v3.11.12. This package is used to test compatibility with
-// checked in generated code that cannot easily change.
-// As such, there should never be a need to update these generated files.
-//
-// The specific version of protoc-gen-go used is encoded in the file path:
-//	${NAME}_${COMMIT_DATE}_${COMMIT_HASH}/test.proto
-//
-// To avoid a dependency on the v1 module, we perform the following
-// import path replacement to all generated .pb.go files:
-//	"github.com/golang/protobuf/proto" => "google.golang.org/protobuf/internal/protolegacy"
-
-// The oldest supported version of protoc-gen-go is 2fc053c5,
-// which finished adding descriptor methods to all protobuf types.
-import "internal/testprotos/legacy/proto2_20160225_2fc053c5/test.proto"; // v0.0.0
-import "internal/testprotos/legacy/proto3_20160225_2fc053c5/test.proto"; // v0.0.0
-// Changes from 20160225 to 20160519:
-//	* Nothing noteworthy to generated code
-import "internal/testprotos/legacy/proto2_20160519_a4ab9ec5/test.proto"; // v0.0.0
-import "internal/testprotos/legacy/proto3_20160519_a4ab9ec5/test.proto"; // v0.0.0
-// Changes from 20160519 to 20180125:
-//	* Removed ExtensionMap method and XXX_extensions field from messages
-//	* Added embedded proto.XXX_InternalExtensions field to messages
-//	* Added proto.ExtensionDesc.Filename field
-//	* Added registration for file descriptor
-//	* Added Get accessor methods for all fields in proto3 messages
-//	* Proto3 repeated primitives are packed by default
-import "internal/testprotos/legacy/proto2_20180125_92554152/test.proto"; // v1.0.0
-import "internal/testprotos/legacy/proto3_20180125_92554152/test.proto"; // v1.0.0
-// Changes from 20180125 to 20180430:
-//	* Added XXX_unrecognized field to proto3 messages
-//	* Added XXX_NoUnkeyedLiteral field to messages
-//	* Added XXX_sizecache field to messages
-//	* Added XXX_Unmarshal method to messages
-//	* Added XXX_Marshal method to messages
-//	* Added XXX_Merge method to messages
-//	* Added XXX_Size method to messages
-//	* Added XXX_DiscardUnknown method to messages
-//	* Added dependency on proto.InternalMessageInfo for table-driven logic
-//	* Added registration for map types
-import "internal/testprotos/legacy/proto2_20180430_b4deda09/test.proto"; // v1.1.0
-import "internal/testprotos/legacy/proto3_20180430_b4deda09/test.proto"; // v1.1.0
-// Changes from 20180430 to 20180814:
-//	* Added "proto3" struct tag to all fields in proto3 messages
-import "internal/testprotos/legacy/proto2_20180814_aa810b61/test.proto"; // v1.2.0
-import "internal/testprotos/legacy/proto3_20180814_aa810b61/test.proto"; // v1.2.0
-// Changes from 20180814 to 20190205:
-//	* Changed the XXX_OneofFuncs method to XXX_OneofWrappers
-//	* Various syntactical changes to make the output more consistent
-import "internal/testprotos/legacy/proto2_20190205_c823c79e/test.proto"; // v1.3.0
-import "internal/testprotos/legacy/proto3_20190205_c823c79e/test.proto"; // v1.3.0
-
-message Legacy {
-	google.golang.org.proto2_20160225.Message f1 = 1;
-	google.golang.org.proto3_20160225.Message f2 = 2;
-	google.golang.org.proto2_20160519.Message f3 = 3;
-	google.golang.org.proto3_20160519.Message f4 = 4;
-	google.golang.org.proto2_20180125.Message f5 = 5;
-	google.golang.org.proto3_20180125.Message f6 = 6;
-	google.golang.org.proto2_20180430.Message f7 = 7;
-	google.golang.org.proto3_20180430.Message f8 = 8;
-	google.golang.org.proto2_20180814.Message f9 = 9;
-	google.golang.org.proto3_20180814.Message f10 = 10;
-	google.golang.org.proto2_20190205.Message f11 = 11;
-	google.golang.org.proto3_20190205.Message f12 = 12;
-}
diff --git a/internal/testprotos/legacy/proto2_20160225_2fc053c5/test.pb.go b/internal/testprotos/legacy/proto2_20160225_2fc053c5/test.pb.go
deleted file mode 100644
index 8e0835e..0000000
--- a/internal/testprotos/legacy/proto2_20160225_2fc053c5/test.pb.go
+++ /dev/null
@@ -1,3532 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go.
-// source: proto2_20160225_2fc053c5/test.proto
-// DO NOT EDIT!
-
-/*
-Package proto2_20160225_2fc053c5 is a generated protocol buffer package.
-
-It is generated from these files:
-	proto2_20160225_2fc053c5/test.proto
-
-It has these top-level messages:
-	SiblingMessage
-	Message
-*/
-package proto2_20160225_2fc053c5
-
-import proto "google.golang.org/protobuf/internal/protolegacy"
-import fmt "fmt"
-import 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.
-const _ = proto.ProtoPackageIsVersion1
-
-type SiblingEnum int32
-
-const (
-	SiblingEnum_ALPHA   SiblingEnum = 0
-	SiblingEnum_BRAVO   SiblingEnum = 10
-	SiblingEnum_CHARLIE SiblingEnum = 200
-)
-
-var SiblingEnum_name = map[int32]string{
-	0:   "ALPHA",
-	10:  "BRAVO",
-	200: "CHARLIE",
-}
-var SiblingEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   10,
-	"CHARLIE": 200,
-}
-
-func (x SiblingEnum) Enum() *SiblingEnum {
-	p := new(SiblingEnum)
-	*p = x
-	return p
-}
-func (x SiblingEnum) String() string {
-	return proto.EnumName(SiblingEnum_name, int32(x))
-}
-func (x *SiblingEnum) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(SiblingEnum_value, data, "SiblingEnum")
-	if err != nil {
-		return err
-	}
-	*x = SiblingEnum(value)
-	return nil
-}
-func (SiblingEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
-
-type Message_ChildEnum int32
-
-const (
-	Message_ALPHA   Message_ChildEnum = 0
-	Message_BRAVO   Message_ChildEnum = 1
-	Message_CHARLIE Message_ChildEnum = 2
-)
-
-var Message_ChildEnum_name = map[int32]string{
-	0: "ALPHA",
-	1: "BRAVO",
-	2: "CHARLIE",
-}
-var Message_ChildEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   1,
-	"CHARLIE": 2,
-}
-
-func (x Message_ChildEnum) Enum() *Message_ChildEnum {
-	p := new(Message_ChildEnum)
-	*p = x
-	return p
-}
-func (x Message_ChildEnum) String() string {
-	return proto.EnumName(Message_ChildEnum_name, int32(x))
-}
-func (x *Message_ChildEnum) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(Message_ChildEnum_value, data, "Message_ChildEnum")
-	if err != nil {
-		return err
-	}
-	*x = Message_ChildEnum(value)
-	return nil
-}
-func (Message_ChildEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
-
-type SiblingMessage struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	F4               *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *SiblingMessage) Reset()                    { *m = SiblingMessage{} }
-func (m *SiblingMessage) String() string            { return proto.CompactTextString(m) }
-func (*SiblingMessage) ProtoMessage()               {}
-func (*SiblingMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
-
-func (m *SiblingMessage) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *SiblingMessage) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *SiblingMessage) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func (m *SiblingMessage) GetF4() *Message {
-	if m != nil {
-		return m.F4
-	}
-	return nil
-}
-
-type Message struct {
-	Namedgroup *Message_NamedGroup `protobuf:"group,1,opt,name=NamedGroup,json=namedgroup" json:"namedgroup,omitempty"`
-	// Optional fields.
-	OptionalBool           *bool                  `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
-	OptionalInt32          *int32                 `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
-	OptionalSint32         *int32                 `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
-	OptionalUint32         *uint32                `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
-	OptionalInt64          *int64                 `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
-	OptionalSint64         *int64                 `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
-	OptionalUint64         *uint64                `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
-	OptionalFixed32        *uint32                `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
-	OptionalSfixed32       *int32                 `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
-	OptionalFloat          *float32               `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
-	OptionalFixed64        *uint64                `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
-	OptionalSfixed64       *int64                 `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
-	OptionalDouble         *float64               `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
-	OptionalString         *string                `protobuf:"bytes,113,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
-	OptionalBytes          []byte                 `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
-	OptionalChildEnum      *Message_ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,enum=google.golang.org.proto2_20160225.Message_ChildEnum" json:"optional_child_enum,omitempty"`
-	OptionalChildMessage   *Message_ChildMessage  `protobuf:"bytes,116,opt,name=optional_child_message,json=optionalChildMessage" json:"optional_child_message,omitempty"`
-	OptionalNamedGroup     *Message_NamedGroup    `protobuf:"bytes,117,opt,name=optional_named_group,json=optionalNamedGroup" json:"optional_named_group,omitempty"`
-	OptionalSiblingEnum    *SiblingEnum           `protobuf:"varint,118,opt,name=optional_sibling_enum,json=optionalSiblingEnum,enum=google.golang.org.proto2_20160225.SiblingEnum" json:"optional_sibling_enum,omitempty"`
-	OptionalSiblingMessage *SiblingMessage        `protobuf:"bytes,119,opt,name=optional_sibling_message,json=optionalSiblingMessage" json:"optional_sibling_message,omitempty"`
-	Optionalgroup          *Message_OptionalGroup `protobuf:"group,120,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
-	// Optional default fields.
-	DefaultedBool        *bool              `protobuf:"varint,200,opt,name=defaulted_bool,json=defaultedBool,def=1" json:"defaulted_bool,omitempty"`
-	DefaultedInt32       *int32             `protobuf:"varint,201,opt,name=defaulted_int32,json=defaultedInt32,def=-12345" json:"defaulted_int32,omitempty"`
-	DefaultedSint32      *int32             `protobuf:"zigzag32,202,opt,name=defaulted_sint32,json=defaultedSint32,def=-3200" json:"defaulted_sint32,omitempty"`
-	DefaultedUint32      *uint32            `protobuf:"varint,203,opt,name=defaulted_uint32,json=defaultedUint32,def=3200" json:"defaulted_uint32,omitempty"`
-	DefaultedInt64       *int64             `protobuf:"varint,204,opt,name=defaulted_int64,json=defaultedInt64,def=-123456789" json:"defaulted_int64,omitempty"`
-	DefaultedSint64      *int64             `protobuf:"zigzag64,205,opt,name=defaulted_sint64,json=defaultedSint64,def=-6400" json:"defaulted_sint64,omitempty"`
-	DefaultedUint64      *uint64            `protobuf:"varint,206,opt,name=defaulted_uint64,json=defaultedUint64,def=6400" json:"defaulted_uint64,omitempty"`
-	DefaultedFixed32     *uint32            `protobuf:"fixed32,207,opt,name=defaulted_fixed32,json=defaultedFixed32,def=320000" json:"defaulted_fixed32,omitempty"`
-	DefaultedSfixed32    *int32             `protobuf:"fixed32,208,opt,name=defaulted_sfixed32,json=defaultedSfixed32,def=-320000" json:"defaulted_sfixed32,omitempty"`
-	DefaultedFloat       *float32           `protobuf:"fixed32,209,opt,name=defaulted_float,json=defaultedFloat,def=3.14159" json:"defaulted_float,omitempty"`
-	DefaultedFixed64     *uint64            `protobuf:"fixed64,210,opt,name=defaulted_fixed64,json=defaultedFixed64,def=640000" json:"defaulted_fixed64,omitempty"`
-	DefaultedSfixed64    *int64             `protobuf:"fixed64,211,opt,name=defaulted_sfixed64,json=defaultedSfixed64,def=-640000" json:"defaulted_sfixed64,omitempty"`
-	DefaultedDouble      *float64           `protobuf:"fixed64,212,opt,name=defaulted_double,json=defaultedDouble,def=3.14159265359" json:"defaulted_double,omitempty"`
-	DefaultedString      *string            `protobuf:"bytes,213,opt,name=defaulted_string,json=defaultedString,def=hello, \"world!\"\n" json:"defaulted_string,omitempty"`
-	DefaultedBytes       []byte             `protobuf:"bytes,214,opt,name=defaulted_bytes,json=defaultedBytes,def=dead\\336\\255\\276\\357beef" json:"defaulted_bytes,omitempty"`
-	DefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,215,opt,name=defaulted_child_enum,json=defaultedChildEnum,enum=google.golang.org.proto2_20160225.Message_ChildEnum,def=0" json:"defaulted_child_enum,omitempty"`
-	DefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,216,opt,name=defaulted_sibling_enum,json=defaultedSiblingEnum,enum=google.golang.org.proto2_20160225.SiblingEnum,def=0" json:"defaulted_sibling_enum,omitempty"`
-	// Required fields.
-	RequiredBool           *bool                  `protobuf:"varint,300,req,name=required_bool,json=requiredBool" json:"required_bool,omitempty"`
-	RequiredInt32          *int32                 `protobuf:"varint,301,req,name=required_int32,json=requiredInt32" json:"required_int32,omitempty"`
-	RequiredSint32         *int32                 `protobuf:"zigzag32,302,req,name=required_sint32,json=requiredSint32" json:"required_sint32,omitempty"`
-	RequiredUint32         *uint32                `protobuf:"varint,303,req,name=required_uint32,json=requiredUint32" json:"required_uint32,omitempty"`
-	RequiredInt64          *int64                 `protobuf:"varint,304,req,name=required_int64,json=requiredInt64" json:"required_int64,omitempty"`
-	RequiredSint64         *int64                 `protobuf:"zigzag64,305,req,name=required_sint64,json=requiredSint64" json:"required_sint64,omitempty"`
-	RequiredUint64         *uint64                `protobuf:"varint,306,req,name=required_uint64,json=requiredUint64" json:"required_uint64,omitempty"`
-	RequiredFixed32        *uint32                `protobuf:"fixed32,307,req,name=required_fixed32,json=requiredFixed32" json:"required_fixed32,omitempty"`
-	RequiredSfixed32       *int32                 `protobuf:"fixed32,308,req,name=required_sfixed32,json=requiredSfixed32" json:"required_sfixed32,omitempty"`
-	RequiredFloat          *float32               `protobuf:"fixed32,309,req,name=required_float,json=requiredFloat" json:"required_float,omitempty"`
-	RequiredFixed64        *uint64                `protobuf:"fixed64,310,req,name=required_fixed64,json=requiredFixed64" json:"required_fixed64,omitempty"`
-	RequiredSfixed64       *int64                 `protobuf:"fixed64,311,req,name=required_sfixed64,json=requiredSfixed64" json:"required_sfixed64,omitempty"`
-	RequiredDouble         *float64               `protobuf:"fixed64,312,req,name=required_double,json=requiredDouble" json:"required_double,omitempty"`
-	RequiredString         *string                `protobuf:"bytes,313,req,name=required_string,json=requiredString" json:"required_string,omitempty"`
-	RequiredBytes          []byte                 `protobuf:"bytes,314,req,name=required_bytes,json=requiredBytes" json:"required_bytes,omitempty"`
-	RequiredChildEnum      *Message_ChildEnum     `protobuf:"varint,315,req,name=required_child_enum,json=requiredChildEnum,enum=google.golang.org.proto2_20160225.Message_ChildEnum" json:"required_child_enum,omitempty"`
-	RequiredChildMessage   *Message_ChildMessage  `protobuf:"bytes,316,req,name=required_child_message,json=requiredChildMessage" json:"required_child_message,omitempty"`
-	RequiredNamedGroup     *Message_NamedGroup    `protobuf:"bytes,317,req,name=required_named_group,json=requiredNamedGroup" json:"required_named_group,omitempty"`
-	RequiredSiblingEnum    *SiblingEnum           `protobuf:"varint,318,req,name=required_sibling_enum,json=requiredSiblingEnum,enum=google.golang.org.proto2_20160225.SiblingEnum" json:"required_sibling_enum,omitempty"`
-	RequiredSiblingMessage *SiblingMessage        `protobuf:"bytes,319,req,name=required_sibling_message,json=requiredSiblingMessage" json:"required_sibling_message,omitempty"`
-	Requiredgroup          *Message_RequiredGroup `protobuf:"group,320,req,name=RequiredGroup,json=requiredgroup" json:"requiredgroup,omitempty"`
-	// Required default fields.
-	RequiredDefaultedBool        *bool              `protobuf:"varint,400,req,name=required_defaulted_bool,json=requiredDefaultedBool,def=1" json:"required_defaulted_bool,omitempty"`
-	RequiredDefaultedInt32       *int32             `protobuf:"varint,401,req,name=required_defaulted_int32,json=requiredDefaultedInt32,def=-12345" json:"required_defaulted_int32,omitempty"`
-	RequiredDefaultedSint32      *int32             `protobuf:"zigzag32,402,req,name=required_defaulted_sint32,json=requiredDefaultedSint32,def=-3200" json:"required_defaulted_sint32,omitempty"`
-	RequiredDefaultedUint32      *uint32            `protobuf:"varint,403,req,name=required_defaulted_uint32,json=requiredDefaultedUint32,def=3200" json:"required_defaulted_uint32,omitempty"`
-	RequiredDefaultedInt64       *int64             `protobuf:"varint,404,req,name=required_defaulted_int64,json=requiredDefaultedInt64,def=-123456789" json:"required_defaulted_int64,omitempty"`
-	RequiredDefaultedSint64      *int64             `protobuf:"zigzag64,405,req,name=required_defaulted_sint64,json=requiredDefaultedSint64,def=-6400" json:"required_defaulted_sint64,omitempty"`
-	RequiredDefaultedUint64      *uint64            `protobuf:"varint,406,req,name=required_defaulted_uint64,json=requiredDefaultedUint64,def=6400" json:"required_defaulted_uint64,omitempty"`
-	RequiredDefaultedFixed32     *uint32            `protobuf:"fixed32,407,req,name=required_defaulted_fixed32,json=requiredDefaultedFixed32,def=320000" json:"required_defaulted_fixed32,omitempty"`
-	RequiredDefaultedSfixed32    *int32             `protobuf:"fixed32,408,req,name=required_defaulted_sfixed32,json=requiredDefaultedSfixed32,def=-320000" json:"required_defaulted_sfixed32,omitempty"`
-	RequiredDefaultedFloat       *float32           `protobuf:"fixed32,409,req,name=required_defaulted_float,json=requiredDefaultedFloat,def=3.14159" json:"required_defaulted_float,omitempty"`
-	RequiredDefaultedFixed64     *uint64            `protobuf:"fixed64,410,req,name=required_defaulted_fixed64,json=requiredDefaultedFixed64,def=640000" json:"required_defaulted_fixed64,omitempty"`
-	RequiredDefaultedSfixed64    *int64             `protobuf:"fixed64,411,req,name=required_defaulted_sfixed64,json=requiredDefaultedSfixed64,def=-640000" json:"required_defaulted_sfixed64,omitempty"`
-	RequiredDefaultedDouble      *float64           `protobuf:"fixed64,412,req,name=required_defaulted_double,json=requiredDefaultedDouble,def=3.14159265359" json:"required_defaulted_double,omitempty"`
-	RequiredDefaultedString      *string            `protobuf:"bytes,413,req,name=required_defaulted_string,json=requiredDefaultedString,def=hello, \"world!\"\n" json:"required_defaulted_string,omitempty"`
-	RequiredDefaultedBytes       []byte             `protobuf:"bytes,414,req,name=required_defaulted_bytes,json=requiredDefaultedBytes,def=dead\\336\\255\\276\\357beef" json:"required_defaulted_bytes,omitempty"`
-	RequiredDefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,415,req,name=required_defaulted_child_enum,json=requiredDefaultedChildEnum,enum=google.golang.org.proto2_20160225.Message_ChildEnum,def=0" json:"required_defaulted_child_enum,omitempty"`
-	RequiredDefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,416,req,name=required_defaulted_sibling_enum,json=requiredDefaultedSiblingEnum,enum=google.golang.org.proto2_20160225.SiblingEnum,def=0" json:"required_defaulted_sibling_enum,omitempty"`
-	// Repeated fields.
-	RepeatedBool           []bool                   `protobuf:"varint,500,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
-	RepeatedInt32          []int32                  `protobuf:"varint,501,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
-	RepeatedSint32         []int32                  `protobuf:"zigzag32,502,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
-	RepeatedUint32         []uint32                 `protobuf:"varint,503,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
-	RepeatedInt64          []int64                  `protobuf:"varint,504,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
-	RepeatedSint64         []int64                  `protobuf:"zigzag64,505,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
-	RepeatedUint64         []uint64                 `protobuf:"varint,506,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
-	RepeatedFixed32        []uint32                 `protobuf:"fixed32,507,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
-	RepeatedSfixed32       []int32                  `protobuf:"fixed32,508,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
-	RepeatedFloat          []float32                `protobuf:"fixed32,509,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
-	RepeatedFixed64        []uint64                 `protobuf:"fixed64,510,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
-	RepeatedSfixed64       []int64                  `protobuf:"fixed64,511,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
-	RepeatedDouble         []float64                `protobuf:"fixed64,512,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
-	RepeatedString         []string                 `protobuf:"bytes,513,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
-	RepeatedBytes          [][]byte                 `protobuf:"bytes,514,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
-	RepeatedChildEnum      []Message_ChildEnum      `protobuf:"varint,515,rep,name=repeated_child_enum,json=repeatedChildEnum,enum=google.golang.org.proto2_20160225.Message_ChildEnum" json:"repeated_child_enum,omitempty"`
-	RepeatedChildMessage   []*Message_ChildMessage  `protobuf:"bytes,516,rep,name=repeated_child_message,json=repeatedChildMessage" json:"repeated_child_message,omitempty"`
-	RepeatedNamedGroup     []*Message_NamedGroup    `protobuf:"bytes,517,rep,name=repeated_named_group,json=repeatedNamedGroup" json:"repeated_named_group,omitempty"`
-	RepeatedSiblingEnum    []SiblingEnum            `protobuf:"varint,518,rep,name=repeated_sibling_enum,json=repeatedSiblingEnum,enum=google.golang.org.proto2_20160225.SiblingEnum" json:"repeated_sibling_enum,omitempty"`
-	RepeatedSiblingMessage []*SiblingMessage        `protobuf:"bytes,519,rep,name=repeated_sibling_message,json=repeatedSiblingMessage" json:"repeated_sibling_message,omitempty"`
-	Repeatedgroup          []*Message_RepeatedGroup `protobuf:"group,520,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
-	// Map fields.
-	MapBoolBool           map[bool]bool                  `protobuf:"bytes,600,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolInt32          map[bool]int32                 `protobuf:"bytes,601,rep,name=map_bool_int32,json=mapBoolInt32" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolSint32         map[bool]int32                 `protobuf:"bytes,602,rep,name=map_bool_sint32,json=mapBoolSint32" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
-	MapBoolUint32         map[bool]uint32                `protobuf:"bytes,603,rep,name=map_bool_uint32,json=mapBoolUint32" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolInt64          map[bool]int64                 `protobuf:"bytes,604,rep,name=map_bool_int64,json=mapBoolInt64" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolSint64         map[bool]int64                 `protobuf:"bytes,605,rep,name=map_bool_sint64,json=mapBoolSint64" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
-	MapBoolUint64         map[bool]uint64                `protobuf:"bytes,606,rep,name=map_bool_uint64,json=mapBoolUint64" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolFixed32        map[bool]uint32                `protobuf:"bytes,607,rep,name=map_bool_fixed32,json=mapBoolFixed32" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolSfixed32       map[bool]int32                 `protobuf:"bytes,608,rep,name=map_bool_sfixed32,json=mapBoolSfixed32" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolFloat          map[bool]float32               `protobuf:"bytes,609,rep,name=map_bool_float,json=mapBoolFloat" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolFixed64        map[bool]uint64                `protobuf:"bytes,610,rep,name=map_bool_fixed64,json=mapBoolFixed64" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolSfixed64       map[bool]int64                 `protobuf:"bytes,611,rep,name=map_bool_sfixed64,json=mapBoolSfixed64" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolDouble         map[bool]float64               `protobuf:"bytes,612,rep,name=map_bool_double,json=mapBoolDouble" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolString         map[bool]string                `protobuf:"bytes,613,rep,name=map_bool_string,json=mapBoolString" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolBytes          map[bool][]byte                `protobuf:"bytes,614,rep,name=map_bool_bytes,json=mapBoolBytes" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolChildEnum      map[bool]Message_ChildEnum     `protobuf:"bytes,615,rep,name=map_bool_child_enum,json=mapBoolChildEnum" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20160225.Message_ChildEnum"`
-	MapBoolChildMessage   map[bool]*Message_ChildMessage `protobuf:"bytes,616,rep,name=map_bool_child_message,json=mapBoolChildMessage" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolNamedGroup     map[bool]*Message_NamedGroup   `protobuf:"bytes,617,rep,name=map_bool_named_group,json=mapBoolNamedGroup" json:"map_bool_named_group,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolSiblingEnum    map[bool]SiblingEnum           `protobuf:"bytes,618,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20160225.SiblingEnum"`
-	MapBoolSiblingMessage map[bool]*SiblingMessage       `protobuf:"bytes,619,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapInt32Bool          map[int32]bool                 `protobuf:"bytes,620,rep,name=map_int32_bool,json=mapInt32Bool" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint32Bool         map[int32]bool                 `protobuf:"bytes,621,rep,name=map_sint32_bool,json=mapSint32Bool" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint32Bool         map[uint32]bool                `protobuf:"bytes,622,rep,name=map_uint32_bool,json=mapUint32Bool" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapInt64Bool          map[int64]bool                 `protobuf:"bytes,623,rep,name=map_int64_bool,json=mapInt64Bool" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint64Bool         map[int64]bool                 `protobuf:"bytes,624,rep,name=map_sint64_bool,json=mapSint64Bool" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint64Bool         map[uint64]bool                `protobuf:"bytes,625,rep,name=map_uint64_bool,json=mapUint64Bool" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapFixed32Bool        map[uint32]bool                `protobuf:"bytes,626,rep,name=map_fixed32_bool,json=mapFixed32Bool" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapStringBool         map[string]bool                `protobuf:"bytes,627,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	// Oneof fields.
-	//
-	// Types that are valid to be assigned to OneofUnion:
-	//	*Message_OneofBool
-	//	*Message_OneofInt32
-	//	*Message_OneofSint32
-	//	*Message_OneofUint32
-	//	*Message_OneofInt64
-	//	*Message_OneofSint64
-	//	*Message_OneofUint64
-	//	*Message_OneofFixed32
-	//	*Message_OneofSfixed32
-	//	*Message_OneofFloat
-	//	*Message_OneofFixed64
-	//	*Message_OneofSfixed64
-	//	*Message_OneofDouble
-	//	*Message_OneofString
-	//	*Message_OneofBytes
-	//	*Message_OneofChildEnum
-	//	*Message_OneofChildMessage
-	//	*Message_OneofNamedGroup
-	//	*Message_OneofSiblingEnum
-	//	*Message_OneofSiblingMessage
-	//	*Message_Oneofgroup
-	//	*Message_OneofString1
-	//	*Message_OneofString2
-	//	*Message_OneofString3
-	OneofUnion isMessage_OneofUnion `protobuf_oneof:"oneof_union"`
-	// Oneof default fields.
-	//
-	// Types that are valid to be assigned to OneofDefaultedUnion:
-	//	*Message_OneofDefaultedBool
-	//	*Message_OneofDefaultedInt32
-	//	*Message_OneofDefaultedSint32
-	//	*Message_OneofDefaultedUint32
-	//	*Message_OneofDefaultedInt64
-	//	*Message_OneofDefaultedSint64
-	//	*Message_OneofDefaultedUint64
-	//	*Message_OneofDefaultedFixed32
-	//	*Message_OneofDefaultedSfixed32
-	//	*Message_OneofDefaultedFloat
-	//	*Message_OneofDefaultedFixed64
-	//	*Message_OneofDefaultedSfixed64
-	//	*Message_OneofDefaultedDouble
-	//	*Message_OneofDefaultedString
-	//	*Message_OneofDefaultedBytes
-	//	*Message_OneofDefaultedChildEnum
-	//	*Message_OneofDefaultedSiblingEnum
-	OneofDefaultedUnion isMessage_OneofDefaultedUnion `protobuf_oneof:"oneof_defaulted_union"`
-	XXX_extensions      map[int32]proto.Extension     `json:"-"`
-	XXX_unrecognized    []byte                        `json:"-"`
-}
-
-func (m *Message) Reset()                    { *m = Message{} }
-func (m *Message) String() string            { return proto.CompactTextString(m) }
-func (*Message) ProtoMessage()               {}
-func (*Message) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
-
-var extRange_Message = []proto.ExtensionRange{
-	{10000, 536870911},
-}
-
-func (*Message) ExtensionRangeArray() []proto.ExtensionRange {
-	return extRange_Message
-}
-func (m *Message) ExtensionMap() map[int32]proto.Extension {
-	if m.XXX_extensions == nil {
-		m.XXX_extensions = make(map[int32]proto.Extension)
-	}
-	return m.XXX_extensions
-}
-
-const Default_Message_DefaultedBool bool = true
-const Default_Message_DefaultedInt32 int32 = -12345
-const Default_Message_DefaultedSint32 int32 = -3200
-const Default_Message_DefaultedUint32 uint32 = 3200
-const Default_Message_DefaultedInt64 int64 = -123456789
-const Default_Message_DefaultedSint64 int64 = -6400
-const Default_Message_DefaultedUint64 uint64 = 6400
-const Default_Message_DefaultedFixed32 uint32 = 320000
-const Default_Message_DefaultedSfixed32 int32 = -320000
-const Default_Message_DefaultedFloat float32 = 3.14159
-const Default_Message_DefaultedFixed64 uint64 = 640000
-const Default_Message_DefaultedSfixed64 int64 = -640000
-const Default_Message_DefaultedDouble float64 = 3.14159265359
-const Default_Message_DefaultedString string = "hello, \"world!\"\n"
-
-var Default_Message_DefaultedBytes []byte = []byte("dead\\336\\255\\276\\357beef")
-
-const Default_Message_DefaultedChildEnum Message_ChildEnum = Message_ALPHA
-const Default_Message_DefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
-const Default_Message_RequiredDefaultedBool bool = true
-const Default_Message_RequiredDefaultedInt32 int32 = -12345
-const Default_Message_RequiredDefaultedSint32 int32 = -3200
-const Default_Message_RequiredDefaultedUint32 uint32 = 3200
-const Default_Message_RequiredDefaultedInt64 int64 = -123456789
-const Default_Message_RequiredDefaultedSint64 int64 = -6400
-const Default_Message_RequiredDefaultedUint64 uint64 = 6400
-const Default_Message_RequiredDefaultedFixed32 uint32 = 320000
-const Default_Message_RequiredDefaultedSfixed32 int32 = -320000
-const Default_Message_RequiredDefaultedFloat float32 = 3.14159
-const Default_Message_RequiredDefaultedFixed64 uint64 = 640000
-const Default_Message_RequiredDefaultedSfixed64 int64 = -640000
-const Default_Message_RequiredDefaultedDouble float64 = 3.14159265359
-const Default_Message_RequiredDefaultedString string = "hello, \"world!\"\n"
-
-var Default_Message_RequiredDefaultedBytes []byte = []byte("dead\\336\\255\\276\\357beef")
-
-const Default_Message_RequiredDefaultedChildEnum Message_ChildEnum = Message_ALPHA
-const Default_Message_RequiredDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
-const Default_Message_OneofDefaultedBool bool = true
-const Default_Message_OneofDefaultedInt32 int32 = -12345
-const Default_Message_OneofDefaultedSint32 int32 = -3200
-const Default_Message_OneofDefaultedUint32 uint32 = 3200
-const Default_Message_OneofDefaultedInt64 int64 = -123456789
-const Default_Message_OneofDefaultedSint64 int64 = -6400
-const Default_Message_OneofDefaultedUint64 uint64 = 6400
-const Default_Message_OneofDefaultedFixed32 uint32 = 320000
-const Default_Message_OneofDefaultedSfixed32 int32 = -320000
-const Default_Message_OneofDefaultedFloat float32 = 3.14159
-const Default_Message_OneofDefaultedFixed64 uint64 = 640000
-const Default_Message_OneofDefaultedSfixed64 int64 = -640000
-const Default_Message_OneofDefaultedDouble float64 = 3.14159265359
-const Default_Message_OneofDefaultedString string = "hello, \"world!\"\n"
-
-var Default_Message_OneofDefaultedBytes []byte = []byte("dead\\336\\255\\276\\357beef")
-
-const Default_Message_OneofDefaultedChildEnum Message_ChildEnum = Message_ALPHA
-const Default_Message_OneofDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
-
-type isMessage_OneofUnion interface{ isMessage_OneofUnion() }
-type isMessage_OneofDefaultedUnion interface{ isMessage_OneofDefaultedUnion() }
-
-type Message_OneofBool struct {
-	OneofBool bool `protobuf:"varint,700,opt,name=oneof_bool,json=oneofBool,oneof"`
-}
-type Message_OneofInt32 struct {
-	OneofInt32 int32 `protobuf:"varint,701,opt,name=oneof_int32,json=oneofInt32,oneof"`
-}
-type Message_OneofSint32 struct {
-	OneofSint32 int32 `protobuf:"zigzag32,702,opt,name=oneof_sint32,json=oneofSint32,oneof"`
-}
-type Message_OneofUint32 struct {
-	OneofUint32 uint32 `protobuf:"varint,703,opt,name=oneof_uint32,json=oneofUint32,oneof"`
-}
-type Message_OneofInt64 struct {
-	OneofInt64 int64 `protobuf:"varint,704,opt,name=oneof_int64,json=oneofInt64,oneof"`
-}
-type Message_OneofSint64 struct {
-	OneofSint64 int64 `protobuf:"zigzag64,705,opt,name=oneof_sint64,json=oneofSint64,oneof"`
-}
-type Message_OneofUint64 struct {
-	OneofUint64 uint64 `protobuf:"varint,706,opt,name=oneof_uint64,json=oneofUint64,oneof"`
-}
-type Message_OneofFixed32 struct {
-	OneofFixed32 uint32 `protobuf:"fixed32,707,opt,name=oneof_fixed32,json=oneofFixed32,oneof"`
-}
-type Message_OneofSfixed32 struct {
-	OneofSfixed32 int32 `protobuf:"fixed32,708,opt,name=oneof_sfixed32,json=oneofSfixed32,oneof"`
-}
-type Message_OneofFloat struct {
-	OneofFloat float32 `protobuf:"fixed32,709,opt,name=oneof_float,json=oneofFloat,oneof"`
-}
-type Message_OneofFixed64 struct {
-	OneofFixed64 uint64 `protobuf:"fixed64,710,opt,name=oneof_fixed64,json=oneofFixed64,oneof"`
-}
-type Message_OneofSfixed64 struct {
-	OneofSfixed64 int64 `protobuf:"fixed64,711,opt,name=oneof_sfixed64,json=oneofSfixed64,oneof"`
-}
-type Message_OneofDouble struct {
-	OneofDouble float64 `protobuf:"fixed64,712,opt,name=oneof_double,json=oneofDouble,oneof"`
-}
-type Message_OneofString struct {
-	OneofString string `protobuf:"bytes,713,opt,name=oneof_string,json=oneofString,oneof"`
-}
-type Message_OneofBytes struct {
-	OneofBytes []byte `protobuf:"bytes,714,opt,name=oneof_bytes,json=oneofBytes,oneof"`
-}
-type Message_OneofChildEnum struct {
-	OneofChildEnum Message_ChildEnum `protobuf:"varint,715,opt,name=oneof_child_enum,json=oneofChildEnum,enum=google.golang.org.proto2_20160225.Message_ChildEnum,oneof"`
-}
-type Message_OneofChildMessage struct {
-	OneofChildMessage *Message_ChildMessage `protobuf:"bytes,716,opt,name=oneof_child_message,json=oneofChildMessage,oneof"`
-}
-type Message_OneofNamedGroup struct {
-	OneofNamedGroup *Message_NamedGroup `protobuf:"bytes,717,opt,name=oneof_named_group,json=oneofNamedGroup,oneof"`
-}
-type Message_OneofSiblingEnum struct {
-	OneofSiblingEnum SiblingEnum `protobuf:"varint,718,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,enum=google.golang.org.proto2_20160225.SiblingEnum,oneof"`
-}
-type Message_OneofSiblingMessage struct {
-	OneofSiblingMessage *SiblingMessage `protobuf:"bytes,719,opt,name=oneof_sibling_message,json=oneofSiblingMessage,oneof"`
-}
-type Message_Oneofgroup struct {
-	Oneofgroup *Message_OneofGroup `protobuf:"group,720,opt,name=OneofGroup,json=oneofgroup,oneof"`
-}
-type Message_OneofString1 struct {
-	OneofString1 string `protobuf:"bytes,721,opt,name=oneof_string1,json=oneofString1,oneof"`
-}
-type Message_OneofString2 struct {
-	OneofString2 string `protobuf:"bytes,722,opt,name=oneof_string2,json=oneofString2,oneof"`
-}
-type Message_OneofString3 struct {
-	OneofString3 string `protobuf:"bytes,723,opt,name=oneof_string3,json=oneofString3,oneof"`
-}
-type Message_OneofDefaultedBool struct {
-	OneofDefaultedBool bool `protobuf:"varint,800,opt,name=oneof_defaulted_bool,json=oneofDefaultedBool,oneof,def=1"`
-}
-type Message_OneofDefaultedInt32 struct {
-	OneofDefaultedInt32 int32 `protobuf:"varint,801,opt,name=oneof_defaulted_int32,json=oneofDefaultedInt32,oneof,def=-12345"`
-}
-type Message_OneofDefaultedSint32 struct {
-	OneofDefaultedSint32 int32 `protobuf:"zigzag32,802,opt,name=oneof_defaulted_sint32,json=oneofDefaultedSint32,oneof,def=-3200"`
-}
-type Message_OneofDefaultedUint32 struct {
-	OneofDefaultedUint32 uint32 `protobuf:"varint,803,opt,name=oneof_defaulted_uint32,json=oneofDefaultedUint32,oneof,def=3200"`
-}
-type Message_OneofDefaultedInt64 struct {
-	OneofDefaultedInt64 int64 `protobuf:"varint,804,opt,name=oneof_defaulted_int64,json=oneofDefaultedInt64,oneof,def=-123456789"`
-}
-type Message_OneofDefaultedSint64 struct {
-	OneofDefaultedSint64 int64 `protobuf:"zigzag64,805,opt,name=oneof_defaulted_sint64,json=oneofDefaultedSint64,oneof,def=-6400"`
-}
-type Message_OneofDefaultedUint64 struct {
-	OneofDefaultedUint64 uint64 `protobuf:"varint,806,opt,name=oneof_defaulted_uint64,json=oneofDefaultedUint64,oneof,def=6400"`
-}
-type Message_OneofDefaultedFixed32 struct {
-	OneofDefaultedFixed32 uint32 `protobuf:"fixed32,807,opt,name=oneof_defaulted_fixed32,json=oneofDefaultedFixed32,oneof,def=320000"`
-}
-type Message_OneofDefaultedSfixed32 struct {
-	OneofDefaultedSfixed32 int32 `protobuf:"fixed32,808,opt,name=oneof_defaulted_sfixed32,json=oneofDefaultedSfixed32,oneof,def=-320000"`
-}
-type Message_OneofDefaultedFloat struct {
-	OneofDefaultedFloat float32 `protobuf:"fixed32,809,opt,name=oneof_defaulted_float,json=oneofDefaultedFloat,oneof,def=3.14159"`
-}
-type Message_OneofDefaultedFixed64 struct {
-	OneofDefaultedFixed64 uint64 `protobuf:"fixed64,810,opt,name=oneof_defaulted_fixed64,json=oneofDefaultedFixed64,oneof,def=640000"`
-}
-type Message_OneofDefaultedSfixed64 struct {
-	OneofDefaultedSfixed64 int64 `protobuf:"fixed64,811,opt,name=oneof_defaulted_sfixed64,json=oneofDefaultedSfixed64,oneof,def=-640000"`
-}
-type Message_OneofDefaultedDouble struct {
-	OneofDefaultedDouble float64 `protobuf:"fixed64,812,opt,name=oneof_defaulted_double,json=oneofDefaultedDouble,oneof,def=3.14159265359"`
-}
-type Message_OneofDefaultedString struct {
-	OneofDefaultedString string `protobuf:"bytes,813,opt,name=oneof_defaulted_string,json=oneofDefaultedString,oneof,def=hello, \"world!\"\n"`
-}
-type Message_OneofDefaultedBytes struct {
-	OneofDefaultedBytes []byte `protobuf:"bytes,814,opt,name=oneof_defaulted_bytes,json=oneofDefaultedBytes,oneof,def=dead\\336\\255\\276\\357beef"`
-}
-type Message_OneofDefaultedChildEnum struct {
-	OneofDefaultedChildEnum Message_ChildEnum `protobuf:"varint,815,opt,name=oneof_defaulted_child_enum,json=oneofDefaultedChildEnum,enum=google.golang.org.proto2_20160225.Message_ChildEnum,oneof,def=0"`
-}
-type Message_OneofDefaultedSiblingEnum struct {
-	OneofDefaultedSiblingEnum SiblingEnum `protobuf:"varint,816,opt,name=oneof_defaulted_sibling_enum,json=oneofDefaultedSiblingEnum,enum=google.golang.org.proto2_20160225.SiblingEnum,oneof,def=0"`
-}
-
-func (*Message_OneofBool) isMessage_OneofUnion()                          {}
-func (*Message_OneofInt32) isMessage_OneofUnion()                         {}
-func (*Message_OneofSint32) isMessage_OneofUnion()                        {}
-func (*Message_OneofUint32) isMessage_OneofUnion()                        {}
-func (*Message_OneofInt64) isMessage_OneofUnion()                         {}
-func (*Message_OneofSint64) isMessage_OneofUnion()                        {}
-func (*Message_OneofUint64) isMessage_OneofUnion()                        {}
-func (*Message_OneofFixed32) isMessage_OneofUnion()                       {}
-func (*Message_OneofSfixed32) isMessage_OneofUnion()                      {}
-func (*Message_OneofFloat) isMessage_OneofUnion()                         {}
-func (*Message_OneofFixed64) isMessage_OneofUnion()                       {}
-func (*Message_OneofSfixed64) isMessage_OneofUnion()                      {}
-func (*Message_OneofDouble) isMessage_OneofUnion()                        {}
-func (*Message_OneofString) isMessage_OneofUnion()                        {}
-func (*Message_OneofBytes) isMessage_OneofUnion()                         {}
-func (*Message_OneofChildEnum) isMessage_OneofUnion()                     {}
-func (*Message_OneofChildMessage) isMessage_OneofUnion()                  {}
-func (*Message_OneofNamedGroup) isMessage_OneofUnion()                    {}
-func (*Message_OneofSiblingEnum) isMessage_OneofUnion()                   {}
-func (*Message_OneofSiblingMessage) isMessage_OneofUnion()                {}
-func (*Message_Oneofgroup) isMessage_OneofUnion()                         {}
-func (*Message_OneofString1) isMessage_OneofUnion()                       {}
-func (*Message_OneofString2) isMessage_OneofUnion()                       {}
-func (*Message_OneofString3) isMessage_OneofUnion()                       {}
-func (*Message_OneofDefaultedBool) isMessage_OneofDefaultedUnion()        {}
-func (*Message_OneofDefaultedInt32) isMessage_OneofDefaultedUnion()       {}
-func (*Message_OneofDefaultedSint32) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedUint32) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedInt64) isMessage_OneofDefaultedUnion()       {}
-func (*Message_OneofDefaultedSint64) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedUint64) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedFixed32) isMessage_OneofDefaultedUnion()     {}
-func (*Message_OneofDefaultedSfixed32) isMessage_OneofDefaultedUnion()    {}
-func (*Message_OneofDefaultedFloat) isMessage_OneofDefaultedUnion()       {}
-func (*Message_OneofDefaultedFixed64) isMessage_OneofDefaultedUnion()     {}
-func (*Message_OneofDefaultedSfixed64) isMessage_OneofDefaultedUnion()    {}
-func (*Message_OneofDefaultedDouble) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedString) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedBytes) isMessage_OneofDefaultedUnion()       {}
-func (*Message_OneofDefaultedChildEnum) isMessage_OneofDefaultedUnion()   {}
-func (*Message_OneofDefaultedSiblingEnum) isMessage_OneofDefaultedUnion() {}
-
-func (m *Message) GetOneofUnion() isMessage_OneofUnion {
-	if m != nil {
-		return m.OneofUnion
-	}
-	return nil
-}
-func (m *Message) GetOneofDefaultedUnion() isMessage_OneofDefaultedUnion {
-	if m != nil {
-		return m.OneofDefaultedUnion
-	}
-	return nil
-}
-
-func (m *Message) GetNamedgroup() *Message_NamedGroup {
-	if m != nil {
-		return m.Namedgroup
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalBool() bool {
-	if m != nil && m.OptionalBool != nil {
-		return *m.OptionalBool
-	}
-	return false
-}
-
-func (m *Message) GetOptionalInt32() int32 {
-	if m != nil && m.OptionalInt32 != nil {
-		return *m.OptionalInt32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSint32() int32 {
-	if m != nil && m.OptionalSint32 != nil {
-		return *m.OptionalSint32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalUint32() uint32 {
-	if m != nil && m.OptionalUint32 != nil {
-		return *m.OptionalUint32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalInt64() int64 {
-	if m != nil && m.OptionalInt64 != nil {
-		return *m.OptionalInt64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSint64() int64 {
-	if m != nil && m.OptionalSint64 != nil {
-		return *m.OptionalSint64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalUint64() uint64 {
-	if m != nil && m.OptionalUint64 != nil {
-		return *m.OptionalUint64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFixed32() uint32 {
-	if m != nil && m.OptionalFixed32 != nil {
-		return *m.OptionalFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSfixed32() int32 {
-	if m != nil && m.OptionalSfixed32 != nil {
-		return *m.OptionalSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFloat() float32 {
-	if m != nil && m.OptionalFloat != nil {
-		return *m.OptionalFloat
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFixed64() uint64 {
-	if m != nil && m.OptionalFixed64 != nil {
-		return *m.OptionalFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSfixed64() int64 {
-	if m != nil && m.OptionalSfixed64 != nil {
-		return *m.OptionalSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalDouble() float64 {
-	if m != nil && m.OptionalDouble != nil {
-		return *m.OptionalDouble
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalString() string {
-	if m != nil && m.OptionalString != nil {
-		return *m.OptionalString
-	}
-	return ""
-}
-
-func (m *Message) GetOptionalBytes() []byte {
-	if m != nil {
-		return m.OptionalBytes
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalChildEnum() Message_ChildEnum {
-	if m != nil && m.OptionalChildEnum != nil {
-		return *m.OptionalChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetOptionalChildMessage() *Message_ChildMessage {
-	if m != nil {
-		return m.OptionalChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalNamedGroup() *Message_NamedGroup {
-	if m != nil {
-		return m.OptionalNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalSiblingEnum() SiblingEnum {
-	if m != nil && m.OptionalSiblingEnum != nil {
-		return *m.OptionalSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetOptionalSiblingMessage() *SiblingMessage {
-	if m != nil {
-		return m.OptionalSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalgroup() *Message_OptionalGroup {
-	if m != nil {
-		return m.Optionalgroup
-	}
-	return nil
-}
-
-func (m *Message) GetDefaultedBool() bool {
-	if m != nil && m.DefaultedBool != nil {
-		return *m.DefaultedBool
-	}
-	return Default_Message_DefaultedBool
-}
-
-func (m *Message) GetDefaultedInt32() int32 {
-	if m != nil && m.DefaultedInt32 != nil {
-		return *m.DefaultedInt32
-	}
-	return Default_Message_DefaultedInt32
-}
-
-func (m *Message) GetDefaultedSint32() int32 {
-	if m != nil && m.DefaultedSint32 != nil {
-		return *m.DefaultedSint32
-	}
-	return Default_Message_DefaultedSint32
-}
-
-func (m *Message) GetDefaultedUint32() uint32 {
-	if m != nil && m.DefaultedUint32 != nil {
-		return *m.DefaultedUint32
-	}
-	return Default_Message_DefaultedUint32
-}
-
-func (m *Message) GetDefaultedInt64() int64 {
-	if m != nil && m.DefaultedInt64 != nil {
-		return *m.DefaultedInt64
-	}
-	return Default_Message_DefaultedInt64
-}
-
-func (m *Message) GetDefaultedSint64() int64 {
-	if m != nil && m.DefaultedSint64 != nil {
-		return *m.DefaultedSint64
-	}
-	return Default_Message_DefaultedSint64
-}
-
-func (m *Message) GetDefaultedUint64() uint64 {
-	if m != nil && m.DefaultedUint64 != nil {
-		return *m.DefaultedUint64
-	}
-	return Default_Message_DefaultedUint64
-}
-
-func (m *Message) GetDefaultedFixed32() uint32 {
-	if m != nil && m.DefaultedFixed32 != nil {
-		return *m.DefaultedFixed32
-	}
-	return Default_Message_DefaultedFixed32
-}
-
-func (m *Message) GetDefaultedSfixed32() int32 {
-	if m != nil && m.DefaultedSfixed32 != nil {
-		return *m.DefaultedSfixed32
-	}
-	return Default_Message_DefaultedSfixed32
-}
-
-func (m *Message) GetDefaultedFloat() float32 {
-	if m != nil && m.DefaultedFloat != nil {
-		return *m.DefaultedFloat
-	}
-	return Default_Message_DefaultedFloat
-}
-
-func (m *Message) GetDefaultedFixed64() uint64 {
-	if m != nil && m.DefaultedFixed64 != nil {
-		return *m.DefaultedFixed64
-	}
-	return Default_Message_DefaultedFixed64
-}
-
-func (m *Message) GetDefaultedSfixed64() int64 {
-	if m != nil && m.DefaultedSfixed64 != nil {
-		return *m.DefaultedSfixed64
-	}
-	return Default_Message_DefaultedSfixed64
-}
-
-func (m *Message) GetDefaultedDouble() float64 {
-	if m != nil && m.DefaultedDouble != nil {
-		return *m.DefaultedDouble
-	}
-	return Default_Message_DefaultedDouble
-}
-
-func (m *Message) GetDefaultedString() string {
-	if m != nil && m.DefaultedString != nil {
-		return *m.DefaultedString
-	}
-	return Default_Message_DefaultedString
-}
-
-func (m *Message) GetDefaultedBytes() []byte {
-	if m != nil && m.DefaultedBytes != nil {
-		return m.DefaultedBytes
-	}
-	return append([]byte(nil), Default_Message_DefaultedBytes...)
-}
-
-func (m *Message) GetDefaultedChildEnum() Message_ChildEnum {
-	if m != nil && m.DefaultedChildEnum != nil {
-		return *m.DefaultedChildEnum
-	}
-	return Default_Message_DefaultedChildEnum
-}
-
-func (m *Message) GetDefaultedSiblingEnum() SiblingEnum {
-	if m != nil && m.DefaultedSiblingEnum != nil {
-		return *m.DefaultedSiblingEnum
-	}
-	return Default_Message_DefaultedSiblingEnum
-}
-
-func (m *Message) GetRequiredBool() bool {
-	if m != nil && m.RequiredBool != nil {
-		return *m.RequiredBool
-	}
-	return false
-}
-
-func (m *Message) GetRequiredInt32() int32 {
-	if m != nil && m.RequiredInt32 != nil {
-		return *m.RequiredInt32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSint32() int32 {
-	if m != nil && m.RequiredSint32 != nil {
-		return *m.RequiredSint32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredUint32() uint32 {
-	if m != nil && m.RequiredUint32 != nil {
-		return *m.RequiredUint32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredInt64() int64 {
-	if m != nil && m.RequiredInt64 != nil {
-		return *m.RequiredInt64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSint64() int64 {
-	if m != nil && m.RequiredSint64 != nil {
-		return *m.RequiredSint64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredUint64() uint64 {
-	if m != nil && m.RequiredUint64 != nil {
-		return *m.RequiredUint64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredFixed32() uint32 {
-	if m != nil && m.RequiredFixed32 != nil {
-		return *m.RequiredFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSfixed32() int32 {
-	if m != nil && m.RequiredSfixed32 != nil {
-		return *m.RequiredSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredFloat() float32 {
-	if m != nil && m.RequiredFloat != nil {
-		return *m.RequiredFloat
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredFixed64() uint64 {
-	if m != nil && m.RequiredFixed64 != nil {
-		return *m.RequiredFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSfixed64() int64 {
-	if m != nil && m.RequiredSfixed64 != nil {
-		return *m.RequiredSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredDouble() float64 {
-	if m != nil && m.RequiredDouble != nil {
-		return *m.RequiredDouble
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredString() string {
-	if m != nil && m.RequiredString != nil {
-		return *m.RequiredString
-	}
-	return ""
-}
-
-func (m *Message) GetRequiredBytes() []byte {
-	if m != nil {
-		return m.RequiredBytes
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredChildEnum() Message_ChildEnum {
-	if m != nil && m.RequiredChildEnum != nil {
-		return *m.RequiredChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetRequiredChildMessage() *Message_ChildMessage {
-	if m != nil {
-		return m.RequiredChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredNamedGroup() *Message_NamedGroup {
-	if m != nil {
-		return m.RequiredNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredSiblingEnum() SiblingEnum {
-	if m != nil && m.RequiredSiblingEnum != nil {
-		return *m.RequiredSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetRequiredSiblingMessage() *SiblingMessage {
-	if m != nil {
-		return m.RequiredSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredgroup() *Message_RequiredGroup {
-	if m != nil {
-		return m.Requiredgroup
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredDefaultedBool() bool {
-	if m != nil && m.RequiredDefaultedBool != nil {
-		return *m.RequiredDefaultedBool
-	}
-	return Default_Message_RequiredDefaultedBool
-}
-
-func (m *Message) GetRequiredDefaultedInt32() int32 {
-	if m != nil && m.RequiredDefaultedInt32 != nil {
-		return *m.RequiredDefaultedInt32
-	}
-	return Default_Message_RequiredDefaultedInt32
-}
-
-func (m *Message) GetRequiredDefaultedSint32() int32 {
-	if m != nil && m.RequiredDefaultedSint32 != nil {
-		return *m.RequiredDefaultedSint32
-	}
-	return Default_Message_RequiredDefaultedSint32
-}
-
-func (m *Message) GetRequiredDefaultedUint32() uint32 {
-	if m != nil && m.RequiredDefaultedUint32 != nil {
-		return *m.RequiredDefaultedUint32
-	}
-	return Default_Message_RequiredDefaultedUint32
-}
-
-func (m *Message) GetRequiredDefaultedInt64() int64 {
-	if m != nil && m.RequiredDefaultedInt64 != nil {
-		return *m.RequiredDefaultedInt64
-	}
-	return Default_Message_RequiredDefaultedInt64
-}
-
-func (m *Message) GetRequiredDefaultedSint64() int64 {
-	if m != nil && m.RequiredDefaultedSint64 != nil {
-		return *m.RequiredDefaultedSint64
-	}
-	return Default_Message_RequiredDefaultedSint64
-}
-
-func (m *Message) GetRequiredDefaultedUint64() uint64 {
-	if m != nil && m.RequiredDefaultedUint64 != nil {
-		return *m.RequiredDefaultedUint64
-	}
-	return Default_Message_RequiredDefaultedUint64
-}
-
-func (m *Message) GetRequiredDefaultedFixed32() uint32 {
-	if m != nil && m.RequiredDefaultedFixed32 != nil {
-		return *m.RequiredDefaultedFixed32
-	}
-	return Default_Message_RequiredDefaultedFixed32
-}
-
-func (m *Message) GetRequiredDefaultedSfixed32() int32 {
-	if m != nil && m.RequiredDefaultedSfixed32 != nil {
-		return *m.RequiredDefaultedSfixed32
-	}
-	return Default_Message_RequiredDefaultedSfixed32
-}
-
-func (m *Message) GetRequiredDefaultedFloat() float32 {
-	if m != nil && m.RequiredDefaultedFloat != nil {
-		return *m.RequiredDefaultedFloat
-	}
-	return Default_Message_RequiredDefaultedFloat
-}
-
-func (m *Message) GetRequiredDefaultedFixed64() uint64 {
-	if m != nil && m.RequiredDefaultedFixed64 != nil {
-		return *m.RequiredDefaultedFixed64
-	}
-	return Default_Message_RequiredDefaultedFixed64
-}
-
-func (m *Message) GetRequiredDefaultedSfixed64() int64 {
-	if m != nil && m.RequiredDefaultedSfixed64 != nil {
-		return *m.RequiredDefaultedSfixed64
-	}
-	return Default_Message_RequiredDefaultedSfixed64
-}
-
-func (m *Message) GetRequiredDefaultedDouble() float64 {
-	if m != nil && m.RequiredDefaultedDouble != nil {
-		return *m.RequiredDefaultedDouble
-	}
-	return Default_Message_RequiredDefaultedDouble
-}
-
-func (m *Message) GetRequiredDefaultedString() string {
-	if m != nil && m.RequiredDefaultedString != nil {
-		return *m.RequiredDefaultedString
-	}
-	return Default_Message_RequiredDefaultedString
-}
-
-func (m *Message) GetRequiredDefaultedBytes() []byte {
-	if m != nil && m.RequiredDefaultedBytes != nil {
-		return m.RequiredDefaultedBytes
-	}
-	return append([]byte(nil), Default_Message_RequiredDefaultedBytes...)
-}
-
-func (m *Message) GetRequiredDefaultedChildEnum() Message_ChildEnum {
-	if m != nil && m.RequiredDefaultedChildEnum != nil {
-		return *m.RequiredDefaultedChildEnum
-	}
-	return Default_Message_RequiredDefaultedChildEnum
-}
-
-func (m *Message) GetRequiredDefaultedSiblingEnum() SiblingEnum {
-	if m != nil && m.RequiredDefaultedSiblingEnum != nil {
-		return *m.RequiredDefaultedSiblingEnum
-	}
-	return Default_Message_RequiredDefaultedSiblingEnum
-}
-
-func (m *Message) GetRepeatedBool() []bool {
-	if m != nil {
-		return m.RepeatedBool
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedInt32() []int32 {
-	if m != nil {
-		return m.RepeatedInt32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSint32() []int32 {
-	if m != nil {
-		return m.RepeatedSint32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedUint32() []uint32 {
-	if m != nil {
-		return m.RepeatedUint32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedInt64() []int64 {
-	if m != nil {
-		return m.RepeatedInt64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSint64() []int64 {
-	if m != nil {
-		return m.RepeatedSint64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedUint64() []uint64 {
-	if m != nil {
-		return m.RepeatedUint64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFixed32() []uint32 {
-	if m != nil {
-		return m.RepeatedFixed32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSfixed32() []int32 {
-	if m != nil {
-		return m.RepeatedSfixed32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFloat() []float32 {
-	if m != nil {
-		return m.RepeatedFloat
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFixed64() []uint64 {
-	if m != nil {
-		return m.RepeatedFixed64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSfixed64() []int64 {
-	if m != nil {
-		return m.RepeatedSfixed64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedDouble() []float64 {
-	if m != nil {
-		return m.RepeatedDouble
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedString() []string {
-	if m != nil {
-		return m.RepeatedString
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedBytes() [][]byte {
-	if m != nil {
-		return m.RepeatedBytes
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedChildEnum() []Message_ChildEnum {
-	if m != nil {
-		return m.RepeatedChildEnum
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedChildMessage() []*Message_ChildMessage {
-	if m != nil {
-		return m.RepeatedChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedNamedGroup() []*Message_NamedGroup {
-	if m != nil {
-		return m.RepeatedNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSiblingEnum() []SiblingEnum {
-	if m != nil {
-		return m.RepeatedSiblingEnum
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSiblingMessage() []*SiblingMessage {
-	if m != nil {
-		return m.RepeatedSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedgroup() []*Message_RepeatedGroup {
-	if m != nil {
-		return m.Repeatedgroup
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBool() map[bool]bool {
-	if m != nil {
-		return m.MapBoolBool
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolInt32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolUint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolInt64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolUint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolFixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSfixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFloat() map[bool]float32 {
-	if m != nil {
-		return m.MapBoolFloat
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolFixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSfixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolDouble() map[bool]float64 {
-	if m != nil {
-		return m.MapBoolDouble
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolString() map[bool]string {
-	if m != nil {
-		return m.MapBoolString
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBytes() map[bool][]byte {
-	if m != nil {
-		return m.MapBoolBytes
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildEnum() map[bool]Message_ChildEnum {
-	if m != nil {
-		return m.MapBoolChildEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildMessage() map[bool]*Message_ChildMessage {
-	if m != nil {
-		return m.MapBoolChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolNamedGroup() map[bool]*Message_NamedGroup {
-	if m != nil {
-		return m.MapBoolNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingEnum() map[bool]SiblingEnum {
-	if m != nil {
-		return m.MapBoolSiblingEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingMessage() map[bool]*SiblingMessage {
-	if m != nil {
-		return m.MapBoolSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapInt32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapSint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapUint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapInt64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapSint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint64Bool() map[uint64]bool {
-	if m != nil {
-		return m.MapUint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapFixed32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapFixed32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapStringBool() map[string]bool {
-	if m != nil {
-		return m.MapStringBool
-	}
-	return nil
-}
-
-func (m *Message) GetOneofBool() bool {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBool); ok {
-		return x.OneofBool
-	}
-	return false
-}
-
-func (m *Message) GetOneofInt32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt32); ok {
-		return x.OneofInt32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint32); ok {
-		return x.OneofSint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint32); ok {
-		return x.OneofUint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofInt64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt64); ok {
-		return x.OneofInt64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint64); ok {
-		return x.OneofSint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint64); ok {
-		return x.OneofUint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed32); ok {
-		return x.OneofFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed32); ok {
-		return x.OneofSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFloat() float32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFloat); ok {
-		return x.OneofFloat
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed64); ok {
-		return x.OneofFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed64); ok {
-		return x.OneofSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofDouble() float64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofDouble); ok {
-		return x.OneofDouble
-	}
-	return 0
-}
-
-func (m *Message) GetOneofString() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString); ok {
-		return x.OneofString
-	}
-	return ""
-}
-
-func (m *Message) GetOneofBytes() []byte {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBytes); ok {
-		return x.OneofBytes
-	}
-	return nil
-}
-
-func (m *Message) GetOneofChildEnum() Message_ChildEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildEnum); ok {
-		return x.OneofChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetOneofChildMessage() *Message_ChildMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildMessage); ok {
-		return x.OneofChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofNamedGroup() *Message_NamedGroup {
-	if x, ok := m.GetOneofUnion().(*Message_OneofNamedGroup); ok {
-		return x.OneofNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetOneofSiblingEnum() SiblingEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingEnum); ok {
-		return x.OneofSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetOneofSiblingMessage() *SiblingMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingMessage); ok {
-		return x.OneofSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofgroup() *Message_OneofGroup {
-	if x, ok := m.GetOneofUnion().(*Message_Oneofgroup); ok {
-		return x.Oneofgroup
-	}
-	return nil
-}
-
-func (m *Message) GetOneofString1() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString1); ok {
-		return x.OneofString1
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString2() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString2); ok {
-		return x.OneofString2
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString3() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString3); ok {
-		return x.OneofString3
-	}
-	return ""
-}
-
-func (m *Message) GetOneofDefaultedBool() bool {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBool); ok {
-		return x.OneofDefaultedBool
-	}
-	return Default_Message_OneofDefaultedBool
-}
-
-func (m *Message) GetOneofDefaultedInt32() int32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt32); ok {
-		return x.OneofDefaultedInt32
-	}
-	return Default_Message_OneofDefaultedInt32
-}
-
-func (m *Message) GetOneofDefaultedSint32() int32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint32); ok {
-		return x.OneofDefaultedSint32
-	}
-	return Default_Message_OneofDefaultedSint32
-}
-
-func (m *Message) GetOneofDefaultedUint32() uint32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint32); ok {
-		return x.OneofDefaultedUint32
-	}
-	return Default_Message_OneofDefaultedUint32
-}
-
-func (m *Message) GetOneofDefaultedInt64() int64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt64); ok {
-		return x.OneofDefaultedInt64
-	}
-	return Default_Message_OneofDefaultedInt64
-}
-
-func (m *Message) GetOneofDefaultedSint64() int64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint64); ok {
-		return x.OneofDefaultedSint64
-	}
-	return Default_Message_OneofDefaultedSint64
-}
-
-func (m *Message) GetOneofDefaultedUint64() uint64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint64); ok {
-		return x.OneofDefaultedUint64
-	}
-	return Default_Message_OneofDefaultedUint64
-}
-
-func (m *Message) GetOneofDefaultedFixed32() uint32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed32); ok {
-		return x.OneofDefaultedFixed32
-	}
-	return Default_Message_OneofDefaultedFixed32
-}
-
-func (m *Message) GetOneofDefaultedSfixed32() int32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed32); ok {
-		return x.OneofDefaultedSfixed32
-	}
-	return Default_Message_OneofDefaultedSfixed32
-}
-
-func (m *Message) GetOneofDefaultedFloat() float32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFloat); ok {
-		return x.OneofDefaultedFloat
-	}
-	return Default_Message_OneofDefaultedFloat
-}
-
-func (m *Message) GetOneofDefaultedFixed64() uint64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed64); ok {
-		return x.OneofDefaultedFixed64
-	}
-	return Default_Message_OneofDefaultedFixed64
-}
-
-func (m *Message) GetOneofDefaultedSfixed64() int64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed64); ok {
-		return x.OneofDefaultedSfixed64
-	}
-	return Default_Message_OneofDefaultedSfixed64
-}
-
-func (m *Message) GetOneofDefaultedDouble() float64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedDouble); ok {
-		return x.OneofDefaultedDouble
-	}
-	return Default_Message_OneofDefaultedDouble
-}
-
-func (m *Message) GetOneofDefaultedString() string {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedString); ok {
-		return x.OneofDefaultedString
-	}
-	return Default_Message_OneofDefaultedString
-}
-
-func (m *Message) GetOneofDefaultedBytes() []byte {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBytes); ok {
-		return x.OneofDefaultedBytes
-	}
-	return append([]byte(nil), Default_Message_OneofDefaultedBytes...)
-}
-
-func (m *Message) GetOneofDefaultedChildEnum() Message_ChildEnum {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedChildEnum); ok {
-		return x.OneofDefaultedChildEnum
-	}
-	return Default_Message_OneofDefaultedChildEnum
-}
-
-func (m *Message) GetOneofDefaultedSiblingEnum() SiblingEnum {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSiblingEnum); ok {
-		return x.OneofDefaultedSiblingEnum
-	}
-	return Default_Message_OneofDefaultedSiblingEnum
-}
-
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*Message) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _Message_OneofMarshaler, _Message_OneofUnmarshaler, _Message_OneofSizer, []interface{}{
-		(*Message_OneofBool)(nil),
-		(*Message_OneofInt32)(nil),
-		(*Message_OneofSint32)(nil),
-		(*Message_OneofUint32)(nil),
-		(*Message_OneofInt64)(nil),
-		(*Message_OneofSint64)(nil),
-		(*Message_OneofUint64)(nil),
-		(*Message_OneofFixed32)(nil),
-		(*Message_OneofSfixed32)(nil),
-		(*Message_OneofFloat)(nil),
-		(*Message_OneofFixed64)(nil),
-		(*Message_OneofSfixed64)(nil),
-		(*Message_OneofDouble)(nil),
-		(*Message_OneofString)(nil),
-		(*Message_OneofBytes)(nil),
-		(*Message_OneofChildEnum)(nil),
-		(*Message_OneofChildMessage)(nil),
-		(*Message_OneofNamedGroup)(nil),
-		(*Message_OneofSiblingEnum)(nil),
-		(*Message_OneofSiblingMessage)(nil),
-		(*Message_Oneofgroup)(nil),
-		(*Message_OneofString1)(nil),
-		(*Message_OneofString2)(nil),
-		(*Message_OneofString3)(nil),
-		(*Message_OneofDefaultedBool)(nil),
-		(*Message_OneofDefaultedInt32)(nil),
-		(*Message_OneofDefaultedSint32)(nil),
-		(*Message_OneofDefaultedUint32)(nil),
-		(*Message_OneofDefaultedInt64)(nil),
-		(*Message_OneofDefaultedSint64)(nil),
-		(*Message_OneofDefaultedUint64)(nil),
-		(*Message_OneofDefaultedFixed32)(nil),
-		(*Message_OneofDefaultedSfixed32)(nil),
-		(*Message_OneofDefaultedFloat)(nil),
-		(*Message_OneofDefaultedFixed64)(nil),
-		(*Message_OneofDefaultedSfixed64)(nil),
-		(*Message_OneofDefaultedDouble)(nil),
-		(*Message_OneofDefaultedString)(nil),
-		(*Message_OneofDefaultedBytes)(nil),
-		(*Message_OneofDefaultedChildEnum)(nil),
-		(*Message_OneofDefaultedSiblingEnum)(nil),
-	}
-}
-
-func _Message_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*Message)
-	// oneof_union
-	switch x := m.OneofUnion.(type) {
-	case *Message_OneofBool:
-		t := uint64(0)
-		if x.OneofBool {
-			t = 1
-		}
-		b.EncodeVarint(700<<3 | proto.WireVarint)
-		b.EncodeVarint(t)
-	case *Message_OneofInt32:
-		b.EncodeVarint(701<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofInt32))
-	case *Message_OneofSint32:
-		b.EncodeVarint(702<<3 | proto.WireVarint)
-		b.EncodeZigzag32(uint64(x.OneofSint32))
-	case *Message_OneofUint32:
-		b.EncodeVarint(703<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofUint32))
-	case *Message_OneofInt64:
-		b.EncodeVarint(704<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofInt64))
-	case *Message_OneofSint64:
-		b.EncodeVarint(705<<3 | proto.WireVarint)
-		b.EncodeZigzag64(uint64(x.OneofSint64))
-	case *Message_OneofUint64:
-		b.EncodeVarint(706<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofUint64))
-	case *Message_OneofFixed32:
-		b.EncodeVarint(707<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofFixed32))
-	case *Message_OneofSfixed32:
-		b.EncodeVarint(708<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofSfixed32))
-	case *Message_OneofFloat:
-		b.EncodeVarint(709<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(math.Float32bits(x.OneofFloat)))
-	case *Message_OneofFixed64:
-		b.EncodeVarint(710<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofFixed64))
-	case *Message_OneofSfixed64:
-		b.EncodeVarint(711<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofSfixed64))
-	case *Message_OneofDouble:
-		b.EncodeVarint(712<<3 | proto.WireFixed64)
-		b.EncodeFixed64(math.Float64bits(x.OneofDouble))
-	case *Message_OneofString:
-		b.EncodeVarint(713<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString)
-	case *Message_OneofBytes:
-		b.EncodeVarint(714<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.OneofBytes)
-	case *Message_OneofChildEnum:
-		b.EncodeVarint(715<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofChildEnum))
-	case *Message_OneofChildMessage:
-		b.EncodeVarint(716<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofChildMessage); err != nil {
-			return err
-		}
-	case *Message_OneofNamedGroup:
-		b.EncodeVarint(717<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofNamedGroup); err != nil {
-			return err
-		}
-	case *Message_OneofSiblingEnum:
-		b.EncodeVarint(718<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofSiblingEnum))
-	case *Message_OneofSiblingMessage:
-		b.EncodeVarint(719<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofSiblingMessage); err != nil {
-			return err
-		}
-	case *Message_Oneofgroup:
-		b.EncodeVarint(720<<3 | proto.WireStartGroup)
-		if err := b.Marshal(x.Oneofgroup); err != nil {
-			return err
-		}
-		b.EncodeVarint(720<<3 | proto.WireEndGroup)
-	case *Message_OneofString1:
-		b.EncodeVarint(721<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString1)
-	case *Message_OneofString2:
-		b.EncodeVarint(722<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString2)
-	case *Message_OneofString3:
-		b.EncodeVarint(723<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString3)
-	case nil:
-	default:
-		return fmt.Errorf("Message.OneofUnion has unexpected type %T", x)
-	}
-	// oneof_defaulted_union
-	switch x := m.OneofDefaultedUnion.(type) {
-	case *Message_OneofDefaultedBool:
-		t := uint64(0)
-		if x.OneofDefaultedBool {
-			t = 1
-		}
-		b.EncodeVarint(800<<3 | proto.WireVarint)
-		b.EncodeVarint(t)
-	case *Message_OneofDefaultedInt32:
-		b.EncodeVarint(801<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedInt32))
-	case *Message_OneofDefaultedSint32:
-		b.EncodeVarint(802<<3 | proto.WireVarint)
-		b.EncodeZigzag32(uint64(x.OneofDefaultedSint32))
-	case *Message_OneofDefaultedUint32:
-		b.EncodeVarint(803<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedUint32))
-	case *Message_OneofDefaultedInt64:
-		b.EncodeVarint(804<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedInt64))
-	case *Message_OneofDefaultedSint64:
-		b.EncodeVarint(805<<3 | proto.WireVarint)
-		b.EncodeZigzag64(uint64(x.OneofDefaultedSint64))
-	case *Message_OneofDefaultedUint64:
-		b.EncodeVarint(806<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedUint64))
-	case *Message_OneofDefaultedFixed32:
-		b.EncodeVarint(807<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofDefaultedFixed32))
-	case *Message_OneofDefaultedSfixed32:
-		b.EncodeVarint(808<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofDefaultedSfixed32))
-	case *Message_OneofDefaultedFloat:
-		b.EncodeVarint(809<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(math.Float32bits(x.OneofDefaultedFloat)))
-	case *Message_OneofDefaultedFixed64:
-		b.EncodeVarint(810<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofDefaultedFixed64))
-	case *Message_OneofDefaultedSfixed64:
-		b.EncodeVarint(811<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofDefaultedSfixed64))
-	case *Message_OneofDefaultedDouble:
-		b.EncodeVarint(812<<3 | proto.WireFixed64)
-		b.EncodeFixed64(math.Float64bits(x.OneofDefaultedDouble))
-	case *Message_OneofDefaultedString:
-		b.EncodeVarint(813<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofDefaultedString)
-	case *Message_OneofDefaultedBytes:
-		b.EncodeVarint(814<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.OneofDefaultedBytes)
-	case *Message_OneofDefaultedChildEnum:
-		b.EncodeVarint(815<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedChildEnum))
-	case *Message_OneofDefaultedSiblingEnum:
-		b.EncodeVarint(816<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedSiblingEnum))
-	case nil:
-	default:
-		return fmt.Errorf("Message.OneofDefaultedUnion has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _Message_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*Message)
-	switch tag {
-	case 700: // oneof_union.oneof_bool
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofBool{x != 0}
-		return true, err
-	case 701: // oneof_union.oneof_int32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofInt32{int32(x)}
-		return true, err
-	case 702: // oneof_union.oneof_sint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag32()
-		m.OneofUnion = &Message_OneofSint32{int32(x)}
-		return true, err
-	case 703: // oneof_union.oneof_uint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofUint32{uint32(x)}
-		return true, err
-	case 704: // oneof_union.oneof_int64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofInt64{int64(x)}
-		return true, err
-	case 705: // oneof_union.oneof_sint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag64()
-		m.OneofUnion = &Message_OneofSint64{int64(x)}
-		return true, err
-	case 706: // oneof_union.oneof_uint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofUint64{x}
-		return true, err
-	case 707: // oneof_union.oneof_fixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofFixed32{uint32(x)}
-		return true, err
-	case 708: // oneof_union.oneof_sfixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofSfixed32{int32(x)}
-		return true, err
-	case 709: // oneof_union.oneof_float
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofFloat{math.Float32frombits(uint32(x))}
-		return true, err
-	case 710: // oneof_union.oneof_fixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofFixed64{x}
-		return true, err
-	case 711: // oneof_union.oneof_sfixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofSfixed64{int64(x)}
-		return true, err
-	case 712: // oneof_union.oneof_double
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofDouble{math.Float64frombits(x)}
-		return true, err
-	case 713: // oneof_union.oneof_string
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString{x}
-		return true, err
-	case 714: // oneof_union.oneof_bytes
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.OneofUnion = &Message_OneofBytes{x}
-		return true, err
-	case 715: // oneof_union.oneof_child_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofChildEnum{Message_ChildEnum(x)}
-		return true, err
-	case 716: // oneof_union.oneof_child_message
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Message_ChildMessage)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofChildMessage{msg}
-		return true, err
-	case 717: // oneof_union.oneof_named_group
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Message_NamedGroup)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofNamedGroup{msg}
-		return true, err
-	case 718: // oneof_union.oneof_sibling_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofSiblingEnum{SiblingEnum(x)}
-		return true, err
-	case 719: // oneof_union.oneof_sibling_message
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(SiblingMessage)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofSiblingMessage{msg}
-		return true, err
-	case 720: // oneof_union.oneofgroup
-		if wire != proto.WireStartGroup {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Message_OneofGroup)
-		err := b.DecodeGroup(msg)
-		m.OneofUnion = &Message_Oneofgroup{msg}
-		return true, err
-	case 721: // oneof_union.oneof_string1
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString1{x}
-		return true, err
-	case 722: // oneof_union.oneof_string2
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString2{x}
-		return true, err
-	case 723: // oneof_union.oneof_string3
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString3{x}
-		return true, err
-	case 800: // oneof_defaulted_union.oneof_defaulted_bool
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedBool{x != 0}
-		return true, err
-	case 801: // oneof_defaulted_union.oneof_defaulted_int32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedInt32{int32(x)}
-		return true, err
-	case 802: // oneof_defaulted_union.oneof_defaulted_sint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag32()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSint32{int32(x)}
-		return true, err
-	case 803: // oneof_defaulted_union.oneof_defaulted_uint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedUint32{uint32(x)}
-		return true, err
-	case 804: // oneof_defaulted_union.oneof_defaulted_int64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedInt64{int64(x)}
-		return true, err
-	case 805: // oneof_defaulted_union.oneof_defaulted_sint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag64()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSint64{int64(x)}
-		return true, err
-	case 806: // oneof_defaulted_union.oneof_defaulted_uint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedUint64{x}
-		return true, err
-	case 807: // oneof_defaulted_union.oneof_defaulted_fixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedFixed32{uint32(x)}
-		return true, err
-	case 808: // oneof_defaulted_union.oneof_defaulted_sfixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSfixed32{int32(x)}
-		return true, err
-	case 809: // oneof_defaulted_union.oneof_defaulted_float
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedFloat{math.Float32frombits(uint32(x))}
-		return true, err
-	case 810: // oneof_defaulted_union.oneof_defaulted_fixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedFixed64{x}
-		return true, err
-	case 811: // oneof_defaulted_union.oneof_defaulted_sfixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSfixed64{int64(x)}
-		return true, err
-	case 812: // oneof_defaulted_union.oneof_defaulted_double
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedDouble{math.Float64frombits(x)}
-		return true, err
-	case 813: // oneof_defaulted_union.oneof_defaulted_string
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedString{x}
-		return true, err
-	case 814: // oneof_defaulted_union.oneof_defaulted_bytes
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.OneofDefaultedUnion = &Message_OneofDefaultedBytes{x}
-		return true, err
-	case 815: // oneof_defaulted_union.oneof_defaulted_child_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedChildEnum{Message_ChildEnum(x)}
-		return true, err
-	case 816: // oneof_defaulted_union.oneof_defaulted_sibling_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSiblingEnum{SiblingEnum(x)}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _Message_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*Message)
-	// oneof_union
-	switch x := m.OneofUnion.(type) {
-	case *Message_OneofBool:
-		n += proto.SizeVarint(700<<3 | proto.WireVarint)
-		n += 1
-	case *Message_OneofInt32:
-		n += proto.SizeVarint(701<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofInt32))
-	case *Message_OneofSint32:
-		n += proto.SizeVarint(702<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64((uint32(x.OneofSint32) << 1) ^ uint32((int32(x.OneofSint32) >> 31))))
-	case *Message_OneofUint32:
-		n += proto.SizeVarint(703<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofUint32))
-	case *Message_OneofInt64:
-		n += proto.SizeVarint(704<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofInt64))
-	case *Message_OneofSint64:
-		n += proto.SizeVarint(705<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(uint64(x.OneofSint64<<1) ^ uint64((int64(x.OneofSint64) >> 63))))
-	case *Message_OneofUint64:
-		n += proto.SizeVarint(706<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofUint64))
-	case *Message_OneofFixed32:
-		n += proto.SizeVarint(707<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofSfixed32:
-		n += proto.SizeVarint(708<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofFloat:
-		n += proto.SizeVarint(709<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofFixed64:
-		n += proto.SizeVarint(710<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofSfixed64:
-		n += proto.SizeVarint(711<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofDouble:
-		n += proto.SizeVarint(712<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofString:
-		n += proto.SizeVarint(713<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString)))
-		n += len(x.OneofString)
-	case *Message_OneofBytes:
-		n += proto.SizeVarint(714<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofBytes)))
-		n += len(x.OneofBytes)
-	case *Message_OneofChildEnum:
-		n += proto.SizeVarint(715<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofChildEnum))
-	case *Message_OneofChildMessage:
-		s := proto.Size(x.OneofChildMessage)
-		n += proto.SizeVarint(716<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_OneofNamedGroup:
-		s := proto.Size(x.OneofNamedGroup)
-		n += proto.SizeVarint(717<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_OneofSiblingEnum:
-		n += proto.SizeVarint(718<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofSiblingEnum))
-	case *Message_OneofSiblingMessage:
-		s := proto.Size(x.OneofSiblingMessage)
-		n += proto.SizeVarint(719<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_Oneofgroup:
-		n += proto.SizeVarint(720<<3 | proto.WireStartGroup)
-		n += proto.Size(x.Oneofgroup)
-		n += proto.SizeVarint(720<<3 | proto.WireEndGroup)
-	case *Message_OneofString1:
-		n += proto.SizeVarint(721<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString1)))
-		n += len(x.OneofString1)
-	case *Message_OneofString2:
-		n += proto.SizeVarint(722<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString2)))
-		n += len(x.OneofString2)
-	case *Message_OneofString3:
-		n += proto.SizeVarint(723<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString3)))
-		n += len(x.OneofString3)
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	// oneof_defaulted_union
-	switch x := m.OneofDefaultedUnion.(type) {
-	case *Message_OneofDefaultedBool:
-		n += proto.SizeVarint(800<<3 | proto.WireVarint)
-		n += 1
-	case *Message_OneofDefaultedInt32:
-		n += proto.SizeVarint(801<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofDefaultedInt32))
-	case *Message_OneofDefaultedSint32:
-		n += proto.SizeVarint(802<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64((uint32(x.OneofDefaultedSint32) << 1) ^ uint32((int32(x.OneofDefaultedSint32) >> 31))))
-	case *Message_OneofDefaultedUint32:
-		n += proto.SizeVarint(803<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofDefaultedUint32))
-	case *Message_OneofDefaultedInt64:
-		n += proto.SizeVarint(804<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofDefaultedInt64))
-	case *Message_OneofDefaultedSint64:
-		n += proto.SizeVarint(805<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(uint64(x.OneofDefaultedSint64<<1) ^ uint64((int64(x.OneofDefaultedSint64) >> 63))))
-	case *Message_OneofDefaultedUint64:
-		n += proto.SizeVarint(806<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofDefaultedUint64))
-	case *Message_OneofDefaultedFixed32:
-		n += proto.SizeVarint(807<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofDefaultedSfixed32:
-		n += proto.SizeVarint(808<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofDefaultedFloat:
-		n += proto.SizeVarint(809<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofDefaultedFixed64:
-		n += proto.SizeVarint(810<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofDefaultedSfixed64:
-		n += proto.SizeVarint(811<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofDefaultedDouble:
-		n += proto.SizeVarint(812<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofDefaultedString:
-		n += proto.SizeVarint(813<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofDefaultedString)))
-		n += len(x.OneofDefaultedString)
-	case *Message_OneofDefaultedBytes:
-		n += proto.SizeVarint(814<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofDefaultedBytes)))
-		n += len(x.OneofDefaultedBytes)
-	case *Message_OneofDefaultedChildEnum:
-		n += proto.SizeVarint(815<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofDefaultedChildEnum))
-	case *Message_OneofDefaultedSiblingEnum:
-		n += proto.SizeVarint(816<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofDefaultedSiblingEnum))
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
-var E_Message_ExtensionOptionalBool = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*bool)(nil),
-	Field:         10000,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_bool",
-	Tag:           "varint,10000,opt,name=extension_optional_bool,json=extensionOptionalBool",
-}
-
-var E_Message_ExtensionOptionalInt32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         10001,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_int32",
-	Tag:           "varint,10001,opt,name=extension_optional_int32,json=extensionOptionalInt32",
-}
-
-var E_Message_ExtensionOptionalSint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         10002,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_sint32",
-	Tag:           "zigzag32,10002,opt,name=extension_optional_sint32,json=extensionOptionalSint32",
-}
-
-var E_Message_ExtensionOptionalUint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         10003,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_uint32",
-	Tag:           "varint,10003,opt,name=extension_optional_uint32,json=extensionOptionalUint32",
-}
-
-var E_Message_ExtensionOptionalInt64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         10004,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_int64",
-	Tag:           "varint,10004,opt,name=extension_optional_int64,json=extensionOptionalInt64",
-}
-
-var E_Message_ExtensionOptionalSint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         10005,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_sint64",
-	Tag:           "zigzag64,10005,opt,name=extension_optional_sint64,json=extensionOptionalSint64",
-}
-
-var E_Message_ExtensionOptionalUint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         10006,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_uint64",
-	Tag:           "varint,10006,opt,name=extension_optional_uint64,json=extensionOptionalUint64",
-}
-
-var E_Message_ExtensionOptionalFixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         10007,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_fixed32",
-	Tag:           "fixed32,10007,opt,name=extension_optional_fixed32,json=extensionOptionalFixed32",
-}
-
-var E_Message_ExtensionOptionalSfixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         10008,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_sfixed32",
-	Tag:           "fixed32,10008,opt,name=extension_optional_sfixed32,json=extensionOptionalSfixed32",
-}
-
-var E_Message_ExtensionOptionalFloat = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float32)(nil),
-	Field:         10009,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_float",
-	Tag:           "fixed32,10009,opt,name=extension_optional_float,json=extensionOptionalFloat",
-}
-
-var E_Message_ExtensionOptionalFixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         10010,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_fixed64",
-	Tag:           "fixed64,10010,opt,name=extension_optional_fixed64,json=extensionOptionalFixed64",
-}
-
-var E_Message_ExtensionOptionalSfixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         10011,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_sfixed64",
-	Tag:           "fixed64,10011,opt,name=extension_optional_sfixed64,json=extensionOptionalSfixed64",
-}
-
-var E_Message_ExtensionOptionalDouble = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float64)(nil),
-	Field:         10012,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_double",
-	Tag:           "fixed64,10012,opt,name=extension_optional_double,json=extensionOptionalDouble",
-}
-
-var E_Message_ExtensionOptionalString = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*string)(nil),
-	Field:         10013,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_string",
-	Tag:           "bytes,10013,opt,name=extension_optional_string,json=extensionOptionalString",
-}
-
-var E_Message_ExtensionOptionalBytes = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]byte)(nil),
-	Field:         10014,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_bytes",
-	Tag:           "bytes,10014,opt,name=extension_optional_bytes,json=extensionOptionalBytes",
-}
-
-var E_Message_ExtensionOptionalChildEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ChildEnum)(nil),
-	Field:         10015,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_child_enum",
-	Tag:           "varint,10015,opt,name=extension_optional_child_enum,json=extensionOptionalChildEnum,enum=google.golang.org.proto2_20160225.Message_ChildEnum",
-}
-
-var E_Message_ExtensionOptionalChildMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ChildMessage)(nil),
-	Field:         10016,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_child_message",
-	Tag:           "bytes,10016,opt,name=extension_optional_child_message,json=extensionOptionalChildMessage",
-}
-
-var E_Message_ExtensionOptionalNamedGroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_NamedGroup)(nil),
-	Field:         10017,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_named_group",
-	Tag:           "bytes,10017,opt,name=extension_optional_named_group,json=extensionOptionalNamedGroup",
-}
-
-var E_Message_ExtensionOptionalSiblingEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*SiblingEnum)(nil),
-	Field:         10018,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_sibling_enum",
-	Tag:           "varint,10018,opt,name=extension_optional_sibling_enum,json=extensionOptionalSiblingEnum,enum=google.golang.org.proto2_20160225.SiblingEnum",
-}
-
-var E_Message_ExtensionOptionalSiblingMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*SiblingMessage)(nil),
-	Field:         10019,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_optional_sibling_message",
-	Tag:           "bytes,10019,opt,name=extension_optional_sibling_message,json=extensionOptionalSiblingMessage",
-}
-
-var E_Message_Extensionoptionalgroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ExtensionOptionalGroup)(nil),
-	Field:         10020,
-	Name:          "google.golang.org.proto2_20160225.Message.extensionoptionalgroup",
-	Tag:           "group,10020,opt,name=ExtensionOptionalGroup,json=extensionoptionalgroup",
-}
-
-var E_Message_ExtensionDefaultedBool = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*bool)(nil),
-	Field:         20000,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_bool",
-	Tag:           "varint,20000,opt,name=extension_defaulted_bool,json=extensionDefaultedBool,def=1",
-}
-
-var E_Message_ExtensionDefaultedInt32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         20001,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_int32",
-	Tag:           "varint,20001,opt,name=extension_defaulted_int32,json=extensionDefaultedInt32,def=-12345",
-}
-
-var E_Message_ExtensionDefaultedSint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         20002,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_sint32",
-	Tag:           "zigzag32,20002,opt,name=extension_defaulted_sint32,json=extensionDefaultedSint32,def=-3200",
-}
-
-var E_Message_ExtensionDefaultedUint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         20003,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_uint32",
-	Tag:           "varint,20003,opt,name=extension_defaulted_uint32,json=extensionDefaultedUint32,def=3200",
-}
-
-var E_Message_ExtensionDefaultedInt64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         20004,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_int64",
-	Tag:           "varint,20004,opt,name=extension_defaulted_int64,json=extensionDefaultedInt64,def=-123456789",
-}
-
-var E_Message_ExtensionDefaultedSint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         20005,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_sint64",
-	Tag:           "zigzag64,20005,opt,name=extension_defaulted_sint64,json=extensionDefaultedSint64,def=-6400",
-}
-
-var E_Message_ExtensionDefaultedUint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         20006,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_uint64",
-	Tag:           "varint,20006,opt,name=extension_defaulted_uint64,json=extensionDefaultedUint64,def=6400",
-}
-
-var E_Message_ExtensionDefaultedFixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         20007,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_fixed32",
-	Tag:           "fixed32,20007,opt,name=extension_defaulted_fixed32,json=extensionDefaultedFixed32,def=320000",
-}
-
-var E_Message_ExtensionDefaultedSfixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         20008,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_sfixed32",
-	Tag:           "fixed32,20008,opt,name=extension_defaulted_sfixed32,json=extensionDefaultedSfixed32,def=-320000",
-}
-
-var E_Message_ExtensionDefaultedFloat = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float32)(nil),
-	Field:         20009,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_float",
-	Tag:           "fixed32,20009,opt,name=extension_defaulted_float,json=extensionDefaultedFloat,def=3.14159",
-}
-
-var E_Message_ExtensionDefaultedFixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         20010,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_fixed64",
-	Tag:           "fixed64,20010,opt,name=extension_defaulted_fixed64,json=extensionDefaultedFixed64,def=640000",
-}
-
-var E_Message_ExtensionDefaultedSfixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         20011,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_sfixed64",
-	Tag:           "fixed64,20011,opt,name=extension_defaulted_sfixed64,json=extensionDefaultedSfixed64,def=-640000",
-}
-
-var E_Message_ExtensionDefaultedDouble = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float64)(nil),
-	Field:         20012,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_double",
-	Tag:           "fixed64,20012,opt,name=extension_defaulted_double,json=extensionDefaultedDouble,def=3.14159265359",
-}
-
-var E_Message_ExtensionDefaultedString = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*string)(nil),
-	Field:         20013,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_string",
-	Tag:           "bytes,20013,opt,name=extension_defaulted_string,json=extensionDefaultedString,def=hello, \"world!\"\n",
-}
-
-var E_Message_ExtensionDefaultedBytes = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]byte)(nil),
-	Field:         20014,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_bytes",
-	Tag:           "bytes,20014,opt,name=extension_defaulted_bytes,json=extensionDefaultedBytes,def=dead\\336\\255\\276\\357beef",
-}
-
-var E_Message_ExtensionDefaultedChildEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ChildEnum)(nil),
-	Field:         20015,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_child_enum",
-	Tag:           "varint,20015,opt,name=extension_defaulted_child_enum,json=extensionDefaultedChildEnum,enum=google.golang.org.proto2_20160225.Message_ChildEnum,def=0",
-}
-
-var E_Message_ExtensionDefaultedSiblingEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*SiblingEnum)(nil),
-	Field:         20016,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_defaulted_sibling_enum",
-	Tag:           "varint,20016,opt,name=extension_defaulted_sibling_enum,json=extensionDefaultedSiblingEnum,enum=google.golang.org.proto2_20160225.SiblingEnum,def=0",
-}
-
-var E_Message_ExtensionRepeatedBool = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]bool)(nil),
-	Field:         30000,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_bool",
-	Tag:           "varint,30000,rep,name=extension_repeated_bool,json=extensionRepeatedBool",
-}
-
-var E_Message_ExtensionRepeatedInt32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int32)(nil),
-	Field:         30001,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_int32",
-	Tag:           "varint,30001,rep,name=extension_repeated_int32,json=extensionRepeatedInt32",
-}
-
-var E_Message_ExtensionRepeatedSint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int32)(nil),
-	Field:         30002,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_sint32",
-	Tag:           "zigzag32,30002,rep,name=extension_repeated_sint32,json=extensionRepeatedSint32",
-}
-
-var E_Message_ExtensionRepeatedUint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint32)(nil),
-	Field:         30003,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_uint32",
-	Tag:           "varint,30003,rep,name=extension_repeated_uint32,json=extensionRepeatedUint32",
-}
-
-var E_Message_ExtensionRepeatedInt64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int64)(nil),
-	Field:         30004,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_int64",
-	Tag:           "varint,30004,rep,name=extension_repeated_int64,json=extensionRepeatedInt64",
-}
-
-var E_Message_ExtensionRepeatedSint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int64)(nil),
-	Field:         30005,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_sint64",
-	Tag:           "zigzag64,30005,rep,name=extension_repeated_sint64,json=extensionRepeatedSint64",
-}
-
-var E_Message_ExtensionRepeatedUint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint64)(nil),
-	Field:         30006,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_uint64",
-	Tag:           "varint,30006,rep,name=extension_repeated_uint64,json=extensionRepeatedUint64",
-}
-
-var E_Message_ExtensionRepeatedFixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint32)(nil),
-	Field:         30007,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_fixed32",
-	Tag:           "fixed32,30007,rep,name=extension_repeated_fixed32,json=extensionRepeatedFixed32",
-}
-
-var E_Message_ExtensionRepeatedSfixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int32)(nil),
-	Field:         30008,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_sfixed32",
-	Tag:           "fixed32,30008,rep,name=extension_repeated_sfixed32,json=extensionRepeatedSfixed32",
-}
-
-var E_Message_ExtensionRepeatedFloat = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]float32)(nil),
-	Field:         30009,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_float",
-	Tag:           "fixed32,30009,rep,name=extension_repeated_float,json=extensionRepeatedFloat",
-}
-
-var E_Message_ExtensionRepeatedFixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint64)(nil),
-	Field:         30010,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_fixed64",
-	Tag:           "fixed64,30010,rep,name=extension_repeated_fixed64,json=extensionRepeatedFixed64",
-}
-
-var E_Message_ExtensionRepeatedSfixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int64)(nil),
-	Field:         30011,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_sfixed64",
-	Tag:           "fixed64,30011,rep,name=extension_repeated_sfixed64,json=extensionRepeatedSfixed64",
-}
-
-var E_Message_ExtensionRepeatedDouble = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]float64)(nil),
-	Field:         30012,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_double",
-	Tag:           "fixed64,30012,rep,name=extension_repeated_double,json=extensionRepeatedDouble",
-}
-
-var E_Message_ExtensionRepeatedString = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]string)(nil),
-	Field:         30013,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_string",
-	Tag:           "bytes,30013,rep,name=extension_repeated_string,json=extensionRepeatedString",
-}
-
-var E_Message_ExtensionRepeatedBytes = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([][]byte)(nil),
-	Field:         30014,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_bytes",
-	Tag:           "bytes,30014,rep,name=extension_repeated_bytes,json=extensionRepeatedBytes",
-}
-
-var E_Message_ExtensionRepeatedChildEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]Message_ChildEnum)(nil),
-	Field:         30015,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_child_enum",
-	Tag:           "varint,30015,rep,name=extension_repeated_child_enum,json=extensionRepeatedChildEnum,enum=google.golang.org.proto2_20160225.Message_ChildEnum",
-}
-
-var E_Message_ExtensionRepeatedChildMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*Message_ChildMessage)(nil),
-	Field:         30016,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_child_message",
-	Tag:           "bytes,30016,rep,name=extension_repeated_child_message,json=extensionRepeatedChildMessage",
-}
-
-var E_Message_ExtensionRepeatedNamedGroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*Message_NamedGroup)(nil),
-	Field:         30017,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_named_group",
-	Tag:           "bytes,30017,rep,name=extension_repeated_named_group,json=extensionRepeatedNamedGroup",
-}
-
-var E_Message_ExtensionRepeatedSiblingEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]SiblingEnum)(nil),
-	Field:         30018,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_sibling_enum",
-	Tag:           "varint,30018,rep,name=extension_repeated_sibling_enum,json=extensionRepeatedSiblingEnum,enum=google.golang.org.proto2_20160225.SiblingEnum",
-}
-
-var E_Message_ExtensionRepeatedSiblingMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*SiblingMessage)(nil),
-	Field:         30019,
-	Name:          "google.golang.org.proto2_20160225.Message.extension_repeated_sibling_message",
-	Tag:           "bytes,30019,rep,name=extension_repeated_sibling_message,json=extensionRepeatedSiblingMessage",
-}
-
-var E_Message_Extensionrepeatedgroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*Message_ExtensionRepeatedGroup)(nil),
-	Field:         30020,
-	Name:          "google.golang.org.proto2_20160225.Message.extensionrepeatedgroup",
-	Tag:           "group,30020,rep,name=ExtensionRepeatedGroup,json=extensionrepeatedgroup",
-}
-
-type Message_ChildMessage struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	F4               *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_ChildMessage) Reset()                    { *m = Message_ChildMessage{} }
-func (m *Message_ChildMessage) String() string            { return proto.CompactTextString(m) }
-func (*Message_ChildMessage) ProtoMessage()               {}
-func (*Message_ChildMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
-
-func (m *Message_ChildMessage) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_ChildMessage) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_ChildMessage) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func (m *Message_ChildMessage) GetF4() *Message {
-	if m != nil {
-		return m.F4
-	}
-	return nil
-}
-
-type Message_NamedGroup struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	F4               *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_NamedGroup) Reset()                    { *m = Message_NamedGroup{} }
-func (m *Message_NamedGroup) String() string            { return proto.CompactTextString(m) }
-func (*Message_NamedGroup) ProtoMessage()               {}
-func (*Message_NamedGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 1} }
-
-func (m *Message_NamedGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_NamedGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_NamedGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func (m *Message_NamedGroup) GetF4() *Message {
-	if m != nil {
-		return m.F4
-	}
-	return nil
-}
-
-type Message_OptionalGroup struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_OptionalGroup) Reset()                    { *m = Message_OptionalGroup{} }
-func (m *Message_OptionalGroup) String() string            { return proto.CompactTextString(m) }
-func (*Message_OptionalGroup) ProtoMessage()               {}
-func (*Message_OptionalGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 2} }
-
-func (m *Message_OptionalGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_OptionalGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_OptionalGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_RequiredGroup struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_RequiredGroup) Reset()                    { *m = Message_RequiredGroup{} }
-func (m *Message_RequiredGroup) String() string            { return proto.CompactTextString(m) }
-func (*Message_RequiredGroup) ProtoMessage()               {}
-func (*Message_RequiredGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 3} }
-
-func (m *Message_RequiredGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_RequiredGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_RequiredGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_RepeatedGroup struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_RepeatedGroup) Reset()                    { *m = Message_RepeatedGroup{} }
-func (m *Message_RepeatedGroup) String() string            { return proto.CompactTextString(m) }
-func (*Message_RepeatedGroup) ProtoMessage()               {}
-func (*Message_RepeatedGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 4} }
-
-func (m *Message_RepeatedGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_RepeatedGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_RepeatedGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_OneofGroup struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_OneofGroup) Reset()                    { *m = Message_OneofGroup{} }
-func (m *Message_OneofGroup) String() string            { return proto.CompactTextString(m) }
-func (*Message_OneofGroup) ProtoMessage()               {}
-func (*Message_OneofGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 33} }
-
-func (m *Message_OneofGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_OneofGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_OneofGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_ExtensionOptionalGroup struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_ExtensionOptionalGroup) Reset()         { *m = Message_ExtensionOptionalGroup{} }
-func (m *Message_ExtensionOptionalGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_ExtensionOptionalGroup) ProtoMessage()    {}
-func (*Message_ExtensionOptionalGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{1, 34}
-}
-
-func (m *Message_ExtensionOptionalGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_ExtensionOptionalGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_ExtensionOptionalGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_ExtensionRepeatedGroup struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_ExtensionRepeatedGroup) Reset()         { *m = Message_ExtensionRepeatedGroup{} }
-func (m *Message_ExtensionRepeatedGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_ExtensionRepeatedGroup) ProtoMessage()    {}
-func (*Message_ExtensionRepeatedGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{1, 35}
-}
-
-func (m *Message_ExtensionRepeatedGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_ExtensionRepeatedGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_ExtensionRepeatedGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func init() {
-	proto.RegisterType((*SiblingMessage)(nil), "google.golang.org.proto2_20160225.SiblingMessage")
-	proto.RegisterType((*Message)(nil), "google.golang.org.proto2_20160225.Message")
-	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto2_20160225.Message.ChildMessage")
-	proto.RegisterType((*Message_NamedGroup)(nil), "google.golang.org.proto2_20160225.Message.NamedGroup")
-	proto.RegisterType((*Message_OptionalGroup)(nil), "google.golang.org.proto2_20160225.Message.OptionalGroup")
-	proto.RegisterType((*Message_RequiredGroup)(nil), "google.golang.org.proto2_20160225.Message.RequiredGroup")
-	proto.RegisterType((*Message_RepeatedGroup)(nil), "google.golang.org.proto2_20160225.Message.RepeatedGroup")
-	proto.RegisterType((*Message_OneofGroup)(nil), "google.golang.org.proto2_20160225.Message.OneofGroup")
-	proto.RegisterType((*Message_ExtensionOptionalGroup)(nil), "google.golang.org.proto2_20160225.Message.ExtensionOptionalGroup")
-	proto.RegisterType((*Message_ExtensionRepeatedGroup)(nil), "google.golang.org.proto2_20160225.Message.ExtensionRepeatedGroup")
-	proto.RegisterEnum("google.golang.org.proto2_20160225.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
-	proto.RegisterEnum("google.golang.org.proto2_20160225.Message_ChildEnum", Message_ChildEnum_name, Message_ChildEnum_value)
-	proto.RegisterExtension(E_Message_ExtensionOptionalBool)
-	proto.RegisterExtension(E_Message_ExtensionOptionalInt32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSint32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalUint32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalInt64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSint64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalUint64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalFixed32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalFloat)
-	proto.RegisterExtension(E_Message_ExtensionOptionalFixed64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalDouble)
-	proto.RegisterExtension(E_Message_ExtensionOptionalString)
-	proto.RegisterExtension(E_Message_ExtensionOptionalBytes)
-	proto.RegisterExtension(E_Message_ExtensionOptionalChildEnum)
-	proto.RegisterExtension(E_Message_ExtensionOptionalChildMessage)
-	proto.RegisterExtension(E_Message_ExtensionOptionalNamedGroup)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingEnum)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingMessage)
-	proto.RegisterExtension(E_Message_Extensionoptionalgroup)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedBool)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedInt32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSint32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedUint32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedInt64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSint64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedUint64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedFloat)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedDouble)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedString)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedBytes)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedChildEnum)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSiblingEnum)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedBool)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedInt32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSint32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedUint32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedInt64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSint64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedUint64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedFloat)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedDouble)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedString)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedBytes)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedChildEnum)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedChildMessage)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedNamedGroup)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingEnum)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingMessage)
-	proto.RegisterExtension(E_Message_Extensionrepeatedgroup)
-}
-
-var fileDescriptor0 = []byte{
-	// 4469 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5c, 0x69, 0x70, 0x23, 0xc7,
-	0x75, 0xe6, 0x00, 0x04, 0xb8, 0xec, 0x25, 0x48, 0x70, 0x76, 0x97, 0x9c, 0xa5, 0xa4, 0x08, 0x5e,
-	0x3b, 0x0e, 0xa2, 0x68, 0xb9, 0xe4, 0xb0, 0xd9, 0x2b, 0x21, 0x3a, 0xbc, 0x94, 0x56, 0x86, 0x1c,
-	0x0b, 0x72, 0x8d, 0x6a, 0x53, 0xa9, 0x94, 0x2a, 0x0c, 0x77, 0x09, 0x70, 0x29, 0xe1, 0xa0, 0x48,
-	0x40, 0xd2, 0xc6, 0x4e, 0x69, 0xe3, 0x9c, 0x3f, 0xe5, 0xfb, 0x82, 0x6d, 0x59, 0xb7, 0x2d, 0x69,
-	0x25, 0xdf, 0x97, 0x2e, 0x1f, 0x49, 0xe4, 0xfb, 0xca, 0xe1, 0x5c, 0xce, 0x7d, 0x39, 0xf7, 0x7d,
-	0x1f, 0xd5, 0xfd, 0xba, 0xa7, 0xbb, 0x67, 0x7a, 0x40, 0xf6, 0xc0, 0xa5, 0x1f, 0xaa, 0xd2, 0x36,
-	0x5e, 0xbf, 0xaf, 0xdf, 0x87, 0x7e, 0xef, 0x7d, 0xec, 0x99, 0x06, 0x7a, 0xe9, 0xd6, 0x76, 0xa7,
-	0xdb, 0xf1, 0x57, 0xfd, 0x85, 0x45, 0xb2, 0xe0, 0xfb, 0xcb, 0xab, 0x7e, 0xe3, 0xcc, 0xc2, 0xf2,
-	0xd2, 0x99, 0xe5, 0x63, 0xdd, 0xfa, 0x4e, 0x77, 0x9e, 0x7d, 0xea, 0xbe, 0x64, 0xa3, 0xd3, 0xd9,
-	0x68, 0xd6, 0xe7, 0x37, 0x3a, 0xcd, 0xb5, 0xf6, 0xc6, 0x7c, 0x67, 0x7b, 0x63, 0x3e, 0x32, 0xed,
-	0xc8, 0xeb, 0xd0, 0xe4, 0x2d, 0x9b, 0xa7, 0x9b, 0x9b, 0xed, 0x8d, 0x9b, 0xea, 0x3b, 0x3b, 0x6b,
-	0x1b, 0x75, 0x77, 0x12, 0x65, 0x1a, 0x8b, 0x9e, 0x53, 0x72, 0xca, 0xe3, 0x41, 0xa6, 0xb1, 0xc8,
-	0xfe, 0xed, 0x7b, 0x99, 0x52, 0x86, 0xfd, 0xdb, 0x67, 0xff, 0x5e, 0xf2, 0xb2, 0xa5, 0x2c, 0xfb,
-	0xf7, 0x92, 0x5b, 0x41, 0x99, 0x06, 0xf6, 0x46, 0x4b, 0x4e, 0x79, 0xbf, 0x7f, 0xd9, 0xfc, 0xae,
-	0x88, 0xf3, 0x1c, 0x27, 0xc8, 0x34, 0xf0, 0x91, 0xef, 0x3c, 0xe6, 0xa0, 0x31, 0x01, 0x7c, 0x0a,
-	0xa1, 0xf6, 0x5a, 0xab, 0xbe, 0xbe, 0xb1, 0xdd, 0xe9, 0x6d, 0xb1, 0x05, 0x20, 0x7f, 0x79, 0xef,
-	0x0e, 0xe7, 0x6b, 0x74, 0xf2, 0x2b, 0xe9, 0xe4, 0x40, 0x71, 0xe4, 0xbe, 0x14, 0x15, 0x3a, 0x5b,
-	0xdd, 0xcd, 0x4e, 0x7b, 0xad, 0xb9, 0x7a, 0xba, 0xd3, 0x69, 0x7a, 0xeb, 0x25, 0xa7, 0xbc, 0x2f,
-	0x98, 0x10, 0x83, 0x2b, 0x9d, 0x4e, 0xd3, 0xfd, 0x7e, 0x34, 0x19, 0x1a, 0x6d, 0xb6, 0xbb, 0x4b,
-	0xbe, 0x57, 0x2f, 0x39, 0xe5, 0x5c, 0x10, 0x4e, 0xbd, 0x91, 0x0e, 0xba, 0x3f, 0x80, 0xa6, 0x42,
-	0xb3, 0x1d, 0xb0, 0x6b, 0x94, 0x9c, 0xf2, 0x74, 0x10, 0xce, 0xbe, 0x65, 0x33, 0x66, 0xd8, 0x03,
-	0xc3, 0x8d, 0x92, 0x53, 0x2e, 0x48, 0xc3, 0x53, 0x60, 0x18, 0x01, 0x26, 0xd8, 0x3b, 0x5b, 0x72,
-	0xca, 0x59, 0x0d, 0x98, 0xe0, 0x18, 0x30, 0xc1, 0xde, 0x66, 0xc9, 0x29, 0xbb, 0x3a, 0x70, 0xc4,
-	0xb0, 0x07, 0x86, 0xb7, 0x95, 0x9c, 0xf2, 0xa8, 0x0e, 0x4c, 0xb0, 0xfb, 0x83, 0xa8, 0x18, 0x1a,
-	0x36, 0x36, 0xef, 0xae, 0xaf, 0x2f, 0xf9, 0xde, 0xed, 0x25, 0xa7, 0x3c, 0x16, 0x84, 0x0e, 0x6e,
-	0x80, 0x61, 0xf7, 0x87, 0xd0, 0xb4, 0x04, 0x17, 0xb6, 0xcd, 0x92, 0x53, 0x9e, 0x0a, 0x42, 0x1f,
-	0xb7, 0xf0, 0x71, 0x2d, 0xa0, 0x46, 0xb3, 0xb3, 0xd6, 0xf5, 0x5a, 0x25, 0xa7, 0x9c, 0x91, 0x01,
-	0xdd, 0x40, 0x07, 0xe3, 0xf0, 0x04, 0x7b, 0xed, 0x92, 0x53, 0xce, 0x47, 0xe0, 0x09, 0x36, 0xc0,
-	0x13, 0xec, 0x75, 0x4a, 0x4e, 0xb9, 0x18, 0x85, 0x8f, 0xc4, 0xbf, 0xde, 0xe9, 0x9d, 0x6e, 0xd6,
-	0xbd, 0xad, 0x92, 0x53, 0x76, 0x64, 0xfc, 0xd7, 0xb3, 0x51, 0x9d, 0xd1, 0xee, 0xf6, 0x66, 0x7b,
-	0xc3, 0xbb, 0x83, 0xed, 0x79, 0xc9, 0x28, 0x1b, 0xd5, 0x02, 0x3a, 0x7d, 0xae, 0x5b, 0xdf, 0xf1,
-	0xb6, 0x4b, 0x4e, 0x79, 0x42, 0x06, 0xb4, 0x42, 0x07, 0xdd, 0x75, 0x74, 0x20, 0x34, 0x3b, 0x73,
-	0x76, 0xb3, 0xb9, 0xbe, 0x5a, 0x6f, 0xf7, 0x5a, 0xde, 0x4e, 0xc9, 0x29, 0x4f, 0xfa, 0xd8, 0x62,
-	0x1b, 0x5f, 0x47, 0x27, 0x9f, 0x6c, 0xf7, 0x5a, 0x41, 0x18, 0x76, 0x38, 0xe4, 0xb6, 0xd0, 0x4c,
-	0x04, 0xa5, 0x05, 0xd3, 0xbc, 0x2e, 0x4b, 0xc0, 0xe3, 0xb6, 0x40, 0x22, 0x1b, 0x0f, 0x6a, 0x58,
-	0x22, 0x25, 0x37, 0x50, 0x38, 0xbe, 0xca, 0x52, 0x6a, 0x15, 0x92, 0xb3, 0xc7, 0xc0, 0x52, 0x26,
-	0xa7, 0x2b, 0x5c, 0xca, 0x31, 0xf7, 0x34, 0x3a, 0xa4, 0xec, 0x6f, 0x56, 0x8f, 0x80, 0xbf, 0x3b,
-	0x19, 0x7f, 0xf3, 0x7b, 0x40, 0xe2, 0x65, 0x8c, 0x31, 0x77, 0x40, 0x66, 0x45, 0x38, 0xe8, 0xde,
-	0x8e, 0xbc, 0x18, 0x86, 0x60, 0xef, 0x2e, 0x16, 0xd0, 0xe2, 0xde, 0x61, 0x04, 0x6f, 0x33, 0x11,
-	0x24, 0xc1, 0xdc, 0x4f, 0xc8, 0xaa, 0x03, 0x94, 0xdd, 0xcd, 0xea, 0xd9, 0x15, 0x16, 0x94, 0xdd,
-	0xcc, 0xe7, 0x03, 0x6b, 0xba, 0x3b, 0xf7, 0x72, 0x34, 0xb9, 0x5e, 0x6f, 0xac, 0xf5, 0x9a, 0xdd,
-	0xfa, 0x3a, 0x94, 0xb5, 0x17, 0x68, 0xc5, 0xdc, 0x57, 0x19, 0xed, 0x6e, 0xf7, 0xea, 0x41, 0x21,
-	0xfc, 0x90, 0x95, 0xb7, 0x05, 0x34, 0x25, 0xad, 0xa1, 0x1c, 0x7d, 0x81, 0x9a, 0xe7, 0x2a, 0xf9,
-	0xa3, 0x8b, 0xfe, 0x12, 0x5e, 0x0e, 0xa4, 0x37, 0xa8, 0x74, 0x8b, 0xa8, 0x28, 0x67, 0xf0, 0x52,
-	0xf7, 0x45, 0x3a, 0x65, 0xba, 0x92, 0x3b, 0xba, 0xe4, 0x2f, 0x2c, 0x04, 0xd2, 0x23, 0xaf, 0x79,
-	0x0b, 0xea, 0x14, 0x5e, 0xf4, 0xbe, 0x44, 0xa7, 0x14, 0x2a, 0xa3, 0x91, 0x19, 0xbc, 0xf8, 0xe1,
-	0xc8, 0xb2, 0x08, 0xf6, 0xbe, 0x4c, 0x27, 0x64, 0x2b, 0x08, 0x96, 0x45, 0x8e, 0x5f, 0x71, 0xa5,
-	0xbe, 0x34, 0x82, 0xe3, 0x4b, 0x23, 0xd8, 0xfb, 0x0a, 0x9d, 0xe6, 0x56, 0x72, 0x47, 0x09, 0x8e,
-	0x2d, 0x8d, 0xe0, 0xf8, 0xd2, 0x08, 0xf6, 0xbe, 0x4a, 0xa7, 0x8c, 0x56, 0x46, 0x23, 0x33, 0x78,
-	0x79, 0xc4, 0x68, 0x5a, 0xce, 0x10, 0x35, 0xef, 0x6b, 0x74, 0xca, 0x58, 0x25, 0x4f, 0xa3, 0x59,
-	0x58, 0x08, 0xa4, 0x4f, 0x51, 0x29, 0x8f, 0x23, 0x57, 0x59, 0x9a, 0x98, 0xf6, 0x75, 0x3a, 0x6d,
-	0xaa, 0x32, 0x76, 0x94, 0xcf, 0x93, 0x9e, 0xc3, 0xaa, 0xb9, 0xa8, 0x32, 0x01, 0x65, 0xf3, 0x1b,
-	0x74, 0x56, 0xa6, 0x32, 0xb6, 0x34, 0xbf, 0x88, 0x17, 0x97, 0x55, 0x1a, 0xa0, 0x82, 0xc6, 0x57,
-	0x48, 0xb0, 0xf7, 0x4d, 0x3a, 0x29, 0x5f, 0xc9, 0xd3, 0xa0, 0xe2, 0x2b, 0x24, 0xd8, 0xb4, 0x42,
-	0x82, 0xbd, 0x6f, 0xd1, 0x69, 0xc5, 0xca, 0xd8, 0x51, 0x3e, 0x2f, 0xba, 0x42, 0x82, 0xdd, 0x2b,
-	0x55, 0x0a, 0x79, 0x65, 0xfd, 0x35, 0x3a, 0xcd, 0xa9, 0x14, 0xf8, 0x12, 0x7d, 0xb2, 0xbc, 0xb4,
-	0x7c, 0xa5, 0xc2, 0x25, 0x2f, 0xb5, 0x57, 0x69, 0x5f, 0x18, 0xd4, 0xda, 0x5f, 0x67, 0x02, 0xa3,
-	0x52, 0x3c, 0x5b, 0x6f, 0x36, 0x3b, 0x97, 0x97, 0x8e, 0xdc, 0xd5, 0xd9, 0x6e, 0xae, 0xbf, 0xe4,
-	0x08, 0x52, 0xbf, 0x3b, 0xa8, 0xbf, 0x2b, 0x2a, 0x35, 0x50, 0x80, 0x7f, 0x83, 0x4e, 0x9e, 0xa8,
-	0x78, 0xeb, 0xf5, 0xb5, 0xf5, 0x5b, 0x97, 0x96, 0xc8, 0xad, 0xfe, 0xf2, 0xf2, 0xad, 0xfe, 0x71,
-	0x72, 0xeb, 0xd2, 0xf2, 0xf1, 0xd3, 0xf5, 0x7a, 0x43, 0xe1, 0x0a, 0x8a, 0x73, 0x1b, 0x1d, 0x94,
-	0x3e, 0x94, 0xea, 0xfc, 0x9b, 0x4e, 0xfa, 0xf2, 0x5c, 0xc9, 0x9d, 0x78, 0xf5, 0x6b, 0xaa, 0x27,
-	0x02, 0xc9, 0xa7, 0x2c, 0xd3, 0x4d, 0x34, 0xa3, 0x6e, 0x51, 0xa5, 0x9e, 0x7d, 0xdb, 0x49, 0x53,
-	0xd0, 0x04, 0xd6, 0x41, 0x65, 0x63, 0xcb, 0xc2, 0xf6, 0x32, 0x54, 0xd8, 0xae, 0xdf, 0xd1, 0xdb,
-	0xdc, 0x16, 0xa5, 0xe0, 0x71, 0xaa, 0xd6, 0xf6, 0x05, 0x13, 0x62, 0x94, 0xd5, 0x80, 0x97, 0xa3,
-	0xc9, 0xd0, 0x0a, 0x92, 0xf3, 0x09, 0x6a, 0x96, 0x0b, 0xc2, 0xc9, 0x90, 0xf9, 0x65, 0x34, 0x15,
-	0xda, 0xf1, 0xc4, 0xbf, 0x40, 0x0d, 0xa7, 0x83, 0x70, 0x3e, 0x4f, 0x78, 0xd5, 0x92, 0xe7, 0xfb,
-	0x93, 0xd4, 0xb2, 0x20, 0x2d, 0x79, 0xa2, 0x47, 0xb0, 0x09, 0xf6, 0x9e, 0xa2, 0x86, 0x59, 0x0d,
-	0x9b, 0xe0, 0x18, 0x36, 0xc1, 0xde, 0x07, 0xa9, 0xa1, 0xab, 0x63, 0x47, 0x2c, 0x79, 0x42, 0x7f,
-	0x88, 0x5a, 0x8e, 0xea, 0xd8, 0x04, 0xbb, 0x97, 0xa1, 0x62, 0x68, 0x29, 0x32, 0xf2, 0xc3, 0xd4,
-	0x74, 0x2c, 0x08, 0x5d, 0x88, 0xfc, 0xbd, 0x1c, 0x4d, 0x4b, 0x7c, 0x61, 0xfc, 0x11, 0x6a, 0x3c,
-	0x15, 0x84, 0x5e, 0xc2, 0xa4, 0x55, 0xa3, 0x82, 0x9c, 0xfd, 0x28, 0x35, 0xcd, 0xc8, 0xa8, 0x20,
-	0x53, 0x63, 0x2b, 0x20, 0xd8, 0xfb, 0x18, 0xb5, 0xcc, 0x47, 0x56, 0x40, 0xb0, 0x61, 0x05, 0x04,
-	0x7b, 0x1f, 0xa7, 0xc6, 0xc5, 0xe8, 0x0a, 0x22, 0x2c, 0xf0, 0x9c, 0xfc, 0x04, 0xb5, 0x75, 0x24,
-	0x0b, 0x3c, 0x07, 0x35, 0x66, 0x21, 0x05, 0x3f, 0x09, 0x9a, 0x5e, 0x32, 0x0b, 0xf9, 0xa6, 0x46,
-	0x05, 0xe9, 0xf6, 0x29, 0x6a, 0x38, 0x21, 0xa3, 0x82, 0x9c, 0xaa, 0xa3, 0x03, 0xa1, 0x9d, 0x92,
-	0x52, 0x9f, 0xa6, 0xc6, 0xa9, 0x15, 0x8f, 0xf0, 0x28, 0x53, 0xa9, 0x8d, 0x66, 0x22, 0x30, 0xa2,
-	0x67, 0x3f, 0x4d, 0x91, 0x86, 0x91, 0x3c, 0x1a, 0x98, 0x68, 0xdc, 0x67, 0x51, 0x38, 0xae, 0x49,
-	0x9e, 0x67, 0x00, 0x2d, 0xad, 0xe6, 0x11, 0x3e, 0x15, 0xcd, 0x73, 0x06, 0x1d, 0x52, 0x36, 0xbb,
-	0x52, 0x23, 0x9e, 0x05, 0x0a, 0xad, 0x45, 0x8f, 0x4c, 0x11, 0x59, 0x1b, 0x9a, 0xc8, 0x8b, 0x81,
-	0x08, 0x02, 0x9f, 0x83, 0x90, 0xd2, 0xa8, 0x9e, 0x08, 0x94, 0x20, 0x6f, 0x55, 0x56, 0x22, 0x60,
-	0xed, 0x79, 0x0a, 0x61, 0x27, 0x7b, 0x02, 0xee, 0x80, 0xcb, 0x1e, 0xcd, 0x9f, 0x7b, 0x35, 0x9a,
-	0x95, 0x1b, 0x5e, 0xd7, 0x3f, 0xf7, 0x66, 0x69, 0xd1, 0xe3, 0xfa, 0x27, 0x64, 0xf6, 0x7a, 0x4d,
-	0x07, 0x9d, 0x50, 0xd8, 0x88, 0x0a, 0xa2, 0x37, 0xd0, 0xf9, 0x52, 0x10, 0xcd, 0xc4, 0x3c, 0x40,
-	0x79, 0x5c, 0x41, 0x87, 0x0d, 0x2e, 0x78, 0xa1, 0x7c, 0x23, 0xf5, 0x11, 0x2a, 0xa4, 0xd9, 0x98,
-	0x0b, 0x5e, 0x38, 0x4f, 0x18, 0x7d, 0xf0, 0x12, 0xfa, 0x26, 0xea, 0x43, 0x48, 0xa6, 0xb8, 0x0b,
-	0x5e, 0x51, 0x4f, 0x26, 0x45, 0x42, 0xb0, 0xf7, 0x66, 0xea, 0x41, 0xd7, 0x50, 0xc6, 0x68, 0x08,
-	0x1e, 0x10, 0x0d, 0xc1, 0xde, 0x5b, 0xa8, 0x9f, 0x50, 0x54, 0x99, 0xa3, 0x21, 0x78, 0x40, 0x34,
-	0x04, 0x7b, 0x6f, 0xa5, 0x3e, 0x84, 0xca, 0x32, 0x47, 0x43, 0xb0, 0x7b, 0x12, 0xcd, 0x19, 0x5c,
-	0x88, 0x02, 0xfc, 0x36, 0xea, 0x43, 0xca, 0x2e, 0x2f, 0xe6, 0x45, 0x94, 0xef, 0x2a, 0xba, 0xc8,
-	0x14, 0x8d, 0xf0, 0xf3, 0x76, 0xea, 0x47, 0xd1, 0x61, 0x87, 0xe3, 0x11, 0x89, 0xd2, 0xbe, 0x62,
-	0xa4, 0x17, 0x8a, 0xfc, 0x3b, 0xa8, 0x1b, 0x45, 0x98, 0xc5, 0xb9, 0x85, 0xb2, 0x3f, 0x20, 0x28,
-	0x82, 0xbd, 0x77, 0x52, 0x2f, 0x52, 0xa9, 0x25, 0x04, 0x45, 0xf0, 0xc0, 0xa0, 0x08, 0xf6, 0xde,
-	0x45, 0xfd, 0x28, 0xd2, 0x2d, 0x29, 0x28, 0x82, 0xdd, 0x57, 0x19, 0xbf, 0x28, 0xde, 0x37, 0xfa,
-	0xd4, 0x4f, 0x4c, 0xcb, 0xc5, 0xbf, 0x31, 0xde, 0x4f, 0x6e, 0x32, 0x6f, 0x1c, 0xe8, 0x2c, 0xef,
-	0xa6, 0xbe, 0x4c, 0xe2, 0xce, 0xb0, 0x87, 0xa0, 0xe9, 0xdc, 0x62, 0xe4, 0x1b, 0xda, 0xcf, 0x7b,
-	0xa8, 0xb7, 0x41, 0x6a, 0x2f, 0xfe, 0x05, 0x40, 0x87, 0xba, 0x07, 0x5d, 0x62, 0x70, 0xaa, 0xf4,
-	0xaa, 0xf7, 0x66, 0xd3, 0xf7, 0x2a, 0x21, 0xc9, 0xe6, 0x62, 0xe0, 0xb2, 0x77, 0xfd, 0x34, 0xba,
-	0xd4, 0x98, 0x5d, 0x4a, 0xad, 0xbf, 0x2f, 0x9b, 0xa6, 0xd6, 0x0b, 0xf0, 0x8b, 0x0d, 0x39, 0x19,
-	0xd1, 0x85, 0x5b, 0xf5, 0xb5, 0xb0, 0x44, 0xfe, 0x73, 0xb6, 0x94, 0x05, 0x5d, 0x08, 0xa3, 0x52,
-	0x17, 0x72, 0x2b, 0xa8, 0x40, 0xff, 0x42, 0xcd, 0x98, 0x2e, 0x84, 0x61, 0x45, 0x17, 0x72, 0x3b,
-	0x5e, 0xee, 0xfe, 0x95, 0x1a, 0x32, 0x5d, 0x08, 0xe3, 0xaa, 0x2e, 0xe4, 0x96, 0xbc, 0xa8, 0xfd,
-	0x1b, 0xb5, 0x2c, 0x48, 0x4b, 0x55, 0x17, 0x4a, 0x6c, 0x82, 0xbd, 0x7f, 0xa7, 0x86, 0x59, 0x0d,
-	0x5b, 0xe8, 0x1c, 0x05, 0x9b, 0x60, 0xef, 0x3f, 0xa8, 0xa1, 0xab, 0x63, 0x47, 0x2c, 0x79, 0x09,
-	0xfa, 0x4f, 0x6a, 0x39, 0xaa, 0x63, 0x0b, 0x5d, 0xc8, 0x2d, 0x45, 0x85, 0xf8, 0x2f, 0x6a, 0xca,
-	0x74, 0x21, 0x7c, 0xa0, 0xe9, 0x42, 0x81, 0x2f, 0x8c, 0xff, 0x9b, 0x1a, 0x33, 0x5d, 0xc8, 0x57,
-	0xa0, 0xe9, 0x42, 0xe1, 0x99, 0x95, 0x8c, 0xff, 0xa1, 0xa6, 0x19, 0x19, 0x95, 0xa2, 0x0b, 0xd5,
-	0x15, 0x10, 0xec, 0xfd, 0x2f, 0xb5, 0xcc, 0x47, 0x56, 0x20, 0x74, 0xa1, 0xb6, 0x02, 0x82, 0xbd,
-	0xff, 0xa3, 0xc6, 0xc5, 0xe8, 0x0a, 0x22, 0x2c, 0xf0, 0xfc, 0x3e, 0x3f, 0x5a, 0xca, 0x82, 0x2e,
-	0x84, 0x71, 0x55, 0x17, 0x0a, 0xbf, 0x90, 0xbd, 0x3f, 0x33, 0xca, 0xce, 0x76, 0x25, 0xb3, 0x8a,
-	0x2e, 0x14, 0xbb, 0x89, 0x25, 0xe6, 0xeb, 0xa9, 0xe1, 0x84, 0x8c, 0x4a, 0xd1, 0x85, 0xdc, 0x4e,
-	0xc9, 0xb5, 0x9f, 0xa5, 0xc6, 0x43, 0xe8, 0x42, 0xf0, 0x18, 0xd1, 0x85, 0x1a, 0x8c, 0x90, 0x35,
-	0x3f, 0x47, 0x91, 0x86, 0xd3, 0x85, 0x0a, 0x98, 0xa6, 0x0b, 0x39, 0x9e, 0xaa, 0x0b, 0x7f, 0x1e,
-	0xd0, 0xd2, 0xeb, 0x42, 0xf0, 0x19, 0xd5, 0x85, 0xe1, 0x66, 0x57, 0x6a, 0xc5, 0x2f, 0x00, 0x85,
-	0x29, 0x74, 0xa1, 0x48, 0x91, 0x88, 0x2e, 0x8c, 0x80, 0x08, 0x02, 0x7f, 0x11, 0x42, 0x4a, 0xa7,
-	0x0b, 0x35, 0x28, 0x4d, 0x17, 0xc2, 0x27, 0xc0, 0xda, 0x2f, 0x51, 0x08, 0x5b, 0x5d, 0x08, 0x0e,
-	0x42, 0x5d, 0xa8, 0xf8, 0x73, 0x7f, 0x12, 0x15, 0x5a, 0x6b, 0x5b, 0xac, 0xca, 0x41, 0xa9, 0xfb,
-	0x36, 0xc4, 0xf0, 0xc3, 0x16, 0x00, 0x37, 0xad, 0x6d, 0xd1, 0x82, 0x48, 0xff, 0x3b, 0xd9, 0xee,
-	0x6e, 0x9f, 0x0b, 0xf6, 0xb7, 0xe4, 0x88, 0x7b, 0x06, 0x4d, 0x86, 0x08, 0x50, 0xd3, 0x7e, 0x0b,
-	0x20, 0xae, 0xb2, 0x87, 0x60, 0x05, 0x15, 0x30, 0x26, 0x5a, 0xca, 0x90, 0xdb, 0x40, 0x53, 0x21,
-	0x08, 0xaf, 0xb1, 0xbf, 0x0d, 0x28, 0x57, 0xdb, 0xa3, 0x40, 0x35, 0x06, 0x98, 0x42, 0x4b, 0x1d,
-	0xd3, 0x70, 0x78, 0x85, 0xfe, 0x9d, 0xd4, 0x38, 0xa7, 0x0c, 0x38, 0xbc, 0xbe, 0x47, 0x48, 0x23,
-	0xd8, 0xfb, 0xdd, 0x61, 0x48, 0x23, 0x38, 0x46, 0x1a, 0xc1, 0x31, 0xd2, 0x08, 0xf6, 0x7e, 0x6f,
-	0x28, 0xd2, 0x04, 0x8c, 0x4a, 0x5a, 0x04, 0x87, 0xb7, 0x96, 0xef, 0x0c, 0x45, 0x5a, 0x14, 0x87,
-	0x37, 0xa6, 0x4d, 0x54, 0x0c, 0x71, 0x44, 0xaf, 0xf9, 0x7d, 0x00, 0xba, 0xc6, 0x1e, 0x88, 0xb7,
-	0x30, 0x40, 0x9a, 0x6c, 0x69, 0x83, 0x6e, 0x13, 0x4d, 0x4b, 0xea, 0x04, 0xd6, 0x1f, 0x00, 0xd6,
-	0xb5, 0x29, 0xc8, 0x6b, 0xa8, 0x60, 0x53, 0x2d, 0x7d, 0x54, 0xdb, 0x0d, 0xd0, 0x17, 0xff, 0x30,
-	0xf5, 0x6e, 0x60, 0x1d, 0x54, 0xdf, 0x0d, 0xd0, 0x54, 0x63, 0xec, 0x11, 0xec, 0xfd, 0xd1, 0x70,
-	0xec, 0x89, 0xef, 0x49, 0x63, 0x8f, 0x60, 0x03, 0x7b, 0x04, 0x7b, 0x7f, 0x3c, 0x24, 0x7b, 0x02,
-	0x4c, 0x67, 0x2f, 0xb2, 0xfd, 0x78, 0x4f, 0xff, 0x93, 0xd4, 0xdb, 0x0f, 0xba, 0xbf, 0xbe, 0xfd,
-	0xb8, 0x22, 0xd0, 0xd2, 0x09, 0x14, 0xc1, 0x9f, 0xa6, 0x4f, 0x27, 0xe6, 0x20, 0x92, 0x4e, 0xa0,
-	0x27, 0xd4, 0xdd, 0x00, 0x7a, 0xe2, 0xcf, 0x52, 0xef, 0x06, 0xa6, 0x3c, 0xf4, 0xdd, 0x00, 0x62,
-	0x64, 0x0b, 0x1d, 0x08, 0x41, 0x14, 0x31, 0xf2, 0xe7, 0x80, 0xf4, 0x0a, 0x7b, 0xa4, 0x50, 0x80,
-	0x00, 0x5a, 0xb1, 0x15, 0x19, 0x76, 0xcf, 0xa1, 0x99, 0x08, 0xa2, 0x68, 0xab, 0x7f, 0x01, 0xa0,
-	0xd7, 0xa5, 0x04, 0xe5, 0x63, 0x80, 0x7b, 0xa0, 0x15, 0xff, 0xc4, 0xdd, 0x41, 0x07, 0x43, 0x68,
-	0x55, 0xa2, 0xfc, 0x25, 0x00, 0x9f, 0xb0, 0x07, 0x96, 0xaa, 0x04, 0x60, 0xa7, 0x5b, 0xd1, 0x71,
-	0xf7, 0x4e, 0x74, 0x48, 0xa9, 0xbe, 0x8a, 0x5a, 0xf9, 0x2e, 0xa0, 0xae, 0xa4, 0xa9, 0xc1, 0xa1,
-	0x4e, 0x01, 0x58, 0xb7, 0x15, 0xfb, 0xc0, 0xbd, 0x07, 0x79, 0x31, 0x5c, 0xc1, 0xf4, 0x5f, 0x01,
-	0xf4, 0xc9, 0xd4, 0xd0, 0x1a, 0xd7, 0x87, 0x5a, 0xa6, 0xcf, 0xc4, 0xfe, 0x65, 0x8d, 0x0e, 0x34,
-	0xc7, 0x5f, 0xa7, 0xda, 0xbf, 0xac, 0xf3, 0x4b, 0xd1, 0x41, 0xf7, 0x6f, 0x38, 0x24, 0x92, 0x71,
-	0x47, 0x41, 0xf9, 0x9b, 0x54, 0xc9, 0x08, 0x8d, 0x5f, 0xc2, 0xd0, 0x64, 0x94, 0x63, 0x02, 0xa7,
-	0xa7, 0xe0, 0xfc, 0x6d, 0x2a, 0x9c, 0x53, 0x06, 0x1c, 0x39, 0xa6, 0x90, 0x46, 0x30, 0xc0, 0xfc,
-	0x5d, 0x5a, 0xd2, 0x08, 0x8e, 0x91, 0x06, 0x43, 0x2a, 0x69, 0x02, 0xe5, 0xef, 0x53, 0x93, 0xa6,
-	0xc2, 0x08, 0xd2, 0x74, 0x9c, 0x9e, 0x82, 0xf3, 0x0f, 0xa9, 0x49, 0x8b, 0xe2, 0xc8, 0x31, 0xd1,
-	0xd2, 0x78, 0x1b, 0x05, 0xa0, 0x7f, 0x4c, 0xd5, 0xd2, 0x78, 0xdf, 0x97, 0x48, 0xf4, 0xdb, 0x50,
-	0x06, 0x43, 0xea, 0x58, 0x89, 0x06, 0xa4, 0x7f, 0x4a, 0x47, 0x1d, 0xf3, 0x10, 0xa1, 0x2e, 0x1c,
-	0x73, 0x4b, 0x08, 0x75, 0xda, 0xf5, 0x4e, 0x03, 0x20, 0x9e, 0xce, 0x95, 0x9c, 0xf2, 0xbe, 0xea,
-	0x48, 0x30, 0xce, 0x06, 0x99, 0xc5, 0x11, 0xb4, 0x1f, 0x2c, 0x40, 0x9e, 0x3e, 0x43, 0x4d, 0x72,
-	0xd5, 0x91, 0x00, 0xe6, 0x81, 0x5c, 0x7e, 0x19, 0x9a, 0x00, 0x1b, 0xae, 0x95, 0x9f, 0xa5, 0x46,
-	0xd3, 0xd5, 0x91, 0x00, 0xa6, 0x72, 0xb1, 0x1b, 0x5a, 0x71, 0xa5, 0xfb, 0x1c, 0xb5, 0x2a, 0x84,
-	0x56, 0x5c, 0xaa, 0xaa, 0x78, 0x04, 0x7b, 0xcf, 0x53, 0xa3, 0xac, 0x8a, 0x47, 0xb0, 0x8e, 0x47,
-	0xb0, 0xf7, 0x19, 0x6a, 0xe4, 0x6a, 0x78, 0xaa, 0x15, 0x17, 0x89, 0x9f, 0xa5, 0x56, 0xa3, 0x1a,
-	0x1e, 0xc1, 0xee, 0xcb, 0x51, 0x01, 0xac, 0x84, 0xec, 0xfa, 0x1c, 0x35, 0x1b, 0xab, 0x8e, 0x04,
-	0x30, 0x5b, 0x48, 0xb4, 0x32, 0x9a, 0xe4, 0x98, 0xc2, 0xf0, 0xf3, 0xd4, 0x70, 0xaa, 0x3a, 0x12,
-	0x80, 0x83, 0x50, 0x5e, 0x85, 0x11, 0x80, 0xb6, 0xfa, 0x65, 0x6a, 0x96, 0x09, 0x23, 0x00, 0x75,
-	0xa4, 0xa3, 0x12, 0xec, 0xfd, 0x0a, 0xb5, 0xca, 0xeb, 0xa8, 0xec, 0x00, 0x41, 0x43, 0x25, 0xd8,
-	0xfb, 0x55, 0x6a, 0x58, 0x8c, 0xa0, 0xaa, 0xd1, 0x72, 0x4d, 0xf2, 0x02, 0xb5, 0x73, 0xc2, 0x68,
-	0xb9, 0xa8, 0x90, 0xcc, 0x81, 0xa2, 0xf8, 0x02, 0xb5, 0x1a, 0x97, 0xcc, 0x81, 0x24, 0x08, 0x23,
-	0x00, 0x3d, 0xf0, 0x45, 0x6a, 0x34, 0x11, 0x46, 0x00, 0x1d, 0x7d, 0x0d, 0x15, 0xc1, 0x46, 0x69,
-	0xe7, 0x5f, 0xca, 0xa5, 0x7f, 0x8c, 0x5b, 0x1d, 0x09, 0x20, 0x54, 0xd9, 0xc2, 0x6f, 0x43, 0x07,
-	0x54, 0x08, 0xd1, 0x55, 0xbe, 0x9c, 0x1b, 0xea, 0x15, 0x9b, 0xea, 0x48, 0x30, 0x2d, 0x81, 0x44,
-	0x17, 0x59, 0x47, 0x30, 0xa8, 0x35, 0xec, 0xaf, 0xe4, 0x86, 0x78, 0xbf, 0xa6, 0x3a, 0x12, 0x4c,
-	0x31, 0x97, 0x4a, 0x93, 0x5e, 0x45, 0xae, 0xd8, 0xb8, 0x4a, 0x87, 0xfe, 0x6a, 0x2e, 0xcd, 0xb3,
-	0xe8, 0xea, 0x48, 0x50, 0xe4, 0xdb, 0x5d, 0x76, 0xe3, 0xb3, 0xe8, 0x90, 0x0e, 0x20, 0x48, 0xfb,
-	0x5a, 0x2e, 0xe5, 0x9b, 0x35, 0xd5, 0x91, 0xe0, 0x80, 0x0a, 0x23, 0x08, 0xfb, 0x31, 0x5e, 0x39,
-	0x80, 0xa9, 0xaf, 0xe7, 0xac, 0x5f, 0x13, 0xbc, 0x99, 0xce, 0x16, 0x4c, 0x29, 0xbe, 0x64, 0x6e,
-	0xc0, 0x1e, 0x5d, 0xf4, 0xbe, 0x21, 0x36, 0xe9, 0x84, 0xb2, 0x49, 0x17, 0xa3, 0x76, 0xbe, 0xf7,
-	0x4d, 0x93, 0x9d, 0x1f, 0xb5, 0x5b, 0xf2, 0xbe, 0x65, 0xb2, 0x5b, 0x72, 0xaf, 0x44, 0x07, 0x79,
-	0x06, 0xe9, 0x0f, 0xb4, 0xee, 0xcb, 0xcb, 0x17, 0x7a, 0xaa, 0x4e, 0x00, 0xdf, 0xa0, 0xfe, 0x3c,
-	0xeb, 0x6a, 0x41, 0x7b, 0xf4, 0x61, 0xd6, 0xfb, 0xf2, 0xea, 0xdb, 0x3d, 0x55, 0x87, 0x73, 0x19,
-	0x79, 0x96, 0x75, 0x0d, 0x9a, 0x89, 0x4e, 0xe7, 0x95, 0xf4, 0xfe, 0xbc, 0xf2, 0xaa, 0x4f, 0xd5,
-	0x09, 0x0e, 0xea, 0xd3, 0x79, 0x65, 0xbd, 0x3a, 0x3e, 0x9f, 0xd7, 0xd8, 0x07, 0xf2, 0xf2, 0xbd,
-	0x9f, 0xf8, 0xf4, 0x53, 0xe2, 0x31, 0x98, 0x69, 0xf5, 0x04, 0x7b, 0x0f, 0xe6, 0xa3, 0x2f, 0x01,
-	0x19, 0x23, 0x20, 0x38, 0x29, 0x02, 0x82, 0xbd, 0x87, 0xf2, 0xca, 0x1b, 0x41, 0xe6, 0x08, 0x08,
-	0x4e, 0x8a, 0x80, 0x60, 0xef, 0xe1, 0xbc, 0x7c, 0x3d, 0xc8, 0x1c, 0x01, 0x7b, 0xf4, 0x35, 0x1b,
-	0x9d, 0x2e, 0xaa, 0xf4, 0x23, 0x79, 0xf5, 0x5d, 0xa1, 0xaa, 0x13, 0x1c, 0xd2, 0x3d, 0x88, 0xfa,
-	0x7e, 0x3d, 0xf2, 0x62, 0x11, 0x08, 0x1f, 0x8f, 0xe6, 0xb5, 0x17, 0x87, 0xaa, 0x4e, 0x30, 0x13,
-	0x89, 0x42, 0xd4, 0xfe, 0x6b, 0xe2, 0x54, 0x42, 0x17, 0x78, 0x7f, 0x5e, 0x7b, 0x8b, 0x28, 0xce,
-	0x23, 0xf4, 0x85, 0xa4, 0x40, 0x08, 0xf6, 0x3e, 0x90, 0x57, 0x5f, 0x29, 0x4a, 0x08, 0x84, 0xe0,
-	0xe4, 0x40, 0x08, 0xf6, 0x1e, 0xcb, 0x6b, 0xef, 0x17, 0x25, 0x05, 0x42, 0xb0, 0x7b, 0x43, 0xfc,
-	0x0b, 0xe1, 0x8d, 0xe5, 0xf1, 0xbc, 0xe1, 0x65, 0xa3, 0xf8, 0x37, 0xc3, 0x1b, 0xce, 0x8d, 0x86,
-	0x8d, 0x01, 0xad, 0xe7, 0x89, 0xbc, 0xf9, 0xcd, 0x23, 0xc3, 0x1e, 0x81, 0xae, 0x74, 0x73, 0x9c,
-	0x5b, 0xe8, 0x4f, 0x17, 0xf2, 0x83, 0x5f, 0x43, 0x8a, 0x93, 0x0d, 0x2d, 0xec, 0xb5, 0x68, 0x2e,
-	0xea, 0x50, 0x69, 0x66, 0x4f, 0xe6, 0x87, 0x7e, 0x27, 0xa9, 0xea, 0x04, 0xb3, 0x3a, 0xb0, 0xfa,
-	0xf7, 0xe9, 0xc5, 0xf1, 0x8c, 0x51, 0x9a, 0xc2, 0x53, 0xf9, 0x21, 0x5e, 0x50, 0xaa, 0x3a, 0xc1,
-	0xe1, 0x68, 0x9e, 0x85, 0x36, 0x73, 0x3f, 0x85, 0x26, 0xb4, 0xde, 0xf7, 0x22, 0xbe, 0x69, 0x3e,
-	0x77, 0x37, 0x42, 0x4a, 0x3f, 0x7c, 0x31, 0x91, 0xaf, 0x45, 0x05, 0xed, 0x4d, 0x4e, 0x5b, 0x70,
-	0xea, 0x40, 0x7b, 0x27, 0x22, 0x9d, 0x03, 0xe5, 0xf0, 0xdc, 0xda, 0xc1, 0x35, 0xa8, 0x18, 0x3d,
-	0x1c, 0x77, 0x8b, 0x28, 0x7b, 0x7b, 0xfd, 0x1c, 0x73, 0xb2, 0x2f, 0xa0, 0xff, 0xeb, 0x1e, 0x44,
-	0xb9, 0x3b, 0xd7, 0x9a, 0xbd, 0xba, 0x97, 0x61, 0x63, 0xf0, 0x8f, 0x4a, 0xe6, 0x0a, 0x67, 0xee,
-	0x5a, 0x34, 0x1d, 0x3b, 0xf9, 0xde, 0xcd, 0x41, 0x4e, 0x75, 0xf0, 0x0a, 0xe4, 0xc6, 0x0f, 0xb5,
-	0x77, 0xf3, 0x30, 0x6d, 0xf6, 0x70, 0x6a, 0xef, 0x1e, 0x0a, 0x89, 0x41, 0xf0, 0x53, 0xba, 0xdd,
-	0x1c, 0x64, 0x93, 0x83, 0xd8, 0xa3, 0x07, 0x37, 0x39, 0x88, 0x3d, 0x7a, 0x18, 0x55, 0x3d, 0x9c,
-	0x40, 0x07, 0x0c, 0xe7, 0xc2, 0xbb, 0xb9, 0x18, 0x53, 0x5d, 0xac, 0xa0, 0x83, 0xa6, 0xe3, 0xde,
-	0xdd, 0x7c, 0x4c, 0x99, 0xb9, 0x94, 0xe7, 0xb8, 0xbb, 0x39, 0xc8, 0x0c, 0x88, 0x63, 0x8f, 0x54,
-	0xe4, 0x07, 0xc5, 0xb1, 0x47, 0x1f, 0x45, 0xf3, 0x17, 0xa2, 0x1c, 0xa8, 0xee, 0xe6, 0xc1, 0x49,
-	0xd8, 0x14, 0xf2, 0xa8, 0x74, 0x37, 0x0f, 0xe3, 0x66, 0x2e, 0xe5, 0x29, 0xe8, 0x6e, 0x0e, 0x26,
-	0x54, 0x07, 0xe7, 0xd0, 0x21, 0xe3, 0xe1, 0xa6, 0xc1, 0xc9, 0xab, 0x54, 0x27, 0x69, 0x1f, 0xe6,
-	0x2a, 0xd0, 0xf7, 0x20, 0x2f, 0xe9, 0x88, 0xd3, 0x80, 0x7e, 0x93, 0x8a, 0x3e, 0xc4, 0x03, 0x5e,
-	0x65, 0x01, 0xaf, 0x45, 0x33, 0xe6, 0xa3, 0x4e, 0x03, 0xfc, 0x8f, 0xe8, 0xf0, 0x29, 0x9f, 0xf8,
-	0x2a, 0xe0, 0x3d, 0x34, 0x9b, 0x70, 0xe2, 0x69, 0x40, 0xbf, 0x5e, 0xa7, 0xde, 0xf6, 0x21, 0xb0,
-	0x16, 0xf3, 0x5c, 0xf2, 0x69, 0xa7, 0x01, 0xf9, 0x95, 0x7a, 0xdc, 0x29, 0x1e, 0x0b, 0xc7, 0x76,
-	0xab, 0x7e, 0xe6, 0xa9, 0x62, 0xe6, 0x76, 0xeb, 0x25, 0x90, 0x30, 0x91, 0xe3, 0x4c, 0xd5, 0xc3,
-	0xf4, 0xde, 0x3c, 0x9c, 0x4a, 0xf6, 0x50, 0xd8, 0x5b, 0x3f, 0xd3, 0xcf, 0x20, 0x55, 0x07, 0xd9,
-	0xbd, 0x07, 0x91, 0xe0, 0xc1, 0xdd, 0x7b, 0x10, 0x09, 0x1e, 0x46, 0x77, 0xf3, 0x00, 0x25, 0x34,
-	0x7a, 0x22, 0xa8, 0xba, 0x18, 0xdb, 0x63, 0x18, 0xfa, 0x51, 0x9f, 0xea, 0x61, 0x7c, 0x37, 0x0f,
-	0x57, 0x21, 0x24, 0xff, 0x1e, 0xb7, 0xd6, 0x25, 0x55, 0x34, 0x73, 0xf2, 0xee, 0x6e, 0xbd, 0xbd,
-	0xb3, 0xd9, 0x69, 0x0f, 0xa7, 0xb1, 0x54, 0x4f, 0x43, 0x69, 0xa5, 0x23, 0xf3, 0x68, 0x5c, 0x8a,
-	0xed, 0x71, 0x04, 0xba, 0xb8, 0x38, 0x42, 0xff, 0x77, 0x25, 0x38, 0xf1, 0xa3, 0x37, 0x17, 0x1d,
-	0x77, 0x3f, 0x1a, 0xbb, 0xae, 0x7a, 0x22, 0x78, 0xf5, 0x8d, 0x27, 0x8b, 0x99, 0xcb, 0xc6, 0xf7,
-	0xdd, 0x5b, 0x2b, 0x9e, 0x3f, 0x7f, 0xfe, 0x7c, 0xc6, 0x3f, 0x83, 0x66, 0xeb, 0x62, 0x11, 0xab,
-	0xda, 0x9d, 0x45, 0xd7, 0x42, 0x74, 0x7a, 0xf7, 0xd6, 0x18, 0xcb, 0x87, 0xea, 0x51, 0x6a, 0xe8,
-	0x57, 0xe4, 0xd7, 0x91, 0x67, 0x00, 0x81, 0x3f, 0xc8, 0x6d, 0x50, 0xde, 0x50, 0x63, 0xd9, 0x3a,
-	0x13, 0x43, 0x61, 0xb9, 0xed, 0x6f, 0xa0, 0xc3, 0x06, 0x98, 0x1d, 0x7b, 0x9c, 0x37, 0xd6, 0x58,
-	0x4e, 0xcf, 0xc6, 0x70, 0xa0, 0x04, 0x24, 0x00, 0xf5, 0xec, 0x81, 0xde, 0x54, 0x63, 0xa9, 0x1f,
-	0x07, 0x82, 0x4a, 0x91, 0x4c, 0x1c, 0xc1, 0x56, 0x38, 0x6f, 0xae, 0xb1, 0x0a, 0x61, 0x24, 0x8e,
-	0xe0, 0x01, 0xc4, 0x59, 0xe2, 0xbc, 0xa5, 0xc6, 0xea, 0x88, 0x99, 0xb8, 0x44, 0xa0, 0x9e, 0x3d,
-	0xd0, 0x5b, 0x6b, 0xac, 0xdc, 0x98, 0x89, 0x23, 0xd8, 0xdf, 0x44, 0x73, 0x06, 0x20, 0x71, 0x72,
-	0x61, 0x83, 0xf4, 0xb6, 0x1a, 0xab, 0x4a, 0x5e, 0x0c, 0x89, 0x57, 0x31, 0xff, 0x76, 0x74, 0x91,
-	0x89, 0xbc, 0x34, 0x58, 0x6f, 0xaf, 0x31, 0xd1, 0x7a, 0x38, 0x4e, 0x1f, 0xf7, 0x96, 0xb0, 0x21,
-	0x1a, 0xf0, 0x6a, 0x9f, 0x05, 0xd2, 0x3b, 0x6a, 0x4c, 0xdd, 0xc6, 0x37, 0x04, 0xd3, 0xc6, 0x83,
-	0xe8, 0xb3, 0xfc, 0xa2, 0xde, 0x59, 0x63, 0x1a, 0x38, 0x81, 0x3e, 0x82, 0x07, 0xd2, 0x67, 0x89,
-	0xf5, 0xae, 0x1a, 0xd3, 0xca, 0x49, 0xf4, 0x25, 0xee, 0x3f, 0x38, 0xec, 0xb1, 0x82, 0xea, 0xd7,
-	0x98, 0xa8, 0x8e, 0xef, 0x3f, 0xd0, 0xe4, 0x49, 0x19, 0x05, 0x87, 0x3b, 0x36, 0x40, 0xef, 0xae,
-	0xb1, 0x2e, 0x60, 0xc8, 0x28, 0x38, 0xf1, 0x35, 0x6f, 0x08, 0x76, 0x56, 0x64, 0x85, 0xf3, 0x9e,
-	0x1a, 0x93, 0xe8, 0xf1, 0x0d, 0xc1, 0x04, 0xbe, 0xff, 0xa0, 0x83, 0x2e, 0x31, 0xe0, 0xc8, 0x23,
-	0x24, 0x2b, 0xb0, 0xf7, 0xd6, 0x86, 0x90, 0xf2, 0x73, 0xb1, 0x25, 0x86, 0x9f, 0xf9, 0x4f, 0x38,
-	0xa8, 0x94, 0xb8, 0x4c, 0xfe, 0x78, 0xc0, 0x6a, 0xa5, 0xf7, 0xd5, 0x86, 0x93, 0xfd, 0x97, 0x98,
-	0x17, 0xcb, 0x3f, 0xf6, 0x1f, 0x71, 0xd0, 0xf7, 0x19, 0xd6, 0xab, 0x3c, 0x97, 0xb1, 0x5a, 0xed,
-	0xfb, 0x6a, 0xc3, 0xfc, 0x95, 0x70, 0x51, 0x6c, 0xad, 0xf2, 0x43, 0xff, 0x7e, 0x07, 0x5d, 0x6a,
-	0xec, 0x11, 0xf2, 0x18, 0xcf, 0x6a, 0xa9, 0xf7, 0xd7, 0x52, 0xfd, 0x49, 0x71, 0xb1, 0xa1, 0xb3,
-	0x84, 0x9f, 0xfa, 0x8f, 0x39, 0xe8, 0xc8, 0x80, 0x45, 0xa6, 0xd9, 0x00, 0x0f, 0xd4, 0xd2, 0xfe,
-	0x01, 0x72, 0x69, 0xd2, 0x52, 0xc5, 0x97, 0xff, 0xb0, 0x83, 0x64, 0xba, 0xe9, 0x37, 0xad, 0x6d,
-	0x56, 0xf8, 0x60, 0x8d, 0x3d, 0x8e, 0xb2, 0x79, 0xd3, 0xc6, 0x2c, 0x60, 0x83, 0x84, 0xd5, 0xf8,
-	0x4d, 0xb5, 0xc6, 0xe8, 0x0f, 0x8c, 0xec, 0x92, 0xa9, 0xaf, 0x5e, 0x17, 0x97, 0x68, 0xda, 0xf3,
-	0x25, 0x7f, 0x4b, 0x2d, 0x9d, 0x91, 0x67, 0x4c, 0x76, 0xd9, 0xd0, 0xd7, 0xaf, 0x9b, 0xcf, 0xc6,
-	0x01, 0x41, 0x37, 0xde, 0xa1, 0x76, 0xbb, 0xe8, 0x63, 0x29, 0xbb, 0x5d, 0xdd, 0xd7, 0xae, 0xab,
-	0x7b, 0x71, 0x44, 0xae, 0x20, 0xb7, 0xcc, 0x90, 0x29, 0x24, 0xe4, 0x03, 0x7d, 0xf5, 0xba, 0xbb,
-	0x01, 0x91, 0x4b, 0xc9, 0x6e, 0x22, 0xad, 0x96, 0x5d, 0xf6, 0xc1, 0x7e, 0xfc, 0xba, 0xbc, 0x99,
-	0x5a, 0x82, 0x07, 0x51, 0x6b, 0x09, 0xfb, 0x50, 0x5f, 0xbb, 0x6e, 0x9f, 0x40, 0x2d, 0xc1, 0x83,
-	0xa8, 0xb5, 0x84, 0x7c, 0xb8, 0xaf, 0x5e, 0xd7, 0x4f, 0xa0, 0x96, 0x60, 0xbf, 0xab, 0x4a, 0x98,
-	0xd8, 0x53, 0x39, 0x2b, 0xc8, 0x47, 0xfa, 0xfa, 0x75, 0xff, 0xc3, 0x71, 0x50, 0xa1, 0x3b, 0xef,
-	0x42, 0x17, 0x1b, 0xa9, 0x4d, 0x03, 0xfb, 0x68, 0x3f, 0xf2, 0x73, 0x01, 0x73, 0x06, 0x7a, 0x85,
-	0x06, 0xbd, 0xc3, 0xbc, 0x93, 0xec, 0x45, 0xe8, 0xfb, 0xfb, 0x91, 0x9f, 0x1b, 0x30, 0x6c, 0x23,
-	0xd0, 0xa3, 0x83, 0x18, 0xb6, 0xfc, 0x52, 0x3f, 0xd0, 0xd7, 0x7f, 0xae, 0x20, 0x89, 0x61, 0x82,
-	0x07, 0x33, 0x6c, 0x09, 0xfb, 0x58, 0x3f, 0xf2, 0x73, 0x07, 0x89, 0x0c, 0x13, 0xec, 0x9f, 0x33,
-	0x6f, 0xe1, 0x14, 0x3a, 0xf5, 0xf1, 0xbe, 0xf1, 0xe7, 0x12, 0x0c, 0x7b, 0x99, 0x0b, 0xd7, 0xd7,
-	0x25, 0x24, 0xac, 0xbd, 0x72, 0x7d, 0xa2, 0x9f, 0xf4, 0x73, 0x0b, 0xa6, 0xdc, 0x05, 0x35, 0xfb,
-	0x7a, 0xc7, 0xbc, 0xb7, 0xec, 0xf5, 0xec, 0x85, 0xfe, 0x6e, 0xbf, 0xd7, 0x60, 0xd8, 0x6c, 0xa0,
-	0x75, 0x2f, 0x68, 0xa2, 0xcc, 0xf4, 0xbc, 0xd4, 0x6a, 0x25, 0x4f, 0xf6, 0xbf, 0x07, 0x3f, 0xf8,
-	0x70, 0x51, 0x7c, 0xb1, 0x52, 0xf5, 0x3e, 0xae, 0xa9, 0x5e, 0xf3, 0x33, 0x56, 0xab, 0x25, 0x3f,
-	0xd5, 0x1f, 0xea, 0x17, 0x23, 0x2e, 0x31, 0xd5, 0x66, 0xa9, 0xd2, 0xd6, 0xd5, 0x23, 0x27, 0xed,
-	0xb2, 0xa0, 0xdd, 0x22, 0xbf, 0xeb, 0xb0, 0x9b, 0x85, 0xf2, 0xcc, 0x29, 0x50, 0xae, 0x18, 0xfa,
-	0x0d, 0x55, 0xb4, 0xe8, 0x97, 0x0d, 0xad, 0x60, 0x3e, 0xc8, 0x60, 0xd4, 0x43, 0xa7, 0x40, 0xbd,
-	0xa2, 0xe8, 0x9f, 0x55, 0x77, 0x6c, 0xe4, 0xb2, 0xa2, 0x15, 0xd0, 0x87, 0x18, 0x90, 0x7a, 0xea,
-	0x14, 0x68, 0x57, 0x1c, 0x13, 0x90, 0x52, 0x48, 0x86, 0x0f, 0x33, 0xa4, 0x82, 0x01, 0x89, 0x6b,
-	0x85, 0x44, 0xee, 0x2c, 0x8b, 0xde, 0x47, 0x18, 0x50, 0xd6, 0xcc, 0x1d, 0xc1, 0x03, 0xb8, 0xb3,
-	0x04, 0xfa, 0x28, 0x03, 0x72, 0x13, 0xb8, 0x4b, 0x44, 0x4a, 0xa1, 0x09, 0x3e, 0xc6, 0x90, 0x46,
-	0x13, 0xb8, 0x23, 0xd8, 0xbf, 0x4d, 0x2d, 0xa0, 0xd1, 0xcb, 0x9e, 0x56, 0x50, 0x1f, 0x67, 0x50,
-	0xea, 0xd1, 0x53, 0xa0, 0x5f, 0x11, 0xf5, 0x9b, 0x6a, 0x5b, 0x8c, 0x5d, 0x16, 0xb5, 0x02, 0xfb,
-	0x04, 0x03, 0x53, 0xcf, 0x9e, 0x82, 0xc8, 0x15, 0xd3, 0x84, 0x5d, 0x61, 0xdf, 0xf6, 0x3f, 0xc9,
-	0xa0, 0x32, 0x86, 0x5d, 0x01, 0xcd, 0x7e, 0x00, 0x83, 0x96, 0x5f, 0xd6, 0xa7, 0x18, 0x52, 0x3e,
-	0x89, 0x41, 0x82, 0x07, 0x32, 0x68, 0x09, 0xf6, 0x69, 0x06, 0x56, 0x4c, 0x64, 0x30, 0x71, 0x17,
-	0xa6, 0x68, 0xeb, 0x4f, 0x33, 0x2c, 0xc7, 0xb0, 0x0b, 0x79, 0x1b, 0x4f, 0xc8, 0x2c, 0xfb, 0x2e,
-	0xfe, 0x0c, 0x43, 0x1a, 0x37, 0x65, 0x16, 0xb4, 0x6c, 0xf3, 0xae, 0xb0, 0x6f, 0xd8, 0xcf, 0x32,
-	0xa0, 0x09, 0xc3, 0xae, 0x80, 0xae, 0xfc, 0x90, 0x76, 0x02, 0x65, 0xb8, 0xed, 0x6b, 0x85, 0xf6,
-	0x1c, 0x43, 0x1b, 0xfe, 0x08, 0x2a, 0x88, 0xde, 0x11, 0xa6, 0xea, 0xa1, 0x94, 0xb8, 0xce, 0x34,
-	0x27, 0x10, 0xcf, 0xb3, 0xa5, 0x7e, 0x4f, 0xce, 0xa0, 0x02, 0xc3, 0x25, 0x63, 0xff, 0x51, 0x4d,
-	0xee, 0x98, 0xee, 0x1b, 0x5b, 0x2d, 0xf7, 0x33, 0x7c, 0xb9, 0x43, 0x1f, 0x42, 0x05, 0xb1, 0x5b,
-	0xca, 0xfe, 0x03, 0xda, 0x21, 0x94, 0xf1, 0xc2, 0xb2, 0xd5, 0x5a, 0x3f, 0xcb, 0x77, 0x41, 0xfa,
-	0x53, 0xa8, 0x20, 0x7e, 0xcd, 0x99, 0xca, 0xb1, 0x23, 0x03, 0x56, 0x99, 0x66, 0x0f, 0x7c, 0x8e,
-	0x93, 0x3a, 0xd4, 0x31, 0x54, 0x60, 0xbc, 0x27, 0xed, 0x3f, 0xa2, 0x1e, 0x43, 0xe9, 0x37, 0x9c,
-	0x6d, 0x96, 0xf8, 0x79, 0xb6, 0xc4, 0x94, 0xe7, 0x50, 0xfa, 0x3d, 0xeb, 0x84, 0xe5, 0xac, 0x14,
-	0xc4, 0xab, 0xfa, 0xbd, 0xf6, 0x66, 0xa7, 0xbd, 0x32, 0x1b, 0x7f, 0x47, 0x92, 0x7d, 0x70, 0xd9,
-	0x22, 0xda, 0xaf, 0xbe, 0x27, 0x6e, 0x7a, 0x20, 0x8a, 0xdc, 0x09, 0xf9, 0x40, 0xf4, 0x05, 0x67,
-	0xe5, 0x35, 0x3f, 0x5e, 0x8b, 0x2d, 0xfb, 0x18, 0x5b, 0xf6, 0xe9, 0x5e, 0xe3, 0xd8, 0x66, 0xbb,
-	0x5b, 0xdf, 0x6e, 0xaf, 0x35, 0xd9, 0xef, 0xdc, 0xb2, 0xd1, 0x9d, 0x63, 0xcd, 0xfa, 0xc6, 0xda,
-	0x99, 0x73, 0xc7, 0x92, 0x7e, 0x12, 0xf7, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xe0, 0x96, 0xc9,
-	0xde, 0x2d, 0x57, 0x00, 0x00,
-}
diff --git a/internal/testprotos/legacy/proto2_20160225_2fc053c5/test.proto b/internal/testprotos/legacy/proto2_20160225_2fc053c5/test.proto
deleted file mode 100644
index 56025e1..0000000
--- a/internal/testprotos/legacy/proto2_20160225_2fc053c5/test.proto
+++ /dev/null
@@ -1,333 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package google.golang.org.proto2_20160225;
-option go_package = "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20160225_2fc053c5";
-
-enum SiblingEnum {
-	ALPHA   = 0;
-	BRAVO   = 10;
-	CHARLIE = 200;
-}
-
-message SiblingMessage {
-	optional string  f1 = 1;
-	required string  f2 = 2;
-	repeated string  f3 = 3;
-	optional Message f4 = 4;
-}
-
-message Message {
-	enum ChildEnum {
-		ALPHA   = 0;
-		BRAVO   = 1;
-		CHARLIE = 2;
-	}
-	message ChildMessage {
-		optional string  f1 = 1;
-		required string  f2 = 2;
-		repeated string  f3 = 3;
-	    optional Message f4 = 4;
-	}
-	optional group NamedGroup = 1 {
-		optional string  f1 = 1;
-		required string  f2 = 2;
-		repeated string  f3 = 3;
-	    optional Message f4 = 4;
-	}
-
-	// Optional fields.
-	optional bool     optional_bool     = 100;
-	optional int32    optional_int32    = 101;
-	optional sint32   optional_sint32   = 102;
-	optional uint32   optional_uint32   = 103;
-	optional int64    optional_int64    = 104;
-	optional sint64   optional_sint64   = 105;
-	optional uint64   optional_uint64   = 106;
-	optional fixed32  optional_fixed32  = 107;
-	optional sfixed32 optional_sfixed32 = 108;
-	optional float    optional_float    = 109;
-	optional fixed64  optional_fixed64  = 110;
-	optional sfixed64 optional_sfixed64 = 111;
-	optional double   optional_double   = 112;
-	optional string   optional_string   = 113;
-	optional bytes    optional_bytes    = 114;
-
-	optional ChildEnum      optional_child_enum      = 115;
-	optional ChildMessage   optional_child_message   = 116;
-	optional NamedGroup     optional_named_group     = 117;
-	optional SiblingEnum    optional_sibling_enum    = 118;
-	optional SiblingMessage optional_sibling_message = 119;
-	optional group OptionalGroup = 120 {
-		optional string f1 = 1;
-		required string f2 = 2;
-		repeated string f3 = 3;
-	}
-
-	// Optional default fields.
-	optional bool      defaulted_bool     = 200 [default = true];
-	optional int32     defaulted_int32    = 201 [default = -12345];
-	optional sint32    defaulted_sint32   = 202 [default = -3200];
-	optional uint32    defaulted_uint32   = 203 [default = 3200];
-	optional int64     defaulted_int64    = 204 [default = -123456789];
-	optional sint64    defaulted_sint64   = 205 [default = -6400];
-	optional uint64    defaulted_uint64   = 206 [default = 6400];
-	optional fixed32   defaulted_fixed32  = 207 [default = 320000];
-	optional sfixed32  defaulted_sfixed32 = 208 [default = -320000];
-	optional float     defaulted_float    = 209 [default = 3.14159];
-	optional fixed64   defaulted_fixed64  = 210 [default = 640000];
-	optional sfixed64  defaulted_sfixed64 = 211 [default = -640000];
-	optional double    defaulted_double   = 212 [default = 3.14159265359];
-	optional string    defaulted_string   = 213 [default = "hello, \"world!\"\n"];
-	optional bytes     defaulted_bytes    = 214 [default = "dead\xde\xad\xbe\xefbeef"];
-
-	optional ChildEnum   defaulted_child_enum   = 215 [default = ALPHA];
-	optional SiblingEnum defaulted_sibling_enum = 216 [default = ALPHA];
-
-	// Required fields.
-	required bool     required_bool     = 300;
-	required int32    required_int32    = 301;
-	required sint32   required_sint32   = 302;
-	required uint32   required_uint32   = 303;
-	required int64    required_int64    = 304;
-	required sint64   required_sint64   = 305;
-	required uint64   required_uint64   = 306;
-	required fixed32  required_fixed32  = 307;
-	required sfixed32 required_sfixed32 = 308;
-	required float    required_float    = 309;
-	required fixed64  required_fixed64  = 310;
-	required sfixed64 required_sfixed64 = 311;
-	required double   required_double   = 312;
-	required string   required_string   = 313;
-	required bytes    required_bytes    = 314;
-
-	required ChildEnum      required_child_enum      = 315;
-	required ChildMessage   required_child_message   = 316;
-	required NamedGroup     required_named_group     = 317;
-	required SiblingEnum    required_sibling_enum    = 318;
-	required SiblingMessage required_sibling_message = 319;
-	required group RequiredGroup = 320 {
-		optional string f1 = 1;
-		required string f2 = 2;
-		repeated string f3 = 3;
-	}
-	// Required default fields.
-	required bool      required_defaulted_bool     = 400 [default = true];
-	required int32     required_defaulted_int32    = 401 [default = -12345];
-	required sint32    required_defaulted_sint32   = 402 [default = -3200];
-	required uint32    required_defaulted_uint32   = 403 [default = 3200];
-	required int64     required_defaulted_int64    = 404 [default = -123456789];
-	required sint64    required_defaulted_sint64   = 405 [default = -6400];
-	required uint64    required_defaulted_uint64   = 406 [default = 6400];
-	required fixed32   required_defaulted_fixed32  = 407 [default = 320000];
-	required sfixed32  required_defaulted_sfixed32 = 408 [default = -320000];
-	required float     required_defaulted_float    = 409 [default = 3.14159];
-	required fixed64   required_defaulted_fixed64  = 410 [default = 640000];
-	required sfixed64  required_defaulted_sfixed64 = 411 [default = -640000];
-	required double    required_defaulted_double   = 412 [default = 3.14159265359];
-	required string    required_defaulted_string   = 413 [default = "hello, \"world!\"\n"];
-	required bytes     required_defaulted_bytes    = 414 [default = "dead\xde\xad\xbe\xefbeef"];
-
-	required ChildEnum   required_defaulted_child_enum   = 415 [default = ALPHA];
-	required SiblingEnum required_defaulted_sibling_enum = 416 [default = ALPHA];
-
-	// Repeated fields.
-	repeated bool     repeated_bool     = 500;
-	repeated int32    repeated_int32    = 501;
-	repeated sint32   repeated_sint32   = 502;
-	repeated uint32   repeated_uint32   = 503;
-	repeated int64    repeated_int64    = 504;
-	repeated sint64   repeated_sint64   = 505;
-	repeated uint64   repeated_uint64   = 506;
-	repeated fixed32  repeated_fixed32  = 507;
-	repeated sfixed32 repeated_sfixed32 = 508;
-	repeated float    repeated_float    = 509;
-	repeated fixed64  repeated_fixed64  = 510;
-	repeated sfixed64 repeated_sfixed64 = 511;
-	repeated double   repeated_double   = 512;
-	repeated string   repeated_string   = 513;
-	repeated bytes    repeated_bytes    = 514;
-
-	repeated ChildEnum      repeated_child_enum      = 515;
-	repeated ChildMessage   repeated_child_message   = 516;
-	repeated NamedGroup     repeated_named_group     = 517;
-	repeated SiblingEnum    repeated_sibling_enum    = 518;
-	repeated SiblingMessage repeated_sibling_message = 519;
-	repeated group RepeatedGroup = 520 {
-		optional string f1 = 1;
-		required string f2 = 2;
-		repeated string f3 = 3;
-	}
-
-	// Map fields.
-	map<bool, bool>     map_bool_bool     = 600;
-	map<bool, int32>    map_bool_int32    = 601;
-	map<bool, sint32>   map_bool_sint32   = 602;
-	map<bool, uint32>   map_bool_uint32   = 603;
-	map<bool, int64>    map_bool_int64    = 604;
-	map<bool, sint64>   map_bool_sint64   = 605;
-	map<bool, uint64>   map_bool_uint64   = 606;
-	map<bool, fixed32>  map_bool_fixed32  = 607;
-	map<bool, sfixed32> map_bool_sfixed32 = 608;
-	map<bool, float>    map_bool_float    = 609;
-	map<bool, fixed64>  map_bool_fixed64  = 610;
-	map<bool, sfixed64> map_bool_sfixed64 = 611;
-	map<bool, double>   map_bool_double   = 612;
-	map<bool, string>   map_bool_string   = 613;
-	map<bool, bytes>    map_bool_bytes    = 614;
-
-	map<bool, ChildEnum>      map_bool_child_enum      = 615;
-	map<bool, ChildMessage>   map_bool_child_message   = 616;
-	map<bool, NamedGroup>     map_bool_named_group     = 617;
-	map<bool, SiblingEnum>    map_bool_sibling_enum    = 618;
-	map<bool, SiblingMessage> map_bool_sibling_message = 619;
-
-	map<int32, bool>   map_int32_bool   = 620;
-	map<sint32, bool>  map_sint32_bool  = 621;
-	map<uint32, bool>  map_uint32_bool  = 622;
-	map<int64, bool>   map_int64_bool   = 623;
-	map<sint64, bool>  map_sint64_bool  = 624;
-	map<uint64, bool>  map_uint64_bool  = 625;
-	map<fixed32, bool> map_fixed32_bool = 626;
-	map<string, bool>  map_string_bool  = 627;
-
-	// Oneof fields.
-	oneof oneof_union {
-		bool     oneof_bool     = 700;
-		int32    oneof_int32    = 701;
-		sint32   oneof_sint32   = 702;
-		uint32   oneof_uint32   = 703;
-		int64    oneof_int64    = 704;
-		sint64   oneof_sint64   = 705;
-		uint64   oneof_uint64   = 706;
-		fixed32  oneof_fixed32  = 707;
-		sfixed32 oneof_sfixed32 = 708;
-		float    oneof_float    = 709;
-		fixed64  oneof_fixed64  = 710;
-		sfixed64 oneof_sfixed64 = 711;
-		double   oneof_double   = 712;
-		string   oneof_string   = 713;
-		bytes    oneof_bytes    = 714;
-
-		ChildEnum      oneof_child_enum      = 715;
-		ChildMessage   oneof_child_message   = 716;
-		NamedGroup     oneof_named_group     = 717;
-		SiblingEnum    oneof_sibling_enum    = 718;
-		SiblingMessage oneof_sibling_message = 719;
-		group OneofGroup = 720 {
-			optional string f1 = 1;
-			required string f2 = 2;
-			repeated string f3 = 3;
-		}
-
-		string oneof_string1 = 721;
-		string oneof_string2 = 722;
-		string oneof_string3 = 723;
-	}
-
-	// Oneof default fields.
-	oneof oneof_defaulted_union {
-		bool      oneof_defaulted_bool     = 800 [default = true];
-		int32     oneof_defaulted_int32    = 801 [default = -12345];
-		sint32    oneof_defaulted_sint32   = 802 [default = -3200];
-		uint32    oneof_defaulted_uint32   = 803 [default = 3200];
-		int64     oneof_defaulted_int64    = 804 [default = -123456789];
-		sint64    oneof_defaulted_sint64   = 805 [default = -6400];
-		uint64    oneof_defaulted_uint64   = 806 [default = 6400];
-		fixed32   oneof_defaulted_fixed32  = 807 [default = 320000];
-		sfixed32  oneof_defaulted_sfixed32 = 808 [default = -320000];
-		float     oneof_defaulted_float    = 809 [default = 3.14159];
-		fixed64   oneof_defaulted_fixed64  = 810 [default = 640000];
-		sfixed64  oneof_defaulted_sfixed64 = 811 [default = -640000];
-		double    oneof_defaulted_double   = 812 [default = 3.14159265359];
-		string    oneof_defaulted_string   = 813 [default = "hello, \"world!\"\n"];
-		bytes     oneof_defaulted_bytes    = 814 [default = "dead\xde\xad\xbe\xefbeef"];
-
-		ChildEnum   oneof_defaulted_child_enum   = 815 [default = ALPHA];
-		SiblingEnum oneof_defaulted_sibling_enum = 816 [default = ALPHA];
-	}
-
-	// Extension fields.
-	extend Message {
-		// Optional fields.
-		optional bool     extension_optional_bool     = 10000;
-		optional int32    extension_optional_int32    = 10001;
-		optional sint32   extension_optional_sint32   = 10002;
-		optional uint32   extension_optional_uint32   = 10003;
-		optional int64    extension_optional_int64    = 10004;
-		optional sint64   extension_optional_sint64   = 10005;
-		optional uint64   extension_optional_uint64   = 10006;
-		optional fixed32  extension_optional_fixed32  = 10007;
-		optional sfixed32 extension_optional_sfixed32 = 10008;
-		optional float    extension_optional_float    = 10009;
-		optional fixed64  extension_optional_fixed64  = 10010;
-		optional sfixed64 extension_optional_sfixed64 = 10011;
-		optional double   extension_optional_double   = 10012;
-		optional string   extension_optional_string   = 10013;
-		optional bytes    extension_optional_bytes    = 10014;
-
-		optional ChildEnum      extension_optional_child_enum      = 10015;
-		optional ChildMessage   extension_optional_child_message   = 10016;
-		optional NamedGroup     extension_optional_named_group     = 10017;
-		optional SiblingEnum    extension_optional_sibling_enum    = 10018;
-		optional SiblingMessage extension_optional_sibling_message = 10019;
-		optional group ExtensionOptionalGroup = 10020 {
-			optional string f1 = 1;
-			required string f2 = 2;
-			repeated string f3 = 3;
-		}
-
-		// Optional default fields.
-		optional bool      extension_defaulted_bool     = 20000 [default = true];
-		optional int32     extension_defaulted_int32    = 20001 [default = -12345];
-		optional sint32    extension_defaulted_sint32   = 20002 [default = -3200];
-		optional uint32    extension_defaulted_uint32   = 20003 [default = 3200];
-		optional int64     extension_defaulted_int64    = 20004 [default = -123456789];
-		optional sint64    extension_defaulted_sint64   = 20005 [default = -6400];
-		optional uint64    extension_defaulted_uint64   = 20006 [default = 6400];
-		optional fixed32   extension_defaulted_fixed32  = 20007 [default = 320000];
-		optional sfixed32  extension_defaulted_sfixed32 = 20008 [default = -320000];
-		optional float     extension_defaulted_float    = 20009 [default = 3.14159];
-		optional fixed64   extension_defaulted_fixed64  = 20010 [default = 640000];
-		optional sfixed64  extension_defaulted_sfixed64 = 20011 [default = -640000];
-		optional double    extension_defaulted_double   = 20012 [default = 3.14159265359];
-		optional string    extension_defaulted_string   = 20013 [default = "hello, \"world!\"\n"];
-		optional bytes     extension_defaulted_bytes    = 20014 [default = "dead\xde\xad\xbe\xefbeef"];
-
-		optional ChildEnum   extension_defaulted_child_enum   = 20015 [default = ALPHA];
-		optional SiblingEnum extension_defaulted_sibling_enum = 20016 [default = ALPHA];
-
-		// Repeated fields.
-		repeated bool     extension_repeated_bool     = 30000;
-		repeated int32    extension_repeated_int32    = 30001;
-		repeated sint32   extension_repeated_sint32   = 30002;
-		repeated uint32   extension_repeated_uint32   = 30003;
-		repeated int64    extension_repeated_int64    = 30004;
-		repeated sint64   extension_repeated_sint64   = 30005;
-		repeated uint64   extension_repeated_uint64   = 30006;
-		repeated fixed32  extension_repeated_fixed32  = 30007;
-		repeated sfixed32 extension_repeated_sfixed32 = 30008;
-		repeated float    extension_repeated_float    = 30009;
-		repeated fixed64  extension_repeated_fixed64  = 30010;
-		repeated sfixed64 extension_repeated_sfixed64 = 30011;
-		repeated double   extension_repeated_double   = 30012;
-		repeated string   extension_repeated_string   = 30013;
-		repeated bytes    extension_repeated_bytes    = 30014;
-
-		repeated ChildEnum      extension_repeated_child_enum      = 30015;
-		repeated ChildMessage   extension_repeated_child_message   = 30016;
-		repeated NamedGroup     extension_repeated_named_group     = 30017;
-		repeated SiblingEnum    extension_repeated_sibling_enum    = 30018;
-		repeated SiblingMessage extension_repeated_sibling_message = 30019;
-		repeated group ExtensionRepeatedGroup = 30020 {
-			optional string f1 = 1;
-			required string f2 = 2;
-			repeated string f3 = 3;
-		}
-	}
-
-	extensions 10000 to max;
-}
diff --git a/internal/testprotos/legacy/proto2_20160519_a4ab9ec5/test.pb.go b/internal/testprotos/legacy/proto2_20160519_a4ab9ec5/test.pb.go
deleted file mode 100644
index 19bfe41..0000000
--- a/internal/testprotos/legacy/proto2_20160519_a4ab9ec5/test.pb.go
+++ /dev/null
@@ -1,3532 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go.
-// source: proto2_20160519_a4ab9ec5/test.proto
-// DO NOT EDIT!
-
-/*
-Package proto2_20160519_a4ab9ec5 is a generated protocol buffer package.
-
-It is generated from these files:
-	proto2_20160519_a4ab9ec5/test.proto
-
-It has these top-level messages:
-	SiblingMessage
-	Message
-*/
-package proto2_20160519_a4ab9ec5
-
-import proto "google.golang.org/protobuf/internal/protolegacy"
-import fmt "fmt"
-import 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.
-const _ = proto.ProtoPackageIsVersion1
-
-type SiblingEnum int32
-
-const (
-	SiblingEnum_ALPHA   SiblingEnum = 0
-	SiblingEnum_BRAVO   SiblingEnum = 10
-	SiblingEnum_CHARLIE SiblingEnum = 200
-)
-
-var SiblingEnum_name = map[int32]string{
-	0:   "ALPHA",
-	10:  "BRAVO",
-	200: "CHARLIE",
-}
-var SiblingEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   10,
-	"CHARLIE": 200,
-}
-
-func (x SiblingEnum) Enum() *SiblingEnum {
-	p := new(SiblingEnum)
-	*p = x
-	return p
-}
-func (x SiblingEnum) String() string {
-	return proto.EnumName(SiblingEnum_name, int32(x))
-}
-func (x *SiblingEnum) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(SiblingEnum_value, data, "SiblingEnum")
-	if err != nil {
-		return err
-	}
-	*x = SiblingEnum(value)
-	return nil
-}
-func (SiblingEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
-
-type Message_ChildEnum int32
-
-const (
-	Message_ALPHA   Message_ChildEnum = 0
-	Message_BRAVO   Message_ChildEnum = 1
-	Message_CHARLIE Message_ChildEnum = 2
-)
-
-var Message_ChildEnum_name = map[int32]string{
-	0: "ALPHA",
-	1: "BRAVO",
-	2: "CHARLIE",
-}
-var Message_ChildEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   1,
-	"CHARLIE": 2,
-}
-
-func (x Message_ChildEnum) Enum() *Message_ChildEnum {
-	p := new(Message_ChildEnum)
-	*p = x
-	return p
-}
-func (x Message_ChildEnum) String() string {
-	return proto.EnumName(Message_ChildEnum_name, int32(x))
-}
-func (x *Message_ChildEnum) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(Message_ChildEnum_value, data, "Message_ChildEnum")
-	if err != nil {
-		return err
-	}
-	*x = Message_ChildEnum(value)
-	return nil
-}
-func (Message_ChildEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
-
-type SiblingMessage struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	F4               *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *SiblingMessage) Reset()                    { *m = SiblingMessage{} }
-func (m *SiblingMessage) String() string            { return proto.CompactTextString(m) }
-func (*SiblingMessage) ProtoMessage()               {}
-func (*SiblingMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
-
-func (m *SiblingMessage) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *SiblingMessage) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *SiblingMessage) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func (m *SiblingMessage) GetF4() *Message {
-	if m != nil {
-		return m.F4
-	}
-	return nil
-}
-
-type Message struct {
-	Namedgroup *Message_NamedGroup `protobuf:"group,1,opt,name=NamedGroup,json=namedgroup" json:"namedgroup,omitempty"`
-	// Optional fields.
-	OptionalBool           *bool                  `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
-	OptionalInt32          *int32                 `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
-	OptionalSint32         *int32                 `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
-	OptionalUint32         *uint32                `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
-	OptionalInt64          *int64                 `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
-	OptionalSint64         *int64                 `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
-	OptionalUint64         *uint64                `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
-	OptionalFixed32        *uint32                `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
-	OptionalSfixed32       *int32                 `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
-	OptionalFloat          *float32               `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
-	OptionalFixed64        *uint64                `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
-	OptionalSfixed64       *int64                 `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
-	OptionalDouble         *float64               `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
-	OptionalString         *string                `protobuf:"bytes,113,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
-	OptionalBytes          []byte                 `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
-	OptionalChildEnum      *Message_ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,enum=google.golang.org.proto2_20160519.Message_ChildEnum" json:"optional_child_enum,omitempty"`
-	OptionalChildMessage   *Message_ChildMessage  `protobuf:"bytes,116,opt,name=optional_child_message,json=optionalChildMessage" json:"optional_child_message,omitempty"`
-	OptionalNamedGroup     *Message_NamedGroup    `protobuf:"bytes,117,opt,name=optional_named_group,json=optionalNamedGroup" json:"optional_named_group,omitempty"`
-	OptionalSiblingEnum    *SiblingEnum           `protobuf:"varint,118,opt,name=optional_sibling_enum,json=optionalSiblingEnum,enum=google.golang.org.proto2_20160519.SiblingEnum" json:"optional_sibling_enum,omitempty"`
-	OptionalSiblingMessage *SiblingMessage        `protobuf:"bytes,119,opt,name=optional_sibling_message,json=optionalSiblingMessage" json:"optional_sibling_message,omitempty"`
-	Optionalgroup          *Message_OptionalGroup `protobuf:"group,120,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
-	// Optional default fields.
-	DefaultedBool        *bool              `protobuf:"varint,200,opt,name=defaulted_bool,json=defaultedBool,def=1" json:"defaulted_bool,omitempty"`
-	DefaultedInt32       *int32             `protobuf:"varint,201,opt,name=defaulted_int32,json=defaultedInt32,def=-12345" json:"defaulted_int32,omitempty"`
-	DefaultedSint32      *int32             `protobuf:"zigzag32,202,opt,name=defaulted_sint32,json=defaultedSint32,def=-3200" json:"defaulted_sint32,omitempty"`
-	DefaultedUint32      *uint32            `protobuf:"varint,203,opt,name=defaulted_uint32,json=defaultedUint32,def=3200" json:"defaulted_uint32,omitempty"`
-	DefaultedInt64       *int64             `protobuf:"varint,204,opt,name=defaulted_int64,json=defaultedInt64,def=-123456789" json:"defaulted_int64,omitempty"`
-	DefaultedSint64      *int64             `protobuf:"zigzag64,205,opt,name=defaulted_sint64,json=defaultedSint64,def=-6400" json:"defaulted_sint64,omitempty"`
-	DefaultedUint64      *uint64            `protobuf:"varint,206,opt,name=defaulted_uint64,json=defaultedUint64,def=6400" json:"defaulted_uint64,omitempty"`
-	DefaultedFixed32     *uint32            `protobuf:"fixed32,207,opt,name=defaulted_fixed32,json=defaultedFixed32,def=320000" json:"defaulted_fixed32,omitempty"`
-	DefaultedSfixed32    *int32             `protobuf:"fixed32,208,opt,name=defaulted_sfixed32,json=defaultedSfixed32,def=-320000" json:"defaulted_sfixed32,omitempty"`
-	DefaultedFloat       *float32           `protobuf:"fixed32,209,opt,name=defaulted_float,json=defaultedFloat,def=3.14159" json:"defaulted_float,omitempty"`
-	DefaultedFixed64     *uint64            `protobuf:"fixed64,210,opt,name=defaulted_fixed64,json=defaultedFixed64,def=640000" json:"defaulted_fixed64,omitempty"`
-	DefaultedSfixed64    *int64             `protobuf:"fixed64,211,opt,name=defaulted_sfixed64,json=defaultedSfixed64,def=-640000" json:"defaulted_sfixed64,omitempty"`
-	DefaultedDouble      *float64           `protobuf:"fixed64,212,opt,name=defaulted_double,json=defaultedDouble,def=3.14159265359" json:"defaulted_double,omitempty"`
-	DefaultedString      *string            `protobuf:"bytes,213,opt,name=defaulted_string,json=defaultedString,def=hello, \"world!\"\n" json:"defaulted_string,omitempty"`
-	DefaultedBytes       []byte             `protobuf:"bytes,214,opt,name=defaulted_bytes,json=defaultedBytes,def=dead\\336\\255\\276\\357beef" json:"defaulted_bytes,omitempty"`
-	DefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,215,opt,name=defaulted_child_enum,json=defaultedChildEnum,enum=google.golang.org.proto2_20160519.Message_ChildEnum,def=0" json:"defaulted_child_enum,omitempty"`
-	DefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,216,opt,name=defaulted_sibling_enum,json=defaultedSiblingEnum,enum=google.golang.org.proto2_20160519.SiblingEnum,def=0" json:"defaulted_sibling_enum,omitempty"`
-	// Required fields.
-	RequiredBool           *bool                  `protobuf:"varint,300,req,name=required_bool,json=requiredBool" json:"required_bool,omitempty"`
-	RequiredInt32          *int32                 `protobuf:"varint,301,req,name=required_int32,json=requiredInt32" json:"required_int32,omitempty"`
-	RequiredSint32         *int32                 `protobuf:"zigzag32,302,req,name=required_sint32,json=requiredSint32" json:"required_sint32,omitempty"`
-	RequiredUint32         *uint32                `protobuf:"varint,303,req,name=required_uint32,json=requiredUint32" json:"required_uint32,omitempty"`
-	RequiredInt64          *int64                 `protobuf:"varint,304,req,name=required_int64,json=requiredInt64" json:"required_int64,omitempty"`
-	RequiredSint64         *int64                 `protobuf:"zigzag64,305,req,name=required_sint64,json=requiredSint64" json:"required_sint64,omitempty"`
-	RequiredUint64         *uint64                `protobuf:"varint,306,req,name=required_uint64,json=requiredUint64" json:"required_uint64,omitempty"`
-	RequiredFixed32        *uint32                `protobuf:"fixed32,307,req,name=required_fixed32,json=requiredFixed32" json:"required_fixed32,omitempty"`
-	RequiredSfixed32       *int32                 `protobuf:"fixed32,308,req,name=required_sfixed32,json=requiredSfixed32" json:"required_sfixed32,omitempty"`
-	RequiredFloat          *float32               `protobuf:"fixed32,309,req,name=required_float,json=requiredFloat" json:"required_float,omitempty"`
-	RequiredFixed64        *uint64                `protobuf:"fixed64,310,req,name=required_fixed64,json=requiredFixed64" json:"required_fixed64,omitempty"`
-	RequiredSfixed64       *int64                 `protobuf:"fixed64,311,req,name=required_sfixed64,json=requiredSfixed64" json:"required_sfixed64,omitempty"`
-	RequiredDouble         *float64               `protobuf:"fixed64,312,req,name=required_double,json=requiredDouble" json:"required_double,omitempty"`
-	RequiredString         *string                `protobuf:"bytes,313,req,name=required_string,json=requiredString" json:"required_string,omitempty"`
-	RequiredBytes          []byte                 `protobuf:"bytes,314,req,name=required_bytes,json=requiredBytes" json:"required_bytes,omitempty"`
-	RequiredChildEnum      *Message_ChildEnum     `protobuf:"varint,315,req,name=required_child_enum,json=requiredChildEnum,enum=google.golang.org.proto2_20160519.Message_ChildEnum" json:"required_child_enum,omitempty"`
-	RequiredChildMessage   *Message_ChildMessage  `protobuf:"bytes,316,req,name=required_child_message,json=requiredChildMessage" json:"required_child_message,omitempty"`
-	RequiredNamedGroup     *Message_NamedGroup    `protobuf:"bytes,317,req,name=required_named_group,json=requiredNamedGroup" json:"required_named_group,omitempty"`
-	RequiredSiblingEnum    *SiblingEnum           `protobuf:"varint,318,req,name=required_sibling_enum,json=requiredSiblingEnum,enum=google.golang.org.proto2_20160519.SiblingEnum" json:"required_sibling_enum,omitempty"`
-	RequiredSiblingMessage *SiblingMessage        `protobuf:"bytes,319,req,name=required_sibling_message,json=requiredSiblingMessage" json:"required_sibling_message,omitempty"`
-	Requiredgroup          *Message_RequiredGroup `protobuf:"group,320,req,name=RequiredGroup,json=requiredgroup" json:"requiredgroup,omitempty"`
-	// Required default fields.
-	RequiredDefaultedBool        *bool              `protobuf:"varint,400,req,name=required_defaulted_bool,json=requiredDefaultedBool,def=1" json:"required_defaulted_bool,omitempty"`
-	RequiredDefaultedInt32       *int32             `protobuf:"varint,401,req,name=required_defaulted_int32,json=requiredDefaultedInt32,def=-12345" json:"required_defaulted_int32,omitempty"`
-	RequiredDefaultedSint32      *int32             `protobuf:"zigzag32,402,req,name=required_defaulted_sint32,json=requiredDefaultedSint32,def=-3200" json:"required_defaulted_sint32,omitempty"`
-	RequiredDefaultedUint32      *uint32            `protobuf:"varint,403,req,name=required_defaulted_uint32,json=requiredDefaultedUint32,def=3200" json:"required_defaulted_uint32,omitempty"`
-	RequiredDefaultedInt64       *int64             `protobuf:"varint,404,req,name=required_defaulted_int64,json=requiredDefaultedInt64,def=-123456789" json:"required_defaulted_int64,omitempty"`
-	RequiredDefaultedSint64      *int64             `protobuf:"zigzag64,405,req,name=required_defaulted_sint64,json=requiredDefaultedSint64,def=-6400" json:"required_defaulted_sint64,omitempty"`
-	RequiredDefaultedUint64      *uint64            `protobuf:"varint,406,req,name=required_defaulted_uint64,json=requiredDefaultedUint64,def=6400" json:"required_defaulted_uint64,omitempty"`
-	RequiredDefaultedFixed32     *uint32            `protobuf:"fixed32,407,req,name=required_defaulted_fixed32,json=requiredDefaultedFixed32,def=320000" json:"required_defaulted_fixed32,omitempty"`
-	RequiredDefaultedSfixed32    *int32             `protobuf:"fixed32,408,req,name=required_defaulted_sfixed32,json=requiredDefaultedSfixed32,def=-320000" json:"required_defaulted_sfixed32,omitempty"`
-	RequiredDefaultedFloat       *float32           `protobuf:"fixed32,409,req,name=required_defaulted_float,json=requiredDefaultedFloat,def=3.14159" json:"required_defaulted_float,omitempty"`
-	RequiredDefaultedFixed64     *uint64            `protobuf:"fixed64,410,req,name=required_defaulted_fixed64,json=requiredDefaultedFixed64,def=640000" json:"required_defaulted_fixed64,omitempty"`
-	RequiredDefaultedSfixed64    *int64             `protobuf:"fixed64,411,req,name=required_defaulted_sfixed64,json=requiredDefaultedSfixed64,def=-640000" json:"required_defaulted_sfixed64,omitempty"`
-	RequiredDefaultedDouble      *float64           `protobuf:"fixed64,412,req,name=required_defaulted_double,json=requiredDefaultedDouble,def=3.14159265359" json:"required_defaulted_double,omitempty"`
-	RequiredDefaultedString      *string            `protobuf:"bytes,413,req,name=required_defaulted_string,json=requiredDefaultedString,def=hello, \"world!\"\n" json:"required_defaulted_string,omitempty"`
-	RequiredDefaultedBytes       []byte             `protobuf:"bytes,414,req,name=required_defaulted_bytes,json=requiredDefaultedBytes,def=dead\\336\\255\\276\\357beef" json:"required_defaulted_bytes,omitempty"`
-	RequiredDefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,415,req,name=required_defaulted_child_enum,json=requiredDefaultedChildEnum,enum=google.golang.org.proto2_20160519.Message_ChildEnum,def=0" json:"required_defaulted_child_enum,omitempty"`
-	RequiredDefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,416,req,name=required_defaulted_sibling_enum,json=requiredDefaultedSiblingEnum,enum=google.golang.org.proto2_20160519.SiblingEnum,def=0" json:"required_defaulted_sibling_enum,omitempty"`
-	// Repeated fields.
-	RepeatedBool           []bool                   `protobuf:"varint,500,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
-	RepeatedInt32          []int32                  `protobuf:"varint,501,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
-	RepeatedSint32         []int32                  `protobuf:"zigzag32,502,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
-	RepeatedUint32         []uint32                 `protobuf:"varint,503,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
-	RepeatedInt64          []int64                  `protobuf:"varint,504,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
-	RepeatedSint64         []int64                  `protobuf:"zigzag64,505,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
-	RepeatedUint64         []uint64                 `protobuf:"varint,506,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
-	RepeatedFixed32        []uint32                 `protobuf:"fixed32,507,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
-	RepeatedSfixed32       []int32                  `protobuf:"fixed32,508,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
-	RepeatedFloat          []float32                `protobuf:"fixed32,509,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
-	RepeatedFixed64        []uint64                 `protobuf:"fixed64,510,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
-	RepeatedSfixed64       []int64                  `protobuf:"fixed64,511,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
-	RepeatedDouble         []float64                `protobuf:"fixed64,512,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
-	RepeatedString         []string                 `protobuf:"bytes,513,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
-	RepeatedBytes          [][]byte                 `protobuf:"bytes,514,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
-	RepeatedChildEnum      []Message_ChildEnum      `protobuf:"varint,515,rep,name=repeated_child_enum,json=repeatedChildEnum,enum=google.golang.org.proto2_20160519.Message_ChildEnum" json:"repeated_child_enum,omitempty"`
-	RepeatedChildMessage   []*Message_ChildMessage  `protobuf:"bytes,516,rep,name=repeated_child_message,json=repeatedChildMessage" json:"repeated_child_message,omitempty"`
-	RepeatedNamedGroup     []*Message_NamedGroup    `protobuf:"bytes,517,rep,name=repeated_named_group,json=repeatedNamedGroup" json:"repeated_named_group,omitempty"`
-	RepeatedSiblingEnum    []SiblingEnum            `protobuf:"varint,518,rep,name=repeated_sibling_enum,json=repeatedSiblingEnum,enum=google.golang.org.proto2_20160519.SiblingEnum" json:"repeated_sibling_enum,omitempty"`
-	RepeatedSiblingMessage []*SiblingMessage        `protobuf:"bytes,519,rep,name=repeated_sibling_message,json=repeatedSiblingMessage" json:"repeated_sibling_message,omitempty"`
-	Repeatedgroup          []*Message_RepeatedGroup `protobuf:"group,520,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
-	// Map fields.
-	MapBoolBool           map[bool]bool                  `protobuf:"bytes,600,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolInt32          map[bool]int32                 `protobuf:"bytes,601,rep,name=map_bool_int32,json=mapBoolInt32" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolSint32         map[bool]int32                 `protobuf:"bytes,602,rep,name=map_bool_sint32,json=mapBoolSint32" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
-	MapBoolUint32         map[bool]uint32                `protobuf:"bytes,603,rep,name=map_bool_uint32,json=mapBoolUint32" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolInt64          map[bool]int64                 `protobuf:"bytes,604,rep,name=map_bool_int64,json=mapBoolInt64" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolSint64         map[bool]int64                 `protobuf:"bytes,605,rep,name=map_bool_sint64,json=mapBoolSint64" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
-	MapBoolUint64         map[bool]uint64                `protobuf:"bytes,606,rep,name=map_bool_uint64,json=mapBoolUint64" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolFixed32        map[bool]uint32                `protobuf:"bytes,607,rep,name=map_bool_fixed32,json=mapBoolFixed32" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolSfixed32       map[bool]int32                 `protobuf:"bytes,608,rep,name=map_bool_sfixed32,json=mapBoolSfixed32" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolFloat          map[bool]float32               `protobuf:"bytes,609,rep,name=map_bool_float,json=mapBoolFloat" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolFixed64        map[bool]uint64                `protobuf:"bytes,610,rep,name=map_bool_fixed64,json=mapBoolFixed64" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolSfixed64       map[bool]int64                 `protobuf:"bytes,611,rep,name=map_bool_sfixed64,json=mapBoolSfixed64" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolDouble         map[bool]float64               `protobuf:"bytes,612,rep,name=map_bool_double,json=mapBoolDouble" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolString         map[bool]string                `protobuf:"bytes,613,rep,name=map_bool_string,json=mapBoolString" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolBytes          map[bool][]byte                `protobuf:"bytes,614,rep,name=map_bool_bytes,json=mapBoolBytes" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolChildEnum      map[bool]Message_ChildEnum     `protobuf:"bytes,615,rep,name=map_bool_child_enum,json=mapBoolChildEnum" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20160519.Message_ChildEnum"`
-	MapBoolChildMessage   map[bool]*Message_ChildMessage `protobuf:"bytes,616,rep,name=map_bool_child_message,json=mapBoolChildMessage" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolNamedGroup     map[bool]*Message_NamedGroup   `protobuf:"bytes,617,rep,name=map_bool_named_group,json=mapBoolNamedGroup" json:"map_bool_named_group,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolSiblingEnum    map[bool]SiblingEnum           `protobuf:"bytes,618,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20160519.SiblingEnum"`
-	MapBoolSiblingMessage map[bool]*SiblingMessage       `protobuf:"bytes,619,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapInt32Bool          map[int32]bool                 `protobuf:"bytes,620,rep,name=map_int32_bool,json=mapInt32Bool" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint32Bool         map[int32]bool                 `protobuf:"bytes,621,rep,name=map_sint32_bool,json=mapSint32Bool" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint32Bool         map[uint32]bool                `protobuf:"bytes,622,rep,name=map_uint32_bool,json=mapUint32Bool" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapInt64Bool          map[int64]bool                 `protobuf:"bytes,623,rep,name=map_int64_bool,json=mapInt64Bool" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint64Bool         map[int64]bool                 `protobuf:"bytes,624,rep,name=map_sint64_bool,json=mapSint64Bool" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint64Bool         map[uint64]bool                `protobuf:"bytes,625,rep,name=map_uint64_bool,json=mapUint64Bool" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapFixed32Bool        map[uint32]bool                `protobuf:"bytes,626,rep,name=map_fixed32_bool,json=mapFixed32Bool" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapStringBool         map[string]bool                `protobuf:"bytes,627,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	// Oneof fields.
-	//
-	// Types that are valid to be assigned to OneofUnion:
-	//	*Message_OneofBool
-	//	*Message_OneofInt32
-	//	*Message_OneofSint32
-	//	*Message_OneofUint32
-	//	*Message_OneofInt64
-	//	*Message_OneofSint64
-	//	*Message_OneofUint64
-	//	*Message_OneofFixed32
-	//	*Message_OneofSfixed32
-	//	*Message_OneofFloat
-	//	*Message_OneofFixed64
-	//	*Message_OneofSfixed64
-	//	*Message_OneofDouble
-	//	*Message_OneofString
-	//	*Message_OneofBytes
-	//	*Message_OneofChildEnum
-	//	*Message_OneofChildMessage
-	//	*Message_OneofNamedGroup
-	//	*Message_OneofSiblingEnum
-	//	*Message_OneofSiblingMessage
-	//	*Message_Oneofgroup
-	//	*Message_OneofString1
-	//	*Message_OneofString2
-	//	*Message_OneofString3
-	OneofUnion isMessage_OneofUnion `protobuf_oneof:"oneof_union"`
-	// Oneof default fields.
-	//
-	// Types that are valid to be assigned to OneofDefaultedUnion:
-	//	*Message_OneofDefaultedBool
-	//	*Message_OneofDefaultedInt32
-	//	*Message_OneofDefaultedSint32
-	//	*Message_OneofDefaultedUint32
-	//	*Message_OneofDefaultedInt64
-	//	*Message_OneofDefaultedSint64
-	//	*Message_OneofDefaultedUint64
-	//	*Message_OneofDefaultedFixed32
-	//	*Message_OneofDefaultedSfixed32
-	//	*Message_OneofDefaultedFloat
-	//	*Message_OneofDefaultedFixed64
-	//	*Message_OneofDefaultedSfixed64
-	//	*Message_OneofDefaultedDouble
-	//	*Message_OneofDefaultedString
-	//	*Message_OneofDefaultedBytes
-	//	*Message_OneofDefaultedChildEnum
-	//	*Message_OneofDefaultedSiblingEnum
-	OneofDefaultedUnion isMessage_OneofDefaultedUnion `protobuf_oneof:"oneof_defaulted_union"`
-	XXX_extensions      map[int32]proto.Extension     `json:"-"`
-	XXX_unrecognized    []byte                        `json:"-"`
-}
-
-func (m *Message) Reset()                    { *m = Message{} }
-func (m *Message) String() string            { return proto.CompactTextString(m) }
-func (*Message) ProtoMessage()               {}
-func (*Message) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
-
-var extRange_Message = []proto.ExtensionRange{
-	{10000, 536870911},
-}
-
-func (*Message) ExtensionRangeArray() []proto.ExtensionRange {
-	return extRange_Message
-}
-func (m *Message) ExtensionMap() map[int32]proto.Extension {
-	if m.XXX_extensions == nil {
-		m.XXX_extensions = make(map[int32]proto.Extension)
-	}
-	return m.XXX_extensions
-}
-
-const Default_Message_DefaultedBool bool = true
-const Default_Message_DefaultedInt32 int32 = -12345
-const Default_Message_DefaultedSint32 int32 = -3200
-const Default_Message_DefaultedUint32 uint32 = 3200
-const Default_Message_DefaultedInt64 int64 = -123456789
-const Default_Message_DefaultedSint64 int64 = -6400
-const Default_Message_DefaultedUint64 uint64 = 6400
-const Default_Message_DefaultedFixed32 uint32 = 320000
-const Default_Message_DefaultedSfixed32 int32 = -320000
-const Default_Message_DefaultedFloat float32 = 3.14159
-const Default_Message_DefaultedFixed64 uint64 = 640000
-const Default_Message_DefaultedSfixed64 int64 = -640000
-const Default_Message_DefaultedDouble float64 = 3.14159265359
-const Default_Message_DefaultedString string = "hello, \"world!\"\n"
-
-var Default_Message_DefaultedBytes []byte = []byte("dead\\336\\255\\276\\357beef")
-
-const Default_Message_DefaultedChildEnum Message_ChildEnum = Message_ALPHA
-const Default_Message_DefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
-const Default_Message_RequiredDefaultedBool bool = true
-const Default_Message_RequiredDefaultedInt32 int32 = -12345
-const Default_Message_RequiredDefaultedSint32 int32 = -3200
-const Default_Message_RequiredDefaultedUint32 uint32 = 3200
-const Default_Message_RequiredDefaultedInt64 int64 = -123456789
-const Default_Message_RequiredDefaultedSint64 int64 = -6400
-const Default_Message_RequiredDefaultedUint64 uint64 = 6400
-const Default_Message_RequiredDefaultedFixed32 uint32 = 320000
-const Default_Message_RequiredDefaultedSfixed32 int32 = -320000
-const Default_Message_RequiredDefaultedFloat float32 = 3.14159
-const Default_Message_RequiredDefaultedFixed64 uint64 = 640000
-const Default_Message_RequiredDefaultedSfixed64 int64 = -640000
-const Default_Message_RequiredDefaultedDouble float64 = 3.14159265359
-const Default_Message_RequiredDefaultedString string = "hello, \"world!\"\n"
-
-var Default_Message_RequiredDefaultedBytes []byte = []byte("dead\\336\\255\\276\\357beef")
-
-const Default_Message_RequiredDefaultedChildEnum Message_ChildEnum = Message_ALPHA
-const Default_Message_RequiredDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
-const Default_Message_OneofDefaultedBool bool = true
-const Default_Message_OneofDefaultedInt32 int32 = -12345
-const Default_Message_OneofDefaultedSint32 int32 = -3200
-const Default_Message_OneofDefaultedUint32 uint32 = 3200
-const Default_Message_OneofDefaultedInt64 int64 = -123456789
-const Default_Message_OneofDefaultedSint64 int64 = -6400
-const Default_Message_OneofDefaultedUint64 uint64 = 6400
-const Default_Message_OneofDefaultedFixed32 uint32 = 320000
-const Default_Message_OneofDefaultedSfixed32 int32 = -320000
-const Default_Message_OneofDefaultedFloat float32 = 3.14159
-const Default_Message_OneofDefaultedFixed64 uint64 = 640000
-const Default_Message_OneofDefaultedSfixed64 int64 = -640000
-const Default_Message_OneofDefaultedDouble float64 = 3.14159265359
-const Default_Message_OneofDefaultedString string = "hello, \"world!\"\n"
-
-var Default_Message_OneofDefaultedBytes []byte = []byte("dead\\336\\255\\276\\357beef")
-
-const Default_Message_OneofDefaultedChildEnum Message_ChildEnum = Message_ALPHA
-const Default_Message_OneofDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
-
-type isMessage_OneofUnion interface{ isMessage_OneofUnion() }
-type isMessage_OneofDefaultedUnion interface{ isMessage_OneofDefaultedUnion() }
-
-type Message_OneofBool struct {
-	OneofBool bool `protobuf:"varint,700,opt,name=oneof_bool,json=oneofBool,oneof"`
-}
-type Message_OneofInt32 struct {
-	OneofInt32 int32 `protobuf:"varint,701,opt,name=oneof_int32,json=oneofInt32,oneof"`
-}
-type Message_OneofSint32 struct {
-	OneofSint32 int32 `protobuf:"zigzag32,702,opt,name=oneof_sint32,json=oneofSint32,oneof"`
-}
-type Message_OneofUint32 struct {
-	OneofUint32 uint32 `protobuf:"varint,703,opt,name=oneof_uint32,json=oneofUint32,oneof"`
-}
-type Message_OneofInt64 struct {
-	OneofInt64 int64 `protobuf:"varint,704,opt,name=oneof_int64,json=oneofInt64,oneof"`
-}
-type Message_OneofSint64 struct {
-	OneofSint64 int64 `protobuf:"zigzag64,705,opt,name=oneof_sint64,json=oneofSint64,oneof"`
-}
-type Message_OneofUint64 struct {
-	OneofUint64 uint64 `protobuf:"varint,706,opt,name=oneof_uint64,json=oneofUint64,oneof"`
-}
-type Message_OneofFixed32 struct {
-	OneofFixed32 uint32 `protobuf:"fixed32,707,opt,name=oneof_fixed32,json=oneofFixed32,oneof"`
-}
-type Message_OneofSfixed32 struct {
-	OneofSfixed32 int32 `protobuf:"fixed32,708,opt,name=oneof_sfixed32,json=oneofSfixed32,oneof"`
-}
-type Message_OneofFloat struct {
-	OneofFloat float32 `protobuf:"fixed32,709,opt,name=oneof_float,json=oneofFloat,oneof"`
-}
-type Message_OneofFixed64 struct {
-	OneofFixed64 uint64 `protobuf:"fixed64,710,opt,name=oneof_fixed64,json=oneofFixed64,oneof"`
-}
-type Message_OneofSfixed64 struct {
-	OneofSfixed64 int64 `protobuf:"fixed64,711,opt,name=oneof_sfixed64,json=oneofSfixed64,oneof"`
-}
-type Message_OneofDouble struct {
-	OneofDouble float64 `protobuf:"fixed64,712,opt,name=oneof_double,json=oneofDouble,oneof"`
-}
-type Message_OneofString struct {
-	OneofString string `protobuf:"bytes,713,opt,name=oneof_string,json=oneofString,oneof"`
-}
-type Message_OneofBytes struct {
-	OneofBytes []byte `protobuf:"bytes,714,opt,name=oneof_bytes,json=oneofBytes,oneof"`
-}
-type Message_OneofChildEnum struct {
-	OneofChildEnum Message_ChildEnum `protobuf:"varint,715,opt,name=oneof_child_enum,json=oneofChildEnum,enum=google.golang.org.proto2_20160519.Message_ChildEnum,oneof"`
-}
-type Message_OneofChildMessage struct {
-	OneofChildMessage *Message_ChildMessage `protobuf:"bytes,716,opt,name=oneof_child_message,json=oneofChildMessage,oneof"`
-}
-type Message_OneofNamedGroup struct {
-	OneofNamedGroup *Message_NamedGroup `protobuf:"bytes,717,opt,name=oneof_named_group,json=oneofNamedGroup,oneof"`
-}
-type Message_OneofSiblingEnum struct {
-	OneofSiblingEnum SiblingEnum `protobuf:"varint,718,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,enum=google.golang.org.proto2_20160519.SiblingEnum,oneof"`
-}
-type Message_OneofSiblingMessage struct {
-	OneofSiblingMessage *SiblingMessage `protobuf:"bytes,719,opt,name=oneof_sibling_message,json=oneofSiblingMessage,oneof"`
-}
-type Message_Oneofgroup struct {
-	Oneofgroup *Message_OneofGroup `protobuf:"group,720,opt,name=OneofGroup,json=oneofgroup,oneof"`
-}
-type Message_OneofString1 struct {
-	OneofString1 string `protobuf:"bytes,721,opt,name=oneof_string1,json=oneofString1,oneof"`
-}
-type Message_OneofString2 struct {
-	OneofString2 string `protobuf:"bytes,722,opt,name=oneof_string2,json=oneofString2,oneof"`
-}
-type Message_OneofString3 struct {
-	OneofString3 string `protobuf:"bytes,723,opt,name=oneof_string3,json=oneofString3,oneof"`
-}
-type Message_OneofDefaultedBool struct {
-	OneofDefaultedBool bool `protobuf:"varint,800,opt,name=oneof_defaulted_bool,json=oneofDefaultedBool,oneof,def=1"`
-}
-type Message_OneofDefaultedInt32 struct {
-	OneofDefaultedInt32 int32 `protobuf:"varint,801,opt,name=oneof_defaulted_int32,json=oneofDefaultedInt32,oneof,def=-12345"`
-}
-type Message_OneofDefaultedSint32 struct {
-	OneofDefaultedSint32 int32 `protobuf:"zigzag32,802,opt,name=oneof_defaulted_sint32,json=oneofDefaultedSint32,oneof,def=-3200"`
-}
-type Message_OneofDefaultedUint32 struct {
-	OneofDefaultedUint32 uint32 `protobuf:"varint,803,opt,name=oneof_defaulted_uint32,json=oneofDefaultedUint32,oneof,def=3200"`
-}
-type Message_OneofDefaultedInt64 struct {
-	OneofDefaultedInt64 int64 `protobuf:"varint,804,opt,name=oneof_defaulted_int64,json=oneofDefaultedInt64,oneof,def=-123456789"`
-}
-type Message_OneofDefaultedSint64 struct {
-	OneofDefaultedSint64 int64 `protobuf:"zigzag64,805,opt,name=oneof_defaulted_sint64,json=oneofDefaultedSint64,oneof,def=-6400"`
-}
-type Message_OneofDefaultedUint64 struct {
-	OneofDefaultedUint64 uint64 `protobuf:"varint,806,opt,name=oneof_defaulted_uint64,json=oneofDefaultedUint64,oneof,def=6400"`
-}
-type Message_OneofDefaultedFixed32 struct {
-	OneofDefaultedFixed32 uint32 `protobuf:"fixed32,807,opt,name=oneof_defaulted_fixed32,json=oneofDefaultedFixed32,oneof,def=320000"`
-}
-type Message_OneofDefaultedSfixed32 struct {
-	OneofDefaultedSfixed32 int32 `protobuf:"fixed32,808,opt,name=oneof_defaulted_sfixed32,json=oneofDefaultedSfixed32,oneof,def=-320000"`
-}
-type Message_OneofDefaultedFloat struct {
-	OneofDefaultedFloat float32 `protobuf:"fixed32,809,opt,name=oneof_defaulted_float,json=oneofDefaultedFloat,oneof,def=3.14159"`
-}
-type Message_OneofDefaultedFixed64 struct {
-	OneofDefaultedFixed64 uint64 `protobuf:"fixed64,810,opt,name=oneof_defaulted_fixed64,json=oneofDefaultedFixed64,oneof,def=640000"`
-}
-type Message_OneofDefaultedSfixed64 struct {
-	OneofDefaultedSfixed64 int64 `protobuf:"fixed64,811,opt,name=oneof_defaulted_sfixed64,json=oneofDefaultedSfixed64,oneof,def=-640000"`
-}
-type Message_OneofDefaultedDouble struct {
-	OneofDefaultedDouble float64 `protobuf:"fixed64,812,opt,name=oneof_defaulted_double,json=oneofDefaultedDouble,oneof,def=3.14159265359"`
-}
-type Message_OneofDefaultedString struct {
-	OneofDefaultedString string `protobuf:"bytes,813,opt,name=oneof_defaulted_string,json=oneofDefaultedString,oneof,def=hello, \"world!\"\n"`
-}
-type Message_OneofDefaultedBytes struct {
-	OneofDefaultedBytes []byte `protobuf:"bytes,814,opt,name=oneof_defaulted_bytes,json=oneofDefaultedBytes,oneof,def=dead\\336\\255\\276\\357beef"`
-}
-type Message_OneofDefaultedChildEnum struct {
-	OneofDefaultedChildEnum Message_ChildEnum `protobuf:"varint,815,opt,name=oneof_defaulted_child_enum,json=oneofDefaultedChildEnum,enum=google.golang.org.proto2_20160519.Message_ChildEnum,oneof,def=0"`
-}
-type Message_OneofDefaultedSiblingEnum struct {
-	OneofDefaultedSiblingEnum SiblingEnum `protobuf:"varint,816,opt,name=oneof_defaulted_sibling_enum,json=oneofDefaultedSiblingEnum,enum=google.golang.org.proto2_20160519.SiblingEnum,oneof,def=0"`
-}
-
-func (*Message_OneofBool) isMessage_OneofUnion()                          {}
-func (*Message_OneofInt32) isMessage_OneofUnion()                         {}
-func (*Message_OneofSint32) isMessage_OneofUnion()                        {}
-func (*Message_OneofUint32) isMessage_OneofUnion()                        {}
-func (*Message_OneofInt64) isMessage_OneofUnion()                         {}
-func (*Message_OneofSint64) isMessage_OneofUnion()                        {}
-func (*Message_OneofUint64) isMessage_OneofUnion()                        {}
-func (*Message_OneofFixed32) isMessage_OneofUnion()                       {}
-func (*Message_OneofSfixed32) isMessage_OneofUnion()                      {}
-func (*Message_OneofFloat) isMessage_OneofUnion()                         {}
-func (*Message_OneofFixed64) isMessage_OneofUnion()                       {}
-func (*Message_OneofSfixed64) isMessage_OneofUnion()                      {}
-func (*Message_OneofDouble) isMessage_OneofUnion()                        {}
-func (*Message_OneofString) isMessage_OneofUnion()                        {}
-func (*Message_OneofBytes) isMessage_OneofUnion()                         {}
-func (*Message_OneofChildEnum) isMessage_OneofUnion()                     {}
-func (*Message_OneofChildMessage) isMessage_OneofUnion()                  {}
-func (*Message_OneofNamedGroup) isMessage_OneofUnion()                    {}
-func (*Message_OneofSiblingEnum) isMessage_OneofUnion()                   {}
-func (*Message_OneofSiblingMessage) isMessage_OneofUnion()                {}
-func (*Message_Oneofgroup) isMessage_OneofUnion()                         {}
-func (*Message_OneofString1) isMessage_OneofUnion()                       {}
-func (*Message_OneofString2) isMessage_OneofUnion()                       {}
-func (*Message_OneofString3) isMessage_OneofUnion()                       {}
-func (*Message_OneofDefaultedBool) isMessage_OneofDefaultedUnion()        {}
-func (*Message_OneofDefaultedInt32) isMessage_OneofDefaultedUnion()       {}
-func (*Message_OneofDefaultedSint32) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedUint32) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedInt64) isMessage_OneofDefaultedUnion()       {}
-func (*Message_OneofDefaultedSint64) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedUint64) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedFixed32) isMessage_OneofDefaultedUnion()     {}
-func (*Message_OneofDefaultedSfixed32) isMessage_OneofDefaultedUnion()    {}
-func (*Message_OneofDefaultedFloat) isMessage_OneofDefaultedUnion()       {}
-func (*Message_OneofDefaultedFixed64) isMessage_OneofDefaultedUnion()     {}
-func (*Message_OneofDefaultedSfixed64) isMessage_OneofDefaultedUnion()    {}
-func (*Message_OneofDefaultedDouble) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedString) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedBytes) isMessage_OneofDefaultedUnion()       {}
-func (*Message_OneofDefaultedChildEnum) isMessage_OneofDefaultedUnion()   {}
-func (*Message_OneofDefaultedSiblingEnum) isMessage_OneofDefaultedUnion() {}
-
-func (m *Message) GetOneofUnion() isMessage_OneofUnion {
-	if m != nil {
-		return m.OneofUnion
-	}
-	return nil
-}
-func (m *Message) GetOneofDefaultedUnion() isMessage_OneofDefaultedUnion {
-	if m != nil {
-		return m.OneofDefaultedUnion
-	}
-	return nil
-}
-
-func (m *Message) GetNamedgroup() *Message_NamedGroup {
-	if m != nil {
-		return m.Namedgroup
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalBool() bool {
-	if m != nil && m.OptionalBool != nil {
-		return *m.OptionalBool
-	}
-	return false
-}
-
-func (m *Message) GetOptionalInt32() int32 {
-	if m != nil && m.OptionalInt32 != nil {
-		return *m.OptionalInt32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSint32() int32 {
-	if m != nil && m.OptionalSint32 != nil {
-		return *m.OptionalSint32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalUint32() uint32 {
-	if m != nil && m.OptionalUint32 != nil {
-		return *m.OptionalUint32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalInt64() int64 {
-	if m != nil && m.OptionalInt64 != nil {
-		return *m.OptionalInt64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSint64() int64 {
-	if m != nil && m.OptionalSint64 != nil {
-		return *m.OptionalSint64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalUint64() uint64 {
-	if m != nil && m.OptionalUint64 != nil {
-		return *m.OptionalUint64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFixed32() uint32 {
-	if m != nil && m.OptionalFixed32 != nil {
-		return *m.OptionalFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSfixed32() int32 {
-	if m != nil && m.OptionalSfixed32 != nil {
-		return *m.OptionalSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFloat() float32 {
-	if m != nil && m.OptionalFloat != nil {
-		return *m.OptionalFloat
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFixed64() uint64 {
-	if m != nil && m.OptionalFixed64 != nil {
-		return *m.OptionalFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSfixed64() int64 {
-	if m != nil && m.OptionalSfixed64 != nil {
-		return *m.OptionalSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalDouble() float64 {
-	if m != nil && m.OptionalDouble != nil {
-		return *m.OptionalDouble
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalString() string {
-	if m != nil && m.OptionalString != nil {
-		return *m.OptionalString
-	}
-	return ""
-}
-
-func (m *Message) GetOptionalBytes() []byte {
-	if m != nil {
-		return m.OptionalBytes
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalChildEnum() Message_ChildEnum {
-	if m != nil && m.OptionalChildEnum != nil {
-		return *m.OptionalChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetOptionalChildMessage() *Message_ChildMessage {
-	if m != nil {
-		return m.OptionalChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalNamedGroup() *Message_NamedGroup {
-	if m != nil {
-		return m.OptionalNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalSiblingEnum() SiblingEnum {
-	if m != nil && m.OptionalSiblingEnum != nil {
-		return *m.OptionalSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetOptionalSiblingMessage() *SiblingMessage {
-	if m != nil {
-		return m.OptionalSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalgroup() *Message_OptionalGroup {
-	if m != nil {
-		return m.Optionalgroup
-	}
-	return nil
-}
-
-func (m *Message) GetDefaultedBool() bool {
-	if m != nil && m.DefaultedBool != nil {
-		return *m.DefaultedBool
-	}
-	return Default_Message_DefaultedBool
-}
-
-func (m *Message) GetDefaultedInt32() int32 {
-	if m != nil && m.DefaultedInt32 != nil {
-		return *m.DefaultedInt32
-	}
-	return Default_Message_DefaultedInt32
-}
-
-func (m *Message) GetDefaultedSint32() int32 {
-	if m != nil && m.DefaultedSint32 != nil {
-		return *m.DefaultedSint32
-	}
-	return Default_Message_DefaultedSint32
-}
-
-func (m *Message) GetDefaultedUint32() uint32 {
-	if m != nil && m.DefaultedUint32 != nil {
-		return *m.DefaultedUint32
-	}
-	return Default_Message_DefaultedUint32
-}
-
-func (m *Message) GetDefaultedInt64() int64 {
-	if m != nil && m.DefaultedInt64 != nil {
-		return *m.DefaultedInt64
-	}
-	return Default_Message_DefaultedInt64
-}
-
-func (m *Message) GetDefaultedSint64() int64 {
-	if m != nil && m.DefaultedSint64 != nil {
-		return *m.DefaultedSint64
-	}
-	return Default_Message_DefaultedSint64
-}
-
-func (m *Message) GetDefaultedUint64() uint64 {
-	if m != nil && m.DefaultedUint64 != nil {
-		return *m.DefaultedUint64
-	}
-	return Default_Message_DefaultedUint64
-}
-
-func (m *Message) GetDefaultedFixed32() uint32 {
-	if m != nil && m.DefaultedFixed32 != nil {
-		return *m.DefaultedFixed32
-	}
-	return Default_Message_DefaultedFixed32
-}
-
-func (m *Message) GetDefaultedSfixed32() int32 {
-	if m != nil && m.DefaultedSfixed32 != nil {
-		return *m.DefaultedSfixed32
-	}
-	return Default_Message_DefaultedSfixed32
-}
-
-func (m *Message) GetDefaultedFloat() float32 {
-	if m != nil && m.DefaultedFloat != nil {
-		return *m.DefaultedFloat
-	}
-	return Default_Message_DefaultedFloat
-}
-
-func (m *Message) GetDefaultedFixed64() uint64 {
-	if m != nil && m.DefaultedFixed64 != nil {
-		return *m.DefaultedFixed64
-	}
-	return Default_Message_DefaultedFixed64
-}
-
-func (m *Message) GetDefaultedSfixed64() int64 {
-	if m != nil && m.DefaultedSfixed64 != nil {
-		return *m.DefaultedSfixed64
-	}
-	return Default_Message_DefaultedSfixed64
-}
-
-func (m *Message) GetDefaultedDouble() float64 {
-	if m != nil && m.DefaultedDouble != nil {
-		return *m.DefaultedDouble
-	}
-	return Default_Message_DefaultedDouble
-}
-
-func (m *Message) GetDefaultedString() string {
-	if m != nil && m.DefaultedString != nil {
-		return *m.DefaultedString
-	}
-	return Default_Message_DefaultedString
-}
-
-func (m *Message) GetDefaultedBytes() []byte {
-	if m != nil && m.DefaultedBytes != nil {
-		return m.DefaultedBytes
-	}
-	return append([]byte(nil), Default_Message_DefaultedBytes...)
-}
-
-func (m *Message) GetDefaultedChildEnum() Message_ChildEnum {
-	if m != nil && m.DefaultedChildEnum != nil {
-		return *m.DefaultedChildEnum
-	}
-	return Default_Message_DefaultedChildEnum
-}
-
-func (m *Message) GetDefaultedSiblingEnum() SiblingEnum {
-	if m != nil && m.DefaultedSiblingEnum != nil {
-		return *m.DefaultedSiblingEnum
-	}
-	return Default_Message_DefaultedSiblingEnum
-}
-
-func (m *Message) GetRequiredBool() bool {
-	if m != nil && m.RequiredBool != nil {
-		return *m.RequiredBool
-	}
-	return false
-}
-
-func (m *Message) GetRequiredInt32() int32 {
-	if m != nil && m.RequiredInt32 != nil {
-		return *m.RequiredInt32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSint32() int32 {
-	if m != nil && m.RequiredSint32 != nil {
-		return *m.RequiredSint32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredUint32() uint32 {
-	if m != nil && m.RequiredUint32 != nil {
-		return *m.RequiredUint32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredInt64() int64 {
-	if m != nil && m.RequiredInt64 != nil {
-		return *m.RequiredInt64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSint64() int64 {
-	if m != nil && m.RequiredSint64 != nil {
-		return *m.RequiredSint64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredUint64() uint64 {
-	if m != nil && m.RequiredUint64 != nil {
-		return *m.RequiredUint64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredFixed32() uint32 {
-	if m != nil && m.RequiredFixed32 != nil {
-		return *m.RequiredFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSfixed32() int32 {
-	if m != nil && m.RequiredSfixed32 != nil {
-		return *m.RequiredSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredFloat() float32 {
-	if m != nil && m.RequiredFloat != nil {
-		return *m.RequiredFloat
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredFixed64() uint64 {
-	if m != nil && m.RequiredFixed64 != nil {
-		return *m.RequiredFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSfixed64() int64 {
-	if m != nil && m.RequiredSfixed64 != nil {
-		return *m.RequiredSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredDouble() float64 {
-	if m != nil && m.RequiredDouble != nil {
-		return *m.RequiredDouble
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredString() string {
-	if m != nil && m.RequiredString != nil {
-		return *m.RequiredString
-	}
-	return ""
-}
-
-func (m *Message) GetRequiredBytes() []byte {
-	if m != nil {
-		return m.RequiredBytes
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredChildEnum() Message_ChildEnum {
-	if m != nil && m.RequiredChildEnum != nil {
-		return *m.RequiredChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetRequiredChildMessage() *Message_ChildMessage {
-	if m != nil {
-		return m.RequiredChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredNamedGroup() *Message_NamedGroup {
-	if m != nil {
-		return m.RequiredNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredSiblingEnum() SiblingEnum {
-	if m != nil && m.RequiredSiblingEnum != nil {
-		return *m.RequiredSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetRequiredSiblingMessage() *SiblingMessage {
-	if m != nil {
-		return m.RequiredSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredgroup() *Message_RequiredGroup {
-	if m != nil {
-		return m.Requiredgroup
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredDefaultedBool() bool {
-	if m != nil && m.RequiredDefaultedBool != nil {
-		return *m.RequiredDefaultedBool
-	}
-	return Default_Message_RequiredDefaultedBool
-}
-
-func (m *Message) GetRequiredDefaultedInt32() int32 {
-	if m != nil && m.RequiredDefaultedInt32 != nil {
-		return *m.RequiredDefaultedInt32
-	}
-	return Default_Message_RequiredDefaultedInt32
-}
-
-func (m *Message) GetRequiredDefaultedSint32() int32 {
-	if m != nil && m.RequiredDefaultedSint32 != nil {
-		return *m.RequiredDefaultedSint32
-	}
-	return Default_Message_RequiredDefaultedSint32
-}
-
-func (m *Message) GetRequiredDefaultedUint32() uint32 {
-	if m != nil && m.RequiredDefaultedUint32 != nil {
-		return *m.RequiredDefaultedUint32
-	}
-	return Default_Message_RequiredDefaultedUint32
-}
-
-func (m *Message) GetRequiredDefaultedInt64() int64 {
-	if m != nil && m.RequiredDefaultedInt64 != nil {
-		return *m.RequiredDefaultedInt64
-	}
-	return Default_Message_RequiredDefaultedInt64
-}
-
-func (m *Message) GetRequiredDefaultedSint64() int64 {
-	if m != nil && m.RequiredDefaultedSint64 != nil {
-		return *m.RequiredDefaultedSint64
-	}
-	return Default_Message_RequiredDefaultedSint64
-}
-
-func (m *Message) GetRequiredDefaultedUint64() uint64 {
-	if m != nil && m.RequiredDefaultedUint64 != nil {
-		return *m.RequiredDefaultedUint64
-	}
-	return Default_Message_RequiredDefaultedUint64
-}
-
-func (m *Message) GetRequiredDefaultedFixed32() uint32 {
-	if m != nil && m.RequiredDefaultedFixed32 != nil {
-		return *m.RequiredDefaultedFixed32
-	}
-	return Default_Message_RequiredDefaultedFixed32
-}
-
-func (m *Message) GetRequiredDefaultedSfixed32() int32 {
-	if m != nil && m.RequiredDefaultedSfixed32 != nil {
-		return *m.RequiredDefaultedSfixed32
-	}
-	return Default_Message_RequiredDefaultedSfixed32
-}
-
-func (m *Message) GetRequiredDefaultedFloat() float32 {
-	if m != nil && m.RequiredDefaultedFloat != nil {
-		return *m.RequiredDefaultedFloat
-	}
-	return Default_Message_RequiredDefaultedFloat
-}
-
-func (m *Message) GetRequiredDefaultedFixed64() uint64 {
-	if m != nil && m.RequiredDefaultedFixed64 != nil {
-		return *m.RequiredDefaultedFixed64
-	}
-	return Default_Message_RequiredDefaultedFixed64
-}
-
-func (m *Message) GetRequiredDefaultedSfixed64() int64 {
-	if m != nil && m.RequiredDefaultedSfixed64 != nil {
-		return *m.RequiredDefaultedSfixed64
-	}
-	return Default_Message_RequiredDefaultedSfixed64
-}
-
-func (m *Message) GetRequiredDefaultedDouble() float64 {
-	if m != nil && m.RequiredDefaultedDouble != nil {
-		return *m.RequiredDefaultedDouble
-	}
-	return Default_Message_RequiredDefaultedDouble
-}
-
-func (m *Message) GetRequiredDefaultedString() string {
-	if m != nil && m.RequiredDefaultedString != nil {
-		return *m.RequiredDefaultedString
-	}
-	return Default_Message_RequiredDefaultedString
-}
-
-func (m *Message) GetRequiredDefaultedBytes() []byte {
-	if m != nil && m.RequiredDefaultedBytes != nil {
-		return m.RequiredDefaultedBytes
-	}
-	return append([]byte(nil), Default_Message_RequiredDefaultedBytes...)
-}
-
-func (m *Message) GetRequiredDefaultedChildEnum() Message_ChildEnum {
-	if m != nil && m.RequiredDefaultedChildEnum != nil {
-		return *m.RequiredDefaultedChildEnum
-	}
-	return Default_Message_RequiredDefaultedChildEnum
-}
-
-func (m *Message) GetRequiredDefaultedSiblingEnum() SiblingEnum {
-	if m != nil && m.RequiredDefaultedSiblingEnum != nil {
-		return *m.RequiredDefaultedSiblingEnum
-	}
-	return Default_Message_RequiredDefaultedSiblingEnum
-}
-
-func (m *Message) GetRepeatedBool() []bool {
-	if m != nil {
-		return m.RepeatedBool
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedInt32() []int32 {
-	if m != nil {
-		return m.RepeatedInt32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSint32() []int32 {
-	if m != nil {
-		return m.RepeatedSint32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedUint32() []uint32 {
-	if m != nil {
-		return m.RepeatedUint32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedInt64() []int64 {
-	if m != nil {
-		return m.RepeatedInt64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSint64() []int64 {
-	if m != nil {
-		return m.RepeatedSint64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedUint64() []uint64 {
-	if m != nil {
-		return m.RepeatedUint64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFixed32() []uint32 {
-	if m != nil {
-		return m.RepeatedFixed32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSfixed32() []int32 {
-	if m != nil {
-		return m.RepeatedSfixed32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFloat() []float32 {
-	if m != nil {
-		return m.RepeatedFloat
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFixed64() []uint64 {
-	if m != nil {
-		return m.RepeatedFixed64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSfixed64() []int64 {
-	if m != nil {
-		return m.RepeatedSfixed64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedDouble() []float64 {
-	if m != nil {
-		return m.RepeatedDouble
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedString() []string {
-	if m != nil {
-		return m.RepeatedString
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedBytes() [][]byte {
-	if m != nil {
-		return m.RepeatedBytes
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedChildEnum() []Message_ChildEnum {
-	if m != nil {
-		return m.RepeatedChildEnum
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedChildMessage() []*Message_ChildMessage {
-	if m != nil {
-		return m.RepeatedChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedNamedGroup() []*Message_NamedGroup {
-	if m != nil {
-		return m.RepeatedNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSiblingEnum() []SiblingEnum {
-	if m != nil {
-		return m.RepeatedSiblingEnum
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSiblingMessage() []*SiblingMessage {
-	if m != nil {
-		return m.RepeatedSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedgroup() []*Message_RepeatedGroup {
-	if m != nil {
-		return m.Repeatedgroup
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBool() map[bool]bool {
-	if m != nil {
-		return m.MapBoolBool
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolInt32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolUint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolInt64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolUint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolFixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSfixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFloat() map[bool]float32 {
-	if m != nil {
-		return m.MapBoolFloat
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolFixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSfixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolDouble() map[bool]float64 {
-	if m != nil {
-		return m.MapBoolDouble
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolString() map[bool]string {
-	if m != nil {
-		return m.MapBoolString
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBytes() map[bool][]byte {
-	if m != nil {
-		return m.MapBoolBytes
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildEnum() map[bool]Message_ChildEnum {
-	if m != nil {
-		return m.MapBoolChildEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildMessage() map[bool]*Message_ChildMessage {
-	if m != nil {
-		return m.MapBoolChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolNamedGroup() map[bool]*Message_NamedGroup {
-	if m != nil {
-		return m.MapBoolNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingEnum() map[bool]SiblingEnum {
-	if m != nil {
-		return m.MapBoolSiblingEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingMessage() map[bool]*SiblingMessage {
-	if m != nil {
-		return m.MapBoolSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapInt32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapSint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapUint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapInt64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapSint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint64Bool() map[uint64]bool {
-	if m != nil {
-		return m.MapUint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapFixed32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapFixed32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapStringBool() map[string]bool {
-	if m != nil {
-		return m.MapStringBool
-	}
-	return nil
-}
-
-func (m *Message) GetOneofBool() bool {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBool); ok {
-		return x.OneofBool
-	}
-	return false
-}
-
-func (m *Message) GetOneofInt32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt32); ok {
-		return x.OneofInt32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint32); ok {
-		return x.OneofSint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint32); ok {
-		return x.OneofUint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofInt64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt64); ok {
-		return x.OneofInt64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint64); ok {
-		return x.OneofSint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint64); ok {
-		return x.OneofUint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed32); ok {
-		return x.OneofFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed32); ok {
-		return x.OneofSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFloat() float32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFloat); ok {
-		return x.OneofFloat
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed64); ok {
-		return x.OneofFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed64); ok {
-		return x.OneofSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofDouble() float64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofDouble); ok {
-		return x.OneofDouble
-	}
-	return 0
-}
-
-func (m *Message) GetOneofString() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString); ok {
-		return x.OneofString
-	}
-	return ""
-}
-
-func (m *Message) GetOneofBytes() []byte {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBytes); ok {
-		return x.OneofBytes
-	}
-	return nil
-}
-
-func (m *Message) GetOneofChildEnum() Message_ChildEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildEnum); ok {
-		return x.OneofChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetOneofChildMessage() *Message_ChildMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildMessage); ok {
-		return x.OneofChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofNamedGroup() *Message_NamedGroup {
-	if x, ok := m.GetOneofUnion().(*Message_OneofNamedGroup); ok {
-		return x.OneofNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetOneofSiblingEnum() SiblingEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingEnum); ok {
-		return x.OneofSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetOneofSiblingMessage() *SiblingMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingMessage); ok {
-		return x.OneofSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofgroup() *Message_OneofGroup {
-	if x, ok := m.GetOneofUnion().(*Message_Oneofgroup); ok {
-		return x.Oneofgroup
-	}
-	return nil
-}
-
-func (m *Message) GetOneofString1() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString1); ok {
-		return x.OneofString1
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString2() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString2); ok {
-		return x.OneofString2
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString3() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString3); ok {
-		return x.OneofString3
-	}
-	return ""
-}
-
-func (m *Message) GetOneofDefaultedBool() bool {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBool); ok {
-		return x.OneofDefaultedBool
-	}
-	return Default_Message_OneofDefaultedBool
-}
-
-func (m *Message) GetOneofDefaultedInt32() int32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt32); ok {
-		return x.OneofDefaultedInt32
-	}
-	return Default_Message_OneofDefaultedInt32
-}
-
-func (m *Message) GetOneofDefaultedSint32() int32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint32); ok {
-		return x.OneofDefaultedSint32
-	}
-	return Default_Message_OneofDefaultedSint32
-}
-
-func (m *Message) GetOneofDefaultedUint32() uint32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint32); ok {
-		return x.OneofDefaultedUint32
-	}
-	return Default_Message_OneofDefaultedUint32
-}
-
-func (m *Message) GetOneofDefaultedInt64() int64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt64); ok {
-		return x.OneofDefaultedInt64
-	}
-	return Default_Message_OneofDefaultedInt64
-}
-
-func (m *Message) GetOneofDefaultedSint64() int64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint64); ok {
-		return x.OneofDefaultedSint64
-	}
-	return Default_Message_OneofDefaultedSint64
-}
-
-func (m *Message) GetOneofDefaultedUint64() uint64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint64); ok {
-		return x.OneofDefaultedUint64
-	}
-	return Default_Message_OneofDefaultedUint64
-}
-
-func (m *Message) GetOneofDefaultedFixed32() uint32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed32); ok {
-		return x.OneofDefaultedFixed32
-	}
-	return Default_Message_OneofDefaultedFixed32
-}
-
-func (m *Message) GetOneofDefaultedSfixed32() int32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed32); ok {
-		return x.OneofDefaultedSfixed32
-	}
-	return Default_Message_OneofDefaultedSfixed32
-}
-
-func (m *Message) GetOneofDefaultedFloat() float32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFloat); ok {
-		return x.OneofDefaultedFloat
-	}
-	return Default_Message_OneofDefaultedFloat
-}
-
-func (m *Message) GetOneofDefaultedFixed64() uint64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed64); ok {
-		return x.OneofDefaultedFixed64
-	}
-	return Default_Message_OneofDefaultedFixed64
-}
-
-func (m *Message) GetOneofDefaultedSfixed64() int64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed64); ok {
-		return x.OneofDefaultedSfixed64
-	}
-	return Default_Message_OneofDefaultedSfixed64
-}
-
-func (m *Message) GetOneofDefaultedDouble() float64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedDouble); ok {
-		return x.OneofDefaultedDouble
-	}
-	return Default_Message_OneofDefaultedDouble
-}
-
-func (m *Message) GetOneofDefaultedString() string {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedString); ok {
-		return x.OneofDefaultedString
-	}
-	return Default_Message_OneofDefaultedString
-}
-
-func (m *Message) GetOneofDefaultedBytes() []byte {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBytes); ok {
-		return x.OneofDefaultedBytes
-	}
-	return append([]byte(nil), Default_Message_OneofDefaultedBytes...)
-}
-
-func (m *Message) GetOneofDefaultedChildEnum() Message_ChildEnum {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedChildEnum); ok {
-		return x.OneofDefaultedChildEnum
-	}
-	return Default_Message_OneofDefaultedChildEnum
-}
-
-func (m *Message) GetOneofDefaultedSiblingEnum() SiblingEnum {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSiblingEnum); ok {
-		return x.OneofDefaultedSiblingEnum
-	}
-	return Default_Message_OneofDefaultedSiblingEnum
-}
-
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*Message) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _Message_OneofMarshaler, _Message_OneofUnmarshaler, _Message_OneofSizer, []interface{}{
-		(*Message_OneofBool)(nil),
-		(*Message_OneofInt32)(nil),
-		(*Message_OneofSint32)(nil),
-		(*Message_OneofUint32)(nil),
-		(*Message_OneofInt64)(nil),
-		(*Message_OneofSint64)(nil),
-		(*Message_OneofUint64)(nil),
-		(*Message_OneofFixed32)(nil),
-		(*Message_OneofSfixed32)(nil),
-		(*Message_OneofFloat)(nil),
-		(*Message_OneofFixed64)(nil),
-		(*Message_OneofSfixed64)(nil),
-		(*Message_OneofDouble)(nil),
-		(*Message_OneofString)(nil),
-		(*Message_OneofBytes)(nil),
-		(*Message_OneofChildEnum)(nil),
-		(*Message_OneofChildMessage)(nil),
-		(*Message_OneofNamedGroup)(nil),
-		(*Message_OneofSiblingEnum)(nil),
-		(*Message_OneofSiblingMessage)(nil),
-		(*Message_Oneofgroup)(nil),
-		(*Message_OneofString1)(nil),
-		(*Message_OneofString2)(nil),
-		(*Message_OneofString3)(nil),
-		(*Message_OneofDefaultedBool)(nil),
-		(*Message_OneofDefaultedInt32)(nil),
-		(*Message_OneofDefaultedSint32)(nil),
-		(*Message_OneofDefaultedUint32)(nil),
-		(*Message_OneofDefaultedInt64)(nil),
-		(*Message_OneofDefaultedSint64)(nil),
-		(*Message_OneofDefaultedUint64)(nil),
-		(*Message_OneofDefaultedFixed32)(nil),
-		(*Message_OneofDefaultedSfixed32)(nil),
-		(*Message_OneofDefaultedFloat)(nil),
-		(*Message_OneofDefaultedFixed64)(nil),
-		(*Message_OneofDefaultedSfixed64)(nil),
-		(*Message_OneofDefaultedDouble)(nil),
-		(*Message_OneofDefaultedString)(nil),
-		(*Message_OneofDefaultedBytes)(nil),
-		(*Message_OneofDefaultedChildEnum)(nil),
-		(*Message_OneofDefaultedSiblingEnum)(nil),
-	}
-}
-
-func _Message_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*Message)
-	// oneof_union
-	switch x := m.OneofUnion.(type) {
-	case *Message_OneofBool:
-		t := uint64(0)
-		if x.OneofBool {
-			t = 1
-		}
-		b.EncodeVarint(700<<3 | proto.WireVarint)
-		b.EncodeVarint(t)
-	case *Message_OneofInt32:
-		b.EncodeVarint(701<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofInt32))
-	case *Message_OneofSint32:
-		b.EncodeVarint(702<<3 | proto.WireVarint)
-		b.EncodeZigzag32(uint64(x.OneofSint32))
-	case *Message_OneofUint32:
-		b.EncodeVarint(703<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofUint32))
-	case *Message_OneofInt64:
-		b.EncodeVarint(704<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofInt64))
-	case *Message_OneofSint64:
-		b.EncodeVarint(705<<3 | proto.WireVarint)
-		b.EncodeZigzag64(uint64(x.OneofSint64))
-	case *Message_OneofUint64:
-		b.EncodeVarint(706<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofUint64))
-	case *Message_OneofFixed32:
-		b.EncodeVarint(707<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofFixed32))
-	case *Message_OneofSfixed32:
-		b.EncodeVarint(708<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofSfixed32))
-	case *Message_OneofFloat:
-		b.EncodeVarint(709<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(math.Float32bits(x.OneofFloat)))
-	case *Message_OneofFixed64:
-		b.EncodeVarint(710<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofFixed64))
-	case *Message_OneofSfixed64:
-		b.EncodeVarint(711<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofSfixed64))
-	case *Message_OneofDouble:
-		b.EncodeVarint(712<<3 | proto.WireFixed64)
-		b.EncodeFixed64(math.Float64bits(x.OneofDouble))
-	case *Message_OneofString:
-		b.EncodeVarint(713<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString)
-	case *Message_OneofBytes:
-		b.EncodeVarint(714<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.OneofBytes)
-	case *Message_OneofChildEnum:
-		b.EncodeVarint(715<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofChildEnum))
-	case *Message_OneofChildMessage:
-		b.EncodeVarint(716<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofChildMessage); err != nil {
-			return err
-		}
-	case *Message_OneofNamedGroup:
-		b.EncodeVarint(717<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofNamedGroup); err != nil {
-			return err
-		}
-	case *Message_OneofSiblingEnum:
-		b.EncodeVarint(718<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofSiblingEnum))
-	case *Message_OneofSiblingMessage:
-		b.EncodeVarint(719<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofSiblingMessage); err != nil {
-			return err
-		}
-	case *Message_Oneofgroup:
-		b.EncodeVarint(720<<3 | proto.WireStartGroup)
-		if err := b.Marshal(x.Oneofgroup); err != nil {
-			return err
-		}
-		b.EncodeVarint(720<<3 | proto.WireEndGroup)
-	case *Message_OneofString1:
-		b.EncodeVarint(721<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString1)
-	case *Message_OneofString2:
-		b.EncodeVarint(722<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString2)
-	case *Message_OneofString3:
-		b.EncodeVarint(723<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString3)
-	case nil:
-	default:
-		return fmt.Errorf("Message.OneofUnion has unexpected type %T", x)
-	}
-	// oneof_defaulted_union
-	switch x := m.OneofDefaultedUnion.(type) {
-	case *Message_OneofDefaultedBool:
-		t := uint64(0)
-		if x.OneofDefaultedBool {
-			t = 1
-		}
-		b.EncodeVarint(800<<3 | proto.WireVarint)
-		b.EncodeVarint(t)
-	case *Message_OneofDefaultedInt32:
-		b.EncodeVarint(801<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedInt32))
-	case *Message_OneofDefaultedSint32:
-		b.EncodeVarint(802<<3 | proto.WireVarint)
-		b.EncodeZigzag32(uint64(x.OneofDefaultedSint32))
-	case *Message_OneofDefaultedUint32:
-		b.EncodeVarint(803<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedUint32))
-	case *Message_OneofDefaultedInt64:
-		b.EncodeVarint(804<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedInt64))
-	case *Message_OneofDefaultedSint64:
-		b.EncodeVarint(805<<3 | proto.WireVarint)
-		b.EncodeZigzag64(uint64(x.OneofDefaultedSint64))
-	case *Message_OneofDefaultedUint64:
-		b.EncodeVarint(806<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedUint64))
-	case *Message_OneofDefaultedFixed32:
-		b.EncodeVarint(807<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofDefaultedFixed32))
-	case *Message_OneofDefaultedSfixed32:
-		b.EncodeVarint(808<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofDefaultedSfixed32))
-	case *Message_OneofDefaultedFloat:
-		b.EncodeVarint(809<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(math.Float32bits(x.OneofDefaultedFloat)))
-	case *Message_OneofDefaultedFixed64:
-		b.EncodeVarint(810<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofDefaultedFixed64))
-	case *Message_OneofDefaultedSfixed64:
-		b.EncodeVarint(811<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofDefaultedSfixed64))
-	case *Message_OneofDefaultedDouble:
-		b.EncodeVarint(812<<3 | proto.WireFixed64)
-		b.EncodeFixed64(math.Float64bits(x.OneofDefaultedDouble))
-	case *Message_OneofDefaultedString:
-		b.EncodeVarint(813<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofDefaultedString)
-	case *Message_OneofDefaultedBytes:
-		b.EncodeVarint(814<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.OneofDefaultedBytes)
-	case *Message_OneofDefaultedChildEnum:
-		b.EncodeVarint(815<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedChildEnum))
-	case *Message_OneofDefaultedSiblingEnum:
-		b.EncodeVarint(816<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedSiblingEnum))
-	case nil:
-	default:
-		return fmt.Errorf("Message.OneofDefaultedUnion has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _Message_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*Message)
-	switch tag {
-	case 700: // oneof_union.oneof_bool
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofBool{x != 0}
-		return true, err
-	case 701: // oneof_union.oneof_int32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofInt32{int32(x)}
-		return true, err
-	case 702: // oneof_union.oneof_sint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag32()
-		m.OneofUnion = &Message_OneofSint32{int32(x)}
-		return true, err
-	case 703: // oneof_union.oneof_uint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofUint32{uint32(x)}
-		return true, err
-	case 704: // oneof_union.oneof_int64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofInt64{int64(x)}
-		return true, err
-	case 705: // oneof_union.oneof_sint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag64()
-		m.OneofUnion = &Message_OneofSint64{int64(x)}
-		return true, err
-	case 706: // oneof_union.oneof_uint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofUint64{x}
-		return true, err
-	case 707: // oneof_union.oneof_fixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofFixed32{uint32(x)}
-		return true, err
-	case 708: // oneof_union.oneof_sfixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofSfixed32{int32(x)}
-		return true, err
-	case 709: // oneof_union.oneof_float
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofFloat{math.Float32frombits(uint32(x))}
-		return true, err
-	case 710: // oneof_union.oneof_fixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofFixed64{x}
-		return true, err
-	case 711: // oneof_union.oneof_sfixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofSfixed64{int64(x)}
-		return true, err
-	case 712: // oneof_union.oneof_double
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofDouble{math.Float64frombits(x)}
-		return true, err
-	case 713: // oneof_union.oneof_string
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString{x}
-		return true, err
-	case 714: // oneof_union.oneof_bytes
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.OneofUnion = &Message_OneofBytes{x}
-		return true, err
-	case 715: // oneof_union.oneof_child_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofChildEnum{Message_ChildEnum(x)}
-		return true, err
-	case 716: // oneof_union.oneof_child_message
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Message_ChildMessage)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofChildMessage{msg}
-		return true, err
-	case 717: // oneof_union.oneof_named_group
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Message_NamedGroup)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofNamedGroup{msg}
-		return true, err
-	case 718: // oneof_union.oneof_sibling_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofSiblingEnum{SiblingEnum(x)}
-		return true, err
-	case 719: // oneof_union.oneof_sibling_message
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(SiblingMessage)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofSiblingMessage{msg}
-		return true, err
-	case 720: // oneof_union.oneofgroup
-		if wire != proto.WireStartGroup {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Message_OneofGroup)
-		err := b.DecodeGroup(msg)
-		m.OneofUnion = &Message_Oneofgroup{msg}
-		return true, err
-	case 721: // oneof_union.oneof_string1
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString1{x}
-		return true, err
-	case 722: // oneof_union.oneof_string2
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString2{x}
-		return true, err
-	case 723: // oneof_union.oneof_string3
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString3{x}
-		return true, err
-	case 800: // oneof_defaulted_union.oneof_defaulted_bool
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedBool{x != 0}
-		return true, err
-	case 801: // oneof_defaulted_union.oneof_defaulted_int32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedInt32{int32(x)}
-		return true, err
-	case 802: // oneof_defaulted_union.oneof_defaulted_sint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag32()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSint32{int32(x)}
-		return true, err
-	case 803: // oneof_defaulted_union.oneof_defaulted_uint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedUint32{uint32(x)}
-		return true, err
-	case 804: // oneof_defaulted_union.oneof_defaulted_int64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedInt64{int64(x)}
-		return true, err
-	case 805: // oneof_defaulted_union.oneof_defaulted_sint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag64()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSint64{int64(x)}
-		return true, err
-	case 806: // oneof_defaulted_union.oneof_defaulted_uint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedUint64{x}
-		return true, err
-	case 807: // oneof_defaulted_union.oneof_defaulted_fixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedFixed32{uint32(x)}
-		return true, err
-	case 808: // oneof_defaulted_union.oneof_defaulted_sfixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSfixed32{int32(x)}
-		return true, err
-	case 809: // oneof_defaulted_union.oneof_defaulted_float
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedFloat{math.Float32frombits(uint32(x))}
-		return true, err
-	case 810: // oneof_defaulted_union.oneof_defaulted_fixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedFixed64{x}
-		return true, err
-	case 811: // oneof_defaulted_union.oneof_defaulted_sfixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSfixed64{int64(x)}
-		return true, err
-	case 812: // oneof_defaulted_union.oneof_defaulted_double
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedDouble{math.Float64frombits(x)}
-		return true, err
-	case 813: // oneof_defaulted_union.oneof_defaulted_string
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedString{x}
-		return true, err
-	case 814: // oneof_defaulted_union.oneof_defaulted_bytes
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.OneofDefaultedUnion = &Message_OneofDefaultedBytes{x}
-		return true, err
-	case 815: // oneof_defaulted_union.oneof_defaulted_child_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedChildEnum{Message_ChildEnum(x)}
-		return true, err
-	case 816: // oneof_defaulted_union.oneof_defaulted_sibling_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSiblingEnum{SiblingEnum(x)}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _Message_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*Message)
-	// oneof_union
-	switch x := m.OneofUnion.(type) {
-	case *Message_OneofBool:
-		n += proto.SizeVarint(700<<3 | proto.WireVarint)
-		n += 1
-	case *Message_OneofInt32:
-		n += proto.SizeVarint(701<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofInt32))
-	case *Message_OneofSint32:
-		n += proto.SizeVarint(702<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64((uint32(x.OneofSint32) << 1) ^ uint32((int32(x.OneofSint32) >> 31))))
-	case *Message_OneofUint32:
-		n += proto.SizeVarint(703<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofUint32))
-	case *Message_OneofInt64:
-		n += proto.SizeVarint(704<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofInt64))
-	case *Message_OneofSint64:
-		n += proto.SizeVarint(705<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(uint64(x.OneofSint64<<1) ^ uint64((int64(x.OneofSint64) >> 63))))
-	case *Message_OneofUint64:
-		n += proto.SizeVarint(706<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofUint64))
-	case *Message_OneofFixed32:
-		n += proto.SizeVarint(707<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofSfixed32:
-		n += proto.SizeVarint(708<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofFloat:
-		n += proto.SizeVarint(709<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofFixed64:
-		n += proto.SizeVarint(710<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofSfixed64:
-		n += proto.SizeVarint(711<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofDouble:
-		n += proto.SizeVarint(712<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofString:
-		n += proto.SizeVarint(713<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString)))
-		n += len(x.OneofString)
-	case *Message_OneofBytes:
-		n += proto.SizeVarint(714<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofBytes)))
-		n += len(x.OneofBytes)
-	case *Message_OneofChildEnum:
-		n += proto.SizeVarint(715<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofChildEnum))
-	case *Message_OneofChildMessage:
-		s := proto.Size(x.OneofChildMessage)
-		n += proto.SizeVarint(716<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_OneofNamedGroup:
-		s := proto.Size(x.OneofNamedGroup)
-		n += proto.SizeVarint(717<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_OneofSiblingEnum:
-		n += proto.SizeVarint(718<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofSiblingEnum))
-	case *Message_OneofSiblingMessage:
-		s := proto.Size(x.OneofSiblingMessage)
-		n += proto.SizeVarint(719<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_Oneofgroup:
-		n += proto.SizeVarint(720<<3 | proto.WireStartGroup)
-		n += proto.Size(x.Oneofgroup)
-		n += proto.SizeVarint(720<<3 | proto.WireEndGroup)
-	case *Message_OneofString1:
-		n += proto.SizeVarint(721<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString1)))
-		n += len(x.OneofString1)
-	case *Message_OneofString2:
-		n += proto.SizeVarint(722<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString2)))
-		n += len(x.OneofString2)
-	case *Message_OneofString3:
-		n += proto.SizeVarint(723<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString3)))
-		n += len(x.OneofString3)
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	// oneof_defaulted_union
-	switch x := m.OneofDefaultedUnion.(type) {
-	case *Message_OneofDefaultedBool:
-		n += proto.SizeVarint(800<<3 | proto.WireVarint)
-		n += 1
-	case *Message_OneofDefaultedInt32:
-		n += proto.SizeVarint(801<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofDefaultedInt32))
-	case *Message_OneofDefaultedSint32:
-		n += proto.SizeVarint(802<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64((uint32(x.OneofDefaultedSint32) << 1) ^ uint32((int32(x.OneofDefaultedSint32) >> 31))))
-	case *Message_OneofDefaultedUint32:
-		n += proto.SizeVarint(803<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofDefaultedUint32))
-	case *Message_OneofDefaultedInt64:
-		n += proto.SizeVarint(804<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofDefaultedInt64))
-	case *Message_OneofDefaultedSint64:
-		n += proto.SizeVarint(805<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(uint64(x.OneofDefaultedSint64<<1) ^ uint64((int64(x.OneofDefaultedSint64) >> 63))))
-	case *Message_OneofDefaultedUint64:
-		n += proto.SizeVarint(806<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofDefaultedUint64))
-	case *Message_OneofDefaultedFixed32:
-		n += proto.SizeVarint(807<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofDefaultedSfixed32:
-		n += proto.SizeVarint(808<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofDefaultedFloat:
-		n += proto.SizeVarint(809<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofDefaultedFixed64:
-		n += proto.SizeVarint(810<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofDefaultedSfixed64:
-		n += proto.SizeVarint(811<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofDefaultedDouble:
-		n += proto.SizeVarint(812<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofDefaultedString:
-		n += proto.SizeVarint(813<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofDefaultedString)))
-		n += len(x.OneofDefaultedString)
-	case *Message_OneofDefaultedBytes:
-		n += proto.SizeVarint(814<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofDefaultedBytes)))
-		n += len(x.OneofDefaultedBytes)
-	case *Message_OneofDefaultedChildEnum:
-		n += proto.SizeVarint(815<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofDefaultedChildEnum))
-	case *Message_OneofDefaultedSiblingEnum:
-		n += proto.SizeVarint(816<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofDefaultedSiblingEnum))
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
-var E_Message_ExtensionOptionalBool = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*bool)(nil),
-	Field:         10000,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_bool",
-	Tag:           "varint,10000,opt,name=extension_optional_bool,json=extensionOptionalBool",
-}
-
-var E_Message_ExtensionOptionalInt32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         10001,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_int32",
-	Tag:           "varint,10001,opt,name=extension_optional_int32,json=extensionOptionalInt32",
-}
-
-var E_Message_ExtensionOptionalSint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         10002,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_sint32",
-	Tag:           "zigzag32,10002,opt,name=extension_optional_sint32,json=extensionOptionalSint32",
-}
-
-var E_Message_ExtensionOptionalUint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         10003,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_uint32",
-	Tag:           "varint,10003,opt,name=extension_optional_uint32,json=extensionOptionalUint32",
-}
-
-var E_Message_ExtensionOptionalInt64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         10004,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_int64",
-	Tag:           "varint,10004,opt,name=extension_optional_int64,json=extensionOptionalInt64",
-}
-
-var E_Message_ExtensionOptionalSint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         10005,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_sint64",
-	Tag:           "zigzag64,10005,opt,name=extension_optional_sint64,json=extensionOptionalSint64",
-}
-
-var E_Message_ExtensionOptionalUint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         10006,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_uint64",
-	Tag:           "varint,10006,opt,name=extension_optional_uint64,json=extensionOptionalUint64",
-}
-
-var E_Message_ExtensionOptionalFixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         10007,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_fixed32",
-	Tag:           "fixed32,10007,opt,name=extension_optional_fixed32,json=extensionOptionalFixed32",
-}
-
-var E_Message_ExtensionOptionalSfixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         10008,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_sfixed32",
-	Tag:           "fixed32,10008,opt,name=extension_optional_sfixed32,json=extensionOptionalSfixed32",
-}
-
-var E_Message_ExtensionOptionalFloat = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float32)(nil),
-	Field:         10009,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_float",
-	Tag:           "fixed32,10009,opt,name=extension_optional_float,json=extensionOptionalFloat",
-}
-
-var E_Message_ExtensionOptionalFixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         10010,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_fixed64",
-	Tag:           "fixed64,10010,opt,name=extension_optional_fixed64,json=extensionOptionalFixed64",
-}
-
-var E_Message_ExtensionOptionalSfixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         10011,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_sfixed64",
-	Tag:           "fixed64,10011,opt,name=extension_optional_sfixed64,json=extensionOptionalSfixed64",
-}
-
-var E_Message_ExtensionOptionalDouble = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float64)(nil),
-	Field:         10012,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_double",
-	Tag:           "fixed64,10012,opt,name=extension_optional_double,json=extensionOptionalDouble",
-}
-
-var E_Message_ExtensionOptionalString = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*string)(nil),
-	Field:         10013,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_string",
-	Tag:           "bytes,10013,opt,name=extension_optional_string,json=extensionOptionalString",
-}
-
-var E_Message_ExtensionOptionalBytes = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]byte)(nil),
-	Field:         10014,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_bytes",
-	Tag:           "bytes,10014,opt,name=extension_optional_bytes,json=extensionOptionalBytes",
-}
-
-var E_Message_ExtensionOptionalChildEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ChildEnum)(nil),
-	Field:         10015,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_child_enum",
-	Tag:           "varint,10015,opt,name=extension_optional_child_enum,json=extensionOptionalChildEnum,enum=google.golang.org.proto2_20160519.Message_ChildEnum",
-}
-
-var E_Message_ExtensionOptionalChildMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ChildMessage)(nil),
-	Field:         10016,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_child_message",
-	Tag:           "bytes,10016,opt,name=extension_optional_child_message,json=extensionOptionalChildMessage",
-}
-
-var E_Message_ExtensionOptionalNamedGroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_NamedGroup)(nil),
-	Field:         10017,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_named_group",
-	Tag:           "bytes,10017,opt,name=extension_optional_named_group,json=extensionOptionalNamedGroup",
-}
-
-var E_Message_ExtensionOptionalSiblingEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*SiblingEnum)(nil),
-	Field:         10018,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_sibling_enum",
-	Tag:           "varint,10018,opt,name=extension_optional_sibling_enum,json=extensionOptionalSiblingEnum,enum=google.golang.org.proto2_20160519.SiblingEnum",
-}
-
-var E_Message_ExtensionOptionalSiblingMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*SiblingMessage)(nil),
-	Field:         10019,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_optional_sibling_message",
-	Tag:           "bytes,10019,opt,name=extension_optional_sibling_message,json=extensionOptionalSiblingMessage",
-}
-
-var E_Message_Extensionoptionalgroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ExtensionOptionalGroup)(nil),
-	Field:         10020,
-	Name:          "google.golang.org.proto2_20160519.Message.extensionoptionalgroup",
-	Tag:           "group,10020,opt,name=ExtensionOptionalGroup,json=extensionoptionalgroup",
-}
-
-var E_Message_ExtensionDefaultedBool = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*bool)(nil),
-	Field:         20000,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_bool",
-	Tag:           "varint,20000,opt,name=extension_defaulted_bool,json=extensionDefaultedBool,def=1",
-}
-
-var E_Message_ExtensionDefaultedInt32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         20001,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_int32",
-	Tag:           "varint,20001,opt,name=extension_defaulted_int32,json=extensionDefaultedInt32,def=-12345",
-}
-
-var E_Message_ExtensionDefaultedSint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         20002,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_sint32",
-	Tag:           "zigzag32,20002,opt,name=extension_defaulted_sint32,json=extensionDefaultedSint32,def=-3200",
-}
-
-var E_Message_ExtensionDefaultedUint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         20003,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_uint32",
-	Tag:           "varint,20003,opt,name=extension_defaulted_uint32,json=extensionDefaultedUint32,def=3200",
-}
-
-var E_Message_ExtensionDefaultedInt64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         20004,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_int64",
-	Tag:           "varint,20004,opt,name=extension_defaulted_int64,json=extensionDefaultedInt64,def=-123456789",
-}
-
-var E_Message_ExtensionDefaultedSint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         20005,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_sint64",
-	Tag:           "zigzag64,20005,opt,name=extension_defaulted_sint64,json=extensionDefaultedSint64,def=-6400",
-}
-
-var E_Message_ExtensionDefaultedUint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         20006,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_uint64",
-	Tag:           "varint,20006,opt,name=extension_defaulted_uint64,json=extensionDefaultedUint64,def=6400",
-}
-
-var E_Message_ExtensionDefaultedFixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         20007,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_fixed32",
-	Tag:           "fixed32,20007,opt,name=extension_defaulted_fixed32,json=extensionDefaultedFixed32,def=320000",
-}
-
-var E_Message_ExtensionDefaultedSfixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         20008,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_sfixed32",
-	Tag:           "fixed32,20008,opt,name=extension_defaulted_sfixed32,json=extensionDefaultedSfixed32,def=-320000",
-}
-
-var E_Message_ExtensionDefaultedFloat = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float32)(nil),
-	Field:         20009,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_float",
-	Tag:           "fixed32,20009,opt,name=extension_defaulted_float,json=extensionDefaultedFloat,def=3.14159",
-}
-
-var E_Message_ExtensionDefaultedFixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         20010,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_fixed64",
-	Tag:           "fixed64,20010,opt,name=extension_defaulted_fixed64,json=extensionDefaultedFixed64,def=640000",
-}
-
-var E_Message_ExtensionDefaultedSfixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         20011,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_sfixed64",
-	Tag:           "fixed64,20011,opt,name=extension_defaulted_sfixed64,json=extensionDefaultedSfixed64,def=-640000",
-}
-
-var E_Message_ExtensionDefaultedDouble = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float64)(nil),
-	Field:         20012,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_double",
-	Tag:           "fixed64,20012,opt,name=extension_defaulted_double,json=extensionDefaultedDouble,def=3.14159265359",
-}
-
-var E_Message_ExtensionDefaultedString = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*string)(nil),
-	Field:         20013,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_string",
-	Tag:           "bytes,20013,opt,name=extension_defaulted_string,json=extensionDefaultedString,def=hello, \"world!\"\n",
-}
-
-var E_Message_ExtensionDefaultedBytes = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]byte)(nil),
-	Field:         20014,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_bytes",
-	Tag:           "bytes,20014,opt,name=extension_defaulted_bytes,json=extensionDefaultedBytes,def=dead\\336\\255\\276\\357beef",
-}
-
-var E_Message_ExtensionDefaultedChildEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ChildEnum)(nil),
-	Field:         20015,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_child_enum",
-	Tag:           "varint,20015,opt,name=extension_defaulted_child_enum,json=extensionDefaultedChildEnum,enum=google.golang.org.proto2_20160519.Message_ChildEnum,def=0",
-}
-
-var E_Message_ExtensionDefaultedSiblingEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*SiblingEnum)(nil),
-	Field:         20016,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_defaulted_sibling_enum",
-	Tag:           "varint,20016,opt,name=extension_defaulted_sibling_enum,json=extensionDefaultedSiblingEnum,enum=google.golang.org.proto2_20160519.SiblingEnum,def=0",
-}
-
-var E_Message_ExtensionRepeatedBool = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]bool)(nil),
-	Field:         30000,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_bool",
-	Tag:           "varint,30000,rep,name=extension_repeated_bool,json=extensionRepeatedBool",
-}
-
-var E_Message_ExtensionRepeatedInt32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int32)(nil),
-	Field:         30001,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_int32",
-	Tag:           "varint,30001,rep,name=extension_repeated_int32,json=extensionRepeatedInt32",
-}
-
-var E_Message_ExtensionRepeatedSint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int32)(nil),
-	Field:         30002,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_sint32",
-	Tag:           "zigzag32,30002,rep,name=extension_repeated_sint32,json=extensionRepeatedSint32",
-}
-
-var E_Message_ExtensionRepeatedUint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint32)(nil),
-	Field:         30003,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_uint32",
-	Tag:           "varint,30003,rep,name=extension_repeated_uint32,json=extensionRepeatedUint32",
-}
-
-var E_Message_ExtensionRepeatedInt64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int64)(nil),
-	Field:         30004,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_int64",
-	Tag:           "varint,30004,rep,name=extension_repeated_int64,json=extensionRepeatedInt64",
-}
-
-var E_Message_ExtensionRepeatedSint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int64)(nil),
-	Field:         30005,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_sint64",
-	Tag:           "zigzag64,30005,rep,name=extension_repeated_sint64,json=extensionRepeatedSint64",
-}
-
-var E_Message_ExtensionRepeatedUint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint64)(nil),
-	Field:         30006,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_uint64",
-	Tag:           "varint,30006,rep,name=extension_repeated_uint64,json=extensionRepeatedUint64",
-}
-
-var E_Message_ExtensionRepeatedFixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint32)(nil),
-	Field:         30007,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_fixed32",
-	Tag:           "fixed32,30007,rep,name=extension_repeated_fixed32,json=extensionRepeatedFixed32",
-}
-
-var E_Message_ExtensionRepeatedSfixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int32)(nil),
-	Field:         30008,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_sfixed32",
-	Tag:           "fixed32,30008,rep,name=extension_repeated_sfixed32,json=extensionRepeatedSfixed32",
-}
-
-var E_Message_ExtensionRepeatedFloat = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]float32)(nil),
-	Field:         30009,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_float",
-	Tag:           "fixed32,30009,rep,name=extension_repeated_float,json=extensionRepeatedFloat",
-}
-
-var E_Message_ExtensionRepeatedFixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint64)(nil),
-	Field:         30010,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_fixed64",
-	Tag:           "fixed64,30010,rep,name=extension_repeated_fixed64,json=extensionRepeatedFixed64",
-}
-
-var E_Message_ExtensionRepeatedSfixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int64)(nil),
-	Field:         30011,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_sfixed64",
-	Tag:           "fixed64,30011,rep,name=extension_repeated_sfixed64,json=extensionRepeatedSfixed64",
-}
-
-var E_Message_ExtensionRepeatedDouble = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]float64)(nil),
-	Field:         30012,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_double",
-	Tag:           "fixed64,30012,rep,name=extension_repeated_double,json=extensionRepeatedDouble",
-}
-
-var E_Message_ExtensionRepeatedString = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]string)(nil),
-	Field:         30013,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_string",
-	Tag:           "bytes,30013,rep,name=extension_repeated_string,json=extensionRepeatedString",
-}
-
-var E_Message_ExtensionRepeatedBytes = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([][]byte)(nil),
-	Field:         30014,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_bytes",
-	Tag:           "bytes,30014,rep,name=extension_repeated_bytes,json=extensionRepeatedBytes",
-}
-
-var E_Message_ExtensionRepeatedChildEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]Message_ChildEnum)(nil),
-	Field:         30015,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_child_enum",
-	Tag:           "varint,30015,rep,name=extension_repeated_child_enum,json=extensionRepeatedChildEnum,enum=google.golang.org.proto2_20160519.Message_ChildEnum",
-}
-
-var E_Message_ExtensionRepeatedChildMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*Message_ChildMessage)(nil),
-	Field:         30016,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_child_message",
-	Tag:           "bytes,30016,rep,name=extension_repeated_child_message,json=extensionRepeatedChildMessage",
-}
-
-var E_Message_ExtensionRepeatedNamedGroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*Message_NamedGroup)(nil),
-	Field:         30017,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_named_group",
-	Tag:           "bytes,30017,rep,name=extension_repeated_named_group,json=extensionRepeatedNamedGroup",
-}
-
-var E_Message_ExtensionRepeatedSiblingEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]SiblingEnum)(nil),
-	Field:         30018,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_sibling_enum",
-	Tag:           "varint,30018,rep,name=extension_repeated_sibling_enum,json=extensionRepeatedSiblingEnum,enum=google.golang.org.proto2_20160519.SiblingEnum",
-}
-
-var E_Message_ExtensionRepeatedSiblingMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*SiblingMessage)(nil),
-	Field:         30019,
-	Name:          "google.golang.org.proto2_20160519.Message.extension_repeated_sibling_message",
-	Tag:           "bytes,30019,rep,name=extension_repeated_sibling_message,json=extensionRepeatedSiblingMessage",
-}
-
-var E_Message_Extensionrepeatedgroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*Message_ExtensionRepeatedGroup)(nil),
-	Field:         30020,
-	Name:          "google.golang.org.proto2_20160519.Message.extensionrepeatedgroup",
-	Tag:           "group,30020,rep,name=ExtensionRepeatedGroup,json=extensionrepeatedgroup",
-}
-
-type Message_ChildMessage struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	F4               *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_ChildMessage) Reset()                    { *m = Message_ChildMessage{} }
-func (m *Message_ChildMessage) String() string            { return proto.CompactTextString(m) }
-func (*Message_ChildMessage) ProtoMessage()               {}
-func (*Message_ChildMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
-
-func (m *Message_ChildMessage) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_ChildMessage) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_ChildMessage) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func (m *Message_ChildMessage) GetF4() *Message {
-	if m != nil {
-		return m.F4
-	}
-	return nil
-}
-
-type Message_NamedGroup struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	F4               *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_NamedGroup) Reset()                    { *m = Message_NamedGroup{} }
-func (m *Message_NamedGroup) String() string            { return proto.CompactTextString(m) }
-func (*Message_NamedGroup) ProtoMessage()               {}
-func (*Message_NamedGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 1} }
-
-func (m *Message_NamedGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_NamedGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_NamedGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func (m *Message_NamedGroup) GetF4() *Message {
-	if m != nil {
-		return m.F4
-	}
-	return nil
-}
-
-type Message_OptionalGroup struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_OptionalGroup) Reset()                    { *m = Message_OptionalGroup{} }
-func (m *Message_OptionalGroup) String() string            { return proto.CompactTextString(m) }
-func (*Message_OptionalGroup) ProtoMessage()               {}
-func (*Message_OptionalGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 2} }
-
-func (m *Message_OptionalGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_OptionalGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_OptionalGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_RequiredGroup struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_RequiredGroup) Reset()                    { *m = Message_RequiredGroup{} }
-func (m *Message_RequiredGroup) String() string            { return proto.CompactTextString(m) }
-func (*Message_RequiredGroup) ProtoMessage()               {}
-func (*Message_RequiredGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 3} }
-
-func (m *Message_RequiredGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_RequiredGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_RequiredGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_RepeatedGroup struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_RepeatedGroup) Reset()                    { *m = Message_RepeatedGroup{} }
-func (m *Message_RepeatedGroup) String() string            { return proto.CompactTextString(m) }
-func (*Message_RepeatedGroup) ProtoMessage()               {}
-func (*Message_RepeatedGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 4} }
-
-func (m *Message_RepeatedGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_RepeatedGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_RepeatedGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_OneofGroup struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_OneofGroup) Reset()                    { *m = Message_OneofGroup{} }
-func (m *Message_OneofGroup) String() string            { return proto.CompactTextString(m) }
-func (*Message_OneofGroup) ProtoMessage()               {}
-func (*Message_OneofGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 33} }
-
-func (m *Message_OneofGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_OneofGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_OneofGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_ExtensionOptionalGroup struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_ExtensionOptionalGroup) Reset()         { *m = Message_ExtensionOptionalGroup{} }
-func (m *Message_ExtensionOptionalGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_ExtensionOptionalGroup) ProtoMessage()    {}
-func (*Message_ExtensionOptionalGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{1, 34}
-}
-
-func (m *Message_ExtensionOptionalGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_ExtensionOptionalGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_ExtensionOptionalGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_ExtensionRepeatedGroup struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_ExtensionRepeatedGroup) Reset()         { *m = Message_ExtensionRepeatedGroup{} }
-func (m *Message_ExtensionRepeatedGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_ExtensionRepeatedGroup) ProtoMessage()    {}
-func (*Message_ExtensionRepeatedGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{1, 35}
-}
-
-func (m *Message_ExtensionRepeatedGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_ExtensionRepeatedGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_ExtensionRepeatedGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func init() {
-	proto.RegisterType((*SiblingMessage)(nil), "google.golang.org.proto2_20160519.SiblingMessage")
-	proto.RegisterType((*Message)(nil), "google.golang.org.proto2_20160519.Message")
-	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto2_20160519.Message.ChildMessage")
-	proto.RegisterType((*Message_NamedGroup)(nil), "google.golang.org.proto2_20160519.Message.NamedGroup")
-	proto.RegisterType((*Message_OptionalGroup)(nil), "google.golang.org.proto2_20160519.Message.OptionalGroup")
-	proto.RegisterType((*Message_RequiredGroup)(nil), "google.golang.org.proto2_20160519.Message.RequiredGroup")
-	proto.RegisterType((*Message_RepeatedGroup)(nil), "google.golang.org.proto2_20160519.Message.RepeatedGroup")
-	proto.RegisterType((*Message_OneofGroup)(nil), "google.golang.org.proto2_20160519.Message.OneofGroup")
-	proto.RegisterType((*Message_ExtensionOptionalGroup)(nil), "google.golang.org.proto2_20160519.Message.ExtensionOptionalGroup")
-	proto.RegisterType((*Message_ExtensionRepeatedGroup)(nil), "google.golang.org.proto2_20160519.Message.ExtensionRepeatedGroup")
-	proto.RegisterEnum("google.golang.org.proto2_20160519.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
-	proto.RegisterEnum("google.golang.org.proto2_20160519.Message_ChildEnum", Message_ChildEnum_name, Message_ChildEnum_value)
-	proto.RegisterExtension(E_Message_ExtensionOptionalBool)
-	proto.RegisterExtension(E_Message_ExtensionOptionalInt32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSint32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalUint32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalInt64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSint64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalUint64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalFixed32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalFloat)
-	proto.RegisterExtension(E_Message_ExtensionOptionalFixed64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalDouble)
-	proto.RegisterExtension(E_Message_ExtensionOptionalString)
-	proto.RegisterExtension(E_Message_ExtensionOptionalBytes)
-	proto.RegisterExtension(E_Message_ExtensionOptionalChildEnum)
-	proto.RegisterExtension(E_Message_ExtensionOptionalChildMessage)
-	proto.RegisterExtension(E_Message_ExtensionOptionalNamedGroup)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingEnum)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingMessage)
-	proto.RegisterExtension(E_Message_Extensionoptionalgroup)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedBool)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedInt32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSint32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedUint32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedInt64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSint64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedUint64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedFloat)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedDouble)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedString)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedBytes)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedChildEnum)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSiblingEnum)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedBool)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedInt32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSint32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedUint32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedInt64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSint64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedUint64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedFloat)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedDouble)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedString)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedBytes)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedChildEnum)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedChildMessage)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedNamedGroup)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingEnum)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingMessage)
-	proto.RegisterExtension(E_Message_Extensionrepeatedgroup)
-}
-
-var fileDescriptor0 = []byte{
-	// 4468 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5c, 0x69, 0x70, 0x23, 0xc7,
-	0x75, 0xe6, 0x00, 0x04, 0xb8, 0xec, 0x25, 0x48, 0x70, 0x76, 0x97, 0x9c, 0xa5, 0xa4, 0x08, 0x5e,
-	0x3b, 0x0e, 0xa2, 0x68, 0xb9, 0xcb, 0x61, 0xb3, 0x57, 0x8b, 0xe8, 0xf0, 0x52, 0x5a, 0x19, 0x72,
-	0x2c, 0xc8, 0x35, 0xaa, 0x4d, 0xa5, 0x52, 0xaa, 0x30, 0xe0, 0x12, 0xe4, 0x52, 0xc2, 0x41, 0x91,
-	0x80, 0xa4, 0x8d, 0x9d, 0xd2, 0xc6, 0x39, 0x7f, 0xca, 0xf7, 0x05, 0xdb, 0xb2, 0x6e, 0x5b, 0xa7,
-	0xef, 0x4b, 0x97, 0x8f, 0x24, 0xf2, 0x7d, 0xe5, 0x70, 0x2e, 0xe7, 0xbe, 0x9c, 0xfb, 0xbe, 0x8f,
-	0xea, 0x7e, 0xdd, 0xd3, 0xdd, 0x33, 0x3d, 0x20, 0x7b, 0xe0, 0xd2, 0x0f, 0x55, 0x69, 0x1b, 0xaf,
-	0xdf, 0xd7, 0xef, 0x43, 0xbf, 0xf7, 0x3e, 0xf6, 0x4c, 0x03, 0xbd, 0x74, 0x6b, 0xbb, 0xd3, 0xed,
-	0xf8, 0x2b, 0xfe, 0xf1, 0x05, 0x72, 0x7c, 0x69, 0xe1, 0xe4, 0x4a, 0x1d, 0xd7, 0x57, 0x4f, 0x36,
-	0xce, 0x2e, 0x1d, 0xeb, 0x36, 0x76, 0xba, 0xf3, 0xec, 0x53, 0xf7, 0x25, 0x1b, 0x9d, 0xce, 0x46,
-	0xb3, 0x31, 0xbf, 0xd1, 0x69, 0xd6, 0xdb, 0x1b, 0xf3, 0x9d, 0xed, 0x8d, 0xf9, 0xc8, 0xb4, 0x23,
-	0xaf, 0x43, 0x93, 0x37, 0x6f, 0xae, 0x36, 0x37, 0xdb, 0x1b, 0x37, 0x36, 0x76, 0x76, 0xea, 0x1b,
-	0x0d, 0x77, 0x12, 0x65, 0xd6, 0x17, 0x3c, 0xa7, 0xe4, 0x94, 0xc7, 0x83, 0xcc, 0xfa, 0x02, 0xfb,
-	0xb7, 0xef, 0x65, 0x4a, 0x19, 0xf6, 0x6f, 0x9f, 0xfd, 0x7b, 0xd1, 0xcb, 0x96, 0xb2, 0xec, 0xdf,
-	0x8b, 0x6e, 0x05, 0x65, 0xd6, 0xb1, 0x37, 0x5a, 0x72, 0xca, 0xfb, 0xfd, 0xcb, 0xe6, 0x77, 0x45,
-	0x9c, 0xe7, 0x38, 0x41, 0x66, 0x1d, 0x1f, 0xf9, 0xce, 0xa3, 0x0e, 0x1a, 0x13, 0xc0, 0x67, 0x10,
-	0x6a, 0xd7, 0x5b, 0x8d, 0xb5, 0x8d, 0xed, 0x4e, 0x6f, 0x8b, 0x2d, 0x00, 0xf9, 0x4b, 0x7b, 0x77,
-	0x38, 0x5f, 0xa3, 0x93, 0x5f, 0x49, 0x27, 0x07, 0x8a, 0x23, 0xf7, 0xa5, 0xa8, 0xd0, 0xd9, 0xea,
-	0x6e, 0x76, 0xda, 0xf5, 0xe6, 0xca, 0x6a, 0xa7, 0xd3, 0xf4, 0xd6, 0x4a, 0x4e, 0x79, 0x5f, 0x30,
-	0x21, 0x06, 0x97, 0x3b, 0x9d, 0xa6, 0xfb, 0xfd, 0x68, 0x32, 0x34, 0xda, 0x6c, 0x77, 0x17, 0x7d,
-	0xaf, 0x51, 0x72, 0xca, 0xb9, 0x20, 0x9c, 0x7a, 0x03, 0x1d, 0x74, 0x7f, 0x00, 0x4d, 0x85, 0x66,
-	0x3b, 0x60, 0xb7, 0x5e, 0x72, 0xca, 0xd3, 0x41, 0x38, 0xfb, 0xe6, 0xcd, 0x98, 0x61, 0x0f, 0x0c,
-	0x37, 0x4a, 0x4e, 0xb9, 0x20, 0x0d, 0xcf, 0x80, 0x61, 0x04, 0x98, 0x60, 0xef, 0x5c, 0xc9, 0x29,
-	0x67, 0x35, 0x60, 0x82, 0x63, 0xc0, 0x04, 0x7b, 0x9b, 0x25, 0xa7, 0xec, 0xea, 0xc0, 0x11, 0xc3,
-	0x1e, 0x18, 0xde, 0x5a, 0x72, 0xca, 0xa3, 0x3a, 0x30, 0xc1, 0xee, 0x0f, 0xa2, 0x62, 0x68, 0xb8,
-	0xbe, 0x79, 0x57, 0x63, 0x6d, 0xd1, 0xf7, 0x6e, 0x2b, 0x39, 0xe5, 0xb1, 0x20, 0x74, 0x70, 0x3d,
-	0x0c, 0xbb, 0x3f, 0x84, 0xa6, 0x25, 0xb8, 0xb0, 0x6d, 0x96, 0x9c, 0xf2, 0x54, 0x10, 0xfa, 0xb8,
-	0x99, 0x8f, 0x6b, 0x01, 0xad, 0x37, 0x3b, 0xf5, 0xae, 0xd7, 0x2a, 0x39, 0xe5, 0x8c, 0x0c, 0xe8,
-	0x7a, 0x3a, 0x18, 0x87, 0x27, 0xd8, 0x6b, 0x97, 0x9c, 0x72, 0x3e, 0x02, 0x4f, 0xb0, 0x01, 0x9e,
-	0x60, 0xaf, 0x53, 0x72, 0xca, 0xc5, 0x28, 0x7c, 0x24, 0xfe, 0xb5, 0x4e, 0x6f, 0xb5, 0xd9, 0xf0,
-	0xb6, 0x4a, 0x4e, 0xd9, 0x91, 0xf1, 0x5f, 0xc7, 0x46, 0x75, 0x46, 0xbb, 0xdb, 0x9b, 0xed, 0x0d,
-	0xef, 0x76, 0xb6, 0xe7, 0x25, 0xa3, 0x6c, 0x54, 0x0b, 0x68, 0xf5, 0x7c, 0xb7, 0xb1, 0xe3, 0x6d,
-	0x97, 0x9c, 0xf2, 0x84, 0x0c, 0x68, 0x99, 0x0e, 0xba, 0x6b, 0xe8, 0x40, 0x68, 0x76, 0xf6, 0xdc,
-	0x66, 0x73, 0x6d, 0xa5, 0xd1, 0xee, 0xb5, 0xbc, 0x9d, 0x92, 0x53, 0x9e, 0xf4, 0xb1, 0xc5, 0x36,
-	0xbe, 0x96, 0x4e, 0x3e, 0xdd, 0xee, 0xb5, 0x82, 0x30, 0xec, 0x70, 0xc8, 0x6d, 0xa1, 0x99, 0x08,
-	0x4a, 0x0b, 0xa6, 0x79, 0x5d, 0x96, 0x80, 0x27, 0x6c, 0x81, 0x44, 0x36, 0x1e, 0xd4, 0xb0, 0x44,
-	0x4a, 0x6e, 0xa0, 0x70, 0x7c, 0x85, 0xa5, 0xd4, 0x0a, 0x24, 0x67, 0x8f, 0x81, 0xa5, 0x4c, 0x4e,
-	0x57, 0xb8, 0x94, 0x63, 0xee, 0x2a, 0x3a, 0xa4, 0xec, 0x6f, 0x56, 0x8f, 0x80, 0xbf, 0x3b, 0x18,
-	0x7f, 0xf3, 0x7b, 0x40, 0xe2, 0x65, 0x8c, 0x31, 0x77, 0x40, 0x66, 0x45, 0x38, 0xe8, 0xde, 0x86,
-	0xbc, 0x18, 0x86, 0x60, 0xef, 0x4e, 0x16, 0xd0, 0xc2, 0xde, 0x61, 0x04, 0x6f, 0x33, 0x11, 0x24,
-	0xc1, 0xdc, 0x4f, 0xc8, 0xaa, 0x03, 0x94, 0xdd, 0xc5, 0xea, 0xd9, 0x15, 0x16, 0x94, 0xdd, 0xc4,
-	0xe7, 0x03, 0x6b, 0xba, 0x3b, 0xf7, 0x72, 0x34, 0xb9, 0xd6, 0x58, 0xaf, 0xf7, 0x9a, 0xdd, 0xc6,
-	0x1a, 0x94, 0xb5, 0x17, 0x68, 0xc5, 0xdc, 0x57, 0x19, 0xed, 0x6e, 0xf7, 0x1a, 0x41, 0x21, 0xfc,
-	0x90, 0x95, 0xb7, 0xe3, 0x68, 0x4a, 0x5a, 0x43, 0x39, 0xfa, 0x02, 0x35, 0xcf, 0x55, 0xf2, 0x47,
-	0x17, 0xfc, 0x45, 0xbc, 0x14, 0x48, 0x6f, 0x50, 0xe9, 0x16, 0x50, 0x51, 0xce, 0xe0, 0xa5, 0xee,
-	0x8b, 0x74, 0xca, 0x74, 0x25, 0x77, 0x74, 0xd1, 0x3f, 0x7e, 0x3c, 0x90, 0x1e, 0x79, 0xcd, 0x3b,
-	0xae, 0x4e, 0xe1, 0x45, 0xef, 0x4b, 0x74, 0x4a, 0xa1, 0x32, 0x1a, 0x99, 0xc1, 0x8b, 0x1f, 0x8e,
-	0x2c, 0x8b, 0x60, 0xef, 0xcb, 0x74, 0x42, 0xb6, 0x82, 0x60, 0x59, 0xe4, 0xc4, 0x15, 0x27, 0xf5,
-	0xa5, 0x11, 0x1c, 0x5f, 0x1a, 0xc1, 0xde, 0x57, 0xe8, 0x34, 0xb7, 0x92, 0x3b, 0x4a, 0x70, 0x6c,
-	0x69, 0x04, 0xc7, 0x97, 0x46, 0xb0, 0xf7, 0x55, 0x3a, 0x65, 0xb4, 0x32, 0x1a, 0x99, 0xc1, 0xcb,
-	0x23, 0x46, 0xd3, 0x72, 0x86, 0xa8, 0x79, 0x5f, 0xa3, 0x53, 0xc6, 0x2a, 0x79, 0x1a, 0xcd, 0xf1,
-	0xe3, 0x81, 0xf4, 0x29, 0x2a, 0xe5, 0x09, 0xe4, 0x2a, 0x4b, 0x13, 0xd3, 0xbe, 0x4e, 0xa7, 0x4d,
-	0x55, 0xc6, 0x8e, 0xf2, 0x79, 0xd2, 0x73, 0x58, 0x35, 0x17, 0x54, 0x26, 0xa0, 0x6c, 0x7e, 0x83,
-	0xce, 0xca, 0x54, 0xc6, 0x16, 0xe7, 0x17, 0xf0, 0xc2, 0x92, 0x4a, 0x03, 0x54, 0xd0, 0xf8, 0x0a,
-	0x09, 0xf6, 0xbe, 0x49, 0x27, 0xe5, 0x2b, 0x79, 0x1a, 0x54, 0x7c, 0x85, 0x04, 0x9b, 0x56, 0x48,
-	0xb0, 0xf7, 0x2d, 0x3a, 0xad, 0x58, 0x19, 0x3b, 0xca, 0xe7, 0x45, 0x57, 0x48, 0xb0, 0x7b, 0x52,
-	0xa5, 0x90, 0x57, 0xd6, 0x5f, 0xa3, 0xd3, 0x9c, 0x4a, 0x81, 0x2f, 0xd1, 0x27, 0x4b, 0x8b, 0x4b,
-	0x27, 0x15, 0x2e, 0x79, 0xa9, 0xbd, 0x52, 0xfb, 0xc2, 0xa0, 0xd6, 0xfe, 0x3a, 0x13, 0x18, 0x95,
-	0xe2, 0xb9, 0x46, 0xb3, 0xd9, 0xb9, 0xbc, 0x74, 0xe4, 0xce, 0xce, 0x76, 0x73, 0xed, 0x25, 0x47,
-	0x90, 0xfa, 0xdd, 0x41, 0xfd, 0x5d, 0x56, 0xa9, 0x81, 0x02, 0xfc, 0x1b, 0x74, 0xf2, 0x44, 0xc5,
-	0x5b, 0x6b, 0xd4, 0xd7, 0x6e, 0x59, 0x5c, 0x24, 0xb7, 0xf8, 0x4b, 0x4b, 0xb7, 0xf8, 0x27, 0xc8,
-	0x2d, 0x8b, 0x4b, 0x27, 0x56, 0x1b, 0x8d, 0x75, 0x85, 0x2b, 0x28, 0xce, 0x6d, 0x74, 0x50, 0xfa,
-	0x50, 0xaa, 0xf3, 0x6f, 0x3a, 0xe9, 0xcb, 0x73, 0x25, 0x77, 0xea, 0xd5, 0xaf, 0xa9, 0x9e, 0x0a,
-	0x24, 0x9f, 0xb2, 0x4c, 0x37, 0xd1, 0x8c, 0xba, 0x45, 0x95, 0x7a, 0xf6, 0x6d, 0x27, 0x4d, 0x41,
-	0x13, 0x58, 0x07, 0x95, 0x8d, 0x2d, 0x0b, 0xdb, 0xcb, 0x50, 0x61, 0xbb, 0x71, 0x7b, 0x6f, 0x73,
-	0x5b, 0x94, 0x82, 0xc7, 0xa8, 0x5a, 0xdb, 0x17, 0x4c, 0x88, 0x51, 0x56, 0x03, 0x5e, 0x8e, 0x26,
-	0x43, 0x2b, 0x48, 0xce, 0xc7, 0xa9, 0x59, 0x2e, 0x08, 0x27, 0x43, 0xe6, 0x97, 0xd1, 0x54, 0x68,
-	0xc7, 0x13, 0xff, 0x09, 0x6a, 0x38, 0x1d, 0x84, 0xf3, 0x79, 0xc2, 0xab, 0x96, 0x3c, 0xdf, 0x9f,
-	0xa4, 0x96, 0x05, 0x69, 0xc9, 0x13, 0x3d, 0x82, 0x4d, 0xb0, 0xf7, 0x14, 0x35, 0xcc, 0x6a, 0xd8,
-	0x04, 0xc7, 0xb0, 0x09, 0xf6, 0x3e, 0x48, 0x0d, 0x5d, 0x1d, 0x3b, 0x62, 0xc9, 0x13, 0xfa, 0x43,
-	0xd4, 0x72, 0x54, 0xc7, 0x26, 0xd8, 0xbd, 0x0c, 0x15, 0x43, 0x4b, 0x91, 0x91, 0x1f, 0xa6, 0xa6,
-	0x63, 0x41, 0xe8, 0x42, 0xe4, 0xef, 0xe5, 0x68, 0x5a, 0xe2, 0x0b, 0xe3, 0x8f, 0x50, 0xe3, 0xa9,
-	0x20, 0xf4, 0x12, 0x26, 0xad, 0x1a, 0x15, 0xe4, 0xec, 0x47, 0xa9, 0x69, 0x46, 0x46, 0x05, 0x99,
-	0x1a, 0x5b, 0x01, 0xc1, 0xde, 0xc7, 0xa8, 0x65, 0x3e, 0xb2, 0x02, 0x82, 0x0d, 0x2b, 0x20, 0xd8,
-	0xfb, 0x38, 0x35, 0x2e, 0x46, 0x57, 0x10, 0x61, 0x81, 0xe7, 0xe4, 0x27, 0xa8, 0xad, 0x23, 0x59,
-	0xe0, 0x39, 0xa8, 0x31, 0x0b, 0x29, 0xf8, 0x49, 0xd0, 0xf4, 0x92, 0x59, 0xc8, 0x37, 0x35, 0x2a,
-	0x48, 0xb7, 0x4f, 0x51, 0xc3, 0x09, 0x19, 0x15, 0xe4, 0x54, 0x03, 0x1d, 0x08, 0xed, 0x94, 0x94,
-	0xfa, 0x34, 0x35, 0x4e, 0xad, 0x78, 0x84, 0x47, 0x99, 0x4a, 0x6d, 0x34, 0x13, 0x81, 0x11, 0x3d,
-	0xfb, 0x69, 0x8a, 0x34, 0x8c, 0xe4, 0xd1, 0xc0, 0x44, 0xe3, 0x3e, 0x87, 0xc2, 0x71, 0x4d, 0xf2,
-	0x3c, 0x03, 0x68, 0x69, 0x35, 0x8f, 0xf0, 0xa9, 0x68, 0x9e, 0xb3, 0xe8, 0x90, 0xb2, 0xd9, 0x95,
-	0x1a, 0xf1, 0x2c, 0x50, 0x68, 0x2d, 0x7a, 0x64, 0x8a, 0xc8, 0xda, 0xd0, 0x44, 0x5e, 0x0c, 0x44,
-	0x10, 0xf8, 0x1c, 0x84, 0x94, 0x46, 0xf5, 0x44, 0xa0, 0x04, 0x79, 0x2b, 0xb2, 0x12, 0x01, 0x6b,
-	0xcf, 0x53, 0x08, 0x3b, 0xd9, 0x13, 0x70, 0x07, 0x5c, 0xf6, 0x68, 0xfe, 0xdc, 0xab, 0xd0, 0xac,
-	0xdc, 0xf0, 0xba, 0xfe, 0xb9, 0x27, 0x4b, 0x8b, 0x1e, 0xd7, 0x3f, 0x21, 0xb3, 0xd7, 0x69, 0x3a,
-	0xe8, 0x94, 0xc2, 0x46, 0x54, 0x10, 0xbd, 0x81, 0xce, 0x97, 0x82, 0x68, 0x26, 0xe6, 0x01, 0xca,
-	0xe3, 0x32, 0x3a, 0x6c, 0x70, 0xc1, 0x0b, 0xe5, 0x1b, 0xa9, 0x8f, 0x50, 0x21, 0xcd, 0xc6, 0x5c,
-	0xf0, 0xc2, 0x79, 0xca, 0xe8, 0x83, 0x97, 0xd0, 0x37, 0x51, 0x1f, 0x42, 0x32, 0xc5, 0x5d, 0xf0,
-	0x8a, 0x7a, 0x3a, 0x29, 0x12, 0x82, 0xbd, 0x37, 0x53, 0x0f, 0xba, 0x86, 0x32, 0x46, 0x43, 0xf0,
-	0x80, 0x68, 0x08, 0xf6, 0xde, 0x42, 0xfd, 0x84, 0xa2, 0xca, 0x1c, 0x0d, 0xc1, 0x03, 0xa2, 0x21,
-	0xd8, 0x7b, 0x2b, 0xf5, 0x21, 0x54, 0x96, 0x39, 0x1a, 0x82, 0xdd, 0xd3, 0x68, 0xce, 0xe0, 0x42,
-	0x14, 0xe0, 0xb7, 0x51, 0x1f, 0x52, 0x76, 0x79, 0x31, 0x2f, 0xa2, 0x7c, 0x57, 0xd1, 0x45, 0xa6,
-	0x68, 0x84, 0x9f, 0xb7, 0x53, 0x3f, 0x8a, 0x0e, 0x3b, 0x1c, 0x8f, 0x48, 0x94, 0xf6, 0x65, 0x23,
-	0xbd, 0x50, 0xe4, 0xdf, 0x41, 0xdd, 0x28, 0xc2, 0x2c, 0xce, 0x2d, 0x94, 0xfd, 0x01, 0x41, 0x11,
-	0xec, 0xbd, 0x93, 0x7a, 0x91, 0x4a, 0x2d, 0x21, 0x28, 0x82, 0x07, 0x06, 0x45, 0xb0, 0xf7, 0x2e,
-	0xea, 0x47, 0x91, 0x6e, 0x49, 0x41, 0x11, 0xec, 0xbe, 0xca, 0xf8, 0x45, 0xf1, 0xbe, 0xd1, 0xa7,
-	0x7e, 0x62, 0x5a, 0x2e, 0xfe, 0x8d, 0xf1, 0x7e, 0x72, 0xa3, 0x79, 0xe3, 0x40, 0x67, 0x79, 0x37,
-	0xf5, 0x65, 0x12, 0x77, 0x86, 0x3d, 0x04, 0x4d, 0xe7, 0x66, 0x23, 0xdf, 0xd0, 0x7e, 0xde, 0x43,
-	0xbd, 0x0d, 0x52, 0x7b, 0xf1, 0x2f, 0x00, 0x3a, 0xd4, 0xdd, 0xe8, 0x12, 0x83, 0x53, 0xa5, 0x57,
-	0xbd, 0x37, 0x9b, 0xbe, 0x57, 0x09, 0x49, 0x36, 0x17, 0x03, 0x97, 0xbd, 0xeb, 0xa7, 0xd1, 0xa5,
-	0xc6, 0xec, 0x52, 0x6a, 0xfd, 0xbd, 0xd9, 0x34, 0xb5, 0x5e, 0x80, 0x5f, 0x6c, 0xc8, 0xc9, 0x88,
-	0x2e, 0xdc, 0x6a, 0xd4, 0xc3, 0x12, 0xf9, 0xcf, 0xd9, 0x52, 0x16, 0x74, 0x21, 0x8c, 0x4a, 0x5d,
-	0xc8, 0xad, 0xa0, 0x02, 0xfd, 0x0b, 0x35, 0x63, 0xba, 0x10, 0x86, 0x15, 0x5d, 0xc8, 0xed, 0x78,
-	0xb9, 0xfb, 0x57, 0x6a, 0xc8, 0x74, 0x21, 0x8c, 0xab, 0xba, 0x90, 0x5b, 0xf2, 0xa2, 0xf6, 0x6f,
-	0xd4, 0xb2, 0x20, 0x2d, 0x55, 0x5d, 0x28, 0xb1, 0x09, 0xf6, 0xfe, 0x9d, 0x1a, 0x66, 0x35, 0x6c,
-	0xa1, 0x73, 0x14, 0x6c, 0x82, 0xbd, 0xff, 0xa0, 0x86, 0xae, 0x8e, 0x1d, 0xb1, 0xe4, 0x25, 0xe8,
-	0x3f, 0xa9, 0xe5, 0xa8, 0x8e, 0x2d, 0x74, 0x21, 0xb7, 0x14, 0x15, 0xe2, 0xbf, 0xa8, 0x29, 0xd3,
-	0x85, 0xf0, 0x81, 0xa6, 0x0b, 0x05, 0xbe, 0x30, 0xfe, 0x6f, 0x6a, 0xcc, 0x74, 0x21, 0x5f, 0x81,
-	0xa6, 0x0b, 0x85, 0x67, 0x56, 0x32, 0xfe, 0x87, 0x9a, 0x66, 0x64, 0x54, 0x8a, 0x2e, 0x54, 0x57,
-	0x40, 0xb0, 0xf7, 0xbf, 0xd4, 0x32, 0x1f, 0x59, 0x81, 0xd0, 0x85, 0xda, 0x0a, 0x08, 0xf6, 0xfe,
-	0x8f, 0x1a, 0x17, 0xa3, 0x2b, 0x88, 0xb0, 0xc0, 0xf3, 0xfb, 0xc2, 0x68, 0x29, 0x0b, 0xba, 0x10,
-	0xc6, 0x55, 0x5d, 0x28, 0xfc, 0x42, 0xf6, 0xfe, 0xcc, 0x28, 0x3b, 0xdb, 0x95, 0xcc, 0x2a, 0xba,
-	0x50, 0xec, 0x26, 0x96, 0x98, 0xaf, 0xa7, 0x86, 0x13, 0x32, 0x2a, 0x45, 0x17, 0x72, 0x3b, 0x25,
-	0xd7, 0x7e, 0x96, 0x1a, 0x0f, 0xa1, 0x0b, 0xc1, 0x63, 0x44, 0x17, 0x6a, 0x30, 0x42, 0xd6, 0xfc,
-	0x1c, 0x45, 0x1a, 0x4e, 0x17, 0x2a, 0x60, 0x9a, 0x2e, 0xe4, 0x78, 0xaa, 0x2e, 0xfc, 0x79, 0x40,
-	0x4b, 0xaf, 0x0b, 0xc1, 0x67, 0x54, 0x17, 0x86, 0x9b, 0x5d, 0xa9, 0x15, 0xbf, 0x00, 0x14, 0xa6,
-	0xd0, 0x85, 0x22, 0x45, 0x22, 0xba, 0x30, 0x02, 0x22, 0x08, 0xfc, 0x45, 0x08, 0x29, 0x9d, 0x2e,
-	0xd4, 0xa0, 0x34, 0x5d, 0x08, 0x9f, 0x00, 0x6b, 0xbf, 0x44, 0x21, 0x6c, 0x75, 0x21, 0x38, 0x08,
-	0x75, 0xa1, 0xe2, 0xcf, 0xfd, 0x49, 0x54, 0x68, 0xd5, 0xb7, 0x58, 0x95, 0x83, 0x52, 0xf7, 0x6d,
-	0x88, 0xe1, 0x87, 0x2d, 0x00, 0x6e, 0xac, 0x6f, 0xd1, 0x82, 0x48, 0xff, 0x3b, 0xdd, 0xee, 0x6e,
-	0x9f, 0x0f, 0xf6, 0xb7, 0xe4, 0x88, 0x7b, 0x16, 0x4d, 0x86, 0x08, 0x50, 0xd3, 0x7e, 0x0b, 0x20,
-	0xae, 0xb4, 0x87, 0x60, 0x05, 0x15, 0x30, 0x26, 0x5a, 0xca, 0x90, 0xbb, 0x8e, 0xa6, 0x42, 0x10,
-	0x5e, 0x63, 0x7f, 0x1b, 0x50, 0xae, 0xb2, 0x47, 0x81, 0x6a, 0x0c, 0x30, 0x85, 0x96, 0x3a, 0xa6,
-	0xe1, 0xf0, 0x0a, 0xfd, 0x3b, 0xa9, 0x71, 0xce, 0x18, 0x70, 0x78, 0x7d, 0x8f, 0x90, 0x46, 0xb0,
-	0xf7, 0xbb, 0xc3, 0x90, 0x46, 0x70, 0x8c, 0x34, 0x82, 0x63, 0xa4, 0x11, 0xec, 0xfd, 0xde, 0x50,
-	0xa4, 0x09, 0x18, 0x95, 0xb4, 0x08, 0x0e, 0x6f, 0x2d, 0xdf, 0x19, 0x8a, 0xb4, 0x28, 0x0e, 0x6f,
-	0x4c, 0x9b, 0xa8, 0x18, 0xe2, 0x88, 0x5e, 0xf3, 0xfb, 0x00, 0x74, 0xb5, 0x3d, 0x10, 0x6f, 0x61,
-	0x80, 0x34, 0xd9, 0xd2, 0x06, 0xdd, 0x26, 0x9a, 0x96, 0xd4, 0x09, 0xac, 0x3f, 0x00, 0xac, 0x6b,
-	0x52, 0x90, 0xb7, 0xae, 0x82, 0x4d, 0xb5, 0xf4, 0x51, 0x6d, 0x37, 0x40, 0x5f, 0xfc, 0xc3, 0xd4,
-	0xbb, 0x81, 0x75, 0x50, 0x7d, 0x37, 0x40, 0x53, 0x8d, 0xb1, 0x47, 0xb0, 0xf7, 0x47, 0xc3, 0xb1,
-	0x27, 0xbe, 0x27, 0x8d, 0x3d, 0x82, 0x0d, 0xec, 0x11, 0xec, 0xfd, 0xf1, 0x90, 0xec, 0x09, 0x30,
-	0x9d, 0xbd, 0xc8, 0xf6, 0xe3, 0x3d, 0xfd, 0x4f, 0x52, 0x6f, 0x3f, 0xe8, 0xfe, 0xfa, 0xf6, 0xe3,
-	0x8a, 0x40, 0x4b, 0x27, 0x50, 0x04, 0x7f, 0x9a, 0x3e, 0x9d, 0x98, 0x83, 0x48, 0x3a, 0x81, 0x9e,
-	0x50, 0x77, 0x03, 0xe8, 0x89, 0x3f, 0x4b, 0xbd, 0x1b, 0x98, 0xf2, 0xd0, 0x77, 0x03, 0x88, 0x91,
-	0x2d, 0x74, 0x20, 0x04, 0x51, 0xc4, 0xc8, 0x9f, 0x03, 0xd2, 0x2b, 0xec, 0x91, 0x42, 0x01, 0x02,
-	0x68, 0xc5, 0x56, 0x64, 0xd8, 0x3d, 0x8f, 0x66, 0x22, 0x88, 0xa2, 0xad, 0xfe, 0x05, 0x80, 0x5e,
-	0x9b, 0x12, 0x94, 0x8f, 0x01, 0xee, 0x81, 0x56, 0xfc, 0x13, 0x77, 0x07, 0x1d, 0x0c, 0xa1, 0x55,
-	0x89, 0xf2, 0x97, 0x00, 0x7c, 0xca, 0x1e, 0x58, 0xaa, 0x12, 0x80, 0x9d, 0x6e, 0x45, 0xc7, 0xdd,
-	0x3b, 0xd0, 0x21, 0xa5, 0xfa, 0x2a, 0x6a, 0xe5, 0xbb, 0x80, 0xba, 0x9c, 0xa6, 0x06, 0x87, 0x3a,
-	0x05, 0x60, 0xdd, 0x56, 0xec, 0x03, 0xf7, 0x6e, 0xe4, 0xc5, 0x70, 0x05, 0xd3, 0x7f, 0x05, 0xd0,
-	0xa7, 0x53, 0x43, 0x6b, 0x5c, 0x1f, 0x6a, 0x99, 0x3e, 0x13, 0xfb, 0x97, 0x35, 0x3a, 0xd0, 0x1c,
-	0x7f, 0x9d, 0x6a, 0xff, 0xb2, 0xce, 0x2f, 0x45, 0x07, 0xdd, 0xbf, 0xe1, 0x90, 0x48, 0xc6, 0x1d,
-	0x05, 0xe5, 0x6f, 0x52, 0x25, 0x23, 0x34, 0x7e, 0x09, 0x43, 0x93, 0x51, 0x8e, 0x09, 0x9c, 0x9e,
-	0x82, 0xf3, 0xb7, 0xa9, 0x70, 0xce, 0x18, 0x70, 0xe4, 0x98, 0x42, 0x1a, 0xc1, 0x00, 0xf3, 0x77,
-	0x69, 0x49, 0x23, 0x38, 0x46, 0x1a, 0x0c, 0xa9, 0xa4, 0x09, 0x94, 0xbf, 0x4f, 0x4d, 0x9a, 0x0a,
-	0x23, 0x48, 0xd3, 0x71, 0x7a, 0x0a, 0xce, 0x3f, 0xa4, 0x26, 0x2d, 0x8a, 0x23, 0xc7, 0x44, 0x4b,
-	0xe3, 0x6d, 0x14, 0x80, 0xfe, 0x31, 0x55, 0x4b, 0xe3, 0x7d, 0x5f, 0x22, 0xd1, 0x6f, 0x43, 0x19,
-	0x0c, 0xa9, 0x63, 0x25, 0x1a, 0x90, 0xfe, 0x29, 0x1d, 0x75, 0xcc, 0x43, 0x84, 0xba, 0x70, 0xcc,
-	0x2d, 0x21, 0xd4, 0x69, 0x37, 0x3a, 0xeb, 0x00, 0xf1, 0x74, 0xae, 0xe4, 0x94, 0xf7, 0x55, 0x47,
-	0x82, 0x71, 0x36, 0xc8, 0x2c, 0x8e, 0xa0, 0xfd, 0x60, 0x01, 0xf2, 0xf4, 0x19, 0x6a, 0x92, 0xab,
-	0x8e, 0x04, 0x30, 0x0f, 0xe4, 0xf2, 0xcb, 0xd0, 0x04, 0xd8, 0x70, 0xad, 0xfc, 0x2c, 0x35, 0x9a,
-	0xae, 0x8e, 0x04, 0x30, 0x95, 0x8b, 0xdd, 0xd0, 0x8a, 0x2b, 0xdd, 0xe7, 0xa8, 0x55, 0x21, 0xb4,
-	0xe2, 0x52, 0x55, 0xc5, 0x23, 0xd8, 0x7b, 0x9e, 0x1a, 0x65, 0x55, 0x3c, 0x82, 0x75, 0x3c, 0x82,
-	0xbd, 0xcf, 0x50, 0x23, 0x57, 0xc3, 0x53, 0xad, 0xb8, 0x48, 0xfc, 0x2c, 0xb5, 0x1a, 0xd5, 0xf0,
-	0x08, 0x76, 0x5f, 0x8e, 0x0a, 0x60, 0x25, 0x64, 0xd7, 0xe7, 0xa8, 0xd9, 0x58, 0x75, 0x24, 0x80,
-	0xd9, 0x42, 0xa2, 0x95, 0xd1, 0x24, 0xc7, 0x14, 0x86, 0x9f, 0xa7, 0x86, 0x53, 0xd5, 0x91, 0x00,
-	0x1c, 0x84, 0xf2, 0x2a, 0x8c, 0x00, 0xb4, 0xd5, 0x2f, 0x53, 0xb3, 0x4c, 0x18, 0x01, 0xa8, 0x23,
-	0x1d, 0x95, 0x60, 0xef, 0x57, 0xa8, 0x55, 0x5e, 0x47, 0x65, 0x07, 0x08, 0x1a, 0x2a, 0xc1, 0xde,
-	0xaf, 0x52, 0xc3, 0x62, 0x04, 0x55, 0x8d, 0x96, 0x6b, 0x92, 0x17, 0xa8, 0x9d, 0x13, 0x46, 0xcb,
-	0x45, 0x85, 0x64, 0x0e, 0x14, 0xc5, 0x17, 0xa8, 0xd5, 0xb8, 0x64, 0x0e, 0x24, 0x41, 0x18, 0x01,
-	0xe8, 0x81, 0x2f, 0x52, 0xa3, 0x89, 0x30, 0x02, 0xe8, 0xe8, 0x75, 0x54, 0x04, 0x1b, 0xa5, 0x9d,
-	0x7f, 0x29, 0x97, 0xfe, 0x31, 0x6e, 0x75, 0x24, 0x80, 0x50, 0x65, 0x0b, 0xbf, 0x15, 0x1d, 0x50,
-	0x21, 0x44, 0x57, 0xf9, 0x72, 0x6e, 0xa8, 0x57, 0x6c, 0xaa, 0x23, 0xc1, 0xb4, 0x04, 0x12, 0x5d,
-	0x64, 0x0d, 0xc1, 0xa0, 0xd6, 0xb0, 0xbf, 0x92, 0x1b, 0xe2, 0xfd, 0x9a, 0xea, 0x48, 0x30, 0xc5,
-	0x5c, 0x2a, 0x4d, 0x7a, 0x05, 0xb9, 0x62, 0xe3, 0x2a, 0x1d, 0xfa, 0xab, 0xb9, 0x34, 0xcf, 0xa2,
-	0xab, 0x23, 0x41, 0x91, 0x6f, 0x77, 0xd9, 0x8d, 0xcf, 0xa1, 0x43, 0x3a, 0x80, 0x20, 0xed, 0x6b,
-	0xb9, 0x94, 0x6f, 0xd6, 0x54, 0x47, 0x82, 0x03, 0x2a, 0x8c, 0x20, 0xec, 0xc7, 0x78, 0xe5, 0x00,
-	0xa6, 0xbe, 0x9e, 0xb3, 0x7e, 0x4d, 0xf0, 0x26, 0x3a, 0x5b, 0x30, 0xa5, 0xf8, 0x92, 0xb9, 0x01,
-	0x7b, 0x74, 0xc1, 0xfb, 0x86, 0xd8, 0xa4, 0x13, 0xca, 0x26, 0x5d, 0x88, 0xda, 0xf9, 0xde, 0x37,
-	0x4d, 0x76, 0x7e, 0xd4, 0x6e, 0xd1, 0xfb, 0x96, 0xc9, 0x6e, 0xd1, 0x3d, 0x89, 0x0e, 0xf2, 0x0c,
-	0xd2, 0x1f, 0x68, 0xdd, 0x9b, 0x97, 0x2f, 0xf4, 0x54, 0x9d, 0x00, 0xbe, 0x41, 0xfd, 0x79, 0xd6,
-	0x55, 0x82, 0xf6, 0xe8, 0xc3, 0xac, 0xf7, 0xe5, 0xd5, 0xb7, 0x7b, 0xaa, 0x0e, 0xe7, 0x32, 0xf2,
-	0x2c, 0xeb, 0x6a, 0x34, 0x13, 0x9d, 0xce, 0x2b, 0xe9, 0x7d, 0x79, 0xe5, 0x55, 0x9f, 0xaa, 0x13,
-	0x1c, 0xd4, 0xa7, 0xf3, 0xca, 0x7a, 0x55, 0x7c, 0x3e, 0xaf, 0xb1, 0xf7, 0xe7, 0xe5, 0x7b, 0x3f,
-	0xf1, 0xe9, 0x67, 0xc4, 0x63, 0x30, 0xd3, 0xea, 0x09, 0xf6, 0x1e, 0xc8, 0x47, 0x5f, 0x02, 0x32,
-	0x46, 0x40, 0x70, 0x52, 0x04, 0x04, 0x7b, 0x0f, 0xe6, 0x95, 0x37, 0x82, 0xcc, 0x11, 0x10, 0x9c,
-	0x14, 0x01, 0xc1, 0xde, 0x43, 0x79, 0xf9, 0x7a, 0x90, 0x39, 0x02, 0xf6, 0xe8, 0x6b, 0x36, 0x3a,
-	0x5d, 0x54, 0xe9, 0x87, 0xf3, 0xea, 0xbb, 0x42, 0x55, 0x27, 0x38, 0xa4, 0x7b, 0x10, 0xf5, 0xfd,
-	0x3a, 0xe4, 0xc5, 0x22, 0x10, 0x3e, 0x1e, 0xc9, 0x6b, 0x2f, 0x0e, 0x55, 0x9d, 0x60, 0x26, 0x12,
-	0x85, 0xa8, 0xfd, 0x57, 0xc7, 0xa9, 0x84, 0x2e, 0xf0, 0xfe, 0xbc, 0xf6, 0x16, 0x51, 0x9c, 0x47,
-	0xe8, 0x0b, 0x49, 0x81, 0x10, 0xec, 0x7d, 0x20, 0xaf, 0xbe, 0x52, 0x94, 0x10, 0x08, 0xc1, 0xc9,
-	0x81, 0x10, 0xec, 0x3d, 0x9a, 0xd7, 0xde, 0x2f, 0x4a, 0x0a, 0x84, 0x60, 0xf7, 0xfa, 0xf8, 0x17,
-	0xc2, 0x1b, 0xcb, 0x63, 0x79, 0xc3, 0xcb, 0x46, 0xf1, 0x6f, 0x86, 0x37, 0x9c, 0x1b, 0x0c, 0x1b,
-	0x03, 0x5a, 0xcf, 0xe3, 0x79, 0xf3, 0x9b, 0x47, 0x86, 0x3d, 0x02, 0x5d, 0xe9, 0xa6, 0x38, 0xb7,
-	0xd0, 0x9f, 0x9e, 0xc8, 0x0f, 0x7e, 0x0d, 0x29, 0x4e, 0x36, 0xb4, 0xb0, 0xd7, 0xa2, 0xb9, 0xa8,
-	0x43, 0xa5, 0x99, 0x3d, 0x99, 0x1f, 0xfa, 0x9d, 0xa4, 0xaa, 0x13, 0xcc, 0xea, 0xc0, 0xea, 0xdf,
-	0xa7, 0x17, 0xc7, 0x33, 0x46, 0x69, 0x0a, 0x4f, 0xe5, 0x87, 0x78, 0x41, 0xa9, 0xea, 0x04, 0x87,
-	0xa3, 0x79, 0x16, 0xda, 0xcc, 0xfd, 0x14, 0x9a, 0xd0, 0x7a, 0xdf, 0x8b, 0xf8, 0xa6, 0xf9, 0xdc,
-	0x5d, 0x08, 0x29, 0xfd, 0xf0, 0xc5, 0x44, 0xbe, 0x06, 0x15, 0xb4, 0x37, 0x39, 0x6d, 0xc1, 0xa9,
-	0x03, 0xed, 0x9d, 0x88, 0x74, 0x0e, 0x94, 0xc3, 0x73, 0x6b, 0x07, 0x57, 0xa3, 0x62, 0xf4, 0x70,
-	0xdc, 0x2d, 0xa2, 0xec, 0x6d, 0x8d, 0xf3, 0xcc, 0xc9, 0xbe, 0x80, 0xfe, 0xaf, 0x7b, 0x10, 0xe5,
-	0xee, 0xa8, 0x37, 0x7b, 0x0d, 0x2f, 0xc3, 0xc6, 0xe0, 0x1f, 0x95, 0xcc, 0x15, 0xce, 0xdc, 0x35,
-	0x68, 0x3a, 0x76, 0xf2, 0xbd, 0x9b, 0x83, 0x9c, 0xea, 0xe0, 0x15, 0xc8, 0x8d, 0x1f, 0x6a, 0xef,
-	0xe6, 0x61, 0xda, 0xec, 0xe1, 0xcc, 0xde, 0x3d, 0x14, 0x12, 0x83, 0xe0, 0xa7, 0x74, 0xbb, 0x39,
-	0xc8, 0x26, 0x07, 0xb1, 0x47, 0x0f, 0x6e, 0x72, 0x10, 0x7b, 0xf4, 0x30, 0xaa, 0x7a, 0x38, 0x85,
-	0x0e, 0x18, 0xce, 0x85, 0x77, 0x73, 0x31, 0xa6, 0xba, 0x58, 0x46, 0x07, 0x4d, 0xc7, 0xbd, 0xbb,
-	0xf9, 0x98, 0x32, 0x73, 0x29, 0xcf, 0x71, 0x77, 0x73, 0x90, 0x19, 0x10, 0xc7, 0x1e, 0xa9, 0xc8,
-	0x0f, 0x8a, 0x63, 0x8f, 0x3e, 0x8a, 0xe6, 0x2f, 0x44, 0x39, 0x50, 0xdd, 0xcd, 0x83, 0x93, 0xb0,
-	0x29, 0xe4, 0x51, 0xe9, 0x6e, 0x1e, 0xc6, 0xcd, 0x5c, 0xca, 0x53, 0xd0, 0xdd, 0x1c, 0x4c, 0xa8,
-	0x0e, 0xce, 0xa3, 0x43, 0xc6, 0xc3, 0x4d, 0x83, 0x93, 0x57, 0xa9, 0x4e, 0xd2, 0x3e, 0xcc, 0x55,
-	0xa0, 0xef, 0x46, 0x5e, 0xd2, 0x11, 0xa7, 0x01, 0xfd, 0x46, 0x15, 0x7d, 0x88, 0x07, 0xbc, 0xca,
-	0x02, 0x5e, 0x8b, 0x66, 0xcc, 0x47, 0x9d, 0x06, 0xf8, 0x1f, 0xd1, 0xe1, 0x53, 0x3e, 0xf1, 0x55,
-	0xc0, 0x7b, 0x68, 0x36, 0xe1, 0xc4, 0xd3, 0x80, 0x7e, 0x9d, 0x4e, 0xbd, 0xed, 0x43, 0x60, 0x2d,
-	0xe6, 0xb9, 0xe4, 0xd3, 0x4e, 0x03, 0xf2, 0x2b, 0xf5, 0xb8, 0x53, 0x3c, 0x16, 0x8e, 0xed, 0x56,
-	0xfd, 0xcc, 0x53, 0xc5, 0xcc, 0xed, 0xd6, 0x4b, 0x20, 0x61, 0x22, 0xc7, 0x99, 0xaa, 0x87, 0xe9,
-	0xbd, 0x79, 0x38, 0x93, 0xec, 0xa1, 0xb0, 0xb7, 0x7e, 0xa6, 0x9f, 0x41, 0xaa, 0x0e, 0xb2, 0x7b,
-	0x0f, 0x22, 0xc1, 0x83, 0xbb, 0xf7, 0x20, 0x12, 0x3c, 0x8c, 0xee, 0xe6, 0x01, 0x4a, 0x68, 0xf4,
-	0x44, 0x50, 0x75, 0x31, 0xb6, 0xc7, 0x30, 0xf4, 0xa3, 0x3e, 0xd5, 0xc3, 0xf8, 0x6e, 0x1e, 0xae,
-	0x44, 0x48, 0xfe, 0x3d, 0x6e, 0xad, 0x4b, 0xaa, 0x68, 0xe6, 0xf4, 0x5d, 0xdd, 0x46, 0x7b, 0x67,
-	0xb3, 0xd3, 0x1e, 0x4e, 0x63, 0xa9, 0x9e, 0x86, 0xd2, 0x4a, 0x47, 0xe6, 0xd1, 0xb8, 0x14, 0xdb,
-	0xe3, 0x08, 0x74, 0x71, 0x71, 0x84, 0xfe, 0xef, 0x72, 0x70, 0xea, 0x47, 0x6f, 0x2a, 0x3a, 0xee,
-	0x7e, 0x34, 0x76, 0x6d, 0xf5, 0x54, 0xf0, 0xea, 0x1b, 0x4e, 0x17, 0x33, 0x97, 0x8d, 0xef, 0xbb,
-	0xa7, 0x56, 0xbc, 0x70, 0xe1, 0xc2, 0x85, 0x8c, 0x7f, 0x16, 0xcd, 0x36, 0xc4, 0x22, 0x56, 0xb4,
-	0x3b, 0x8b, 0xae, 0x85, 0xe8, 0xf4, 0xee, 0xa9, 0x31, 0x96, 0x0f, 0x35, 0xa2, 0xd4, 0xd0, 0xaf,
-	0xc8, 0x6f, 0x20, 0xcf, 0x00, 0x02, 0x7f, 0x90, 0xdb, 0xa0, 0xbc, 0xa1, 0xc6, 0xb2, 0x75, 0x26,
-	0x86, 0xc2, 0x72, 0xdb, 0xdf, 0x40, 0x87, 0x0d, 0x30, 0x3b, 0xf6, 0x38, 0x6f, 0xac, 0xb1, 0x9c,
-	0x9e, 0x8d, 0xe1, 0x40, 0x09, 0x48, 0x00, 0xea, 0xd9, 0x03, 0xbd, 0xa9, 0xc6, 0x52, 0x3f, 0x0e,
-	0x04, 0x95, 0x22, 0x99, 0x38, 0x82, 0xad, 0x70, 0xde, 0x5c, 0x63, 0x15, 0xc2, 0x48, 0x1c, 0xc1,
-	0x03, 0x88, 0xb3, 0xc4, 0x79, 0x4b, 0x8d, 0xd5, 0x11, 0x33, 0x71, 0x89, 0x40, 0x3d, 0x7b, 0xa0,
-	0xb7, 0xd6, 0x58, 0xb9, 0x31, 0x13, 0x47, 0xb0, 0xbf, 0x89, 0xe6, 0x0c, 0x40, 0xe2, 0xe4, 0xc2,
-	0x06, 0xe9, 0x6d, 0x35, 0x56, 0x95, 0xbc, 0x18, 0x12, 0xaf, 0x62, 0xfe, 0x6d, 0xe8, 0x22, 0x13,
-	0x79, 0x69, 0xb0, 0xde, 0x5e, 0x63, 0xa2, 0xf5, 0x70, 0x9c, 0x3e, 0xee, 0x2d, 0x61, 0x43, 0xac,
-	0xc3, 0xab, 0x7d, 0x16, 0x48, 0xef, 0xa8, 0x31, 0x75, 0x1b, 0xdf, 0x10, 0x4c, 0x1b, 0x0f, 0xa2,
-	0xcf, 0xf2, 0x8b, 0x7a, 0x67, 0x8d, 0x69, 0xe0, 0x04, 0xfa, 0x08, 0x1e, 0x48, 0x9f, 0x25, 0xd6,
-	0xbb, 0x6a, 0x4c, 0x2b, 0x27, 0xd1, 0x97, 0xb8, 0xff, 0xe0, 0xb0, 0xc7, 0x0a, 0xaa, 0x5f, 0x63,
-	0xa2, 0x3a, 0xbe, 0xff, 0x40, 0x93, 0x27, 0x65, 0x14, 0x1c, 0xee, 0xd8, 0x00, 0xbd, 0xbb, 0xc6,
-	0xba, 0x80, 0x21, 0xa3, 0xe0, 0xc4, 0xd7, 0xbc, 0x21, 0xd8, 0x59, 0x91, 0x15, 0xce, 0x7b, 0x6a,
-	0x4c, 0xa2, 0xc7, 0x37, 0x04, 0x13, 0xf8, 0xfe, 0x03, 0x0e, 0xba, 0xc4, 0x80, 0x23, 0x8f, 0x90,
-	0xac, 0xc0, 0xde, 0x5b, 0x1b, 0x42, 0xca, 0xcf, 0xc5, 0x96, 0x18, 0x7e, 0xe6, 0x3f, 0xee, 0xa0,
-	0x52, 0xe2, 0x32, 0xf9, 0xe3, 0x01, 0xab, 0x95, 0xde, 0x5b, 0x1b, 0x4e, 0xf6, 0x5f, 0x62, 0x5e,
-	0x2c, 0xff, 0xd8, 0x7f, 0xd8, 0x41, 0xdf, 0x67, 0x58, 0xaf, 0xf2, 0x5c, 0xc6, 0x6a, 0xb5, 0xef,
-	0xab, 0x0d, 0xf3, 0x57, 0xc2, 0x45, 0xb1, 0xb5, 0xca, 0x0f, 0xfd, 0xfb, 0x1c, 0x74, 0xa9, 0xb1,
-	0x47, 0xc8, 0x63, 0x3c, 0xab, 0xa5, 0xde, 0x57, 0x4b, 0xf5, 0x27, 0xc5, 0xc5, 0x86, 0xce, 0x12,
-	0x7e, 0xea, 0x3f, 0xea, 0xa0, 0x23, 0x03, 0x16, 0x99, 0x66, 0x03, 0xdc, 0x5f, 0x4b, 0xfb, 0x07,
-	0xc8, 0xa5, 0x49, 0x4b, 0x15, 0x5f, 0xfe, 0x43, 0x0e, 0x92, 0xe9, 0xa6, 0xdf, 0xb4, 0xb6, 0x59,
-	0xe1, 0x03, 0x35, 0xf6, 0x38, 0xca, 0xe6, 0x4d, 0x1b, 0xb3, 0x80, 0x0d, 0x12, 0x56, 0xe3, 0x37,
-	0xd5, 0x1a, 0xa3, 0x3f, 0x30, 0xb2, 0x4b, 0xa6, 0xbe, 0x7a, 0x5d, 0x5c, 0xa2, 0x69, 0xcf, 0x97,
-	0xfc, 0x2d, 0xb5, 0x74, 0x46, 0x9e, 0x31, 0xd9, 0x65, 0x43, 0x5f, 0xbf, 0x6e, 0x3e, 0x1b, 0x07,
-	0x04, 0xdd, 0x78, 0xbb, 0xda, 0xed, 0xa2, 0x8f, 0xa5, 0xec, 0x76, 0x75, 0x5f, 0xbb, 0xae, 0xee,
-	0xc5, 0x11, 0xb9, 0x82, 0xdc, 0x32, 0x43, 0xa6, 0x90, 0x90, 0xf7, 0xf7, 0xd5, 0xeb, 0xee, 0x06,
-	0x44, 0x2e, 0x25, 0xbb, 0x89, 0xb4, 0x5a, 0x76, 0xd9, 0x07, 0xfa, 0xf1, 0xeb, 0xf2, 0x66, 0x6a,
-	0x09, 0x1e, 0x44, 0xad, 0x25, 0xec, 0x83, 0x7d, 0xed, 0xba, 0x7d, 0x02, 0xb5, 0x04, 0x0f, 0xa2,
-	0xd6, 0x12, 0xf2, 0xa1, 0xbe, 0x7a, 0x5d, 0x3f, 0x81, 0x5a, 0x82, 0xfd, 0xae, 0x2a, 0x61, 0x62,
-	0x4f, 0xe5, 0xac, 0x20, 0x1f, 0xee, 0xeb, 0xd7, 0xfd, 0x0f, 0xc7, 0x41, 0x85, 0xee, 0xbc, 0x13,
-	0x5d, 0x6c, 0xa4, 0x36, 0x0d, 0xec, 0x23, 0xfd, 0xc8, 0xcf, 0x05, 0xcc, 0x19, 0xe8, 0x15, 0x1a,
-	0xf4, 0x76, 0xf3, 0x4e, 0xb2, 0x17, 0xa1, 0xef, 0xef, 0x47, 0x7e, 0x6e, 0xc0, 0xb0, 0x8d, 0x40,
-	0x8f, 0x0e, 0x62, 0xd8, 0xf2, 0x4b, 0xfd, 0x40, 0x5f, 0xff, 0xb9, 0x82, 0x24, 0x86, 0x09, 0x1e,
-	0xcc, 0xb0, 0x25, 0xec, 0xa3, 0xfd, 0xc8, 0xcf, 0x1d, 0x24, 0x32, 0x4c, 0xb0, 0x7f, 0xde, 0xbc,
-	0x85, 0x53, 0xe8, 0xd4, 0xc7, 0xfa, 0xc6, 0x9f, 0x4b, 0x30, 0xec, 0x65, 0x2e, 0x5c, 0x5f, 0x97,
-	0x90, 0xb0, 0xf6, 0xca, 0xf5, 0xf1, 0x7e, 0xd2, 0xcf, 0x2d, 0x98, 0x72, 0x17, 0xd4, 0xec, 0xeb,
-	0x1d, 0xf3, 0xde, 0xb2, 0xd7, 0xb3, 0x4f, 0xf4, 0x77, 0xfb, 0xbd, 0x06, 0xc3, 0x66, 0x03, 0xad,
-	0xfb, 0x84, 0x26, 0xca, 0x4c, 0xcf, 0x4b, 0xad, 0x56, 0xf2, 0x64, 0xff, 0x7b, 0xf0, 0x83, 0x0f,
-	0x17, 0xc5, 0x17, 0x2b, 0x55, 0xef, 0x63, 0x9a, 0xea, 0x35, 0x3f, 0x63, 0xb5, 0x5a, 0xf2, 0x53,
-	0xfd, 0xa1, 0x7e, 0x31, 0xe2, 0x12, 0x53, 0x6d, 0x96, 0x2a, 0x6d, 0x4d, 0x3d, 0x72, 0xd2, 0x2e,
-	0x0b, 0xda, 0x2d, 0xf2, 0xbb, 0x0e, 0xbb, 0x59, 0x28, 0xcf, 0x9c, 0x02, 0xe5, 0x8a, 0xa1, 0xbf,
-	0xae, 0x8a, 0x16, 0xfd, 0xb2, 0xa1, 0x15, 0xcc, 0x07, 0x19, 0x8c, 0x7a, 0xe8, 0x14, 0xa8, 0x57,
-	0x14, 0xfd, 0x73, 0xea, 0x8e, 0x8d, 0x5c, 0x56, 0xb4, 0x02, 0xfa, 0x10, 0x03, 0x52, 0x4f, 0x9d,
-	0x02, 0xed, 0x8a, 0x63, 0x02, 0x52, 0x0a, 0xc9, 0xf0, 0x61, 0x86, 0x54, 0x30, 0x20, 0x71, 0xad,
-	0x90, 0xc8, 0x9d, 0x65, 0xd1, 0xfb, 0x08, 0x03, 0xca, 0x9a, 0xb9, 0x23, 0x78, 0x00, 0x77, 0x96,
-	0x40, 0x1f, 0x65, 0x40, 0x6e, 0x02, 0x77, 0x89, 0x48, 0x29, 0x34, 0xc1, 0xc7, 0x18, 0xd2, 0x68,
-	0x02, 0x77, 0x04, 0xfb, 0xb7, 0xaa, 0x05, 0x34, 0x7a, 0xd9, 0xd3, 0x0a, 0xea, 0xe3, 0x0c, 0x4a,
-	0x3d, 0x7a, 0x0a, 0xf4, 0x2b, 0xa2, 0x7e, 0x53, 0x6d, 0x8b, 0xb1, 0xcb, 0xa2, 0x56, 0x60, 0x9f,
-	0x60, 0x60, 0xea, 0xd9, 0x53, 0x10, 0xb9, 0x62, 0x9a, 0xb0, 0x2b, 0xec, 0xdb, 0xfe, 0x27, 0x19,
-	0x54, 0xc6, 0xb0, 0x2b, 0xa0, 0xd9, 0x0f, 0x60, 0xd0, 0xf2, 0xcb, 0xfa, 0x14, 0x43, 0xca, 0x27,
-	0x31, 0x48, 0xf0, 0x40, 0x06, 0x2d, 0xc1, 0x3e, 0xcd, 0xc0, 0x8a, 0x89, 0x0c, 0x26, 0xee, 0xc2,
-	0x14, 0x6d, 0xfd, 0x69, 0x86, 0xe5, 0x18, 0x76, 0x21, 0x6f, 0xe3, 0x09, 0x99, 0x65, 0xdf, 0xc5,
-	0x9f, 0x61, 0x48, 0xe3, 0xa6, 0xcc, 0x82, 0x96, 0x6d, 0xde, 0x15, 0xf6, 0x0d, 0xfb, 0x59, 0x06,
-	0x34, 0x61, 0xd8, 0x15, 0xd0, 0x95, 0x1f, 0xd4, 0x4e, 0xa0, 0x0c, 0xb7, 0x7d, 0xad, 0xd0, 0x9e,
-	0x63, 0x68, 0xc3, 0x1f, 0x41, 0x05, 0xd1, 0x3b, 0xc2, 0x54, 0x3d, 0x94, 0x12, 0xd7, 0x99, 0xe6,
-	0x04, 0xe2, 0x79, 0xb6, 0xd4, 0xef, 0xc9, 0x19, 0x54, 0x60, 0xb8, 0x64, 0xec, 0x3f, 0xa2, 0xc9,
-	0x1d, 0xd3, 0x7d, 0x63, 0xab, 0xe5, 0x7e, 0x86, 0x2f, 0x77, 0xe8, 0x43, 0xa8, 0x20, 0x76, 0x4b,
-	0xd9, 0xbf, 0x5f, 0x3b, 0x84, 0x32, 0x5e, 0x58, 0xb6, 0x5a, 0xeb, 0x67, 0xf9, 0x2e, 0x48, 0x7f,
-	0x0a, 0x15, 0xc4, 0xaf, 0x39, 0x53, 0x39, 0x76, 0x64, 0xc0, 0x2a, 0xd3, 0xec, 0x81, 0xcf, 0x71,
-	0x52, 0x87, 0x3a, 0x86, 0x0a, 0x8c, 0xf7, 0xa4, 0xfd, 0x87, 0xd5, 0x63, 0x28, 0xfd, 0x86, 0xb3,
-	0xcd, 0x12, 0x3f, 0xcf, 0x96, 0x98, 0xf2, 0x1c, 0x4a, 0xbf, 0x67, 0x9d, 0xb0, 0x9c, 0xe5, 0x82,
-	0x78, 0x55, 0xbf, 0xd7, 0xde, 0xec, 0xb4, 0x97, 0x67, 0xe3, 0xef, 0x48, 0xb2, 0x0f, 0x2e, 0x5b,
-	0x40, 0xfb, 0xd5, 0xf7, 0xc4, 0x4d, 0x0f, 0x44, 0x91, 0x3b, 0x21, 0x1f, 0x88, 0xbe, 0xe0, 0x2c,
-	0xbf, 0xe6, 0xc7, 0x6b, 0xb1, 0x65, 0x1f, 0x63, 0xcb, 0x5e, 0xed, 0xad, 0x1f, 0xdb, 0x6c, 0x77,
-	0x1b, 0xdb, 0xed, 0x7a, 0x93, 0xfd, 0xce, 0x2d, 0x1b, 0xdd, 0x39, 0xd6, 0x6c, 0x6c, 0xd4, 0xcf,
-	0x9e, 0x3f, 0x96, 0xf4, 0x93, 0xb8, 0xff, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x83, 0x33, 0xd4, 0x34,
-	0x2d, 0x57, 0x00, 0x00,
-}
diff --git a/internal/testprotos/legacy/proto2_20160519_a4ab9ec5/test.proto b/internal/testprotos/legacy/proto2_20160519_a4ab9ec5/test.proto
deleted file mode 100644
index e765d64..0000000
--- a/internal/testprotos/legacy/proto2_20160519_a4ab9ec5/test.proto
+++ /dev/null
@@ -1,333 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package google.golang.org.proto2_20160519;
-option go_package = "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20160519_a4ab9ec5";
-
-enum SiblingEnum {
-	ALPHA   = 0;
-	BRAVO   = 10;
-	CHARLIE = 200;
-}
-
-message SiblingMessage {
-	optional string  f1 = 1;
-	required string  f2 = 2;
-	repeated string  f3 = 3;
-	optional Message f4 = 4;
-}
-
-message Message {
-	enum ChildEnum {
-		ALPHA   = 0;
-		BRAVO   = 1;
-		CHARLIE = 2;
-	}
-	message ChildMessage {
-		optional string  f1 = 1;
-		required string  f2 = 2;
-		repeated string  f3 = 3;
-	    optional Message f4 = 4;
-	}
-	optional group NamedGroup = 1 {
-		optional string  f1 = 1;
-		required string  f2 = 2;
-		repeated string  f3 = 3;
-	    optional Message f4 = 4;
-	}
-
-	// Optional fields.
-	optional bool     optional_bool     = 100;
-	optional int32    optional_int32    = 101;
-	optional sint32   optional_sint32   = 102;
-	optional uint32   optional_uint32   = 103;
-	optional int64    optional_int64    = 104;
-	optional sint64   optional_sint64   = 105;
-	optional uint64   optional_uint64   = 106;
-	optional fixed32  optional_fixed32  = 107;
-	optional sfixed32 optional_sfixed32 = 108;
-	optional float    optional_float    = 109;
-	optional fixed64  optional_fixed64  = 110;
-	optional sfixed64 optional_sfixed64 = 111;
-	optional double   optional_double   = 112;
-	optional string   optional_string   = 113;
-	optional bytes    optional_bytes    = 114;
-
-	optional ChildEnum      optional_child_enum      = 115;
-	optional ChildMessage   optional_child_message   = 116;
-	optional NamedGroup     optional_named_group     = 117;
-	optional SiblingEnum    optional_sibling_enum    = 118;
-	optional SiblingMessage optional_sibling_message = 119;
-	optional group OptionalGroup = 120 {
-		optional string f1 = 1;
-		required string f2 = 2;
-		repeated string f3 = 3;
-	}
-
-	// Optional default fields.
-	optional bool      defaulted_bool     = 200 [default = true];
-	optional int32     defaulted_int32    = 201 [default = -12345];
-	optional sint32    defaulted_sint32   = 202 [default = -3200];
-	optional uint32    defaulted_uint32   = 203 [default = 3200];
-	optional int64     defaulted_int64    = 204 [default = -123456789];
-	optional sint64    defaulted_sint64   = 205 [default = -6400];
-	optional uint64    defaulted_uint64   = 206 [default = 6400];
-	optional fixed32   defaulted_fixed32  = 207 [default = 320000];
-	optional sfixed32  defaulted_sfixed32 = 208 [default = -320000];
-	optional float     defaulted_float    = 209 [default = 3.14159];
-	optional fixed64   defaulted_fixed64  = 210 [default = 640000];
-	optional sfixed64  defaulted_sfixed64 = 211 [default = -640000];
-	optional double    defaulted_double   = 212 [default = 3.14159265359];
-	optional string    defaulted_string   = 213 [default = "hello, \"world!\"\n"];
-	optional bytes     defaulted_bytes    = 214 [default = "dead\xde\xad\xbe\xefbeef"];
-
-	optional ChildEnum   defaulted_child_enum   = 215 [default = ALPHA];
-	optional SiblingEnum defaulted_sibling_enum = 216 [default = ALPHA];
-
-	// Required fields.
-	required bool     required_bool     = 300;
-	required int32    required_int32    = 301;
-	required sint32   required_sint32   = 302;
-	required uint32   required_uint32   = 303;
-	required int64    required_int64    = 304;
-	required sint64   required_sint64   = 305;
-	required uint64   required_uint64   = 306;
-	required fixed32  required_fixed32  = 307;
-	required sfixed32 required_sfixed32 = 308;
-	required float    required_float    = 309;
-	required fixed64  required_fixed64  = 310;
-	required sfixed64 required_sfixed64 = 311;
-	required double   required_double   = 312;
-	required string   required_string   = 313;
-	required bytes    required_bytes    = 314;
-
-	required ChildEnum      required_child_enum      = 315;
-	required ChildMessage   required_child_message   = 316;
-	required NamedGroup     required_named_group     = 317;
-	required SiblingEnum    required_sibling_enum    = 318;
-	required SiblingMessage required_sibling_message = 319;
-	required group RequiredGroup = 320 {
-		optional string f1 = 1;
-		required string f2 = 2;
-		repeated string f3 = 3;
-	}
-	// Required default fields.
-	required bool      required_defaulted_bool     = 400 [default = true];
-	required int32     required_defaulted_int32    = 401 [default = -12345];
-	required sint32    required_defaulted_sint32   = 402 [default = -3200];
-	required uint32    required_defaulted_uint32   = 403 [default = 3200];
-	required int64     required_defaulted_int64    = 404 [default = -123456789];
-	required sint64    required_defaulted_sint64   = 405 [default = -6400];
-	required uint64    required_defaulted_uint64   = 406 [default = 6400];
-	required fixed32   required_defaulted_fixed32  = 407 [default = 320000];
-	required sfixed32  required_defaulted_sfixed32 = 408 [default = -320000];
-	required float     required_defaulted_float    = 409 [default = 3.14159];
-	required fixed64   required_defaulted_fixed64  = 410 [default = 640000];
-	required sfixed64  required_defaulted_sfixed64 = 411 [default = -640000];
-	required double    required_defaulted_double   = 412 [default = 3.14159265359];
-	required string    required_defaulted_string   = 413 [default = "hello, \"world!\"\n"];
-	required bytes     required_defaulted_bytes    = 414 [default = "dead\xde\xad\xbe\xefbeef"];
-
-	required ChildEnum   required_defaulted_child_enum   = 415 [default = ALPHA];
-	required SiblingEnum required_defaulted_sibling_enum = 416 [default = ALPHA];
-
-	// Repeated fields.
-	repeated bool     repeated_bool     = 500;
-	repeated int32    repeated_int32    = 501;
-	repeated sint32   repeated_sint32   = 502;
-	repeated uint32   repeated_uint32   = 503;
-	repeated int64    repeated_int64    = 504;
-	repeated sint64   repeated_sint64   = 505;
-	repeated uint64   repeated_uint64   = 506;
-	repeated fixed32  repeated_fixed32  = 507;
-	repeated sfixed32 repeated_sfixed32 = 508;
-	repeated float    repeated_float    = 509;
-	repeated fixed64  repeated_fixed64  = 510;
-	repeated sfixed64 repeated_sfixed64 = 511;
-	repeated double   repeated_double   = 512;
-	repeated string   repeated_string   = 513;
-	repeated bytes    repeated_bytes    = 514;
-
-	repeated ChildEnum      repeated_child_enum      = 515;
-	repeated ChildMessage   repeated_child_message   = 516;
-	repeated NamedGroup     repeated_named_group     = 517;
-	repeated SiblingEnum    repeated_sibling_enum    = 518;
-	repeated SiblingMessage repeated_sibling_message = 519;
-	repeated group RepeatedGroup = 520 {
-		optional string f1 = 1;
-		required string f2 = 2;
-		repeated string f3 = 3;
-	}
-
-	// Map fields.
-	map<bool, bool>     map_bool_bool     = 600;
-	map<bool, int32>    map_bool_int32    = 601;
-	map<bool, sint32>   map_bool_sint32   = 602;
-	map<bool, uint32>   map_bool_uint32   = 603;
-	map<bool, int64>    map_bool_int64    = 604;
-	map<bool, sint64>   map_bool_sint64   = 605;
-	map<bool, uint64>   map_bool_uint64   = 606;
-	map<bool, fixed32>  map_bool_fixed32  = 607;
-	map<bool, sfixed32> map_bool_sfixed32 = 608;
-	map<bool, float>    map_bool_float    = 609;
-	map<bool, fixed64>  map_bool_fixed64  = 610;
-	map<bool, sfixed64> map_bool_sfixed64 = 611;
-	map<bool, double>   map_bool_double   = 612;
-	map<bool, string>   map_bool_string   = 613;
-	map<bool, bytes>    map_bool_bytes    = 614;
-
-	map<bool, ChildEnum>      map_bool_child_enum      = 615;
-	map<bool, ChildMessage>   map_bool_child_message   = 616;
-	map<bool, NamedGroup>     map_bool_named_group     = 617;
-	map<bool, SiblingEnum>    map_bool_sibling_enum    = 618;
-	map<bool, SiblingMessage> map_bool_sibling_message = 619;
-
-	map<int32, bool>   map_int32_bool   = 620;
-	map<sint32, bool>  map_sint32_bool  = 621;
-	map<uint32, bool>  map_uint32_bool  = 622;
-	map<int64, bool>   map_int64_bool   = 623;
-	map<sint64, bool>  map_sint64_bool  = 624;
-	map<uint64, bool>  map_uint64_bool  = 625;
-	map<fixed32, bool> map_fixed32_bool = 626;
-	map<string, bool>  map_string_bool  = 627;
-
-	// Oneof fields.
-	oneof oneof_union {
-		bool     oneof_bool     = 700;
-		int32    oneof_int32    = 701;
-		sint32   oneof_sint32   = 702;
-		uint32   oneof_uint32   = 703;
-		int64    oneof_int64    = 704;
-		sint64   oneof_sint64   = 705;
-		uint64   oneof_uint64   = 706;
-		fixed32  oneof_fixed32  = 707;
-		sfixed32 oneof_sfixed32 = 708;
-		float    oneof_float    = 709;
-		fixed64  oneof_fixed64  = 710;
-		sfixed64 oneof_sfixed64 = 711;
-		double   oneof_double   = 712;
-		string   oneof_string   = 713;
-		bytes    oneof_bytes    = 714;
-
-		ChildEnum      oneof_child_enum      = 715;
-		ChildMessage   oneof_child_message   = 716;
-		NamedGroup     oneof_named_group     = 717;
-		SiblingEnum    oneof_sibling_enum    = 718;
-		SiblingMessage oneof_sibling_message = 719;
-		group OneofGroup = 720 {
-			optional string f1 = 1;
-			required string f2 = 2;
-			repeated string f3 = 3;
-		}
-
-		string oneof_string1 = 721;
-		string oneof_string2 = 722;
-		string oneof_string3 = 723;
-	}
-
-	// Oneof default fields.
-	oneof oneof_defaulted_union {
-		bool      oneof_defaulted_bool     = 800 [default = true];
-		int32     oneof_defaulted_int32    = 801 [default = -12345];
-		sint32    oneof_defaulted_sint32   = 802 [default = -3200];
-		uint32    oneof_defaulted_uint32   = 803 [default = 3200];
-		int64     oneof_defaulted_int64    = 804 [default = -123456789];
-		sint64    oneof_defaulted_sint64   = 805 [default = -6400];
-		uint64    oneof_defaulted_uint64   = 806 [default = 6400];
-		fixed32   oneof_defaulted_fixed32  = 807 [default = 320000];
-		sfixed32  oneof_defaulted_sfixed32 = 808 [default = -320000];
-		float     oneof_defaulted_float    = 809 [default = 3.14159];
-		fixed64   oneof_defaulted_fixed64  = 810 [default = 640000];
-		sfixed64  oneof_defaulted_sfixed64 = 811 [default = -640000];
-		double    oneof_defaulted_double   = 812 [default = 3.14159265359];
-		string    oneof_defaulted_string   = 813 [default = "hello, \"world!\"\n"];
-		bytes     oneof_defaulted_bytes    = 814 [default = "dead\xde\xad\xbe\xefbeef"];
-
-		ChildEnum   oneof_defaulted_child_enum   = 815 [default = ALPHA];
-		SiblingEnum oneof_defaulted_sibling_enum = 816 [default = ALPHA];
-	}
-
-	// Extension fields.
-	extend Message {
-		// Optional fields.
-		optional bool     extension_optional_bool     = 10000;
-		optional int32    extension_optional_int32    = 10001;
-		optional sint32   extension_optional_sint32   = 10002;
-		optional uint32   extension_optional_uint32   = 10003;
-		optional int64    extension_optional_int64    = 10004;
-		optional sint64   extension_optional_sint64   = 10005;
-		optional uint64   extension_optional_uint64   = 10006;
-		optional fixed32  extension_optional_fixed32  = 10007;
-		optional sfixed32 extension_optional_sfixed32 = 10008;
-		optional float    extension_optional_float    = 10009;
-		optional fixed64  extension_optional_fixed64  = 10010;
-		optional sfixed64 extension_optional_sfixed64 = 10011;
-		optional double   extension_optional_double   = 10012;
-		optional string   extension_optional_string   = 10013;
-		optional bytes    extension_optional_bytes    = 10014;
-
-		optional ChildEnum      extension_optional_child_enum      = 10015;
-		optional ChildMessage   extension_optional_child_message   = 10016;
-		optional NamedGroup     extension_optional_named_group     = 10017;
-		optional SiblingEnum    extension_optional_sibling_enum    = 10018;
-		optional SiblingMessage extension_optional_sibling_message = 10019;
-		optional group ExtensionOptionalGroup = 10020 {
-			optional string f1 = 1;
-			required string f2 = 2;
-			repeated string f3 = 3;
-		}
-
-		// Optional default fields.
-		optional bool      extension_defaulted_bool     = 20000 [default = true];
-		optional int32     extension_defaulted_int32    = 20001 [default = -12345];
-		optional sint32    extension_defaulted_sint32   = 20002 [default = -3200];
-		optional uint32    extension_defaulted_uint32   = 20003 [default = 3200];
-		optional int64     extension_defaulted_int64    = 20004 [default = -123456789];
-		optional sint64    extension_defaulted_sint64   = 20005 [default = -6400];
-		optional uint64    extension_defaulted_uint64   = 20006 [default = 6400];
-		optional fixed32   extension_defaulted_fixed32  = 20007 [default = 320000];
-		optional sfixed32  extension_defaulted_sfixed32 = 20008 [default = -320000];
-		optional float     extension_defaulted_float    = 20009 [default = 3.14159];
-		optional fixed64   extension_defaulted_fixed64  = 20010 [default = 640000];
-		optional sfixed64  extension_defaulted_sfixed64 = 20011 [default = -640000];
-		optional double    extension_defaulted_double   = 20012 [default = 3.14159265359];
-		optional string    extension_defaulted_string   = 20013 [default = "hello, \"world!\"\n"];
-		optional bytes     extension_defaulted_bytes    = 20014 [default = "dead\xde\xad\xbe\xefbeef"];
-
-		optional ChildEnum   extension_defaulted_child_enum   = 20015 [default = ALPHA];
-		optional SiblingEnum extension_defaulted_sibling_enum = 20016 [default = ALPHA];
-
-		// Repeated fields.
-		repeated bool     extension_repeated_bool     = 30000;
-		repeated int32    extension_repeated_int32    = 30001;
-		repeated sint32   extension_repeated_sint32   = 30002;
-		repeated uint32   extension_repeated_uint32   = 30003;
-		repeated int64    extension_repeated_int64    = 30004;
-		repeated sint64   extension_repeated_sint64   = 30005;
-		repeated uint64   extension_repeated_uint64   = 30006;
-		repeated fixed32  extension_repeated_fixed32  = 30007;
-		repeated sfixed32 extension_repeated_sfixed32 = 30008;
-		repeated float    extension_repeated_float    = 30009;
-		repeated fixed64  extension_repeated_fixed64  = 30010;
-		repeated sfixed64 extension_repeated_sfixed64 = 30011;
-		repeated double   extension_repeated_double   = 30012;
-		repeated string   extension_repeated_string   = 30013;
-		repeated bytes    extension_repeated_bytes    = 30014;
-
-		repeated ChildEnum      extension_repeated_child_enum      = 30015;
-		repeated ChildMessage   extension_repeated_child_message   = 30016;
-		repeated NamedGroup     extension_repeated_named_group     = 30017;
-		repeated SiblingEnum    extension_repeated_sibling_enum    = 30018;
-		repeated SiblingMessage extension_repeated_sibling_message = 30019;
-		repeated group ExtensionRepeatedGroup = 30020 {
-			optional string f1 = 1;
-			required string f2 = 2;
-			repeated string f3 = 3;
-		}
-	}
-
-	extensions 10000 to max;
-}
diff --git a/internal/testprotos/legacy/proto2_20180125_92554152/test.pb.go b/internal/testprotos/legacy/proto2_20180125_92554152/test.pb.go
deleted file mode 100644
index 782dd07..0000000
--- a/internal/testprotos/legacy/proto2_20180125_92554152/test.pb.go
+++ /dev/null
@@ -1,3588 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: proto2_20180125_92554152/test.proto
-
-/*
-Package proto2_20180125_92554152 is a generated protocol buffer package.
-
-It is generated from these files:
-	proto2_20180125_92554152/test.proto
-
-It has these top-level messages:
-	SiblingMessage
-	Message
-*/
-package proto2_20180125_92554152
-
-import proto "google.golang.org/protobuf/internal/protolegacy"
-import fmt "fmt"
-import 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.ProtoPackageIsVersion2 // please upgrade the proto package
-
-type SiblingEnum int32
-
-const (
-	SiblingEnum_ALPHA   SiblingEnum = 0
-	SiblingEnum_BRAVO   SiblingEnum = 10
-	SiblingEnum_CHARLIE SiblingEnum = 200
-)
-
-var SiblingEnum_name = map[int32]string{
-	0:   "ALPHA",
-	10:  "BRAVO",
-	200: "CHARLIE",
-}
-var SiblingEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   10,
-	"CHARLIE": 200,
-}
-
-func (x SiblingEnum) Enum() *SiblingEnum {
-	p := new(SiblingEnum)
-	*p = x
-	return p
-}
-func (x SiblingEnum) String() string {
-	return proto.EnumName(SiblingEnum_name, int32(x))
-}
-func (x *SiblingEnum) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(SiblingEnum_value, data, "SiblingEnum")
-	if err != nil {
-		return err
-	}
-	*x = SiblingEnum(value)
-	return nil
-}
-func (SiblingEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
-
-type Message_ChildEnum int32
-
-const (
-	Message_ALPHA   Message_ChildEnum = 0
-	Message_BRAVO   Message_ChildEnum = 1
-	Message_CHARLIE Message_ChildEnum = 2
-)
-
-var Message_ChildEnum_name = map[int32]string{
-	0: "ALPHA",
-	1: "BRAVO",
-	2: "CHARLIE",
-}
-var Message_ChildEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   1,
-	"CHARLIE": 2,
-}
-
-func (x Message_ChildEnum) Enum() *Message_ChildEnum {
-	p := new(Message_ChildEnum)
-	*p = x
-	return p
-}
-func (x Message_ChildEnum) String() string {
-	return proto.EnumName(Message_ChildEnum_name, int32(x))
-}
-func (x *Message_ChildEnum) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(Message_ChildEnum_value, data, "Message_ChildEnum")
-	if err != nil {
-		return err
-	}
-	*x = Message_ChildEnum(value)
-	return nil
-}
-func (Message_ChildEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
-
-type SiblingMessage struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	F4               *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *SiblingMessage) Reset()                    { *m = SiblingMessage{} }
-func (m *SiblingMessage) String() string            { return proto.CompactTextString(m) }
-func (*SiblingMessage) ProtoMessage()               {}
-func (*SiblingMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
-
-func (m *SiblingMessage) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *SiblingMessage) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *SiblingMessage) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func (m *SiblingMessage) GetF4() *Message {
-	if m != nil {
-		return m.F4
-	}
-	return nil
-}
-
-type Message struct {
-	Namedgroup *Message_NamedGroup `protobuf:"group,1,opt,name=NamedGroup,json=namedgroup" json:"namedgroup,omitempty"`
-	// Optional fields.
-	OptionalBool           *bool                  `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
-	OptionalInt32          *int32                 `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
-	OptionalSint32         *int32                 `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
-	OptionalUint32         *uint32                `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
-	OptionalInt64          *int64                 `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
-	OptionalSint64         *int64                 `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
-	OptionalUint64         *uint64                `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
-	OptionalFixed32        *uint32                `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
-	OptionalSfixed32       *int32                 `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
-	OptionalFloat          *float32               `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
-	OptionalFixed64        *uint64                `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
-	OptionalSfixed64       *int64                 `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
-	OptionalDouble         *float64               `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
-	OptionalString         *string                `protobuf:"bytes,113,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
-	OptionalBytes          []byte                 `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
-	OptionalChildEnum      *Message_ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,enum=google.golang.org.proto2_20180125.Message_ChildEnum" json:"optional_child_enum,omitempty"`
-	OptionalChildMessage   *Message_ChildMessage  `protobuf:"bytes,116,opt,name=optional_child_message,json=optionalChildMessage" json:"optional_child_message,omitempty"`
-	OptionalNamedGroup     *Message_NamedGroup    `protobuf:"bytes,117,opt,name=optional_named_group,json=optionalNamedGroup" json:"optional_named_group,omitempty"`
-	OptionalSiblingEnum    *SiblingEnum           `protobuf:"varint,118,opt,name=optional_sibling_enum,json=optionalSiblingEnum,enum=google.golang.org.proto2_20180125.SiblingEnum" json:"optional_sibling_enum,omitempty"`
-	OptionalSiblingMessage *SiblingMessage        `protobuf:"bytes,119,opt,name=optional_sibling_message,json=optionalSiblingMessage" json:"optional_sibling_message,omitempty"`
-	Optionalgroup          *Message_OptionalGroup `protobuf:"group,120,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
-	// Optional default fields.
-	DefaultedBool        *bool              `protobuf:"varint,200,opt,name=defaulted_bool,json=defaultedBool,def=1" json:"defaulted_bool,omitempty"`
-	DefaultedInt32       *int32             `protobuf:"varint,201,opt,name=defaulted_int32,json=defaultedInt32,def=-12345" json:"defaulted_int32,omitempty"`
-	DefaultedSint32      *int32             `protobuf:"zigzag32,202,opt,name=defaulted_sint32,json=defaultedSint32,def=-3200" json:"defaulted_sint32,omitempty"`
-	DefaultedUint32      *uint32            `protobuf:"varint,203,opt,name=defaulted_uint32,json=defaultedUint32,def=3200" json:"defaulted_uint32,omitempty"`
-	DefaultedInt64       *int64             `protobuf:"varint,204,opt,name=defaulted_int64,json=defaultedInt64,def=-123456789" json:"defaulted_int64,omitempty"`
-	DefaultedSint64      *int64             `protobuf:"zigzag64,205,opt,name=defaulted_sint64,json=defaultedSint64,def=-6400" json:"defaulted_sint64,omitempty"`
-	DefaultedUint64      *uint64            `protobuf:"varint,206,opt,name=defaulted_uint64,json=defaultedUint64,def=6400" json:"defaulted_uint64,omitempty"`
-	DefaultedFixed32     *uint32            `protobuf:"fixed32,207,opt,name=defaulted_fixed32,json=defaultedFixed32,def=320000" json:"defaulted_fixed32,omitempty"`
-	DefaultedSfixed32    *int32             `protobuf:"fixed32,208,opt,name=defaulted_sfixed32,json=defaultedSfixed32,def=-320000" json:"defaulted_sfixed32,omitempty"`
-	DefaultedFloat       *float32           `protobuf:"fixed32,209,opt,name=defaulted_float,json=defaultedFloat,def=3.14159" json:"defaulted_float,omitempty"`
-	DefaultedFixed64     *uint64            `protobuf:"fixed64,210,opt,name=defaulted_fixed64,json=defaultedFixed64,def=640000" json:"defaulted_fixed64,omitempty"`
-	DefaultedSfixed64    *int64             `protobuf:"fixed64,211,opt,name=defaulted_sfixed64,json=defaultedSfixed64,def=-640000" json:"defaulted_sfixed64,omitempty"`
-	DefaultedDouble      *float64           `protobuf:"fixed64,212,opt,name=defaulted_double,json=defaultedDouble,def=3.14159265359" json:"defaulted_double,omitempty"`
-	DefaultedString      *string            `protobuf:"bytes,213,opt,name=defaulted_string,json=defaultedString,def=hello, \"world!\"\n" json:"defaulted_string,omitempty"`
-	DefaultedBytes       []byte             `protobuf:"bytes,214,opt,name=defaulted_bytes,json=defaultedBytes,def=dead\\336\\255\\276\\357beef" json:"defaulted_bytes,omitempty"`
-	DefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,215,opt,name=defaulted_child_enum,json=defaultedChildEnum,enum=google.golang.org.proto2_20180125.Message_ChildEnum,def=0" json:"defaulted_child_enum,omitempty"`
-	DefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,216,opt,name=defaulted_sibling_enum,json=defaultedSiblingEnum,enum=google.golang.org.proto2_20180125.SiblingEnum,def=0" json:"defaulted_sibling_enum,omitempty"`
-	// Required fields.
-	RequiredBool           *bool                  `protobuf:"varint,300,req,name=required_bool,json=requiredBool" json:"required_bool,omitempty"`
-	RequiredInt32          *int32                 `protobuf:"varint,301,req,name=required_int32,json=requiredInt32" json:"required_int32,omitempty"`
-	RequiredSint32         *int32                 `protobuf:"zigzag32,302,req,name=required_sint32,json=requiredSint32" json:"required_sint32,omitempty"`
-	RequiredUint32         *uint32                `protobuf:"varint,303,req,name=required_uint32,json=requiredUint32" json:"required_uint32,omitempty"`
-	RequiredInt64          *int64                 `protobuf:"varint,304,req,name=required_int64,json=requiredInt64" json:"required_int64,omitempty"`
-	RequiredSint64         *int64                 `protobuf:"zigzag64,305,req,name=required_sint64,json=requiredSint64" json:"required_sint64,omitempty"`
-	RequiredUint64         *uint64                `protobuf:"varint,306,req,name=required_uint64,json=requiredUint64" json:"required_uint64,omitempty"`
-	RequiredFixed32        *uint32                `protobuf:"fixed32,307,req,name=required_fixed32,json=requiredFixed32" json:"required_fixed32,omitempty"`
-	RequiredSfixed32       *int32                 `protobuf:"fixed32,308,req,name=required_sfixed32,json=requiredSfixed32" json:"required_sfixed32,omitempty"`
-	RequiredFloat          *float32               `protobuf:"fixed32,309,req,name=required_float,json=requiredFloat" json:"required_float,omitempty"`
-	RequiredFixed64        *uint64                `protobuf:"fixed64,310,req,name=required_fixed64,json=requiredFixed64" json:"required_fixed64,omitempty"`
-	RequiredSfixed64       *int64                 `protobuf:"fixed64,311,req,name=required_sfixed64,json=requiredSfixed64" json:"required_sfixed64,omitempty"`
-	RequiredDouble         *float64               `protobuf:"fixed64,312,req,name=required_double,json=requiredDouble" json:"required_double,omitempty"`
-	RequiredString         *string                `protobuf:"bytes,313,req,name=required_string,json=requiredString" json:"required_string,omitempty"`
-	RequiredBytes          []byte                 `protobuf:"bytes,314,req,name=required_bytes,json=requiredBytes" json:"required_bytes,omitempty"`
-	RequiredChildEnum      *Message_ChildEnum     `protobuf:"varint,315,req,name=required_child_enum,json=requiredChildEnum,enum=google.golang.org.proto2_20180125.Message_ChildEnum" json:"required_child_enum,omitempty"`
-	RequiredChildMessage   *Message_ChildMessage  `protobuf:"bytes,316,req,name=required_child_message,json=requiredChildMessage" json:"required_child_message,omitempty"`
-	RequiredNamedGroup     *Message_NamedGroup    `protobuf:"bytes,317,req,name=required_named_group,json=requiredNamedGroup" json:"required_named_group,omitempty"`
-	RequiredSiblingEnum    *SiblingEnum           `protobuf:"varint,318,req,name=required_sibling_enum,json=requiredSiblingEnum,enum=google.golang.org.proto2_20180125.SiblingEnum" json:"required_sibling_enum,omitempty"`
-	RequiredSiblingMessage *SiblingMessage        `protobuf:"bytes,319,req,name=required_sibling_message,json=requiredSiblingMessage" json:"required_sibling_message,omitempty"`
-	Requiredgroup          *Message_RequiredGroup `protobuf:"group,320,req,name=RequiredGroup,json=requiredgroup" json:"requiredgroup,omitempty"`
-	// Required default fields.
-	RequiredDefaultedBool        *bool              `protobuf:"varint,400,req,name=required_defaulted_bool,json=requiredDefaultedBool,def=1" json:"required_defaulted_bool,omitempty"`
-	RequiredDefaultedInt32       *int32             `protobuf:"varint,401,req,name=required_defaulted_int32,json=requiredDefaultedInt32,def=-12345" json:"required_defaulted_int32,omitempty"`
-	RequiredDefaultedSint32      *int32             `protobuf:"zigzag32,402,req,name=required_defaulted_sint32,json=requiredDefaultedSint32,def=-3200" json:"required_defaulted_sint32,omitempty"`
-	RequiredDefaultedUint32      *uint32            `protobuf:"varint,403,req,name=required_defaulted_uint32,json=requiredDefaultedUint32,def=3200" json:"required_defaulted_uint32,omitempty"`
-	RequiredDefaultedInt64       *int64             `protobuf:"varint,404,req,name=required_defaulted_int64,json=requiredDefaultedInt64,def=-123456789" json:"required_defaulted_int64,omitempty"`
-	RequiredDefaultedSint64      *int64             `protobuf:"zigzag64,405,req,name=required_defaulted_sint64,json=requiredDefaultedSint64,def=-6400" json:"required_defaulted_sint64,omitempty"`
-	RequiredDefaultedUint64      *uint64            `protobuf:"varint,406,req,name=required_defaulted_uint64,json=requiredDefaultedUint64,def=6400" json:"required_defaulted_uint64,omitempty"`
-	RequiredDefaultedFixed32     *uint32            `protobuf:"fixed32,407,req,name=required_defaulted_fixed32,json=requiredDefaultedFixed32,def=320000" json:"required_defaulted_fixed32,omitempty"`
-	RequiredDefaultedSfixed32    *int32             `protobuf:"fixed32,408,req,name=required_defaulted_sfixed32,json=requiredDefaultedSfixed32,def=-320000" json:"required_defaulted_sfixed32,omitempty"`
-	RequiredDefaultedFloat       *float32           `protobuf:"fixed32,409,req,name=required_defaulted_float,json=requiredDefaultedFloat,def=3.14159" json:"required_defaulted_float,omitempty"`
-	RequiredDefaultedFixed64     *uint64            `protobuf:"fixed64,410,req,name=required_defaulted_fixed64,json=requiredDefaultedFixed64,def=640000" json:"required_defaulted_fixed64,omitempty"`
-	RequiredDefaultedSfixed64    *int64             `protobuf:"fixed64,411,req,name=required_defaulted_sfixed64,json=requiredDefaultedSfixed64,def=-640000" json:"required_defaulted_sfixed64,omitempty"`
-	RequiredDefaultedDouble      *float64           `protobuf:"fixed64,412,req,name=required_defaulted_double,json=requiredDefaultedDouble,def=3.14159265359" json:"required_defaulted_double,omitempty"`
-	RequiredDefaultedString      *string            `protobuf:"bytes,413,req,name=required_defaulted_string,json=requiredDefaultedString,def=hello, \"world!\"\n" json:"required_defaulted_string,omitempty"`
-	RequiredDefaultedBytes       []byte             `protobuf:"bytes,414,req,name=required_defaulted_bytes,json=requiredDefaultedBytes,def=dead\\336\\255\\276\\357beef" json:"required_defaulted_bytes,omitempty"`
-	RequiredDefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,415,req,name=required_defaulted_child_enum,json=requiredDefaultedChildEnum,enum=google.golang.org.proto2_20180125.Message_ChildEnum,def=0" json:"required_defaulted_child_enum,omitempty"`
-	RequiredDefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,416,req,name=required_defaulted_sibling_enum,json=requiredDefaultedSiblingEnum,enum=google.golang.org.proto2_20180125.SiblingEnum,def=0" json:"required_defaulted_sibling_enum,omitempty"`
-	// Repeated fields.
-	RepeatedBool           []bool                   `protobuf:"varint,500,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
-	RepeatedInt32          []int32                  `protobuf:"varint,501,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
-	RepeatedSint32         []int32                  `protobuf:"zigzag32,502,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
-	RepeatedUint32         []uint32                 `protobuf:"varint,503,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
-	RepeatedInt64          []int64                  `protobuf:"varint,504,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
-	RepeatedSint64         []int64                  `protobuf:"zigzag64,505,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
-	RepeatedUint64         []uint64                 `protobuf:"varint,506,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
-	RepeatedFixed32        []uint32                 `protobuf:"fixed32,507,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
-	RepeatedSfixed32       []int32                  `protobuf:"fixed32,508,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
-	RepeatedFloat          []float32                `protobuf:"fixed32,509,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
-	RepeatedFixed64        []uint64                 `protobuf:"fixed64,510,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
-	RepeatedSfixed64       []int64                  `protobuf:"fixed64,511,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
-	RepeatedDouble         []float64                `protobuf:"fixed64,512,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
-	RepeatedString         []string                 `protobuf:"bytes,513,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
-	RepeatedBytes          [][]byte                 `protobuf:"bytes,514,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
-	RepeatedChildEnum      []Message_ChildEnum      `protobuf:"varint,515,rep,name=repeated_child_enum,json=repeatedChildEnum,enum=google.golang.org.proto2_20180125.Message_ChildEnum" json:"repeated_child_enum,omitempty"`
-	RepeatedChildMessage   []*Message_ChildMessage  `protobuf:"bytes,516,rep,name=repeated_child_message,json=repeatedChildMessage" json:"repeated_child_message,omitempty"`
-	RepeatedNamedGroup     []*Message_NamedGroup    `protobuf:"bytes,517,rep,name=repeated_named_group,json=repeatedNamedGroup" json:"repeated_named_group,omitempty"`
-	RepeatedSiblingEnum    []SiblingEnum            `protobuf:"varint,518,rep,name=repeated_sibling_enum,json=repeatedSiblingEnum,enum=google.golang.org.proto2_20180125.SiblingEnum" json:"repeated_sibling_enum,omitempty"`
-	RepeatedSiblingMessage []*SiblingMessage        `protobuf:"bytes,519,rep,name=repeated_sibling_message,json=repeatedSiblingMessage" json:"repeated_sibling_message,omitempty"`
-	Repeatedgroup          []*Message_RepeatedGroup `protobuf:"group,520,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
-	// Map fields.
-	MapBoolBool           map[bool]bool                  `protobuf:"bytes,600,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolInt32          map[bool]int32                 `protobuf:"bytes,601,rep,name=map_bool_int32,json=mapBoolInt32" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolSint32         map[bool]int32                 `protobuf:"bytes,602,rep,name=map_bool_sint32,json=mapBoolSint32" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
-	MapBoolUint32         map[bool]uint32                `protobuf:"bytes,603,rep,name=map_bool_uint32,json=mapBoolUint32" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolInt64          map[bool]int64                 `protobuf:"bytes,604,rep,name=map_bool_int64,json=mapBoolInt64" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolSint64         map[bool]int64                 `protobuf:"bytes,605,rep,name=map_bool_sint64,json=mapBoolSint64" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
-	MapBoolUint64         map[bool]uint64                `protobuf:"bytes,606,rep,name=map_bool_uint64,json=mapBoolUint64" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolFixed32        map[bool]uint32                `protobuf:"bytes,607,rep,name=map_bool_fixed32,json=mapBoolFixed32" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolSfixed32       map[bool]int32                 `protobuf:"bytes,608,rep,name=map_bool_sfixed32,json=mapBoolSfixed32" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolFloat          map[bool]float32               `protobuf:"bytes,609,rep,name=map_bool_float,json=mapBoolFloat" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolFixed64        map[bool]uint64                `protobuf:"bytes,610,rep,name=map_bool_fixed64,json=mapBoolFixed64" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolSfixed64       map[bool]int64                 `protobuf:"bytes,611,rep,name=map_bool_sfixed64,json=mapBoolSfixed64" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolDouble         map[bool]float64               `protobuf:"bytes,612,rep,name=map_bool_double,json=mapBoolDouble" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolString         map[bool]string                `protobuf:"bytes,613,rep,name=map_bool_string,json=mapBoolString" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolBytes          map[bool][]byte                `protobuf:"bytes,614,rep,name=map_bool_bytes,json=mapBoolBytes" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolChildEnum      map[bool]Message_ChildEnum     `protobuf:"bytes,615,rep,name=map_bool_child_enum,json=mapBoolChildEnum" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20180125.Message_ChildEnum"`
-	MapBoolChildMessage   map[bool]*Message_ChildMessage `protobuf:"bytes,616,rep,name=map_bool_child_message,json=mapBoolChildMessage" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolNamedGroup     map[bool]*Message_NamedGroup   `protobuf:"bytes,617,rep,name=map_bool_named_group,json=mapBoolNamedGroup" json:"map_bool_named_group,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolSiblingEnum    map[bool]SiblingEnum           `protobuf:"bytes,618,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20180125.SiblingEnum"`
-	MapBoolSiblingMessage map[bool]*SiblingMessage       `protobuf:"bytes,619,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapInt32Bool          map[int32]bool                 `protobuf:"bytes,620,rep,name=map_int32_bool,json=mapInt32Bool" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint32Bool         map[int32]bool                 `protobuf:"bytes,621,rep,name=map_sint32_bool,json=mapSint32Bool" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint32Bool         map[uint32]bool                `protobuf:"bytes,622,rep,name=map_uint32_bool,json=mapUint32Bool" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapInt64Bool          map[int64]bool                 `protobuf:"bytes,623,rep,name=map_int64_bool,json=mapInt64Bool" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint64Bool         map[int64]bool                 `protobuf:"bytes,624,rep,name=map_sint64_bool,json=mapSint64Bool" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint64Bool         map[uint64]bool                `protobuf:"bytes,625,rep,name=map_uint64_bool,json=mapUint64Bool" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapFixed32Bool        map[uint32]bool                `protobuf:"bytes,626,rep,name=map_fixed32_bool,json=mapFixed32Bool" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapStringBool         map[string]bool                `protobuf:"bytes,627,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	// Oneof fields.
-	//
-	// Types that are valid to be assigned to OneofUnion:
-	//	*Message_OneofBool
-	//	*Message_OneofInt32
-	//	*Message_OneofSint32
-	//	*Message_OneofUint32
-	//	*Message_OneofInt64
-	//	*Message_OneofSint64
-	//	*Message_OneofUint64
-	//	*Message_OneofFixed32
-	//	*Message_OneofSfixed32
-	//	*Message_OneofFloat
-	//	*Message_OneofFixed64
-	//	*Message_OneofSfixed64
-	//	*Message_OneofDouble
-	//	*Message_OneofString
-	//	*Message_OneofBytes
-	//	*Message_OneofChildEnum
-	//	*Message_OneofChildMessage
-	//	*Message_OneofNamedGroup
-	//	*Message_OneofSiblingEnum
-	//	*Message_OneofSiblingMessage
-	//	*Message_Oneofgroup
-	//	*Message_OneofString1
-	//	*Message_OneofString2
-	//	*Message_OneofString3
-	OneofUnion isMessage_OneofUnion `protobuf_oneof:"oneof_union"`
-	// Oneof default fields.
-	//
-	// Types that are valid to be assigned to OneofDefaultedUnion:
-	//	*Message_OneofDefaultedBool
-	//	*Message_OneofDefaultedInt32
-	//	*Message_OneofDefaultedSint32
-	//	*Message_OneofDefaultedUint32
-	//	*Message_OneofDefaultedInt64
-	//	*Message_OneofDefaultedSint64
-	//	*Message_OneofDefaultedUint64
-	//	*Message_OneofDefaultedFixed32
-	//	*Message_OneofDefaultedSfixed32
-	//	*Message_OneofDefaultedFloat
-	//	*Message_OneofDefaultedFixed64
-	//	*Message_OneofDefaultedSfixed64
-	//	*Message_OneofDefaultedDouble
-	//	*Message_OneofDefaultedString
-	//	*Message_OneofDefaultedBytes
-	//	*Message_OneofDefaultedChildEnum
-	//	*Message_OneofDefaultedSiblingEnum
-	OneofDefaultedUnion          isMessage_OneofDefaultedUnion `protobuf_oneof:"oneof_defaulted_union"`
-	proto.XXX_InternalExtensions `json:"-"`
-	XXX_unrecognized             []byte `json:"-"`
-}
-
-func (m *Message) Reset()                    { *m = Message{} }
-func (m *Message) String() string            { return proto.CompactTextString(m) }
-func (*Message) ProtoMessage()               {}
-func (*Message) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
-
-var extRange_Message = []proto.ExtensionRange{
-	{10000, 536870911},
-}
-
-func (*Message) ExtensionRangeArray() []proto.ExtensionRange {
-	return extRange_Message
-}
-
-const Default_Message_DefaultedBool bool = true
-const Default_Message_DefaultedInt32 int32 = -12345
-const Default_Message_DefaultedSint32 int32 = -3200
-const Default_Message_DefaultedUint32 uint32 = 3200
-const Default_Message_DefaultedInt64 int64 = -123456789
-const Default_Message_DefaultedSint64 int64 = -6400
-const Default_Message_DefaultedUint64 uint64 = 6400
-const Default_Message_DefaultedFixed32 uint32 = 320000
-const Default_Message_DefaultedSfixed32 int32 = -320000
-const Default_Message_DefaultedFloat float32 = 3.14159
-const Default_Message_DefaultedFixed64 uint64 = 640000
-const Default_Message_DefaultedSfixed64 int64 = -640000
-const Default_Message_DefaultedDouble float64 = 3.14159265359
-const Default_Message_DefaultedString string = "hello, \"world!\"\n"
-
-var Default_Message_DefaultedBytes []byte = []byte("deadޭ\xbe\xefbeef")
-
-const Default_Message_DefaultedChildEnum Message_ChildEnum = Message_ALPHA
-const Default_Message_DefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
-const Default_Message_RequiredDefaultedBool bool = true
-const Default_Message_RequiredDefaultedInt32 int32 = -12345
-const Default_Message_RequiredDefaultedSint32 int32 = -3200
-const Default_Message_RequiredDefaultedUint32 uint32 = 3200
-const Default_Message_RequiredDefaultedInt64 int64 = -123456789
-const Default_Message_RequiredDefaultedSint64 int64 = -6400
-const Default_Message_RequiredDefaultedUint64 uint64 = 6400
-const Default_Message_RequiredDefaultedFixed32 uint32 = 320000
-const Default_Message_RequiredDefaultedSfixed32 int32 = -320000
-const Default_Message_RequiredDefaultedFloat float32 = 3.14159
-const Default_Message_RequiredDefaultedFixed64 uint64 = 640000
-const Default_Message_RequiredDefaultedSfixed64 int64 = -640000
-const Default_Message_RequiredDefaultedDouble float64 = 3.14159265359
-const Default_Message_RequiredDefaultedString string = "hello, \"world!\"\n"
-
-var Default_Message_RequiredDefaultedBytes []byte = []byte("deadޭ\xbe\xefbeef")
-
-const Default_Message_RequiredDefaultedChildEnum Message_ChildEnum = Message_ALPHA
-const Default_Message_RequiredDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
-const Default_Message_OneofDefaultedBool bool = true
-const Default_Message_OneofDefaultedInt32 int32 = -12345
-const Default_Message_OneofDefaultedSint32 int32 = -3200
-const Default_Message_OneofDefaultedUint32 uint32 = 3200
-const Default_Message_OneofDefaultedInt64 int64 = -123456789
-const Default_Message_OneofDefaultedSint64 int64 = -6400
-const Default_Message_OneofDefaultedUint64 uint64 = 6400
-const Default_Message_OneofDefaultedFixed32 uint32 = 320000
-const Default_Message_OneofDefaultedSfixed32 int32 = -320000
-const Default_Message_OneofDefaultedFloat float32 = 3.14159
-const Default_Message_OneofDefaultedFixed64 uint64 = 640000
-const Default_Message_OneofDefaultedSfixed64 int64 = -640000
-const Default_Message_OneofDefaultedDouble float64 = 3.14159265359
-const Default_Message_OneofDefaultedString string = "hello, \"world!\"\n"
-
-var Default_Message_OneofDefaultedBytes []byte = []byte("deadޭ\xbe\xefbeef")
-
-const Default_Message_OneofDefaultedChildEnum Message_ChildEnum = Message_ALPHA
-const Default_Message_OneofDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
-
-type isMessage_OneofUnion interface{ isMessage_OneofUnion() }
-type isMessage_OneofDefaultedUnion interface{ isMessage_OneofDefaultedUnion() }
-
-type Message_OneofBool struct {
-	OneofBool bool `protobuf:"varint,700,opt,name=oneof_bool,json=oneofBool,oneof"`
-}
-type Message_OneofInt32 struct {
-	OneofInt32 int32 `protobuf:"varint,701,opt,name=oneof_int32,json=oneofInt32,oneof"`
-}
-type Message_OneofSint32 struct {
-	OneofSint32 int32 `protobuf:"zigzag32,702,opt,name=oneof_sint32,json=oneofSint32,oneof"`
-}
-type Message_OneofUint32 struct {
-	OneofUint32 uint32 `protobuf:"varint,703,opt,name=oneof_uint32,json=oneofUint32,oneof"`
-}
-type Message_OneofInt64 struct {
-	OneofInt64 int64 `protobuf:"varint,704,opt,name=oneof_int64,json=oneofInt64,oneof"`
-}
-type Message_OneofSint64 struct {
-	OneofSint64 int64 `protobuf:"zigzag64,705,opt,name=oneof_sint64,json=oneofSint64,oneof"`
-}
-type Message_OneofUint64 struct {
-	OneofUint64 uint64 `protobuf:"varint,706,opt,name=oneof_uint64,json=oneofUint64,oneof"`
-}
-type Message_OneofFixed32 struct {
-	OneofFixed32 uint32 `protobuf:"fixed32,707,opt,name=oneof_fixed32,json=oneofFixed32,oneof"`
-}
-type Message_OneofSfixed32 struct {
-	OneofSfixed32 int32 `protobuf:"fixed32,708,opt,name=oneof_sfixed32,json=oneofSfixed32,oneof"`
-}
-type Message_OneofFloat struct {
-	OneofFloat float32 `protobuf:"fixed32,709,opt,name=oneof_float,json=oneofFloat,oneof"`
-}
-type Message_OneofFixed64 struct {
-	OneofFixed64 uint64 `protobuf:"fixed64,710,opt,name=oneof_fixed64,json=oneofFixed64,oneof"`
-}
-type Message_OneofSfixed64 struct {
-	OneofSfixed64 int64 `protobuf:"fixed64,711,opt,name=oneof_sfixed64,json=oneofSfixed64,oneof"`
-}
-type Message_OneofDouble struct {
-	OneofDouble float64 `protobuf:"fixed64,712,opt,name=oneof_double,json=oneofDouble,oneof"`
-}
-type Message_OneofString struct {
-	OneofString string `protobuf:"bytes,713,opt,name=oneof_string,json=oneofString,oneof"`
-}
-type Message_OneofBytes struct {
-	OneofBytes []byte `protobuf:"bytes,714,opt,name=oneof_bytes,json=oneofBytes,oneof"`
-}
-type Message_OneofChildEnum struct {
-	OneofChildEnum Message_ChildEnum `protobuf:"varint,715,opt,name=oneof_child_enum,json=oneofChildEnum,enum=google.golang.org.proto2_20180125.Message_ChildEnum,oneof"`
-}
-type Message_OneofChildMessage struct {
-	OneofChildMessage *Message_ChildMessage `protobuf:"bytes,716,opt,name=oneof_child_message,json=oneofChildMessage,oneof"`
-}
-type Message_OneofNamedGroup struct {
-	OneofNamedGroup *Message_NamedGroup `protobuf:"bytes,717,opt,name=oneof_named_group,json=oneofNamedGroup,oneof"`
-}
-type Message_OneofSiblingEnum struct {
-	OneofSiblingEnum SiblingEnum `protobuf:"varint,718,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,enum=google.golang.org.proto2_20180125.SiblingEnum,oneof"`
-}
-type Message_OneofSiblingMessage struct {
-	OneofSiblingMessage *SiblingMessage `protobuf:"bytes,719,opt,name=oneof_sibling_message,json=oneofSiblingMessage,oneof"`
-}
-type Message_Oneofgroup struct {
-	Oneofgroup *Message_OneofGroup `protobuf:"group,720,opt,name=OneofGroup,json=oneofgroup,oneof"`
-}
-type Message_OneofString1 struct {
-	OneofString1 string `protobuf:"bytes,721,opt,name=oneof_string1,json=oneofString1,oneof"`
-}
-type Message_OneofString2 struct {
-	OneofString2 string `protobuf:"bytes,722,opt,name=oneof_string2,json=oneofString2,oneof"`
-}
-type Message_OneofString3 struct {
-	OneofString3 string `protobuf:"bytes,723,opt,name=oneof_string3,json=oneofString3,oneof"`
-}
-type Message_OneofDefaultedBool struct {
-	OneofDefaultedBool bool `protobuf:"varint,800,opt,name=oneof_defaulted_bool,json=oneofDefaultedBool,oneof,def=1"`
-}
-type Message_OneofDefaultedInt32 struct {
-	OneofDefaultedInt32 int32 `protobuf:"varint,801,opt,name=oneof_defaulted_int32,json=oneofDefaultedInt32,oneof,def=-12345"`
-}
-type Message_OneofDefaultedSint32 struct {
-	OneofDefaultedSint32 int32 `protobuf:"zigzag32,802,opt,name=oneof_defaulted_sint32,json=oneofDefaultedSint32,oneof,def=-3200"`
-}
-type Message_OneofDefaultedUint32 struct {
-	OneofDefaultedUint32 uint32 `protobuf:"varint,803,opt,name=oneof_defaulted_uint32,json=oneofDefaultedUint32,oneof,def=3200"`
-}
-type Message_OneofDefaultedInt64 struct {
-	OneofDefaultedInt64 int64 `protobuf:"varint,804,opt,name=oneof_defaulted_int64,json=oneofDefaultedInt64,oneof,def=-123456789"`
-}
-type Message_OneofDefaultedSint64 struct {
-	OneofDefaultedSint64 int64 `protobuf:"zigzag64,805,opt,name=oneof_defaulted_sint64,json=oneofDefaultedSint64,oneof,def=-6400"`
-}
-type Message_OneofDefaultedUint64 struct {
-	OneofDefaultedUint64 uint64 `protobuf:"varint,806,opt,name=oneof_defaulted_uint64,json=oneofDefaultedUint64,oneof,def=6400"`
-}
-type Message_OneofDefaultedFixed32 struct {
-	OneofDefaultedFixed32 uint32 `protobuf:"fixed32,807,opt,name=oneof_defaulted_fixed32,json=oneofDefaultedFixed32,oneof,def=320000"`
-}
-type Message_OneofDefaultedSfixed32 struct {
-	OneofDefaultedSfixed32 int32 `protobuf:"fixed32,808,opt,name=oneof_defaulted_sfixed32,json=oneofDefaultedSfixed32,oneof,def=-320000"`
-}
-type Message_OneofDefaultedFloat struct {
-	OneofDefaultedFloat float32 `protobuf:"fixed32,809,opt,name=oneof_defaulted_float,json=oneofDefaultedFloat,oneof,def=3.14159"`
-}
-type Message_OneofDefaultedFixed64 struct {
-	OneofDefaultedFixed64 uint64 `protobuf:"fixed64,810,opt,name=oneof_defaulted_fixed64,json=oneofDefaultedFixed64,oneof,def=640000"`
-}
-type Message_OneofDefaultedSfixed64 struct {
-	OneofDefaultedSfixed64 int64 `protobuf:"fixed64,811,opt,name=oneof_defaulted_sfixed64,json=oneofDefaultedSfixed64,oneof,def=-640000"`
-}
-type Message_OneofDefaultedDouble struct {
-	OneofDefaultedDouble float64 `protobuf:"fixed64,812,opt,name=oneof_defaulted_double,json=oneofDefaultedDouble,oneof,def=3.14159265359"`
-}
-type Message_OneofDefaultedString struct {
-	OneofDefaultedString string `protobuf:"bytes,813,opt,name=oneof_defaulted_string,json=oneofDefaultedString,oneof,def=hello, \"world!\"\n"`
-}
-type Message_OneofDefaultedBytes struct {
-	OneofDefaultedBytes []byte `protobuf:"bytes,814,opt,name=oneof_defaulted_bytes,json=oneofDefaultedBytes,oneof,def=dead\\336\\255\\276\\357beef"`
-}
-type Message_OneofDefaultedChildEnum struct {
-	OneofDefaultedChildEnum Message_ChildEnum `protobuf:"varint,815,opt,name=oneof_defaulted_child_enum,json=oneofDefaultedChildEnum,enum=google.golang.org.proto2_20180125.Message_ChildEnum,oneof,def=0"`
-}
-type Message_OneofDefaultedSiblingEnum struct {
-	OneofDefaultedSiblingEnum SiblingEnum `protobuf:"varint,816,opt,name=oneof_defaulted_sibling_enum,json=oneofDefaultedSiblingEnum,enum=google.golang.org.proto2_20180125.SiblingEnum,oneof,def=0"`
-}
-
-func (*Message_OneofBool) isMessage_OneofUnion()                          {}
-func (*Message_OneofInt32) isMessage_OneofUnion()                         {}
-func (*Message_OneofSint32) isMessage_OneofUnion()                        {}
-func (*Message_OneofUint32) isMessage_OneofUnion()                        {}
-func (*Message_OneofInt64) isMessage_OneofUnion()                         {}
-func (*Message_OneofSint64) isMessage_OneofUnion()                        {}
-func (*Message_OneofUint64) isMessage_OneofUnion()                        {}
-func (*Message_OneofFixed32) isMessage_OneofUnion()                       {}
-func (*Message_OneofSfixed32) isMessage_OneofUnion()                      {}
-func (*Message_OneofFloat) isMessage_OneofUnion()                         {}
-func (*Message_OneofFixed64) isMessage_OneofUnion()                       {}
-func (*Message_OneofSfixed64) isMessage_OneofUnion()                      {}
-func (*Message_OneofDouble) isMessage_OneofUnion()                        {}
-func (*Message_OneofString) isMessage_OneofUnion()                        {}
-func (*Message_OneofBytes) isMessage_OneofUnion()                         {}
-func (*Message_OneofChildEnum) isMessage_OneofUnion()                     {}
-func (*Message_OneofChildMessage) isMessage_OneofUnion()                  {}
-func (*Message_OneofNamedGroup) isMessage_OneofUnion()                    {}
-func (*Message_OneofSiblingEnum) isMessage_OneofUnion()                   {}
-func (*Message_OneofSiblingMessage) isMessage_OneofUnion()                {}
-func (*Message_Oneofgroup) isMessage_OneofUnion()                         {}
-func (*Message_OneofString1) isMessage_OneofUnion()                       {}
-func (*Message_OneofString2) isMessage_OneofUnion()                       {}
-func (*Message_OneofString3) isMessage_OneofUnion()                       {}
-func (*Message_OneofDefaultedBool) isMessage_OneofDefaultedUnion()        {}
-func (*Message_OneofDefaultedInt32) isMessage_OneofDefaultedUnion()       {}
-func (*Message_OneofDefaultedSint32) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedUint32) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedInt64) isMessage_OneofDefaultedUnion()       {}
-func (*Message_OneofDefaultedSint64) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedUint64) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedFixed32) isMessage_OneofDefaultedUnion()     {}
-func (*Message_OneofDefaultedSfixed32) isMessage_OneofDefaultedUnion()    {}
-func (*Message_OneofDefaultedFloat) isMessage_OneofDefaultedUnion()       {}
-func (*Message_OneofDefaultedFixed64) isMessage_OneofDefaultedUnion()     {}
-func (*Message_OneofDefaultedSfixed64) isMessage_OneofDefaultedUnion()    {}
-func (*Message_OneofDefaultedDouble) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedString) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedBytes) isMessage_OneofDefaultedUnion()       {}
-func (*Message_OneofDefaultedChildEnum) isMessage_OneofDefaultedUnion()   {}
-func (*Message_OneofDefaultedSiblingEnum) isMessage_OneofDefaultedUnion() {}
-
-func (m *Message) GetOneofUnion() isMessage_OneofUnion {
-	if m != nil {
-		return m.OneofUnion
-	}
-	return nil
-}
-func (m *Message) GetOneofDefaultedUnion() isMessage_OneofDefaultedUnion {
-	if m != nil {
-		return m.OneofDefaultedUnion
-	}
-	return nil
-}
-
-func (m *Message) GetNamedgroup() *Message_NamedGroup {
-	if m != nil {
-		return m.Namedgroup
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalBool() bool {
-	if m != nil && m.OptionalBool != nil {
-		return *m.OptionalBool
-	}
-	return false
-}
-
-func (m *Message) GetOptionalInt32() int32 {
-	if m != nil && m.OptionalInt32 != nil {
-		return *m.OptionalInt32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSint32() int32 {
-	if m != nil && m.OptionalSint32 != nil {
-		return *m.OptionalSint32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalUint32() uint32 {
-	if m != nil && m.OptionalUint32 != nil {
-		return *m.OptionalUint32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalInt64() int64 {
-	if m != nil && m.OptionalInt64 != nil {
-		return *m.OptionalInt64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSint64() int64 {
-	if m != nil && m.OptionalSint64 != nil {
-		return *m.OptionalSint64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalUint64() uint64 {
-	if m != nil && m.OptionalUint64 != nil {
-		return *m.OptionalUint64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFixed32() uint32 {
-	if m != nil && m.OptionalFixed32 != nil {
-		return *m.OptionalFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSfixed32() int32 {
-	if m != nil && m.OptionalSfixed32 != nil {
-		return *m.OptionalSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFloat() float32 {
-	if m != nil && m.OptionalFloat != nil {
-		return *m.OptionalFloat
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFixed64() uint64 {
-	if m != nil && m.OptionalFixed64 != nil {
-		return *m.OptionalFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSfixed64() int64 {
-	if m != nil && m.OptionalSfixed64 != nil {
-		return *m.OptionalSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalDouble() float64 {
-	if m != nil && m.OptionalDouble != nil {
-		return *m.OptionalDouble
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalString() string {
-	if m != nil && m.OptionalString != nil {
-		return *m.OptionalString
-	}
-	return ""
-}
-
-func (m *Message) GetOptionalBytes() []byte {
-	if m != nil {
-		return m.OptionalBytes
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalChildEnum() Message_ChildEnum {
-	if m != nil && m.OptionalChildEnum != nil {
-		return *m.OptionalChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetOptionalChildMessage() *Message_ChildMessage {
-	if m != nil {
-		return m.OptionalChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalNamedGroup() *Message_NamedGroup {
-	if m != nil {
-		return m.OptionalNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalSiblingEnum() SiblingEnum {
-	if m != nil && m.OptionalSiblingEnum != nil {
-		return *m.OptionalSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetOptionalSiblingMessage() *SiblingMessage {
-	if m != nil {
-		return m.OptionalSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalgroup() *Message_OptionalGroup {
-	if m != nil {
-		return m.Optionalgroup
-	}
-	return nil
-}
-
-func (m *Message) GetDefaultedBool() bool {
-	if m != nil && m.DefaultedBool != nil {
-		return *m.DefaultedBool
-	}
-	return Default_Message_DefaultedBool
-}
-
-func (m *Message) GetDefaultedInt32() int32 {
-	if m != nil && m.DefaultedInt32 != nil {
-		return *m.DefaultedInt32
-	}
-	return Default_Message_DefaultedInt32
-}
-
-func (m *Message) GetDefaultedSint32() int32 {
-	if m != nil && m.DefaultedSint32 != nil {
-		return *m.DefaultedSint32
-	}
-	return Default_Message_DefaultedSint32
-}
-
-func (m *Message) GetDefaultedUint32() uint32 {
-	if m != nil && m.DefaultedUint32 != nil {
-		return *m.DefaultedUint32
-	}
-	return Default_Message_DefaultedUint32
-}
-
-func (m *Message) GetDefaultedInt64() int64 {
-	if m != nil && m.DefaultedInt64 != nil {
-		return *m.DefaultedInt64
-	}
-	return Default_Message_DefaultedInt64
-}
-
-func (m *Message) GetDefaultedSint64() int64 {
-	if m != nil && m.DefaultedSint64 != nil {
-		return *m.DefaultedSint64
-	}
-	return Default_Message_DefaultedSint64
-}
-
-func (m *Message) GetDefaultedUint64() uint64 {
-	if m != nil && m.DefaultedUint64 != nil {
-		return *m.DefaultedUint64
-	}
-	return Default_Message_DefaultedUint64
-}
-
-func (m *Message) GetDefaultedFixed32() uint32 {
-	if m != nil && m.DefaultedFixed32 != nil {
-		return *m.DefaultedFixed32
-	}
-	return Default_Message_DefaultedFixed32
-}
-
-func (m *Message) GetDefaultedSfixed32() int32 {
-	if m != nil && m.DefaultedSfixed32 != nil {
-		return *m.DefaultedSfixed32
-	}
-	return Default_Message_DefaultedSfixed32
-}
-
-func (m *Message) GetDefaultedFloat() float32 {
-	if m != nil && m.DefaultedFloat != nil {
-		return *m.DefaultedFloat
-	}
-	return Default_Message_DefaultedFloat
-}
-
-func (m *Message) GetDefaultedFixed64() uint64 {
-	if m != nil && m.DefaultedFixed64 != nil {
-		return *m.DefaultedFixed64
-	}
-	return Default_Message_DefaultedFixed64
-}
-
-func (m *Message) GetDefaultedSfixed64() int64 {
-	if m != nil && m.DefaultedSfixed64 != nil {
-		return *m.DefaultedSfixed64
-	}
-	return Default_Message_DefaultedSfixed64
-}
-
-func (m *Message) GetDefaultedDouble() float64 {
-	if m != nil && m.DefaultedDouble != nil {
-		return *m.DefaultedDouble
-	}
-	return Default_Message_DefaultedDouble
-}
-
-func (m *Message) GetDefaultedString() string {
-	if m != nil && m.DefaultedString != nil {
-		return *m.DefaultedString
-	}
-	return Default_Message_DefaultedString
-}
-
-func (m *Message) GetDefaultedBytes() []byte {
-	if m != nil && m.DefaultedBytes != nil {
-		return m.DefaultedBytes
-	}
-	return append([]byte(nil), Default_Message_DefaultedBytes...)
-}
-
-func (m *Message) GetDefaultedChildEnum() Message_ChildEnum {
-	if m != nil && m.DefaultedChildEnum != nil {
-		return *m.DefaultedChildEnum
-	}
-	return Default_Message_DefaultedChildEnum
-}
-
-func (m *Message) GetDefaultedSiblingEnum() SiblingEnum {
-	if m != nil && m.DefaultedSiblingEnum != nil {
-		return *m.DefaultedSiblingEnum
-	}
-	return Default_Message_DefaultedSiblingEnum
-}
-
-func (m *Message) GetRequiredBool() bool {
-	if m != nil && m.RequiredBool != nil {
-		return *m.RequiredBool
-	}
-	return false
-}
-
-func (m *Message) GetRequiredInt32() int32 {
-	if m != nil && m.RequiredInt32 != nil {
-		return *m.RequiredInt32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSint32() int32 {
-	if m != nil && m.RequiredSint32 != nil {
-		return *m.RequiredSint32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredUint32() uint32 {
-	if m != nil && m.RequiredUint32 != nil {
-		return *m.RequiredUint32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredInt64() int64 {
-	if m != nil && m.RequiredInt64 != nil {
-		return *m.RequiredInt64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSint64() int64 {
-	if m != nil && m.RequiredSint64 != nil {
-		return *m.RequiredSint64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredUint64() uint64 {
-	if m != nil && m.RequiredUint64 != nil {
-		return *m.RequiredUint64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredFixed32() uint32 {
-	if m != nil && m.RequiredFixed32 != nil {
-		return *m.RequiredFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSfixed32() int32 {
-	if m != nil && m.RequiredSfixed32 != nil {
-		return *m.RequiredSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredFloat() float32 {
-	if m != nil && m.RequiredFloat != nil {
-		return *m.RequiredFloat
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredFixed64() uint64 {
-	if m != nil && m.RequiredFixed64 != nil {
-		return *m.RequiredFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSfixed64() int64 {
-	if m != nil && m.RequiredSfixed64 != nil {
-		return *m.RequiredSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredDouble() float64 {
-	if m != nil && m.RequiredDouble != nil {
-		return *m.RequiredDouble
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredString() string {
-	if m != nil && m.RequiredString != nil {
-		return *m.RequiredString
-	}
-	return ""
-}
-
-func (m *Message) GetRequiredBytes() []byte {
-	if m != nil {
-		return m.RequiredBytes
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredChildEnum() Message_ChildEnum {
-	if m != nil && m.RequiredChildEnum != nil {
-		return *m.RequiredChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetRequiredChildMessage() *Message_ChildMessage {
-	if m != nil {
-		return m.RequiredChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredNamedGroup() *Message_NamedGroup {
-	if m != nil {
-		return m.RequiredNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredSiblingEnum() SiblingEnum {
-	if m != nil && m.RequiredSiblingEnum != nil {
-		return *m.RequiredSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetRequiredSiblingMessage() *SiblingMessage {
-	if m != nil {
-		return m.RequiredSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredgroup() *Message_RequiredGroup {
-	if m != nil {
-		return m.Requiredgroup
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredDefaultedBool() bool {
-	if m != nil && m.RequiredDefaultedBool != nil {
-		return *m.RequiredDefaultedBool
-	}
-	return Default_Message_RequiredDefaultedBool
-}
-
-func (m *Message) GetRequiredDefaultedInt32() int32 {
-	if m != nil && m.RequiredDefaultedInt32 != nil {
-		return *m.RequiredDefaultedInt32
-	}
-	return Default_Message_RequiredDefaultedInt32
-}
-
-func (m *Message) GetRequiredDefaultedSint32() int32 {
-	if m != nil && m.RequiredDefaultedSint32 != nil {
-		return *m.RequiredDefaultedSint32
-	}
-	return Default_Message_RequiredDefaultedSint32
-}
-
-func (m *Message) GetRequiredDefaultedUint32() uint32 {
-	if m != nil && m.RequiredDefaultedUint32 != nil {
-		return *m.RequiredDefaultedUint32
-	}
-	return Default_Message_RequiredDefaultedUint32
-}
-
-func (m *Message) GetRequiredDefaultedInt64() int64 {
-	if m != nil && m.RequiredDefaultedInt64 != nil {
-		return *m.RequiredDefaultedInt64
-	}
-	return Default_Message_RequiredDefaultedInt64
-}
-
-func (m *Message) GetRequiredDefaultedSint64() int64 {
-	if m != nil && m.RequiredDefaultedSint64 != nil {
-		return *m.RequiredDefaultedSint64
-	}
-	return Default_Message_RequiredDefaultedSint64
-}
-
-func (m *Message) GetRequiredDefaultedUint64() uint64 {
-	if m != nil && m.RequiredDefaultedUint64 != nil {
-		return *m.RequiredDefaultedUint64
-	}
-	return Default_Message_RequiredDefaultedUint64
-}
-
-func (m *Message) GetRequiredDefaultedFixed32() uint32 {
-	if m != nil && m.RequiredDefaultedFixed32 != nil {
-		return *m.RequiredDefaultedFixed32
-	}
-	return Default_Message_RequiredDefaultedFixed32
-}
-
-func (m *Message) GetRequiredDefaultedSfixed32() int32 {
-	if m != nil && m.RequiredDefaultedSfixed32 != nil {
-		return *m.RequiredDefaultedSfixed32
-	}
-	return Default_Message_RequiredDefaultedSfixed32
-}
-
-func (m *Message) GetRequiredDefaultedFloat() float32 {
-	if m != nil && m.RequiredDefaultedFloat != nil {
-		return *m.RequiredDefaultedFloat
-	}
-	return Default_Message_RequiredDefaultedFloat
-}
-
-func (m *Message) GetRequiredDefaultedFixed64() uint64 {
-	if m != nil && m.RequiredDefaultedFixed64 != nil {
-		return *m.RequiredDefaultedFixed64
-	}
-	return Default_Message_RequiredDefaultedFixed64
-}
-
-func (m *Message) GetRequiredDefaultedSfixed64() int64 {
-	if m != nil && m.RequiredDefaultedSfixed64 != nil {
-		return *m.RequiredDefaultedSfixed64
-	}
-	return Default_Message_RequiredDefaultedSfixed64
-}
-
-func (m *Message) GetRequiredDefaultedDouble() float64 {
-	if m != nil && m.RequiredDefaultedDouble != nil {
-		return *m.RequiredDefaultedDouble
-	}
-	return Default_Message_RequiredDefaultedDouble
-}
-
-func (m *Message) GetRequiredDefaultedString() string {
-	if m != nil && m.RequiredDefaultedString != nil {
-		return *m.RequiredDefaultedString
-	}
-	return Default_Message_RequiredDefaultedString
-}
-
-func (m *Message) GetRequiredDefaultedBytes() []byte {
-	if m != nil && m.RequiredDefaultedBytes != nil {
-		return m.RequiredDefaultedBytes
-	}
-	return append([]byte(nil), Default_Message_RequiredDefaultedBytes...)
-}
-
-func (m *Message) GetRequiredDefaultedChildEnum() Message_ChildEnum {
-	if m != nil && m.RequiredDefaultedChildEnum != nil {
-		return *m.RequiredDefaultedChildEnum
-	}
-	return Default_Message_RequiredDefaultedChildEnum
-}
-
-func (m *Message) GetRequiredDefaultedSiblingEnum() SiblingEnum {
-	if m != nil && m.RequiredDefaultedSiblingEnum != nil {
-		return *m.RequiredDefaultedSiblingEnum
-	}
-	return Default_Message_RequiredDefaultedSiblingEnum
-}
-
-func (m *Message) GetRepeatedBool() []bool {
-	if m != nil {
-		return m.RepeatedBool
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedInt32() []int32 {
-	if m != nil {
-		return m.RepeatedInt32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSint32() []int32 {
-	if m != nil {
-		return m.RepeatedSint32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedUint32() []uint32 {
-	if m != nil {
-		return m.RepeatedUint32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedInt64() []int64 {
-	if m != nil {
-		return m.RepeatedInt64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSint64() []int64 {
-	if m != nil {
-		return m.RepeatedSint64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedUint64() []uint64 {
-	if m != nil {
-		return m.RepeatedUint64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFixed32() []uint32 {
-	if m != nil {
-		return m.RepeatedFixed32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSfixed32() []int32 {
-	if m != nil {
-		return m.RepeatedSfixed32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFloat() []float32 {
-	if m != nil {
-		return m.RepeatedFloat
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFixed64() []uint64 {
-	if m != nil {
-		return m.RepeatedFixed64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSfixed64() []int64 {
-	if m != nil {
-		return m.RepeatedSfixed64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedDouble() []float64 {
-	if m != nil {
-		return m.RepeatedDouble
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedString() []string {
-	if m != nil {
-		return m.RepeatedString
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedBytes() [][]byte {
-	if m != nil {
-		return m.RepeatedBytes
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedChildEnum() []Message_ChildEnum {
-	if m != nil {
-		return m.RepeatedChildEnum
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedChildMessage() []*Message_ChildMessage {
-	if m != nil {
-		return m.RepeatedChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedNamedGroup() []*Message_NamedGroup {
-	if m != nil {
-		return m.RepeatedNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSiblingEnum() []SiblingEnum {
-	if m != nil {
-		return m.RepeatedSiblingEnum
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSiblingMessage() []*SiblingMessage {
-	if m != nil {
-		return m.RepeatedSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedgroup() []*Message_RepeatedGroup {
-	if m != nil {
-		return m.Repeatedgroup
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBool() map[bool]bool {
-	if m != nil {
-		return m.MapBoolBool
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolInt32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolUint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolInt64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolUint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolFixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSfixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFloat() map[bool]float32 {
-	if m != nil {
-		return m.MapBoolFloat
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolFixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSfixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolDouble() map[bool]float64 {
-	if m != nil {
-		return m.MapBoolDouble
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolString() map[bool]string {
-	if m != nil {
-		return m.MapBoolString
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBytes() map[bool][]byte {
-	if m != nil {
-		return m.MapBoolBytes
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildEnum() map[bool]Message_ChildEnum {
-	if m != nil {
-		return m.MapBoolChildEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildMessage() map[bool]*Message_ChildMessage {
-	if m != nil {
-		return m.MapBoolChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolNamedGroup() map[bool]*Message_NamedGroup {
-	if m != nil {
-		return m.MapBoolNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingEnum() map[bool]SiblingEnum {
-	if m != nil {
-		return m.MapBoolSiblingEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingMessage() map[bool]*SiblingMessage {
-	if m != nil {
-		return m.MapBoolSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapInt32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapSint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapUint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapInt64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapSint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint64Bool() map[uint64]bool {
-	if m != nil {
-		return m.MapUint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapFixed32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapFixed32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapStringBool() map[string]bool {
-	if m != nil {
-		return m.MapStringBool
-	}
-	return nil
-}
-
-func (m *Message) GetOneofBool() bool {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBool); ok {
-		return x.OneofBool
-	}
-	return false
-}
-
-func (m *Message) GetOneofInt32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt32); ok {
-		return x.OneofInt32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint32); ok {
-		return x.OneofSint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint32); ok {
-		return x.OneofUint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofInt64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt64); ok {
-		return x.OneofInt64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint64); ok {
-		return x.OneofSint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint64); ok {
-		return x.OneofUint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed32); ok {
-		return x.OneofFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed32); ok {
-		return x.OneofSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFloat() float32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFloat); ok {
-		return x.OneofFloat
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed64); ok {
-		return x.OneofFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed64); ok {
-		return x.OneofSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofDouble() float64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofDouble); ok {
-		return x.OneofDouble
-	}
-	return 0
-}
-
-func (m *Message) GetOneofString() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString); ok {
-		return x.OneofString
-	}
-	return ""
-}
-
-func (m *Message) GetOneofBytes() []byte {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBytes); ok {
-		return x.OneofBytes
-	}
-	return nil
-}
-
-func (m *Message) GetOneofChildEnum() Message_ChildEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildEnum); ok {
-		return x.OneofChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetOneofChildMessage() *Message_ChildMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildMessage); ok {
-		return x.OneofChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofNamedGroup() *Message_NamedGroup {
-	if x, ok := m.GetOneofUnion().(*Message_OneofNamedGroup); ok {
-		return x.OneofNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetOneofSiblingEnum() SiblingEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingEnum); ok {
-		return x.OneofSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetOneofSiblingMessage() *SiblingMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingMessage); ok {
-		return x.OneofSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofgroup() *Message_OneofGroup {
-	if x, ok := m.GetOneofUnion().(*Message_Oneofgroup); ok {
-		return x.Oneofgroup
-	}
-	return nil
-}
-
-func (m *Message) GetOneofString1() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString1); ok {
-		return x.OneofString1
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString2() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString2); ok {
-		return x.OneofString2
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString3() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString3); ok {
-		return x.OneofString3
-	}
-	return ""
-}
-
-func (m *Message) GetOneofDefaultedBool() bool {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBool); ok {
-		return x.OneofDefaultedBool
-	}
-	return Default_Message_OneofDefaultedBool
-}
-
-func (m *Message) GetOneofDefaultedInt32() int32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt32); ok {
-		return x.OneofDefaultedInt32
-	}
-	return Default_Message_OneofDefaultedInt32
-}
-
-func (m *Message) GetOneofDefaultedSint32() int32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint32); ok {
-		return x.OneofDefaultedSint32
-	}
-	return Default_Message_OneofDefaultedSint32
-}
-
-func (m *Message) GetOneofDefaultedUint32() uint32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint32); ok {
-		return x.OneofDefaultedUint32
-	}
-	return Default_Message_OneofDefaultedUint32
-}
-
-func (m *Message) GetOneofDefaultedInt64() int64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt64); ok {
-		return x.OneofDefaultedInt64
-	}
-	return Default_Message_OneofDefaultedInt64
-}
-
-func (m *Message) GetOneofDefaultedSint64() int64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint64); ok {
-		return x.OneofDefaultedSint64
-	}
-	return Default_Message_OneofDefaultedSint64
-}
-
-func (m *Message) GetOneofDefaultedUint64() uint64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint64); ok {
-		return x.OneofDefaultedUint64
-	}
-	return Default_Message_OneofDefaultedUint64
-}
-
-func (m *Message) GetOneofDefaultedFixed32() uint32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed32); ok {
-		return x.OneofDefaultedFixed32
-	}
-	return Default_Message_OneofDefaultedFixed32
-}
-
-func (m *Message) GetOneofDefaultedSfixed32() int32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed32); ok {
-		return x.OneofDefaultedSfixed32
-	}
-	return Default_Message_OneofDefaultedSfixed32
-}
-
-func (m *Message) GetOneofDefaultedFloat() float32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFloat); ok {
-		return x.OneofDefaultedFloat
-	}
-	return Default_Message_OneofDefaultedFloat
-}
-
-func (m *Message) GetOneofDefaultedFixed64() uint64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed64); ok {
-		return x.OneofDefaultedFixed64
-	}
-	return Default_Message_OneofDefaultedFixed64
-}
-
-func (m *Message) GetOneofDefaultedSfixed64() int64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed64); ok {
-		return x.OneofDefaultedSfixed64
-	}
-	return Default_Message_OneofDefaultedSfixed64
-}
-
-func (m *Message) GetOneofDefaultedDouble() float64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedDouble); ok {
-		return x.OneofDefaultedDouble
-	}
-	return Default_Message_OneofDefaultedDouble
-}
-
-func (m *Message) GetOneofDefaultedString() string {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedString); ok {
-		return x.OneofDefaultedString
-	}
-	return Default_Message_OneofDefaultedString
-}
-
-func (m *Message) GetOneofDefaultedBytes() []byte {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBytes); ok {
-		return x.OneofDefaultedBytes
-	}
-	return append([]byte(nil), Default_Message_OneofDefaultedBytes...)
-}
-
-func (m *Message) GetOneofDefaultedChildEnum() Message_ChildEnum {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedChildEnum); ok {
-		return x.OneofDefaultedChildEnum
-	}
-	return Default_Message_OneofDefaultedChildEnum
-}
-
-func (m *Message) GetOneofDefaultedSiblingEnum() SiblingEnum {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSiblingEnum); ok {
-		return x.OneofDefaultedSiblingEnum
-	}
-	return Default_Message_OneofDefaultedSiblingEnum
-}
-
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*Message) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _Message_OneofMarshaler, _Message_OneofUnmarshaler, _Message_OneofSizer, []interface{}{
-		(*Message_OneofBool)(nil),
-		(*Message_OneofInt32)(nil),
-		(*Message_OneofSint32)(nil),
-		(*Message_OneofUint32)(nil),
-		(*Message_OneofInt64)(nil),
-		(*Message_OneofSint64)(nil),
-		(*Message_OneofUint64)(nil),
-		(*Message_OneofFixed32)(nil),
-		(*Message_OneofSfixed32)(nil),
-		(*Message_OneofFloat)(nil),
-		(*Message_OneofFixed64)(nil),
-		(*Message_OneofSfixed64)(nil),
-		(*Message_OneofDouble)(nil),
-		(*Message_OneofString)(nil),
-		(*Message_OneofBytes)(nil),
-		(*Message_OneofChildEnum)(nil),
-		(*Message_OneofChildMessage)(nil),
-		(*Message_OneofNamedGroup)(nil),
-		(*Message_OneofSiblingEnum)(nil),
-		(*Message_OneofSiblingMessage)(nil),
-		(*Message_Oneofgroup)(nil),
-		(*Message_OneofString1)(nil),
-		(*Message_OneofString2)(nil),
-		(*Message_OneofString3)(nil),
-		(*Message_OneofDefaultedBool)(nil),
-		(*Message_OneofDefaultedInt32)(nil),
-		(*Message_OneofDefaultedSint32)(nil),
-		(*Message_OneofDefaultedUint32)(nil),
-		(*Message_OneofDefaultedInt64)(nil),
-		(*Message_OneofDefaultedSint64)(nil),
-		(*Message_OneofDefaultedUint64)(nil),
-		(*Message_OneofDefaultedFixed32)(nil),
-		(*Message_OneofDefaultedSfixed32)(nil),
-		(*Message_OneofDefaultedFloat)(nil),
-		(*Message_OneofDefaultedFixed64)(nil),
-		(*Message_OneofDefaultedSfixed64)(nil),
-		(*Message_OneofDefaultedDouble)(nil),
-		(*Message_OneofDefaultedString)(nil),
-		(*Message_OneofDefaultedBytes)(nil),
-		(*Message_OneofDefaultedChildEnum)(nil),
-		(*Message_OneofDefaultedSiblingEnum)(nil),
-	}
-}
-
-func _Message_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*Message)
-	// oneof_union
-	switch x := m.OneofUnion.(type) {
-	case *Message_OneofBool:
-		t := uint64(0)
-		if x.OneofBool {
-			t = 1
-		}
-		b.EncodeVarint(700<<3 | proto.WireVarint)
-		b.EncodeVarint(t)
-	case *Message_OneofInt32:
-		b.EncodeVarint(701<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofInt32))
-	case *Message_OneofSint32:
-		b.EncodeVarint(702<<3 | proto.WireVarint)
-		b.EncodeZigzag32(uint64(x.OneofSint32))
-	case *Message_OneofUint32:
-		b.EncodeVarint(703<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofUint32))
-	case *Message_OneofInt64:
-		b.EncodeVarint(704<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofInt64))
-	case *Message_OneofSint64:
-		b.EncodeVarint(705<<3 | proto.WireVarint)
-		b.EncodeZigzag64(uint64(x.OneofSint64))
-	case *Message_OneofUint64:
-		b.EncodeVarint(706<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofUint64))
-	case *Message_OneofFixed32:
-		b.EncodeVarint(707<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofFixed32))
-	case *Message_OneofSfixed32:
-		b.EncodeVarint(708<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofSfixed32))
-	case *Message_OneofFloat:
-		b.EncodeVarint(709<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(math.Float32bits(x.OneofFloat)))
-	case *Message_OneofFixed64:
-		b.EncodeVarint(710<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofFixed64))
-	case *Message_OneofSfixed64:
-		b.EncodeVarint(711<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofSfixed64))
-	case *Message_OneofDouble:
-		b.EncodeVarint(712<<3 | proto.WireFixed64)
-		b.EncodeFixed64(math.Float64bits(x.OneofDouble))
-	case *Message_OneofString:
-		b.EncodeVarint(713<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString)
-	case *Message_OneofBytes:
-		b.EncodeVarint(714<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.OneofBytes)
-	case *Message_OneofChildEnum:
-		b.EncodeVarint(715<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofChildEnum))
-	case *Message_OneofChildMessage:
-		b.EncodeVarint(716<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofChildMessage); err != nil {
-			return err
-		}
-	case *Message_OneofNamedGroup:
-		b.EncodeVarint(717<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofNamedGroup); err != nil {
-			return err
-		}
-	case *Message_OneofSiblingEnum:
-		b.EncodeVarint(718<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofSiblingEnum))
-	case *Message_OneofSiblingMessage:
-		b.EncodeVarint(719<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofSiblingMessage); err != nil {
-			return err
-		}
-	case *Message_Oneofgroup:
-		b.EncodeVarint(720<<3 | proto.WireStartGroup)
-		if err := b.Marshal(x.Oneofgroup); err != nil {
-			return err
-		}
-		b.EncodeVarint(720<<3 | proto.WireEndGroup)
-	case *Message_OneofString1:
-		b.EncodeVarint(721<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString1)
-	case *Message_OneofString2:
-		b.EncodeVarint(722<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString2)
-	case *Message_OneofString3:
-		b.EncodeVarint(723<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString3)
-	case nil:
-	default:
-		return fmt.Errorf("Message.OneofUnion has unexpected type %T", x)
-	}
-	// oneof_defaulted_union
-	switch x := m.OneofDefaultedUnion.(type) {
-	case *Message_OneofDefaultedBool:
-		t := uint64(0)
-		if x.OneofDefaultedBool {
-			t = 1
-		}
-		b.EncodeVarint(800<<3 | proto.WireVarint)
-		b.EncodeVarint(t)
-	case *Message_OneofDefaultedInt32:
-		b.EncodeVarint(801<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedInt32))
-	case *Message_OneofDefaultedSint32:
-		b.EncodeVarint(802<<3 | proto.WireVarint)
-		b.EncodeZigzag32(uint64(x.OneofDefaultedSint32))
-	case *Message_OneofDefaultedUint32:
-		b.EncodeVarint(803<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedUint32))
-	case *Message_OneofDefaultedInt64:
-		b.EncodeVarint(804<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedInt64))
-	case *Message_OneofDefaultedSint64:
-		b.EncodeVarint(805<<3 | proto.WireVarint)
-		b.EncodeZigzag64(uint64(x.OneofDefaultedSint64))
-	case *Message_OneofDefaultedUint64:
-		b.EncodeVarint(806<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedUint64))
-	case *Message_OneofDefaultedFixed32:
-		b.EncodeVarint(807<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofDefaultedFixed32))
-	case *Message_OneofDefaultedSfixed32:
-		b.EncodeVarint(808<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofDefaultedSfixed32))
-	case *Message_OneofDefaultedFloat:
-		b.EncodeVarint(809<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(math.Float32bits(x.OneofDefaultedFloat)))
-	case *Message_OneofDefaultedFixed64:
-		b.EncodeVarint(810<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofDefaultedFixed64))
-	case *Message_OneofDefaultedSfixed64:
-		b.EncodeVarint(811<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofDefaultedSfixed64))
-	case *Message_OneofDefaultedDouble:
-		b.EncodeVarint(812<<3 | proto.WireFixed64)
-		b.EncodeFixed64(math.Float64bits(x.OneofDefaultedDouble))
-	case *Message_OneofDefaultedString:
-		b.EncodeVarint(813<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofDefaultedString)
-	case *Message_OneofDefaultedBytes:
-		b.EncodeVarint(814<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.OneofDefaultedBytes)
-	case *Message_OneofDefaultedChildEnum:
-		b.EncodeVarint(815<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedChildEnum))
-	case *Message_OneofDefaultedSiblingEnum:
-		b.EncodeVarint(816<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedSiblingEnum))
-	case nil:
-	default:
-		return fmt.Errorf("Message.OneofDefaultedUnion has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _Message_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*Message)
-	switch tag {
-	case 700: // oneof_union.oneof_bool
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofBool{x != 0}
-		return true, err
-	case 701: // oneof_union.oneof_int32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofInt32{int32(x)}
-		return true, err
-	case 702: // oneof_union.oneof_sint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag32()
-		m.OneofUnion = &Message_OneofSint32{int32(x)}
-		return true, err
-	case 703: // oneof_union.oneof_uint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofUint32{uint32(x)}
-		return true, err
-	case 704: // oneof_union.oneof_int64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofInt64{int64(x)}
-		return true, err
-	case 705: // oneof_union.oneof_sint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag64()
-		m.OneofUnion = &Message_OneofSint64{int64(x)}
-		return true, err
-	case 706: // oneof_union.oneof_uint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofUint64{x}
-		return true, err
-	case 707: // oneof_union.oneof_fixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofFixed32{uint32(x)}
-		return true, err
-	case 708: // oneof_union.oneof_sfixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofSfixed32{int32(x)}
-		return true, err
-	case 709: // oneof_union.oneof_float
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofFloat{math.Float32frombits(uint32(x))}
-		return true, err
-	case 710: // oneof_union.oneof_fixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofFixed64{x}
-		return true, err
-	case 711: // oneof_union.oneof_sfixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofSfixed64{int64(x)}
-		return true, err
-	case 712: // oneof_union.oneof_double
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofDouble{math.Float64frombits(x)}
-		return true, err
-	case 713: // oneof_union.oneof_string
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString{x}
-		return true, err
-	case 714: // oneof_union.oneof_bytes
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.OneofUnion = &Message_OneofBytes{x}
-		return true, err
-	case 715: // oneof_union.oneof_child_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofChildEnum{Message_ChildEnum(x)}
-		return true, err
-	case 716: // oneof_union.oneof_child_message
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Message_ChildMessage)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofChildMessage{msg}
-		return true, err
-	case 717: // oneof_union.oneof_named_group
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Message_NamedGroup)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofNamedGroup{msg}
-		return true, err
-	case 718: // oneof_union.oneof_sibling_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofSiblingEnum{SiblingEnum(x)}
-		return true, err
-	case 719: // oneof_union.oneof_sibling_message
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(SiblingMessage)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofSiblingMessage{msg}
-		return true, err
-	case 720: // oneof_union.oneofgroup
-		if wire != proto.WireStartGroup {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Message_OneofGroup)
-		err := b.DecodeGroup(msg)
-		m.OneofUnion = &Message_Oneofgroup{msg}
-		return true, err
-	case 721: // oneof_union.oneof_string1
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString1{x}
-		return true, err
-	case 722: // oneof_union.oneof_string2
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString2{x}
-		return true, err
-	case 723: // oneof_union.oneof_string3
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString3{x}
-		return true, err
-	case 800: // oneof_defaulted_union.oneof_defaulted_bool
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedBool{x != 0}
-		return true, err
-	case 801: // oneof_defaulted_union.oneof_defaulted_int32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedInt32{int32(x)}
-		return true, err
-	case 802: // oneof_defaulted_union.oneof_defaulted_sint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag32()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSint32{int32(x)}
-		return true, err
-	case 803: // oneof_defaulted_union.oneof_defaulted_uint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedUint32{uint32(x)}
-		return true, err
-	case 804: // oneof_defaulted_union.oneof_defaulted_int64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedInt64{int64(x)}
-		return true, err
-	case 805: // oneof_defaulted_union.oneof_defaulted_sint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag64()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSint64{int64(x)}
-		return true, err
-	case 806: // oneof_defaulted_union.oneof_defaulted_uint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedUint64{x}
-		return true, err
-	case 807: // oneof_defaulted_union.oneof_defaulted_fixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedFixed32{uint32(x)}
-		return true, err
-	case 808: // oneof_defaulted_union.oneof_defaulted_sfixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSfixed32{int32(x)}
-		return true, err
-	case 809: // oneof_defaulted_union.oneof_defaulted_float
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedFloat{math.Float32frombits(uint32(x))}
-		return true, err
-	case 810: // oneof_defaulted_union.oneof_defaulted_fixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedFixed64{x}
-		return true, err
-	case 811: // oneof_defaulted_union.oneof_defaulted_sfixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSfixed64{int64(x)}
-		return true, err
-	case 812: // oneof_defaulted_union.oneof_defaulted_double
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedDouble{math.Float64frombits(x)}
-		return true, err
-	case 813: // oneof_defaulted_union.oneof_defaulted_string
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedString{x}
-		return true, err
-	case 814: // oneof_defaulted_union.oneof_defaulted_bytes
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.OneofDefaultedUnion = &Message_OneofDefaultedBytes{x}
-		return true, err
-	case 815: // oneof_defaulted_union.oneof_defaulted_child_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedChildEnum{Message_ChildEnum(x)}
-		return true, err
-	case 816: // oneof_defaulted_union.oneof_defaulted_sibling_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSiblingEnum{SiblingEnum(x)}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _Message_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*Message)
-	// oneof_union
-	switch x := m.OneofUnion.(type) {
-	case *Message_OneofBool:
-		n += proto.SizeVarint(700<<3 | proto.WireVarint)
-		n += 1
-	case *Message_OneofInt32:
-		n += proto.SizeVarint(701<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofInt32))
-	case *Message_OneofSint32:
-		n += proto.SizeVarint(702<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64((uint32(x.OneofSint32) << 1) ^ uint32((int32(x.OneofSint32) >> 31))))
-	case *Message_OneofUint32:
-		n += proto.SizeVarint(703<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofUint32))
-	case *Message_OneofInt64:
-		n += proto.SizeVarint(704<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofInt64))
-	case *Message_OneofSint64:
-		n += proto.SizeVarint(705<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(uint64(x.OneofSint64<<1) ^ uint64((int64(x.OneofSint64) >> 63))))
-	case *Message_OneofUint64:
-		n += proto.SizeVarint(706<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofUint64))
-	case *Message_OneofFixed32:
-		n += proto.SizeVarint(707<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofSfixed32:
-		n += proto.SizeVarint(708<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofFloat:
-		n += proto.SizeVarint(709<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofFixed64:
-		n += proto.SizeVarint(710<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofSfixed64:
-		n += proto.SizeVarint(711<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofDouble:
-		n += proto.SizeVarint(712<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofString:
-		n += proto.SizeVarint(713<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString)))
-		n += len(x.OneofString)
-	case *Message_OneofBytes:
-		n += proto.SizeVarint(714<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofBytes)))
-		n += len(x.OneofBytes)
-	case *Message_OneofChildEnum:
-		n += proto.SizeVarint(715<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofChildEnum))
-	case *Message_OneofChildMessage:
-		s := proto.Size(x.OneofChildMessage)
-		n += proto.SizeVarint(716<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_OneofNamedGroup:
-		s := proto.Size(x.OneofNamedGroup)
-		n += proto.SizeVarint(717<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_OneofSiblingEnum:
-		n += proto.SizeVarint(718<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofSiblingEnum))
-	case *Message_OneofSiblingMessage:
-		s := proto.Size(x.OneofSiblingMessage)
-		n += proto.SizeVarint(719<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_Oneofgroup:
-		n += proto.SizeVarint(720<<3 | proto.WireStartGroup)
-		n += proto.Size(x.Oneofgroup)
-		n += proto.SizeVarint(720<<3 | proto.WireEndGroup)
-	case *Message_OneofString1:
-		n += proto.SizeVarint(721<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString1)))
-		n += len(x.OneofString1)
-	case *Message_OneofString2:
-		n += proto.SizeVarint(722<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString2)))
-		n += len(x.OneofString2)
-	case *Message_OneofString3:
-		n += proto.SizeVarint(723<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString3)))
-		n += len(x.OneofString3)
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	// oneof_defaulted_union
-	switch x := m.OneofDefaultedUnion.(type) {
-	case *Message_OneofDefaultedBool:
-		n += proto.SizeVarint(800<<3 | proto.WireVarint)
-		n += 1
-	case *Message_OneofDefaultedInt32:
-		n += proto.SizeVarint(801<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofDefaultedInt32))
-	case *Message_OneofDefaultedSint32:
-		n += proto.SizeVarint(802<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64((uint32(x.OneofDefaultedSint32) << 1) ^ uint32((int32(x.OneofDefaultedSint32) >> 31))))
-	case *Message_OneofDefaultedUint32:
-		n += proto.SizeVarint(803<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofDefaultedUint32))
-	case *Message_OneofDefaultedInt64:
-		n += proto.SizeVarint(804<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofDefaultedInt64))
-	case *Message_OneofDefaultedSint64:
-		n += proto.SizeVarint(805<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(uint64(x.OneofDefaultedSint64<<1) ^ uint64((int64(x.OneofDefaultedSint64) >> 63))))
-	case *Message_OneofDefaultedUint64:
-		n += proto.SizeVarint(806<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofDefaultedUint64))
-	case *Message_OneofDefaultedFixed32:
-		n += proto.SizeVarint(807<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofDefaultedSfixed32:
-		n += proto.SizeVarint(808<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofDefaultedFloat:
-		n += proto.SizeVarint(809<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofDefaultedFixed64:
-		n += proto.SizeVarint(810<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofDefaultedSfixed64:
-		n += proto.SizeVarint(811<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofDefaultedDouble:
-		n += proto.SizeVarint(812<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofDefaultedString:
-		n += proto.SizeVarint(813<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofDefaultedString)))
-		n += len(x.OneofDefaultedString)
-	case *Message_OneofDefaultedBytes:
-		n += proto.SizeVarint(814<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofDefaultedBytes)))
-		n += len(x.OneofDefaultedBytes)
-	case *Message_OneofDefaultedChildEnum:
-		n += proto.SizeVarint(815<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofDefaultedChildEnum))
-	case *Message_OneofDefaultedSiblingEnum:
-		n += proto.SizeVarint(816<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofDefaultedSiblingEnum))
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
-var E_Message_ExtensionOptionalBool = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*bool)(nil),
-	Field:         10000,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_bool",
-	Tag:           "varint,10000,opt,name=extension_optional_bool,json=extensionOptionalBool",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionOptionalInt32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         10001,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_int32",
-	Tag:           "varint,10001,opt,name=extension_optional_int32,json=extensionOptionalInt32",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionOptionalSint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         10002,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_sint32",
-	Tag:           "zigzag32,10002,opt,name=extension_optional_sint32,json=extensionOptionalSint32",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionOptionalUint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         10003,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_uint32",
-	Tag:           "varint,10003,opt,name=extension_optional_uint32,json=extensionOptionalUint32",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionOptionalInt64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         10004,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_int64",
-	Tag:           "varint,10004,opt,name=extension_optional_int64,json=extensionOptionalInt64",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionOptionalSint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         10005,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_sint64",
-	Tag:           "zigzag64,10005,opt,name=extension_optional_sint64,json=extensionOptionalSint64",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionOptionalUint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         10006,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_uint64",
-	Tag:           "varint,10006,opt,name=extension_optional_uint64,json=extensionOptionalUint64",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionOptionalFixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         10007,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_fixed32",
-	Tag:           "fixed32,10007,opt,name=extension_optional_fixed32,json=extensionOptionalFixed32",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionOptionalSfixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         10008,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_sfixed32",
-	Tag:           "fixed32,10008,opt,name=extension_optional_sfixed32,json=extensionOptionalSfixed32",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionOptionalFloat = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float32)(nil),
-	Field:         10009,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_float",
-	Tag:           "fixed32,10009,opt,name=extension_optional_float,json=extensionOptionalFloat",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionOptionalFixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         10010,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_fixed64",
-	Tag:           "fixed64,10010,opt,name=extension_optional_fixed64,json=extensionOptionalFixed64",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionOptionalSfixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         10011,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_sfixed64",
-	Tag:           "fixed64,10011,opt,name=extension_optional_sfixed64,json=extensionOptionalSfixed64",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionOptionalDouble = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float64)(nil),
-	Field:         10012,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_double",
-	Tag:           "fixed64,10012,opt,name=extension_optional_double,json=extensionOptionalDouble",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionOptionalString = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*string)(nil),
-	Field:         10013,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_string",
-	Tag:           "bytes,10013,opt,name=extension_optional_string,json=extensionOptionalString",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionOptionalBytes = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]byte)(nil),
-	Field:         10014,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_bytes",
-	Tag:           "bytes,10014,opt,name=extension_optional_bytes,json=extensionOptionalBytes",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionOptionalChildEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ChildEnum)(nil),
-	Field:         10015,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_child_enum",
-	Tag:           "varint,10015,opt,name=extension_optional_child_enum,json=extensionOptionalChildEnum,enum=google.golang.org.proto2_20180125.Message_ChildEnum",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionOptionalChildMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ChildMessage)(nil),
-	Field:         10016,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_child_message",
-	Tag:           "bytes,10016,opt,name=extension_optional_child_message,json=extensionOptionalChildMessage",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionOptionalNamedGroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_NamedGroup)(nil),
-	Field:         10017,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_named_group",
-	Tag:           "bytes,10017,opt,name=extension_optional_named_group,json=extensionOptionalNamedGroup",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionOptionalSiblingEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*SiblingEnum)(nil),
-	Field:         10018,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_sibling_enum",
-	Tag:           "varint,10018,opt,name=extension_optional_sibling_enum,json=extensionOptionalSiblingEnum,enum=google.golang.org.proto2_20180125.SiblingEnum",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionOptionalSiblingMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*SiblingMessage)(nil),
-	Field:         10019,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_optional_sibling_message",
-	Tag:           "bytes,10019,opt,name=extension_optional_sibling_message,json=extensionOptionalSiblingMessage",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_Extensionoptionalgroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ExtensionOptionalGroup)(nil),
-	Field:         10020,
-	Name:          "google.golang.org.proto2_20180125.Message.extensionoptionalgroup",
-	Tag:           "group,10020,opt,name=ExtensionOptionalGroup,json=extensionoptionalgroup",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionDefaultedBool = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*bool)(nil),
-	Field:         20000,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_bool",
-	Tag:           "varint,20000,opt,name=extension_defaulted_bool,json=extensionDefaultedBool,def=1",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionDefaultedInt32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         20001,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_int32",
-	Tag:           "varint,20001,opt,name=extension_defaulted_int32,json=extensionDefaultedInt32,def=-12345",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionDefaultedSint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         20002,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_sint32",
-	Tag:           "zigzag32,20002,opt,name=extension_defaulted_sint32,json=extensionDefaultedSint32,def=-3200",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionDefaultedUint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         20003,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_uint32",
-	Tag:           "varint,20003,opt,name=extension_defaulted_uint32,json=extensionDefaultedUint32,def=3200",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionDefaultedInt64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         20004,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_int64",
-	Tag:           "varint,20004,opt,name=extension_defaulted_int64,json=extensionDefaultedInt64,def=-123456789",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionDefaultedSint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         20005,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_sint64",
-	Tag:           "zigzag64,20005,opt,name=extension_defaulted_sint64,json=extensionDefaultedSint64,def=-6400",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionDefaultedUint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         20006,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_uint64",
-	Tag:           "varint,20006,opt,name=extension_defaulted_uint64,json=extensionDefaultedUint64,def=6400",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionDefaultedFixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         20007,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_fixed32",
-	Tag:           "fixed32,20007,opt,name=extension_defaulted_fixed32,json=extensionDefaultedFixed32,def=320000",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionDefaultedSfixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         20008,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_sfixed32",
-	Tag:           "fixed32,20008,opt,name=extension_defaulted_sfixed32,json=extensionDefaultedSfixed32,def=-320000",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionDefaultedFloat = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float32)(nil),
-	Field:         20009,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_float",
-	Tag:           "fixed32,20009,opt,name=extension_defaulted_float,json=extensionDefaultedFloat,def=3.14159",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionDefaultedFixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         20010,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_fixed64",
-	Tag:           "fixed64,20010,opt,name=extension_defaulted_fixed64,json=extensionDefaultedFixed64,def=640000",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionDefaultedSfixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         20011,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_sfixed64",
-	Tag:           "fixed64,20011,opt,name=extension_defaulted_sfixed64,json=extensionDefaultedSfixed64,def=-640000",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionDefaultedDouble = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float64)(nil),
-	Field:         20012,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_double",
-	Tag:           "fixed64,20012,opt,name=extension_defaulted_double,json=extensionDefaultedDouble,def=3.14159265359",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionDefaultedString = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*string)(nil),
-	Field:         20013,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_string",
-	Tag:           "bytes,20013,opt,name=extension_defaulted_string,json=extensionDefaultedString,def=hello, \"world!\"\n",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionDefaultedBytes = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]byte)(nil),
-	Field:         20014,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_bytes",
-	Tag:           "bytes,20014,opt,name=extension_defaulted_bytes,json=extensionDefaultedBytes,def=dead\\336\\255\\276\\357beef",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionDefaultedChildEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ChildEnum)(nil),
-	Field:         20015,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_child_enum",
-	Tag:           "varint,20015,opt,name=extension_defaulted_child_enum,json=extensionDefaultedChildEnum,enum=google.golang.org.proto2_20180125.Message_ChildEnum,def=0",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionDefaultedSiblingEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*SiblingEnum)(nil),
-	Field:         20016,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_defaulted_sibling_enum",
-	Tag:           "varint,20016,opt,name=extension_defaulted_sibling_enum,json=extensionDefaultedSiblingEnum,enum=google.golang.org.proto2_20180125.SiblingEnum,def=0",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionRepeatedBool = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]bool)(nil),
-	Field:         30000,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_bool",
-	Tag:           "varint,30000,rep,name=extension_repeated_bool,json=extensionRepeatedBool",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionRepeatedInt32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int32)(nil),
-	Field:         30001,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_int32",
-	Tag:           "varint,30001,rep,name=extension_repeated_int32,json=extensionRepeatedInt32",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int32)(nil),
-	Field:         30002,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_sint32",
-	Tag:           "zigzag32,30002,rep,name=extension_repeated_sint32,json=extensionRepeatedSint32",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionRepeatedUint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint32)(nil),
-	Field:         30003,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_uint32",
-	Tag:           "varint,30003,rep,name=extension_repeated_uint32,json=extensionRepeatedUint32",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionRepeatedInt64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int64)(nil),
-	Field:         30004,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_int64",
-	Tag:           "varint,30004,rep,name=extension_repeated_int64,json=extensionRepeatedInt64",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int64)(nil),
-	Field:         30005,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_sint64",
-	Tag:           "zigzag64,30005,rep,name=extension_repeated_sint64,json=extensionRepeatedSint64",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionRepeatedUint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint64)(nil),
-	Field:         30006,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_uint64",
-	Tag:           "varint,30006,rep,name=extension_repeated_uint64,json=extensionRepeatedUint64",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionRepeatedFixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint32)(nil),
-	Field:         30007,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_fixed32",
-	Tag:           "fixed32,30007,rep,name=extension_repeated_fixed32,json=extensionRepeatedFixed32",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSfixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int32)(nil),
-	Field:         30008,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_sfixed32",
-	Tag:           "fixed32,30008,rep,name=extension_repeated_sfixed32,json=extensionRepeatedSfixed32",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionRepeatedFloat = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]float32)(nil),
-	Field:         30009,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_float",
-	Tag:           "fixed32,30009,rep,name=extension_repeated_float,json=extensionRepeatedFloat",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionRepeatedFixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint64)(nil),
-	Field:         30010,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_fixed64",
-	Tag:           "fixed64,30010,rep,name=extension_repeated_fixed64,json=extensionRepeatedFixed64",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSfixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int64)(nil),
-	Field:         30011,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_sfixed64",
-	Tag:           "fixed64,30011,rep,name=extension_repeated_sfixed64,json=extensionRepeatedSfixed64",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionRepeatedDouble = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]float64)(nil),
-	Field:         30012,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_double",
-	Tag:           "fixed64,30012,rep,name=extension_repeated_double,json=extensionRepeatedDouble",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionRepeatedString = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]string)(nil),
-	Field:         30013,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_string",
-	Tag:           "bytes,30013,rep,name=extension_repeated_string,json=extensionRepeatedString",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionRepeatedBytes = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([][]byte)(nil),
-	Field:         30014,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_bytes",
-	Tag:           "bytes,30014,rep,name=extension_repeated_bytes,json=extensionRepeatedBytes",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionRepeatedChildEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]Message_ChildEnum)(nil),
-	Field:         30015,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_child_enum",
-	Tag:           "varint,30015,rep,name=extension_repeated_child_enum,json=extensionRepeatedChildEnum,enum=google.golang.org.proto2_20180125.Message_ChildEnum",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionRepeatedChildMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*Message_ChildMessage)(nil),
-	Field:         30016,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_child_message",
-	Tag:           "bytes,30016,rep,name=extension_repeated_child_message,json=extensionRepeatedChildMessage",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionRepeatedNamedGroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*Message_NamedGroup)(nil),
-	Field:         30017,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_named_group",
-	Tag:           "bytes,30017,rep,name=extension_repeated_named_group,json=extensionRepeatedNamedGroup",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSiblingEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]SiblingEnum)(nil),
-	Field:         30018,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_sibling_enum",
-	Tag:           "varint,30018,rep,name=extension_repeated_sibling_enum,json=extensionRepeatedSiblingEnum,enum=google.golang.org.proto2_20180125.SiblingEnum",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSiblingMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*SiblingMessage)(nil),
-	Field:         30019,
-	Name:          "google.golang.org.proto2_20180125.Message.extension_repeated_sibling_message",
-	Tag:           "bytes,30019,rep,name=extension_repeated_sibling_message,json=extensionRepeatedSiblingMessage",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-var E_Message_Extensionrepeatedgroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*Message_ExtensionRepeatedGroup)(nil),
-	Field:         30020,
-	Name:          "google.golang.org.proto2_20180125.Message.extensionrepeatedgroup",
-	Tag:           "group,30020,rep,name=ExtensionRepeatedGroup,json=extensionrepeatedgroup",
-	Filename:      "proto2_20180125_92554152/test.proto",
-}
-
-type Message_ChildMessage struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	F4               *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_ChildMessage) Reset()                    { *m = Message_ChildMessage{} }
-func (m *Message_ChildMessage) String() string            { return proto.CompactTextString(m) }
-func (*Message_ChildMessage) ProtoMessage()               {}
-func (*Message_ChildMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
-
-func (m *Message_ChildMessage) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_ChildMessage) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_ChildMessage) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func (m *Message_ChildMessage) GetF4() *Message {
-	if m != nil {
-		return m.F4
-	}
-	return nil
-}
-
-type Message_NamedGroup struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	F4               *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_NamedGroup) Reset()                    { *m = Message_NamedGroup{} }
-func (m *Message_NamedGroup) String() string            { return proto.CompactTextString(m) }
-func (*Message_NamedGroup) ProtoMessage()               {}
-func (*Message_NamedGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 1} }
-
-func (m *Message_NamedGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_NamedGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_NamedGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func (m *Message_NamedGroup) GetF4() *Message {
-	if m != nil {
-		return m.F4
-	}
-	return nil
-}
-
-type Message_OptionalGroup struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_OptionalGroup) Reset()                    { *m = Message_OptionalGroup{} }
-func (m *Message_OptionalGroup) String() string            { return proto.CompactTextString(m) }
-func (*Message_OptionalGroup) ProtoMessage()               {}
-func (*Message_OptionalGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 2} }
-
-func (m *Message_OptionalGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_OptionalGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_OptionalGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_RequiredGroup struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_RequiredGroup) Reset()                    { *m = Message_RequiredGroup{} }
-func (m *Message_RequiredGroup) String() string            { return proto.CompactTextString(m) }
-func (*Message_RequiredGroup) ProtoMessage()               {}
-func (*Message_RequiredGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 3} }
-
-func (m *Message_RequiredGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_RequiredGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_RequiredGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_RepeatedGroup struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_RepeatedGroup) Reset()                    { *m = Message_RepeatedGroup{} }
-func (m *Message_RepeatedGroup) String() string            { return proto.CompactTextString(m) }
-func (*Message_RepeatedGroup) ProtoMessage()               {}
-func (*Message_RepeatedGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 4} }
-
-func (m *Message_RepeatedGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_RepeatedGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_RepeatedGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_OneofGroup struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_OneofGroup) Reset()                    { *m = Message_OneofGroup{} }
-func (m *Message_OneofGroup) String() string            { return proto.CompactTextString(m) }
-func (*Message_OneofGroup) ProtoMessage()               {}
-func (*Message_OneofGroup) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 33} }
-
-func (m *Message_OneofGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_OneofGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_OneofGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_ExtensionOptionalGroup struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_ExtensionOptionalGroup) Reset()         { *m = Message_ExtensionOptionalGroup{} }
-func (m *Message_ExtensionOptionalGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_ExtensionOptionalGroup) ProtoMessage()    {}
-func (*Message_ExtensionOptionalGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{1, 34}
-}
-
-func (m *Message_ExtensionOptionalGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_ExtensionOptionalGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_ExtensionOptionalGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_ExtensionRepeatedGroup struct {
-	F1               *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2               *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3               []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_unrecognized []byte   `json:"-"`
-}
-
-func (m *Message_ExtensionRepeatedGroup) Reset()         { *m = Message_ExtensionRepeatedGroup{} }
-func (m *Message_ExtensionRepeatedGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_ExtensionRepeatedGroup) ProtoMessage()    {}
-func (*Message_ExtensionRepeatedGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor0, []int{1, 35}
-}
-
-func (m *Message_ExtensionRepeatedGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_ExtensionRepeatedGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_ExtensionRepeatedGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func init() {
-	proto.RegisterType((*SiblingMessage)(nil), "google.golang.org.proto2_20180125.SiblingMessage")
-	proto.RegisterType((*Message)(nil), "google.golang.org.proto2_20180125.Message")
-	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto2_20180125.Message.ChildMessage")
-	proto.RegisterType((*Message_NamedGroup)(nil), "google.golang.org.proto2_20180125.Message.NamedGroup")
-	proto.RegisterType((*Message_OptionalGroup)(nil), "google.golang.org.proto2_20180125.Message.OptionalGroup")
-	proto.RegisterType((*Message_RequiredGroup)(nil), "google.golang.org.proto2_20180125.Message.RequiredGroup")
-	proto.RegisterType((*Message_RepeatedGroup)(nil), "google.golang.org.proto2_20180125.Message.RepeatedGroup")
-	proto.RegisterType((*Message_OneofGroup)(nil), "google.golang.org.proto2_20180125.Message.OneofGroup")
-	proto.RegisterType((*Message_ExtensionOptionalGroup)(nil), "google.golang.org.proto2_20180125.Message.ExtensionOptionalGroup")
-	proto.RegisterType((*Message_ExtensionRepeatedGroup)(nil), "google.golang.org.proto2_20180125.Message.ExtensionRepeatedGroup")
-	proto.RegisterEnum("google.golang.org.proto2_20180125.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
-	proto.RegisterEnum("google.golang.org.proto2_20180125.Message_ChildEnum", Message_ChildEnum_name, Message_ChildEnum_value)
-	proto.RegisterExtension(E_Message_ExtensionOptionalBool)
-	proto.RegisterExtension(E_Message_ExtensionOptionalInt32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSint32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalUint32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalInt64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSint64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalUint64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalFixed32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalFloat)
-	proto.RegisterExtension(E_Message_ExtensionOptionalFixed64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalDouble)
-	proto.RegisterExtension(E_Message_ExtensionOptionalString)
-	proto.RegisterExtension(E_Message_ExtensionOptionalBytes)
-	proto.RegisterExtension(E_Message_ExtensionOptionalChildEnum)
-	proto.RegisterExtension(E_Message_ExtensionOptionalChildMessage)
-	proto.RegisterExtension(E_Message_ExtensionOptionalNamedGroup)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingEnum)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingMessage)
-	proto.RegisterExtension(E_Message_Extensionoptionalgroup)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedBool)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedInt32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSint32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedUint32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedInt64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSint64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedUint64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedFloat)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedDouble)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedString)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedBytes)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedChildEnum)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSiblingEnum)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedBool)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedInt32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSint32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedUint32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedInt64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSint64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedUint64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedFloat)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedDouble)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedString)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedBytes)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedChildEnum)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedChildMessage)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedNamedGroup)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingEnum)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingMessage)
-	proto.RegisterExtension(E_Message_Extensionrepeatedgroup)
-}
-
-func init() { proto.RegisterFile("proto2_20180125_92554152/test.proto", fileDescriptor0) }
-
-var fileDescriptor0 = []byte{
-	// 4468 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5c, 0x67, 0x70, 0x24, 0xc7,
-	0x75, 0xc6, 0xec, 0x62, 0x17, 0x87, 0x3e, 0x2c, 0xb0, 0x98, 0xbb, 0x03, 0xe6, 0x40, 0xd2, 0x5c,
-	0x41, 0xb2, 0xbc, 0xa6, 0x79, 0x38, 0x60, 0xd0, 0xe8, 0xe3, 0xad, 0x19, 0x04, 0x90, 0x47, 0x2d,
-	0x65, 0x71, 0xa9, 0x1a, 0xd6, 0xb9, 0x5c, 0x2e, 0x96, 0x61, 0xdc, 0x61, 0x81, 0x03, 0xb9, 0x01,
-	0x04, 0x76, 0x49, 0x9e, 0x25, 0x17, 0xcf, 0x72, 0xfc, 0x49, 0xe5, 0xb4, 0x92, 0x28, 0x66, 0x89,
-	0x51, 0x39, 0x31, 0x29, 0xd8, 0xa6, 0x72, 0x72, 0x90, 0x93, 0x9c, 0x93, 0x9c, 0x73, 0x0e, 0xd5,
-	0xfd, 0xba, 0xa7, 0xbb, 0x67, 0x7a, 0x16, 0xe8, 0x59, 0x15, 0x7f, 0xb0, 0x8a, 0xd7, 0xfb, 0xfa,
-	0x7d, 0xfd, 0xbe, 0xed, 0xf7, 0xde, 0x87, 0x9e, 0xe9, 0x45, 0x2f, 0xdd, 0xde, 0x69, 0x77, 0xda,
-	0xfe, 0xaa, 0x3f, 0xbf, 0x70, 0xc5, 0xfc, 0x82, 0xbf, 0xb4, 0x7a, 0xd2, 0x5f, 0x5a, 0xc2, 0x0b,
-	0x4b, 0xfe, 0xf1, 0x4e, 0x7d, 0xb7, 0x33, 0xc7, 0x3e, 0x75, 0x5f, 0xb2, 0xd9, 0x6e, 0x6f, 0x36,
-	0xea, 0x73, 0x9b, 0xed, 0xc6, 0x5a, 0x6b, 0x73, 0xae, 0xbd, 0xb3, 0x39, 0x17, 0x99, 0x36, 0xfb,
-	0x3a, 0x34, 0x7e, 0xf3, 0xd6, 0x99, 0xc6, 0x56, 0x6b, 0xf3, 0xc6, 0xfa, 0xee, 0xee, 0xda, 0x66,
-	0xdd, 0x1d, 0x47, 0x99, 0x8d, 0x05, 0xcf, 0x29, 0x39, 0xe5, 0xd1, 0x20, 0xb3, 0xb1, 0xc0, 0xfe,
-	0xed, 0x7b, 0x99, 0x52, 0x86, 0xfd, 0xdb, 0x67, 0xff, 0x5e, 0xf4, 0xb2, 0xa5, 0x2c, 0xfb, 0xf7,
-	0xa2, 0x5b, 0x41, 0x99, 0x0d, 0xec, 0x0d, 0x97, 0x9c, 0xf2, 0x41, 0xff, 0xb2, 0xb9, 0x3d, 0x11,
-	0xe7, 0x38, 0x4e, 0x90, 0xd9, 0xc0, 0xb3, 0xdf, 0x79, 0xd4, 0x41, 0x23, 0x02, 0xf8, 0x34, 0x42,
-	0xad, 0xb5, 0x66, 0x7d, 0x7d, 0x73, 0xa7, 0xdd, 0xdd, 0x66, 0x0b, 0x40, 0xfe, 0xd2, 0xfe, 0x1d,
-	0xce, 0xd5, 0xe8, 0xe4, 0x57, 0xd2, 0xc9, 0x81, 0xe2, 0xc8, 0x7d, 0x29, 0x2a, 0xb4, 0xb7, 0x3b,
-	0x5b, 0xed, 0xd6, 0x5a, 0x63, 0xf5, 0x4c, 0xbb, 0xdd, 0xf0, 0xd6, 0x4b, 0x4e, 0xf9, 0x40, 0x30,
-	0x26, 0x06, 0x57, 0xda, 0xed, 0x86, 0xfb, 0xfd, 0x68, 0x3c, 0x34, 0xda, 0x6a, 0x75, 0x16, 0x7d,
-	0xaf, 0x5e, 0x72, 0xca, 0xb9, 0x20, 0x9c, 0x7a, 0x03, 0x1d, 0x74, 0x7f, 0x00, 0x4d, 0x84, 0x66,
-	0xbb, 0x60, 0xb7, 0x51, 0x72, 0xca, 0x93, 0x41, 0x38, 0xfb, 0xe6, 0xad, 0x98, 0x61, 0x17, 0x0c,
-	0x37, 0x4b, 0x4e, 0xb9, 0x20, 0x0d, 0x4f, 0x83, 0x61, 0x04, 0x98, 0x60, 0xef, 0x5c, 0xc9, 0x29,
-	0x67, 0x35, 0x60, 0x82, 0x63, 0xc0, 0x04, 0x7b, 0x5b, 0x25, 0xa7, 0xec, 0xea, 0xc0, 0x11, 0xc3,
-	0x2e, 0x18, 0xde, 0x5a, 0x72, 0xca, 0xc3, 0x3a, 0x30, 0xc1, 0xee, 0x0f, 0xa2, 0x62, 0x68, 0xb8,
-	0xb1, 0x75, 0x57, 0x7d, 0x7d, 0xd1, 0xf7, 0x6e, 0x2b, 0x39, 0xe5, 0x91, 0x20, 0x74, 0x70, 0x3d,
-	0x0c, 0xbb, 0x3f, 0x84, 0x26, 0x25, 0xb8, 0xb0, 0x6d, 0x94, 0x9c, 0xf2, 0x44, 0x10, 0xfa, 0xb8,
-	0x99, 0x8f, 0x6b, 0x01, 0x6d, 0x34, 0xda, 0x6b, 0x1d, 0xaf, 0x59, 0x72, 0xca, 0x19, 0x19, 0xd0,
-	0xf5, 0x74, 0x30, 0x0e, 0x4f, 0xb0, 0xd7, 0x2a, 0x39, 0xe5, 0x7c, 0x04, 0x9e, 0x60, 0x03, 0x3c,
-	0xc1, 0x5e, 0xbb, 0xe4, 0x94, 0x8b, 0x51, 0xf8, 0x48, 0xfc, 0xeb, 0xed, 0xee, 0x99, 0x46, 0xdd,
-	0xdb, 0x2e, 0x39, 0x65, 0x47, 0xc6, 0x7f, 0x1d, 0x1b, 0xd5, 0x19, 0xed, 0xec, 0x6c, 0xb5, 0x36,
-	0xbd, 0xdb, 0xd9, 0x9e, 0x97, 0x8c, 0xb2, 0x51, 0x2d, 0xa0, 0x33, 0xe7, 0x3b, 0xf5, 0x5d, 0x6f,
-	0xa7, 0xe4, 0x94, 0xc7, 0x64, 0x40, 0x2b, 0x74, 0xd0, 0x5d, 0x47, 0x87, 0x42, 0xb3, 0xb3, 0xe7,
-	0xb6, 0x1a, 0xeb, 0xab, 0xf5, 0x56, 0xb7, 0xe9, 0xed, 0x96, 0x9c, 0xf2, 0xb8, 0x8f, 0x2d, 0xb6,
-	0xf1, 0xb5, 0x74, 0xf2, 0xa9, 0x56, 0xb7, 0x19, 0x84, 0x61, 0x87, 0x43, 0x6e, 0x13, 0x4d, 0x45,
-	0x50, 0x9a, 0x30, 0xcd, 0xeb, 0xb0, 0x04, 0x3c, 0x61, 0x0b, 0x24, 0xb2, 0xf1, 0xb0, 0x86, 0x25,
-	0x52, 0x72, 0x13, 0x85, 0xe3, 0xab, 0x2c, 0xa5, 0x56, 0x21, 0x39, 0xbb, 0x0c, 0x2c, 0x65, 0x72,
-	0xba, 0xc2, 0xa5, 0x1c, 0x73, 0xcf, 0xa0, 0x23, 0xca, 0xfe, 0x66, 0xf5, 0x08, 0xf8, 0xbb, 0x83,
-	0xf1, 0x37, 0xb7, 0x0f, 0x24, 0x5e, 0xc6, 0x18, 0x73, 0x87, 0x64, 0x56, 0x84, 0x83, 0xee, 0x6d,
-	0xc8, 0x8b, 0x61, 0x08, 0xf6, 0xee, 0x64, 0x01, 0x2d, 0xec, 0x1f, 0x46, 0xf0, 0x36, 0x15, 0x41,
-	0x12, 0xcc, 0xfd, 0x84, 0xac, 0x3a, 0x40, 0xd9, 0x5d, 0xac, 0x9e, 0x5d, 0x61, 0x41, 0xd9, 0x4d,
-	0x7c, 0x3e, 0xb0, 0xa6, 0xbb, 0x73, 0x2f, 0x47, 0xe3, 0xeb, 0xf5, 0x8d, 0xb5, 0x6e, 0xa3, 0x53,
-	0x5f, 0x87, 0xb2, 0xf6, 0x02, 0xad, 0x98, 0x07, 0x2a, 0xc3, 0x9d, 0x9d, 0x6e, 0x3d, 0x28, 0x84,
-	0x1f, 0xb2, 0xf2, 0x36, 0x8f, 0x26, 0xa4, 0x35, 0x94, 0xa3, 0x2f, 0x50, 0xf3, 0x5c, 0x25, 0x7f,
-	0x6c, 0xc1, 0x5f, 0xc4, 0x4b, 0x81, 0xf4, 0x06, 0x95, 0x6e, 0x01, 0x15, 0xe5, 0x0c, 0x5e, 0xea,
-	0xbe, 0x48, 0xa7, 0x4c, 0x56, 0x72, 0xc7, 0x16, 0xfd, 0xf9, 0xf9, 0x40, 0x7a, 0xe4, 0x35, 0x6f,
-	0x5e, 0x9d, 0xc2, 0x8b, 0xde, 0x97, 0xe8, 0x94, 0x42, 0x65, 0x38, 0x32, 0x83, 0x17, 0x3f, 0x1c,
-	0x59, 0x16, 0xc1, 0xde, 0x97, 0xe9, 0x84, 0x6c, 0x05, 0xc1, 0xb2, 0xc8, 0x89, 0x2b, 0x4e, 0xea,
-	0x4b, 0x23, 0x38, 0xbe, 0x34, 0x82, 0xbd, 0xaf, 0xd0, 0x69, 0x6e, 0x25, 0x77, 0x8c, 0xe0, 0xd8,
-	0xd2, 0x08, 0x8e, 0x2f, 0x8d, 0x60, 0xef, 0xab, 0x74, 0xca, 0x70, 0x65, 0x38, 0x32, 0x83, 0x97,
-	0x47, 0x8c, 0x26, 0xe5, 0x0c, 0x51, 0xf3, 0xbe, 0x46, 0xa7, 0x8c, 0x54, 0xf2, 0x34, 0x9a, 0xf9,
-	0xf9, 0x40, 0xfa, 0x14, 0x95, 0xf2, 0x04, 0x72, 0x95, 0xa5, 0x89, 0x69, 0x5f, 0xa7, 0xd3, 0x26,
-	0x2a, 0x23, 0xc7, 0xf8, 0x3c, 0xe9, 0x39, 0xac, 0x9a, 0x0b, 0x2a, 0x13, 0x50, 0x36, 0xbf, 0x41,
-	0x67, 0x65, 0x2a, 0x23, 0x8b, 0x73, 0x0b, 0x78, 0x61, 0x49, 0xa5, 0x01, 0x2a, 0x68, 0x7c, 0x85,
-	0x04, 0x7b, 0xdf, 0xa4, 0x93, 0xf2, 0x95, 0x3c, 0x0d, 0x2a, 0xbe, 0x42, 0x82, 0x4d, 0x2b, 0x24,
-	0xd8, 0xfb, 0x16, 0x9d, 0x56, 0xac, 0x8c, 0x1c, 0xe3, 0xf3, 0xa2, 0x2b, 0x24, 0xd8, 0x3d, 0xa9,
-	0x52, 0xc8, 0x2b, 0xeb, 0xaf, 0xd1, 0x69, 0x4e, 0xa5, 0xc0, 0x97, 0xe8, 0x93, 0xa5, 0xc5, 0xa5,
-	0x93, 0x0a, 0x97, 0xbc, 0xd4, 0x5e, 0xa9, 0x7d, 0x61, 0x50, 0x6b, 0x7f, 0x9d, 0x09, 0x8c, 0x4a,
-	0xf1, 0x5c, 0xbd, 0xd1, 0x68, 0x5f, 0x5e, 0x9a, 0xbd, 0xb3, 0xbd, 0xd3, 0x58, 0x7f, 0xc9, 0x2c,
-	0x52, 0xbf, 0x3b, 0xa8, 0xbf, 0x2b, 0x2a, 0x35, 0x50, 0x80, 0x7f, 0x83, 0x4e, 0x1e, 0xab, 0x78,
-	0xeb, 0xf5, 0xb5, 0xf5, 0x5b, 0x16, 0x17, 0xc9, 0x2d, 0xfe, 0xd2, 0xd2, 0x2d, 0xfe, 0x09, 0x72,
-	0xcb, 0xe2, 0xd2, 0x89, 0x33, 0xf5, 0xfa, 0x86, 0xc2, 0x15, 0x14, 0xe7, 0x16, 0x3a, 0x2c, 0x7d,
-	0x28, 0xd5, 0xf9, 0x37, 0x9d, 0xf4, 0xe5, 0xb9, 0x92, 0x5b, 0x7e, 0xf5, 0x6b, 0xaa, 0xcb, 0x81,
-	0xe4, 0x53, 0x96, 0xe9, 0x06, 0x9a, 0x52, 0xb7, 0xa8, 0x52, 0xcf, 0xbe, 0xed, 0xa4, 0x29, 0x68,
-	0x02, 0xeb, 0xb0, 0xb2, 0xb1, 0x65, 0x61, 0x7b, 0x19, 0x2a, 0xec, 0xd4, 0x6f, 0xef, 0x6e, 0xed,
-	0x88, 0x52, 0xf0, 0x18, 0x55, 0x6b, 0x07, 0x82, 0x31, 0x31, 0xca, 0x6a, 0xc0, 0xcb, 0xd1, 0x78,
-	0x68, 0x05, 0xc9, 0xf9, 0x38, 0x35, 0xcb, 0x05, 0xe1, 0x64, 0xc8, 0xfc, 0x32, 0x9a, 0x08, 0xed,
-	0x78, 0xe2, 0x3f, 0x41, 0x0d, 0x27, 0x83, 0x70, 0x3e, 0x4f, 0x78, 0xd5, 0x92, 0xe7, 0xfb, 0x93,
-	0xd4, 0xb2, 0x20, 0x2d, 0x79, 0xa2, 0x47, 0xb0, 0x09, 0xf6, 0x9e, 0xa2, 0x86, 0x59, 0x0d, 0x9b,
-	0xe0, 0x18, 0x36, 0xc1, 0xde, 0x07, 0xa9, 0xa1, 0xab, 0x63, 0x47, 0x2c, 0x79, 0x42, 0x7f, 0x88,
-	0x5a, 0x0e, 0xeb, 0xd8, 0x04, 0xbb, 0x97, 0xa1, 0x62, 0x68, 0x29, 0x32, 0xf2, 0xc3, 0xd4, 0x74,
-	0x24, 0x08, 0x5d, 0x88, 0xfc, 0xbd, 0x1c, 0x4d, 0x4a, 0x7c, 0x61, 0xfc, 0x11, 0x6a, 0x3c, 0x11,
-	0x84, 0x5e, 0xc2, 0xa4, 0x55, 0xa3, 0x82, 0x9c, 0xfd, 0x28, 0x35, 0xcd, 0xc8, 0xa8, 0x20, 0x53,
-	0x63, 0x2b, 0x20, 0xd8, 0xfb, 0x18, 0xb5, 0xcc, 0x47, 0x56, 0x40, 0xb0, 0x61, 0x05, 0x04, 0x7b,
-	0x1f, 0xa7, 0xc6, 0xc5, 0xe8, 0x0a, 0x22, 0x2c, 0xf0, 0x9c, 0xfc, 0x04, 0xb5, 0x75, 0x24, 0x0b,
-	0x3c, 0x07, 0x35, 0x66, 0x21, 0x05, 0x3f, 0x09, 0x9a, 0x5e, 0x32, 0x0b, 0xf9, 0xa6, 0x46, 0x05,
-	0xe9, 0xf6, 0x29, 0x6a, 0x38, 0x26, 0xa3, 0x82, 0x9c, 0xaa, 0xa3, 0x43, 0xa1, 0x9d, 0x92, 0x52,
-	0x9f, 0xa6, 0xc6, 0xa9, 0x15, 0x8f, 0xf0, 0x28, 0x53, 0xa9, 0x85, 0xa6, 0x22, 0x30, 0xa2, 0x67,
-	0x3f, 0x4d, 0x91, 0x06, 0x91, 0x3c, 0x1a, 0x98, 0x68, 0xdc, 0xe7, 0x50, 0x38, 0xae, 0x49, 0x9e,
-	0x67, 0x00, 0x2d, 0xad, 0xe6, 0x11, 0x3e, 0x15, 0xcd, 0x73, 0x16, 0x1d, 0x51, 0x36, 0xbb, 0x52,
-	0x23, 0x9e, 0x05, 0x0a, 0xad, 0x45, 0x8f, 0x4c, 0x11, 0x59, 0x1b, 0x1a, 0xc8, 0x8b, 0x81, 0x08,
-	0x02, 0x9f, 0x83, 0x90, 0xd2, 0xa8, 0x9e, 0x08, 0x94, 0x20, 0x6f, 0x55, 0x56, 0x22, 0x60, 0xed,
-	0x79, 0x0a, 0x61, 0x27, 0x7b, 0x02, 0xee, 0x80, 0xcb, 0x1e, 0xcd, 0x9f, 0x7b, 0x15, 0x9a, 0x96,
-	0x1b, 0x5e, 0xd7, 0x3f, 0xf7, 0x64, 0x69, 0xd1, 0xe3, 0xfa, 0x27, 0x64, 0xf6, 0x3a, 0x4d, 0x07,
-	0x2d, 0x2b, 0x6c, 0x44, 0x05, 0xd1, 0x1b, 0xe8, 0x7c, 0x29, 0x88, 0xa6, 0x62, 0x1e, 0xa0, 0x3c,
-	0xae, 0xa0, 0xa3, 0x06, 0x17, 0xbc, 0x50, 0xbe, 0x91, 0xfa, 0x08, 0x15, 0xd2, 0x74, 0xcc, 0x05,
-	0x2f, 0x9c, 0xcb, 0x46, 0x1f, 0xbc, 0x84, 0xbe, 0x89, 0xfa, 0x10, 0x92, 0x29, 0xee, 0x82, 0x57,
-	0xd4, 0x53, 0x49, 0x91, 0x10, 0xec, 0xbd, 0x99, 0x7a, 0xd0, 0x35, 0x94, 0x31, 0x1a, 0x82, 0xfb,
-	0x44, 0x43, 0xb0, 0xf7, 0x16, 0xea, 0x27, 0x14, 0x55, 0xe6, 0x68, 0x08, 0xee, 0x13, 0x0d, 0xc1,
-	0xde, 0x5b, 0xa9, 0x0f, 0xa1, 0xb2, 0xcc, 0xd1, 0x10, 0xec, 0x9e, 0x42, 0x33, 0x06, 0x17, 0xa2,
-	0x00, 0xbf, 0x8d, 0xfa, 0x90, 0xb2, 0xcb, 0x8b, 0x79, 0x11, 0xe5, 0xbb, 0x8a, 0x2e, 0x32, 0x45,
-	0x23, 0xfc, 0xbc, 0x9d, 0xfa, 0x51, 0x74, 0xd8, 0xd1, 0x78, 0x44, 0xa2, 0xb4, 0xaf, 0x18, 0xe9,
-	0x85, 0x22, 0xff, 0x0e, 0xea, 0x46, 0x11, 0x66, 0x71, 0x6e, 0xa1, 0xec, 0xf7, 0x09, 0x8a, 0x60,
-	0xef, 0x9d, 0xd4, 0x8b, 0x54, 0x6a, 0x09, 0x41, 0x11, 0xdc, 0x37, 0x28, 0x82, 0xbd, 0x77, 0x51,
-	0x3f, 0x8a, 0x74, 0x4b, 0x0a, 0x8a, 0x60, 0xf7, 0x55, 0xc6, 0x2f, 0x8a, 0xf7, 0x8d, 0x1e, 0xf5,
-	0x13, 0xd3, 0x72, 0xf1, 0x6f, 0x8c, 0xf7, 0x93, 0x1b, 0xcd, 0x1b, 0x07, 0x3a, 0xcb, 0xbb, 0xa9,
-	0x2f, 0x93, 0xb8, 0x33, 0xec, 0x21, 0x68, 0x3a, 0x37, 0x1b, 0xf9, 0x86, 0xf6, 0xf3, 0x1e, 0xea,
-	0xad, 0x9f, 0xda, 0x8b, 0x7f, 0x01, 0xd0, 0xa1, 0xee, 0x46, 0x97, 0x18, 0x9c, 0x2a, 0xbd, 0xea,
-	0xbd, 0xd9, 0xf4, 0xbd, 0x4a, 0x48, 0xb2, 0x99, 0x18, 0xb8, 0xec, 0x5d, 0x3f, 0x8d, 0x2e, 0x35,
-	0x66, 0x97, 0x52, 0xeb, 0xef, 0xcd, 0xa6, 0xa9, 0xf5, 0x02, 0xfc, 0x62, 0x43, 0x4e, 0x46, 0x74,
-	0xe1, 0x76, 0x7d, 0x2d, 0x2c, 0x91, 0xff, 0x9c, 0x2d, 0x65, 0x41, 0x17, 0xc2, 0xa8, 0xd4, 0x85,
-	0xdc, 0x0a, 0x2a, 0xd0, 0xbf, 0x50, 0x33, 0xa6, 0x0b, 0x61, 0x58, 0xd1, 0x85, 0xdc, 0x8e, 0x97,
-	0xbb, 0x7f, 0xa5, 0x86, 0x4c, 0x17, 0xc2, 0xb8, 0xaa, 0x0b, 0xb9, 0x25, 0x2f, 0x6a, 0xff, 0x46,
-	0x2d, 0x0b, 0xd2, 0x52, 0xd5, 0x85, 0x12, 0x9b, 0x60, 0xef, 0xdf, 0xa9, 0x61, 0x56, 0xc3, 0x16,
-	0x3a, 0x47, 0xc1, 0x26, 0xd8, 0xfb, 0x0f, 0x6a, 0xe8, 0xea, 0xd8, 0x11, 0x4b, 0x5e, 0x82, 0xfe,
-	0x93, 0x5a, 0x0e, 0xeb, 0xd8, 0x42, 0x17, 0x72, 0x4b, 0x51, 0x21, 0xfe, 0x8b, 0x9a, 0x32, 0x5d,
-	0x08, 0x1f, 0x68, 0xba, 0x50, 0xe0, 0x0b, 0xe3, 0xff, 0xa6, 0xc6, 0x4c, 0x17, 0xf2, 0x15, 0x68,
-	0xba, 0x50, 0x78, 0x66, 0x25, 0xe3, 0x7f, 0xa8, 0x69, 0x46, 0x46, 0xa5, 0xe8, 0x42, 0x75, 0x05,
-	0x04, 0x7b, 0xff, 0x4b, 0x2d, 0xf3, 0x91, 0x15, 0x08, 0x5d, 0xa8, 0xad, 0x80, 0x60, 0xef, 0xff,
-	0xa8, 0x71, 0x31, 0xba, 0x82, 0x08, 0x0b, 0x3c, 0xbf, 0x2f, 0x0c, 0x97, 0xb2, 0xa0, 0x0b, 0x61,
-	0x5c, 0xd5, 0x85, 0xc2, 0x2f, 0x64, 0xef, 0xcf, 0x0c, 0xb3, 0xb3, 0x5d, 0xc9, 0xac, 0xa2, 0x0b,
-	0xc5, 0x6e, 0x62, 0x89, 0xf9, 0x7a, 0x6a, 0x38, 0x26, 0xa3, 0x52, 0x74, 0x21, 0xb7, 0x53, 0x72,
-	0xed, 0x67, 0xa9, 0xf1, 0x00, 0xba, 0x10, 0x3c, 0x46, 0x74, 0xa1, 0x06, 0x23, 0x64, 0xcd, 0xcf,
-	0x51, 0xa4, 0xc1, 0x74, 0xa1, 0x02, 0xa6, 0xe9, 0x42, 0x8e, 0xa7, 0xea, 0xc2, 0x9f, 0x07, 0xb4,
-	0xf4, 0xba, 0x10, 0x7c, 0x46, 0x75, 0x61, 0xb8, 0xd9, 0x95, 0x5a, 0xf1, 0x0b, 0x40, 0x61, 0x0a,
-	0x5d, 0x28, 0x52, 0x24, 0xa2, 0x0b, 0x23, 0x20, 0x82, 0xc0, 0x5f, 0x84, 0x90, 0xd2, 0xe9, 0x42,
-	0x0d, 0x4a, 0xd3, 0x85, 0xf0, 0x09, 0xb0, 0xf6, 0x4b, 0x14, 0xc2, 0x56, 0x17, 0x82, 0x83, 0x50,
-	0x17, 0x2a, 0xfe, 0xdc, 0x9f, 0x44, 0x85, 0xe6, 0xda, 0x36, 0xab, 0x72, 0x50, 0xea, 0xbe, 0x0d,
-	0x31, 0xfc, 0xb0, 0x05, 0xc0, 0x8d, 0x6b, 0xdb, 0xb4, 0x20, 0xd2, 0xff, 0x4e, 0xb5, 0x3a, 0x3b,
-	0xe7, 0x83, 0x83, 0x4d, 0x39, 0xe2, 0x9e, 0x45, 0xe3, 0x21, 0x02, 0xd4, 0xb4, 0xdf, 0x02, 0x88,
-	0x2b, 0xed, 0x21, 0x58, 0x41, 0x05, 0x8c, 0xb1, 0xa6, 0x32, 0xe4, 0x6e, 0xa0, 0x89, 0x10, 0x84,
-	0xd7, 0xd8, 0xdf, 0x06, 0x94, 0xab, 0xec, 0x51, 0xa0, 0x1a, 0x03, 0x4c, 0xa1, 0xa9, 0x8e, 0x69,
-	0x38, 0xbc, 0x42, 0xff, 0x4e, 0x6a, 0x9c, 0xd3, 0x06, 0x1c, 0x5e, 0xdf, 0x23, 0xa4, 0x11, 0xec,
-	0xfd, 0xee, 0x20, 0xa4, 0x11, 0x1c, 0x23, 0x8d, 0xe0, 0x18, 0x69, 0x04, 0x7b, 0xbf, 0x37, 0x10,
-	0x69, 0x02, 0x46, 0x25, 0x2d, 0x82, 0xc3, 0x5b, 0xcb, 0x77, 0x06, 0x22, 0x2d, 0x8a, 0xc3, 0x1b,
-	0xd3, 0x16, 0x2a, 0x86, 0x38, 0xa2, 0xd7, 0xfc, 0x3e, 0x00, 0x5d, 0x6d, 0x0f, 0xc4, 0x5b, 0x18,
-	0x20, 0x8d, 0x37, 0xb5, 0x41, 0xb7, 0x81, 0x26, 0x25, 0x75, 0x02, 0xeb, 0x0f, 0x00, 0xeb, 0x9a,
-	0x14, 0xe4, 0x6d, 0xa8, 0x60, 0x13, 0x4d, 0x7d, 0x54, 0xdb, 0x0d, 0xd0, 0x17, 0xff, 0x30, 0xf5,
-	0x6e, 0x60, 0x1d, 0x54, 0xdf, 0x0d, 0xd0, 0x54, 0x63, 0xec, 0x11, 0xec, 0xfd, 0xd1, 0x60, 0xec,
-	0x89, 0xef, 0x49, 0x63, 0x8f, 0x60, 0x03, 0x7b, 0x04, 0x7b, 0x7f, 0x3c, 0x20, 0x7b, 0x02, 0x4c,
-	0x67, 0x2f, 0xb2, 0xfd, 0x78, 0x4f, 0xff, 0x93, 0xd4, 0xdb, 0x0f, 0xba, 0xbf, 0xbe, 0xfd, 0xb8,
-	0x22, 0xd0, 0xd2, 0x09, 0x14, 0xc1, 0x9f, 0xa6, 0x4f, 0x27, 0xe6, 0x20, 0x92, 0x4e, 0xa0, 0x27,
-	0xd4, 0xdd, 0x00, 0x7a, 0xe2, 0xcf, 0x52, 0xef, 0x06, 0xa6, 0x3c, 0xf4, 0xdd, 0x00, 0x62, 0x64,
-	0x1b, 0x1d, 0x0a, 0x41, 0x14, 0x31, 0xf2, 0xe7, 0x80, 0xf4, 0x0a, 0x7b, 0xa4, 0x50, 0x80, 0x00,
-	0x5a, 0xb1, 0x19, 0x19, 0x76, 0xcf, 0xa3, 0xa9, 0x08, 0xa2, 0x68, 0xab, 0x7f, 0x01, 0xa0, 0xd7,
-	0xa6, 0x04, 0xe5, 0x63, 0x80, 0x7b, 0xa8, 0x19, 0xff, 0xc4, 0xdd, 0x45, 0x87, 0x43, 0x68, 0x55,
-	0xa2, 0xfc, 0x25, 0x00, 0x2f, 0xdb, 0x03, 0x4b, 0x55, 0x02, 0xb0, 0x93, 0xcd, 0xe8, 0xb8, 0x7b,
-	0x07, 0x3a, 0xa2, 0x54, 0x5f, 0x45, 0xad, 0x7c, 0x17, 0x50, 0x57, 0xd2, 0xd4, 0xe0, 0x50, 0xa7,
-	0x00, 0xac, 0xdb, 0x8c, 0x7d, 0xe0, 0xde, 0x8d, 0xbc, 0x18, 0xae, 0x60, 0xfa, 0xaf, 0x00, 0xfa,
-	0x54, 0x6a, 0x68, 0x8d, 0xeb, 0x23, 0x4d, 0xd3, 0x67, 0x62, 0xff, 0xb2, 0x46, 0x07, 0x9a, 0xe3,
-	0xaf, 0x53, 0xed, 0x5f, 0xd6, 0xf9, 0xa5, 0xe8, 0xa0, 0xfb, 0x37, 0x1c, 0x12, 0xc9, 0xb8, 0xab,
-	0xa0, 0xfc, 0x4d, 0xaa, 0x64, 0x84, 0xc6, 0x2f, 0x61, 0x68, 0x32, 0xca, 0x31, 0x81, 0xd3, 0x55,
-	0x70, 0xfe, 0x36, 0x15, 0xce, 0x69, 0x03, 0x8e, 0x1c, 0x53, 0x48, 0x23, 0x18, 0x60, 0xfe, 0x2e,
-	0x2d, 0x69, 0x04, 0xc7, 0x48, 0x83, 0x21, 0x95, 0x34, 0x81, 0xf2, 0xf7, 0xa9, 0x49, 0x53, 0x61,
-	0x04, 0x69, 0x3a, 0x4e, 0x57, 0xc1, 0xf9, 0x87, 0xd4, 0xa4, 0x45, 0x71, 0xe4, 0x98, 0x68, 0x69,
-	0xbc, 0x8d, 0x02, 0xd0, 0x3f, 0xa6, 0x6a, 0x69, 0xbc, 0xef, 0x4b, 0x24, 0xfa, 0x6d, 0x28, 0x83,
-	0x21, 0x75, 0xac, 0x44, 0x03, 0xd2, 0x3f, 0xa5, 0xa3, 0x8e, 0x79, 0x88, 0x50, 0x17, 0x8e, 0xb9,
-	0x25, 0x84, 0xda, 0xad, 0x7a, 0x7b, 0x03, 0x20, 0x9e, 0xce, 0x95, 0x9c, 0xf2, 0x81, 0xea, 0x50,
-	0x30, 0xca, 0x06, 0x99, 0xc5, 0x2c, 0x3a, 0x08, 0x16, 0x20, 0x4f, 0x9f, 0xa1, 0x26, 0xb9, 0xea,
-	0x50, 0x00, 0xf3, 0x40, 0x2e, 0xbf, 0x0c, 0x8d, 0x81, 0x0d, 0xd7, 0xca, 0xcf, 0x52, 0xa3, 0xc9,
-	0xea, 0x50, 0x00, 0x53, 0xb9, 0xd8, 0x0d, 0xad, 0xb8, 0xd2, 0x7d, 0x8e, 0x5a, 0x15, 0x42, 0x2b,
-	0x2e, 0x55, 0x55, 0x3c, 0x82, 0xbd, 0xe7, 0xa9, 0x51, 0x56, 0xc5, 0x23, 0x58, 0xc7, 0x23, 0xd8,
-	0xfb, 0x0c, 0x35, 0x72, 0x35, 0x3c, 0xd5, 0x8a, 0x8b, 0xc4, 0xcf, 0x52, 0xab, 0x61, 0x0d, 0x8f,
-	0x60, 0xf7, 0xe5, 0xa8, 0x00, 0x56, 0x42, 0x76, 0x7d, 0x8e, 0x9a, 0x8d, 0x54, 0x87, 0x02, 0x98,
-	0x2d, 0x24, 0x5a, 0x19, 0x8d, 0x73, 0x4c, 0x61, 0xf8, 0x79, 0x6a, 0x38, 0x51, 0x1d, 0x0a, 0xc0,
-	0x41, 0x28, 0xaf, 0xc2, 0x08, 0x40, 0x5b, 0xfd, 0x32, 0x35, 0xcb, 0x84, 0x11, 0x80, 0x3a, 0xd2,
-	0x51, 0x09, 0xf6, 0x7e, 0x85, 0x5a, 0xe5, 0x75, 0x54, 0x76, 0x80, 0xa0, 0xa1, 0x12, 0xec, 0xfd,
-	0x2a, 0x35, 0x2c, 0x46, 0x50, 0xd5, 0x68, 0xb9, 0x26, 0x79, 0x81, 0xda, 0x39, 0x61, 0xb4, 0x5c,
-	0x54, 0x48, 0xe6, 0x40, 0x51, 0x7c, 0x81, 0x5a, 0x8d, 0x4a, 0xe6, 0x40, 0x12, 0x84, 0x11, 0x80,
-	0x1e, 0xf8, 0x22, 0x35, 0x1a, 0x0b, 0x23, 0x80, 0x8e, 0xbe, 0x86, 0x8a, 0x60, 0xa3, 0xb4, 0xf3,
-	0x2f, 0xe5, 0xd2, 0x3f, 0xc6, 0xad, 0x0e, 0x05, 0x10, 0xaa, 0x6c, 0xe1, 0xb7, 0xa2, 0x43, 0x2a,
-	0x84, 0xe8, 0x2a, 0x5f, 0xce, 0x0d, 0xf4, 0x8a, 0x4d, 0x75, 0x28, 0x98, 0x94, 0x40, 0xa2, 0x8b,
-	0xac, 0x23, 0x18, 0xd4, 0x1a, 0xf6, 0x57, 0x72, 0x03, 0xbc, 0x5f, 0x53, 0x1d, 0x0a, 0x26, 0x98,
-	0x4b, 0xa5, 0x49, 0xaf, 0x22, 0x57, 0x6c, 0x5c, 0xa5, 0x43, 0x7f, 0x35, 0x97, 0xe6, 0x59, 0x74,
-	0x75, 0x28, 0x28, 0xf2, 0xed, 0x2e, 0xbb, 0xf1, 0x39, 0x74, 0x44, 0x07, 0x10, 0xa4, 0x7d, 0x2d,
-	0x97, 0xf2, 0xcd, 0x9a, 0xea, 0x50, 0x70, 0x48, 0x85, 0x11, 0x84, 0xfd, 0x18, 0xaf, 0x1c, 0xc0,
-	0xd4, 0xd7, 0x73, 0xd6, 0xaf, 0x09, 0xde, 0x44, 0x67, 0x0b, 0xa6, 0x14, 0x5f, 0x32, 0x37, 0x60,
-	0x8f, 0x2e, 0x78, 0xdf, 0x10, 0x9b, 0x74, 0x4c, 0xd9, 0xa4, 0x0b, 0x51, 0x3b, 0xdf, 0xfb, 0xa6,
-	0xc9, 0xce, 0x8f, 0xda, 0x2d, 0x7a, 0xdf, 0x32, 0xd9, 0x2d, 0xba, 0x27, 0xd1, 0x61, 0x9e, 0x41,
-	0xfa, 0x03, 0xad, 0x7b, 0xf3, 0xf2, 0x85, 0x9e, 0xaa, 0x13, 0xc0, 0x37, 0xa8, 0x3f, 0xcf, 0xba,
-	0x4a, 0xd0, 0x1e, 0x7d, 0x98, 0xf5, 0xbe, 0xbc, 0xfa, 0x76, 0x4f, 0xd5, 0xe1, 0x5c, 0x46, 0x9e,
-	0x65, 0x5d, 0x8d, 0xa6, 0xa2, 0xd3, 0x79, 0x25, 0xbd, 0x2f, 0xaf, 0xbc, 0xea, 0x53, 0x75, 0x82,
-	0xc3, 0xfa, 0x74, 0x5e, 0x59, 0xaf, 0x8a, 0xcf, 0xe7, 0x35, 0xf6, 0xfe, 0xbc, 0x7c, 0xef, 0x27,
-	0x3e, 0xfd, 0xb4, 0x78, 0x0c, 0x66, 0x5a, 0x3d, 0xc1, 0xde, 0x03, 0xf9, 0xe8, 0x4b, 0x40, 0xc6,
-	0x08, 0x08, 0x4e, 0x8a, 0x80, 0x60, 0xef, 0xc1, 0xbc, 0xf2, 0x46, 0x90, 0x39, 0x02, 0x82, 0x93,
-	0x22, 0x20, 0xd8, 0x7b, 0x28, 0x2f, 0x5f, 0x0f, 0x32, 0x47, 0xc0, 0x1e, 0x7d, 0x4d, 0x47, 0xa7,
-	0x8b, 0x2a, 0xfd, 0x70, 0x5e, 0x7d, 0x57, 0xa8, 0xea, 0x04, 0x47, 0x74, 0x0f, 0xa2, 0xbe, 0x5f,
-	0x87, 0xbc, 0x58, 0x04, 0xc2, 0xc7, 0x23, 0x79, 0xed, 0xc5, 0xa1, 0xaa, 0x13, 0x4c, 0x45, 0xa2,
-	0x10, 0xb5, 0xff, 0xea, 0x38, 0x95, 0xd0, 0x05, 0xde, 0x9f, 0xd7, 0xde, 0x22, 0x8a, 0xf3, 0x08,
-	0x7d, 0x21, 0x29, 0x10, 0x82, 0xbd, 0x0f, 0xe4, 0xd5, 0x57, 0x8a, 0x12, 0x02, 0x21, 0x38, 0x39,
-	0x10, 0x82, 0xbd, 0x47, 0xf3, 0xda, 0xfb, 0x45, 0x49, 0x81, 0x10, 0xec, 0x5e, 0x1f, 0xff, 0x42,
-	0x78, 0x63, 0x79, 0x2c, 0x6f, 0x78, 0xd9, 0x28, 0xfe, 0xcd, 0xf0, 0x86, 0x73, 0x83, 0x61, 0x63,
-	0x40, 0xeb, 0x79, 0x3c, 0x6f, 0x7e, 0xf3, 0xc8, 0xb0, 0x47, 0xa0, 0x2b, 0xdd, 0x14, 0xe7, 0x16,
-	0xfa, 0xd3, 0x13, 0xf9, 0xfe, 0xaf, 0x21, 0xc5, 0xc9, 0x86, 0x16, 0xf6, 0x5a, 0x34, 0x13, 0x75,
-	0xa8, 0x34, 0xb3, 0x27, 0xf3, 0x03, 0xbf, 0x93, 0x54, 0x75, 0x82, 0x69, 0x1d, 0x58, 0xfd, 0xfb,
-	0xf4, 0xe2, 0x78, 0xc6, 0x28, 0x4d, 0xe1, 0xa9, 0xfc, 0x00, 0x2f, 0x28, 0x55, 0x9d, 0xe0, 0x68,
-	0x34, 0xcf, 0x42, 0x9b, 0x99, 0x9f, 0x42, 0x63, 0x5a, 0xef, 0x7b, 0x11, 0xdf, 0x34, 0x9f, 0xb9,
-	0x0b, 0x21, 0xa5, 0x1f, 0xbe, 0x98, 0xc8, 0xd7, 0xa0, 0x82, 0xf6, 0x26, 0xa7, 0x2d, 0x38, 0x75,
-	0xa0, 0xbd, 0x13, 0x91, 0xce, 0x81, 0x72, 0x78, 0x6e, 0xed, 0xe0, 0x6a, 0x54, 0x8c, 0x1e, 0x8e,
-	0xbb, 0x45, 0x94, 0xbd, 0xad, 0x7e, 0x9e, 0x39, 0x39, 0x10, 0xd0, 0xff, 0x75, 0x0f, 0xa3, 0xdc,
-	0x1d, 0x6b, 0x8d, 0x6e, 0xdd, 0xcb, 0xb0, 0x31, 0xf8, 0x47, 0x25, 0x73, 0x85, 0x33, 0x73, 0x0d,
-	0x9a, 0x8c, 0x9d, 0x7c, 0xef, 0xe5, 0x20, 0xa7, 0x3a, 0x78, 0x05, 0x72, 0xe3, 0x87, 0xda, 0x7b,
-	0x79, 0x98, 0x34, 0x7b, 0x38, 0xbd, 0x7f, 0x0f, 0x85, 0xc4, 0x20, 0xf8, 0x29, 0xdd, 0x5e, 0x0e,
-	0xb2, 0xc9, 0x41, 0xec, 0xd3, 0x83, 0x9b, 0x1c, 0xc4, 0x3e, 0x3d, 0x0c, 0xab, 0x1e, 0x96, 0xd1,
-	0x21, 0xc3, 0xb9, 0xf0, 0x5e, 0x2e, 0x46, 0x54, 0x17, 0x2b, 0xe8, 0xb0, 0xe9, 0xb8, 0x77, 0x2f,
-	0x1f, 0x13, 0x66, 0x2e, 0xe5, 0x39, 0xee, 0x5e, 0x0e, 0x32, 0x7d, 0xe2, 0xd8, 0x27, 0x15, 0xf9,
-	0x7e, 0x71, 0xec, 0xd3, 0x47, 0xd1, 0xfc, 0x85, 0x28, 0x07, 0xaa, 0x7b, 0x79, 0x70, 0x12, 0x36,
-	0x85, 0x3c, 0x2a, 0xdd, 0xcb, 0xc3, 0xa8, 0x99, 0x4b, 0x79, 0x0a, 0xba, 0x97, 0x83, 0x31, 0xd5,
-	0xc1, 0x79, 0x74, 0xc4, 0x78, 0xb8, 0x69, 0x70, 0xf2, 0x2a, 0xd5, 0x49, 0xda, 0x87, 0xb9, 0x0a,
-	0xf4, 0xdd, 0xc8, 0x4b, 0x3a, 0xe2, 0x34, 0xa0, 0xdf, 0xa8, 0xa2, 0x0f, 0xf0, 0x80, 0x57, 0x59,
-	0xc0, 0x6b, 0xd1, 0x94, 0xf9, 0xa8, 0xd3, 0x00, 0xff, 0x23, 0x3a, 0x7c, 0xca, 0x27, 0xbe, 0x0a,
-	0x78, 0x17, 0x4d, 0x27, 0x9c, 0x78, 0x1a, 0xd0, 0xaf, 0xd3, 0xa9, 0xb7, 0x7d, 0x08, 0xac, 0xc5,
-	0x3c, 0x93, 0x7c, 0xda, 0x69, 0x40, 0x7e, 0xa5, 0x1e, 0x77, 0x8a, 0xc7, 0xc2, 0xb1, 0xdd, 0xaa,
-	0x9f, 0x79, 0xaa, 0x98, 0xb9, 0xbd, 0x7a, 0x09, 0x24, 0x4c, 0xe4, 0x38, 0x53, 0xf5, 0x30, 0xb9,
-	0x3f, 0x0f, 0xa7, 0x93, 0x3d, 0x14, 0xf6, 0xd7, 0xcf, 0xf4, 0x33, 0x48, 0xd5, 0x41, 0x76, 0xff,
-	0x41, 0x24, 0x78, 0x70, 0xf7, 0x1f, 0x44, 0x82, 0x87, 0xe1, 0xbd, 0x3c, 0x40, 0x09, 0x8d, 0x9e,
-	0x08, 0xaa, 0x2e, 0x46, 0xf6, 0x19, 0x86, 0x7e, 0xd4, 0xa7, 0x7a, 0x18, 0xdd, 0xcb, 0xc3, 0x95,
-	0x08, 0xc9, 0xbf, 0xc7, 0xad, 0x75, 0x49, 0x15, 0x4d, 0x9d, 0xba, 0xab, 0x53, 0x6f, 0xed, 0x6e,
-	0xb5, 0x5b, 0x83, 0x69, 0x2c, 0xd5, 0xd3, 0x40, 0x5a, 0x69, 0x76, 0x0e, 0x8d, 0x4a, 0xb1, 0x3d,
-	0x8a, 0x40, 0x17, 0x17, 0x87, 0xe8, 0xff, 0xae, 0x04, 0xcb, 0x3f, 0x7a, 0x53, 0xd1, 0x71, 0x0f,
-	0xa2, 0x91, 0x6b, 0xab, 0xcb, 0xc1, 0xab, 0x6f, 0x38, 0x55, 0xcc, 0x5c, 0x36, 0x7a, 0xe0, 0x9e,
-	0x5a, 0xf1, 0xc2, 0x85, 0x0b, 0x17, 0x32, 0xfe, 0x59, 0x34, 0x5d, 0x17, 0x8b, 0x58, 0xd5, 0xee,
-	0x2c, 0xba, 0x16, 0xa2, 0xd3, 0xbb, 0xa7, 0xc6, 0x58, 0x3e, 0x52, 0x8f, 0x52, 0x43, 0xbf, 0x22,
-	0xbf, 0x8e, 0x3c, 0x03, 0x08, 0xfc, 0x41, 0x6e, 0x83, 0xf2, 0x86, 0x1a, 0xcb, 0xd6, 0xa9, 0x18,
-	0x0a, 0xcb, 0x6d, 0x7f, 0x13, 0x1d, 0x35, 0xc0, 0xec, 0xda, 0xe3, 0xbc, 0xb1, 0xc6, 0x72, 0x7a,
-	0x3a, 0x86, 0x03, 0x25, 0x20, 0x01, 0xa8, 0x6b, 0x0f, 0xf4, 0xa6, 0x1a, 0x4b, 0xfd, 0x38, 0x10,
-	0x54, 0x8a, 0x64, 0xe2, 0x08, 0xb6, 0xc2, 0x79, 0x73, 0x8d, 0x55, 0x08, 0x23, 0x71, 0x04, 0xf7,
-	0x21, 0xce, 0x12, 0xe7, 0x2d, 0x35, 0x56, 0x47, 0xcc, 0xc4, 0x25, 0x02, 0x75, 0xed, 0x81, 0xde,
-	0x5a, 0x63, 0xe5, 0xc6, 0x4c, 0x1c, 0xc1, 0xfe, 0x16, 0x9a, 0x31, 0x00, 0x89, 0x93, 0x0b, 0x1b,
-	0xa4, 0xb7, 0xd5, 0x58, 0x55, 0xf2, 0x62, 0x48, 0xbc, 0x8a, 0xf9, 0xb7, 0xa1, 0x8b, 0x4c, 0xe4,
-	0xa5, 0xc1, 0x7a, 0x7b, 0x8d, 0x89, 0xd6, 0xa3, 0x71, 0xfa, 0xb8, 0xb7, 0x84, 0x0d, 0xb1, 0x01,
-	0xaf, 0xf6, 0x59, 0x20, 0xbd, 0xa3, 0xc6, 0xd4, 0x6d, 0x7c, 0x43, 0x30, 0x6d, 0xdc, 0x8f, 0x3e,
-	0xcb, 0x2f, 0xea, 0x9d, 0x35, 0xa6, 0x81, 0x13, 0xe8, 0x23, 0xb8, 0x2f, 0x7d, 0x96, 0x58, 0xef,
-	0xaa, 0x31, 0xad, 0x9c, 0x44, 0x5f, 0xe2, 0xfe, 0x83, 0xc3, 0x1e, 0x2b, 0xa8, 0x5e, 0x8d, 0x89,
-	0xea, 0xf8, 0xfe, 0x03, 0x4d, 0x9e, 0x94, 0x51, 0x70, 0xb8, 0x63, 0x03, 0xf4, 0xee, 0x1a, 0xeb,
-	0x02, 0x86, 0x8c, 0x82, 0x13, 0x5f, 0xf3, 0x86, 0x60, 0x67, 0x45, 0x56, 0x38, 0xef, 0xa9, 0x31,
-	0x89, 0x1e, 0xdf, 0x10, 0x4c, 0xe0, 0xfb, 0x0f, 0x38, 0xe8, 0x12, 0x03, 0x8e, 0x3c, 0x42, 0xb2,
-	0x02, 0x7b, 0x6f, 0x6d, 0x00, 0x29, 0x3f, 0x13, 0x5b, 0x62, 0xf8, 0x99, 0xff, 0xb8, 0x83, 0x4a,
-	0x89, 0xcb, 0xe4, 0x8f, 0x07, 0xac, 0x56, 0x7a, 0x6f, 0x6d, 0x30, 0xd9, 0x7f, 0x89, 0x79, 0xb1,
-	0xfc, 0x63, 0xff, 0x61, 0x07, 0x7d, 0x9f, 0x61, 0xbd, 0xca, 0x73, 0x19, 0xab, 0xd5, 0xbe, 0xaf,
-	0x36, 0xc8, 0x5f, 0x09, 0x17, 0xc5, 0xd6, 0x2a, 0x3f, 0xf4, 0xef, 0x73, 0xd0, 0xa5, 0xc6, 0x1e,
-	0x21, 0x8f, 0xf1, 0xac, 0x96, 0x7a, 0x5f, 0x2d, 0xd5, 0x9f, 0x14, 0x17, 0x1b, 0x3a, 0x4b, 0xf8,
-	0xa9, 0xff, 0xa8, 0x83, 0x66, 0xfb, 0x2c, 0x32, 0xcd, 0x06, 0xb8, 0xbf, 0x96, 0xf6, 0x0f, 0x90,
-	0x4b, 0x93, 0x96, 0x2a, 0xbe, 0xfc, 0x87, 0x1c, 0x24, 0xd3, 0x4d, 0xbf, 0x69, 0x6d, 0xb3, 0xc2,
-	0x07, 0x6a, 0xec, 0x71, 0x94, 0xcd, 0x9b, 0x36, 0x66, 0x01, 0x1b, 0x24, 0xac, 0xc6, 0x6f, 0xa8,
-	0x35, 0x46, 0x7f, 0x60, 0x64, 0x97, 0x4c, 0x3d, 0xf5, 0xba, 0xb8, 0x44, 0xd3, 0x9e, 0x2f, 0xf9,
-	0xdb, 0x6a, 0xe9, 0x8c, 0x3c, 0x63, 0xb2, 0xcb, 0x86, 0x9e, 0x7e, 0xdd, 0x7c, 0x3a, 0x0e, 0x08,
-	0xba, 0xf1, 0x76, 0xb5, 0xdb, 0x45, 0x1f, 0x4b, 0xd9, 0xed, 0xea, 0x9e, 0x76, 0x5d, 0xdd, 0x8b,
-	0x23, 0x72, 0x05, 0xb9, 0x6d, 0x86, 0x4c, 0x21, 0x21, 0xef, 0xef, 0xa9, 0xd7, 0xdd, 0x0d, 0x88,
-	0x5c, 0x4a, 0x76, 0x12, 0x69, 0xb5, 0xec, 0xb2, 0x0f, 0xf4, 0xe2, 0xd7, 0xe5, 0xcd, 0xd4, 0x12,
-	0xdc, 0x8f, 0x5a, 0x4b, 0xd8, 0x07, 0x7b, 0xda, 0x75, 0xfb, 0x04, 0x6a, 0x09, 0xee, 0x47, 0xad,
-	0x25, 0xe4, 0x43, 0x3d, 0xf5, 0xba, 0x7e, 0x02, 0xb5, 0x04, 0xfb, 0x1d, 0x55, 0xc2, 0xc4, 0x9e,
-	0xca, 0x59, 0x41, 0x3e, 0xdc, 0xd3, 0xaf, 0xfb, 0x1f, 0x8d, 0x83, 0x0a, 0xdd, 0x79, 0x27, 0xba,
-	0xd8, 0x48, 0x6d, 0x1a, 0xd8, 0x47, 0x7a, 0x91, 0x9f, 0x0b, 0x98, 0x31, 0xd0, 0x2b, 0x34, 0xe8,
-	0xed, 0xe6, 0x9d, 0x64, 0x2f, 0x42, 0xdf, 0xdf, 0x8b, 0xfc, 0xdc, 0x80, 0x61, 0x1b, 0x81, 0x1e,
-	0xed, 0xc7, 0xb0, 0xe5, 0x97, 0xfa, 0x81, 0x9e, 0xfe, 0x73, 0x05, 0x49, 0x0c, 0x13, 0xdc, 0x9f,
-	0x61, 0x4b, 0xd8, 0x47, 0x7b, 0x91, 0x9f, 0x3b, 0x48, 0x64, 0x98, 0x60, 0xff, 0xbc, 0x79, 0x0b,
-	0xa7, 0xd0, 0xa9, 0x8f, 0xf5, 0x8c, 0x3f, 0x97, 0x60, 0xd8, 0xcb, 0x5c, 0xb8, 0xbe, 0x2e, 0x21,
-	0x61, 0xed, 0x95, 0xeb, 0xe3, 0xbd, 0xa4, 0x9f, 0x5b, 0x30, 0xe5, 0x2e, 0xa8, 0xd9, 0xd7, 0x3b,
-	0xe6, 0xbd, 0x65, 0xaf, 0x67, 0x9f, 0xe8, 0xed, 0xf5, 0x7b, 0x0d, 0x86, 0xcd, 0x06, 0x5a, 0xf7,
-	0x09, 0x4d, 0x94, 0x99, 0x9e, 0x97, 0x5a, 0xad, 0xe4, 0xc9, 0xde, 0xf7, 0xe0, 0x07, 0x1f, 0x2e,
-	0x8a, 0x2f, 0x56, 0xaa, 0xde, 0xc7, 0x34, 0xd5, 0x6b, 0x7e, 0xc6, 0x6a, 0xb5, 0xe4, 0xa7, 0x7a,
-	0x03, 0xfd, 0x62, 0xc4, 0x25, 0xa6, 0xda, 0x2c, 0x55, 0xda, 0xba, 0x7a, 0xe4, 0xa4, 0x5d, 0x16,
-	0xb4, 0x5b, 0xe4, 0x77, 0x1d, 0x76, 0xb3, 0x50, 0x9e, 0x39, 0x05, 0xca, 0x15, 0x43, 0x7f, 0x43,
-	0x15, 0x2d, 0xfa, 0x65, 0x43, 0x2b, 0x98, 0x0f, 0x32, 0x18, 0xf5, 0xd0, 0x29, 0x50, 0xaf, 0x28,
-	0xfa, 0xe7, 0xd4, 0x1d, 0x1b, 0xb9, 0xac, 0x68, 0x05, 0xf4, 0x21, 0x06, 0xa4, 0x9e, 0x3a, 0x05,
-	0xda, 0x15, 0xc7, 0x04, 0xa4, 0x14, 0x92, 0xe1, 0xc3, 0x0c, 0xa9, 0x60, 0x40, 0xe2, 0x5a, 0x21,
-	0x91, 0x3b, 0xcb, 0xa2, 0xf7, 0x11, 0x06, 0x94, 0x35, 0x73, 0x47, 0x70, 0x1f, 0xee, 0x2c, 0x81,
-	0x3e, 0xca, 0x80, 0xdc, 0x04, 0xee, 0x12, 0x91, 0x52, 0x68, 0x82, 0x8f, 0x31, 0xa4, 0xe1, 0x04,
-	0xee, 0x08, 0xf6, 0x6f, 0x55, 0x0b, 0x68, 0xf4, 0xb2, 0xa7, 0x15, 0xd4, 0xc7, 0x19, 0x94, 0x7a,
-	0xf4, 0x14, 0xe8, 0x57, 0x44, 0xfd, 0x86, 0xda, 0x16, 0x63, 0x97, 0x45, 0xad, 0xc0, 0x3e, 0xc1,
-	0xc0, 0xd4, 0xb3, 0xa7, 0x20, 0x72, 0xc5, 0x34, 0x61, 0x57, 0xd8, 0xb7, 0xfd, 0x4f, 0x32, 0xa8,
-	0x8c, 0x61, 0x57, 0x40, 0xb3, 0xef, 0xc3, 0xa0, 0xe5, 0x97, 0xf5, 0x29, 0x86, 0x94, 0x4f, 0x62,
-	0x90, 0xe0, 0xbe, 0x0c, 0x5a, 0x82, 0x7d, 0x9a, 0x81, 0x15, 0x13, 0x19, 0x4c, 0xdc, 0x85, 0x29,
-	0xda, 0xfa, 0xd3, 0x0c, 0xcb, 0x31, 0xec, 0x42, 0xde, 0xc6, 0x13, 0x32, 0xcb, 0xbe, 0x8b, 0x3f,
-	0xc3, 0x90, 0x46, 0x4d, 0x99, 0x05, 0x2d, 0xdb, 0xbc, 0x2b, 0xec, 0x1b, 0xf6, 0xb3, 0x0c, 0x68,
-	0xcc, 0xb0, 0x2b, 0xa0, 0x2b, 0x3f, 0xa8, 0x9d, 0x40, 0x19, 0x6e, 0xfb, 0x5a, 0xa1, 0x3d, 0xc7,
-	0xd0, 0x06, 0x3f, 0x82, 0x0a, 0xa2, 0x77, 0x84, 0xa9, 0x7a, 0x28, 0x25, 0xae, 0x33, 0xcd, 0x09,
-	0xc4, 0xf3, 0x6c, 0xa9, 0xdf, 0x93, 0x33, 0xa8, 0xc0, 0x70, 0xc9, 0xd8, 0x7f, 0x44, 0x93, 0x3b,
-	0xa6, 0xfb, 0xc6, 0x56, 0xcb, 0xfd, 0x0c, 0x5f, 0xee, 0xc0, 0x87, 0x50, 0x41, 0xec, 0x96, 0xb2,
-	0x7f, 0xbf, 0x76, 0x08, 0x65, 0xbc, 0xb0, 0x6c, 0xb5, 0xd6, 0xcf, 0xf2, 0x5d, 0x90, 0xfe, 0x14,
-	0x2a, 0x88, 0x5f, 0x73, 0xa6, 0x72, 0x6c, 0xb6, 0xcf, 0x2a, 0xd3, 0xec, 0x81, 0xcf, 0x71, 0x52,
-	0x07, 0x3a, 0x86, 0x0a, 0x8c, 0xf7, 0xa4, 0xfd, 0x87, 0xd5, 0x63, 0x28, 0xfd, 0x86, 0xb3, 0xcd,
-	0x12, 0x3f, 0xcf, 0x96, 0x98, 0xf2, 0x1c, 0x4a, 0xbf, 0x67, 0x9d, 0xb0, 0x9c, 0x95, 0x82, 0x78,
-	0x55, 0xbf, 0xdb, 0xda, 0x6a, 0xb7, 0x56, 0xa6, 0xe3, 0xef, 0x48, 0xb2, 0x0f, 0x2e, 0x5b, 0x40,
-	0x07, 0xd5, 0xf7, 0xc4, 0x4d, 0x0f, 0x44, 0x91, 0x3b, 0x26, 0x1f, 0x88, 0xbe, 0xe0, 0xac, 0xbc,
-	0xe6, 0xc7, 0x6b, 0xb1, 0x65, 0x1f, 0x67, 0xcb, 0x3e, 0xd3, 0xdd, 0x38, 0xbe, 0xd5, 0xea, 0xd4,
-	0x77, 0x5a, 0x6b, 0x0d, 0xf6, 0x3b, 0xb7, 0x6c, 0x74, 0xf7, 0x78, 0xa3, 0xbe, 0xb9, 0x76, 0xf6,
-	0xfc, 0xf1, 0xa4, 0x9f, 0xc4, 0xfd, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x4a, 0x85, 0x2d, 0x80,
-	0x2d, 0x57, 0x00, 0x00,
-}
diff --git a/internal/testprotos/legacy/proto2_20180125_92554152/test.proto b/internal/testprotos/legacy/proto2_20180125_92554152/test.proto
deleted file mode 100644
index a714d83..0000000
--- a/internal/testprotos/legacy/proto2_20180125_92554152/test.proto
+++ /dev/null
@@ -1,333 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package google.golang.org.proto2_20180125;
-option go_package = "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20180125_92554152";
-
-enum SiblingEnum {
-	ALPHA   = 0;
-	BRAVO   = 10;
-	CHARLIE = 200;
-}
-
-message SiblingMessage {
-	optional string  f1 = 1;
-	required string  f2 = 2;
-	repeated string  f3 = 3;
-	optional Message f4 = 4;
-}
-
-message Message {
-	enum ChildEnum {
-		ALPHA   = 0;
-		BRAVO   = 1;
-		CHARLIE = 2;
-	}
-	message ChildMessage {
-		optional string  f1 = 1;
-		required string  f2 = 2;
-		repeated string  f3 = 3;
-	    optional Message f4 = 4;
-	}
-	optional group NamedGroup = 1 {
-		optional string  f1 = 1;
-		required string  f2 = 2;
-		repeated string  f3 = 3;
-	    optional Message f4 = 4;
-	}
-
-	// Optional fields.
-	optional bool     optional_bool     = 100;
-	optional int32    optional_int32    = 101;
-	optional sint32   optional_sint32   = 102;
-	optional uint32   optional_uint32   = 103;
-	optional int64    optional_int64    = 104;
-	optional sint64   optional_sint64   = 105;
-	optional uint64   optional_uint64   = 106;
-	optional fixed32  optional_fixed32  = 107;
-	optional sfixed32 optional_sfixed32 = 108;
-	optional float    optional_float    = 109;
-	optional fixed64  optional_fixed64  = 110;
-	optional sfixed64 optional_sfixed64 = 111;
-	optional double   optional_double   = 112;
-	optional string   optional_string   = 113;
-	optional bytes    optional_bytes    = 114;
-
-	optional ChildEnum      optional_child_enum      = 115;
-	optional ChildMessage   optional_child_message   = 116;
-	optional NamedGroup     optional_named_group     = 117;
-	optional SiblingEnum    optional_sibling_enum    = 118;
-	optional SiblingMessage optional_sibling_message = 119;
-	optional group OptionalGroup = 120 {
-		optional string f1 = 1;
-		required string f2 = 2;
-		repeated string f3 = 3;
-	}
-
-	// Optional default fields.
-	optional bool      defaulted_bool     = 200 [default = true];
-	optional int32     defaulted_int32    = 201 [default = -12345];
-	optional sint32    defaulted_sint32   = 202 [default = -3200];
-	optional uint32    defaulted_uint32   = 203 [default = 3200];
-	optional int64     defaulted_int64    = 204 [default = -123456789];
-	optional sint64    defaulted_sint64   = 205 [default = -6400];
-	optional uint64    defaulted_uint64   = 206 [default = 6400];
-	optional fixed32   defaulted_fixed32  = 207 [default = 320000];
-	optional sfixed32  defaulted_sfixed32 = 208 [default = -320000];
-	optional float     defaulted_float    = 209 [default = 3.14159];
-	optional fixed64   defaulted_fixed64  = 210 [default = 640000];
-	optional sfixed64  defaulted_sfixed64 = 211 [default = -640000];
-	optional double    defaulted_double   = 212 [default = 3.14159265359];
-	optional string    defaulted_string   = 213 [default = "hello, \"world!\"\n"];
-	optional bytes     defaulted_bytes    = 214 [default = "dead\xde\xad\xbe\xefbeef"];
-
-	optional ChildEnum   defaulted_child_enum   = 215 [default = ALPHA];
-	optional SiblingEnum defaulted_sibling_enum = 216 [default = ALPHA];
-
-	// Required fields.
-	required bool     required_bool     = 300;
-	required int32    required_int32    = 301;
-	required sint32   required_sint32   = 302;
-	required uint32   required_uint32   = 303;
-	required int64    required_int64    = 304;
-	required sint64   required_sint64   = 305;
-	required uint64   required_uint64   = 306;
-	required fixed32  required_fixed32  = 307;
-	required sfixed32 required_sfixed32 = 308;
-	required float    required_float    = 309;
-	required fixed64  required_fixed64  = 310;
-	required sfixed64 required_sfixed64 = 311;
-	required double   required_double   = 312;
-	required string   required_string   = 313;
-	required bytes    required_bytes    = 314;
-
-	required ChildEnum      required_child_enum      = 315;
-	required ChildMessage   required_child_message   = 316;
-	required NamedGroup     required_named_group     = 317;
-	required SiblingEnum    required_sibling_enum    = 318;
-	required SiblingMessage required_sibling_message = 319;
-	required group RequiredGroup = 320 {
-		optional string f1 = 1;
-		required string f2 = 2;
-		repeated string f3 = 3;
-	}
-	// Required default fields.
-	required bool      required_defaulted_bool     = 400 [default = true];
-	required int32     required_defaulted_int32    = 401 [default = -12345];
-	required sint32    required_defaulted_sint32   = 402 [default = -3200];
-	required uint32    required_defaulted_uint32   = 403 [default = 3200];
-	required int64     required_defaulted_int64    = 404 [default = -123456789];
-	required sint64    required_defaulted_sint64   = 405 [default = -6400];
-	required uint64    required_defaulted_uint64   = 406 [default = 6400];
-	required fixed32   required_defaulted_fixed32  = 407 [default = 320000];
-	required sfixed32  required_defaulted_sfixed32 = 408 [default = -320000];
-	required float     required_defaulted_float    = 409 [default = 3.14159];
-	required fixed64   required_defaulted_fixed64  = 410 [default = 640000];
-	required sfixed64  required_defaulted_sfixed64 = 411 [default = -640000];
-	required double    required_defaulted_double   = 412 [default = 3.14159265359];
-	required string    required_defaulted_string   = 413 [default = "hello, \"world!\"\n"];
-	required bytes     required_defaulted_bytes    = 414 [default = "dead\xde\xad\xbe\xefbeef"];
-
-	required ChildEnum   required_defaulted_child_enum   = 415 [default = ALPHA];
-	required SiblingEnum required_defaulted_sibling_enum = 416 [default = ALPHA];
-
-	// Repeated fields.
-	repeated bool     repeated_bool     = 500;
-	repeated int32    repeated_int32    = 501;
-	repeated sint32   repeated_sint32   = 502;
-	repeated uint32   repeated_uint32   = 503;
-	repeated int64    repeated_int64    = 504;
-	repeated sint64   repeated_sint64   = 505;
-	repeated uint64   repeated_uint64   = 506;
-	repeated fixed32  repeated_fixed32  = 507;
-	repeated sfixed32 repeated_sfixed32 = 508;
-	repeated float    repeated_float    = 509;
-	repeated fixed64  repeated_fixed64  = 510;
-	repeated sfixed64 repeated_sfixed64 = 511;
-	repeated double   repeated_double   = 512;
-	repeated string   repeated_string   = 513;
-	repeated bytes    repeated_bytes    = 514;
-
-	repeated ChildEnum      repeated_child_enum      = 515;
-	repeated ChildMessage   repeated_child_message   = 516;
-	repeated NamedGroup     repeated_named_group     = 517;
-	repeated SiblingEnum    repeated_sibling_enum    = 518;
-	repeated SiblingMessage repeated_sibling_message = 519;
-	repeated group RepeatedGroup = 520 {
-		optional string f1 = 1;
-		required string f2 = 2;
-		repeated string f3 = 3;
-	}
-
-	// Map fields.
-	map<bool, bool>     map_bool_bool     = 600;
-	map<bool, int32>    map_bool_int32    = 601;
-	map<bool, sint32>   map_bool_sint32   = 602;
-	map<bool, uint32>   map_bool_uint32   = 603;
-	map<bool, int64>    map_bool_int64    = 604;
-	map<bool, sint64>   map_bool_sint64   = 605;
-	map<bool, uint64>   map_bool_uint64   = 606;
-	map<bool, fixed32>  map_bool_fixed32  = 607;
-	map<bool, sfixed32> map_bool_sfixed32 = 608;
-	map<bool, float>    map_bool_float    = 609;
-	map<bool, fixed64>  map_bool_fixed64  = 610;
-	map<bool, sfixed64> map_bool_sfixed64 = 611;
-	map<bool, double>   map_bool_double   = 612;
-	map<bool, string>   map_bool_string   = 613;
-	map<bool, bytes>    map_bool_bytes    = 614;
-
-	map<bool, ChildEnum>      map_bool_child_enum      = 615;
-	map<bool, ChildMessage>   map_bool_child_message   = 616;
-	map<bool, NamedGroup>     map_bool_named_group     = 617;
-	map<bool, SiblingEnum>    map_bool_sibling_enum    = 618;
-	map<bool, SiblingMessage> map_bool_sibling_message = 619;
-
-	map<int32, bool>   map_int32_bool   = 620;
-	map<sint32, bool>  map_sint32_bool  = 621;
-	map<uint32, bool>  map_uint32_bool  = 622;
-	map<int64, bool>   map_int64_bool   = 623;
-	map<sint64, bool>  map_sint64_bool  = 624;
-	map<uint64, bool>  map_uint64_bool  = 625;
-	map<fixed32, bool> map_fixed32_bool = 626;
-	map<string, bool>  map_string_bool  = 627;
-
-	// Oneof fields.
-	oneof oneof_union {
-		bool     oneof_bool     = 700;
-		int32    oneof_int32    = 701;
-		sint32   oneof_sint32   = 702;
-		uint32   oneof_uint32   = 703;
-		int64    oneof_int64    = 704;
-		sint64   oneof_sint64   = 705;
-		uint64   oneof_uint64   = 706;
-		fixed32  oneof_fixed32  = 707;
-		sfixed32 oneof_sfixed32 = 708;
-		float    oneof_float    = 709;
-		fixed64  oneof_fixed64  = 710;
-		sfixed64 oneof_sfixed64 = 711;
-		double   oneof_double   = 712;
-		string   oneof_string   = 713;
-		bytes    oneof_bytes    = 714;
-
-		ChildEnum      oneof_child_enum      = 715;
-		ChildMessage   oneof_child_message   = 716;
-		NamedGroup     oneof_named_group     = 717;
-		SiblingEnum    oneof_sibling_enum    = 718;
-		SiblingMessage oneof_sibling_message = 719;
-		group OneofGroup = 720 {
-			optional string f1 = 1;
-			required string f2 = 2;
-			repeated string f3 = 3;
-		}
-
-		string oneof_string1 = 721;
-		string oneof_string2 = 722;
-		string oneof_string3 = 723;
-	}
-
-	// Oneof default fields.
-	oneof oneof_defaulted_union {
-		bool      oneof_defaulted_bool     = 800 [default = true];
-		int32     oneof_defaulted_int32    = 801 [default = -12345];
-		sint32    oneof_defaulted_sint32   = 802 [default = -3200];
-		uint32    oneof_defaulted_uint32   = 803 [default = 3200];
-		int64     oneof_defaulted_int64    = 804 [default = -123456789];
-		sint64    oneof_defaulted_sint64   = 805 [default = -6400];
-		uint64    oneof_defaulted_uint64   = 806 [default = 6400];
-		fixed32   oneof_defaulted_fixed32  = 807 [default = 320000];
-		sfixed32  oneof_defaulted_sfixed32 = 808 [default = -320000];
-		float     oneof_defaulted_float    = 809 [default = 3.14159];
-		fixed64   oneof_defaulted_fixed64  = 810 [default = 640000];
-		sfixed64  oneof_defaulted_sfixed64 = 811 [default = -640000];
-		double    oneof_defaulted_double   = 812 [default = 3.14159265359];
-		string    oneof_defaulted_string   = 813 [default = "hello, \"world!\"\n"];
-		bytes     oneof_defaulted_bytes    = 814 [default = "dead\xde\xad\xbe\xefbeef"];
-
-		ChildEnum   oneof_defaulted_child_enum   = 815 [default = ALPHA];
-		SiblingEnum oneof_defaulted_sibling_enum = 816 [default = ALPHA];
-	}
-
-	// Extension fields.
-	extend Message {
-		// Optional fields.
-		optional bool     extension_optional_bool     = 10000;
-		optional int32    extension_optional_int32    = 10001;
-		optional sint32   extension_optional_sint32   = 10002;
-		optional uint32   extension_optional_uint32   = 10003;
-		optional int64    extension_optional_int64    = 10004;
-		optional sint64   extension_optional_sint64   = 10005;
-		optional uint64   extension_optional_uint64   = 10006;
-		optional fixed32  extension_optional_fixed32  = 10007;
-		optional sfixed32 extension_optional_sfixed32 = 10008;
-		optional float    extension_optional_float    = 10009;
-		optional fixed64  extension_optional_fixed64  = 10010;
-		optional sfixed64 extension_optional_sfixed64 = 10011;
-		optional double   extension_optional_double   = 10012;
-		optional string   extension_optional_string   = 10013;
-		optional bytes    extension_optional_bytes    = 10014;
-
-		optional ChildEnum      extension_optional_child_enum      = 10015;
-		optional ChildMessage   extension_optional_child_message   = 10016;
-		optional NamedGroup     extension_optional_named_group     = 10017;
-		optional SiblingEnum    extension_optional_sibling_enum    = 10018;
-		optional SiblingMessage extension_optional_sibling_message = 10019;
-		optional group ExtensionOptionalGroup = 10020 {
-			optional string f1 = 1;
-			required string f2 = 2;
-			repeated string f3 = 3;
-		}
-
-		// Optional default fields.
-		optional bool      extension_defaulted_bool     = 20000 [default = true];
-		optional int32     extension_defaulted_int32    = 20001 [default = -12345];
-		optional sint32    extension_defaulted_sint32   = 20002 [default = -3200];
-		optional uint32    extension_defaulted_uint32   = 20003 [default = 3200];
-		optional int64     extension_defaulted_int64    = 20004 [default = -123456789];
-		optional sint64    extension_defaulted_sint64   = 20005 [default = -6400];
-		optional uint64    extension_defaulted_uint64   = 20006 [default = 6400];
-		optional fixed32   extension_defaulted_fixed32  = 20007 [default = 320000];
-		optional sfixed32  extension_defaulted_sfixed32 = 20008 [default = -320000];
-		optional float     extension_defaulted_float    = 20009 [default = 3.14159];
-		optional fixed64   extension_defaulted_fixed64  = 20010 [default = 640000];
-		optional sfixed64  extension_defaulted_sfixed64 = 20011 [default = -640000];
-		optional double    extension_defaulted_double   = 20012 [default = 3.14159265359];
-		optional string    extension_defaulted_string   = 20013 [default = "hello, \"world!\"\n"];
-		optional bytes     extension_defaulted_bytes    = 20014 [default = "dead\xde\xad\xbe\xefbeef"];
-
-		optional ChildEnum   extension_defaulted_child_enum   = 20015 [default = ALPHA];
-		optional SiblingEnum extension_defaulted_sibling_enum = 20016 [default = ALPHA];
-
-		// Repeated fields.
-		repeated bool     extension_repeated_bool     = 30000;
-		repeated int32    extension_repeated_int32    = 30001;
-		repeated sint32   extension_repeated_sint32   = 30002;
-		repeated uint32   extension_repeated_uint32   = 30003;
-		repeated int64    extension_repeated_int64    = 30004;
-		repeated sint64   extension_repeated_sint64   = 30005;
-		repeated uint64   extension_repeated_uint64   = 30006;
-		repeated fixed32  extension_repeated_fixed32  = 30007;
-		repeated sfixed32 extension_repeated_sfixed32 = 30008;
-		repeated float    extension_repeated_float    = 30009;
-		repeated fixed64  extension_repeated_fixed64  = 30010;
-		repeated sfixed64 extension_repeated_sfixed64 = 30011;
-		repeated double   extension_repeated_double   = 30012;
-		repeated string   extension_repeated_string   = 30013;
-		repeated bytes    extension_repeated_bytes    = 30014;
-
-		repeated ChildEnum      extension_repeated_child_enum      = 30015;
-		repeated ChildMessage   extension_repeated_child_message   = 30016;
-		repeated NamedGroup     extension_repeated_named_group     = 30017;
-		repeated SiblingEnum    extension_repeated_sibling_enum    = 30018;
-		repeated SiblingMessage extension_repeated_sibling_message = 30019;
-		repeated group ExtensionRepeatedGroup = 30020 {
-			optional string f1 = 1;
-			required string f2 = 2;
-			repeated string f3 = 3;
-		}
-	}
-
-	extensions 10000 to max;
-}
diff --git a/internal/testprotos/legacy/proto2_20180430_b4deda09/test.pb.go b/internal/testprotos/legacy/proto2_20180430_b4deda09/test.pb.go
deleted file mode 100644
index b6e4899..0000000
--- a/internal/testprotos/legacy/proto2_20180430_b4deda09/test.pb.go
+++ /dev/null
@@ -1,3822 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: proto2_20180430_b4deda09/test.proto
-
-package proto2_20180430_b4deda09 // import "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20180430_b4deda09"
-
-import proto "google.golang.org/protobuf/internal/protolegacy"
-import fmt "fmt"
-import 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.ProtoPackageIsVersion2 // please upgrade the proto package
-
-type SiblingEnum int32
-
-const (
-	SiblingEnum_ALPHA   SiblingEnum = 0
-	SiblingEnum_BRAVO   SiblingEnum = 10
-	SiblingEnum_CHARLIE SiblingEnum = 200
-)
-
-var SiblingEnum_name = map[int32]string{
-	0:   "ALPHA",
-	10:  "BRAVO",
-	200: "CHARLIE",
-}
-var SiblingEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   10,
-	"CHARLIE": 200,
-}
-
-func (x SiblingEnum) Enum() *SiblingEnum {
-	p := new(SiblingEnum)
-	*p = x
-	return p
-}
-func (x SiblingEnum) String() string {
-	return proto.EnumName(SiblingEnum_name, int32(x))
-}
-func (x *SiblingEnum) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(SiblingEnum_value, data, "SiblingEnum")
-	if err != nil {
-		return err
-	}
-	*x = SiblingEnum(value)
-	return nil
-}
-func (SiblingEnum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_test_a365478be18be824, []int{0}
-}
-
-type Message_ChildEnum int32
-
-const (
-	Message_ALPHA   Message_ChildEnum = 0
-	Message_BRAVO   Message_ChildEnum = 1
-	Message_CHARLIE Message_ChildEnum = 2
-)
-
-var Message_ChildEnum_name = map[int32]string{
-	0: "ALPHA",
-	1: "BRAVO",
-	2: "CHARLIE",
-}
-var Message_ChildEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   1,
-	"CHARLIE": 2,
-}
-
-func (x Message_ChildEnum) Enum() *Message_ChildEnum {
-	p := new(Message_ChildEnum)
-	*p = x
-	return p
-}
-func (x Message_ChildEnum) String() string {
-	return proto.EnumName(Message_ChildEnum_name, int32(x))
-}
-func (x *Message_ChildEnum) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(Message_ChildEnum_value, data, "Message_ChildEnum")
-	if err != nil {
-		return err
-	}
-	*x = Message_ChildEnum(value)
-	return nil
-}
-func (Message_ChildEnum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_test_a365478be18be824, []int{1, 0}
-}
-
-type SiblingMessage struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	F4                   *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *SiblingMessage) Reset()         { *m = SiblingMessage{} }
-func (m *SiblingMessage) String() string { return proto.CompactTextString(m) }
-func (*SiblingMessage) ProtoMessage()    {}
-func (*SiblingMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_a365478be18be824, []int{0}
-}
-func (m *SiblingMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SiblingMessage.Unmarshal(m, b)
-}
-func (m *SiblingMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SiblingMessage.Marshal(b, m, deterministic)
-}
-func (dst *SiblingMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SiblingMessage.Merge(dst, src)
-}
-func (m *SiblingMessage) XXX_Size() int {
-	return xxx_messageInfo_SiblingMessage.Size(m)
-}
-func (m *SiblingMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_SiblingMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SiblingMessage proto.InternalMessageInfo
-
-func (m *SiblingMessage) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *SiblingMessage) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *SiblingMessage) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func (m *SiblingMessage) GetF4() *Message {
-	if m != nil {
-		return m.F4
-	}
-	return nil
-}
-
-type Message struct {
-	Namedgroup *Message_NamedGroup `protobuf:"group,1,opt,name=NamedGroup,json=namedgroup" json:"namedgroup,omitempty"`
-	// Optional fields.
-	OptionalBool           *bool                  `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
-	OptionalInt32          *int32                 `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
-	OptionalSint32         *int32                 `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
-	OptionalUint32         *uint32                `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
-	OptionalInt64          *int64                 `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
-	OptionalSint64         *int64                 `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
-	OptionalUint64         *uint64                `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
-	OptionalFixed32        *uint32                `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
-	OptionalSfixed32       *int32                 `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
-	OptionalFloat          *float32               `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
-	OptionalFixed64        *uint64                `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
-	OptionalSfixed64       *int64                 `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
-	OptionalDouble         *float64               `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
-	OptionalString         *string                `protobuf:"bytes,113,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
-	OptionalBytes          []byte                 `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
-	OptionalChildEnum      *Message_ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,enum=google.golang.org.proto2_20180430.Message_ChildEnum" json:"optional_child_enum,omitempty"`
-	OptionalChildMessage   *Message_ChildMessage  `protobuf:"bytes,116,opt,name=optional_child_message,json=optionalChildMessage" json:"optional_child_message,omitempty"`
-	OptionalNamedGroup     *Message_NamedGroup    `protobuf:"bytes,117,opt,name=optional_named_group,json=optionalNamedGroup" json:"optional_named_group,omitempty"`
-	OptionalSiblingEnum    *SiblingEnum           `protobuf:"varint,118,opt,name=optional_sibling_enum,json=optionalSiblingEnum,enum=google.golang.org.proto2_20180430.SiblingEnum" json:"optional_sibling_enum,omitempty"`
-	OptionalSiblingMessage *SiblingMessage        `protobuf:"bytes,119,opt,name=optional_sibling_message,json=optionalSiblingMessage" json:"optional_sibling_message,omitempty"`
-	Optionalgroup          *Message_OptionalGroup `protobuf:"group,120,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
-	// Optional default fields.
-	DefaultedBool        *bool              `protobuf:"varint,200,opt,name=defaulted_bool,json=defaultedBool,def=1" json:"defaulted_bool,omitempty"`
-	DefaultedInt32       *int32             `protobuf:"varint,201,opt,name=defaulted_int32,json=defaultedInt32,def=-12345" json:"defaulted_int32,omitempty"`
-	DefaultedSint32      *int32             `protobuf:"zigzag32,202,opt,name=defaulted_sint32,json=defaultedSint32,def=-3200" json:"defaulted_sint32,omitempty"`
-	DefaultedUint32      *uint32            `protobuf:"varint,203,opt,name=defaulted_uint32,json=defaultedUint32,def=3200" json:"defaulted_uint32,omitempty"`
-	DefaultedInt64       *int64             `protobuf:"varint,204,opt,name=defaulted_int64,json=defaultedInt64,def=-123456789" json:"defaulted_int64,omitempty"`
-	DefaultedSint64      *int64             `protobuf:"zigzag64,205,opt,name=defaulted_sint64,json=defaultedSint64,def=-6400" json:"defaulted_sint64,omitempty"`
-	DefaultedUint64      *uint64            `protobuf:"varint,206,opt,name=defaulted_uint64,json=defaultedUint64,def=6400" json:"defaulted_uint64,omitempty"`
-	DefaultedFixed32     *uint32            `protobuf:"fixed32,207,opt,name=defaulted_fixed32,json=defaultedFixed32,def=320000" json:"defaulted_fixed32,omitempty"`
-	DefaultedSfixed32    *int32             `protobuf:"fixed32,208,opt,name=defaulted_sfixed32,json=defaultedSfixed32,def=-320000" json:"defaulted_sfixed32,omitempty"`
-	DefaultedFloat       *float32           `protobuf:"fixed32,209,opt,name=defaulted_float,json=defaultedFloat,def=3.14159" json:"defaulted_float,omitempty"`
-	DefaultedFixed64     *uint64            `protobuf:"fixed64,210,opt,name=defaulted_fixed64,json=defaultedFixed64,def=640000" json:"defaulted_fixed64,omitempty"`
-	DefaultedSfixed64    *int64             `protobuf:"fixed64,211,opt,name=defaulted_sfixed64,json=defaultedSfixed64,def=-640000" json:"defaulted_sfixed64,omitempty"`
-	DefaultedDouble      *float64           `protobuf:"fixed64,212,opt,name=defaulted_double,json=defaultedDouble,def=3.14159265359" json:"defaulted_double,omitempty"`
-	DefaultedString      *string            `protobuf:"bytes,213,opt,name=defaulted_string,json=defaultedString,def=hello, \"world!\"\n" json:"defaulted_string,omitempty"`
-	DefaultedBytes       []byte             `protobuf:"bytes,214,opt,name=defaulted_bytes,json=defaultedBytes,def=dead\\336\\255\\276\\357beef" json:"defaulted_bytes,omitempty"`
-	DefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,215,opt,name=defaulted_child_enum,json=defaultedChildEnum,enum=google.golang.org.proto2_20180430.Message_ChildEnum,def=0" json:"defaulted_child_enum,omitempty"`
-	DefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,216,opt,name=defaulted_sibling_enum,json=defaultedSiblingEnum,enum=google.golang.org.proto2_20180430.SiblingEnum,def=0" json:"defaulted_sibling_enum,omitempty"`
-	// Required fields.
-	RequiredBool           *bool                  `protobuf:"varint,300,req,name=required_bool,json=requiredBool" json:"required_bool,omitempty"`
-	RequiredInt32          *int32                 `protobuf:"varint,301,req,name=required_int32,json=requiredInt32" json:"required_int32,omitempty"`
-	RequiredSint32         *int32                 `protobuf:"zigzag32,302,req,name=required_sint32,json=requiredSint32" json:"required_sint32,omitempty"`
-	RequiredUint32         *uint32                `protobuf:"varint,303,req,name=required_uint32,json=requiredUint32" json:"required_uint32,omitempty"`
-	RequiredInt64          *int64                 `protobuf:"varint,304,req,name=required_int64,json=requiredInt64" json:"required_int64,omitempty"`
-	RequiredSint64         *int64                 `protobuf:"zigzag64,305,req,name=required_sint64,json=requiredSint64" json:"required_sint64,omitempty"`
-	RequiredUint64         *uint64                `protobuf:"varint,306,req,name=required_uint64,json=requiredUint64" json:"required_uint64,omitempty"`
-	RequiredFixed32        *uint32                `protobuf:"fixed32,307,req,name=required_fixed32,json=requiredFixed32" json:"required_fixed32,omitempty"`
-	RequiredSfixed32       *int32                 `protobuf:"fixed32,308,req,name=required_sfixed32,json=requiredSfixed32" json:"required_sfixed32,omitempty"`
-	RequiredFloat          *float32               `protobuf:"fixed32,309,req,name=required_float,json=requiredFloat" json:"required_float,omitempty"`
-	RequiredFixed64        *uint64                `protobuf:"fixed64,310,req,name=required_fixed64,json=requiredFixed64" json:"required_fixed64,omitempty"`
-	RequiredSfixed64       *int64                 `protobuf:"fixed64,311,req,name=required_sfixed64,json=requiredSfixed64" json:"required_sfixed64,omitempty"`
-	RequiredDouble         *float64               `protobuf:"fixed64,312,req,name=required_double,json=requiredDouble" json:"required_double,omitempty"`
-	RequiredString         *string                `protobuf:"bytes,313,req,name=required_string,json=requiredString" json:"required_string,omitempty"`
-	RequiredBytes          []byte                 `protobuf:"bytes,314,req,name=required_bytes,json=requiredBytes" json:"required_bytes,omitempty"`
-	RequiredChildEnum      *Message_ChildEnum     `protobuf:"varint,315,req,name=required_child_enum,json=requiredChildEnum,enum=google.golang.org.proto2_20180430.Message_ChildEnum" json:"required_child_enum,omitempty"`
-	RequiredChildMessage   *Message_ChildMessage  `protobuf:"bytes,316,req,name=required_child_message,json=requiredChildMessage" json:"required_child_message,omitempty"`
-	RequiredNamedGroup     *Message_NamedGroup    `protobuf:"bytes,317,req,name=required_named_group,json=requiredNamedGroup" json:"required_named_group,omitempty"`
-	RequiredSiblingEnum    *SiblingEnum           `protobuf:"varint,318,req,name=required_sibling_enum,json=requiredSiblingEnum,enum=google.golang.org.proto2_20180430.SiblingEnum" json:"required_sibling_enum,omitempty"`
-	RequiredSiblingMessage *SiblingMessage        `protobuf:"bytes,319,req,name=required_sibling_message,json=requiredSiblingMessage" json:"required_sibling_message,omitempty"`
-	Requiredgroup          *Message_RequiredGroup `protobuf:"group,320,req,name=RequiredGroup,json=requiredgroup" json:"requiredgroup,omitempty"`
-	// Required default fields.
-	RequiredDefaultedBool        *bool              `protobuf:"varint,400,req,name=required_defaulted_bool,json=requiredDefaultedBool,def=1" json:"required_defaulted_bool,omitempty"`
-	RequiredDefaultedInt32       *int32             `protobuf:"varint,401,req,name=required_defaulted_int32,json=requiredDefaultedInt32,def=-12345" json:"required_defaulted_int32,omitempty"`
-	RequiredDefaultedSint32      *int32             `protobuf:"zigzag32,402,req,name=required_defaulted_sint32,json=requiredDefaultedSint32,def=-3200" json:"required_defaulted_sint32,omitempty"`
-	RequiredDefaultedUint32      *uint32            `protobuf:"varint,403,req,name=required_defaulted_uint32,json=requiredDefaultedUint32,def=3200" json:"required_defaulted_uint32,omitempty"`
-	RequiredDefaultedInt64       *int64             `protobuf:"varint,404,req,name=required_defaulted_int64,json=requiredDefaultedInt64,def=-123456789" json:"required_defaulted_int64,omitempty"`
-	RequiredDefaultedSint64      *int64             `protobuf:"zigzag64,405,req,name=required_defaulted_sint64,json=requiredDefaultedSint64,def=-6400" json:"required_defaulted_sint64,omitempty"`
-	RequiredDefaultedUint64      *uint64            `protobuf:"varint,406,req,name=required_defaulted_uint64,json=requiredDefaultedUint64,def=6400" json:"required_defaulted_uint64,omitempty"`
-	RequiredDefaultedFixed32     *uint32            `protobuf:"fixed32,407,req,name=required_defaulted_fixed32,json=requiredDefaultedFixed32,def=320000" json:"required_defaulted_fixed32,omitempty"`
-	RequiredDefaultedSfixed32    *int32             `protobuf:"fixed32,408,req,name=required_defaulted_sfixed32,json=requiredDefaultedSfixed32,def=-320000" json:"required_defaulted_sfixed32,omitempty"`
-	RequiredDefaultedFloat       *float32           `protobuf:"fixed32,409,req,name=required_defaulted_float,json=requiredDefaultedFloat,def=3.14159" json:"required_defaulted_float,omitempty"`
-	RequiredDefaultedFixed64     *uint64            `protobuf:"fixed64,410,req,name=required_defaulted_fixed64,json=requiredDefaultedFixed64,def=640000" json:"required_defaulted_fixed64,omitempty"`
-	RequiredDefaultedSfixed64    *int64             `protobuf:"fixed64,411,req,name=required_defaulted_sfixed64,json=requiredDefaultedSfixed64,def=-640000" json:"required_defaulted_sfixed64,omitempty"`
-	RequiredDefaultedDouble      *float64           `protobuf:"fixed64,412,req,name=required_defaulted_double,json=requiredDefaultedDouble,def=3.14159265359" json:"required_defaulted_double,omitempty"`
-	RequiredDefaultedString      *string            `protobuf:"bytes,413,req,name=required_defaulted_string,json=requiredDefaultedString,def=hello, \"world!\"\n" json:"required_defaulted_string,omitempty"`
-	RequiredDefaultedBytes       []byte             `protobuf:"bytes,414,req,name=required_defaulted_bytes,json=requiredDefaultedBytes,def=dead\\336\\255\\276\\357beef" json:"required_defaulted_bytes,omitempty"`
-	RequiredDefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,415,req,name=required_defaulted_child_enum,json=requiredDefaultedChildEnum,enum=google.golang.org.proto2_20180430.Message_ChildEnum,def=0" json:"required_defaulted_child_enum,omitempty"`
-	RequiredDefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,416,req,name=required_defaulted_sibling_enum,json=requiredDefaultedSiblingEnum,enum=google.golang.org.proto2_20180430.SiblingEnum,def=0" json:"required_defaulted_sibling_enum,omitempty"`
-	// Repeated fields.
-	RepeatedBool           []bool                   `protobuf:"varint,500,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
-	RepeatedInt32          []int32                  `protobuf:"varint,501,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
-	RepeatedSint32         []int32                  `protobuf:"zigzag32,502,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
-	RepeatedUint32         []uint32                 `protobuf:"varint,503,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
-	RepeatedInt64          []int64                  `protobuf:"varint,504,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
-	RepeatedSint64         []int64                  `protobuf:"zigzag64,505,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
-	RepeatedUint64         []uint64                 `protobuf:"varint,506,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
-	RepeatedFixed32        []uint32                 `protobuf:"fixed32,507,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
-	RepeatedSfixed32       []int32                  `protobuf:"fixed32,508,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
-	RepeatedFloat          []float32                `protobuf:"fixed32,509,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
-	RepeatedFixed64        []uint64                 `protobuf:"fixed64,510,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
-	RepeatedSfixed64       []int64                  `protobuf:"fixed64,511,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
-	RepeatedDouble         []float64                `protobuf:"fixed64,512,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
-	RepeatedString         []string                 `protobuf:"bytes,513,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
-	RepeatedBytes          [][]byte                 `protobuf:"bytes,514,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
-	RepeatedChildEnum      []Message_ChildEnum      `protobuf:"varint,515,rep,name=repeated_child_enum,json=repeatedChildEnum,enum=google.golang.org.proto2_20180430.Message_ChildEnum" json:"repeated_child_enum,omitempty"`
-	RepeatedChildMessage   []*Message_ChildMessage  `protobuf:"bytes,516,rep,name=repeated_child_message,json=repeatedChildMessage" json:"repeated_child_message,omitempty"`
-	RepeatedNamedGroup     []*Message_NamedGroup    `protobuf:"bytes,517,rep,name=repeated_named_group,json=repeatedNamedGroup" json:"repeated_named_group,omitempty"`
-	RepeatedSiblingEnum    []SiblingEnum            `protobuf:"varint,518,rep,name=repeated_sibling_enum,json=repeatedSiblingEnum,enum=google.golang.org.proto2_20180430.SiblingEnum" json:"repeated_sibling_enum,omitempty"`
-	RepeatedSiblingMessage []*SiblingMessage        `protobuf:"bytes,519,rep,name=repeated_sibling_message,json=repeatedSiblingMessage" json:"repeated_sibling_message,omitempty"`
-	Repeatedgroup          []*Message_RepeatedGroup `protobuf:"group,520,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
-	// Map fields.
-	MapBoolBool           map[bool]bool                  `protobuf:"bytes,600,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolInt32          map[bool]int32                 `protobuf:"bytes,601,rep,name=map_bool_int32,json=mapBoolInt32" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolSint32         map[bool]int32                 `protobuf:"bytes,602,rep,name=map_bool_sint32,json=mapBoolSint32" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
-	MapBoolUint32         map[bool]uint32                `protobuf:"bytes,603,rep,name=map_bool_uint32,json=mapBoolUint32" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolInt64          map[bool]int64                 `protobuf:"bytes,604,rep,name=map_bool_int64,json=mapBoolInt64" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolSint64         map[bool]int64                 `protobuf:"bytes,605,rep,name=map_bool_sint64,json=mapBoolSint64" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
-	MapBoolUint64         map[bool]uint64                `protobuf:"bytes,606,rep,name=map_bool_uint64,json=mapBoolUint64" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolFixed32        map[bool]uint32                `protobuf:"bytes,607,rep,name=map_bool_fixed32,json=mapBoolFixed32" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolSfixed32       map[bool]int32                 `protobuf:"bytes,608,rep,name=map_bool_sfixed32,json=mapBoolSfixed32" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolFloat          map[bool]float32               `protobuf:"bytes,609,rep,name=map_bool_float,json=mapBoolFloat" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolFixed64        map[bool]uint64                `protobuf:"bytes,610,rep,name=map_bool_fixed64,json=mapBoolFixed64" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolSfixed64       map[bool]int64                 `protobuf:"bytes,611,rep,name=map_bool_sfixed64,json=mapBoolSfixed64" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolDouble         map[bool]float64               `protobuf:"bytes,612,rep,name=map_bool_double,json=mapBoolDouble" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolString         map[bool]string                `protobuf:"bytes,613,rep,name=map_bool_string,json=mapBoolString" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolBytes          map[bool][]byte                `protobuf:"bytes,614,rep,name=map_bool_bytes,json=mapBoolBytes" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolChildEnum      map[bool]Message_ChildEnum     `protobuf:"bytes,615,rep,name=map_bool_child_enum,json=mapBoolChildEnum" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20180430.Message_ChildEnum"`
-	MapBoolChildMessage   map[bool]*Message_ChildMessage `protobuf:"bytes,616,rep,name=map_bool_child_message,json=mapBoolChildMessage" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolNamedGroup     map[bool]*Message_NamedGroup   `protobuf:"bytes,617,rep,name=map_bool_named_group,json=mapBoolNamedGroup" json:"map_bool_named_group,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolSiblingEnum    map[bool]SiblingEnum           `protobuf:"bytes,618,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20180430.SiblingEnum"`
-	MapBoolSiblingMessage map[bool]*SiblingMessage       `protobuf:"bytes,619,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapInt32Bool          map[int32]bool                 `protobuf:"bytes,620,rep,name=map_int32_bool,json=mapInt32Bool" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint32Bool         map[int32]bool                 `protobuf:"bytes,621,rep,name=map_sint32_bool,json=mapSint32Bool" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint32Bool         map[uint32]bool                `protobuf:"bytes,622,rep,name=map_uint32_bool,json=mapUint32Bool" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapInt64Bool          map[int64]bool                 `protobuf:"bytes,623,rep,name=map_int64_bool,json=mapInt64Bool" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint64Bool         map[int64]bool                 `protobuf:"bytes,624,rep,name=map_sint64_bool,json=mapSint64Bool" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint64Bool         map[uint64]bool                `protobuf:"bytes,625,rep,name=map_uint64_bool,json=mapUint64Bool" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapFixed32Bool        map[uint32]bool                `protobuf:"bytes,626,rep,name=map_fixed32_bool,json=mapFixed32Bool" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapStringBool         map[string]bool                `protobuf:"bytes,627,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	// Oneof fields.
-	//
-	// Types that are valid to be assigned to OneofUnion:
-	//	*Message_OneofBool
-	//	*Message_OneofInt32
-	//	*Message_OneofSint32
-	//	*Message_OneofUint32
-	//	*Message_OneofInt64
-	//	*Message_OneofSint64
-	//	*Message_OneofUint64
-	//	*Message_OneofFixed32
-	//	*Message_OneofSfixed32
-	//	*Message_OneofFloat
-	//	*Message_OneofFixed64
-	//	*Message_OneofSfixed64
-	//	*Message_OneofDouble
-	//	*Message_OneofString
-	//	*Message_OneofBytes
-	//	*Message_OneofChildEnum
-	//	*Message_OneofChildMessage
-	//	*Message_OneofNamedGroup
-	//	*Message_OneofSiblingEnum
-	//	*Message_OneofSiblingMessage
-	//	*Message_Oneofgroup
-	//	*Message_OneofString1
-	//	*Message_OneofString2
-	//	*Message_OneofString3
-	OneofUnion isMessage_OneofUnion `protobuf_oneof:"oneof_union"`
-	// Oneof default fields.
-	//
-	// Types that are valid to be assigned to OneofDefaultedUnion:
-	//	*Message_OneofDefaultedBool
-	//	*Message_OneofDefaultedInt32
-	//	*Message_OneofDefaultedSint32
-	//	*Message_OneofDefaultedUint32
-	//	*Message_OneofDefaultedInt64
-	//	*Message_OneofDefaultedSint64
-	//	*Message_OneofDefaultedUint64
-	//	*Message_OneofDefaultedFixed32
-	//	*Message_OneofDefaultedSfixed32
-	//	*Message_OneofDefaultedFloat
-	//	*Message_OneofDefaultedFixed64
-	//	*Message_OneofDefaultedSfixed64
-	//	*Message_OneofDefaultedDouble
-	//	*Message_OneofDefaultedString
-	//	*Message_OneofDefaultedBytes
-	//	*Message_OneofDefaultedChildEnum
-	//	*Message_OneofDefaultedSiblingEnum
-	OneofDefaultedUnion          isMessage_OneofDefaultedUnion `protobuf_oneof:"oneof_defaulted_union"`
-	XXX_NoUnkeyedLiteral         struct{}                      `json:"-"`
-	proto.XXX_InternalExtensions `json:"-"`
-	XXX_unrecognized             []byte `json:"-"`
-	XXX_sizecache                int32  `json:"-"`
-}
-
-func (m *Message) Reset()         { *m = Message{} }
-func (m *Message) String() string { return proto.CompactTextString(m) }
-func (*Message) ProtoMessage()    {}
-func (*Message) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_a365478be18be824, []int{1}
-}
-
-var extRange_Message = []proto.ExtensionRange{
-	{Start: 10000, End: 536870911},
-}
-
-func (*Message) ExtensionRangeArray() []proto.ExtensionRange {
-	return extRange_Message
-}
-func (m *Message) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message.Unmarshal(m, b)
-}
-func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message.Marshal(b, m, deterministic)
-}
-func (dst *Message) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message.Merge(dst, src)
-}
-func (m *Message) XXX_Size() int {
-	return xxx_messageInfo_Message.Size(m)
-}
-func (m *Message) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message proto.InternalMessageInfo
-
-const Default_Message_DefaultedBool bool = true
-const Default_Message_DefaultedInt32 int32 = -12345
-const Default_Message_DefaultedSint32 int32 = -3200
-const Default_Message_DefaultedUint32 uint32 = 3200
-const Default_Message_DefaultedInt64 int64 = -123456789
-const Default_Message_DefaultedSint64 int64 = -6400
-const Default_Message_DefaultedUint64 uint64 = 6400
-const Default_Message_DefaultedFixed32 uint32 = 320000
-const Default_Message_DefaultedSfixed32 int32 = -320000
-const Default_Message_DefaultedFloat float32 = 3.14159
-const Default_Message_DefaultedFixed64 uint64 = 640000
-const Default_Message_DefaultedSfixed64 int64 = -640000
-const Default_Message_DefaultedDouble float64 = 3.14159265359
-const Default_Message_DefaultedString string = "hello, \"world!\"\n"
-
-var Default_Message_DefaultedBytes []byte = []byte("deadޭ\xbe\xefbeef")
-
-const Default_Message_DefaultedChildEnum Message_ChildEnum = Message_ALPHA
-const Default_Message_DefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
-const Default_Message_RequiredDefaultedBool bool = true
-const Default_Message_RequiredDefaultedInt32 int32 = -12345
-const Default_Message_RequiredDefaultedSint32 int32 = -3200
-const Default_Message_RequiredDefaultedUint32 uint32 = 3200
-const Default_Message_RequiredDefaultedInt64 int64 = -123456789
-const Default_Message_RequiredDefaultedSint64 int64 = -6400
-const Default_Message_RequiredDefaultedUint64 uint64 = 6400
-const Default_Message_RequiredDefaultedFixed32 uint32 = 320000
-const Default_Message_RequiredDefaultedSfixed32 int32 = -320000
-const Default_Message_RequiredDefaultedFloat float32 = 3.14159
-const Default_Message_RequiredDefaultedFixed64 uint64 = 640000
-const Default_Message_RequiredDefaultedSfixed64 int64 = -640000
-const Default_Message_RequiredDefaultedDouble float64 = 3.14159265359
-const Default_Message_RequiredDefaultedString string = "hello, \"world!\"\n"
-
-var Default_Message_RequiredDefaultedBytes []byte = []byte("deadޭ\xbe\xefbeef")
-
-const Default_Message_RequiredDefaultedChildEnum Message_ChildEnum = Message_ALPHA
-const Default_Message_RequiredDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
-const Default_Message_OneofDefaultedBool bool = true
-const Default_Message_OneofDefaultedInt32 int32 = -12345
-const Default_Message_OneofDefaultedSint32 int32 = -3200
-const Default_Message_OneofDefaultedUint32 uint32 = 3200
-const Default_Message_OneofDefaultedInt64 int64 = -123456789
-const Default_Message_OneofDefaultedSint64 int64 = -6400
-const Default_Message_OneofDefaultedUint64 uint64 = 6400
-const Default_Message_OneofDefaultedFixed32 uint32 = 320000
-const Default_Message_OneofDefaultedSfixed32 int32 = -320000
-const Default_Message_OneofDefaultedFloat float32 = 3.14159
-const Default_Message_OneofDefaultedFixed64 uint64 = 640000
-const Default_Message_OneofDefaultedSfixed64 int64 = -640000
-const Default_Message_OneofDefaultedDouble float64 = 3.14159265359
-const Default_Message_OneofDefaultedString string = "hello, \"world!\"\n"
-
-var Default_Message_OneofDefaultedBytes []byte = []byte("deadޭ\xbe\xefbeef")
-
-const Default_Message_OneofDefaultedChildEnum Message_ChildEnum = Message_ALPHA
-const Default_Message_OneofDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
-
-type isMessage_OneofUnion interface {
-	isMessage_OneofUnion()
-}
-type isMessage_OneofDefaultedUnion interface {
-	isMessage_OneofDefaultedUnion()
-}
-
-type Message_OneofBool struct {
-	OneofBool bool `protobuf:"varint,700,opt,name=oneof_bool,json=oneofBool,oneof"`
-}
-type Message_OneofInt32 struct {
-	OneofInt32 int32 `protobuf:"varint,701,opt,name=oneof_int32,json=oneofInt32,oneof"`
-}
-type Message_OneofSint32 struct {
-	OneofSint32 int32 `protobuf:"zigzag32,702,opt,name=oneof_sint32,json=oneofSint32,oneof"`
-}
-type Message_OneofUint32 struct {
-	OneofUint32 uint32 `protobuf:"varint,703,opt,name=oneof_uint32,json=oneofUint32,oneof"`
-}
-type Message_OneofInt64 struct {
-	OneofInt64 int64 `protobuf:"varint,704,opt,name=oneof_int64,json=oneofInt64,oneof"`
-}
-type Message_OneofSint64 struct {
-	OneofSint64 int64 `protobuf:"zigzag64,705,opt,name=oneof_sint64,json=oneofSint64,oneof"`
-}
-type Message_OneofUint64 struct {
-	OneofUint64 uint64 `protobuf:"varint,706,opt,name=oneof_uint64,json=oneofUint64,oneof"`
-}
-type Message_OneofFixed32 struct {
-	OneofFixed32 uint32 `protobuf:"fixed32,707,opt,name=oneof_fixed32,json=oneofFixed32,oneof"`
-}
-type Message_OneofSfixed32 struct {
-	OneofSfixed32 int32 `protobuf:"fixed32,708,opt,name=oneof_sfixed32,json=oneofSfixed32,oneof"`
-}
-type Message_OneofFloat struct {
-	OneofFloat float32 `protobuf:"fixed32,709,opt,name=oneof_float,json=oneofFloat,oneof"`
-}
-type Message_OneofFixed64 struct {
-	OneofFixed64 uint64 `protobuf:"fixed64,710,opt,name=oneof_fixed64,json=oneofFixed64,oneof"`
-}
-type Message_OneofSfixed64 struct {
-	OneofSfixed64 int64 `protobuf:"fixed64,711,opt,name=oneof_sfixed64,json=oneofSfixed64,oneof"`
-}
-type Message_OneofDouble struct {
-	OneofDouble float64 `protobuf:"fixed64,712,opt,name=oneof_double,json=oneofDouble,oneof"`
-}
-type Message_OneofString struct {
-	OneofString string `protobuf:"bytes,713,opt,name=oneof_string,json=oneofString,oneof"`
-}
-type Message_OneofBytes struct {
-	OneofBytes []byte `protobuf:"bytes,714,opt,name=oneof_bytes,json=oneofBytes,oneof"`
-}
-type Message_OneofChildEnum struct {
-	OneofChildEnum Message_ChildEnum `protobuf:"varint,715,opt,name=oneof_child_enum,json=oneofChildEnum,enum=google.golang.org.proto2_20180430.Message_ChildEnum,oneof"`
-}
-type Message_OneofChildMessage struct {
-	OneofChildMessage *Message_ChildMessage `protobuf:"bytes,716,opt,name=oneof_child_message,json=oneofChildMessage,oneof"`
-}
-type Message_OneofNamedGroup struct {
-	OneofNamedGroup *Message_NamedGroup `protobuf:"bytes,717,opt,name=oneof_named_group,json=oneofNamedGroup,oneof"`
-}
-type Message_OneofSiblingEnum struct {
-	OneofSiblingEnum SiblingEnum `protobuf:"varint,718,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,enum=google.golang.org.proto2_20180430.SiblingEnum,oneof"`
-}
-type Message_OneofSiblingMessage struct {
-	OneofSiblingMessage *SiblingMessage `protobuf:"bytes,719,opt,name=oneof_sibling_message,json=oneofSiblingMessage,oneof"`
-}
-type Message_Oneofgroup struct {
-	Oneofgroup *Message_OneofGroup `protobuf:"group,720,opt,name=OneofGroup,json=oneofgroup,oneof"`
-}
-type Message_OneofString1 struct {
-	OneofString1 string `protobuf:"bytes,721,opt,name=oneof_string1,json=oneofString1,oneof"`
-}
-type Message_OneofString2 struct {
-	OneofString2 string `protobuf:"bytes,722,opt,name=oneof_string2,json=oneofString2,oneof"`
-}
-type Message_OneofString3 struct {
-	OneofString3 string `protobuf:"bytes,723,opt,name=oneof_string3,json=oneofString3,oneof"`
-}
-type Message_OneofDefaultedBool struct {
-	OneofDefaultedBool bool `protobuf:"varint,800,opt,name=oneof_defaulted_bool,json=oneofDefaultedBool,oneof,def=1"`
-}
-type Message_OneofDefaultedInt32 struct {
-	OneofDefaultedInt32 int32 `protobuf:"varint,801,opt,name=oneof_defaulted_int32,json=oneofDefaultedInt32,oneof,def=-12345"`
-}
-type Message_OneofDefaultedSint32 struct {
-	OneofDefaultedSint32 int32 `protobuf:"zigzag32,802,opt,name=oneof_defaulted_sint32,json=oneofDefaultedSint32,oneof,def=-3200"`
-}
-type Message_OneofDefaultedUint32 struct {
-	OneofDefaultedUint32 uint32 `protobuf:"varint,803,opt,name=oneof_defaulted_uint32,json=oneofDefaultedUint32,oneof,def=3200"`
-}
-type Message_OneofDefaultedInt64 struct {
-	OneofDefaultedInt64 int64 `protobuf:"varint,804,opt,name=oneof_defaulted_int64,json=oneofDefaultedInt64,oneof,def=-123456789"`
-}
-type Message_OneofDefaultedSint64 struct {
-	OneofDefaultedSint64 int64 `protobuf:"zigzag64,805,opt,name=oneof_defaulted_sint64,json=oneofDefaultedSint64,oneof,def=-6400"`
-}
-type Message_OneofDefaultedUint64 struct {
-	OneofDefaultedUint64 uint64 `protobuf:"varint,806,opt,name=oneof_defaulted_uint64,json=oneofDefaultedUint64,oneof,def=6400"`
-}
-type Message_OneofDefaultedFixed32 struct {
-	OneofDefaultedFixed32 uint32 `protobuf:"fixed32,807,opt,name=oneof_defaulted_fixed32,json=oneofDefaultedFixed32,oneof,def=320000"`
-}
-type Message_OneofDefaultedSfixed32 struct {
-	OneofDefaultedSfixed32 int32 `protobuf:"fixed32,808,opt,name=oneof_defaulted_sfixed32,json=oneofDefaultedSfixed32,oneof,def=-320000"`
-}
-type Message_OneofDefaultedFloat struct {
-	OneofDefaultedFloat float32 `protobuf:"fixed32,809,opt,name=oneof_defaulted_float,json=oneofDefaultedFloat,oneof,def=3.14159"`
-}
-type Message_OneofDefaultedFixed64 struct {
-	OneofDefaultedFixed64 uint64 `protobuf:"fixed64,810,opt,name=oneof_defaulted_fixed64,json=oneofDefaultedFixed64,oneof,def=640000"`
-}
-type Message_OneofDefaultedSfixed64 struct {
-	OneofDefaultedSfixed64 int64 `protobuf:"fixed64,811,opt,name=oneof_defaulted_sfixed64,json=oneofDefaultedSfixed64,oneof,def=-640000"`
-}
-type Message_OneofDefaultedDouble struct {
-	OneofDefaultedDouble float64 `protobuf:"fixed64,812,opt,name=oneof_defaulted_double,json=oneofDefaultedDouble,oneof,def=3.14159265359"`
-}
-type Message_OneofDefaultedString struct {
-	OneofDefaultedString string `protobuf:"bytes,813,opt,name=oneof_defaulted_string,json=oneofDefaultedString,oneof,def=hello, \"world!\"\n"`
-}
-type Message_OneofDefaultedBytes struct {
-	OneofDefaultedBytes []byte `protobuf:"bytes,814,opt,name=oneof_defaulted_bytes,json=oneofDefaultedBytes,oneof,def=dead\\336\\255\\276\\357beef"`
-}
-type Message_OneofDefaultedChildEnum struct {
-	OneofDefaultedChildEnum Message_ChildEnum `protobuf:"varint,815,opt,name=oneof_defaulted_child_enum,json=oneofDefaultedChildEnum,enum=google.golang.org.proto2_20180430.Message_ChildEnum,oneof,def=0"`
-}
-type Message_OneofDefaultedSiblingEnum struct {
-	OneofDefaultedSiblingEnum SiblingEnum `protobuf:"varint,816,opt,name=oneof_defaulted_sibling_enum,json=oneofDefaultedSiblingEnum,enum=google.golang.org.proto2_20180430.SiblingEnum,oneof,def=0"`
-}
-
-func (*Message_OneofBool) isMessage_OneofUnion()                          {}
-func (*Message_OneofInt32) isMessage_OneofUnion()                         {}
-func (*Message_OneofSint32) isMessage_OneofUnion()                        {}
-func (*Message_OneofUint32) isMessage_OneofUnion()                        {}
-func (*Message_OneofInt64) isMessage_OneofUnion()                         {}
-func (*Message_OneofSint64) isMessage_OneofUnion()                        {}
-func (*Message_OneofUint64) isMessage_OneofUnion()                        {}
-func (*Message_OneofFixed32) isMessage_OneofUnion()                       {}
-func (*Message_OneofSfixed32) isMessage_OneofUnion()                      {}
-func (*Message_OneofFloat) isMessage_OneofUnion()                         {}
-func (*Message_OneofFixed64) isMessage_OneofUnion()                       {}
-func (*Message_OneofSfixed64) isMessage_OneofUnion()                      {}
-func (*Message_OneofDouble) isMessage_OneofUnion()                        {}
-func (*Message_OneofString) isMessage_OneofUnion()                        {}
-func (*Message_OneofBytes) isMessage_OneofUnion()                         {}
-func (*Message_OneofChildEnum) isMessage_OneofUnion()                     {}
-func (*Message_OneofChildMessage) isMessage_OneofUnion()                  {}
-func (*Message_OneofNamedGroup) isMessage_OneofUnion()                    {}
-func (*Message_OneofSiblingEnum) isMessage_OneofUnion()                   {}
-func (*Message_OneofSiblingMessage) isMessage_OneofUnion()                {}
-func (*Message_Oneofgroup) isMessage_OneofUnion()                         {}
-func (*Message_OneofString1) isMessage_OneofUnion()                       {}
-func (*Message_OneofString2) isMessage_OneofUnion()                       {}
-func (*Message_OneofString3) isMessage_OneofUnion()                       {}
-func (*Message_OneofDefaultedBool) isMessage_OneofDefaultedUnion()        {}
-func (*Message_OneofDefaultedInt32) isMessage_OneofDefaultedUnion()       {}
-func (*Message_OneofDefaultedSint32) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedUint32) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedInt64) isMessage_OneofDefaultedUnion()       {}
-func (*Message_OneofDefaultedSint64) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedUint64) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedFixed32) isMessage_OneofDefaultedUnion()     {}
-func (*Message_OneofDefaultedSfixed32) isMessage_OneofDefaultedUnion()    {}
-func (*Message_OneofDefaultedFloat) isMessage_OneofDefaultedUnion()       {}
-func (*Message_OneofDefaultedFixed64) isMessage_OneofDefaultedUnion()     {}
-func (*Message_OneofDefaultedSfixed64) isMessage_OneofDefaultedUnion()    {}
-func (*Message_OneofDefaultedDouble) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedString) isMessage_OneofDefaultedUnion()      {}
-func (*Message_OneofDefaultedBytes) isMessage_OneofDefaultedUnion()       {}
-func (*Message_OneofDefaultedChildEnum) isMessage_OneofDefaultedUnion()   {}
-func (*Message_OneofDefaultedSiblingEnum) isMessage_OneofDefaultedUnion() {}
-
-func (m *Message) GetOneofUnion() isMessage_OneofUnion {
-	if m != nil {
-		return m.OneofUnion
-	}
-	return nil
-}
-func (m *Message) GetOneofDefaultedUnion() isMessage_OneofDefaultedUnion {
-	if m != nil {
-		return m.OneofDefaultedUnion
-	}
-	return nil
-}
-
-func (m *Message) GetNamedgroup() *Message_NamedGroup {
-	if m != nil {
-		return m.Namedgroup
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalBool() bool {
-	if m != nil && m.OptionalBool != nil {
-		return *m.OptionalBool
-	}
-	return false
-}
-
-func (m *Message) GetOptionalInt32() int32 {
-	if m != nil && m.OptionalInt32 != nil {
-		return *m.OptionalInt32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSint32() int32 {
-	if m != nil && m.OptionalSint32 != nil {
-		return *m.OptionalSint32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalUint32() uint32 {
-	if m != nil && m.OptionalUint32 != nil {
-		return *m.OptionalUint32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalInt64() int64 {
-	if m != nil && m.OptionalInt64 != nil {
-		return *m.OptionalInt64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSint64() int64 {
-	if m != nil && m.OptionalSint64 != nil {
-		return *m.OptionalSint64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalUint64() uint64 {
-	if m != nil && m.OptionalUint64 != nil {
-		return *m.OptionalUint64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFixed32() uint32 {
-	if m != nil && m.OptionalFixed32 != nil {
-		return *m.OptionalFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSfixed32() int32 {
-	if m != nil && m.OptionalSfixed32 != nil {
-		return *m.OptionalSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFloat() float32 {
-	if m != nil && m.OptionalFloat != nil {
-		return *m.OptionalFloat
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFixed64() uint64 {
-	if m != nil && m.OptionalFixed64 != nil {
-		return *m.OptionalFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSfixed64() int64 {
-	if m != nil && m.OptionalSfixed64 != nil {
-		return *m.OptionalSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalDouble() float64 {
-	if m != nil && m.OptionalDouble != nil {
-		return *m.OptionalDouble
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalString() string {
-	if m != nil && m.OptionalString != nil {
-		return *m.OptionalString
-	}
-	return ""
-}
-
-func (m *Message) GetOptionalBytes() []byte {
-	if m != nil {
-		return m.OptionalBytes
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalChildEnum() Message_ChildEnum {
-	if m != nil && m.OptionalChildEnum != nil {
-		return *m.OptionalChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetOptionalChildMessage() *Message_ChildMessage {
-	if m != nil {
-		return m.OptionalChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalNamedGroup() *Message_NamedGroup {
-	if m != nil {
-		return m.OptionalNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalSiblingEnum() SiblingEnum {
-	if m != nil && m.OptionalSiblingEnum != nil {
-		return *m.OptionalSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetOptionalSiblingMessage() *SiblingMessage {
-	if m != nil {
-		return m.OptionalSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalgroup() *Message_OptionalGroup {
-	if m != nil {
-		return m.Optionalgroup
-	}
-	return nil
-}
-
-func (m *Message) GetDefaultedBool() bool {
-	if m != nil && m.DefaultedBool != nil {
-		return *m.DefaultedBool
-	}
-	return Default_Message_DefaultedBool
-}
-
-func (m *Message) GetDefaultedInt32() int32 {
-	if m != nil && m.DefaultedInt32 != nil {
-		return *m.DefaultedInt32
-	}
-	return Default_Message_DefaultedInt32
-}
-
-func (m *Message) GetDefaultedSint32() int32 {
-	if m != nil && m.DefaultedSint32 != nil {
-		return *m.DefaultedSint32
-	}
-	return Default_Message_DefaultedSint32
-}
-
-func (m *Message) GetDefaultedUint32() uint32 {
-	if m != nil && m.DefaultedUint32 != nil {
-		return *m.DefaultedUint32
-	}
-	return Default_Message_DefaultedUint32
-}
-
-func (m *Message) GetDefaultedInt64() int64 {
-	if m != nil && m.DefaultedInt64 != nil {
-		return *m.DefaultedInt64
-	}
-	return Default_Message_DefaultedInt64
-}
-
-func (m *Message) GetDefaultedSint64() int64 {
-	if m != nil && m.DefaultedSint64 != nil {
-		return *m.DefaultedSint64
-	}
-	return Default_Message_DefaultedSint64
-}
-
-func (m *Message) GetDefaultedUint64() uint64 {
-	if m != nil && m.DefaultedUint64 != nil {
-		return *m.DefaultedUint64
-	}
-	return Default_Message_DefaultedUint64
-}
-
-func (m *Message) GetDefaultedFixed32() uint32 {
-	if m != nil && m.DefaultedFixed32 != nil {
-		return *m.DefaultedFixed32
-	}
-	return Default_Message_DefaultedFixed32
-}
-
-func (m *Message) GetDefaultedSfixed32() int32 {
-	if m != nil && m.DefaultedSfixed32 != nil {
-		return *m.DefaultedSfixed32
-	}
-	return Default_Message_DefaultedSfixed32
-}
-
-func (m *Message) GetDefaultedFloat() float32 {
-	if m != nil && m.DefaultedFloat != nil {
-		return *m.DefaultedFloat
-	}
-	return Default_Message_DefaultedFloat
-}
-
-func (m *Message) GetDefaultedFixed64() uint64 {
-	if m != nil && m.DefaultedFixed64 != nil {
-		return *m.DefaultedFixed64
-	}
-	return Default_Message_DefaultedFixed64
-}
-
-func (m *Message) GetDefaultedSfixed64() int64 {
-	if m != nil && m.DefaultedSfixed64 != nil {
-		return *m.DefaultedSfixed64
-	}
-	return Default_Message_DefaultedSfixed64
-}
-
-func (m *Message) GetDefaultedDouble() float64 {
-	if m != nil && m.DefaultedDouble != nil {
-		return *m.DefaultedDouble
-	}
-	return Default_Message_DefaultedDouble
-}
-
-func (m *Message) GetDefaultedString() string {
-	if m != nil && m.DefaultedString != nil {
-		return *m.DefaultedString
-	}
-	return Default_Message_DefaultedString
-}
-
-func (m *Message) GetDefaultedBytes() []byte {
-	if m != nil && m.DefaultedBytes != nil {
-		return m.DefaultedBytes
-	}
-	return append([]byte(nil), Default_Message_DefaultedBytes...)
-}
-
-func (m *Message) GetDefaultedChildEnum() Message_ChildEnum {
-	if m != nil && m.DefaultedChildEnum != nil {
-		return *m.DefaultedChildEnum
-	}
-	return Default_Message_DefaultedChildEnum
-}
-
-func (m *Message) GetDefaultedSiblingEnum() SiblingEnum {
-	if m != nil && m.DefaultedSiblingEnum != nil {
-		return *m.DefaultedSiblingEnum
-	}
-	return Default_Message_DefaultedSiblingEnum
-}
-
-func (m *Message) GetRequiredBool() bool {
-	if m != nil && m.RequiredBool != nil {
-		return *m.RequiredBool
-	}
-	return false
-}
-
-func (m *Message) GetRequiredInt32() int32 {
-	if m != nil && m.RequiredInt32 != nil {
-		return *m.RequiredInt32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSint32() int32 {
-	if m != nil && m.RequiredSint32 != nil {
-		return *m.RequiredSint32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredUint32() uint32 {
-	if m != nil && m.RequiredUint32 != nil {
-		return *m.RequiredUint32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredInt64() int64 {
-	if m != nil && m.RequiredInt64 != nil {
-		return *m.RequiredInt64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSint64() int64 {
-	if m != nil && m.RequiredSint64 != nil {
-		return *m.RequiredSint64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredUint64() uint64 {
-	if m != nil && m.RequiredUint64 != nil {
-		return *m.RequiredUint64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredFixed32() uint32 {
-	if m != nil && m.RequiredFixed32 != nil {
-		return *m.RequiredFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSfixed32() int32 {
-	if m != nil && m.RequiredSfixed32 != nil {
-		return *m.RequiredSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredFloat() float32 {
-	if m != nil && m.RequiredFloat != nil {
-		return *m.RequiredFloat
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredFixed64() uint64 {
-	if m != nil && m.RequiredFixed64 != nil {
-		return *m.RequiredFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSfixed64() int64 {
-	if m != nil && m.RequiredSfixed64 != nil {
-		return *m.RequiredSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredDouble() float64 {
-	if m != nil && m.RequiredDouble != nil {
-		return *m.RequiredDouble
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredString() string {
-	if m != nil && m.RequiredString != nil {
-		return *m.RequiredString
-	}
-	return ""
-}
-
-func (m *Message) GetRequiredBytes() []byte {
-	if m != nil {
-		return m.RequiredBytes
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredChildEnum() Message_ChildEnum {
-	if m != nil && m.RequiredChildEnum != nil {
-		return *m.RequiredChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetRequiredChildMessage() *Message_ChildMessage {
-	if m != nil {
-		return m.RequiredChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredNamedGroup() *Message_NamedGroup {
-	if m != nil {
-		return m.RequiredNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredSiblingEnum() SiblingEnum {
-	if m != nil && m.RequiredSiblingEnum != nil {
-		return *m.RequiredSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetRequiredSiblingMessage() *SiblingMessage {
-	if m != nil {
-		return m.RequiredSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredgroup() *Message_RequiredGroup {
-	if m != nil {
-		return m.Requiredgroup
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredDefaultedBool() bool {
-	if m != nil && m.RequiredDefaultedBool != nil {
-		return *m.RequiredDefaultedBool
-	}
-	return Default_Message_RequiredDefaultedBool
-}
-
-func (m *Message) GetRequiredDefaultedInt32() int32 {
-	if m != nil && m.RequiredDefaultedInt32 != nil {
-		return *m.RequiredDefaultedInt32
-	}
-	return Default_Message_RequiredDefaultedInt32
-}
-
-func (m *Message) GetRequiredDefaultedSint32() int32 {
-	if m != nil && m.RequiredDefaultedSint32 != nil {
-		return *m.RequiredDefaultedSint32
-	}
-	return Default_Message_RequiredDefaultedSint32
-}
-
-func (m *Message) GetRequiredDefaultedUint32() uint32 {
-	if m != nil && m.RequiredDefaultedUint32 != nil {
-		return *m.RequiredDefaultedUint32
-	}
-	return Default_Message_RequiredDefaultedUint32
-}
-
-func (m *Message) GetRequiredDefaultedInt64() int64 {
-	if m != nil && m.RequiredDefaultedInt64 != nil {
-		return *m.RequiredDefaultedInt64
-	}
-	return Default_Message_RequiredDefaultedInt64
-}
-
-func (m *Message) GetRequiredDefaultedSint64() int64 {
-	if m != nil && m.RequiredDefaultedSint64 != nil {
-		return *m.RequiredDefaultedSint64
-	}
-	return Default_Message_RequiredDefaultedSint64
-}
-
-func (m *Message) GetRequiredDefaultedUint64() uint64 {
-	if m != nil && m.RequiredDefaultedUint64 != nil {
-		return *m.RequiredDefaultedUint64
-	}
-	return Default_Message_RequiredDefaultedUint64
-}
-
-func (m *Message) GetRequiredDefaultedFixed32() uint32 {
-	if m != nil && m.RequiredDefaultedFixed32 != nil {
-		return *m.RequiredDefaultedFixed32
-	}
-	return Default_Message_RequiredDefaultedFixed32
-}
-
-func (m *Message) GetRequiredDefaultedSfixed32() int32 {
-	if m != nil && m.RequiredDefaultedSfixed32 != nil {
-		return *m.RequiredDefaultedSfixed32
-	}
-	return Default_Message_RequiredDefaultedSfixed32
-}
-
-func (m *Message) GetRequiredDefaultedFloat() float32 {
-	if m != nil && m.RequiredDefaultedFloat != nil {
-		return *m.RequiredDefaultedFloat
-	}
-	return Default_Message_RequiredDefaultedFloat
-}
-
-func (m *Message) GetRequiredDefaultedFixed64() uint64 {
-	if m != nil && m.RequiredDefaultedFixed64 != nil {
-		return *m.RequiredDefaultedFixed64
-	}
-	return Default_Message_RequiredDefaultedFixed64
-}
-
-func (m *Message) GetRequiredDefaultedSfixed64() int64 {
-	if m != nil && m.RequiredDefaultedSfixed64 != nil {
-		return *m.RequiredDefaultedSfixed64
-	}
-	return Default_Message_RequiredDefaultedSfixed64
-}
-
-func (m *Message) GetRequiredDefaultedDouble() float64 {
-	if m != nil && m.RequiredDefaultedDouble != nil {
-		return *m.RequiredDefaultedDouble
-	}
-	return Default_Message_RequiredDefaultedDouble
-}
-
-func (m *Message) GetRequiredDefaultedString() string {
-	if m != nil && m.RequiredDefaultedString != nil {
-		return *m.RequiredDefaultedString
-	}
-	return Default_Message_RequiredDefaultedString
-}
-
-func (m *Message) GetRequiredDefaultedBytes() []byte {
-	if m != nil && m.RequiredDefaultedBytes != nil {
-		return m.RequiredDefaultedBytes
-	}
-	return append([]byte(nil), Default_Message_RequiredDefaultedBytes...)
-}
-
-func (m *Message) GetRequiredDefaultedChildEnum() Message_ChildEnum {
-	if m != nil && m.RequiredDefaultedChildEnum != nil {
-		return *m.RequiredDefaultedChildEnum
-	}
-	return Default_Message_RequiredDefaultedChildEnum
-}
-
-func (m *Message) GetRequiredDefaultedSiblingEnum() SiblingEnum {
-	if m != nil && m.RequiredDefaultedSiblingEnum != nil {
-		return *m.RequiredDefaultedSiblingEnum
-	}
-	return Default_Message_RequiredDefaultedSiblingEnum
-}
-
-func (m *Message) GetRepeatedBool() []bool {
-	if m != nil {
-		return m.RepeatedBool
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedInt32() []int32 {
-	if m != nil {
-		return m.RepeatedInt32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSint32() []int32 {
-	if m != nil {
-		return m.RepeatedSint32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedUint32() []uint32 {
-	if m != nil {
-		return m.RepeatedUint32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedInt64() []int64 {
-	if m != nil {
-		return m.RepeatedInt64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSint64() []int64 {
-	if m != nil {
-		return m.RepeatedSint64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedUint64() []uint64 {
-	if m != nil {
-		return m.RepeatedUint64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFixed32() []uint32 {
-	if m != nil {
-		return m.RepeatedFixed32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSfixed32() []int32 {
-	if m != nil {
-		return m.RepeatedSfixed32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFloat() []float32 {
-	if m != nil {
-		return m.RepeatedFloat
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFixed64() []uint64 {
-	if m != nil {
-		return m.RepeatedFixed64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSfixed64() []int64 {
-	if m != nil {
-		return m.RepeatedSfixed64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedDouble() []float64 {
-	if m != nil {
-		return m.RepeatedDouble
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedString() []string {
-	if m != nil {
-		return m.RepeatedString
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedBytes() [][]byte {
-	if m != nil {
-		return m.RepeatedBytes
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedChildEnum() []Message_ChildEnum {
-	if m != nil {
-		return m.RepeatedChildEnum
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedChildMessage() []*Message_ChildMessage {
-	if m != nil {
-		return m.RepeatedChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedNamedGroup() []*Message_NamedGroup {
-	if m != nil {
-		return m.RepeatedNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSiblingEnum() []SiblingEnum {
-	if m != nil {
-		return m.RepeatedSiblingEnum
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSiblingMessage() []*SiblingMessage {
-	if m != nil {
-		return m.RepeatedSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedgroup() []*Message_RepeatedGroup {
-	if m != nil {
-		return m.Repeatedgroup
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBool() map[bool]bool {
-	if m != nil {
-		return m.MapBoolBool
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolInt32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolUint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolInt64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolUint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolFixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSfixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFloat() map[bool]float32 {
-	if m != nil {
-		return m.MapBoolFloat
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolFixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSfixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolDouble() map[bool]float64 {
-	if m != nil {
-		return m.MapBoolDouble
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolString() map[bool]string {
-	if m != nil {
-		return m.MapBoolString
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBytes() map[bool][]byte {
-	if m != nil {
-		return m.MapBoolBytes
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildEnum() map[bool]Message_ChildEnum {
-	if m != nil {
-		return m.MapBoolChildEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildMessage() map[bool]*Message_ChildMessage {
-	if m != nil {
-		return m.MapBoolChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolNamedGroup() map[bool]*Message_NamedGroup {
-	if m != nil {
-		return m.MapBoolNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingEnum() map[bool]SiblingEnum {
-	if m != nil {
-		return m.MapBoolSiblingEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingMessage() map[bool]*SiblingMessage {
-	if m != nil {
-		return m.MapBoolSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapInt32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapSint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapUint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapInt64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapSint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint64Bool() map[uint64]bool {
-	if m != nil {
-		return m.MapUint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapFixed32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapFixed32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapStringBool() map[string]bool {
-	if m != nil {
-		return m.MapStringBool
-	}
-	return nil
-}
-
-func (m *Message) GetOneofBool() bool {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBool); ok {
-		return x.OneofBool
-	}
-	return false
-}
-
-func (m *Message) GetOneofInt32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt32); ok {
-		return x.OneofInt32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint32); ok {
-		return x.OneofSint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint32); ok {
-		return x.OneofUint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofInt64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt64); ok {
-		return x.OneofInt64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint64); ok {
-		return x.OneofSint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint64); ok {
-		return x.OneofUint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed32); ok {
-		return x.OneofFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed32); ok {
-		return x.OneofSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFloat() float32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFloat); ok {
-		return x.OneofFloat
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed64); ok {
-		return x.OneofFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed64); ok {
-		return x.OneofSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofDouble() float64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofDouble); ok {
-		return x.OneofDouble
-	}
-	return 0
-}
-
-func (m *Message) GetOneofString() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString); ok {
-		return x.OneofString
-	}
-	return ""
-}
-
-func (m *Message) GetOneofBytes() []byte {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBytes); ok {
-		return x.OneofBytes
-	}
-	return nil
-}
-
-func (m *Message) GetOneofChildEnum() Message_ChildEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildEnum); ok {
-		return x.OneofChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetOneofChildMessage() *Message_ChildMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildMessage); ok {
-		return x.OneofChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofNamedGroup() *Message_NamedGroup {
-	if x, ok := m.GetOneofUnion().(*Message_OneofNamedGroup); ok {
-		return x.OneofNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetOneofSiblingEnum() SiblingEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingEnum); ok {
-		return x.OneofSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetOneofSiblingMessage() *SiblingMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingMessage); ok {
-		return x.OneofSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofgroup() *Message_OneofGroup {
-	if x, ok := m.GetOneofUnion().(*Message_Oneofgroup); ok {
-		return x.Oneofgroup
-	}
-	return nil
-}
-
-func (m *Message) GetOneofString1() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString1); ok {
-		return x.OneofString1
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString2() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString2); ok {
-		return x.OneofString2
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString3() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString3); ok {
-		return x.OneofString3
-	}
-	return ""
-}
-
-func (m *Message) GetOneofDefaultedBool() bool {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBool); ok {
-		return x.OneofDefaultedBool
-	}
-	return Default_Message_OneofDefaultedBool
-}
-
-func (m *Message) GetOneofDefaultedInt32() int32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt32); ok {
-		return x.OneofDefaultedInt32
-	}
-	return Default_Message_OneofDefaultedInt32
-}
-
-func (m *Message) GetOneofDefaultedSint32() int32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint32); ok {
-		return x.OneofDefaultedSint32
-	}
-	return Default_Message_OneofDefaultedSint32
-}
-
-func (m *Message) GetOneofDefaultedUint32() uint32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint32); ok {
-		return x.OneofDefaultedUint32
-	}
-	return Default_Message_OneofDefaultedUint32
-}
-
-func (m *Message) GetOneofDefaultedInt64() int64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt64); ok {
-		return x.OneofDefaultedInt64
-	}
-	return Default_Message_OneofDefaultedInt64
-}
-
-func (m *Message) GetOneofDefaultedSint64() int64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint64); ok {
-		return x.OneofDefaultedSint64
-	}
-	return Default_Message_OneofDefaultedSint64
-}
-
-func (m *Message) GetOneofDefaultedUint64() uint64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint64); ok {
-		return x.OneofDefaultedUint64
-	}
-	return Default_Message_OneofDefaultedUint64
-}
-
-func (m *Message) GetOneofDefaultedFixed32() uint32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed32); ok {
-		return x.OneofDefaultedFixed32
-	}
-	return Default_Message_OneofDefaultedFixed32
-}
-
-func (m *Message) GetOneofDefaultedSfixed32() int32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed32); ok {
-		return x.OneofDefaultedSfixed32
-	}
-	return Default_Message_OneofDefaultedSfixed32
-}
-
-func (m *Message) GetOneofDefaultedFloat() float32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFloat); ok {
-		return x.OneofDefaultedFloat
-	}
-	return Default_Message_OneofDefaultedFloat
-}
-
-func (m *Message) GetOneofDefaultedFixed64() uint64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed64); ok {
-		return x.OneofDefaultedFixed64
-	}
-	return Default_Message_OneofDefaultedFixed64
-}
-
-func (m *Message) GetOneofDefaultedSfixed64() int64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed64); ok {
-		return x.OneofDefaultedSfixed64
-	}
-	return Default_Message_OneofDefaultedSfixed64
-}
-
-func (m *Message) GetOneofDefaultedDouble() float64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedDouble); ok {
-		return x.OneofDefaultedDouble
-	}
-	return Default_Message_OneofDefaultedDouble
-}
-
-func (m *Message) GetOneofDefaultedString() string {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedString); ok {
-		return x.OneofDefaultedString
-	}
-	return Default_Message_OneofDefaultedString
-}
-
-func (m *Message) GetOneofDefaultedBytes() []byte {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBytes); ok {
-		return x.OneofDefaultedBytes
-	}
-	return append([]byte(nil), Default_Message_OneofDefaultedBytes...)
-}
-
-func (m *Message) GetOneofDefaultedChildEnum() Message_ChildEnum {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedChildEnum); ok {
-		return x.OneofDefaultedChildEnum
-	}
-	return Default_Message_OneofDefaultedChildEnum
-}
-
-func (m *Message) GetOneofDefaultedSiblingEnum() SiblingEnum {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSiblingEnum); ok {
-		return x.OneofDefaultedSiblingEnum
-	}
-	return Default_Message_OneofDefaultedSiblingEnum
-}
-
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*Message) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _Message_OneofMarshaler, _Message_OneofUnmarshaler, _Message_OneofSizer, []interface{}{
-		(*Message_OneofBool)(nil),
-		(*Message_OneofInt32)(nil),
-		(*Message_OneofSint32)(nil),
-		(*Message_OneofUint32)(nil),
-		(*Message_OneofInt64)(nil),
-		(*Message_OneofSint64)(nil),
-		(*Message_OneofUint64)(nil),
-		(*Message_OneofFixed32)(nil),
-		(*Message_OneofSfixed32)(nil),
-		(*Message_OneofFloat)(nil),
-		(*Message_OneofFixed64)(nil),
-		(*Message_OneofSfixed64)(nil),
-		(*Message_OneofDouble)(nil),
-		(*Message_OneofString)(nil),
-		(*Message_OneofBytes)(nil),
-		(*Message_OneofChildEnum)(nil),
-		(*Message_OneofChildMessage)(nil),
-		(*Message_OneofNamedGroup)(nil),
-		(*Message_OneofSiblingEnum)(nil),
-		(*Message_OneofSiblingMessage)(nil),
-		(*Message_Oneofgroup)(nil),
-		(*Message_OneofString1)(nil),
-		(*Message_OneofString2)(nil),
-		(*Message_OneofString3)(nil),
-		(*Message_OneofDefaultedBool)(nil),
-		(*Message_OneofDefaultedInt32)(nil),
-		(*Message_OneofDefaultedSint32)(nil),
-		(*Message_OneofDefaultedUint32)(nil),
-		(*Message_OneofDefaultedInt64)(nil),
-		(*Message_OneofDefaultedSint64)(nil),
-		(*Message_OneofDefaultedUint64)(nil),
-		(*Message_OneofDefaultedFixed32)(nil),
-		(*Message_OneofDefaultedSfixed32)(nil),
-		(*Message_OneofDefaultedFloat)(nil),
-		(*Message_OneofDefaultedFixed64)(nil),
-		(*Message_OneofDefaultedSfixed64)(nil),
-		(*Message_OneofDefaultedDouble)(nil),
-		(*Message_OneofDefaultedString)(nil),
-		(*Message_OneofDefaultedBytes)(nil),
-		(*Message_OneofDefaultedChildEnum)(nil),
-		(*Message_OneofDefaultedSiblingEnum)(nil),
-	}
-}
-
-func _Message_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*Message)
-	// oneof_union
-	switch x := m.OneofUnion.(type) {
-	case *Message_OneofBool:
-		t := uint64(0)
-		if x.OneofBool {
-			t = 1
-		}
-		b.EncodeVarint(700<<3 | proto.WireVarint)
-		b.EncodeVarint(t)
-	case *Message_OneofInt32:
-		b.EncodeVarint(701<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofInt32))
-	case *Message_OneofSint32:
-		b.EncodeVarint(702<<3 | proto.WireVarint)
-		b.EncodeZigzag32(uint64(x.OneofSint32))
-	case *Message_OneofUint32:
-		b.EncodeVarint(703<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofUint32))
-	case *Message_OneofInt64:
-		b.EncodeVarint(704<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofInt64))
-	case *Message_OneofSint64:
-		b.EncodeVarint(705<<3 | proto.WireVarint)
-		b.EncodeZigzag64(uint64(x.OneofSint64))
-	case *Message_OneofUint64:
-		b.EncodeVarint(706<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofUint64))
-	case *Message_OneofFixed32:
-		b.EncodeVarint(707<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofFixed32))
-	case *Message_OneofSfixed32:
-		b.EncodeVarint(708<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofSfixed32))
-	case *Message_OneofFloat:
-		b.EncodeVarint(709<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(math.Float32bits(x.OneofFloat)))
-	case *Message_OneofFixed64:
-		b.EncodeVarint(710<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofFixed64))
-	case *Message_OneofSfixed64:
-		b.EncodeVarint(711<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofSfixed64))
-	case *Message_OneofDouble:
-		b.EncodeVarint(712<<3 | proto.WireFixed64)
-		b.EncodeFixed64(math.Float64bits(x.OneofDouble))
-	case *Message_OneofString:
-		b.EncodeVarint(713<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString)
-	case *Message_OneofBytes:
-		b.EncodeVarint(714<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.OneofBytes)
-	case *Message_OneofChildEnum:
-		b.EncodeVarint(715<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofChildEnum))
-	case *Message_OneofChildMessage:
-		b.EncodeVarint(716<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofChildMessage); err != nil {
-			return err
-		}
-	case *Message_OneofNamedGroup:
-		b.EncodeVarint(717<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofNamedGroup); err != nil {
-			return err
-		}
-	case *Message_OneofSiblingEnum:
-		b.EncodeVarint(718<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofSiblingEnum))
-	case *Message_OneofSiblingMessage:
-		b.EncodeVarint(719<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofSiblingMessage); err != nil {
-			return err
-		}
-	case *Message_Oneofgroup:
-		b.EncodeVarint(720<<3 | proto.WireStartGroup)
-		if err := b.Marshal(x.Oneofgroup); err != nil {
-			return err
-		}
-		b.EncodeVarint(720<<3 | proto.WireEndGroup)
-	case *Message_OneofString1:
-		b.EncodeVarint(721<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString1)
-	case *Message_OneofString2:
-		b.EncodeVarint(722<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString2)
-	case *Message_OneofString3:
-		b.EncodeVarint(723<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString3)
-	case nil:
-	default:
-		return fmt.Errorf("Message.OneofUnion has unexpected type %T", x)
-	}
-	// oneof_defaulted_union
-	switch x := m.OneofDefaultedUnion.(type) {
-	case *Message_OneofDefaultedBool:
-		t := uint64(0)
-		if x.OneofDefaultedBool {
-			t = 1
-		}
-		b.EncodeVarint(800<<3 | proto.WireVarint)
-		b.EncodeVarint(t)
-	case *Message_OneofDefaultedInt32:
-		b.EncodeVarint(801<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedInt32))
-	case *Message_OneofDefaultedSint32:
-		b.EncodeVarint(802<<3 | proto.WireVarint)
-		b.EncodeZigzag32(uint64(x.OneofDefaultedSint32))
-	case *Message_OneofDefaultedUint32:
-		b.EncodeVarint(803<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedUint32))
-	case *Message_OneofDefaultedInt64:
-		b.EncodeVarint(804<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedInt64))
-	case *Message_OneofDefaultedSint64:
-		b.EncodeVarint(805<<3 | proto.WireVarint)
-		b.EncodeZigzag64(uint64(x.OneofDefaultedSint64))
-	case *Message_OneofDefaultedUint64:
-		b.EncodeVarint(806<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedUint64))
-	case *Message_OneofDefaultedFixed32:
-		b.EncodeVarint(807<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofDefaultedFixed32))
-	case *Message_OneofDefaultedSfixed32:
-		b.EncodeVarint(808<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofDefaultedSfixed32))
-	case *Message_OneofDefaultedFloat:
-		b.EncodeVarint(809<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(math.Float32bits(x.OneofDefaultedFloat)))
-	case *Message_OneofDefaultedFixed64:
-		b.EncodeVarint(810<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofDefaultedFixed64))
-	case *Message_OneofDefaultedSfixed64:
-		b.EncodeVarint(811<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofDefaultedSfixed64))
-	case *Message_OneofDefaultedDouble:
-		b.EncodeVarint(812<<3 | proto.WireFixed64)
-		b.EncodeFixed64(math.Float64bits(x.OneofDefaultedDouble))
-	case *Message_OneofDefaultedString:
-		b.EncodeVarint(813<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofDefaultedString)
-	case *Message_OneofDefaultedBytes:
-		b.EncodeVarint(814<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.OneofDefaultedBytes)
-	case *Message_OneofDefaultedChildEnum:
-		b.EncodeVarint(815<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedChildEnum))
-	case *Message_OneofDefaultedSiblingEnum:
-		b.EncodeVarint(816<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedSiblingEnum))
-	case nil:
-	default:
-		return fmt.Errorf("Message.OneofDefaultedUnion has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _Message_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*Message)
-	switch tag {
-	case 700: // oneof_union.oneof_bool
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofBool{x != 0}
-		return true, err
-	case 701: // oneof_union.oneof_int32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofInt32{int32(x)}
-		return true, err
-	case 702: // oneof_union.oneof_sint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag32()
-		m.OneofUnion = &Message_OneofSint32{int32(x)}
-		return true, err
-	case 703: // oneof_union.oneof_uint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofUint32{uint32(x)}
-		return true, err
-	case 704: // oneof_union.oneof_int64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofInt64{int64(x)}
-		return true, err
-	case 705: // oneof_union.oneof_sint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag64()
-		m.OneofUnion = &Message_OneofSint64{int64(x)}
-		return true, err
-	case 706: // oneof_union.oneof_uint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofUint64{x}
-		return true, err
-	case 707: // oneof_union.oneof_fixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofFixed32{uint32(x)}
-		return true, err
-	case 708: // oneof_union.oneof_sfixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofSfixed32{int32(x)}
-		return true, err
-	case 709: // oneof_union.oneof_float
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofFloat{math.Float32frombits(uint32(x))}
-		return true, err
-	case 710: // oneof_union.oneof_fixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofFixed64{x}
-		return true, err
-	case 711: // oneof_union.oneof_sfixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofSfixed64{int64(x)}
-		return true, err
-	case 712: // oneof_union.oneof_double
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofDouble{math.Float64frombits(x)}
-		return true, err
-	case 713: // oneof_union.oneof_string
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString{x}
-		return true, err
-	case 714: // oneof_union.oneof_bytes
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.OneofUnion = &Message_OneofBytes{x}
-		return true, err
-	case 715: // oneof_union.oneof_child_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofChildEnum{Message_ChildEnum(x)}
-		return true, err
-	case 716: // oneof_union.oneof_child_message
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Message_ChildMessage)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofChildMessage{msg}
-		return true, err
-	case 717: // oneof_union.oneof_named_group
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Message_NamedGroup)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofNamedGroup{msg}
-		return true, err
-	case 718: // oneof_union.oneof_sibling_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofSiblingEnum{SiblingEnum(x)}
-		return true, err
-	case 719: // oneof_union.oneof_sibling_message
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(SiblingMessage)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofSiblingMessage{msg}
-		return true, err
-	case 720: // oneof_union.oneofgroup
-		if wire != proto.WireStartGroup {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Message_OneofGroup)
-		err := b.DecodeGroup(msg)
-		m.OneofUnion = &Message_Oneofgroup{msg}
-		return true, err
-	case 721: // oneof_union.oneof_string1
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString1{x}
-		return true, err
-	case 722: // oneof_union.oneof_string2
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString2{x}
-		return true, err
-	case 723: // oneof_union.oneof_string3
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString3{x}
-		return true, err
-	case 800: // oneof_defaulted_union.oneof_defaulted_bool
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedBool{x != 0}
-		return true, err
-	case 801: // oneof_defaulted_union.oneof_defaulted_int32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedInt32{int32(x)}
-		return true, err
-	case 802: // oneof_defaulted_union.oneof_defaulted_sint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag32()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSint32{int32(x)}
-		return true, err
-	case 803: // oneof_defaulted_union.oneof_defaulted_uint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedUint32{uint32(x)}
-		return true, err
-	case 804: // oneof_defaulted_union.oneof_defaulted_int64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedInt64{int64(x)}
-		return true, err
-	case 805: // oneof_defaulted_union.oneof_defaulted_sint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag64()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSint64{int64(x)}
-		return true, err
-	case 806: // oneof_defaulted_union.oneof_defaulted_uint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedUint64{x}
-		return true, err
-	case 807: // oneof_defaulted_union.oneof_defaulted_fixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedFixed32{uint32(x)}
-		return true, err
-	case 808: // oneof_defaulted_union.oneof_defaulted_sfixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSfixed32{int32(x)}
-		return true, err
-	case 809: // oneof_defaulted_union.oneof_defaulted_float
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedFloat{math.Float32frombits(uint32(x))}
-		return true, err
-	case 810: // oneof_defaulted_union.oneof_defaulted_fixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedFixed64{x}
-		return true, err
-	case 811: // oneof_defaulted_union.oneof_defaulted_sfixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSfixed64{int64(x)}
-		return true, err
-	case 812: // oneof_defaulted_union.oneof_defaulted_double
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedDouble{math.Float64frombits(x)}
-		return true, err
-	case 813: // oneof_defaulted_union.oneof_defaulted_string
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedString{x}
-		return true, err
-	case 814: // oneof_defaulted_union.oneof_defaulted_bytes
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.OneofDefaultedUnion = &Message_OneofDefaultedBytes{x}
-		return true, err
-	case 815: // oneof_defaulted_union.oneof_defaulted_child_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedChildEnum{Message_ChildEnum(x)}
-		return true, err
-	case 816: // oneof_defaulted_union.oneof_defaulted_sibling_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSiblingEnum{SiblingEnum(x)}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _Message_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*Message)
-	// oneof_union
-	switch x := m.OneofUnion.(type) {
-	case *Message_OneofBool:
-		n += 2 // tag and wire
-		n += 1
-	case *Message_OneofInt32:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofInt32))
-	case *Message_OneofSint32:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64((uint32(x.OneofSint32) << 1) ^ uint32((int32(x.OneofSint32) >> 31))))
-	case *Message_OneofUint32:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofUint32))
-	case *Message_OneofInt64:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofInt64))
-	case *Message_OneofSint64:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(uint64(x.OneofSint64<<1) ^ uint64((int64(x.OneofSint64) >> 63))))
-	case *Message_OneofUint64:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofUint64))
-	case *Message_OneofFixed32:
-		n += 2 // tag and wire
-		n += 4
-	case *Message_OneofSfixed32:
-		n += 2 // tag and wire
-		n += 4
-	case *Message_OneofFloat:
-		n += 2 // tag and wire
-		n += 4
-	case *Message_OneofFixed64:
-		n += 2 // tag and wire
-		n += 8
-	case *Message_OneofSfixed64:
-		n += 2 // tag and wire
-		n += 8
-	case *Message_OneofDouble:
-		n += 2 // tag and wire
-		n += 8
-	case *Message_OneofString:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofString)))
-		n += len(x.OneofString)
-	case *Message_OneofBytes:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofBytes)))
-		n += len(x.OneofBytes)
-	case *Message_OneofChildEnum:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofChildEnum))
-	case *Message_OneofChildMessage:
-		s := proto.Size(x.OneofChildMessage)
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_OneofNamedGroup:
-		s := proto.Size(x.OneofNamedGroup)
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_OneofSiblingEnum:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofSiblingEnum))
-	case *Message_OneofSiblingMessage:
-		s := proto.Size(x.OneofSiblingMessage)
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_Oneofgroup:
-		n += 2 // tag and wire
-		n += proto.Size(x.Oneofgroup)
-		n += 2 // tag and wire
-	case *Message_OneofString1:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofString1)))
-		n += len(x.OneofString1)
-	case *Message_OneofString2:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofString2)))
-		n += len(x.OneofString2)
-	case *Message_OneofString3:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofString3)))
-		n += len(x.OneofString3)
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	// oneof_defaulted_union
-	switch x := m.OneofDefaultedUnion.(type) {
-	case *Message_OneofDefaultedBool:
-		n += 2 // tag and wire
-		n += 1
-	case *Message_OneofDefaultedInt32:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofDefaultedInt32))
-	case *Message_OneofDefaultedSint32:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64((uint32(x.OneofDefaultedSint32) << 1) ^ uint32((int32(x.OneofDefaultedSint32) >> 31))))
-	case *Message_OneofDefaultedUint32:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofDefaultedUint32))
-	case *Message_OneofDefaultedInt64:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofDefaultedInt64))
-	case *Message_OneofDefaultedSint64:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(uint64(x.OneofDefaultedSint64<<1) ^ uint64((int64(x.OneofDefaultedSint64) >> 63))))
-	case *Message_OneofDefaultedUint64:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofDefaultedUint64))
-	case *Message_OneofDefaultedFixed32:
-		n += 2 // tag and wire
-		n += 4
-	case *Message_OneofDefaultedSfixed32:
-		n += 2 // tag and wire
-		n += 4
-	case *Message_OneofDefaultedFloat:
-		n += 2 // tag and wire
-		n += 4
-	case *Message_OneofDefaultedFixed64:
-		n += 2 // tag and wire
-		n += 8
-	case *Message_OneofDefaultedSfixed64:
-		n += 2 // tag and wire
-		n += 8
-	case *Message_OneofDefaultedDouble:
-		n += 2 // tag and wire
-		n += 8
-	case *Message_OneofDefaultedString:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofDefaultedString)))
-		n += len(x.OneofDefaultedString)
-	case *Message_OneofDefaultedBytes:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofDefaultedBytes)))
-		n += len(x.OneofDefaultedBytes)
-	case *Message_OneofDefaultedChildEnum:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofDefaultedChildEnum))
-	case *Message_OneofDefaultedSiblingEnum:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofDefaultedSiblingEnum))
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
-var E_Message_ExtensionOptionalBool = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*bool)(nil),
-	Field:         10000,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_bool",
-	Tag:           "varint,10000,opt,name=extension_optional_bool,json=extensionOptionalBool",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionOptionalInt32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         10001,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_int32",
-	Tag:           "varint,10001,opt,name=extension_optional_int32,json=extensionOptionalInt32",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionOptionalSint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         10002,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_sint32",
-	Tag:           "zigzag32,10002,opt,name=extension_optional_sint32,json=extensionOptionalSint32",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionOptionalUint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         10003,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_uint32",
-	Tag:           "varint,10003,opt,name=extension_optional_uint32,json=extensionOptionalUint32",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionOptionalInt64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         10004,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_int64",
-	Tag:           "varint,10004,opt,name=extension_optional_int64,json=extensionOptionalInt64",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionOptionalSint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         10005,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_sint64",
-	Tag:           "zigzag64,10005,opt,name=extension_optional_sint64,json=extensionOptionalSint64",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionOptionalUint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         10006,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_uint64",
-	Tag:           "varint,10006,opt,name=extension_optional_uint64,json=extensionOptionalUint64",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionOptionalFixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         10007,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_fixed32",
-	Tag:           "fixed32,10007,opt,name=extension_optional_fixed32,json=extensionOptionalFixed32",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionOptionalSfixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         10008,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_sfixed32",
-	Tag:           "fixed32,10008,opt,name=extension_optional_sfixed32,json=extensionOptionalSfixed32",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionOptionalFloat = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float32)(nil),
-	Field:         10009,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_float",
-	Tag:           "fixed32,10009,opt,name=extension_optional_float,json=extensionOptionalFloat",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionOptionalFixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         10010,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_fixed64",
-	Tag:           "fixed64,10010,opt,name=extension_optional_fixed64,json=extensionOptionalFixed64",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionOptionalSfixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         10011,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_sfixed64",
-	Tag:           "fixed64,10011,opt,name=extension_optional_sfixed64,json=extensionOptionalSfixed64",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionOptionalDouble = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float64)(nil),
-	Field:         10012,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_double",
-	Tag:           "fixed64,10012,opt,name=extension_optional_double,json=extensionOptionalDouble",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionOptionalString = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*string)(nil),
-	Field:         10013,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_string",
-	Tag:           "bytes,10013,opt,name=extension_optional_string,json=extensionOptionalString",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionOptionalBytes = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]byte)(nil),
-	Field:         10014,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_bytes",
-	Tag:           "bytes,10014,opt,name=extension_optional_bytes,json=extensionOptionalBytes",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionOptionalChildEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ChildEnum)(nil),
-	Field:         10015,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_child_enum",
-	Tag:           "varint,10015,opt,name=extension_optional_child_enum,json=extensionOptionalChildEnum,enum=google.golang.org.proto2_20180430.Message_ChildEnum",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionOptionalChildMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ChildMessage)(nil),
-	Field:         10016,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_child_message",
-	Tag:           "bytes,10016,opt,name=extension_optional_child_message,json=extensionOptionalChildMessage",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionOptionalNamedGroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_NamedGroup)(nil),
-	Field:         10017,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_named_group",
-	Tag:           "bytes,10017,opt,name=extension_optional_named_group,json=extensionOptionalNamedGroup",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionOptionalSiblingEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*SiblingEnum)(nil),
-	Field:         10018,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_sibling_enum",
-	Tag:           "varint,10018,opt,name=extension_optional_sibling_enum,json=extensionOptionalSiblingEnum,enum=google.golang.org.proto2_20180430.SiblingEnum",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionOptionalSiblingMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*SiblingMessage)(nil),
-	Field:         10019,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_optional_sibling_message",
-	Tag:           "bytes,10019,opt,name=extension_optional_sibling_message,json=extensionOptionalSiblingMessage",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_Extensionoptionalgroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ExtensionOptionalGroup)(nil),
-	Field:         10020,
-	Name:          "google.golang.org.proto2_20180430.Message.extensionoptionalgroup",
-	Tag:           "group,10020,opt,name=ExtensionOptionalGroup,json=extensionoptionalgroup",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionDefaultedBool = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*bool)(nil),
-	Field:         20000,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_bool",
-	Tag:           "varint,20000,opt,name=extension_defaulted_bool,json=extensionDefaultedBool,def=1",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionDefaultedInt32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         20001,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_int32",
-	Tag:           "varint,20001,opt,name=extension_defaulted_int32,json=extensionDefaultedInt32,def=-12345",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionDefaultedSint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         20002,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_sint32",
-	Tag:           "zigzag32,20002,opt,name=extension_defaulted_sint32,json=extensionDefaultedSint32,def=-3200",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionDefaultedUint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         20003,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_uint32",
-	Tag:           "varint,20003,opt,name=extension_defaulted_uint32,json=extensionDefaultedUint32,def=3200",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionDefaultedInt64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         20004,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_int64",
-	Tag:           "varint,20004,opt,name=extension_defaulted_int64,json=extensionDefaultedInt64,def=-123456789",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionDefaultedSint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         20005,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_sint64",
-	Tag:           "zigzag64,20005,opt,name=extension_defaulted_sint64,json=extensionDefaultedSint64,def=-6400",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionDefaultedUint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         20006,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_uint64",
-	Tag:           "varint,20006,opt,name=extension_defaulted_uint64,json=extensionDefaultedUint64,def=6400",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionDefaultedFixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         20007,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_fixed32",
-	Tag:           "fixed32,20007,opt,name=extension_defaulted_fixed32,json=extensionDefaultedFixed32,def=320000",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionDefaultedSfixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         20008,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_sfixed32",
-	Tag:           "fixed32,20008,opt,name=extension_defaulted_sfixed32,json=extensionDefaultedSfixed32,def=-320000",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionDefaultedFloat = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float32)(nil),
-	Field:         20009,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_float",
-	Tag:           "fixed32,20009,opt,name=extension_defaulted_float,json=extensionDefaultedFloat,def=3.14159",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionDefaultedFixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         20010,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_fixed64",
-	Tag:           "fixed64,20010,opt,name=extension_defaulted_fixed64,json=extensionDefaultedFixed64,def=640000",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionDefaultedSfixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         20011,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_sfixed64",
-	Tag:           "fixed64,20011,opt,name=extension_defaulted_sfixed64,json=extensionDefaultedSfixed64,def=-640000",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionDefaultedDouble = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float64)(nil),
-	Field:         20012,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_double",
-	Tag:           "fixed64,20012,opt,name=extension_defaulted_double,json=extensionDefaultedDouble,def=3.14159265359",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionDefaultedString = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*string)(nil),
-	Field:         20013,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_string",
-	Tag:           "bytes,20013,opt,name=extension_defaulted_string,json=extensionDefaultedString,def=hello, \"world!\"\n",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionDefaultedBytes = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]byte)(nil),
-	Field:         20014,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_bytes",
-	Tag:           "bytes,20014,opt,name=extension_defaulted_bytes,json=extensionDefaultedBytes,def=dead\\336\\255\\276\\357beef",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionDefaultedChildEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ChildEnum)(nil),
-	Field:         20015,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_child_enum",
-	Tag:           "varint,20015,opt,name=extension_defaulted_child_enum,json=extensionDefaultedChildEnum,enum=google.golang.org.proto2_20180430.Message_ChildEnum,def=0",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionDefaultedSiblingEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*SiblingEnum)(nil),
-	Field:         20016,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_defaulted_sibling_enum",
-	Tag:           "varint,20016,opt,name=extension_defaulted_sibling_enum,json=extensionDefaultedSiblingEnum,enum=google.golang.org.proto2_20180430.SiblingEnum,def=0",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionRepeatedBool = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]bool)(nil),
-	Field:         30000,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_bool",
-	Tag:           "varint,30000,rep,name=extension_repeated_bool,json=extensionRepeatedBool",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionRepeatedInt32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int32)(nil),
-	Field:         30001,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_int32",
-	Tag:           "varint,30001,rep,name=extension_repeated_int32,json=extensionRepeatedInt32",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int32)(nil),
-	Field:         30002,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_sint32",
-	Tag:           "zigzag32,30002,rep,name=extension_repeated_sint32,json=extensionRepeatedSint32",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionRepeatedUint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint32)(nil),
-	Field:         30003,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_uint32",
-	Tag:           "varint,30003,rep,name=extension_repeated_uint32,json=extensionRepeatedUint32",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionRepeatedInt64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int64)(nil),
-	Field:         30004,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_int64",
-	Tag:           "varint,30004,rep,name=extension_repeated_int64,json=extensionRepeatedInt64",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int64)(nil),
-	Field:         30005,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_sint64",
-	Tag:           "zigzag64,30005,rep,name=extension_repeated_sint64,json=extensionRepeatedSint64",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionRepeatedUint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint64)(nil),
-	Field:         30006,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_uint64",
-	Tag:           "varint,30006,rep,name=extension_repeated_uint64,json=extensionRepeatedUint64",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionRepeatedFixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint32)(nil),
-	Field:         30007,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_fixed32",
-	Tag:           "fixed32,30007,rep,name=extension_repeated_fixed32,json=extensionRepeatedFixed32",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSfixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int32)(nil),
-	Field:         30008,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_sfixed32",
-	Tag:           "fixed32,30008,rep,name=extension_repeated_sfixed32,json=extensionRepeatedSfixed32",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionRepeatedFloat = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]float32)(nil),
-	Field:         30009,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_float",
-	Tag:           "fixed32,30009,rep,name=extension_repeated_float,json=extensionRepeatedFloat",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionRepeatedFixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint64)(nil),
-	Field:         30010,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_fixed64",
-	Tag:           "fixed64,30010,rep,name=extension_repeated_fixed64,json=extensionRepeatedFixed64",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSfixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int64)(nil),
-	Field:         30011,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_sfixed64",
-	Tag:           "fixed64,30011,rep,name=extension_repeated_sfixed64,json=extensionRepeatedSfixed64",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionRepeatedDouble = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]float64)(nil),
-	Field:         30012,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_double",
-	Tag:           "fixed64,30012,rep,name=extension_repeated_double,json=extensionRepeatedDouble",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionRepeatedString = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]string)(nil),
-	Field:         30013,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_string",
-	Tag:           "bytes,30013,rep,name=extension_repeated_string,json=extensionRepeatedString",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionRepeatedBytes = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([][]byte)(nil),
-	Field:         30014,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_bytes",
-	Tag:           "bytes,30014,rep,name=extension_repeated_bytes,json=extensionRepeatedBytes",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionRepeatedChildEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]Message_ChildEnum)(nil),
-	Field:         30015,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_child_enum",
-	Tag:           "varint,30015,rep,name=extension_repeated_child_enum,json=extensionRepeatedChildEnum,enum=google.golang.org.proto2_20180430.Message_ChildEnum",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionRepeatedChildMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*Message_ChildMessage)(nil),
-	Field:         30016,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_child_message",
-	Tag:           "bytes,30016,rep,name=extension_repeated_child_message,json=extensionRepeatedChildMessage",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionRepeatedNamedGroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*Message_NamedGroup)(nil),
-	Field:         30017,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_named_group",
-	Tag:           "bytes,30017,rep,name=extension_repeated_named_group,json=extensionRepeatedNamedGroup",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSiblingEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]SiblingEnum)(nil),
-	Field:         30018,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_sibling_enum",
-	Tag:           "varint,30018,rep,name=extension_repeated_sibling_enum,json=extensionRepeatedSiblingEnum,enum=google.golang.org.proto2_20180430.SiblingEnum",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSiblingMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*SiblingMessage)(nil),
-	Field:         30019,
-	Name:          "google.golang.org.proto2_20180430.Message.extension_repeated_sibling_message",
-	Tag:           "bytes,30019,rep,name=extension_repeated_sibling_message,json=extensionRepeatedSiblingMessage",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-var E_Message_Extensionrepeatedgroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*Message_ExtensionRepeatedGroup)(nil),
-	Field:         30020,
-	Name:          "google.golang.org.proto2_20180430.Message.extensionrepeatedgroup",
-	Tag:           "group,30020,rep,name=ExtensionRepeatedGroup,json=extensionrepeatedgroup",
-	Filename:      "proto2_20180430_b4deda09/test.proto",
-}
-
-type Message_ChildMessage struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	F4                   *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_ChildMessage) Reset()         { *m = Message_ChildMessage{} }
-func (m *Message_ChildMessage) String() string { return proto.CompactTextString(m) }
-func (*Message_ChildMessage) ProtoMessage()    {}
-func (*Message_ChildMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_a365478be18be824, []int{1, 0}
-}
-func (m *Message_ChildMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_ChildMessage.Unmarshal(m, b)
-}
-func (m *Message_ChildMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_ChildMessage.Marshal(b, m, deterministic)
-}
-func (dst *Message_ChildMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_ChildMessage.Merge(dst, src)
-}
-func (m *Message_ChildMessage) XXX_Size() int {
-	return xxx_messageInfo_Message_ChildMessage.Size(m)
-}
-func (m *Message_ChildMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_ChildMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_ChildMessage proto.InternalMessageInfo
-
-func (m *Message_ChildMessage) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_ChildMessage) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_ChildMessage) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func (m *Message_ChildMessage) GetF4() *Message {
-	if m != nil {
-		return m.F4
-	}
-	return nil
-}
-
-type Message_NamedGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	F4                   *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_NamedGroup) Reset()         { *m = Message_NamedGroup{} }
-func (m *Message_NamedGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_NamedGroup) ProtoMessage()    {}
-func (*Message_NamedGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_a365478be18be824, []int{1, 1}
-}
-func (m *Message_NamedGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_NamedGroup.Unmarshal(m, b)
-}
-func (m *Message_NamedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_NamedGroup.Marshal(b, m, deterministic)
-}
-func (dst *Message_NamedGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_NamedGroup.Merge(dst, src)
-}
-func (m *Message_NamedGroup) XXX_Size() int {
-	return xxx_messageInfo_Message_NamedGroup.Size(m)
-}
-func (m *Message_NamedGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_NamedGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_NamedGroup proto.InternalMessageInfo
-
-func (m *Message_NamedGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_NamedGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_NamedGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func (m *Message_NamedGroup) GetF4() *Message {
-	if m != nil {
-		return m.F4
-	}
-	return nil
-}
-
-type Message_OptionalGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_OptionalGroup) Reset()         { *m = Message_OptionalGroup{} }
-func (m *Message_OptionalGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_OptionalGroup) ProtoMessage()    {}
-func (*Message_OptionalGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_a365478be18be824, []int{1, 2}
-}
-func (m *Message_OptionalGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_OptionalGroup.Unmarshal(m, b)
-}
-func (m *Message_OptionalGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_OptionalGroup.Marshal(b, m, deterministic)
-}
-func (dst *Message_OptionalGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_OptionalGroup.Merge(dst, src)
-}
-func (m *Message_OptionalGroup) XXX_Size() int {
-	return xxx_messageInfo_Message_OptionalGroup.Size(m)
-}
-func (m *Message_OptionalGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_OptionalGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_OptionalGroup proto.InternalMessageInfo
-
-func (m *Message_OptionalGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_OptionalGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_OptionalGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_RequiredGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_RequiredGroup) Reset()         { *m = Message_RequiredGroup{} }
-func (m *Message_RequiredGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_RequiredGroup) ProtoMessage()    {}
-func (*Message_RequiredGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_a365478be18be824, []int{1, 3}
-}
-func (m *Message_RequiredGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_RequiredGroup.Unmarshal(m, b)
-}
-func (m *Message_RequiredGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_RequiredGroup.Marshal(b, m, deterministic)
-}
-func (dst *Message_RequiredGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_RequiredGroup.Merge(dst, src)
-}
-func (m *Message_RequiredGroup) XXX_Size() int {
-	return xxx_messageInfo_Message_RequiredGroup.Size(m)
-}
-func (m *Message_RequiredGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_RequiredGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_RequiredGroup proto.InternalMessageInfo
-
-func (m *Message_RequiredGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_RequiredGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_RequiredGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_RepeatedGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_RepeatedGroup) Reset()         { *m = Message_RepeatedGroup{} }
-func (m *Message_RepeatedGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_RepeatedGroup) ProtoMessage()    {}
-func (*Message_RepeatedGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_a365478be18be824, []int{1, 4}
-}
-func (m *Message_RepeatedGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_RepeatedGroup.Unmarshal(m, b)
-}
-func (m *Message_RepeatedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_RepeatedGroup.Marshal(b, m, deterministic)
-}
-func (dst *Message_RepeatedGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_RepeatedGroup.Merge(dst, src)
-}
-func (m *Message_RepeatedGroup) XXX_Size() int {
-	return xxx_messageInfo_Message_RepeatedGroup.Size(m)
-}
-func (m *Message_RepeatedGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_RepeatedGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_RepeatedGroup proto.InternalMessageInfo
-
-func (m *Message_RepeatedGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_RepeatedGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_RepeatedGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_OneofGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_OneofGroup) Reset()         { *m = Message_OneofGroup{} }
-func (m *Message_OneofGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_OneofGroup) ProtoMessage()    {}
-func (*Message_OneofGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_a365478be18be824, []int{1, 33}
-}
-func (m *Message_OneofGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_OneofGroup.Unmarshal(m, b)
-}
-func (m *Message_OneofGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_OneofGroup.Marshal(b, m, deterministic)
-}
-func (dst *Message_OneofGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_OneofGroup.Merge(dst, src)
-}
-func (m *Message_OneofGroup) XXX_Size() int {
-	return xxx_messageInfo_Message_OneofGroup.Size(m)
-}
-func (m *Message_OneofGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_OneofGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_OneofGroup proto.InternalMessageInfo
-
-func (m *Message_OneofGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_OneofGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_OneofGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_ExtensionOptionalGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_ExtensionOptionalGroup) Reset()         { *m = Message_ExtensionOptionalGroup{} }
-func (m *Message_ExtensionOptionalGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_ExtensionOptionalGroup) ProtoMessage()    {}
-func (*Message_ExtensionOptionalGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_a365478be18be824, []int{1, 34}
-}
-func (m *Message_ExtensionOptionalGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_ExtensionOptionalGroup.Unmarshal(m, b)
-}
-func (m *Message_ExtensionOptionalGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_ExtensionOptionalGroup.Marshal(b, m, deterministic)
-}
-func (dst *Message_ExtensionOptionalGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_ExtensionOptionalGroup.Merge(dst, src)
-}
-func (m *Message_ExtensionOptionalGroup) XXX_Size() int {
-	return xxx_messageInfo_Message_ExtensionOptionalGroup.Size(m)
-}
-func (m *Message_ExtensionOptionalGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_ExtensionOptionalGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_ExtensionOptionalGroup proto.InternalMessageInfo
-
-func (m *Message_ExtensionOptionalGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_ExtensionOptionalGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_ExtensionOptionalGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_ExtensionRepeatedGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_ExtensionRepeatedGroup) Reset()         { *m = Message_ExtensionRepeatedGroup{} }
-func (m *Message_ExtensionRepeatedGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_ExtensionRepeatedGroup) ProtoMessage()    {}
-func (*Message_ExtensionRepeatedGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_a365478be18be824, []int{1, 35}
-}
-func (m *Message_ExtensionRepeatedGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_ExtensionRepeatedGroup.Unmarshal(m, b)
-}
-func (m *Message_ExtensionRepeatedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_ExtensionRepeatedGroup.Marshal(b, m, deterministic)
-}
-func (dst *Message_ExtensionRepeatedGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_ExtensionRepeatedGroup.Merge(dst, src)
-}
-func (m *Message_ExtensionRepeatedGroup) XXX_Size() int {
-	return xxx_messageInfo_Message_ExtensionRepeatedGroup.Size(m)
-}
-func (m *Message_ExtensionRepeatedGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_ExtensionRepeatedGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_ExtensionRepeatedGroup proto.InternalMessageInfo
-
-func (m *Message_ExtensionRepeatedGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_ExtensionRepeatedGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_ExtensionRepeatedGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func init() {
-	proto.RegisterType((*SiblingMessage)(nil), "google.golang.org.proto2_20180430.SiblingMessage")
-	proto.RegisterType((*Message)(nil), "google.golang.org.proto2_20180430.Message")
-	proto.RegisterMapType((map[bool]bool)(nil), "google.golang.org.proto2_20180430.Message.MapBoolBoolEntry")
-	proto.RegisterMapType((map[bool][]byte)(nil), "google.golang.org.proto2_20180430.Message.MapBoolBytesEntry")
-	proto.RegisterMapType((map[bool]Message_ChildEnum)(nil), "google.golang.org.proto2_20180430.Message.MapBoolChildEnumEntry")
-	proto.RegisterMapType((map[bool]*Message_ChildMessage)(nil), "google.golang.org.proto2_20180430.Message.MapBoolChildMessageEntry")
-	proto.RegisterMapType((map[bool]float64)(nil), "google.golang.org.proto2_20180430.Message.MapBoolDoubleEntry")
-	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto2_20180430.Message.MapBoolFixed32Entry")
-	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto2_20180430.Message.MapBoolFixed64Entry")
-	proto.RegisterMapType((map[bool]float32)(nil), "google.golang.org.proto2_20180430.Message.MapBoolFloatEntry")
-	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto2_20180430.Message.MapBoolInt32Entry")
-	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto2_20180430.Message.MapBoolInt64Entry")
-	proto.RegisterMapType((map[bool]*Message_NamedGroup)(nil), "google.golang.org.proto2_20180430.Message.MapBoolNamedGroupEntry")
-	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto2_20180430.Message.MapBoolSfixed32Entry")
-	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto2_20180430.Message.MapBoolSfixed64Entry")
-	proto.RegisterMapType((map[bool]SiblingEnum)(nil), "google.golang.org.proto2_20180430.Message.MapBoolSiblingEnumEntry")
-	proto.RegisterMapType((map[bool]*SiblingMessage)(nil), "google.golang.org.proto2_20180430.Message.MapBoolSiblingMessageEntry")
-	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto2_20180430.Message.MapBoolSint32Entry")
-	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto2_20180430.Message.MapBoolSint64Entry")
-	proto.RegisterMapType((map[bool]string)(nil), "google.golang.org.proto2_20180430.Message.MapBoolStringEntry")
-	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto2_20180430.Message.MapBoolUint32Entry")
-	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto2_20180430.Message.MapBoolUint64Entry")
-	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto2_20180430.Message.MapFixed32BoolEntry")
-	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto2_20180430.Message.MapInt32BoolEntry")
-	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto2_20180430.Message.MapInt64BoolEntry")
-	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto2_20180430.Message.MapSint32BoolEntry")
-	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto2_20180430.Message.MapSint64BoolEntry")
-	proto.RegisterMapType((map[string]bool)(nil), "google.golang.org.proto2_20180430.Message.MapStringBoolEntry")
-	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto2_20180430.Message.MapUint32BoolEntry")
-	proto.RegisterMapType((map[uint64]bool)(nil), "google.golang.org.proto2_20180430.Message.MapUint64BoolEntry")
-	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto2_20180430.Message.ChildMessage")
-	proto.RegisterType((*Message_NamedGroup)(nil), "google.golang.org.proto2_20180430.Message.NamedGroup")
-	proto.RegisterType((*Message_OptionalGroup)(nil), "google.golang.org.proto2_20180430.Message.OptionalGroup")
-	proto.RegisterType((*Message_RequiredGroup)(nil), "google.golang.org.proto2_20180430.Message.RequiredGroup")
-	proto.RegisterType((*Message_RepeatedGroup)(nil), "google.golang.org.proto2_20180430.Message.RepeatedGroup")
-	proto.RegisterType((*Message_OneofGroup)(nil), "google.golang.org.proto2_20180430.Message.OneofGroup")
-	proto.RegisterType((*Message_ExtensionOptionalGroup)(nil), "google.golang.org.proto2_20180430.Message.ExtensionOptionalGroup")
-	proto.RegisterType((*Message_ExtensionRepeatedGroup)(nil), "google.golang.org.proto2_20180430.Message.ExtensionRepeatedGroup")
-	proto.RegisterEnum("google.golang.org.proto2_20180430.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
-	proto.RegisterEnum("google.golang.org.proto2_20180430.Message_ChildEnum", Message_ChildEnum_name, Message_ChildEnum_value)
-	proto.RegisterExtension(E_Message_ExtensionOptionalBool)
-	proto.RegisterExtension(E_Message_ExtensionOptionalInt32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSint32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalUint32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalInt64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSint64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalUint64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalFixed32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalFloat)
-	proto.RegisterExtension(E_Message_ExtensionOptionalFixed64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalDouble)
-	proto.RegisterExtension(E_Message_ExtensionOptionalString)
-	proto.RegisterExtension(E_Message_ExtensionOptionalBytes)
-	proto.RegisterExtension(E_Message_ExtensionOptionalChildEnum)
-	proto.RegisterExtension(E_Message_ExtensionOptionalChildMessage)
-	proto.RegisterExtension(E_Message_ExtensionOptionalNamedGroup)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingEnum)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingMessage)
-	proto.RegisterExtension(E_Message_Extensionoptionalgroup)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedBool)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedInt32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSint32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedUint32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedInt64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSint64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedUint64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedFloat)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedDouble)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedString)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedBytes)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedChildEnum)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSiblingEnum)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedBool)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedInt32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSint32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedUint32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedInt64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSint64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedUint64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedFloat)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedDouble)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedString)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedBytes)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedChildEnum)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedChildMessage)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedNamedGroup)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingEnum)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingMessage)
-	proto.RegisterExtension(E_Message_Extensionrepeatedgroup)
-}
-
-func init() {
-	proto.RegisterFile("proto2_20180430_b4deda09/test.proto", fileDescriptor_test_a365478be18be824)
-}
-
-var fileDescriptor_test_a365478be18be824 = []byte{
-	// 4468 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5c, 0x67, 0x70, 0x24, 0xc7,
-	0x75, 0xc6, 0xec, 0x62, 0x17, 0x87, 0x3e, 0x2c, 0xb0, 0x98, 0xbb, 0x03, 0xe6, 0x40, 0xd2, 0x5c,
-	0x9d, 0x64, 0x79, 0x4d, 0xf3, 0x70, 0xc0, 0xa0, 0xd1, 0xc7, 0x5b, 0x33, 0x08, 0x20, 0x8f, 0x5a,
-	0xca, 0xe2, 0x52, 0x35, 0xac, 0x73, 0xb9, 0x5c, 0x2c, 0xc3, 0xc0, 0x61, 0x81, 0x03, 0xb9, 0x01,
-	0x04, 0x76, 0x49, 0x9e, 0x25, 0x17, 0xcf, 0x72, 0xfc, 0x49, 0xe5, 0xb4, 0x92, 0x28, 0x66, 0x89,
-	0x51, 0x39, 0x31, 0x29, 0xd8, 0xa6, 0x72, 0x72, 0x90, 0x93, 0x9c, 0x93, 0x9c, 0x73, 0x0e, 0xd5,
-	0xfd, 0xba, 0xa7, 0xbb, 0x67, 0x7a, 0x16, 0xe8, 0x59, 0x15, 0x7f, 0xb0, 0x8a, 0xd7, 0xfb, 0xfa,
-	0x7d, 0xfd, 0xbe, 0xed, 0xf7, 0xde, 0x87, 0x9e, 0xe9, 0x45, 0x2f, 0xdd, 0xde, 0x69, 0x77, 0xda,
-	0xfe, 0x8a, 0x3f, 0x37, 0x7f, 0xc5, 0x1c, 0x5e, 0x98, 0x5b, 0x59, 0xc3, 0xeb, 0xf5, 0xf5, 0xd5,
-	0xb9, 0x53, 0x27, 0x3a, 0xf5, 0xdd, 0xce, 0x2c, 0xfb, 0xd4, 0x7d, 0xc9, 0x66, 0xbb, 0xbd, 0xd9,
-	0xa8, 0xcf, 0x6e, 0xb6, 0x1b, 0xab, 0xad, 0xcd, 0xd9, 0xf6, 0xce, 0xe6, 0x6c, 0x64, 0xda, 0xb1,
-	0xd7, 0xa1, 0xf1, 0x9b, 0xb7, 0xd6, 0x1a, 0x5b, 0xad, 0xcd, 0x1b, 0xeb, 0xbb, 0xbb, 0xab, 0x9b,
-	0x75, 0x77, 0x1c, 0x65, 0x36, 0xe6, 0x3d, 0xa7, 0xe4, 0x94, 0x47, 0x83, 0xcc, 0xc6, 0x3c, 0xfb,
-	0xb7, 0xef, 0x65, 0x4a, 0x19, 0xf6, 0x6f, 0x9f, 0xfd, 0x7b, 0xc1, 0xcb, 0x96, 0xb2, 0xec, 0xdf,
-	0x0b, 0x6e, 0x05, 0x65, 0x36, 0xb0, 0x37, 0x5c, 0x72, 0xca, 0x07, 0xfd, 0xcb, 0x66, 0xf7, 0x44,
-	0x9c, 0xe5, 0x38, 0x41, 0x66, 0x03, 0x1f, 0xfb, 0xce, 0xa3, 0x0e, 0x1a, 0x11, 0xc0, 0x67, 0x10,
-	0x6a, 0xad, 0x36, 0xeb, 0xeb, 0x9b, 0x3b, 0xed, 0xee, 0x36, 0x5b, 0x00, 0xf2, 0x17, 0xf7, 0xef,
-	0x70, 0xb6, 0x46, 0x27, 0xbf, 0x92, 0x4e, 0x0e, 0x14, 0x47, 0xee, 0x4b, 0x51, 0xa1, 0xbd, 0xdd,
-	0xd9, 0x6a, 0xb7, 0x56, 0x1b, 0x2b, 0x6b, 0xed, 0x76, 0xc3, 0x5b, 0x2f, 0x39, 0xe5, 0x03, 0xc1,
-	0x98, 0x18, 0x5c, 0x6e, 0xb7, 0x1b, 0xee, 0xf7, 0xa3, 0xf1, 0xd0, 0x68, 0xab, 0xd5, 0x59, 0xf0,
-	0xbd, 0x7a, 0xc9, 0x29, 0xe7, 0x82, 0x70, 0xea, 0x0d, 0x74, 0xd0, 0xfd, 0x01, 0x34, 0x11, 0x9a,
-	0xed, 0x82, 0xdd, 0x46, 0xc9, 0x29, 0x4f, 0x06, 0xe1, 0xec, 0x9b, 0xb7, 0x62, 0x86, 0x5d, 0x30,
-	0xdc, 0x2c, 0x39, 0xe5, 0x82, 0x34, 0x3c, 0x03, 0x86, 0x11, 0x60, 0x82, 0xbd, 0x73, 0x25, 0xa7,
-	0x9c, 0xd5, 0x80, 0x09, 0x8e, 0x01, 0x13, 0xec, 0x6d, 0x95, 0x9c, 0xb2, 0xab, 0x03, 0x47, 0x0c,
-	0xbb, 0x60, 0x78, 0x6b, 0xc9, 0x29, 0x0f, 0xeb, 0xc0, 0x04, 0xbb, 0x3f, 0x88, 0x8a, 0xa1, 0xe1,
-	0xc6, 0xd6, 0x5d, 0xf5, 0xf5, 0x05, 0xdf, 0xbb, 0xad, 0xe4, 0x94, 0x47, 0x82, 0xd0, 0xc1, 0xf5,
-	0x30, 0xec, 0xfe, 0x10, 0x9a, 0x94, 0xe0, 0xc2, 0xb6, 0x51, 0x72, 0xca, 0x13, 0x41, 0xe8, 0xe3,
-	0x66, 0x3e, 0xae, 0x05, 0xb4, 0xd1, 0x68, 0xaf, 0x76, 0xbc, 0x66, 0xc9, 0x29, 0x67, 0x64, 0x40,
-	0xd7, 0xd3, 0xc1, 0x38, 0x3c, 0xc1, 0x5e, 0xab, 0xe4, 0x94, 0xf3, 0x11, 0x78, 0x82, 0x0d, 0xf0,
-	0x04, 0x7b, 0xed, 0x92, 0x53, 0x2e, 0x46, 0xe1, 0x23, 0xf1, 0xaf, 0xb7, 0xbb, 0x6b, 0x8d, 0xba,
-	0xb7, 0x5d, 0x72, 0xca, 0x8e, 0x8c, 0xff, 0x3a, 0x36, 0xaa, 0x33, 0xda, 0xd9, 0xd9, 0x6a, 0x6d,
-	0x7a, 0xb7, 0xb3, 0x3d, 0x2f, 0x19, 0x65, 0xa3, 0x5a, 0x40, 0x6b, 0xe7, 0x3b, 0xf5, 0x5d, 0x6f,
-	0xa7, 0xe4, 0x94, 0xc7, 0x64, 0x40, 0xcb, 0x74, 0xd0, 0x5d, 0x47, 0x87, 0x42, 0xb3, 0xb3, 0xe7,
-	0xb6, 0x1a, 0xeb, 0x2b, 0xf5, 0x56, 0xb7, 0xe9, 0xed, 0x96, 0x9c, 0xf2, 0xb8, 0x8f, 0x2d, 0xb6,
-	0xf1, 0xb5, 0x74, 0xf2, 0xe9, 0x56, 0xb7, 0x19, 0x84, 0x61, 0x87, 0x43, 0x6e, 0x13, 0x4d, 0x45,
-	0x50, 0x9a, 0x30, 0xcd, 0xeb, 0xb0, 0x04, 0x3c, 0x69, 0x0b, 0x24, 0xb2, 0xf1, 0xb0, 0x86, 0x25,
-	0x52, 0x72, 0x13, 0x85, 0xe3, 0x2b, 0x2c, 0xa5, 0x56, 0x20, 0x39, 0xbb, 0x0c, 0x2c, 0x65, 0x72,
-	0xba, 0xc2, 0xa5, 0x1c, 0x73, 0xd7, 0xd0, 0x11, 0x65, 0x7f, 0xb3, 0x7a, 0x04, 0xfc, 0xdd, 0xc1,
-	0xf8, 0x9b, 0xdd, 0x07, 0x12, 0x2f, 0x63, 0x8c, 0xb9, 0x43, 0x32, 0x2b, 0xc2, 0x41, 0xf7, 0x36,
-	0xe4, 0xc5, 0x30, 0x04, 0x7b, 0x77, 0xb2, 0x80, 0xe6, 0xf7, 0x0f, 0x23, 0x78, 0x9b, 0x8a, 0x20,
-	0x09, 0xe6, 0x7e, 0x42, 0x56, 0x1d, 0xa0, 0xec, 0x2e, 0x56, 0xcf, 0xae, 0xb0, 0xa0, 0xec, 0x26,
-	0x3e, 0x1f, 0x58, 0xd3, 0xdd, 0xb9, 0x97, 0xa3, 0xf1, 0xf5, 0xfa, 0xc6, 0x6a, 0xb7, 0xd1, 0xa9,
-	0xaf, 0x43, 0x59, 0x7b, 0x81, 0x56, 0xcc, 0x03, 0x95, 0xe1, 0xce, 0x4e, 0xb7, 0x1e, 0x14, 0xc2,
-	0x0f, 0x59, 0x79, 0x9b, 0x43, 0x13, 0xd2, 0x1a, 0xca, 0xd1, 0x17, 0xa8, 0x79, 0xae, 0x92, 0x3f,
-	0x3e, 0xef, 0x2f, 0xe0, 0xc5, 0x40, 0x7a, 0x83, 0x4a, 0x37, 0x8f, 0x8a, 0x72, 0x06, 0x2f, 0x75,
-	0x5f, 0xa4, 0x53, 0x26, 0x2b, 0xb9, 0xe3, 0x0b, 0xfe, 0xdc, 0x5c, 0x20, 0x3d, 0xf2, 0x9a, 0x37,
-	0xa7, 0x4e, 0xe1, 0x45, 0xef, 0x4b, 0x74, 0x4a, 0xa1, 0x32, 0x1c, 0x99, 0xc1, 0x8b, 0x1f, 0x8e,
-	0x2c, 0x8b, 0x60, 0xef, 0xcb, 0x74, 0x42, 0xb6, 0x82, 0x60, 0x59, 0xe4, 0xe4, 0x15, 0xa7, 0xf4,
-	0xa5, 0x11, 0x1c, 0x5f, 0x1a, 0xc1, 0xde, 0x57, 0xe8, 0x34, 0xb7, 0x92, 0x3b, 0x4e, 0x70, 0x6c,
-	0x69, 0x04, 0xc7, 0x97, 0x46, 0xb0, 0xf7, 0x55, 0x3a, 0x65, 0xb8, 0x32, 0x1c, 0x99, 0xc1, 0xcb,
-	0x23, 0x46, 0x93, 0x72, 0x86, 0xa8, 0x79, 0x5f, 0xa3, 0x53, 0x46, 0x2a, 0x79, 0x1a, 0xcd, 0xdc,
-	0x5c, 0x20, 0x7d, 0x8a, 0x4a, 0x79, 0x12, 0xb9, 0xca, 0xd2, 0xc4, 0xb4, 0xaf, 0xd3, 0x69, 0x13,
-	0x95, 0x91, 0xe3, 0x7c, 0x9e, 0xf4, 0x1c, 0x56, 0xcd, 0x79, 0x95, 0x09, 0x28, 0x9b, 0xdf, 0xa0,
-	0xb3, 0x32, 0x95, 0x91, 0x85, 0xd9, 0x79, 0x3c, 0xbf, 0xa8, 0xd2, 0x00, 0x15, 0x34, 0xbe, 0x42,
-	0x82, 0xbd, 0x6f, 0xd2, 0x49, 0xf9, 0x4a, 0x9e, 0x06, 0x15, 0x5f, 0x21, 0xc1, 0xa6, 0x15, 0x12,
-	0xec, 0x7d, 0x8b, 0x4e, 0x2b, 0x56, 0x46, 0x8e, 0xf3, 0x79, 0xd1, 0x15, 0x12, 0xec, 0x9e, 0x52,
-	0x29, 0xe4, 0x95, 0xf5, 0xd7, 0xe8, 0x34, 0xa7, 0x52, 0xe0, 0x4b, 0xf4, 0xc9, 0xe2, 0xc2, 0xe2,
-	0x29, 0x85, 0x4b, 0x5e, 0x6a, 0xaf, 0xd4, 0xbe, 0x30, 0xa8, 0xb5, 0xbf, 0xce, 0x04, 0x46, 0xa5,
-	0x78, 0xae, 0xde, 0x68, 0xb4, 0x2f, 0x2f, 0x1d, 0xbb, 0xb3, 0xbd, 0xd3, 0x58, 0x7f, 0xc9, 0x31,
-	0xa4, 0x7e, 0x77, 0x50, 0x7f, 0x97, 0x55, 0x6a, 0xa0, 0x00, 0xff, 0x06, 0x9d, 0x3c, 0x56, 0xf1,
-	0xd6, 0xeb, 0xab, 0xeb, 0xb7, 0x2c, 0x2c, 0x90, 0x5b, 0xfc, 0xc5, 0xc5, 0x5b, 0xfc, 0x93, 0xe4,
-	0x96, 0x85, 0xc5, 0x93, 0x6b, 0xf5, 0xfa, 0x86, 0xc2, 0x15, 0x14, 0xe7, 0x16, 0x3a, 0x2c, 0x7d,
-	0x28, 0xd5, 0xf9, 0x37, 0x9d, 0xf4, 0xe5, 0xb9, 0x92, 0x5b, 0x7a, 0xf5, 0x6b, 0xaa, 0x4b, 0x81,
-	0xe4, 0x53, 0x96, 0xe9, 0x06, 0x9a, 0x52, 0xb7, 0xa8, 0x52, 0xcf, 0xbe, 0xed, 0xa4, 0x29, 0x68,
-	0x02, 0xeb, 0xb0, 0xb2, 0xb1, 0x65, 0x61, 0x7b, 0x19, 0x2a, 0xec, 0xd4, 0x6f, 0xef, 0x6e, 0xed,
-	0x88, 0x52, 0xf0, 0x18, 0x55, 0x6b, 0x07, 0x82, 0x31, 0x31, 0xca, 0x6a, 0xc0, 0xcb, 0xd1, 0x78,
-	0x68, 0x05, 0xc9, 0xf9, 0x38, 0x35, 0xcb, 0x05, 0xe1, 0x64, 0xc8, 0xfc, 0x32, 0x9a, 0x08, 0xed,
-	0x78, 0xe2, 0x3f, 0x41, 0x0d, 0x27, 0x83, 0x70, 0x3e, 0x4f, 0x78, 0xd5, 0x92, 0xe7, 0xfb, 0x93,
-	0xd4, 0xb2, 0x20, 0x2d, 0x79, 0xa2, 0x47, 0xb0, 0x09, 0xf6, 0x9e, 0xa2, 0x86, 0x59, 0x0d, 0x9b,
-	0xe0, 0x18, 0x36, 0xc1, 0xde, 0x07, 0xa9, 0xa1, 0xab, 0x63, 0x47, 0x2c, 0x79, 0x42, 0x7f, 0x88,
-	0x5a, 0x0e, 0xeb, 0xd8, 0x04, 0xbb, 0x97, 0xa1, 0x62, 0x68, 0x29, 0x32, 0xf2, 0xc3, 0xd4, 0x74,
-	0x24, 0x08, 0x5d, 0x88, 0xfc, 0xbd, 0x1c, 0x4d, 0x4a, 0x7c, 0x61, 0xfc, 0x11, 0x6a, 0x3c, 0x11,
-	0x84, 0x5e, 0xc2, 0xa4, 0x55, 0xa3, 0x82, 0x9c, 0xfd, 0x28, 0x35, 0xcd, 0xc8, 0xa8, 0x20, 0x53,
-	0x63, 0x2b, 0x20, 0xd8, 0xfb, 0x18, 0xb5, 0xcc, 0x47, 0x56, 0x40, 0xb0, 0x61, 0x05, 0x04, 0x7b,
-	0x1f, 0xa7, 0xc6, 0xc5, 0xe8, 0x0a, 0x22, 0x2c, 0xf0, 0x9c, 0xfc, 0x04, 0xb5, 0x75, 0x24, 0x0b,
-	0x3c, 0x07, 0x35, 0x66, 0x21, 0x05, 0x3f, 0x09, 0x9a, 0x5e, 0x32, 0x0b, 0xf9, 0xa6, 0x46, 0x05,
-	0xe9, 0xf6, 0x29, 0x6a, 0x38, 0x26, 0xa3, 0x82, 0x9c, 0xaa, 0xa3, 0x43, 0xa1, 0x9d, 0x92, 0x52,
-	0x9f, 0xa6, 0xc6, 0xa9, 0x15, 0x8f, 0xf0, 0x28, 0x53, 0xa9, 0x85, 0xa6, 0x22, 0x30, 0xa2, 0x67,
-	0x3f, 0x4d, 0x91, 0x06, 0x91, 0x3c, 0x1a, 0x98, 0x68, 0xdc, 0xe7, 0x50, 0x38, 0xae, 0x49, 0x9e,
-	0x67, 0x00, 0x2d, 0xad, 0xe6, 0x11, 0x3e, 0x15, 0xcd, 0x73, 0x16, 0x1d, 0x51, 0x36, 0xbb, 0x52,
-	0x23, 0x9e, 0x05, 0x0a, 0xad, 0x45, 0x8f, 0x4c, 0x11, 0x59, 0x1b, 0x1a, 0xc8, 0x8b, 0x81, 0x08,
-	0x02, 0x9f, 0x83, 0x90, 0xd2, 0xa8, 0x9e, 0x08, 0x94, 0x20, 0x6f, 0x45, 0x56, 0x22, 0x60, 0xed,
-	0x79, 0x0a, 0x61, 0x27, 0x7b, 0x02, 0xee, 0x80, 0xcb, 0x1e, 0xcd, 0x9f, 0x7b, 0x15, 0x9a, 0x96,
-	0x1b, 0x5e, 0xd7, 0x3f, 0xf7, 0x64, 0x69, 0xd1, 0xe3, 0xfa, 0x27, 0x64, 0xf6, 0x3a, 0x4d, 0x07,
-	0x2d, 0x29, 0x6c, 0x44, 0x05, 0xd1, 0x1b, 0xe8, 0x7c, 0x29, 0x88, 0xa6, 0x62, 0x1e, 0xa0, 0x3c,
-	0x2e, 0xa3, 0xa3, 0x06, 0x17, 0xbc, 0x50, 0xbe, 0x91, 0xfa, 0x08, 0x15, 0xd2, 0x74, 0xcc, 0x05,
-	0x2f, 0x9c, 0x4b, 0x46, 0x1f, 0xbc, 0x84, 0xbe, 0x89, 0xfa, 0x10, 0x92, 0x29, 0xee, 0x82, 0x57,
-	0xd4, 0xd3, 0x49, 0x91, 0x10, 0xec, 0xbd, 0x99, 0x7a, 0xd0, 0x35, 0x94, 0x31, 0x1a, 0x82, 0xfb,
-	0x44, 0x43, 0xb0, 0xf7, 0x16, 0xea, 0x27, 0x14, 0x55, 0xe6, 0x68, 0x08, 0xee, 0x13, 0x0d, 0xc1,
-	0xde, 0x5b, 0xa9, 0x0f, 0xa1, 0xb2, 0xcc, 0xd1, 0x10, 0xec, 0x9e, 0x46, 0x33, 0x06, 0x17, 0xa2,
-	0x00, 0xbf, 0x8d, 0xfa, 0x90, 0xb2, 0xcb, 0x8b, 0x79, 0x11, 0xe5, 0xbb, 0x8a, 0x2e, 0x32, 0x45,
-	0x23, 0xfc, 0xbc, 0x9d, 0xfa, 0x51, 0x74, 0xd8, 0xd1, 0x78, 0x44, 0xa2, 0xb4, 0x2f, 0x1b, 0xe9,
-	0x85, 0x22, 0xff, 0x0e, 0xea, 0x46, 0x11, 0x66, 0x71, 0x6e, 0xa1, 0xec, 0xf7, 0x09, 0x8a, 0x60,
-	0xef, 0x9d, 0xd4, 0x8b, 0x54, 0x6a, 0x09, 0x41, 0x11, 0xdc, 0x37, 0x28, 0x82, 0xbd, 0x77, 0x51,
-	0x3f, 0x8a, 0x74, 0x4b, 0x0a, 0x8a, 0x60, 0xf7, 0x55, 0xc6, 0x2f, 0x8a, 0xf7, 0x8d, 0x1e, 0xf5,
-	0x13, 0xd3, 0x72, 0xf1, 0x6f, 0x8c, 0xf7, 0x93, 0x1b, 0xcd, 0x1b, 0x07, 0x3a, 0xcb, 0xbb, 0xa9,
-	0x2f, 0x93, 0xb8, 0x33, 0xec, 0x21, 0x68, 0x3a, 0x37, 0x1b, 0xf9, 0x86, 0xf6, 0xf3, 0x1e, 0xea,
-	0xad, 0x9f, 0xda, 0x8b, 0x7f, 0x01, 0xd0, 0xa1, 0xee, 0x46, 0x97, 0x18, 0x9c, 0x2a, 0xbd, 0xea,
-	0xbd, 0xd9, 0xf4, 0xbd, 0x4a, 0x48, 0xb2, 0x99, 0x18, 0xb8, 0xec, 0x5d, 0x3f, 0x8d, 0x2e, 0x35,
-	0x66, 0x97, 0x52, 0xeb, 0xef, 0xcd, 0xa6, 0xa9, 0xf5, 0x02, 0xfc, 0x62, 0x43, 0x4e, 0x46, 0x74,
-	0xe1, 0x76, 0x7d, 0x35, 0x2c, 0x91, 0xff, 0x9c, 0x2d, 0x65, 0x41, 0x17, 0xc2, 0xa8, 0xd4, 0x85,
-	0xdc, 0x0a, 0x2a, 0xd0, 0xbf, 0x50, 0x33, 0xa6, 0x0b, 0x61, 0x58, 0xd1, 0x85, 0xdc, 0x8e, 0x97,
-	0xbb, 0x7f, 0xa5, 0x86, 0x4c, 0x17, 0xc2, 0xb8, 0xaa, 0x0b, 0xb9, 0x25, 0x2f, 0x6a, 0xff, 0x46,
-	0x2d, 0x0b, 0xd2, 0x52, 0xd5, 0x85, 0x12, 0x9b, 0x60, 0xef, 0xdf, 0xa9, 0x61, 0x56, 0xc3, 0x16,
-	0x3a, 0x47, 0xc1, 0x26, 0xd8, 0xfb, 0x0f, 0x6a, 0xe8, 0xea, 0xd8, 0x11, 0x4b, 0x5e, 0x82, 0xfe,
-	0x93, 0x5a, 0x0e, 0xeb, 0xd8, 0x42, 0x17, 0x72, 0x4b, 0x51, 0x21, 0xfe, 0x8b, 0x9a, 0x32, 0x5d,
-	0x08, 0x1f, 0x68, 0xba, 0x50, 0xe0, 0x0b, 0xe3, 0xff, 0xa6, 0xc6, 0x4c, 0x17, 0xf2, 0x15, 0x68,
-	0xba, 0x50, 0x78, 0x66, 0x25, 0xe3, 0x7f, 0xa8, 0x69, 0x46, 0x46, 0xa5, 0xe8, 0x42, 0x75, 0x05,
-	0x04, 0x7b, 0xff, 0x4b, 0x2d, 0xf3, 0x91, 0x15, 0x08, 0x5d, 0xa8, 0xad, 0x80, 0x60, 0xef, 0xff,
-	0xa8, 0x71, 0x31, 0xba, 0x82, 0x08, 0x0b, 0x3c, 0xbf, 0x2f, 0x0c, 0x97, 0xb2, 0xa0, 0x0b, 0x61,
-	0x5c, 0xd5, 0x85, 0xc2, 0x2f, 0x64, 0xef, 0xcf, 0x0c, 0xb3, 0xb3, 0x5d, 0xc9, 0xac, 0xa2, 0x0b,
-	0xc5, 0x6e, 0x62, 0x89, 0xf9, 0x7a, 0x6a, 0x38, 0x26, 0xa3, 0x52, 0x74, 0x21, 0xb7, 0x53, 0x72,
-	0xed, 0x67, 0xa9, 0xf1, 0x00, 0xba, 0x10, 0x3c, 0x46, 0x74, 0xa1, 0x06, 0x23, 0x64, 0xcd, 0xcf,
-	0x51, 0xa4, 0xc1, 0x74, 0xa1, 0x02, 0xa6, 0xe9, 0x42, 0x8e, 0xa7, 0xea, 0xc2, 0x9f, 0x07, 0xb4,
-	0xf4, 0xba, 0x10, 0x7c, 0x46, 0x75, 0x61, 0xb8, 0xd9, 0x95, 0x5a, 0xf1, 0x0b, 0x40, 0x61, 0x0a,
-	0x5d, 0x28, 0x52, 0x24, 0xa2, 0x0b, 0x23, 0x20, 0x82, 0xc0, 0x5f, 0x84, 0x90, 0xd2, 0xe9, 0x42,
-	0x0d, 0x4a, 0xd3, 0x85, 0xf0, 0x09, 0xb0, 0xf6, 0x4b, 0x14, 0xc2, 0x56, 0x17, 0x82, 0x83, 0x50,
-	0x17, 0x2a, 0xfe, 0xdc, 0x9f, 0x44, 0x85, 0xe6, 0xea, 0x36, 0xab, 0x72, 0x50, 0xea, 0xbe, 0x0d,
-	0x31, 0xfc, 0xb0, 0x05, 0xc0, 0x8d, 0xab, 0xdb, 0xb4, 0x20, 0xd2, 0xff, 0x4e, 0xb7, 0x3a, 0x3b,
-	0xe7, 0x83, 0x83, 0x4d, 0x39, 0xe2, 0x9e, 0x45, 0xe3, 0x21, 0x02, 0xd4, 0xb4, 0xdf, 0x02, 0x88,
-	0x2b, 0xed, 0x21, 0x58, 0x41, 0x05, 0x8c, 0xb1, 0xa6, 0x32, 0xe4, 0x6e, 0xa0, 0x89, 0x10, 0x84,
-	0xd7, 0xd8, 0xdf, 0x06, 0x94, 0xab, 0xec, 0x51, 0xa0, 0x1a, 0x03, 0x4c, 0xa1, 0xa9, 0x8e, 0x69,
-	0x38, 0xbc, 0x42, 0xff, 0x4e, 0x6a, 0x9c, 0x33, 0x06, 0x1c, 0x5e, 0xdf, 0x23, 0xa4, 0x11, 0xec,
-	0xfd, 0xee, 0x20, 0xa4, 0x11, 0x1c, 0x23, 0x8d, 0xe0, 0x18, 0x69, 0x04, 0x7b, 0xbf, 0x37, 0x10,
-	0x69, 0x02, 0x46, 0x25, 0x2d, 0x82, 0xc3, 0x5b, 0xcb, 0x77, 0x06, 0x22, 0x2d, 0x8a, 0xc3, 0x1b,
-	0xd3, 0x16, 0x2a, 0x86, 0x38, 0xa2, 0xd7, 0xfc, 0x3e, 0x00, 0x5d, 0x6d, 0x0f, 0xc4, 0x5b, 0x18,
-	0x20, 0x8d, 0x37, 0xb5, 0x41, 0xb7, 0x81, 0x26, 0x25, 0x75, 0x02, 0xeb, 0x0f, 0x00, 0xeb, 0x9a,
-	0x14, 0xe4, 0x6d, 0xa8, 0x60, 0x13, 0x4d, 0x7d, 0x54, 0xdb, 0x0d, 0xd0, 0x17, 0xff, 0x30, 0xf5,
-	0x6e, 0x60, 0x1d, 0x54, 0xdf, 0x0d, 0xd0, 0x54, 0x63, 0xec, 0x11, 0xec, 0xfd, 0xd1, 0x60, 0xec,
-	0x89, 0xef, 0x49, 0x63, 0x8f, 0x60, 0x03, 0x7b, 0x04, 0x7b, 0x7f, 0x3c, 0x20, 0x7b, 0x02, 0x4c,
-	0x67, 0x2f, 0xb2, 0xfd, 0x78, 0x4f, 0xff, 0x93, 0xd4, 0xdb, 0x0f, 0xba, 0xbf, 0xbe, 0xfd, 0xb8,
-	0x22, 0xd0, 0xd2, 0x09, 0x14, 0xc1, 0x9f, 0xa6, 0x4f, 0x27, 0xe6, 0x20, 0x92, 0x4e, 0xa0, 0x27,
-	0xd4, 0xdd, 0x00, 0x7a, 0xe2, 0xcf, 0x52, 0xef, 0x06, 0xa6, 0x3c, 0xf4, 0xdd, 0x00, 0x62, 0x64,
-	0x1b, 0x1d, 0x0a, 0x41, 0x14, 0x31, 0xf2, 0xe7, 0x80, 0xf4, 0x0a, 0x7b, 0xa4, 0x50, 0x80, 0x00,
-	0x5a, 0xb1, 0x19, 0x19, 0x76, 0xcf, 0xa3, 0xa9, 0x08, 0xa2, 0x68, 0xab, 0x7f, 0x01, 0xa0, 0xd7,
-	0xa6, 0x04, 0xe5, 0x63, 0x80, 0x7b, 0xa8, 0x19, 0xff, 0xc4, 0xdd, 0x45, 0x87, 0x43, 0x68, 0x55,
-	0xa2, 0xfc, 0x25, 0x00, 0x2f, 0xd9, 0x03, 0x4b, 0x55, 0x02, 0xb0, 0x93, 0xcd, 0xe8, 0xb8, 0x7b,
-	0x07, 0x3a, 0xa2, 0x54, 0x5f, 0x45, 0xad, 0x7c, 0x17, 0x50, 0x97, 0xd3, 0xd4, 0xe0, 0x50, 0xa7,
-	0x00, 0xac, 0xdb, 0x8c, 0x7d, 0xe0, 0xde, 0x8d, 0xbc, 0x18, 0xae, 0x60, 0xfa, 0xaf, 0x00, 0xfa,
-	0x74, 0x6a, 0x68, 0x8d, 0xeb, 0x23, 0x4d, 0xd3, 0x67, 0x62, 0xff, 0xb2, 0x46, 0x07, 0x9a, 0xe3,
-	0xaf, 0x53, 0xed, 0x5f, 0xd6, 0xf9, 0xa5, 0xe8, 0xa0, 0xfb, 0x37, 0x1c, 0x12, 0xc9, 0xb8, 0xab,
-	0xa0, 0xfc, 0x4d, 0xaa, 0x64, 0x84, 0xc6, 0x2f, 0x61, 0x68, 0x32, 0xca, 0x31, 0x81, 0xd3, 0x55,
-	0x70, 0xfe, 0x36, 0x15, 0xce, 0x19, 0x03, 0x8e, 0x1c, 0x53, 0x48, 0x23, 0x18, 0x60, 0xfe, 0x2e,
-	0x2d, 0x69, 0x04, 0xc7, 0x48, 0x83, 0x21, 0x95, 0x34, 0x81, 0xf2, 0xf7, 0xa9, 0x49, 0x53, 0x61,
-	0x04, 0x69, 0x3a, 0x4e, 0x57, 0xc1, 0xf9, 0x87, 0xd4, 0xa4, 0x45, 0x71, 0xe4, 0x98, 0x68, 0x69,
-	0xbc, 0x8d, 0x02, 0xd0, 0x3f, 0xa6, 0x6a, 0x69, 0xbc, 0xef, 0x4b, 0x24, 0xfa, 0x6d, 0x28, 0x83,
-	0x21, 0x75, 0xac, 0x44, 0x03, 0xd2, 0x3f, 0xa5, 0xa3, 0x8e, 0x79, 0x88, 0x50, 0x17, 0x8e, 0xb9,
-	0x25, 0x84, 0xda, 0xad, 0x7a, 0x7b, 0x03, 0x20, 0x9e, 0xce, 0x95, 0x9c, 0xf2, 0x81, 0xea, 0x50,
-	0x30, 0xca, 0x06, 0x99, 0xc5, 0x31, 0x74, 0x10, 0x2c, 0x40, 0x9e, 0x3e, 0x43, 0x4d, 0x72, 0xd5,
-	0xa1, 0x00, 0xe6, 0x81, 0x5c, 0x7e, 0x19, 0x1a, 0x03, 0x1b, 0xae, 0x95, 0x9f, 0xa5, 0x46, 0x93,
-	0xd5, 0xa1, 0x00, 0xa6, 0x72, 0xb1, 0x1b, 0x5a, 0x71, 0xa5, 0xfb, 0x1c, 0xb5, 0x2a, 0x84, 0x56,
-	0x5c, 0xaa, 0xaa, 0x78, 0x04, 0x7b, 0xcf, 0x53, 0xa3, 0xac, 0x8a, 0x47, 0xb0, 0x8e, 0x47, 0xb0,
-	0xf7, 0x19, 0x6a, 0xe4, 0x6a, 0x78, 0xaa, 0x15, 0x17, 0x89, 0x9f, 0xa5, 0x56, 0xc3, 0x1a, 0x1e,
-	0xc1, 0xee, 0xcb, 0x51, 0x01, 0xac, 0x84, 0xec, 0xfa, 0x1c, 0x35, 0x1b, 0xa9, 0x0e, 0x05, 0x30,
-	0x5b, 0x48, 0xb4, 0x32, 0x1a, 0xe7, 0x98, 0xc2, 0xf0, 0xf3, 0xd4, 0x70, 0xa2, 0x3a, 0x14, 0x80,
-	0x83, 0x50, 0x5e, 0x85, 0x11, 0x80, 0xb6, 0xfa, 0x65, 0x6a, 0x96, 0x09, 0x23, 0x00, 0x75, 0xa4,
-	0xa3, 0x12, 0xec, 0xfd, 0x0a, 0xb5, 0xca, 0xeb, 0xa8, 0xec, 0x00, 0x41, 0x43, 0x25, 0xd8, 0xfb,
-	0x55, 0x6a, 0x58, 0x8c, 0xa0, 0xaa, 0xd1, 0x72, 0x4d, 0xf2, 0x02, 0xb5, 0x73, 0xc2, 0x68, 0xb9,
-	0xa8, 0x90, 0xcc, 0x81, 0xa2, 0xf8, 0x02, 0xb5, 0x1a, 0x95, 0xcc, 0x81, 0x24, 0x08, 0x23, 0x00,
-	0x3d, 0xf0, 0x45, 0x6a, 0x34, 0x16, 0x46, 0x00, 0x1d, 0x7d, 0x15, 0x15, 0xc1, 0x46, 0x69, 0xe7,
-	0x5f, 0xca, 0xa5, 0x7f, 0x8c, 0x5b, 0x1d, 0x0a, 0x20, 0x54, 0xd9, 0xc2, 0x6f, 0x45, 0x87, 0x54,
-	0x08, 0xd1, 0x55, 0xbe, 0x9c, 0x1b, 0xe8, 0x15, 0x9b, 0xea, 0x50, 0x30, 0x29, 0x81, 0x44, 0x17,
-	0x59, 0x47, 0x30, 0xa8, 0x35, 0xec, 0xaf, 0xe4, 0x06, 0x78, 0xbf, 0xa6, 0x3a, 0x14, 0x4c, 0x30,
-	0x97, 0x4a, 0x93, 0x5e, 0x41, 0xae, 0xd8, 0xb8, 0x4a, 0x87, 0xfe, 0x6a, 0x2e, 0xcd, 0xb3, 0xe8,
-	0xea, 0x50, 0x50, 0xe4, 0xdb, 0x5d, 0x76, 0xe3, 0x73, 0xe8, 0x88, 0x0e, 0x20, 0x48, 0xfb, 0x5a,
-	0x2e, 0xe5, 0x9b, 0x35, 0xd5, 0xa1, 0xe0, 0x90, 0x0a, 0x23, 0x08, 0xfb, 0x31, 0x5e, 0x39, 0x80,
-	0xa9, 0xaf, 0xe7, 0xac, 0x5f, 0x13, 0xbc, 0x89, 0xce, 0x16, 0x4c, 0x29, 0xbe, 0x64, 0x6e, 0xc0,
-	0x1e, 0x9d, 0xf7, 0xbe, 0x21, 0x36, 0xe9, 0x98, 0xb2, 0x49, 0xe7, 0xa3, 0x76, 0xbe, 0xf7, 0x4d,
-	0x93, 0x9d, 0x1f, 0xb5, 0x5b, 0xf0, 0xbe, 0x65, 0xb2, 0x5b, 0x70, 0x4f, 0xa1, 0xc3, 0x3c, 0x83,
-	0xf4, 0x07, 0x5a, 0xf7, 0xe6, 0xe5, 0x0b, 0x3d, 0x55, 0x27, 0x80, 0x6f, 0x50, 0x7f, 0x9e, 0x75,
-	0x95, 0xa0, 0x3d, 0xfa, 0x30, 0xeb, 0x7d, 0x79, 0xf5, 0xed, 0x9e, 0xaa, 0xc3, 0xb9, 0x8c, 0x3c,
-	0xcb, 0xba, 0x1a, 0x4d, 0x45, 0xa7, 0xf3, 0x4a, 0x7a, 0x5f, 0x5e, 0x79, 0xd5, 0xa7, 0xea, 0x04,
-	0x87, 0xf5, 0xe9, 0xbc, 0xb2, 0x5e, 0x15, 0x9f, 0xcf, 0x6b, 0xec, 0xfd, 0x79, 0xf9, 0xde, 0x4f,
-	0x7c, 0xfa, 0x19, 0xf1, 0x18, 0xcc, 0xb4, 0x7a, 0x82, 0xbd, 0x07, 0xf2, 0xd1, 0x97, 0x80, 0x8c,
-	0x11, 0x10, 0x9c, 0x14, 0x01, 0xc1, 0xde, 0x83, 0x79, 0xe5, 0x8d, 0x20, 0x73, 0x04, 0x04, 0x27,
-	0x45, 0x40, 0xb0, 0xf7, 0x50, 0x5e, 0xbe, 0x1e, 0x64, 0x8e, 0x80, 0x3d, 0xfa, 0x9a, 0x8e, 0x4e,
-	0x17, 0x55, 0xfa, 0xe1, 0xbc, 0xfa, 0xae, 0x50, 0xd5, 0x09, 0x8e, 0xe8, 0x1e, 0x44, 0x7d, 0xbf,
-	0x0e, 0x79, 0xb1, 0x08, 0x84, 0x8f, 0x47, 0xf2, 0xda, 0x8b, 0x43, 0x55, 0x27, 0x98, 0x8a, 0x44,
-	0x21, 0x6a, 0xff, 0xd5, 0x71, 0x2a, 0xa1, 0x0b, 0xbc, 0x3f, 0xaf, 0xbd, 0x45, 0x14, 0xe7, 0x11,
-	0xfa, 0x42, 0x52, 0x20, 0x04, 0x7b, 0x1f, 0xc8, 0xab, 0xaf, 0x14, 0x25, 0x04, 0x42, 0x70, 0x72,
-	0x20, 0x04, 0x7b, 0x8f, 0xe6, 0xb5, 0xf7, 0x8b, 0x92, 0x02, 0x21, 0xd8, 0xbd, 0x3e, 0xfe, 0x85,
-	0xf0, 0xc6, 0xf2, 0x58, 0xde, 0xf0, 0xb2, 0x51, 0xfc, 0x9b, 0xe1, 0x0d, 0xe7, 0x06, 0xc3, 0xc6,
-	0x80, 0xd6, 0xf3, 0x78, 0xde, 0xfc, 0xe6, 0x91, 0x61, 0x8f, 0x40, 0x57, 0xba, 0x29, 0xce, 0x2d,
-	0xf4, 0xa7, 0x27, 0xf2, 0xfd, 0x5f, 0x43, 0x8a, 0x93, 0x0d, 0x2d, 0xec, 0xb5, 0x68, 0x26, 0xea,
-	0x50, 0x69, 0x66, 0x4f, 0xe6, 0x07, 0x7e, 0x27, 0xa9, 0xea, 0x04, 0xd3, 0x3a, 0xb0, 0xfa, 0xf7,
-	0xe9, 0xc5, 0xf1, 0x8c, 0x51, 0x9a, 0xc2, 0x53, 0xf9, 0x01, 0x5e, 0x50, 0xaa, 0x3a, 0xc1, 0xd1,
-	0x68, 0x9e, 0x85, 0x36, 0x33, 0x3f, 0x85, 0xc6, 0xb4, 0xde, 0xf7, 0x22, 0xbe, 0x69, 0x3e, 0x73,
-	0x17, 0x42, 0x4a, 0x3f, 0x7c, 0x31, 0x91, 0xaf, 0x41, 0x05, 0xed, 0x4d, 0x4e, 0x5b, 0x70, 0xea,
-	0x40, 0x7b, 0x27, 0x22, 0x9d, 0x03, 0xe5, 0xf0, 0xdc, 0xda, 0xc1, 0xd5, 0xa8, 0x18, 0x3d, 0x1c,
-	0x77, 0x8b, 0x28, 0x7b, 0x5b, 0xfd, 0x3c, 0x73, 0x72, 0x20, 0xa0, 0xff, 0xeb, 0x1e, 0x46, 0xb9,
-	0x3b, 0x56, 0x1b, 0xdd, 0xba, 0x97, 0x61, 0x63, 0xf0, 0x8f, 0x4a, 0xe6, 0x0a, 0x67, 0xe6, 0x1a,
-	0x34, 0x19, 0x3b, 0xf9, 0xde, 0xcb, 0x41, 0x4e, 0x75, 0xf0, 0x0a, 0xe4, 0xc6, 0x0f, 0xb5, 0xf7,
-	0xf2, 0x30, 0x69, 0xf6, 0x70, 0x66, 0xff, 0x1e, 0x0a, 0x89, 0x41, 0xf0, 0x53, 0xba, 0xbd, 0x1c,
-	0x64, 0x93, 0x83, 0xd8, 0xa7, 0x07, 0x37, 0x39, 0x88, 0x7d, 0x7a, 0x18, 0x56, 0x3d, 0x2c, 0xa1,
-	0x43, 0x86, 0x73, 0xe1, 0xbd, 0x5c, 0x8c, 0xa8, 0x2e, 0x96, 0xd1, 0x61, 0xd3, 0x71, 0xef, 0x5e,
-	0x3e, 0x26, 0xcc, 0x5c, 0xca, 0x73, 0xdc, 0xbd, 0x1c, 0x64, 0xfa, 0xc4, 0xb1, 0x4f, 0x2a, 0xf2,
-	0xfd, 0xe2, 0xd8, 0xa7, 0x8f, 0xa2, 0xf9, 0x0b, 0x51, 0x0e, 0x54, 0xf7, 0xf2, 0xe0, 0x24, 0x6c,
-	0x0a, 0x79, 0x54, 0xba, 0x97, 0x87, 0x51, 0x33, 0x97, 0xf2, 0x14, 0x74, 0x2f, 0x07, 0x63, 0xaa,
-	0x83, 0xf3, 0xe8, 0x88, 0xf1, 0x70, 0xd3, 0xe0, 0xe4, 0x55, 0xaa, 0x93, 0xb4, 0x0f, 0x73, 0x15,
-	0xe8, 0xbb, 0x91, 0x97, 0x74, 0xc4, 0x69, 0x40, 0xbf, 0x51, 0x45, 0x1f, 0xe0, 0x01, 0xaf, 0xb2,
-	0x80, 0xd7, 0xa2, 0x29, 0xf3, 0x51, 0xa7, 0x01, 0xfe, 0x47, 0x74, 0xf8, 0x94, 0x4f, 0x7c, 0x15,
-	0xf0, 0x2e, 0x9a, 0x4e, 0x38, 0xf1, 0x34, 0xa0, 0x5f, 0xa7, 0x53, 0x6f, 0xfb, 0x10, 0x58, 0x8b,
-	0x79, 0x26, 0xf9, 0xb4, 0xd3, 0x80, 0xfc, 0x4a, 0x3d, 0xee, 0x14, 0x8f, 0x85, 0x63, 0xbb, 0x55,
-	0x3f, 0xf3, 0x54, 0x31, 0x73, 0x7b, 0xf5, 0x12, 0x48, 0x98, 0xc8, 0x71, 0xa6, 0xea, 0x61, 0x72,
-	0x7f, 0x1e, 0xce, 0x24, 0x7b, 0x28, 0xec, 0xaf, 0x9f, 0xe9, 0x67, 0x90, 0xaa, 0x83, 0xec, 0xfe,
-	0x83, 0x48, 0xf0, 0xe0, 0xee, 0x3f, 0x88, 0x04, 0x0f, 0xc3, 0x7b, 0x79, 0x80, 0x12, 0x1a, 0x3d,
-	0x11, 0x54, 0x5d, 0x8c, 0xec, 0x33, 0x0c, 0xfd, 0xa8, 0x4f, 0xf5, 0x30, 0xba, 0x97, 0x87, 0x2b,
-	0x11, 0x92, 0x7f, 0x8f, 0x5b, 0xeb, 0x92, 0x2a, 0x9a, 0x3a, 0x7d, 0x57, 0xa7, 0xde, 0xda, 0xdd,
-	0x6a, 0xb7, 0x06, 0xd3, 0x58, 0xaa, 0xa7, 0x81, 0xb4, 0xd2, 0xb1, 0x59, 0x34, 0x2a, 0xc5, 0xf6,
-	0x28, 0x02, 0x5d, 0x5c, 0x1c, 0xa2, 0xff, 0xbb, 0x1c, 0x2c, 0xfd, 0xe8, 0x4d, 0x45, 0xc7, 0x3d,
-	0x88, 0x46, 0xae, 0xad, 0x2e, 0x05, 0xaf, 0xbe, 0xe1, 0x74, 0x31, 0x73, 0xd9, 0xe8, 0x81, 0x7b,
-	0x6a, 0xc5, 0x0b, 0x17, 0x2e, 0x5c, 0xc8, 0xf8, 0x67, 0xd1, 0x74, 0x5d, 0x2c, 0x62, 0x45, 0xbb,
-	0xb3, 0xe8, 0x5a, 0x88, 0x4e, 0xef, 0x9e, 0x1a, 0x63, 0xf9, 0x48, 0x3d, 0x4a, 0x0d, 0xfd, 0x8a,
-	0xfc, 0x3a, 0xf2, 0x0c, 0x20, 0xf0, 0x07, 0xb9, 0x0d, 0xca, 0x1b, 0x6a, 0x2c, 0x5b, 0xa7, 0x62,
-	0x28, 0x2c, 0xb7, 0xfd, 0x4d, 0x74, 0xd4, 0x00, 0xb3, 0x6b, 0x8f, 0xf3, 0xc6, 0x1a, 0xcb, 0xe9,
-	0xe9, 0x18, 0x0e, 0x94, 0x80, 0x04, 0xa0, 0xae, 0x3d, 0xd0, 0x9b, 0x6a, 0x2c, 0xf5, 0xe3, 0x40,
-	0x50, 0x29, 0x92, 0x89, 0x23, 0xd8, 0x0a, 0xe7, 0xcd, 0x35, 0x56, 0x21, 0x8c, 0xc4, 0x11, 0xdc,
-	0x87, 0x38, 0x4b, 0x9c, 0xb7, 0xd4, 0x58, 0x1d, 0x31, 0x13, 0x97, 0x08, 0xd4, 0xb5, 0x07, 0x7a,
-	0x6b, 0x8d, 0x95, 0x1b, 0x33, 0x71, 0x04, 0xfb, 0x5b, 0x68, 0xc6, 0x00, 0x24, 0x4e, 0x2e, 0x6c,
-	0x90, 0xde, 0x56, 0x63, 0x55, 0xc9, 0x8b, 0x21, 0xf1, 0x2a, 0xe6, 0xdf, 0x86, 0x2e, 0x32, 0x91,
-	0x97, 0x06, 0xeb, 0xed, 0x35, 0x26, 0x5a, 0x8f, 0xc6, 0xe9, 0xe3, 0xde, 0x12, 0x36, 0xc4, 0x06,
-	0xbc, 0xda, 0x67, 0x81, 0xf4, 0x8e, 0x1a, 0x53, 0xb7, 0xf1, 0x0d, 0xc1, 0xb4, 0x71, 0x3f, 0xfa,
-	0x2c, 0xbf, 0xa8, 0x77, 0xd6, 0x98, 0x06, 0x4e, 0xa0, 0x8f, 0xe0, 0xbe, 0xf4, 0x59, 0x62, 0xbd,
-	0xab, 0xc6, 0xb4, 0x72, 0x12, 0x7d, 0x89, 0xfb, 0x0f, 0x0e, 0x7b, 0xac, 0xa0, 0x7a, 0x35, 0x26,
-	0xaa, 0xe3, 0xfb, 0x0f, 0x34, 0x79, 0x52, 0x46, 0xc1, 0xe1, 0x8e, 0x0d, 0xd0, 0xbb, 0x6b, 0xac,
-	0x0b, 0x18, 0x32, 0x0a, 0x4e, 0x7c, 0xcd, 0x1b, 0x82, 0x9d, 0x15, 0x59, 0xe1, 0xbc, 0xa7, 0xc6,
-	0x24, 0x7a, 0x7c, 0x43, 0x30, 0x81, 0xef, 0x3f, 0xe0, 0xa0, 0x4b, 0x0c, 0x38, 0xf2, 0x08, 0xc9,
-	0x0a, 0xec, 0xbd, 0xb5, 0x01, 0xa4, 0xfc, 0x4c, 0x6c, 0x89, 0xe1, 0x67, 0xfe, 0xe3, 0x0e, 0x2a,
-	0x25, 0x2e, 0x93, 0x3f, 0x1e, 0xb0, 0x5a, 0xe9, 0xbd, 0xb5, 0xc1, 0x64, 0xff, 0x25, 0xe6, 0xc5,
-	0xf2, 0x8f, 0xfd, 0x87, 0x1d, 0xf4, 0x7d, 0x86, 0xf5, 0x2a, 0xcf, 0x65, 0xac, 0x56, 0xfb, 0xbe,
-	0xda, 0x20, 0x7f, 0x25, 0x5c, 0x14, 0x5b, 0xab, 0xfc, 0xd0, 0xbf, 0xcf, 0x41, 0x97, 0x1a, 0x7b,
-	0x84, 0x3c, 0xc6, 0xb3, 0x5a, 0xea, 0x7d, 0xb5, 0x54, 0x7f, 0x52, 0x5c, 0x6c, 0xe8, 0x2c, 0xe1,
-	0xa7, 0xfe, 0xa3, 0x0e, 0x3a, 0xd6, 0x67, 0x91, 0x69, 0x36, 0xc0, 0xfd, 0xb5, 0xb4, 0x7f, 0x80,
-	0x5c, 0x9a, 0xb4, 0x54, 0xf1, 0xe5, 0x3f, 0xe4, 0x20, 0x99, 0x6e, 0xfa, 0x4d, 0x6b, 0x9b, 0x15,
-	0x3e, 0x50, 0x63, 0x8f, 0xa3, 0x6c, 0xde, 0xb4, 0x31, 0x0b, 0xd8, 0x20, 0x61, 0x35, 0x7e, 0x43,
-	0xad, 0x31, 0xfa, 0x03, 0x23, 0xbb, 0x64, 0xea, 0xa9, 0xd7, 0xc5, 0x25, 0x9a, 0xf6, 0x7c, 0xc9,
-	0xdf, 0x56, 0x4b, 0x67, 0xe4, 0x19, 0x93, 0x5d, 0x36, 0xf4, 0xf4, 0xeb, 0xe6, 0xd3, 0x71, 0x40,
-	0xd0, 0x8d, 0xb7, 0xab, 0xdd, 0x2e, 0xfa, 0x58, 0xca, 0x6e, 0x57, 0xf7, 0xb4, 0xeb, 0xea, 0x5e,
-	0x1c, 0x91, 0x2b, 0xc8, 0x6d, 0x33, 0x64, 0x0a, 0x09, 0x79, 0x7f, 0x4f, 0xbd, 0xee, 0x6e, 0x40,
-	0xe4, 0x52, 0xb2, 0x93, 0x48, 0xab, 0x65, 0x97, 0x7d, 0xa0, 0x17, 0xbf, 0x2e, 0x6f, 0xa6, 0x96,
-	0xe0, 0x7e, 0xd4, 0x5a, 0xc2, 0x3e, 0xd8, 0xd3, 0xae, 0xdb, 0x27, 0x50, 0x4b, 0x70, 0x3f, 0x6a,
-	0x2d, 0x21, 0x1f, 0xea, 0xa9, 0xd7, 0xf5, 0x13, 0xa8, 0x25, 0xd8, 0xef, 0xa8, 0x12, 0x26, 0xf6,
-	0x54, 0xce, 0x0a, 0xf2, 0xe1, 0x9e, 0x7e, 0xdd, 0xff, 0x68, 0x1c, 0x54, 0xe8, 0xce, 0x3b, 0xd1,
-	0xc5, 0x46, 0x6a, 0xd3, 0xc0, 0x3e, 0xd2, 0x8b, 0xfc, 0x5c, 0xc0, 0x8c, 0x81, 0x5e, 0xa1, 0x41,
-	0x6f, 0x37, 0xef, 0x24, 0x7b, 0x11, 0xfa, 0xfe, 0x5e, 0xe4, 0xe7, 0x06, 0x0c, 0xdb, 0x08, 0xf4,
-	0x68, 0x3f, 0x86, 0x2d, 0xbf, 0xd4, 0x0f, 0xf4, 0xf4, 0x9f, 0x2b, 0x48, 0x62, 0x98, 0xe0, 0xfe,
-	0x0c, 0x5b, 0xc2, 0x3e, 0xda, 0x8b, 0xfc, 0xdc, 0x41, 0x22, 0xc3, 0x04, 0xfb, 0xe7, 0xcd, 0x5b,
-	0x38, 0x85, 0x4e, 0x7d, 0xac, 0x67, 0xfc, 0xb9, 0x04, 0xc3, 0x5e, 0xe6, 0xc2, 0xf5, 0x75, 0x09,
-	0x09, 0x6b, 0xaf, 0x5c, 0x1f, 0xef, 0x25, 0xfd, 0xdc, 0x82, 0x29, 0x77, 0x41, 0xcd, 0xbe, 0xde,
-	0x31, 0xef, 0x2d, 0x7b, 0x3d, 0xfb, 0x44, 0x6f, 0xaf, 0xdf, 0x6b, 0x30, 0x6c, 0x36, 0xd0, 0xba,
-	0x4f, 0x68, 0xa2, 0xcc, 0xf4, 0xbc, 0xd4, 0x6a, 0x25, 0x4f, 0xf6, 0xbe, 0x07, 0x3f, 0xf8, 0x70,
-	0x51, 0x7c, 0xb1, 0x52, 0xf5, 0x3e, 0xa6, 0xa9, 0x5e, 0xf3, 0x33, 0x56, 0xab, 0x25, 0x3f, 0xd5,
-	0x1b, 0xe8, 0x17, 0x23, 0x2e, 0x31, 0xd5, 0x66, 0xa9, 0xd2, 0xd6, 0xd5, 0x23, 0x27, 0xed, 0xb2,
-	0xa0, 0xdd, 0x22, 0xbf, 0xeb, 0xb0, 0x9b, 0x85, 0xf2, 0xcc, 0x29, 0x50, 0xae, 0x18, 0xfa, 0x1b,
-	0xaa, 0x68, 0xd1, 0x2f, 0x1b, 0x5a, 0xc1, 0x7c, 0x90, 0xc1, 0xa8, 0x87, 0x4e, 0x81, 0x7a, 0x45,
-	0xd1, 0x3f, 0xa7, 0xee, 0xd8, 0xc8, 0x65, 0x45, 0x2b, 0xa0, 0x0f, 0x31, 0x20, 0xf5, 0xd4, 0x29,
-	0xd0, 0xae, 0x38, 0x26, 0x20, 0xa5, 0x90, 0x0c, 0x1f, 0x66, 0x48, 0x05, 0x03, 0x12, 0xd7, 0x0a,
-	0x89, 0xdc, 0x59, 0x16, 0xbd, 0x8f, 0x30, 0xa0, 0xac, 0x99, 0x3b, 0x82, 0xfb, 0x70, 0x67, 0x09,
-	0xf4, 0x51, 0x06, 0xe4, 0x26, 0x70, 0x97, 0x88, 0x94, 0x42, 0x13, 0x7c, 0x8c, 0x21, 0x0d, 0x27,
-	0x70, 0x47, 0xb0, 0x7f, 0xab, 0x5a, 0x40, 0xa3, 0x97, 0x3d, 0xad, 0xa0, 0x3e, 0xce, 0xa0, 0xd4,
-	0xa3, 0xa7, 0x40, 0xbf, 0x22, 0xea, 0x37, 0xd4, 0xb6, 0x18, 0xbb, 0x2c, 0x6a, 0x05, 0xf6, 0x09,
-	0x06, 0xa6, 0x9e, 0x3d, 0x05, 0x91, 0x2b, 0xa6, 0x09, 0xbb, 0xc2, 0xbe, 0xed, 0x7f, 0x92, 0x41,
-	0x65, 0x0c, 0xbb, 0x02, 0x9a, 0x7d, 0x1f, 0x06, 0x2d, 0xbf, 0xac, 0x4f, 0x31, 0xa4, 0x7c, 0x12,
-	0x83, 0x04, 0xf7, 0x65, 0xd0, 0x12, 0xec, 0xd3, 0x0c, 0xac, 0x98, 0xc8, 0x60, 0xe2, 0x2e, 0x4c,
-	0xd1, 0xd6, 0x9f, 0x66, 0x58, 0x8e, 0x61, 0x17, 0xf2, 0x36, 0x9e, 0x90, 0x59, 0xf6, 0x5d, 0xfc,
-	0x19, 0x86, 0x34, 0x6a, 0xca, 0x2c, 0x68, 0xd9, 0xe6, 0x5d, 0x61, 0xdf, 0xb0, 0x9f, 0x65, 0x40,
-	0x63, 0x86, 0x5d, 0x01, 0x5d, 0xf9, 0x41, 0xed, 0x04, 0xca, 0x70, 0xdb, 0xd7, 0x0a, 0xed, 0x39,
-	0x86, 0x36, 0xf8, 0x11, 0x54, 0x10, 0xbd, 0x23, 0x4c, 0xd5, 0x43, 0x29, 0x71, 0x9d, 0x69, 0x4e,
-	0x20, 0x9e, 0x67, 0x4b, 0xfd, 0x9e, 0x9c, 0x41, 0x05, 0x86, 0x4b, 0xc6, 0xfe, 0x23, 0x9a, 0xdc,
-	0x31, 0xdd, 0x37, 0xb6, 0x5a, 0xee, 0x67, 0xf8, 0x72, 0x07, 0x3e, 0x84, 0x0a, 0x62, 0xb7, 0x94,
-	0xfd, 0xfb, 0xb5, 0x43, 0x28, 0xe3, 0x85, 0x65, 0xab, 0xb5, 0x7e, 0x96, 0xef, 0x82, 0xf4, 0xa7,
-	0x50, 0x41, 0xfc, 0x9a, 0x33, 0x95, 0x63, 0xc7, 0xfa, 0xac, 0x32, 0xcd, 0x1e, 0xf8, 0x1c, 0x27,
-	0x75, 0xa0, 0x63, 0xa8, 0xc0, 0x78, 0x4f, 0xda, 0x7f, 0x58, 0x3d, 0x86, 0xd2, 0x6f, 0x38, 0xdb,
-	0x2c, 0xf1, 0xf3, 0x6c, 0x89, 0x29, 0xcf, 0xa1, 0xf4, 0x7b, 0xd6, 0x09, 0xcb, 0x59, 0x2e, 0x88,
-	0x57, 0xf5, 0xbb, 0xad, 0xad, 0x76, 0x6b, 0x79, 0x3a, 0xfe, 0x8e, 0x24, 0xfb, 0xe0, 0xb2, 0x79,
-	0x74, 0x50, 0x7d, 0x4f, 0xdc, 0xf4, 0x40, 0x14, 0xb9, 0x63, 0xf2, 0x81, 0xe8, 0x0b, 0xce, 0xf2,
-	0x6b, 0x7e, 0xbc, 0x16, 0x5b, 0xf6, 0x09, 0xb6, 0xec, 0xb5, 0xee, 0xc6, 0x89, 0xad, 0x56, 0xa7,
-	0xbe, 0xd3, 0x5a, 0x6d, 0xb0, 0xdf, 0xb9, 0x65, 0xa3, 0xbb, 0x27, 0x1a, 0xf5, 0xcd, 0xd5, 0xb3,
-	0xe7, 0x4f, 0x24, 0xfd, 0x24, 0xee, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x9d, 0x50, 0x42, 0x96,
-	0x2d, 0x57, 0x00, 0x00,
-}
diff --git a/internal/testprotos/legacy/proto2_20180430_b4deda09/test.proto b/internal/testprotos/legacy/proto2_20180430_b4deda09/test.proto
deleted file mode 100644
index d3850eb..0000000
--- a/internal/testprotos/legacy/proto2_20180430_b4deda09/test.proto
+++ /dev/null
@@ -1,333 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package google.golang.org.proto2_20180430;
-option go_package = "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20180430_b4deda09";
-
-enum SiblingEnum {
-	ALPHA   = 0;
-	BRAVO   = 10;
-	CHARLIE = 200;
-}
-
-message SiblingMessage {
-	optional string  f1 = 1;
-	required string  f2 = 2;
-	repeated string  f3 = 3;
-	optional Message f4 = 4;
-}
-
-message Message {
-	enum ChildEnum {
-		ALPHA   = 0;
-		BRAVO   = 1;
-		CHARLIE = 2;
-	}
-	message ChildMessage {
-		optional string  f1 = 1;
-		required string  f2 = 2;
-		repeated string  f3 = 3;
-	    optional Message f4 = 4;
-	}
-	optional group NamedGroup = 1 {
-		optional string  f1 = 1;
-		required string  f2 = 2;
-		repeated string  f3 = 3;
-	    optional Message f4 = 4;
-	}
-
-	// Optional fields.
-	optional bool     optional_bool     = 100;
-	optional int32    optional_int32    = 101;
-	optional sint32   optional_sint32   = 102;
-	optional uint32   optional_uint32   = 103;
-	optional int64    optional_int64    = 104;
-	optional sint64   optional_sint64   = 105;
-	optional uint64   optional_uint64   = 106;
-	optional fixed32  optional_fixed32  = 107;
-	optional sfixed32 optional_sfixed32 = 108;
-	optional float    optional_float    = 109;
-	optional fixed64  optional_fixed64  = 110;
-	optional sfixed64 optional_sfixed64 = 111;
-	optional double   optional_double   = 112;
-	optional string   optional_string   = 113;
-	optional bytes    optional_bytes    = 114;
-
-	optional ChildEnum      optional_child_enum      = 115;
-	optional ChildMessage   optional_child_message   = 116;
-	optional NamedGroup     optional_named_group     = 117;
-	optional SiblingEnum    optional_sibling_enum    = 118;
-	optional SiblingMessage optional_sibling_message = 119;
-	optional group OptionalGroup = 120 {
-		optional string f1 = 1;
-		required string f2 = 2;
-		repeated string f3 = 3;
-	}
-
-	// Optional default fields.
-	optional bool      defaulted_bool     = 200 [default = true];
-	optional int32     defaulted_int32    = 201 [default = -12345];
-	optional sint32    defaulted_sint32   = 202 [default = -3200];
-	optional uint32    defaulted_uint32   = 203 [default = 3200];
-	optional int64     defaulted_int64    = 204 [default = -123456789];
-	optional sint64    defaulted_sint64   = 205 [default = -6400];
-	optional uint64    defaulted_uint64   = 206 [default = 6400];
-	optional fixed32   defaulted_fixed32  = 207 [default = 320000];
-	optional sfixed32  defaulted_sfixed32 = 208 [default = -320000];
-	optional float     defaulted_float    = 209 [default = 3.14159];
-	optional fixed64   defaulted_fixed64  = 210 [default = 640000];
-	optional sfixed64  defaulted_sfixed64 = 211 [default = -640000];
-	optional double    defaulted_double   = 212 [default = 3.14159265359];
-	optional string    defaulted_string   = 213 [default = "hello, \"world!\"\n"];
-	optional bytes     defaulted_bytes    = 214 [default = "dead\xde\xad\xbe\xefbeef"];
-
-	optional ChildEnum   defaulted_child_enum   = 215 [default = ALPHA];
-	optional SiblingEnum defaulted_sibling_enum = 216 [default = ALPHA];
-
-	// Required fields.
-	required bool     required_bool     = 300;
-	required int32    required_int32    = 301;
-	required sint32   required_sint32   = 302;
-	required uint32   required_uint32   = 303;
-	required int64    required_int64    = 304;
-	required sint64   required_sint64   = 305;
-	required uint64   required_uint64   = 306;
-	required fixed32  required_fixed32  = 307;
-	required sfixed32 required_sfixed32 = 308;
-	required float    required_float    = 309;
-	required fixed64  required_fixed64  = 310;
-	required sfixed64 required_sfixed64 = 311;
-	required double   required_double   = 312;
-	required string   required_string   = 313;
-	required bytes    required_bytes    = 314;
-
-	required ChildEnum      required_child_enum      = 315;
-	required ChildMessage   required_child_message   = 316;
-	required NamedGroup     required_named_group     = 317;
-	required SiblingEnum    required_sibling_enum    = 318;
-	required SiblingMessage required_sibling_message = 319;
-	required group RequiredGroup = 320 {
-		optional string f1 = 1;
-		required string f2 = 2;
-		repeated string f3 = 3;
-	}
-	// Required default fields.
-	required bool      required_defaulted_bool     = 400 [default = true];
-	required int32     required_defaulted_int32    = 401 [default = -12345];
-	required sint32    required_defaulted_sint32   = 402 [default = -3200];
-	required uint32    required_defaulted_uint32   = 403 [default = 3200];
-	required int64     required_defaulted_int64    = 404 [default = -123456789];
-	required sint64    required_defaulted_sint64   = 405 [default = -6400];
-	required uint64    required_defaulted_uint64   = 406 [default = 6400];
-	required fixed32   required_defaulted_fixed32  = 407 [default = 320000];
-	required sfixed32  required_defaulted_sfixed32 = 408 [default = -320000];
-	required float     required_defaulted_float    = 409 [default = 3.14159];
-	required fixed64   required_defaulted_fixed64  = 410 [default = 640000];
-	required sfixed64  required_defaulted_sfixed64 = 411 [default = -640000];
-	required double    required_defaulted_double   = 412 [default = 3.14159265359];
-	required string    required_defaulted_string   = 413 [default = "hello, \"world!\"\n"];
-	required bytes     required_defaulted_bytes    = 414 [default = "dead\xde\xad\xbe\xefbeef"];
-
-	required ChildEnum   required_defaulted_child_enum   = 415 [default = ALPHA];
-	required SiblingEnum required_defaulted_sibling_enum = 416 [default = ALPHA];
-
-	// Repeated fields.
-	repeated bool     repeated_bool     = 500;
-	repeated int32    repeated_int32    = 501;
-	repeated sint32   repeated_sint32   = 502;
-	repeated uint32   repeated_uint32   = 503;
-	repeated int64    repeated_int64    = 504;
-	repeated sint64   repeated_sint64   = 505;
-	repeated uint64   repeated_uint64   = 506;
-	repeated fixed32  repeated_fixed32  = 507;
-	repeated sfixed32 repeated_sfixed32 = 508;
-	repeated float    repeated_float    = 509;
-	repeated fixed64  repeated_fixed64  = 510;
-	repeated sfixed64 repeated_sfixed64 = 511;
-	repeated double   repeated_double   = 512;
-	repeated string   repeated_string   = 513;
-	repeated bytes    repeated_bytes    = 514;
-
-	repeated ChildEnum      repeated_child_enum      = 515;
-	repeated ChildMessage   repeated_child_message   = 516;
-	repeated NamedGroup     repeated_named_group     = 517;
-	repeated SiblingEnum    repeated_sibling_enum    = 518;
-	repeated SiblingMessage repeated_sibling_message = 519;
-	repeated group RepeatedGroup = 520 {
-		optional string f1 = 1;
-		required string f2 = 2;
-		repeated string f3 = 3;
-	}
-
-	// Map fields.
-	map<bool, bool>     map_bool_bool     = 600;
-	map<bool, int32>    map_bool_int32    = 601;
-	map<bool, sint32>   map_bool_sint32   = 602;
-	map<bool, uint32>   map_bool_uint32   = 603;
-	map<bool, int64>    map_bool_int64    = 604;
-	map<bool, sint64>   map_bool_sint64   = 605;
-	map<bool, uint64>   map_bool_uint64   = 606;
-	map<bool, fixed32>  map_bool_fixed32  = 607;
-	map<bool, sfixed32> map_bool_sfixed32 = 608;
-	map<bool, float>    map_bool_float    = 609;
-	map<bool, fixed64>  map_bool_fixed64  = 610;
-	map<bool, sfixed64> map_bool_sfixed64 = 611;
-	map<bool, double>   map_bool_double   = 612;
-	map<bool, string>   map_bool_string   = 613;
-	map<bool, bytes>    map_bool_bytes    = 614;
-
-	map<bool, ChildEnum>      map_bool_child_enum      = 615;
-	map<bool, ChildMessage>   map_bool_child_message   = 616;
-	map<bool, NamedGroup>     map_bool_named_group     = 617;
-	map<bool, SiblingEnum>    map_bool_sibling_enum    = 618;
-	map<bool, SiblingMessage> map_bool_sibling_message = 619;
-
-	map<int32, bool>   map_int32_bool   = 620;
-	map<sint32, bool>  map_sint32_bool  = 621;
-	map<uint32, bool>  map_uint32_bool  = 622;
-	map<int64, bool>   map_int64_bool   = 623;
-	map<sint64, bool>  map_sint64_bool  = 624;
-	map<uint64, bool>  map_uint64_bool  = 625;
-	map<fixed32, bool> map_fixed32_bool = 626;
-	map<string, bool>  map_string_bool  = 627;
-
-	// Oneof fields.
-	oneof oneof_union {
-		bool     oneof_bool     = 700;
-		int32    oneof_int32    = 701;
-		sint32   oneof_sint32   = 702;
-		uint32   oneof_uint32   = 703;
-		int64    oneof_int64    = 704;
-		sint64   oneof_sint64   = 705;
-		uint64   oneof_uint64   = 706;
-		fixed32  oneof_fixed32  = 707;
-		sfixed32 oneof_sfixed32 = 708;
-		float    oneof_float    = 709;
-		fixed64  oneof_fixed64  = 710;
-		sfixed64 oneof_sfixed64 = 711;
-		double   oneof_double   = 712;
-		string   oneof_string   = 713;
-		bytes    oneof_bytes    = 714;
-
-		ChildEnum      oneof_child_enum      = 715;
-		ChildMessage   oneof_child_message   = 716;
-		NamedGroup     oneof_named_group     = 717;
-		SiblingEnum    oneof_sibling_enum    = 718;
-		SiblingMessage oneof_sibling_message = 719;
-		group OneofGroup = 720 {
-			optional string f1 = 1;
-			required string f2 = 2;
-			repeated string f3 = 3;
-		}
-
-		string oneof_string1 = 721;
-		string oneof_string2 = 722;
-		string oneof_string3 = 723;
-	}
-
-	// Oneof default fields.
-	oneof oneof_defaulted_union {
-		bool      oneof_defaulted_bool     = 800 [default = true];
-		int32     oneof_defaulted_int32    = 801 [default = -12345];
-		sint32    oneof_defaulted_sint32   = 802 [default = -3200];
-		uint32    oneof_defaulted_uint32   = 803 [default = 3200];
-		int64     oneof_defaulted_int64    = 804 [default = -123456789];
-		sint64    oneof_defaulted_sint64   = 805 [default = -6400];
-		uint64    oneof_defaulted_uint64   = 806 [default = 6400];
-		fixed32   oneof_defaulted_fixed32  = 807 [default = 320000];
-		sfixed32  oneof_defaulted_sfixed32 = 808 [default = -320000];
-		float     oneof_defaulted_float    = 809 [default = 3.14159];
-		fixed64   oneof_defaulted_fixed64  = 810 [default = 640000];
-		sfixed64  oneof_defaulted_sfixed64 = 811 [default = -640000];
-		double    oneof_defaulted_double   = 812 [default = 3.14159265359];
-		string    oneof_defaulted_string   = 813 [default = "hello, \"world!\"\n"];
-		bytes     oneof_defaulted_bytes    = 814 [default = "dead\xde\xad\xbe\xefbeef"];
-
-		ChildEnum   oneof_defaulted_child_enum   = 815 [default = ALPHA];
-		SiblingEnum oneof_defaulted_sibling_enum = 816 [default = ALPHA];
-	}
-
-	// Extension fields.
-	extend Message {
-		// Optional fields.
-		optional bool     extension_optional_bool     = 10000;
-		optional int32    extension_optional_int32    = 10001;
-		optional sint32   extension_optional_sint32   = 10002;
-		optional uint32   extension_optional_uint32   = 10003;
-		optional int64    extension_optional_int64    = 10004;
-		optional sint64   extension_optional_sint64   = 10005;
-		optional uint64   extension_optional_uint64   = 10006;
-		optional fixed32  extension_optional_fixed32  = 10007;
-		optional sfixed32 extension_optional_sfixed32 = 10008;
-		optional float    extension_optional_float    = 10009;
-		optional fixed64  extension_optional_fixed64  = 10010;
-		optional sfixed64 extension_optional_sfixed64 = 10011;
-		optional double   extension_optional_double   = 10012;
-		optional string   extension_optional_string   = 10013;
-		optional bytes    extension_optional_bytes    = 10014;
-
-		optional ChildEnum      extension_optional_child_enum      = 10015;
-		optional ChildMessage   extension_optional_child_message   = 10016;
-		optional NamedGroup     extension_optional_named_group     = 10017;
-		optional SiblingEnum    extension_optional_sibling_enum    = 10018;
-		optional SiblingMessage extension_optional_sibling_message = 10019;
-		optional group ExtensionOptionalGroup = 10020 {
-			optional string f1 = 1;
-			required string f2 = 2;
-			repeated string f3 = 3;
-		}
-
-		// Optional default fields.
-		optional bool      extension_defaulted_bool     = 20000 [default = true];
-		optional int32     extension_defaulted_int32    = 20001 [default = -12345];
-		optional sint32    extension_defaulted_sint32   = 20002 [default = -3200];
-		optional uint32    extension_defaulted_uint32   = 20003 [default = 3200];
-		optional int64     extension_defaulted_int64    = 20004 [default = -123456789];
-		optional sint64    extension_defaulted_sint64   = 20005 [default = -6400];
-		optional uint64    extension_defaulted_uint64   = 20006 [default = 6400];
-		optional fixed32   extension_defaulted_fixed32  = 20007 [default = 320000];
-		optional sfixed32  extension_defaulted_sfixed32 = 20008 [default = -320000];
-		optional float     extension_defaulted_float    = 20009 [default = 3.14159];
-		optional fixed64   extension_defaulted_fixed64  = 20010 [default = 640000];
-		optional sfixed64  extension_defaulted_sfixed64 = 20011 [default = -640000];
-		optional double    extension_defaulted_double   = 20012 [default = 3.14159265359];
-		optional string    extension_defaulted_string   = 20013 [default = "hello, \"world!\"\n"];
-		optional bytes     extension_defaulted_bytes    = 20014 [default = "dead\xde\xad\xbe\xefbeef"];
-
-		optional ChildEnum   extension_defaulted_child_enum   = 20015 [default = ALPHA];
-		optional SiblingEnum extension_defaulted_sibling_enum = 20016 [default = ALPHA];
-
-		// Repeated fields.
-		repeated bool     extension_repeated_bool     = 30000;
-		repeated int32    extension_repeated_int32    = 30001;
-		repeated sint32   extension_repeated_sint32   = 30002;
-		repeated uint32   extension_repeated_uint32   = 30003;
-		repeated int64    extension_repeated_int64    = 30004;
-		repeated sint64   extension_repeated_sint64   = 30005;
-		repeated uint64   extension_repeated_uint64   = 30006;
-		repeated fixed32  extension_repeated_fixed32  = 30007;
-		repeated sfixed32 extension_repeated_sfixed32 = 30008;
-		repeated float    extension_repeated_float    = 30009;
-		repeated fixed64  extension_repeated_fixed64  = 30010;
-		repeated sfixed64 extension_repeated_sfixed64 = 30011;
-		repeated double   extension_repeated_double   = 30012;
-		repeated string   extension_repeated_string   = 30013;
-		repeated bytes    extension_repeated_bytes    = 30014;
-
-		repeated ChildEnum      extension_repeated_child_enum      = 30015;
-		repeated ChildMessage   extension_repeated_child_message   = 30016;
-		repeated NamedGroup     extension_repeated_named_group     = 30017;
-		repeated SiblingEnum    extension_repeated_sibling_enum    = 30018;
-		repeated SiblingMessage extension_repeated_sibling_message = 30019;
-		repeated group ExtensionRepeatedGroup = 30020 {
-			optional string f1 = 1;
-			required string f2 = 2;
-			repeated string f3 = 3;
-		}
-	}
-
-	extensions 10000 to max;
-}
diff --git a/internal/testprotos/legacy/proto2_20180814_aa810b61/test.pb.go b/internal/testprotos/legacy/proto2_20180814_aa810b61/test.pb.go
deleted file mode 100644
index 47e825a..0000000
--- a/internal/testprotos/legacy/proto2_20180814_aa810b61/test.pb.go
+++ /dev/null
@@ -1,3904 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: proto2_20180814_aa810b61/test.proto
-
-package proto2_20180814_aa810b61 // import "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20180814_aa810b61"
-
-import proto "google.golang.org/protobuf/internal/protolegacy"
-import fmt "fmt"
-import 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.ProtoPackageIsVersion2 // please upgrade the proto package
-
-type SiblingEnum int32
-
-const (
-	SiblingEnum_ALPHA   SiblingEnum = 0
-	SiblingEnum_BRAVO   SiblingEnum = 10
-	SiblingEnum_CHARLIE SiblingEnum = 200
-)
-
-var SiblingEnum_name = map[int32]string{
-	0:   "ALPHA",
-	10:  "BRAVO",
-	200: "CHARLIE",
-}
-var SiblingEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   10,
-	"CHARLIE": 200,
-}
-
-func (x SiblingEnum) Enum() *SiblingEnum {
-	p := new(SiblingEnum)
-	*p = x
-	return p
-}
-func (x SiblingEnum) String() string {
-	return proto.EnumName(SiblingEnum_name, int32(x))
-}
-func (x *SiblingEnum) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(SiblingEnum_value, data, "SiblingEnum")
-	if err != nil {
-		return err
-	}
-	*x = SiblingEnum(value)
-	return nil
-}
-func (SiblingEnum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_test_98b5676fa5dea40d, []int{0}
-}
-
-type Message_ChildEnum int32
-
-const (
-	Message_ALPHA   Message_ChildEnum = 0
-	Message_BRAVO   Message_ChildEnum = 1
-	Message_CHARLIE Message_ChildEnum = 2
-)
-
-var Message_ChildEnum_name = map[int32]string{
-	0: "ALPHA",
-	1: "BRAVO",
-	2: "CHARLIE",
-}
-var Message_ChildEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   1,
-	"CHARLIE": 2,
-}
-
-func (x Message_ChildEnum) Enum() *Message_ChildEnum {
-	p := new(Message_ChildEnum)
-	*p = x
-	return p
-}
-func (x Message_ChildEnum) String() string {
-	return proto.EnumName(Message_ChildEnum_name, int32(x))
-}
-func (x *Message_ChildEnum) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(Message_ChildEnum_value, data, "Message_ChildEnum")
-	if err != nil {
-		return err
-	}
-	*x = Message_ChildEnum(value)
-	return nil
-}
-func (Message_ChildEnum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_test_98b5676fa5dea40d, []int{1, 0}
-}
-
-type SiblingMessage struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	F4                   *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *SiblingMessage) Reset()         { *m = SiblingMessage{} }
-func (m *SiblingMessage) String() string { return proto.CompactTextString(m) }
-func (*SiblingMessage) ProtoMessage()    {}
-func (*SiblingMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_98b5676fa5dea40d, []int{0}
-}
-func (m *SiblingMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SiblingMessage.Unmarshal(m, b)
-}
-func (m *SiblingMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SiblingMessage.Marshal(b, m, deterministic)
-}
-func (dst *SiblingMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SiblingMessage.Merge(dst, src)
-}
-func (m *SiblingMessage) XXX_Size() int {
-	return xxx_messageInfo_SiblingMessage.Size(m)
-}
-func (m *SiblingMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_SiblingMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SiblingMessage proto.InternalMessageInfo
-
-func (m *SiblingMessage) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *SiblingMessage) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *SiblingMessage) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func (m *SiblingMessage) GetF4() *Message {
-	if m != nil {
-		return m.F4
-	}
-	return nil
-}
-
-type Message struct {
-	Namedgroup *Message_NamedGroup `protobuf:"group,1,opt,name=NamedGroup,json=namedgroup" json:"namedgroup,omitempty"`
-	// Optional fields.
-	OptionalBool           *bool                  `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
-	OptionalInt32          *int32                 `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
-	OptionalSint32         *int32                 `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
-	OptionalUint32         *uint32                `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
-	OptionalInt64          *int64                 `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
-	OptionalSint64         *int64                 `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
-	OptionalUint64         *uint64                `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
-	OptionalFixed32        *uint32                `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
-	OptionalSfixed32       *int32                 `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
-	OptionalFloat          *float32               `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
-	OptionalFixed64        *uint64                `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
-	OptionalSfixed64       *int64                 `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
-	OptionalDouble         *float64               `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
-	OptionalString         *string                `protobuf:"bytes,113,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
-	OptionalBytes          []byte                 `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
-	OptionalChildEnum      *Message_ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum" json:"optional_child_enum,omitempty"`
-	OptionalChildMessage   *Message_ChildMessage  `protobuf:"bytes,116,opt,name=optional_child_message,json=optionalChildMessage" json:"optional_child_message,omitempty"`
-	OptionalNamedGroup     *Message_NamedGroup    `protobuf:"bytes,117,opt,name=optional_named_group,json=optionalNamedGroup" json:"optional_named_group,omitempty"`
-	OptionalSiblingEnum    *SiblingEnum           `protobuf:"varint,118,opt,name=optional_sibling_enum,json=optionalSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum" json:"optional_sibling_enum,omitempty"`
-	OptionalSiblingMessage *SiblingMessage        `protobuf:"bytes,119,opt,name=optional_sibling_message,json=optionalSiblingMessage" json:"optional_sibling_message,omitempty"`
-	Optionalgroup          *Message_OptionalGroup `protobuf:"group,120,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
-	// Optional default fields.
-	DefaultedBool        *bool              `protobuf:"varint,200,opt,name=defaulted_bool,json=defaultedBool,def=1" json:"defaulted_bool,omitempty"`
-	DefaultedInt32       *int32             `protobuf:"varint,201,opt,name=defaulted_int32,json=defaultedInt32,def=-12345" json:"defaulted_int32,omitempty"`
-	DefaultedSint32      *int32             `protobuf:"zigzag32,202,opt,name=defaulted_sint32,json=defaultedSint32,def=-3200" json:"defaulted_sint32,omitempty"`
-	DefaultedUint32      *uint32            `protobuf:"varint,203,opt,name=defaulted_uint32,json=defaultedUint32,def=3200" json:"defaulted_uint32,omitempty"`
-	DefaultedInt64       *int64             `protobuf:"varint,204,opt,name=defaulted_int64,json=defaultedInt64,def=-123456789" json:"defaulted_int64,omitempty"`
-	DefaultedSint64      *int64             `protobuf:"zigzag64,205,opt,name=defaulted_sint64,json=defaultedSint64,def=-6400" json:"defaulted_sint64,omitempty"`
-	DefaultedUint64      *uint64            `protobuf:"varint,206,opt,name=defaulted_uint64,json=defaultedUint64,def=6400" json:"defaulted_uint64,omitempty"`
-	DefaultedFixed32     *uint32            `protobuf:"fixed32,207,opt,name=defaulted_fixed32,json=defaultedFixed32,def=320000" json:"defaulted_fixed32,omitempty"`
-	DefaultedSfixed32    *int32             `protobuf:"fixed32,208,opt,name=defaulted_sfixed32,json=defaultedSfixed32,def=-320000" json:"defaulted_sfixed32,omitempty"`
-	DefaultedFloat       *float32           `protobuf:"fixed32,209,opt,name=defaulted_float,json=defaultedFloat,def=3.14159" json:"defaulted_float,omitempty"`
-	DefaultedFixed64     *uint64            `protobuf:"fixed64,210,opt,name=defaulted_fixed64,json=defaultedFixed64,def=640000" json:"defaulted_fixed64,omitempty"`
-	DefaultedSfixed64    *int64             `protobuf:"fixed64,211,opt,name=defaulted_sfixed64,json=defaultedSfixed64,def=-640000" json:"defaulted_sfixed64,omitempty"`
-	DefaultedDouble      *float64           `protobuf:"fixed64,212,opt,name=defaulted_double,json=defaultedDouble,def=3.14159265359" json:"defaulted_double,omitempty"`
-	DefaultedString      *string            `protobuf:"bytes,213,opt,name=defaulted_string,json=defaultedString,def=hello, \"world!\"\n" json:"defaulted_string,omitempty"`
-	DefaultedBytes       []byte             `protobuf:"bytes,214,opt,name=defaulted_bytes,json=defaultedBytes,def=dead\\336\\255\\276\\357beef" json:"defaulted_bytes,omitempty"`
-	DefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,215,opt,name=defaulted_child_enum,json=defaultedChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum,def=0" json:"defaulted_child_enum,omitempty"`
-	DefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,216,opt,name=defaulted_sibling_enum,json=defaultedSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum,def=0" json:"defaulted_sibling_enum,omitempty"`
-	// Required fields.
-	RequiredBool           *bool                  `protobuf:"varint,300,req,name=required_bool,json=requiredBool" json:"required_bool,omitempty"`
-	RequiredInt32          *int32                 `protobuf:"varint,301,req,name=required_int32,json=requiredInt32" json:"required_int32,omitempty"`
-	RequiredSint32         *int32                 `protobuf:"zigzag32,302,req,name=required_sint32,json=requiredSint32" json:"required_sint32,omitempty"`
-	RequiredUint32         *uint32                `protobuf:"varint,303,req,name=required_uint32,json=requiredUint32" json:"required_uint32,omitempty"`
-	RequiredInt64          *int64                 `protobuf:"varint,304,req,name=required_int64,json=requiredInt64" json:"required_int64,omitempty"`
-	RequiredSint64         *int64                 `protobuf:"zigzag64,305,req,name=required_sint64,json=requiredSint64" json:"required_sint64,omitempty"`
-	RequiredUint64         *uint64                `protobuf:"varint,306,req,name=required_uint64,json=requiredUint64" json:"required_uint64,omitempty"`
-	RequiredFixed32        *uint32                `protobuf:"fixed32,307,req,name=required_fixed32,json=requiredFixed32" json:"required_fixed32,omitempty"`
-	RequiredSfixed32       *int32                 `protobuf:"fixed32,308,req,name=required_sfixed32,json=requiredSfixed32" json:"required_sfixed32,omitempty"`
-	RequiredFloat          *float32               `protobuf:"fixed32,309,req,name=required_float,json=requiredFloat" json:"required_float,omitempty"`
-	RequiredFixed64        *uint64                `protobuf:"fixed64,310,req,name=required_fixed64,json=requiredFixed64" json:"required_fixed64,omitempty"`
-	RequiredSfixed64       *int64                 `protobuf:"fixed64,311,req,name=required_sfixed64,json=requiredSfixed64" json:"required_sfixed64,omitempty"`
-	RequiredDouble         *float64               `protobuf:"fixed64,312,req,name=required_double,json=requiredDouble" json:"required_double,omitempty"`
-	RequiredString         *string                `protobuf:"bytes,313,req,name=required_string,json=requiredString" json:"required_string,omitempty"`
-	RequiredBytes          []byte                 `protobuf:"bytes,314,req,name=required_bytes,json=requiredBytes" json:"required_bytes,omitempty"`
-	RequiredChildEnum      *Message_ChildEnum     `protobuf:"varint,315,req,name=required_child_enum,json=requiredChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum" json:"required_child_enum,omitempty"`
-	RequiredChildMessage   *Message_ChildMessage  `protobuf:"bytes,316,req,name=required_child_message,json=requiredChildMessage" json:"required_child_message,omitempty"`
-	RequiredNamedGroup     *Message_NamedGroup    `protobuf:"bytes,317,req,name=required_named_group,json=requiredNamedGroup" json:"required_named_group,omitempty"`
-	RequiredSiblingEnum    *SiblingEnum           `protobuf:"varint,318,req,name=required_sibling_enum,json=requiredSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum" json:"required_sibling_enum,omitempty"`
-	RequiredSiblingMessage *SiblingMessage        `protobuf:"bytes,319,req,name=required_sibling_message,json=requiredSiblingMessage" json:"required_sibling_message,omitempty"`
-	Requiredgroup          *Message_RequiredGroup `protobuf:"group,320,req,name=RequiredGroup,json=requiredgroup" json:"requiredgroup,omitempty"`
-	// Required default fields.
-	RequiredDefaultedBool        *bool              `protobuf:"varint,400,req,name=required_defaulted_bool,json=requiredDefaultedBool,def=1" json:"required_defaulted_bool,omitempty"`
-	RequiredDefaultedInt32       *int32             `protobuf:"varint,401,req,name=required_defaulted_int32,json=requiredDefaultedInt32,def=-12345" json:"required_defaulted_int32,omitempty"`
-	RequiredDefaultedSint32      *int32             `protobuf:"zigzag32,402,req,name=required_defaulted_sint32,json=requiredDefaultedSint32,def=-3200" json:"required_defaulted_sint32,omitempty"`
-	RequiredDefaultedUint32      *uint32            `protobuf:"varint,403,req,name=required_defaulted_uint32,json=requiredDefaultedUint32,def=3200" json:"required_defaulted_uint32,omitempty"`
-	RequiredDefaultedInt64       *int64             `protobuf:"varint,404,req,name=required_defaulted_int64,json=requiredDefaultedInt64,def=-123456789" json:"required_defaulted_int64,omitempty"`
-	RequiredDefaultedSint64      *int64             `protobuf:"zigzag64,405,req,name=required_defaulted_sint64,json=requiredDefaultedSint64,def=-6400" json:"required_defaulted_sint64,omitempty"`
-	RequiredDefaultedUint64      *uint64            `protobuf:"varint,406,req,name=required_defaulted_uint64,json=requiredDefaultedUint64,def=6400" json:"required_defaulted_uint64,omitempty"`
-	RequiredDefaultedFixed32     *uint32            `protobuf:"fixed32,407,req,name=required_defaulted_fixed32,json=requiredDefaultedFixed32,def=320000" json:"required_defaulted_fixed32,omitempty"`
-	RequiredDefaultedSfixed32    *int32             `protobuf:"fixed32,408,req,name=required_defaulted_sfixed32,json=requiredDefaultedSfixed32,def=-320000" json:"required_defaulted_sfixed32,omitempty"`
-	RequiredDefaultedFloat       *float32           `protobuf:"fixed32,409,req,name=required_defaulted_float,json=requiredDefaultedFloat,def=3.14159" json:"required_defaulted_float,omitempty"`
-	RequiredDefaultedFixed64     *uint64            `protobuf:"fixed64,410,req,name=required_defaulted_fixed64,json=requiredDefaultedFixed64,def=640000" json:"required_defaulted_fixed64,omitempty"`
-	RequiredDefaultedSfixed64    *int64             `protobuf:"fixed64,411,req,name=required_defaulted_sfixed64,json=requiredDefaultedSfixed64,def=-640000" json:"required_defaulted_sfixed64,omitempty"`
-	RequiredDefaultedDouble      *float64           `protobuf:"fixed64,412,req,name=required_defaulted_double,json=requiredDefaultedDouble,def=3.14159265359" json:"required_defaulted_double,omitempty"`
-	RequiredDefaultedString      *string            `protobuf:"bytes,413,req,name=required_defaulted_string,json=requiredDefaultedString,def=hello, \"world!\"\n" json:"required_defaulted_string,omitempty"`
-	RequiredDefaultedBytes       []byte             `protobuf:"bytes,414,req,name=required_defaulted_bytes,json=requiredDefaultedBytes,def=dead\\336\\255\\276\\357beef" json:"required_defaulted_bytes,omitempty"`
-	RequiredDefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,415,req,name=required_defaulted_child_enum,json=requiredDefaultedChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum,def=0" json:"required_defaulted_child_enum,omitempty"`
-	RequiredDefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,416,req,name=required_defaulted_sibling_enum,json=requiredDefaultedSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum,def=0" json:"required_defaulted_sibling_enum,omitempty"`
-	// Repeated fields.
-	RepeatedBool           []bool                   `protobuf:"varint,500,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
-	RepeatedInt32          []int32                  `protobuf:"varint,501,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
-	RepeatedSint32         []int32                  `protobuf:"zigzag32,502,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
-	RepeatedUint32         []uint32                 `protobuf:"varint,503,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
-	RepeatedInt64          []int64                  `protobuf:"varint,504,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
-	RepeatedSint64         []int64                  `protobuf:"zigzag64,505,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
-	RepeatedUint64         []uint64                 `protobuf:"varint,506,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
-	RepeatedFixed32        []uint32                 `protobuf:"fixed32,507,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
-	RepeatedSfixed32       []int32                  `protobuf:"fixed32,508,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
-	RepeatedFloat          []float32                `protobuf:"fixed32,509,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
-	RepeatedFixed64        []uint64                 `protobuf:"fixed64,510,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
-	RepeatedSfixed64       []int64                  `protobuf:"fixed64,511,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
-	RepeatedDouble         []float64                `protobuf:"fixed64,512,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
-	RepeatedString         []string                 `protobuf:"bytes,513,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
-	RepeatedBytes          [][]byte                 `protobuf:"bytes,514,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
-	RepeatedChildEnum      []Message_ChildEnum      `protobuf:"varint,515,rep,name=repeated_child_enum,json=repeatedChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum" json:"repeated_child_enum,omitempty"`
-	RepeatedChildMessage   []*Message_ChildMessage  `protobuf:"bytes,516,rep,name=repeated_child_message,json=repeatedChildMessage" json:"repeated_child_message,omitempty"`
-	RepeatedNamedGroup     []*Message_NamedGroup    `protobuf:"bytes,517,rep,name=repeated_named_group,json=repeatedNamedGroup" json:"repeated_named_group,omitempty"`
-	RepeatedSiblingEnum    []SiblingEnum            `protobuf:"varint,518,rep,name=repeated_sibling_enum,json=repeatedSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum" json:"repeated_sibling_enum,omitempty"`
-	RepeatedSiblingMessage []*SiblingMessage        `protobuf:"bytes,519,rep,name=repeated_sibling_message,json=repeatedSiblingMessage" json:"repeated_sibling_message,omitempty"`
-	Repeatedgroup          []*Message_RepeatedGroup `protobuf:"group,520,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
-	// Map fields.
-	MapBoolBool           map[bool]bool                  `protobuf:"bytes,600,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolInt32          map[bool]int32                 `protobuf:"bytes,601,rep,name=map_bool_int32,json=mapBoolInt32" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolSint32         map[bool]int32                 `protobuf:"bytes,602,rep,name=map_bool_sint32,json=mapBoolSint32" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
-	MapBoolUint32         map[bool]uint32                `protobuf:"bytes,603,rep,name=map_bool_uint32,json=mapBoolUint32" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolInt64          map[bool]int64                 `protobuf:"bytes,604,rep,name=map_bool_int64,json=mapBoolInt64" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolSint64         map[bool]int64                 `protobuf:"bytes,605,rep,name=map_bool_sint64,json=mapBoolSint64" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
-	MapBoolUint64         map[bool]uint64                `protobuf:"bytes,606,rep,name=map_bool_uint64,json=mapBoolUint64" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolFixed32        map[bool]uint32                `protobuf:"bytes,607,rep,name=map_bool_fixed32,json=mapBoolFixed32" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolSfixed32       map[bool]int32                 `protobuf:"bytes,608,rep,name=map_bool_sfixed32,json=mapBoolSfixed32" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolFloat          map[bool]float32               `protobuf:"bytes,609,rep,name=map_bool_float,json=mapBoolFloat" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolFixed64        map[bool]uint64                `protobuf:"bytes,610,rep,name=map_bool_fixed64,json=mapBoolFixed64" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolSfixed64       map[bool]int64                 `protobuf:"bytes,611,rep,name=map_bool_sfixed64,json=mapBoolSfixed64" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolDouble         map[bool]float64               `protobuf:"bytes,612,rep,name=map_bool_double,json=mapBoolDouble" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolString         map[bool]string                `protobuf:"bytes,613,rep,name=map_bool_string,json=mapBoolString" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolBytes          map[bool][]byte                `protobuf:"bytes,614,rep,name=map_bool_bytes,json=mapBoolBytes" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolChildEnum      map[bool]Message_ChildEnum     `protobuf:"bytes,615,rep,name=map_bool_child_enum,json=mapBoolChildEnum" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20180814.Message_ChildEnum"`
-	MapBoolChildMessage   map[bool]*Message_ChildMessage `protobuf:"bytes,616,rep,name=map_bool_child_message,json=mapBoolChildMessage" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolNamedGroup     map[bool]*Message_NamedGroup   `protobuf:"bytes,617,rep,name=map_bool_named_group,json=mapBoolNamedGroup" json:"map_bool_named_group,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolSiblingEnum    map[bool]SiblingEnum           `protobuf:"bytes,618,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20180814.SiblingEnum"`
-	MapBoolSiblingMessage map[bool]*SiblingMessage       `protobuf:"bytes,619,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapInt32Bool          map[int32]bool                 `protobuf:"bytes,620,rep,name=map_int32_bool,json=mapInt32Bool" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint32Bool         map[int32]bool                 `protobuf:"bytes,621,rep,name=map_sint32_bool,json=mapSint32Bool" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint32Bool         map[uint32]bool                `protobuf:"bytes,622,rep,name=map_uint32_bool,json=mapUint32Bool" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapInt64Bool          map[int64]bool                 `protobuf:"bytes,623,rep,name=map_int64_bool,json=mapInt64Bool" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint64Bool         map[int64]bool                 `protobuf:"bytes,624,rep,name=map_sint64_bool,json=mapSint64Bool" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint64Bool         map[uint64]bool                `protobuf:"bytes,625,rep,name=map_uint64_bool,json=mapUint64Bool" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapFixed32Bool        map[uint32]bool                `protobuf:"bytes,626,rep,name=map_fixed32_bool,json=mapFixed32Bool" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapStringBool         map[string]bool                `protobuf:"bytes,627,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	// Oneof fields.
-	//
-	// Types that are valid to be assigned to OneofUnion:
-	//	*Message_OneofBool
-	//	*Message_OneofInt32
-	//	*Message_OneofSint32
-	//	*Message_OneofUint32
-	//	*Message_OneofInt64
-	//	*Message_OneofSint64
-	//	*Message_OneofUint64
-	//	*Message_OneofFixed32
-	//	*Message_OneofSfixed32
-	//	*Message_OneofFloat
-	//	*Message_OneofFixed64
-	//	*Message_OneofSfixed64
-	//	*Message_OneofDouble
-	//	*Message_OneofString
-	//	*Message_OneofBytes
-	//	*Message_OneofChildEnum
-	//	*Message_OneofChildMessage
-	//	*Message_OneofNamedGroup
-	//	*Message_OneofSiblingEnum
-	//	*Message_OneofSiblingMessage
-	//	*Message_Oneofgroup
-	//	*Message_OneofString1
-	//	*Message_OneofString2
-	//	*Message_OneofString3
-	OneofUnion isMessage_OneofUnion `protobuf_oneof:"oneof_union"`
-	// Oneof default fields.
-	//
-	// Types that are valid to be assigned to OneofDefaultedUnion:
-	//	*Message_OneofDefaultedBool
-	//	*Message_OneofDefaultedInt32
-	//	*Message_OneofDefaultedSint32
-	//	*Message_OneofDefaultedUint32
-	//	*Message_OneofDefaultedInt64
-	//	*Message_OneofDefaultedSint64
-	//	*Message_OneofDefaultedUint64
-	//	*Message_OneofDefaultedFixed32
-	//	*Message_OneofDefaultedSfixed32
-	//	*Message_OneofDefaultedFloat
-	//	*Message_OneofDefaultedFixed64
-	//	*Message_OneofDefaultedSfixed64
-	//	*Message_OneofDefaultedDouble
-	//	*Message_OneofDefaultedString
-	//	*Message_OneofDefaultedBytes
-	//	*Message_OneofDefaultedChildEnum
-	//	*Message_OneofDefaultedSiblingEnum
-	OneofDefaultedUnion          isMessage_OneofDefaultedUnion `protobuf_oneof:"oneof_defaulted_union"`
-	XXX_NoUnkeyedLiteral         struct{}                      `json:"-"`
-	proto.XXX_InternalExtensions `json:"-"`
-	XXX_unrecognized             []byte `json:"-"`
-	XXX_sizecache                int32  `json:"-"`
-}
-
-func (m *Message) Reset()         { *m = Message{} }
-func (m *Message) String() string { return proto.CompactTextString(m) }
-func (*Message) ProtoMessage()    {}
-func (*Message) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_98b5676fa5dea40d, []int{1}
-}
-
-var extRange_Message = []proto.ExtensionRange{
-	{Start: 10000, End: 536870911},
-}
-
-func (*Message) ExtensionRangeArray() []proto.ExtensionRange {
-	return extRange_Message
-}
-func (m *Message) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message.Unmarshal(m, b)
-}
-func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message.Marshal(b, m, deterministic)
-}
-func (dst *Message) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message.Merge(dst, src)
-}
-func (m *Message) XXX_Size() int {
-	return xxx_messageInfo_Message.Size(m)
-}
-func (m *Message) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message proto.InternalMessageInfo
-
-const Default_Message_DefaultedBool bool = true
-const Default_Message_DefaultedInt32 int32 = -12345
-const Default_Message_DefaultedSint32 int32 = -3200
-const Default_Message_DefaultedUint32 uint32 = 3200
-const Default_Message_DefaultedInt64 int64 = -123456789
-const Default_Message_DefaultedSint64 int64 = -6400
-const Default_Message_DefaultedUint64 uint64 = 6400
-const Default_Message_DefaultedFixed32 uint32 = 320000
-const Default_Message_DefaultedSfixed32 int32 = -320000
-const Default_Message_DefaultedFloat float32 = 3.14159
-const Default_Message_DefaultedFixed64 uint64 = 640000
-const Default_Message_DefaultedSfixed64 int64 = -640000
-const Default_Message_DefaultedDouble float64 = 3.14159265359
-const Default_Message_DefaultedString string = "hello, \"world!\"\n"
-
-var Default_Message_DefaultedBytes []byte = []byte("deadޭ\xbe\xefbeef")
-
-const Default_Message_DefaultedChildEnum Message_ChildEnum = Message_ALPHA
-const Default_Message_DefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
-const Default_Message_RequiredDefaultedBool bool = true
-const Default_Message_RequiredDefaultedInt32 int32 = -12345
-const Default_Message_RequiredDefaultedSint32 int32 = -3200
-const Default_Message_RequiredDefaultedUint32 uint32 = 3200
-const Default_Message_RequiredDefaultedInt64 int64 = -123456789
-const Default_Message_RequiredDefaultedSint64 int64 = -6400
-const Default_Message_RequiredDefaultedUint64 uint64 = 6400
-const Default_Message_RequiredDefaultedFixed32 uint32 = 320000
-const Default_Message_RequiredDefaultedSfixed32 int32 = -320000
-const Default_Message_RequiredDefaultedFloat float32 = 3.14159
-const Default_Message_RequiredDefaultedFixed64 uint64 = 640000
-const Default_Message_RequiredDefaultedSfixed64 int64 = -640000
-const Default_Message_RequiredDefaultedDouble float64 = 3.14159265359
-const Default_Message_RequiredDefaultedString string = "hello, \"world!\"\n"
-
-var Default_Message_RequiredDefaultedBytes []byte = []byte("deadޭ\xbe\xefbeef")
-
-const Default_Message_RequiredDefaultedChildEnum Message_ChildEnum = Message_ALPHA
-const Default_Message_RequiredDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
-const Default_Message_OneofDefaultedBool bool = true
-const Default_Message_OneofDefaultedInt32 int32 = -12345
-const Default_Message_OneofDefaultedSint32 int32 = -3200
-const Default_Message_OneofDefaultedUint32 uint32 = 3200
-const Default_Message_OneofDefaultedInt64 int64 = -123456789
-const Default_Message_OneofDefaultedSint64 int64 = -6400
-const Default_Message_OneofDefaultedUint64 uint64 = 6400
-const Default_Message_OneofDefaultedFixed32 uint32 = 320000
-const Default_Message_OneofDefaultedSfixed32 int32 = -320000
-const Default_Message_OneofDefaultedFloat float32 = 3.14159
-const Default_Message_OneofDefaultedFixed64 uint64 = 640000
-const Default_Message_OneofDefaultedSfixed64 int64 = -640000
-const Default_Message_OneofDefaultedDouble float64 = 3.14159265359
-const Default_Message_OneofDefaultedString string = "hello, \"world!\"\n"
-
-var Default_Message_OneofDefaultedBytes []byte = []byte("deadޭ\xbe\xefbeef")
-
-const Default_Message_OneofDefaultedChildEnum Message_ChildEnum = Message_ALPHA
-const Default_Message_OneofDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
-
-func (m *Message) GetNamedgroup() *Message_NamedGroup {
-	if m != nil {
-		return m.Namedgroup
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalBool() bool {
-	if m != nil && m.OptionalBool != nil {
-		return *m.OptionalBool
-	}
-	return false
-}
-
-func (m *Message) GetOptionalInt32() int32 {
-	if m != nil && m.OptionalInt32 != nil {
-		return *m.OptionalInt32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSint32() int32 {
-	if m != nil && m.OptionalSint32 != nil {
-		return *m.OptionalSint32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalUint32() uint32 {
-	if m != nil && m.OptionalUint32 != nil {
-		return *m.OptionalUint32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalInt64() int64 {
-	if m != nil && m.OptionalInt64 != nil {
-		return *m.OptionalInt64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSint64() int64 {
-	if m != nil && m.OptionalSint64 != nil {
-		return *m.OptionalSint64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalUint64() uint64 {
-	if m != nil && m.OptionalUint64 != nil {
-		return *m.OptionalUint64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFixed32() uint32 {
-	if m != nil && m.OptionalFixed32 != nil {
-		return *m.OptionalFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSfixed32() int32 {
-	if m != nil && m.OptionalSfixed32 != nil {
-		return *m.OptionalSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFloat() float32 {
-	if m != nil && m.OptionalFloat != nil {
-		return *m.OptionalFloat
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFixed64() uint64 {
-	if m != nil && m.OptionalFixed64 != nil {
-		return *m.OptionalFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSfixed64() int64 {
-	if m != nil && m.OptionalSfixed64 != nil {
-		return *m.OptionalSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalDouble() float64 {
-	if m != nil && m.OptionalDouble != nil {
-		return *m.OptionalDouble
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalString() string {
-	if m != nil && m.OptionalString != nil {
-		return *m.OptionalString
-	}
-	return ""
-}
-
-func (m *Message) GetOptionalBytes() []byte {
-	if m != nil {
-		return m.OptionalBytes
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalChildEnum() Message_ChildEnum {
-	if m != nil && m.OptionalChildEnum != nil {
-		return *m.OptionalChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetOptionalChildMessage() *Message_ChildMessage {
-	if m != nil {
-		return m.OptionalChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalNamedGroup() *Message_NamedGroup {
-	if m != nil {
-		return m.OptionalNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalSiblingEnum() SiblingEnum {
-	if m != nil && m.OptionalSiblingEnum != nil {
-		return *m.OptionalSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetOptionalSiblingMessage() *SiblingMessage {
-	if m != nil {
-		return m.OptionalSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalgroup() *Message_OptionalGroup {
-	if m != nil {
-		return m.Optionalgroup
-	}
-	return nil
-}
-
-func (m *Message) GetDefaultedBool() bool {
-	if m != nil && m.DefaultedBool != nil {
-		return *m.DefaultedBool
-	}
-	return Default_Message_DefaultedBool
-}
-
-func (m *Message) GetDefaultedInt32() int32 {
-	if m != nil && m.DefaultedInt32 != nil {
-		return *m.DefaultedInt32
-	}
-	return Default_Message_DefaultedInt32
-}
-
-func (m *Message) GetDefaultedSint32() int32 {
-	if m != nil && m.DefaultedSint32 != nil {
-		return *m.DefaultedSint32
-	}
-	return Default_Message_DefaultedSint32
-}
-
-func (m *Message) GetDefaultedUint32() uint32 {
-	if m != nil && m.DefaultedUint32 != nil {
-		return *m.DefaultedUint32
-	}
-	return Default_Message_DefaultedUint32
-}
-
-func (m *Message) GetDefaultedInt64() int64 {
-	if m != nil && m.DefaultedInt64 != nil {
-		return *m.DefaultedInt64
-	}
-	return Default_Message_DefaultedInt64
-}
-
-func (m *Message) GetDefaultedSint64() int64 {
-	if m != nil && m.DefaultedSint64 != nil {
-		return *m.DefaultedSint64
-	}
-	return Default_Message_DefaultedSint64
-}
-
-func (m *Message) GetDefaultedUint64() uint64 {
-	if m != nil && m.DefaultedUint64 != nil {
-		return *m.DefaultedUint64
-	}
-	return Default_Message_DefaultedUint64
-}
-
-func (m *Message) GetDefaultedFixed32() uint32 {
-	if m != nil && m.DefaultedFixed32 != nil {
-		return *m.DefaultedFixed32
-	}
-	return Default_Message_DefaultedFixed32
-}
-
-func (m *Message) GetDefaultedSfixed32() int32 {
-	if m != nil && m.DefaultedSfixed32 != nil {
-		return *m.DefaultedSfixed32
-	}
-	return Default_Message_DefaultedSfixed32
-}
-
-func (m *Message) GetDefaultedFloat() float32 {
-	if m != nil && m.DefaultedFloat != nil {
-		return *m.DefaultedFloat
-	}
-	return Default_Message_DefaultedFloat
-}
-
-func (m *Message) GetDefaultedFixed64() uint64 {
-	if m != nil && m.DefaultedFixed64 != nil {
-		return *m.DefaultedFixed64
-	}
-	return Default_Message_DefaultedFixed64
-}
-
-func (m *Message) GetDefaultedSfixed64() int64 {
-	if m != nil && m.DefaultedSfixed64 != nil {
-		return *m.DefaultedSfixed64
-	}
-	return Default_Message_DefaultedSfixed64
-}
-
-func (m *Message) GetDefaultedDouble() float64 {
-	if m != nil && m.DefaultedDouble != nil {
-		return *m.DefaultedDouble
-	}
-	return Default_Message_DefaultedDouble
-}
-
-func (m *Message) GetDefaultedString() string {
-	if m != nil && m.DefaultedString != nil {
-		return *m.DefaultedString
-	}
-	return Default_Message_DefaultedString
-}
-
-func (m *Message) GetDefaultedBytes() []byte {
-	if m != nil && m.DefaultedBytes != nil {
-		return m.DefaultedBytes
-	}
-	return append([]byte(nil), Default_Message_DefaultedBytes...)
-}
-
-func (m *Message) GetDefaultedChildEnum() Message_ChildEnum {
-	if m != nil && m.DefaultedChildEnum != nil {
-		return *m.DefaultedChildEnum
-	}
-	return Default_Message_DefaultedChildEnum
-}
-
-func (m *Message) GetDefaultedSiblingEnum() SiblingEnum {
-	if m != nil && m.DefaultedSiblingEnum != nil {
-		return *m.DefaultedSiblingEnum
-	}
-	return Default_Message_DefaultedSiblingEnum
-}
-
-func (m *Message) GetRequiredBool() bool {
-	if m != nil && m.RequiredBool != nil {
-		return *m.RequiredBool
-	}
-	return false
-}
-
-func (m *Message) GetRequiredInt32() int32 {
-	if m != nil && m.RequiredInt32 != nil {
-		return *m.RequiredInt32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSint32() int32 {
-	if m != nil && m.RequiredSint32 != nil {
-		return *m.RequiredSint32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredUint32() uint32 {
-	if m != nil && m.RequiredUint32 != nil {
-		return *m.RequiredUint32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredInt64() int64 {
-	if m != nil && m.RequiredInt64 != nil {
-		return *m.RequiredInt64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSint64() int64 {
-	if m != nil && m.RequiredSint64 != nil {
-		return *m.RequiredSint64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredUint64() uint64 {
-	if m != nil && m.RequiredUint64 != nil {
-		return *m.RequiredUint64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredFixed32() uint32 {
-	if m != nil && m.RequiredFixed32 != nil {
-		return *m.RequiredFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSfixed32() int32 {
-	if m != nil && m.RequiredSfixed32 != nil {
-		return *m.RequiredSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredFloat() float32 {
-	if m != nil && m.RequiredFloat != nil {
-		return *m.RequiredFloat
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredFixed64() uint64 {
-	if m != nil && m.RequiredFixed64 != nil {
-		return *m.RequiredFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSfixed64() int64 {
-	if m != nil && m.RequiredSfixed64 != nil {
-		return *m.RequiredSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredDouble() float64 {
-	if m != nil && m.RequiredDouble != nil {
-		return *m.RequiredDouble
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredString() string {
-	if m != nil && m.RequiredString != nil {
-		return *m.RequiredString
-	}
-	return ""
-}
-
-func (m *Message) GetRequiredBytes() []byte {
-	if m != nil {
-		return m.RequiredBytes
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredChildEnum() Message_ChildEnum {
-	if m != nil && m.RequiredChildEnum != nil {
-		return *m.RequiredChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetRequiredChildMessage() *Message_ChildMessage {
-	if m != nil {
-		return m.RequiredChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredNamedGroup() *Message_NamedGroup {
-	if m != nil {
-		return m.RequiredNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredSiblingEnum() SiblingEnum {
-	if m != nil && m.RequiredSiblingEnum != nil {
-		return *m.RequiredSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetRequiredSiblingMessage() *SiblingMessage {
-	if m != nil {
-		return m.RequiredSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredgroup() *Message_RequiredGroup {
-	if m != nil {
-		return m.Requiredgroup
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredDefaultedBool() bool {
-	if m != nil && m.RequiredDefaultedBool != nil {
-		return *m.RequiredDefaultedBool
-	}
-	return Default_Message_RequiredDefaultedBool
-}
-
-func (m *Message) GetRequiredDefaultedInt32() int32 {
-	if m != nil && m.RequiredDefaultedInt32 != nil {
-		return *m.RequiredDefaultedInt32
-	}
-	return Default_Message_RequiredDefaultedInt32
-}
-
-func (m *Message) GetRequiredDefaultedSint32() int32 {
-	if m != nil && m.RequiredDefaultedSint32 != nil {
-		return *m.RequiredDefaultedSint32
-	}
-	return Default_Message_RequiredDefaultedSint32
-}
-
-func (m *Message) GetRequiredDefaultedUint32() uint32 {
-	if m != nil && m.RequiredDefaultedUint32 != nil {
-		return *m.RequiredDefaultedUint32
-	}
-	return Default_Message_RequiredDefaultedUint32
-}
-
-func (m *Message) GetRequiredDefaultedInt64() int64 {
-	if m != nil && m.RequiredDefaultedInt64 != nil {
-		return *m.RequiredDefaultedInt64
-	}
-	return Default_Message_RequiredDefaultedInt64
-}
-
-func (m *Message) GetRequiredDefaultedSint64() int64 {
-	if m != nil && m.RequiredDefaultedSint64 != nil {
-		return *m.RequiredDefaultedSint64
-	}
-	return Default_Message_RequiredDefaultedSint64
-}
-
-func (m *Message) GetRequiredDefaultedUint64() uint64 {
-	if m != nil && m.RequiredDefaultedUint64 != nil {
-		return *m.RequiredDefaultedUint64
-	}
-	return Default_Message_RequiredDefaultedUint64
-}
-
-func (m *Message) GetRequiredDefaultedFixed32() uint32 {
-	if m != nil && m.RequiredDefaultedFixed32 != nil {
-		return *m.RequiredDefaultedFixed32
-	}
-	return Default_Message_RequiredDefaultedFixed32
-}
-
-func (m *Message) GetRequiredDefaultedSfixed32() int32 {
-	if m != nil && m.RequiredDefaultedSfixed32 != nil {
-		return *m.RequiredDefaultedSfixed32
-	}
-	return Default_Message_RequiredDefaultedSfixed32
-}
-
-func (m *Message) GetRequiredDefaultedFloat() float32 {
-	if m != nil && m.RequiredDefaultedFloat != nil {
-		return *m.RequiredDefaultedFloat
-	}
-	return Default_Message_RequiredDefaultedFloat
-}
-
-func (m *Message) GetRequiredDefaultedFixed64() uint64 {
-	if m != nil && m.RequiredDefaultedFixed64 != nil {
-		return *m.RequiredDefaultedFixed64
-	}
-	return Default_Message_RequiredDefaultedFixed64
-}
-
-func (m *Message) GetRequiredDefaultedSfixed64() int64 {
-	if m != nil && m.RequiredDefaultedSfixed64 != nil {
-		return *m.RequiredDefaultedSfixed64
-	}
-	return Default_Message_RequiredDefaultedSfixed64
-}
-
-func (m *Message) GetRequiredDefaultedDouble() float64 {
-	if m != nil && m.RequiredDefaultedDouble != nil {
-		return *m.RequiredDefaultedDouble
-	}
-	return Default_Message_RequiredDefaultedDouble
-}
-
-func (m *Message) GetRequiredDefaultedString() string {
-	if m != nil && m.RequiredDefaultedString != nil {
-		return *m.RequiredDefaultedString
-	}
-	return Default_Message_RequiredDefaultedString
-}
-
-func (m *Message) GetRequiredDefaultedBytes() []byte {
-	if m != nil && m.RequiredDefaultedBytes != nil {
-		return m.RequiredDefaultedBytes
-	}
-	return append([]byte(nil), Default_Message_RequiredDefaultedBytes...)
-}
-
-func (m *Message) GetRequiredDefaultedChildEnum() Message_ChildEnum {
-	if m != nil && m.RequiredDefaultedChildEnum != nil {
-		return *m.RequiredDefaultedChildEnum
-	}
-	return Default_Message_RequiredDefaultedChildEnum
-}
-
-func (m *Message) GetRequiredDefaultedSiblingEnum() SiblingEnum {
-	if m != nil && m.RequiredDefaultedSiblingEnum != nil {
-		return *m.RequiredDefaultedSiblingEnum
-	}
-	return Default_Message_RequiredDefaultedSiblingEnum
-}
-
-func (m *Message) GetRepeatedBool() []bool {
-	if m != nil {
-		return m.RepeatedBool
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedInt32() []int32 {
-	if m != nil {
-		return m.RepeatedInt32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSint32() []int32 {
-	if m != nil {
-		return m.RepeatedSint32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedUint32() []uint32 {
-	if m != nil {
-		return m.RepeatedUint32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedInt64() []int64 {
-	if m != nil {
-		return m.RepeatedInt64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSint64() []int64 {
-	if m != nil {
-		return m.RepeatedSint64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedUint64() []uint64 {
-	if m != nil {
-		return m.RepeatedUint64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFixed32() []uint32 {
-	if m != nil {
-		return m.RepeatedFixed32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSfixed32() []int32 {
-	if m != nil {
-		return m.RepeatedSfixed32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFloat() []float32 {
-	if m != nil {
-		return m.RepeatedFloat
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFixed64() []uint64 {
-	if m != nil {
-		return m.RepeatedFixed64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSfixed64() []int64 {
-	if m != nil {
-		return m.RepeatedSfixed64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedDouble() []float64 {
-	if m != nil {
-		return m.RepeatedDouble
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedString() []string {
-	if m != nil {
-		return m.RepeatedString
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedBytes() [][]byte {
-	if m != nil {
-		return m.RepeatedBytes
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedChildEnum() []Message_ChildEnum {
-	if m != nil {
-		return m.RepeatedChildEnum
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedChildMessage() []*Message_ChildMessage {
-	if m != nil {
-		return m.RepeatedChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedNamedGroup() []*Message_NamedGroup {
-	if m != nil {
-		return m.RepeatedNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSiblingEnum() []SiblingEnum {
-	if m != nil {
-		return m.RepeatedSiblingEnum
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSiblingMessage() []*SiblingMessage {
-	if m != nil {
-		return m.RepeatedSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedgroup() []*Message_RepeatedGroup {
-	if m != nil {
-		return m.Repeatedgroup
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBool() map[bool]bool {
-	if m != nil {
-		return m.MapBoolBool
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolInt32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolUint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolInt64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolUint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolFixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSfixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFloat() map[bool]float32 {
-	if m != nil {
-		return m.MapBoolFloat
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolFixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSfixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolDouble() map[bool]float64 {
-	if m != nil {
-		return m.MapBoolDouble
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolString() map[bool]string {
-	if m != nil {
-		return m.MapBoolString
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBytes() map[bool][]byte {
-	if m != nil {
-		return m.MapBoolBytes
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildEnum() map[bool]Message_ChildEnum {
-	if m != nil {
-		return m.MapBoolChildEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildMessage() map[bool]*Message_ChildMessage {
-	if m != nil {
-		return m.MapBoolChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolNamedGroup() map[bool]*Message_NamedGroup {
-	if m != nil {
-		return m.MapBoolNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingEnum() map[bool]SiblingEnum {
-	if m != nil {
-		return m.MapBoolSiblingEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingMessage() map[bool]*SiblingMessage {
-	if m != nil {
-		return m.MapBoolSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapInt32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapSint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapUint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapInt64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapSint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint64Bool() map[uint64]bool {
-	if m != nil {
-		return m.MapUint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapFixed32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapFixed32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapStringBool() map[string]bool {
-	if m != nil {
-		return m.MapStringBool
-	}
-	return nil
-}
-
-type isMessage_OneofUnion interface {
-	isMessage_OneofUnion()
-}
-
-type Message_OneofBool struct {
-	OneofBool bool `protobuf:"varint,700,opt,name=oneof_bool,json=oneofBool,oneof"`
-}
-
-type Message_OneofInt32 struct {
-	OneofInt32 int32 `protobuf:"varint,701,opt,name=oneof_int32,json=oneofInt32,oneof"`
-}
-
-type Message_OneofSint32 struct {
-	OneofSint32 int32 `protobuf:"zigzag32,702,opt,name=oneof_sint32,json=oneofSint32,oneof"`
-}
-
-type Message_OneofUint32 struct {
-	OneofUint32 uint32 `protobuf:"varint,703,opt,name=oneof_uint32,json=oneofUint32,oneof"`
-}
-
-type Message_OneofInt64 struct {
-	OneofInt64 int64 `protobuf:"varint,704,opt,name=oneof_int64,json=oneofInt64,oneof"`
-}
-
-type Message_OneofSint64 struct {
-	OneofSint64 int64 `protobuf:"zigzag64,705,opt,name=oneof_sint64,json=oneofSint64,oneof"`
-}
-
-type Message_OneofUint64 struct {
-	OneofUint64 uint64 `protobuf:"varint,706,opt,name=oneof_uint64,json=oneofUint64,oneof"`
-}
-
-type Message_OneofFixed32 struct {
-	OneofFixed32 uint32 `protobuf:"fixed32,707,opt,name=oneof_fixed32,json=oneofFixed32,oneof"`
-}
-
-type Message_OneofSfixed32 struct {
-	OneofSfixed32 int32 `protobuf:"fixed32,708,opt,name=oneof_sfixed32,json=oneofSfixed32,oneof"`
-}
-
-type Message_OneofFloat struct {
-	OneofFloat float32 `protobuf:"fixed32,709,opt,name=oneof_float,json=oneofFloat,oneof"`
-}
-
-type Message_OneofFixed64 struct {
-	OneofFixed64 uint64 `protobuf:"fixed64,710,opt,name=oneof_fixed64,json=oneofFixed64,oneof"`
-}
-
-type Message_OneofSfixed64 struct {
-	OneofSfixed64 int64 `protobuf:"fixed64,711,opt,name=oneof_sfixed64,json=oneofSfixed64,oneof"`
-}
-
-type Message_OneofDouble struct {
-	OneofDouble float64 `protobuf:"fixed64,712,opt,name=oneof_double,json=oneofDouble,oneof"`
-}
-
-type Message_OneofString struct {
-	OneofString string `protobuf:"bytes,713,opt,name=oneof_string,json=oneofString,oneof"`
-}
-
-type Message_OneofBytes struct {
-	OneofBytes []byte `protobuf:"bytes,714,opt,name=oneof_bytes,json=oneofBytes,oneof"`
-}
-
-type Message_OneofChildEnum struct {
-	OneofChildEnum Message_ChildEnum `protobuf:"varint,715,opt,name=oneof_child_enum,json=oneofChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum,oneof"`
-}
-
-type Message_OneofChildMessage struct {
-	OneofChildMessage *Message_ChildMessage `protobuf:"bytes,716,opt,name=oneof_child_message,json=oneofChildMessage,oneof"`
-}
-
-type Message_OneofNamedGroup struct {
-	OneofNamedGroup *Message_NamedGroup `protobuf:"bytes,717,opt,name=oneof_named_group,json=oneofNamedGroup,oneof"`
-}
-
-type Message_OneofSiblingEnum struct {
-	OneofSiblingEnum SiblingEnum `protobuf:"varint,718,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum,oneof"`
-}
-
-type Message_OneofSiblingMessage struct {
-	OneofSiblingMessage *SiblingMessage `protobuf:"bytes,719,opt,name=oneof_sibling_message,json=oneofSiblingMessage,oneof"`
-}
-
-type Message_Oneofgroup struct {
-	Oneofgroup *Message_OneofGroup `protobuf:"group,720,opt,name=OneofGroup,json=oneofgroup,oneof"`
-}
-
-type Message_OneofString1 struct {
-	OneofString1 string `protobuf:"bytes,721,opt,name=oneof_string1,json=oneofString1,oneof"`
-}
-
-type Message_OneofString2 struct {
-	OneofString2 string `protobuf:"bytes,722,opt,name=oneof_string2,json=oneofString2,oneof"`
-}
-
-type Message_OneofString3 struct {
-	OneofString3 string `protobuf:"bytes,723,opt,name=oneof_string3,json=oneofString3,oneof"`
-}
-
-func (*Message_OneofBool) isMessage_OneofUnion() {}
-
-func (*Message_OneofInt32) isMessage_OneofUnion() {}
-
-func (*Message_OneofSint32) isMessage_OneofUnion() {}
-
-func (*Message_OneofUint32) isMessage_OneofUnion() {}
-
-func (*Message_OneofInt64) isMessage_OneofUnion() {}
-
-func (*Message_OneofSint64) isMessage_OneofUnion() {}
-
-func (*Message_OneofUint64) isMessage_OneofUnion() {}
-
-func (*Message_OneofFixed32) isMessage_OneofUnion() {}
-
-func (*Message_OneofSfixed32) isMessage_OneofUnion() {}
-
-func (*Message_OneofFloat) isMessage_OneofUnion() {}
-
-func (*Message_OneofFixed64) isMessage_OneofUnion() {}
-
-func (*Message_OneofSfixed64) isMessage_OneofUnion() {}
-
-func (*Message_OneofDouble) isMessage_OneofUnion() {}
-
-func (*Message_OneofString) isMessage_OneofUnion() {}
-
-func (*Message_OneofBytes) isMessage_OneofUnion() {}
-
-func (*Message_OneofChildEnum) isMessage_OneofUnion() {}
-
-func (*Message_OneofChildMessage) isMessage_OneofUnion() {}
-
-func (*Message_OneofNamedGroup) isMessage_OneofUnion() {}
-
-func (*Message_OneofSiblingEnum) isMessage_OneofUnion() {}
-
-func (*Message_OneofSiblingMessage) isMessage_OneofUnion() {}
-
-func (*Message_Oneofgroup) isMessage_OneofUnion() {}
-
-func (*Message_OneofString1) isMessage_OneofUnion() {}
-
-func (*Message_OneofString2) isMessage_OneofUnion() {}
-
-func (*Message_OneofString3) isMessage_OneofUnion() {}
-
-func (m *Message) GetOneofUnion() isMessage_OneofUnion {
-	if m != nil {
-		return m.OneofUnion
-	}
-	return nil
-}
-
-func (m *Message) GetOneofBool() bool {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBool); ok {
-		return x.OneofBool
-	}
-	return false
-}
-
-func (m *Message) GetOneofInt32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt32); ok {
-		return x.OneofInt32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint32); ok {
-		return x.OneofSint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint32); ok {
-		return x.OneofUint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofInt64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt64); ok {
-		return x.OneofInt64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint64); ok {
-		return x.OneofSint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint64); ok {
-		return x.OneofUint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed32); ok {
-		return x.OneofFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed32); ok {
-		return x.OneofSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFloat() float32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFloat); ok {
-		return x.OneofFloat
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed64); ok {
-		return x.OneofFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed64); ok {
-		return x.OneofSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofDouble() float64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofDouble); ok {
-		return x.OneofDouble
-	}
-	return 0
-}
-
-func (m *Message) GetOneofString() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString); ok {
-		return x.OneofString
-	}
-	return ""
-}
-
-func (m *Message) GetOneofBytes() []byte {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBytes); ok {
-		return x.OneofBytes
-	}
-	return nil
-}
-
-func (m *Message) GetOneofChildEnum() Message_ChildEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildEnum); ok {
-		return x.OneofChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetOneofChildMessage() *Message_ChildMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildMessage); ok {
-		return x.OneofChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofNamedGroup() *Message_NamedGroup {
-	if x, ok := m.GetOneofUnion().(*Message_OneofNamedGroup); ok {
-		return x.OneofNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetOneofSiblingEnum() SiblingEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingEnum); ok {
-		return x.OneofSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetOneofSiblingMessage() *SiblingMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingMessage); ok {
-		return x.OneofSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofgroup() *Message_OneofGroup {
-	if x, ok := m.GetOneofUnion().(*Message_Oneofgroup); ok {
-		return x.Oneofgroup
-	}
-	return nil
-}
-
-func (m *Message) GetOneofString1() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString1); ok {
-		return x.OneofString1
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString2() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString2); ok {
-		return x.OneofString2
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString3() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString3); ok {
-		return x.OneofString3
-	}
-	return ""
-}
-
-type isMessage_OneofDefaultedUnion interface {
-	isMessage_OneofDefaultedUnion()
-}
-
-type Message_OneofDefaultedBool struct {
-	OneofDefaultedBool bool `protobuf:"varint,800,opt,name=oneof_defaulted_bool,json=oneofDefaultedBool,oneof,def=1"`
-}
-
-type Message_OneofDefaultedInt32 struct {
-	OneofDefaultedInt32 int32 `protobuf:"varint,801,opt,name=oneof_defaulted_int32,json=oneofDefaultedInt32,oneof,def=-12345"`
-}
-
-type Message_OneofDefaultedSint32 struct {
-	OneofDefaultedSint32 int32 `protobuf:"zigzag32,802,opt,name=oneof_defaulted_sint32,json=oneofDefaultedSint32,oneof,def=-3200"`
-}
-
-type Message_OneofDefaultedUint32 struct {
-	OneofDefaultedUint32 uint32 `protobuf:"varint,803,opt,name=oneof_defaulted_uint32,json=oneofDefaultedUint32,oneof,def=3200"`
-}
-
-type Message_OneofDefaultedInt64 struct {
-	OneofDefaultedInt64 int64 `protobuf:"varint,804,opt,name=oneof_defaulted_int64,json=oneofDefaultedInt64,oneof,def=-123456789"`
-}
-
-type Message_OneofDefaultedSint64 struct {
-	OneofDefaultedSint64 int64 `protobuf:"zigzag64,805,opt,name=oneof_defaulted_sint64,json=oneofDefaultedSint64,oneof,def=-6400"`
-}
-
-type Message_OneofDefaultedUint64 struct {
-	OneofDefaultedUint64 uint64 `protobuf:"varint,806,opt,name=oneof_defaulted_uint64,json=oneofDefaultedUint64,oneof,def=6400"`
-}
-
-type Message_OneofDefaultedFixed32 struct {
-	OneofDefaultedFixed32 uint32 `protobuf:"fixed32,807,opt,name=oneof_defaulted_fixed32,json=oneofDefaultedFixed32,oneof,def=320000"`
-}
-
-type Message_OneofDefaultedSfixed32 struct {
-	OneofDefaultedSfixed32 int32 `protobuf:"fixed32,808,opt,name=oneof_defaulted_sfixed32,json=oneofDefaultedSfixed32,oneof,def=-320000"`
-}
-
-type Message_OneofDefaultedFloat struct {
-	OneofDefaultedFloat float32 `protobuf:"fixed32,809,opt,name=oneof_defaulted_float,json=oneofDefaultedFloat,oneof,def=3.14159"`
-}
-
-type Message_OneofDefaultedFixed64 struct {
-	OneofDefaultedFixed64 uint64 `protobuf:"fixed64,810,opt,name=oneof_defaulted_fixed64,json=oneofDefaultedFixed64,oneof,def=640000"`
-}
-
-type Message_OneofDefaultedSfixed64 struct {
-	OneofDefaultedSfixed64 int64 `protobuf:"fixed64,811,opt,name=oneof_defaulted_sfixed64,json=oneofDefaultedSfixed64,oneof,def=-640000"`
-}
-
-type Message_OneofDefaultedDouble struct {
-	OneofDefaultedDouble float64 `protobuf:"fixed64,812,opt,name=oneof_defaulted_double,json=oneofDefaultedDouble,oneof,def=3.14159265359"`
-}
-
-type Message_OneofDefaultedString struct {
-	OneofDefaultedString string `protobuf:"bytes,813,opt,name=oneof_defaulted_string,json=oneofDefaultedString,oneof,def=hello, \"world!\"\n"`
-}
-
-type Message_OneofDefaultedBytes struct {
-	OneofDefaultedBytes []byte `protobuf:"bytes,814,opt,name=oneof_defaulted_bytes,json=oneofDefaultedBytes,oneof,def=dead\\336\\255\\276\\357beef"`
-}
-
-type Message_OneofDefaultedChildEnum struct {
-	OneofDefaultedChildEnum Message_ChildEnum `protobuf:"varint,815,opt,name=oneof_defaulted_child_enum,json=oneofDefaultedChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum,oneof,def=0"`
-}
-
-type Message_OneofDefaultedSiblingEnum struct {
-	OneofDefaultedSiblingEnum SiblingEnum `protobuf:"varint,816,opt,name=oneof_defaulted_sibling_enum,json=oneofDefaultedSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum,oneof,def=0"`
-}
-
-func (*Message_OneofDefaultedBool) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedInt32) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedSint32) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedUint32) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedInt64) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedSint64) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedUint64) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedFixed32) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedSfixed32) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedFloat) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedFixed64) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedSfixed64) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedDouble) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedString) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedBytes) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedChildEnum) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedSiblingEnum) isMessage_OneofDefaultedUnion() {}
-
-func (m *Message) GetOneofDefaultedUnion() isMessage_OneofDefaultedUnion {
-	if m != nil {
-		return m.OneofDefaultedUnion
-	}
-	return nil
-}
-
-func (m *Message) GetOneofDefaultedBool() bool {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBool); ok {
-		return x.OneofDefaultedBool
-	}
-	return Default_Message_OneofDefaultedBool
-}
-
-func (m *Message) GetOneofDefaultedInt32() int32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt32); ok {
-		return x.OneofDefaultedInt32
-	}
-	return Default_Message_OneofDefaultedInt32
-}
-
-func (m *Message) GetOneofDefaultedSint32() int32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint32); ok {
-		return x.OneofDefaultedSint32
-	}
-	return Default_Message_OneofDefaultedSint32
-}
-
-func (m *Message) GetOneofDefaultedUint32() uint32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint32); ok {
-		return x.OneofDefaultedUint32
-	}
-	return Default_Message_OneofDefaultedUint32
-}
-
-func (m *Message) GetOneofDefaultedInt64() int64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt64); ok {
-		return x.OneofDefaultedInt64
-	}
-	return Default_Message_OneofDefaultedInt64
-}
-
-func (m *Message) GetOneofDefaultedSint64() int64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint64); ok {
-		return x.OneofDefaultedSint64
-	}
-	return Default_Message_OneofDefaultedSint64
-}
-
-func (m *Message) GetOneofDefaultedUint64() uint64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint64); ok {
-		return x.OneofDefaultedUint64
-	}
-	return Default_Message_OneofDefaultedUint64
-}
-
-func (m *Message) GetOneofDefaultedFixed32() uint32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed32); ok {
-		return x.OneofDefaultedFixed32
-	}
-	return Default_Message_OneofDefaultedFixed32
-}
-
-func (m *Message) GetOneofDefaultedSfixed32() int32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed32); ok {
-		return x.OneofDefaultedSfixed32
-	}
-	return Default_Message_OneofDefaultedSfixed32
-}
-
-func (m *Message) GetOneofDefaultedFloat() float32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFloat); ok {
-		return x.OneofDefaultedFloat
-	}
-	return Default_Message_OneofDefaultedFloat
-}
-
-func (m *Message) GetOneofDefaultedFixed64() uint64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed64); ok {
-		return x.OneofDefaultedFixed64
-	}
-	return Default_Message_OneofDefaultedFixed64
-}
-
-func (m *Message) GetOneofDefaultedSfixed64() int64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed64); ok {
-		return x.OneofDefaultedSfixed64
-	}
-	return Default_Message_OneofDefaultedSfixed64
-}
-
-func (m *Message) GetOneofDefaultedDouble() float64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedDouble); ok {
-		return x.OneofDefaultedDouble
-	}
-	return Default_Message_OneofDefaultedDouble
-}
-
-func (m *Message) GetOneofDefaultedString() string {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedString); ok {
-		return x.OneofDefaultedString
-	}
-	return Default_Message_OneofDefaultedString
-}
-
-func (m *Message) GetOneofDefaultedBytes() []byte {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBytes); ok {
-		return x.OneofDefaultedBytes
-	}
-	return append([]byte(nil), Default_Message_OneofDefaultedBytes...)
-}
-
-func (m *Message) GetOneofDefaultedChildEnum() Message_ChildEnum {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedChildEnum); ok {
-		return x.OneofDefaultedChildEnum
-	}
-	return Default_Message_OneofDefaultedChildEnum
-}
-
-func (m *Message) GetOneofDefaultedSiblingEnum() SiblingEnum {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSiblingEnum); ok {
-		return x.OneofDefaultedSiblingEnum
-	}
-	return Default_Message_OneofDefaultedSiblingEnum
-}
-
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*Message) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _Message_OneofMarshaler, _Message_OneofUnmarshaler, _Message_OneofSizer, []interface{}{
-		(*Message_OneofBool)(nil),
-		(*Message_OneofInt32)(nil),
-		(*Message_OneofSint32)(nil),
-		(*Message_OneofUint32)(nil),
-		(*Message_OneofInt64)(nil),
-		(*Message_OneofSint64)(nil),
-		(*Message_OneofUint64)(nil),
-		(*Message_OneofFixed32)(nil),
-		(*Message_OneofSfixed32)(nil),
-		(*Message_OneofFloat)(nil),
-		(*Message_OneofFixed64)(nil),
-		(*Message_OneofSfixed64)(nil),
-		(*Message_OneofDouble)(nil),
-		(*Message_OneofString)(nil),
-		(*Message_OneofBytes)(nil),
-		(*Message_OneofChildEnum)(nil),
-		(*Message_OneofChildMessage)(nil),
-		(*Message_OneofNamedGroup)(nil),
-		(*Message_OneofSiblingEnum)(nil),
-		(*Message_OneofSiblingMessage)(nil),
-		(*Message_Oneofgroup)(nil),
-		(*Message_OneofString1)(nil),
-		(*Message_OneofString2)(nil),
-		(*Message_OneofString3)(nil),
-		(*Message_OneofDefaultedBool)(nil),
-		(*Message_OneofDefaultedInt32)(nil),
-		(*Message_OneofDefaultedSint32)(nil),
-		(*Message_OneofDefaultedUint32)(nil),
-		(*Message_OneofDefaultedInt64)(nil),
-		(*Message_OneofDefaultedSint64)(nil),
-		(*Message_OneofDefaultedUint64)(nil),
-		(*Message_OneofDefaultedFixed32)(nil),
-		(*Message_OneofDefaultedSfixed32)(nil),
-		(*Message_OneofDefaultedFloat)(nil),
-		(*Message_OneofDefaultedFixed64)(nil),
-		(*Message_OneofDefaultedSfixed64)(nil),
-		(*Message_OneofDefaultedDouble)(nil),
-		(*Message_OneofDefaultedString)(nil),
-		(*Message_OneofDefaultedBytes)(nil),
-		(*Message_OneofDefaultedChildEnum)(nil),
-		(*Message_OneofDefaultedSiblingEnum)(nil),
-	}
-}
-
-func _Message_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*Message)
-	// oneof_union
-	switch x := m.OneofUnion.(type) {
-	case *Message_OneofBool:
-		t := uint64(0)
-		if x.OneofBool {
-			t = 1
-		}
-		b.EncodeVarint(700<<3 | proto.WireVarint)
-		b.EncodeVarint(t)
-	case *Message_OneofInt32:
-		b.EncodeVarint(701<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofInt32))
-	case *Message_OneofSint32:
-		b.EncodeVarint(702<<3 | proto.WireVarint)
-		b.EncodeZigzag32(uint64(x.OneofSint32))
-	case *Message_OneofUint32:
-		b.EncodeVarint(703<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofUint32))
-	case *Message_OneofInt64:
-		b.EncodeVarint(704<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofInt64))
-	case *Message_OneofSint64:
-		b.EncodeVarint(705<<3 | proto.WireVarint)
-		b.EncodeZigzag64(uint64(x.OneofSint64))
-	case *Message_OneofUint64:
-		b.EncodeVarint(706<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofUint64))
-	case *Message_OneofFixed32:
-		b.EncodeVarint(707<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofFixed32))
-	case *Message_OneofSfixed32:
-		b.EncodeVarint(708<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofSfixed32))
-	case *Message_OneofFloat:
-		b.EncodeVarint(709<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(math.Float32bits(x.OneofFloat)))
-	case *Message_OneofFixed64:
-		b.EncodeVarint(710<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofFixed64))
-	case *Message_OneofSfixed64:
-		b.EncodeVarint(711<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofSfixed64))
-	case *Message_OneofDouble:
-		b.EncodeVarint(712<<3 | proto.WireFixed64)
-		b.EncodeFixed64(math.Float64bits(x.OneofDouble))
-	case *Message_OneofString:
-		b.EncodeVarint(713<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString)
-	case *Message_OneofBytes:
-		b.EncodeVarint(714<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.OneofBytes)
-	case *Message_OneofChildEnum:
-		b.EncodeVarint(715<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofChildEnum))
-	case *Message_OneofChildMessage:
-		b.EncodeVarint(716<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofChildMessage); err != nil {
-			return err
-		}
-	case *Message_OneofNamedGroup:
-		b.EncodeVarint(717<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofNamedGroup); err != nil {
-			return err
-		}
-	case *Message_OneofSiblingEnum:
-		b.EncodeVarint(718<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofSiblingEnum))
-	case *Message_OneofSiblingMessage:
-		b.EncodeVarint(719<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofSiblingMessage); err != nil {
-			return err
-		}
-	case *Message_Oneofgroup:
-		b.EncodeVarint(720<<3 | proto.WireStartGroup)
-		if err := b.Marshal(x.Oneofgroup); err != nil {
-			return err
-		}
-		b.EncodeVarint(720<<3 | proto.WireEndGroup)
-	case *Message_OneofString1:
-		b.EncodeVarint(721<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString1)
-	case *Message_OneofString2:
-		b.EncodeVarint(722<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString2)
-	case *Message_OneofString3:
-		b.EncodeVarint(723<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString3)
-	case nil:
-	default:
-		return fmt.Errorf("Message.OneofUnion has unexpected type %T", x)
-	}
-	// oneof_defaulted_union
-	switch x := m.OneofDefaultedUnion.(type) {
-	case *Message_OneofDefaultedBool:
-		t := uint64(0)
-		if x.OneofDefaultedBool {
-			t = 1
-		}
-		b.EncodeVarint(800<<3 | proto.WireVarint)
-		b.EncodeVarint(t)
-	case *Message_OneofDefaultedInt32:
-		b.EncodeVarint(801<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedInt32))
-	case *Message_OneofDefaultedSint32:
-		b.EncodeVarint(802<<3 | proto.WireVarint)
-		b.EncodeZigzag32(uint64(x.OneofDefaultedSint32))
-	case *Message_OneofDefaultedUint32:
-		b.EncodeVarint(803<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedUint32))
-	case *Message_OneofDefaultedInt64:
-		b.EncodeVarint(804<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedInt64))
-	case *Message_OneofDefaultedSint64:
-		b.EncodeVarint(805<<3 | proto.WireVarint)
-		b.EncodeZigzag64(uint64(x.OneofDefaultedSint64))
-	case *Message_OneofDefaultedUint64:
-		b.EncodeVarint(806<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedUint64))
-	case *Message_OneofDefaultedFixed32:
-		b.EncodeVarint(807<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofDefaultedFixed32))
-	case *Message_OneofDefaultedSfixed32:
-		b.EncodeVarint(808<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofDefaultedSfixed32))
-	case *Message_OneofDefaultedFloat:
-		b.EncodeVarint(809<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(math.Float32bits(x.OneofDefaultedFloat)))
-	case *Message_OneofDefaultedFixed64:
-		b.EncodeVarint(810<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofDefaultedFixed64))
-	case *Message_OneofDefaultedSfixed64:
-		b.EncodeVarint(811<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofDefaultedSfixed64))
-	case *Message_OneofDefaultedDouble:
-		b.EncodeVarint(812<<3 | proto.WireFixed64)
-		b.EncodeFixed64(math.Float64bits(x.OneofDefaultedDouble))
-	case *Message_OneofDefaultedString:
-		b.EncodeVarint(813<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofDefaultedString)
-	case *Message_OneofDefaultedBytes:
-		b.EncodeVarint(814<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.OneofDefaultedBytes)
-	case *Message_OneofDefaultedChildEnum:
-		b.EncodeVarint(815<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedChildEnum))
-	case *Message_OneofDefaultedSiblingEnum:
-		b.EncodeVarint(816<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofDefaultedSiblingEnum))
-	case nil:
-	default:
-		return fmt.Errorf("Message.OneofDefaultedUnion has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _Message_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*Message)
-	switch tag {
-	case 700: // oneof_union.oneof_bool
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofBool{x != 0}
-		return true, err
-	case 701: // oneof_union.oneof_int32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofInt32{int32(x)}
-		return true, err
-	case 702: // oneof_union.oneof_sint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag32()
-		m.OneofUnion = &Message_OneofSint32{int32(x)}
-		return true, err
-	case 703: // oneof_union.oneof_uint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofUint32{uint32(x)}
-		return true, err
-	case 704: // oneof_union.oneof_int64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofInt64{int64(x)}
-		return true, err
-	case 705: // oneof_union.oneof_sint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag64()
-		m.OneofUnion = &Message_OneofSint64{int64(x)}
-		return true, err
-	case 706: // oneof_union.oneof_uint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofUint64{x}
-		return true, err
-	case 707: // oneof_union.oneof_fixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofFixed32{uint32(x)}
-		return true, err
-	case 708: // oneof_union.oneof_sfixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofSfixed32{int32(x)}
-		return true, err
-	case 709: // oneof_union.oneof_float
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofFloat{math.Float32frombits(uint32(x))}
-		return true, err
-	case 710: // oneof_union.oneof_fixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofFixed64{x}
-		return true, err
-	case 711: // oneof_union.oneof_sfixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofSfixed64{int64(x)}
-		return true, err
-	case 712: // oneof_union.oneof_double
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofDouble{math.Float64frombits(x)}
-		return true, err
-	case 713: // oneof_union.oneof_string
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString{x}
-		return true, err
-	case 714: // oneof_union.oneof_bytes
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.OneofUnion = &Message_OneofBytes{x}
-		return true, err
-	case 715: // oneof_union.oneof_child_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofChildEnum{Message_ChildEnum(x)}
-		return true, err
-	case 716: // oneof_union.oneof_child_message
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Message_ChildMessage)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofChildMessage{msg}
-		return true, err
-	case 717: // oneof_union.oneof_named_group
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Message_NamedGroup)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofNamedGroup{msg}
-		return true, err
-	case 718: // oneof_union.oneof_sibling_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofSiblingEnum{SiblingEnum(x)}
-		return true, err
-	case 719: // oneof_union.oneof_sibling_message
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(SiblingMessage)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofSiblingMessage{msg}
-		return true, err
-	case 720: // oneof_union.oneofgroup
-		if wire != proto.WireStartGroup {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Message_OneofGroup)
-		err := b.DecodeGroup(msg)
-		m.OneofUnion = &Message_Oneofgroup{msg}
-		return true, err
-	case 721: // oneof_union.oneof_string1
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString1{x}
-		return true, err
-	case 722: // oneof_union.oneof_string2
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString2{x}
-		return true, err
-	case 723: // oneof_union.oneof_string3
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString3{x}
-		return true, err
-	case 800: // oneof_defaulted_union.oneof_defaulted_bool
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedBool{x != 0}
-		return true, err
-	case 801: // oneof_defaulted_union.oneof_defaulted_int32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedInt32{int32(x)}
-		return true, err
-	case 802: // oneof_defaulted_union.oneof_defaulted_sint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag32()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSint32{int32(x)}
-		return true, err
-	case 803: // oneof_defaulted_union.oneof_defaulted_uint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedUint32{uint32(x)}
-		return true, err
-	case 804: // oneof_defaulted_union.oneof_defaulted_int64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedInt64{int64(x)}
-		return true, err
-	case 805: // oneof_defaulted_union.oneof_defaulted_sint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag64()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSint64{int64(x)}
-		return true, err
-	case 806: // oneof_defaulted_union.oneof_defaulted_uint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedUint64{x}
-		return true, err
-	case 807: // oneof_defaulted_union.oneof_defaulted_fixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedFixed32{uint32(x)}
-		return true, err
-	case 808: // oneof_defaulted_union.oneof_defaulted_sfixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSfixed32{int32(x)}
-		return true, err
-	case 809: // oneof_defaulted_union.oneof_defaulted_float
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedFloat{math.Float32frombits(uint32(x))}
-		return true, err
-	case 810: // oneof_defaulted_union.oneof_defaulted_fixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedFixed64{x}
-		return true, err
-	case 811: // oneof_defaulted_union.oneof_defaulted_sfixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSfixed64{int64(x)}
-		return true, err
-	case 812: // oneof_defaulted_union.oneof_defaulted_double
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedDouble{math.Float64frombits(x)}
-		return true, err
-	case 813: // oneof_defaulted_union.oneof_defaulted_string
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedString{x}
-		return true, err
-	case 814: // oneof_defaulted_union.oneof_defaulted_bytes
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.OneofDefaultedUnion = &Message_OneofDefaultedBytes{x}
-		return true, err
-	case 815: // oneof_defaulted_union.oneof_defaulted_child_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedChildEnum{Message_ChildEnum(x)}
-		return true, err
-	case 816: // oneof_defaulted_union.oneof_defaulted_sibling_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofDefaultedUnion = &Message_OneofDefaultedSiblingEnum{SiblingEnum(x)}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _Message_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*Message)
-	// oneof_union
-	switch x := m.OneofUnion.(type) {
-	case *Message_OneofBool:
-		n += 2 // tag and wire
-		n += 1
-	case *Message_OneofInt32:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofInt32))
-	case *Message_OneofSint32:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64((uint32(x.OneofSint32) << 1) ^ uint32((int32(x.OneofSint32) >> 31))))
-	case *Message_OneofUint32:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofUint32))
-	case *Message_OneofInt64:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofInt64))
-	case *Message_OneofSint64:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(uint64(x.OneofSint64<<1) ^ uint64((int64(x.OneofSint64) >> 63))))
-	case *Message_OneofUint64:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofUint64))
-	case *Message_OneofFixed32:
-		n += 2 // tag and wire
-		n += 4
-	case *Message_OneofSfixed32:
-		n += 2 // tag and wire
-		n += 4
-	case *Message_OneofFloat:
-		n += 2 // tag and wire
-		n += 4
-	case *Message_OneofFixed64:
-		n += 2 // tag and wire
-		n += 8
-	case *Message_OneofSfixed64:
-		n += 2 // tag and wire
-		n += 8
-	case *Message_OneofDouble:
-		n += 2 // tag and wire
-		n += 8
-	case *Message_OneofString:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofString)))
-		n += len(x.OneofString)
-	case *Message_OneofBytes:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofBytes)))
-		n += len(x.OneofBytes)
-	case *Message_OneofChildEnum:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofChildEnum))
-	case *Message_OneofChildMessage:
-		s := proto.Size(x.OneofChildMessage)
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_OneofNamedGroup:
-		s := proto.Size(x.OneofNamedGroup)
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_OneofSiblingEnum:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofSiblingEnum))
-	case *Message_OneofSiblingMessage:
-		s := proto.Size(x.OneofSiblingMessage)
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_Oneofgroup:
-		n += 2 // tag and wire
-		n += proto.Size(x.Oneofgroup)
-		n += 2 // tag and wire
-	case *Message_OneofString1:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofString1)))
-		n += len(x.OneofString1)
-	case *Message_OneofString2:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofString2)))
-		n += len(x.OneofString2)
-	case *Message_OneofString3:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofString3)))
-		n += len(x.OneofString3)
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	// oneof_defaulted_union
-	switch x := m.OneofDefaultedUnion.(type) {
-	case *Message_OneofDefaultedBool:
-		n += 2 // tag and wire
-		n += 1
-	case *Message_OneofDefaultedInt32:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofDefaultedInt32))
-	case *Message_OneofDefaultedSint32:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64((uint32(x.OneofDefaultedSint32) << 1) ^ uint32((int32(x.OneofDefaultedSint32) >> 31))))
-	case *Message_OneofDefaultedUint32:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofDefaultedUint32))
-	case *Message_OneofDefaultedInt64:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofDefaultedInt64))
-	case *Message_OneofDefaultedSint64:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(uint64(x.OneofDefaultedSint64<<1) ^ uint64((int64(x.OneofDefaultedSint64) >> 63))))
-	case *Message_OneofDefaultedUint64:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofDefaultedUint64))
-	case *Message_OneofDefaultedFixed32:
-		n += 2 // tag and wire
-		n += 4
-	case *Message_OneofDefaultedSfixed32:
-		n += 2 // tag and wire
-		n += 4
-	case *Message_OneofDefaultedFloat:
-		n += 2 // tag and wire
-		n += 4
-	case *Message_OneofDefaultedFixed64:
-		n += 2 // tag and wire
-		n += 8
-	case *Message_OneofDefaultedSfixed64:
-		n += 2 // tag and wire
-		n += 8
-	case *Message_OneofDefaultedDouble:
-		n += 2 // tag and wire
-		n += 8
-	case *Message_OneofDefaultedString:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofDefaultedString)))
-		n += len(x.OneofDefaultedString)
-	case *Message_OneofDefaultedBytes:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofDefaultedBytes)))
-		n += len(x.OneofDefaultedBytes)
-	case *Message_OneofDefaultedChildEnum:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofDefaultedChildEnum))
-	case *Message_OneofDefaultedSiblingEnum:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofDefaultedSiblingEnum))
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
-var E_Message_ExtensionOptionalBool = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*bool)(nil),
-	Field:         10000,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_bool",
-	Tag:           "varint,10000,opt,name=extension_optional_bool,json=extensionOptionalBool",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionOptionalInt32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         10001,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_int32",
-	Tag:           "varint,10001,opt,name=extension_optional_int32,json=extensionOptionalInt32",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionOptionalSint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         10002,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_sint32",
-	Tag:           "zigzag32,10002,opt,name=extension_optional_sint32,json=extensionOptionalSint32",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionOptionalUint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         10003,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_uint32",
-	Tag:           "varint,10003,opt,name=extension_optional_uint32,json=extensionOptionalUint32",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionOptionalInt64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         10004,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_int64",
-	Tag:           "varint,10004,opt,name=extension_optional_int64,json=extensionOptionalInt64",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionOptionalSint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         10005,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_sint64",
-	Tag:           "zigzag64,10005,opt,name=extension_optional_sint64,json=extensionOptionalSint64",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionOptionalUint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         10006,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_uint64",
-	Tag:           "varint,10006,opt,name=extension_optional_uint64,json=extensionOptionalUint64",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionOptionalFixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         10007,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_fixed32",
-	Tag:           "fixed32,10007,opt,name=extension_optional_fixed32,json=extensionOptionalFixed32",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionOptionalSfixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         10008,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_sfixed32",
-	Tag:           "fixed32,10008,opt,name=extension_optional_sfixed32,json=extensionOptionalSfixed32",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionOptionalFloat = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float32)(nil),
-	Field:         10009,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_float",
-	Tag:           "fixed32,10009,opt,name=extension_optional_float,json=extensionOptionalFloat",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionOptionalFixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         10010,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_fixed64",
-	Tag:           "fixed64,10010,opt,name=extension_optional_fixed64,json=extensionOptionalFixed64",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionOptionalSfixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         10011,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_sfixed64",
-	Tag:           "fixed64,10011,opt,name=extension_optional_sfixed64,json=extensionOptionalSfixed64",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionOptionalDouble = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float64)(nil),
-	Field:         10012,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_double",
-	Tag:           "fixed64,10012,opt,name=extension_optional_double,json=extensionOptionalDouble",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionOptionalString = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*string)(nil),
-	Field:         10013,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_string",
-	Tag:           "bytes,10013,opt,name=extension_optional_string,json=extensionOptionalString",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionOptionalBytes = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]byte)(nil),
-	Field:         10014,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_bytes",
-	Tag:           "bytes,10014,opt,name=extension_optional_bytes,json=extensionOptionalBytes",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionOptionalChildEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ChildEnum)(nil),
-	Field:         10015,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_child_enum",
-	Tag:           "varint,10015,opt,name=extension_optional_child_enum,json=extensionOptionalChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionOptionalChildMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ChildMessage)(nil),
-	Field:         10016,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_child_message",
-	Tag:           "bytes,10016,opt,name=extension_optional_child_message,json=extensionOptionalChildMessage",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionOptionalNamedGroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_NamedGroup)(nil),
-	Field:         10017,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_named_group",
-	Tag:           "bytes,10017,opt,name=extension_optional_named_group,json=extensionOptionalNamedGroup",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionOptionalSiblingEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*SiblingEnum)(nil),
-	Field:         10018,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_sibling_enum",
-	Tag:           "varint,10018,opt,name=extension_optional_sibling_enum,json=extensionOptionalSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionOptionalSiblingMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*SiblingMessage)(nil),
-	Field:         10019,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_optional_sibling_message",
-	Tag:           "bytes,10019,opt,name=extension_optional_sibling_message,json=extensionOptionalSiblingMessage",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_Extensionoptionalgroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ExtensionOptionalGroup)(nil),
-	Field:         10020,
-	Name:          "google.golang.org.proto2_20180814.Message.extensionoptionalgroup",
-	Tag:           "group,10020,opt,name=ExtensionOptionalGroup,json=extensionoptionalgroup",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionDefaultedBool = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*bool)(nil),
-	Field:         20000,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_bool",
-	Tag:           "varint,20000,opt,name=extension_defaulted_bool,json=extensionDefaultedBool,def=1",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionDefaultedInt32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         20001,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_int32",
-	Tag:           "varint,20001,opt,name=extension_defaulted_int32,json=extensionDefaultedInt32,def=-12345",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionDefaultedSint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         20002,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_sint32",
-	Tag:           "zigzag32,20002,opt,name=extension_defaulted_sint32,json=extensionDefaultedSint32,def=-3200",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionDefaultedUint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         20003,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_uint32",
-	Tag:           "varint,20003,opt,name=extension_defaulted_uint32,json=extensionDefaultedUint32,def=3200",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionDefaultedInt64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         20004,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_int64",
-	Tag:           "varint,20004,opt,name=extension_defaulted_int64,json=extensionDefaultedInt64,def=-123456789",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionDefaultedSint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         20005,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_sint64",
-	Tag:           "zigzag64,20005,opt,name=extension_defaulted_sint64,json=extensionDefaultedSint64,def=-6400",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionDefaultedUint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         20006,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_uint64",
-	Tag:           "varint,20006,opt,name=extension_defaulted_uint64,json=extensionDefaultedUint64,def=6400",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionDefaultedFixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         20007,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_fixed32",
-	Tag:           "fixed32,20007,opt,name=extension_defaulted_fixed32,json=extensionDefaultedFixed32,def=320000",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionDefaultedSfixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         20008,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_sfixed32",
-	Tag:           "fixed32,20008,opt,name=extension_defaulted_sfixed32,json=extensionDefaultedSfixed32,def=-320000",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionDefaultedFloat = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float32)(nil),
-	Field:         20009,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_float",
-	Tag:           "fixed32,20009,opt,name=extension_defaulted_float,json=extensionDefaultedFloat,def=3.14159",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionDefaultedFixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         20010,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_fixed64",
-	Tag:           "fixed64,20010,opt,name=extension_defaulted_fixed64,json=extensionDefaultedFixed64,def=640000",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionDefaultedSfixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         20011,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_sfixed64",
-	Tag:           "fixed64,20011,opt,name=extension_defaulted_sfixed64,json=extensionDefaultedSfixed64,def=-640000",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionDefaultedDouble = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float64)(nil),
-	Field:         20012,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_double",
-	Tag:           "fixed64,20012,opt,name=extension_defaulted_double,json=extensionDefaultedDouble,def=3.14159265359",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionDefaultedString = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*string)(nil),
-	Field:         20013,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_string",
-	Tag:           "bytes,20013,opt,name=extension_defaulted_string,json=extensionDefaultedString,def=hello, \"world!\"\n",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionDefaultedBytes = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]byte)(nil),
-	Field:         20014,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_bytes",
-	Tag:           "bytes,20014,opt,name=extension_defaulted_bytes,json=extensionDefaultedBytes,def=dead\\336\\255\\276\\357beef",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionDefaultedChildEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ChildEnum)(nil),
-	Field:         20015,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_child_enum",
-	Tag:           "varint,20015,opt,name=extension_defaulted_child_enum,json=extensionDefaultedChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum,def=0",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionDefaultedSiblingEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*SiblingEnum)(nil),
-	Field:         20016,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_defaulted_sibling_enum",
-	Tag:           "varint,20016,opt,name=extension_defaulted_sibling_enum,json=extensionDefaultedSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum,def=0",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionRepeatedBool = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]bool)(nil),
-	Field:         30000,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_bool",
-	Tag:           "varint,30000,rep,name=extension_repeated_bool,json=extensionRepeatedBool",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionRepeatedInt32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int32)(nil),
-	Field:         30001,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_int32",
-	Tag:           "varint,30001,rep,name=extension_repeated_int32,json=extensionRepeatedInt32",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int32)(nil),
-	Field:         30002,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_sint32",
-	Tag:           "zigzag32,30002,rep,name=extension_repeated_sint32,json=extensionRepeatedSint32",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionRepeatedUint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint32)(nil),
-	Field:         30003,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_uint32",
-	Tag:           "varint,30003,rep,name=extension_repeated_uint32,json=extensionRepeatedUint32",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionRepeatedInt64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int64)(nil),
-	Field:         30004,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_int64",
-	Tag:           "varint,30004,rep,name=extension_repeated_int64,json=extensionRepeatedInt64",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int64)(nil),
-	Field:         30005,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_sint64",
-	Tag:           "zigzag64,30005,rep,name=extension_repeated_sint64,json=extensionRepeatedSint64",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionRepeatedUint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint64)(nil),
-	Field:         30006,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_uint64",
-	Tag:           "varint,30006,rep,name=extension_repeated_uint64,json=extensionRepeatedUint64",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionRepeatedFixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint32)(nil),
-	Field:         30007,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_fixed32",
-	Tag:           "fixed32,30007,rep,name=extension_repeated_fixed32,json=extensionRepeatedFixed32",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSfixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int32)(nil),
-	Field:         30008,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_sfixed32",
-	Tag:           "fixed32,30008,rep,name=extension_repeated_sfixed32,json=extensionRepeatedSfixed32",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionRepeatedFloat = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]float32)(nil),
-	Field:         30009,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_float",
-	Tag:           "fixed32,30009,rep,name=extension_repeated_float,json=extensionRepeatedFloat",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionRepeatedFixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint64)(nil),
-	Field:         30010,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_fixed64",
-	Tag:           "fixed64,30010,rep,name=extension_repeated_fixed64,json=extensionRepeatedFixed64",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSfixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int64)(nil),
-	Field:         30011,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_sfixed64",
-	Tag:           "fixed64,30011,rep,name=extension_repeated_sfixed64,json=extensionRepeatedSfixed64",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionRepeatedDouble = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]float64)(nil),
-	Field:         30012,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_double",
-	Tag:           "fixed64,30012,rep,name=extension_repeated_double,json=extensionRepeatedDouble",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionRepeatedString = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]string)(nil),
-	Field:         30013,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_string",
-	Tag:           "bytes,30013,rep,name=extension_repeated_string,json=extensionRepeatedString",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionRepeatedBytes = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([][]byte)(nil),
-	Field:         30014,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_bytes",
-	Tag:           "bytes,30014,rep,name=extension_repeated_bytes,json=extensionRepeatedBytes",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionRepeatedChildEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]Message_ChildEnum)(nil),
-	Field:         30015,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_child_enum",
-	Tag:           "varint,30015,rep,name=extension_repeated_child_enum,json=extensionRepeatedChildEnum,enum=google.golang.org.proto2_20180814.Message_ChildEnum",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionRepeatedChildMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*Message_ChildMessage)(nil),
-	Field:         30016,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_child_message",
-	Tag:           "bytes,30016,rep,name=extension_repeated_child_message,json=extensionRepeatedChildMessage",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionRepeatedNamedGroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*Message_NamedGroup)(nil),
-	Field:         30017,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_named_group",
-	Tag:           "bytes,30017,rep,name=extension_repeated_named_group,json=extensionRepeatedNamedGroup",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSiblingEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]SiblingEnum)(nil),
-	Field:         30018,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_sibling_enum",
-	Tag:           "varint,30018,rep,name=extension_repeated_sibling_enum,json=extensionRepeatedSiblingEnum,enum=google.golang.org.proto2_20180814.SiblingEnum",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSiblingMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*SiblingMessage)(nil),
-	Field:         30019,
-	Name:          "google.golang.org.proto2_20180814.Message.extension_repeated_sibling_message",
-	Tag:           "bytes,30019,rep,name=extension_repeated_sibling_message,json=extensionRepeatedSiblingMessage",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-var E_Message_Extensionrepeatedgroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*Message_ExtensionRepeatedGroup)(nil),
-	Field:         30020,
-	Name:          "google.golang.org.proto2_20180814.Message.extensionrepeatedgroup",
-	Tag:           "group,30020,rep,name=ExtensionRepeatedGroup,json=extensionrepeatedgroup",
-	Filename:      "proto2_20180814_aa810b61/test.proto",
-}
-
-type Message_ChildMessage struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	F4                   *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_ChildMessage) Reset()         { *m = Message_ChildMessage{} }
-func (m *Message_ChildMessage) String() string { return proto.CompactTextString(m) }
-func (*Message_ChildMessage) ProtoMessage()    {}
-func (*Message_ChildMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_98b5676fa5dea40d, []int{1, 0}
-}
-func (m *Message_ChildMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_ChildMessage.Unmarshal(m, b)
-}
-func (m *Message_ChildMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_ChildMessage.Marshal(b, m, deterministic)
-}
-func (dst *Message_ChildMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_ChildMessage.Merge(dst, src)
-}
-func (m *Message_ChildMessage) XXX_Size() int {
-	return xxx_messageInfo_Message_ChildMessage.Size(m)
-}
-func (m *Message_ChildMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_ChildMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_ChildMessage proto.InternalMessageInfo
-
-func (m *Message_ChildMessage) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_ChildMessage) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_ChildMessage) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func (m *Message_ChildMessage) GetF4() *Message {
-	if m != nil {
-		return m.F4
-	}
-	return nil
-}
-
-type Message_NamedGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	F4                   *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_NamedGroup) Reset()         { *m = Message_NamedGroup{} }
-func (m *Message_NamedGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_NamedGroup) ProtoMessage()    {}
-func (*Message_NamedGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_98b5676fa5dea40d, []int{1, 1}
-}
-func (m *Message_NamedGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_NamedGroup.Unmarshal(m, b)
-}
-func (m *Message_NamedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_NamedGroup.Marshal(b, m, deterministic)
-}
-func (dst *Message_NamedGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_NamedGroup.Merge(dst, src)
-}
-func (m *Message_NamedGroup) XXX_Size() int {
-	return xxx_messageInfo_Message_NamedGroup.Size(m)
-}
-func (m *Message_NamedGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_NamedGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_NamedGroup proto.InternalMessageInfo
-
-func (m *Message_NamedGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_NamedGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_NamedGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func (m *Message_NamedGroup) GetF4() *Message {
-	if m != nil {
-		return m.F4
-	}
-	return nil
-}
-
-type Message_OptionalGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_OptionalGroup) Reset()         { *m = Message_OptionalGroup{} }
-func (m *Message_OptionalGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_OptionalGroup) ProtoMessage()    {}
-func (*Message_OptionalGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_98b5676fa5dea40d, []int{1, 2}
-}
-func (m *Message_OptionalGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_OptionalGroup.Unmarshal(m, b)
-}
-func (m *Message_OptionalGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_OptionalGroup.Marshal(b, m, deterministic)
-}
-func (dst *Message_OptionalGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_OptionalGroup.Merge(dst, src)
-}
-func (m *Message_OptionalGroup) XXX_Size() int {
-	return xxx_messageInfo_Message_OptionalGroup.Size(m)
-}
-func (m *Message_OptionalGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_OptionalGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_OptionalGroup proto.InternalMessageInfo
-
-func (m *Message_OptionalGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_OptionalGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_OptionalGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_RequiredGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_RequiredGroup) Reset()         { *m = Message_RequiredGroup{} }
-func (m *Message_RequiredGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_RequiredGroup) ProtoMessage()    {}
-func (*Message_RequiredGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_98b5676fa5dea40d, []int{1, 3}
-}
-func (m *Message_RequiredGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_RequiredGroup.Unmarshal(m, b)
-}
-func (m *Message_RequiredGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_RequiredGroup.Marshal(b, m, deterministic)
-}
-func (dst *Message_RequiredGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_RequiredGroup.Merge(dst, src)
-}
-func (m *Message_RequiredGroup) XXX_Size() int {
-	return xxx_messageInfo_Message_RequiredGroup.Size(m)
-}
-func (m *Message_RequiredGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_RequiredGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_RequiredGroup proto.InternalMessageInfo
-
-func (m *Message_RequiredGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_RequiredGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_RequiredGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_RepeatedGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_RepeatedGroup) Reset()         { *m = Message_RepeatedGroup{} }
-func (m *Message_RepeatedGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_RepeatedGroup) ProtoMessage()    {}
-func (*Message_RepeatedGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_98b5676fa5dea40d, []int{1, 4}
-}
-func (m *Message_RepeatedGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_RepeatedGroup.Unmarshal(m, b)
-}
-func (m *Message_RepeatedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_RepeatedGroup.Marshal(b, m, deterministic)
-}
-func (dst *Message_RepeatedGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_RepeatedGroup.Merge(dst, src)
-}
-func (m *Message_RepeatedGroup) XXX_Size() int {
-	return xxx_messageInfo_Message_RepeatedGroup.Size(m)
-}
-func (m *Message_RepeatedGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_RepeatedGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_RepeatedGroup proto.InternalMessageInfo
-
-func (m *Message_RepeatedGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_RepeatedGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_RepeatedGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_OneofGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_OneofGroup) Reset()         { *m = Message_OneofGroup{} }
-func (m *Message_OneofGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_OneofGroup) ProtoMessage()    {}
-func (*Message_OneofGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_98b5676fa5dea40d, []int{1, 33}
-}
-func (m *Message_OneofGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_OneofGroup.Unmarshal(m, b)
-}
-func (m *Message_OneofGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_OneofGroup.Marshal(b, m, deterministic)
-}
-func (dst *Message_OneofGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_OneofGroup.Merge(dst, src)
-}
-func (m *Message_OneofGroup) XXX_Size() int {
-	return xxx_messageInfo_Message_OneofGroup.Size(m)
-}
-func (m *Message_OneofGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_OneofGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_OneofGroup proto.InternalMessageInfo
-
-func (m *Message_OneofGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_OneofGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_OneofGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_ExtensionOptionalGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_ExtensionOptionalGroup) Reset()         { *m = Message_ExtensionOptionalGroup{} }
-func (m *Message_ExtensionOptionalGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_ExtensionOptionalGroup) ProtoMessage()    {}
-func (*Message_ExtensionOptionalGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_98b5676fa5dea40d, []int{1, 34}
-}
-func (m *Message_ExtensionOptionalGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_ExtensionOptionalGroup.Unmarshal(m, b)
-}
-func (m *Message_ExtensionOptionalGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_ExtensionOptionalGroup.Marshal(b, m, deterministic)
-}
-func (dst *Message_ExtensionOptionalGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_ExtensionOptionalGroup.Merge(dst, src)
-}
-func (m *Message_ExtensionOptionalGroup) XXX_Size() int {
-	return xxx_messageInfo_Message_ExtensionOptionalGroup.Size(m)
-}
-func (m *Message_ExtensionOptionalGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_ExtensionOptionalGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_ExtensionOptionalGroup proto.InternalMessageInfo
-
-func (m *Message_ExtensionOptionalGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_ExtensionOptionalGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_ExtensionOptionalGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_ExtensionRepeatedGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_ExtensionRepeatedGroup) Reset()         { *m = Message_ExtensionRepeatedGroup{} }
-func (m *Message_ExtensionRepeatedGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_ExtensionRepeatedGroup) ProtoMessage()    {}
-func (*Message_ExtensionRepeatedGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_98b5676fa5dea40d, []int{1, 35}
-}
-func (m *Message_ExtensionRepeatedGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_ExtensionRepeatedGroup.Unmarshal(m, b)
-}
-func (m *Message_ExtensionRepeatedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_ExtensionRepeatedGroup.Marshal(b, m, deterministic)
-}
-func (dst *Message_ExtensionRepeatedGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_ExtensionRepeatedGroup.Merge(dst, src)
-}
-func (m *Message_ExtensionRepeatedGroup) XXX_Size() int {
-	return xxx_messageInfo_Message_ExtensionRepeatedGroup.Size(m)
-}
-func (m *Message_ExtensionRepeatedGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_ExtensionRepeatedGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_ExtensionRepeatedGroup proto.InternalMessageInfo
-
-func (m *Message_ExtensionRepeatedGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_ExtensionRepeatedGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_ExtensionRepeatedGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func init() {
-	proto.RegisterType((*SiblingMessage)(nil), "google.golang.org.proto2_20180814.SiblingMessage")
-	proto.RegisterType((*Message)(nil), "google.golang.org.proto2_20180814.Message")
-	proto.RegisterMapType((map[bool]bool)(nil), "google.golang.org.proto2_20180814.Message.MapBoolBoolEntry")
-	proto.RegisterMapType((map[bool][]byte)(nil), "google.golang.org.proto2_20180814.Message.MapBoolBytesEntry")
-	proto.RegisterMapType((map[bool]Message_ChildEnum)(nil), "google.golang.org.proto2_20180814.Message.MapBoolChildEnumEntry")
-	proto.RegisterMapType((map[bool]*Message_ChildMessage)(nil), "google.golang.org.proto2_20180814.Message.MapBoolChildMessageEntry")
-	proto.RegisterMapType((map[bool]float64)(nil), "google.golang.org.proto2_20180814.Message.MapBoolDoubleEntry")
-	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto2_20180814.Message.MapBoolFixed32Entry")
-	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto2_20180814.Message.MapBoolFixed64Entry")
-	proto.RegisterMapType((map[bool]float32)(nil), "google.golang.org.proto2_20180814.Message.MapBoolFloatEntry")
-	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto2_20180814.Message.MapBoolInt32Entry")
-	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto2_20180814.Message.MapBoolInt64Entry")
-	proto.RegisterMapType((map[bool]*Message_NamedGroup)(nil), "google.golang.org.proto2_20180814.Message.MapBoolNamedGroupEntry")
-	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto2_20180814.Message.MapBoolSfixed32Entry")
-	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto2_20180814.Message.MapBoolSfixed64Entry")
-	proto.RegisterMapType((map[bool]SiblingEnum)(nil), "google.golang.org.proto2_20180814.Message.MapBoolSiblingEnumEntry")
-	proto.RegisterMapType((map[bool]*SiblingMessage)(nil), "google.golang.org.proto2_20180814.Message.MapBoolSiblingMessageEntry")
-	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto2_20180814.Message.MapBoolSint32Entry")
-	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto2_20180814.Message.MapBoolSint64Entry")
-	proto.RegisterMapType((map[bool]string)(nil), "google.golang.org.proto2_20180814.Message.MapBoolStringEntry")
-	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto2_20180814.Message.MapBoolUint32Entry")
-	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto2_20180814.Message.MapBoolUint64Entry")
-	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto2_20180814.Message.MapFixed32BoolEntry")
-	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto2_20180814.Message.MapInt32BoolEntry")
-	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto2_20180814.Message.MapInt64BoolEntry")
-	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto2_20180814.Message.MapSint32BoolEntry")
-	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto2_20180814.Message.MapSint64BoolEntry")
-	proto.RegisterMapType((map[string]bool)(nil), "google.golang.org.proto2_20180814.Message.MapStringBoolEntry")
-	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto2_20180814.Message.MapUint32BoolEntry")
-	proto.RegisterMapType((map[uint64]bool)(nil), "google.golang.org.proto2_20180814.Message.MapUint64BoolEntry")
-	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto2_20180814.Message.ChildMessage")
-	proto.RegisterType((*Message_NamedGroup)(nil), "google.golang.org.proto2_20180814.Message.NamedGroup")
-	proto.RegisterType((*Message_OptionalGroup)(nil), "google.golang.org.proto2_20180814.Message.OptionalGroup")
-	proto.RegisterType((*Message_RequiredGroup)(nil), "google.golang.org.proto2_20180814.Message.RequiredGroup")
-	proto.RegisterType((*Message_RepeatedGroup)(nil), "google.golang.org.proto2_20180814.Message.RepeatedGroup")
-	proto.RegisterType((*Message_OneofGroup)(nil), "google.golang.org.proto2_20180814.Message.OneofGroup")
-	proto.RegisterType((*Message_ExtensionOptionalGroup)(nil), "google.golang.org.proto2_20180814.Message.ExtensionOptionalGroup")
-	proto.RegisterType((*Message_ExtensionRepeatedGroup)(nil), "google.golang.org.proto2_20180814.Message.ExtensionRepeatedGroup")
-	proto.RegisterEnum("google.golang.org.proto2_20180814.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
-	proto.RegisterEnum("google.golang.org.proto2_20180814.Message_ChildEnum", Message_ChildEnum_name, Message_ChildEnum_value)
-	proto.RegisterExtension(E_Message_ExtensionOptionalBool)
-	proto.RegisterExtension(E_Message_ExtensionOptionalInt32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSint32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalUint32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalInt64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSint64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalUint64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalFixed32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalFloat)
-	proto.RegisterExtension(E_Message_ExtensionOptionalFixed64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalDouble)
-	proto.RegisterExtension(E_Message_ExtensionOptionalString)
-	proto.RegisterExtension(E_Message_ExtensionOptionalBytes)
-	proto.RegisterExtension(E_Message_ExtensionOptionalChildEnum)
-	proto.RegisterExtension(E_Message_ExtensionOptionalChildMessage)
-	proto.RegisterExtension(E_Message_ExtensionOptionalNamedGroup)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingEnum)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingMessage)
-	proto.RegisterExtension(E_Message_Extensionoptionalgroup)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedBool)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedInt32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSint32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedUint32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedInt64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSint64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedUint64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedFloat)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedDouble)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedString)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedBytes)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedChildEnum)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSiblingEnum)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedBool)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedInt32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSint32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedUint32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedInt64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSint64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedUint64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedFloat)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedDouble)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedString)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedBytes)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedChildEnum)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedChildMessage)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedNamedGroup)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingEnum)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingMessage)
-	proto.RegisterExtension(E_Message_Extensionrepeatedgroup)
-}
-
-func init() {
-	proto.RegisterFile("proto2_20180814_aa810b61/test.proto", fileDescriptor_test_98b5676fa5dea40d)
-}
-
-var fileDescriptor_test_98b5676fa5dea40d = []byte{
-	// 4469 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5c, 0x69, 0x70, 0x23, 0xc7,
-	0x75, 0xe6, 0x00, 0x04, 0xb8, 0xec, 0x25, 0x48, 0x70, 0x76, 0x97, 0x9c, 0xa5, 0xa4, 0x08, 0x5e,
-	0x3b, 0x0e, 0xa2, 0x68, 0xb9, 0xe4, 0xb0, 0xb7, 0x77, 0x85, 0xe8, 0xf0, 0x52, 0x5a, 0x19, 0x72,
-	0x2c, 0xc8, 0x35, 0xaa, 0x4d, 0xa5, 0x52, 0xaa, 0x30, 0xe0, 0x12, 0xe4, 0x52, 0xc2, 0x41, 0x91,
-	0x80, 0xa4, 0x8d, 0x9d, 0xd2, 0xc6, 0x39, 0x7f, 0xca, 0xf7, 0x05, 0xdb, 0xb2, 0x6e, 0x5b, 0xa7,
-	0xef, 0x4b, 0x97, 0x8f, 0x24, 0xf2, 0x7d, 0xe5, 0x70, 0x2e, 0xe7, 0xbe, 0x9c, 0xfb, 0xbe, 0x8f,
-	0xea, 0x7e, 0xdd, 0xd3, 0xdd, 0x33, 0x3d, 0x20, 0x7b, 0xe0, 0xd2, 0x0f, 0x55, 0x69, 0x1b, 0xaf,
-	0xdf, 0xd7, 0xef, 0x43, 0xbf, 0xf7, 0x3e, 0xf6, 0x4c, 0x03, 0xbd, 0x74, 0x6b, 0xbb, 0xd3, 0xed,
-	0xf8, 0x2b, 0xfe, 0xc2, 0xe2, 0xc9, 0x85, 0x93, 0x8b, 0x78, 0xa5, 0x5e, 0x3f, 0xb9, 0xb8, 0xb0,
-	0x4a, 0x16, 0x8f, 0x75, 0x1b, 0x3b, 0xdd, 0x79, 0xf6, 0xa9, 0xfb, 0x92, 0x8d, 0x4e, 0x67, 0xa3,
-	0xd9, 0x98, 0xdf, 0xe8, 0x34, 0xeb, 0xed, 0x8d, 0xf9, 0xce, 0xf6, 0xc6, 0x7c, 0x64, 0xda, 0x91,
-	0xd7, 0xa1, 0xc9, 0x9b, 0x37, 0x57, 0x9b, 0x9b, 0xed, 0x8d, 0x1b, 0x1b, 0x3b, 0x3b, 0xf5, 0x8d,
-	0x86, 0x3b, 0x89, 0x32, 0xeb, 0x8b, 0x9e, 0x53, 0x72, 0xca, 0xe3, 0x41, 0x66, 0x7d, 0x91, 0xfd,
-	0xdb, 0xf7, 0x32, 0xa5, 0x0c, 0xfb, 0xb7, 0xcf, 0xfe, 0xbd, 0xe4, 0x65, 0x4b, 0x59, 0xf6, 0xef,
-	0x25, 0xb7, 0x82, 0x32, 0xeb, 0xd8, 0x1b, 0x2d, 0x39, 0xe5, 0xfd, 0xfe, 0x65, 0xf3, 0xbb, 0x22,
-	0xce, 0x73, 0x9c, 0x20, 0xb3, 0x8e, 0x8f, 0x7c, 0xe7, 0x51, 0x07, 0x8d, 0x09, 0xe0, 0x33, 0x08,
-	0xb5, 0xeb, 0xad, 0xc6, 0xda, 0xc6, 0x76, 0xa7, 0xb7, 0xc5, 0x16, 0x80, 0xfc, 0xe3, 0x7b, 0x77,
-	0x38, 0x5f, 0xa3, 0x93, 0x5f, 0x49, 0x27, 0x07, 0x8a, 0x23, 0xf7, 0xa5, 0xa8, 0xd0, 0xd9, 0xea,
-	0x6e, 0x76, 0xda, 0xf5, 0xe6, 0xca, 0x6a, 0xa7, 0xd3, 0xf4, 0xd6, 0x4a, 0x4e, 0x79, 0x5f, 0x30,
-	0x21, 0x06, 0x97, 0x3b, 0x9d, 0xa6, 0xfb, 0xfd, 0x68, 0x32, 0x34, 0xda, 0x6c, 0x77, 0x97, 0x7c,
-	0xaf, 0x51, 0x72, 0xca, 0xb9, 0x20, 0x9c, 0x7a, 0x03, 0x1d, 0x74, 0x7f, 0x00, 0x4d, 0x85, 0x66,
-	0x3b, 0x60, 0xb7, 0x5e, 0x72, 0xca, 0xd3, 0x41, 0x38, 0xfb, 0xe6, 0xcd, 0x98, 0x61, 0x0f, 0x0c,
-	0x37, 0x4a, 0x4e, 0xb9, 0x20, 0x0d, 0xcf, 0x80, 0x61, 0x04, 0x98, 0x60, 0xef, 0x5c, 0xc9, 0x29,
-	0x67, 0x35, 0x60, 0x82, 0x63, 0xc0, 0x04, 0x7b, 0x9b, 0x25, 0xa7, 0xec, 0xea, 0xc0, 0x11, 0xc3,
-	0x1e, 0x18, 0xde, 0x5a, 0x72, 0xca, 0xa3, 0x3a, 0x30, 0xc1, 0xee, 0x0f, 0xa2, 0x62, 0x68, 0xb8,
-	0xbe, 0x79, 0x57, 0x63, 0x6d, 0xc9, 0xf7, 0x6e, 0x2b, 0x39, 0xe5, 0xb1, 0x20, 0x74, 0x70, 0x3d,
-	0x0c, 0xbb, 0x3f, 0x84, 0xa6, 0x25, 0xb8, 0xb0, 0x6d, 0x96, 0x9c, 0xf2, 0x54, 0x10, 0xfa, 0xb8,
-	0x99, 0x8f, 0x6b, 0x01, 0xad, 0x37, 0x3b, 0xf5, 0xae, 0xd7, 0x2a, 0x39, 0xe5, 0x8c, 0x0c, 0xe8,
-	0x7a, 0x3a, 0x18, 0x87, 0x27, 0xd8, 0x6b, 0x97, 0x9c, 0x72, 0x3e, 0x02, 0x4f, 0xb0, 0x01, 0x9e,
-	0x60, 0xaf, 0x53, 0x72, 0xca, 0xc5, 0x28, 0x7c, 0x24, 0xfe, 0xb5, 0x4e, 0x6f, 0xb5, 0xd9, 0xf0,
-	0xb6, 0x4a, 0x4e, 0xd9, 0x91, 0xf1, 0x5f, 0xc7, 0x46, 0x75, 0x46, 0xbb, 0xdb, 0x9b, 0xed, 0x0d,
-	0xef, 0x76, 0xb6, 0xe7, 0x25, 0xa3, 0x6c, 0x54, 0x0b, 0x68, 0xf5, 0x7c, 0xb7, 0xb1, 0xe3, 0x6d,
-	0x97, 0x9c, 0xf2, 0x84, 0x0c, 0x68, 0x99, 0x0e, 0xba, 0x6b, 0xe8, 0x40, 0x68, 0x76, 0xf6, 0xdc,
-	0x66, 0x73, 0x6d, 0xa5, 0xd1, 0xee, 0xb5, 0xbc, 0x9d, 0x92, 0x53, 0x9e, 0xf4, 0xb1, 0xc5, 0x36,
-	0xbe, 0x96, 0x4e, 0x3e, 0xdd, 0xee, 0xb5, 0x82, 0x30, 0xec, 0x70, 0xc8, 0x6d, 0xa1, 0x99, 0x08,
-	0x4a, 0x0b, 0xa6, 0x79, 0x5d, 0x96, 0x80, 0x27, 0x6c, 0x81, 0x44, 0x36, 0x1e, 0xd4, 0xb0, 0x44,
-	0x4a, 0x6e, 0xa0, 0x70, 0x7c, 0x85, 0xa5, 0xd4, 0x0a, 0x24, 0x67, 0x8f, 0x81, 0xa5, 0x4c, 0x4e,
-	0x57, 0xb8, 0x94, 0x63, 0xee, 0x2a, 0x3a, 0xa4, 0xec, 0x6f, 0x56, 0x8f, 0x80, 0xbf, 0x3b, 0x18,
-	0x7f, 0xf3, 0x7b, 0x40, 0xe2, 0x65, 0x8c, 0x31, 0x77, 0x40, 0x66, 0x45, 0x38, 0xe8, 0xde, 0x86,
-	0xbc, 0x18, 0x86, 0x60, 0xef, 0x4e, 0x16, 0xd0, 0xe2, 0xde, 0x61, 0x04, 0x6f, 0x33, 0x11, 0x24,
-	0xc1, 0xdc, 0x4f, 0xc8, 0xaa, 0x03, 0x94, 0xdd, 0xc5, 0xea, 0xd9, 0x49, 0x0b, 0xca, 0x6e, 0xe2,
-	0xf3, 0x81, 0x35, 0xdd, 0x9d, 0x7b, 0x39, 0x9a, 0x5c, 0x6b, 0xac, 0xd7, 0x7b, 0xcd, 0x6e, 0x63,
-	0x0d, 0xca, 0xda, 0x0b, 0xb4, 0x62, 0xee, 0xab, 0x8c, 0x76, 0xb7, 0x7b, 0x8d, 0xa0, 0x10, 0x7e,
-	0xc8, 0xca, 0xdb, 0x02, 0x9a, 0x92, 0xd6, 0x50, 0x8e, 0xbe, 0x40, 0xcd, 0x73, 0x95, 0xfc, 0xd1,
-	0x45, 0x7f, 0x09, 0x1f, 0x0f, 0xa4, 0x37, 0xa8, 0x74, 0x8b, 0xa8, 0x28, 0x67, 0xf0, 0x52, 0xf7,
-	0x45, 0x3a, 0x65, 0xba, 0x92, 0x3b, 0xba, 0xe4, 0x2f, 0x2c, 0x04, 0xd2, 0x23, 0xaf, 0x79, 0x0b,
-	0xea, 0x14, 0x5e, 0xf4, 0xbe, 0x44, 0xa7, 0x14, 0x2a, 0xa3, 0x91, 0x19, 0xbc, 0xf8, 0xe1, 0xc8,
-	0xb2, 0x08, 0xf6, 0xbe, 0x4c, 0x27, 0x64, 0x2b, 0x08, 0x96, 0x45, 0x4e, 0x9c, 0xbc, 0x42, 0x5f,
-	0x1a, 0xc1, 0xf1, 0xa5, 0x11, 0xec, 0x7d, 0x85, 0x4e, 0x73, 0x2b, 0xb9, 0xa3, 0x04, 0xc7, 0x96,
-	0x46, 0x70, 0x7c, 0x69, 0x04, 0x7b, 0x5f, 0xa5, 0x53, 0x46, 0x2b, 0xa3, 0x91, 0x19, 0xbc, 0x3c,
-	0x62, 0x34, 0x2d, 0x67, 0x88, 0x9a, 0xf7, 0x35, 0x3a, 0x65, 0xac, 0x92, 0xa7, 0xd1, 0x2c, 0x2c,
-	0x04, 0xd2, 0xa7, 0xa8, 0x94, 0x27, 0x90, 0xab, 0x2c, 0x4d, 0x4c, 0xfb, 0x3a, 0x9d, 0x36, 0x55,
-	0x19, 0x3b, 0xca, 0xe7, 0x49, 0xcf, 0x61, 0xd5, 0x5c, 0x54, 0x99, 0x80, 0xb2, 0xf9, 0x0d, 0x3a,
-	0x2b, 0x53, 0x19, 0x5b, 0x9a, 0x5f, 0xc4, 0x8b, 0xc7, 0x55, 0x1a, 0xa0, 0x82, 0xc6, 0x57, 0x48,
-	0xb0, 0xf7, 0x4d, 0x3a, 0x29, 0x5f, 0xc9, 0xd3, 0xa0, 0xe2, 0x2b, 0x24, 0xd8, 0xb4, 0x42, 0x82,
-	0xbd, 0x6f, 0xd1, 0x69, 0xc5, 0xca, 0xd8, 0x51, 0x3e, 0x2f, 0xba, 0x42, 0x82, 0xdd, 0x2b, 0x54,
-	0x0a, 0x79, 0x65, 0xfd, 0x35, 0x3a, 0xcd, 0xa9, 0x14, 0xf8, 0x12, 0x7d, 0x72, 0x7c, 0xe9, 0xf8,
-	0x15, 0x0a, 0x97, 0xbc, 0xd4, 0x5e, 0xa9, 0x7d, 0x61, 0x50, 0x6b, 0x7f, 0x9d, 0x09, 0x8c, 0x4a,
-	0xf1, 0x5c, 0xa3, 0xd9, 0xec, 0x5c, 0x5e, 0x3a, 0x72, 0x67, 0x67, 0xbb, 0xb9, 0xf6, 0x92, 0x23,
-	0x48, 0xfd, 0xee, 0xa0, 0xfe, 0x2e, 0xab, 0xd4, 0x40, 0x01, 0xfe, 0x0d, 0x3a, 0x79, 0xa2, 0xe2,
-	0xad, 0x35, 0xea, 0x6b, 0xb7, 0x2c, 0x2d, 0x91, 0x5b, 0xfc, 0xe3, 0xc7, 0x6f, 0xf1, 0x4f, 0x90,
-	0x5b, 0x96, 0x8e, 0x9f, 0x58, 0x6d, 0x34, 0xd6, 0x15, 0xae, 0xa0, 0x38, 0xb7, 0xd1, 0x41, 0xe9,
-	0x43, 0xa9, 0xce, 0xbf, 0xe9, 0xa4, 0x2f, 0xcf, 0x95, 0xdc, 0xa9, 0x57, 0xbf, 0xa6, 0x7a, 0x2a,
-	0x90, 0x7c, 0xca, 0x32, 0xdd, 0x44, 0x33, 0xea, 0x16, 0x55, 0xea, 0xd9, 0xb7, 0x9d, 0x34, 0x05,
-	0x4d, 0x60, 0x1d, 0x54, 0x36, 0xb6, 0x2c, 0x6c, 0x2f, 0x43, 0x85, 0xed, 0xc6, 0xed, 0xbd, 0xcd,
-	0x6d, 0x51, 0x0a, 0x1e, 0xa3, 0x6a, 0x6d, 0x5f, 0x30, 0x21, 0x46, 0x59, 0x0d, 0x78, 0x39, 0x9a,
-	0x0c, 0xad, 0x20, 0x39, 0x1f, 0xa7, 0x66, 0xb9, 0x20, 0x9c, 0x0c, 0x99, 0x5f, 0x46, 0x53, 0xa1,
-	0x1d, 0x4f, 0xfc, 0x27, 0xa8, 0xe1, 0x74, 0x10, 0xce, 0xe7, 0x09, 0xaf, 0x5a, 0xf2, 0x7c, 0x7f,
-	0x92, 0x5a, 0x16, 0xa4, 0x25, 0x4f, 0xf4, 0x08, 0x36, 0xc1, 0xde, 0x53, 0xd4, 0x30, 0xab, 0x61,
-	0x13, 0x1c, 0xc3, 0x26, 0xd8, 0xfb, 0x20, 0x35, 0x74, 0x75, 0xec, 0x88, 0x25, 0x4f, 0xe8, 0x0f,
-	0x51, 0xcb, 0x51, 0x1d, 0x9b, 0x60, 0xf7, 0x32, 0x54, 0x0c, 0x2d, 0x45, 0x46, 0x7e, 0x98, 0x9a,
-	0x8e, 0x05, 0xa1, 0x0b, 0x91, 0xbf, 0x97, 0xa3, 0x69, 0x89, 0x2f, 0x8c, 0x3f, 0x42, 0x8d, 0xa7,
-	0x82, 0xd0, 0x4b, 0x98, 0xb4, 0x6a, 0x54, 0x90, 0xb3, 0x1f, 0xa5, 0xa6, 0x19, 0x19, 0x15, 0x64,
-	0x6a, 0x6c, 0x05, 0x04, 0x7b, 0x1f, 0xa3, 0x96, 0xf9, 0xc8, 0x0a, 0x08, 0x36, 0xac, 0x80, 0x60,
-	0xef, 0xe3, 0xd4, 0xb8, 0x18, 0x5d, 0x41, 0x84, 0x05, 0x9e, 0x93, 0x9f, 0xa0, 0xb6, 0x8e, 0x64,
-	0x81, 0xe7, 0xa0, 0xc6, 0x2c, 0xa4, 0xe0, 0x27, 0x41, 0xd3, 0x4b, 0x66, 0x21, 0xdf, 0xd4, 0xa8,
-	0x20, 0xdd, 0x3e, 0x45, 0x0d, 0x27, 0x64, 0x54, 0x90, 0x53, 0x0d, 0x74, 0x20, 0xb4, 0x53, 0x52,
-	0xea, 0xd3, 0xd4, 0x38, 0xb5, 0xe2, 0x11, 0x1e, 0x65, 0x2a, 0xb5, 0xd1, 0x4c, 0x04, 0x46, 0xf4,
-	0xec, 0xa7, 0x29, 0xd2, 0x30, 0x92, 0x47, 0x03, 0x13, 0x8d, 0xfb, 0x1c, 0x0a, 0xc7, 0x35, 0xc9,
-	0xf3, 0x0c, 0xa0, 0xa5, 0xd5, 0x3c, 0xc2, 0xa7, 0xa2, 0x79, 0xce, 0xa2, 0x43, 0xca, 0x66, 0x57,
-	0x6a, 0xc4, 0xb3, 0x40, 0xa1, 0xb5, 0xe8, 0x91, 0x29, 0x22, 0x6b, 0x43, 0x13, 0x79, 0x31, 0x10,
-	0x41, 0xe0, 0x73, 0x10, 0x52, 0x1a, 0xd5, 0x13, 0x81, 0x12, 0xe4, 0xad, 0xc8, 0x4a, 0x04, 0xac,
-	0x3d, 0x4f, 0x21, 0xec, 0x64, 0x4f, 0xc0, 0x1d, 0x70, 0xd9, 0xa3, 0xf9, 0x73, 0xaf, 0x42, 0xb3,
-	0x72, 0xc3, 0xeb, 0xfa, 0xe7, 0x9e, 0x2c, 0x2d, 0x7a, 0x5c, 0xff, 0x84, 0xcc, 0x5e, 0xa7, 0xe9,
-	0xa0, 0x53, 0x0a, 0x1b, 0x51, 0x41, 0xf4, 0x06, 0x3a, 0x5f, 0x0a, 0xa2, 0x99, 0x98, 0x07, 0x28,
-	0x8f, 0xcb, 0xe8, 0xb0, 0xc1, 0x05, 0x2f, 0x94, 0x6f, 0xa4, 0x3e, 0x42, 0x85, 0x34, 0x1b, 0x73,
-	0xc1, 0x0b, 0xe7, 0x29, 0xa3, 0x0f, 0x5e, 0x42, 0xdf, 0x44, 0x7d, 0x08, 0xc9, 0x14, 0x77, 0xc1,
-	0x2b, 0xea, 0xe9, 0xa4, 0x48, 0x08, 0xf6, 0xde, 0x4c, 0x3d, 0xe8, 0x1a, 0xca, 0x18, 0x0d, 0xc1,
-	0x03, 0xa2, 0x21, 0xd8, 0x7b, 0x0b, 0xf5, 0x13, 0x8a, 0x2a, 0x73, 0x34, 0x04, 0x0f, 0x88, 0x86,
-	0x60, 0xef, 0xad, 0xd4, 0x87, 0x50, 0x59, 0xe6, 0x68, 0x08, 0x76, 0x4f, 0xa3, 0x39, 0x83, 0x0b,
-	0x51, 0x80, 0xdf, 0x46, 0x7d, 0x48, 0xd9, 0xe5, 0xc5, 0xbc, 0x88, 0xf2, 0x5d, 0x45, 0x17, 0x99,
-	0xa2, 0x11, 0x7e, 0xde, 0x4e, 0xfd, 0x28, 0x3a, 0xec, 0x70, 0x3c, 0x22, 0x51, 0xda, 0x97, 0x8d,
-	0xf4, 0x42, 0x91, 0x7f, 0x07, 0x75, 0xa3, 0x08, 0xb3, 0x38, 0xb7, 0x50, 0xf6, 0x07, 0x04, 0x45,
-	0xb0, 0xf7, 0x4e, 0xea, 0x45, 0x2a, 0xb5, 0x84, 0xa0, 0x08, 0x1e, 0x18, 0x14, 0xc1, 0xde, 0xbb,
-	0xa8, 0x1f, 0x45, 0xba, 0x25, 0x05, 0x45, 0xb0, 0xfb, 0x2a, 0xe3, 0x17, 0xc5, 0xfb, 0x46, 0x9f,
-	0xfa, 0x89, 0x69, 0xb9, 0xf8, 0x37, 0xc6, 0xfb, 0xc9, 0x8d, 0xe6, 0x8d, 0x03, 0x9d, 0xe5, 0xdd,
-	0xd4, 0x97, 0x49, 0xdc, 0x19, 0xf6, 0x10, 0x34, 0x9d, 0x9b, 0x8d, 0x7c, 0x43, 0xfb, 0x79, 0x0f,
-	0xf5, 0x36, 0x48, 0xed, 0xc5, 0xbf, 0x00, 0xe8, 0x50, 0x77, 0xa3, 0x4b, 0x0c, 0x4e, 0x95, 0x5e,
-	0xf5, 0xde, 0x6c, 0xfa, 0x5e, 0x25, 0x24, 0xd9, 0x5c, 0x0c, 0x5c, 0xf6, 0xae, 0x9f, 0x46, 0x97,
-	0x1a, 0xb3, 0x4b, 0xa9, 0xf5, 0xf7, 0x66, 0xd3, 0xd4, 0x7a, 0x01, 0x7e, 0xb1, 0x21, 0x27, 0x23,
-	0xba, 0x70, 0xab, 0x51, 0x0f, 0x4b, 0xe4, 0x3f, 0x67, 0x4b, 0x59, 0xd0, 0x85, 0x30, 0x2a, 0x75,
-	0x21, 0xb7, 0x82, 0x0a, 0xf4, 0x2f, 0xd4, 0x8c, 0xe9, 0x42, 0x18, 0x56, 0x74, 0x21, 0xb7, 0xe3,
-	0xe5, 0xee, 0x5f, 0xa9, 0x21, 0xd3, 0x85, 0x30, 0xae, 0xea, 0x42, 0x6e, 0xc9, 0x8b, 0xda, 0xbf,
-	0x51, 0xcb, 0x82, 0xb4, 0x54, 0x75, 0xa1, 0xc4, 0x26, 0xd8, 0xfb, 0x77, 0x6a, 0x98, 0xd5, 0xb0,
-	0x85, 0xce, 0x51, 0xb0, 0x09, 0xf6, 0xfe, 0x83, 0x1a, 0xba, 0x3a, 0x76, 0xc4, 0x92, 0x97, 0xa0,
-	0xff, 0xa4, 0x96, 0xa3, 0x3a, 0xb6, 0xd0, 0x85, 0xdc, 0x52, 0x54, 0x88, 0xff, 0xa2, 0xa6, 0x4c,
-	0x17, 0xc2, 0x07, 0x9a, 0x2e, 0x14, 0xf8, 0xc2, 0xf8, 0xbf, 0xa9, 0x31, 0xd3, 0x85, 0x7c, 0x05,
-	0x9a, 0x2e, 0x14, 0x9e, 0x59, 0xc9, 0xf8, 0x1f, 0x6a, 0x9a, 0x91, 0x51, 0x29, 0xba, 0x50, 0x5d,
-	0x01, 0xc1, 0xde, 0xff, 0x52, 0xcb, 0x7c, 0x64, 0x05, 0x42, 0x17, 0x6a, 0x2b, 0x20, 0xd8, 0xfb,
-	0x3f, 0x6a, 0x5c, 0x8c, 0xae, 0x20, 0xc2, 0x02, 0xcf, 0xef, 0x0b, 0xa3, 0xa5, 0x2c, 0xe8, 0x42,
-	0x18, 0x57, 0x75, 0xa1, 0xf0, 0x0b, 0xd9, 0xfb, 0x33, 0xa3, 0xec, 0x6c, 0x57, 0x32, 0xab, 0xe8,
-	0x42, 0xb1, 0x9b, 0x58, 0x62, 0xbe, 0x9e, 0x1a, 0x4e, 0xc8, 0xa8, 0x14, 0x5d, 0xc8, 0xed, 0x94,
-	0x5c, 0xfb, 0x59, 0x6a, 0x3c, 0x84, 0x2e, 0x04, 0x8f, 0x11, 0x5d, 0xa8, 0xc1, 0x08, 0x59, 0xf3,
-	0x73, 0x14, 0x69, 0x38, 0x5d, 0xa8, 0x80, 0x69, 0xba, 0x90, 0xe3, 0xa9, 0xba, 0xf0, 0xe7, 0x01,
-	0x2d, 0xbd, 0x2e, 0x04, 0x9f, 0x51, 0x5d, 0x18, 0x6e, 0x76, 0xa5, 0x56, 0xfc, 0x02, 0x50, 0x98,
-	0x42, 0x17, 0x8a, 0x14, 0x89, 0xe8, 0xc2, 0x08, 0x88, 0x20, 0xf0, 0x17, 0x21, 0xa4, 0x74, 0xba,
-	0x50, 0x83, 0xd2, 0x74, 0x21, 0x7c, 0x02, 0xac, 0xfd, 0x12, 0x85, 0xb0, 0xd5, 0x85, 0xe0, 0x20,
-	0xd4, 0x85, 0x8a, 0x3f, 0xf7, 0x27, 0x51, 0xa1, 0x55, 0xdf, 0x62, 0x55, 0x0e, 0x4a, 0xdd, 0xb7,
-	0x21, 0x86, 0x1f, 0xb6, 0x00, 0xb8, 0xb1, 0xbe, 0x45, 0x0b, 0x22, 0xfd, 0xef, 0x74, 0xbb, 0xbb,
-	0x7d, 0x3e, 0xd8, 0xdf, 0x92, 0x23, 0xee, 0x59, 0x34, 0x19, 0x22, 0x40, 0x4d, 0xfb, 0x2d, 0x80,
-	0xb8, 0xd2, 0x1e, 0x82, 0x15, 0x54, 0xc0, 0x98, 0x68, 0x29, 0x43, 0xee, 0x3a, 0x9a, 0x0a, 0x41,
-	0x78, 0x8d, 0xfd, 0x6d, 0x40, 0xb9, 0xca, 0x1e, 0x05, 0xaa, 0x31, 0xc0, 0x14, 0x5a, 0xea, 0x98,
-	0x86, 0xc3, 0x2b, 0xf4, 0xef, 0xa4, 0xc6, 0x39, 0x63, 0xc0, 0xe1, 0xf5, 0x3d, 0x42, 0x1a, 0xc1,
-	0xde, 0xef, 0x0e, 0x43, 0x1a, 0xc1, 0x31, 0xd2, 0x08, 0x8e, 0x91, 0x46, 0xb0, 0xf7, 0x7b, 0x43,
-	0x91, 0x26, 0x60, 0x54, 0xd2, 0x22, 0x38, 0xbc, 0xb5, 0x7c, 0x67, 0x28, 0xd2, 0xa2, 0x38, 0xbc,
-	0x31, 0x6d, 0xa2, 0x62, 0x88, 0x23, 0x7a, 0xcd, 0xef, 0x03, 0xd0, 0xd5, 0xf6, 0x40, 0xbc, 0x85,
-	0x01, 0xd2, 0x64, 0x4b, 0x1b, 0x74, 0x9b, 0x68, 0x5a, 0x52, 0x27, 0xb0, 0xfe, 0x00, 0xb0, 0xae,
-	0x49, 0x41, 0xde, 0xba, 0x0a, 0x36, 0xd5, 0xd2, 0x47, 0xb5, 0xdd, 0x00, 0x7d, 0xf1, 0x0f, 0x53,
-	0xef, 0x06, 0xd6, 0x41, 0xf5, 0xdd, 0x00, 0x4d, 0x35, 0xc6, 0x1e, 0xc1, 0xde, 0x1f, 0x0d, 0xc7,
-	0x9e, 0xf8, 0x9e, 0x34, 0xf6, 0x08, 0x36, 0xb0, 0x47, 0xb0, 0xf7, 0xc7, 0x43, 0xb2, 0x27, 0xc0,
-	0x74, 0xf6, 0x22, 0xdb, 0x8f, 0xf7, 0xf4, 0x3f, 0x49, 0xbd, 0xfd, 0xa0, 0xfb, 0xeb, 0xdb, 0x8f,
-	0x2b, 0x02, 0x2d, 0x9d, 0x40, 0x11, 0xfc, 0x69, 0xfa, 0x74, 0x62, 0x0e, 0x22, 0xe9, 0x04, 0x7a,
-	0x42, 0xdd, 0x0d, 0xa0, 0x27, 0xfe, 0x2c, 0xf5, 0x6e, 0x60, 0xca, 0x43, 0xdf, 0x0d, 0x20, 0x46,
-	0xb6, 0xd0, 0x81, 0x10, 0x44, 0x11, 0x23, 0x7f, 0x0e, 0x48, 0xaf, 0xb0, 0x47, 0x0a, 0x05, 0x08,
-	0xa0, 0x15, 0x5b, 0x91, 0x61, 0xf7, 0x3c, 0x9a, 0x89, 0x20, 0x8a, 0xb6, 0xfa, 0x17, 0x00, 0x7a,
-	0x6d, 0x4a, 0x50, 0x3e, 0x06, 0xb8, 0x07, 0x5a, 0xf1, 0x4f, 0xdc, 0x1d, 0x74, 0x30, 0x84, 0x56,
-	0x25, 0xca, 0x5f, 0x02, 0xf0, 0x29, 0x7b, 0x60, 0xa9, 0x4a, 0x00, 0x76, 0xba, 0x15, 0x1d, 0x77,
-	0xef, 0x40, 0x87, 0x94, 0xea, 0xab, 0xa8, 0x95, 0xef, 0x02, 0xea, 0x72, 0x9a, 0x1a, 0x1c, 0xea,
-	0x14, 0x80, 0x75, 0x5b, 0xb1, 0x0f, 0xdc, 0xbb, 0x91, 0x17, 0xc3, 0x15, 0x4c, 0xff, 0x15, 0x40,
-	0x9f, 0x4e, 0x0d, 0xad, 0x71, 0x7d, 0xa8, 0x65, 0xfa, 0x4c, 0xec, 0x5f, 0xd6, 0xe8, 0x40, 0x73,
-	0xfc, 0x75, 0xaa, 0xfd, 0xcb, 0x3a, 0xbf, 0x14, 0x1d, 0x74, 0xff, 0x86, 0x43, 0x22, 0x19, 0x77,
-	0x14, 0x94, 0xbf, 0x49, 0x95, 0x8c, 0xd0, 0xf8, 0x25, 0x0c, 0x4d, 0x46, 0x39, 0x26, 0x70, 0x7a,
-	0x0a, 0xce, 0xdf, 0xa6, 0xc2, 0x39, 0x63, 0xc0, 0x91, 0x63, 0x0a, 0x69, 0x04, 0x03, 0xcc, 0xdf,
-	0xa5, 0x25, 0x8d, 0xe0, 0x18, 0x69, 0x30, 0xa4, 0x92, 0x26, 0x50, 0xfe, 0x3e, 0x35, 0x69, 0x2a,
-	0x8c, 0x20, 0x4d, 0xc7, 0xe9, 0x29, 0x38, 0xff, 0x90, 0x9a, 0xb4, 0x28, 0x8e, 0x1c, 0x13, 0x2d,
-	0x8d, 0xb7, 0x51, 0x00, 0xfa, 0xc7, 0x54, 0x2d, 0x8d, 0xf7, 0x7d, 0x89, 0x44, 0xbf, 0x0d, 0x65,
-	0x30, 0xa4, 0x8e, 0x95, 0x68, 0x40, 0xfa, 0xa7, 0x74, 0xd4, 0x31, 0x0f, 0x11, 0xea, 0xc2, 0x31,
-	0xb7, 0x84, 0x50, 0xa7, 0xdd, 0xe8, 0xac, 0x03, 0xc4, 0xd3, 0xb9, 0x92, 0x53, 0xde, 0x57, 0x1d,
-	0x09, 0xc6, 0xd9, 0x20, 0xb3, 0x38, 0x82, 0xf6, 0x83, 0x05, 0xc8, 0xd3, 0x67, 0xa8, 0x49, 0xae,
-	0x3a, 0x12, 0xc0, 0x3c, 0x90, 0xcb, 0x2f, 0x43, 0x13, 0x60, 0xc3, 0xb5, 0xf2, 0xb3, 0xd4, 0x68,
-	0xba, 0x3a, 0x12, 0xc0, 0x54, 0x2e, 0x76, 0x43, 0x2b, 0xae, 0x74, 0x9f, 0xa3, 0x56, 0x85, 0xd0,
-	0x8a, 0x4b, 0x55, 0x15, 0x8f, 0x60, 0xef, 0x79, 0x6a, 0x94, 0x55, 0xf1, 0x08, 0xd6, 0xf1, 0x08,
-	0xf6, 0x3e, 0x43, 0x8d, 0x5c, 0x0d, 0x4f, 0xb5, 0xe2, 0x22, 0xf1, 0xb3, 0xd4, 0x6a, 0x54, 0xc3,
-	0x23, 0xd8, 0x7d, 0x39, 0x2a, 0x80, 0x95, 0x90, 0x5d, 0x9f, 0xa3, 0x66, 0x63, 0xd5, 0x91, 0x00,
-	0x66, 0x0b, 0x89, 0x56, 0x46, 0x93, 0x1c, 0x53, 0x18, 0x7e, 0x9e, 0x1a, 0x4e, 0x55, 0x47, 0x02,
-	0x70, 0x10, 0xca, 0xab, 0x30, 0x02, 0xd0, 0x56, 0xbf, 0x4c, 0xcd, 0x32, 0x61, 0x04, 0xa0, 0x8e,
-	0x74, 0x54, 0x82, 0xbd, 0x5f, 0xa1, 0x56, 0x79, 0x1d, 0x95, 0x1d, 0x20, 0x68, 0xa8, 0x04, 0x7b,
-	0xbf, 0x4a, 0x0d, 0x8b, 0x11, 0x54, 0x35, 0x5a, 0xae, 0x49, 0x5e, 0xa0, 0x76, 0x4e, 0x18, 0x2d,
-	0x17, 0x15, 0x92, 0x39, 0x50, 0x14, 0x5f, 0xa0, 0x56, 0xe3, 0x92, 0x39, 0x90, 0x04, 0x61, 0x04,
-	0xa0, 0x07, 0xbe, 0x48, 0x8d, 0x26, 0xc2, 0x08, 0xa0, 0xa3, 0xd7, 0x51, 0x11, 0x6c, 0x94, 0x76,
-	0xfe, 0xa5, 0x5c, 0xfa, 0xc7, 0xb8, 0xd5, 0x91, 0x00, 0x42, 0x95, 0x2d, 0xfc, 0x56, 0x74, 0x40,
-	0x85, 0x10, 0x5d, 0xe5, 0xcb, 0xb9, 0xa1, 0x5e, 0xb1, 0xa9, 0x8e, 0x04, 0xd3, 0x12, 0x48, 0x74,
-	0x91, 0x35, 0x04, 0x83, 0x5a, 0xc3, 0xfe, 0x4a, 0x6e, 0x88, 0xf7, 0x6b, 0xaa, 0x23, 0xc1, 0x14,
-	0x73, 0xa9, 0x34, 0xe9, 0x15, 0xe4, 0x8a, 0x8d, 0xab, 0x74, 0xe8, 0xaf, 0xe6, 0xd2, 0x3c, 0x8b,
-	0xae, 0x8e, 0x04, 0x45, 0xbe, 0xdd, 0x65, 0x37, 0x3e, 0x87, 0x0e, 0xe9, 0x00, 0x82, 0xb4, 0xaf,
-	0xe5, 0x52, 0xbe, 0x59, 0x53, 0x1d, 0x09, 0x0e, 0xa8, 0x30, 0x82, 0xb0, 0x1f, 0xe3, 0x95, 0x03,
-	0x98, 0xfa, 0x7a, 0xce, 0xfa, 0x35, 0xc1, 0x9b, 0xe8, 0x6c, 0xc1, 0x94, 0xe2, 0x4b, 0xe6, 0x06,
-	0xec, 0xd1, 0x45, 0xef, 0x1b, 0x62, 0x93, 0x4e, 0x28, 0x9b, 0x74, 0x31, 0x6a, 0xe7, 0x7b, 0xdf,
-	0x34, 0xd9, 0xf9, 0x51, 0xbb, 0x25, 0xef, 0x5b, 0x26, 0xbb, 0x25, 0xf7, 0x0a, 0x74, 0x90, 0x67,
-	0x90, 0xfe, 0x40, 0xeb, 0xde, 0xbc, 0x7c, 0xa1, 0xa7, 0xea, 0x04, 0xf0, 0x0d, 0xea, 0xcf, 0xb3,
-	0xae, 0x12, 0xb4, 0x47, 0x1f, 0x66, 0xbd, 0x2f, 0xaf, 0xbe, 0xdd, 0x53, 0x75, 0x38, 0x97, 0x91,
-	0x67, 0x59, 0x57, 0xa3, 0x99, 0xe8, 0x74, 0x5e, 0x49, 0xef, 0xcb, 0x2b, 0xaf, 0xfa, 0x54, 0x9d,
-	0xe0, 0xa0, 0x3e, 0x9d, 0x57, 0xd6, 0xab, 0xe2, 0xf3, 0x79, 0x8d, 0xbd, 0x3f, 0x2f, 0xdf, 0xfb,
-	0x89, 0x4f, 0x3f, 0x23, 0x1e, 0x83, 0x99, 0x56, 0x4f, 0xb0, 0xf7, 0x40, 0x3e, 0xfa, 0x12, 0x90,
-	0x31, 0x02, 0x82, 0x93, 0x22, 0x20, 0xd8, 0x7b, 0x30, 0xaf, 0xbc, 0x11, 0x64, 0x8e, 0x80, 0xe0,
-	0xa4, 0x08, 0x08, 0xf6, 0x1e, 0xca, 0xcb, 0xd7, 0x83, 0xcc, 0x11, 0xb0, 0x47, 0x5f, 0xb3, 0xd1,
-	0xe9, 0xa2, 0x4a, 0x3f, 0x9c, 0x57, 0xdf, 0x15, 0xaa, 0x3a, 0xc1, 0x21, 0xdd, 0x83, 0xa8, 0xef,
-	0xd7, 0x21, 0x2f, 0x16, 0x81, 0xf0, 0xf1, 0x48, 0x5e, 0x7b, 0x71, 0xa8, 0xea, 0x04, 0x33, 0x91,
-	0x28, 0x44, 0xed, 0xbf, 0x3a, 0x4e, 0x25, 0x74, 0x81, 0xf7, 0xe7, 0xb5, 0xb7, 0x88, 0xe2, 0x3c,
-	0x42, 0x5f, 0x48, 0x0a, 0x84, 0x60, 0xef, 0x03, 0x79, 0xf5, 0x95, 0xa2, 0x84, 0x40, 0x08, 0x4e,
-	0x0e, 0x84, 0x60, 0xef, 0xd1, 0xbc, 0xf6, 0x7e, 0x51, 0x52, 0x20, 0x04, 0xbb, 0xd7, 0xc7, 0xbf,
-	0x10, 0xde, 0x58, 0x1e, 0xcb, 0x1b, 0x5e, 0x36, 0x8a, 0x7f, 0x33, 0xbc, 0xe1, 0xdc, 0x60, 0xd8,
-	0x18, 0xd0, 0x7a, 0x1e, 0xcf, 0x9b, 0xdf, 0x3c, 0x32, 0xec, 0x11, 0xe8, 0x4a, 0x37, 0xc5, 0xb9,
-	0x85, 0xfe, 0xf4, 0x44, 0x7e, 0xf0, 0x6b, 0x48, 0x71, 0xb2, 0xa1, 0x85, 0xbd, 0x16, 0xcd, 0x45,
-	0x1d, 0x2a, 0xcd, 0xec, 0xc9, 0xfc, 0xd0, 0xef, 0x24, 0x55, 0x9d, 0x60, 0x56, 0x07, 0x56, 0xff,
-	0x3e, 0xbd, 0x38, 0x9e, 0x31, 0x4a, 0x53, 0x78, 0x2a, 0x3f, 0xc4, 0x0b, 0x4a, 0x55, 0x27, 0x38,
-	0x1c, 0xcd, 0xb3, 0xd0, 0x66, 0xee, 0xa7, 0xd0, 0x84, 0xd6, 0xfb, 0x5e, 0xc4, 0x37, 0xcd, 0xe7,
-	0xee, 0x42, 0x48, 0xe9, 0x87, 0x2f, 0x26, 0xf2, 0x35, 0xa8, 0xa0, 0xbd, 0xc9, 0x69, 0x0b, 0x4e,
-	0x1d, 0x68, 0xef, 0x44, 0xa4, 0x73, 0xa0, 0x1c, 0x9e, 0x5b, 0x3b, 0xb8, 0x1a, 0x15, 0xa3, 0x87,
-	0xe3, 0x6e, 0x11, 0x65, 0x6f, 0x6b, 0x9c, 0x67, 0x4e, 0xf6, 0x05, 0xf4, 0x7f, 0xdd, 0x83, 0x28,
-	0x77, 0x47, 0xbd, 0xd9, 0x6b, 0x78, 0x19, 0x36, 0x06, 0xff, 0xa8, 0x64, 0x4e, 0x3a, 0x73, 0xd7,
-	0xa0, 0xe9, 0xd8, 0xc9, 0xf7, 0x6e, 0x0e, 0x72, 0xaa, 0x83, 0x57, 0x20, 0x37, 0x7e, 0xa8, 0xbd,
-	0x9b, 0x87, 0x69, 0xb3, 0x87, 0x33, 0x7b, 0xf7, 0x50, 0x48, 0x0c, 0x82, 0x9f, 0xd2, 0xed, 0xe6,
-	0x20, 0x9b, 0x1c, 0xc4, 0x1e, 0x3d, 0xb8, 0xc9, 0x41, 0xec, 0xd1, 0xc3, 0xa8, 0xea, 0xe1, 0x14,
-	0x3a, 0x60, 0x38, 0x17, 0xde, 0xcd, 0xc5, 0x98, 0xea, 0x62, 0x19, 0x1d, 0x34, 0x1d, 0xf7, 0xee,
-	0xe6, 0x63, 0xca, 0xcc, 0xa5, 0x3c, 0xc7, 0xdd, 0xcd, 0x41, 0x66, 0x40, 0x1c, 0x7b, 0xa4, 0x22,
-	0x3f, 0x28, 0x8e, 0x3d, 0xfa, 0x28, 0x9a, 0xbf, 0x10, 0xe5, 0x40, 0x75, 0x37, 0x0f, 0x4e, 0xc2,
-	0xa6, 0x90, 0x47, 0xa5, 0xbb, 0x79, 0x18, 0x37, 0x73, 0x29, 0x4f, 0x41, 0x77, 0x73, 0x30, 0xa1,
-	0x3a, 0x38, 0x8f, 0x0e, 0x19, 0x0f, 0x37, 0x0d, 0x4e, 0x5e, 0xa5, 0x3a, 0x49, 0xfb, 0x30, 0x57,
-	0x81, 0xbe, 0x1b, 0x79, 0x49, 0x47, 0x9c, 0x06, 0xf4, 0x1b, 0x55, 0xf4, 0x21, 0x1e, 0xf0, 0x2a,
-	0x0b, 0x78, 0x2d, 0x9a, 0x31, 0x1f, 0x75, 0x1a, 0xe0, 0x7f, 0x44, 0x87, 0x4f, 0xf9, 0xc4, 0x57,
-	0x01, 0xef, 0xa1, 0xd9, 0x84, 0x13, 0x4f, 0x03, 0xfa, 0x75, 0x3a, 0xf5, 0xb6, 0x0f, 0x81, 0xb5,
-	0x98, 0xe7, 0x92, 0x4f, 0x3b, 0x0d, 0xc8, 0xaf, 0xd4, 0xe3, 0x4e, 0xf1, 0x58, 0x38, 0xb6, 0x5b,
-	0xf5, 0x33, 0x4f, 0x15, 0x33, 0xb7, 0x5b, 0x2f, 0x81, 0x84, 0x89, 0x1c, 0x67, 0xaa, 0x1e, 0xa6,
-	0xf7, 0xe6, 0xe1, 0x4c, 0xb2, 0x87, 0xc2, 0xde, 0xfa, 0x99, 0x7e, 0x06, 0xa9, 0x3a, 0xc8, 0xee,
-	0x3d, 0x88, 0x04, 0x0f, 0xee, 0xde, 0x83, 0x48, 0xf0, 0x30, 0xba, 0x9b, 0x07, 0x28, 0xa1, 0xd1,
-	0x13, 0x41, 0xd5, 0xc5, 0xd8, 0x1e, 0xc3, 0xd0, 0x8f, 0xfa, 0x54, 0x0f, 0xe3, 0xbb, 0x79, 0xb8,
-	0x12, 0x21, 0xf9, 0xf7, 0xb8, 0xb5, 0x2e, 0xa9, 0xa2, 0x99, 0xd3, 0x77, 0x75, 0x1b, 0xed, 0x9d,
-	0xcd, 0x4e, 0x7b, 0x38, 0x8d, 0xa5, 0x7a, 0x1a, 0x4a, 0x2b, 0x1d, 0x99, 0x47, 0xe3, 0x52, 0x6c,
-	0x8f, 0x23, 0xd0, 0xc5, 0xc5, 0x11, 0xfa, 0xbf, 0xcb, 0xc1, 0xa9, 0x1f, 0xbd, 0xa9, 0xe8, 0xb8,
-	0xfb, 0xd1, 0xd8, 0xb5, 0xd5, 0x53, 0xc1, 0xab, 0x6f, 0x38, 0x5d, 0xcc, 0x5c, 0x36, 0xbe, 0xef,
-	0x9e, 0x5a, 0xf1, 0xc2, 0x85, 0x0b, 0x17, 0x32, 0xfe, 0x59, 0x34, 0xdb, 0x10, 0x8b, 0x58, 0xd1,
-	0xee, 0x2c, 0xba, 0x16, 0xa2, 0xd3, 0xbb, 0xa7, 0xc6, 0x58, 0x3e, 0xd4, 0x88, 0x52, 0x43, 0xbf,
-	0x22, 0xbf, 0x81, 0x3c, 0x03, 0x08, 0xfc, 0x41, 0x6e, 0x83, 0xf2, 0x86, 0x1a, 0xcb, 0xd6, 0x99,
-	0x18, 0x0a, 0xcb, 0x6d, 0x7f, 0x03, 0x1d, 0x36, 0xc0, 0xec, 0xd8, 0xe3, 0xbc, 0xb1, 0xc6, 0x72,
-	0x7a, 0x36, 0x86, 0x03, 0x25, 0x20, 0x01, 0xa8, 0x67, 0x0f, 0xf4, 0xa6, 0x1a, 0x4b, 0xfd, 0x38,
-	0x10, 0x54, 0x8a, 0x64, 0xe2, 0x08, 0xb6, 0xc2, 0x79, 0x73, 0x8d, 0x55, 0x08, 0x23, 0x71, 0x04,
-	0x0f, 0x20, 0xce, 0x12, 0xe7, 0x2d, 0x35, 0x56, 0x47, 0xcc, 0xc4, 0x25, 0x02, 0xf5, 0xec, 0x81,
-	0xde, 0x5a, 0x63, 0xe5, 0xc6, 0x4c, 0x1c, 0xc1, 0xfe, 0x26, 0x9a, 0x33, 0x00, 0x89, 0x93, 0x0b,
-	0x1b, 0xa4, 0xb7, 0xd5, 0x58, 0x55, 0xf2, 0x62, 0x48, 0xbc, 0x8a, 0xf9, 0xb7, 0xa1, 0x8b, 0x4c,
-	0xe4, 0xa5, 0xc1, 0x7a, 0x7b, 0x8d, 0x89, 0xd6, 0xc3, 0x71, 0xfa, 0xb8, 0xb7, 0x84, 0x0d, 0xb1,
-	0x0e, 0xaf, 0xf6, 0x59, 0x20, 0xbd, 0xa3, 0xc6, 0xd4, 0x6d, 0x7c, 0x43, 0x30, 0x6d, 0x3c, 0x88,
-	0x3e, 0xcb, 0x2f, 0xea, 0x9d, 0x35, 0xa6, 0x81, 0x13, 0xe8, 0x23, 0x78, 0x20, 0x7d, 0x96, 0x58,
-	0xef, 0xaa, 0x31, 0xad, 0x9c, 0x44, 0x5f, 0xe2, 0xfe, 0x83, 0xc3, 0x1e, 0x2b, 0xa8, 0x7e, 0x8d,
-	0x89, 0xea, 0xf8, 0xfe, 0x03, 0x4d, 0x9e, 0x94, 0x51, 0x70, 0xb8, 0x63, 0x03, 0xf4, 0xee, 0x1a,
-	0xeb, 0x02, 0x86, 0x8c, 0x82, 0x13, 0x5f, 0xf3, 0x86, 0x60, 0x67, 0x45, 0x56, 0x38, 0xef, 0xa9,
-	0x31, 0x89, 0x1e, 0xdf, 0x10, 0x4c, 0xe0, 0xfb, 0x0f, 0x38, 0xe8, 0x12, 0x03, 0x8e, 0x3c, 0x42,
-	0xb2, 0x02, 0x7b, 0x6f, 0x6d, 0x08, 0x29, 0x3f, 0x17, 0x5b, 0x62, 0xf8, 0x99, 0xff, 0xb8, 0x83,
-	0x4a, 0x89, 0xcb, 0xe4, 0x8f, 0x07, 0xac, 0x56, 0x7a, 0x6f, 0x6d, 0x38, 0xd9, 0x7f, 0x89, 0x79,
-	0xb1, 0xfc, 0x63, 0xff, 0x61, 0x07, 0x7d, 0x9f, 0x61, 0xbd, 0xca, 0x73, 0x19, 0xab, 0xd5, 0xbe,
-	0xaf, 0x36, 0xcc, 0x5f, 0x09, 0x17, 0xc5, 0xd6, 0x2a, 0x3f, 0xf4, 0xef, 0x73, 0xd0, 0xa5, 0xc6,
-	0x1e, 0x21, 0x8f, 0xf1, 0xac, 0x96, 0x7a, 0x5f, 0x2d, 0xd5, 0x9f, 0x14, 0x17, 0x1b, 0x3a, 0x4b,
-	0xf8, 0xa9, 0xff, 0xa8, 0x83, 0x8e, 0x0c, 0x58, 0x64, 0x9a, 0x0d, 0x70, 0x7f, 0x2d, 0xed, 0x1f,
-	0x20, 0x97, 0x26, 0x2d, 0x55, 0x7c, 0xf9, 0x0f, 0x39, 0x48, 0xa6, 0x9b, 0x7e, 0xd3, 0xda, 0x66,
-	0x85, 0x0f, 0xd4, 0xd8, 0xe3, 0x28, 0x9b, 0x37, 0x6d, 0xcc, 0x02, 0x36, 0x48, 0x58, 0x8d, 0xdf,
-	0x54, 0x6b, 0x8c, 0xfe, 0xc0, 0xc8, 0x2e, 0x99, 0xfa, 0xea, 0x75, 0x71, 0x89, 0xa6, 0x3d, 0x5f,
-	0xf2, 0xb7, 0xd4, 0xd2, 0x19, 0x79, 0xc6, 0x64, 0x97, 0x0d, 0x7d, 0xfd, 0xba, 0xf9, 0x6c, 0x1c,
-	0x10, 0x74, 0xe3, 0xed, 0x6a, 0xb7, 0x8b, 0x3e, 0x96, 0xb2, 0xdb, 0xd5, 0x7d, 0xed, 0xba, 0xba,
-	0x17, 0x47, 0xe4, 0x0a, 0x72, 0xcb, 0x0c, 0x99, 0x42, 0x42, 0xde, 0xdf, 0x57, 0xaf, 0xbb, 0x1b,
-	0x10, 0xb9, 0x94, 0xec, 0x26, 0xd2, 0x6a, 0xd9, 0x65, 0x1f, 0xe8, 0xc7, 0xaf, 0xcb, 0x9b, 0xa9,
-	0x25, 0x78, 0x10, 0xb5, 0x96, 0xb0, 0x0f, 0xf6, 0xb5, 0xeb, 0xf6, 0x09, 0xd4, 0x12, 0x3c, 0x88,
-	0x5a, 0x4b, 0xc8, 0x87, 0xfa, 0xea, 0x75, 0xfd, 0x04, 0x6a, 0x09, 0xf6, 0xbb, 0xaa, 0x84, 0x89,
-	0x3d, 0x95, 0xb3, 0x82, 0x7c, 0xb8, 0xaf, 0x5f, 0xf7, 0x3f, 0x1c, 0x07, 0x15, 0xba, 0xf3, 0x4e,
-	0x74, 0xb1, 0x91, 0xda, 0x34, 0xb0, 0x8f, 0xf4, 0x23, 0x3f, 0x17, 0x30, 0x67, 0xa0, 0x57, 0x68,
-	0xd0, 0xdb, 0xcd, 0x3b, 0xc9, 0x5e, 0x84, 0xbe, 0xbf, 0x1f, 0xf9, 0xb9, 0x01, 0xc3, 0x36, 0x02,
-	0x3d, 0x3a, 0x88, 0x61, 0xcb, 0x2f, 0xf5, 0x03, 0x7d, 0xfd, 0xe7, 0x0a, 0x92, 0x18, 0x26, 0x78,
-	0x30, 0xc3, 0x96, 0xb0, 0x8f, 0xf6, 0x23, 0x3f, 0x77, 0x90, 0xc8, 0x30, 0xc1, 0xfe, 0x79, 0xf3,
-	0x16, 0x4e, 0xa1, 0x53, 0x1f, 0xeb, 0x1b, 0x7f, 0x2e, 0xc1, 0xb0, 0x97, 0xb9, 0x70, 0x7d, 0x5d,
-	0x42, 0xc2, 0xda, 0x2b, 0xd7, 0xc7, 0xfb, 0x49, 0x3f, 0xb7, 0x60, 0xca, 0x5d, 0x50, 0xb3, 0xaf,
-	0x77, 0xcc, 0x7b, 0xcb, 0x5e, 0xcf, 0x3e, 0xd1, 0xdf, 0xed, 0xf7, 0x1a, 0x0c, 0x9b, 0x0d, 0xb4,
-	0xee, 0x13, 0x9a, 0x28, 0x33, 0x3d, 0x2f, 0xb5, 0x5a, 0xc9, 0x93, 0xfd, 0xef, 0xc1, 0x0f, 0x3e,
-	0x5c, 0x14, 0x5f, 0xac, 0x54, 0xbd, 0x8f, 0x69, 0xaa, 0xd7, 0xfc, 0x8c, 0xd5, 0x6a, 0xc9, 0x4f,
-	0xf5, 0x87, 0xfa, 0xc5, 0x88, 0x4b, 0x4c, 0xb5, 0x59, 0xaa, 0xb4, 0x35, 0xf5, 0xc8, 0x49, 0xbb,
-	0x2c, 0x68, 0xb7, 0xc8, 0xef, 0x3a, 0xec, 0x66, 0xa1, 0x3c, 0x73, 0x0a, 0x94, 0x2b, 0x86, 0xfe,
-	0xba, 0x2a, 0x5a, 0xf4, 0xcb, 0x86, 0x56, 0x30, 0x1f, 0x64, 0x30, 0xea, 0xa1, 0x53, 0xa0, 0x5e,
-	0x51, 0xf4, 0xcf, 0xa9, 0x3b, 0x36, 0x72, 0x59, 0xd1, 0x0a, 0xe8, 0x43, 0x0c, 0x48, 0x3d, 0x75,
-	0x0a, 0xb4, 0x2b, 0x8e, 0x09, 0x48, 0x29, 0x24, 0xc3, 0x87, 0x19, 0x52, 0xc1, 0x80, 0xc4, 0xb5,
-	0x42, 0x22, 0x77, 0x96, 0x45, 0xef, 0x23, 0x0c, 0x28, 0x6b, 0xe6, 0x8e, 0xe0, 0x01, 0xdc, 0x59,
-	0x02, 0x7d, 0x94, 0x01, 0xb9, 0x09, 0xdc, 0x25, 0x22, 0xa5, 0xd0, 0x04, 0x1f, 0x63, 0x48, 0xa3,
-	0x09, 0xdc, 0x11, 0xec, 0xdf, 0xaa, 0x16, 0xd0, 0xe8, 0x65, 0x4f, 0x2b, 0xa8, 0x8f, 0x33, 0x28,
-	0xf5, 0xe8, 0x29, 0xd0, 0xaf, 0x88, 0xfa, 0x4d, 0xb5, 0x2d, 0xc6, 0x2e, 0x8b, 0x5a, 0x81, 0x7d,
-	0x82, 0x81, 0xa9, 0x67, 0x4f, 0x41, 0xe4, 0x8a, 0x69, 0xc2, 0xae, 0xb0, 0x6f, 0xfb, 0x9f, 0x64,
-	0x50, 0x19, 0xc3, 0xae, 0x80, 0x66, 0x3f, 0x80, 0x41, 0xcb, 0x2f, 0xeb, 0x53, 0x0c, 0x29, 0x9f,
-	0xc4, 0x20, 0xc1, 0x03, 0x19, 0xb4, 0x04, 0xfb, 0x34, 0x03, 0x2b, 0x26, 0x32, 0x98, 0xb8, 0x0b,
-	0x53, 0xb4, 0xf5, 0xa7, 0x19, 0x96, 0x63, 0xd8, 0x85, 0xbc, 0x8d, 0x27, 0x64, 0x96, 0x7d, 0x17,
-	0x7f, 0x86, 0x21, 0x8d, 0x9b, 0x32, 0x0b, 0x5a, 0xb6, 0x79, 0x57, 0xd8, 0x37, 0xec, 0x67, 0x19,
-	0xd0, 0x84, 0x61, 0x57, 0x40, 0x57, 0x7e, 0x50, 0x3b, 0x81, 0x32, 0xdc, 0xf6, 0xb5, 0x42, 0x7b,
-	0x8e, 0xa1, 0x0d, 0x7f, 0x04, 0x15, 0x44, 0xef, 0x08, 0x53, 0xf5, 0x50, 0x4a, 0x5c, 0x67, 0x9a,
-	0x13, 0x88, 0xe7, 0xd9, 0x52, 0xbf, 0x27, 0x67, 0x50, 0x81, 0xe1, 0x92, 0xb1, 0xff, 0x88, 0x26,
-	0x77, 0x4c, 0xf7, 0x8d, 0xad, 0x96, 0xfb, 0x19, 0xbe, 0xdc, 0xa1, 0x0f, 0xa1, 0x82, 0xd8, 0x2d,
-	0x65, 0xff, 0x7e, 0xed, 0x10, 0xca, 0x78, 0x61, 0xd9, 0x6a, 0xad, 0x9f, 0xe5, 0xbb, 0x20, 0xfd,
-	0x29, 0x54, 0x10, 0xbf, 0xe6, 0x4c, 0xe5, 0xd8, 0x91, 0x01, 0xab, 0x4c, 0xb3, 0x07, 0x3e, 0xc7,
-	0x49, 0x1d, 0xea, 0x18, 0x2a, 0x30, 0xde, 0x93, 0xf6, 0x1f, 0x56, 0x8f, 0xa1, 0xf4, 0x1b, 0xce,
-	0x36, 0x4b, 0xfc, 0x3c, 0x5b, 0x62, 0xca, 0x73, 0x28, 0xfd, 0x9e, 0x75, 0xc2, 0x72, 0x96, 0x0b,
-	0xe2, 0x55, 0xfd, 0x5e, 0x7b, 0xb3, 0xd3, 0x5e, 0x9e, 0x8d, 0xbf, 0x23, 0xc9, 0x3e, 0xb8, 0x6c,
-	0x11, 0xed, 0x57, 0xdf, 0x13, 0x37, 0x3d, 0x10, 0x45, 0xee, 0x84, 0x7c, 0x20, 0xfa, 0x82, 0xb3,
-	0xfc, 0x9a, 0x1f, 0xaf, 0xc5, 0x96, 0x7d, 0x8c, 0x2d, 0x7b, 0xb5, 0xb7, 0x7e, 0x6c, 0xb3, 0xdd,
-	0x6d, 0x6c, 0xb7, 0xeb, 0x4d, 0xf6, 0x3b, 0xb7, 0x6c, 0x74, 0xe7, 0x58, 0xb3, 0xb1, 0x51, 0x3f,
-	0x7b, 0xfe, 0x58, 0xd2, 0x4f, 0xe2, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe2, 0xf2, 0x23,
-	0x9e, 0x2d, 0x57, 0x00, 0x00,
-}
diff --git a/internal/testprotos/legacy/proto2_20180814_aa810b61/test.proto b/internal/testprotos/legacy/proto2_20180814_aa810b61/test.proto
deleted file mode 100644
index b64ba1f..0000000
--- a/internal/testprotos/legacy/proto2_20180814_aa810b61/test.proto
+++ /dev/null
@@ -1,333 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package google.golang.org.proto2_20180814;
-option go_package = "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20180814_aa810b61";
-
-enum SiblingEnum {
-	ALPHA   = 0;
-	BRAVO   = 10;
-	CHARLIE = 200;
-}
-
-message SiblingMessage {
-	optional string  f1 = 1;
-	required string  f2 = 2;
-	repeated string  f3 = 3;
-	optional Message f4 = 4;
-}
-
-message Message {
-	enum ChildEnum {
-		ALPHA   = 0;
-		BRAVO   = 1;
-		CHARLIE = 2;
-	}
-	message ChildMessage {
-		optional string  f1 = 1;
-		required string  f2 = 2;
-		repeated string  f3 = 3;
-	    optional Message f4 = 4;
-	}
-	optional group NamedGroup = 1 {
-		optional string  f1 = 1;
-		required string  f2 = 2;
-		repeated string  f3 = 3;
-	    optional Message f4 = 4;
-	}
-
-	// Optional fields.
-	optional bool     optional_bool     = 100;
-	optional int32    optional_int32    = 101;
-	optional sint32   optional_sint32   = 102;
-	optional uint32   optional_uint32   = 103;
-	optional int64    optional_int64    = 104;
-	optional sint64   optional_sint64   = 105;
-	optional uint64   optional_uint64   = 106;
-	optional fixed32  optional_fixed32  = 107;
-	optional sfixed32 optional_sfixed32 = 108;
-	optional float    optional_float    = 109;
-	optional fixed64  optional_fixed64  = 110;
-	optional sfixed64 optional_sfixed64 = 111;
-	optional double   optional_double   = 112;
-	optional string   optional_string   = 113;
-	optional bytes    optional_bytes    = 114;
-
-	optional ChildEnum      optional_child_enum      = 115;
-	optional ChildMessage   optional_child_message   = 116;
-	optional NamedGroup     optional_named_group     = 117;
-	optional SiblingEnum    optional_sibling_enum    = 118;
-	optional SiblingMessage optional_sibling_message = 119;
-	optional group OptionalGroup = 120 {
-		optional string f1 = 1;
-		required string f2 = 2;
-		repeated string f3 = 3;
-	}
-
-	// Optional default fields.
-	optional bool      defaulted_bool     = 200 [default = true];
-	optional int32     defaulted_int32    = 201 [default = -12345];
-	optional sint32    defaulted_sint32   = 202 [default = -3200];
-	optional uint32    defaulted_uint32   = 203 [default = 3200];
-	optional int64     defaulted_int64    = 204 [default = -123456789];
-	optional sint64    defaulted_sint64   = 205 [default = -6400];
-	optional uint64    defaulted_uint64   = 206 [default = 6400];
-	optional fixed32   defaulted_fixed32  = 207 [default = 320000];
-	optional sfixed32  defaulted_sfixed32 = 208 [default = -320000];
-	optional float     defaulted_float    = 209 [default = 3.14159];
-	optional fixed64   defaulted_fixed64  = 210 [default = 640000];
-	optional sfixed64  defaulted_sfixed64 = 211 [default = -640000];
-	optional double    defaulted_double   = 212 [default = 3.14159265359];
-	optional string    defaulted_string   = 213 [default = "hello, \"world!\"\n"];
-	optional bytes     defaulted_bytes    = 214 [default = "dead\xde\xad\xbe\xefbeef"];
-
-	optional ChildEnum   defaulted_child_enum   = 215 [default = ALPHA];
-	optional SiblingEnum defaulted_sibling_enum = 216 [default = ALPHA];
-
-	// Required fields.
-	required bool     required_bool     = 300;
-	required int32    required_int32    = 301;
-	required sint32   required_sint32   = 302;
-	required uint32   required_uint32   = 303;
-	required int64    required_int64    = 304;
-	required sint64   required_sint64   = 305;
-	required uint64   required_uint64   = 306;
-	required fixed32  required_fixed32  = 307;
-	required sfixed32 required_sfixed32 = 308;
-	required float    required_float    = 309;
-	required fixed64  required_fixed64  = 310;
-	required sfixed64 required_sfixed64 = 311;
-	required double   required_double   = 312;
-	required string   required_string   = 313;
-	required bytes    required_bytes    = 314;
-
-	required ChildEnum      required_child_enum      = 315;
-	required ChildMessage   required_child_message   = 316;
-	required NamedGroup     required_named_group     = 317;
-	required SiblingEnum    required_sibling_enum    = 318;
-	required SiblingMessage required_sibling_message = 319;
-	required group RequiredGroup = 320 {
-		optional string f1 = 1;
-		required string f2 = 2;
-		repeated string f3 = 3;
-	}
-	// Required default fields.
-	required bool      required_defaulted_bool     = 400 [default = true];
-	required int32     required_defaulted_int32    = 401 [default = -12345];
-	required sint32    required_defaulted_sint32   = 402 [default = -3200];
-	required uint32    required_defaulted_uint32   = 403 [default = 3200];
-	required int64     required_defaulted_int64    = 404 [default = -123456789];
-	required sint64    required_defaulted_sint64   = 405 [default = -6400];
-	required uint64    required_defaulted_uint64   = 406 [default = 6400];
-	required fixed32   required_defaulted_fixed32  = 407 [default = 320000];
-	required sfixed32  required_defaulted_sfixed32 = 408 [default = -320000];
-	required float     required_defaulted_float    = 409 [default = 3.14159];
-	required fixed64   required_defaulted_fixed64  = 410 [default = 640000];
-	required sfixed64  required_defaulted_sfixed64 = 411 [default = -640000];
-	required double    required_defaulted_double   = 412 [default = 3.14159265359];
-	required string    required_defaulted_string   = 413 [default = "hello, \"world!\"\n"];
-	required bytes     required_defaulted_bytes    = 414 [default = "dead\xde\xad\xbe\xefbeef"];
-
-	required ChildEnum   required_defaulted_child_enum   = 415 [default = ALPHA];
-	required SiblingEnum required_defaulted_sibling_enum = 416 [default = ALPHA];
-
-	// Repeated fields.
-	repeated bool     repeated_bool     = 500;
-	repeated int32    repeated_int32    = 501;
-	repeated sint32   repeated_sint32   = 502;
-	repeated uint32   repeated_uint32   = 503;
-	repeated int64    repeated_int64    = 504;
-	repeated sint64   repeated_sint64   = 505;
-	repeated uint64   repeated_uint64   = 506;
-	repeated fixed32  repeated_fixed32  = 507;
-	repeated sfixed32 repeated_sfixed32 = 508;
-	repeated float    repeated_float    = 509;
-	repeated fixed64  repeated_fixed64  = 510;
-	repeated sfixed64 repeated_sfixed64 = 511;
-	repeated double   repeated_double   = 512;
-	repeated string   repeated_string   = 513;
-	repeated bytes    repeated_bytes    = 514;
-
-	repeated ChildEnum      repeated_child_enum      = 515;
-	repeated ChildMessage   repeated_child_message   = 516;
-	repeated NamedGroup     repeated_named_group     = 517;
-	repeated SiblingEnum    repeated_sibling_enum    = 518;
-	repeated SiblingMessage repeated_sibling_message = 519;
-	repeated group RepeatedGroup = 520 {
-		optional string f1 = 1;
-		required string f2 = 2;
-		repeated string f3 = 3;
-	}
-
-	// Map fields.
-	map<bool, bool>     map_bool_bool     = 600;
-	map<bool, int32>    map_bool_int32    = 601;
-	map<bool, sint32>   map_bool_sint32   = 602;
-	map<bool, uint32>   map_bool_uint32   = 603;
-	map<bool, int64>    map_bool_int64    = 604;
-	map<bool, sint64>   map_bool_sint64   = 605;
-	map<bool, uint64>   map_bool_uint64   = 606;
-	map<bool, fixed32>  map_bool_fixed32  = 607;
-	map<bool, sfixed32> map_bool_sfixed32 = 608;
-	map<bool, float>    map_bool_float    = 609;
-	map<bool, fixed64>  map_bool_fixed64  = 610;
-	map<bool, sfixed64> map_bool_sfixed64 = 611;
-	map<bool, double>   map_bool_double   = 612;
-	map<bool, string>   map_bool_string   = 613;
-	map<bool, bytes>    map_bool_bytes    = 614;
-
-	map<bool, ChildEnum>      map_bool_child_enum      = 615;
-	map<bool, ChildMessage>   map_bool_child_message   = 616;
-	map<bool, NamedGroup>     map_bool_named_group     = 617;
-	map<bool, SiblingEnum>    map_bool_sibling_enum    = 618;
-	map<bool, SiblingMessage> map_bool_sibling_message = 619;
-
-	map<int32, bool>   map_int32_bool   = 620;
-	map<sint32, bool>  map_sint32_bool  = 621;
-	map<uint32, bool>  map_uint32_bool  = 622;
-	map<int64, bool>   map_int64_bool   = 623;
-	map<sint64, bool>  map_sint64_bool  = 624;
-	map<uint64, bool>  map_uint64_bool  = 625;
-	map<fixed32, bool> map_fixed32_bool = 626;
-	map<string, bool>  map_string_bool  = 627;
-
-	// Oneof fields.
-	oneof oneof_union {
-		bool     oneof_bool     = 700;
-		int32    oneof_int32    = 701;
-		sint32   oneof_sint32   = 702;
-		uint32   oneof_uint32   = 703;
-		int64    oneof_int64    = 704;
-		sint64   oneof_sint64   = 705;
-		uint64   oneof_uint64   = 706;
-		fixed32  oneof_fixed32  = 707;
-		sfixed32 oneof_sfixed32 = 708;
-		float    oneof_float    = 709;
-		fixed64  oneof_fixed64  = 710;
-		sfixed64 oneof_sfixed64 = 711;
-		double   oneof_double   = 712;
-		string   oneof_string   = 713;
-		bytes    oneof_bytes    = 714;
-
-		ChildEnum      oneof_child_enum      = 715;
-		ChildMessage   oneof_child_message   = 716;
-		NamedGroup     oneof_named_group     = 717;
-		SiblingEnum    oneof_sibling_enum    = 718;
-		SiblingMessage oneof_sibling_message = 719;
-		group OneofGroup = 720 {
-			optional string f1 = 1;
-			required string f2 = 2;
-			repeated string f3 = 3;
-		}
-
-		string oneof_string1 = 721;
-		string oneof_string2 = 722;
-		string oneof_string3 = 723;
-	}
-
-	// Oneof default fields.
-	oneof oneof_defaulted_union {
-		bool      oneof_defaulted_bool     = 800 [default = true];
-		int32     oneof_defaulted_int32    = 801 [default = -12345];
-		sint32    oneof_defaulted_sint32   = 802 [default = -3200];
-		uint32    oneof_defaulted_uint32   = 803 [default = 3200];
-		int64     oneof_defaulted_int64    = 804 [default = -123456789];
-		sint64    oneof_defaulted_sint64   = 805 [default = -6400];
-		uint64    oneof_defaulted_uint64   = 806 [default = 6400];
-		fixed32   oneof_defaulted_fixed32  = 807 [default = 320000];
-		sfixed32  oneof_defaulted_sfixed32 = 808 [default = -320000];
-		float     oneof_defaulted_float    = 809 [default = 3.14159];
-		fixed64   oneof_defaulted_fixed64  = 810 [default = 640000];
-		sfixed64  oneof_defaulted_sfixed64 = 811 [default = -640000];
-		double    oneof_defaulted_double   = 812 [default = 3.14159265359];
-		string    oneof_defaulted_string   = 813 [default = "hello, \"world!\"\n"];
-		bytes     oneof_defaulted_bytes    = 814 [default = "dead\xde\xad\xbe\xefbeef"];
-
-		ChildEnum   oneof_defaulted_child_enum   = 815 [default = ALPHA];
-		SiblingEnum oneof_defaulted_sibling_enum = 816 [default = ALPHA];
-	}
-
-	// Extension fields.
-	extend Message {
-		// Optional fields.
-		optional bool     extension_optional_bool     = 10000;
-		optional int32    extension_optional_int32    = 10001;
-		optional sint32   extension_optional_sint32   = 10002;
-		optional uint32   extension_optional_uint32   = 10003;
-		optional int64    extension_optional_int64    = 10004;
-		optional sint64   extension_optional_sint64   = 10005;
-		optional uint64   extension_optional_uint64   = 10006;
-		optional fixed32  extension_optional_fixed32  = 10007;
-		optional sfixed32 extension_optional_sfixed32 = 10008;
-		optional float    extension_optional_float    = 10009;
-		optional fixed64  extension_optional_fixed64  = 10010;
-		optional sfixed64 extension_optional_sfixed64 = 10011;
-		optional double   extension_optional_double   = 10012;
-		optional string   extension_optional_string   = 10013;
-		optional bytes    extension_optional_bytes    = 10014;
-
-		optional ChildEnum      extension_optional_child_enum      = 10015;
-		optional ChildMessage   extension_optional_child_message   = 10016;
-		optional NamedGroup     extension_optional_named_group     = 10017;
-		optional SiblingEnum    extension_optional_sibling_enum    = 10018;
-		optional SiblingMessage extension_optional_sibling_message = 10019;
-		optional group ExtensionOptionalGroup = 10020 {
-			optional string f1 = 1;
-			required string f2 = 2;
-			repeated string f3 = 3;
-		}
-
-		// Optional default fields.
-		optional bool      extension_defaulted_bool     = 20000 [default = true];
-		optional int32     extension_defaulted_int32    = 20001 [default = -12345];
-		optional sint32    extension_defaulted_sint32   = 20002 [default = -3200];
-		optional uint32    extension_defaulted_uint32   = 20003 [default = 3200];
-		optional int64     extension_defaulted_int64    = 20004 [default = -123456789];
-		optional sint64    extension_defaulted_sint64   = 20005 [default = -6400];
-		optional uint64    extension_defaulted_uint64   = 20006 [default = 6400];
-		optional fixed32   extension_defaulted_fixed32  = 20007 [default = 320000];
-		optional sfixed32  extension_defaulted_sfixed32 = 20008 [default = -320000];
-		optional float     extension_defaulted_float    = 20009 [default = 3.14159];
-		optional fixed64   extension_defaulted_fixed64  = 20010 [default = 640000];
-		optional sfixed64  extension_defaulted_sfixed64 = 20011 [default = -640000];
-		optional double    extension_defaulted_double   = 20012 [default = 3.14159265359];
-		optional string    extension_defaulted_string   = 20013 [default = "hello, \"world!\"\n"];
-		optional bytes     extension_defaulted_bytes    = 20014 [default = "dead\xde\xad\xbe\xefbeef"];
-
-		optional ChildEnum   extension_defaulted_child_enum   = 20015 [default = ALPHA];
-		optional SiblingEnum extension_defaulted_sibling_enum = 20016 [default = ALPHA];
-
-		// Repeated fields.
-		repeated bool     extension_repeated_bool     = 30000;
-		repeated int32    extension_repeated_int32    = 30001;
-		repeated sint32   extension_repeated_sint32   = 30002;
-		repeated uint32   extension_repeated_uint32   = 30003;
-		repeated int64    extension_repeated_int64    = 30004;
-		repeated sint64   extension_repeated_sint64   = 30005;
-		repeated uint64   extension_repeated_uint64   = 30006;
-		repeated fixed32  extension_repeated_fixed32  = 30007;
-		repeated sfixed32 extension_repeated_sfixed32 = 30008;
-		repeated float    extension_repeated_float    = 30009;
-		repeated fixed64  extension_repeated_fixed64  = 30010;
-		repeated sfixed64 extension_repeated_sfixed64 = 30011;
-		repeated double   extension_repeated_double   = 30012;
-		repeated string   extension_repeated_string   = 30013;
-		repeated bytes    extension_repeated_bytes    = 30014;
-
-		repeated ChildEnum      extension_repeated_child_enum      = 30015;
-		repeated ChildMessage   extension_repeated_child_message   = 30016;
-		repeated NamedGroup     extension_repeated_named_group     = 30017;
-		repeated SiblingEnum    extension_repeated_sibling_enum    = 30018;
-		repeated SiblingMessage extension_repeated_sibling_message = 30019;
-		repeated group ExtensionRepeatedGroup = 30020 {
-			optional string f1 = 1;
-			required string f2 = 2;
-			repeated string f3 = 3;
-		}
-	}
-
-	extensions 10000 to max;
-}
diff --git a/internal/testprotos/legacy/proto2_20190205_c823c79e/test.pb.go b/internal/testprotos/legacy/proto2_20190205_c823c79e/test.pb.go
deleted file mode 100644
index 38a43bc..0000000
--- a/internal/testprotos/legacy/proto2_20190205_c823c79e/test.pb.go
+++ /dev/null
@@ -1,3315 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: proto2_20190205_c823c79e/test.proto
-
-package proto2_20190205_c823c79e
-
-import (
-	fmt "fmt"
-	math "math"
-
-	proto "google.golang.org/protobuf/internal/protolegacy"
-)
-
-// 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
-
-type SiblingEnum int32
-
-const (
-	SiblingEnum_ALPHA   SiblingEnum = 0
-	SiblingEnum_BRAVO   SiblingEnum = 10
-	SiblingEnum_CHARLIE SiblingEnum = 200
-)
-
-var SiblingEnum_name = map[int32]string{
-	0:   "ALPHA",
-	10:  "BRAVO",
-	200: "CHARLIE",
-}
-
-var SiblingEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   10,
-	"CHARLIE": 200,
-}
-
-func (x SiblingEnum) Enum() *SiblingEnum {
-	p := new(SiblingEnum)
-	*p = x
-	return p
-}
-
-func (x SiblingEnum) String() string {
-	return proto.EnumName(SiblingEnum_name, int32(x))
-}
-
-func (x *SiblingEnum) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(SiblingEnum_value, data, "SiblingEnum")
-	if err != nil {
-		return err
-	}
-	*x = SiblingEnum(value)
-	return nil
-}
-
-func (SiblingEnum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_3a17e2c63b2b3424, []int{0}
-}
-
-type Message_ChildEnum int32
-
-const (
-	Message_ALPHA   Message_ChildEnum = 0
-	Message_BRAVO   Message_ChildEnum = 1
-	Message_CHARLIE Message_ChildEnum = 2
-)
-
-var Message_ChildEnum_name = map[int32]string{
-	0: "ALPHA",
-	1: "BRAVO",
-	2: "CHARLIE",
-}
-
-var Message_ChildEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   1,
-	"CHARLIE": 2,
-}
-
-func (x Message_ChildEnum) Enum() *Message_ChildEnum {
-	p := new(Message_ChildEnum)
-	*p = x
-	return p
-}
-
-func (x Message_ChildEnum) String() string {
-	return proto.EnumName(Message_ChildEnum_name, int32(x))
-}
-
-func (x *Message_ChildEnum) UnmarshalJSON(data []byte) error {
-	value, err := proto.UnmarshalJSONEnum(Message_ChildEnum_value, data, "Message_ChildEnum")
-	if err != nil {
-		return err
-	}
-	*x = Message_ChildEnum(value)
-	return nil
-}
-
-func (Message_ChildEnum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_3a17e2c63b2b3424, []int{1, 0}
-}
-
-type SiblingMessage struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	F4                   *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *SiblingMessage) Reset()         { *m = SiblingMessage{} }
-func (m *SiblingMessage) String() string { return proto.CompactTextString(m) }
-func (*SiblingMessage) ProtoMessage()    {}
-func (*SiblingMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3a17e2c63b2b3424, []int{0}
-}
-
-func (m *SiblingMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SiblingMessage.Unmarshal(m, b)
-}
-func (m *SiblingMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SiblingMessage.Marshal(b, m, deterministic)
-}
-func (m *SiblingMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SiblingMessage.Merge(m, src)
-}
-func (m *SiblingMessage) XXX_Size() int {
-	return xxx_messageInfo_SiblingMessage.Size(m)
-}
-func (m *SiblingMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_SiblingMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SiblingMessage proto.InternalMessageInfo
-
-func (m *SiblingMessage) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *SiblingMessage) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *SiblingMessage) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func (m *SiblingMessage) GetF4() *Message {
-	if m != nil {
-		return m.F4
-	}
-	return nil
-}
-
-type Message struct {
-	Namedgroup *Message_NamedGroup `protobuf:"group,1,opt,name=NamedGroup,json=namedgroup" json:"namedgroup,omitempty"`
-	// Optional fields.
-	OptionalBool           *bool                  `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
-	OptionalInt32          *int32                 `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
-	OptionalSint32         *int32                 `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
-	OptionalUint32         *uint32                `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
-	OptionalInt64          *int64                 `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
-	OptionalSint64         *int64                 `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
-	OptionalUint64         *uint64                `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
-	OptionalFixed32        *uint32                `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
-	OptionalSfixed32       *int32                 `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
-	OptionalFloat          *float32               `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
-	OptionalFixed64        *uint64                `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
-	OptionalSfixed64       *int64                 `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
-	OptionalDouble         *float64               `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
-	OptionalString         *string                `protobuf:"bytes,113,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
-	OptionalBytes          []byte                 `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
-	OptionalChildEnum      *Message_ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,enum=google.golang.org.proto2_20190205.Message_ChildEnum" json:"optional_child_enum,omitempty"`
-	OptionalChildMessage   *Message_ChildMessage  `protobuf:"bytes,116,opt,name=optional_child_message,json=optionalChildMessage" json:"optional_child_message,omitempty"`
-	OptionalNamedGroup     *Message_NamedGroup    `protobuf:"bytes,117,opt,name=optional_named_group,json=optionalNamedGroup" json:"optional_named_group,omitempty"`
-	OptionalSiblingEnum    *SiblingEnum           `protobuf:"varint,118,opt,name=optional_sibling_enum,json=optionalSiblingEnum,enum=google.golang.org.proto2_20190205.SiblingEnum" json:"optional_sibling_enum,omitempty"`
-	OptionalSiblingMessage *SiblingMessage        `protobuf:"bytes,119,opt,name=optional_sibling_message,json=optionalSiblingMessage" json:"optional_sibling_message,omitempty"`
-	Optionalgroup          *Message_OptionalGroup `protobuf:"group,120,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
-	// Optional default fields.
-	DefaultedBool        *bool              `protobuf:"varint,200,opt,name=defaulted_bool,json=defaultedBool,def=1" json:"defaulted_bool,omitempty"`
-	DefaultedInt32       *int32             `protobuf:"varint,201,opt,name=defaulted_int32,json=defaultedInt32,def=-12345" json:"defaulted_int32,omitempty"`
-	DefaultedSint32      *int32             `protobuf:"zigzag32,202,opt,name=defaulted_sint32,json=defaultedSint32,def=-3200" json:"defaulted_sint32,omitempty"`
-	DefaultedUint32      *uint32            `protobuf:"varint,203,opt,name=defaulted_uint32,json=defaultedUint32,def=3200" json:"defaulted_uint32,omitempty"`
-	DefaultedInt64       *int64             `protobuf:"varint,204,opt,name=defaulted_int64,json=defaultedInt64,def=-123456789" json:"defaulted_int64,omitempty"`
-	DefaultedSint64      *int64             `protobuf:"zigzag64,205,opt,name=defaulted_sint64,json=defaultedSint64,def=-6400" json:"defaulted_sint64,omitempty"`
-	DefaultedUint64      *uint64            `protobuf:"varint,206,opt,name=defaulted_uint64,json=defaultedUint64,def=6400" json:"defaulted_uint64,omitempty"`
-	DefaultedFixed32     *uint32            `protobuf:"fixed32,207,opt,name=defaulted_fixed32,json=defaultedFixed32,def=320000" json:"defaulted_fixed32,omitempty"`
-	DefaultedSfixed32    *int32             `protobuf:"fixed32,208,opt,name=defaulted_sfixed32,json=defaultedSfixed32,def=-320000" json:"defaulted_sfixed32,omitempty"`
-	DefaultedFloat       *float32           `protobuf:"fixed32,209,opt,name=defaulted_float,json=defaultedFloat,def=3.14159" json:"defaulted_float,omitempty"`
-	DefaultedFixed64     *uint64            `protobuf:"fixed64,210,opt,name=defaulted_fixed64,json=defaultedFixed64,def=640000" json:"defaulted_fixed64,omitempty"`
-	DefaultedSfixed64    *int64             `protobuf:"fixed64,211,opt,name=defaulted_sfixed64,json=defaultedSfixed64,def=-640000" json:"defaulted_sfixed64,omitempty"`
-	DefaultedDouble      *float64           `protobuf:"fixed64,212,opt,name=defaulted_double,json=defaultedDouble,def=3.14159265359" json:"defaulted_double,omitempty"`
-	DefaultedString      *string            `protobuf:"bytes,213,opt,name=defaulted_string,json=defaultedString,def=hello, \"world!\"\n" json:"defaulted_string,omitempty"`
-	DefaultedBytes       []byte             `protobuf:"bytes,214,opt,name=defaulted_bytes,json=defaultedBytes,def=dead\\336\\255\\276\\357beef" json:"defaulted_bytes,omitempty"`
-	DefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,215,opt,name=defaulted_child_enum,json=defaultedChildEnum,enum=google.golang.org.proto2_20190205.Message_ChildEnum,def=0" json:"defaulted_child_enum,omitempty"`
-	DefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,216,opt,name=defaulted_sibling_enum,json=defaultedSiblingEnum,enum=google.golang.org.proto2_20190205.SiblingEnum,def=0" json:"defaulted_sibling_enum,omitempty"`
-	// Required fields.
-	RequiredBool           *bool                  `protobuf:"varint,300,req,name=required_bool,json=requiredBool" json:"required_bool,omitempty"`
-	RequiredInt32          *int32                 `protobuf:"varint,301,req,name=required_int32,json=requiredInt32" json:"required_int32,omitempty"`
-	RequiredSint32         *int32                 `protobuf:"zigzag32,302,req,name=required_sint32,json=requiredSint32" json:"required_sint32,omitempty"`
-	RequiredUint32         *uint32                `protobuf:"varint,303,req,name=required_uint32,json=requiredUint32" json:"required_uint32,omitempty"`
-	RequiredInt64          *int64                 `protobuf:"varint,304,req,name=required_int64,json=requiredInt64" json:"required_int64,omitempty"`
-	RequiredSint64         *int64                 `protobuf:"zigzag64,305,req,name=required_sint64,json=requiredSint64" json:"required_sint64,omitempty"`
-	RequiredUint64         *uint64                `protobuf:"varint,306,req,name=required_uint64,json=requiredUint64" json:"required_uint64,omitempty"`
-	RequiredFixed32        *uint32                `protobuf:"fixed32,307,req,name=required_fixed32,json=requiredFixed32" json:"required_fixed32,omitempty"`
-	RequiredSfixed32       *int32                 `protobuf:"fixed32,308,req,name=required_sfixed32,json=requiredSfixed32" json:"required_sfixed32,omitempty"`
-	RequiredFloat          *float32               `protobuf:"fixed32,309,req,name=required_float,json=requiredFloat" json:"required_float,omitempty"`
-	RequiredFixed64        *uint64                `protobuf:"fixed64,310,req,name=required_fixed64,json=requiredFixed64" json:"required_fixed64,omitempty"`
-	RequiredSfixed64       *int64                 `protobuf:"fixed64,311,req,name=required_sfixed64,json=requiredSfixed64" json:"required_sfixed64,omitempty"`
-	RequiredDouble         *float64               `protobuf:"fixed64,312,req,name=required_double,json=requiredDouble" json:"required_double,omitempty"`
-	RequiredString         *string                `protobuf:"bytes,313,req,name=required_string,json=requiredString" json:"required_string,omitempty"`
-	RequiredBytes          []byte                 `protobuf:"bytes,314,req,name=required_bytes,json=requiredBytes" json:"required_bytes,omitempty"`
-	RequiredChildEnum      *Message_ChildEnum     `protobuf:"varint,315,req,name=required_child_enum,json=requiredChildEnum,enum=google.golang.org.proto2_20190205.Message_ChildEnum" json:"required_child_enum,omitempty"`
-	RequiredChildMessage   *Message_ChildMessage  `protobuf:"bytes,316,req,name=required_child_message,json=requiredChildMessage" json:"required_child_message,omitempty"`
-	RequiredNamedGroup     *Message_NamedGroup    `protobuf:"bytes,317,req,name=required_named_group,json=requiredNamedGroup" json:"required_named_group,omitempty"`
-	RequiredSiblingEnum    *SiblingEnum           `protobuf:"varint,318,req,name=required_sibling_enum,json=requiredSiblingEnum,enum=google.golang.org.proto2_20190205.SiblingEnum" json:"required_sibling_enum,omitempty"`
-	RequiredSiblingMessage *SiblingMessage        `protobuf:"bytes,319,req,name=required_sibling_message,json=requiredSiblingMessage" json:"required_sibling_message,omitempty"`
-	Requiredgroup          *Message_RequiredGroup `protobuf:"group,320,req,name=RequiredGroup,json=requiredgroup" json:"requiredgroup,omitempty"`
-	// Required default fields.
-	RequiredDefaultedBool        *bool              `protobuf:"varint,400,req,name=required_defaulted_bool,json=requiredDefaultedBool,def=1" json:"required_defaulted_bool,omitempty"`
-	RequiredDefaultedInt32       *int32             `protobuf:"varint,401,req,name=required_defaulted_int32,json=requiredDefaultedInt32,def=-12345" json:"required_defaulted_int32,omitempty"`
-	RequiredDefaultedSint32      *int32             `protobuf:"zigzag32,402,req,name=required_defaulted_sint32,json=requiredDefaultedSint32,def=-3200" json:"required_defaulted_sint32,omitempty"`
-	RequiredDefaultedUint32      *uint32            `protobuf:"varint,403,req,name=required_defaulted_uint32,json=requiredDefaultedUint32,def=3200" json:"required_defaulted_uint32,omitempty"`
-	RequiredDefaultedInt64       *int64             `protobuf:"varint,404,req,name=required_defaulted_int64,json=requiredDefaultedInt64,def=-123456789" json:"required_defaulted_int64,omitempty"`
-	RequiredDefaultedSint64      *int64             `protobuf:"zigzag64,405,req,name=required_defaulted_sint64,json=requiredDefaultedSint64,def=-6400" json:"required_defaulted_sint64,omitempty"`
-	RequiredDefaultedUint64      *uint64            `protobuf:"varint,406,req,name=required_defaulted_uint64,json=requiredDefaultedUint64,def=6400" json:"required_defaulted_uint64,omitempty"`
-	RequiredDefaultedFixed32     *uint32            `protobuf:"fixed32,407,req,name=required_defaulted_fixed32,json=requiredDefaultedFixed32,def=320000" json:"required_defaulted_fixed32,omitempty"`
-	RequiredDefaultedSfixed32    *int32             `protobuf:"fixed32,408,req,name=required_defaulted_sfixed32,json=requiredDefaultedSfixed32,def=-320000" json:"required_defaulted_sfixed32,omitempty"`
-	RequiredDefaultedFloat       *float32           `protobuf:"fixed32,409,req,name=required_defaulted_float,json=requiredDefaultedFloat,def=3.14159" json:"required_defaulted_float,omitempty"`
-	RequiredDefaultedFixed64     *uint64            `protobuf:"fixed64,410,req,name=required_defaulted_fixed64,json=requiredDefaultedFixed64,def=640000" json:"required_defaulted_fixed64,omitempty"`
-	RequiredDefaultedSfixed64    *int64             `protobuf:"fixed64,411,req,name=required_defaulted_sfixed64,json=requiredDefaultedSfixed64,def=-640000" json:"required_defaulted_sfixed64,omitempty"`
-	RequiredDefaultedDouble      *float64           `protobuf:"fixed64,412,req,name=required_defaulted_double,json=requiredDefaultedDouble,def=3.14159265359" json:"required_defaulted_double,omitempty"`
-	RequiredDefaultedString      *string            `protobuf:"bytes,413,req,name=required_defaulted_string,json=requiredDefaultedString,def=hello, \"world!\"\n" json:"required_defaulted_string,omitempty"`
-	RequiredDefaultedBytes       []byte             `protobuf:"bytes,414,req,name=required_defaulted_bytes,json=requiredDefaultedBytes,def=dead\\336\\255\\276\\357beef" json:"required_defaulted_bytes,omitempty"`
-	RequiredDefaultedChildEnum   *Message_ChildEnum `protobuf:"varint,415,req,name=required_defaulted_child_enum,json=requiredDefaultedChildEnum,enum=google.golang.org.proto2_20190205.Message_ChildEnum,def=0" json:"required_defaulted_child_enum,omitempty"`
-	RequiredDefaultedSiblingEnum *SiblingEnum       `protobuf:"varint,416,req,name=required_defaulted_sibling_enum,json=requiredDefaultedSiblingEnum,enum=google.golang.org.proto2_20190205.SiblingEnum,def=0" json:"required_defaulted_sibling_enum,omitempty"`
-	// Repeated fields.
-	RepeatedBool           []bool                   `protobuf:"varint,500,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
-	RepeatedInt32          []int32                  `protobuf:"varint,501,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
-	RepeatedSint32         []int32                  `protobuf:"zigzag32,502,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
-	RepeatedUint32         []uint32                 `protobuf:"varint,503,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
-	RepeatedInt64          []int64                  `protobuf:"varint,504,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
-	RepeatedSint64         []int64                  `protobuf:"zigzag64,505,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
-	RepeatedUint64         []uint64                 `protobuf:"varint,506,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
-	RepeatedFixed32        []uint32                 `protobuf:"fixed32,507,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
-	RepeatedSfixed32       []int32                  `protobuf:"fixed32,508,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
-	RepeatedFloat          []float32                `protobuf:"fixed32,509,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
-	RepeatedFixed64        []uint64                 `protobuf:"fixed64,510,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
-	RepeatedSfixed64       []int64                  `protobuf:"fixed64,511,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
-	RepeatedDouble         []float64                `protobuf:"fixed64,512,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
-	RepeatedString         []string                 `protobuf:"bytes,513,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
-	RepeatedBytes          [][]byte                 `protobuf:"bytes,514,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
-	RepeatedChildEnum      []Message_ChildEnum      `protobuf:"varint,515,rep,name=repeated_child_enum,json=repeatedChildEnum,enum=google.golang.org.proto2_20190205.Message_ChildEnum" json:"repeated_child_enum,omitempty"`
-	RepeatedChildMessage   []*Message_ChildMessage  `protobuf:"bytes,516,rep,name=repeated_child_message,json=repeatedChildMessage" json:"repeated_child_message,omitempty"`
-	RepeatedNamedGroup     []*Message_NamedGroup    `protobuf:"bytes,517,rep,name=repeated_named_group,json=repeatedNamedGroup" json:"repeated_named_group,omitempty"`
-	RepeatedSiblingEnum    []SiblingEnum            `protobuf:"varint,518,rep,name=repeated_sibling_enum,json=repeatedSiblingEnum,enum=google.golang.org.proto2_20190205.SiblingEnum" json:"repeated_sibling_enum,omitempty"`
-	RepeatedSiblingMessage []*SiblingMessage        `protobuf:"bytes,519,rep,name=repeated_sibling_message,json=repeatedSiblingMessage" json:"repeated_sibling_message,omitempty"`
-	Repeatedgroup          []*Message_RepeatedGroup `protobuf:"group,520,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
-	// Map fields.
-	MapBoolBool           map[bool]bool                  `protobuf:"bytes,600,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolInt32          map[bool]int32                 `protobuf:"bytes,601,rep,name=map_bool_int32,json=mapBoolInt32" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolSint32         map[bool]int32                 `protobuf:"bytes,602,rep,name=map_bool_sint32,json=mapBoolSint32" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
-	MapBoolUint32         map[bool]uint32                `protobuf:"bytes,603,rep,name=map_bool_uint32,json=mapBoolUint32" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolInt64          map[bool]int64                 `protobuf:"bytes,604,rep,name=map_bool_int64,json=mapBoolInt64" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolSint64         map[bool]int64                 `protobuf:"bytes,605,rep,name=map_bool_sint64,json=mapBoolSint64" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
-	MapBoolUint64         map[bool]uint64                `protobuf:"bytes,606,rep,name=map_bool_uint64,json=mapBoolUint64" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolFixed32        map[bool]uint32                `protobuf:"bytes,607,rep,name=map_bool_fixed32,json=mapBoolFixed32" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolSfixed32       map[bool]int32                 `protobuf:"bytes,608,rep,name=map_bool_sfixed32,json=mapBoolSfixed32" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolFloat          map[bool]float32               `protobuf:"bytes,609,rep,name=map_bool_float,json=mapBoolFloat" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolFixed64        map[bool]uint64                `protobuf:"bytes,610,rep,name=map_bool_fixed64,json=mapBoolFixed64" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolSfixed64       map[bool]int64                 `protobuf:"bytes,611,rep,name=map_bool_sfixed64,json=mapBoolSfixed64" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolDouble         map[bool]float64               `protobuf:"bytes,612,rep,name=map_bool_double,json=mapBoolDouble" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolString         map[bool]string                `protobuf:"bytes,613,rep,name=map_bool_string,json=mapBoolString" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolBytes          map[bool][]byte                `protobuf:"bytes,614,rep,name=map_bool_bytes,json=mapBoolBytes" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolChildEnum      map[bool]Message_ChildEnum     `protobuf:"bytes,615,rep,name=map_bool_child_enum,json=mapBoolChildEnum" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20190205.Message_ChildEnum"`
-	MapBoolChildMessage   map[bool]*Message_ChildMessage `protobuf:"bytes,616,rep,name=map_bool_child_message,json=mapBoolChildMessage" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolNamedGroup     map[bool]*Message_NamedGroup   `protobuf:"bytes,617,rep,name=map_bool_named_group,json=mapBoolNamedGroup" json:"map_bool_named_group,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolSiblingEnum    map[bool]SiblingEnum           `protobuf:"bytes,618,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto2_20190205.SiblingEnum"`
-	MapBoolSiblingMessage map[bool]*SiblingMessage       `protobuf:"bytes,619,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapInt32Bool          map[int32]bool                 `protobuf:"bytes,620,rep,name=map_int32_bool,json=mapInt32Bool" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint32Bool         map[int32]bool                 `protobuf:"bytes,621,rep,name=map_sint32_bool,json=mapSint32Bool" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint32Bool         map[uint32]bool                `protobuf:"bytes,622,rep,name=map_uint32_bool,json=mapUint32Bool" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapInt64Bool          map[int64]bool                 `protobuf:"bytes,623,rep,name=map_int64_bool,json=mapInt64Bool" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint64Bool         map[int64]bool                 `protobuf:"bytes,624,rep,name=map_sint64_bool,json=mapSint64Bool" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint64Bool         map[uint64]bool                `protobuf:"bytes,625,rep,name=map_uint64_bool,json=mapUint64Bool" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapFixed32Bool        map[uint32]bool                `protobuf:"bytes,626,rep,name=map_fixed32_bool,json=mapFixed32Bool" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapStringBool         map[string]bool                `protobuf:"bytes,627,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	// Oneof fields.
-	//
-	// Types that are valid to be assigned to OneofUnion:
-	//	*Message_OneofBool
-	//	*Message_OneofInt32
-	//	*Message_OneofSint32
-	//	*Message_OneofUint32
-	//	*Message_OneofInt64
-	//	*Message_OneofSint64
-	//	*Message_OneofUint64
-	//	*Message_OneofFixed32
-	//	*Message_OneofSfixed32
-	//	*Message_OneofFloat
-	//	*Message_OneofFixed64
-	//	*Message_OneofSfixed64
-	//	*Message_OneofDouble
-	//	*Message_OneofString
-	//	*Message_OneofBytes
-	//	*Message_OneofChildEnum
-	//	*Message_OneofChildMessage
-	//	*Message_OneofNamedGroup
-	//	*Message_OneofSiblingEnum
-	//	*Message_OneofSiblingMessage
-	//	*Message_Oneofgroup
-	//	*Message_OneofString1
-	//	*Message_OneofString2
-	//	*Message_OneofString3
-	OneofUnion isMessage_OneofUnion `protobuf_oneof:"oneof_union"`
-	// Oneof default fields.
-	//
-	// Types that are valid to be assigned to OneofDefaultedUnion:
-	//	*Message_OneofDefaultedBool
-	//	*Message_OneofDefaultedInt32
-	//	*Message_OneofDefaultedSint32
-	//	*Message_OneofDefaultedUint32
-	//	*Message_OneofDefaultedInt64
-	//	*Message_OneofDefaultedSint64
-	//	*Message_OneofDefaultedUint64
-	//	*Message_OneofDefaultedFixed32
-	//	*Message_OneofDefaultedSfixed32
-	//	*Message_OneofDefaultedFloat
-	//	*Message_OneofDefaultedFixed64
-	//	*Message_OneofDefaultedSfixed64
-	//	*Message_OneofDefaultedDouble
-	//	*Message_OneofDefaultedString
-	//	*Message_OneofDefaultedBytes
-	//	*Message_OneofDefaultedChildEnum
-	//	*Message_OneofDefaultedSiblingEnum
-	OneofDefaultedUnion          isMessage_OneofDefaultedUnion `protobuf_oneof:"oneof_defaulted_union"`
-	XXX_NoUnkeyedLiteral         struct{}                      `json:"-"`
-	proto.XXX_InternalExtensions `json:"-"`
-	XXX_unrecognized             []byte `json:"-"`
-	XXX_sizecache                int32  `json:"-"`
-}
-
-func (m *Message) Reset()         { *m = Message{} }
-func (m *Message) String() string { return proto.CompactTextString(m) }
-func (*Message) ProtoMessage()    {}
-func (*Message) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3a17e2c63b2b3424, []int{1}
-}
-
-var extRange_Message = []proto.ExtensionRange{
-	{Start: 10000, End: 536870911},
-}
-
-func (*Message) ExtensionRangeArray() []proto.ExtensionRange {
-	return extRange_Message
-}
-
-func (m *Message) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message.Unmarshal(m, b)
-}
-func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message.Marshal(b, m, deterministic)
-}
-func (m *Message) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message.Merge(m, src)
-}
-func (m *Message) XXX_Size() int {
-	return xxx_messageInfo_Message.Size(m)
-}
-func (m *Message) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message proto.InternalMessageInfo
-
-const Default_Message_DefaultedBool bool = true
-const Default_Message_DefaultedInt32 int32 = -12345
-const Default_Message_DefaultedSint32 int32 = -3200
-const Default_Message_DefaultedUint32 uint32 = 3200
-const Default_Message_DefaultedInt64 int64 = -123456789
-const Default_Message_DefaultedSint64 int64 = -6400
-const Default_Message_DefaultedUint64 uint64 = 6400
-const Default_Message_DefaultedFixed32 uint32 = 320000
-const Default_Message_DefaultedSfixed32 int32 = -320000
-const Default_Message_DefaultedFloat float32 = 3.14159
-const Default_Message_DefaultedFixed64 uint64 = 640000
-const Default_Message_DefaultedSfixed64 int64 = -640000
-const Default_Message_DefaultedDouble float64 = 3.14159265359
-const Default_Message_DefaultedString string = "hello, \"world!\"\n"
-
-var Default_Message_DefaultedBytes []byte = []byte("deadޭ\xbe\xefbeef")
-
-const Default_Message_DefaultedChildEnum Message_ChildEnum = Message_ALPHA
-const Default_Message_DefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
-const Default_Message_RequiredDefaultedBool bool = true
-const Default_Message_RequiredDefaultedInt32 int32 = -12345
-const Default_Message_RequiredDefaultedSint32 int32 = -3200
-const Default_Message_RequiredDefaultedUint32 uint32 = 3200
-const Default_Message_RequiredDefaultedInt64 int64 = -123456789
-const Default_Message_RequiredDefaultedSint64 int64 = -6400
-const Default_Message_RequiredDefaultedUint64 uint64 = 6400
-const Default_Message_RequiredDefaultedFixed32 uint32 = 320000
-const Default_Message_RequiredDefaultedSfixed32 int32 = -320000
-const Default_Message_RequiredDefaultedFloat float32 = 3.14159
-const Default_Message_RequiredDefaultedFixed64 uint64 = 640000
-const Default_Message_RequiredDefaultedSfixed64 int64 = -640000
-const Default_Message_RequiredDefaultedDouble float64 = 3.14159265359
-const Default_Message_RequiredDefaultedString string = "hello, \"world!\"\n"
-
-var Default_Message_RequiredDefaultedBytes []byte = []byte("deadޭ\xbe\xefbeef")
-
-const Default_Message_RequiredDefaultedChildEnum Message_ChildEnum = Message_ALPHA
-const Default_Message_RequiredDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
-const Default_Message_OneofDefaultedBool bool = true
-const Default_Message_OneofDefaultedInt32 int32 = -12345
-const Default_Message_OneofDefaultedSint32 int32 = -3200
-const Default_Message_OneofDefaultedUint32 uint32 = 3200
-const Default_Message_OneofDefaultedInt64 int64 = -123456789
-const Default_Message_OneofDefaultedSint64 int64 = -6400
-const Default_Message_OneofDefaultedUint64 uint64 = 6400
-const Default_Message_OneofDefaultedFixed32 uint32 = 320000
-const Default_Message_OneofDefaultedSfixed32 int32 = -320000
-const Default_Message_OneofDefaultedFloat float32 = 3.14159
-const Default_Message_OneofDefaultedFixed64 uint64 = 640000
-const Default_Message_OneofDefaultedSfixed64 int64 = -640000
-const Default_Message_OneofDefaultedDouble float64 = 3.14159265359
-const Default_Message_OneofDefaultedString string = "hello, \"world!\"\n"
-
-var Default_Message_OneofDefaultedBytes []byte = []byte("deadޭ\xbe\xefbeef")
-
-const Default_Message_OneofDefaultedChildEnum Message_ChildEnum = Message_ALPHA
-const Default_Message_OneofDefaultedSiblingEnum SiblingEnum = SiblingEnum_ALPHA
-
-func (m *Message) GetNamedgroup() *Message_NamedGroup {
-	if m != nil {
-		return m.Namedgroup
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalBool() bool {
-	if m != nil && m.OptionalBool != nil {
-		return *m.OptionalBool
-	}
-	return false
-}
-
-func (m *Message) GetOptionalInt32() int32 {
-	if m != nil && m.OptionalInt32 != nil {
-		return *m.OptionalInt32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSint32() int32 {
-	if m != nil && m.OptionalSint32 != nil {
-		return *m.OptionalSint32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalUint32() uint32 {
-	if m != nil && m.OptionalUint32 != nil {
-		return *m.OptionalUint32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalInt64() int64 {
-	if m != nil && m.OptionalInt64 != nil {
-		return *m.OptionalInt64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSint64() int64 {
-	if m != nil && m.OptionalSint64 != nil {
-		return *m.OptionalSint64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalUint64() uint64 {
-	if m != nil && m.OptionalUint64 != nil {
-		return *m.OptionalUint64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFixed32() uint32 {
-	if m != nil && m.OptionalFixed32 != nil {
-		return *m.OptionalFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSfixed32() int32 {
-	if m != nil && m.OptionalSfixed32 != nil {
-		return *m.OptionalSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFloat() float32 {
-	if m != nil && m.OptionalFloat != nil {
-		return *m.OptionalFloat
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFixed64() uint64 {
-	if m != nil && m.OptionalFixed64 != nil {
-		return *m.OptionalFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSfixed64() int64 {
-	if m != nil && m.OptionalSfixed64 != nil {
-		return *m.OptionalSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalDouble() float64 {
-	if m != nil && m.OptionalDouble != nil {
-		return *m.OptionalDouble
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalString() string {
-	if m != nil && m.OptionalString != nil {
-		return *m.OptionalString
-	}
-	return ""
-}
-
-func (m *Message) GetOptionalBytes() []byte {
-	if m != nil {
-		return m.OptionalBytes
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalChildEnum() Message_ChildEnum {
-	if m != nil && m.OptionalChildEnum != nil {
-		return *m.OptionalChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetOptionalChildMessage() *Message_ChildMessage {
-	if m != nil {
-		return m.OptionalChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalNamedGroup() *Message_NamedGroup {
-	if m != nil {
-		return m.OptionalNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalSiblingEnum() SiblingEnum {
-	if m != nil && m.OptionalSiblingEnum != nil {
-		return *m.OptionalSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetOptionalSiblingMessage() *SiblingMessage {
-	if m != nil {
-		return m.OptionalSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalgroup() *Message_OptionalGroup {
-	if m != nil {
-		return m.Optionalgroup
-	}
-	return nil
-}
-
-func (m *Message) GetDefaultedBool() bool {
-	if m != nil && m.DefaultedBool != nil {
-		return *m.DefaultedBool
-	}
-	return Default_Message_DefaultedBool
-}
-
-func (m *Message) GetDefaultedInt32() int32 {
-	if m != nil && m.DefaultedInt32 != nil {
-		return *m.DefaultedInt32
-	}
-	return Default_Message_DefaultedInt32
-}
-
-func (m *Message) GetDefaultedSint32() int32 {
-	if m != nil && m.DefaultedSint32 != nil {
-		return *m.DefaultedSint32
-	}
-	return Default_Message_DefaultedSint32
-}
-
-func (m *Message) GetDefaultedUint32() uint32 {
-	if m != nil && m.DefaultedUint32 != nil {
-		return *m.DefaultedUint32
-	}
-	return Default_Message_DefaultedUint32
-}
-
-func (m *Message) GetDefaultedInt64() int64 {
-	if m != nil && m.DefaultedInt64 != nil {
-		return *m.DefaultedInt64
-	}
-	return Default_Message_DefaultedInt64
-}
-
-func (m *Message) GetDefaultedSint64() int64 {
-	if m != nil && m.DefaultedSint64 != nil {
-		return *m.DefaultedSint64
-	}
-	return Default_Message_DefaultedSint64
-}
-
-func (m *Message) GetDefaultedUint64() uint64 {
-	if m != nil && m.DefaultedUint64 != nil {
-		return *m.DefaultedUint64
-	}
-	return Default_Message_DefaultedUint64
-}
-
-func (m *Message) GetDefaultedFixed32() uint32 {
-	if m != nil && m.DefaultedFixed32 != nil {
-		return *m.DefaultedFixed32
-	}
-	return Default_Message_DefaultedFixed32
-}
-
-func (m *Message) GetDefaultedSfixed32() int32 {
-	if m != nil && m.DefaultedSfixed32 != nil {
-		return *m.DefaultedSfixed32
-	}
-	return Default_Message_DefaultedSfixed32
-}
-
-func (m *Message) GetDefaultedFloat() float32 {
-	if m != nil && m.DefaultedFloat != nil {
-		return *m.DefaultedFloat
-	}
-	return Default_Message_DefaultedFloat
-}
-
-func (m *Message) GetDefaultedFixed64() uint64 {
-	if m != nil && m.DefaultedFixed64 != nil {
-		return *m.DefaultedFixed64
-	}
-	return Default_Message_DefaultedFixed64
-}
-
-func (m *Message) GetDefaultedSfixed64() int64 {
-	if m != nil && m.DefaultedSfixed64 != nil {
-		return *m.DefaultedSfixed64
-	}
-	return Default_Message_DefaultedSfixed64
-}
-
-func (m *Message) GetDefaultedDouble() float64 {
-	if m != nil && m.DefaultedDouble != nil {
-		return *m.DefaultedDouble
-	}
-	return Default_Message_DefaultedDouble
-}
-
-func (m *Message) GetDefaultedString() string {
-	if m != nil && m.DefaultedString != nil {
-		return *m.DefaultedString
-	}
-	return Default_Message_DefaultedString
-}
-
-func (m *Message) GetDefaultedBytes() []byte {
-	if m != nil && m.DefaultedBytes != nil {
-		return m.DefaultedBytes
-	}
-	return append([]byte(nil), Default_Message_DefaultedBytes...)
-}
-
-func (m *Message) GetDefaultedChildEnum() Message_ChildEnum {
-	if m != nil && m.DefaultedChildEnum != nil {
-		return *m.DefaultedChildEnum
-	}
-	return Default_Message_DefaultedChildEnum
-}
-
-func (m *Message) GetDefaultedSiblingEnum() SiblingEnum {
-	if m != nil && m.DefaultedSiblingEnum != nil {
-		return *m.DefaultedSiblingEnum
-	}
-	return Default_Message_DefaultedSiblingEnum
-}
-
-func (m *Message) GetRequiredBool() bool {
-	if m != nil && m.RequiredBool != nil {
-		return *m.RequiredBool
-	}
-	return false
-}
-
-func (m *Message) GetRequiredInt32() int32 {
-	if m != nil && m.RequiredInt32 != nil {
-		return *m.RequiredInt32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSint32() int32 {
-	if m != nil && m.RequiredSint32 != nil {
-		return *m.RequiredSint32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredUint32() uint32 {
-	if m != nil && m.RequiredUint32 != nil {
-		return *m.RequiredUint32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredInt64() int64 {
-	if m != nil && m.RequiredInt64 != nil {
-		return *m.RequiredInt64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSint64() int64 {
-	if m != nil && m.RequiredSint64 != nil {
-		return *m.RequiredSint64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredUint64() uint64 {
-	if m != nil && m.RequiredUint64 != nil {
-		return *m.RequiredUint64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredFixed32() uint32 {
-	if m != nil && m.RequiredFixed32 != nil {
-		return *m.RequiredFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSfixed32() int32 {
-	if m != nil && m.RequiredSfixed32 != nil {
-		return *m.RequiredSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredFloat() float32 {
-	if m != nil && m.RequiredFloat != nil {
-		return *m.RequiredFloat
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredFixed64() uint64 {
-	if m != nil && m.RequiredFixed64 != nil {
-		return *m.RequiredFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredSfixed64() int64 {
-	if m != nil && m.RequiredSfixed64 != nil {
-		return *m.RequiredSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredDouble() float64 {
-	if m != nil && m.RequiredDouble != nil {
-		return *m.RequiredDouble
-	}
-	return 0
-}
-
-func (m *Message) GetRequiredString() string {
-	if m != nil && m.RequiredString != nil {
-		return *m.RequiredString
-	}
-	return ""
-}
-
-func (m *Message) GetRequiredBytes() []byte {
-	if m != nil {
-		return m.RequiredBytes
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredChildEnum() Message_ChildEnum {
-	if m != nil && m.RequiredChildEnum != nil {
-		return *m.RequiredChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetRequiredChildMessage() *Message_ChildMessage {
-	if m != nil {
-		return m.RequiredChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredNamedGroup() *Message_NamedGroup {
-	if m != nil {
-		return m.RequiredNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredSiblingEnum() SiblingEnum {
-	if m != nil && m.RequiredSiblingEnum != nil {
-		return *m.RequiredSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetRequiredSiblingMessage() *SiblingMessage {
-	if m != nil {
-		return m.RequiredSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredgroup() *Message_RequiredGroup {
-	if m != nil {
-		return m.Requiredgroup
-	}
-	return nil
-}
-
-func (m *Message) GetRequiredDefaultedBool() bool {
-	if m != nil && m.RequiredDefaultedBool != nil {
-		return *m.RequiredDefaultedBool
-	}
-	return Default_Message_RequiredDefaultedBool
-}
-
-func (m *Message) GetRequiredDefaultedInt32() int32 {
-	if m != nil && m.RequiredDefaultedInt32 != nil {
-		return *m.RequiredDefaultedInt32
-	}
-	return Default_Message_RequiredDefaultedInt32
-}
-
-func (m *Message) GetRequiredDefaultedSint32() int32 {
-	if m != nil && m.RequiredDefaultedSint32 != nil {
-		return *m.RequiredDefaultedSint32
-	}
-	return Default_Message_RequiredDefaultedSint32
-}
-
-func (m *Message) GetRequiredDefaultedUint32() uint32 {
-	if m != nil && m.RequiredDefaultedUint32 != nil {
-		return *m.RequiredDefaultedUint32
-	}
-	return Default_Message_RequiredDefaultedUint32
-}
-
-func (m *Message) GetRequiredDefaultedInt64() int64 {
-	if m != nil && m.RequiredDefaultedInt64 != nil {
-		return *m.RequiredDefaultedInt64
-	}
-	return Default_Message_RequiredDefaultedInt64
-}
-
-func (m *Message) GetRequiredDefaultedSint64() int64 {
-	if m != nil && m.RequiredDefaultedSint64 != nil {
-		return *m.RequiredDefaultedSint64
-	}
-	return Default_Message_RequiredDefaultedSint64
-}
-
-func (m *Message) GetRequiredDefaultedUint64() uint64 {
-	if m != nil && m.RequiredDefaultedUint64 != nil {
-		return *m.RequiredDefaultedUint64
-	}
-	return Default_Message_RequiredDefaultedUint64
-}
-
-func (m *Message) GetRequiredDefaultedFixed32() uint32 {
-	if m != nil && m.RequiredDefaultedFixed32 != nil {
-		return *m.RequiredDefaultedFixed32
-	}
-	return Default_Message_RequiredDefaultedFixed32
-}
-
-func (m *Message) GetRequiredDefaultedSfixed32() int32 {
-	if m != nil && m.RequiredDefaultedSfixed32 != nil {
-		return *m.RequiredDefaultedSfixed32
-	}
-	return Default_Message_RequiredDefaultedSfixed32
-}
-
-func (m *Message) GetRequiredDefaultedFloat() float32 {
-	if m != nil && m.RequiredDefaultedFloat != nil {
-		return *m.RequiredDefaultedFloat
-	}
-	return Default_Message_RequiredDefaultedFloat
-}
-
-func (m *Message) GetRequiredDefaultedFixed64() uint64 {
-	if m != nil && m.RequiredDefaultedFixed64 != nil {
-		return *m.RequiredDefaultedFixed64
-	}
-	return Default_Message_RequiredDefaultedFixed64
-}
-
-func (m *Message) GetRequiredDefaultedSfixed64() int64 {
-	if m != nil && m.RequiredDefaultedSfixed64 != nil {
-		return *m.RequiredDefaultedSfixed64
-	}
-	return Default_Message_RequiredDefaultedSfixed64
-}
-
-func (m *Message) GetRequiredDefaultedDouble() float64 {
-	if m != nil && m.RequiredDefaultedDouble != nil {
-		return *m.RequiredDefaultedDouble
-	}
-	return Default_Message_RequiredDefaultedDouble
-}
-
-func (m *Message) GetRequiredDefaultedString() string {
-	if m != nil && m.RequiredDefaultedString != nil {
-		return *m.RequiredDefaultedString
-	}
-	return Default_Message_RequiredDefaultedString
-}
-
-func (m *Message) GetRequiredDefaultedBytes() []byte {
-	if m != nil && m.RequiredDefaultedBytes != nil {
-		return m.RequiredDefaultedBytes
-	}
-	return append([]byte(nil), Default_Message_RequiredDefaultedBytes...)
-}
-
-func (m *Message) GetRequiredDefaultedChildEnum() Message_ChildEnum {
-	if m != nil && m.RequiredDefaultedChildEnum != nil {
-		return *m.RequiredDefaultedChildEnum
-	}
-	return Default_Message_RequiredDefaultedChildEnum
-}
-
-func (m *Message) GetRequiredDefaultedSiblingEnum() SiblingEnum {
-	if m != nil && m.RequiredDefaultedSiblingEnum != nil {
-		return *m.RequiredDefaultedSiblingEnum
-	}
-	return Default_Message_RequiredDefaultedSiblingEnum
-}
-
-func (m *Message) GetRepeatedBool() []bool {
-	if m != nil {
-		return m.RepeatedBool
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedInt32() []int32 {
-	if m != nil {
-		return m.RepeatedInt32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSint32() []int32 {
-	if m != nil {
-		return m.RepeatedSint32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedUint32() []uint32 {
-	if m != nil {
-		return m.RepeatedUint32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedInt64() []int64 {
-	if m != nil {
-		return m.RepeatedInt64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSint64() []int64 {
-	if m != nil {
-		return m.RepeatedSint64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedUint64() []uint64 {
-	if m != nil {
-		return m.RepeatedUint64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFixed32() []uint32 {
-	if m != nil {
-		return m.RepeatedFixed32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSfixed32() []int32 {
-	if m != nil {
-		return m.RepeatedSfixed32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFloat() []float32 {
-	if m != nil {
-		return m.RepeatedFloat
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFixed64() []uint64 {
-	if m != nil {
-		return m.RepeatedFixed64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSfixed64() []int64 {
-	if m != nil {
-		return m.RepeatedSfixed64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedDouble() []float64 {
-	if m != nil {
-		return m.RepeatedDouble
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedString() []string {
-	if m != nil {
-		return m.RepeatedString
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedBytes() [][]byte {
-	if m != nil {
-		return m.RepeatedBytes
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedChildEnum() []Message_ChildEnum {
-	if m != nil {
-		return m.RepeatedChildEnum
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedChildMessage() []*Message_ChildMessage {
-	if m != nil {
-		return m.RepeatedChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedNamedGroup() []*Message_NamedGroup {
-	if m != nil {
-		return m.RepeatedNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSiblingEnum() []SiblingEnum {
-	if m != nil {
-		return m.RepeatedSiblingEnum
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSiblingMessage() []*SiblingMessage {
-	if m != nil {
-		return m.RepeatedSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedgroup() []*Message_RepeatedGroup {
-	if m != nil {
-		return m.Repeatedgroup
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBool() map[bool]bool {
-	if m != nil {
-		return m.MapBoolBool
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolInt32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolUint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolInt64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolUint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolFixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSfixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFloat() map[bool]float32 {
-	if m != nil {
-		return m.MapBoolFloat
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolFixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSfixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolDouble() map[bool]float64 {
-	if m != nil {
-		return m.MapBoolDouble
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolString() map[bool]string {
-	if m != nil {
-		return m.MapBoolString
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBytes() map[bool][]byte {
-	if m != nil {
-		return m.MapBoolBytes
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildEnum() map[bool]Message_ChildEnum {
-	if m != nil {
-		return m.MapBoolChildEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildMessage() map[bool]*Message_ChildMessage {
-	if m != nil {
-		return m.MapBoolChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolNamedGroup() map[bool]*Message_NamedGroup {
-	if m != nil {
-		return m.MapBoolNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingEnum() map[bool]SiblingEnum {
-	if m != nil {
-		return m.MapBoolSiblingEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingMessage() map[bool]*SiblingMessage {
-	if m != nil {
-		return m.MapBoolSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapInt32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapSint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapUint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapInt64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapSint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint64Bool() map[uint64]bool {
-	if m != nil {
-		return m.MapUint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapFixed32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapFixed32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapStringBool() map[string]bool {
-	if m != nil {
-		return m.MapStringBool
-	}
-	return nil
-}
-
-type isMessage_OneofUnion interface {
-	isMessage_OneofUnion()
-}
-
-type Message_OneofBool struct {
-	OneofBool bool `protobuf:"varint,700,opt,name=oneof_bool,json=oneofBool,oneof"`
-}
-
-type Message_OneofInt32 struct {
-	OneofInt32 int32 `protobuf:"varint,701,opt,name=oneof_int32,json=oneofInt32,oneof"`
-}
-
-type Message_OneofSint32 struct {
-	OneofSint32 int32 `protobuf:"zigzag32,702,opt,name=oneof_sint32,json=oneofSint32,oneof"`
-}
-
-type Message_OneofUint32 struct {
-	OneofUint32 uint32 `protobuf:"varint,703,opt,name=oneof_uint32,json=oneofUint32,oneof"`
-}
-
-type Message_OneofInt64 struct {
-	OneofInt64 int64 `protobuf:"varint,704,opt,name=oneof_int64,json=oneofInt64,oneof"`
-}
-
-type Message_OneofSint64 struct {
-	OneofSint64 int64 `protobuf:"zigzag64,705,opt,name=oneof_sint64,json=oneofSint64,oneof"`
-}
-
-type Message_OneofUint64 struct {
-	OneofUint64 uint64 `protobuf:"varint,706,opt,name=oneof_uint64,json=oneofUint64,oneof"`
-}
-
-type Message_OneofFixed32 struct {
-	OneofFixed32 uint32 `protobuf:"fixed32,707,opt,name=oneof_fixed32,json=oneofFixed32,oneof"`
-}
-
-type Message_OneofSfixed32 struct {
-	OneofSfixed32 int32 `protobuf:"fixed32,708,opt,name=oneof_sfixed32,json=oneofSfixed32,oneof"`
-}
-
-type Message_OneofFloat struct {
-	OneofFloat float32 `protobuf:"fixed32,709,opt,name=oneof_float,json=oneofFloat,oneof"`
-}
-
-type Message_OneofFixed64 struct {
-	OneofFixed64 uint64 `protobuf:"fixed64,710,opt,name=oneof_fixed64,json=oneofFixed64,oneof"`
-}
-
-type Message_OneofSfixed64 struct {
-	OneofSfixed64 int64 `protobuf:"fixed64,711,opt,name=oneof_sfixed64,json=oneofSfixed64,oneof"`
-}
-
-type Message_OneofDouble struct {
-	OneofDouble float64 `protobuf:"fixed64,712,opt,name=oneof_double,json=oneofDouble,oneof"`
-}
-
-type Message_OneofString struct {
-	OneofString string `protobuf:"bytes,713,opt,name=oneof_string,json=oneofString,oneof"`
-}
-
-type Message_OneofBytes struct {
-	OneofBytes []byte `protobuf:"bytes,714,opt,name=oneof_bytes,json=oneofBytes,oneof"`
-}
-
-type Message_OneofChildEnum struct {
-	OneofChildEnum Message_ChildEnum `protobuf:"varint,715,opt,name=oneof_child_enum,json=oneofChildEnum,enum=google.golang.org.proto2_20190205.Message_ChildEnum,oneof"`
-}
-
-type Message_OneofChildMessage struct {
-	OneofChildMessage *Message_ChildMessage `protobuf:"bytes,716,opt,name=oneof_child_message,json=oneofChildMessage,oneof"`
-}
-
-type Message_OneofNamedGroup struct {
-	OneofNamedGroup *Message_NamedGroup `protobuf:"bytes,717,opt,name=oneof_named_group,json=oneofNamedGroup,oneof"`
-}
-
-type Message_OneofSiblingEnum struct {
-	OneofSiblingEnum SiblingEnum `protobuf:"varint,718,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,enum=google.golang.org.proto2_20190205.SiblingEnum,oneof"`
-}
-
-type Message_OneofSiblingMessage struct {
-	OneofSiblingMessage *SiblingMessage `protobuf:"bytes,719,opt,name=oneof_sibling_message,json=oneofSiblingMessage,oneof"`
-}
-
-type Message_Oneofgroup struct {
-	Oneofgroup *Message_OneofGroup `protobuf:"group,720,opt,name=OneofGroup,json=oneofgroup,oneof"`
-}
-
-type Message_OneofString1 struct {
-	OneofString1 string `protobuf:"bytes,721,opt,name=oneof_string1,json=oneofString1,oneof"`
-}
-
-type Message_OneofString2 struct {
-	OneofString2 string `protobuf:"bytes,722,opt,name=oneof_string2,json=oneofString2,oneof"`
-}
-
-type Message_OneofString3 struct {
-	OneofString3 string `protobuf:"bytes,723,opt,name=oneof_string3,json=oneofString3,oneof"`
-}
-
-func (*Message_OneofBool) isMessage_OneofUnion() {}
-
-func (*Message_OneofInt32) isMessage_OneofUnion() {}
-
-func (*Message_OneofSint32) isMessage_OneofUnion() {}
-
-func (*Message_OneofUint32) isMessage_OneofUnion() {}
-
-func (*Message_OneofInt64) isMessage_OneofUnion() {}
-
-func (*Message_OneofSint64) isMessage_OneofUnion() {}
-
-func (*Message_OneofUint64) isMessage_OneofUnion() {}
-
-func (*Message_OneofFixed32) isMessage_OneofUnion() {}
-
-func (*Message_OneofSfixed32) isMessage_OneofUnion() {}
-
-func (*Message_OneofFloat) isMessage_OneofUnion() {}
-
-func (*Message_OneofFixed64) isMessage_OneofUnion() {}
-
-func (*Message_OneofSfixed64) isMessage_OneofUnion() {}
-
-func (*Message_OneofDouble) isMessage_OneofUnion() {}
-
-func (*Message_OneofString) isMessage_OneofUnion() {}
-
-func (*Message_OneofBytes) isMessage_OneofUnion() {}
-
-func (*Message_OneofChildEnum) isMessage_OneofUnion() {}
-
-func (*Message_OneofChildMessage) isMessage_OneofUnion() {}
-
-func (*Message_OneofNamedGroup) isMessage_OneofUnion() {}
-
-func (*Message_OneofSiblingEnum) isMessage_OneofUnion() {}
-
-func (*Message_OneofSiblingMessage) isMessage_OneofUnion() {}
-
-func (*Message_Oneofgroup) isMessage_OneofUnion() {}
-
-func (*Message_OneofString1) isMessage_OneofUnion() {}
-
-func (*Message_OneofString2) isMessage_OneofUnion() {}
-
-func (*Message_OneofString3) isMessage_OneofUnion() {}
-
-func (m *Message) GetOneofUnion() isMessage_OneofUnion {
-	if m != nil {
-		return m.OneofUnion
-	}
-	return nil
-}
-
-func (m *Message) GetOneofBool() bool {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBool); ok {
-		return x.OneofBool
-	}
-	return false
-}
-
-func (m *Message) GetOneofInt32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt32); ok {
-		return x.OneofInt32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint32); ok {
-		return x.OneofSint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint32); ok {
-		return x.OneofUint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofInt64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt64); ok {
-		return x.OneofInt64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint64); ok {
-		return x.OneofSint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint64); ok {
-		return x.OneofUint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed32); ok {
-		return x.OneofFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed32); ok {
-		return x.OneofSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFloat() float32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFloat); ok {
-		return x.OneofFloat
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed64); ok {
-		return x.OneofFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed64); ok {
-		return x.OneofSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofDouble() float64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofDouble); ok {
-		return x.OneofDouble
-	}
-	return 0
-}
-
-func (m *Message) GetOneofString() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString); ok {
-		return x.OneofString
-	}
-	return ""
-}
-
-func (m *Message) GetOneofBytes() []byte {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBytes); ok {
-		return x.OneofBytes
-	}
-	return nil
-}
-
-func (m *Message) GetOneofChildEnum() Message_ChildEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildEnum); ok {
-		return x.OneofChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetOneofChildMessage() *Message_ChildMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildMessage); ok {
-		return x.OneofChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofNamedGroup() *Message_NamedGroup {
-	if x, ok := m.GetOneofUnion().(*Message_OneofNamedGroup); ok {
-		return x.OneofNamedGroup
-	}
-	return nil
-}
-
-func (m *Message) GetOneofSiblingEnum() SiblingEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingEnum); ok {
-		return x.OneofSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetOneofSiblingMessage() *SiblingMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingMessage); ok {
-		return x.OneofSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofgroup() *Message_OneofGroup {
-	if x, ok := m.GetOneofUnion().(*Message_Oneofgroup); ok {
-		return x.Oneofgroup
-	}
-	return nil
-}
-
-func (m *Message) GetOneofString1() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString1); ok {
-		return x.OneofString1
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString2() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString2); ok {
-		return x.OneofString2
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString3() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString3); ok {
-		return x.OneofString3
-	}
-	return ""
-}
-
-type isMessage_OneofDefaultedUnion interface {
-	isMessage_OneofDefaultedUnion()
-}
-
-type Message_OneofDefaultedBool struct {
-	OneofDefaultedBool bool `protobuf:"varint,800,opt,name=oneof_defaulted_bool,json=oneofDefaultedBool,oneof,def=1"`
-}
-
-type Message_OneofDefaultedInt32 struct {
-	OneofDefaultedInt32 int32 `protobuf:"varint,801,opt,name=oneof_defaulted_int32,json=oneofDefaultedInt32,oneof,def=-12345"`
-}
-
-type Message_OneofDefaultedSint32 struct {
-	OneofDefaultedSint32 int32 `protobuf:"zigzag32,802,opt,name=oneof_defaulted_sint32,json=oneofDefaultedSint32,oneof,def=-3200"`
-}
-
-type Message_OneofDefaultedUint32 struct {
-	OneofDefaultedUint32 uint32 `protobuf:"varint,803,opt,name=oneof_defaulted_uint32,json=oneofDefaultedUint32,oneof,def=3200"`
-}
-
-type Message_OneofDefaultedInt64 struct {
-	OneofDefaultedInt64 int64 `protobuf:"varint,804,opt,name=oneof_defaulted_int64,json=oneofDefaultedInt64,oneof,def=-123456789"`
-}
-
-type Message_OneofDefaultedSint64 struct {
-	OneofDefaultedSint64 int64 `protobuf:"zigzag64,805,opt,name=oneof_defaulted_sint64,json=oneofDefaultedSint64,oneof,def=-6400"`
-}
-
-type Message_OneofDefaultedUint64 struct {
-	OneofDefaultedUint64 uint64 `protobuf:"varint,806,opt,name=oneof_defaulted_uint64,json=oneofDefaultedUint64,oneof,def=6400"`
-}
-
-type Message_OneofDefaultedFixed32 struct {
-	OneofDefaultedFixed32 uint32 `protobuf:"fixed32,807,opt,name=oneof_defaulted_fixed32,json=oneofDefaultedFixed32,oneof,def=320000"`
-}
-
-type Message_OneofDefaultedSfixed32 struct {
-	OneofDefaultedSfixed32 int32 `protobuf:"fixed32,808,opt,name=oneof_defaulted_sfixed32,json=oneofDefaultedSfixed32,oneof,def=-320000"`
-}
-
-type Message_OneofDefaultedFloat struct {
-	OneofDefaultedFloat float32 `protobuf:"fixed32,809,opt,name=oneof_defaulted_float,json=oneofDefaultedFloat,oneof,def=3.14159"`
-}
-
-type Message_OneofDefaultedFixed64 struct {
-	OneofDefaultedFixed64 uint64 `protobuf:"fixed64,810,opt,name=oneof_defaulted_fixed64,json=oneofDefaultedFixed64,oneof,def=640000"`
-}
-
-type Message_OneofDefaultedSfixed64 struct {
-	OneofDefaultedSfixed64 int64 `protobuf:"fixed64,811,opt,name=oneof_defaulted_sfixed64,json=oneofDefaultedSfixed64,oneof,def=-640000"`
-}
-
-type Message_OneofDefaultedDouble struct {
-	OneofDefaultedDouble float64 `protobuf:"fixed64,812,opt,name=oneof_defaulted_double,json=oneofDefaultedDouble,oneof,def=3.14159265359"`
-}
-
-type Message_OneofDefaultedString struct {
-	OneofDefaultedString string `protobuf:"bytes,813,opt,name=oneof_defaulted_string,json=oneofDefaultedString,oneof,def=hello, \"world!\"\n"`
-}
-
-type Message_OneofDefaultedBytes struct {
-	OneofDefaultedBytes []byte `protobuf:"bytes,814,opt,name=oneof_defaulted_bytes,json=oneofDefaultedBytes,oneof,def=dead\\336\\255\\276\\357beef"`
-}
-
-type Message_OneofDefaultedChildEnum struct {
-	OneofDefaultedChildEnum Message_ChildEnum `protobuf:"varint,815,opt,name=oneof_defaulted_child_enum,json=oneofDefaultedChildEnum,enum=google.golang.org.proto2_20190205.Message_ChildEnum,oneof,def=0"`
-}
-
-type Message_OneofDefaultedSiblingEnum struct {
-	OneofDefaultedSiblingEnum SiblingEnum `protobuf:"varint,816,opt,name=oneof_defaulted_sibling_enum,json=oneofDefaultedSiblingEnum,enum=google.golang.org.proto2_20190205.SiblingEnum,oneof,def=0"`
-}
-
-func (*Message_OneofDefaultedBool) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedInt32) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedSint32) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedUint32) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedInt64) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedSint64) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedUint64) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedFixed32) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedSfixed32) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedFloat) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedFixed64) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedSfixed64) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedDouble) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedString) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedBytes) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedChildEnum) isMessage_OneofDefaultedUnion() {}
-
-func (*Message_OneofDefaultedSiblingEnum) isMessage_OneofDefaultedUnion() {}
-
-func (m *Message) GetOneofDefaultedUnion() isMessage_OneofDefaultedUnion {
-	if m != nil {
-		return m.OneofDefaultedUnion
-	}
-	return nil
-}
-
-func (m *Message) GetOneofDefaultedBool() bool {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBool); ok {
-		return x.OneofDefaultedBool
-	}
-	return Default_Message_OneofDefaultedBool
-}
-
-func (m *Message) GetOneofDefaultedInt32() int32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt32); ok {
-		return x.OneofDefaultedInt32
-	}
-	return Default_Message_OneofDefaultedInt32
-}
-
-func (m *Message) GetOneofDefaultedSint32() int32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint32); ok {
-		return x.OneofDefaultedSint32
-	}
-	return Default_Message_OneofDefaultedSint32
-}
-
-func (m *Message) GetOneofDefaultedUint32() uint32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint32); ok {
-		return x.OneofDefaultedUint32
-	}
-	return Default_Message_OneofDefaultedUint32
-}
-
-func (m *Message) GetOneofDefaultedInt64() int64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedInt64); ok {
-		return x.OneofDefaultedInt64
-	}
-	return Default_Message_OneofDefaultedInt64
-}
-
-func (m *Message) GetOneofDefaultedSint64() int64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSint64); ok {
-		return x.OneofDefaultedSint64
-	}
-	return Default_Message_OneofDefaultedSint64
-}
-
-func (m *Message) GetOneofDefaultedUint64() uint64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedUint64); ok {
-		return x.OneofDefaultedUint64
-	}
-	return Default_Message_OneofDefaultedUint64
-}
-
-func (m *Message) GetOneofDefaultedFixed32() uint32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed32); ok {
-		return x.OneofDefaultedFixed32
-	}
-	return Default_Message_OneofDefaultedFixed32
-}
-
-func (m *Message) GetOneofDefaultedSfixed32() int32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed32); ok {
-		return x.OneofDefaultedSfixed32
-	}
-	return Default_Message_OneofDefaultedSfixed32
-}
-
-func (m *Message) GetOneofDefaultedFloat() float32 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFloat); ok {
-		return x.OneofDefaultedFloat
-	}
-	return Default_Message_OneofDefaultedFloat
-}
-
-func (m *Message) GetOneofDefaultedFixed64() uint64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedFixed64); ok {
-		return x.OneofDefaultedFixed64
-	}
-	return Default_Message_OneofDefaultedFixed64
-}
-
-func (m *Message) GetOneofDefaultedSfixed64() int64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSfixed64); ok {
-		return x.OneofDefaultedSfixed64
-	}
-	return Default_Message_OneofDefaultedSfixed64
-}
-
-func (m *Message) GetOneofDefaultedDouble() float64 {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedDouble); ok {
-		return x.OneofDefaultedDouble
-	}
-	return Default_Message_OneofDefaultedDouble
-}
-
-func (m *Message) GetOneofDefaultedString() string {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedString); ok {
-		return x.OneofDefaultedString
-	}
-	return Default_Message_OneofDefaultedString
-}
-
-func (m *Message) GetOneofDefaultedBytes() []byte {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedBytes); ok {
-		return x.OneofDefaultedBytes
-	}
-	return append([]byte(nil), Default_Message_OneofDefaultedBytes...)
-}
-
-func (m *Message) GetOneofDefaultedChildEnum() Message_ChildEnum {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedChildEnum); ok {
-		return x.OneofDefaultedChildEnum
-	}
-	return Default_Message_OneofDefaultedChildEnum
-}
-
-func (m *Message) GetOneofDefaultedSiblingEnum() SiblingEnum {
-	if x, ok := m.GetOneofDefaultedUnion().(*Message_OneofDefaultedSiblingEnum); ok {
-		return x.OneofDefaultedSiblingEnum
-	}
-	return Default_Message_OneofDefaultedSiblingEnum
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*Message) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*Message_OneofBool)(nil),
-		(*Message_OneofInt32)(nil),
-		(*Message_OneofSint32)(nil),
-		(*Message_OneofUint32)(nil),
-		(*Message_OneofInt64)(nil),
-		(*Message_OneofSint64)(nil),
-		(*Message_OneofUint64)(nil),
-		(*Message_OneofFixed32)(nil),
-		(*Message_OneofSfixed32)(nil),
-		(*Message_OneofFloat)(nil),
-		(*Message_OneofFixed64)(nil),
-		(*Message_OneofSfixed64)(nil),
-		(*Message_OneofDouble)(nil),
-		(*Message_OneofString)(nil),
-		(*Message_OneofBytes)(nil),
-		(*Message_OneofChildEnum)(nil),
-		(*Message_OneofChildMessage)(nil),
-		(*Message_OneofNamedGroup)(nil),
-		(*Message_OneofSiblingEnum)(nil),
-		(*Message_OneofSiblingMessage)(nil),
-		(*Message_Oneofgroup)(nil),
-		(*Message_OneofString1)(nil),
-		(*Message_OneofString2)(nil),
-		(*Message_OneofString3)(nil),
-		(*Message_OneofDefaultedBool)(nil),
-		(*Message_OneofDefaultedInt32)(nil),
-		(*Message_OneofDefaultedSint32)(nil),
-		(*Message_OneofDefaultedUint32)(nil),
-		(*Message_OneofDefaultedInt64)(nil),
-		(*Message_OneofDefaultedSint64)(nil),
-		(*Message_OneofDefaultedUint64)(nil),
-		(*Message_OneofDefaultedFixed32)(nil),
-		(*Message_OneofDefaultedSfixed32)(nil),
-		(*Message_OneofDefaultedFloat)(nil),
-		(*Message_OneofDefaultedFixed64)(nil),
-		(*Message_OneofDefaultedSfixed64)(nil),
-		(*Message_OneofDefaultedDouble)(nil),
-		(*Message_OneofDefaultedString)(nil),
-		(*Message_OneofDefaultedBytes)(nil),
-		(*Message_OneofDefaultedChildEnum)(nil),
-		(*Message_OneofDefaultedSiblingEnum)(nil),
-	}
-}
-
-var E_Message_ExtensionOptionalBool = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*bool)(nil),
-	Field:         10000,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_optional_bool",
-	Tag:           "varint,10000,opt,name=extension_optional_bool",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionOptionalInt32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         10001,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_optional_int32",
-	Tag:           "varint,10001,opt,name=extension_optional_int32",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionOptionalSint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         10002,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_optional_sint32",
-	Tag:           "zigzag32,10002,opt,name=extension_optional_sint32",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionOptionalUint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         10003,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_optional_uint32",
-	Tag:           "varint,10003,opt,name=extension_optional_uint32",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionOptionalInt64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         10004,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_optional_int64",
-	Tag:           "varint,10004,opt,name=extension_optional_int64",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionOptionalSint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         10005,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_optional_sint64",
-	Tag:           "zigzag64,10005,opt,name=extension_optional_sint64",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionOptionalUint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         10006,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_optional_uint64",
-	Tag:           "varint,10006,opt,name=extension_optional_uint64",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionOptionalFixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         10007,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_optional_fixed32",
-	Tag:           "fixed32,10007,opt,name=extension_optional_fixed32",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionOptionalSfixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         10008,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_optional_sfixed32",
-	Tag:           "fixed32,10008,opt,name=extension_optional_sfixed32",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionOptionalFloat = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float32)(nil),
-	Field:         10009,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_optional_float",
-	Tag:           "fixed32,10009,opt,name=extension_optional_float",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionOptionalFixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         10010,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_optional_fixed64",
-	Tag:           "fixed64,10010,opt,name=extension_optional_fixed64",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionOptionalSfixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         10011,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_optional_sfixed64",
-	Tag:           "fixed64,10011,opt,name=extension_optional_sfixed64",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionOptionalDouble = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float64)(nil),
-	Field:         10012,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_optional_double",
-	Tag:           "fixed64,10012,opt,name=extension_optional_double",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionOptionalString = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*string)(nil),
-	Field:         10013,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_optional_string",
-	Tag:           "bytes,10013,opt,name=extension_optional_string",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionOptionalBytes = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]byte)(nil),
-	Field:         10014,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_optional_bytes",
-	Tag:           "bytes,10014,opt,name=extension_optional_bytes",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionOptionalChildEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ChildEnum)(nil),
-	Field:         10015,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_optional_child_enum",
-	Tag:           "varint,10015,opt,name=extension_optional_child_enum,enum=google.golang.org.proto2_20190205.Message_ChildEnum",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionOptionalChildMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ChildMessage)(nil),
-	Field:         10016,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_optional_child_message",
-	Tag:           "bytes,10016,opt,name=extension_optional_child_message",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionOptionalNamedGroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_NamedGroup)(nil),
-	Field:         10017,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_optional_named_group",
-	Tag:           "bytes,10017,opt,name=extension_optional_named_group",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionOptionalSiblingEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*SiblingEnum)(nil),
-	Field:         10018,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_optional_sibling_enum",
-	Tag:           "varint,10018,opt,name=extension_optional_sibling_enum,enum=google.golang.org.proto2_20190205.SiblingEnum",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionOptionalSiblingMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*SiblingMessage)(nil),
-	Field:         10019,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_optional_sibling_message",
-	Tag:           "bytes,10019,opt,name=extension_optional_sibling_message",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_Extensionoptionalgroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ExtensionOptionalGroup)(nil),
-	Field:         10020,
-	Name:          "google.golang.org.proto2_20190205.Message.extensionoptionalgroup",
-	Tag:           "group,10020,opt,name=ExtensionOptionalGroup",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionDefaultedBool = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*bool)(nil),
-	Field:         20000,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_defaulted_bool",
-	Tag:           "varint,20000,opt,name=extension_defaulted_bool,def=1",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionDefaultedInt32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         20001,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_defaulted_int32",
-	Tag:           "varint,20001,opt,name=extension_defaulted_int32,def=-12345",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionDefaultedSint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         20002,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_defaulted_sint32",
-	Tag:           "zigzag32,20002,opt,name=extension_defaulted_sint32,def=-3200",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionDefaultedUint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         20003,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_defaulted_uint32",
-	Tag:           "varint,20003,opt,name=extension_defaulted_uint32,def=3200",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionDefaultedInt64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         20004,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_defaulted_int64",
-	Tag:           "varint,20004,opt,name=extension_defaulted_int64,def=-123456789",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionDefaultedSint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         20005,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_defaulted_sint64",
-	Tag:           "zigzag64,20005,opt,name=extension_defaulted_sint64,def=-6400",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionDefaultedUint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         20006,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_defaulted_uint64",
-	Tag:           "varint,20006,opt,name=extension_defaulted_uint64,def=6400",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionDefaultedFixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint32)(nil),
-	Field:         20007,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_defaulted_fixed32",
-	Tag:           "fixed32,20007,opt,name=extension_defaulted_fixed32,def=320000",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionDefaultedSfixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int32)(nil),
-	Field:         20008,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_defaulted_sfixed32",
-	Tag:           "fixed32,20008,opt,name=extension_defaulted_sfixed32,def=-320000",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionDefaultedFloat = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float32)(nil),
-	Field:         20009,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_defaulted_float",
-	Tag:           "fixed32,20009,opt,name=extension_defaulted_float,def=3.14159",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionDefaultedFixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*uint64)(nil),
-	Field:         20010,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_defaulted_fixed64",
-	Tag:           "fixed64,20010,opt,name=extension_defaulted_fixed64,def=640000",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionDefaultedSfixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*int64)(nil),
-	Field:         20011,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_defaulted_sfixed64",
-	Tag:           "fixed64,20011,opt,name=extension_defaulted_sfixed64,def=-640000",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionDefaultedDouble = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*float64)(nil),
-	Field:         20012,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_defaulted_double",
-	Tag:           "fixed64,20012,opt,name=extension_defaulted_double,def=3.14159265359",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionDefaultedString = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*string)(nil),
-	Field:         20013,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_defaulted_string",
-	Tag:           "bytes,20013,opt,name=extension_defaulted_string,def=hello, \"world!\"\n",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionDefaultedBytes = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]byte)(nil),
-	Field:         20014,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_defaulted_bytes",
-	Tag:           "bytes,20014,opt,name=extension_defaulted_bytes,def=dead\\336\\255\\276\\357beef",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionDefaultedChildEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*Message_ChildEnum)(nil),
-	Field:         20015,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_defaulted_child_enum",
-	Tag:           "varint,20015,opt,name=extension_defaulted_child_enum,enum=google.golang.org.proto2_20190205.Message_ChildEnum,def=0",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionDefaultedSiblingEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: (*SiblingEnum)(nil),
-	Field:         20016,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_defaulted_sibling_enum",
-	Tag:           "varint,20016,opt,name=extension_defaulted_sibling_enum,enum=google.golang.org.proto2_20190205.SiblingEnum,def=0",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionRepeatedBool = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]bool)(nil),
-	Field:         30000,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_repeated_bool",
-	Tag:           "varint,30000,rep,name=extension_repeated_bool",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionRepeatedInt32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int32)(nil),
-	Field:         30001,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_repeated_int32",
-	Tag:           "varint,30001,rep,name=extension_repeated_int32",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int32)(nil),
-	Field:         30002,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_repeated_sint32",
-	Tag:           "zigzag32,30002,rep,name=extension_repeated_sint32",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionRepeatedUint32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint32)(nil),
-	Field:         30003,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_repeated_uint32",
-	Tag:           "varint,30003,rep,name=extension_repeated_uint32",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionRepeatedInt64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int64)(nil),
-	Field:         30004,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_repeated_int64",
-	Tag:           "varint,30004,rep,name=extension_repeated_int64",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int64)(nil),
-	Field:         30005,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_repeated_sint64",
-	Tag:           "zigzag64,30005,rep,name=extension_repeated_sint64",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionRepeatedUint64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint64)(nil),
-	Field:         30006,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_repeated_uint64",
-	Tag:           "varint,30006,rep,name=extension_repeated_uint64",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionRepeatedFixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint32)(nil),
-	Field:         30007,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_repeated_fixed32",
-	Tag:           "fixed32,30007,rep,name=extension_repeated_fixed32",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSfixed32 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int32)(nil),
-	Field:         30008,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_repeated_sfixed32",
-	Tag:           "fixed32,30008,rep,name=extension_repeated_sfixed32",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionRepeatedFloat = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]float32)(nil),
-	Field:         30009,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_repeated_float",
-	Tag:           "fixed32,30009,rep,name=extension_repeated_float",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionRepeatedFixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]uint64)(nil),
-	Field:         30010,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_repeated_fixed64",
-	Tag:           "fixed64,30010,rep,name=extension_repeated_fixed64",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSfixed64 = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]int64)(nil),
-	Field:         30011,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_repeated_sfixed64",
-	Tag:           "fixed64,30011,rep,name=extension_repeated_sfixed64",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionRepeatedDouble = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]float64)(nil),
-	Field:         30012,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_repeated_double",
-	Tag:           "fixed64,30012,rep,name=extension_repeated_double",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionRepeatedString = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]string)(nil),
-	Field:         30013,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_repeated_string",
-	Tag:           "bytes,30013,rep,name=extension_repeated_string",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionRepeatedBytes = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([][]byte)(nil),
-	Field:         30014,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_repeated_bytes",
-	Tag:           "bytes,30014,rep,name=extension_repeated_bytes",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionRepeatedChildEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]Message_ChildEnum)(nil),
-	Field:         30015,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_repeated_child_enum",
-	Tag:           "varint,30015,rep,name=extension_repeated_child_enum,enum=google.golang.org.proto2_20190205.Message_ChildEnum",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionRepeatedChildMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*Message_ChildMessage)(nil),
-	Field:         30016,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_repeated_child_message",
-	Tag:           "bytes,30016,rep,name=extension_repeated_child_message",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionRepeatedNamedGroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*Message_NamedGroup)(nil),
-	Field:         30017,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_repeated_named_group",
-	Tag:           "bytes,30017,rep,name=extension_repeated_named_group",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSiblingEnum = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]SiblingEnum)(nil),
-	Field:         30018,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_repeated_sibling_enum",
-	Tag:           "varint,30018,rep,name=extension_repeated_sibling_enum,enum=google.golang.org.proto2_20190205.SiblingEnum",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_ExtensionRepeatedSiblingMessage = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*SiblingMessage)(nil),
-	Field:         30019,
-	Name:          "google.golang.org.proto2_20190205.Message.extension_repeated_sibling_message",
-	Tag:           "bytes,30019,rep,name=extension_repeated_sibling_message",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-var E_Message_Extensionrepeatedgroup = &proto.ExtensionDesc{
-	ExtendedType:  (*Message)(nil),
-	ExtensionType: ([]*Message_ExtensionRepeatedGroup)(nil),
-	Field:         30020,
-	Name:          "google.golang.org.proto2_20190205.Message.extensionrepeatedgroup",
-	Tag:           "group,30020,rep,name=ExtensionRepeatedGroup",
-	Filename:      "proto2_20190205_c823c79e/test.proto",
-}
-
-type Message_ChildMessage struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	F4                   *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_ChildMessage) Reset()         { *m = Message_ChildMessage{} }
-func (m *Message_ChildMessage) String() string { return proto.CompactTextString(m) }
-func (*Message_ChildMessage) ProtoMessage()    {}
-func (*Message_ChildMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3a17e2c63b2b3424, []int{1, 0}
-}
-
-func (m *Message_ChildMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_ChildMessage.Unmarshal(m, b)
-}
-func (m *Message_ChildMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_ChildMessage.Marshal(b, m, deterministic)
-}
-func (m *Message_ChildMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_ChildMessage.Merge(m, src)
-}
-func (m *Message_ChildMessage) XXX_Size() int {
-	return xxx_messageInfo_Message_ChildMessage.Size(m)
-}
-func (m *Message_ChildMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_ChildMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_ChildMessage proto.InternalMessageInfo
-
-func (m *Message_ChildMessage) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_ChildMessage) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_ChildMessage) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func (m *Message_ChildMessage) GetF4() *Message {
-	if m != nil {
-		return m.F4
-	}
-	return nil
-}
-
-type Message_NamedGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	F4                   *Message `protobuf:"bytes,4,opt,name=f4" json:"f4,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_NamedGroup) Reset()         { *m = Message_NamedGroup{} }
-func (m *Message_NamedGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_NamedGroup) ProtoMessage()    {}
-func (*Message_NamedGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3a17e2c63b2b3424, []int{1, 1}
-}
-
-func (m *Message_NamedGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_NamedGroup.Unmarshal(m, b)
-}
-func (m *Message_NamedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_NamedGroup.Marshal(b, m, deterministic)
-}
-func (m *Message_NamedGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_NamedGroup.Merge(m, src)
-}
-func (m *Message_NamedGroup) XXX_Size() int {
-	return xxx_messageInfo_Message_NamedGroup.Size(m)
-}
-func (m *Message_NamedGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_NamedGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_NamedGroup proto.InternalMessageInfo
-
-func (m *Message_NamedGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_NamedGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_NamedGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func (m *Message_NamedGroup) GetF4() *Message {
-	if m != nil {
-		return m.F4
-	}
-	return nil
-}
-
-type Message_OptionalGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_OptionalGroup) Reset()         { *m = Message_OptionalGroup{} }
-func (m *Message_OptionalGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_OptionalGroup) ProtoMessage()    {}
-func (*Message_OptionalGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3a17e2c63b2b3424, []int{1, 2}
-}
-
-func (m *Message_OptionalGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_OptionalGroup.Unmarshal(m, b)
-}
-func (m *Message_OptionalGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_OptionalGroup.Marshal(b, m, deterministic)
-}
-func (m *Message_OptionalGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_OptionalGroup.Merge(m, src)
-}
-func (m *Message_OptionalGroup) XXX_Size() int {
-	return xxx_messageInfo_Message_OptionalGroup.Size(m)
-}
-func (m *Message_OptionalGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_OptionalGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_OptionalGroup proto.InternalMessageInfo
-
-func (m *Message_OptionalGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_OptionalGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_OptionalGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_RequiredGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_RequiredGroup) Reset()         { *m = Message_RequiredGroup{} }
-func (m *Message_RequiredGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_RequiredGroup) ProtoMessage()    {}
-func (*Message_RequiredGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3a17e2c63b2b3424, []int{1, 3}
-}
-
-func (m *Message_RequiredGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_RequiredGroup.Unmarshal(m, b)
-}
-func (m *Message_RequiredGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_RequiredGroup.Marshal(b, m, deterministic)
-}
-func (m *Message_RequiredGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_RequiredGroup.Merge(m, src)
-}
-func (m *Message_RequiredGroup) XXX_Size() int {
-	return xxx_messageInfo_Message_RequiredGroup.Size(m)
-}
-func (m *Message_RequiredGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_RequiredGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_RequiredGroup proto.InternalMessageInfo
-
-func (m *Message_RequiredGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_RequiredGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_RequiredGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_RepeatedGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_RepeatedGroup) Reset()         { *m = Message_RepeatedGroup{} }
-func (m *Message_RepeatedGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_RepeatedGroup) ProtoMessage()    {}
-func (*Message_RepeatedGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3a17e2c63b2b3424, []int{1, 4}
-}
-
-func (m *Message_RepeatedGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_RepeatedGroup.Unmarshal(m, b)
-}
-func (m *Message_RepeatedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_RepeatedGroup.Marshal(b, m, deterministic)
-}
-func (m *Message_RepeatedGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_RepeatedGroup.Merge(m, src)
-}
-func (m *Message_RepeatedGroup) XXX_Size() int {
-	return xxx_messageInfo_Message_RepeatedGroup.Size(m)
-}
-func (m *Message_RepeatedGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_RepeatedGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_RepeatedGroup proto.InternalMessageInfo
-
-func (m *Message_RepeatedGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_RepeatedGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_RepeatedGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_OneofGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_OneofGroup) Reset()         { *m = Message_OneofGroup{} }
-func (m *Message_OneofGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_OneofGroup) ProtoMessage()    {}
-func (*Message_OneofGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3a17e2c63b2b3424, []int{1, 33}
-}
-
-func (m *Message_OneofGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_OneofGroup.Unmarshal(m, b)
-}
-func (m *Message_OneofGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_OneofGroup.Marshal(b, m, deterministic)
-}
-func (m *Message_OneofGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_OneofGroup.Merge(m, src)
-}
-func (m *Message_OneofGroup) XXX_Size() int {
-	return xxx_messageInfo_Message_OneofGroup.Size(m)
-}
-func (m *Message_OneofGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_OneofGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_OneofGroup proto.InternalMessageInfo
-
-func (m *Message_OneofGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_OneofGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_OneofGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_ExtensionOptionalGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_ExtensionOptionalGroup) Reset()         { *m = Message_ExtensionOptionalGroup{} }
-func (m *Message_ExtensionOptionalGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_ExtensionOptionalGroup) ProtoMessage()    {}
-func (*Message_ExtensionOptionalGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3a17e2c63b2b3424, []int{1, 34}
-}
-
-func (m *Message_ExtensionOptionalGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_ExtensionOptionalGroup.Unmarshal(m, b)
-}
-func (m *Message_ExtensionOptionalGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_ExtensionOptionalGroup.Marshal(b, m, deterministic)
-}
-func (m *Message_ExtensionOptionalGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_ExtensionOptionalGroup.Merge(m, src)
-}
-func (m *Message_ExtensionOptionalGroup) XXX_Size() int {
-	return xxx_messageInfo_Message_ExtensionOptionalGroup.Size(m)
-}
-func (m *Message_ExtensionOptionalGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_ExtensionOptionalGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_ExtensionOptionalGroup proto.InternalMessageInfo
-
-func (m *Message_ExtensionOptionalGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_ExtensionOptionalGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_ExtensionOptionalGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message_ExtensionRepeatedGroup struct {
-	F1                   *string  `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   *string  `protobuf:"bytes,2,req,name=f2" json:"f2,omitempty"`
-	F3                   []string `protobuf:"bytes,3,rep,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_ExtensionRepeatedGroup) Reset()         { *m = Message_ExtensionRepeatedGroup{} }
-func (m *Message_ExtensionRepeatedGroup) String() string { return proto.CompactTextString(m) }
-func (*Message_ExtensionRepeatedGroup) ProtoMessage()    {}
-func (*Message_ExtensionRepeatedGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_3a17e2c63b2b3424, []int{1, 35}
-}
-
-func (m *Message_ExtensionRepeatedGroup) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_ExtensionRepeatedGroup.Unmarshal(m, b)
-}
-func (m *Message_ExtensionRepeatedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_ExtensionRepeatedGroup.Marshal(b, m, deterministic)
-}
-func (m *Message_ExtensionRepeatedGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_ExtensionRepeatedGroup.Merge(m, src)
-}
-func (m *Message_ExtensionRepeatedGroup) XXX_Size() int {
-	return xxx_messageInfo_Message_ExtensionRepeatedGroup.Size(m)
-}
-func (m *Message_ExtensionRepeatedGroup) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_ExtensionRepeatedGroup.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_ExtensionRepeatedGroup proto.InternalMessageInfo
-
-func (m *Message_ExtensionRepeatedGroup) GetF1() string {
-	if m != nil && m.F1 != nil {
-		return *m.F1
-	}
-	return ""
-}
-
-func (m *Message_ExtensionRepeatedGroup) GetF2() string {
-	if m != nil && m.F2 != nil {
-		return *m.F2
-	}
-	return ""
-}
-
-func (m *Message_ExtensionRepeatedGroup) GetF3() []string {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func init() {
-	proto.RegisterEnum("google.golang.org.proto2_20190205.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
-	proto.RegisterEnum("google.golang.org.proto2_20190205.Message_ChildEnum", Message_ChildEnum_name, Message_ChildEnum_value)
-	proto.RegisterType((*SiblingMessage)(nil), "google.golang.org.proto2_20190205.SiblingMessage")
-	proto.RegisterExtension(E_Message_ExtensionOptionalBool)
-	proto.RegisterExtension(E_Message_ExtensionOptionalInt32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSint32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalUint32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalInt64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSint64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalUint64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalFixed32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed32)
-	proto.RegisterExtension(E_Message_ExtensionOptionalFloat)
-	proto.RegisterExtension(E_Message_ExtensionOptionalFixed64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSfixed64)
-	proto.RegisterExtension(E_Message_ExtensionOptionalDouble)
-	proto.RegisterExtension(E_Message_ExtensionOptionalString)
-	proto.RegisterExtension(E_Message_ExtensionOptionalBytes)
-	proto.RegisterExtension(E_Message_ExtensionOptionalChildEnum)
-	proto.RegisterExtension(E_Message_ExtensionOptionalChildMessage)
-	proto.RegisterExtension(E_Message_ExtensionOptionalNamedGroup)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingEnum)
-	proto.RegisterExtension(E_Message_ExtensionOptionalSiblingMessage)
-	proto.RegisterExtension(E_Message_Extensionoptionalgroup)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedBool)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedInt32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSint32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedUint32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedInt64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSint64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedUint64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed32)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedFloat)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedFixed64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSfixed64)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedDouble)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedString)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedBytes)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedChildEnum)
-	proto.RegisterExtension(E_Message_ExtensionDefaultedSiblingEnum)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedBool)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedInt32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSint32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedUint32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedInt64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSint64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedUint64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed32)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedFloat)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedFixed64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSfixed64)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedDouble)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedString)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedBytes)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedChildEnum)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedChildMessage)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedNamedGroup)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingEnum)
-	proto.RegisterExtension(E_Message_ExtensionRepeatedSiblingMessage)
-	proto.RegisterExtension(E_Message_Extensionrepeatedgroup)
-	proto.RegisterType((*Message)(nil), "google.golang.org.proto2_20190205.Message")
-	proto.RegisterMapType((map[bool]bool)(nil), "google.golang.org.proto2_20190205.Message.MapBoolBoolEntry")
-	proto.RegisterMapType((map[bool][]byte)(nil), "google.golang.org.proto2_20190205.Message.MapBoolBytesEntry")
-	proto.RegisterMapType((map[bool]Message_ChildEnum)(nil), "google.golang.org.proto2_20190205.Message.MapBoolChildEnumEntry")
-	proto.RegisterMapType((map[bool]*Message_ChildMessage)(nil), "google.golang.org.proto2_20190205.Message.MapBoolChildMessageEntry")
-	proto.RegisterMapType((map[bool]float64)(nil), "google.golang.org.proto2_20190205.Message.MapBoolDoubleEntry")
-	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto2_20190205.Message.MapBoolFixed32Entry")
-	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto2_20190205.Message.MapBoolFixed64Entry")
-	proto.RegisterMapType((map[bool]float32)(nil), "google.golang.org.proto2_20190205.Message.MapBoolFloatEntry")
-	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto2_20190205.Message.MapBoolInt32Entry")
-	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto2_20190205.Message.MapBoolInt64Entry")
-	proto.RegisterMapType((map[bool]*Message_NamedGroup)(nil), "google.golang.org.proto2_20190205.Message.MapBoolNamedGroupEntry")
-	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto2_20190205.Message.MapBoolSfixed32Entry")
-	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto2_20190205.Message.MapBoolSfixed64Entry")
-	proto.RegisterMapType((map[bool]SiblingEnum)(nil), "google.golang.org.proto2_20190205.Message.MapBoolSiblingEnumEntry")
-	proto.RegisterMapType((map[bool]*SiblingMessage)(nil), "google.golang.org.proto2_20190205.Message.MapBoolSiblingMessageEntry")
-	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto2_20190205.Message.MapBoolSint32Entry")
-	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto2_20190205.Message.MapBoolSint64Entry")
-	proto.RegisterMapType((map[bool]string)(nil), "google.golang.org.proto2_20190205.Message.MapBoolStringEntry")
-	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto2_20190205.Message.MapBoolUint32Entry")
-	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto2_20190205.Message.MapBoolUint64Entry")
-	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto2_20190205.Message.MapFixed32BoolEntry")
-	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto2_20190205.Message.MapInt32BoolEntry")
-	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto2_20190205.Message.MapInt64BoolEntry")
-	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto2_20190205.Message.MapSint32BoolEntry")
-	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto2_20190205.Message.MapSint64BoolEntry")
-	proto.RegisterMapType((map[string]bool)(nil), "google.golang.org.proto2_20190205.Message.MapStringBoolEntry")
-	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto2_20190205.Message.MapUint32BoolEntry")
-	proto.RegisterMapType((map[uint64]bool)(nil), "google.golang.org.proto2_20190205.Message.MapUint64BoolEntry")
-	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto2_20190205.Message.ChildMessage")
-	proto.RegisterType((*Message_NamedGroup)(nil), "google.golang.org.proto2_20190205.Message.NamedGroup")
-	proto.RegisterType((*Message_OptionalGroup)(nil), "google.golang.org.proto2_20190205.Message.OptionalGroup")
-	proto.RegisterType((*Message_RequiredGroup)(nil), "google.golang.org.proto2_20190205.Message.RequiredGroup")
-	proto.RegisterType((*Message_RepeatedGroup)(nil), "google.golang.org.proto2_20190205.Message.RepeatedGroup")
-	proto.RegisterType((*Message_OneofGroup)(nil), "google.golang.org.proto2_20190205.Message.OneofGroup")
-	proto.RegisterType((*Message_ExtensionOptionalGroup)(nil), "google.golang.org.proto2_20190205.Message.ExtensionOptionalGroup")
-	proto.RegisterType((*Message_ExtensionRepeatedGroup)(nil), "google.golang.org.proto2_20190205.Message.ExtensionRepeatedGroup")
-}
-
-func init() {
-	proto.RegisterFile("proto2_20190205_c823c79e/test.proto", fileDescriptor_3a17e2c63b2b3424)
-}
-
-var fileDescriptor_3a17e2c63b2b3424 = []byte{
-	// 4469 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5c, 0x67, 0x70, 0x24, 0xc7,
-	0x75, 0xc6, 0xec, 0x62, 0x17, 0x87, 0x3e, 0x2c, 0xb0, 0x98, 0xbb, 0x03, 0xe6, 0x40, 0xd2, 0x5c,
-	0x41, 0xb2, 0xbc, 0xa6, 0x79, 0x38, 0x60, 0xd0, 0xe8, 0xe3, 0xad, 0x19, 0x04, 0x90, 0x47, 0x2d,
-	0x65, 0x71, 0xa9, 0x1a, 0xd6, 0xb9, 0x5c, 0x2e, 0x96, 0x61, 0xdc, 0x61, 0x81, 0x03, 0xb9, 0x01,
-	0x04, 0x76, 0x49, 0x9e, 0x25, 0x17, 0xcf, 0x72, 0xfc, 0x49, 0xe5, 0xb4, 0x92, 0x28, 0x66, 0x89,
-	0x51, 0x39, 0x31, 0x29, 0xd8, 0xa6, 0x72, 0x72, 0x90, 0x93, 0x9c, 0x93, 0x9c, 0x73, 0x0e, 0xd5,
-	0xfd, 0xba, 0xa7, 0xbb, 0x67, 0x7a, 0x16, 0xe8, 0x59, 0x15, 0x7f, 0xb0, 0x8a, 0xd7, 0xfb, 0xfa,
-	0x7d, 0xfd, 0xbe, 0xed, 0xf7, 0xde, 0x87, 0x9e, 0xe9, 0x45, 0x2f, 0xdd, 0xde, 0x69, 0x77, 0xda,
-	0xfe, 0xaa, 0x3f, 0xbf, 0x70, 0x72, 0xde, 0x9f, 0x5f, 0x5a, 0x3d, 0x7b, 0x85, 0xbf, 0x78, 0xf6,
-	0xc4, 0xc9, 0xfa, 0xf1, 0x4e, 0x7d, 0xb7, 0x33, 0xc7, 0x3e, 0x75, 0x5f, 0xb2, 0xd9, 0x6e, 0x6f,
-	0x36, 0xea, 0x73, 0x9b, 0xed, 0xc6, 0x5a, 0x6b, 0x73, 0xae, 0xbd, 0xb3, 0x39, 0x17, 0x99, 0x36,
-	0xfb, 0x3a, 0x34, 0x7e, 0xf3, 0xd6, 0x99, 0xc6, 0x56, 0x6b, 0xf3, 0xc6, 0xfa, 0xee, 0xee, 0xda,
-	0x66, 0xdd, 0x1d, 0x47, 0x99, 0x8d, 0x05, 0xcf, 0x29, 0x39, 0xe5, 0xd1, 0x20, 0xb3, 0xb1, 0xc0,
-	0xfe, 0xed, 0x7b, 0x99, 0x52, 0x86, 0xfd, 0xdb, 0x67, 0xff, 0x5e, 0xf4, 0xb2, 0xa5, 0x2c, 0xfb,
-	0xf7, 0xa2, 0x5b, 0x41, 0x99, 0x0d, 0xec, 0x0d, 0x97, 0x9c, 0xf2, 0x41, 0xff, 0xb2, 0xb9, 0x3d,
-	0x11, 0xe7, 0x38, 0x4e, 0x90, 0xd9, 0xc0, 0xb3, 0xdf, 0x79, 0xd4, 0x41, 0x23, 0x02, 0xf8, 0x34,
-	0x42, 0xad, 0xb5, 0x66, 0x7d, 0x7d, 0x73, 0xa7, 0xdd, 0xdd, 0x66, 0x0b, 0x40, 0xfe, 0xd2, 0xfe,
-	0x1d, 0xce, 0xd5, 0xe8, 0xe4, 0x57, 0xd2, 0xc9, 0x81, 0xe2, 0xc8, 0x7d, 0x29, 0x2a, 0xb4, 0xb7,
-	0x3b, 0x5b, 0xed, 0xd6, 0x5a, 0x63, 0xf5, 0x4c, 0xbb, 0xdd, 0xf0, 0xd6, 0x4b, 0x4e, 0xf9, 0x40,
-	0x30, 0x26, 0x06, 0x57, 0xda, 0xed, 0x86, 0xfb, 0xfd, 0x68, 0x3c, 0x34, 0xda, 0x6a, 0x75, 0x16,
-	0x7d, 0xaf, 0x5e, 0x72, 0xca, 0xb9, 0x20, 0x9c, 0x7a, 0x03, 0x1d, 0x74, 0x7f, 0x00, 0x4d, 0x84,
-	0x66, 0xbb, 0x60, 0xb7, 0x51, 0x72, 0xca, 0x93, 0x41, 0x38, 0xfb, 0xe6, 0xad, 0x98, 0x61, 0x17,
-	0x0c, 0x37, 0x4b, 0x4e, 0xb9, 0x20, 0x0d, 0x4f, 0x83, 0x61, 0x04, 0x98, 0x60, 0xef, 0x5c, 0xc9,
-	0x29, 0x67, 0x35, 0x60, 0x82, 0x63, 0xc0, 0x04, 0x7b, 0x5b, 0x25, 0xa7, 0xec, 0xea, 0xc0, 0x11,
-	0xc3, 0x2e, 0x18, 0xde, 0x5a, 0x72, 0xca, 0xc3, 0x3a, 0x30, 0xc1, 0xee, 0x0f, 0xa2, 0x62, 0x68,
-	0xb8, 0xb1, 0x75, 0x57, 0x7d, 0x7d, 0xd1, 0xf7, 0x6e, 0x2b, 0x39, 0xe5, 0x91, 0x20, 0x74, 0x70,
-	0x3d, 0x0c, 0xbb, 0x3f, 0x84, 0x26, 0x25, 0xb8, 0xb0, 0x6d, 0x94, 0x9c, 0xf2, 0x44, 0x10, 0xfa,
-	0xb8, 0x99, 0x8f, 0x6b, 0x01, 0x6d, 0x34, 0xda, 0x6b, 0x1d, 0xaf, 0x59, 0x72, 0xca, 0x19, 0x19,
-	0xd0, 0xf5, 0x74, 0x30, 0x0e, 0x4f, 0xb0, 0xd7, 0x2a, 0x39, 0xe5, 0x7c, 0x04, 0x9e, 0x60, 0x03,
-	0x3c, 0xc1, 0x5e, 0xbb, 0xe4, 0x94, 0x8b, 0x51, 0xf8, 0x48, 0xfc, 0xeb, 0xed, 0xee, 0x99, 0x46,
-	0xdd, 0xdb, 0x2e, 0x39, 0x65, 0x47, 0xc6, 0x7f, 0x1d, 0x1b, 0xd5, 0x19, 0xed, 0xec, 0x6c, 0xb5,
-	0x36, 0xbd, 0xdb, 0xd9, 0x9e, 0x97, 0x8c, 0xb2, 0x51, 0x2d, 0xa0, 0x33, 0xe7, 0x3b, 0xf5, 0x5d,
-	0x6f, 0xa7, 0xe4, 0x94, 0xc7, 0x64, 0x40, 0x2b, 0x74, 0xd0, 0x5d, 0x47, 0x87, 0x42, 0xb3, 0xb3,
-	0xe7, 0xb6, 0x1a, 0xeb, 0xab, 0xf5, 0x56, 0xb7, 0xe9, 0xed, 0x96, 0x9c, 0xf2, 0xb8, 0x8f, 0x2d,
-	0xb6, 0xf1, 0xb5, 0x74, 0xf2, 0xa9, 0x56, 0xb7, 0x19, 0x84, 0x61, 0x87, 0x43, 0x6e, 0x13, 0x4d,
-	0x45, 0x50, 0x9a, 0x30, 0xcd, 0xeb, 0xb0, 0x04, 0x3c, 0x61, 0x0b, 0x24, 0xb2, 0xf1, 0xb0, 0x86,
-	0x25, 0x52, 0x72, 0x13, 0x85, 0xe3, 0xab, 0x2c, 0xa5, 0x56, 0x21, 0x39, 0xbb, 0x0c, 0x2c, 0x65,
-	0x72, 0xba, 0xc2, 0xa5, 0x1c, 0x73, 0xcf, 0xa0, 0x23, 0xca, 0xfe, 0x66, 0xf5, 0x08, 0xf8, 0xbb,
-	0x83, 0xf1, 0x37, 0xb7, 0x0f, 0x24, 0x5e, 0xc6, 0x18, 0x73, 0x87, 0x64, 0x56, 0x84, 0x83, 0xee,
-	0x6d, 0xc8, 0x8b, 0x61, 0x08, 0xf6, 0xee, 0x64, 0x01, 0x2d, 0xec, 0x1f, 0x46, 0xf0, 0x36, 0x15,
-	0x41, 0x12, 0xcc, 0xfd, 0x84, 0xac, 0x3a, 0x40, 0xd9, 0x5d, 0xac, 0x9e, 0x5d, 0x61, 0x41, 0xd9,
-	0x4d, 0x7c, 0x3e, 0xb0, 0xa6, 0xbb, 0x73, 0x2f, 0x47, 0xe3, 0xeb, 0xf5, 0x8d, 0xb5, 0x6e, 0xa3,
-	0x53, 0x5f, 0x87, 0xb2, 0xf6, 0x02, 0xad, 0x98, 0x07, 0x2a, 0xc3, 0x9d, 0x9d, 0x6e, 0x3d, 0x28,
-	0x84, 0x1f, 0xb2, 0xf2, 0x36, 0x8f, 0x26, 0xa4, 0x35, 0x94, 0xa3, 0x2f, 0x50, 0xf3, 0x5c, 0x25,
-	0x7f, 0x6c, 0xc1, 0x5f, 0xc4, 0x4b, 0x81, 0xf4, 0x06, 0x95, 0x6e, 0x01, 0x15, 0xe5, 0x0c, 0x5e,
-	0xea, 0xbe, 0x48, 0xa7, 0x4c, 0x56, 0x72, 0xc7, 0x16, 0xfd, 0xf9, 0xf9, 0x40, 0x7a, 0xe4, 0x35,
-	0x6f, 0x5e, 0x9d, 0xc2, 0x8b, 0xde, 0x97, 0xe8, 0x94, 0x42, 0x65, 0x38, 0x32, 0x83, 0x17, 0x3f,
-	0x1c, 0x59, 0x16, 0xc1, 0xde, 0x97, 0xe9, 0x84, 0x6c, 0x05, 0xc1, 0xb2, 0xc8, 0x89, 0x2b, 0x4e,
-	0xea, 0x4b, 0x23, 0x38, 0xbe, 0x34, 0x82, 0xbd, 0xaf, 0xd0, 0x69, 0x6e, 0x25, 0x77, 0x8c, 0xe0,
-	0xd8, 0xd2, 0x08, 0x8e, 0x2f, 0x8d, 0x60, 0xef, 0xab, 0x74, 0xca, 0x70, 0x65, 0x38, 0x32, 0x83,
-	0x97, 0x47, 0x8c, 0x26, 0xe5, 0x0c, 0x51, 0xf3, 0xbe, 0x46, 0xa7, 0x8c, 0x54, 0xf2, 0x34, 0x9a,
-	0xf9, 0xf9, 0x40, 0xfa, 0x14, 0x95, 0xf2, 0x04, 0x72, 0x95, 0xa5, 0x89, 0x69, 0x5f, 0xa7, 0xd3,
-	0x26, 0x2a, 0x23, 0xc7, 0xf8, 0x3c, 0xe9, 0x39, 0xac, 0x9a, 0x0b, 0x2a, 0x13, 0x50, 0x36, 0xbf,
-	0x41, 0x67, 0x65, 0x2a, 0x23, 0x8b, 0x73, 0x0b, 0x78, 0x61, 0x49, 0xa5, 0x01, 0x2a, 0x68, 0x7c,
-	0x85, 0x04, 0x7b, 0xdf, 0xa4, 0x93, 0xf2, 0x95, 0x3c, 0x0d, 0x2a, 0xbe, 0x42, 0x82, 0x4d, 0x2b,
-	0x24, 0xd8, 0xfb, 0x16, 0x9d, 0x56, 0xac, 0x8c, 0x1c, 0xe3, 0xf3, 0xa2, 0x2b, 0x24, 0xd8, 0x3d,
-	0xa9, 0x52, 0xc8, 0x2b, 0xeb, 0xaf, 0xd1, 0x69, 0x4e, 0xa5, 0xc0, 0x97, 0xe8, 0x93, 0xa5, 0xc5,
-	0xa5, 0x93, 0x0a, 0x97, 0xbc, 0xd4, 0x5e, 0xa9, 0x7d, 0x61, 0x50, 0x6b, 0x7f, 0x9d, 0x09, 0x8c,
-	0x4a, 0xf1, 0x5c, 0xbd, 0xd1, 0x68, 0x5f, 0x5e, 0x9a, 0xbd, 0xb3, 0xbd, 0xd3, 0x58, 0x7f, 0xc9,
-	0x2c, 0x52, 0xbf, 0x3b, 0xa8, 0xbf, 0x2b, 0x2a, 0x35, 0x50, 0x80, 0x7f, 0x83, 0x4e, 0x1e, 0xab,
-	0x78, 0xeb, 0xf5, 0xb5, 0xf5, 0x5b, 0x16, 0x17, 0xc9, 0x2d, 0xfe, 0xd2, 0xd2, 0x2d, 0xfe, 0x09,
-	0x72, 0xcb, 0xe2, 0xd2, 0x89, 0x33, 0xf5, 0xfa, 0x86, 0xc2, 0x15, 0x14, 0xe7, 0x16, 0x3a, 0x2c,
-	0x7d, 0x28, 0xd5, 0xf9, 0x37, 0x9d, 0xf4, 0xe5, 0xb9, 0x92, 0x5b, 0x7e, 0xf5, 0x6b, 0xaa, 0xcb,
-	0x81, 0xe4, 0x53, 0x96, 0xe9, 0x06, 0x9a, 0x52, 0xb7, 0xa8, 0x52, 0xcf, 0xbe, 0xed, 0xa4, 0x29,
-	0x68, 0x02, 0xeb, 0xb0, 0xb2, 0xb1, 0x65, 0x61, 0x7b, 0x19, 0x2a, 0xec, 0xd4, 0x6f, 0xef, 0x6e,
-	0xed, 0x88, 0x52, 0xf0, 0x18, 0x55, 0x6b, 0x07, 0x82, 0x31, 0x31, 0xca, 0x6a, 0xc0, 0xcb, 0xd1,
-	0x78, 0x68, 0x05, 0xc9, 0xf9, 0x38, 0x35, 0xcb, 0x05, 0xe1, 0x64, 0xc8, 0xfc, 0x32, 0x9a, 0x08,
-	0xed, 0x78, 0xe2, 0x3f, 0x41, 0x0d, 0x27, 0x83, 0x70, 0x3e, 0x4f, 0x78, 0xd5, 0x92, 0xe7, 0xfb,
-	0x93, 0xd4, 0xb2, 0x20, 0x2d, 0x79, 0xa2, 0x47, 0xb0, 0x09, 0xf6, 0x9e, 0xa2, 0x86, 0x59, 0x0d,
-	0x9b, 0xe0, 0x18, 0x36, 0xc1, 0xde, 0x07, 0xa9, 0xa1, 0xab, 0x63, 0x47, 0x2c, 0x79, 0x42, 0x7f,
-	0x88, 0x5a, 0x0e, 0xeb, 0xd8, 0x04, 0xbb, 0x97, 0xa1, 0x62, 0x68, 0x29, 0x32, 0xf2, 0xc3, 0xd4,
-	0x74, 0x24, 0x08, 0x5d, 0x88, 0xfc, 0xbd, 0x1c, 0x4d, 0x4a, 0x7c, 0x61, 0xfc, 0x11, 0x6a, 0x3c,
-	0x11, 0x84, 0x5e, 0xc2, 0xa4, 0x55, 0xa3, 0x82, 0x9c, 0xfd, 0x28, 0x35, 0xcd, 0xc8, 0xa8, 0x20,
-	0x53, 0x63, 0x2b, 0x20, 0xd8, 0xfb, 0x18, 0xb5, 0xcc, 0x47, 0x56, 0x40, 0xb0, 0x61, 0x05, 0x04,
-	0x7b, 0x1f, 0xa7, 0xc6, 0xc5, 0xe8, 0x0a, 0x22, 0x2c, 0xf0, 0x9c, 0xfc, 0x04, 0xb5, 0x75, 0x24,
-	0x0b, 0x3c, 0x07, 0x35, 0x66, 0x21, 0x05, 0x3f, 0x09, 0x9a, 0x5e, 0x32, 0x0b, 0xf9, 0xa6, 0x46,
-	0x05, 0xe9, 0xf6, 0x29, 0x6a, 0x38, 0x26, 0xa3, 0x82, 0x9c, 0xaa, 0xa3, 0x43, 0xa1, 0x9d, 0x92,
-	0x52, 0x9f, 0xa6, 0xc6, 0xa9, 0x15, 0x8f, 0xf0, 0x28, 0x53, 0xa9, 0x85, 0xa6, 0x22, 0x30, 0xa2,
-	0x67, 0x3f, 0x4d, 0x91, 0x06, 0x91, 0x3c, 0x1a, 0x98, 0x68, 0xdc, 0xe7, 0x50, 0x38, 0xae, 0x49,
-	0x9e, 0x67, 0x00, 0x2d, 0xad, 0xe6, 0x11, 0x3e, 0x15, 0xcd, 0x73, 0x16, 0x1d, 0x51, 0x36, 0xbb,
-	0x52, 0x23, 0x9e, 0x05, 0x0a, 0xad, 0x45, 0x8f, 0x4c, 0x11, 0x59, 0x1b, 0x1a, 0xc8, 0x8b, 0x81,
-	0x08, 0x02, 0x9f, 0x83, 0x90, 0xd2, 0xa8, 0x9e, 0x08, 0x94, 0x20, 0x6f, 0x55, 0x56, 0x22, 0x60,
-	0xed, 0x79, 0x0a, 0x61, 0x27, 0x7b, 0x02, 0xee, 0x80, 0xcb, 0x1e, 0xcd, 0x9f, 0x7b, 0x15, 0x9a,
-	0x96, 0x1b, 0x5e, 0xd7, 0x3f, 0xf7, 0x64, 0x69, 0xd1, 0xe3, 0xfa, 0x27, 0x64, 0xf6, 0x3a, 0x4d,
-	0x07, 0x2d, 0x2b, 0x6c, 0x44, 0x05, 0xd1, 0x1b, 0xe8, 0x7c, 0x29, 0x88, 0xa6, 0x62, 0x1e, 0xa0,
-	0x3c, 0xae, 0xa0, 0xa3, 0x06, 0x17, 0xbc, 0x50, 0xbe, 0x91, 0xfa, 0x08, 0x15, 0xd2, 0x74, 0xcc,
-	0x05, 0x2f, 0x9c, 0xcb, 0x46, 0x1f, 0xbc, 0x84, 0xbe, 0x89, 0xfa, 0x10, 0x92, 0x29, 0xee, 0x82,
-	0x57, 0xd4, 0x53, 0x49, 0x91, 0x10, 0xec, 0xbd, 0x99, 0x7a, 0xd0, 0x35, 0x94, 0x31, 0x1a, 0x82,
-	0xfb, 0x44, 0x43, 0xb0, 0xf7, 0x16, 0xea, 0x27, 0x14, 0x55, 0xe6, 0x68, 0x08, 0xee, 0x13, 0x0d,
-	0xc1, 0xde, 0x5b, 0xa9, 0x0f, 0xa1, 0xb2, 0xcc, 0xd1, 0x10, 0xec, 0x9e, 0x42, 0x33, 0x06, 0x17,
-	0xa2, 0x00, 0xbf, 0x8d, 0xfa, 0x90, 0xb2, 0xcb, 0x8b, 0x79, 0x11, 0xe5, 0xbb, 0x8a, 0x2e, 0x32,
-	0x45, 0x23, 0xfc, 0xbc, 0x9d, 0xfa, 0x51, 0x74, 0xd8, 0xd1, 0x78, 0x44, 0xa2, 0xb4, 0xaf, 0x18,
-	0xe9, 0x85, 0x22, 0xff, 0x0e, 0xea, 0x46, 0x11, 0x66, 0x71, 0x6e, 0xa1, 0xec, 0xf7, 0x09, 0x8a,
-	0x60, 0xef, 0x9d, 0xd4, 0x8b, 0x54, 0x6a, 0x09, 0x41, 0x11, 0xdc, 0x37, 0x28, 0x82, 0xbd, 0x77,
-	0x51, 0x3f, 0x8a, 0x74, 0x4b, 0x0a, 0x8a, 0x60, 0xf7, 0x55, 0xc6, 0x2f, 0x8a, 0xf7, 0x8d, 0x1e,
-	0xf5, 0x13, 0xd3, 0x72, 0xf1, 0x6f, 0x8c, 0xf7, 0x93, 0x1b, 0xcd, 0x1b, 0x07, 0x3a, 0xcb, 0xbb,
-	0xa9, 0x2f, 0x93, 0xb8, 0x33, 0xec, 0x21, 0x68, 0x3a, 0x37, 0x1b, 0xf9, 0x86, 0xf6, 0xf3, 0x1e,
-	0xea, 0xad, 0x9f, 0xda, 0x8b, 0x7f, 0x01, 0xd0, 0xa1, 0xee, 0x46, 0x97, 0x18, 0x9c, 0x2a, 0xbd,
-	0xea, 0xbd, 0xd9, 0xf4, 0xbd, 0x4a, 0x48, 0xb2, 0x99, 0x18, 0xb8, 0xec, 0x5d, 0x3f, 0x8d, 0x2e,
-	0x35, 0x66, 0x97, 0x52, 0xeb, 0xef, 0xcd, 0xa6, 0xa9, 0xf5, 0x02, 0xfc, 0x62, 0x43, 0x4e, 0x46,
-	0x74, 0xe1, 0x76, 0x7d, 0x2d, 0x2c, 0x91, 0xff, 0x9c, 0x2d, 0x65, 0x41, 0x17, 0xc2, 0xa8, 0xd4,
-	0x85, 0xdc, 0x0a, 0x2a, 0xd0, 0xbf, 0x50, 0x33, 0xa6, 0x0b, 0x61, 0x58, 0xd1, 0x85, 0xdc, 0x8e,
-	0x97, 0xbb, 0x7f, 0xa5, 0x86, 0x4c, 0x17, 0xc2, 0xb8, 0xaa, 0x0b, 0xb9, 0x25, 0x2f, 0x6a, 0xff,
-	0x46, 0x2d, 0x0b, 0xd2, 0x52, 0xd5, 0x85, 0x12, 0x9b, 0x60, 0xef, 0xdf, 0xa9, 0x61, 0x56, 0xc3,
-	0x16, 0x3a, 0x47, 0xc1, 0x26, 0xd8, 0xfb, 0x0f, 0x6a, 0xe8, 0xea, 0xd8, 0x11, 0x4b, 0x5e, 0x82,
-	0xfe, 0x93, 0x5a, 0x0e, 0xeb, 0xd8, 0x42, 0x17, 0x72, 0x4b, 0x51, 0x21, 0xfe, 0x8b, 0x9a, 0x32,
-	0x5d, 0x08, 0x1f, 0x68, 0xba, 0x50, 0xe0, 0x0b, 0xe3, 0xff, 0xa6, 0xc6, 0x4c, 0x17, 0xf2, 0x15,
-	0x68, 0xba, 0x50, 0x78, 0x66, 0x25, 0xe3, 0x7f, 0xa8, 0x69, 0x46, 0x46, 0xa5, 0xe8, 0x42, 0x75,
-	0x05, 0x04, 0x7b, 0xff, 0x4b, 0x2d, 0xf3, 0x91, 0x15, 0x08, 0x5d, 0xa8, 0xad, 0x80, 0x60, 0xef,
-	0xff, 0xa8, 0x71, 0x31, 0xba, 0x82, 0x08, 0x0b, 0x3c, 0xbf, 0x2f, 0x0c, 0x97, 0xb2, 0xa0, 0x0b,
-	0x61, 0x5c, 0xd5, 0x85, 0xc2, 0x2f, 0x64, 0xef, 0xcf, 0x0c, 0xb3, 0xb3, 0x5d, 0xc9, 0xac, 0xa2,
-	0x0b, 0xc5, 0x6e, 0x62, 0x89, 0xf9, 0x7a, 0x6a, 0x38, 0x26, 0xa3, 0x52, 0x74, 0x21, 0xb7, 0x53,
-	0x72, 0xed, 0x67, 0xa9, 0xf1, 0x00, 0xba, 0x10, 0x3c, 0x46, 0x74, 0xa1, 0x06, 0x23, 0x64, 0xcd,
-	0xcf, 0x51, 0xa4, 0xc1, 0x74, 0xa1, 0x02, 0xa6, 0xe9, 0x42, 0x8e, 0xa7, 0xea, 0xc2, 0x9f, 0x07,
-	0xb4, 0xf4, 0xba, 0x10, 0x7c, 0x46, 0x75, 0x61, 0xb8, 0xd9, 0x95, 0x5a, 0xf1, 0x0b, 0x40, 0x61,
-	0x0a, 0x5d, 0x28, 0x52, 0x24, 0xa2, 0x0b, 0x23, 0x20, 0x82, 0xc0, 0x5f, 0x84, 0x90, 0xd2, 0xe9,
-	0x42, 0x0d, 0x4a, 0xd3, 0x85, 0xf0, 0x09, 0xb0, 0xf6, 0x4b, 0x14, 0xc2, 0x56, 0x17, 0x82, 0x83,
-	0x50, 0x17, 0x2a, 0xfe, 0xdc, 0x9f, 0x44, 0x85, 0xe6, 0xda, 0x36, 0xab, 0x72, 0x50, 0xea, 0xbe,
-	0x0d, 0x31, 0xfc, 0xb0, 0x05, 0xc0, 0x8d, 0x6b, 0xdb, 0xb4, 0x20, 0xd2, 0xff, 0x4e, 0xb5, 0x3a,
-	0x3b, 0xe7, 0x83, 0x83, 0x4d, 0x39, 0xe2, 0x9e, 0x45, 0xe3, 0x21, 0x02, 0xd4, 0xb4, 0xdf, 0x02,
-	0x88, 0x2b, 0xed, 0x21, 0x58, 0x41, 0x05, 0x8c, 0xb1, 0xa6, 0x32, 0xe4, 0x6e, 0xa0, 0x89, 0x10,
-	0x84, 0xd7, 0xd8, 0xdf, 0x06, 0x94, 0xab, 0xec, 0x51, 0xa0, 0x1a, 0x03, 0x4c, 0xa1, 0xa9, 0x8e,
-	0x69, 0x38, 0xbc, 0x42, 0xff, 0x4e, 0x6a, 0x9c, 0xd3, 0x06, 0x1c, 0x5e, 0xdf, 0x23, 0xa4, 0x11,
-	0xec, 0xfd, 0xee, 0x20, 0xa4, 0x11, 0x1c, 0x23, 0x8d, 0xe0, 0x18, 0x69, 0x04, 0x7b, 0xbf, 0x37,
-	0x10, 0x69, 0x02, 0x46, 0x25, 0x2d, 0x82, 0xc3, 0x5b, 0xcb, 0x77, 0x06, 0x22, 0x2d, 0x8a, 0xc3,
-	0x1b, 0xd3, 0x16, 0x2a, 0x86, 0x38, 0xa2, 0xd7, 0xfc, 0x3e, 0x00, 0x5d, 0x6d, 0x0f, 0xc4, 0x5b,
-	0x18, 0x20, 0x8d, 0x37, 0xb5, 0x41, 0xb7, 0x81, 0x26, 0x25, 0x75, 0x02, 0xeb, 0x0f, 0x00, 0xeb,
-	0x9a, 0x14, 0xe4, 0x6d, 0xa8, 0x60, 0x13, 0x4d, 0x7d, 0x54, 0xdb, 0x0d, 0xd0, 0x17, 0xff, 0x30,
-	0xf5, 0x6e, 0x60, 0x1d, 0x54, 0xdf, 0x0d, 0xd0, 0x54, 0x63, 0xec, 0x11, 0xec, 0xfd, 0xd1, 0x60,
-	0xec, 0x89, 0xef, 0x49, 0x63, 0x8f, 0x60, 0x03, 0x7b, 0x04, 0x7b, 0x7f, 0x3c, 0x20, 0x7b, 0x02,
-	0x4c, 0x67, 0x2f, 0xb2, 0xfd, 0x78, 0x4f, 0xff, 0x93, 0xd4, 0xdb, 0x0f, 0xba, 0xbf, 0xbe, 0xfd,
-	0xb8, 0x22, 0xd0, 0xd2, 0x09, 0x14, 0xc1, 0x9f, 0xa6, 0x4f, 0x27, 0xe6, 0x20, 0x92, 0x4e, 0xa0,
-	0x27, 0xd4, 0xdd, 0x00, 0x7a, 0xe2, 0xcf, 0x52, 0xef, 0x06, 0xa6, 0x3c, 0xf4, 0xdd, 0x00, 0x62,
-	0x64, 0x1b, 0x1d, 0x0a, 0x41, 0x14, 0x31, 0xf2, 0xe7, 0x80, 0xf4, 0x0a, 0x7b, 0xa4, 0x50, 0x80,
-	0x00, 0x5a, 0xb1, 0x19, 0x19, 0x76, 0xcf, 0xa3, 0xa9, 0x08, 0xa2, 0x68, 0xab, 0x7f, 0x01, 0xa0,
-	0xd7, 0xa6, 0x04, 0xe5, 0x63, 0x80, 0x7b, 0xa8, 0x19, 0xff, 0xc4, 0xdd, 0x45, 0x87, 0x43, 0x68,
-	0x55, 0xa2, 0xfc, 0x25, 0x00, 0x2f, 0xdb, 0x03, 0x4b, 0x55, 0x02, 0xb0, 0x93, 0xcd, 0xe8, 0xb8,
-	0x7b, 0x07, 0x3a, 0xa2, 0x54, 0x5f, 0x45, 0xad, 0x7c, 0x17, 0x50, 0x57, 0xd2, 0xd4, 0xe0, 0x50,
-	0xa7, 0x00, 0xac, 0xdb, 0x8c, 0x7d, 0xe0, 0xde, 0x8d, 0xbc, 0x18, 0xae, 0x60, 0xfa, 0xaf, 0x00,
-	0xfa, 0x54, 0x6a, 0x68, 0x8d, 0xeb, 0x23, 0x4d, 0xd3, 0x67, 0x62, 0xff, 0xb2, 0x46, 0x07, 0x9a,
-	0xe3, 0xaf, 0x53, 0xed, 0x5f, 0xd6, 0xf9, 0xa5, 0xe8, 0xa0, 0xfb, 0x37, 0x1c, 0x12, 0xc9, 0xb8,
-	0xab, 0xa0, 0xfc, 0x4d, 0xaa, 0x64, 0x84, 0xc6, 0x2f, 0x61, 0x68, 0x32, 0xca, 0x31, 0x81, 0xd3,
-	0x55, 0x70, 0xfe, 0x36, 0x15, 0xce, 0x69, 0x03, 0x8e, 0x1c, 0x53, 0x48, 0x23, 0x18, 0x60, 0xfe,
-	0x2e, 0x2d, 0x69, 0x04, 0xc7, 0x48, 0x83, 0x21, 0x95, 0x34, 0x81, 0xf2, 0xf7, 0xa9, 0x49, 0x53,
-	0x61, 0x04, 0x69, 0x3a, 0x4e, 0x57, 0xc1, 0xf9, 0x87, 0xd4, 0xa4, 0x45, 0x71, 0xe4, 0x98, 0x68,
-	0x69, 0xbc, 0x8d, 0x02, 0xd0, 0x3f, 0xa6, 0x6a, 0x69, 0xbc, 0xef, 0x4b, 0x24, 0xfa, 0x6d, 0x28,
-	0x83, 0x21, 0x75, 0xac, 0x44, 0x03, 0xd2, 0x3f, 0xa5, 0xa3, 0x8e, 0x79, 0x88, 0x50, 0x17, 0x8e,
-	0xb9, 0x25, 0x84, 0xda, 0xad, 0x7a, 0x7b, 0x03, 0x20, 0x9e, 0xce, 0x95, 0x9c, 0xf2, 0x81, 0xea,
-	0x50, 0x30, 0xca, 0x06, 0x99, 0xc5, 0x2c, 0x3a, 0x08, 0x16, 0x20, 0x4f, 0x9f, 0xa1, 0x26, 0xb9,
-	0xea, 0x50, 0x00, 0xf3, 0x40, 0x2e, 0xbf, 0x0c, 0x8d, 0x81, 0x0d, 0xd7, 0xca, 0xcf, 0x52, 0xa3,
-	0xc9, 0xea, 0x50, 0x00, 0x53, 0xb9, 0xd8, 0x0d, 0xad, 0xb8, 0xd2, 0x7d, 0x8e, 0x5a, 0x15, 0x42,
-	0x2b, 0x2e, 0x55, 0x55, 0x3c, 0x82, 0xbd, 0xe7, 0xa9, 0x51, 0x56, 0xc5, 0x23, 0x58, 0xc7, 0x23,
-	0xd8, 0xfb, 0x0c, 0x35, 0x72, 0x35, 0x3c, 0xd5, 0x8a, 0x8b, 0xc4, 0xcf, 0x52, 0xab, 0x61, 0x0d,
-	0x8f, 0x60, 0xf7, 0xe5, 0xa8, 0x00, 0x56, 0x42, 0x76, 0x7d, 0x8e, 0x9a, 0x8d, 0x54, 0x87, 0x02,
-	0x98, 0x2d, 0x24, 0x5a, 0x19, 0x8d, 0x73, 0x4c, 0x61, 0xf8, 0x79, 0x6a, 0x38, 0x51, 0x1d, 0x0a,
-	0xc0, 0x41, 0x28, 0xaf, 0xc2, 0x08, 0x40, 0x5b, 0xfd, 0x32, 0x35, 0xcb, 0x84, 0x11, 0x80, 0x3a,
-	0xd2, 0x51, 0x09, 0xf6, 0x7e, 0x85, 0x5a, 0xe5, 0x75, 0x54, 0x76, 0x80, 0xa0, 0xa1, 0x12, 0xec,
-	0xfd, 0x2a, 0x35, 0x2c, 0x46, 0x50, 0xd5, 0x68, 0xb9, 0x26, 0x79, 0x81, 0xda, 0x39, 0x61, 0xb4,
-	0x5c, 0x54, 0x48, 0xe6, 0x40, 0x51, 0x7c, 0x81, 0x5a, 0x8d, 0x4a, 0xe6, 0x40, 0x12, 0x84, 0x11,
-	0x80, 0x1e, 0xf8, 0x22, 0x35, 0x1a, 0x0b, 0x23, 0x80, 0x8e, 0xbe, 0x86, 0x8a, 0x60, 0xa3, 0xb4,
-	0xf3, 0x2f, 0xe5, 0xd2, 0x3f, 0xc6, 0xad, 0x0e, 0x05, 0x10, 0xaa, 0x6c, 0xe1, 0xb7, 0xa2, 0x43,
-	0x2a, 0x84, 0xe8, 0x2a, 0x5f, 0xce, 0x0d, 0xf4, 0x8a, 0x4d, 0x75, 0x28, 0x98, 0x94, 0x40, 0xa2,
-	0x8b, 0xac, 0x23, 0x18, 0xd4, 0x1a, 0xf6, 0x57, 0x72, 0x03, 0xbc, 0x5f, 0x53, 0x1d, 0x0a, 0x26,
-	0x98, 0x4b, 0xa5, 0x49, 0xaf, 0x22, 0x57, 0x6c, 0x5c, 0xa5, 0x43, 0x7f, 0x35, 0x97, 0xe6, 0x59,
-	0x74, 0x75, 0x28, 0x28, 0xf2, 0xed, 0x2e, 0xbb, 0xf1, 0x39, 0x74, 0x44, 0x07, 0x10, 0xa4, 0x7d,
-	0x2d, 0x97, 0xf2, 0xcd, 0x9a, 0xea, 0x50, 0x70, 0x48, 0x85, 0x11, 0x84, 0xfd, 0x18, 0xaf, 0x1c,
-	0xc0, 0xd4, 0xd7, 0x73, 0xd6, 0xaf, 0x09, 0xde, 0x44, 0x67, 0x0b, 0xa6, 0x14, 0x5f, 0x32, 0x37,
-	0x60, 0x8f, 0x2e, 0x78, 0xdf, 0x10, 0x9b, 0x74, 0x4c, 0xd9, 0xa4, 0x0b, 0x51, 0x3b, 0xdf, 0xfb,
-	0xa6, 0xc9, 0xce, 0x8f, 0xda, 0x2d, 0x7a, 0xdf, 0x32, 0xd9, 0x2d, 0xba, 0x27, 0xd1, 0x61, 0x9e,
-	0x41, 0xfa, 0x03, 0xad, 0x7b, 0xf3, 0xf2, 0x85, 0x9e, 0xaa, 0x13, 0xc0, 0x37, 0xa8, 0x3f, 0xcf,
-	0xba, 0x4a, 0xd0, 0x1e, 0x7d, 0x98, 0xf5, 0xbe, 0xbc, 0xfa, 0x76, 0x4f, 0xd5, 0xe1, 0x5c, 0x46,
-	0x9e, 0x65, 0x5d, 0x8d, 0xa6, 0xa2, 0xd3, 0x79, 0x25, 0xbd, 0x2f, 0xaf, 0xbc, 0xea, 0x53, 0x75,
-	0x82, 0xc3, 0xfa, 0x74, 0x5e, 0x59, 0xaf, 0x8a, 0xcf, 0xe7, 0x35, 0xf6, 0xfe, 0xbc, 0x7c, 0xef,
-	0x27, 0x3e, 0xfd, 0xb4, 0x78, 0x0c, 0x66, 0x5a, 0x3d, 0xc1, 0xde, 0x03, 0xf9, 0xe8, 0x4b, 0x40,
-	0xc6, 0x08, 0x08, 0x4e, 0x8a, 0x80, 0x60, 0xef, 0xc1, 0xbc, 0xf2, 0x46, 0x90, 0x39, 0x02, 0x82,
-	0x93, 0x22, 0x20, 0xd8, 0x7b, 0x28, 0x2f, 0x5f, 0x0f, 0x32, 0x47, 0xc0, 0x1e, 0x7d, 0x4d, 0x47,
-	0xa7, 0x8b, 0x2a, 0xfd, 0x70, 0x5e, 0x7d, 0x57, 0xa8, 0xea, 0x04, 0x47, 0x74, 0x0f, 0xa2, 0xbe,
-	0x5f, 0x87, 0xbc, 0x58, 0x04, 0xc2, 0xc7, 0x23, 0x79, 0xed, 0xc5, 0xa1, 0xaa, 0x13, 0x4c, 0x45,
-	0xa2, 0x10, 0xb5, 0xff, 0xea, 0x38, 0x95, 0xd0, 0x05, 0xde, 0x9f, 0xd7, 0xde, 0x22, 0x8a, 0xf3,
-	0x08, 0x7d, 0x21, 0x29, 0x10, 0x82, 0xbd, 0x0f, 0xe4, 0xd5, 0x57, 0x8a, 0x12, 0x02, 0x21, 0x38,
-	0x39, 0x10, 0x82, 0xbd, 0x47, 0xf3, 0xda, 0xfb, 0x45, 0x49, 0x81, 0x10, 0xec, 0x5e, 0x1f, 0xff,
-	0x42, 0x78, 0x63, 0x79, 0x2c, 0x6f, 0x78, 0xd9, 0x28, 0xfe, 0xcd, 0xf0, 0x86, 0x73, 0x83, 0x61,
-	0x63, 0x40, 0xeb, 0x79, 0x3c, 0x6f, 0x7e, 0xf3, 0xc8, 0xb0, 0x47, 0xa0, 0x2b, 0xdd, 0x14, 0xe7,
-	0x16, 0xfa, 0xd3, 0x13, 0xf9, 0xfe, 0xaf, 0x21, 0xc5, 0xc9, 0x86, 0x16, 0xf6, 0x5a, 0x34, 0x13,
-	0x75, 0xa8, 0x34, 0xb3, 0x27, 0xf3, 0x03, 0xbf, 0x93, 0x54, 0x75, 0x82, 0x69, 0x1d, 0x58, 0xfd,
-	0xfb, 0xf4, 0xe2, 0x78, 0xc6, 0x28, 0x4d, 0xe1, 0xa9, 0xfc, 0x00, 0x2f, 0x28, 0x55, 0x9d, 0xe0,
-	0x68, 0x34, 0xcf, 0x42, 0x9b, 0x99, 0x9f, 0x42, 0x63, 0x5a, 0xef, 0x7b, 0x11, 0xdf, 0x34, 0x9f,
-	0xb9, 0x0b, 0x21, 0xa5, 0x1f, 0xbe, 0x98, 0xc8, 0xd7, 0xa0, 0x82, 0xf6, 0x26, 0xa7, 0x2d, 0x38,
-	0x75, 0xa0, 0xbd, 0x13, 0x91, 0xce, 0x81, 0x72, 0x78, 0x6e, 0xed, 0xe0, 0x6a, 0x54, 0x8c, 0x1e,
-	0x8e, 0xbb, 0x45, 0x94, 0xbd, 0xad, 0x7e, 0x9e, 0x39, 0x39, 0x10, 0xd0, 0xff, 0x75, 0x0f, 0xa3,
-	0xdc, 0x1d, 0x6b, 0x8d, 0x6e, 0xdd, 0xcb, 0xb0, 0x31, 0xf8, 0x47, 0x25, 0x73, 0x85, 0x33, 0x73,
-	0x0d, 0x9a, 0x8c, 0x9d, 0x7c, 0xef, 0xe5, 0x20, 0xa7, 0x3a, 0x78, 0x05, 0x72, 0xe3, 0x87, 0xda,
-	0x7b, 0x79, 0x98, 0x34, 0x7b, 0x38, 0xbd, 0x7f, 0x0f, 0x85, 0xc4, 0x20, 0xf8, 0x29, 0xdd, 0x5e,
-	0x0e, 0xb2, 0xc9, 0x41, 0xec, 0xd3, 0x83, 0x9b, 0x1c, 0xc4, 0x3e, 0x3d, 0x0c, 0xab, 0x1e, 0x96,
-	0xd1, 0x21, 0xc3, 0xb9, 0xf0, 0x5e, 0x2e, 0x46, 0x54, 0x17, 0x2b, 0xe8, 0xb0, 0xe9, 0xb8, 0x77,
-	0x2f, 0x1f, 0x13, 0x66, 0x2e, 0xe5, 0x39, 0xee, 0x5e, 0x0e, 0x32, 0x7d, 0xe2, 0xd8, 0x27, 0x15,
-	0xf9, 0x7e, 0x71, 0xec, 0xd3, 0x47, 0xd1, 0xfc, 0x85, 0x28, 0x07, 0xaa, 0x7b, 0x79, 0x70, 0x12,
-	0x36, 0x85, 0x3c, 0x2a, 0xdd, 0xcb, 0xc3, 0xa8, 0x99, 0x4b, 0x79, 0x0a, 0xba, 0x97, 0x83, 0x31,
-	0xd5, 0xc1, 0x79, 0x74, 0xc4, 0x78, 0xb8, 0x69, 0x70, 0xf2, 0x2a, 0xd5, 0x49, 0xda, 0x87, 0xb9,
-	0x0a, 0xf4, 0xdd, 0xc8, 0x4b, 0x3a, 0xe2, 0x34, 0xa0, 0xdf, 0xa8, 0xa2, 0x0f, 0xf0, 0x80, 0x57,
-	0x59, 0xc0, 0x6b, 0xd1, 0x94, 0xf9, 0xa8, 0xd3, 0x00, 0xff, 0x23, 0x3a, 0x7c, 0xca, 0x27, 0xbe,
-	0x0a, 0x78, 0x17, 0x4d, 0x27, 0x9c, 0x78, 0x1a, 0xd0, 0xaf, 0xd3, 0xa9, 0xb7, 0x7d, 0x08, 0xac,
-	0xc5, 0x3c, 0x93, 0x7c, 0xda, 0x69, 0x40, 0x7e, 0xa5, 0x1e, 0x77, 0x8a, 0xc7, 0xc2, 0xb1, 0xdd,
-	0xaa, 0x9f, 0x79, 0xaa, 0x98, 0xb9, 0xbd, 0x7a, 0x09, 0x24, 0x4c, 0xe4, 0x38, 0x53, 0xf5, 0x30,
-	0xb9, 0x3f, 0x0f, 0xa7, 0x93, 0x3d, 0x14, 0xf6, 0xd7, 0xcf, 0xf4, 0x33, 0x48, 0xd5, 0x41, 0x76,
-	0xff, 0x41, 0x24, 0x78, 0x70, 0xf7, 0x1f, 0x44, 0x82, 0x87, 0xe1, 0xbd, 0x3c, 0x40, 0x09, 0x8d,
-	0x9e, 0x08, 0xaa, 0x2e, 0x46, 0xf6, 0x19, 0x86, 0x7e, 0xd4, 0xa7, 0x7a, 0x18, 0xdd, 0xcb, 0xc3,
-	0x95, 0x08, 0xc9, 0xbf, 0xc7, 0xad, 0x75, 0x49, 0x15, 0x4d, 0x9d, 0xba, 0xab, 0x53, 0x6f, 0xed,
-	0x6e, 0xb5, 0x5b, 0x83, 0x69, 0x2c, 0xd5, 0xd3, 0x40, 0x5a, 0x69, 0x76, 0x0e, 0x8d, 0x4a, 0xb1,
-	0x3d, 0x8a, 0x40, 0x17, 0x17, 0x87, 0xe8, 0xff, 0xae, 0x04, 0xcb, 0x3f, 0x7a, 0x53, 0xd1, 0x71,
-	0x0f, 0xa2, 0x91, 0x6b, 0xab, 0xcb, 0xc1, 0xab, 0x6f, 0x38, 0x55, 0xcc, 0x5c, 0x36, 0x7a, 0xe0,
-	0x9e, 0x5a, 0xf1, 0xc2, 0x85, 0x0b, 0x17, 0x32, 0xfe, 0x59, 0x34, 0x5d, 0x17, 0x8b, 0x58, 0xd5,
-	0xee, 0x2c, 0xba, 0x16, 0xa2, 0xd3, 0xbb, 0xa7, 0xc6, 0x58, 0x3e, 0x52, 0x8f, 0x52, 0x43, 0xbf,
-	0x22, 0xbf, 0x8e, 0x3c, 0x03, 0x08, 0xfc, 0x41, 0x6e, 0x83, 0xf2, 0x86, 0x1a, 0xcb, 0xd6, 0xa9,
-	0x18, 0x0a, 0xcb, 0x6d, 0x7f, 0x13, 0x1d, 0x35, 0xc0, 0xec, 0xda, 0xe3, 0xbc, 0xb1, 0xc6, 0x72,
-	0x7a, 0x3a, 0x86, 0x03, 0x25, 0x20, 0x01, 0xa8, 0x6b, 0x0f, 0xf4, 0xa6, 0x1a, 0x4b, 0xfd, 0x38,
-	0x10, 0x54, 0x8a, 0x64, 0xe2, 0x08, 0xb6, 0xc2, 0x79, 0x73, 0x8d, 0x55, 0x08, 0x23, 0x71, 0x04,
-	0xf7, 0x21, 0xce, 0x12, 0xe7, 0x2d, 0x35, 0x56, 0x47, 0xcc, 0xc4, 0x25, 0x02, 0x75, 0xed, 0x81,
-	0xde, 0x5a, 0x63, 0xe5, 0xc6, 0x4c, 0x1c, 0xc1, 0xfe, 0x16, 0x9a, 0x31, 0x00, 0x89, 0x93, 0x0b,
-	0x1b, 0xa4, 0xb7, 0xd5, 0x58, 0x55, 0xf2, 0x62, 0x48, 0xbc, 0x8a, 0xf9, 0xb7, 0xa1, 0x8b, 0x4c,
-	0xe4, 0xa5, 0xc1, 0x7a, 0x7b, 0x8d, 0x89, 0xd6, 0xa3, 0x71, 0xfa, 0xb8, 0xb7, 0x84, 0x0d, 0xb1,
-	0x01, 0xaf, 0xf6, 0x59, 0x20, 0xbd, 0xa3, 0xc6, 0xd4, 0x6d, 0x7c, 0x43, 0x30, 0x6d, 0xdc, 0x8f,
-	0x3e, 0xcb, 0x2f, 0xea, 0x9d, 0x35, 0xa6, 0x81, 0x13, 0xe8, 0x23, 0xb8, 0x2f, 0x7d, 0x96, 0x58,
-	0xef, 0xaa, 0x31, 0xad, 0x9c, 0x44, 0x5f, 0xe2, 0xfe, 0x83, 0xc3, 0x1e, 0x2b, 0xa8, 0x5e, 0x8d,
-	0x89, 0xea, 0xf8, 0xfe, 0x03, 0x4d, 0x9e, 0x94, 0x51, 0x70, 0xb8, 0x63, 0x03, 0xf4, 0xee, 0x1a,
-	0xeb, 0x02, 0x86, 0x8c, 0x82, 0x13, 0x5f, 0xf3, 0x86, 0x60, 0x67, 0x45, 0x56, 0x38, 0xef, 0xa9,
-	0x31, 0x89, 0x1e, 0xdf, 0x10, 0x4c, 0xe0, 0xfb, 0x0f, 0x38, 0xe8, 0x12, 0x03, 0x8e, 0x3c, 0x42,
-	0xb2, 0x02, 0x7b, 0x6f, 0x6d, 0x00, 0x29, 0x3f, 0x13, 0x5b, 0x62, 0xf8, 0x99, 0xff, 0xb8, 0x83,
-	0x4a, 0x89, 0xcb, 0xe4, 0x8f, 0x07, 0xac, 0x56, 0x7a, 0x6f, 0x6d, 0x30, 0xd9, 0x7f, 0x89, 0x79,
-	0xb1, 0xfc, 0x63, 0xff, 0x61, 0x07, 0x7d, 0x9f, 0x61, 0xbd, 0xca, 0x73, 0x19, 0xab, 0xd5, 0xbe,
-	0xaf, 0x36, 0xc8, 0x5f, 0x09, 0x17, 0xc5, 0xd6, 0x2a, 0x3f, 0xf4, 0xef, 0x73, 0xd0, 0xa5, 0xc6,
-	0x1e, 0x21, 0x8f, 0xf1, 0xac, 0x96, 0x7a, 0x5f, 0x2d, 0xd5, 0x9f, 0x14, 0x17, 0x1b, 0x3a, 0x4b,
-	0xf8, 0xa9, 0xff, 0xa8, 0x83, 0x66, 0xfb, 0x2c, 0x32, 0xcd, 0x06, 0xb8, 0xbf, 0x96, 0xf6, 0x0f,
-	0x90, 0x4b, 0x93, 0x96, 0x2a, 0xbe, 0xfc, 0x87, 0x1c, 0x24, 0xd3, 0x4d, 0xbf, 0x69, 0x6d, 0xb3,
-	0xc2, 0x07, 0x6a, 0xec, 0x71, 0x94, 0xcd, 0x9b, 0x36, 0x66, 0x01, 0x1b, 0x24, 0xac, 0xc6, 0x6f,
-	0xa8, 0x35, 0x46, 0x7f, 0x60, 0x64, 0x97, 0x4c, 0x3d, 0xf5, 0xba, 0xb8, 0x44, 0xd3, 0x9e, 0x2f,
-	0xf9, 0xdb, 0x6a, 0xe9, 0x8c, 0x3c, 0x63, 0xb2, 0xcb, 0x86, 0x9e, 0x7e, 0xdd, 0x7c, 0x3a, 0x0e,
-	0x08, 0xba, 0xf1, 0x76, 0xb5, 0xdb, 0x45, 0x1f, 0x4b, 0xd9, 0xed, 0xea, 0x9e, 0x76, 0x5d, 0xdd,
-	0x8b, 0x23, 0x72, 0x05, 0xb9, 0x6d, 0x86, 0x4c, 0x21, 0x21, 0xef, 0xef, 0xa9, 0xd7, 0xdd, 0x0d,
-	0x88, 0x5c, 0x4a, 0x76, 0x12, 0x69, 0xb5, 0xec, 0xb2, 0x0f, 0xf4, 0xe2, 0xd7, 0xe5, 0xcd, 0xd4,
-	0x12, 0xdc, 0x8f, 0x5a, 0x4b, 0xd8, 0x07, 0x7b, 0xda, 0x75, 0xfb, 0x04, 0x6a, 0x09, 0xee, 0x47,
-	0xad, 0x25, 0xe4, 0x43, 0x3d, 0xf5, 0xba, 0x7e, 0x02, 0xb5, 0x04, 0xfb, 0x1d, 0x55, 0xc2, 0xc4,
-	0x9e, 0xca, 0x59, 0x41, 0x3e, 0xdc, 0xd3, 0xaf, 0xfb, 0x1f, 0x8d, 0x83, 0x0a, 0xdd, 0x79, 0x27,
-	0xba, 0xd8, 0x48, 0x6d, 0x1a, 0xd8, 0x47, 0x7a, 0x91, 0x9f, 0x0b, 0x98, 0x31, 0xd0, 0x2b, 0x34,
-	0xe8, 0xed, 0xe6, 0x9d, 0x64, 0x2f, 0x42, 0xdf, 0xdf, 0x8b, 0xfc, 0xdc, 0x80, 0x61, 0x1b, 0x81,
-	0x1e, 0xed, 0xc7, 0xb0, 0xe5, 0x97, 0xfa, 0x81, 0x9e, 0xfe, 0x73, 0x05, 0x49, 0x0c, 0x13, 0xdc,
-	0x9f, 0x61, 0x4b, 0xd8, 0x47, 0x7b, 0x91, 0x9f, 0x3b, 0x48, 0x64, 0x98, 0x60, 0xff, 0xbc, 0x79,
-	0x0b, 0xa7, 0xd0, 0xa9, 0x8f, 0xf5, 0x8c, 0x3f, 0x97, 0x60, 0xd8, 0xcb, 0x5c, 0xb8, 0xbe, 0x2e,
-	0x21, 0x61, 0xed, 0x95, 0xeb, 0xe3, 0xbd, 0xa4, 0x9f, 0x5b, 0x30, 0xe5, 0x2e, 0xa8, 0xd9, 0xd7,
-	0x3b, 0xe6, 0xbd, 0x65, 0xaf, 0x67, 0x9f, 0xe8, 0xed, 0xf5, 0x7b, 0x0d, 0x86, 0xcd, 0x06, 0x5a,
-	0xf7, 0x09, 0x4d, 0x94, 0x99, 0x9e, 0x97, 0x5a, 0xad, 0xe4, 0xc9, 0xde, 0xf7, 0xe0, 0x07, 0x1f,
-	0x2e, 0x8a, 0x2f, 0x56, 0xaa, 0xde, 0xc7, 0x34, 0xd5, 0x6b, 0x7e, 0xc6, 0x6a, 0xb5, 0xe4, 0xa7,
-	0x7a, 0x03, 0xfd, 0x62, 0xc4, 0x25, 0xa6, 0xda, 0x2c, 0x55, 0xda, 0xba, 0x7a, 0xe4, 0xa4, 0x5d,
-	0x16, 0xb4, 0x5b, 0xe4, 0x77, 0x1d, 0x76, 0xb3, 0x50, 0x9e, 0x39, 0x05, 0xca, 0x15, 0x43, 0x7f,
-	0x43, 0x15, 0x2d, 0xfa, 0x65, 0x43, 0x2b, 0x98, 0x0f, 0x32, 0x18, 0xf5, 0xd0, 0x29, 0x50, 0xaf,
-	0x28, 0xfa, 0xe7, 0xd4, 0x1d, 0x1b, 0xb9, 0xac, 0x68, 0x05, 0xf4, 0x21, 0x06, 0xa4, 0x9e, 0x3a,
-	0x05, 0xda, 0x15, 0xc7, 0x04, 0xa4, 0x14, 0x92, 0xe1, 0xc3, 0x0c, 0xa9, 0x60, 0x40, 0xe2, 0x5a,
-	0x21, 0x91, 0x3b, 0xcb, 0xa2, 0xf7, 0x11, 0x06, 0x94, 0x35, 0x73, 0x47, 0x70, 0x1f, 0xee, 0x2c,
-	0x81, 0x3e, 0xca, 0x80, 0xdc, 0x04, 0xee, 0x12, 0x91, 0x52, 0x68, 0x82, 0x8f, 0x31, 0xa4, 0xe1,
-	0x04, 0xee, 0x08, 0xf6, 0x6f, 0x55, 0x0b, 0x68, 0xf4, 0xb2, 0xa7, 0x15, 0xd4, 0xc7, 0x19, 0x94,
-	0x7a, 0xf4, 0x14, 0xe8, 0x57, 0x44, 0xfd, 0x86, 0xda, 0x16, 0x63, 0x97, 0x45, 0xad, 0xc0, 0x3e,
-	0xc1, 0xc0, 0xd4, 0xb3, 0xa7, 0x20, 0x72, 0xc5, 0x34, 0x61, 0x57, 0xd8, 0xb7, 0xfd, 0x4f, 0x32,
-	0xa8, 0x8c, 0x61, 0x57, 0x40, 0xb3, 0xef, 0xc3, 0xa0, 0xe5, 0x97, 0xf5, 0x29, 0x86, 0x94, 0x4f,
-	0x62, 0x90, 0xe0, 0xbe, 0x0c, 0x5a, 0x82, 0x7d, 0x9a, 0x81, 0x15, 0x13, 0x19, 0x4c, 0xdc, 0x85,
-	0x29, 0xda, 0xfa, 0xd3, 0x0c, 0xcb, 0x31, 0xec, 0x42, 0xde, 0xc6, 0x13, 0x32, 0xcb, 0xbe, 0x8b,
-	0x3f, 0xc3, 0x90, 0x46, 0x4d, 0x99, 0x05, 0x2d, 0xdb, 0xbc, 0x2b, 0xec, 0x1b, 0xf6, 0xb3, 0x0c,
-	0x68, 0xcc, 0xb0, 0x2b, 0xa0, 0x2b, 0x3f, 0xa8, 0x9d, 0x40, 0x19, 0x6e, 0xfb, 0x5a, 0xa1, 0x3d,
-	0xc7, 0xd0, 0x06, 0x3f, 0x82, 0x0a, 0xa2, 0x77, 0x84, 0xa9, 0x7a, 0x28, 0x25, 0xae, 0x33, 0xcd,
-	0x09, 0xc4, 0xf3, 0x6c, 0xa9, 0xdf, 0x93, 0x33, 0xa8, 0xc0, 0x70, 0xc9, 0xd8, 0x7f, 0x44, 0x93,
-	0x3b, 0xa6, 0xfb, 0xc6, 0x56, 0xcb, 0xfd, 0x0c, 0x5f, 0xee, 0xc0, 0x87, 0x50, 0x41, 0xec, 0x96,
-	0xb2, 0x7f, 0xbf, 0x76, 0x08, 0x65, 0xbc, 0xb0, 0x6c, 0xb5, 0xd6, 0xcf, 0xf2, 0x5d, 0x90, 0xfe,
-	0x14, 0x2a, 0x88, 0x5f, 0x73, 0xa6, 0x72, 0x6c, 0xb6, 0xcf, 0x2a, 0xd3, 0xec, 0x81, 0xcf, 0x71,
-	0x52, 0x07, 0x3a, 0x86, 0x0a, 0x8c, 0xf7, 0xa4, 0xfd, 0x87, 0xd5, 0x63, 0x28, 0xfd, 0x86, 0xb3,
-	0xcd, 0x12, 0x3f, 0xcf, 0x96, 0x98, 0xf2, 0x1c, 0x4a, 0xbf, 0x67, 0x9d, 0xb0, 0x9c, 0x95, 0x82,
-	0x78, 0x55, 0xbf, 0xdb, 0xda, 0x6a, 0xb7, 0x56, 0xa6, 0xe3, 0xef, 0x48, 0xb2, 0x0f, 0x2e, 0x5b,
-	0x40, 0x07, 0xd5, 0xf7, 0xc4, 0x4d, 0x0f, 0x44, 0x91, 0x3b, 0x26, 0x1f, 0x88, 0xbe, 0xe0, 0xac,
-	0xbc, 0xe6, 0xc7, 0x6b, 0xb1, 0x65, 0x1f, 0x67, 0xcb, 0x3e, 0xd3, 0xdd, 0x38, 0xbe, 0xd5, 0xea,
-	0xd4, 0x77, 0x5a, 0x6b, 0x0d, 0xf6, 0x3b, 0xb7, 0x6c, 0x74, 0xf7, 0x78, 0xa3, 0xbe, 0xb9, 0x76,
-	0xf6, 0xfc, 0xf1, 0xa4, 0x9f, 0xc4, 0xfd, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x51, 0x2c, 0x45,
-	0xc2, 0x2d, 0x57, 0x00, 0x00,
-}
diff --git a/internal/testprotos/legacy/proto2_20190205_c823c79e/test.proto b/internal/testprotos/legacy/proto2_20190205_c823c79e/test.proto
deleted file mode 100644
index 4ac2f74..0000000
--- a/internal/testprotos/legacy/proto2_20190205_c823c79e/test.proto
+++ /dev/null
@@ -1,333 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package google.golang.org.proto2_20190205;
-option go_package = "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20190205_c823c79e";
-
-enum SiblingEnum {
-	ALPHA   = 0;
-	BRAVO   = 10;
-	CHARLIE = 200;
-}
-
-message SiblingMessage {
-	optional string  f1 = 1;
-	required string  f2 = 2;
-	repeated string  f3 = 3;
-	optional Message f4 = 4;
-}
-
-message Message {
-	enum ChildEnum {
-		ALPHA   = 0;
-		BRAVO   = 1;
-		CHARLIE = 2;
-	}
-	message ChildMessage {
-		optional string  f1 = 1;
-		required string  f2 = 2;
-		repeated string  f3 = 3;
-	    optional Message f4 = 4;
-	}
-	optional group NamedGroup = 1 {
-		optional string  f1 = 1;
-		required string  f2 = 2;
-		repeated string  f3 = 3;
-	    optional Message f4 = 4;
-	}
-
-	// Optional fields.
-	optional bool     optional_bool     = 100;
-	optional int32    optional_int32    = 101;
-	optional sint32   optional_sint32   = 102;
-	optional uint32   optional_uint32   = 103;
-	optional int64    optional_int64    = 104;
-	optional sint64   optional_sint64   = 105;
-	optional uint64   optional_uint64   = 106;
-	optional fixed32  optional_fixed32  = 107;
-	optional sfixed32 optional_sfixed32 = 108;
-	optional float    optional_float    = 109;
-	optional fixed64  optional_fixed64  = 110;
-	optional sfixed64 optional_sfixed64 = 111;
-	optional double   optional_double   = 112;
-	optional string   optional_string   = 113;
-	optional bytes    optional_bytes    = 114;
-
-	optional ChildEnum      optional_child_enum      = 115;
-	optional ChildMessage   optional_child_message   = 116;
-	optional NamedGroup     optional_named_group     = 117;
-	optional SiblingEnum    optional_sibling_enum    = 118;
-	optional SiblingMessage optional_sibling_message = 119;
-	optional group OptionalGroup = 120 {
-		optional string f1 = 1;
-		required string f2 = 2;
-		repeated string f3 = 3;
-	}
-
-	// Optional default fields.
-	optional bool      defaulted_bool     = 200 [default = true];
-	optional int32     defaulted_int32    = 201 [default = -12345];
-	optional sint32    defaulted_sint32   = 202 [default = -3200];
-	optional uint32    defaulted_uint32   = 203 [default = 3200];
-	optional int64     defaulted_int64    = 204 [default = -123456789];
-	optional sint64    defaulted_sint64   = 205 [default = -6400];
-	optional uint64    defaulted_uint64   = 206 [default = 6400];
-	optional fixed32   defaulted_fixed32  = 207 [default = 320000];
-	optional sfixed32  defaulted_sfixed32 = 208 [default = -320000];
-	optional float     defaulted_float    = 209 [default = 3.14159];
-	optional fixed64   defaulted_fixed64  = 210 [default = 640000];
-	optional sfixed64  defaulted_sfixed64 = 211 [default = -640000];
-	optional double    defaulted_double   = 212 [default = 3.14159265359];
-	optional string    defaulted_string   = 213 [default = "hello, \"world!\"\n"];
-	optional bytes     defaulted_bytes    = 214 [default = "dead\xde\xad\xbe\xefbeef"];
-
-	optional ChildEnum   defaulted_child_enum   = 215 [default = ALPHA];
-	optional SiblingEnum defaulted_sibling_enum = 216 [default = ALPHA];
-
-	// Required fields.
-	required bool     required_bool     = 300;
-	required int32    required_int32    = 301;
-	required sint32   required_sint32   = 302;
-	required uint32   required_uint32   = 303;
-	required int64    required_int64    = 304;
-	required sint64   required_sint64   = 305;
-	required uint64   required_uint64   = 306;
-	required fixed32  required_fixed32  = 307;
-	required sfixed32 required_sfixed32 = 308;
-	required float    required_float    = 309;
-	required fixed64  required_fixed64  = 310;
-	required sfixed64 required_sfixed64 = 311;
-	required double   required_double   = 312;
-	required string   required_string   = 313;
-	required bytes    required_bytes    = 314;
-
-	required ChildEnum      required_child_enum      = 315;
-	required ChildMessage   required_child_message   = 316;
-	required NamedGroup     required_named_group     = 317;
-	required SiblingEnum    required_sibling_enum    = 318;
-	required SiblingMessage required_sibling_message = 319;
-	required group RequiredGroup = 320 {
-		optional string f1 = 1;
-		required string f2 = 2;
-		repeated string f3 = 3;
-	}
-	// Required default fields.
-	required bool      required_defaulted_bool     = 400 [default = true];
-	required int32     required_defaulted_int32    = 401 [default = -12345];
-	required sint32    required_defaulted_sint32   = 402 [default = -3200];
-	required uint32    required_defaulted_uint32   = 403 [default = 3200];
-	required int64     required_defaulted_int64    = 404 [default = -123456789];
-	required sint64    required_defaulted_sint64   = 405 [default = -6400];
-	required uint64    required_defaulted_uint64   = 406 [default = 6400];
-	required fixed32   required_defaulted_fixed32  = 407 [default = 320000];
-	required sfixed32  required_defaulted_sfixed32 = 408 [default = -320000];
-	required float     required_defaulted_float    = 409 [default = 3.14159];
-	required fixed64   required_defaulted_fixed64  = 410 [default = 640000];
-	required sfixed64  required_defaulted_sfixed64 = 411 [default = -640000];
-	required double    required_defaulted_double   = 412 [default = 3.14159265359];
-	required string    required_defaulted_string   = 413 [default = "hello, \"world!\"\n"];
-	required bytes     required_defaulted_bytes    = 414 [default = "dead\xde\xad\xbe\xefbeef"];
-
-	required ChildEnum   required_defaulted_child_enum   = 415 [default = ALPHA];
-	required SiblingEnum required_defaulted_sibling_enum = 416 [default = ALPHA];
-
-	// Repeated fields.
-	repeated bool     repeated_bool     = 500;
-	repeated int32    repeated_int32    = 501;
-	repeated sint32   repeated_sint32   = 502;
-	repeated uint32   repeated_uint32   = 503;
-	repeated int64    repeated_int64    = 504;
-	repeated sint64   repeated_sint64   = 505;
-	repeated uint64   repeated_uint64   = 506;
-	repeated fixed32  repeated_fixed32  = 507;
-	repeated sfixed32 repeated_sfixed32 = 508;
-	repeated float    repeated_float    = 509;
-	repeated fixed64  repeated_fixed64  = 510;
-	repeated sfixed64 repeated_sfixed64 = 511;
-	repeated double   repeated_double   = 512;
-	repeated string   repeated_string   = 513;
-	repeated bytes    repeated_bytes    = 514;
-
-	repeated ChildEnum      repeated_child_enum      = 515;
-	repeated ChildMessage   repeated_child_message   = 516;
-	repeated NamedGroup     repeated_named_group     = 517;
-	repeated SiblingEnum    repeated_sibling_enum    = 518;
-	repeated SiblingMessage repeated_sibling_message = 519;
-	repeated group RepeatedGroup = 520 {
-		optional string f1 = 1;
-		required string f2 = 2;
-		repeated string f3 = 3;
-	}
-
-	// Map fields.
-	map<bool, bool>     map_bool_bool     = 600;
-	map<bool, int32>    map_bool_int32    = 601;
-	map<bool, sint32>   map_bool_sint32   = 602;
-	map<bool, uint32>   map_bool_uint32   = 603;
-	map<bool, int64>    map_bool_int64    = 604;
-	map<bool, sint64>   map_bool_sint64   = 605;
-	map<bool, uint64>   map_bool_uint64   = 606;
-	map<bool, fixed32>  map_bool_fixed32  = 607;
-	map<bool, sfixed32> map_bool_sfixed32 = 608;
-	map<bool, float>    map_bool_float    = 609;
-	map<bool, fixed64>  map_bool_fixed64  = 610;
-	map<bool, sfixed64> map_bool_sfixed64 = 611;
-	map<bool, double>   map_bool_double   = 612;
-	map<bool, string>   map_bool_string   = 613;
-	map<bool, bytes>    map_bool_bytes    = 614;
-
-	map<bool, ChildEnum>      map_bool_child_enum      = 615;
-	map<bool, ChildMessage>   map_bool_child_message   = 616;
-	map<bool, NamedGroup>     map_bool_named_group     = 617;
-	map<bool, SiblingEnum>    map_bool_sibling_enum    = 618;
-	map<bool, SiblingMessage> map_bool_sibling_message = 619;
-
-	map<int32, bool>   map_int32_bool   = 620;
-	map<sint32, bool>  map_sint32_bool  = 621;
-	map<uint32, bool>  map_uint32_bool  = 622;
-	map<int64, bool>   map_int64_bool   = 623;
-	map<sint64, bool>  map_sint64_bool  = 624;
-	map<uint64, bool>  map_uint64_bool  = 625;
-	map<fixed32, bool> map_fixed32_bool = 626;
-	map<string, bool>  map_string_bool  = 627;
-
-	// Oneof fields.
-	oneof oneof_union {
-		bool     oneof_bool     = 700;
-		int32    oneof_int32    = 701;
-		sint32   oneof_sint32   = 702;
-		uint32   oneof_uint32   = 703;
-		int64    oneof_int64    = 704;
-		sint64   oneof_sint64   = 705;
-		uint64   oneof_uint64   = 706;
-		fixed32  oneof_fixed32  = 707;
-		sfixed32 oneof_sfixed32 = 708;
-		float    oneof_float    = 709;
-		fixed64  oneof_fixed64  = 710;
-		sfixed64 oneof_sfixed64 = 711;
-		double   oneof_double   = 712;
-		string   oneof_string   = 713;
-		bytes    oneof_bytes    = 714;
-
-		ChildEnum      oneof_child_enum      = 715;
-		ChildMessage   oneof_child_message   = 716;
-		NamedGroup     oneof_named_group     = 717;
-		SiblingEnum    oneof_sibling_enum    = 718;
-		SiblingMessage oneof_sibling_message = 719;
-		group OneofGroup = 720 {
-			optional string f1 = 1;
-			required string f2 = 2;
-			repeated string f3 = 3;
-		}
-
-		string oneof_string1 = 721;
-		string oneof_string2 = 722;
-		string oneof_string3 = 723;
-	}
-
-	// Oneof default fields.
-	oneof oneof_defaulted_union {
-		bool      oneof_defaulted_bool     = 800 [default = true];
-		int32     oneof_defaulted_int32    = 801 [default = -12345];
-		sint32    oneof_defaulted_sint32   = 802 [default = -3200];
-		uint32    oneof_defaulted_uint32   = 803 [default = 3200];
-		int64     oneof_defaulted_int64    = 804 [default = -123456789];
-		sint64    oneof_defaulted_sint64   = 805 [default = -6400];
-		uint64    oneof_defaulted_uint64   = 806 [default = 6400];
-		fixed32   oneof_defaulted_fixed32  = 807 [default = 320000];
-		sfixed32  oneof_defaulted_sfixed32 = 808 [default = -320000];
-		float     oneof_defaulted_float    = 809 [default = 3.14159];
-		fixed64   oneof_defaulted_fixed64  = 810 [default = 640000];
-		sfixed64  oneof_defaulted_sfixed64 = 811 [default = -640000];
-		double    oneof_defaulted_double   = 812 [default = 3.14159265359];
-		string    oneof_defaulted_string   = 813 [default = "hello, \"world!\"\n"];
-		bytes     oneof_defaulted_bytes    = 814 [default = "dead\xde\xad\xbe\xefbeef"];
-
-		ChildEnum   oneof_defaulted_child_enum   = 815 [default = ALPHA];
-		SiblingEnum oneof_defaulted_sibling_enum = 816 [default = ALPHA];
-	}
-
-	// Extension fields.
-	extend Message {
-		// Optional fields.
-		optional bool     extension_optional_bool     = 10000;
-		optional int32    extension_optional_int32    = 10001;
-		optional sint32   extension_optional_sint32   = 10002;
-		optional uint32   extension_optional_uint32   = 10003;
-		optional int64    extension_optional_int64    = 10004;
-		optional sint64   extension_optional_sint64   = 10005;
-		optional uint64   extension_optional_uint64   = 10006;
-		optional fixed32  extension_optional_fixed32  = 10007;
-		optional sfixed32 extension_optional_sfixed32 = 10008;
-		optional float    extension_optional_float    = 10009;
-		optional fixed64  extension_optional_fixed64  = 10010;
-		optional sfixed64 extension_optional_sfixed64 = 10011;
-		optional double   extension_optional_double   = 10012;
-		optional string   extension_optional_string   = 10013;
-		optional bytes    extension_optional_bytes    = 10014;
-
-		optional ChildEnum      extension_optional_child_enum      = 10015;
-		optional ChildMessage   extension_optional_child_message   = 10016;
-		optional NamedGroup     extension_optional_named_group     = 10017;
-		optional SiblingEnum    extension_optional_sibling_enum    = 10018;
-		optional SiblingMessage extension_optional_sibling_message = 10019;
-		optional group ExtensionOptionalGroup = 10020 {
-			optional string f1 = 1;
-			required string f2 = 2;
-			repeated string f3 = 3;
-		}
-
-		// Optional default fields.
-		optional bool      extension_defaulted_bool     = 20000 [default = true];
-		optional int32     extension_defaulted_int32    = 20001 [default = -12345];
-		optional sint32    extension_defaulted_sint32   = 20002 [default = -3200];
-		optional uint32    extension_defaulted_uint32   = 20003 [default = 3200];
-		optional int64     extension_defaulted_int64    = 20004 [default = -123456789];
-		optional sint64    extension_defaulted_sint64   = 20005 [default = -6400];
-		optional uint64    extension_defaulted_uint64   = 20006 [default = 6400];
-		optional fixed32   extension_defaulted_fixed32  = 20007 [default = 320000];
-		optional sfixed32  extension_defaulted_sfixed32 = 20008 [default = -320000];
-		optional float     extension_defaulted_float    = 20009 [default = 3.14159];
-		optional fixed64   extension_defaulted_fixed64  = 20010 [default = 640000];
-		optional sfixed64  extension_defaulted_sfixed64 = 20011 [default = -640000];
-		optional double    extension_defaulted_double   = 20012 [default = 3.14159265359];
-		optional string    extension_defaulted_string   = 20013 [default = "hello, \"world!\"\n"];
-		optional bytes     extension_defaulted_bytes    = 20014 [default = "dead\xde\xad\xbe\xefbeef"];
-
-		optional ChildEnum   extension_defaulted_child_enum   = 20015 [default = ALPHA];
-		optional SiblingEnum extension_defaulted_sibling_enum = 20016 [default = ALPHA];
-
-		// Repeated fields.
-		repeated bool     extension_repeated_bool     = 30000;
-		repeated int32    extension_repeated_int32    = 30001;
-		repeated sint32   extension_repeated_sint32   = 30002;
-		repeated uint32   extension_repeated_uint32   = 30003;
-		repeated int64    extension_repeated_int64    = 30004;
-		repeated sint64   extension_repeated_sint64   = 30005;
-		repeated uint64   extension_repeated_uint64   = 30006;
-		repeated fixed32  extension_repeated_fixed32  = 30007;
-		repeated sfixed32 extension_repeated_sfixed32 = 30008;
-		repeated float    extension_repeated_float    = 30009;
-		repeated fixed64  extension_repeated_fixed64  = 30010;
-		repeated sfixed64 extension_repeated_sfixed64 = 30011;
-		repeated double   extension_repeated_double   = 30012;
-		repeated string   extension_repeated_string   = 30013;
-		repeated bytes    extension_repeated_bytes    = 30014;
-
-		repeated ChildEnum      extension_repeated_child_enum      = 30015;
-		repeated ChildMessage   extension_repeated_child_message   = 30016;
-		repeated NamedGroup     extension_repeated_named_group     = 30017;
-		repeated SiblingEnum    extension_repeated_sibling_enum    = 30018;
-		repeated SiblingMessage extension_repeated_sibling_message = 30019;
-		repeated group ExtensionRepeatedGroup = 30020 {
-			optional string f1 = 1;
-			required string f2 = 2;
-			repeated string f3 = 3;
-		}
-	}
-
-	extensions 10000 to max;
-}
diff --git a/internal/testprotos/legacy/proto3_20160225_2fc053c5/test.pb.go b/internal/testprotos/legacy/proto3_20160225_2fc053c5/test.pb.go
deleted file mode 100644
index abae7ff..0000000
--- a/internal/testprotos/legacy/proto3_20160225_2fc053c5/test.pb.go
+++ /dev/null
@@ -1,1185 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go.
-// source: proto3_20160225_2fc053c5/test.proto
-// DO NOT EDIT!
-
-/*
-Package proto3_20160225_2fc053c5 is a generated protocol buffer package.
-
-It is generated from these files:
-	proto3_20160225_2fc053c5/test.proto
-
-It has these top-level messages:
-	SiblingMessage
-	Message
-*/
-package proto3_20160225_2fc053c5
-
-import proto "google.golang.org/protobuf/internal/protolegacy"
-import fmt "fmt"
-import 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.
-const _ = proto.ProtoPackageIsVersion1
-
-type SiblingEnum int32
-
-const (
-	SiblingEnum_ALPHA   SiblingEnum = 0
-	SiblingEnum_BRAVO   SiblingEnum = 10
-	SiblingEnum_CHARLIE SiblingEnum = 200
-)
-
-var SiblingEnum_name = map[int32]string{
-	0:   "ALPHA",
-	10:  "BRAVO",
-	200: "CHARLIE",
-}
-var SiblingEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   10,
-	"CHARLIE": 200,
-}
-
-func (x SiblingEnum) String() string {
-	return proto.EnumName(SiblingEnum_name, int32(x))
-}
-func (SiblingEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
-
-type Message_ChildEnum int32
-
-const (
-	Message_ALPHA   Message_ChildEnum = 0
-	Message_BRAVO   Message_ChildEnum = 1
-	Message_CHARLIE Message_ChildEnum = 2
-)
-
-var Message_ChildEnum_name = map[int32]string{
-	0: "ALPHA",
-	1: "BRAVO",
-	2: "CHARLIE",
-}
-var Message_ChildEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   1,
-	"CHARLIE": 2,
-}
-
-func (x Message_ChildEnum) String() string {
-	return proto.EnumName(Message_ChildEnum_name, int32(x))
-}
-func (Message_ChildEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
-
-type SiblingMessage struct {
-	F1 string   `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2 []string `protobuf:"bytes,2,rep,name=f2" json:"f2,omitempty"`
-	F3 *Message `protobuf:"bytes,3,opt,name=f3" json:"f3,omitempty"`
-}
-
-func (m *SiblingMessage) Reset()                    { *m = SiblingMessage{} }
-func (m *SiblingMessage) String() string            { return proto.CompactTextString(m) }
-func (*SiblingMessage) ProtoMessage()               {}
-func (*SiblingMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
-
-func (m *SiblingMessage) GetF3() *Message {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message struct {
-	// Optional fields.
-	OptionalBool           bool                  `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
-	OptionalInt32          int32                 `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
-	OptionalSint32         int32                 `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
-	OptionalUint32         uint32                `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
-	OptionalInt64          int64                 `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
-	OptionalSint64         int64                 `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
-	OptionalUint64         uint64                `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
-	OptionalFixed32        uint32                `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
-	OptionalSfixed32       int32                 `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
-	OptionalFloat          float32               `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
-	OptionalFixed64        uint64                `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
-	OptionalSfixed64       int64                 `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
-	OptionalDouble         float64               `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
-	OptionalString         string                `protobuf:"bytes,113,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
-	OptionalBytes          []byte                `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes,proto3" json:"optional_bytes,omitempty"`
-	OptionalChildEnum      Message_ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,enum=google.golang.org.proto3_20160225.Message_ChildEnum" json:"optional_child_enum,omitempty"`
-	OptionalChildMessage   *Message_ChildMessage `protobuf:"bytes,116,opt,name=optional_child_message,json=optionalChildMessage" json:"optional_child_message,omitempty"`
-	OptionalSiblingEnum    SiblingEnum           `protobuf:"varint,117,opt,name=optional_sibling_enum,json=optionalSiblingEnum,enum=google.golang.org.proto3_20160225.SiblingEnum" json:"optional_sibling_enum,omitempty"`
-	OptionalSiblingMessage *SiblingMessage       `protobuf:"bytes,118,opt,name=optional_sibling_message,json=optionalSiblingMessage" json:"optional_sibling_message,omitempty"`
-	// Repeated fields.
-	RepeatedBool           []bool                  `protobuf:"varint,200,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
-	RepeatedInt32          []int32                 `protobuf:"varint,201,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
-	RepeatedSint32         []int32                 `protobuf:"zigzag32,202,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
-	RepeatedUint32         []uint32                `protobuf:"varint,203,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
-	RepeatedInt64          []int64                 `protobuf:"varint,204,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
-	RepeatedSint64         []int64                 `protobuf:"zigzag64,205,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
-	RepeatedUint64         []uint64                `protobuf:"varint,206,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
-	RepeatedFixed32        []uint32                `protobuf:"fixed32,207,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
-	RepeatedSfixed32       []int32                 `protobuf:"fixed32,208,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
-	RepeatedFloat          []float32               `protobuf:"fixed32,209,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
-	RepeatedFixed64        []uint64                `protobuf:"fixed64,210,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
-	RepeatedSfixed64       []int64                 `protobuf:"fixed64,211,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
-	RepeatedDouble         []float64               `protobuf:"fixed64,212,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
-	RepeatedString         []string                `protobuf:"bytes,213,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
-	RepeatedBytes          [][]byte                `protobuf:"bytes,214,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"`
-	RepeatedChildEnum      []Message_ChildEnum     `protobuf:"varint,215,rep,name=repeated_child_enum,json=repeatedChildEnum,enum=google.golang.org.proto3_20160225.Message_ChildEnum" json:"repeated_child_enum,omitempty"`
-	RepeatedChildMessage   []*Message_ChildMessage `protobuf:"bytes,216,rep,name=repeated_child_message,json=repeatedChildMessage" json:"repeated_child_message,omitempty"`
-	RepeatedSiblingEnum    []SiblingEnum           `protobuf:"varint,217,rep,name=repeated_sibling_enum,json=repeatedSiblingEnum,enum=google.golang.org.proto3_20160225.SiblingEnum" json:"repeated_sibling_enum,omitempty"`
-	RepeatedSiblingMessage []*SiblingMessage       `protobuf:"bytes,218,rep,name=repeated_sibling_message,json=repeatedSiblingMessage" json:"repeated_sibling_message,omitempty"`
-	// Map fields.
-	MapBoolBool           map[bool]bool                  `protobuf:"bytes,300,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolInt32          map[bool]int32                 `protobuf:"bytes,301,rep,name=map_bool_int32,json=mapBoolInt32" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolSint32         map[bool]int32                 `protobuf:"bytes,302,rep,name=map_bool_sint32,json=mapBoolSint32" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
-	MapBoolUint32         map[bool]uint32                `protobuf:"bytes,303,rep,name=map_bool_uint32,json=mapBoolUint32" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolInt64          map[bool]int64                 `protobuf:"bytes,304,rep,name=map_bool_int64,json=mapBoolInt64" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolSint64         map[bool]int64                 `protobuf:"bytes,305,rep,name=map_bool_sint64,json=mapBoolSint64" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
-	MapBoolUint64         map[bool]uint64                `protobuf:"bytes,306,rep,name=map_bool_uint64,json=mapBoolUint64" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolFixed32        map[bool]uint32                `protobuf:"bytes,307,rep,name=map_bool_fixed32,json=mapBoolFixed32" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolSfixed32       map[bool]int32                 `protobuf:"bytes,308,rep,name=map_bool_sfixed32,json=mapBoolSfixed32" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolFloat          map[bool]float32               `protobuf:"bytes,309,rep,name=map_bool_float,json=mapBoolFloat" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolFixed64        map[bool]uint64                `protobuf:"bytes,310,rep,name=map_bool_fixed64,json=mapBoolFixed64" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolSfixed64       map[bool]int64                 `protobuf:"bytes,311,rep,name=map_bool_sfixed64,json=mapBoolSfixed64" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolDouble         map[bool]float64               `protobuf:"bytes,312,rep,name=map_bool_double,json=mapBoolDouble" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolString         map[bool]string                `protobuf:"bytes,313,rep,name=map_bool_string,json=mapBoolString" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolBytes          map[bool][]byte                `protobuf:"bytes,314,rep,name=map_bool_bytes,json=mapBoolBytes" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapBoolChildEnum      map[bool]Message_ChildEnum     `protobuf:"bytes,315,rep,name=map_bool_child_enum,json=mapBoolChildEnum" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto3_20160225.Message_ChildEnum"`
-	MapBoolChildMessage   map[bool]*Message_ChildMessage `protobuf:"bytes,316,rep,name=map_bool_child_message,json=mapBoolChildMessage" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolSiblingEnum    map[bool]SiblingEnum           `protobuf:"bytes,317,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto3_20160225.SiblingEnum"`
-	MapBoolSiblingMessage map[bool]*SiblingMessage       `protobuf:"bytes,318,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapInt32Bool          map[int32]bool                 `protobuf:"bytes,319,rep,name=map_int32_bool,json=mapInt32Bool" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint32Bool         map[int32]bool                 `protobuf:"bytes,320,rep,name=map_sint32_bool,json=mapSint32Bool" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint32Bool         map[uint32]bool                `protobuf:"bytes,321,rep,name=map_uint32_bool,json=mapUint32Bool" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapInt64Bool          map[int64]bool                 `protobuf:"bytes,322,rep,name=map_int64_bool,json=mapInt64Bool" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint64Bool         map[int64]bool                 `protobuf:"bytes,323,rep,name=map_sint64_bool,json=mapSint64Bool" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint64Bool         map[uint64]bool                `protobuf:"bytes,324,rep,name=map_uint64_bool,json=mapUint64Bool" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapFixed32Bool        map[uint32]bool                `protobuf:"bytes,325,rep,name=map_fixed32_bool,json=mapFixed32Bool" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapStringBool         map[string]bool                `protobuf:"bytes,326,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	// Oneof fields.
-	//
-	// Types that are valid to be assigned to OneofUnion:
-	//	*Message_OneofBool
-	//	*Message_OneofInt32
-	//	*Message_OneofSint32
-	//	*Message_OneofUint32
-	//	*Message_OneofInt64
-	//	*Message_OneofSint64
-	//	*Message_OneofUint64
-	//	*Message_OneofFixed32
-	//	*Message_OneofSfixed32
-	//	*Message_OneofFloat
-	//	*Message_OneofFixed64
-	//	*Message_OneofSfixed64
-	//	*Message_OneofDouble
-	//	*Message_OneofString
-	//	*Message_OneofBytes
-	//	*Message_OneofChildEnum
-	//	*Message_OneofChildMessage
-	//	*Message_OneofSiblingEnum
-	//	*Message_OneofSiblingMessage
-	//	*Message_OneofString1
-	//	*Message_OneofString2
-	//	*Message_OneofString3
-	OneofUnion isMessage_OneofUnion `protobuf_oneof:"oneof_union"`
-}
-
-func (m *Message) Reset()                    { *m = Message{} }
-func (m *Message) String() string            { return proto.CompactTextString(m) }
-func (*Message) ProtoMessage()               {}
-func (*Message) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
-
-type isMessage_OneofUnion interface{ isMessage_OneofUnion() }
-
-type Message_OneofBool struct {
-	OneofBool bool `protobuf:"varint,400,opt,name=oneof_bool,json=oneofBool,oneof"`
-}
-type Message_OneofInt32 struct {
-	OneofInt32 int32 `protobuf:"varint,401,opt,name=oneof_int32,json=oneofInt32,oneof"`
-}
-type Message_OneofSint32 struct {
-	OneofSint32 int32 `protobuf:"zigzag32,402,opt,name=oneof_sint32,json=oneofSint32,oneof"`
-}
-type Message_OneofUint32 struct {
-	OneofUint32 uint32 `protobuf:"varint,403,opt,name=oneof_uint32,json=oneofUint32,oneof"`
-}
-type Message_OneofInt64 struct {
-	OneofInt64 int64 `protobuf:"varint,404,opt,name=oneof_int64,json=oneofInt64,oneof"`
-}
-type Message_OneofSint64 struct {
-	OneofSint64 int64 `protobuf:"zigzag64,405,opt,name=oneof_sint64,json=oneofSint64,oneof"`
-}
-type Message_OneofUint64 struct {
-	OneofUint64 uint64 `protobuf:"varint,406,opt,name=oneof_uint64,json=oneofUint64,oneof"`
-}
-type Message_OneofFixed32 struct {
-	OneofFixed32 uint32 `protobuf:"fixed32,407,opt,name=oneof_fixed32,json=oneofFixed32,oneof"`
-}
-type Message_OneofSfixed32 struct {
-	OneofSfixed32 int32 `protobuf:"fixed32,408,opt,name=oneof_sfixed32,json=oneofSfixed32,oneof"`
-}
-type Message_OneofFloat struct {
-	OneofFloat float32 `protobuf:"fixed32,409,opt,name=oneof_float,json=oneofFloat,oneof"`
-}
-type Message_OneofFixed64 struct {
-	OneofFixed64 uint64 `protobuf:"fixed64,410,opt,name=oneof_fixed64,json=oneofFixed64,oneof"`
-}
-type Message_OneofSfixed64 struct {
-	OneofSfixed64 int64 `protobuf:"fixed64,411,opt,name=oneof_sfixed64,json=oneofSfixed64,oneof"`
-}
-type Message_OneofDouble struct {
-	OneofDouble float64 `protobuf:"fixed64,412,opt,name=oneof_double,json=oneofDouble,oneof"`
-}
-type Message_OneofString struct {
-	OneofString string `protobuf:"bytes,413,opt,name=oneof_string,json=oneofString,oneof"`
-}
-type Message_OneofBytes struct {
-	OneofBytes []byte `protobuf:"bytes,414,opt,name=oneof_bytes,json=oneofBytes,proto3,oneof"`
-}
-type Message_OneofChildEnum struct {
-	OneofChildEnum Message_ChildEnum `protobuf:"varint,415,opt,name=oneof_child_enum,json=oneofChildEnum,enum=google.golang.org.proto3_20160225.Message_ChildEnum,oneof"`
-}
-type Message_OneofChildMessage struct {
-	OneofChildMessage *Message_ChildMessage `protobuf:"bytes,416,opt,name=oneof_child_message,json=oneofChildMessage,oneof"`
-}
-type Message_OneofSiblingEnum struct {
-	OneofSiblingEnum SiblingEnum `protobuf:"varint,417,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,enum=google.golang.org.proto3_20160225.SiblingEnum,oneof"`
-}
-type Message_OneofSiblingMessage struct {
-	OneofSiblingMessage *SiblingMessage `protobuf:"bytes,418,opt,name=oneof_sibling_message,json=oneofSiblingMessage,oneof"`
-}
-type Message_OneofString1 struct {
-	OneofString1 string `protobuf:"bytes,419,opt,name=oneof_string1,json=oneofString1,oneof"`
-}
-type Message_OneofString2 struct {
-	OneofString2 string `protobuf:"bytes,420,opt,name=oneof_string2,json=oneofString2,oneof"`
-}
-type Message_OneofString3 struct {
-	OneofString3 string `protobuf:"bytes,421,opt,name=oneof_string3,json=oneofString3,oneof"`
-}
-
-func (*Message_OneofBool) isMessage_OneofUnion()           {}
-func (*Message_OneofInt32) isMessage_OneofUnion()          {}
-func (*Message_OneofSint32) isMessage_OneofUnion()         {}
-func (*Message_OneofUint32) isMessage_OneofUnion()         {}
-func (*Message_OneofInt64) isMessage_OneofUnion()          {}
-func (*Message_OneofSint64) isMessage_OneofUnion()         {}
-func (*Message_OneofUint64) isMessage_OneofUnion()         {}
-func (*Message_OneofFixed32) isMessage_OneofUnion()        {}
-func (*Message_OneofSfixed32) isMessage_OneofUnion()       {}
-func (*Message_OneofFloat) isMessage_OneofUnion()          {}
-func (*Message_OneofFixed64) isMessage_OneofUnion()        {}
-func (*Message_OneofSfixed64) isMessage_OneofUnion()       {}
-func (*Message_OneofDouble) isMessage_OneofUnion()         {}
-func (*Message_OneofString) isMessage_OneofUnion()         {}
-func (*Message_OneofBytes) isMessage_OneofUnion()          {}
-func (*Message_OneofChildEnum) isMessage_OneofUnion()      {}
-func (*Message_OneofChildMessage) isMessage_OneofUnion()   {}
-func (*Message_OneofSiblingEnum) isMessage_OneofUnion()    {}
-func (*Message_OneofSiblingMessage) isMessage_OneofUnion() {}
-func (*Message_OneofString1) isMessage_OneofUnion()        {}
-func (*Message_OneofString2) isMessage_OneofUnion()        {}
-func (*Message_OneofString3) isMessage_OneofUnion()        {}
-
-func (m *Message) GetOneofUnion() isMessage_OneofUnion {
-	if m != nil {
-		return m.OneofUnion
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalChildMessage() *Message_ChildMessage {
-	if m != nil {
-		return m.OptionalChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalSiblingMessage() *SiblingMessage {
-	if m != nil {
-		return m.OptionalSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedChildMessage() []*Message_ChildMessage {
-	if m != nil {
-		return m.RepeatedChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSiblingMessage() []*SiblingMessage {
-	if m != nil {
-		return m.RepeatedSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBool() map[bool]bool {
-	if m != nil {
-		return m.MapBoolBool
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolInt32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolUint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolInt64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolUint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolFixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSfixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFloat() map[bool]float32 {
-	if m != nil {
-		return m.MapBoolFloat
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolFixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSfixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolDouble() map[bool]float64 {
-	if m != nil {
-		return m.MapBoolDouble
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolString() map[bool]string {
-	if m != nil {
-		return m.MapBoolString
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBytes() map[bool][]byte {
-	if m != nil {
-		return m.MapBoolBytes
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildEnum() map[bool]Message_ChildEnum {
-	if m != nil {
-		return m.MapBoolChildEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildMessage() map[bool]*Message_ChildMessage {
-	if m != nil {
-		return m.MapBoolChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingEnum() map[bool]SiblingEnum {
-	if m != nil {
-		return m.MapBoolSiblingEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingMessage() map[bool]*SiblingMessage {
-	if m != nil {
-		return m.MapBoolSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapInt32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapSint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapUint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapInt64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapSint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint64Bool() map[uint64]bool {
-	if m != nil {
-		return m.MapUint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapFixed32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapFixed32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapStringBool() map[string]bool {
-	if m != nil {
-		return m.MapStringBool
-	}
-	return nil
-}
-
-func (m *Message) GetOneofBool() bool {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBool); ok {
-		return x.OneofBool
-	}
-	return false
-}
-
-func (m *Message) GetOneofInt32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt32); ok {
-		return x.OneofInt32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint32); ok {
-		return x.OneofSint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint32); ok {
-		return x.OneofUint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofInt64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt64); ok {
-		return x.OneofInt64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint64); ok {
-		return x.OneofSint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint64); ok {
-		return x.OneofUint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed32); ok {
-		return x.OneofFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed32); ok {
-		return x.OneofSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFloat() float32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFloat); ok {
-		return x.OneofFloat
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed64); ok {
-		return x.OneofFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed64); ok {
-		return x.OneofSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofDouble() float64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofDouble); ok {
-		return x.OneofDouble
-	}
-	return 0
-}
-
-func (m *Message) GetOneofString() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString); ok {
-		return x.OneofString
-	}
-	return ""
-}
-
-func (m *Message) GetOneofBytes() []byte {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBytes); ok {
-		return x.OneofBytes
-	}
-	return nil
-}
-
-func (m *Message) GetOneofChildEnum() Message_ChildEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildEnum); ok {
-		return x.OneofChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetOneofChildMessage() *Message_ChildMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildMessage); ok {
-		return x.OneofChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofSiblingEnum() SiblingEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingEnum); ok {
-		return x.OneofSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetOneofSiblingMessage() *SiblingMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingMessage); ok {
-		return x.OneofSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofString1() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString1); ok {
-		return x.OneofString1
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString2() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString2); ok {
-		return x.OneofString2
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString3() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString3); ok {
-		return x.OneofString3
-	}
-	return ""
-}
-
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*Message) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _Message_OneofMarshaler, _Message_OneofUnmarshaler, _Message_OneofSizer, []interface{}{
-		(*Message_OneofBool)(nil),
-		(*Message_OneofInt32)(nil),
-		(*Message_OneofSint32)(nil),
-		(*Message_OneofUint32)(nil),
-		(*Message_OneofInt64)(nil),
-		(*Message_OneofSint64)(nil),
-		(*Message_OneofUint64)(nil),
-		(*Message_OneofFixed32)(nil),
-		(*Message_OneofSfixed32)(nil),
-		(*Message_OneofFloat)(nil),
-		(*Message_OneofFixed64)(nil),
-		(*Message_OneofSfixed64)(nil),
-		(*Message_OneofDouble)(nil),
-		(*Message_OneofString)(nil),
-		(*Message_OneofBytes)(nil),
-		(*Message_OneofChildEnum)(nil),
-		(*Message_OneofChildMessage)(nil),
-		(*Message_OneofSiblingEnum)(nil),
-		(*Message_OneofSiblingMessage)(nil),
-		(*Message_OneofString1)(nil),
-		(*Message_OneofString2)(nil),
-		(*Message_OneofString3)(nil),
-	}
-}
-
-func _Message_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*Message)
-	// oneof_union
-	switch x := m.OneofUnion.(type) {
-	case *Message_OneofBool:
-		t := uint64(0)
-		if x.OneofBool {
-			t = 1
-		}
-		b.EncodeVarint(400<<3 | proto.WireVarint)
-		b.EncodeVarint(t)
-	case *Message_OneofInt32:
-		b.EncodeVarint(401<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofInt32))
-	case *Message_OneofSint32:
-		b.EncodeVarint(402<<3 | proto.WireVarint)
-		b.EncodeZigzag32(uint64(x.OneofSint32))
-	case *Message_OneofUint32:
-		b.EncodeVarint(403<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofUint32))
-	case *Message_OneofInt64:
-		b.EncodeVarint(404<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofInt64))
-	case *Message_OneofSint64:
-		b.EncodeVarint(405<<3 | proto.WireVarint)
-		b.EncodeZigzag64(uint64(x.OneofSint64))
-	case *Message_OneofUint64:
-		b.EncodeVarint(406<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofUint64))
-	case *Message_OneofFixed32:
-		b.EncodeVarint(407<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofFixed32))
-	case *Message_OneofSfixed32:
-		b.EncodeVarint(408<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofSfixed32))
-	case *Message_OneofFloat:
-		b.EncodeVarint(409<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(math.Float32bits(x.OneofFloat)))
-	case *Message_OneofFixed64:
-		b.EncodeVarint(410<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofFixed64))
-	case *Message_OneofSfixed64:
-		b.EncodeVarint(411<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofSfixed64))
-	case *Message_OneofDouble:
-		b.EncodeVarint(412<<3 | proto.WireFixed64)
-		b.EncodeFixed64(math.Float64bits(x.OneofDouble))
-	case *Message_OneofString:
-		b.EncodeVarint(413<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString)
-	case *Message_OneofBytes:
-		b.EncodeVarint(414<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.OneofBytes)
-	case *Message_OneofChildEnum:
-		b.EncodeVarint(415<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofChildEnum))
-	case *Message_OneofChildMessage:
-		b.EncodeVarint(416<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofChildMessage); err != nil {
-			return err
-		}
-	case *Message_OneofSiblingEnum:
-		b.EncodeVarint(417<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofSiblingEnum))
-	case *Message_OneofSiblingMessage:
-		b.EncodeVarint(418<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofSiblingMessage); err != nil {
-			return err
-		}
-	case *Message_OneofString1:
-		b.EncodeVarint(419<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString1)
-	case *Message_OneofString2:
-		b.EncodeVarint(420<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString2)
-	case *Message_OneofString3:
-		b.EncodeVarint(421<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString3)
-	case nil:
-	default:
-		return fmt.Errorf("Message.OneofUnion has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _Message_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*Message)
-	switch tag {
-	case 400: // oneof_union.oneof_bool
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofBool{x != 0}
-		return true, err
-	case 401: // oneof_union.oneof_int32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofInt32{int32(x)}
-		return true, err
-	case 402: // oneof_union.oneof_sint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag32()
-		m.OneofUnion = &Message_OneofSint32{int32(x)}
-		return true, err
-	case 403: // oneof_union.oneof_uint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofUint32{uint32(x)}
-		return true, err
-	case 404: // oneof_union.oneof_int64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofInt64{int64(x)}
-		return true, err
-	case 405: // oneof_union.oneof_sint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag64()
-		m.OneofUnion = &Message_OneofSint64{int64(x)}
-		return true, err
-	case 406: // oneof_union.oneof_uint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofUint64{x}
-		return true, err
-	case 407: // oneof_union.oneof_fixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofFixed32{uint32(x)}
-		return true, err
-	case 408: // oneof_union.oneof_sfixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofSfixed32{int32(x)}
-		return true, err
-	case 409: // oneof_union.oneof_float
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofFloat{math.Float32frombits(uint32(x))}
-		return true, err
-	case 410: // oneof_union.oneof_fixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofFixed64{x}
-		return true, err
-	case 411: // oneof_union.oneof_sfixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofSfixed64{int64(x)}
-		return true, err
-	case 412: // oneof_union.oneof_double
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofDouble{math.Float64frombits(x)}
-		return true, err
-	case 413: // oneof_union.oneof_string
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString{x}
-		return true, err
-	case 414: // oneof_union.oneof_bytes
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.OneofUnion = &Message_OneofBytes{x}
-		return true, err
-	case 415: // oneof_union.oneof_child_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofChildEnum{Message_ChildEnum(x)}
-		return true, err
-	case 416: // oneof_union.oneof_child_message
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Message_ChildMessage)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofChildMessage{msg}
-		return true, err
-	case 417: // oneof_union.oneof_sibling_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofSiblingEnum{SiblingEnum(x)}
-		return true, err
-	case 418: // oneof_union.oneof_sibling_message
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(SiblingMessage)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofSiblingMessage{msg}
-		return true, err
-	case 419: // oneof_union.oneof_string1
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString1{x}
-		return true, err
-	case 420: // oneof_union.oneof_string2
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString2{x}
-		return true, err
-	case 421: // oneof_union.oneof_string3
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString3{x}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _Message_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*Message)
-	// oneof_union
-	switch x := m.OneofUnion.(type) {
-	case *Message_OneofBool:
-		n += proto.SizeVarint(400<<3 | proto.WireVarint)
-		n += 1
-	case *Message_OneofInt32:
-		n += proto.SizeVarint(401<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofInt32))
-	case *Message_OneofSint32:
-		n += proto.SizeVarint(402<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64((uint32(x.OneofSint32) << 1) ^ uint32((int32(x.OneofSint32) >> 31))))
-	case *Message_OneofUint32:
-		n += proto.SizeVarint(403<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofUint32))
-	case *Message_OneofInt64:
-		n += proto.SizeVarint(404<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofInt64))
-	case *Message_OneofSint64:
-		n += proto.SizeVarint(405<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(uint64(x.OneofSint64<<1) ^ uint64((int64(x.OneofSint64) >> 63))))
-	case *Message_OneofUint64:
-		n += proto.SizeVarint(406<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofUint64))
-	case *Message_OneofFixed32:
-		n += proto.SizeVarint(407<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofSfixed32:
-		n += proto.SizeVarint(408<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofFloat:
-		n += proto.SizeVarint(409<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofFixed64:
-		n += proto.SizeVarint(410<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofSfixed64:
-		n += proto.SizeVarint(411<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofDouble:
-		n += proto.SizeVarint(412<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofString:
-		n += proto.SizeVarint(413<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString)))
-		n += len(x.OneofString)
-	case *Message_OneofBytes:
-		n += proto.SizeVarint(414<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofBytes)))
-		n += len(x.OneofBytes)
-	case *Message_OneofChildEnum:
-		n += proto.SizeVarint(415<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofChildEnum))
-	case *Message_OneofChildMessage:
-		s := proto.Size(x.OneofChildMessage)
-		n += proto.SizeVarint(416<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_OneofSiblingEnum:
-		n += proto.SizeVarint(417<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofSiblingEnum))
-	case *Message_OneofSiblingMessage:
-		s := proto.Size(x.OneofSiblingMessage)
-		n += proto.SizeVarint(418<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_OneofString1:
-		n += proto.SizeVarint(419<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString1)))
-		n += len(x.OneofString1)
-	case *Message_OneofString2:
-		n += proto.SizeVarint(420<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString2)))
-		n += len(x.OneofString2)
-	case *Message_OneofString3:
-		n += proto.SizeVarint(421<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString3)))
-		n += len(x.OneofString3)
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
-type Message_ChildMessage struct {
-	F1 string   `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2 []string `protobuf:"bytes,2,rep,name=f2" json:"f2,omitempty"`
-	F3 *Message `protobuf:"bytes,3,opt,name=f3" json:"f3,omitempty"`
-}
-
-func (m *Message_ChildMessage) Reset()                    { *m = Message_ChildMessage{} }
-func (m *Message_ChildMessage) String() string            { return proto.CompactTextString(m) }
-func (*Message_ChildMessage) ProtoMessage()               {}
-func (*Message_ChildMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
-
-func (m *Message_ChildMessage) GetF3() *Message {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func init() {
-	proto.RegisterType((*SiblingMessage)(nil), "google.golang.org.proto3_20160225.SiblingMessage")
-	proto.RegisterType((*Message)(nil), "google.golang.org.proto3_20160225.Message")
-	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto3_20160225.Message.ChildMessage")
-	proto.RegisterEnum("google.golang.org.proto3_20160225.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
-	proto.RegisterEnum("google.golang.org.proto3_20160225.Message_ChildEnum", Message_ChildEnum_name, Message_ChildEnum_value)
-}
-
-var fileDescriptor0 = []byte{
-	// 1946 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x9a, 0x57, 0x73, 0xdb, 0xca,
-	0x15, 0xc7, 0x09, 0x52, 0xc5, 0x5a, 0xb1, 0x82, 0x96, 0xb2, 0xa3, 0x27, 0x44, 0x76, 0x1c, 0xc4,
-	0xc9, 0x50, 0x16, 0x09, 0x23, 0x19, 0x27, 0xb1, 0x2d, 0xd9, 0x72, 0xe8, 0x8c, 0x9d, 0x78, 0xe0,
-	0x51, 0x1e, 0xf2, 0xa2, 0x50, 0x12, 0x48, 0xd3, 0x06, 0x09, 0x45, 0x24, 0x3d, 0xd1, 0xe4, 0xc1,
-	0x5f, 0x21, 0xf5, 0xf6, 0x5e, 0xde, 0x6e, 0xef, 0xbd, 0xfb, 0x8e, 0x6f, 0xef, 0xf5, 0xd3, 0xdc,
-	0x59, 0x1c, 0x6c, 0x03, 0x40, 0x93, 0x04, 0xe7, 0x3e, 0x78, 0x46, 0x3a, 0xfc, 0xef, 0xf9, 0xf1,
-	0x1c, 0x9c, 0x3d, 0x67, 0x17, 0x16, 0x3a, 0xb0, 0xb3, 0xeb, 0x76, 0xdd, 0xca, 0x46, 0xf9, 0xc8,
-	0xb2, 0x79, 0xa4, 0x5c, 0x3e, 0xba, 0x51, 0xae, 0x6f, 0x1d, 0x39, 0x5a, 0xd9, 0x3a, 0xba, 0xd4,
-	0xb5, 0x3b, 0xdd, 0x92, 0xf7, 0xa9, 0xfa, 0xd3, 0x86, 0xeb, 0x36, 0x1c, 0xbb, 0xd4, 0x70, 0x9d,
-	0x5a, 0xbb, 0x51, 0x72, 0x77, 0x1b, 0xa5, 0xc0, 0xb2, 0x45, 0x07, 0x65, 0x2f, 0x36, 0x37, 0x9d,
-	0x66, 0xbb, 0x71, 0xde, 0xee, 0x74, 0x6a, 0x0d, 0x5b, 0xcd, 0xa2, 0x64, 0x7d, 0x19, 0x2b, 0x9a,
-	0xa2, 0xcf, 0x58, 0xc9, 0xfa, 0xb2, 0xf7, 0x7b, 0x19, 0x27, 0xb5, 0x94, 0xf7, 0x7b, 0x59, 0x3d,
-	0x86, 0x92, 0xf5, 0x0a, 0x4e, 0x69, 0x8a, 0x3e, 0x5b, 0x3e, 0x5c, 0x1a, 0x48, 0x28, 0xf9, 0x7e,
-	0xad, 0x64, 0xbd, 0xb2, 0x78, 0xfd, 0x24, 0x9a, 0xa6, 0x9c, 0x03, 0x28, 0xe3, 0xee, 0x74, 0x9b,
-	0x6e, 0xbb, 0xe6, 0x6c, 0x6c, 0xba, 0xae, 0x83, 0xb7, 0x35, 0x45, 0xdf, 0x67, 0xa5, 0xa9, 0x71,
-	0xd5, 0x75, 0x1d, 0xf5, 0x67, 0x28, 0xcb, 0x44, 0xcd, 0x76, 0xb7, 0x52, 0xc6, 0xb6, 0xa6, 0xe8,
-	0x93, 0x16, 0x5b, 0x7a, 0x96, 0x18, 0xd5, 0x9f, 0xa3, 0x1c, 0x93, 0x75, 0x40, 0x57, 0xd7, 0x14,
-	0xbd, 0x60, 0xb1, 0xd5, 0x17, 0x9b, 0x21, 0x61, 0x0f, 0x84, 0x0d, 0x4d, 0xd1, 0x33, 0x5c, 0xb8,
-	0x0e, 0xc2, 0x00, 0xd8, 0x34, 0xf0, 0x25, 0x4d, 0xd1, 0x53, 0x12, 0xd8, 0x34, 0x42, 0x60, 0xd3,
-	0xc0, 0x4d, 0x4d, 0xd1, 0x55, 0x19, 0x1c, 0x10, 0xf6, 0x40, 0x78, 0x59, 0x53, 0xf4, 0x09, 0x19,
-	0x6c, 0x1a, 0xea, 0x2f, 0x50, 0x9e, 0x09, 0xeb, 0xcd, 0x7f, 0xd8, 0xdb, 0x95, 0x32, 0xbe, 0xa2,
-	0x29, 0xfa, 0xb4, 0xc5, 0x1c, 0x9c, 0x01, 0xb3, 0xfa, 0x4b, 0x54, 0xe0, 0x70, 0xaa, 0x75, 0x34,
-	0x45, 0xcf, 0x59, 0xcc, 0xc7, 0x45, 0xdf, 0x2e, 0x05, 0x54, 0x77, 0xdc, 0x5a, 0x17, 0xb7, 0x34,
-	0x45, 0x4f, 0xf2, 0x80, 0xce, 0x10, 0x63, 0x18, 0x6f, 0x1a, 0xb8, 0xad, 0x29, 0xfa, 0x54, 0x00,
-	0x6f, 0x1a, 0x11, 0x78, 0xd3, 0xc0, 0xae, 0xa6, 0xe8, 0xf9, 0x20, 0x3e, 0x10, 0xff, 0xb6, 0xdb,
-	0xdb, 0x74, 0x6c, 0xbc, 0xa3, 0x29, 0xba, 0xc2, 0xe3, 0x3f, 0xed, 0x59, 0xe5, 0x8c, 0x76, 0x77,
-	0x9b, 0xed, 0x06, 0xfe, 0xbb, 0x57, 0x8b, 0x3c, 0xa3, 0x9e, 0x55, 0x0a, 0x68, 0x73, 0xaf, 0x6b,
-	0x77, 0xf0, 0xae, 0xa6, 0xe8, 0x69, 0x1e, 0xd0, 0x2a, 0x31, 0xaa, 0xdb, 0xa8, 0xc8, 0x64, 0x5b,
-	0x97, 0x9a, 0xce, 0xf6, 0x86, 0xdd, 0xee, 0xb5, 0x70, 0x47, 0x53, 0xf4, 0x6c, 0xd9, 0x18, 0xbe,
-	0x7e, 0x4b, 0xa7, 0xc8, 0xe2, 0xb5, 0x76, 0xaf, 0x65, 0xb1, 0xb0, 0x99, 0x49, 0x6d, 0xa1, 0xf9,
-	0x00, 0xa5, 0x05, 0xcb, 0x70, 0xd7, 0xdb, 0x28, 0xbf, 0x1e, 0x15, 0x44, 0x77, 0xcd, 0x7e, 0x89,
-	0x45, 0xf7, 0xce, 0x26, 0x9a, 0x13, 0xca, 0xce, 0xdb, 0xbe, 0x10, 0x56, 0xcf, 0x0b, 0xab, 0x34,
-	0x04, 0xcd, 0xdf, 0xf5, 0x5e, 0x40, 0x45, 0x5e, 0xac, 0xcc, 0xa8, 0x5e, 0x41, 0x38, 0xc4, 0xa0,
-	0x41, 0x5d, 0xf5, 0x82, 0x5a, 0x1e, 0x1e, 0x43, 0xc3, 0x99, 0x0f, 0x90, 0x68, 0x40, 0x07, 0x51,
-	0x66, 0xd7, 0xde, 0xb1, 0x6b, 0x5d, 0x7b, 0x1b, 0x9a, 0xc1, 0x0d, 0x45, 0x4b, 0x91, 0x6e, 0x40,
-	0xad, 0x5e, 0x37, 0x38, 0x84, 0xb2, 0x4c, 0x05, 0x9b, 0xf7, 0x3d, 0x22, 0x9b, 0xb4, 0xd8, 0x62,
-	0x68, 0x07, 0x3a, 0xca, 0x31, 0x9d, 0xdf, 0x0e, 0xde, 0x27, 0xc2, 0x82, 0xc5, 0xd6, 0xfb, 0xfd,
-	0x40, 0x54, 0xfa, 0xfd, 0xe0, 0x03, 0xa2, 0xcc, 0x70, 0xa5, 0xdf, 0x10, 0x02, 0x6c, 0xd3, 0xc0,
-	0x1f, 0x12, 0x61, 0x4a, 0x62, 0x9b, 0x46, 0x88, 0x6d, 0x1a, 0xf8, 0x23, 0x22, 0x54, 0x65, 0x76,
-	0x40, 0xe9, 0xb7, 0x84, 0x8f, 0x89, 0x72, 0x42, 0x66, 0x9b, 0x86, 0x7a, 0x18, 0xe5, 0x99, 0x92,
-	0xee, 0xf3, 0x4f, 0x88, 0x74, 0xda, 0x62, 0x2e, 0x68, 0x53, 0xf8, 0x15, 0x2a, 0x70, 0x3e, 0x15,
-	0x7f, 0x4a, 0xc4, 0x39, 0x8b, 0x79, 0x61, 0x5d, 0x41, 0x8c, 0x0a, 0xba, 0xc2, 0x67, 0x44, 0x9a,
-	0xe4, 0x51, 0x41, 0x5b, 0x08, 0x7d, 0x03, 0xd3, 0xc0, 0x9f, 0x13, 0xe5, 0x54, 0xe0, 0x1b, 0x98,
-	0x46, 0xc4, 0x37, 0x30, 0x0d, 0xfc, 0x05, 0x11, 0xe7, 0x83, 0xdf, 0x20, 0x90, 0x05, 0xbf, 0x31,
-	0x7c, 0x49, 0xb4, 0x0a, 0xcf, 0x82, 0xdf, 0x19, 0xa4, 0xcc, 0x42, 0x67, 0xf8, 0x4a, 0xf1, 0xc6,
-	0x12, 0xcf, 0x2c, 0xb4, 0x06, 0x31, 0x2a, 0x68, 0x0d, 0x5f, 0x13, 0x61, 0x9a, 0x47, 0x05, 0xbd,
-	0xc1, 0x46, 0x45, 0xa6, 0x13, 0x7a, 0xc3, 0x37, 0x44, 0x1c, 0xbb, 0x39, 0x50, 0x8f, 0xbc, 0x39,
-	0xb4, 0xd1, 0x7c, 0x00, 0x43, 0xf7, 0xd1, 0xb7, 0x84, 0x34, 0x4e, 0x77, 0x90, 0x60, 0x74, 0x33,
-	0x6d, 0xa1, 0x39, 0xa1, 0x04, 0x85, 0xee, 0xf0, 0x1d, 0x04, 0x36, 0x72, 0x7b, 0xe0, 0x85, 0xcb,
-	0xdb, 0x83, 0x83, 0x70, 0x08, 0x42, 0xc3, 0xfa, 0x1e, 0xc2, 0x8a, 0xd3, 0x1f, 0x02, 0x28, 0x1a,
-	0xd2, 0xdf, 0x50, 0xa6, 0x55, 0xdb, 0xf1, 0x5a, 0x03, 0xf4, 0x87, 0x47, 0x92, 0x1e, 0xe2, 0xb7,
-	0x23, 0x64, 0xee, 0x7c, 0x6d, 0x87, 0x74, 0x11, 0xf2, 0x6f, 0xad, 0xdd, 0xdd, 0xdd, 0xb3, 0x66,
-	0x5b, 0xdc, 0xa2, 0x6e, 0xa1, 0x2c, 0x23, 0x40, 0x23, 0x78, 0x14, 0x10, 0xbf, 0x1b, 0x1d, 0xe1,
-	0x75, 0x21, 0x60, 0xa4, 0x5b, 0x82, 0x49, 0xad, 0xa3, 0x1c, 0x83, 0xf8, 0x8d, 0xe9, 0x31, 0xa0,
-	0xfc, 0x7e, 0x74, 0x0a, 0xb4, 0x30, 0xc0, 0x64, 0x5a, 0xa2, 0x4d, 0xe2, 0xf8, 0x6d, 0xed, 0xf1,
-	0xd8, 0x9c, 0xf5, 0x08, 0x8e, 0xdf, 0x14, 0x03, 0x49, 0x33, 0x0d, 0xfc, 0xc4, 0x38, 0x49, 0x33,
-	0x8d, 0x50, 0xd2, 0x4c, 0x23, 0x94, 0x34, 0xd3, 0xc0, 0x4f, 0x8e, 0x95, 0x34, 0x8a, 0x11, 0x93,
-	0x16, 0xe0, 0xf8, 0xfd, 0xf8, 0xa9, 0xb1, 0x92, 0x16, 0xe4, 0xf8, 0xdd, 0xbc, 0x89, 0xf2, 0x8c,
-	0x43, 0x1b, 0xf4, 0xd3, 0x00, 0x3a, 0x3e, 0x3a, 0xc8, 0xef, 0xfb, 0x40, 0xca, 0xb6, 0x24, 0xa3,
-	0xea, 0xa0, 0x02, 0x4f, 0x1d, 0x65, 0x3d, 0x03, 0xac, 0x13, 0x31, 0x92, 0x57, 0x17, 0x61, 0xb9,
-	0x96, 0x6c, 0x95, 0xaa, 0x01, 0x86, 0xc9, 0xb3, 0xb1, 0xab, 0xc1, 0x1b, 0x3b, 0x72, 0x35, 0xc0,
-	0x24, 0x0a, 0x65, 0xcf, 0x34, 0xf0, 0x73, 0xe3, 0x65, 0x8f, 0x3e, 0x27, 0x29, 0x7b, 0xa6, 0x11,
-	0x91, 0x3d, 0xd3, 0xc0, 0xcf, 0x8f, 0x99, 0x3d, 0x0a, 0x93, 0xb3, 0x17, 0x28, 0x3f, 0x7f, 0x10,
-	0xbe, 0x10, 0xbb, 0xfc, 0x60, 0x64, 0xca, 0xe5, 0xe7, 0x8f, 0x51, 0x69, 0x3b, 0xc1, 0x18, 0x7d,
-	0x31, 0xfe, 0x76, 0xf2, 0x1c, 0x04, 0xb6, 0x13, 0x0c, 0x61, 0xb1, 0x1a, 0x60, 0x08, 0xbf, 0x14,
-	0xbb, 0x1a, 0xbc, 0x71, 0x2d, 0x57, 0x03, 0x4c, 0xf0, 0x1d, 0x54, 0x64, 0x10, 0x61, 0x82, 0xbf,
-	0x0c, 0xa4, 0x93, 0xa3, 0x93, 0xd8, 0xd4, 0x06, 0x5a, 0xbe, 0x15, 0x30, 0xab, 0x7b, 0x68, 0x3e,
-	0x40, 0xa4, 0x53, 0xef, 0x15, 0x80, 0x9e, 0x8a, 0x09, 0xf5, 0x6d, 0xc0, 0x2d, 0xb6, 0xc2, 0x9f,
-	0xa8, 0x57, 0xd1, 0x9c, 0xd0, 0x08, 0x85, 0xb9, 0xfe, 0x2a, 0x90, 0x57, 0xe3, 0xb4, 0x43, 0x36,
-	0xd1, 0x01, 0xac, 0xb6, 0x42, 0x1f, 0xa8, 0xd7, 0x10, 0x0e, 0x71, 0x69, 0xd0, 0xaf, 0x01, 0x7a,
-	0x2d, 0x36, 0x5a, 0x0a, 0x7b, 0xae, 0x15, 0xf5, 0x19, 0x2d, 0x25, 0x6f, 0xe6, 0xc0, 0xf8, 0x7f,
-	0x3d, 0x56, 0x29, 0x79, 0x43, 0x98, 0xcf, 0x7f, 0x52, 0x4a, 0xcc, 0x44, 0xf7, 0x45, 0x47, 0xa0,
-	0xbc, 0x11, 0x6b, 0x5f, 0xc0, 0x0c, 0xe6, 0x18, 0xb2, 0x2f, 0xb8, 0x8d, 0x72, 0x7a, 0x02, 0xe7,
-	0xcd, 0x58, 0x9c, 0xf5, 0x08, 0x0e, 0xb7, 0x09, 0x49, 0x33, 0x0d, 0xc0, 0xbc, 0x15, 0x37, 0x69,
-	0xa6, 0x11, 0x4a, 0x1a, 0x98, 0xc4, 0xa4, 0x51, 0xca, 0xdb, 0xb1, 0x93, 0x26, 0x62, 0x68, 0xd2,
-	0x64, 0x4e, 0x4f, 0xe0, 0xbc, 0x13, 0x3b, 0x69, 0x41, 0x0e, 0xb7, 0xd1, 0xe9, 0xe2, 0x4f, 0x34,
-	0x00, 0x5d, 0x8f, 0x35, 0x5d, 0xfc, 0x11, 0xcc, 0x49, 0xe4, 0x69, 0x08, 0x46, 0x96, 0x3a, 0xaf,
-	0x5b, 0x02, 0xe9, 0xdd, 0x78, 0xa9, 0xf3, 0x3c, 0x04, 0x52, 0xc7, 0x6c, 0xaa, 0x86, 0x90, 0xdb,
-	0xb6, 0xdd, 0x3a, 0x20, 0xfe, 0x95, 0xd2, 0x14, 0x7d, 0x5f, 0x35, 0x61, 0xcd, 0x78, 0x46, 0x4f,
-	0xb1, 0x88, 0x66, 0x41, 0x01, 0x27, 0xc5, 0x7f, 0x13, 0xc9, 0x64, 0x35, 0x61, 0xc1, 0x3a, 0x38,
-	0xb9, 0x1e, 0x44, 0x69, 0xd0, 0xf8, 0xc7, 0xd6, 0xff, 0x10, 0x51, 0xa1, 0x9a, 0xb0, 0x60, 0xa9,
-	0x7f, 0xee, 0x64, 0x2a, 0xff, 0xd0, 0xf9, 0x5f, 0xa2, 0xca, 0x30, 0x95, 0x7f, 0x6a, 0x14, 0x79,
-	0xa6, 0x81, 0xff, 0x47, 0x44, 0x29, 0x91, 0x67, 0x1a, 0x32, 0xcf, 0x34, 0xf0, 0xff, 0x89, 0x48,
-	0x95, 0x78, 0xa2, 0xca, 0x3f, 0xaf, 0xdd, 0x42, 0x54, 0x13, 0x12, 0xcf, 0x34, 0xd4, 0x43, 0x28,
-	0x03, 0x2a, 0x7a, 0x02, 0xba, 0x95, 0xc8, 0xa6, 0xab, 0x09, 0x0b, 0x56, 0xd3, 0xd3, 0x92, 0x8e,
-	0xb2, 0x3e, 0x93, 0x0a, 0x6f, 0x23, 0xc2, 0x5c, 0x35, 0x61, 0x81, 0x03, 0x76, 0xd2, 0x61, 0x11,
-	0xc0, 0x31, 0xe7, 0x76, 0x22, 0x4b, 0xb2, 0x08, 0xe0, 0xa0, 0x22, 0x53, 0x4d, 0x03, 0xdf, 0x41,
-	0x54, 0x53, 0x32, 0xd5, 0xbb, 0x00, 0x4b, 0x54, 0xd3, 0xc0, 0x77, 0x12, 0x61, 0x3e, 0x40, 0x15,
-	0xa3, 0xf5, 0x8f, 0x07, 0x77, 0x11, 0x9d, 0xc2, 0xa2, 0xf5, 0xe7, 0x3b, 0xcf, 0x1c, 0x0c, 0xf7,
-	0xbb, 0x89, 0x6a, 0x86, 0x67, 0x0e, 0xa6, 0x33, 0x8b, 0x00, 0x46, 0xf3, 0x3d, 0x44, 0x94, 0x66,
-	0x11, 0xc0, 0x70, 0xad, 0xa1, 0x3c, 0x68, 0x84, 0xc9, 0x7a, 0x6f, 0x2a, 0xfe, 0x8b, 0xb3, 0x6a,
-	0xc2, 0x82, 0x50, 0xf9, 0x34, 0xbd, 0x8c, 0x8a, 0x22, 0x82, 0x4e, 0x95, 0xfb, 0x52, 0x63, 0xbd,
-	0x35, 0xab, 0x26, 0xac, 0x02, 0x07, 0xd1, 0x29, 0xb2, 0x81, 0x54, 0x5a, 0x52, 0xc2, 0xec, 0xbc,
-	0x3f, 0x15, 0xe7, 0x95, 0x59, 0x35, 0x61, 0xe5, 0xfd, 0x42, 0xe4, 0x73, 0xf2, 0x12, 0x9a, 0x93,
-	0x01, 0x34, 0x9c, 0x07, 0x52, 0x31, 0xdf, 0x97, 0x55, 0x13, 0x56, 0x51, 0xc4, 0xd0, 0x50, 0x58,
-	0x6d, 0xc1, 0x33, 0x5e, 0xc6, 0x0f, 0xd2, 0x87, 0x9c, 0x16, 0x1e, 0xf2, 0x72, 0x50, 0x57, 0xc6,
-	0x0f, 0x45, 0xe9, 0xca, 0x41, 0x5d, 0x05, 0x3f, 0x1c, 0xa5, 0xab, 0x2c, 0x5c, 0x46, 0x69, 0x29,
-	0xa5, 0x3f, 0xe2, 0xff, 0x15, 0x2c, 0x1c, 0x47, 0xf9, 0xe0, 0x8d, 0x5d, 0xcd, 0xa3, 0xd4, 0x15,
-	0x7b, 0xcf, 0x03, 0xee, 0xb3, 0xc8, 0x8f, 0xea, 0x7e, 0x34, 0x79, 0xb5, 0xe6, 0xf4, 0x6c, 0x9c,
-	0xf4, 0x6c, 0xf0, 0xcb, 0xb1, 0xe4, 0x6f, 0x94, 0x85, 0x13, 0xa8, 0x10, 0xba, 0x8e, 0x0f, 0x72,
-	0x30, 0x29, 0x3a, 0x38, 0x89, 0xd4, 0xf0, 0x4d, 0x7b, 0x90, 0x87, 0x42, 0xb4, 0x87, 0xf5, 0xe1,
-	0x3d, 0x64, 0xfa, 0x06, 0xe1, 0x5f, 0x1d, 0x06, 0x39, 0x48, 0xf5, 0x0f, 0x62, 0x48, 0x0f, 0x6a,
-	0xff, 0x20, 0x86, 0xf4, 0x30, 0x21, 0x7a, 0x58, 0x41, 0xc5, 0x88, 0xcb, 0xea, 0x20, 0x17, 0xd3,
-	0xa2, 0x8b, 0x55, 0xb4, 0x3f, 0xea, 0x0e, 0x3a, 0xc8, 0x47, 0x2e, 0x3a, 0x97, 0xfc, 0x72, 0x39,
-	0xc8, 0x41, 0xf2, 0x26, 0x71, 0x0c, 0x99, 0x8a, 0xa9, 0x9b, 0xc5, 0x31, 0xa4, 0x8f, 0x7c, 0xf4,
-	0x03, 0x11, 0x6e, 0x79, 0x83, 0x3c, 0x28, 0x7d, 0x8a, 0x82, 0xdf, 0xdf, 0x06, 0x79, 0x98, 0x89,
-	0xce, 0x25, 0xbf, 0x9a, 0x0d, 0x72, 0x90, 0x16, 0x1d, 0xec, 0xa1, 0xb9, 0xc8, 0x1b, 0x57, 0x84,
-	0x93, 0x3f, 0x8a, 0x4e, 0xe2, 0xbe, 0x96, 0x15, 0xd0, 0xd7, 0x10, 0xee, 0x77, 0xef, 0x8a, 0xa0,
-	0x9f, 0x17, 0xe9, 0x63, 0xbc, 0xaa, 0x15, 0xbe, 0x40, 0x0f, 0xfd, 0xa4, 0xcf, 0xf5, 0x2b, 0x82,
-	0x7f, 0x5a, 0x8e, 0x7e, 0xd4, 0x77, 0xb7, 0x02, 0xf6, 0x9f, 0x68, 0xa1, 0xff, 0xd5, 0x2b, 0x82,
-	0xfc, 0x07, 0x39, 0xf2, 0x18, 0x6f, 0x73, 0x43, 0x05, 0x23, 0x5f, 0xc0, 0x44, 0xe6, 0xe4, 0xa0,
-	0x76, 0x0e, 0x35, 0x1b, 0xb8, 0x5b, 0x89, 0x1e, 0x0a, 0xc3, 0x79, 0x58, 0xef, 0xef, 0x21, 0x33,
-	0xdc, 0x48, 0x91, 0x2f, 0x44, 0xa2, 0x83, 0xd4, 0xf0, 0x41, 0xf4, 0xf1, 0xa0, 0x0e, 0x1f, 0x44,
-	0x1f, 0x0f, 0x13, 0x83, 0x3c, 0x40, 0x17, 0x0b, 0x5e, 0x4f, 0x44, 0x17, 0xd3, 0x43, 0x86, 0x21,
-	0xdf, 0x3b, 0x44, 0x0f, 0x33, 0x03, 0x3c, 0x2c, 0x96, 0xd0, 0x0c, 0x3f, 0x04, 0xce, 0xa0, 0xc9,
-	0x95, 0x73, 0x17, 0xaa, 0x2b, 0xf9, 0x04, 0xf9, 0x71, 0xd5, 0x5a, 0xf9, 0xcb, 0x9f, 0xf3, 0x8a,
-	0x3a, 0x8b, 0xa6, 0x4f, 0x55, 0x57, 0xac, 0x73, 0x67, 0xd7, 0xf2, 0xc9, 0xd5, 0x0c, 0x3d, 0xae,
-	0xf6, 0xda, 0x4d, 0xb7, 0x7d, 0x78, 0x19, 0xcd, 0x8a, 0x07, 0xaf, 0x28, 0x07, 0x48, 0x4d, 0x73,
-	0x07, 0x37, 0x94, 0xd5, 0x0b, 0x7f, 0xfd, 0x53, 0xa8, 0x7e, 0x97, 0xbc, 0xfa, 0xdd, 0xec, 0xd5,
-	0x97, 0x9a, 0xed, 0xae, 0xbd, 0xdb, 0xae, 0x39, 0xde, 0x5f, 0x4f, 0x78, 0xd6, 0xce, 0x92, 0x63,
-	0x37, 0x6a, 0x5b, 0x7b, 0x4b, 0xfd, 0xfe, 0xd0, 0x62, 0x73, 0x0a, 0x3e, 0xf9, 0x21, 0x00, 0x00,
-	0xff, 0xff, 0x64, 0x49, 0xbf, 0xf0, 0x8b, 0x21, 0x00, 0x00,
-}
diff --git a/internal/testprotos/legacy/proto3_20160225_2fc053c5/test.proto b/internal/testprotos/legacy/proto3_20160225_2fc053c5/test.proto
deleted file mode 100644
index 7a0a6f2..0000000
--- a/internal/testprotos/legacy/proto3_20160225_2fc053c5/test.proto
+++ /dev/null
@@ -1,136 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-
-package google.golang.org.proto3_20160225;
-option go_package = "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20160225_2fc053c5";
-
-enum SiblingEnum {
-	ALPHA   = 0;
-	BRAVO   = 10;
-	CHARLIE = 200;
-}
-
-message SiblingMessage {
-	string          f1 = 1;
-	repeated string f2 = 2;
-	Message         f3 = 3;
-}
-
-message Message {
-	enum ChildEnum {
-		ALPHA   = 0;
-		BRAVO   = 1;
-		CHARLIE = 2;
-	}
-	message ChildMessage {
-		string          f1 = 1;
-		repeated string f2 = 2;
-		Message         f3 = 3;
-	}
-
-	// Optional fields.
-	bool     optional_bool     = 100;
-	int32    optional_int32    = 101;
-	sint32   optional_sint32   = 102;
-	uint32   optional_uint32   = 103;
-	int64    optional_int64    = 104;
-	sint64   optional_sint64   = 105;
-	uint64   optional_uint64   = 106;
-	fixed32  optional_fixed32  = 107;
-	sfixed32 optional_sfixed32 = 108;
-	float    optional_float    = 109;
-	fixed64  optional_fixed64  = 110;
-	sfixed64 optional_sfixed64 = 111;
-	double   optional_double   = 112;
-	string   optional_string   = 113;
-	bytes    optional_bytes    = 114;
-
-	ChildEnum      optional_child_enum      = 115;
-	ChildMessage   optional_child_message   = 116;
-	SiblingEnum    optional_sibling_enum    = 117;
-	SiblingMessage optional_sibling_message = 118;
-
-	// Repeated fields.
-	repeated bool     repeated_bool     = 200;
-	repeated int32    repeated_int32    = 201;
-	repeated sint32   repeated_sint32   = 202;
-	repeated uint32   repeated_uint32   = 203;
-	repeated int64    repeated_int64    = 204;
-	repeated sint64   repeated_sint64   = 205;
-	repeated uint64   repeated_uint64   = 206;
-	repeated fixed32  repeated_fixed32  = 207;
-	repeated sfixed32 repeated_sfixed32 = 208;
-	repeated float    repeated_float    = 209;
-	repeated fixed64  repeated_fixed64  = 210;
-	repeated sfixed64 repeated_sfixed64 = 211;
-	repeated double   repeated_double   = 212;
-	repeated string   repeated_string   = 213;
-	repeated bytes    repeated_bytes    = 214;
-
-	repeated ChildEnum      repeated_child_enum      = 215;
-	repeated ChildMessage   repeated_child_message   = 216;
-	repeated SiblingEnum    repeated_sibling_enum    = 217;
-	repeated SiblingMessage repeated_sibling_message = 218;
-
-	// Map fields.
-	map<bool, bool>     map_bool_bool     = 300;
-	map<bool, int32>    map_bool_int32    = 301;
-	map<bool, sint32>   map_bool_sint32   = 302;
-	map<bool, uint32>   map_bool_uint32   = 303;
-	map<bool, int64>    map_bool_int64    = 304;
-	map<bool, sint64>   map_bool_sint64   = 305;
-	map<bool, uint64>   map_bool_uint64   = 306;
-	map<bool, fixed32>  map_bool_fixed32  = 307;
-	map<bool, sfixed32> map_bool_sfixed32 = 308;
-	map<bool, float>    map_bool_float    = 309;
-	map<bool, fixed64>  map_bool_fixed64  = 310;
-	map<bool, sfixed64> map_bool_sfixed64 = 311;
-	map<bool, double>   map_bool_double   = 312;
-	map<bool, string>   map_bool_string   = 313;
-	map<bool, bytes>    map_bool_bytes    = 314;
-
-	map<bool, ChildEnum>      map_bool_child_enum      = 315;
-	map<bool, ChildMessage>   map_bool_child_message   = 316;
-	map<bool, SiblingEnum>    map_bool_sibling_enum    = 317;
-	map<bool, SiblingMessage> map_bool_sibling_message = 318;
-
-	map<int32, bool>   map_int32_bool   = 319;
-	map<sint32, bool>  map_sint32_bool  = 320;
-	map<uint32, bool>  map_uint32_bool  = 321;
-	map<int64, bool>   map_int64_bool   = 322;
-	map<sint64, bool>  map_sint64_bool  = 323;
-	map<uint64, bool>  map_uint64_bool  = 324;
-	map<fixed32, bool> map_fixed32_bool = 325;
-	map<string, bool>  map_string_bool  = 326;
-
-	// Oneof fields.
-	oneof oneof_union {
-		bool     oneof_bool     = 400;
-		int32    oneof_int32    = 401;
-		sint32   oneof_sint32   = 402;
-		uint32   oneof_uint32   = 403;
-		int64    oneof_int64    = 404;
-		sint64   oneof_sint64   = 405;
-		uint64   oneof_uint64   = 406;
-		fixed32  oneof_fixed32  = 407;
-		sfixed32 oneof_sfixed32 = 408;
-		float    oneof_float    = 409;
-		fixed64  oneof_fixed64  = 410;
-		sfixed64 oneof_sfixed64 = 411;
-		double   oneof_double   = 412;
-		string   oneof_string   = 413;
-		bytes    oneof_bytes    = 414;
-
-		ChildEnum      oneof_child_enum      = 415;
-		ChildMessage   oneof_child_message   = 416;
-		SiblingEnum    oneof_sibling_enum    = 417;
-		SiblingMessage oneof_sibling_message = 418;
-
-		string oneof_string1 = 419;
-		string oneof_string2 = 420;
-		string oneof_string3 = 421;
-	}
-}
diff --git a/internal/testprotos/legacy/proto3_20160519_a4ab9ec5/test.pb.go b/internal/testprotos/legacy/proto3_20160519_a4ab9ec5/test.pb.go
deleted file mode 100644
index ac339fa..0000000
--- a/internal/testprotos/legacy/proto3_20160519_a4ab9ec5/test.pb.go
+++ /dev/null
@@ -1,1185 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go.
-// source: proto3_20160519_a4ab9ec5/test.proto
-// DO NOT EDIT!
-
-/*
-Package proto3_20160519_a4ab9ec5 is a generated protocol buffer package.
-
-It is generated from these files:
-	proto3_20160519_a4ab9ec5/test.proto
-
-It has these top-level messages:
-	SiblingMessage
-	Message
-*/
-package proto3_20160519_a4ab9ec5
-
-import proto "google.golang.org/protobuf/internal/protolegacy"
-import fmt "fmt"
-import 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.
-const _ = proto.ProtoPackageIsVersion1
-
-type SiblingEnum int32
-
-const (
-	SiblingEnum_ALPHA   SiblingEnum = 0
-	SiblingEnum_BRAVO   SiblingEnum = 10
-	SiblingEnum_CHARLIE SiblingEnum = 200
-)
-
-var SiblingEnum_name = map[int32]string{
-	0:   "ALPHA",
-	10:  "BRAVO",
-	200: "CHARLIE",
-}
-var SiblingEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   10,
-	"CHARLIE": 200,
-}
-
-func (x SiblingEnum) String() string {
-	return proto.EnumName(SiblingEnum_name, int32(x))
-}
-func (SiblingEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
-
-type Message_ChildEnum int32
-
-const (
-	Message_ALPHA   Message_ChildEnum = 0
-	Message_BRAVO   Message_ChildEnum = 1
-	Message_CHARLIE Message_ChildEnum = 2
-)
-
-var Message_ChildEnum_name = map[int32]string{
-	0: "ALPHA",
-	1: "BRAVO",
-	2: "CHARLIE",
-}
-var Message_ChildEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   1,
-	"CHARLIE": 2,
-}
-
-func (x Message_ChildEnum) String() string {
-	return proto.EnumName(Message_ChildEnum_name, int32(x))
-}
-func (Message_ChildEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
-
-type SiblingMessage struct {
-	F1 string   `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2 []string `protobuf:"bytes,2,rep,name=f2" json:"f2,omitempty"`
-	F3 *Message `protobuf:"bytes,3,opt,name=f3" json:"f3,omitempty"`
-}
-
-func (m *SiblingMessage) Reset()                    { *m = SiblingMessage{} }
-func (m *SiblingMessage) String() string            { return proto.CompactTextString(m) }
-func (*SiblingMessage) ProtoMessage()               {}
-func (*SiblingMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
-
-func (m *SiblingMessage) GetF3() *Message {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message struct {
-	// Optional fields.
-	OptionalBool           bool                  `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
-	OptionalInt32          int32                 `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
-	OptionalSint32         int32                 `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
-	OptionalUint32         uint32                `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
-	OptionalInt64          int64                 `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
-	OptionalSint64         int64                 `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
-	OptionalUint64         uint64                `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
-	OptionalFixed32        uint32                `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
-	OptionalSfixed32       int32                 `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
-	OptionalFloat          float32               `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
-	OptionalFixed64        uint64                `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
-	OptionalSfixed64       int64                 `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
-	OptionalDouble         float64               `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
-	OptionalString         string                `protobuf:"bytes,113,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
-	OptionalBytes          []byte                `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes,proto3" json:"optional_bytes,omitempty"`
-	OptionalChildEnum      Message_ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,enum=google.golang.org.proto3_20160519.Message_ChildEnum" json:"optional_child_enum,omitempty"`
-	OptionalChildMessage   *Message_ChildMessage `protobuf:"bytes,116,opt,name=optional_child_message,json=optionalChildMessage" json:"optional_child_message,omitempty"`
-	OptionalSiblingEnum    SiblingEnum           `protobuf:"varint,117,opt,name=optional_sibling_enum,json=optionalSiblingEnum,enum=google.golang.org.proto3_20160519.SiblingEnum" json:"optional_sibling_enum,omitempty"`
-	OptionalSiblingMessage *SiblingMessage       `protobuf:"bytes,118,opt,name=optional_sibling_message,json=optionalSiblingMessage" json:"optional_sibling_message,omitempty"`
-	// Repeated fields.
-	RepeatedBool           []bool                  `protobuf:"varint,200,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
-	RepeatedInt32          []int32                 `protobuf:"varint,201,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
-	RepeatedSint32         []int32                 `protobuf:"zigzag32,202,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
-	RepeatedUint32         []uint32                `protobuf:"varint,203,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
-	RepeatedInt64          []int64                 `protobuf:"varint,204,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
-	RepeatedSint64         []int64                 `protobuf:"zigzag64,205,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
-	RepeatedUint64         []uint64                `protobuf:"varint,206,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
-	RepeatedFixed32        []uint32                `protobuf:"fixed32,207,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
-	RepeatedSfixed32       []int32                 `protobuf:"fixed32,208,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
-	RepeatedFloat          []float32               `protobuf:"fixed32,209,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
-	RepeatedFixed64        []uint64                `protobuf:"fixed64,210,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
-	RepeatedSfixed64       []int64                 `protobuf:"fixed64,211,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
-	RepeatedDouble         []float64               `protobuf:"fixed64,212,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
-	RepeatedString         []string                `protobuf:"bytes,213,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
-	RepeatedBytes          [][]byte                `protobuf:"bytes,214,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"`
-	RepeatedChildEnum      []Message_ChildEnum     `protobuf:"varint,215,rep,name=repeated_child_enum,json=repeatedChildEnum,enum=google.golang.org.proto3_20160519.Message_ChildEnum" json:"repeated_child_enum,omitempty"`
-	RepeatedChildMessage   []*Message_ChildMessage `protobuf:"bytes,216,rep,name=repeated_child_message,json=repeatedChildMessage" json:"repeated_child_message,omitempty"`
-	RepeatedSiblingEnum    []SiblingEnum           `protobuf:"varint,217,rep,name=repeated_sibling_enum,json=repeatedSiblingEnum,enum=google.golang.org.proto3_20160519.SiblingEnum" json:"repeated_sibling_enum,omitempty"`
-	RepeatedSiblingMessage []*SiblingMessage       `protobuf:"bytes,218,rep,name=repeated_sibling_message,json=repeatedSiblingMessage" json:"repeated_sibling_message,omitempty"`
-	// Map fields.
-	MapBoolBool           map[bool]bool                  `protobuf:"bytes,300,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolInt32          map[bool]int32                 `protobuf:"bytes,301,rep,name=map_bool_int32,json=mapBoolInt32" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolSint32         map[bool]int32                 `protobuf:"bytes,302,rep,name=map_bool_sint32,json=mapBoolSint32" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
-	MapBoolUint32         map[bool]uint32                `protobuf:"bytes,303,rep,name=map_bool_uint32,json=mapBoolUint32" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolInt64          map[bool]int64                 `protobuf:"bytes,304,rep,name=map_bool_int64,json=mapBoolInt64" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolSint64         map[bool]int64                 `protobuf:"bytes,305,rep,name=map_bool_sint64,json=mapBoolSint64" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
-	MapBoolUint64         map[bool]uint64                `protobuf:"bytes,306,rep,name=map_bool_uint64,json=mapBoolUint64" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolFixed32        map[bool]uint32                `protobuf:"bytes,307,rep,name=map_bool_fixed32,json=mapBoolFixed32" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolSfixed32       map[bool]int32                 `protobuf:"bytes,308,rep,name=map_bool_sfixed32,json=mapBoolSfixed32" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolFloat          map[bool]float32               `protobuf:"bytes,309,rep,name=map_bool_float,json=mapBoolFloat" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolFixed64        map[bool]uint64                `protobuf:"bytes,310,rep,name=map_bool_fixed64,json=mapBoolFixed64" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolSfixed64       map[bool]int64                 `protobuf:"bytes,311,rep,name=map_bool_sfixed64,json=mapBoolSfixed64" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolDouble         map[bool]float64               `protobuf:"bytes,312,rep,name=map_bool_double,json=mapBoolDouble" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolString         map[bool]string                `protobuf:"bytes,313,rep,name=map_bool_string,json=mapBoolString" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolBytes          map[bool][]byte                `protobuf:"bytes,314,rep,name=map_bool_bytes,json=mapBoolBytes" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapBoolChildEnum      map[bool]Message_ChildEnum     `protobuf:"bytes,315,rep,name=map_bool_child_enum,json=mapBoolChildEnum" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto3_20160519.Message_ChildEnum"`
-	MapBoolChildMessage   map[bool]*Message_ChildMessage `protobuf:"bytes,316,rep,name=map_bool_child_message,json=mapBoolChildMessage" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolSiblingEnum    map[bool]SiblingEnum           `protobuf:"bytes,317,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto3_20160519.SiblingEnum"`
-	MapBoolSiblingMessage map[bool]*SiblingMessage       `protobuf:"bytes,318,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapInt32Bool          map[int32]bool                 `protobuf:"bytes,319,rep,name=map_int32_bool,json=mapInt32Bool" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint32Bool         map[int32]bool                 `protobuf:"bytes,320,rep,name=map_sint32_bool,json=mapSint32Bool" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint32Bool         map[uint32]bool                `protobuf:"bytes,321,rep,name=map_uint32_bool,json=mapUint32Bool" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapInt64Bool          map[int64]bool                 `protobuf:"bytes,322,rep,name=map_int64_bool,json=mapInt64Bool" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint64Bool         map[int64]bool                 `protobuf:"bytes,323,rep,name=map_sint64_bool,json=mapSint64Bool" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint64Bool         map[uint64]bool                `protobuf:"bytes,324,rep,name=map_uint64_bool,json=mapUint64Bool" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapFixed32Bool        map[uint32]bool                `protobuf:"bytes,325,rep,name=map_fixed32_bool,json=mapFixed32Bool" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapStringBool         map[string]bool                `protobuf:"bytes,326,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	// Oneof fields.
-	//
-	// Types that are valid to be assigned to OneofUnion:
-	//	*Message_OneofBool
-	//	*Message_OneofInt32
-	//	*Message_OneofSint32
-	//	*Message_OneofUint32
-	//	*Message_OneofInt64
-	//	*Message_OneofSint64
-	//	*Message_OneofUint64
-	//	*Message_OneofFixed32
-	//	*Message_OneofSfixed32
-	//	*Message_OneofFloat
-	//	*Message_OneofFixed64
-	//	*Message_OneofSfixed64
-	//	*Message_OneofDouble
-	//	*Message_OneofString
-	//	*Message_OneofBytes
-	//	*Message_OneofChildEnum
-	//	*Message_OneofChildMessage
-	//	*Message_OneofSiblingEnum
-	//	*Message_OneofSiblingMessage
-	//	*Message_OneofString1
-	//	*Message_OneofString2
-	//	*Message_OneofString3
-	OneofUnion isMessage_OneofUnion `protobuf_oneof:"oneof_union"`
-}
-
-func (m *Message) Reset()                    { *m = Message{} }
-func (m *Message) String() string            { return proto.CompactTextString(m) }
-func (*Message) ProtoMessage()               {}
-func (*Message) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
-
-type isMessage_OneofUnion interface{ isMessage_OneofUnion() }
-
-type Message_OneofBool struct {
-	OneofBool bool `protobuf:"varint,400,opt,name=oneof_bool,json=oneofBool,oneof"`
-}
-type Message_OneofInt32 struct {
-	OneofInt32 int32 `protobuf:"varint,401,opt,name=oneof_int32,json=oneofInt32,oneof"`
-}
-type Message_OneofSint32 struct {
-	OneofSint32 int32 `protobuf:"zigzag32,402,opt,name=oneof_sint32,json=oneofSint32,oneof"`
-}
-type Message_OneofUint32 struct {
-	OneofUint32 uint32 `protobuf:"varint,403,opt,name=oneof_uint32,json=oneofUint32,oneof"`
-}
-type Message_OneofInt64 struct {
-	OneofInt64 int64 `protobuf:"varint,404,opt,name=oneof_int64,json=oneofInt64,oneof"`
-}
-type Message_OneofSint64 struct {
-	OneofSint64 int64 `protobuf:"zigzag64,405,opt,name=oneof_sint64,json=oneofSint64,oneof"`
-}
-type Message_OneofUint64 struct {
-	OneofUint64 uint64 `protobuf:"varint,406,opt,name=oneof_uint64,json=oneofUint64,oneof"`
-}
-type Message_OneofFixed32 struct {
-	OneofFixed32 uint32 `protobuf:"fixed32,407,opt,name=oneof_fixed32,json=oneofFixed32,oneof"`
-}
-type Message_OneofSfixed32 struct {
-	OneofSfixed32 int32 `protobuf:"fixed32,408,opt,name=oneof_sfixed32,json=oneofSfixed32,oneof"`
-}
-type Message_OneofFloat struct {
-	OneofFloat float32 `protobuf:"fixed32,409,opt,name=oneof_float,json=oneofFloat,oneof"`
-}
-type Message_OneofFixed64 struct {
-	OneofFixed64 uint64 `protobuf:"fixed64,410,opt,name=oneof_fixed64,json=oneofFixed64,oneof"`
-}
-type Message_OneofSfixed64 struct {
-	OneofSfixed64 int64 `protobuf:"fixed64,411,opt,name=oneof_sfixed64,json=oneofSfixed64,oneof"`
-}
-type Message_OneofDouble struct {
-	OneofDouble float64 `protobuf:"fixed64,412,opt,name=oneof_double,json=oneofDouble,oneof"`
-}
-type Message_OneofString struct {
-	OneofString string `protobuf:"bytes,413,opt,name=oneof_string,json=oneofString,oneof"`
-}
-type Message_OneofBytes struct {
-	OneofBytes []byte `protobuf:"bytes,414,opt,name=oneof_bytes,json=oneofBytes,proto3,oneof"`
-}
-type Message_OneofChildEnum struct {
-	OneofChildEnum Message_ChildEnum `protobuf:"varint,415,opt,name=oneof_child_enum,json=oneofChildEnum,enum=google.golang.org.proto3_20160519.Message_ChildEnum,oneof"`
-}
-type Message_OneofChildMessage struct {
-	OneofChildMessage *Message_ChildMessage `protobuf:"bytes,416,opt,name=oneof_child_message,json=oneofChildMessage,oneof"`
-}
-type Message_OneofSiblingEnum struct {
-	OneofSiblingEnum SiblingEnum `protobuf:"varint,417,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,enum=google.golang.org.proto3_20160519.SiblingEnum,oneof"`
-}
-type Message_OneofSiblingMessage struct {
-	OneofSiblingMessage *SiblingMessage `protobuf:"bytes,418,opt,name=oneof_sibling_message,json=oneofSiblingMessage,oneof"`
-}
-type Message_OneofString1 struct {
-	OneofString1 string `protobuf:"bytes,419,opt,name=oneof_string1,json=oneofString1,oneof"`
-}
-type Message_OneofString2 struct {
-	OneofString2 string `protobuf:"bytes,420,opt,name=oneof_string2,json=oneofString2,oneof"`
-}
-type Message_OneofString3 struct {
-	OneofString3 string `protobuf:"bytes,421,opt,name=oneof_string3,json=oneofString3,oneof"`
-}
-
-func (*Message_OneofBool) isMessage_OneofUnion()           {}
-func (*Message_OneofInt32) isMessage_OneofUnion()          {}
-func (*Message_OneofSint32) isMessage_OneofUnion()         {}
-func (*Message_OneofUint32) isMessage_OneofUnion()         {}
-func (*Message_OneofInt64) isMessage_OneofUnion()          {}
-func (*Message_OneofSint64) isMessage_OneofUnion()         {}
-func (*Message_OneofUint64) isMessage_OneofUnion()         {}
-func (*Message_OneofFixed32) isMessage_OneofUnion()        {}
-func (*Message_OneofSfixed32) isMessage_OneofUnion()       {}
-func (*Message_OneofFloat) isMessage_OneofUnion()          {}
-func (*Message_OneofFixed64) isMessage_OneofUnion()        {}
-func (*Message_OneofSfixed64) isMessage_OneofUnion()       {}
-func (*Message_OneofDouble) isMessage_OneofUnion()         {}
-func (*Message_OneofString) isMessage_OneofUnion()         {}
-func (*Message_OneofBytes) isMessage_OneofUnion()          {}
-func (*Message_OneofChildEnum) isMessage_OneofUnion()      {}
-func (*Message_OneofChildMessage) isMessage_OneofUnion()   {}
-func (*Message_OneofSiblingEnum) isMessage_OneofUnion()    {}
-func (*Message_OneofSiblingMessage) isMessage_OneofUnion() {}
-func (*Message_OneofString1) isMessage_OneofUnion()        {}
-func (*Message_OneofString2) isMessage_OneofUnion()        {}
-func (*Message_OneofString3) isMessage_OneofUnion()        {}
-
-func (m *Message) GetOneofUnion() isMessage_OneofUnion {
-	if m != nil {
-		return m.OneofUnion
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalChildMessage() *Message_ChildMessage {
-	if m != nil {
-		return m.OptionalChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalSiblingMessage() *SiblingMessage {
-	if m != nil {
-		return m.OptionalSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedChildMessage() []*Message_ChildMessage {
-	if m != nil {
-		return m.RepeatedChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSiblingMessage() []*SiblingMessage {
-	if m != nil {
-		return m.RepeatedSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBool() map[bool]bool {
-	if m != nil {
-		return m.MapBoolBool
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolInt32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolUint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolInt64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolUint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolFixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSfixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFloat() map[bool]float32 {
-	if m != nil {
-		return m.MapBoolFloat
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolFixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSfixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolDouble() map[bool]float64 {
-	if m != nil {
-		return m.MapBoolDouble
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolString() map[bool]string {
-	if m != nil {
-		return m.MapBoolString
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBytes() map[bool][]byte {
-	if m != nil {
-		return m.MapBoolBytes
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildEnum() map[bool]Message_ChildEnum {
-	if m != nil {
-		return m.MapBoolChildEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildMessage() map[bool]*Message_ChildMessage {
-	if m != nil {
-		return m.MapBoolChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingEnum() map[bool]SiblingEnum {
-	if m != nil {
-		return m.MapBoolSiblingEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingMessage() map[bool]*SiblingMessage {
-	if m != nil {
-		return m.MapBoolSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapInt32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapSint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapUint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapInt64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapSint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint64Bool() map[uint64]bool {
-	if m != nil {
-		return m.MapUint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapFixed32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapFixed32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapStringBool() map[string]bool {
-	if m != nil {
-		return m.MapStringBool
-	}
-	return nil
-}
-
-func (m *Message) GetOneofBool() bool {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBool); ok {
-		return x.OneofBool
-	}
-	return false
-}
-
-func (m *Message) GetOneofInt32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt32); ok {
-		return x.OneofInt32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint32); ok {
-		return x.OneofSint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint32); ok {
-		return x.OneofUint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofInt64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt64); ok {
-		return x.OneofInt64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint64); ok {
-		return x.OneofSint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint64); ok {
-		return x.OneofUint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed32); ok {
-		return x.OneofFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed32); ok {
-		return x.OneofSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFloat() float32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFloat); ok {
-		return x.OneofFloat
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed64); ok {
-		return x.OneofFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed64); ok {
-		return x.OneofSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofDouble() float64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofDouble); ok {
-		return x.OneofDouble
-	}
-	return 0
-}
-
-func (m *Message) GetOneofString() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString); ok {
-		return x.OneofString
-	}
-	return ""
-}
-
-func (m *Message) GetOneofBytes() []byte {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBytes); ok {
-		return x.OneofBytes
-	}
-	return nil
-}
-
-func (m *Message) GetOneofChildEnum() Message_ChildEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildEnum); ok {
-		return x.OneofChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetOneofChildMessage() *Message_ChildMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildMessage); ok {
-		return x.OneofChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofSiblingEnum() SiblingEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingEnum); ok {
-		return x.OneofSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetOneofSiblingMessage() *SiblingMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingMessage); ok {
-		return x.OneofSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofString1() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString1); ok {
-		return x.OneofString1
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString2() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString2); ok {
-		return x.OneofString2
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString3() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString3); ok {
-		return x.OneofString3
-	}
-	return ""
-}
-
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*Message) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _Message_OneofMarshaler, _Message_OneofUnmarshaler, _Message_OneofSizer, []interface{}{
-		(*Message_OneofBool)(nil),
-		(*Message_OneofInt32)(nil),
-		(*Message_OneofSint32)(nil),
-		(*Message_OneofUint32)(nil),
-		(*Message_OneofInt64)(nil),
-		(*Message_OneofSint64)(nil),
-		(*Message_OneofUint64)(nil),
-		(*Message_OneofFixed32)(nil),
-		(*Message_OneofSfixed32)(nil),
-		(*Message_OneofFloat)(nil),
-		(*Message_OneofFixed64)(nil),
-		(*Message_OneofSfixed64)(nil),
-		(*Message_OneofDouble)(nil),
-		(*Message_OneofString)(nil),
-		(*Message_OneofBytes)(nil),
-		(*Message_OneofChildEnum)(nil),
-		(*Message_OneofChildMessage)(nil),
-		(*Message_OneofSiblingEnum)(nil),
-		(*Message_OneofSiblingMessage)(nil),
-		(*Message_OneofString1)(nil),
-		(*Message_OneofString2)(nil),
-		(*Message_OneofString3)(nil),
-	}
-}
-
-func _Message_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*Message)
-	// oneof_union
-	switch x := m.OneofUnion.(type) {
-	case *Message_OneofBool:
-		t := uint64(0)
-		if x.OneofBool {
-			t = 1
-		}
-		b.EncodeVarint(400<<3 | proto.WireVarint)
-		b.EncodeVarint(t)
-	case *Message_OneofInt32:
-		b.EncodeVarint(401<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofInt32))
-	case *Message_OneofSint32:
-		b.EncodeVarint(402<<3 | proto.WireVarint)
-		b.EncodeZigzag32(uint64(x.OneofSint32))
-	case *Message_OneofUint32:
-		b.EncodeVarint(403<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofUint32))
-	case *Message_OneofInt64:
-		b.EncodeVarint(404<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofInt64))
-	case *Message_OneofSint64:
-		b.EncodeVarint(405<<3 | proto.WireVarint)
-		b.EncodeZigzag64(uint64(x.OneofSint64))
-	case *Message_OneofUint64:
-		b.EncodeVarint(406<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofUint64))
-	case *Message_OneofFixed32:
-		b.EncodeVarint(407<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofFixed32))
-	case *Message_OneofSfixed32:
-		b.EncodeVarint(408<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofSfixed32))
-	case *Message_OneofFloat:
-		b.EncodeVarint(409<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(math.Float32bits(x.OneofFloat)))
-	case *Message_OneofFixed64:
-		b.EncodeVarint(410<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofFixed64))
-	case *Message_OneofSfixed64:
-		b.EncodeVarint(411<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofSfixed64))
-	case *Message_OneofDouble:
-		b.EncodeVarint(412<<3 | proto.WireFixed64)
-		b.EncodeFixed64(math.Float64bits(x.OneofDouble))
-	case *Message_OneofString:
-		b.EncodeVarint(413<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString)
-	case *Message_OneofBytes:
-		b.EncodeVarint(414<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.OneofBytes)
-	case *Message_OneofChildEnum:
-		b.EncodeVarint(415<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofChildEnum))
-	case *Message_OneofChildMessage:
-		b.EncodeVarint(416<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofChildMessage); err != nil {
-			return err
-		}
-	case *Message_OneofSiblingEnum:
-		b.EncodeVarint(417<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofSiblingEnum))
-	case *Message_OneofSiblingMessage:
-		b.EncodeVarint(418<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofSiblingMessage); err != nil {
-			return err
-		}
-	case *Message_OneofString1:
-		b.EncodeVarint(419<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString1)
-	case *Message_OneofString2:
-		b.EncodeVarint(420<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString2)
-	case *Message_OneofString3:
-		b.EncodeVarint(421<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString3)
-	case nil:
-	default:
-		return fmt.Errorf("Message.OneofUnion has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _Message_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*Message)
-	switch tag {
-	case 400: // oneof_union.oneof_bool
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofBool{x != 0}
-		return true, err
-	case 401: // oneof_union.oneof_int32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofInt32{int32(x)}
-		return true, err
-	case 402: // oneof_union.oneof_sint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag32()
-		m.OneofUnion = &Message_OneofSint32{int32(x)}
-		return true, err
-	case 403: // oneof_union.oneof_uint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofUint32{uint32(x)}
-		return true, err
-	case 404: // oneof_union.oneof_int64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofInt64{int64(x)}
-		return true, err
-	case 405: // oneof_union.oneof_sint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag64()
-		m.OneofUnion = &Message_OneofSint64{int64(x)}
-		return true, err
-	case 406: // oneof_union.oneof_uint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofUint64{x}
-		return true, err
-	case 407: // oneof_union.oneof_fixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofFixed32{uint32(x)}
-		return true, err
-	case 408: // oneof_union.oneof_sfixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofSfixed32{int32(x)}
-		return true, err
-	case 409: // oneof_union.oneof_float
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofFloat{math.Float32frombits(uint32(x))}
-		return true, err
-	case 410: // oneof_union.oneof_fixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofFixed64{x}
-		return true, err
-	case 411: // oneof_union.oneof_sfixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofSfixed64{int64(x)}
-		return true, err
-	case 412: // oneof_union.oneof_double
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofDouble{math.Float64frombits(x)}
-		return true, err
-	case 413: // oneof_union.oneof_string
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString{x}
-		return true, err
-	case 414: // oneof_union.oneof_bytes
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.OneofUnion = &Message_OneofBytes{x}
-		return true, err
-	case 415: // oneof_union.oneof_child_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofChildEnum{Message_ChildEnum(x)}
-		return true, err
-	case 416: // oneof_union.oneof_child_message
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Message_ChildMessage)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofChildMessage{msg}
-		return true, err
-	case 417: // oneof_union.oneof_sibling_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofSiblingEnum{SiblingEnum(x)}
-		return true, err
-	case 418: // oneof_union.oneof_sibling_message
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(SiblingMessage)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofSiblingMessage{msg}
-		return true, err
-	case 419: // oneof_union.oneof_string1
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString1{x}
-		return true, err
-	case 420: // oneof_union.oneof_string2
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString2{x}
-		return true, err
-	case 421: // oneof_union.oneof_string3
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString3{x}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _Message_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*Message)
-	// oneof_union
-	switch x := m.OneofUnion.(type) {
-	case *Message_OneofBool:
-		n += proto.SizeVarint(400<<3 | proto.WireVarint)
-		n += 1
-	case *Message_OneofInt32:
-		n += proto.SizeVarint(401<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofInt32))
-	case *Message_OneofSint32:
-		n += proto.SizeVarint(402<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64((uint32(x.OneofSint32) << 1) ^ uint32((int32(x.OneofSint32) >> 31))))
-	case *Message_OneofUint32:
-		n += proto.SizeVarint(403<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofUint32))
-	case *Message_OneofInt64:
-		n += proto.SizeVarint(404<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofInt64))
-	case *Message_OneofSint64:
-		n += proto.SizeVarint(405<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(uint64(x.OneofSint64<<1) ^ uint64((int64(x.OneofSint64) >> 63))))
-	case *Message_OneofUint64:
-		n += proto.SizeVarint(406<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofUint64))
-	case *Message_OneofFixed32:
-		n += proto.SizeVarint(407<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofSfixed32:
-		n += proto.SizeVarint(408<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofFloat:
-		n += proto.SizeVarint(409<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofFixed64:
-		n += proto.SizeVarint(410<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofSfixed64:
-		n += proto.SizeVarint(411<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofDouble:
-		n += proto.SizeVarint(412<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofString:
-		n += proto.SizeVarint(413<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString)))
-		n += len(x.OneofString)
-	case *Message_OneofBytes:
-		n += proto.SizeVarint(414<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofBytes)))
-		n += len(x.OneofBytes)
-	case *Message_OneofChildEnum:
-		n += proto.SizeVarint(415<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofChildEnum))
-	case *Message_OneofChildMessage:
-		s := proto.Size(x.OneofChildMessage)
-		n += proto.SizeVarint(416<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_OneofSiblingEnum:
-		n += proto.SizeVarint(417<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofSiblingEnum))
-	case *Message_OneofSiblingMessage:
-		s := proto.Size(x.OneofSiblingMessage)
-		n += proto.SizeVarint(418<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_OneofString1:
-		n += proto.SizeVarint(419<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString1)))
-		n += len(x.OneofString1)
-	case *Message_OneofString2:
-		n += proto.SizeVarint(420<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString2)))
-		n += len(x.OneofString2)
-	case *Message_OneofString3:
-		n += proto.SizeVarint(421<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString3)))
-		n += len(x.OneofString3)
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
-type Message_ChildMessage struct {
-	F1 string   `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2 []string `protobuf:"bytes,2,rep,name=f2" json:"f2,omitempty"`
-	F3 *Message `protobuf:"bytes,3,opt,name=f3" json:"f3,omitempty"`
-}
-
-func (m *Message_ChildMessage) Reset()                    { *m = Message_ChildMessage{} }
-func (m *Message_ChildMessage) String() string            { return proto.CompactTextString(m) }
-func (*Message_ChildMessage) ProtoMessage()               {}
-func (*Message_ChildMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
-
-func (m *Message_ChildMessage) GetF3() *Message {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func init() {
-	proto.RegisterType((*SiblingMessage)(nil), "google.golang.org.proto3_20160519.SiblingMessage")
-	proto.RegisterType((*Message)(nil), "google.golang.org.proto3_20160519.Message")
-	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto3_20160519.Message.ChildMessage")
-	proto.RegisterEnum("google.golang.org.proto3_20160519.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
-	proto.RegisterEnum("google.golang.org.proto3_20160519.Message_ChildEnum", Message_ChildEnum_name, Message_ChildEnum_value)
-}
-
-var fileDescriptor0 = []byte{
-	// 1947 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x9a, 0x57, 0x73, 0xdb, 0xca,
-	0x15, 0xc7, 0x09, 0x52, 0xc5, 0x5a, 0xb1, 0x82, 0x96, 0xb2, 0xa3, 0x27, 0x44, 0x76, 0x1c, 0xc4,
-	0xc9, 0x50, 0x26, 0x05, 0x23, 0xb1, 0x93, 0xd8, 0x96, 0x6c, 0x39, 0x74, 0xc6, 0x4e, 0x3c, 0xf0,
-	0x28, 0x0f, 0x79, 0x51, 0x48, 0x09, 0xa4, 0x69, 0x83, 0x84, 0x22, 0x92, 0x9e, 0x68, 0xf2, 0xe0,
-	0xaf, 0x90, 0xde, 0xeb, 0x2d, 0x6f, 0xb7, 0xf7, 0xde, 0x7d, 0xc7, 0xb7, 0xf7, 0xfa, 0x69, 0xee,
-	0x2c, 0x0e, 0xb6, 0x01, 0xa0, 0x49, 0x82, 0x73, 0x1f, 0x3c, 0x23, 0x1d, 0xfe, 0xf7, 0xfc, 0x78,
-	0x0e, 0xce, 0x9e, 0xb3, 0x0b, 0x0b, 0x1d, 0xda, 0xdd, 0x73, 0x7b, 0xee, 0xea, 0x56, 0xe5, 0x58,
-	0xd9, 0x3c, 0x76, 0xbc, 0x7c, 0x62, 0xab, 0x66, 0xd4, 0xea, 0x27, 0xec, 0xed, 0xe3, 0x2b, 0x3d,
-	0xbb, 0xdb, 0x2b, 0x79, 0x9f, 0xaa, 0xdf, 0x6c, 0xba, 0x6e, 0xd3, 0xb1, 0x4b, 0x4d, 0xd7, 0xa9,
-	0x75, 0x9a, 0x25, 0x77, 0xaf, 0x59, 0x0a, 0x2c, 0x5b, 0x76, 0x50, 0xf6, 0x4a, 0xab, 0xee, 0xb4,
-	0x3a, 0xcd, 0x4b, 0x76, 0xb7, 0x5b, 0x6b, 0xda, 0x6a, 0x16, 0x25, 0x1b, 0x65, 0xac, 0x68, 0x8a,
-	0x3e, 0x67, 0x25, 0x1b, 0x65, 0xef, 0xf7, 0x0a, 0x4e, 0x6a, 0x29, 0xef, 0xf7, 0x8a, 0x7a, 0x12,
-	0x25, 0x1b, 0xab, 0x38, 0xa5, 0x29, 0xfa, 0x7c, 0xe5, 0x68, 0x69, 0x28, 0xa1, 0xe4, 0xfb, 0xb5,
-	0x92, 0x8d, 0xd5, 0xe5, 0x5b, 0x67, 0xd0, 0x2c, 0xe5, 0x1c, 0x42, 0x19, 0x77, 0xb7, 0xd7, 0x72,
-	0x3b, 0x35, 0x67, 0xab, 0xee, 0xba, 0x0e, 0xde, 0xd1, 0x14, 0xfd, 0x80, 0x95, 0xa6, 0xc6, 0x75,
-	0xd7, 0x75, 0xd4, 0x6f, 0xa1, 0x2c, 0x13, 0xb5, 0x3a, 0xbd, 0xd5, 0x0a, 0xb6, 0x35, 0x45, 0x9f,
-	0xb6, 0xd8, 0xd2, 0x0b, 0xc4, 0xa8, 0x7e, 0x1b, 0xe5, 0x98, 0xac, 0x0b, 0xba, 0x86, 0xa6, 0xe8,
-	0x05, 0x8b, 0xad, 0xbe, 0xd2, 0x0a, 0x09, 0xfb, 0x20, 0x6c, 0x6a, 0x8a, 0x9e, 0xe1, 0xc2, 0x4d,
-	0x10, 0x06, 0xc0, 0xa6, 0x81, 0xaf, 0x6a, 0x8a, 0x9e, 0x92, 0xc0, 0xa6, 0x11, 0x02, 0x9b, 0x06,
-	0x6e, 0x69, 0x8a, 0xae, 0xca, 0xe0, 0x80, 0xb0, 0x0f, 0xc2, 0x6b, 0x9a, 0xa2, 0x4f, 0xc9, 0x60,
-	0xd3, 0x50, 0xbf, 0x83, 0xf2, 0x4c, 0xd8, 0x68, 0xfd, 0xc6, 0xde, 0x59, 0xad, 0xe0, 0xeb, 0x9a,
-	0xa2, 0xcf, 0x5a, 0xcc, 0xc1, 0x79, 0x30, 0xab, 0xdf, 0x45, 0x05, 0x0e, 0xa7, 0x5a, 0x47, 0x53,
-	0xf4, 0x9c, 0xc5, 0x7c, 0x5c, 0xf1, 0xed, 0x52, 0x40, 0x0d, 0xc7, 0xad, 0xf5, 0x70, 0x5b, 0x53,
-	0xf4, 0x24, 0x0f, 0xe8, 0x3c, 0x31, 0x86, 0xf1, 0xa6, 0x81, 0x3b, 0x9a, 0xa2, 0xcf, 0x04, 0xf0,
-	0xa6, 0x11, 0x81, 0x37, 0x0d, 0xec, 0x6a, 0x8a, 0x9e, 0x0f, 0xe2, 0x03, 0xf1, 0xef, 0xb8, 0xfd,
-	0xba, 0x63, 0xe3, 0x5d, 0x4d, 0xd1, 0x15, 0x1e, 0xff, 0x39, 0xcf, 0x2a, 0x67, 0xb4, 0xb7, 0xd7,
-	0xea, 0x34, 0xf1, 0xaf, 0xbd, 0x5a, 0xe4, 0x19, 0xf5, 0xac, 0x52, 0x40, 0xf5, 0xfd, 0x9e, 0xdd,
-	0xc5, 0x7b, 0x9a, 0xa2, 0xa7, 0x79, 0x40, 0xeb, 0xc4, 0xa8, 0xee, 0xa0, 0x22, 0x93, 0x6d, 0x5f,
-	0x6d, 0x39, 0x3b, 0x5b, 0x76, 0xa7, 0xdf, 0xc6, 0x5d, 0x4d, 0xd1, 0xb3, 0x15, 0x63, 0xf4, 0xfa,
-	0x2d, 0x9d, 0x25, 0x8b, 0x37, 0x3a, 0xfd, 0xb6, 0xc5, 0xc2, 0x66, 0x26, 0xb5, 0x8d, 0x16, 0x03,
-	0x94, 0x36, 0x2c, 0xc3, 0x3d, 0x6f, 0xa3, 0x7c, 0x7f, 0x5c, 0x10, 0xdd, 0x35, 0x07, 0x25, 0x16,
-	0xdd, 0x3b, 0x75, 0xb4, 0x20, 0x94, 0x9d, 0xb7, 0x7d, 0x21, 0xac, 0xbe, 0x17, 0x56, 0x69, 0x04,
-	0x9a, 0xbf, 0xeb, 0xbd, 0x80, 0x8a, 0xbc, 0x58, 0x99, 0x51, 0xbd, 0x8e, 0x70, 0x88, 0x41, 0x83,
-	0xba, 0xe1, 0x05, 0x55, 0x1e, 0x1d, 0x43, 0xc3, 0x59, 0x0c, 0x90, 0x68, 0x40, 0x87, 0x51, 0x66,
-	0xcf, 0xde, 0xb5, 0x6b, 0x3d, 0x7b, 0x07, 0x9a, 0xc1, 0x6d, 0x45, 0x4b, 0x91, 0x6e, 0x40, 0xad,
-	0x5e, 0x37, 0x38, 0x82, 0xb2, 0x4c, 0x05, 0x9b, 0xf7, 0x0d, 0x22, 0x9b, 0xb6, 0xd8, 0x62, 0x68,
-	0x07, 0x3a, 0xca, 0x31, 0x9d, 0xdf, 0x0e, 0xde, 0x24, 0xc2, 0x82, 0xc5, 0xd6, 0xfb, 0xfd, 0x40,
-	0x54, 0xfa, 0xfd, 0xe0, 0x2d, 0xa2, 0xcc, 0x70, 0xa5, 0xdf, 0x10, 0x02, 0x6c, 0xd3, 0xc0, 0x6f,
-	0x13, 0x61, 0x4a, 0x62, 0x9b, 0x46, 0x88, 0x6d, 0x1a, 0xf8, 0x1d, 0x22, 0x54, 0x65, 0x76, 0x40,
-	0xe9, 0xb7, 0x84, 0x77, 0x89, 0x72, 0x4a, 0x66, 0x9b, 0x86, 0x7a, 0x14, 0xe5, 0x99, 0x92, 0xee,
-	0xf3, 0xf7, 0x88, 0x74, 0xd6, 0x62, 0x2e, 0x68, 0x53, 0xf8, 0x1e, 0x2a, 0x70, 0x3e, 0x15, 0xbf,
-	0x4f, 0xc4, 0x39, 0x8b, 0x79, 0x61, 0x5d, 0x41, 0x8c, 0x0a, 0xba, 0xc2, 0x07, 0x44, 0x9a, 0xe4,
-	0x51, 0x41, 0x5b, 0x08, 0x7d, 0x03, 0xd3, 0xc0, 0x1f, 0x12, 0xe5, 0x4c, 0xe0, 0x1b, 0x98, 0x46,
-	0xc4, 0x37, 0x30, 0x0d, 0xfc, 0x11, 0x11, 0xe7, 0x83, 0xdf, 0x20, 0x90, 0x05, 0xbf, 0x31, 0x7c,
-	0x4c, 0xb4, 0x0a, 0xcf, 0x82, 0xdf, 0x19, 0xa4, 0xcc, 0x42, 0x67, 0xf8, 0x44, 0xf1, 0xc6, 0x12,
-	0xcf, 0x2c, 0xb4, 0x06, 0x31, 0x2a, 0x68, 0x0d, 0x9f, 0x12, 0x61, 0x9a, 0x47, 0x05, 0xbd, 0xc1,
-	0x46, 0x45, 0xa6, 0x13, 0x7a, 0xc3, 0x67, 0x44, 0x1c, 0xbb, 0x39, 0x50, 0x8f, 0xbc, 0x39, 0x74,
-	0xd0, 0x62, 0x00, 0x43, 0xf7, 0xd1, 0xe7, 0x84, 0x34, 0x49, 0x77, 0x90, 0x60, 0x74, 0x33, 0x6d,
-	0xa3, 0x05, 0xa1, 0x04, 0x85, 0xee, 0xf0, 0x05, 0x04, 0x36, 0x76, 0x7b, 0xe0, 0x85, 0xcb, 0xdb,
-	0x83, 0x83, 0x70, 0x08, 0x42, 0xc3, 0xfa, 0x12, 0xc2, 0x8a, 0xd3, 0x1f, 0x02, 0x28, 0x1a, 0xd2,
-	0xaf, 0x50, 0xa6, 0x5d, 0xdb, 0xf5, 0x5a, 0x03, 0xf4, 0x87, 0xfb, 0x92, 0x1e, 0xe2, 0x87, 0x63,
-	0x64, 0xee, 0x52, 0x6d, 0x97, 0x74, 0x11, 0xf2, 0x6f, 0xa3, 0xd3, 0xdb, 0xdb, 0xb7, 0xe6, 0xdb,
-	0xdc, 0xa2, 0x6e, 0xa3, 0x2c, 0x23, 0x40, 0x23, 0xb8, 0x1f, 0x10, 0x3f, 0x1a, 0x1f, 0xe1, 0x75,
-	0x21, 0x60, 0xa4, 0xdb, 0x82, 0x49, 0x6d, 0xa0, 0x1c, 0x83, 0xf8, 0x8d, 0xe9, 0x01, 0xa0, 0xfc,
-	0x78, 0x7c, 0x0a, 0xb4, 0x30, 0xc0, 0x64, 0xda, 0xa2, 0x4d, 0xe2, 0xf8, 0x6d, 0xed, 0xc1, 0xd8,
-	0x9c, 0xcd, 0x08, 0x8e, 0xdf, 0x14, 0x03, 0x49, 0x33, 0x0d, 0xfc, 0xd0, 0x24, 0x49, 0x33, 0x8d,
-	0x50, 0xd2, 0x4c, 0x23, 0x94, 0x34, 0xd3, 0xc0, 0x0f, 0x4f, 0x94, 0x34, 0x8a, 0x11, 0x93, 0x16,
-	0xe0, 0xf8, 0xfd, 0xf8, 0x91, 0x89, 0x92, 0x16, 0xe4, 0xf8, 0xdd, 0xbc, 0x85, 0xf2, 0x8c, 0x43,
-	0x1b, 0xf4, 0xa3, 0x00, 0x3a, 0x35, 0x3e, 0xc8, 0xef, 0xfb, 0x40, 0xca, 0xb6, 0x25, 0xa3, 0xea,
-	0xa0, 0x02, 0x4f, 0x1d, 0x65, 0x3d, 0x06, 0xac, 0xd3, 0x31, 0x92, 0xd7, 0x10, 0x61, 0xb9, 0xb6,
-	0x6c, 0x95, 0xaa, 0x01, 0x86, 0xc9, 0xe3, 0xb1, 0xab, 0xc1, 0x1b, 0x3b, 0x72, 0x35, 0xc0, 0x24,
-	0x0a, 0x65, 0xcf, 0x34, 0xf0, 0x13, 0x93, 0x65, 0x8f, 0x3e, 0x27, 0x29, 0x7b, 0xa6, 0x11, 0x91,
-	0x3d, 0xd3, 0xc0, 0x4f, 0x4e, 0x98, 0x3d, 0x0a, 0x93, 0xb3, 0x17, 0x28, 0x3f, 0x7f, 0x10, 0x3e,
-	0x15, 0xbb, 0xfc, 0x60, 0x64, 0xca, 0xe5, 0xe7, 0x8f, 0x51, 0x69, 0x3b, 0xc1, 0x18, 0x7d, 0x3a,
-	0xfe, 0x76, 0xf2, 0x1c, 0x04, 0xb6, 0x13, 0x0c, 0x61, 0xb1, 0x1a, 0x60, 0x08, 0x3f, 0x13, 0xbb,
-	0x1a, 0xbc, 0x71, 0x2d, 0x57, 0x03, 0x4c, 0xf0, 0x5d, 0x54, 0x64, 0x10, 0x61, 0x82, 0x3f, 0x0b,
-	0xa4, 0x33, 0xe3, 0x93, 0xd8, 0xd4, 0x06, 0x5a, 0xbe, 0x1d, 0x30, 0xab, 0xfb, 0x68, 0x31, 0x40,
-	0xa4, 0x53, 0xef, 0x39, 0x80, 0x9e, 0x8d, 0x09, 0xf5, 0x6d, 0xc0, 0x2d, 0xb6, 0xc3, 0x9f, 0xa8,
-	0x37, 0xd0, 0x82, 0xd0, 0x08, 0x85, 0xb9, 0xfe, 0x3c, 0x90, 0xd7, 0xe3, 0xb4, 0x43, 0x36, 0xd1,
-	0x01, 0xac, 0xb6, 0x43, 0x1f, 0xa8, 0x37, 0x11, 0x0e, 0x71, 0x69, 0xd0, 0x2f, 0x00, 0x7a, 0x23,
-	0x36, 0x5a, 0x0a, 0x7b, 0xa1, 0x1d, 0xf5, 0x19, 0x2d, 0x25, 0x6f, 0xe6, 0xc0, 0xf8, 0x7f, 0x31,
-	0x56, 0x29, 0x79, 0x43, 0x98, 0xcf, 0x7f, 0x52, 0x4a, 0xcc, 0x44, 0xf7, 0x45, 0x57, 0xa0, 0xbc,
-	0x14, 0x6b, 0x5f, 0xc0, 0x0c, 0xe6, 0x18, 0xb2, 0x2f, 0xb8, 0x8d, 0x72, 0xfa, 0x02, 0xe7, 0xe5,
-	0x58, 0x9c, 0xcd, 0x08, 0x0e, 0xb7, 0x09, 0x49, 0x33, 0x0d, 0xc0, 0xbc, 0x12, 0x37, 0x69, 0xa6,
-	0x11, 0x4a, 0x1a, 0x98, 0xc4, 0xa4, 0x51, 0xca, 0xab, 0xb1, 0x93, 0x26, 0x62, 0x68, 0xd2, 0x64,
-	0x4e, 0x5f, 0xe0, 0xbc, 0x16, 0x3b, 0x69, 0x41, 0x0e, 0xb7, 0xd1, 0xe9, 0xe2, 0x4f, 0x34, 0x00,
-	0xdd, 0x8a, 0x35, 0x5d, 0xfc, 0x11, 0xcc, 0x49, 0xe4, 0x69, 0x08, 0x46, 0x96, 0x3a, 0xaf, 0x5b,
-	0x02, 0xe9, 0xf5, 0x78, 0xa9, 0xf3, 0x3c, 0x04, 0x52, 0xc7, 0x6c, 0xaa, 0x86, 0x90, 0xdb, 0xb1,
-	0xdd, 0x06, 0x20, 0x7e, 0x97, 0xd2, 0x14, 0xfd, 0x40, 0x35, 0x61, 0xcd, 0x79, 0x46, 0x4f, 0xb1,
-	0x8c, 0xe6, 0x41, 0x01, 0x27, 0xc5, 0xdf, 0x13, 0xc9, 0x74, 0x35, 0x61, 0xc1, 0x3a, 0x38, 0xb9,
-	0x1e, 0x46, 0x69, 0xd0, 0xf8, 0xc7, 0xd6, 0x3f, 0x10, 0x51, 0xa1, 0x9a, 0xb0, 0x60, 0xa9, 0x7f,
-	0xee, 0x64, 0x2a, 0xff, 0xd0, 0xf9, 0x47, 0xa2, 0xca, 0x30, 0x95, 0x7f, 0x6a, 0x14, 0x79, 0xa6,
-	0x81, 0xff, 0x44, 0x44, 0x29, 0x91, 0x67, 0x1a, 0x32, 0xcf, 0x34, 0xf0, 0x9f, 0x89, 0x48, 0x95,
-	0x78, 0xa2, 0xca, 0x3f, 0xaf, 0xfd, 0x85, 0xa8, 0xa6, 0x24, 0x9e, 0x69, 0xa8, 0x47, 0x50, 0x06,
-	0x54, 0xf4, 0x04, 0xf4, 0x57, 0x22, 0x9b, 0xad, 0x26, 0x2c, 0x58, 0x4d, 0x4f, 0x4b, 0x3a, 0xca,
-	0xfa, 0x4c, 0x2a, 0xfc, 0x1b, 0x11, 0xe6, 0xaa, 0x09, 0x0b, 0x1c, 0xb0, 0x93, 0x0e, 0x8b, 0x00,
-	0x8e, 0x39, 0x7f, 0x27, 0xb2, 0x24, 0x8b, 0x00, 0x0e, 0x2a, 0x32, 0xd5, 0x34, 0xf0, 0x3f, 0x88,
-	0x6a, 0x46, 0xa6, 0x7a, 0x17, 0x60, 0x89, 0x6a, 0x1a, 0xf8, 0x9f, 0x44, 0x98, 0x0f, 0x50, 0xc5,
-	0x68, 0xfd, 0xe3, 0xc1, 0xbf, 0x88, 0x4e, 0x61, 0xd1, 0xfa, 0xf3, 0x9d, 0x67, 0x0e, 0x86, 0xfb,
-	0xbf, 0x89, 0x6a, 0x8e, 0x67, 0x0e, 0xa6, 0x33, 0x8b, 0x00, 0x46, 0xf3, 0x7f, 0x88, 0x28, 0xcd,
-	0x22, 0x80, 0xe1, 0x5a, 0x43, 0x79, 0xd0, 0x08, 0x93, 0xf5, 0xbf, 0xa9, 0xf8, 0x2f, 0xce, 0xaa,
-	0x09, 0x0b, 0x42, 0xe5, 0xd3, 0xf4, 0x1a, 0x2a, 0x8a, 0x08, 0x3a, 0x55, 0xfe, 0x97, 0x9a, 0xe8,
-	0xad, 0x59, 0x35, 0x61, 0x15, 0x38, 0x88, 0x4e, 0x91, 0x2d, 0xa4, 0xd2, 0x92, 0x12, 0x66, 0xe7,
-	0xff, 0x53, 0x71, 0x5e, 0x99, 0x55, 0x13, 0x56, 0xde, 0x2f, 0x44, 0x3e, 0x27, 0xaf, 0xa2, 0x05,
-	0x19, 0x40, 0xc3, 0xb9, 0x2b, 0x15, 0xf3, 0x7d, 0x59, 0x35, 0x61, 0x15, 0x45, 0x0c, 0x0d, 0x85,
-	0xd5, 0x16, 0x3c, 0xe3, 0x32, 0xbe, 0x9b, 0x3e, 0xe4, 0xb4, 0xf0, 0x90, 0xcb, 0x41, 0x5d, 0x05,
-	0xdf, 0x13, 0xa5, 0xab, 0x04, 0x75, 0xab, 0xf8, 0xde, 0x28, 0xdd, 0xea, 0xd2, 0x35, 0x94, 0x96,
-	0x52, 0xfa, 0x35, 0xfe, 0x5f, 0xc1, 0xd2, 0x29, 0x94, 0x0f, 0xde, 0xd8, 0xd5, 0x3c, 0x4a, 0x5d,
-	0xb7, 0xf7, 0x3d, 0xe0, 0x01, 0x8b, 0xfc, 0xa8, 0x1e, 0x44, 0xd3, 0x37, 0x6a, 0x4e, 0xdf, 0xc6,
-	0x49, 0xcf, 0x06, 0xbf, 0x9c, 0x4c, 0xfe, 0x40, 0x59, 0x3a, 0x8d, 0x0a, 0xa1, 0xeb, 0xf8, 0x30,
-	0x07, 0xd3, 0xa2, 0x83, 0x33, 0x48, 0x0d, 0xdf, 0xb4, 0x87, 0x79, 0x28, 0x44, 0x7b, 0xd8, 0x1c,
-	0xdd, 0x43, 0x66, 0x60, 0x10, 0xfe, 0xd5, 0x61, 0x98, 0x83, 0xd4, 0xe0, 0x20, 0x46, 0xf4, 0xa0,
-	0x0e, 0x0e, 0x62, 0x44, 0x0f, 0x53, 0xa2, 0x87, 0x35, 0x54, 0x8c, 0xb8, 0xac, 0x0e, 0x73, 0x31,
-	0x2b, 0xba, 0x58, 0x47, 0x07, 0xa3, 0xee, 0xa0, 0xc3, 0x7c, 0xe4, 0xa2, 0x73, 0xc9, 0x2f, 0x97,
-	0xc3, 0x1c, 0x24, 0xef, 0x10, 0xc7, 0x88, 0xa9, 0x98, 0xb9, 0x53, 0x1c, 0x23, 0xfa, 0xc8, 0x47,
-	0x3f, 0x10, 0xe1, 0x96, 0x37, 0xcc, 0x83, 0x32, 0xa0, 0x28, 0xf8, 0xfd, 0x6d, 0x98, 0x87, 0xb9,
-	0xe8, 0x5c, 0xf2, 0xab, 0xd9, 0x30, 0x07, 0x69, 0xd1, 0xc1, 0x3e, 0x5a, 0x88, 0xbc, 0x71, 0x45,
-	0x38, 0xf9, 0xa9, 0xe8, 0x24, 0xee, 0x6b, 0x59, 0x01, 0x7d, 0x13, 0xe1, 0x41, 0xf7, 0xae, 0x08,
-	0xfa, 0x25, 0x91, 0x3e, 0xc1, 0xab, 0x5a, 0xe1, 0x0b, 0xf4, 0xd1, 0x37, 0x06, 0x5c, 0xbf, 0x22,
-	0xf8, 0xe7, 0xe4, 0xe8, 0xc7, 0x7d, 0x77, 0x2b, 0x60, 0x7f, 0x8b, 0x96, 0x06, 0x5f, 0xbd, 0x22,
-	0xc8, 0x3f, 0x91, 0x23, 0x8f, 0xf1, 0x36, 0x37, 0x54, 0x30, 0xf2, 0x05, 0x4c, 0x64, 0x4e, 0x0f,
-	0x6b, 0xe7, 0x50, 0xb3, 0x81, 0xbb, 0x95, 0xe8, 0xa1, 0x30, 0x9a, 0x87, 0xcd, 0xc1, 0x1e, 0x32,
-	0xa3, 0x8d, 0x14, 0xf9, 0x42, 0x24, 0x3a, 0x48, 0x8d, 0x1e, 0xc4, 0x00, 0x0f, 0xea, 0xe8, 0x41,
-	0x0c, 0xf0, 0x30, 0x35, 0xcc, 0x03, 0x74, 0xb1, 0xe0, 0xf5, 0x44, 0x74, 0x31, 0x3b, 0x62, 0x18,
-	0xf2, 0xbd, 0x43, 0xf4, 0x30, 0x37, 0xc4, 0xc3, 0x72, 0x09, 0xcd, 0xf1, 0x43, 0xe0, 0x1c, 0x9a,
-	0x5e, 0xbb, 0x78, 0xb9, 0xba, 0x96, 0x4f, 0x90, 0x1f, 0xd7, 0xad, 0xb5, 0x5f, 0xfc, 0x3c, 0xaf,
-	0xa8, 0xf3, 0x68, 0xf6, 0x6c, 0x75, 0xcd, 0xba, 0x78, 0x61, 0x23, 0x9f, 0x5c, 0xcf, 0xd0, 0xe3,
-	0x6a, 0xbf, 0xd3, 0x72, 0x3b, 0x47, 0xcb, 0x68, 0x5e, 0x3c, 0x78, 0x45, 0x39, 0x40, 0x6a, 0x9a,
-	0x3b, 0xb8, 0xad, 0xac, 0x5f, 0xfe, 0xe5, 0xcf, 0x42, 0xf5, 0xbb, 0xe2, 0xd5, 0x6f, 0xbd, 0xdf,
-	0x58, 0x69, 0x75, 0x7a, 0xf6, 0x5e, 0xa7, 0xe6, 0x78, 0x7f, 0x3d, 0xe1, 0x59, 0xbb, 0x2b, 0x8e,
-	0xdd, 0xac, 0x6d, 0xef, 0xaf, 0x0c, 0xfa, 0x43, 0x8b, 0xfa, 0x0c, 0x7c, 0xf2, 0x55, 0x00, 0x00,
-	0x00, 0xff, 0xff, 0xb9, 0x46, 0x32, 0x11, 0x8b, 0x21, 0x00, 0x00,
-}
diff --git a/internal/testprotos/legacy/proto3_20160519_a4ab9ec5/test.proto b/internal/testprotos/legacy/proto3_20160519_a4ab9ec5/test.proto
deleted file mode 100644
index 6d031a4..0000000
--- a/internal/testprotos/legacy/proto3_20160519_a4ab9ec5/test.proto
+++ /dev/null
@@ -1,136 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-
-package google.golang.org.proto3_20160519;
-option go_package = "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20160519_a4ab9ec5";
-
-enum SiblingEnum {
-	ALPHA   = 0;
-	BRAVO   = 10;
-	CHARLIE = 200;
-}
-
-message SiblingMessage {
-	string          f1 = 1;
-	repeated string f2 = 2;
-	Message         f3 = 3;
-}
-
-message Message {
-	enum ChildEnum {
-		ALPHA   = 0;
-		BRAVO   = 1;
-		CHARLIE = 2;
-	}
-	message ChildMessage {
-		string          f1 = 1;
-		repeated string f2 = 2;
-		Message         f3 = 3;
-	}
-
-	// Optional fields.
-	bool     optional_bool     = 100;
-	int32    optional_int32    = 101;
-	sint32   optional_sint32   = 102;
-	uint32   optional_uint32   = 103;
-	int64    optional_int64    = 104;
-	sint64   optional_sint64   = 105;
-	uint64   optional_uint64   = 106;
-	fixed32  optional_fixed32  = 107;
-	sfixed32 optional_sfixed32 = 108;
-	float    optional_float    = 109;
-	fixed64  optional_fixed64  = 110;
-	sfixed64 optional_sfixed64 = 111;
-	double   optional_double   = 112;
-	string   optional_string   = 113;
-	bytes    optional_bytes    = 114;
-
-	ChildEnum      optional_child_enum      = 115;
-	ChildMessage   optional_child_message   = 116;
-	SiblingEnum    optional_sibling_enum    = 117;
-	SiblingMessage optional_sibling_message = 118;
-
-	// Repeated fields.
-	repeated bool     repeated_bool     = 200;
-	repeated int32    repeated_int32    = 201;
-	repeated sint32   repeated_sint32   = 202;
-	repeated uint32   repeated_uint32   = 203;
-	repeated int64    repeated_int64    = 204;
-	repeated sint64   repeated_sint64   = 205;
-	repeated uint64   repeated_uint64   = 206;
-	repeated fixed32  repeated_fixed32  = 207;
-	repeated sfixed32 repeated_sfixed32 = 208;
-	repeated float    repeated_float    = 209;
-	repeated fixed64  repeated_fixed64  = 210;
-	repeated sfixed64 repeated_sfixed64 = 211;
-	repeated double   repeated_double   = 212;
-	repeated string   repeated_string   = 213;
-	repeated bytes    repeated_bytes    = 214;
-
-	repeated ChildEnum      repeated_child_enum      = 215;
-	repeated ChildMessage   repeated_child_message   = 216;
-	repeated SiblingEnum    repeated_sibling_enum    = 217;
-	repeated SiblingMessage repeated_sibling_message = 218;
-
-	// Map fields.
-	map<bool, bool>     map_bool_bool     = 300;
-	map<bool, int32>    map_bool_int32    = 301;
-	map<bool, sint32>   map_bool_sint32   = 302;
-	map<bool, uint32>   map_bool_uint32   = 303;
-	map<bool, int64>    map_bool_int64    = 304;
-	map<bool, sint64>   map_bool_sint64   = 305;
-	map<bool, uint64>   map_bool_uint64   = 306;
-	map<bool, fixed32>  map_bool_fixed32  = 307;
-	map<bool, sfixed32> map_bool_sfixed32 = 308;
-	map<bool, float>    map_bool_float    = 309;
-	map<bool, fixed64>  map_bool_fixed64  = 310;
-	map<bool, sfixed64> map_bool_sfixed64 = 311;
-	map<bool, double>   map_bool_double   = 312;
-	map<bool, string>   map_bool_string   = 313;
-	map<bool, bytes>    map_bool_bytes    = 314;
-
-	map<bool, ChildEnum>      map_bool_child_enum      = 315;
-	map<bool, ChildMessage>   map_bool_child_message   = 316;
-	map<bool, SiblingEnum>    map_bool_sibling_enum    = 317;
-	map<bool, SiblingMessage> map_bool_sibling_message = 318;
-
-	map<int32, bool>   map_int32_bool   = 319;
-	map<sint32, bool>  map_sint32_bool  = 320;
-	map<uint32, bool>  map_uint32_bool  = 321;
-	map<int64, bool>   map_int64_bool   = 322;
-	map<sint64, bool>  map_sint64_bool  = 323;
-	map<uint64, bool>  map_uint64_bool  = 324;
-	map<fixed32, bool> map_fixed32_bool = 325;
-	map<string, bool>  map_string_bool  = 326;
-
-	// Oneof fields.
-	oneof oneof_union {
-		bool     oneof_bool     = 400;
-		int32    oneof_int32    = 401;
-		sint32   oneof_sint32   = 402;
-		uint32   oneof_uint32   = 403;
-		int64    oneof_int64    = 404;
-		sint64   oneof_sint64   = 405;
-		uint64   oneof_uint64   = 406;
-		fixed32  oneof_fixed32  = 407;
-		sfixed32 oneof_sfixed32 = 408;
-		float    oneof_float    = 409;
-		fixed64  oneof_fixed64  = 410;
-		sfixed64 oneof_sfixed64 = 411;
-		double   oneof_double   = 412;
-		string   oneof_string   = 413;
-		bytes    oneof_bytes    = 414;
-
-		ChildEnum      oneof_child_enum      = 415;
-		ChildMessage   oneof_child_message   = 416;
-		SiblingEnum    oneof_sibling_enum    = 417;
-		SiblingMessage oneof_sibling_message = 418;
-
-		string oneof_string1 = 419;
-		string oneof_string2 = 420;
-		string oneof_string3 = 421;
-	}
-}
diff --git a/internal/testprotos/legacy/proto3_20180125_92554152/test.pb.go b/internal/testprotos/legacy/proto3_20180125_92554152/test.pb.go
deleted file mode 100644
index 35ac0a0..0000000
--- a/internal/testprotos/legacy/proto3_20180125_92554152/test.pb.go
+++ /dev/null
@@ -1,1454 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: proto3_20180125_92554152/test.proto
-
-/*
-Package proto3_20180125_92554152 is a generated protocol buffer package.
-
-It is generated from these files:
-	proto3_20180125_92554152/test.proto
-
-It has these top-level messages:
-	SiblingMessage
-	Message
-*/
-package proto3_20180125_92554152
-
-import proto "google.golang.org/protobuf/internal/protolegacy"
-import fmt "fmt"
-import 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.ProtoPackageIsVersion2 // please upgrade the proto package
-
-type SiblingEnum int32
-
-const (
-	SiblingEnum_ALPHA   SiblingEnum = 0
-	SiblingEnum_BRAVO   SiblingEnum = 10
-	SiblingEnum_CHARLIE SiblingEnum = 200
-)
-
-var SiblingEnum_name = map[int32]string{
-	0:   "ALPHA",
-	10:  "BRAVO",
-	200: "CHARLIE",
-}
-var SiblingEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   10,
-	"CHARLIE": 200,
-}
-
-func (x SiblingEnum) String() string {
-	return proto.EnumName(SiblingEnum_name, int32(x))
-}
-func (SiblingEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
-
-type Message_ChildEnum int32
-
-const (
-	Message_ALPHA   Message_ChildEnum = 0
-	Message_BRAVO   Message_ChildEnum = 1
-	Message_CHARLIE Message_ChildEnum = 2
-)
-
-var Message_ChildEnum_name = map[int32]string{
-	0: "ALPHA",
-	1: "BRAVO",
-	2: "CHARLIE",
-}
-var Message_ChildEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   1,
-	"CHARLIE": 2,
-}
-
-func (x Message_ChildEnum) String() string {
-	return proto.EnumName(Message_ChildEnum_name, int32(x))
-}
-func (Message_ChildEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
-
-type SiblingMessage struct {
-	F1 string   `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2 []string `protobuf:"bytes,2,rep,name=f2" json:"f2,omitempty"`
-	F3 *Message `protobuf:"bytes,3,opt,name=f3" json:"f3,omitempty"`
-}
-
-func (m *SiblingMessage) Reset()                    { *m = SiblingMessage{} }
-func (m *SiblingMessage) String() string            { return proto.CompactTextString(m) }
-func (*SiblingMessage) ProtoMessage()               {}
-func (*SiblingMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
-
-func (m *SiblingMessage) GetF1() string {
-	if m != nil {
-		return m.F1
-	}
-	return ""
-}
-
-func (m *SiblingMessage) GetF2() []string {
-	if m != nil {
-		return m.F2
-	}
-	return nil
-}
-
-func (m *SiblingMessage) GetF3() *Message {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message struct {
-	// Optional fields.
-	OptionalBool           bool                  `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
-	OptionalInt32          int32                 `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
-	OptionalSint32         int32                 `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
-	OptionalUint32         uint32                `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
-	OptionalInt64          int64                 `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
-	OptionalSint64         int64                 `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
-	OptionalUint64         uint64                `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
-	OptionalFixed32        uint32                `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
-	OptionalSfixed32       int32                 `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
-	OptionalFloat          float32               `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
-	OptionalFixed64        uint64                `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
-	OptionalSfixed64       int64                 `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
-	OptionalDouble         float64               `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
-	OptionalString         string                `protobuf:"bytes,113,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
-	OptionalBytes          []byte                `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes,proto3" json:"optional_bytes,omitempty"`
-	OptionalChildEnum      Message_ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,enum=google.golang.org.proto3_20180125.Message_ChildEnum" json:"optional_child_enum,omitempty"`
-	OptionalChildMessage   *Message_ChildMessage `protobuf:"bytes,116,opt,name=optional_child_message,json=optionalChildMessage" json:"optional_child_message,omitempty"`
-	OptionalSiblingEnum    SiblingEnum           `protobuf:"varint,117,opt,name=optional_sibling_enum,json=optionalSiblingEnum,enum=google.golang.org.proto3_20180125.SiblingEnum" json:"optional_sibling_enum,omitempty"`
-	OptionalSiblingMessage *SiblingMessage       `protobuf:"bytes,118,opt,name=optional_sibling_message,json=optionalSiblingMessage" json:"optional_sibling_message,omitempty"`
-	// Repeated fields.
-	RepeatedBool           []bool                  `protobuf:"varint,200,rep,packed,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
-	RepeatedInt32          []int32                 `protobuf:"varint,201,rep,packed,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
-	RepeatedSint32         []int32                 `protobuf:"zigzag32,202,rep,packed,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
-	RepeatedUint32         []uint32                `protobuf:"varint,203,rep,packed,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
-	RepeatedInt64          []int64                 `protobuf:"varint,204,rep,packed,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
-	RepeatedSint64         []int64                 `protobuf:"zigzag64,205,rep,packed,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
-	RepeatedUint64         []uint64                `protobuf:"varint,206,rep,packed,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
-	RepeatedFixed32        []uint32                `protobuf:"fixed32,207,rep,packed,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
-	RepeatedSfixed32       []int32                 `protobuf:"fixed32,208,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
-	RepeatedFloat          []float32               `protobuf:"fixed32,209,rep,packed,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
-	RepeatedFixed64        []uint64                `protobuf:"fixed64,210,rep,packed,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
-	RepeatedSfixed64       []int64                 `protobuf:"fixed64,211,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
-	RepeatedDouble         []float64               `protobuf:"fixed64,212,rep,packed,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
-	RepeatedString         []string                `protobuf:"bytes,213,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
-	RepeatedBytes          [][]byte                `protobuf:"bytes,214,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"`
-	RepeatedChildEnum      []Message_ChildEnum     `protobuf:"varint,215,rep,packed,name=repeated_child_enum,json=repeatedChildEnum,enum=google.golang.org.proto3_20180125.Message_ChildEnum" json:"repeated_child_enum,omitempty"`
-	RepeatedChildMessage   []*Message_ChildMessage `protobuf:"bytes,216,rep,name=repeated_child_message,json=repeatedChildMessage" json:"repeated_child_message,omitempty"`
-	RepeatedSiblingEnum    []SiblingEnum           `protobuf:"varint,217,rep,packed,name=repeated_sibling_enum,json=repeatedSiblingEnum,enum=google.golang.org.proto3_20180125.SiblingEnum" json:"repeated_sibling_enum,omitempty"`
-	RepeatedSiblingMessage []*SiblingMessage       `protobuf:"bytes,218,rep,name=repeated_sibling_message,json=repeatedSiblingMessage" json:"repeated_sibling_message,omitempty"`
-	// Map fields.
-	MapBoolBool           map[bool]bool                  `protobuf:"bytes,300,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolInt32          map[bool]int32                 `protobuf:"bytes,301,rep,name=map_bool_int32,json=mapBoolInt32" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolSint32         map[bool]int32                 `protobuf:"bytes,302,rep,name=map_bool_sint32,json=mapBoolSint32" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
-	MapBoolUint32         map[bool]uint32                `protobuf:"bytes,303,rep,name=map_bool_uint32,json=mapBoolUint32" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolInt64          map[bool]int64                 `protobuf:"bytes,304,rep,name=map_bool_int64,json=mapBoolInt64" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolSint64         map[bool]int64                 `protobuf:"bytes,305,rep,name=map_bool_sint64,json=mapBoolSint64" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
-	MapBoolUint64         map[bool]uint64                `protobuf:"bytes,306,rep,name=map_bool_uint64,json=mapBoolUint64" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolFixed32        map[bool]uint32                `protobuf:"bytes,307,rep,name=map_bool_fixed32,json=mapBoolFixed32" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolSfixed32       map[bool]int32                 `protobuf:"bytes,308,rep,name=map_bool_sfixed32,json=mapBoolSfixed32" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolFloat          map[bool]float32               `protobuf:"bytes,309,rep,name=map_bool_float,json=mapBoolFloat" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolFixed64        map[bool]uint64                `protobuf:"bytes,310,rep,name=map_bool_fixed64,json=mapBoolFixed64" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolSfixed64       map[bool]int64                 `protobuf:"bytes,311,rep,name=map_bool_sfixed64,json=mapBoolSfixed64" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolDouble         map[bool]float64               `protobuf:"bytes,312,rep,name=map_bool_double,json=mapBoolDouble" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolString         map[bool]string                `protobuf:"bytes,313,rep,name=map_bool_string,json=mapBoolString" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolBytes          map[bool][]byte                `protobuf:"bytes,314,rep,name=map_bool_bytes,json=mapBoolBytes" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapBoolChildEnum      map[bool]Message_ChildEnum     `protobuf:"bytes,315,rep,name=map_bool_child_enum,json=mapBoolChildEnum" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto3_20180125.Message_ChildEnum"`
-	MapBoolChildMessage   map[bool]*Message_ChildMessage `protobuf:"bytes,316,rep,name=map_bool_child_message,json=mapBoolChildMessage" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolSiblingEnum    map[bool]SiblingEnum           `protobuf:"bytes,317,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto3_20180125.SiblingEnum"`
-	MapBoolSiblingMessage map[bool]*SiblingMessage       `protobuf:"bytes,318,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapInt32Bool          map[int32]bool                 `protobuf:"bytes,319,rep,name=map_int32_bool,json=mapInt32Bool" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint32Bool         map[int32]bool                 `protobuf:"bytes,320,rep,name=map_sint32_bool,json=mapSint32Bool" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint32Bool         map[uint32]bool                `protobuf:"bytes,321,rep,name=map_uint32_bool,json=mapUint32Bool" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapInt64Bool          map[int64]bool                 `protobuf:"bytes,322,rep,name=map_int64_bool,json=mapInt64Bool" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint64Bool         map[int64]bool                 `protobuf:"bytes,323,rep,name=map_sint64_bool,json=mapSint64Bool" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint64Bool         map[uint64]bool                `protobuf:"bytes,324,rep,name=map_uint64_bool,json=mapUint64Bool" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapFixed32Bool        map[uint32]bool                `protobuf:"bytes,325,rep,name=map_fixed32_bool,json=mapFixed32Bool" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapStringBool         map[string]bool                `protobuf:"bytes,326,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	// Oneof fields.
-	//
-	// Types that are valid to be assigned to OneofUnion:
-	//	*Message_OneofBool
-	//	*Message_OneofInt32
-	//	*Message_OneofSint32
-	//	*Message_OneofUint32
-	//	*Message_OneofInt64
-	//	*Message_OneofSint64
-	//	*Message_OneofUint64
-	//	*Message_OneofFixed32
-	//	*Message_OneofSfixed32
-	//	*Message_OneofFloat
-	//	*Message_OneofFixed64
-	//	*Message_OneofSfixed64
-	//	*Message_OneofDouble
-	//	*Message_OneofString
-	//	*Message_OneofBytes
-	//	*Message_OneofChildEnum
-	//	*Message_OneofChildMessage
-	//	*Message_OneofSiblingEnum
-	//	*Message_OneofSiblingMessage
-	//	*Message_OneofString1
-	//	*Message_OneofString2
-	//	*Message_OneofString3
-	OneofUnion isMessage_OneofUnion `protobuf_oneof:"oneof_union"`
-}
-
-func (m *Message) Reset()                    { *m = Message{} }
-func (m *Message) String() string            { return proto.CompactTextString(m) }
-func (*Message) ProtoMessage()               {}
-func (*Message) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
-
-type isMessage_OneofUnion interface{ isMessage_OneofUnion() }
-
-type Message_OneofBool struct {
-	OneofBool bool `protobuf:"varint,400,opt,name=oneof_bool,json=oneofBool,oneof"`
-}
-type Message_OneofInt32 struct {
-	OneofInt32 int32 `protobuf:"varint,401,opt,name=oneof_int32,json=oneofInt32,oneof"`
-}
-type Message_OneofSint32 struct {
-	OneofSint32 int32 `protobuf:"zigzag32,402,opt,name=oneof_sint32,json=oneofSint32,oneof"`
-}
-type Message_OneofUint32 struct {
-	OneofUint32 uint32 `protobuf:"varint,403,opt,name=oneof_uint32,json=oneofUint32,oneof"`
-}
-type Message_OneofInt64 struct {
-	OneofInt64 int64 `protobuf:"varint,404,opt,name=oneof_int64,json=oneofInt64,oneof"`
-}
-type Message_OneofSint64 struct {
-	OneofSint64 int64 `protobuf:"zigzag64,405,opt,name=oneof_sint64,json=oneofSint64,oneof"`
-}
-type Message_OneofUint64 struct {
-	OneofUint64 uint64 `protobuf:"varint,406,opt,name=oneof_uint64,json=oneofUint64,oneof"`
-}
-type Message_OneofFixed32 struct {
-	OneofFixed32 uint32 `protobuf:"fixed32,407,opt,name=oneof_fixed32,json=oneofFixed32,oneof"`
-}
-type Message_OneofSfixed32 struct {
-	OneofSfixed32 int32 `protobuf:"fixed32,408,opt,name=oneof_sfixed32,json=oneofSfixed32,oneof"`
-}
-type Message_OneofFloat struct {
-	OneofFloat float32 `protobuf:"fixed32,409,opt,name=oneof_float,json=oneofFloat,oneof"`
-}
-type Message_OneofFixed64 struct {
-	OneofFixed64 uint64 `protobuf:"fixed64,410,opt,name=oneof_fixed64,json=oneofFixed64,oneof"`
-}
-type Message_OneofSfixed64 struct {
-	OneofSfixed64 int64 `protobuf:"fixed64,411,opt,name=oneof_sfixed64,json=oneofSfixed64,oneof"`
-}
-type Message_OneofDouble struct {
-	OneofDouble float64 `protobuf:"fixed64,412,opt,name=oneof_double,json=oneofDouble,oneof"`
-}
-type Message_OneofString struct {
-	OneofString string `protobuf:"bytes,413,opt,name=oneof_string,json=oneofString,oneof"`
-}
-type Message_OneofBytes struct {
-	OneofBytes []byte `protobuf:"bytes,414,opt,name=oneof_bytes,json=oneofBytes,proto3,oneof"`
-}
-type Message_OneofChildEnum struct {
-	OneofChildEnum Message_ChildEnum `protobuf:"varint,415,opt,name=oneof_child_enum,json=oneofChildEnum,enum=google.golang.org.proto3_20180125.Message_ChildEnum,oneof"`
-}
-type Message_OneofChildMessage struct {
-	OneofChildMessage *Message_ChildMessage `protobuf:"bytes,416,opt,name=oneof_child_message,json=oneofChildMessage,oneof"`
-}
-type Message_OneofSiblingEnum struct {
-	OneofSiblingEnum SiblingEnum `protobuf:"varint,417,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,enum=google.golang.org.proto3_20180125.SiblingEnum,oneof"`
-}
-type Message_OneofSiblingMessage struct {
-	OneofSiblingMessage *SiblingMessage `protobuf:"bytes,418,opt,name=oneof_sibling_message,json=oneofSiblingMessage,oneof"`
-}
-type Message_OneofString1 struct {
-	OneofString1 string `protobuf:"bytes,419,opt,name=oneof_string1,json=oneofString1,oneof"`
-}
-type Message_OneofString2 struct {
-	OneofString2 string `protobuf:"bytes,420,opt,name=oneof_string2,json=oneofString2,oneof"`
-}
-type Message_OneofString3 struct {
-	OneofString3 string `protobuf:"bytes,421,opt,name=oneof_string3,json=oneofString3,oneof"`
-}
-
-func (*Message_OneofBool) isMessage_OneofUnion()           {}
-func (*Message_OneofInt32) isMessage_OneofUnion()          {}
-func (*Message_OneofSint32) isMessage_OneofUnion()         {}
-func (*Message_OneofUint32) isMessage_OneofUnion()         {}
-func (*Message_OneofInt64) isMessage_OneofUnion()          {}
-func (*Message_OneofSint64) isMessage_OneofUnion()         {}
-func (*Message_OneofUint64) isMessage_OneofUnion()         {}
-func (*Message_OneofFixed32) isMessage_OneofUnion()        {}
-func (*Message_OneofSfixed32) isMessage_OneofUnion()       {}
-func (*Message_OneofFloat) isMessage_OneofUnion()          {}
-func (*Message_OneofFixed64) isMessage_OneofUnion()        {}
-func (*Message_OneofSfixed64) isMessage_OneofUnion()       {}
-func (*Message_OneofDouble) isMessage_OneofUnion()         {}
-func (*Message_OneofString) isMessage_OneofUnion()         {}
-func (*Message_OneofBytes) isMessage_OneofUnion()          {}
-func (*Message_OneofChildEnum) isMessage_OneofUnion()      {}
-func (*Message_OneofChildMessage) isMessage_OneofUnion()   {}
-func (*Message_OneofSiblingEnum) isMessage_OneofUnion()    {}
-func (*Message_OneofSiblingMessage) isMessage_OneofUnion() {}
-func (*Message_OneofString1) isMessage_OneofUnion()        {}
-func (*Message_OneofString2) isMessage_OneofUnion()        {}
-func (*Message_OneofString3) isMessage_OneofUnion()        {}
-
-func (m *Message) GetOneofUnion() isMessage_OneofUnion {
-	if m != nil {
-		return m.OneofUnion
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalBool() bool {
-	if m != nil {
-		return m.OptionalBool
-	}
-	return false
-}
-
-func (m *Message) GetOptionalInt32() int32 {
-	if m != nil {
-		return m.OptionalInt32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSint32() int32 {
-	if m != nil {
-		return m.OptionalSint32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalUint32() uint32 {
-	if m != nil {
-		return m.OptionalUint32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalInt64() int64 {
-	if m != nil {
-		return m.OptionalInt64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSint64() int64 {
-	if m != nil {
-		return m.OptionalSint64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalUint64() uint64 {
-	if m != nil {
-		return m.OptionalUint64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFixed32() uint32 {
-	if m != nil {
-		return m.OptionalFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSfixed32() int32 {
-	if m != nil {
-		return m.OptionalSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFloat() float32 {
-	if m != nil {
-		return m.OptionalFloat
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFixed64() uint64 {
-	if m != nil {
-		return m.OptionalFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSfixed64() int64 {
-	if m != nil {
-		return m.OptionalSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalDouble() float64 {
-	if m != nil {
-		return m.OptionalDouble
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalString() string {
-	if m != nil {
-		return m.OptionalString
-	}
-	return ""
-}
-
-func (m *Message) GetOptionalBytes() []byte {
-	if m != nil {
-		return m.OptionalBytes
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalChildEnum() Message_ChildEnum {
-	if m != nil {
-		return m.OptionalChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetOptionalChildMessage() *Message_ChildMessage {
-	if m != nil {
-		return m.OptionalChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalSiblingEnum() SiblingEnum {
-	if m != nil {
-		return m.OptionalSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetOptionalSiblingMessage() *SiblingMessage {
-	if m != nil {
-		return m.OptionalSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedBool() []bool {
-	if m != nil {
-		return m.RepeatedBool
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedInt32() []int32 {
-	if m != nil {
-		return m.RepeatedInt32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSint32() []int32 {
-	if m != nil {
-		return m.RepeatedSint32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedUint32() []uint32 {
-	if m != nil {
-		return m.RepeatedUint32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedInt64() []int64 {
-	if m != nil {
-		return m.RepeatedInt64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSint64() []int64 {
-	if m != nil {
-		return m.RepeatedSint64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedUint64() []uint64 {
-	if m != nil {
-		return m.RepeatedUint64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFixed32() []uint32 {
-	if m != nil {
-		return m.RepeatedFixed32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSfixed32() []int32 {
-	if m != nil {
-		return m.RepeatedSfixed32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFloat() []float32 {
-	if m != nil {
-		return m.RepeatedFloat
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFixed64() []uint64 {
-	if m != nil {
-		return m.RepeatedFixed64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSfixed64() []int64 {
-	if m != nil {
-		return m.RepeatedSfixed64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedDouble() []float64 {
-	if m != nil {
-		return m.RepeatedDouble
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedString() []string {
-	if m != nil {
-		return m.RepeatedString
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedBytes() [][]byte {
-	if m != nil {
-		return m.RepeatedBytes
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedChildEnum() []Message_ChildEnum {
-	if m != nil {
-		return m.RepeatedChildEnum
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedChildMessage() []*Message_ChildMessage {
-	if m != nil {
-		return m.RepeatedChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSiblingEnum() []SiblingEnum {
-	if m != nil {
-		return m.RepeatedSiblingEnum
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSiblingMessage() []*SiblingMessage {
-	if m != nil {
-		return m.RepeatedSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBool() map[bool]bool {
-	if m != nil {
-		return m.MapBoolBool
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolInt32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolUint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolInt64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolUint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolFixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSfixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFloat() map[bool]float32 {
-	if m != nil {
-		return m.MapBoolFloat
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolFixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSfixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolDouble() map[bool]float64 {
-	if m != nil {
-		return m.MapBoolDouble
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolString() map[bool]string {
-	if m != nil {
-		return m.MapBoolString
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBytes() map[bool][]byte {
-	if m != nil {
-		return m.MapBoolBytes
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildEnum() map[bool]Message_ChildEnum {
-	if m != nil {
-		return m.MapBoolChildEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildMessage() map[bool]*Message_ChildMessage {
-	if m != nil {
-		return m.MapBoolChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingEnum() map[bool]SiblingEnum {
-	if m != nil {
-		return m.MapBoolSiblingEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingMessage() map[bool]*SiblingMessage {
-	if m != nil {
-		return m.MapBoolSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapInt32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapSint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapUint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapInt64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapSint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint64Bool() map[uint64]bool {
-	if m != nil {
-		return m.MapUint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapFixed32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapFixed32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapStringBool() map[string]bool {
-	if m != nil {
-		return m.MapStringBool
-	}
-	return nil
-}
-
-func (m *Message) GetOneofBool() bool {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBool); ok {
-		return x.OneofBool
-	}
-	return false
-}
-
-func (m *Message) GetOneofInt32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt32); ok {
-		return x.OneofInt32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint32); ok {
-		return x.OneofSint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint32); ok {
-		return x.OneofUint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofInt64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt64); ok {
-		return x.OneofInt64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint64); ok {
-		return x.OneofSint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint64); ok {
-		return x.OneofUint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed32); ok {
-		return x.OneofFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed32); ok {
-		return x.OneofSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFloat() float32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFloat); ok {
-		return x.OneofFloat
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed64); ok {
-		return x.OneofFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed64); ok {
-		return x.OneofSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofDouble() float64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofDouble); ok {
-		return x.OneofDouble
-	}
-	return 0
-}
-
-func (m *Message) GetOneofString() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString); ok {
-		return x.OneofString
-	}
-	return ""
-}
-
-func (m *Message) GetOneofBytes() []byte {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBytes); ok {
-		return x.OneofBytes
-	}
-	return nil
-}
-
-func (m *Message) GetOneofChildEnum() Message_ChildEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildEnum); ok {
-		return x.OneofChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetOneofChildMessage() *Message_ChildMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildMessage); ok {
-		return x.OneofChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofSiblingEnum() SiblingEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingEnum); ok {
-		return x.OneofSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetOneofSiblingMessage() *SiblingMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingMessage); ok {
-		return x.OneofSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofString1() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString1); ok {
-		return x.OneofString1
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString2() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString2); ok {
-		return x.OneofString2
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString3() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString3); ok {
-		return x.OneofString3
-	}
-	return ""
-}
-
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*Message) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _Message_OneofMarshaler, _Message_OneofUnmarshaler, _Message_OneofSizer, []interface{}{
-		(*Message_OneofBool)(nil),
-		(*Message_OneofInt32)(nil),
-		(*Message_OneofSint32)(nil),
-		(*Message_OneofUint32)(nil),
-		(*Message_OneofInt64)(nil),
-		(*Message_OneofSint64)(nil),
-		(*Message_OneofUint64)(nil),
-		(*Message_OneofFixed32)(nil),
-		(*Message_OneofSfixed32)(nil),
-		(*Message_OneofFloat)(nil),
-		(*Message_OneofFixed64)(nil),
-		(*Message_OneofSfixed64)(nil),
-		(*Message_OneofDouble)(nil),
-		(*Message_OneofString)(nil),
-		(*Message_OneofBytes)(nil),
-		(*Message_OneofChildEnum)(nil),
-		(*Message_OneofChildMessage)(nil),
-		(*Message_OneofSiblingEnum)(nil),
-		(*Message_OneofSiblingMessage)(nil),
-		(*Message_OneofString1)(nil),
-		(*Message_OneofString2)(nil),
-		(*Message_OneofString3)(nil),
-	}
-}
-
-func _Message_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*Message)
-	// oneof_union
-	switch x := m.OneofUnion.(type) {
-	case *Message_OneofBool:
-		t := uint64(0)
-		if x.OneofBool {
-			t = 1
-		}
-		b.EncodeVarint(400<<3 | proto.WireVarint)
-		b.EncodeVarint(t)
-	case *Message_OneofInt32:
-		b.EncodeVarint(401<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofInt32))
-	case *Message_OneofSint32:
-		b.EncodeVarint(402<<3 | proto.WireVarint)
-		b.EncodeZigzag32(uint64(x.OneofSint32))
-	case *Message_OneofUint32:
-		b.EncodeVarint(403<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofUint32))
-	case *Message_OneofInt64:
-		b.EncodeVarint(404<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofInt64))
-	case *Message_OneofSint64:
-		b.EncodeVarint(405<<3 | proto.WireVarint)
-		b.EncodeZigzag64(uint64(x.OneofSint64))
-	case *Message_OneofUint64:
-		b.EncodeVarint(406<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofUint64))
-	case *Message_OneofFixed32:
-		b.EncodeVarint(407<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofFixed32))
-	case *Message_OneofSfixed32:
-		b.EncodeVarint(408<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofSfixed32))
-	case *Message_OneofFloat:
-		b.EncodeVarint(409<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(math.Float32bits(x.OneofFloat)))
-	case *Message_OneofFixed64:
-		b.EncodeVarint(410<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofFixed64))
-	case *Message_OneofSfixed64:
-		b.EncodeVarint(411<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofSfixed64))
-	case *Message_OneofDouble:
-		b.EncodeVarint(412<<3 | proto.WireFixed64)
-		b.EncodeFixed64(math.Float64bits(x.OneofDouble))
-	case *Message_OneofString:
-		b.EncodeVarint(413<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString)
-	case *Message_OneofBytes:
-		b.EncodeVarint(414<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.OneofBytes)
-	case *Message_OneofChildEnum:
-		b.EncodeVarint(415<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofChildEnum))
-	case *Message_OneofChildMessage:
-		b.EncodeVarint(416<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofChildMessage); err != nil {
-			return err
-		}
-	case *Message_OneofSiblingEnum:
-		b.EncodeVarint(417<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofSiblingEnum))
-	case *Message_OneofSiblingMessage:
-		b.EncodeVarint(418<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofSiblingMessage); err != nil {
-			return err
-		}
-	case *Message_OneofString1:
-		b.EncodeVarint(419<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString1)
-	case *Message_OneofString2:
-		b.EncodeVarint(420<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString2)
-	case *Message_OneofString3:
-		b.EncodeVarint(421<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString3)
-	case nil:
-	default:
-		return fmt.Errorf("Message.OneofUnion has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _Message_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*Message)
-	switch tag {
-	case 400: // oneof_union.oneof_bool
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofBool{x != 0}
-		return true, err
-	case 401: // oneof_union.oneof_int32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofInt32{int32(x)}
-		return true, err
-	case 402: // oneof_union.oneof_sint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag32()
-		m.OneofUnion = &Message_OneofSint32{int32(x)}
-		return true, err
-	case 403: // oneof_union.oneof_uint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofUint32{uint32(x)}
-		return true, err
-	case 404: // oneof_union.oneof_int64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofInt64{int64(x)}
-		return true, err
-	case 405: // oneof_union.oneof_sint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag64()
-		m.OneofUnion = &Message_OneofSint64{int64(x)}
-		return true, err
-	case 406: // oneof_union.oneof_uint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofUint64{x}
-		return true, err
-	case 407: // oneof_union.oneof_fixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofFixed32{uint32(x)}
-		return true, err
-	case 408: // oneof_union.oneof_sfixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofSfixed32{int32(x)}
-		return true, err
-	case 409: // oneof_union.oneof_float
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofFloat{math.Float32frombits(uint32(x))}
-		return true, err
-	case 410: // oneof_union.oneof_fixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofFixed64{x}
-		return true, err
-	case 411: // oneof_union.oneof_sfixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofSfixed64{int64(x)}
-		return true, err
-	case 412: // oneof_union.oneof_double
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofDouble{math.Float64frombits(x)}
-		return true, err
-	case 413: // oneof_union.oneof_string
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString{x}
-		return true, err
-	case 414: // oneof_union.oneof_bytes
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.OneofUnion = &Message_OneofBytes{x}
-		return true, err
-	case 415: // oneof_union.oneof_child_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofChildEnum{Message_ChildEnum(x)}
-		return true, err
-	case 416: // oneof_union.oneof_child_message
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Message_ChildMessage)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofChildMessage{msg}
-		return true, err
-	case 417: // oneof_union.oneof_sibling_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofSiblingEnum{SiblingEnum(x)}
-		return true, err
-	case 418: // oneof_union.oneof_sibling_message
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(SiblingMessage)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofSiblingMessage{msg}
-		return true, err
-	case 419: // oneof_union.oneof_string1
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString1{x}
-		return true, err
-	case 420: // oneof_union.oneof_string2
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString2{x}
-		return true, err
-	case 421: // oneof_union.oneof_string3
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString3{x}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _Message_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*Message)
-	// oneof_union
-	switch x := m.OneofUnion.(type) {
-	case *Message_OneofBool:
-		n += proto.SizeVarint(400<<3 | proto.WireVarint)
-		n += 1
-	case *Message_OneofInt32:
-		n += proto.SizeVarint(401<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofInt32))
-	case *Message_OneofSint32:
-		n += proto.SizeVarint(402<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64((uint32(x.OneofSint32) << 1) ^ uint32((int32(x.OneofSint32) >> 31))))
-	case *Message_OneofUint32:
-		n += proto.SizeVarint(403<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofUint32))
-	case *Message_OneofInt64:
-		n += proto.SizeVarint(404<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofInt64))
-	case *Message_OneofSint64:
-		n += proto.SizeVarint(405<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(uint64(x.OneofSint64<<1) ^ uint64((int64(x.OneofSint64) >> 63))))
-	case *Message_OneofUint64:
-		n += proto.SizeVarint(406<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofUint64))
-	case *Message_OneofFixed32:
-		n += proto.SizeVarint(407<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofSfixed32:
-		n += proto.SizeVarint(408<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofFloat:
-		n += proto.SizeVarint(409<<3 | proto.WireFixed32)
-		n += 4
-	case *Message_OneofFixed64:
-		n += proto.SizeVarint(410<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofSfixed64:
-		n += proto.SizeVarint(411<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofDouble:
-		n += proto.SizeVarint(412<<3 | proto.WireFixed64)
-		n += 8
-	case *Message_OneofString:
-		n += proto.SizeVarint(413<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString)))
-		n += len(x.OneofString)
-	case *Message_OneofBytes:
-		n += proto.SizeVarint(414<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofBytes)))
-		n += len(x.OneofBytes)
-	case *Message_OneofChildEnum:
-		n += proto.SizeVarint(415<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofChildEnum))
-	case *Message_OneofChildMessage:
-		s := proto.Size(x.OneofChildMessage)
-		n += proto.SizeVarint(416<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_OneofSiblingEnum:
-		n += proto.SizeVarint(417<<3 | proto.WireVarint)
-		n += proto.SizeVarint(uint64(x.OneofSiblingEnum))
-	case *Message_OneofSiblingMessage:
-		s := proto.Size(x.OneofSiblingMessage)
-		n += proto.SizeVarint(418<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_OneofString1:
-		n += proto.SizeVarint(419<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString1)))
-		n += len(x.OneofString1)
-	case *Message_OneofString2:
-		n += proto.SizeVarint(420<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString2)))
-		n += len(x.OneofString2)
-	case *Message_OneofString3:
-		n += proto.SizeVarint(421<<3 | proto.WireBytes)
-		n += proto.SizeVarint(uint64(len(x.OneofString3)))
-		n += len(x.OneofString3)
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
-type Message_ChildMessage struct {
-	F1 string   `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2 []string `protobuf:"bytes,2,rep,name=f2" json:"f2,omitempty"`
-	F3 *Message `protobuf:"bytes,3,opt,name=f3" json:"f3,omitempty"`
-}
-
-func (m *Message_ChildMessage) Reset()                    { *m = Message_ChildMessage{} }
-func (m *Message_ChildMessage) String() string            { return proto.CompactTextString(m) }
-func (*Message_ChildMessage) ProtoMessage()               {}
-func (*Message_ChildMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
-
-func (m *Message_ChildMessage) GetF1() string {
-	if m != nil {
-		return m.F1
-	}
-	return ""
-}
-
-func (m *Message_ChildMessage) GetF2() []string {
-	if m != nil {
-		return m.F2
-	}
-	return nil
-}
-
-func (m *Message_ChildMessage) GetF3() *Message {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func init() {
-	proto.RegisterType((*SiblingMessage)(nil), "google.golang.org.proto3_20180125.SiblingMessage")
-	proto.RegisterType((*Message)(nil), "google.golang.org.proto3_20180125.Message")
-	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto3_20180125.Message.ChildMessage")
-	proto.RegisterEnum("google.golang.org.proto3_20180125.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
-	proto.RegisterEnum("google.golang.org.proto3_20180125.Message_ChildEnum", Message_ChildEnum_name, Message_ChildEnum_value)
-}
-
-func init() { proto.RegisterFile("proto3_20180125_92554152/test.proto", fileDescriptor0) }
-
-var fileDescriptor0 = []byte{
-	// 1947 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x9a, 0x59, 0x73, 0xdb, 0xc8,
-	0x11, 0xc7, 0x09, 0x52, 0x87, 0x35, 0xe2, 0x09, 0x5a, 0xca, 0x94, 0x9e, 0x10, 0xd9, 0x71, 0x10,
-	0x27, 0x45, 0x99, 0x14, 0x84, 0x38, 0x4e, 0x62, 0x5b, 0xb2, 0xe5, 0xd0, 0x29, 0x3b, 0x71, 0xc1,
-	0xa5, 0x3c, 0xe4, 0x45, 0xa1, 0x24, 0x90, 0xa6, 0x0d, 0x12, 0x8a, 0x48, 0xba, 0xa2, 0xca, 0x83,
-	0xbf, 0x42, 0xee, 0x3b, 0x7b, 0xef, 0xdb, 0xde, 0xf7, 0x7d, 0x7b, 0xcb, 0x7b, 0xdf, 0xe7, 0xa7,
-	0xd9, 0x1a, 0x34, 0xe6, 0x02, 0x40, 0x93, 0x04, 0x6b, 0x1f, 0x5c, 0x25, 0x35, 0xff, 0xd3, 0x3f,
-	0x76, 0xa3, 0xa7, 0x7b, 0x06, 0x16, 0x3a, 0xb4, 0xbb, 0xe7, 0x76, 0xdd, 0xe5, 0xcd, 0xca, 0xb1,
-	0xf2, 0xf1, 0x63, 0xe5, 0xca, 0xca, 0xe6, 0x4f, 0x2a, 0x2b, 0x2b, 0x46, 0x79, 0xa5, 0xb2, 0xd4,
-	0xb5, 0x3b, 0xdd, 0x92, 0xf7, 0xa9, 0xfa, 0xdd, 0x86, 0xeb, 0x36, 0x1c, 0xbb, 0xd4, 0x70, 0x9d,
-	0x5a, 0xbb, 0x51, 0x72, 0xf7, 0x1a, 0xa5, 0xc0, 0xb2, 0x45, 0x07, 0x65, 0x2f, 0x37, 0xb7, 0x9c,
-	0x66, 0xbb, 0x71, 0xd1, 0xee, 0x74, 0x6a, 0x0d, 0x5b, 0xcd, 0xa2, 0x64, 0xbd, 0x8c, 0x15, 0x4d,
-	0xd1, 0x67, 0xac, 0x64, 0xbd, 0xec, 0xfd, 0x5e, 0xc1, 0x49, 0x2d, 0xe5, 0xfd, 0x5e, 0x51, 0x4f,
-	0xa0, 0x64, 0x7d, 0x19, 0xa7, 0x34, 0x45, 0x9f, 0xad, 0x1c, 0x2d, 0x0d, 0x24, 0x94, 0x7c, 0xbf,
-	0x56, 0xb2, 0xbe, 0xbc, 0x78, 0xf3, 0x34, 0x9a, 0xa6, 0x9c, 0x43, 0x28, 0xe3, 0xee, 0x76, 0x9b,
-	0x6e, 0xbb, 0xe6, 0x6c, 0x6e, 0xb9, 0xae, 0x83, 0x77, 0x34, 0x45, 0x3f, 0x60, 0xa5, 0xa9, 0x71,
-	0xcd, 0x75, 0x1d, 0xf5, 0x7b, 0x28, 0xcb, 0x44, 0xcd, 0x76, 0x77, 0xb9, 0x82, 0x6d, 0x4d, 0xd1,
-	0x27, 0x2d, 0xb6, 0xf4, 0x3c, 0x31, 0xaa, 0xdf, 0x47, 0x39, 0x26, 0xeb, 0x80, 0xae, 0xae, 0x29,
-	0x7a, 0xc1, 0x62, 0xab, 0x2f, 0x37, 0x43, 0xc2, 0x1e, 0x08, 0x1b, 0x9a, 0xa2, 0x67, 0xb8, 0x70,
-	0x03, 0x84, 0x01, 0xb0, 0x69, 0xe0, 0x2b, 0x9a, 0xa2, 0xa7, 0x24, 0xb0, 0x69, 0x84, 0xc0, 0xa6,
-	0x81, 0x9b, 0x9a, 0xa2, 0xab, 0x32, 0x38, 0x20, 0xec, 0x81, 0xf0, 0xaa, 0xa6, 0xe8, 0x13, 0x32,
-	0xd8, 0x34, 0xd4, 0x1f, 0xa0, 0x3c, 0x13, 0xd6, 0x9b, 0x7f, 0xb0, 0x77, 0x96, 0x2b, 0xf8, 0x9a,
-	0xa6, 0xe8, 0xd3, 0x16, 0x73, 0x70, 0x0e, 0xcc, 0xea, 0x0f, 0x51, 0x81, 0xc3, 0xa9, 0xd6, 0xd1,
-	0x14, 0x3d, 0x67, 0x31, 0x1f, 0x97, 0x7d, 0xbb, 0x14, 0x50, 0xdd, 0x71, 0x6b, 0x5d, 0xdc, 0xd2,
-	0x14, 0x3d, 0xc9, 0x03, 0x3a, 0x47, 0x8c, 0x61, 0xbc, 0x69, 0xe0, 0xb6, 0xa6, 0xe8, 0x53, 0x01,
-	0xbc, 0x69, 0x44, 0xe0, 0x4d, 0x03, 0xbb, 0x9a, 0xa2, 0xe7, 0x83, 0xf8, 0x40, 0xfc, 0x3b, 0x6e,
-	0x6f, 0xcb, 0xb1, 0xf1, 0xae, 0xa6, 0xe8, 0x0a, 0x8f, 0xff, 0xac, 0x67, 0x95, 0x33, 0xda, 0xdd,
-	0x6b, 0xb6, 0x1b, 0xf8, 0xf7, 0x5e, 0x2d, 0xf2, 0x8c, 0x7a, 0x56, 0x29, 0xa0, 0xad, 0xfd, 0xae,
-	0xdd, 0xc1, 0x7b, 0x9a, 0xa2, 0xa7, 0x79, 0x40, 0x6b, 0xc4, 0xa8, 0xee, 0xa0, 0x22, 0x93, 0x6d,
-	0x5f, 0x69, 0x3a, 0x3b, 0x9b, 0x76, 0xbb, 0xd7, 0xc2, 0x1d, 0x4d, 0xd1, 0xb3, 0x15, 0x63, 0xf8,
-	0xfa, 0x2d, 0x9d, 0x21, 0x8b, 0xd7, 0xdb, 0xbd, 0x96, 0xc5, 0xc2, 0x66, 0x26, 0xb5, 0x85, 0xe6,
-	0x03, 0x94, 0x16, 0x2c, 0xc3, 0x5d, 0x6f, 0xa3, 0xfc, 0x78, 0x54, 0x10, 0xdd, 0x35, 0x07, 0x25,
-	0x16, 0xdd, 0x3b, 0x5b, 0x68, 0x4e, 0x28, 0x3b, 0x6f, 0xfb, 0x42, 0x58, 0x3d, 0x2f, 0xac, 0xd2,
-	0x10, 0x34, 0x7f, 0xd7, 0x7b, 0x01, 0x15, 0x79, 0xb1, 0x32, 0xa3, 0x7a, 0x0d, 0xe1, 0x10, 0x83,
-	0x06, 0x75, 0xdd, 0x0b, 0xaa, 0x3c, 0x3c, 0x86, 0x86, 0x33, 0x1f, 0x20, 0xd1, 0x80, 0x0e, 0xa3,
-	0xcc, 0x9e, 0xbd, 0x6b, 0xd7, 0xba, 0xf6, 0x0e, 0x34, 0x83, 0x5b, 0x8a, 0x96, 0x22, 0xdd, 0x80,
-	0x5a, 0xbd, 0x6e, 0x70, 0x04, 0x65, 0x99, 0x0a, 0x36, 0xef, 0x5b, 0x44, 0x36, 0x69, 0xb1, 0xc5,
-	0xd0, 0x0e, 0x74, 0x94, 0x63, 0x3a, 0xbf, 0x1d, 0xbc, 0x4d, 0x84, 0x05, 0x8b, 0xad, 0xf7, 0xfb,
-	0x81, 0xa8, 0xf4, 0xfb, 0xc1, 0x3b, 0x44, 0x99, 0xe1, 0x4a, 0xbf, 0x21, 0x04, 0xd8, 0xa6, 0x81,
-	0xdf, 0x25, 0xc2, 0x94, 0xc4, 0x36, 0x8d, 0x10, 0xdb, 0x34, 0xf0, 0x7b, 0x44, 0xa8, 0xca, 0xec,
-	0x80, 0xd2, 0x6f, 0x09, 0xef, 0x13, 0xe5, 0x84, 0xcc, 0x36, 0x0d, 0xf5, 0x28, 0xca, 0x33, 0x25,
-	0xdd, 0xe7, 0x1f, 0x10, 0xe9, 0xb4, 0xc5, 0x5c, 0xd0, 0xa6, 0xf0, 0x23, 0x54, 0xe0, 0x7c, 0x2a,
-	0xfe, 0x90, 0x88, 0x73, 0x16, 0xf3, 0xc2, 0xba, 0x82, 0x18, 0x15, 0x74, 0x85, 0x8f, 0x88, 0x34,
-	0xc9, 0xa3, 0x82, 0xb6, 0x10, 0xfa, 0x06, 0xa6, 0x81, 0x3f, 0x26, 0xca, 0xa9, 0xc0, 0x37, 0x30,
-	0x8d, 0x88, 0x6f, 0x60, 0x1a, 0xf8, 0x13, 0x22, 0xce, 0x07, 0xbf, 0x41, 0x20, 0x0b, 0x7e, 0x63,
-	0xf8, 0x94, 0x68, 0x15, 0x9e, 0x05, 0xbf, 0x33, 0x48, 0x99, 0x85, 0xce, 0xf0, 0x99, 0xe2, 0x8d,
-	0x25, 0x9e, 0x59, 0x68, 0x0d, 0x62, 0x54, 0xd0, 0x1a, 0x3e, 0x27, 0xc2, 0x34, 0x8f, 0x0a, 0x7a,
-	0x83, 0x8d, 0x8a, 0x4c, 0x27, 0xf4, 0x86, 0x2f, 0x88, 0x38, 0x76, 0x73, 0xa0, 0x1e, 0x79, 0x73,
-	0x68, 0xa3, 0xf9, 0x00, 0x86, 0xee, 0xa3, 0x2f, 0x09, 0x69, 0x9c, 0xee, 0x20, 0xc1, 0xe8, 0x66,
-	0xda, 0x46, 0x73, 0x42, 0x09, 0x0a, 0xdd, 0xe1, 0x2b, 0x08, 0x6c, 0xe4, 0xf6, 0xc0, 0x0b, 0x97,
-	0xb7, 0x07, 0x07, 0xe1, 0x10, 0x84, 0x86, 0xf5, 0x35, 0x84, 0x15, 0xa7, 0x3f, 0x04, 0x50, 0x34,
-	0xa4, 0xdf, 0xa1, 0x4c, 0xab, 0xb6, 0xeb, 0xb5, 0x06, 0xe8, 0x0f, 0x0f, 0x24, 0x3d, 0xc4, 0x4f,
-	0x47, 0xc8, 0xdc, 0xc5, 0xda, 0x2e, 0xe9, 0x22, 0xe4, 0xdf, 0x7a, 0xbb, 0xbb, 0xb7, 0x6f, 0xcd,
-	0xb6, 0xb8, 0x45, 0xdd, 0x46, 0x59, 0x46, 0x80, 0x46, 0xf0, 0x20, 0x20, 0x7e, 0x36, 0x3a, 0xc2,
-	0xeb, 0x42, 0xc0, 0x48, 0xb7, 0x04, 0x93, 0x5a, 0x47, 0x39, 0x06, 0xf1, 0x1b, 0xd3, 0x43, 0x40,
-	0xf9, 0xf9, 0xe8, 0x14, 0x68, 0x61, 0x80, 0xc9, 0xb4, 0x44, 0x9b, 0xc4, 0xf1, 0xdb, 0xda, 0xc3,
-	0xb1, 0x39, 0x1b, 0x11, 0x1c, 0xbf, 0x29, 0x06, 0x92, 0x66, 0x1a, 0xf8, 0x91, 0x71, 0x92, 0x66,
-	0x1a, 0xa1, 0xa4, 0x99, 0x46, 0x28, 0x69, 0xa6, 0x81, 0x1f, 0x1d, 0x2b, 0x69, 0x14, 0x23, 0x26,
-	0x2d, 0xc0, 0xf1, 0xfb, 0xf1, 0x63, 0x63, 0x25, 0x2d, 0xc8, 0xf1, 0xbb, 0x79, 0x13, 0xe5, 0x19,
-	0x87, 0x36, 0xe8, 0xc7, 0x01, 0x74, 0x72, 0x74, 0x90, 0xdf, 0xf7, 0x81, 0x94, 0x6d, 0x49, 0x46,
-	0xd5, 0x41, 0x05, 0x9e, 0x3a, 0xca, 0x7a, 0x02, 0x58, 0xa7, 0x62, 0x24, 0xaf, 0x2e, 0xc2, 0x72,
-	0x2d, 0xd9, 0x2a, 0x55, 0x03, 0x0c, 0x93, 0x27, 0x63, 0x57, 0x83, 0x37, 0x76, 0xe4, 0x6a, 0x80,
-	0x49, 0x14, 0xca, 0x9e, 0x69, 0xe0, 0xa7, 0xc6, 0xcb, 0x1e, 0x7d, 0x4e, 0x52, 0xf6, 0x4c, 0x23,
-	0x22, 0x7b, 0xa6, 0x81, 0x9f, 0x1e, 0x33, 0x7b, 0x14, 0x26, 0x67, 0x2f, 0x50, 0x7e, 0xfe, 0x20,
-	0x7c, 0x26, 0x76, 0xf9, 0xc1, 0xc8, 0x94, 0xcb, 0xcf, 0x1f, 0xa3, 0xd2, 0x76, 0x82, 0x31, 0xfa,
-	0x6c, 0xfc, 0xed, 0xe4, 0x39, 0x08, 0x6c, 0x27, 0x18, 0xc2, 0x62, 0x35, 0xc0, 0x10, 0x7e, 0x2e,
-	0x76, 0x35, 0x78, 0xe3, 0x5a, 0xae, 0x06, 0x98, 0xe0, 0xbb, 0xa8, 0xc8, 0x20, 0xc2, 0x04, 0x7f,
-	0x1e, 0x48, 0xa7, 0x47, 0x27, 0xb1, 0xa9, 0x0d, 0xb4, 0x7c, 0x2b, 0x60, 0x56, 0xf7, 0xd1, 0x7c,
-	0x80, 0x48, 0xa7, 0xde, 0x0b, 0x00, 0x3d, 0x13, 0x13, 0xea, 0xdb, 0x80, 0x5b, 0x6c, 0x85, 0x3f,
-	0x51, 0xaf, 0xa3, 0x39, 0xa1, 0x11, 0x0a, 0x73, 0xfd, 0x45, 0x20, 0xaf, 0xc5, 0x69, 0x87, 0x6c,
-	0xa2, 0x03, 0x58, 0x6d, 0x85, 0x3e, 0x50, 0x6f, 0x20, 0x1c, 0xe2, 0xd2, 0xa0, 0x5f, 0x02, 0xf4,
-	0x7a, 0x6c, 0xb4, 0x14, 0xf6, 0x5c, 0x2b, 0xea, 0x33, 0x5a, 0x4a, 0xde, 0xcc, 0x81, 0xf1, 0xff,
-	0x72, 0xac, 0x52, 0xf2, 0x86, 0x30, 0x9f, 0xff, 0xa4, 0x94, 0x98, 0x89, 0xee, 0x8b, 0x8e, 0x40,
-	0x79, 0x25, 0xd6, 0xbe, 0x80, 0x19, 0xcc, 0x31, 0x64, 0x5f, 0x70, 0x1b, 0xe5, 0xf4, 0x04, 0xce,
-	0xab, 0xb1, 0x38, 0x1b, 0x11, 0x1c, 0x6e, 0x13, 0x92, 0x66, 0x1a, 0x80, 0x79, 0x2d, 0x6e, 0xd2,
-	0x4c, 0x23, 0x94, 0x34, 0x30, 0x89, 0x49, 0xa3, 0x94, 0xd7, 0x63, 0x27, 0x4d, 0xc4, 0xd0, 0xa4,
-	0xc9, 0x9c, 0x9e, 0xc0, 0x79, 0x23, 0x76, 0xd2, 0x82, 0x1c, 0x6e, 0xa3, 0xd3, 0xc5, 0x9f, 0x68,
-	0x00, 0xba, 0x19, 0x6b, 0xba, 0xf8, 0x23, 0x98, 0x93, 0xc8, 0xd3, 0x10, 0x8c, 0x2c, 0x75, 0x5e,
-	0xb7, 0x04, 0xd2, 0x9b, 0xf1, 0x52, 0xe7, 0x79, 0x08, 0xa4, 0x8e, 0xd9, 0x54, 0x0d, 0x21, 0xb7,
-	0x6d, 0xbb, 0x75, 0x40, 0xfc, 0x29, 0xa5, 0x29, 0xfa, 0x81, 0x6a, 0xc2, 0x9a, 0xf1, 0x8c, 0x9e,
-	0x62, 0x11, 0xcd, 0x82, 0x02, 0x4e, 0x8a, 0x7f, 0x26, 0x92, 0xc9, 0x6a, 0xc2, 0x82, 0x75, 0x70,
-	0x72, 0x3d, 0x8c, 0xd2, 0xa0, 0xf1, 0x8f, 0xad, 0x7f, 0x21, 0xa2, 0x42, 0x35, 0x61, 0xc1, 0x52,
-	0xff, 0xdc, 0xc9, 0x54, 0xfe, 0xa1, 0xf3, 0xaf, 0x44, 0x95, 0x61, 0x2a, 0xff, 0xd4, 0x28, 0xf2,
-	0x4c, 0x03, 0xff, 0x8d, 0x88, 0x52, 0x22, 0xcf, 0x34, 0x64, 0x9e, 0x69, 0xe0, 0xbf, 0x13, 0x91,
-	0x2a, 0xf1, 0x44, 0x95, 0x7f, 0x5e, 0xfb, 0x07, 0x51, 0x4d, 0x48, 0x3c, 0xd3, 0x50, 0x8f, 0xa0,
-	0x0c, 0xa8, 0xe8, 0x09, 0xe8, 0x9f, 0x44, 0x36, 0x5d, 0x4d, 0x58, 0xb0, 0x9a, 0x9e, 0x96, 0x74,
-	0x94, 0xf5, 0x99, 0x54, 0xf8, 0x2f, 0x22, 0xcc, 0x55, 0x13, 0x16, 0x38, 0x60, 0x27, 0x1d, 0x16,
-	0x01, 0x1c, 0x73, 0xfe, 0x4d, 0x64, 0x49, 0x16, 0x01, 0x1c, 0x54, 0x64, 0xaa, 0x69, 0xe0, 0xff,
-	0x10, 0xd5, 0x94, 0x4c, 0xf5, 0x2e, 0xc0, 0x12, 0xd5, 0x34, 0xf0, 0x7f, 0x89, 0x30, 0x1f, 0xa0,
-	0x8a, 0xd1, 0xfa, 0xc7, 0x83, 0xff, 0x11, 0x9d, 0xc2, 0xa2, 0xf5, 0xe7, 0x3b, 0xcf, 0x1c, 0x0c,
-	0xf7, 0xff, 0x13, 0xd5, 0x0c, 0xcf, 0x1c, 0x4c, 0x67, 0x16, 0x01, 0x8c, 0xe6, 0x3b, 0x88, 0x28,
-	0xcd, 0x22, 0x80, 0xe1, 0x5a, 0x43, 0x79, 0xd0, 0x08, 0x93, 0xf5, 0xce, 0x54, 0xfc, 0x17, 0x67,
-	0xd5, 0x84, 0x05, 0xa1, 0xf2, 0x69, 0x7a, 0x15, 0x15, 0x45, 0x04, 0x9d, 0x2a, 0x77, 0xa5, 0xc6,
-	0x7a, 0x6b, 0x56, 0x4d, 0x58, 0x05, 0x0e, 0xa2, 0x53, 0x64, 0x13, 0xa9, 0xb4, 0xa4, 0x84, 0xd9,
-	0x79, 0x77, 0x2a, 0xce, 0x2b, 0xb3, 0x6a, 0xc2, 0xca, 0xfb, 0x85, 0xc8, 0xe7, 0xe4, 0x15, 0x34,
-	0x27, 0x03, 0x68, 0x38, 0xf7, 0xa4, 0x62, 0xbe, 0x2f, 0xab, 0x26, 0xac, 0xa2, 0x88, 0xa1, 0xa1,
-	0xb0, 0xda, 0x82, 0x67, 0x5c, 0xc6, 0xf7, 0xd2, 0x87, 0x9c, 0x16, 0x1e, 0x72, 0x39, 0xa8, 0xab,
-	0xe0, 0xfb, 0xa2, 0x74, 0x95, 0xa0, 0x6e, 0x19, 0xdf, 0x1f, 0xa5, 0x5b, 0x5e, 0xb8, 0x8a, 0xd2,
-	0x52, 0x4a, 0xbf, 0xc5, 0xff, 0x2b, 0x58, 0x38, 0x89, 0xf2, 0xc1, 0x1b, 0xbb, 0x9a, 0x47, 0xa9,
-	0x6b, 0xf6, 0xbe, 0x07, 0x3c, 0x60, 0x91, 0x1f, 0xd5, 0x83, 0x68, 0xf2, 0x7a, 0xcd, 0xe9, 0xd9,
-	0x38, 0xe9, 0xd9, 0xe0, 0x97, 0x13, 0xc9, 0xe3, 0xca, 0xc2, 0x29, 0x54, 0x08, 0x5d, 0xc7, 0x07,
-	0x39, 0x98, 0x14, 0x1d, 0x9c, 0x46, 0x6a, 0xf8, 0xa6, 0x3d, 0xc8, 0x43, 0x21, 0xda, 0xc3, 0xc6,
-	0xf0, 0x1e, 0x32, 0x7d, 0x83, 0xf0, 0xaf, 0x0e, 0x83, 0x1c, 0xa4, 0xfa, 0x07, 0x31, 0xa4, 0x07,
-	0xb5, 0x7f, 0x10, 0x43, 0x7a, 0x98, 0x10, 0x3d, 0xac, 0xa2, 0x62, 0xc4, 0x65, 0x75, 0x90, 0x8b,
-	0x69, 0xd1, 0xc5, 0x1a, 0x3a, 0x18, 0x75, 0x07, 0x1d, 0xe4, 0x23, 0x17, 0x9d, 0x4b, 0x7e, 0xb9,
-	0x1c, 0xe4, 0x20, 0x79, 0x9b, 0x38, 0x86, 0x4c, 0xc5, 0xd4, 0xed, 0xe2, 0x18, 0xd2, 0x47, 0x3e,
-	0xfa, 0x81, 0x08, 0xb7, 0xbc, 0x41, 0x1e, 0x94, 0x3e, 0x45, 0xc1, 0xef, 0x6f, 0x83, 0x3c, 0xcc,
-	0x44, 0xe7, 0x92, 0x5f, 0xcd, 0x06, 0x39, 0x48, 0x8b, 0x0e, 0xf6, 0xd1, 0x5c, 0xe4, 0x8d, 0x2b,
-	0xc2, 0xc9, 0x2f, 0x45, 0x27, 0x71, 0x5f, 0xcb, 0x0a, 0xe8, 0x1b, 0x08, 0xf7, 0xbb, 0x77, 0x45,
-	0xd0, 0x2f, 0x8a, 0xf4, 0x31, 0x5e, 0xd5, 0x0a, 0x5f, 0xa0, 0x87, 0xbe, 0xd3, 0xe7, 0xfa, 0x15,
-	0xc1, 0x3f, 0x2b, 0x47, 0x3f, 0xea, 0xbb, 0x5b, 0x01, 0xfb, 0x47, 0xb4, 0xd0, 0xff, 0xea, 0x15,
-	0x41, 0xfe, 0x85, 0x1c, 0x79, 0x8c, 0xb7, 0xb9, 0xa1, 0x82, 0x91, 0x2f, 0x60, 0x22, 0x73, 0x72,
-	0x50, 0x3b, 0x87, 0x9a, 0x0d, 0xdc, 0xad, 0x44, 0x0f, 0x85, 0xe1, 0x3c, 0x6c, 0xf4, 0xf7, 0x90,
-	0x19, 0x6e, 0xa4, 0xc8, 0x17, 0x22, 0xd1, 0x41, 0x6a, 0xf8, 0x20, 0xfa, 0x78, 0x50, 0x87, 0x0f,
-	0xa2, 0x8f, 0x87, 0x89, 0x41, 0x1e, 0xa0, 0x8b, 0x05, 0xaf, 0x27, 0xa2, 0x8b, 0xe9, 0x21, 0xc3,
-	0x90, 0xef, 0x1d, 0xa2, 0x87, 0x99, 0x01, 0x1e, 0x16, 0x4b, 0x68, 0x86, 0x1f, 0x02, 0x67, 0xd0,
-	0xe4, 0xea, 0x85, 0x4b, 0xd5, 0xd5, 0x7c, 0x82, 0xfc, 0xb8, 0x66, 0xad, 0xfe, 0xe6, 0xd7, 0x79,
-	0x45, 0x9d, 0x45, 0xd3, 0x67, 0xaa, 0xab, 0xd6, 0x85, 0xf3, 0xeb, 0xf9, 0xe4, 0x5a, 0x86, 0x1e,
-	0x57, 0x7b, 0xed, 0xa6, 0xdb, 0x3e, 0x5a, 0x46, 0xb3, 0xe2, 0xc1, 0x2b, 0xca, 0x01, 0x52, 0xd3,
-	0xdc, 0xc1, 0x2d, 0x65, 0xed, 0xd2, 0x6f, 0x7f, 0x15, 0xaa, 0xdf, 0x25, 0xaf, 0x7e, 0xb7, 0x7a,
-	0xf5, 0xa5, 0x66, 0xbb, 0x6b, 0xef, 0xb5, 0x6b, 0x8e, 0xf7, 0xd7, 0x13, 0x9e, 0xb5, 0xb3, 0xe4,
-	0xd8, 0x8d, 0xda, 0xf6, 0xfe, 0x52, 0xbf, 0x3f, 0xb4, 0xd8, 0x9a, 0x82, 0x4f, 0xbe, 0x09, 0x00,
-	0x00, 0xff, 0xff, 0x64, 0xfb, 0xb5, 0x25, 0x8b, 0x21, 0x00, 0x00,
-}
diff --git a/internal/testprotos/legacy/proto3_20180125_92554152/test.proto b/internal/testprotos/legacy/proto3_20180125_92554152/test.proto
deleted file mode 100644
index 63212af..0000000
--- a/internal/testprotos/legacy/proto3_20180125_92554152/test.proto
+++ /dev/null
@@ -1,136 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-
-package google.golang.org.proto3_20180125;
-option go_package = "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20180125_92554152";
-
-enum SiblingEnum {
-	ALPHA   = 0;
-	BRAVO   = 10;
-	CHARLIE = 200;
-}
-
-message SiblingMessage {
-	string          f1 = 1;
-	repeated string f2 = 2;
-	Message         f3 = 3;
-}
-
-message Message {
-	enum ChildEnum {
-		ALPHA   = 0;
-		BRAVO   = 1;
-		CHARLIE = 2;
-	}
-	message ChildMessage {
-		string          f1 = 1;
-		repeated string f2 = 2;
-		Message         f3 = 3;
-	}
-
-	// Optional fields.
-	bool     optional_bool     = 100;
-	int32    optional_int32    = 101;
-	sint32   optional_sint32   = 102;
-	uint32   optional_uint32   = 103;
-	int64    optional_int64    = 104;
-	sint64   optional_sint64   = 105;
-	uint64   optional_uint64   = 106;
-	fixed32  optional_fixed32  = 107;
-	sfixed32 optional_sfixed32 = 108;
-	float    optional_float    = 109;
-	fixed64  optional_fixed64  = 110;
-	sfixed64 optional_sfixed64 = 111;
-	double   optional_double   = 112;
-	string   optional_string   = 113;
-	bytes    optional_bytes    = 114;
-
-	ChildEnum      optional_child_enum      = 115;
-	ChildMessage   optional_child_message   = 116;
-	SiblingEnum    optional_sibling_enum    = 117;
-	SiblingMessage optional_sibling_message = 118;
-
-	// Repeated fields.
-	repeated bool     repeated_bool     = 200;
-	repeated int32    repeated_int32    = 201;
-	repeated sint32   repeated_sint32   = 202;
-	repeated uint32   repeated_uint32   = 203;
-	repeated int64    repeated_int64    = 204;
-	repeated sint64   repeated_sint64   = 205;
-	repeated uint64   repeated_uint64   = 206;
-	repeated fixed32  repeated_fixed32  = 207;
-	repeated sfixed32 repeated_sfixed32 = 208;
-	repeated float    repeated_float    = 209;
-	repeated fixed64  repeated_fixed64  = 210;
-	repeated sfixed64 repeated_sfixed64 = 211;
-	repeated double   repeated_double   = 212;
-	repeated string   repeated_string   = 213;
-	repeated bytes    repeated_bytes    = 214;
-
-	repeated ChildEnum      repeated_child_enum      = 215;
-	repeated ChildMessage   repeated_child_message   = 216;
-	repeated SiblingEnum    repeated_sibling_enum    = 217;
-	repeated SiblingMessage repeated_sibling_message = 218;
-
-	// Map fields.
-	map<bool, bool>     map_bool_bool     = 300;
-	map<bool, int32>    map_bool_int32    = 301;
-	map<bool, sint32>   map_bool_sint32   = 302;
-	map<bool, uint32>   map_bool_uint32   = 303;
-	map<bool, int64>    map_bool_int64    = 304;
-	map<bool, sint64>   map_bool_sint64   = 305;
-	map<bool, uint64>   map_bool_uint64   = 306;
-	map<bool, fixed32>  map_bool_fixed32  = 307;
-	map<bool, sfixed32> map_bool_sfixed32 = 308;
-	map<bool, float>    map_bool_float    = 309;
-	map<bool, fixed64>  map_bool_fixed64  = 310;
-	map<bool, sfixed64> map_bool_sfixed64 = 311;
-	map<bool, double>   map_bool_double   = 312;
-	map<bool, string>   map_bool_string   = 313;
-	map<bool, bytes>    map_bool_bytes    = 314;
-
-	map<bool, ChildEnum>      map_bool_child_enum      = 315;
-	map<bool, ChildMessage>   map_bool_child_message   = 316;
-	map<bool, SiblingEnum>    map_bool_sibling_enum    = 317;
-	map<bool, SiblingMessage> map_bool_sibling_message = 318;
-
-	map<int32, bool>   map_int32_bool   = 319;
-	map<sint32, bool>  map_sint32_bool  = 320;
-	map<uint32, bool>  map_uint32_bool  = 321;
-	map<int64, bool>   map_int64_bool   = 322;
-	map<sint64, bool>  map_sint64_bool  = 323;
-	map<uint64, bool>  map_uint64_bool  = 324;
-	map<fixed32, bool> map_fixed32_bool = 325;
-	map<string, bool>  map_string_bool  = 326;
-
-	// Oneof fields.
-	oneof oneof_union {
-		bool     oneof_bool     = 400;
-		int32    oneof_int32    = 401;
-		sint32   oneof_sint32   = 402;
-		uint32   oneof_uint32   = 403;
-		int64    oneof_int64    = 404;
-		sint64   oneof_sint64   = 405;
-		uint64   oneof_uint64   = 406;
-		fixed32  oneof_fixed32  = 407;
-		sfixed32 oneof_sfixed32 = 408;
-		float    oneof_float    = 409;
-		fixed64  oneof_fixed64  = 410;
-		sfixed64 oneof_sfixed64 = 411;
-		double   oneof_double   = 412;
-		string   oneof_string   = 413;
-		bytes    oneof_bytes    = 414;
-
-		ChildEnum      oneof_child_enum      = 415;
-		ChildMessage   oneof_child_message   = 416;
-		SiblingEnum    oneof_sibling_enum    = 417;
-		SiblingMessage oneof_sibling_message = 418;
-
-		string oneof_string1 = 419;
-		string oneof_string2 = 420;
-		string oneof_string3 = 421;
-	}
-}
diff --git a/internal/testprotos/legacy/proto3_20180430_b4deda09/test.pb.go b/internal/testprotos/legacy/proto3_20180430_b4deda09/test.pb.go
deleted file mode 100644
index cd2631a..0000000
--- a/internal/testprotos/legacy/proto3_20180430_b4deda09/test.pb.go
+++ /dev/null
@@ -1,1545 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: proto3_20180430_b4deda09/test.proto
-
-package proto3_20180430_b4deda09 // import "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20180430_b4deda09"
-
-import proto "google.golang.org/protobuf/internal/protolegacy"
-import fmt "fmt"
-import 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.ProtoPackageIsVersion2 // please upgrade the proto package
-
-type SiblingEnum int32
-
-const (
-	SiblingEnum_ALPHA   SiblingEnum = 0
-	SiblingEnum_BRAVO   SiblingEnum = 10
-	SiblingEnum_CHARLIE SiblingEnum = 200
-)
-
-var SiblingEnum_name = map[int32]string{
-	0:   "ALPHA",
-	10:  "BRAVO",
-	200: "CHARLIE",
-}
-var SiblingEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   10,
-	"CHARLIE": 200,
-}
-
-func (x SiblingEnum) String() string {
-	return proto.EnumName(SiblingEnum_name, int32(x))
-}
-func (SiblingEnum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_test_b39f8dbfc888d45a, []int{0}
-}
-
-type Message_ChildEnum int32
-
-const (
-	Message_ALPHA   Message_ChildEnum = 0
-	Message_BRAVO   Message_ChildEnum = 1
-	Message_CHARLIE Message_ChildEnum = 2
-)
-
-var Message_ChildEnum_name = map[int32]string{
-	0: "ALPHA",
-	1: "BRAVO",
-	2: "CHARLIE",
-}
-var Message_ChildEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   1,
-	"CHARLIE": 2,
-}
-
-func (x Message_ChildEnum) String() string {
-	return proto.EnumName(Message_ChildEnum_name, int32(x))
-}
-func (Message_ChildEnum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_test_b39f8dbfc888d45a, []int{1, 0}
-}
-
-type SiblingMessage struct {
-	F1                   string   `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   []string `protobuf:"bytes,2,rep,name=f2" json:"f2,omitempty"`
-	F3                   *Message `protobuf:"bytes,3,opt,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *SiblingMessage) Reset()         { *m = SiblingMessage{} }
-func (m *SiblingMessage) String() string { return proto.CompactTextString(m) }
-func (*SiblingMessage) ProtoMessage()    {}
-func (*SiblingMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_b39f8dbfc888d45a, []int{0}
-}
-func (m *SiblingMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SiblingMessage.Unmarshal(m, b)
-}
-func (m *SiblingMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SiblingMessage.Marshal(b, m, deterministic)
-}
-func (dst *SiblingMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SiblingMessage.Merge(dst, src)
-}
-func (m *SiblingMessage) XXX_Size() int {
-	return xxx_messageInfo_SiblingMessage.Size(m)
-}
-func (m *SiblingMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_SiblingMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SiblingMessage proto.InternalMessageInfo
-
-func (m *SiblingMessage) GetF1() string {
-	if m != nil {
-		return m.F1
-	}
-	return ""
-}
-
-func (m *SiblingMessage) GetF2() []string {
-	if m != nil {
-		return m.F2
-	}
-	return nil
-}
-
-func (m *SiblingMessage) GetF3() *Message {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message struct {
-	// Optional fields.
-	OptionalBool           bool                  `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
-	OptionalInt32          int32                 `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
-	OptionalSint32         int32                 `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
-	OptionalUint32         uint32                `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
-	OptionalInt64          int64                 `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
-	OptionalSint64         int64                 `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
-	OptionalUint64         uint64                `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
-	OptionalFixed32        uint32                `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
-	OptionalSfixed32       int32                 `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
-	OptionalFloat          float32               `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
-	OptionalFixed64        uint64                `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
-	OptionalSfixed64       int64                 `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
-	OptionalDouble         float64               `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
-	OptionalString         string                `protobuf:"bytes,113,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
-	OptionalBytes          []byte                `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes,proto3" json:"optional_bytes,omitempty"`
-	OptionalChildEnum      Message_ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,enum=google.golang.org.proto3_20180430.Message_ChildEnum" json:"optional_child_enum,omitempty"`
-	OptionalChildMessage   *Message_ChildMessage `protobuf:"bytes,116,opt,name=optional_child_message,json=optionalChildMessage" json:"optional_child_message,omitempty"`
-	OptionalSiblingEnum    SiblingEnum           `protobuf:"varint,117,opt,name=optional_sibling_enum,json=optionalSiblingEnum,enum=google.golang.org.proto3_20180430.SiblingEnum" json:"optional_sibling_enum,omitempty"`
-	OptionalSiblingMessage *SiblingMessage       `protobuf:"bytes,118,opt,name=optional_sibling_message,json=optionalSiblingMessage" json:"optional_sibling_message,omitempty"`
-	// Repeated fields.
-	RepeatedBool           []bool                  `protobuf:"varint,200,rep,packed,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
-	RepeatedInt32          []int32                 `protobuf:"varint,201,rep,packed,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
-	RepeatedSint32         []int32                 `protobuf:"zigzag32,202,rep,packed,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
-	RepeatedUint32         []uint32                `protobuf:"varint,203,rep,packed,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
-	RepeatedInt64          []int64                 `protobuf:"varint,204,rep,packed,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
-	RepeatedSint64         []int64                 `protobuf:"zigzag64,205,rep,packed,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
-	RepeatedUint64         []uint64                `protobuf:"varint,206,rep,packed,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
-	RepeatedFixed32        []uint32                `protobuf:"fixed32,207,rep,packed,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
-	RepeatedSfixed32       []int32                 `protobuf:"fixed32,208,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
-	RepeatedFloat          []float32               `protobuf:"fixed32,209,rep,packed,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
-	RepeatedFixed64        []uint64                `protobuf:"fixed64,210,rep,packed,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
-	RepeatedSfixed64       []int64                 `protobuf:"fixed64,211,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
-	RepeatedDouble         []float64               `protobuf:"fixed64,212,rep,packed,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
-	RepeatedString         []string                `protobuf:"bytes,213,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
-	RepeatedBytes          [][]byte                `protobuf:"bytes,214,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"`
-	RepeatedChildEnum      []Message_ChildEnum     `protobuf:"varint,215,rep,packed,name=repeated_child_enum,json=repeatedChildEnum,enum=google.golang.org.proto3_20180430.Message_ChildEnum" json:"repeated_child_enum,omitempty"`
-	RepeatedChildMessage   []*Message_ChildMessage `protobuf:"bytes,216,rep,name=repeated_child_message,json=repeatedChildMessage" json:"repeated_child_message,omitempty"`
-	RepeatedSiblingEnum    []SiblingEnum           `protobuf:"varint,217,rep,packed,name=repeated_sibling_enum,json=repeatedSiblingEnum,enum=google.golang.org.proto3_20180430.SiblingEnum" json:"repeated_sibling_enum,omitempty"`
-	RepeatedSiblingMessage []*SiblingMessage       `protobuf:"bytes,218,rep,name=repeated_sibling_message,json=repeatedSiblingMessage" json:"repeated_sibling_message,omitempty"`
-	// Map fields.
-	MapBoolBool           map[bool]bool                  `protobuf:"bytes,300,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolInt32          map[bool]int32                 `protobuf:"bytes,301,rep,name=map_bool_int32,json=mapBoolInt32" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolSint32         map[bool]int32                 `protobuf:"bytes,302,rep,name=map_bool_sint32,json=mapBoolSint32" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
-	MapBoolUint32         map[bool]uint32                `protobuf:"bytes,303,rep,name=map_bool_uint32,json=mapBoolUint32" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolInt64          map[bool]int64                 `protobuf:"bytes,304,rep,name=map_bool_int64,json=mapBoolInt64" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolSint64         map[bool]int64                 `protobuf:"bytes,305,rep,name=map_bool_sint64,json=mapBoolSint64" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
-	MapBoolUint64         map[bool]uint64                `protobuf:"bytes,306,rep,name=map_bool_uint64,json=mapBoolUint64" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapBoolFixed32        map[bool]uint32                `protobuf:"bytes,307,rep,name=map_bool_fixed32,json=mapBoolFixed32" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolSfixed32       map[bool]int32                 `protobuf:"bytes,308,rep,name=map_bool_sfixed32,json=mapBoolSfixed32" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolFloat          map[bool]float32               `protobuf:"bytes,309,rep,name=map_bool_float,json=mapBoolFloat" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapBoolFixed64        map[bool]uint64                `protobuf:"bytes,310,rep,name=map_bool_fixed64,json=mapBoolFixed64" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolSfixed64       map[bool]int64                 `protobuf:"bytes,311,rep,name=map_bool_sfixed64,json=mapBoolSfixed64" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolDouble         map[bool]float64               `protobuf:"bytes,312,rep,name=map_bool_double,json=mapBoolDouble" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolString         map[bool]string                `protobuf:"bytes,313,rep,name=map_bool_string,json=mapBoolString" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolBytes          map[bool][]byte                `protobuf:"bytes,314,rep,name=map_bool_bytes,json=mapBoolBytes" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapBoolChildEnum      map[bool]Message_ChildEnum     `protobuf:"bytes,315,rep,name=map_bool_child_enum,json=mapBoolChildEnum" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto3_20180430.Message_ChildEnum"`
-	MapBoolChildMessage   map[bool]*Message_ChildMessage `protobuf:"bytes,316,rep,name=map_bool_child_message,json=mapBoolChildMessage" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBoolSiblingEnum    map[bool]SiblingEnum           `protobuf:"bytes,317,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=google.golang.org.proto3_20180430.SiblingEnum"`
-	MapBoolSiblingMessage map[bool]*SiblingMessage       `protobuf:"bytes,318,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapInt32Bool          map[int32]bool                 `protobuf:"bytes,319,rep,name=map_int32_bool,json=mapInt32Bool" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint32Bool         map[int32]bool                 `protobuf:"bytes,320,rep,name=map_sint32_bool,json=mapSint32Bool" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint32Bool         map[uint32]bool                `protobuf:"bytes,321,rep,name=map_uint32_bool,json=mapUint32Bool" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapInt64Bool          map[int64]bool                 `protobuf:"bytes,322,rep,name=map_int64_bool,json=mapInt64Bool" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint64Bool         map[int64]bool                 `protobuf:"bytes,323,rep,name=map_sint64_bool,json=mapSint64Bool" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint64Bool         map[uint64]bool                `protobuf:"bytes,324,rep,name=map_uint64_bool,json=mapUint64Bool" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapFixed32Bool        map[uint32]bool                `protobuf:"bytes,325,rep,name=map_fixed32_bool,json=mapFixed32Bool" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapStringBool         map[string]bool                `protobuf:"bytes,326,rep,name=map_string_bool,json=mapStringBool" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	// Oneof fields.
-	//
-	// Types that are valid to be assigned to OneofUnion:
-	//	*Message_OneofBool
-	//	*Message_OneofInt32
-	//	*Message_OneofSint32
-	//	*Message_OneofUint32
-	//	*Message_OneofInt64
-	//	*Message_OneofSint64
-	//	*Message_OneofUint64
-	//	*Message_OneofFixed32
-	//	*Message_OneofSfixed32
-	//	*Message_OneofFloat
-	//	*Message_OneofFixed64
-	//	*Message_OneofSfixed64
-	//	*Message_OneofDouble
-	//	*Message_OneofString
-	//	*Message_OneofBytes
-	//	*Message_OneofChildEnum
-	//	*Message_OneofChildMessage
-	//	*Message_OneofSiblingEnum
-	//	*Message_OneofSiblingMessage
-	//	*Message_OneofString1
-	//	*Message_OneofString2
-	//	*Message_OneofString3
-	OneofUnion           isMessage_OneofUnion `protobuf_oneof:"oneof_union"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
-}
-
-func (m *Message) Reset()         { *m = Message{} }
-func (m *Message) String() string { return proto.CompactTextString(m) }
-func (*Message) ProtoMessage()    {}
-func (*Message) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_b39f8dbfc888d45a, []int{1}
-}
-func (m *Message) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message.Unmarshal(m, b)
-}
-func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message.Marshal(b, m, deterministic)
-}
-func (dst *Message) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message.Merge(dst, src)
-}
-func (m *Message) XXX_Size() int {
-	return xxx_messageInfo_Message.Size(m)
-}
-func (m *Message) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message proto.InternalMessageInfo
-
-type isMessage_OneofUnion interface {
-	isMessage_OneofUnion()
-}
-
-type Message_OneofBool struct {
-	OneofBool bool `protobuf:"varint,400,opt,name=oneof_bool,json=oneofBool,oneof"`
-}
-type Message_OneofInt32 struct {
-	OneofInt32 int32 `protobuf:"varint,401,opt,name=oneof_int32,json=oneofInt32,oneof"`
-}
-type Message_OneofSint32 struct {
-	OneofSint32 int32 `protobuf:"zigzag32,402,opt,name=oneof_sint32,json=oneofSint32,oneof"`
-}
-type Message_OneofUint32 struct {
-	OneofUint32 uint32 `protobuf:"varint,403,opt,name=oneof_uint32,json=oneofUint32,oneof"`
-}
-type Message_OneofInt64 struct {
-	OneofInt64 int64 `protobuf:"varint,404,opt,name=oneof_int64,json=oneofInt64,oneof"`
-}
-type Message_OneofSint64 struct {
-	OneofSint64 int64 `protobuf:"zigzag64,405,opt,name=oneof_sint64,json=oneofSint64,oneof"`
-}
-type Message_OneofUint64 struct {
-	OneofUint64 uint64 `protobuf:"varint,406,opt,name=oneof_uint64,json=oneofUint64,oneof"`
-}
-type Message_OneofFixed32 struct {
-	OneofFixed32 uint32 `protobuf:"fixed32,407,opt,name=oneof_fixed32,json=oneofFixed32,oneof"`
-}
-type Message_OneofSfixed32 struct {
-	OneofSfixed32 int32 `protobuf:"fixed32,408,opt,name=oneof_sfixed32,json=oneofSfixed32,oneof"`
-}
-type Message_OneofFloat struct {
-	OneofFloat float32 `protobuf:"fixed32,409,opt,name=oneof_float,json=oneofFloat,oneof"`
-}
-type Message_OneofFixed64 struct {
-	OneofFixed64 uint64 `protobuf:"fixed64,410,opt,name=oneof_fixed64,json=oneofFixed64,oneof"`
-}
-type Message_OneofSfixed64 struct {
-	OneofSfixed64 int64 `protobuf:"fixed64,411,opt,name=oneof_sfixed64,json=oneofSfixed64,oneof"`
-}
-type Message_OneofDouble struct {
-	OneofDouble float64 `protobuf:"fixed64,412,opt,name=oneof_double,json=oneofDouble,oneof"`
-}
-type Message_OneofString struct {
-	OneofString string `protobuf:"bytes,413,opt,name=oneof_string,json=oneofString,oneof"`
-}
-type Message_OneofBytes struct {
-	OneofBytes []byte `protobuf:"bytes,414,opt,name=oneof_bytes,json=oneofBytes,proto3,oneof"`
-}
-type Message_OneofChildEnum struct {
-	OneofChildEnum Message_ChildEnum `protobuf:"varint,415,opt,name=oneof_child_enum,json=oneofChildEnum,enum=google.golang.org.proto3_20180430.Message_ChildEnum,oneof"`
-}
-type Message_OneofChildMessage struct {
-	OneofChildMessage *Message_ChildMessage `protobuf:"bytes,416,opt,name=oneof_child_message,json=oneofChildMessage,oneof"`
-}
-type Message_OneofSiblingEnum struct {
-	OneofSiblingEnum SiblingEnum `protobuf:"varint,417,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,enum=google.golang.org.proto3_20180430.SiblingEnum,oneof"`
-}
-type Message_OneofSiblingMessage struct {
-	OneofSiblingMessage *SiblingMessage `protobuf:"bytes,418,opt,name=oneof_sibling_message,json=oneofSiblingMessage,oneof"`
-}
-type Message_OneofString1 struct {
-	OneofString1 string `protobuf:"bytes,419,opt,name=oneof_string1,json=oneofString1,oneof"`
-}
-type Message_OneofString2 struct {
-	OneofString2 string `protobuf:"bytes,420,opt,name=oneof_string2,json=oneofString2,oneof"`
-}
-type Message_OneofString3 struct {
-	OneofString3 string `protobuf:"bytes,421,opt,name=oneof_string3,json=oneofString3,oneof"`
-}
-
-func (*Message_OneofBool) isMessage_OneofUnion()           {}
-func (*Message_OneofInt32) isMessage_OneofUnion()          {}
-func (*Message_OneofSint32) isMessage_OneofUnion()         {}
-func (*Message_OneofUint32) isMessage_OneofUnion()         {}
-func (*Message_OneofInt64) isMessage_OneofUnion()          {}
-func (*Message_OneofSint64) isMessage_OneofUnion()         {}
-func (*Message_OneofUint64) isMessage_OneofUnion()         {}
-func (*Message_OneofFixed32) isMessage_OneofUnion()        {}
-func (*Message_OneofSfixed32) isMessage_OneofUnion()       {}
-func (*Message_OneofFloat) isMessage_OneofUnion()          {}
-func (*Message_OneofFixed64) isMessage_OneofUnion()        {}
-func (*Message_OneofSfixed64) isMessage_OneofUnion()       {}
-func (*Message_OneofDouble) isMessage_OneofUnion()         {}
-func (*Message_OneofString) isMessage_OneofUnion()         {}
-func (*Message_OneofBytes) isMessage_OneofUnion()          {}
-func (*Message_OneofChildEnum) isMessage_OneofUnion()      {}
-func (*Message_OneofChildMessage) isMessage_OneofUnion()   {}
-func (*Message_OneofSiblingEnum) isMessage_OneofUnion()    {}
-func (*Message_OneofSiblingMessage) isMessage_OneofUnion() {}
-func (*Message_OneofString1) isMessage_OneofUnion()        {}
-func (*Message_OneofString2) isMessage_OneofUnion()        {}
-func (*Message_OneofString3) isMessage_OneofUnion()        {}
-
-func (m *Message) GetOneofUnion() isMessage_OneofUnion {
-	if m != nil {
-		return m.OneofUnion
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalBool() bool {
-	if m != nil {
-		return m.OptionalBool
-	}
-	return false
-}
-
-func (m *Message) GetOptionalInt32() int32 {
-	if m != nil {
-		return m.OptionalInt32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSint32() int32 {
-	if m != nil {
-		return m.OptionalSint32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalUint32() uint32 {
-	if m != nil {
-		return m.OptionalUint32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalInt64() int64 {
-	if m != nil {
-		return m.OptionalInt64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSint64() int64 {
-	if m != nil {
-		return m.OptionalSint64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalUint64() uint64 {
-	if m != nil {
-		return m.OptionalUint64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFixed32() uint32 {
-	if m != nil {
-		return m.OptionalFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSfixed32() int32 {
-	if m != nil {
-		return m.OptionalSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFloat() float32 {
-	if m != nil {
-		return m.OptionalFloat
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFixed64() uint64 {
-	if m != nil {
-		return m.OptionalFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSfixed64() int64 {
-	if m != nil {
-		return m.OptionalSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalDouble() float64 {
-	if m != nil {
-		return m.OptionalDouble
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalString() string {
-	if m != nil {
-		return m.OptionalString
-	}
-	return ""
-}
-
-func (m *Message) GetOptionalBytes() []byte {
-	if m != nil {
-		return m.OptionalBytes
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalChildEnum() Message_ChildEnum {
-	if m != nil {
-		return m.OptionalChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetOptionalChildMessage() *Message_ChildMessage {
-	if m != nil {
-		return m.OptionalChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalSiblingEnum() SiblingEnum {
-	if m != nil {
-		return m.OptionalSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetOptionalSiblingMessage() *SiblingMessage {
-	if m != nil {
-		return m.OptionalSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedBool() []bool {
-	if m != nil {
-		return m.RepeatedBool
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedInt32() []int32 {
-	if m != nil {
-		return m.RepeatedInt32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSint32() []int32 {
-	if m != nil {
-		return m.RepeatedSint32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedUint32() []uint32 {
-	if m != nil {
-		return m.RepeatedUint32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedInt64() []int64 {
-	if m != nil {
-		return m.RepeatedInt64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSint64() []int64 {
-	if m != nil {
-		return m.RepeatedSint64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedUint64() []uint64 {
-	if m != nil {
-		return m.RepeatedUint64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFixed32() []uint32 {
-	if m != nil {
-		return m.RepeatedFixed32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSfixed32() []int32 {
-	if m != nil {
-		return m.RepeatedSfixed32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFloat() []float32 {
-	if m != nil {
-		return m.RepeatedFloat
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFixed64() []uint64 {
-	if m != nil {
-		return m.RepeatedFixed64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSfixed64() []int64 {
-	if m != nil {
-		return m.RepeatedSfixed64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedDouble() []float64 {
-	if m != nil {
-		return m.RepeatedDouble
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedString() []string {
-	if m != nil {
-		return m.RepeatedString
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedBytes() [][]byte {
-	if m != nil {
-		return m.RepeatedBytes
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedChildEnum() []Message_ChildEnum {
-	if m != nil {
-		return m.RepeatedChildEnum
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedChildMessage() []*Message_ChildMessage {
-	if m != nil {
-		return m.RepeatedChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSiblingEnum() []SiblingEnum {
-	if m != nil {
-		return m.RepeatedSiblingEnum
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSiblingMessage() []*SiblingMessage {
-	if m != nil {
-		return m.RepeatedSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBool() map[bool]bool {
-	if m != nil {
-		return m.MapBoolBool
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolInt32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolUint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolInt64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolUint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolFixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSfixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFloat() map[bool]float32 {
-	if m != nil {
-		return m.MapBoolFloat
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolFixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSfixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolDouble() map[bool]float64 {
-	if m != nil {
-		return m.MapBoolDouble
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolString() map[bool]string {
-	if m != nil {
-		return m.MapBoolString
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBytes() map[bool][]byte {
-	if m != nil {
-		return m.MapBoolBytes
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildEnum() map[bool]Message_ChildEnum {
-	if m != nil {
-		return m.MapBoolChildEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildMessage() map[bool]*Message_ChildMessage {
-	if m != nil {
-		return m.MapBoolChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingEnum() map[bool]SiblingEnum {
-	if m != nil {
-		return m.MapBoolSiblingEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingMessage() map[bool]*SiblingMessage {
-	if m != nil {
-		return m.MapBoolSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapInt32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapSint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapUint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapInt64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapSint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint64Bool() map[uint64]bool {
-	if m != nil {
-		return m.MapUint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapFixed32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapFixed32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapStringBool() map[string]bool {
-	if m != nil {
-		return m.MapStringBool
-	}
-	return nil
-}
-
-func (m *Message) GetOneofBool() bool {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBool); ok {
-		return x.OneofBool
-	}
-	return false
-}
-
-func (m *Message) GetOneofInt32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt32); ok {
-		return x.OneofInt32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint32); ok {
-		return x.OneofSint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint32); ok {
-		return x.OneofUint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofInt64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt64); ok {
-		return x.OneofInt64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint64); ok {
-		return x.OneofSint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint64); ok {
-		return x.OneofUint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed32); ok {
-		return x.OneofFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed32); ok {
-		return x.OneofSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFloat() float32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFloat); ok {
-		return x.OneofFloat
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed64); ok {
-		return x.OneofFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed64); ok {
-		return x.OneofSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofDouble() float64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofDouble); ok {
-		return x.OneofDouble
-	}
-	return 0
-}
-
-func (m *Message) GetOneofString() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString); ok {
-		return x.OneofString
-	}
-	return ""
-}
-
-func (m *Message) GetOneofBytes() []byte {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBytes); ok {
-		return x.OneofBytes
-	}
-	return nil
-}
-
-func (m *Message) GetOneofChildEnum() Message_ChildEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildEnum); ok {
-		return x.OneofChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetOneofChildMessage() *Message_ChildMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildMessage); ok {
-		return x.OneofChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofSiblingEnum() SiblingEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingEnum); ok {
-		return x.OneofSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetOneofSiblingMessage() *SiblingMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingMessage); ok {
-		return x.OneofSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofString1() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString1); ok {
-		return x.OneofString1
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString2() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString2); ok {
-		return x.OneofString2
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString3() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString3); ok {
-		return x.OneofString3
-	}
-	return ""
-}
-
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*Message) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _Message_OneofMarshaler, _Message_OneofUnmarshaler, _Message_OneofSizer, []interface{}{
-		(*Message_OneofBool)(nil),
-		(*Message_OneofInt32)(nil),
-		(*Message_OneofSint32)(nil),
-		(*Message_OneofUint32)(nil),
-		(*Message_OneofInt64)(nil),
-		(*Message_OneofSint64)(nil),
-		(*Message_OneofUint64)(nil),
-		(*Message_OneofFixed32)(nil),
-		(*Message_OneofSfixed32)(nil),
-		(*Message_OneofFloat)(nil),
-		(*Message_OneofFixed64)(nil),
-		(*Message_OneofSfixed64)(nil),
-		(*Message_OneofDouble)(nil),
-		(*Message_OneofString)(nil),
-		(*Message_OneofBytes)(nil),
-		(*Message_OneofChildEnum)(nil),
-		(*Message_OneofChildMessage)(nil),
-		(*Message_OneofSiblingEnum)(nil),
-		(*Message_OneofSiblingMessage)(nil),
-		(*Message_OneofString1)(nil),
-		(*Message_OneofString2)(nil),
-		(*Message_OneofString3)(nil),
-	}
-}
-
-func _Message_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*Message)
-	// oneof_union
-	switch x := m.OneofUnion.(type) {
-	case *Message_OneofBool:
-		t := uint64(0)
-		if x.OneofBool {
-			t = 1
-		}
-		b.EncodeVarint(400<<3 | proto.WireVarint)
-		b.EncodeVarint(t)
-	case *Message_OneofInt32:
-		b.EncodeVarint(401<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofInt32))
-	case *Message_OneofSint32:
-		b.EncodeVarint(402<<3 | proto.WireVarint)
-		b.EncodeZigzag32(uint64(x.OneofSint32))
-	case *Message_OneofUint32:
-		b.EncodeVarint(403<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofUint32))
-	case *Message_OneofInt64:
-		b.EncodeVarint(404<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofInt64))
-	case *Message_OneofSint64:
-		b.EncodeVarint(405<<3 | proto.WireVarint)
-		b.EncodeZigzag64(uint64(x.OneofSint64))
-	case *Message_OneofUint64:
-		b.EncodeVarint(406<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofUint64))
-	case *Message_OneofFixed32:
-		b.EncodeVarint(407<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofFixed32))
-	case *Message_OneofSfixed32:
-		b.EncodeVarint(408<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofSfixed32))
-	case *Message_OneofFloat:
-		b.EncodeVarint(409<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(math.Float32bits(x.OneofFloat)))
-	case *Message_OneofFixed64:
-		b.EncodeVarint(410<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofFixed64))
-	case *Message_OneofSfixed64:
-		b.EncodeVarint(411<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofSfixed64))
-	case *Message_OneofDouble:
-		b.EncodeVarint(412<<3 | proto.WireFixed64)
-		b.EncodeFixed64(math.Float64bits(x.OneofDouble))
-	case *Message_OneofString:
-		b.EncodeVarint(413<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString)
-	case *Message_OneofBytes:
-		b.EncodeVarint(414<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.OneofBytes)
-	case *Message_OneofChildEnum:
-		b.EncodeVarint(415<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofChildEnum))
-	case *Message_OneofChildMessage:
-		b.EncodeVarint(416<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofChildMessage); err != nil {
-			return err
-		}
-	case *Message_OneofSiblingEnum:
-		b.EncodeVarint(417<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofSiblingEnum))
-	case *Message_OneofSiblingMessage:
-		b.EncodeVarint(418<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofSiblingMessage); err != nil {
-			return err
-		}
-	case *Message_OneofString1:
-		b.EncodeVarint(419<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString1)
-	case *Message_OneofString2:
-		b.EncodeVarint(420<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString2)
-	case *Message_OneofString3:
-		b.EncodeVarint(421<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString3)
-	case nil:
-	default:
-		return fmt.Errorf("Message.OneofUnion has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _Message_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*Message)
-	switch tag {
-	case 400: // oneof_union.oneof_bool
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofBool{x != 0}
-		return true, err
-	case 401: // oneof_union.oneof_int32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofInt32{int32(x)}
-		return true, err
-	case 402: // oneof_union.oneof_sint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag32()
-		m.OneofUnion = &Message_OneofSint32{int32(x)}
-		return true, err
-	case 403: // oneof_union.oneof_uint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofUint32{uint32(x)}
-		return true, err
-	case 404: // oneof_union.oneof_int64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofInt64{int64(x)}
-		return true, err
-	case 405: // oneof_union.oneof_sint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag64()
-		m.OneofUnion = &Message_OneofSint64{int64(x)}
-		return true, err
-	case 406: // oneof_union.oneof_uint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofUint64{x}
-		return true, err
-	case 407: // oneof_union.oneof_fixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofFixed32{uint32(x)}
-		return true, err
-	case 408: // oneof_union.oneof_sfixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofSfixed32{int32(x)}
-		return true, err
-	case 409: // oneof_union.oneof_float
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofFloat{math.Float32frombits(uint32(x))}
-		return true, err
-	case 410: // oneof_union.oneof_fixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofFixed64{x}
-		return true, err
-	case 411: // oneof_union.oneof_sfixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofSfixed64{int64(x)}
-		return true, err
-	case 412: // oneof_union.oneof_double
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofDouble{math.Float64frombits(x)}
-		return true, err
-	case 413: // oneof_union.oneof_string
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString{x}
-		return true, err
-	case 414: // oneof_union.oneof_bytes
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.OneofUnion = &Message_OneofBytes{x}
-		return true, err
-	case 415: // oneof_union.oneof_child_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofChildEnum{Message_ChildEnum(x)}
-		return true, err
-	case 416: // oneof_union.oneof_child_message
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Message_ChildMessage)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofChildMessage{msg}
-		return true, err
-	case 417: // oneof_union.oneof_sibling_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofSiblingEnum{SiblingEnum(x)}
-		return true, err
-	case 418: // oneof_union.oneof_sibling_message
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(SiblingMessage)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofSiblingMessage{msg}
-		return true, err
-	case 419: // oneof_union.oneof_string1
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString1{x}
-		return true, err
-	case 420: // oneof_union.oneof_string2
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString2{x}
-		return true, err
-	case 421: // oneof_union.oneof_string3
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString3{x}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _Message_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*Message)
-	// oneof_union
-	switch x := m.OneofUnion.(type) {
-	case *Message_OneofBool:
-		n += 2 // tag and wire
-		n += 1
-	case *Message_OneofInt32:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofInt32))
-	case *Message_OneofSint32:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64((uint32(x.OneofSint32) << 1) ^ uint32((int32(x.OneofSint32) >> 31))))
-	case *Message_OneofUint32:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofUint32))
-	case *Message_OneofInt64:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofInt64))
-	case *Message_OneofSint64:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(uint64(x.OneofSint64<<1) ^ uint64((int64(x.OneofSint64) >> 63))))
-	case *Message_OneofUint64:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofUint64))
-	case *Message_OneofFixed32:
-		n += 2 // tag and wire
-		n += 4
-	case *Message_OneofSfixed32:
-		n += 2 // tag and wire
-		n += 4
-	case *Message_OneofFloat:
-		n += 2 // tag and wire
-		n += 4
-	case *Message_OneofFixed64:
-		n += 2 // tag and wire
-		n += 8
-	case *Message_OneofSfixed64:
-		n += 2 // tag and wire
-		n += 8
-	case *Message_OneofDouble:
-		n += 2 // tag and wire
-		n += 8
-	case *Message_OneofString:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofString)))
-		n += len(x.OneofString)
-	case *Message_OneofBytes:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofBytes)))
-		n += len(x.OneofBytes)
-	case *Message_OneofChildEnum:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofChildEnum))
-	case *Message_OneofChildMessage:
-		s := proto.Size(x.OneofChildMessage)
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_OneofSiblingEnum:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofSiblingEnum))
-	case *Message_OneofSiblingMessage:
-		s := proto.Size(x.OneofSiblingMessage)
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_OneofString1:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofString1)))
-		n += len(x.OneofString1)
-	case *Message_OneofString2:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofString2)))
-		n += len(x.OneofString2)
-	case *Message_OneofString3:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofString3)))
-		n += len(x.OneofString3)
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
-type Message_ChildMessage struct {
-	F1                   string   `protobuf:"bytes,1,opt,name=f1" json:"f1,omitempty"`
-	F2                   []string `protobuf:"bytes,2,rep,name=f2" json:"f2,omitempty"`
-	F3                   *Message `protobuf:"bytes,3,opt,name=f3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_ChildMessage) Reset()         { *m = Message_ChildMessage{} }
-func (m *Message_ChildMessage) String() string { return proto.CompactTextString(m) }
-func (*Message_ChildMessage) ProtoMessage()    {}
-func (*Message_ChildMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_b39f8dbfc888d45a, []int{1, 0}
-}
-func (m *Message_ChildMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_ChildMessage.Unmarshal(m, b)
-}
-func (m *Message_ChildMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_ChildMessage.Marshal(b, m, deterministic)
-}
-func (dst *Message_ChildMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_ChildMessage.Merge(dst, src)
-}
-func (m *Message_ChildMessage) XXX_Size() int {
-	return xxx_messageInfo_Message_ChildMessage.Size(m)
-}
-func (m *Message_ChildMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_ChildMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_ChildMessage proto.InternalMessageInfo
-
-func (m *Message_ChildMessage) GetF1() string {
-	if m != nil {
-		return m.F1
-	}
-	return ""
-}
-
-func (m *Message_ChildMessage) GetF2() []string {
-	if m != nil {
-		return m.F2
-	}
-	return nil
-}
-
-func (m *Message_ChildMessage) GetF3() *Message {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func init() {
-	proto.RegisterType((*SiblingMessage)(nil), "google.golang.org.proto3_20180430.SiblingMessage")
-	proto.RegisterType((*Message)(nil), "google.golang.org.proto3_20180430.Message")
-	proto.RegisterMapType((map[bool]bool)(nil), "google.golang.org.proto3_20180430.Message.MapBoolBoolEntry")
-	proto.RegisterMapType((map[bool][]byte)(nil), "google.golang.org.proto3_20180430.Message.MapBoolBytesEntry")
-	proto.RegisterMapType((map[bool]Message_ChildEnum)(nil), "google.golang.org.proto3_20180430.Message.MapBoolChildEnumEntry")
-	proto.RegisterMapType((map[bool]*Message_ChildMessage)(nil), "google.golang.org.proto3_20180430.Message.MapBoolChildMessageEntry")
-	proto.RegisterMapType((map[bool]float64)(nil), "google.golang.org.proto3_20180430.Message.MapBoolDoubleEntry")
-	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto3_20180430.Message.MapBoolFixed32Entry")
-	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto3_20180430.Message.MapBoolFixed64Entry")
-	proto.RegisterMapType((map[bool]float32)(nil), "google.golang.org.proto3_20180430.Message.MapBoolFloatEntry")
-	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto3_20180430.Message.MapBoolInt32Entry")
-	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto3_20180430.Message.MapBoolInt64Entry")
-	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto3_20180430.Message.MapBoolSfixed32Entry")
-	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto3_20180430.Message.MapBoolSfixed64Entry")
-	proto.RegisterMapType((map[bool]SiblingEnum)(nil), "google.golang.org.proto3_20180430.Message.MapBoolSiblingEnumEntry")
-	proto.RegisterMapType((map[bool]*SiblingMessage)(nil), "google.golang.org.proto3_20180430.Message.MapBoolSiblingMessageEntry")
-	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto3_20180430.Message.MapBoolSint32Entry")
-	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto3_20180430.Message.MapBoolSint64Entry")
-	proto.RegisterMapType((map[bool]string)(nil), "google.golang.org.proto3_20180430.Message.MapBoolStringEntry")
-	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto3_20180430.Message.MapBoolUint32Entry")
-	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto3_20180430.Message.MapBoolUint64Entry")
-	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto3_20180430.Message.MapFixed32BoolEntry")
-	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto3_20180430.Message.MapInt32BoolEntry")
-	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto3_20180430.Message.MapInt64BoolEntry")
-	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto3_20180430.Message.MapSint32BoolEntry")
-	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto3_20180430.Message.MapSint64BoolEntry")
-	proto.RegisterMapType((map[string]bool)(nil), "google.golang.org.proto3_20180430.Message.MapStringBoolEntry")
-	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto3_20180430.Message.MapUint32BoolEntry")
-	proto.RegisterMapType((map[uint64]bool)(nil), "google.golang.org.proto3_20180430.Message.MapUint64BoolEntry")
-	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto3_20180430.Message.ChildMessage")
-	proto.RegisterEnum("google.golang.org.proto3_20180430.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
-	proto.RegisterEnum("google.golang.org.proto3_20180430.Message_ChildEnum", Message_ChildEnum_name, Message_ChildEnum_value)
-}
-
-func init() {
-	proto.RegisterFile("proto3_20180430_b4deda09/test.proto", fileDescriptor_test_b39f8dbfc888d45a)
-}
-
-var fileDescriptor_test_b39f8dbfc888d45a = []byte{
-	// 1946 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x9a, 0x57, 0x73, 0xdb, 0xca,
-	0x15, 0xc7, 0x09, 0x52, 0xc5, 0x5a, 0xb1, 0x82, 0x96, 0xb2, 0xa3, 0x27, 0x44, 0x76, 0x1c, 0xc4,
-	0xc9, 0x50, 0x12, 0xb9, 0x83, 0x38, 0x4e, 0x62, 0x5b, 0xb2, 0xe5, 0xd0, 0x19, 0x3b, 0xf1, 0xc0,
-	0xa3, 0x3c, 0xe4, 0x45, 0x21, 0x45, 0x90, 0xa6, 0x0d, 0x12, 0x8a, 0x48, 0x7a, 0xa2, 0xc9, 0x83,
-	0xbf, 0x42, 0x7a, 0xef, 0xe5, 0x2d, 0xbd, 0xf7, 0xee, 0x8c, 0xd3, 0xcb, 0xed, 0xf7, 0xd3, 0xdc,
-	0x59, 0x1c, 0x6c, 0x03, 0x40, 0x93, 0x04, 0xe7, 0x3e, 0x78, 0x46, 0x3a, 0xfc, 0xef, 0xf9, 0xf1,
-	0x1c, 0x9c, 0x3d, 0x67, 0x17, 0x16, 0x3a, 0x77, 0x7c, 0xe2, 0x0d, 0xbd, 0xda, 0x61, 0x75, 0x7b,
-	0xe7, 0xd2, 0x36, 0xa9, 0x6d, 0x1f, 0x36, 0x49, 0xcb, 0x69, 0x35, 0xb6, 0xdf, 0xb1, 0x35, 0x74,
-	0x06, 0xc3, 0x8a, 0xff, 0xa9, 0xfe, 0xc6, 0x8e, 0xe7, 0x75, 0x5c, 0xa7, 0xd2, 0xf1, 0xdc, 0x46,
-	0xbf, 0x53, 0xf1, 0x4e, 0x3a, 0x95, 0xd0, 0xb2, 0x4d, 0x17, 0xe5, 0xef, 0x75, 0x9b, 0x6e, 0xb7,
-	0xdf, 0xb9, 0xe3, 0x0c, 0x06, 0x8d, 0x8e, 0xa3, 0xe7, 0x51, 0xba, 0xbd, 0x83, 0x35, 0x43, 0x33,
-	0x57, 0xec, 0x74, 0x7b, 0xc7, 0xff, 0xbd, 0x8a, 0xd3, 0x46, 0xc6, 0xff, 0xbd, 0xaa, 0x5f, 0x46,
-	0xe9, 0x76, 0x0d, 0x67, 0x0c, 0xcd, 0x5c, 0xad, 0x5e, 0xac, 0x4c, 0x24, 0x54, 0x02, 0xbf, 0x76,
-	0xba, 0x5d, 0xdb, 0x7c, 0x72, 0x0d, 0x2d, 0x33, 0xce, 0x39, 0x94, 0xf3, 0x8e, 0x87, 0x5d, 0xaf,
-	0xdf, 0x70, 0x0f, 0x9b, 0x9e, 0xe7, 0xe2, 0x96, 0xa1, 0x99, 0x67, 0xec, 0x2c, 0x33, 0xee, 0x79,
-	0x9e, 0xab, 0xbf, 0x09, 0xe5, 0xb9, 0xa8, 0xdb, 0x1f, 0xd6, 0xaa, 0xd8, 0x31, 0x34, 0x73, 0xd1,
-	0xe6, 0x4b, 0x6f, 0x51, 0xa3, 0xfe, 0x66, 0x54, 0xe0, 0xb2, 0x01, 0xe8, 0xda, 0x86, 0x66, 0x96,
-	0x6c, 0xbe, 0xfa, 0x5e, 0x37, 0x22, 0x1c, 0x81, 0xb0, 0x63, 0x68, 0x66, 0x4e, 0x08, 0x0f, 0x40,
-	0x18, 0x02, 0x5b, 0x04, 0xdf, 0x37, 0x34, 0x33, 0xa3, 0x80, 0x2d, 0x12, 0x01, 0x5b, 0x04, 0x77,
-	0x0d, 0xcd, 0xd4, 0x55, 0x70, 0x48, 0x38, 0x02, 0xe1, 0x03, 0x43, 0x33, 0x17, 0x54, 0xb0, 0x45,
-	0xf4, 0xb7, 0xa0, 0x22, 0x17, 0xb6, 0xbb, 0x1f, 0x71, 0x5a, 0xb5, 0x2a, 0x7e, 0x68, 0x68, 0xe6,
-	0xb2, 0xcd, 0x1d, 0xdc, 0x04, 0xb3, 0xfe, 0x56, 0x54, 0x12, 0x70, 0xa6, 0x75, 0x0d, 0xcd, 0x2c,
-	0xd8, 0xdc, 0xc7, 0xbd, 0xc0, 0xae, 0x04, 0xd4, 0x76, 0xbd, 0xc6, 0x10, 0xf7, 0x0c, 0xcd, 0x4c,
-	0x8b, 0x80, 0x6e, 0x52, 0x63, 0x14, 0x6f, 0x11, 0xdc, 0x37, 0x34, 0x73, 0x29, 0x84, 0xb7, 0x48,
-	0x0c, 0xde, 0x22, 0xd8, 0x33, 0x34, 0xb3, 0x18, 0xc6, 0x87, 0xe2, 0x6f, 0x79, 0xa3, 0xa6, 0xeb,
-	0xe0, 0x63, 0x43, 0x33, 0x35, 0x11, 0xff, 0x0d, 0xdf, 0xaa, 0x66, 0x74, 0x78, 0xd2, 0xed, 0x77,
-	0xf0, 0x87, 0xfd, 0x5a, 0x14, 0x19, 0xf5, 0xad, 0x4a, 0x40, 0xcd, 0xd3, 0xa1, 0x33, 0xc0, 0x27,
-	0x86, 0x66, 0x66, 0x45, 0x40, 0x7b, 0xd4, 0xa8, 0xb7, 0x50, 0x99, 0xcb, 0x8e, 0xee, 0x77, 0xdd,
-	0xd6, 0xa1, 0xd3, 0x1f, 0xf5, 0xf0, 0xc0, 0xd0, 0xcc, 0x7c, 0x95, 0x4c, 0x5f, 0xbf, 0x95, 0xeb,
-	0x74, 0xf1, 0x7e, 0x7f, 0xd4, 0xb3, 0x79, 0xd8, 0xdc, 0xa4, 0xf7, 0xd0, 0x7a, 0x88, 0xd2, 0x83,
-	0x65, 0x78, 0xe8, 0x6f, 0x94, 0xb7, 0xcf, 0x0a, 0x62, 0xbb, 0xe6, 0xac, 0xc2, 0x62, 0x7b, 0xa7,
-	0x89, 0xd6, 0xa4, 0xb2, 0xf3, 0xb7, 0x2f, 0x84, 0x35, 0xf2, 0xc3, 0xaa, 0x4c, 0x41, 0x0b, 0x76,
-	0xbd, 0x1f, 0x50, 0x59, 0x14, 0x2b, 0x37, 0xea, 0x0f, 0x11, 0x8e, 0x30, 0x58, 0x50, 0x8f, 0xfc,
-	0xa0, 0x76, 0xa6, 0xc7, 0xb0, 0x70, 0xd6, 0x43, 0x24, 0x16, 0xd0, 0x79, 0x94, 0x3b, 0x71, 0x8e,
-	0x9d, 0xc6, 0xd0, 0x69, 0x41, 0x33, 0x78, 0xaa, 0x19, 0x19, 0xda, 0x0d, 0x98, 0xd5, 0xef, 0x06,
-	0x17, 0x50, 0x9e, 0xab, 0x60, 0xf3, 0xfe, 0x8d, 0xca, 0x16, 0x6d, 0xbe, 0x18, 0xda, 0x81, 0x89,
-	0x0a, 0x5c, 0x17, 0xb4, 0x83, 0xbf, 0x53, 0x61, 0xc9, 0xe6, 0xeb, 0x83, 0x7e, 0x20, 0x2b, 0x83,
-	0x7e, 0xf0, 0x0f, 0xaa, 0xcc, 0x09, 0x65, 0xd0, 0x10, 0x42, 0x6c, 0x8b, 0xe0, 0x7f, 0x52, 0x61,
-	0x46, 0x61, 0x5b, 0x24, 0xc2, 0xb6, 0x08, 0xfe, 0x17, 0x15, 0xea, 0x2a, 0x3b, 0xa4, 0x0c, 0x5a,
-	0xc2, 0xbf, 0xa9, 0x72, 0x41, 0x65, 0x5b, 0x44, 0xbf, 0x88, 0x8a, 0x5c, 0xc9, 0xf6, 0xf9, 0x7f,
-	0xa8, 0x74, 0xd9, 0xe6, 0x2e, 0x58, 0x53, 0x78, 0x1b, 0x2a, 0x09, 0x3e, 0x13, 0xff, 0x97, 0x8a,
-	0x0b, 0x36, 0xf7, 0xc2, 0xbb, 0x82, 0x1c, 0x15, 0x74, 0x85, 0xff, 0x51, 0x69, 0x5a, 0x44, 0x05,
-	0x6d, 0x21, 0xf2, 0x0d, 0x2c, 0x82, 0xff, 0x4f, 0x95, 0x4b, 0xa1, 0x6f, 0x60, 0x91, 0x98, 0x6f,
-	0x60, 0x11, 0xfc, 0x1c, 0x15, 0x17, 0xc3, 0xdf, 0x20, 0x94, 0x85, 0xa0, 0x31, 0x3c, 0x4f, 0xb5,
-	0x9a, 0xc8, 0x42, 0xd0, 0x19, 0x94, 0xcc, 0x42, 0x67, 0x78, 0x41, 0xf3, 0xc7, 0x92, 0xc8, 0x2c,
-	0xb4, 0x06, 0x39, 0x2a, 0x68, 0x0d, 0x2f, 0x52, 0x61, 0x56, 0x44, 0x05, 0xbd, 0xc1, 0x41, 0x65,
-	0xae, 0x93, 0x7a, 0xc3, 0x4b, 0x54, 0x9c, 0xb8, 0x39, 0x30, 0x8f, 0xa2, 0x39, 0xf4, 0xd1, 0x7a,
-	0x08, 0xc3, 0xf6, 0xd1, 0xcb, 0x94, 0x34, 0x4f, 0x77, 0x50, 0x60, 0x6c, 0x33, 0x1d, 0xa1, 0x35,
-	0xa9, 0x04, 0xa5, 0xee, 0xf0, 0x0a, 0x04, 0x36, 0x73, 0x7b, 0x10, 0x85, 0x2b, 0xda, 0x83, 0x8b,
-	0x70, 0x04, 0xc2, 0xc2, 0x7a, 0x15, 0xc2, 0x4a, 0xd2, 0x1f, 0x42, 0x28, 0x16, 0xd2, 0x87, 0x50,
-	0xae, 0xd7, 0x38, 0xf6, 0x5b, 0x03, 0xf4, 0x87, 0xef, 0xa4, 0x7d, 0xc4, 0x3b, 0x67, 0xc8, 0xdc,
-	0x9d, 0xc6, 0x31, 0xed, 0x22, 0xf4, 0xdf, 0x7e, 0x7f, 0x78, 0x72, 0x6a, 0xaf, 0xf6, 0x84, 0x45,
-	0x3f, 0x42, 0x79, 0x4e, 0x80, 0x46, 0xf0, 0x5d, 0x40, 0xbc, 0x6b, 0x76, 0x84, 0xdf, 0x85, 0x80,
-	0x91, 0xed, 0x49, 0x26, 0xbd, 0x8d, 0x0a, 0x1c, 0x12, 0x34, 0xa6, 0xef, 0x01, 0xe5, 0xdd, 0xb3,
-	0x53, 0xa0, 0x85, 0x01, 0x26, 0xd7, 0x93, 0x6d, 0x0a, 0x27, 0x68, 0x6b, 0xdf, 0x4f, 0xcc, 0x39,
-	0x88, 0xe1, 0x04, 0x4d, 0x31, 0x94, 0x34, 0x8b, 0xe0, 0x1f, 0xcc, 0x93, 0x34, 0x8b, 0x44, 0x92,
-	0x66, 0x91, 0x48, 0xd2, 0x2c, 0x82, 0x7f, 0x38, 0x57, 0xd2, 0x18, 0x46, 0x4e, 0x5a, 0x88, 0x13,
-	0xf4, 0xe3, 0x1f, 0xcd, 0x95, 0xb4, 0x30, 0x27, 0xe8, 0xe6, 0x5d, 0x54, 0xe4, 0x1c, 0xd6, 0xa0,
-	0x7f, 0x0c, 0xa0, 0x2b, 0xb3, 0x83, 0x82, 0xbe, 0x0f, 0xa4, 0x7c, 0x4f, 0x31, 0xea, 0x2e, 0x2a,
-	0x89, 0xd4, 0x31, 0xd6, 0x4f, 0x80, 0x75, 0x35, 0x41, 0xf2, 0xda, 0x32, 0xac, 0xd0, 0x53, 0xad,
-	0x4a, 0x35, 0xc0, 0x30, 0xf9, 0x69, 0xe2, 0x6a, 0xf0, 0xc7, 0x8e, 0x5a, 0x0d, 0x30, 0x89, 0x22,
-	0xd9, 0xb3, 0x08, 0xfe, 0xd9, 0x7c, 0xd9, 0x63, 0xcf, 0x49, 0xc9, 0x9e, 0x45, 0x62, 0xb2, 0x67,
-	0x11, 0xfc, 0xf3, 0x39, 0xb3, 0xc7, 0x60, 0x6a, 0xf6, 0x42, 0xe5, 0x17, 0x0c, 0xc2, 0x5f, 0x24,
-	0x2e, 0x3f, 0x18, 0x99, 0x6a, 0xf9, 0x05, 0x63, 0x54, 0xd9, 0x4e, 0x30, 0x46, 0x7f, 0x99, 0x7c,
-	0x3b, 0xf9, 0x0e, 0x42, 0xdb, 0x09, 0x86, 0xb0, 0x5c, 0x0d, 0x30, 0x84, 0x7f, 0x95, 0xb8, 0x1a,
-	0xfc, 0x71, 0xad, 0x56, 0x03, 0x4c, 0xf0, 0x63, 0x54, 0xe6, 0x10, 0x69, 0x82, 0xff, 0x1a, 0x48,
-	0xd7, 0x66, 0x27, 0xf1, 0xa9, 0x0d, 0xb4, 0x62, 0x2f, 0x64, 0xd6, 0x4f, 0xd1, 0x7a, 0x88, 0xc8,
-	0xa6, 0xde, 0x6f, 0x00, 0x7a, 0x3d, 0x21, 0x34, 0xb0, 0x01, 0xb7, 0xdc, 0x8b, 0x7e, 0xa2, 0x3f,
-	0x42, 0x6b, 0x52, 0x23, 0x94, 0xe6, 0xfa, 0x6f, 0x81, 0xbc, 0x97, 0xa4, 0x1d, 0xf2, 0x89, 0x0e,
-	0x60, 0xbd, 0x17, 0xf9, 0x40, 0x7f, 0x8c, 0x70, 0x84, 0xcb, 0x82, 0xfe, 0x1d, 0xa0, 0xf7, 0x13,
-	0xa3, 0x95, 0xb0, 0xd7, 0x7a, 0x71, 0x9f, 0xb1, 0x52, 0xf2, 0x67, 0x0e, 0x8c, 0xff, 0xdf, 0x27,
-	0x2a, 0x25, 0x7f, 0x08, 0x8b, 0xf9, 0x4f, 0x4b, 0x89, 0x9b, 0xd8, 0xbe, 0x18, 0x48, 0x94, 0x3f,
-	0x24, 0xda, 0x17, 0x30, 0x83, 0x05, 0x86, 0xee, 0x0b, 0x61, 0x63, 0x9c, 0x91, 0xc4, 0xf9, 0x63,
-	0x22, 0xce, 0x41, 0x0c, 0x47, 0xd8, 0xa4, 0xa4, 0x59, 0x04, 0x30, 0x7f, 0x4a, 0x9a, 0x34, 0x8b,
-	0x44, 0x92, 0x06, 0x26, 0x39, 0x69, 0x8c, 0xf2, 0xe7, 0xc4, 0x49, 0x93, 0x31, 0x2c, 0x69, 0x2a,
-	0x67, 0x24, 0x71, 0xfe, 0x92, 0x38, 0x69, 0x61, 0x8e, 0xb0, 0xb1, 0xe9, 0x12, 0x4c, 0x34, 0x00,
-	0x3d, 0x49, 0x34, 0x5d, 0x82, 0x11, 0x2c, 0x48, 0xf4, 0x69, 0x48, 0x46, 0x9e, 0x3a, 0xbf, 0x5b,
-	0x02, 0xe9, 0xaf, 0xc9, 0x52, 0xe7, 0x7b, 0x08, 0xa5, 0x8e, 0xdb, 0x74, 0x03, 0x21, 0xaf, 0xef,
-	0x78, 0x6d, 0x40, 0x7c, 0x2c, 0x63, 0x68, 0xe6, 0x99, 0x7a, 0xca, 0x5e, 0xf1, 0x8d, 0xbe, 0x62,
-	0x13, 0xad, 0x82, 0x02, 0x4e, 0x8a, 0x1f, 0xa7, 0x92, 0xc5, 0x7a, 0xca, 0x86, 0x75, 0x70, 0x72,
-	0x3d, 0x8f, 0xb2, 0xa0, 0x09, 0x8e, 0xad, 0x9f, 0xa0, 0xa2, 0x52, 0x3d, 0x65, 0xc3, 0xd2, 0xe0,
-	0xdc, 0xc9, 0x55, 0xc1, 0xa1, 0xf3, 0x93, 0x54, 0x95, 0xe3, 0xaa, 0xe0, 0xd4, 0x28, 0xf3, 0x2c,
-	0x82, 0x3f, 0x45, 0x45, 0x19, 0x99, 0x67, 0x11, 0x95, 0x67, 0x11, 0xfc, 0x69, 0x2a, 0xd2, 0x15,
-	0x9e, 0xac, 0x0a, 0xce, 0x6b, 0x9f, 0xa1, 0xaa, 0x05, 0x85, 0x67, 0x11, 0xfd, 0x02, 0xca, 0x81,
-	0x8a, 0x9d, 0x80, 0x3e, 0x4b, 0x65, 0xcb, 0xf5, 0x94, 0x0d, 0xab, 0xd9, 0x69, 0xc9, 0x44, 0xf9,
-	0x80, 0xc9, 0x84, 0x9f, 0xa3, 0xc2, 0x42, 0x3d, 0x65, 0x83, 0x03, 0x7e, 0xd2, 0xe1, 0x11, 0xc0,
-	0x31, 0xe7, 0xf3, 0x54, 0x96, 0xe6, 0x11, 0xc0, 0x41, 0x45, 0xa5, 0x5a, 0x04, 0x7f, 0x81, 0xaa,
-	0x96, 0x54, 0xaa, 0x7f, 0x01, 0x56, 0xa8, 0x16, 0xc1, 0x5f, 0xa4, 0xc2, 0x62, 0x88, 0x2a, 0x47,
-	0x1b, 0x1c, 0x0f, 0xbe, 0x44, 0x75, 0x1a, 0x8f, 0x36, 0x98, 0xef, 0x22, 0x73, 0x30, 0xdc, 0xbf,
-	0x4c, 0x55, 0x2b, 0x22, 0x73, 0x30, 0x9d, 0x79, 0x04, 0x30, 0x9a, 0xbf, 0x42, 0x45, 0x59, 0x1e,
-	0x01, 0x0c, 0xd7, 0x06, 0x2a, 0x82, 0x46, 0x9a, 0xac, 0x5f, 0xcd, 0x24, 0x7f, 0x71, 0x56, 0x4f,
-	0xd9, 0x10, 0xaa, 0x98, 0xa6, 0x0f, 0x50, 0x59, 0x46, 0xb0, 0xa9, 0xf2, 0xb5, 0xcc, 0x5c, 0x6f,
-	0xcd, 0xea, 0x29, 0xbb, 0x24, 0x40, 0x6c, 0x8a, 0x1c, 0x22, 0x9d, 0x95, 0x94, 0x34, 0x3b, 0xbf,
-	0x9e, 0x49, 0xf2, 0xca, 0xac, 0x9e, 0xb2, 0x8b, 0x41, 0x21, 0x8a, 0x39, 0x79, 0x1f, 0xad, 0xa9,
-	0x00, 0x16, 0xce, 0x37, 0x32, 0x09, 0xdf, 0x97, 0xd5, 0x53, 0x76, 0x59, 0xc6, 0xb0, 0x50, 0x78,
-	0x6d, 0xc1, 0x33, 0xde, 0xc1, 0xdf, 0x64, 0x0f, 0x39, 0x2b, 0x3d, 0xe4, 0x9d, 0xb0, 0xae, 0x8a,
-	0xbf, 0x15, 0xa7, 0xab, 0x86, 0x75, 0x35, 0xfc, 0xed, 0x38, 0x5d, 0x6d, 0xe3, 0x01, 0xca, 0x2a,
-	0x29, 0x7d, 0x1d, 0xff, 0xaf, 0x60, 0xe3, 0x0a, 0x2a, 0x86, 0x6f, 0xec, 0x7a, 0x11, 0x65, 0x1e,
-	0x3a, 0xa7, 0x3e, 0xf0, 0x8c, 0x4d, 0x7f, 0xd4, 0xcf, 0xa2, 0xc5, 0x47, 0x0d, 0x77, 0xe4, 0xe0,
-	0xb4, 0x6f, 0x83, 0x5f, 0x2e, 0xa7, 0x2f, 0x69, 0x1b, 0x57, 0x51, 0x29, 0x72, 0x1d, 0x9f, 0xe4,
-	0x60, 0x51, 0x76, 0x70, 0x0d, 0xe9, 0xd1, 0x9b, 0xf6, 0x24, 0x0f, 0xa5, 0x78, 0x0f, 0x07, 0xd3,
-	0x7b, 0xc8, 0x8d, 0x0d, 0x22, 0xb8, 0x3a, 0x4c, 0x72, 0x90, 0x19, 0x1f, 0xc4, 0x94, 0x1e, 0xf4,
-	0xf1, 0x41, 0x4c, 0xe9, 0x61, 0x41, 0xf6, 0xb0, 0x8b, 0xca, 0x31, 0x97, 0xd5, 0x49, 0x2e, 0x96,
-	0x65, 0x17, 0x7b, 0xe8, 0x6c, 0xdc, 0x1d, 0x74, 0x92, 0x8f, 0x42, 0x7c, 0x2e, 0xc5, 0xe5, 0x72,
-	0x92, 0x83, 0xf4, 0x33, 0xe2, 0x98, 0x32, 0x15, 0x4b, 0xcf, 0x8a, 0x63, 0x4a, 0x1f, 0xc5, 0xf8,
-	0x07, 0x22, 0xdd, 0xf2, 0x26, 0x79, 0xd0, 0xc6, 0x14, 0x85, 0xb8, 0xbf, 0x4d, 0xf2, 0xb0, 0x12,
-	0x9f, 0x4b, 0x71, 0x35, 0x9b, 0xe4, 0x20, 0x2b, 0x3b, 0x38, 0x45, 0x6b, 0xb1, 0x37, 0xae, 0x18,
-	0x27, 0xef, 0x95, 0x9d, 0x24, 0x7d, 0x2d, 0x2b, 0xa1, 0x1f, 0x23, 0x3c, 0xee, 0xde, 0x15, 0x43,
-	0xbf, 0x23, 0xd3, 0xe7, 0x78, 0x55, 0x2b, 0x7d, 0x81, 0x11, 0x7a, 0xc3, 0x98, 0xeb, 0x57, 0x0c,
-	0xff, 0x86, 0x1a, 0xfd, 0xac, 0xef, 0x6e, 0x25, 0xec, 0x47, 0xd1, 0xc6, 0xf8, 0xab, 0x57, 0x0c,
-	0xf9, 0x3d, 0x6a, 0xe4, 0x09, 0xde, 0xe6, 0x46, 0x0a, 0x46, 0xbd, 0x80, 0xc9, 0xcc, 0xc5, 0x49,
-	0xed, 0x1c, 0x6a, 0x36, 0x74, 0xb7, 0x92, 0x3d, 0x94, 0xa6, 0xf3, 0x70, 0x30, 0xde, 0x43, 0x6e,
-	0xba, 0x91, 0xa2, 0x5e, 0x88, 0x64, 0x07, 0x99, 0xe9, 0x83, 0x18, 0xe3, 0x41, 0x9f, 0x3e, 0x88,
-	0x31, 0x1e, 0x16, 0x26, 0x79, 0x80, 0x2e, 0x16, 0xbe, 0x9e, 0xc8, 0x2e, 0x96, 0xa7, 0x0c, 0x43,
-	0xbd, 0x77, 0xc8, 0x1e, 0x56, 0x26, 0x78, 0xd8, 0xac, 0xa0, 0x15, 0x71, 0x08, 0x5c, 0x41, 0x8b,
-	0xbb, 0xb7, 0xef, 0xd6, 0x77, 0x8b, 0x29, 0xfa, 0xe3, 0x9e, 0xbd, 0xfb, 0x81, 0xf7, 0x17, 0x35,
-	0x7d, 0x15, 0x2d, 0x5f, 0xaf, 0xef, 0xda, 0xb7, 0x6f, 0xed, 0x17, 0xd3, 0x7b, 0x39, 0x76, 0x5c,
-	0x1d, 0xf5, 0xbb, 0x5e, 0xff, 0xe2, 0x0e, 0x5a, 0x95, 0x0f, 0x5e, 0x71, 0x0e, 0x90, 0x9e, 0x15,
-	0x0e, 0x9e, 0x6a, 0x7b, 0x77, 0x3f, 0xf8, 0xbe, 0x48, 0xfd, 0x6e, 0xf9, 0xf5, 0xdb, 0x1c, 0xb5,
-	0xb7, 0xba, 0xfd, 0xa1, 0x73, 0xd2, 0x6f, 0xb8, 0xfe, 0x5f, 0x4f, 0xf8, 0xd6, 0xc1, 0x96, 0xeb,
-	0x74, 0x1a, 0x47, 0xa7, 0x5b, 0xe3, 0xfe, 0xd0, 0xa2, 0xb9, 0x04, 0x9f, 0xbc, 0x16, 0x00, 0x00,
-	0xff, 0xff, 0xc9, 0x66, 0x05, 0xd3, 0x8b, 0x21, 0x00, 0x00,
-}
diff --git a/internal/testprotos/legacy/proto3_20180430_b4deda09/test.proto b/internal/testprotos/legacy/proto3_20180430_b4deda09/test.proto
deleted file mode 100644
index b6a56af..0000000
--- a/internal/testprotos/legacy/proto3_20180430_b4deda09/test.proto
+++ /dev/null
@@ -1,136 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-
-package google.golang.org.proto3_20180430;
-option go_package = "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20180430_b4deda09";
-
-enum SiblingEnum {
-	ALPHA   = 0;
-	BRAVO   = 10;
-	CHARLIE = 200;
-}
-
-message SiblingMessage {
-	string          f1 = 1;
-	repeated string f2 = 2;
-	Message         f3 = 3;
-}
-
-message Message {
-	enum ChildEnum {
-		ALPHA   = 0;
-		BRAVO   = 1;
-		CHARLIE = 2;
-	}
-	message ChildMessage {
-		string          f1 = 1;
-		repeated string f2 = 2;
-		Message         f3 = 3;
-	}
-
-	// Optional fields.
-	bool     optional_bool     = 100;
-	int32    optional_int32    = 101;
-	sint32   optional_sint32   = 102;
-	uint32   optional_uint32   = 103;
-	int64    optional_int64    = 104;
-	sint64   optional_sint64   = 105;
-	uint64   optional_uint64   = 106;
-	fixed32  optional_fixed32  = 107;
-	sfixed32 optional_sfixed32 = 108;
-	float    optional_float    = 109;
-	fixed64  optional_fixed64  = 110;
-	sfixed64 optional_sfixed64 = 111;
-	double   optional_double   = 112;
-	string   optional_string   = 113;
-	bytes    optional_bytes    = 114;
-
-	ChildEnum      optional_child_enum      = 115;
-	ChildMessage   optional_child_message   = 116;
-	SiblingEnum    optional_sibling_enum    = 117;
-	SiblingMessage optional_sibling_message = 118;
-
-	// Repeated fields.
-	repeated bool     repeated_bool     = 200;
-	repeated int32    repeated_int32    = 201;
-	repeated sint32   repeated_sint32   = 202;
-	repeated uint32   repeated_uint32   = 203;
-	repeated int64    repeated_int64    = 204;
-	repeated sint64   repeated_sint64   = 205;
-	repeated uint64   repeated_uint64   = 206;
-	repeated fixed32  repeated_fixed32  = 207;
-	repeated sfixed32 repeated_sfixed32 = 208;
-	repeated float    repeated_float    = 209;
-	repeated fixed64  repeated_fixed64  = 210;
-	repeated sfixed64 repeated_sfixed64 = 211;
-	repeated double   repeated_double   = 212;
-	repeated string   repeated_string   = 213;
-	repeated bytes    repeated_bytes    = 214;
-
-	repeated ChildEnum      repeated_child_enum      = 215;
-	repeated ChildMessage   repeated_child_message   = 216;
-	repeated SiblingEnum    repeated_sibling_enum    = 217;
-	repeated SiblingMessage repeated_sibling_message = 218;
-
-	// Map fields.
-	map<bool, bool>     map_bool_bool     = 300;
-	map<bool, int32>    map_bool_int32    = 301;
-	map<bool, sint32>   map_bool_sint32   = 302;
-	map<bool, uint32>   map_bool_uint32   = 303;
-	map<bool, int64>    map_bool_int64    = 304;
-	map<bool, sint64>   map_bool_sint64   = 305;
-	map<bool, uint64>   map_bool_uint64   = 306;
-	map<bool, fixed32>  map_bool_fixed32  = 307;
-	map<bool, sfixed32> map_bool_sfixed32 = 308;
-	map<bool, float>    map_bool_float    = 309;
-	map<bool, fixed64>  map_bool_fixed64  = 310;
-	map<bool, sfixed64> map_bool_sfixed64 = 311;
-	map<bool, double>   map_bool_double   = 312;
-	map<bool, string>   map_bool_string   = 313;
-	map<bool, bytes>    map_bool_bytes    = 314;
-
-	map<bool, ChildEnum>      map_bool_child_enum      = 315;
-	map<bool, ChildMessage>   map_bool_child_message   = 316;
-	map<bool, SiblingEnum>    map_bool_sibling_enum    = 317;
-	map<bool, SiblingMessage> map_bool_sibling_message = 318;
-
-	map<int32, bool>   map_int32_bool   = 319;
-	map<sint32, bool>  map_sint32_bool  = 320;
-	map<uint32, bool>  map_uint32_bool  = 321;
-	map<int64, bool>   map_int64_bool   = 322;
-	map<sint64, bool>  map_sint64_bool  = 323;
-	map<uint64, bool>  map_uint64_bool  = 324;
-	map<fixed32, bool> map_fixed32_bool = 325;
-	map<string, bool>  map_string_bool  = 326;
-
-	// Oneof fields.
-	oneof oneof_union {
-		bool     oneof_bool     = 400;
-		int32    oneof_int32    = 401;
-		sint32   oneof_sint32   = 402;
-		uint32   oneof_uint32   = 403;
-		int64    oneof_int64    = 404;
-		sint64   oneof_sint64   = 405;
-		uint64   oneof_uint64   = 406;
-		fixed32  oneof_fixed32  = 407;
-		sfixed32 oneof_sfixed32 = 408;
-		float    oneof_float    = 409;
-		fixed64  oneof_fixed64  = 410;
-		sfixed64 oneof_sfixed64 = 411;
-		double   oneof_double   = 412;
-		string   oneof_string   = 413;
-		bytes    oneof_bytes    = 414;
-
-		ChildEnum      oneof_child_enum      = 415;
-		ChildMessage   oneof_child_message   = 416;
-		SiblingEnum    oneof_sibling_enum    = 417;
-		SiblingMessage oneof_sibling_message = 418;
-
-		string oneof_string1 = 419;
-		string oneof_string2 = 420;
-		string oneof_string3 = 421;
-	}
-}
diff --git a/internal/testprotos/legacy/proto3_20180814_aa810b61/test.pb.go b/internal/testprotos/legacy/proto3_20180814_aa810b61/test.pb.go
deleted file mode 100644
index 97e4089..0000000
--- a/internal/testprotos/legacy/proto3_20180814_aa810b61/test.pb.go
+++ /dev/null
@@ -1,1587 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: proto3_20180814_aa810b61/test.proto
-
-package proto3_20180814_aa810b61 // import "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20180814_aa810b61"
-
-import proto "google.golang.org/protobuf/internal/protolegacy"
-import fmt "fmt"
-import 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.ProtoPackageIsVersion2 // please upgrade the proto package
-
-type SiblingEnum int32
-
-const (
-	SiblingEnum_ALPHA   SiblingEnum = 0
-	SiblingEnum_BRAVO   SiblingEnum = 10
-	SiblingEnum_CHARLIE SiblingEnum = 200
-)
-
-var SiblingEnum_name = map[int32]string{
-	0:   "ALPHA",
-	10:  "BRAVO",
-	200: "CHARLIE",
-}
-var SiblingEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   10,
-	"CHARLIE": 200,
-}
-
-func (x SiblingEnum) String() string {
-	return proto.EnumName(SiblingEnum_name, int32(x))
-}
-func (SiblingEnum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_test_14f9d28b9a7006c3, []int{0}
-}
-
-type Message_ChildEnum int32
-
-const (
-	Message_ALPHA   Message_ChildEnum = 0
-	Message_BRAVO   Message_ChildEnum = 1
-	Message_CHARLIE Message_ChildEnum = 2
-)
-
-var Message_ChildEnum_name = map[int32]string{
-	0: "ALPHA",
-	1: "BRAVO",
-	2: "CHARLIE",
-}
-var Message_ChildEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   1,
-	"CHARLIE": 2,
-}
-
-func (x Message_ChildEnum) String() string {
-	return proto.EnumName(Message_ChildEnum_name, int32(x))
-}
-func (Message_ChildEnum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_test_14f9d28b9a7006c3, []int{1, 0}
-}
-
-type SiblingMessage struct {
-	F1                   string   `protobuf:"bytes,1,opt,name=f1,proto3" json:"f1,omitempty"`
-	F2                   []string `protobuf:"bytes,2,rep,name=f2,proto3" json:"f2,omitempty"`
-	F3                   *Message `protobuf:"bytes,3,opt,name=f3,proto3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *SiblingMessage) Reset()         { *m = SiblingMessage{} }
-func (m *SiblingMessage) String() string { return proto.CompactTextString(m) }
-func (*SiblingMessage) ProtoMessage()    {}
-func (*SiblingMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_14f9d28b9a7006c3, []int{0}
-}
-func (m *SiblingMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SiblingMessage.Unmarshal(m, b)
-}
-func (m *SiblingMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SiblingMessage.Marshal(b, m, deterministic)
-}
-func (dst *SiblingMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SiblingMessage.Merge(dst, src)
-}
-func (m *SiblingMessage) XXX_Size() int {
-	return xxx_messageInfo_SiblingMessage.Size(m)
-}
-func (m *SiblingMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_SiblingMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SiblingMessage proto.InternalMessageInfo
-
-func (m *SiblingMessage) GetF1() string {
-	if m != nil {
-		return m.F1
-	}
-	return ""
-}
-
-func (m *SiblingMessage) GetF2() []string {
-	if m != nil {
-		return m.F2
-	}
-	return nil
-}
-
-func (m *SiblingMessage) GetF3() *Message {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message struct {
-	// Optional fields.
-	OptionalBool           bool                  `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool,proto3" json:"optional_bool,omitempty"`
-	OptionalInt32          int32                 `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32,proto3" json:"optional_int32,omitempty"`
-	OptionalSint32         int32                 `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32,proto3" json:"optional_sint32,omitempty"`
-	OptionalUint32         uint32                `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32,proto3" json:"optional_uint32,omitempty"`
-	OptionalInt64          int64                 `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64,proto3" json:"optional_int64,omitempty"`
-	OptionalSint64         int64                 `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64,proto3" json:"optional_sint64,omitempty"`
-	OptionalUint64         uint64                `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64,proto3" json:"optional_uint64,omitempty"`
-	OptionalFixed32        uint32                `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32,proto3" json:"optional_fixed32,omitempty"`
-	OptionalSfixed32       int32                 `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32,proto3" json:"optional_sfixed32,omitempty"`
-	OptionalFloat          float32               `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat,proto3" json:"optional_float,omitempty"`
-	OptionalFixed64        uint64                `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64,proto3" json:"optional_fixed64,omitempty"`
-	OptionalSfixed64       int64                 `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64,proto3" json:"optional_sfixed64,omitempty"`
-	OptionalDouble         float64               `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble,proto3" json:"optional_double,omitempty"`
-	OptionalString         string                `protobuf:"bytes,113,opt,name=optional_string,json=optionalString,proto3" json:"optional_string,omitempty"`
-	OptionalBytes          []byte                `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes,proto3" json:"optional_bytes,omitempty"`
-	OptionalChildEnum      Message_ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,proto3,enum=google.golang.org.proto3_20180814.Message_ChildEnum" json:"optional_child_enum,omitempty"`
-	OptionalChildMessage   *Message_ChildMessage `protobuf:"bytes,116,opt,name=optional_child_message,json=optionalChildMessage,proto3" json:"optional_child_message,omitempty"`
-	OptionalSiblingEnum    SiblingEnum           `protobuf:"varint,117,opt,name=optional_sibling_enum,json=optionalSiblingEnum,proto3,enum=google.golang.org.proto3_20180814.SiblingEnum" json:"optional_sibling_enum,omitempty"`
-	OptionalSiblingMessage *SiblingMessage       `protobuf:"bytes,118,opt,name=optional_sibling_message,json=optionalSiblingMessage,proto3" json:"optional_sibling_message,omitempty"`
-	// Repeated fields.
-	RepeatedBool           []bool                  `protobuf:"varint,200,rep,packed,name=repeated_bool,json=repeatedBool,proto3" json:"repeated_bool,omitempty"`
-	RepeatedInt32          []int32                 `protobuf:"varint,201,rep,packed,name=repeated_int32,json=repeatedInt32,proto3" json:"repeated_int32,omitempty"`
-	RepeatedSint32         []int32                 `protobuf:"zigzag32,202,rep,packed,name=repeated_sint32,json=repeatedSint32,proto3" json:"repeated_sint32,omitempty"`
-	RepeatedUint32         []uint32                `protobuf:"varint,203,rep,packed,name=repeated_uint32,json=repeatedUint32,proto3" json:"repeated_uint32,omitempty"`
-	RepeatedInt64          []int64                 `protobuf:"varint,204,rep,packed,name=repeated_int64,json=repeatedInt64,proto3" json:"repeated_int64,omitempty"`
-	RepeatedSint64         []int64                 `protobuf:"zigzag64,205,rep,packed,name=repeated_sint64,json=repeatedSint64,proto3" json:"repeated_sint64,omitempty"`
-	RepeatedUint64         []uint64                `protobuf:"varint,206,rep,packed,name=repeated_uint64,json=repeatedUint64,proto3" json:"repeated_uint64,omitempty"`
-	RepeatedFixed32        []uint32                `protobuf:"fixed32,207,rep,packed,name=repeated_fixed32,json=repeatedFixed32,proto3" json:"repeated_fixed32,omitempty"`
-	RepeatedSfixed32       []int32                 `protobuf:"fixed32,208,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32,proto3" json:"repeated_sfixed32,omitempty"`
-	RepeatedFloat          []float32               `protobuf:"fixed32,209,rep,packed,name=repeated_float,json=repeatedFloat,proto3" json:"repeated_float,omitempty"`
-	RepeatedFixed64        []uint64                `protobuf:"fixed64,210,rep,packed,name=repeated_fixed64,json=repeatedFixed64,proto3" json:"repeated_fixed64,omitempty"`
-	RepeatedSfixed64       []int64                 `protobuf:"fixed64,211,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64,proto3" json:"repeated_sfixed64,omitempty"`
-	RepeatedDouble         []float64               `protobuf:"fixed64,212,rep,packed,name=repeated_double,json=repeatedDouble,proto3" json:"repeated_double,omitempty"`
-	RepeatedString         []string                `protobuf:"bytes,213,rep,name=repeated_string,json=repeatedString,proto3" json:"repeated_string,omitempty"`
-	RepeatedBytes          [][]byte                `protobuf:"bytes,214,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"`
-	RepeatedChildEnum      []Message_ChildEnum     `protobuf:"varint,215,rep,packed,name=repeated_child_enum,json=repeatedChildEnum,proto3,enum=google.golang.org.proto3_20180814.Message_ChildEnum" json:"repeated_child_enum,omitempty"`
-	RepeatedChildMessage   []*Message_ChildMessage `protobuf:"bytes,216,rep,name=repeated_child_message,json=repeatedChildMessage,proto3" json:"repeated_child_message,omitempty"`
-	RepeatedSiblingEnum    []SiblingEnum           `protobuf:"varint,217,rep,packed,name=repeated_sibling_enum,json=repeatedSiblingEnum,proto3,enum=google.golang.org.proto3_20180814.SiblingEnum" json:"repeated_sibling_enum,omitempty"`
-	RepeatedSiblingMessage []*SiblingMessage       `protobuf:"bytes,218,rep,name=repeated_sibling_message,json=repeatedSiblingMessage,proto3" json:"repeated_sibling_message,omitempty"`
-	// Map fields.
-	MapBoolBool           map[bool]bool                  `protobuf:"bytes,300,rep,name=map_bool_bool,json=mapBoolBool,proto3" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapBoolInt32          map[bool]int32                 `protobuf:"bytes,301,rep,name=map_bool_int32,json=mapBoolInt32,proto3" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapBoolSint32         map[bool]int32                 `protobuf:"bytes,302,rep,name=map_bool_sint32,json=mapBoolSint32,proto3" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"zigzag32,2,opt,name=value,proto3"`
-	MapBoolUint32         map[bool]uint32                `protobuf:"bytes,303,rep,name=map_bool_uint32,json=mapBoolUint32,proto3" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapBoolInt64          map[bool]int64                 `protobuf:"bytes,304,rep,name=map_bool_int64,json=mapBoolInt64,proto3" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapBoolSint64         map[bool]int64                 `protobuf:"bytes,305,rep,name=map_bool_sint64,json=mapBoolSint64,proto3" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"zigzag64,2,opt,name=value,proto3"`
-	MapBoolUint64         map[bool]uint64                `protobuf:"bytes,306,rep,name=map_bool_uint64,json=mapBoolUint64,proto3" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapBoolFixed32        map[bool]uint32                `protobuf:"bytes,307,rep,name=map_bool_fixed32,json=mapBoolFixed32,proto3" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapBoolSfixed32       map[bool]int32                 `protobuf:"bytes,308,rep,name=map_bool_sfixed32,json=mapBoolSfixed32,proto3" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapBoolFloat          map[bool]float32               `protobuf:"bytes,309,rep,name=map_bool_float,json=mapBoolFloat,proto3" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapBoolFixed64        map[bool]uint64                `protobuf:"bytes,310,rep,name=map_bool_fixed64,json=mapBoolFixed64,proto3" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapBoolSfixed64       map[bool]int64                 `protobuf:"bytes,311,rep,name=map_bool_sfixed64,json=mapBoolSfixed64,proto3" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapBoolDouble         map[bool]float64               `protobuf:"bytes,312,rep,name=map_bool_double,json=mapBoolDouble,proto3" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapBoolString         map[bool]string                `protobuf:"bytes,313,rep,name=map_bool_string,json=mapBoolString,proto3" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapBoolBytes          map[bool][]byte                `protobuf:"bytes,314,rep,name=map_bool_bytes,json=mapBoolBytes,proto3" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapBoolChildEnum      map[bool]Message_ChildEnum     `protobuf:"bytes,315,rep,name=map_bool_child_enum,json=mapBoolChildEnum,proto3" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=google.golang.org.proto3_20180814.Message_ChildEnum"`
-	MapBoolChildMessage   map[bool]*Message_ChildMessage `protobuf:"bytes,316,rep,name=map_bool_child_message,json=mapBoolChildMessage,proto3" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapBoolSiblingEnum    map[bool]SiblingEnum           `protobuf:"bytes,317,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum,proto3" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=google.golang.org.proto3_20180814.SiblingEnum"`
-	MapBoolSiblingMessage map[bool]*SiblingMessage       `protobuf:"bytes,318,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage,proto3" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapInt32Bool          map[int32]bool                 `protobuf:"bytes,319,rep,name=map_int32_bool,json=mapInt32Bool,proto3" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapSint32Bool         map[int32]bool                 `protobuf:"bytes,320,rep,name=map_sint32_bool,json=mapSint32Bool,proto3" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapUint32Bool         map[uint32]bool                `protobuf:"bytes,321,rep,name=map_uint32_bool,json=mapUint32Bool,proto3" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapInt64Bool          map[int64]bool                 `protobuf:"bytes,322,rep,name=map_int64_bool,json=mapInt64Bool,proto3" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapSint64Bool         map[int64]bool                 `protobuf:"bytes,323,rep,name=map_sint64_bool,json=mapSint64Bool,proto3" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapUint64Bool         map[uint64]bool                `protobuf:"bytes,324,rep,name=map_uint64_bool,json=mapUint64Bool,proto3" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapFixed32Bool        map[uint32]bool                `protobuf:"bytes,325,rep,name=map_fixed32_bool,json=mapFixed32Bool,proto3" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapStringBool         map[string]bool                `protobuf:"bytes,326,rep,name=map_string_bool,json=mapStringBool,proto3" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	// Oneof fields.
-	//
-	// Types that are valid to be assigned to OneofUnion:
-	//	*Message_OneofBool
-	//	*Message_OneofInt32
-	//	*Message_OneofSint32
-	//	*Message_OneofUint32
-	//	*Message_OneofInt64
-	//	*Message_OneofSint64
-	//	*Message_OneofUint64
-	//	*Message_OneofFixed32
-	//	*Message_OneofSfixed32
-	//	*Message_OneofFloat
-	//	*Message_OneofFixed64
-	//	*Message_OneofSfixed64
-	//	*Message_OneofDouble
-	//	*Message_OneofString
-	//	*Message_OneofBytes
-	//	*Message_OneofChildEnum
-	//	*Message_OneofChildMessage
-	//	*Message_OneofSiblingEnum
-	//	*Message_OneofSiblingMessage
-	//	*Message_OneofString1
-	//	*Message_OneofString2
-	//	*Message_OneofString3
-	OneofUnion           isMessage_OneofUnion `protobuf_oneof:"oneof_union"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
-}
-
-func (m *Message) Reset()         { *m = Message{} }
-func (m *Message) String() string { return proto.CompactTextString(m) }
-func (*Message) ProtoMessage()    {}
-func (*Message) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_14f9d28b9a7006c3, []int{1}
-}
-func (m *Message) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message.Unmarshal(m, b)
-}
-func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message.Marshal(b, m, deterministic)
-}
-func (dst *Message) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message.Merge(dst, src)
-}
-func (m *Message) XXX_Size() int {
-	return xxx_messageInfo_Message.Size(m)
-}
-func (m *Message) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message proto.InternalMessageInfo
-
-func (m *Message) GetOptionalBool() bool {
-	if m != nil {
-		return m.OptionalBool
-	}
-	return false
-}
-
-func (m *Message) GetOptionalInt32() int32 {
-	if m != nil {
-		return m.OptionalInt32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSint32() int32 {
-	if m != nil {
-		return m.OptionalSint32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalUint32() uint32 {
-	if m != nil {
-		return m.OptionalUint32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalInt64() int64 {
-	if m != nil {
-		return m.OptionalInt64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSint64() int64 {
-	if m != nil {
-		return m.OptionalSint64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalUint64() uint64 {
-	if m != nil {
-		return m.OptionalUint64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFixed32() uint32 {
-	if m != nil {
-		return m.OptionalFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSfixed32() int32 {
-	if m != nil {
-		return m.OptionalSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFloat() float32 {
-	if m != nil {
-		return m.OptionalFloat
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFixed64() uint64 {
-	if m != nil {
-		return m.OptionalFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSfixed64() int64 {
-	if m != nil {
-		return m.OptionalSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalDouble() float64 {
-	if m != nil {
-		return m.OptionalDouble
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalString() string {
-	if m != nil {
-		return m.OptionalString
-	}
-	return ""
-}
-
-func (m *Message) GetOptionalBytes() []byte {
-	if m != nil {
-		return m.OptionalBytes
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalChildEnum() Message_ChildEnum {
-	if m != nil {
-		return m.OptionalChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetOptionalChildMessage() *Message_ChildMessage {
-	if m != nil {
-		return m.OptionalChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalSiblingEnum() SiblingEnum {
-	if m != nil {
-		return m.OptionalSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetOptionalSiblingMessage() *SiblingMessage {
-	if m != nil {
-		return m.OptionalSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedBool() []bool {
-	if m != nil {
-		return m.RepeatedBool
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedInt32() []int32 {
-	if m != nil {
-		return m.RepeatedInt32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSint32() []int32 {
-	if m != nil {
-		return m.RepeatedSint32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedUint32() []uint32 {
-	if m != nil {
-		return m.RepeatedUint32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedInt64() []int64 {
-	if m != nil {
-		return m.RepeatedInt64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSint64() []int64 {
-	if m != nil {
-		return m.RepeatedSint64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedUint64() []uint64 {
-	if m != nil {
-		return m.RepeatedUint64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFixed32() []uint32 {
-	if m != nil {
-		return m.RepeatedFixed32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSfixed32() []int32 {
-	if m != nil {
-		return m.RepeatedSfixed32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFloat() []float32 {
-	if m != nil {
-		return m.RepeatedFloat
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFixed64() []uint64 {
-	if m != nil {
-		return m.RepeatedFixed64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSfixed64() []int64 {
-	if m != nil {
-		return m.RepeatedSfixed64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedDouble() []float64 {
-	if m != nil {
-		return m.RepeatedDouble
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedString() []string {
-	if m != nil {
-		return m.RepeatedString
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedBytes() [][]byte {
-	if m != nil {
-		return m.RepeatedBytes
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedChildEnum() []Message_ChildEnum {
-	if m != nil {
-		return m.RepeatedChildEnum
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedChildMessage() []*Message_ChildMessage {
-	if m != nil {
-		return m.RepeatedChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSiblingEnum() []SiblingEnum {
-	if m != nil {
-		return m.RepeatedSiblingEnum
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSiblingMessage() []*SiblingMessage {
-	if m != nil {
-		return m.RepeatedSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBool() map[bool]bool {
-	if m != nil {
-		return m.MapBoolBool
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolInt32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolUint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolInt64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolUint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolFixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSfixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFloat() map[bool]float32 {
-	if m != nil {
-		return m.MapBoolFloat
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolFixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSfixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolDouble() map[bool]float64 {
-	if m != nil {
-		return m.MapBoolDouble
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolString() map[bool]string {
-	if m != nil {
-		return m.MapBoolString
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBytes() map[bool][]byte {
-	if m != nil {
-		return m.MapBoolBytes
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildEnum() map[bool]Message_ChildEnum {
-	if m != nil {
-		return m.MapBoolChildEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildMessage() map[bool]*Message_ChildMessage {
-	if m != nil {
-		return m.MapBoolChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingEnum() map[bool]SiblingEnum {
-	if m != nil {
-		return m.MapBoolSiblingEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingMessage() map[bool]*SiblingMessage {
-	if m != nil {
-		return m.MapBoolSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapInt32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapSint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapUint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapInt64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapSint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint64Bool() map[uint64]bool {
-	if m != nil {
-		return m.MapUint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapFixed32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapFixed32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapStringBool() map[string]bool {
-	if m != nil {
-		return m.MapStringBool
-	}
-	return nil
-}
-
-type isMessage_OneofUnion interface {
-	isMessage_OneofUnion()
-}
-
-type Message_OneofBool struct {
-	OneofBool bool `protobuf:"varint,400,opt,name=oneof_bool,json=oneofBool,proto3,oneof"`
-}
-
-type Message_OneofInt32 struct {
-	OneofInt32 int32 `protobuf:"varint,401,opt,name=oneof_int32,json=oneofInt32,proto3,oneof"`
-}
-
-type Message_OneofSint32 struct {
-	OneofSint32 int32 `protobuf:"zigzag32,402,opt,name=oneof_sint32,json=oneofSint32,proto3,oneof"`
-}
-
-type Message_OneofUint32 struct {
-	OneofUint32 uint32 `protobuf:"varint,403,opt,name=oneof_uint32,json=oneofUint32,proto3,oneof"`
-}
-
-type Message_OneofInt64 struct {
-	OneofInt64 int64 `protobuf:"varint,404,opt,name=oneof_int64,json=oneofInt64,proto3,oneof"`
-}
-
-type Message_OneofSint64 struct {
-	OneofSint64 int64 `protobuf:"zigzag64,405,opt,name=oneof_sint64,json=oneofSint64,proto3,oneof"`
-}
-
-type Message_OneofUint64 struct {
-	OneofUint64 uint64 `protobuf:"varint,406,opt,name=oneof_uint64,json=oneofUint64,proto3,oneof"`
-}
-
-type Message_OneofFixed32 struct {
-	OneofFixed32 uint32 `protobuf:"fixed32,407,opt,name=oneof_fixed32,json=oneofFixed32,proto3,oneof"`
-}
-
-type Message_OneofSfixed32 struct {
-	OneofSfixed32 int32 `protobuf:"fixed32,408,opt,name=oneof_sfixed32,json=oneofSfixed32,proto3,oneof"`
-}
-
-type Message_OneofFloat struct {
-	OneofFloat float32 `protobuf:"fixed32,409,opt,name=oneof_float,json=oneofFloat,proto3,oneof"`
-}
-
-type Message_OneofFixed64 struct {
-	OneofFixed64 uint64 `protobuf:"fixed64,410,opt,name=oneof_fixed64,json=oneofFixed64,proto3,oneof"`
-}
-
-type Message_OneofSfixed64 struct {
-	OneofSfixed64 int64 `protobuf:"fixed64,411,opt,name=oneof_sfixed64,json=oneofSfixed64,proto3,oneof"`
-}
-
-type Message_OneofDouble struct {
-	OneofDouble float64 `protobuf:"fixed64,412,opt,name=oneof_double,json=oneofDouble,proto3,oneof"`
-}
-
-type Message_OneofString struct {
-	OneofString string `protobuf:"bytes,413,opt,name=oneof_string,json=oneofString,proto3,oneof"`
-}
-
-type Message_OneofBytes struct {
-	OneofBytes []byte `protobuf:"bytes,414,opt,name=oneof_bytes,json=oneofBytes,proto3,oneof"`
-}
-
-type Message_OneofChildEnum struct {
-	OneofChildEnum Message_ChildEnum `protobuf:"varint,415,opt,name=oneof_child_enum,json=oneofChildEnum,proto3,enum=google.golang.org.proto3_20180814.Message_ChildEnum,oneof"`
-}
-
-type Message_OneofChildMessage struct {
-	OneofChildMessage *Message_ChildMessage `protobuf:"bytes,416,opt,name=oneof_child_message,json=oneofChildMessage,proto3,oneof"`
-}
-
-type Message_OneofSiblingEnum struct {
-	OneofSiblingEnum SiblingEnum `protobuf:"varint,417,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,proto3,enum=google.golang.org.proto3_20180814.SiblingEnum,oneof"`
-}
-
-type Message_OneofSiblingMessage struct {
-	OneofSiblingMessage *SiblingMessage `protobuf:"bytes,418,opt,name=oneof_sibling_message,json=oneofSiblingMessage,proto3,oneof"`
-}
-
-type Message_OneofString1 struct {
-	OneofString1 string `protobuf:"bytes,419,opt,name=oneof_string1,json=oneofString1,proto3,oneof"`
-}
-
-type Message_OneofString2 struct {
-	OneofString2 string `protobuf:"bytes,420,opt,name=oneof_string2,json=oneofString2,proto3,oneof"`
-}
-
-type Message_OneofString3 struct {
-	OneofString3 string `protobuf:"bytes,421,opt,name=oneof_string3,json=oneofString3,proto3,oneof"`
-}
-
-func (*Message_OneofBool) isMessage_OneofUnion() {}
-
-func (*Message_OneofInt32) isMessage_OneofUnion() {}
-
-func (*Message_OneofSint32) isMessage_OneofUnion() {}
-
-func (*Message_OneofUint32) isMessage_OneofUnion() {}
-
-func (*Message_OneofInt64) isMessage_OneofUnion() {}
-
-func (*Message_OneofSint64) isMessage_OneofUnion() {}
-
-func (*Message_OneofUint64) isMessage_OneofUnion() {}
-
-func (*Message_OneofFixed32) isMessage_OneofUnion() {}
-
-func (*Message_OneofSfixed32) isMessage_OneofUnion() {}
-
-func (*Message_OneofFloat) isMessage_OneofUnion() {}
-
-func (*Message_OneofFixed64) isMessage_OneofUnion() {}
-
-func (*Message_OneofSfixed64) isMessage_OneofUnion() {}
-
-func (*Message_OneofDouble) isMessage_OneofUnion() {}
-
-func (*Message_OneofString) isMessage_OneofUnion() {}
-
-func (*Message_OneofBytes) isMessage_OneofUnion() {}
-
-func (*Message_OneofChildEnum) isMessage_OneofUnion() {}
-
-func (*Message_OneofChildMessage) isMessage_OneofUnion() {}
-
-func (*Message_OneofSiblingEnum) isMessage_OneofUnion() {}
-
-func (*Message_OneofSiblingMessage) isMessage_OneofUnion() {}
-
-func (*Message_OneofString1) isMessage_OneofUnion() {}
-
-func (*Message_OneofString2) isMessage_OneofUnion() {}
-
-func (*Message_OneofString3) isMessage_OneofUnion() {}
-
-func (m *Message) GetOneofUnion() isMessage_OneofUnion {
-	if m != nil {
-		return m.OneofUnion
-	}
-	return nil
-}
-
-func (m *Message) GetOneofBool() bool {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBool); ok {
-		return x.OneofBool
-	}
-	return false
-}
-
-func (m *Message) GetOneofInt32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt32); ok {
-		return x.OneofInt32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint32); ok {
-		return x.OneofSint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint32); ok {
-		return x.OneofUint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofInt64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt64); ok {
-		return x.OneofInt64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint64); ok {
-		return x.OneofSint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint64); ok {
-		return x.OneofUint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed32); ok {
-		return x.OneofFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed32); ok {
-		return x.OneofSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFloat() float32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFloat); ok {
-		return x.OneofFloat
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed64); ok {
-		return x.OneofFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed64); ok {
-		return x.OneofSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofDouble() float64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofDouble); ok {
-		return x.OneofDouble
-	}
-	return 0
-}
-
-func (m *Message) GetOneofString() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString); ok {
-		return x.OneofString
-	}
-	return ""
-}
-
-func (m *Message) GetOneofBytes() []byte {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBytes); ok {
-		return x.OneofBytes
-	}
-	return nil
-}
-
-func (m *Message) GetOneofChildEnum() Message_ChildEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildEnum); ok {
-		return x.OneofChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetOneofChildMessage() *Message_ChildMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildMessage); ok {
-		return x.OneofChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofSiblingEnum() SiblingEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingEnum); ok {
-		return x.OneofSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetOneofSiblingMessage() *SiblingMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingMessage); ok {
-		return x.OneofSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofString1() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString1); ok {
-		return x.OneofString1
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString2() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString2); ok {
-		return x.OneofString2
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString3() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString3); ok {
-		return x.OneofString3
-	}
-	return ""
-}
-
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*Message) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _Message_OneofMarshaler, _Message_OneofUnmarshaler, _Message_OneofSizer, []interface{}{
-		(*Message_OneofBool)(nil),
-		(*Message_OneofInt32)(nil),
-		(*Message_OneofSint32)(nil),
-		(*Message_OneofUint32)(nil),
-		(*Message_OneofInt64)(nil),
-		(*Message_OneofSint64)(nil),
-		(*Message_OneofUint64)(nil),
-		(*Message_OneofFixed32)(nil),
-		(*Message_OneofSfixed32)(nil),
-		(*Message_OneofFloat)(nil),
-		(*Message_OneofFixed64)(nil),
-		(*Message_OneofSfixed64)(nil),
-		(*Message_OneofDouble)(nil),
-		(*Message_OneofString)(nil),
-		(*Message_OneofBytes)(nil),
-		(*Message_OneofChildEnum)(nil),
-		(*Message_OneofChildMessage)(nil),
-		(*Message_OneofSiblingEnum)(nil),
-		(*Message_OneofSiblingMessage)(nil),
-		(*Message_OneofString1)(nil),
-		(*Message_OneofString2)(nil),
-		(*Message_OneofString3)(nil),
-	}
-}
-
-func _Message_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*Message)
-	// oneof_union
-	switch x := m.OneofUnion.(type) {
-	case *Message_OneofBool:
-		t := uint64(0)
-		if x.OneofBool {
-			t = 1
-		}
-		b.EncodeVarint(400<<3 | proto.WireVarint)
-		b.EncodeVarint(t)
-	case *Message_OneofInt32:
-		b.EncodeVarint(401<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofInt32))
-	case *Message_OneofSint32:
-		b.EncodeVarint(402<<3 | proto.WireVarint)
-		b.EncodeZigzag32(uint64(x.OneofSint32))
-	case *Message_OneofUint32:
-		b.EncodeVarint(403<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofUint32))
-	case *Message_OneofInt64:
-		b.EncodeVarint(404<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofInt64))
-	case *Message_OneofSint64:
-		b.EncodeVarint(405<<3 | proto.WireVarint)
-		b.EncodeZigzag64(uint64(x.OneofSint64))
-	case *Message_OneofUint64:
-		b.EncodeVarint(406<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofUint64))
-	case *Message_OneofFixed32:
-		b.EncodeVarint(407<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofFixed32))
-	case *Message_OneofSfixed32:
-		b.EncodeVarint(408<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(x.OneofSfixed32))
-	case *Message_OneofFloat:
-		b.EncodeVarint(409<<3 | proto.WireFixed32)
-		b.EncodeFixed32(uint64(math.Float32bits(x.OneofFloat)))
-	case *Message_OneofFixed64:
-		b.EncodeVarint(410<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofFixed64))
-	case *Message_OneofSfixed64:
-		b.EncodeVarint(411<<3 | proto.WireFixed64)
-		b.EncodeFixed64(uint64(x.OneofSfixed64))
-	case *Message_OneofDouble:
-		b.EncodeVarint(412<<3 | proto.WireFixed64)
-		b.EncodeFixed64(math.Float64bits(x.OneofDouble))
-	case *Message_OneofString:
-		b.EncodeVarint(413<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString)
-	case *Message_OneofBytes:
-		b.EncodeVarint(414<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.OneofBytes)
-	case *Message_OneofChildEnum:
-		b.EncodeVarint(415<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofChildEnum))
-	case *Message_OneofChildMessage:
-		b.EncodeVarint(416<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofChildMessage); err != nil {
-			return err
-		}
-	case *Message_OneofSiblingEnum:
-		b.EncodeVarint(417<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.OneofSiblingEnum))
-	case *Message_OneofSiblingMessage:
-		b.EncodeVarint(418<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OneofSiblingMessage); err != nil {
-			return err
-		}
-	case *Message_OneofString1:
-		b.EncodeVarint(419<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString1)
-	case *Message_OneofString2:
-		b.EncodeVarint(420<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString2)
-	case *Message_OneofString3:
-		b.EncodeVarint(421<<3 | proto.WireBytes)
-		b.EncodeStringBytes(x.OneofString3)
-	case nil:
-	default:
-		return fmt.Errorf("Message.OneofUnion has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _Message_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*Message)
-	switch tag {
-	case 400: // oneof_union.oneof_bool
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofBool{x != 0}
-		return true, err
-	case 401: // oneof_union.oneof_int32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofInt32{int32(x)}
-		return true, err
-	case 402: // oneof_union.oneof_sint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag32()
-		m.OneofUnion = &Message_OneofSint32{int32(x)}
-		return true, err
-	case 403: // oneof_union.oneof_uint32
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofUint32{uint32(x)}
-		return true, err
-	case 404: // oneof_union.oneof_int64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofInt64{int64(x)}
-		return true, err
-	case 405: // oneof_union.oneof_sint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeZigzag64()
-		m.OneofUnion = &Message_OneofSint64{int64(x)}
-		return true, err
-	case 406: // oneof_union.oneof_uint64
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofUint64{x}
-		return true, err
-	case 407: // oneof_union.oneof_fixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofFixed32{uint32(x)}
-		return true, err
-	case 408: // oneof_union.oneof_sfixed32
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofSfixed32{int32(x)}
-		return true, err
-	case 409: // oneof_union.oneof_float
-		if wire != proto.WireFixed32 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed32()
-		m.OneofUnion = &Message_OneofFloat{math.Float32frombits(uint32(x))}
-		return true, err
-	case 410: // oneof_union.oneof_fixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofFixed64{x}
-		return true, err
-	case 411: // oneof_union.oneof_sfixed64
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofSfixed64{int64(x)}
-		return true, err
-	case 412: // oneof_union.oneof_double
-		if wire != proto.WireFixed64 {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeFixed64()
-		m.OneofUnion = &Message_OneofDouble{math.Float64frombits(x)}
-		return true, err
-	case 413: // oneof_union.oneof_string
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString{x}
-		return true, err
-	case 414: // oneof_union.oneof_bytes
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.OneofUnion = &Message_OneofBytes{x}
-		return true, err
-	case 415: // oneof_union.oneof_child_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofChildEnum{Message_ChildEnum(x)}
-		return true, err
-	case 416: // oneof_union.oneof_child_message
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(Message_ChildMessage)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofChildMessage{msg}
-		return true, err
-	case 417: // oneof_union.oneof_sibling_enum
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.OneofUnion = &Message_OneofSiblingEnum{SiblingEnum(x)}
-		return true, err
-	case 418: // oneof_union.oneof_sibling_message
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(SiblingMessage)
-		err := b.DecodeMessage(msg)
-		m.OneofUnion = &Message_OneofSiblingMessage{msg}
-		return true, err
-	case 419: // oneof_union.oneof_string1
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString1{x}
-		return true, err
-	case 420: // oneof_union.oneof_string2
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString2{x}
-		return true, err
-	case 421: // oneof_union.oneof_string3
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeStringBytes()
-		m.OneofUnion = &Message_OneofString3{x}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _Message_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*Message)
-	// oneof_union
-	switch x := m.OneofUnion.(type) {
-	case *Message_OneofBool:
-		n += 2 // tag and wire
-		n += 1
-	case *Message_OneofInt32:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofInt32))
-	case *Message_OneofSint32:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64((uint32(x.OneofSint32) << 1) ^ uint32((int32(x.OneofSint32) >> 31))))
-	case *Message_OneofUint32:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofUint32))
-	case *Message_OneofInt64:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofInt64))
-	case *Message_OneofSint64:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(uint64(x.OneofSint64<<1) ^ uint64((int64(x.OneofSint64) >> 63))))
-	case *Message_OneofUint64:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofUint64))
-	case *Message_OneofFixed32:
-		n += 2 // tag and wire
-		n += 4
-	case *Message_OneofSfixed32:
-		n += 2 // tag and wire
-		n += 4
-	case *Message_OneofFloat:
-		n += 2 // tag and wire
-		n += 4
-	case *Message_OneofFixed64:
-		n += 2 // tag and wire
-		n += 8
-	case *Message_OneofSfixed64:
-		n += 2 // tag and wire
-		n += 8
-	case *Message_OneofDouble:
-		n += 2 // tag and wire
-		n += 8
-	case *Message_OneofString:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofString)))
-		n += len(x.OneofString)
-	case *Message_OneofBytes:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofBytes)))
-		n += len(x.OneofBytes)
-	case *Message_OneofChildEnum:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofChildEnum))
-	case *Message_OneofChildMessage:
-		s := proto.Size(x.OneofChildMessage)
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_OneofSiblingEnum:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.OneofSiblingEnum))
-	case *Message_OneofSiblingMessage:
-		s := proto.Size(x.OneofSiblingMessage)
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *Message_OneofString1:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofString1)))
-		n += len(x.OneofString1)
-	case *Message_OneofString2:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofString2)))
-		n += len(x.OneofString2)
-	case *Message_OneofString3:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.OneofString3)))
-		n += len(x.OneofString3)
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
-type Message_ChildMessage struct {
-	F1                   string   `protobuf:"bytes,1,opt,name=f1,proto3" json:"f1,omitempty"`
-	F2                   []string `protobuf:"bytes,2,rep,name=f2,proto3" json:"f2,omitempty"`
-	F3                   *Message `protobuf:"bytes,3,opt,name=f3,proto3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_ChildMessage) Reset()         { *m = Message_ChildMessage{} }
-func (m *Message_ChildMessage) String() string { return proto.CompactTextString(m) }
-func (*Message_ChildMessage) ProtoMessage()    {}
-func (*Message_ChildMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_test_14f9d28b9a7006c3, []int{1, 0}
-}
-func (m *Message_ChildMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_ChildMessage.Unmarshal(m, b)
-}
-func (m *Message_ChildMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_ChildMessage.Marshal(b, m, deterministic)
-}
-func (dst *Message_ChildMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_ChildMessage.Merge(dst, src)
-}
-func (m *Message_ChildMessage) XXX_Size() int {
-	return xxx_messageInfo_Message_ChildMessage.Size(m)
-}
-func (m *Message_ChildMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_ChildMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_ChildMessage proto.InternalMessageInfo
-
-func (m *Message_ChildMessage) GetF1() string {
-	if m != nil {
-		return m.F1
-	}
-	return ""
-}
-
-func (m *Message_ChildMessage) GetF2() []string {
-	if m != nil {
-		return m.F2
-	}
-	return nil
-}
-
-func (m *Message_ChildMessage) GetF3() *Message {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func init() {
-	proto.RegisterType((*SiblingMessage)(nil), "google.golang.org.proto3_20180814.SiblingMessage")
-	proto.RegisterType((*Message)(nil), "google.golang.org.proto3_20180814.Message")
-	proto.RegisterMapType((map[bool]bool)(nil), "google.golang.org.proto3_20180814.Message.MapBoolBoolEntry")
-	proto.RegisterMapType((map[bool][]byte)(nil), "google.golang.org.proto3_20180814.Message.MapBoolBytesEntry")
-	proto.RegisterMapType((map[bool]Message_ChildEnum)(nil), "google.golang.org.proto3_20180814.Message.MapBoolChildEnumEntry")
-	proto.RegisterMapType((map[bool]*Message_ChildMessage)(nil), "google.golang.org.proto3_20180814.Message.MapBoolChildMessageEntry")
-	proto.RegisterMapType((map[bool]float64)(nil), "google.golang.org.proto3_20180814.Message.MapBoolDoubleEntry")
-	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto3_20180814.Message.MapBoolFixed32Entry")
-	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto3_20180814.Message.MapBoolFixed64Entry")
-	proto.RegisterMapType((map[bool]float32)(nil), "google.golang.org.proto3_20180814.Message.MapBoolFloatEntry")
-	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto3_20180814.Message.MapBoolInt32Entry")
-	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto3_20180814.Message.MapBoolInt64Entry")
-	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto3_20180814.Message.MapBoolSfixed32Entry")
-	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto3_20180814.Message.MapBoolSfixed64Entry")
-	proto.RegisterMapType((map[bool]SiblingEnum)(nil), "google.golang.org.proto3_20180814.Message.MapBoolSiblingEnumEntry")
-	proto.RegisterMapType((map[bool]*SiblingMessage)(nil), "google.golang.org.proto3_20180814.Message.MapBoolSiblingMessageEntry")
-	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto3_20180814.Message.MapBoolSint32Entry")
-	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto3_20180814.Message.MapBoolSint64Entry")
-	proto.RegisterMapType((map[bool]string)(nil), "google.golang.org.proto3_20180814.Message.MapBoolStringEntry")
-	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto3_20180814.Message.MapBoolUint32Entry")
-	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto3_20180814.Message.MapBoolUint64Entry")
-	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto3_20180814.Message.MapFixed32BoolEntry")
-	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto3_20180814.Message.MapInt32BoolEntry")
-	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto3_20180814.Message.MapInt64BoolEntry")
-	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto3_20180814.Message.MapSint32BoolEntry")
-	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto3_20180814.Message.MapSint64BoolEntry")
-	proto.RegisterMapType((map[string]bool)(nil), "google.golang.org.proto3_20180814.Message.MapStringBoolEntry")
-	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto3_20180814.Message.MapUint32BoolEntry")
-	proto.RegisterMapType((map[uint64]bool)(nil), "google.golang.org.proto3_20180814.Message.MapUint64BoolEntry")
-	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto3_20180814.Message.ChildMessage")
-	proto.RegisterEnum("google.golang.org.proto3_20180814.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
-	proto.RegisterEnum("google.golang.org.proto3_20180814.Message_ChildEnum", Message_ChildEnum_name, Message_ChildEnum_value)
-}
-
-func init() {
-	proto.RegisterFile("proto3_20180814_aa810b61/test.proto", fileDescriptor_test_14f9d28b9a7006c3)
-}
-
-var fileDescriptor_test_14f9d28b9a7006c3 = []byte{
-	// 1946 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x9a, 0x57, 0x73, 0xdb, 0xca,
-	0x15, 0xc7, 0x09, 0x52, 0xc5, 0x5a, 0xb1, 0x82, 0x96, 0xb2, 0xa3, 0x27, 0x44, 0x76, 0x1c, 0xc4,
-	0xc9, 0x50, 0x26, 0x85, 0x41, 0x34, 0x4e, 0x62, 0x5b, 0xb2, 0xe5, 0xd0, 0x19, 0x3b, 0xf1, 0xc0,
-	0xa3, 0x3c, 0xe4, 0x45, 0x21, 0x25, 0x90, 0xa6, 0x0d, 0x12, 0x8a, 0x48, 0x7a, 0xa2, 0xc9, 0x83,
-	0xbf, 0x42, 0x7a, 0x6f, 0xb7, 0xbd, 0xdd, 0xde, 0x7b, 0xf7, 0x1d, 0xdf, 0xde, 0xeb, 0xa7, 0xb9,
-	0xb3, 0x38, 0xd8, 0x06, 0x80, 0x26, 0x09, 0xce, 0x7d, 0xf0, 0x8c, 0x74, 0xf8, 0xdf, 0xf3, 0xe3,
-	0x39, 0x38, 0x7b, 0xce, 0x2e, 0x2c, 0x74, 0x64, 0x6f, 0xdf, 0xed, 0xb9, 0xab, 0xdb, 0x95, 0x13,
-	0xe5, 0xb5, 0x13, 0x6b, 0x65, 0x63, 0xbb, 0x56, 0x5b, 0x2b, 0x9f, 0xa8, 0x9b, 0xe5, 0x95, 0x9e,
-	0xdd, 0xed, 0x95, 0xbc, 0x4f, 0xd5, 0x6f, 0x37, 0x5d, 0xb7, 0xe9, 0xd8, 0xa5, 0xa6, 0xeb, 0xd4,
-	0x3a, 0xcd, 0x92, 0xbb, 0xdf, 0x2c, 0x05, 0x96, 0x2d, 0x3b, 0x28, 0x7b, 0xa5, 0x55, 0x77, 0x5a,
-	0x9d, 0xe6, 0x25, 0xbb, 0xdb, 0xad, 0x35, 0x6d, 0x35, 0x8b, 0x92, 0x8d, 0x32, 0x56, 0x34, 0x45,
-	0x9f, 0xb3, 0x92, 0x8d, 0xb2, 0xf7, 0x7b, 0x05, 0x27, 0xb5, 0x94, 0xf7, 0x7b, 0x45, 0x3d, 0x89,
-	0x92, 0x8d, 0x55, 0x9c, 0xd2, 0x14, 0x7d, 0xbe, 0x72, 0xbc, 0x34, 0x94, 0x50, 0xf2, 0xfd, 0x5a,
-	0xc9, 0xc6, 0xea, 0xf2, 0xad, 0x33, 0x68, 0x96, 0x72, 0x8e, 0xa0, 0x8c, 0xbb, 0xd7, 0x6b, 0xb9,
-	0x9d, 0x9a, 0xb3, 0x5d, 0x77, 0x5d, 0x07, 0xef, 0x6a, 0x8a, 0x7e, 0xc8, 0x4a, 0x53, 0xe3, 0x86,
-	0xeb, 0x3a, 0xea, 0x77, 0x50, 0x96, 0x89, 0x5a, 0x9d, 0xde, 0x6a, 0x05, 0xdb, 0x9a, 0xa2, 0x4f,
-	0x5b, 0x6c, 0xe9, 0x05, 0x62, 0x54, 0xbf, 0x8b, 0x72, 0x4c, 0xd6, 0x05, 0x5d, 0x43, 0x53, 0xf4,
-	0x82, 0xc5, 0x56, 0x5f, 0x69, 0x85, 0x84, 0x7d, 0x10, 0x36, 0x35, 0x45, 0xcf, 0x70, 0xe1, 0x16,
-	0x08, 0x03, 0x60, 0xd3, 0xc0, 0x57, 0x35, 0x45, 0x4f, 0x49, 0x60, 0xd3, 0x08, 0x81, 0x4d, 0x03,
-	0xb7, 0x34, 0x45, 0x57, 0x65, 0x70, 0x40, 0xd8, 0x07, 0xe1, 0x35, 0x4d, 0xd1, 0xa7, 0x64, 0xb0,
-	0x69, 0xa8, 0xdf, 0x43, 0x79, 0x26, 0x6c, 0xb4, 0x7e, 0x6b, 0xef, 0xae, 0x56, 0xf0, 0x75, 0x4d,
-	0xd1, 0x67, 0x2d, 0xe6, 0xe0, 0x3c, 0x98, 0xd5, 0xef, 0xa3, 0x02, 0x87, 0x53, 0xad, 0xa3, 0x29,
-	0x7a, 0xce, 0x62, 0x3e, 0xae, 0xf8, 0x76, 0x29, 0xa0, 0x86, 0xe3, 0xd6, 0x7a, 0xb8, 0xad, 0x29,
-	0x7a, 0x92, 0x07, 0x74, 0x9e, 0x18, 0xc3, 0x78, 0xd3, 0xc0, 0x1d, 0x4d, 0xd1, 0x67, 0x02, 0x78,
-	0xd3, 0x88, 0xc0, 0x9b, 0x06, 0x76, 0x35, 0x45, 0xcf, 0x07, 0xf1, 0x81, 0xf8, 0x77, 0xdd, 0x7e,
-	0xdd, 0xb1, 0xf1, 0x9e, 0xa6, 0xe8, 0x0a, 0x8f, 0xff, 0x9c, 0x67, 0x95, 0x33, 0xda, 0xdb, 0x6f,
-	0x75, 0x9a, 0xf8, 0x37, 0x5e, 0x2d, 0xf2, 0x8c, 0x7a, 0x56, 0x29, 0xa0, 0xfa, 0x41, 0xcf, 0xee,
-	0xe2, 0x7d, 0x4d, 0xd1, 0xd3, 0x3c, 0xa0, 0x0d, 0x62, 0x54, 0x77, 0x51, 0x91, 0xc9, 0x76, 0xae,
-	0xb6, 0x9c, 0xdd, 0x6d, 0xbb, 0xd3, 0x6f, 0xe3, 0xae, 0xa6, 0xe8, 0xd9, 0x8a, 0x31, 0x7a, 0xfd,
-	0x96, 0xce, 0x92, 0xc5, 0x9b, 0x9d, 0x7e, 0xdb, 0x62, 0x61, 0x33, 0x93, 0xda, 0x46, 0x8b, 0x01,
-	0x4a, 0x1b, 0x96, 0xe1, 0x9e, 0xb7, 0x51, 0x7e, 0x38, 0x2e, 0x88, 0xee, 0x9a, 0xc3, 0x12, 0x8b,
-	0xee, 0x9d, 0x3a, 0x5a, 0x10, 0xca, 0xce, 0xdb, 0xbe, 0x10, 0x56, 0xdf, 0x0b, 0xab, 0x34, 0x02,
-	0xcd, 0xdf, 0xf5, 0x5e, 0x40, 0x45, 0x5e, 0xac, 0xcc, 0xa8, 0x5e, 0x47, 0x38, 0xc4, 0xa0, 0x41,
-	0xdd, 0xf0, 0x82, 0x2a, 0x8f, 0x8e, 0xa1, 0xe1, 0x2c, 0x06, 0x48, 0x34, 0xa0, 0xa3, 0x28, 0xb3,
-	0x6f, 0xef, 0xd9, 0xb5, 0x9e, 0xbd, 0x0b, 0xcd, 0xe0, 0xb6, 0xa2, 0xa5, 0x48, 0x37, 0xa0, 0x56,
-	0xaf, 0x1b, 0x1c, 0x43, 0x59, 0xa6, 0x82, 0xcd, 0xfb, 0x26, 0x91, 0x4d, 0x5b, 0x6c, 0x31, 0xb4,
-	0x03, 0x1d, 0xe5, 0x98, 0xce, 0x6f, 0x07, 0x6f, 0x11, 0x61, 0xc1, 0x62, 0xeb, 0xfd, 0x7e, 0x20,
-	0x2a, 0xfd, 0x7e, 0xf0, 0x36, 0x51, 0x66, 0xb8, 0xd2, 0x6f, 0x08, 0x01, 0xb6, 0x69, 0xe0, 0x77,
-	0x88, 0x30, 0x25, 0xb1, 0x4d, 0x23, 0xc4, 0x36, 0x0d, 0xfc, 0x2e, 0x11, 0xaa, 0x32, 0x3b, 0xa0,
-	0xf4, 0x5b, 0xc2, 0x7b, 0x44, 0x39, 0x25, 0xb3, 0x4d, 0x43, 0x3d, 0x8e, 0xf2, 0x4c, 0x49, 0xf7,
-	0xf9, 0xfb, 0x44, 0x3a, 0x6b, 0x31, 0x17, 0xb4, 0x29, 0xfc, 0x00, 0x15, 0x38, 0x9f, 0x8a, 0x3f,
-	0x20, 0xe2, 0x9c, 0xc5, 0xbc, 0xb0, 0xae, 0x20, 0x46, 0x05, 0x5d, 0xe1, 0x43, 0x22, 0x4d, 0xf2,
-	0xa8, 0xa0, 0x2d, 0x84, 0xbe, 0x81, 0x69, 0xe0, 0x8f, 0x88, 0x72, 0x26, 0xf0, 0x0d, 0x4c, 0x23,
-	0xe2, 0x1b, 0x98, 0x06, 0xfe, 0x98, 0x88, 0xf3, 0xc1, 0x6f, 0x10, 0xc8, 0x82, 0xdf, 0x18, 0x3e,
-	0x21, 0x5a, 0x85, 0x67, 0xc1, 0xef, 0x0c, 0x52, 0x66, 0xa1, 0x33, 0x7c, 0xaa, 0x78, 0x63, 0x89,
-	0x67, 0x16, 0x5a, 0x83, 0x18, 0x15, 0xb4, 0x86, 0xcf, 0x88, 0x30, 0xcd, 0xa3, 0x82, 0xde, 0x60,
-	0xa3, 0x22, 0xd3, 0x09, 0xbd, 0xe1, 0x73, 0x22, 0x8e, 0xdd, 0x1c, 0xa8, 0x47, 0xde, 0x1c, 0x3a,
-	0x68, 0x31, 0x80, 0xa1, 0xfb, 0xe8, 0x0b, 0x42, 0x9a, 0xa4, 0x3b, 0x48, 0x30, 0xba, 0x99, 0x76,
-	0xd0, 0x82, 0x50, 0x82, 0x42, 0x77, 0xf8, 0x12, 0x02, 0x1b, 0xbb, 0x3d, 0xf0, 0xc2, 0xe5, 0xed,
-	0xc1, 0x41, 0x38, 0x04, 0xa1, 0x61, 0x7d, 0x05, 0x61, 0xc5, 0xe9, 0x0f, 0x01, 0x14, 0x0d, 0xe9,
-	0xd7, 0x28, 0xd3, 0xae, 0xed, 0x79, 0xad, 0x01, 0xfa, 0xc3, 0xfd, 0x49, 0x0f, 0xf1, 0xa3, 0x31,
-	0x32, 0x77, 0xa9, 0xb6, 0x47, 0xba, 0x08, 0xf9, 0xb7, 0xd9, 0xe9, 0xed, 0x1f, 0x58, 0xf3, 0x6d,
-	0x6e, 0x51, 0x77, 0x50, 0x96, 0x11, 0xa0, 0x11, 0x3c, 0x00, 0x88, 0x1f, 0x8f, 0x8f, 0xf0, 0xba,
-	0x10, 0x30, 0xd2, 0x6d, 0xc1, 0xa4, 0x36, 0x50, 0x8e, 0x41, 0xfc, 0xc6, 0xf4, 0x20, 0x50, 0x7e,
-	0x32, 0x3e, 0x05, 0x5a, 0x18, 0x60, 0x32, 0x6d, 0xd1, 0x26, 0x71, 0xfc, 0xb6, 0xf6, 0x50, 0x6c,
-	0xce, 0x56, 0x04, 0xc7, 0x6f, 0x8a, 0x81, 0xa4, 0x99, 0x06, 0x7e, 0x78, 0x92, 0xa4, 0x99, 0x46,
-	0x28, 0x69, 0xa6, 0x11, 0x4a, 0x9a, 0x69, 0xe0, 0x47, 0x26, 0x4a, 0x1a, 0xc5, 0x88, 0x49, 0x0b,
-	0x70, 0xfc, 0x7e, 0xfc, 0xe8, 0x44, 0x49, 0x0b, 0x72, 0xfc, 0x6e, 0xde, 0x42, 0x79, 0xc6, 0xa1,
-	0x0d, 0xfa, 0x31, 0x00, 0x9d, 0x1a, 0x1f, 0xe4, 0xf7, 0x7d, 0x20, 0x65, 0xdb, 0x92, 0x51, 0x75,
-	0x50, 0x81, 0xa7, 0x8e, 0xb2, 0x1e, 0x07, 0xd6, 0xe9, 0x18, 0xc9, 0x6b, 0x88, 0xb0, 0x5c, 0x5b,
-	0xb6, 0x4a, 0xd5, 0x00, 0xc3, 0xe4, 0x89, 0xd8, 0xd5, 0xe0, 0x8d, 0x1d, 0xb9, 0x1a, 0x60, 0x12,
-	0x85, 0xb2, 0x67, 0x1a, 0xf8, 0xc9, 0xc9, 0xb2, 0x47, 0x9f, 0x93, 0x94, 0x3d, 0xd3, 0x88, 0xc8,
-	0x9e, 0x69, 0xe0, 0xa7, 0x26, 0xcc, 0x1e, 0x85, 0xc9, 0xd9, 0x0b, 0x94, 0x9f, 0x3f, 0x08, 0x9f,
-	0x8e, 0x5d, 0x7e, 0x30, 0x32, 0xe5, 0xf2, 0xf3, 0xc7, 0xa8, 0xb4, 0x9d, 0x60, 0x8c, 0x3e, 0x13,
-	0x7f, 0x3b, 0x79, 0x0e, 0x02, 0xdb, 0x09, 0x86, 0xb0, 0x58, 0x0d, 0x30, 0x84, 0x9f, 0x8d, 0x5d,
-	0x0d, 0xde, 0xb8, 0x96, 0xab, 0x01, 0x26, 0xf8, 0x1e, 0x2a, 0x32, 0x88, 0x30, 0xc1, 0x9f, 0x03,
-	0xd2, 0x99, 0xf1, 0x49, 0x6c, 0x6a, 0x03, 0x2d, 0xdf, 0x0e, 0x98, 0xd5, 0x03, 0xb4, 0x18, 0x20,
-	0xd2, 0xa9, 0xf7, 0x3c, 0x40, 0xcf, 0xc6, 0x84, 0xfa, 0x36, 0xe0, 0x16, 0xdb, 0xe1, 0x4f, 0xd4,
-	0x1b, 0x68, 0x41, 0x68, 0x84, 0xc2, 0x5c, 0x7f, 0x01, 0xc8, 0x1b, 0x71, 0xda, 0x21, 0x9b, 0xe8,
-	0x00, 0x56, 0xdb, 0xa1, 0x0f, 0xd4, 0x9b, 0x08, 0x87, 0xb8, 0x34, 0xe8, 0x17, 0x01, 0xbd, 0x19,
-	0x1b, 0x2d, 0x85, 0xbd, 0xd0, 0x8e, 0xfa, 0x8c, 0x96, 0x92, 0x37, 0x73, 0x60, 0xfc, 0xbf, 0x14,
-	0xab, 0x94, 0xbc, 0x21, 0xcc, 0xe7, 0x3f, 0x29, 0x25, 0x66, 0xa2, 0xfb, 0xa2, 0x2b, 0x50, 0x5e,
-	0x8e, 0xb5, 0x2f, 0x60, 0x06, 0x73, 0x0c, 0xd9, 0x17, 0xdc, 0x46, 0x39, 0x7d, 0x81, 0xf3, 0x4a,
-	0x2c, 0xce, 0x56, 0x04, 0x87, 0xdb, 0x84, 0xa4, 0x99, 0x06, 0x60, 0x5e, 0x8d, 0x9b, 0x34, 0xd3,
-	0x08, 0x25, 0x0d, 0x4c, 0x62, 0xd2, 0x28, 0xe5, 0xb5, 0xd8, 0x49, 0x13, 0x31, 0x34, 0x69, 0x32,
-	0xa7, 0x2f, 0x70, 0x5e, 0x8f, 0x9d, 0xb4, 0x20, 0x87, 0xdb, 0xe8, 0x74, 0xf1, 0x27, 0x1a, 0x80,
-	0x6e, 0xc5, 0x9a, 0x2e, 0xfe, 0x08, 0xe6, 0x24, 0xf2, 0x34, 0x04, 0x23, 0x4b, 0x9d, 0xd7, 0x2d,
-	0x81, 0xf4, 0x46, 0xbc, 0xd4, 0x79, 0x1e, 0x02, 0xa9, 0x63, 0x36, 0x55, 0x43, 0xc8, 0xed, 0xd8,
-	0x6e, 0x03, 0x10, 0xbf, 0x4f, 0x69, 0x8a, 0x7e, 0xa8, 0x9a, 0xb0, 0xe6, 0x3c, 0xa3, 0xa7, 0x58,
-	0x46, 0xf3, 0xa0, 0x80, 0x93, 0xe2, 0x1f, 0x88, 0x64, 0xba, 0x9a, 0xb0, 0x60, 0x1d, 0x9c, 0x5c,
-	0x8f, 0xa2, 0x34, 0x68, 0xfc, 0x63, 0xeb, 0x1f, 0x89, 0xa8, 0x50, 0x4d, 0x58, 0xb0, 0xd4, 0x3f,
-	0x77, 0x32, 0x95, 0x7f, 0xe8, 0xfc, 0x13, 0x51, 0x65, 0x98, 0xca, 0x3f, 0x35, 0x8a, 0x3c, 0xd3,
-	0xc0, 0x7f, 0x26, 0xa2, 0x94, 0xc8, 0x33, 0x0d, 0x99, 0x67, 0x1a, 0xf8, 0x2f, 0x44, 0xa4, 0x4a,
-	0x3c, 0x51, 0xe5, 0x9f, 0xd7, 0xfe, 0x4a, 0x54, 0x53, 0x12, 0xcf, 0x34, 0xd4, 0x63, 0x28, 0x03,
-	0x2a, 0x7a, 0x02, 0xfa, 0x1b, 0x91, 0xcd, 0x56, 0x13, 0x16, 0xac, 0xa6, 0xa7, 0x25, 0x1d, 0x65,
-	0x7d, 0x26, 0x15, 0xfe, 0x9d, 0x08, 0x73, 0xd5, 0x84, 0x05, 0x0e, 0xd8, 0x49, 0x87, 0x45, 0x00,
-	0xc7, 0x9c, 0x7f, 0x10, 0x59, 0x92, 0x45, 0x00, 0x07, 0x15, 0x99, 0x6a, 0x1a, 0xf8, 0x9f, 0x44,
-	0x35, 0x23, 0x53, 0xbd, 0x0b, 0xb0, 0x44, 0x35, 0x0d, 0xfc, 0x2f, 0x22, 0xcc, 0x07, 0xa8, 0x62,
-	0xb4, 0xfe, 0xf1, 0xe0, 0xdf, 0x44, 0xa7, 0xb0, 0x68, 0xfd, 0xf9, 0xce, 0x33, 0x07, 0xc3, 0xfd,
-	0x3f, 0x44, 0x35, 0xc7, 0x33, 0x07, 0xd3, 0x99, 0x45, 0x00, 0xa3, 0xf9, 0xbf, 0x44, 0x94, 0x66,
-	0x11, 0xc0, 0x70, 0xad, 0xa1, 0x3c, 0x68, 0x84, 0xc9, 0xfa, 0xbf, 0x54, 0xfc, 0x17, 0x67, 0xd5,
-	0x84, 0x05, 0xa1, 0xf2, 0x69, 0x7a, 0x0d, 0x15, 0x45, 0x04, 0x9d, 0x2a, 0xff, 0x4f, 0x4d, 0xf4,
-	0xd6, 0xac, 0x9a, 0xb0, 0x0a, 0x1c, 0x44, 0xa7, 0xc8, 0x36, 0x52, 0x69, 0x49, 0x09, 0xb3, 0xf3,
-	0xae, 0x54, 0x9c, 0x57, 0x66, 0xd5, 0x84, 0x95, 0xf7, 0x0b, 0x91, 0xcf, 0xc9, 0xab, 0x68, 0x41,
-	0x06, 0xd0, 0x70, 0xee, 0x4e, 0xc5, 0x7c, 0x5f, 0x56, 0x4d, 0x58, 0x45, 0x11, 0x43, 0x43, 0x61,
-	0xb5, 0x05, 0xcf, 0xb8, 0x8c, 0xef, 0xa1, 0x0f, 0x39, 0x2d, 0x3c, 0xe4, 0x72, 0x50, 0x57, 0xc1,
-	0xf7, 0x46, 0xe9, 0x2a, 0x41, 0xdd, 0x2a, 0xbe, 0x2f, 0x4a, 0xb7, 0xba, 0x74, 0x0d, 0xa5, 0xa5,
-	0x94, 0x7e, 0x83, 0xff, 0x57, 0xb0, 0x74, 0x0a, 0xe5, 0x83, 0x37, 0x76, 0x35, 0x8f, 0x52, 0xd7,
-	0xed, 0x03, 0x0f, 0x78, 0xc8, 0x22, 0x3f, 0xaa, 0x87, 0xd1, 0xf4, 0x8d, 0x9a, 0xd3, 0xb7, 0x71,
-	0xd2, 0xb3, 0xc1, 0x2f, 0x27, 0x93, 0x6b, 0xca, 0xd2, 0x69, 0x54, 0x08, 0x5d, 0xc7, 0x87, 0x39,
-	0x98, 0x16, 0x1d, 0x9c, 0x41, 0x6a, 0xf8, 0xa6, 0x3d, 0xcc, 0x43, 0x21, 0xda, 0xc3, 0xd6, 0xe8,
-	0x1e, 0x32, 0x03, 0x83, 0xf0, 0xaf, 0x0e, 0xc3, 0x1c, 0xa4, 0x06, 0x07, 0x31, 0xa2, 0x07, 0x75,
-	0x70, 0x10, 0x23, 0x7a, 0x98, 0x12, 0x3d, 0xac, 0xa3, 0x62, 0xc4, 0x65, 0x75, 0x98, 0x8b, 0x59,
-	0xd1, 0xc5, 0x06, 0x3a, 0x1c, 0x75, 0x07, 0x1d, 0xe6, 0x23, 0x17, 0x9d, 0x4b, 0x7e, 0xb9, 0x1c,
-	0xe6, 0x20, 0x79, 0x87, 0x38, 0x46, 0x4c, 0xc5, 0xcc, 0x9d, 0xe2, 0x18, 0xd1, 0x47, 0x3e, 0xfa,
-	0x81, 0x08, 0xb7, 0xbc, 0x61, 0x1e, 0x94, 0x01, 0x45, 0xc1, 0xef, 0x6f, 0xc3, 0x3c, 0xcc, 0x45,
-	0xe7, 0x92, 0x5f, 0xcd, 0x86, 0x39, 0x48, 0x8b, 0x0e, 0x0e, 0xd0, 0x42, 0xe4, 0x8d, 0x2b, 0xc2,
-	0xc9, 0xcf, 0x44, 0x27, 0x71, 0x5f, 0xcb, 0x0a, 0xe8, 0x9b, 0x08, 0x0f, 0xba, 0x77, 0x45, 0xd0,
-	0x2f, 0x89, 0xf4, 0x09, 0x5e, 0xd5, 0x0a, 0x5f, 0xa0, 0x8f, 0xbe, 0x35, 0xe0, 0xfa, 0x15, 0xc1,
-	0x3f, 0x27, 0x47, 0x3f, 0xee, 0xbb, 0x5b, 0x01, 0xfb, 0x3b, 0xb4, 0x34, 0xf8, 0xea, 0x15, 0x41,
-	0xfe, 0xa9, 0x1c, 0x79, 0x8c, 0xb7, 0xb9, 0xa1, 0x82, 0x91, 0x2f, 0x60, 0x22, 0x73, 0x7a, 0x58,
-	0x3b, 0x87, 0x9a, 0x0d, 0xdc, 0xad, 0x44, 0x0f, 0x85, 0xd1, 0x3c, 0x6c, 0x0d, 0xf6, 0x90, 0x19,
-	0x6d, 0xa4, 0xc8, 0x17, 0x22, 0xd1, 0x41, 0x6a, 0xf4, 0x20, 0x06, 0x78, 0x50, 0x47, 0x0f, 0x62,
-	0x80, 0x87, 0xa9, 0x61, 0x1e, 0xa0, 0x8b, 0x05, 0xaf, 0x27, 0xa2, 0x8b, 0xd9, 0x11, 0xc3, 0x90,
-	0xef, 0x1d, 0xa2, 0x87, 0xb9, 0x21, 0x1e, 0x96, 0x4b, 0x68, 0x8e, 0x1f, 0x02, 0xe7, 0xd0, 0xf4,
-	0xfa, 0xc5, 0xcb, 0xd5, 0xf5, 0x7c, 0x82, 0xfc, 0xb8, 0x61, 0xad, 0xff, 0xf2, 0x17, 0x79, 0x45,
-	0x9d, 0x47, 0xb3, 0x67, 0xab, 0xeb, 0xd6, 0xc5, 0x0b, 0x9b, 0xf9, 0xe4, 0x46, 0x86, 0x1e, 0x57,
-	0xfb, 0x9d, 0x96, 0xdb, 0x39, 0x5e, 0x46, 0xf3, 0xe2, 0xc1, 0x2b, 0xca, 0x01, 0x52, 0xd3, 0xdc,
-	0xc1, 0x6d, 0x65, 0xe3, 0xf2, 0xaf, 0x7e, 0x1e, 0xaa, 0xdf, 0x15, 0xaf, 0x7e, 0xeb, 0xfd, 0xc6,
-	0x4a, 0xab, 0xd3, 0xb3, 0xf7, 0x3b, 0x35, 0xc7, 0xfb, 0xeb, 0x09, 0xcf, 0xda, 0x5d, 0x71, 0xec,
-	0x66, 0x6d, 0xe7, 0x60, 0x65, 0xd0, 0x1f, 0x5a, 0xd4, 0x67, 0xe0, 0x93, 0xaf, 0x03, 0x00, 0x00,
-	0xff, 0xff, 0xe8, 0x29, 0x22, 0xf1, 0x8b, 0x21, 0x00, 0x00,
-}
diff --git a/internal/testprotos/legacy/proto3_20180814_aa810b61/test.proto b/internal/testprotos/legacy/proto3_20180814_aa810b61/test.proto
deleted file mode 100644
index a278ad1..0000000
--- a/internal/testprotos/legacy/proto3_20180814_aa810b61/test.proto
+++ /dev/null
@@ -1,136 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-
-package google.golang.org.proto3_20180814;
-option go_package = "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20180814_aa810b61";
-
-enum SiblingEnum {
-	ALPHA   = 0;
-	BRAVO   = 10;
-	CHARLIE = 200;
-}
-
-message SiblingMessage {
-	string          f1 = 1;
-	repeated string f2 = 2;
-	Message         f3 = 3;
-}
-
-message Message {
-	enum ChildEnum {
-		ALPHA   = 0;
-		BRAVO   = 1;
-		CHARLIE = 2;
-	}
-	message ChildMessage {
-		string          f1 = 1;
-		repeated string f2 = 2;
-		Message         f3 = 3;
-	}
-
-	// Optional fields.
-	bool     optional_bool     = 100;
-	int32    optional_int32    = 101;
-	sint32   optional_sint32   = 102;
-	uint32   optional_uint32   = 103;
-	int64    optional_int64    = 104;
-	sint64   optional_sint64   = 105;
-	uint64   optional_uint64   = 106;
-	fixed32  optional_fixed32  = 107;
-	sfixed32 optional_sfixed32 = 108;
-	float    optional_float    = 109;
-	fixed64  optional_fixed64  = 110;
-	sfixed64 optional_sfixed64 = 111;
-	double   optional_double   = 112;
-	string   optional_string   = 113;
-	bytes    optional_bytes    = 114;
-
-	ChildEnum      optional_child_enum      = 115;
-	ChildMessage   optional_child_message   = 116;
-	SiblingEnum    optional_sibling_enum    = 117;
-	SiblingMessage optional_sibling_message = 118;
-
-	// Repeated fields.
-	repeated bool     repeated_bool     = 200;
-	repeated int32    repeated_int32    = 201;
-	repeated sint32   repeated_sint32   = 202;
-	repeated uint32   repeated_uint32   = 203;
-	repeated int64    repeated_int64    = 204;
-	repeated sint64   repeated_sint64   = 205;
-	repeated uint64   repeated_uint64   = 206;
-	repeated fixed32  repeated_fixed32  = 207;
-	repeated sfixed32 repeated_sfixed32 = 208;
-	repeated float    repeated_float    = 209;
-	repeated fixed64  repeated_fixed64  = 210;
-	repeated sfixed64 repeated_sfixed64 = 211;
-	repeated double   repeated_double   = 212;
-	repeated string   repeated_string   = 213;
-	repeated bytes    repeated_bytes    = 214;
-
-	repeated ChildEnum      repeated_child_enum      = 215;
-	repeated ChildMessage   repeated_child_message   = 216;
-	repeated SiblingEnum    repeated_sibling_enum    = 217;
-	repeated SiblingMessage repeated_sibling_message = 218;
-
-	// Map fields.
-	map<bool, bool>     map_bool_bool     = 300;
-	map<bool, int32>    map_bool_int32    = 301;
-	map<bool, sint32>   map_bool_sint32   = 302;
-	map<bool, uint32>   map_bool_uint32   = 303;
-	map<bool, int64>    map_bool_int64    = 304;
-	map<bool, sint64>   map_bool_sint64   = 305;
-	map<bool, uint64>   map_bool_uint64   = 306;
-	map<bool, fixed32>  map_bool_fixed32  = 307;
-	map<bool, sfixed32> map_bool_sfixed32 = 308;
-	map<bool, float>    map_bool_float    = 309;
-	map<bool, fixed64>  map_bool_fixed64  = 310;
-	map<bool, sfixed64> map_bool_sfixed64 = 311;
-	map<bool, double>   map_bool_double   = 312;
-	map<bool, string>   map_bool_string   = 313;
-	map<bool, bytes>    map_bool_bytes    = 314;
-
-	map<bool, ChildEnum>      map_bool_child_enum      = 315;
-	map<bool, ChildMessage>   map_bool_child_message   = 316;
-	map<bool, SiblingEnum>    map_bool_sibling_enum    = 317;
-	map<bool, SiblingMessage> map_bool_sibling_message = 318;
-
-	map<int32, bool>   map_int32_bool   = 319;
-	map<sint32, bool>  map_sint32_bool  = 320;
-	map<uint32, bool>  map_uint32_bool  = 321;
-	map<int64, bool>   map_int64_bool   = 322;
-	map<sint64, bool>  map_sint64_bool  = 323;
-	map<uint64, bool>  map_uint64_bool  = 324;
-	map<fixed32, bool> map_fixed32_bool = 325;
-	map<string, bool>  map_string_bool  = 326;
-
-	// Oneof fields.
-	oneof oneof_union {
-		bool     oneof_bool     = 400;
-		int32    oneof_int32    = 401;
-		sint32   oneof_sint32   = 402;
-		uint32   oneof_uint32   = 403;
-		int64    oneof_int64    = 404;
-		sint64   oneof_sint64   = 405;
-		uint64   oneof_uint64   = 406;
-		fixed32  oneof_fixed32  = 407;
-		sfixed32 oneof_sfixed32 = 408;
-		float    oneof_float    = 409;
-		fixed64  oneof_fixed64  = 410;
-		sfixed64 oneof_sfixed64 = 411;
-		double   oneof_double   = 412;
-		string   oneof_string   = 413;
-		bytes    oneof_bytes    = 414;
-
-		ChildEnum      oneof_child_enum      = 415;
-		ChildMessage   oneof_child_message   = 416;
-		SiblingEnum    oneof_sibling_enum    = 417;
-		SiblingMessage oneof_sibling_message = 418;
-
-		string oneof_string1 = 419;
-		string oneof_string2 = 420;
-		string oneof_string3 = 421;
-	}
-}
diff --git a/internal/testprotos/legacy/proto3_20190205_c823c79e/test.pb.go b/internal/testprotos/legacy/proto3_20190205_c823c79e/test.pb.go
deleted file mode 100644
index 250836c..0000000
--- a/internal/testprotos/legacy/proto3_20190205_c823c79e/test.pb.go
+++ /dev/null
@@ -1,1262 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: proto3_20190205_c823c79e/test.proto
-
-package proto3_20190205_c823c79e
-
-import (
-	fmt "fmt"
-	math "math"
-
-	proto "google.golang.org/protobuf/internal/protolegacy"
-)
-
-// 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
-
-type SiblingEnum int32
-
-const (
-	SiblingEnum_ALPHA   SiblingEnum = 0
-	SiblingEnum_BRAVO   SiblingEnum = 10
-	SiblingEnum_CHARLIE SiblingEnum = 200
-)
-
-var SiblingEnum_name = map[int32]string{
-	0:   "ALPHA",
-	10:  "BRAVO",
-	200: "CHARLIE",
-}
-
-var SiblingEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   10,
-	"CHARLIE": 200,
-}
-
-func (x SiblingEnum) String() string {
-	return proto.EnumName(SiblingEnum_name, int32(x))
-}
-
-func (SiblingEnum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_95cd555ff3d1bc43, []int{0}
-}
-
-type Message_ChildEnum int32
-
-const (
-	Message_ALPHA   Message_ChildEnum = 0
-	Message_BRAVO   Message_ChildEnum = 1
-	Message_CHARLIE Message_ChildEnum = 2
-)
-
-var Message_ChildEnum_name = map[int32]string{
-	0: "ALPHA",
-	1: "BRAVO",
-	2: "CHARLIE",
-}
-
-var Message_ChildEnum_value = map[string]int32{
-	"ALPHA":   0,
-	"BRAVO":   1,
-	"CHARLIE": 2,
-}
-
-func (x Message_ChildEnum) String() string {
-	return proto.EnumName(Message_ChildEnum_name, int32(x))
-}
-
-func (Message_ChildEnum) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_95cd555ff3d1bc43, []int{1, 0}
-}
-
-type SiblingMessage struct {
-	F1                   string   `protobuf:"bytes,1,opt,name=f1,proto3" json:"f1,omitempty"`
-	F2                   []string `protobuf:"bytes,2,rep,name=f2,proto3" json:"f2,omitempty"`
-	F3                   *Message `protobuf:"bytes,3,opt,name=f3,proto3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *SiblingMessage) Reset()         { *m = SiblingMessage{} }
-func (m *SiblingMessage) String() string { return proto.CompactTextString(m) }
-func (*SiblingMessage) ProtoMessage()    {}
-func (*SiblingMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_95cd555ff3d1bc43, []int{0}
-}
-
-func (m *SiblingMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_SiblingMessage.Unmarshal(m, b)
-}
-func (m *SiblingMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_SiblingMessage.Marshal(b, m, deterministic)
-}
-func (m *SiblingMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_SiblingMessage.Merge(m, src)
-}
-func (m *SiblingMessage) XXX_Size() int {
-	return xxx_messageInfo_SiblingMessage.Size(m)
-}
-func (m *SiblingMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_SiblingMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_SiblingMessage proto.InternalMessageInfo
-
-func (m *SiblingMessage) GetF1() string {
-	if m != nil {
-		return m.F1
-	}
-	return ""
-}
-
-func (m *SiblingMessage) GetF2() []string {
-	if m != nil {
-		return m.F2
-	}
-	return nil
-}
-
-func (m *SiblingMessage) GetF3() *Message {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-type Message struct {
-	// Optional fields.
-	OptionalBool           bool                  `protobuf:"varint,100,opt,name=optional_bool,json=optionalBool,proto3" json:"optional_bool,omitempty"`
-	OptionalInt32          int32                 `protobuf:"varint,101,opt,name=optional_int32,json=optionalInt32,proto3" json:"optional_int32,omitempty"`
-	OptionalSint32         int32                 `protobuf:"zigzag32,102,opt,name=optional_sint32,json=optionalSint32,proto3" json:"optional_sint32,omitempty"`
-	OptionalUint32         uint32                `protobuf:"varint,103,opt,name=optional_uint32,json=optionalUint32,proto3" json:"optional_uint32,omitempty"`
-	OptionalInt64          int64                 `protobuf:"varint,104,opt,name=optional_int64,json=optionalInt64,proto3" json:"optional_int64,omitempty"`
-	OptionalSint64         int64                 `protobuf:"zigzag64,105,opt,name=optional_sint64,json=optionalSint64,proto3" json:"optional_sint64,omitempty"`
-	OptionalUint64         uint64                `protobuf:"varint,106,opt,name=optional_uint64,json=optionalUint64,proto3" json:"optional_uint64,omitempty"`
-	OptionalFixed32        uint32                `protobuf:"fixed32,107,opt,name=optional_fixed32,json=optionalFixed32,proto3" json:"optional_fixed32,omitempty"`
-	OptionalSfixed32       int32                 `protobuf:"fixed32,108,opt,name=optional_sfixed32,json=optionalSfixed32,proto3" json:"optional_sfixed32,omitempty"`
-	OptionalFloat          float32               `protobuf:"fixed32,109,opt,name=optional_float,json=optionalFloat,proto3" json:"optional_float,omitempty"`
-	OptionalFixed64        uint64                `protobuf:"fixed64,110,opt,name=optional_fixed64,json=optionalFixed64,proto3" json:"optional_fixed64,omitempty"`
-	OptionalSfixed64       int64                 `protobuf:"fixed64,111,opt,name=optional_sfixed64,json=optionalSfixed64,proto3" json:"optional_sfixed64,omitempty"`
-	OptionalDouble         float64               `protobuf:"fixed64,112,opt,name=optional_double,json=optionalDouble,proto3" json:"optional_double,omitempty"`
-	OptionalString         string                `protobuf:"bytes,113,opt,name=optional_string,json=optionalString,proto3" json:"optional_string,omitempty"`
-	OptionalBytes          []byte                `protobuf:"bytes,114,opt,name=optional_bytes,json=optionalBytes,proto3" json:"optional_bytes,omitempty"`
-	OptionalChildEnum      Message_ChildEnum     `protobuf:"varint,115,opt,name=optional_child_enum,json=optionalChildEnum,proto3,enum=google.golang.org.proto3_20190205.Message_ChildEnum" json:"optional_child_enum,omitempty"`
-	OptionalChildMessage   *Message_ChildMessage `protobuf:"bytes,116,opt,name=optional_child_message,json=optionalChildMessage,proto3" json:"optional_child_message,omitempty"`
-	OptionalSiblingEnum    SiblingEnum           `protobuf:"varint,117,opt,name=optional_sibling_enum,json=optionalSiblingEnum,proto3,enum=google.golang.org.proto3_20190205.SiblingEnum" json:"optional_sibling_enum,omitempty"`
-	OptionalSiblingMessage *SiblingMessage       `protobuf:"bytes,118,opt,name=optional_sibling_message,json=optionalSiblingMessage,proto3" json:"optional_sibling_message,omitempty"`
-	// Repeated fields.
-	RepeatedBool           []bool                  `protobuf:"varint,200,rep,packed,name=repeated_bool,json=repeatedBool,proto3" json:"repeated_bool,omitempty"`
-	RepeatedInt32          []int32                 `protobuf:"varint,201,rep,packed,name=repeated_int32,json=repeatedInt32,proto3" json:"repeated_int32,omitempty"`
-	RepeatedSint32         []int32                 `protobuf:"zigzag32,202,rep,packed,name=repeated_sint32,json=repeatedSint32,proto3" json:"repeated_sint32,omitempty"`
-	RepeatedUint32         []uint32                `protobuf:"varint,203,rep,packed,name=repeated_uint32,json=repeatedUint32,proto3" json:"repeated_uint32,omitempty"`
-	RepeatedInt64          []int64                 `protobuf:"varint,204,rep,packed,name=repeated_int64,json=repeatedInt64,proto3" json:"repeated_int64,omitempty"`
-	RepeatedSint64         []int64                 `protobuf:"zigzag64,205,rep,packed,name=repeated_sint64,json=repeatedSint64,proto3" json:"repeated_sint64,omitempty"`
-	RepeatedUint64         []uint64                `protobuf:"varint,206,rep,packed,name=repeated_uint64,json=repeatedUint64,proto3" json:"repeated_uint64,omitempty"`
-	RepeatedFixed32        []uint32                `protobuf:"fixed32,207,rep,packed,name=repeated_fixed32,json=repeatedFixed32,proto3" json:"repeated_fixed32,omitempty"`
-	RepeatedSfixed32       []int32                 `protobuf:"fixed32,208,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32,proto3" json:"repeated_sfixed32,omitempty"`
-	RepeatedFloat          []float32               `protobuf:"fixed32,209,rep,packed,name=repeated_float,json=repeatedFloat,proto3" json:"repeated_float,omitempty"`
-	RepeatedFixed64        []uint64                `protobuf:"fixed64,210,rep,packed,name=repeated_fixed64,json=repeatedFixed64,proto3" json:"repeated_fixed64,omitempty"`
-	RepeatedSfixed64       []int64                 `protobuf:"fixed64,211,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64,proto3" json:"repeated_sfixed64,omitempty"`
-	RepeatedDouble         []float64               `protobuf:"fixed64,212,rep,packed,name=repeated_double,json=repeatedDouble,proto3" json:"repeated_double,omitempty"`
-	RepeatedString         []string                `protobuf:"bytes,213,rep,name=repeated_string,json=repeatedString,proto3" json:"repeated_string,omitempty"`
-	RepeatedBytes          [][]byte                `protobuf:"bytes,214,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"`
-	RepeatedChildEnum      []Message_ChildEnum     `protobuf:"varint,215,rep,packed,name=repeated_child_enum,json=repeatedChildEnum,proto3,enum=google.golang.org.proto3_20190205.Message_ChildEnum" json:"repeated_child_enum,omitempty"`
-	RepeatedChildMessage   []*Message_ChildMessage `protobuf:"bytes,216,rep,name=repeated_child_message,json=repeatedChildMessage,proto3" json:"repeated_child_message,omitempty"`
-	RepeatedSiblingEnum    []SiblingEnum           `protobuf:"varint,217,rep,packed,name=repeated_sibling_enum,json=repeatedSiblingEnum,proto3,enum=google.golang.org.proto3_20190205.SiblingEnum" json:"repeated_sibling_enum,omitempty"`
-	RepeatedSiblingMessage []*SiblingMessage       `protobuf:"bytes,218,rep,name=repeated_sibling_message,json=repeatedSiblingMessage,proto3" json:"repeated_sibling_message,omitempty"`
-	// Map fields.
-	MapBoolBool           map[bool]bool                  `protobuf:"bytes,300,rep,name=map_bool_bool,json=mapBoolBool,proto3" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapBoolInt32          map[bool]int32                 `protobuf:"bytes,301,rep,name=map_bool_int32,json=mapBoolInt32,proto3" json:"map_bool_int32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapBoolSint32         map[bool]int32                 `protobuf:"bytes,302,rep,name=map_bool_sint32,json=mapBoolSint32,proto3" json:"map_bool_sint32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"zigzag32,2,opt,name=value,proto3"`
-	MapBoolUint32         map[bool]uint32                `protobuf:"bytes,303,rep,name=map_bool_uint32,json=mapBoolUint32,proto3" json:"map_bool_uint32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapBoolInt64          map[bool]int64                 `protobuf:"bytes,304,rep,name=map_bool_int64,json=mapBoolInt64,proto3" json:"map_bool_int64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapBoolSint64         map[bool]int64                 `protobuf:"bytes,305,rep,name=map_bool_sint64,json=mapBoolSint64,proto3" json:"map_bool_sint64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"zigzag64,2,opt,name=value,proto3"`
-	MapBoolUint64         map[bool]uint64                `protobuf:"bytes,306,rep,name=map_bool_uint64,json=mapBoolUint64,proto3" json:"map_bool_uint64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapBoolFixed32        map[bool]uint32                `protobuf:"bytes,307,rep,name=map_bool_fixed32,json=mapBoolFixed32,proto3" json:"map_bool_fixed32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapBoolSfixed32       map[bool]int32                 `protobuf:"bytes,308,rep,name=map_bool_sfixed32,json=mapBoolSfixed32,proto3" json:"map_bool_sfixed32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapBoolFloat          map[bool]float32               `protobuf:"bytes,309,rep,name=map_bool_float,json=mapBoolFloat,proto3" json:"map_bool_float,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapBoolFixed64        map[bool]uint64                `protobuf:"bytes,310,rep,name=map_bool_fixed64,json=mapBoolFixed64,proto3" json:"map_bool_fixed64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapBoolSfixed64       map[bool]int64                 `protobuf:"bytes,311,rep,name=map_bool_sfixed64,json=mapBoolSfixed64,proto3" json:"map_bool_sfixed64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapBoolDouble         map[bool]float64               `protobuf:"bytes,312,rep,name=map_bool_double,json=mapBoolDouble,proto3" json:"map_bool_double,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapBoolString         map[bool]string                `protobuf:"bytes,313,rep,name=map_bool_string,json=mapBoolString,proto3" json:"map_bool_string,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapBoolBytes          map[bool][]byte                `protobuf:"bytes,314,rep,name=map_bool_bytes,json=mapBoolBytes,proto3" json:"map_bool_bytes,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapBoolChildEnum      map[bool]Message_ChildEnum     `protobuf:"bytes,315,rep,name=map_bool_child_enum,json=mapBoolChildEnum,proto3" json:"map_bool_child_enum,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=google.golang.org.proto3_20190205.Message_ChildEnum"`
-	MapBoolChildMessage   map[bool]*Message_ChildMessage `protobuf:"bytes,316,rep,name=map_bool_child_message,json=mapBoolChildMessage,proto3" json:"map_bool_child_message,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapBoolSiblingEnum    map[bool]SiblingEnum           `protobuf:"bytes,317,rep,name=map_bool_sibling_enum,json=mapBoolSiblingEnum,proto3" json:"map_bool_sibling_enum,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=google.golang.org.proto3_20190205.SiblingEnum"`
-	MapBoolSiblingMessage map[bool]*SiblingMessage       `protobuf:"bytes,318,rep,name=map_bool_sibling_message,json=mapBoolSiblingMessage,proto3" json:"map_bool_sibling_message,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapInt32Bool          map[int32]bool                 `protobuf:"bytes,319,rep,name=map_int32_bool,json=mapInt32Bool,proto3" json:"map_int32_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapSint32Bool         map[int32]bool                 `protobuf:"bytes,320,rep,name=map_sint32_bool,json=mapSint32Bool,proto3" json:"map_sint32_bool,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapUint32Bool         map[uint32]bool                `protobuf:"bytes,321,rep,name=map_uint32_bool,json=mapUint32Bool,proto3" json:"map_uint32_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapInt64Bool          map[int64]bool                 `protobuf:"bytes,322,rep,name=map_int64_bool,json=mapInt64Bool,proto3" json:"map_int64_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapSint64Bool         map[int64]bool                 `protobuf:"bytes,323,rep,name=map_sint64_bool,json=mapSint64Bool,proto3" json:"map_sint64_bool,omitempty" protobuf_key:"zigzag64,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapUint64Bool         map[uint64]bool                `protobuf:"bytes,324,rep,name=map_uint64_bool,json=mapUint64Bool,proto3" json:"map_uint64_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapFixed32Bool        map[uint32]bool                `protobuf:"bytes,325,rep,name=map_fixed32_bool,json=mapFixed32Bool,proto3" json:"map_fixed32_bool,omitempty" protobuf_key:"fixed32,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapStringBool         map[string]bool                `protobuf:"bytes,326,rep,name=map_string_bool,json=mapStringBool,proto3" json:"map_string_bool,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	// Oneof fields.
-	//
-	// Types that are valid to be assigned to OneofUnion:
-	//	*Message_OneofBool
-	//	*Message_OneofInt32
-	//	*Message_OneofSint32
-	//	*Message_OneofUint32
-	//	*Message_OneofInt64
-	//	*Message_OneofSint64
-	//	*Message_OneofUint64
-	//	*Message_OneofFixed32
-	//	*Message_OneofSfixed32
-	//	*Message_OneofFloat
-	//	*Message_OneofFixed64
-	//	*Message_OneofSfixed64
-	//	*Message_OneofDouble
-	//	*Message_OneofString
-	//	*Message_OneofBytes
-	//	*Message_OneofChildEnum
-	//	*Message_OneofChildMessage
-	//	*Message_OneofSiblingEnum
-	//	*Message_OneofSiblingMessage
-	//	*Message_OneofString1
-	//	*Message_OneofString2
-	//	*Message_OneofString3
-	OneofUnion           isMessage_OneofUnion `protobuf_oneof:"oneof_union"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
-}
-
-func (m *Message) Reset()         { *m = Message{} }
-func (m *Message) String() string { return proto.CompactTextString(m) }
-func (*Message) ProtoMessage()    {}
-func (*Message) Descriptor() ([]byte, []int) {
-	return fileDescriptor_95cd555ff3d1bc43, []int{1}
-}
-
-func (m *Message) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message.Unmarshal(m, b)
-}
-func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message.Marshal(b, m, deterministic)
-}
-func (m *Message) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message.Merge(m, src)
-}
-func (m *Message) XXX_Size() int {
-	return xxx_messageInfo_Message.Size(m)
-}
-func (m *Message) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message proto.InternalMessageInfo
-
-func (m *Message) GetOptionalBool() bool {
-	if m != nil {
-		return m.OptionalBool
-	}
-	return false
-}
-
-func (m *Message) GetOptionalInt32() int32 {
-	if m != nil {
-		return m.OptionalInt32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSint32() int32 {
-	if m != nil {
-		return m.OptionalSint32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalUint32() uint32 {
-	if m != nil {
-		return m.OptionalUint32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalInt64() int64 {
-	if m != nil {
-		return m.OptionalInt64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSint64() int64 {
-	if m != nil {
-		return m.OptionalSint64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalUint64() uint64 {
-	if m != nil {
-		return m.OptionalUint64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFixed32() uint32 {
-	if m != nil {
-		return m.OptionalFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSfixed32() int32 {
-	if m != nil {
-		return m.OptionalSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFloat() float32 {
-	if m != nil {
-		return m.OptionalFloat
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalFixed64() uint64 {
-	if m != nil {
-		return m.OptionalFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalSfixed64() int64 {
-	if m != nil {
-		return m.OptionalSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalDouble() float64 {
-	if m != nil {
-		return m.OptionalDouble
-	}
-	return 0
-}
-
-func (m *Message) GetOptionalString() string {
-	if m != nil {
-		return m.OptionalString
-	}
-	return ""
-}
-
-func (m *Message) GetOptionalBytes() []byte {
-	if m != nil {
-		return m.OptionalBytes
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalChildEnum() Message_ChildEnum {
-	if m != nil {
-		return m.OptionalChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetOptionalChildMessage() *Message_ChildMessage {
-	if m != nil {
-		return m.OptionalChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOptionalSiblingEnum() SiblingEnum {
-	if m != nil {
-		return m.OptionalSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetOptionalSiblingMessage() *SiblingMessage {
-	if m != nil {
-		return m.OptionalSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedBool() []bool {
-	if m != nil {
-		return m.RepeatedBool
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedInt32() []int32 {
-	if m != nil {
-		return m.RepeatedInt32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSint32() []int32 {
-	if m != nil {
-		return m.RepeatedSint32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedUint32() []uint32 {
-	if m != nil {
-		return m.RepeatedUint32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedInt64() []int64 {
-	if m != nil {
-		return m.RepeatedInt64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSint64() []int64 {
-	if m != nil {
-		return m.RepeatedSint64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedUint64() []uint64 {
-	if m != nil {
-		return m.RepeatedUint64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFixed32() []uint32 {
-	if m != nil {
-		return m.RepeatedFixed32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSfixed32() []int32 {
-	if m != nil {
-		return m.RepeatedSfixed32
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFloat() []float32 {
-	if m != nil {
-		return m.RepeatedFloat
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedFixed64() []uint64 {
-	if m != nil {
-		return m.RepeatedFixed64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSfixed64() []int64 {
-	if m != nil {
-		return m.RepeatedSfixed64
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedDouble() []float64 {
-	if m != nil {
-		return m.RepeatedDouble
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedString() []string {
-	if m != nil {
-		return m.RepeatedString
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedBytes() [][]byte {
-	if m != nil {
-		return m.RepeatedBytes
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedChildEnum() []Message_ChildEnum {
-	if m != nil {
-		return m.RepeatedChildEnum
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedChildMessage() []*Message_ChildMessage {
-	if m != nil {
-		return m.RepeatedChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSiblingEnum() []SiblingEnum {
-	if m != nil {
-		return m.RepeatedSiblingEnum
-	}
-	return nil
-}
-
-func (m *Message) GetRepeatedSiblingMessage() []*SiblingMessage {
-	if m != nil {
-		return m.RepeatedSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBool() map[bool]bool {
-	if m != nil {
-		return m.MapBoolBool
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolInt32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolUint32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolInt64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolInt64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSint64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolUint64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolUint64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed32() map[bool]uint32 {
-	if m != nil {
-		return m.MapBoolFixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed32() map[bool]int32 {
-	if m != nil {
-		return m.MapBoolSfixed32
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFloat() map[bool]float32 {
-	if m != nil {
-		return m.MapBoolFloat
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolFixed64() map[bool]uint64 {
-	if m != nil {
-		return m.MapBoolFixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSfixed64() map[bool]int64 {
-	if m != nil {
-		return m.MapBoolSfixed64
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolDouble() map[bool]float64 {
-	if m != nil {
-		return m.MapBoolDouble
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolString() map[bool]string {
-	if m != nil {
-		return m.MapBoolString
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolBytes() map[bool][]byte {
-	if m != nil {
-		return m.MapBoolBytes
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildEnum() map[bool]Message_ChildEnum {
-	if m != nil {
-		return m.MapBoolChildEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolChildMessage() map[bool]*Message_ChildMessage {
-	if m != nil {
-		return m.MapBoolChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingEnum() map[bool]SiblingEnum {
-	if m != nil {
-		return m.MapBoolSiblingEnum
-	}
-	return nil
-}
-
-func (m *Message) GetMapBoolSiblingMessage() map[bool]*SiblingMessage {
-	if m != nil {
-		return m.MapBoolSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapInt32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint32Bool() map[int32]bool {
-	if m != nil {
-		return m.MapSint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapUint32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapInt64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapInt64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapSint64Bool() map[int64]bool {
-	if m != nil {
-		return m.MapSint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapUint64Bool() map[uint64]bool {
-	if m != nil {
-		return m.MapUint64Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapFixed32Bool() map[uint32]bool {
-	if m != nil {
-		return m.MapFixed32Bool
-	}
-	return nil
-}
-
-func (m *Message) GetMapStringBool() map[string]bool {
-	if m != nil {
-		return m.MapStringBool
-	}
-	return nil
-}
-
-type isMessage_OneofUnion interface {
-	isMessage_OneofUnion()
-}
-
-type Message_OneofBool struct {
-	OneofBool bool `protobuf:"varint,400,opt,name=oneof_bool,json=oneofBool,proto3,oneof"`
-}
-
-type Message_OneofInt32 struct {
-	OneofInt32 int32 `protobuf:"varint,401,opt,name=oneof_int32,json=oneofInt32,proto3,oneof"`
-}
-
-type Message_OneofSint32 struct {
-	OneofSint32 int32 `protobuf:"zigzag32,402,opt,name=oneof_sint32,json=oneofSint32,proto3,oneof"`
-}
-
-type Message_OneofUint32 struct {
-	OneofUint32 uint32 `protobuf:"varint,403,opt,name=oneof_uint32,json=oneofUint32,proto3,oneof"`
-}
-
-type Message_OneofInt64 struct {
-	OneofInt64 int64 `protobuf:"varint,404,opt,name=oneof_int64,json=oneofInt64,proto3,oneof"`
-}
-
-type Message_OneofSint64 struct {
-	OneofSint64 int64 `protobuf:"zigzag64,405,opt,name=oneof_sint64,json=oneofSint64,proto3,oneof"`
-}
-
-type Message_OneofUint64 struct {
-	OneofUint64 uint64 `protobuf:"varint,406,opt,name=oneof_uint64,json=oneofUint64,proto3,oneof"`
-}
-
-type Message_OneofFixed32 struct {
-	OneofFixed32 uint32 `protobuf:"fixed32,407,opt,name=oneof_fixed32,json=oneofFixed32,proto3,oneof"`
-}
-
-type Message_OneofSfixed32 struct {
-	OneofSfixed32 int32 `protobuf:"fixed32,408,opt,name=oneof_sfixed32,json=oneofSfixed32,proto3,oneof"`
-}
-
-type Message_OneofFloat struct {
-	OneofFloat float32 `protobuf:"fixed32,409,opt,name=oneof_float,json=oneofFloat,proto3,oneof"`
-}
-
-type Message_OneofFixed64 struct {
-	OneofFixed64 uint64 `protobuf:"fixed64,410,opt,name=oneof_fixed64,json=oneofFixed64,proto3,oneof"`
-}
-
-type Message_OneofSfixed64 struct {
-	OneofSfixed64 int64 `protobuf:"fixed64,411,opt,name=oneof_sfixed64,json=oneofSfixed64,proto3,oneof"`
-}
-
-type Message_OneofDouble struct {
-	OneofDouble float64 `protobuf:"fixed64,412,opt,name=oneof_double,json=oneofDouble,proto3,oneof"`
-}
-
-type Message_OneofString struct {
-	OneofString string `protobuf:"bytes,413,opt,name=oneof_string,json=oneofString,proto3,oneof"`
-}
-
-type Message_OneofBytes struct {
-	OneofBytes []byte `protobuf:"bytes,414,opt,name=oneof_bytes,json=oneofBytes,proto3,oneof"`
-}
-
-type Message_OneofChildEnum struct {
-	OneofChildEnum Message_ChildEnum `protobuf:"varint,415,opt,name=oneof_child_enum,json=oneofChildEnum,proto3,enum=google.golang.org.proto3_20190205.Message_ChildEnum,oneof"`
-}
-
-type Message_OneofChildMessage struct {
-	OneofChildMessage *Message_ChildMessage `protobuf:"bytes,416,opt,name=oneof_child_message,json=oneofChildMessage,proto3,oneof"`
-}
-
-type Message_OneofSiblingEnum struct {
-	OneofSiblingEnum SiblingEnum `protobuf:"varint,417,opt,name=oneof_sibling_enum,json=oneofSiblingEnum,proto3,enum=google.golang.org.proto3_20190205.SiblingEnum,oneof"`
-}
-
-type Message_OneofSiblingMessage struct {
-	OneofSiblingMessage *SiblingMessage `protobuf:"bytes,418,opt,name=oneof_sibling_message,json=oneofSiblingMessage,proto3,oneof"`
-}
-
-type Message_OneofString1 struct {
-	OneofString1 string `protobuf:"bytes,419,opt,name=oneof_string1,json=oneofString1,proto3,oneof"`
-}
-
-type Message_OneofString2 struct {
-	OneofString2 string `protobuf:"bytes,420,opt,name=oneof_string2,json=oneofString2,proto3,oneof"`
-}
-
-type Message_OneofString3 struct {
-	OneofString3 string `protobuf:"bytes,421,opt,name=oneof_string3,json=oneofString3,proto3,oneof"`
-}
-
-func (*Message_OneofBool) isMessage_OneofUnion() {}
-
-func (*Message_OneofInt32) isMessage_OneofUnion() {}
-
-func (*Message_OneofSint32) isMessage_OneofUnion() {}
-
-func (*Message_OneofUint32) isMessage_OneofUnion() {}
-
-func (*Message_OneofInt64) isMessage_OneofUnion() {}
-
-func (*Message_OneofSint64) isMessage_OneofUnion() {}
-
-func (*Message_OneofUint64) isMessage_OneofUnion() {}
-
-func (*Message_OneofFixed32) isMessage_OneofUnion() {}
-
-func (*Message_OneofSfixed32) isMessage_OneofUnion() {}
-
-func (*Message_OneofFloat) isMessage_OneofUnion() {}
-
-func (*Message_OneofFixed64) isMessage_OneofUnion() {}
-
-func (*Message_OneofSfixed64) isMessage_OneofUnion() {}
-
-func (*Message_OneofDouble) isMessage_OneofUnion() {}
-
-func (*Message_OneofString) isMessage_OneofUnion() {}
-
-func (*Message_OneofBytes) isMessage_OneofUnion() {}
-
-func (*Message_OneofChildEnum) isMessage_OneofUnion() {}
-
-func (*Message_OneofChildMessage) isMessage_OneofUnion() {}
-
-func (*Message_OneofSiblingEnum) isMessage_OneofUnion() {}
-
-func (*Message_OneofSiblingMessage) isMessage_OneofUnion() {}
-
-func (*Message_OneofString1) isMessage_OneofUnion() {}
-
-func (*Message_OneofString2) isMessage_OneofUnion() {}
-
-func (*Message_OneofString3) isMessage_OneofUnion() {}
-
-func (m *Message) GetOneofUnion() isMessage_OneofUnion {
-	if m != nil {
-		return m.OneofUnion
-	}
-	return nil
-}
-
-func (m *Message) GetOneofBool() bool {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBool); ok {
-		return x.OneofBool
-	}
-	return false
-}
-
-func (m *Message) GetOneofInt32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt32); ok {
-		return x.OneofInt32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint32); ok {
-		return x.OneofSint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint32); ok {
-		return x.OneofUint32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofInt64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofInt64); ok {
-		return x.OneofInt64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSint64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSint64); ok {
-		return x.OneofSint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofUint64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofUint64); ok {
-		return x.OneofUint64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed32() uint32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed32); ok {
-		return x.OneofFixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed32() int32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed32); ok {
-		return x.OneofSfixed32
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFloat() float32 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFloat); ok {
-		return x.OneofFloat
-	}
-	return 0
-}
-
-func (m *Message) GetOneofFixed64() uint64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofFixed64); ok {
-		return x.OneofFixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofSfixed64() int64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSfixed64); ok {
-		return x.OneofSfixed64
-	}
-	return 0
-}
-
-func (m *Message) GetOneofDouble() float64 {
-	if x, ok := m.GetOneofUnion().(*Message_OneofDouble); ok {
-		return x.OneofDouble
-	}
-	return 0
-}
-
-func (m *Message) GetOneofString() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString); ok {
-		return x.OneofString
-	}
-	return ""
-}
-
-func (m *Message) GetOneofBytes() []byte {
-	if x, ok := m.GetOneofUnion().(*Message_OneofBytes); ok {
-		return x.OneofBytes
-	}
-	return nil
-}
-
-func (m *Message) GetOneofChildEnum() Message_ChildEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildEnum); ok {
-		return x.OneofChildEnum
-	}
-	return Message_ALPHA
-}
-
-func (m *Message) GetOneofChildMessage() *Message_ChildMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofChildMessage); ok {
-		return x.OneofChildMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofSiblingEnum() SiblingEnum {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingEnum); ok {
-		return x.OneofSiblingEnum
-	}
-	return SiblingEnum_ALPHA
-}
-
-func (m *Message) GetOneofSiblingMessage() *SiblingMessage {
-	if x, ok := m.GetOneofUnion().(*Message_OneofSiblingMessage); ok {
-		return x.OneofSiblingMessage
-	}
-	return nil
-}
-
-func (m *Message) GetOneofString1() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString1); ok {
-		return x.OneofString1
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString2() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString2); ok {
-		return x.OneofString2
-	}
-	return ""
-}
-
-func (m *Message) GetOneofString3() string {
-	if x, ok := m.GetOneofUnion().(*Message_OneofString3); ok {
-		return x.OneofString3
-	}
-	return ""
-}
-
-// XXX_OneofWrappers is for the internal use of the proto package.
-func (*Message) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*Message_OneofBool)(nil),
-		(*Message_OneofInt32)(nil),
-		(*Message_OneofSint32)(nil),
-		(*Message_OneofUint32)(nil),
-		(*Message_OneofInt64)(nil),
-		(*Message_OneofSint64)(nil),
-		(*Message_OneofUint64)(nil),
-		(*Message_OneofFixed32)(nil),
-		(*Message_OneofSfixed32)(nil),
-		(*Message_OneofFloat)(nil),
-		(*Message_OneofFixed64)(nil),
-		(*Message_OneofSfixed64)(nil),
-		(*Message_OneofDouble)(nil),
-		(*Message_OneofString)(nil),
-		(*Message_OneofBytes)(nil),
-		(*Message_OneofChildEnum)(nil),
-		(*Message_OneofChildMessage)(nil),
-		(*Message_OneofSiblingEnum)(nil),
-		(*Message_OneofSiblingMessage)(nil),
-		(*Message_OneofString1)(nil),
-		(*Message_OneofString2)(nil),
-		(*Message_OneofString3)(nil),
-	}
-}
-
-type Message_ChildMessage struct {
-	F1                   string   `protobuf:"bytes,1,opt,name=f1,proto3" json:"f1,omitempty"`
-	F2                   []string `protobuf:"bytes,2,rep,name=f2,proto3" json:"f2,omitempty"`
-	F3                   *Message `protobuf:"bytes,3,opt,name=f3,proto3" json:"f3,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *Message_ChildMessage) Reset()         { *m = Message_ChildMessage{} }
-func (m *Message_ChildMessage) String() string { return proto.CompactTextString(m) }
-func (*Message_ChildMessage) ProtoMessage()    {}
-func (*Message_ChildMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_95cd555ff3d1bc43, []int{1, 0}
-}
-
-func (m *Message_ChildMessage) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Message_ChildMessage.Unmarshal(m, b)
-}
-func (m *Message_ChildMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Message_ChildMessage.Marshal(b, m, deterministic)
-}
-func (m *Message_ChildMessage) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Message_ChildMessage.Merge(m, src)
-}
-func (m *Message_ChildMessage) XXX_Size() int {
-	return xxx_messageInfo_Message_ChildMessage.Size(m)
-}
-func (m *Message_ChildMessage) XXX_DiscardUnknown() {
-	xxx_messageInfo_Message_ChildMessage.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Message_ChildMessage proto.InternalMessageInfo
-
-func (m *Message_ChildMessage) GetF1() string {
-	if m != nil {
-		return m.F1
-	}
-	return ""
-}
-
-func (m *Message_ChildMessage) GetF2() []string {
-	if m != nil {
-		return m.F2
-	}
-	return nil
-}
-
-func (m *Message_ChildMessage) GetF3() *Message {
-	if m != nil {
-		return m.F3
-	}
-	return nil
-}
-
-func init() {
-	proto.RegisterEnum("google.golang.org.proto3_20190205.SiblingEnum", SiblingEnum_name, SiblingEnum_value)
-	proto.RegisterEnum("google.golang.org.proto3_20190205.Message_ChildEnum", Message_ChildEnum_name, Message_ChildEnum_value)
-	proto.RegisterType((*SiblingMessage)(nil), "google.golang.org.proto3_20190205.SiblingMessage")
-	proto.RegisterType((*Message)(nil), "google.golang.org.proto3_20190205.Message")
-	proto.RegisterMapType((map[bool]bool)(nil), "google.golang.org.proto3_20190205.Message.MapBoolBoolEntry")
-	proto.RegisterMapType((map[bool][]byte)(nil), "google.golang.org.proto3_20190205.Message.MapBoolBytesEntry")
-	proto.RegisterMapType((map[bool]Message_ChildEnum)(nil), "google.golang.org.proto3_20190205.Message.MapBoolChildEnumEntry")
-	proto.RegisterMapType((map[bool]*Message_ChildMessage)(nil), "google.golang.org.proto3_20190205.Message.MapBoolChildMessageEntry")
-	proto.RegisterMapType((map[bool]float64)(nil), "google.golang.org.proto3_20190205.Message.MapBoolDoubleEntry")
-	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto3_20190205.Message.MapBoolFixed32Entry")
-	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto3_20190205.Message.MapBoolFixed64Entry")
-	proto.RegisterMapType((map[bool]float32)(nil), "google.golang.org.proto3_20190205.Message.MapBoolFloatEntry")
-	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto3_20190205.Message.MapBoolInt32Entry")
-	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto3_20190205.Message.MapBoolInt64Entry")
-	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto3_20190205.Message.MapBoolSfixed32Entry")
-	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto3_20190205.Message.MapBoolSfixed64Entry")
-	proto.RegisterMapType((map[bool]SiblingEnum)(nil), "google.golang.org.proto3_20190205.Message.MapBoolSiblingEnumEntry")
-	proto.RegisterMapType((map[bool]*SiblingMessage)(nil), "google.golang.org.proto3_20190205.Message.MapBoolSiblingMessageEntry")
-	proto.RegisterMapType((map[bool]int32)(nil), "google.golang.org.proto3_20190205.Message.MapBoolSint32Entry")
-	proto.RegisterMapType((map[bool]int64)(nil), "google.golang.org.proto3_20190205.Message.MapBoolSint64Entry")
-	proto.RegisterMapType((map[bool]string)(nil), "google.golang.org.proto3_20190205.Message.MapBoolStringEntry")
-	proto.RegisterMapType((map[bool]uint32)(nil), "google.golang.org.proto3_20190205.Message.MapBoolUint32Entry")
-	proto.RegisterMapType((map[bool]uint64)(nil), "google.golang.org.proto3_20190205.Message.MapBoolUint64Entry")
-	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto3_20190205.Message.MapFixed32BoolEntry")
-	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto3_20190205.Message.MapInt32BoolEntry")
-	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto3_20190205.Message.MapInt64BoolEntry")
-	proto.RegisterMapType((map[int32]bool)(nil), "google.golang.org.proto3_20190205.Message.MapSint32BoolEntry")
-	proto.RegisterMapType((map[int64]bool)(nil), "google.golang.org.proto3_20190205.Message.MapSint64BoolEntry")
-	proto.RegisterMapType((map[string]bool)(nil), "google.golang.org.proto3_20190205.Message.MapStringBoolEntry")
-	proto.RegisterMapType((map[uint32]bool)(nil), "google.golang.org.proto3_20190205.Message.MapUint32BoolEntry")
-	proto.RegisterMapType((map[uint64]bool)(nil), "google.golang.org.proto3_20190205.Message.MapUint64BoolEntry")
-	proto.RegisterType((*Message_ChildMessage)(nil), "google.golang.org.proto3_20190205.Message.ChildMessage")
-}
-
-func init() {
-	proto.RegisterFile("proto3_20190205_c823c79e/test.proto", fileDescriptor_95cd555ff3d1bc43)
-}
-
-var fileDescriptor_95cd555ff3d1bc43 = []byte{
-	// 1947 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x9a, 0x59, 0x73, 0xdb, 0xc8,
-	0x11, 0xc7, 0x09, 0x52, 0x87, 0x35, 0xe2, 0x09, 0x5a, 0xca, 0x94, 0x9e, 0x10, 0xd9, 0x71, 0x10,
-	0x27, 0x45, 0x59, 0x24, 0x02, 0x1f, 0x49, 0x6c, 0x4b, 0xb6, 0x1c, 0x3a, 0x65, 0x27, 0x2e, 0xb8,
-	0x94, 0x87, 0xbc, 0x28, 0x94, 0x04, 0xd2, 0xb4, 0x41, 0x42, 0x11, 0x49, 0x57, 0x54, 0x79, 0xf0,
-	0x57, 0xc8, 0x7d, 0xef, 0xbd, 0xfb, 0xb6, 0xf7, 0x7d, 0xdf, 0xde, 0xf2, 0xde, 0xf7, 0xf9, 0x69,
-	0xb6, 0x06, 0x8d, 0xb9, 0x00, 0xd0, 0x24, 0xc1, 0xda, 0x07, 0x57, 0x49, 0xcd, 0xff, 0xf4, 0x8f,
-	0xdd, 0xe8, 0xe9, 0x9e, 0x81, 0x85, 0x0e, 0xec, 0xec, 0xba, 0x5d, 0xb7, 0xb2, 0x51, 0x3e, 0xb2,
-	0x7c, 0xfc, 0x48, 0xf9, 0xc8, 0x4f, 0x37, 0xb6, 0x8e, 0x95, 0x2b, 0x5b, 0x47, 0x8f, 0xdb, 0x4b,
-	0x5d, 0xbb, 0xd3, 0x2d, 0x79, 0x9f, 0xaa, 0xdf, 0x6f, 0xb8, 0x6e, 0xc3, 0xb1, 0x4b, 0x0d, 0xd7,
-	0xa9, 0xb5, 0x1b, 0x25, 0x77, 0xb7, 0x51, 0x0a, 0x2c, 0x5b, 0x74, 0x50, 0xf6, 0x72, 0x73, 0xd3,
-	0x69, 0xb6, 0x1b, 0x17, 0xed, 0x4e, 0xa7, 0xd6, 0xb0, 0xd5, 0x2c, 0x4a, 0xd6, 0x97, 0xb1, 0xa2,
-	0x29, 0xfa, 0x8c, 0x95, 0xac, 0x2f, 0x7b, 0xbf, 0x97, 0x71, 0x52, 0x4b, 0x79, 0xbf, 0x97, 0xd5,
-	0x13, 0x28, 0x59, 0xaf, 0xe0, 0x94, 0xa6, 0xe8, 0xb3, 0xe5, 0xc3, 0xa5, 0x81, 0x84, 0x92, 0xef,
-	0xd7, 0x4a, 0xd6, 0x2b, 0x8b, 0x37, 0x4f, 0xa3, 0x69, 0xca, 0x39, 0x80, 0x32, 0xee, 0x4e, 0xb7,
-	0xe9, 0xb6, 0x6b, 0xce, 0xc6, 0xa6, 0xeb, 0x3a, 0x78, 0x5b, 0x53, 0xf4, 0x7d, 0x56, 0x9a, 0x1a,
-	0x57, 0x5d, 0xd7, 0x51, 0x7f, 0x80, 0xb2, 0x4c, 0xd4, 0x6c, 0x77, 0x2b, 0x65, 0x6c, 0x6b, 0x8a,
-	0x3e, 0x69, 0xb1, 0xa5, 0xe7, 0x89, 0x51, 0xfd, 0x21, 0xca, 0x31, 0x59, 0x07, 0x74, 0x75, 0x4d,
-	0xd1, 0x0b, 0x16, 0x5b, 0x7d, 0xb9, 0x19, 0x12, 0xf6, 0x40, 0xd8, 0xd0, 0x14, 0x3d, 0xc3, 0x85,
-	0xeb, 0x20, 0x0c, 0x80, 0x4d, 0x03, 0x5f, 0xd1, 0x14, 0x3d, 0x25, 0x81, 0x4d, 0x23, 0x04, 0x36,
-	0x0d, 0xdc, 0xd4, 0x14, 0x5d, 0x95, 0xc1, 0x01, 0x61, 0x0f, 0x84, 0x57, 0x35, 0x45, 0x9f, 0x90,
-	0xc1, 0xa6, 0xa1, 0xfe, 0x08, 0xe5, 0x99, 0xb0, 0xde, 0xfc, 0xa3, 0xbd, 0x5d, 0x29, 0xe3, 0x6b,
-	0x9a, 0xa2, 0x4f, 0x5b, 0xcc, 0xc1, 0x39, 0x30, 0xab, 0x3f, 0x46, 0x05, 0x0e, 0xa7, 0x5a, 0x47,
-	0x53, 0xf4, 0x9c, 0xc5, 0x7c, 0x5c, 0xf6, 0xed, 0x52, 0x40, 0x75, 0xc7, 0xad, 0x75, 0x71, 0x4b,
-	0x53, 0xf4, 0x24, 0x0f, 0xe8, 0x1c, 0x31, 0x86, 0xf1, 0xa6, 0x81, 0xdb, 0x9a, 0xa2, 0x4f, 0x05,
-	0xf0, 0xa6, 0x11, 0x81, 0x37, 0x0d, 0xec, 0x6a, 0x8a, 0x9e, 0x0f, 0xe2, 0x03, 0xf1, 0x6f, 0xbb,
-	0xbd, 0x4d, 0xc7, 0xc6, 0x3b, 0x9a, 0xa2, 0x2b, 0x3c, 0xfe, 0xb3, 0x9e, 0x55, 0xce, 0x68, 0x77,
-	0xb7, 0xd9, 0x6e, 0xe0, 0x3f, 0x78, 0xb5, 0xc8, 0x33, 0xea, 0x59, 0xa5, 0x80, 0x36, 0xf7, 0xba,
-	0x76, 0x07, 0xef, 0x6a, 0x8a, 0x9e, 0xe6, 0x01, 0xad, 0x12, 0xa3, 0xba, 0x8d, 0x8a, 0x4c, 0xb6,
-	0x75, 0xa5, 0xe9, 0x6c, 0x6f, 0xd8, 0xed, 0x5e, 0x0b, 0x77, 0x34, 0x45, 0xcf, 0x96, 0x8d, 0xe1,
-	0xeb, 0xb7, 0x74, 0x86, 0x2c, 0x5e, 0x6b, 0xf7, 0x5a, 0x16, 0x0b, 0x9b, 0x99, 0xd4, 0x16, 0x9a,
-	0x0f, 0x50, 0x5a, 0xb0, 0x0c, 0x77, 0xbd, 0x8d, 0x72, 0x74, 0x54, 0x10, 0xdd, 0x35, 0xfb, 0x25,
-	0x16, 0xdd, 0x3b, 0x9b, 0x68, 0x4e, 0x28, 0x3b, 0x6f, 0xfb, 0x42, 0x58, 0x3d, 0x2f, 0xac, 0xd2,
-	0x10, 0x34, 0x7f, 0xd7, 0x7b, 0x01, 0x15, 0x79, 0xb1, 0x32, 0xa3, 0x7a, 0x0d, 0xe1, 0x10, 0x83,
-	0x06, 0x75, 0xdd, 0x0b, 0x6a, 0x79, 0x78, 0x0c, 0x0d, 0x67, 0x3e, 0x40, 0xa2, 0x01, 0x1d, 0x44,
-	0x99, 0x5d, 0x7b, 0xc7, 0xae, 0x75, 0xed, 0x6d, 0x68, 0x06, 0xb7, 0x14, 0x2d, 0x45, 0xba, 0x01,
-	0xb5, 0x7a, 0xdd, 0xe0, 0x10, 0xca, 0x32, 0x15, 0x6c, 0xde, 0xb7, 0x89, 0x6c, 0xd2, 0x62, 0x8b,
-	0xa1, 0x1d, 0xe8, 0x28, 0xc7, 0x74, 0x7e, 0x3b, 0x78, 0x87, 0x08, 0x0b, 0x16, 0x5b, 0xef, 0xf7,
-	0x03, 0x51, 0xe9, 0xf7, 0x83, 0x77, 0x89, 0x32, 0xc3, 0x95, 0x7e, 0x43, 0x08, 0xb0, 0x4d, 0x03,
-	0xbf, 0x47, 0x84, 0x29, 0x89, 0x6d, 0x1a, 0x21, 0xb6, 0x69, 0xe0, 0xf7, 0x89, 0x50, 0x95, 0xd9,
-	0x01, 0xa5, 0xdf, 0x12, 0x3e, 0x20, 0xca, 0x09, 0x99, 0x6d, 0x1a, 0xea, 0x61, 0x94, 0x67, 0x4a,
-	0xba, 0xcf, 0x3f, 0x24, 0xd2, 0x69, 0x8b, 0xb9, 0xa0, 0x4d, 0xe1, 0x27, 0xa8, 0xc0, 0xf9, 0x54,
-	0xfc, 0x11, 0x11, 0xe7, 0x2c, 0xe6, 0x85, 0x75, 0x05, 0x31, 0x2a, 0xe8, 0x0a, 0x1f, 0x13, 0x69,
-	0x92, 0x47, 0x05, 0x6d, 0x21, 0xf4, 0x0d, 0x4c, 0x03, 0x7f, 0x42, 0x94, 0x53, 0x81, 0x6f, 0x60,
-	0x1a, 0x11, 0xdf, 0xc0, 0x34, 0xf0, 0xa7, 0x44, 0x9c, 0x0f, 0x7e, 0x83, 0x40, 0x16, 0xfc, 0xc6,
-	0xf0, 0x19, 0xd1, 0x2a, 0x3c, 0x0b, 0x7e, 0x67, 0x90, 0x32, 0x0b, 0x9d, 0xe1, 0x73, 0xc5, 0x1b,
-	0x4b, 0x3c, 0xb3, 0xd0, 0x1a, 0xc4, 0xa8, 0xa0, 0x35, 0x7c, 0x41, 0x84, 0x69, 0x1e, 0x15, 0xf4,
-	0x06, 0x1b, 0x15, 0x99, 0x4e, 0xe8, 0x0d, 0x5f, 0x12, 0x71, 0xec, 0xe6, 0x40, 0x3d, 0xf2, 0xe6,
-	0xd0, 0x46, 0xf3, 0x01, 0x0c, 0xdd, 0x47, 0x5f, 0x11, 0xd2, 0x38, 0xdd, 0x41, 0x82, 0xd1, 0xcd,
-	0xb4, 0x85, 0xe6, 0x84, 0x12, 0x14, 0xba, 0xc3, 0xd7, 0x10, 0xd8, 0xc8, 0xed, 0x81, 0x17, 0x2e,
-	0x6f, 0x0f, 0x0e, 0xc2, 0x21, 0x08, 0x0d, 0xeb, 0x1b, 0x08, 0x2b, 0x4e, 0x7f, 0x08, 0xa0, 0x68,
-	0x48, 0xbf, 0x47, 0x99, 0x56, 0x6d, 0xc7, 0x6b, 0x0d, 0xd0, 0x1f, 0x1e, 0x4c, 0x7a, 0x88, 0x9f,
-	0x8d, 0x90, 0xb9, 0x8b, 0xb5, 0x1d, 0xd2, 0x45, 0xc8, 0xbf, 0xb5, 0x76, 0x77, 0x77, 0xcf, 0x9a,
-	0x6d, 0x71, 0x8b, 0xba, 0x85, 0xb2, 0x8c, 0x00, 0x8d, 0xe0, 0x21, 0x40, 0xfc, 0x7c, 0x74, 0x84,
-	0xd7, 0x85, 0x80, 0x91, 0x6e, 0x09, 0x26, 0xb5, 0x8e, 0x72, 0x0c, 0xe2, 0x37, 0xa6, 0x87, 0x81,
-	0xf2, 0x8b, 0xd1, 0x29, 0xd0, 0xc2, 0x00, 0x93, 0x69, 0x89, 0x36, 0x89, 0xe3, 0xb7, 0xb5, 0x47,
-	0x62, 0x73, 0xd6, 0x23, 0x38, 0x7e, 0x53, 0x0c, 0x24, 0xcd, 0x34, 0xf0, 0xa3, 0xe3, 0x24, 0xcd,
-	0x34, 0x42, 0x49, 0x33, 0x8d, 0x50, 0xd2, 0x4c, 0x03, 0x3f, 0x36, 0x56, 0xd2, 0x28, 0x46, 0x4c,
-	0x5a, 0x80, 0xe3, 0xf7, 0xe3, 0xc7, 0xc7, 0x4a, 0x5a, 0x90, 0xe3, 0x77, 0xf3, 0x26, 0xca, 0x33,
-	0x0e, 0x6d, 0xd0, 0x4f, 0x00, 0xe8, 0xe4, 0xe8, 0x20, 0xbf, 0xef, 0x03, 0x29, 0xdb, 0x92, 0x8c,
-	0xaa, 0x83, 0x0a, 0x3c, 0x75, 0x94, 0xf5, 0x24, 0xb0, 0x4e, 0xc5, 0x48, 0x5e, 0x5d, 0x84, 0xe5,
-	0x5a, 0xb2, 0x55, 0xaa, 0x06, 0x18, 0x26, 0x4f, 0xc5, 0xae, 0x06, 0x6f, 0xec, 0xc8, 0xd5, 0x00,
-	0x93, 0x28, 0x94, 0x3d, 0xd3, 0xc0, 0x4f, 0x8f, 0x97, 0x3d, 0xfa, 0x9c, 0xa4, 0xec, 0x99, 0x46,
-	0x44, 0xf6, 0x4c, 0x03, 0x3f, 0x33, 0x66, 0xf6, 0x28, 0x4c, 0xce, 0x5e, 0xa0, 0xfc, 0xfc, 0x41,
-	0xf8, 0x6c, 0xec, 0xf2, 0x83, 0x91, 0x29, 0x97, 0x9f, 0x3f, 0x46, 0xa5, 0xed, 0x04, 0x63, 0xf4,
-	0xb9, 0xf8, 0xdb, 0xc9, 0x73, 0x10, 0xd8, 0x4e, 0x30, 0x84, 0xc5, 0x6a, 0x80, 0x21, 0xfc, 0x7c,
-	0xec, 0x6a, 0xf0, 0xc6, 0xb5, 0x5c, 0x0d, 0x30, 0xc1, 0x77, 0x50, 0x91, 0x41, 0x84, 0x09, 0xfe,
-	0x02, 0x90, 0x4e, 0x8f, 0x4e, 0x62, 0x53, 0x1b, 0x68, 0xf9, 0x56, 0xc0, 0xac, 0xee, 0xa1, 0xf9,
-	0x00, 0x91, 0x4e, 0xbd, 0x17, 0x01, 0x7a, 0x26, 0x26, 0xd4, 0xb7, 0x01, 0xb7, 0xd8, 0x0a, 0x7f,
-	0xa2, 0x5e, 0x47, 0x73, 0x42, 0x23, 0x14, 0xe6, 0xfa, 0x4b, 0x40, 0x5e, 0x8d, 0xd3, 0x0e, 0xd9,
-	0x44, 0x07, 0xb0, 0xda, 0x0a, 0x7d, 0xa0, 0xde, 0x40, 0x38, 0xc4, 0xa5, 0x41, 0xbf, 0x0c, 0xe8,
-	0xb5, 0xd8, 0x68, 0x29, 0xec, 0xb9, 0x56, 0xd4, 0x67, 0xb4, 0x94, 0xbc, 0x99, 0x03, 0xe3, 0xff,
-	0x95, 0x58, 0xa5, 0xe4, 0x0d, 0x61, 0x3e, 0xff, 0x49, 0x29, 0x31, 0x13, 0xdd, 0x17, 0x1d, 0x81,
-	0xf2, 0x6a, 0xac, 0x7d, 0x01, 0x33, 0x98, 0x63, 0xc8, 0xbe, 0xe0, 0x36, 0xca, 0xe9, 0x09, 0x9c,
-	0xd7, 0x62, 0x71, 0xd6, 0x23, 0x38, 0xdc, 0x26, 0x24, 0xcd, 0x34, 0x00, 0xf3, 0x7a, 0xdc, 0xa4,
-	0x99, 0x46, 0x28, 0x69, 0x60, 0x12, 0x93, 0x46, 0x29, 0x6f, 0xc4, 0x4e, 0x9a, 0x88, 0xa1, 0x49,
-	0x93, 0x39, 0x3d, 0x81, 0xf3, 0x66, 0xec, 0xa4, 0x05, 0x39, 0xdc, 0x46, 0xa7, 0x8b, 0x3f, 0xd1,
-	0x00, 0x74, 0x33, 0xd6, 0x74, 0xf1, 0x47, 0x30, 0x27, 0x91, 0xa7, 0x21, 0x18, 0x59, 0xea, 0xbc,
-	0x6e, 0x09, 0xa4, 0xb7, 0xe2, 0xa5, 0xce, 0xf3, 0x10, 0x48, 0x1d, 0xb3, 0xa9, 0x1a, 0x42, 0x6e,
-	0xdb, 0x76, 0xeb, 0x80, 0xf8, 0x73, 0x4a, 0x53, 0xf4, 0x7d, 0xd5, 0x84, 0x35, 0xe3, 0x19, 0x3d,
-	0xc5, 0x22, 0x9a, 0x05, 0x05, 0x9c, 0x14, 0xff, 0x42, 0x24, 0x93, 0xd5, 0x84, 0x05, 0xeb, 0xe0,
-	0xe4, 0x7a, 0x10, 0xa5, 0x41, 0xe3, 0x1f, 0x5b, 0xff, 0x4a, 0x44, 0x85, 0x6a, 0xc2, 0x82, 0xa5,
-	0xfe, 0xb9, 0x93, 0xa9, 0xfc, 0x43, 0xe7, 0xdf, 0x88, 0x2a, 0xc3, 0x54, 0xfe, 0xa9, 0x51, 0xe4,
-	0x99, 0x06, 0xfe, 0x3b, 0x11, 0xa5, 0x44, 0x9e, 0x69, 0xc8, 0x3c, 0xd3, 0xc0, 0xff, 0x20, 0x22,
-	0x55, 0xe2, 0x89, 0x2a, 0xff, 0xbc, 0xf6, 0x4f, 0xa2, 0x9a, 0x90, 0x78, 0xa6, 0xa1, 0x1e, 0x42,
-	0x19, 0x50, 0xd1, 0x13, 0xd0, 0xbf, 0x88, 0x6c, 0xba, 0x9a, 0xb0, 0x60, 0x35, 0x3d, 0x2d, 0xe9,
-	0x28, 0xeb, 0x33, 0xa9, 0xf0, 0xdf, 0x44, 0x98, 0xab, 0x26, 0x2c, 0x70, 0xc0, 0x4e, 0x3a, 0x2c,
-	0x02, 0x38, 0xe6, 0xfc, 0x87, 0xc8, 0x92, 0x2c, 0x02, 0x38, 0xa8, 0xc8, 0x54, 0xd3, 0xc0, 0xff,
-	0x25, 0xaa, 0x29, 0x99, 0xea, 0x5d, 0x80, 0x25, 0xaa, 0x69, 0xe0, 0xff, 0x11, 0x61, 0x3e, 0x40,
-	0x15, 0xa3, 0xf5, 0x8f, 0x07, 0xff, 0x27, 0x3a, 0x85, 0x45, 0xeb, 0xcf, 0x77, 0x9e, 0x39, 0x18,
-	0xee, 0x77, 0x10, 0xd5, 0x0c, 0xcf, 0x1c, 0x4c, 0x67, 0x16, 0x01, 0x8c, 0xe6, 0x3b, 0x89, 0x28,
-	0xcd, 0x22, 0x80, 0xe1, 0x5a, 0x43, 0x79, 0xd0, 0x08, 0x93, 0xf5, 0xae, 0x54, 0xfc, 0x17, 0x67,
-	0xd5, 0x84, 0x05, 0xa1, 0xf2, 0x69, 0x7a, 0x15, 0x15, 0x45, 0x04, 0x9d, 0x2a, 0x77, 0xa7, 0xc6,
-	0x7a, 0x6b, 0x56, 0x4d, 0x58, 0x05, 0x0e, 0xa2, 0x53, 0x64, 0x03, 0xa9, 0xb4, 0xa4, 0x84, 0xd9,
-	0x79, 0x4f, 0x2a, 0xce, 0x2b, 0xb3, 0x6a, 0xc2, 0xca, 0xfb, 0x85, 0xc8, 0xe7, 0xe4, 0x15, 0x34,
-	0x27, 0x03, 0x68, 0x38, 0xf7, 0xa6, 0x62, 0xbe, 0x2f, 0xab, 0x26, 0xac, 0xa2, 0x88, 0xa1, 0xa1,
-	0xb0, 0xda, 0x82, 0x67, 0xbc, 0x8c, 0xef, 0xa3, 0x0f, 0x39, 0x2d, 0x3c, 0xe4, 0xe5, 0xa0, 0xae,
-	0x8c, 0xef, 0x8f, 0xd2, 0x95, 0x83, 0xba, 0x0a, 0x7e, 0x20, 0x4a, 0x57, 0x59, 0xb8, 0x8a, 0xd2,
-	0x52, 0x4a, 0xbf, 0xc3, 0xff, 0x2b, 0x58, 0x38, 0x89, 0xf2, 0xc1, 0x1b, 0xbb, 0x9a, 0x47, 0xa9,
-	0x6b, 0xf6, 0x9e, 0x07, 0xdc, 0x67, 0x91, 0x1f, 0xd5, 0xfd, 0x68, 0xf2, 0x7a, 0xcd, 0xe9, 0xd9,
-	0x38, 0xe9, 0xd9, 0xe0, 0x97, 0x13, 0xc9, 0x63, 0xca, 0xc2, 0x29, 0x54, 0x08, 0x5d, 0xc7, 0x07,
-	0x39, 0x98, 0x14, 0x1d, 0x9c, 0x46, 0x6a, 0xf8, 0xa6, 0x3d, 0xc8, 0x43, 0x21, 0xda, 0xc3, 0xfa,
-	0xf0, 0x1e, 0x32, 0x7d, 0x83, 0xf0, 0xaf, 0x0e, 0x83, 0x1c, 0xa4, 0xfa, 0x07, 0x31, 0xa4, 0x07,
-	0xb5, 0x7f, 0x10, 0x43, 0x7a, 0x98, 0x10, 0x3d, 0xac, 0xa0, 0x62, 0xc4, 0x65, 0x75, 0x90, 0x8b,
-	0x69, 0xd1, 0xc5, 0x2a, 0xda, 0x1f, 0x75, 0x07, 0x1d, 0xe4, 0x23, 0x17, 0x9d, 0x4b, 0x7e, 0xb9,
-	0x1c, 0xe4, 0x20, 0x79, 0x9b, 0x38, 0x86, 0x4c, 0xc5, 0xd4, 0xed, 0xe2, 0x18, 0xd2, 0x47, 0x3e,
-	0xfa, 0x81, 0x08, 0xb7, 0xbc, 0x41, 0x1e, 0x94, 0x3e, 0x45, 0xc1, 0xef, 0x6f, 0x83, 0x3c, 0xcc,
-	0x44, 0xe7, 0x92, 0x5f, 0xcd, 0x06, 0x39, 0x48, 0x8b, 0x0e, 0xf6, 0xd0, 0x5c, 0xe4, 0x8d, 0x2b,
-	0xc2, 0xc9, 0xaf, 0x44, 0x27, 0x71, 0x5f, 0xcb, 0x0a, 0xe8, 0x1b, 0x08, 0xf7, 0xbb, 0x77, 0x45,
-	0xd0, 0x2f, 0x8a, 0xf4, 0x31, 0x5e, 0xd5, 0x0a, 0x5f, 0xa0, 0x87, 0xbe, 0xd7, 0xe7, 0xfa, 0x15,
-	0xc1, 0x3f, 0x2b, 0x47, 0x3f, 0xea, 0xbb, 0x5b, 0x01, 0xfb, 0x27, 0xb4, 0xd0, 0xff, 0xea, 0x15,
-	0x41, 0xfe, 0xa5, 0x1c, 0x79, 0x8c, 0xb7, 0xb9, 0xa1, 0x82, 0x91, 0x2f, 0x60, 0x22, 0x73, 0x72,
-	0x50, 0x3b, 0x87, 0x9a, 0x0d, 0xdc, 0xad, 0x44, 0x0f, 0x85, 0xe1, 0x3c, 0xac, 0xf7, 0xf7, 0x90,
-	0x19, 0x6e, 0xa4, 0xc8, 0x17, 0x22, 0xd1, 0x41, 0x6a, 0xf8, 0x20, 0xfa, 0x78, 0x50, 0x87, 0x0f,
-	0xa2, 0x8f, 0x87, 0x89, 0x41, 0x1e, 0xa0, 0x8b, 0x05, 0xaf, 0x27, 0xa2, 0x8b, 0xe9, 0x21, 0xc3,
-	0x90, 0xef, 0x1d, 0xa2, 0x87, 0x99, 0x01, 0x1e, 0x16, 0x4b, 0x68, 0x86, 0x1f, 0x02, 0x67, 0xd0,
-	0xe4, 0xca, 0x85, 0x4b, 0xd5, 0x95, 0x7c, 0x82, 0xfc, 0xb8, 0x6a, 0xad, 0xfc, 0xf6, 0x37, 0x79,
-	0x45, 0x9d, 0x45, 0xd3, 0x67, 0xaa, 0x2b, 0xd6, 0x85, 0xf3, 0x6b, 0xf9, 0xe4, 0x6a, 0x86, 0x1e,
-	0x57, 0x7b, 0xed, 0xa6, 0xdb, 0x3e, 0xbc, 0x8c, 0x66, 0xc5, 0x83, 0x57, 0x94, 0x03, 0xa4, 0xa6,
-	0xb9, 0x83, 0x5b, 0xca, 0xea, 0xa5, 0xdf, 0xfd, 0x3a, 0x54, 0xbf, 0x4b, 0x5e, 0xfd, 0x6e, 0xf6,
-	0xea, 0x4b, 0xcd, 0x76, 0xd7, 0xde, 0x6d, 0xd7, 0x1c, 0xef, 0xaf, 0x27, 0x3c, 0x6b, 0x67, 0xc9,
-	0xb1, 0x1b, 0xb5, 0xad, 0xbd, 0xa5, 0x7e, 0x7f, 0x68, 0xb1, 0x39, 0x05, 0x9f, 0x7c, 0x1b, 0x00,
-	0x00, 0xff, 0xff, 0x57, 0xd9, 0x0f, 0xc0, 0x8b, 0x21, 0x00, 0x00,
-}
diff --git a/internal/testprotos/legacy/proto3_20190205_c823c79e/test.proto b/internal/testprotos/legacy/proto3_20190205_c823c79e/test.proto
deleted file mode 100644
index debdd30..0000000
--- a/internal/testprotos/legacy/proto3_20190205_c823c79e/test.proto
+++ /dev/null
@@ -1,136 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-
-package google.golang.org.proto3_20190205;
-option go_package = "google.golang.org/protobuf/internal/testprotos/legacy/proto3_20190205_c823c79e";
-
-enum SiblingEnum {
-	ALPHA   = 0;
-	BRAVO   = 10;
-	CHARLIE = 200;
-}
-
-message SiblingMessage {
-	string          f1 = 1;
-	repeated string f2 = 2;
-	Message         f3 = 3;
-}
-
-message Message {
-	enum ChildEnum {
-		ALPHA   = 0;
-		BRAVO   = 1;
-		CHARLIE = 2;
-	}
-	message ChildMessage {
-		string          f1 = 1;
-		repeated string f2 = 2;
-		Message         f3 = 3;
-	}
-
-	// Optional fields.
-	bool     optional_bool     = 100;
-	int32    optional_int32    = 101;
-	sint32   optional_sint32   = 102;
-	uint32   optional_uint32   = 103;
-	int64    optional_int64    = 104;
-	sint64   optional_sint64   = 105;
-	uint64   optional_uint64   = 106;
-	fixed32  optional_fixed32  = 107;
-	sfixed32 optional_sfixed32 = 108;
-	float    optional_float    = 109;
-	fixed64  optional_fixed64  = 110;
-	sfixed64 optional_sfixed64 = 111;
-	double   optional_double   = 112;
-	string   optional_string   = 113;
-	bytes    optional_bytes    = 114;
-
-	ChildEnum      optional_child_enum      = 115;
-	ChildMessage   optional_child_message   = 116;
-	SiblingEnum    optional_sibling_enum    = 117;
-	SiblingMessage optional_sibling_message = 118;
-
-	// Repeated fields.
-	repeated bool     repeated_bool     = 200;
-	repeated int32    repeated_int32    = 201;
-	repeated sint32   repeated_sint32   = 202;
-	repeated uint32   repeated_uint32   = 203;
-	repeated int64    repeated_int64    = 204;
-	repeated sint64   repeated_sint64   = 205;
-	repeated uint64   repeated_uint64   = 206;
-	repeated fixed32  repeated_fixed32  = 207;
-	repeated sfixed32 repeated_sfixed32 = 208;
-	repeated float    repeated_float    = 209;
-	repeated fixed64  repeated_fixed64  = 210;
-	repeated sfixed64 repeated_sfixed64 = 211;
-	repeated double   repeated_double   = 212;
-	repeated string   repeated_string   = 213;
-	repeated bytes    repeated_bytes    = 214;
-
-	repeated ChildEnum      repeated_child_enum      = 215;
-	repeated ChildMessage   repeated_child_message   = 216;
-	repeated SiblingEnum    repeated_sibling_enum    = 217;
-	repeated SiblingMessage repeated_sibling_message = 218;
-
-	// Map fields.
-	map<bool, bool>     map_bool_bool     = 300;
-	map<bool, int32>    map_bool_int32    = 301;
-	map<bool, sint32>   map_bool_sint32   = 302;
-	map<bool, uint32>   map_bool_uint32   = 303;
-	map<bool, int64>    map_bool_int64    = 304;
-	map<bool, sint64>   map_bool_sint64   = 305;
-	map<bool, uint64>   map_bool_uint64   = 306;
-	map<bool, fixed32>  map_bool_fixed32  = 307;
-	map<bool, sfixed32> map_bool_sfixed32 = 308;
-	map<bool, float>    map_bool_float    = 309;
-	map<bool, fixed64>  map_bool_fixed64  = 310;
-	map<bool, sfixed64> map_bool_sfixed64 = 311;
-	map<bool, double>   map_bool_double   = 312;
-	map<bool, string>   map_bool_string   = 313;
-	map<bool, bytes>    map_bool_bytes    = 314;
-
-	map<bool, ChildEnum>      map_bool_child_enum      = 315;
-	map<bool, ChildMessage>   map_bool_child_message   = 316;
-	map<bool, SiblingEnum>    map_bool_sibling_enum    = 317;
-	map<bool, SiblingMessage> map_bool_sibling_message = 318;
-
-	map<int32, bool>   map_int32_bool   = 319;
-	map<sint32, bool>  map_sint32_bool  = 320;
-	map<uint32, bool>  map_uint32_bool  = 321;
-	map<int64, bool>   map_int64_bool   = 322;
-	map<sint64, bool>  map_sint64_bool  = 323;
-	map<uint64, bool>  map_uint64_bool  = 324;
-	map<fixed32, bool> map_fixed32_bool = 325;
-	map<string, bool>  map_string_bool  = 326;
-
-	// Oneof fields.
-	oneof oneof_union {
-		bool     oneof_bool     = 400;
-		int32    oneof_int32    = 401;
-		sint32   oneof_sint32   = 402;
-		uint32   oneof_uint32   = 403;
-		int64    oneof_int64    = 404;
-		sint64   oneof_sint64   = 405;
-		uint64   oneof_uint64   = 406;
-		fixed32  oneof_fixed32  = 407;
-		sfixed32 oneof_sfixed32 = 408;
-		float    oneof_float    = 409;
-		fixed64  oneof_fixed64  = 410;
-		sfixed64 oneof_sfixed64 = 411;
-		double   oneof_double   = 412;
-		string   oneof_string   = 413;
-		bytes    oneof_bytes    = 414;
-
-		ChildEnum      oneof_child_enum      = 415;
-		ChildMessage   oneof_child_message   = 416;
-		SiblingEnum    oneof_sibling_enum    = 417;
-		SiblingMessage oneof_sibling_message = 418;
-
-		string oneof_string1 = 419;
-		string oneof_string2 = 420;
-		string oneof_string3 = 421;
-	}
-}
diff --git a/internal/testprotos/messageset/messagesetpb/message_set.pb.go b/internal/testprotos/messageset/messagesetpb/message_set.pb.go
deleted file mode 100644
index 2769be5..0000000
--- a/internal/testprotos/messageset/messagesetpb/message_set.pb.go
+++ /dev/null
@@ -1,203 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/messageset/messagesetpb/message_set.proto
-
-package messagesetpb
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type MessageSet struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-}
-
-func (x *MessageSet) Reset() {
-	*x = MessageSet{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_messageset_messagesetpb_message_set_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *MessageSet) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MessageSet) ProtoMessage() {}
-
-func (x *MessageSet) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_messageset_messagesetpb_message_set_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use MessageSet.ProtoReflect.Descriptor instead.
-func (*MessageSet) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDescGZIP(), []int{0}
-}
-
-type MessageSetContainer struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	MessageSet *MessageSet `protobuf:"bytes,1,opt,name=message_set,json=messageSet" json:"message_set,omitempty"`
-}
-
-func (x *MessageSetContainer) Reset() {
-	*x = MessageSetContainer{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_messageset_messagesetpb_message_set_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *MessageSetContainer) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MessageSetContainer) ProtoMessage() {}
-
-func (x *MessageSetContainer) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_messageset_messagesetpb_message_set_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use MessageSetContainer.ProtoReflect.Descriptor instead.
-func (*MessageSetContainer) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *MessageSetContainer) GetMessageSet() *MessageSet {
-	if x != nil {
-		return x.MessageSet
-	}
-	return nil
-}
-
-var File_internal_testprotos_messageset_messagesetpb_message_set_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDesc = []byte{
-	0x0a, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74,
-	0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x70, 0x62, 0x2f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
-	0x18, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x22, 0x1a, 0x0a, 0x0a, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x2a, 0x08, 0x08, 0x04, 0x10, 0xff, 0xff, 0xff, 0xff,
-	0x07, 0x3a, 0x02, 0x08, 0x01, 0x22, 0x5c, 0x0a, 0x13, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x53, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x0b,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x52, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x53, 0x65, 0x74, 0x42, 0x48, 0x5a, 0x46, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f,
-	0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74,
-	0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x70, 0x62,
-}
-
-var (
-	file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDescOnce sync.Once
-	file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDescData = file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDesc
-)
-
-func file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDescGZIP() []byte {
-	file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDescData)
-	})
-	return file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDescData
-}
-
-var file_internal_testprotos_messageset_messagesetpb_message_set_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
-var file_internal_testprotos_messageset_messagesetpb_message_set_proto_goTypes = []interface{}{
-	(*MessageSet)(nil),          // 0: goproto.proto.messageset.MessageSet
-	(*MessageSetContainer)(nil), // 1: goproto.proto.messageset.MessageSetContainer
-}
-var file_internal_testprotos_messageset_messagesetpb_message_set_proto_depIdxs = []int32{
-	0, // 0: goproto.proto.messageset.MessageSetContainer.message_set:type_name -> goproto.proto.messageset.MessageSet
-	1, // [1:1] is the sub-list for method output_type
-	1, // [1:1] is the sub-list for method input_type
-	1, // [1:1] is the sub-list for extension type_name
-	1, // [1:1] is the sub-list for extension extendee
-	0, // [0:1] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_messageset_messagesetpb_message_set_proto_init() }
-func file_internal_testprotos_messageset_messagesetpb_message_set_proto_init() {
-	if File_internal_testprotos_messageset_messagesetpb_message_set_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_internal_testprotos_messageset_messagesetpb_message_set_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MessageSet); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_messageset_messagesetpb_message_set_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MessageSetContainer); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   2,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_internal_testprotos_messageset_messagesetpb_message_set_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_messageset_messagesetpb_message_set_proto_depIdxs,
-		MessageInfos:      file_internal_testprotos_messageset_messagesetpb_message_set_proto_msgTypes,
-	}.Build()
-	File_internal_testprotos_messageset_messagesetpb_message_set_proto = out.File
-	file_internal_testprotos_messageset_messagesetpb_message_set_proto_rawDesc = nil
-	file_internal_testprotos_messageset_messagesetpb_message_set_proto_goTypes = nil
-	file_internal_testprotos_messageset_messagesetpb_message_set_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/messageset/messagesetpb/message_set.proto b/internal/testprotos/messageset/messagesetpb/message_set.proto
deleted file mode 100644
index 4887977..0000000
--- a/internal/testprotos/messageset/messagesetpb/message_set.proto
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.proto.messageset;
-
-option go_package = "google.golang.org/protobuf/internal/testprotos/messageset/messagesetpb";
-
-message MessageSet {
-  option message_set_wire_format = true;
-  extensions 4 to max;
-}
-
-message MessageSetContainer {
-  optional MessageSet message_set = 1;
-}
diff --git a/internal/testprotos/messageset/msetextpb/msetextpb.pb.go b/internal/testprotos/messageset/msetextpb/msetextpb.pb.go
deleted file mode 100644
index c9d2025..0000000
--- a/internal/testprotos/messageset/msetextpb/msetextpb.pb.go
+++ /dev/null
@@ -1,425 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/messageset/msetextpb/msetextpb.proto
-
-package msetextpb
-
-import (
-	messagesetpb "google.golang.org/protobuf/internal/testprotos/messageset/messagesetpb"
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Ext1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Ext1Field1 *int32 `protobuf:"varint,1,opt,name=ext1_field1,json=ext1Field1" json:"ext1_field1,omitempty"`
-	Ext1Field2 *int32 `protobuf:"varint,2,opt,name=ext1_field2,json=ext1Field2" json:"ext1_field2,omitempty"`
-}
-
-func (x *Ext1) Reset() {
-	*x = Ext1{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Ext1) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Ext1) ProtoMessage() {}
-
-func (x *Ext1) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Ext1.ProtoReflect.Descriptor instead.
-func (*Ext1) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Ext1) GetExt1Field1() int32 {
-	if x != nil && x.Ext1Field1 != nil {
-		return *x.Ext1Field1
-	}
-	return 0
-}
-
-func (x *Ext1) GetExt1Field2() int32 {
-	if x != nil && x.Ext1Field2 != nil {
-		return *x.Ext1Field2
-	}
-	return 0
-}
-
-type Ext2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Ext2Field1 *int32 `protobuf:"varint,1,opt,name=ext2_field1,json=ext2Field1" json:"ext2_field1,omitempty"`
-}
-
-func (x *Ext2) Reset() {
-	*x = Ext2{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Ext2) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Ext2) ProtoMessage() {}
-
-func (x *Ext2) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Ext2.ProtoReflect.Descriptor instead.
-func (*Ext2) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Ext2) GetExt2Field1() int32 {
-	if x != nil && x.Ext2Field1 != nil {
-		return *x.Ext2Field1
-	}
-	return 0
-}
-
-type ExtRequired struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	RequiredField1 *int32 `protobuf:"varint,1,req,name=required_field1,json=requiredField1" json:"required_field1,omitempty"`
-}
-
-func (x *ExtRequired) Reset() {
-	*x = ExtRequired{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ExtRequired) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ExtRequired) ProtoMessage() {}
-
-func (x *ExtRequired) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ExtRequired.ProtoReflect.Descriptor instead.
-func (*ExtRequired) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *ExtRequired) GetRequiredField1() int32 {
-	if x != nil && x.RequiredField1 != nil {
-		return *x.RequiredField1
-	}
-	return 0
-}
-
-type ExtLargeNumber struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *ExtLargeNumber) Reset() {
-	*x = ExtLargeNumber{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ExtLargeNumber) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ExtLargeNumber) ProtoMessage() {}
-
-func (x *ExtLargeNumber) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_messageset_msetextpb_msetextpb_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ExtLargeNumber.ProtoReflect.Descriptor instead.
-func (*ExtLargeNumber) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDescGZIP(), []int{3}
-}
-
-var file_internal_testprotos_messageset_msetextpb_msetextpb_proto_extTypes = []protoimpl.ExtensionInfo{
-	{
-		ExtendedType:  (*messagesetpb.MessageSet)(nil),
-		ExtensionType: (*Ext1)(nil),
-		Field:         1000,
-		Name:          "goproto.proto.messageset.Ext1.message_set_extension",
-		Tag:           "bytes,1000,opt,name=message_set_extension",
-		Filename:      "internal/testprotos/messageset/msetextpb/msetextpb.proto",
-	},
-	{
-		ExtendedType:  (*messagesetpb.MessageSet)(nil),
-		ExtensionType: (*Ext2)(nil),
-		Field:         1001,
-		Name:          "goproto.proto.messageset.Ext2.message_set_extension",
-		Tag:           "bytes,1001,opt,name=message_set_extension",
-		Filename:      "internal/testprotos/messageset/msetextpb/msetextpb.proto",
-	},
-	{
-		ExtendedType:  (*messagesetpb.MessageSet)(nil),
-		ExtensionType: (*ExtRequired)(nil),
-		Field:         1002,
-		Name:          "goproto.proto.messageset.ExtRequired.message_set_extension",
-		Tag:           "bytes,1002,opt,name=message_set_extension",
-		Filename:      "internal/testprotos/messageset/msetextpb/msetextpb.proto",
-	},
-	{
-		ExtendedType:  (*messagesetpb.MessageSet)(nil),
-		ExtensionType: (*ExtLargeNumber)(nil),
-		Field:         536870912,
-		Name:          "goproto.proto.messageset.ExtLargeNumber.message_set_extension",
-		Tag:           "bytes,536870912,opt,name=message_set_extension",
-		Filename:      "internal/testprotos/messageset/msetextpb/msetextpb.proto",
-	},
-}
-
-// Extension fields to messagesetpb.MessageSet.
-var (
-	// optional goproto.proto.messageset.Ext1 message_set_extension = 1000;
-	E_Ext1_MessageSetExtension = &file_internal_testprotos_messageset_msetextpb_msetextpb_proto_extTypes[0]
-	// optional goproto.proto.messageset.Ext2 message_set_extension = 1001;
-	E_Ext2_MessageSetExtension = &file_internal_testprotos_messageset_msetextpb_msetextpb_proto_extTypes[1]
-	// optional goproto.proto.messageset.ExtRequired message_set_extension = 1002;
-	E_ExtRequired_MessageSetExtension = &file_internal_testprotos_messageset_msetextpb_msetextpb_proto_extTypes[2]
-	// optional goproto.proto.messageset.ExtLargeNumber message_set_extension = 536870912;
-	E_ExtLargeNumber_MessageSetExtension = &file_internal_testprotos_messageset_msetextpb_msetextpb_proto_extTypes[3] // 1<<29
-)
-
-var File_internal_testprotos_messageset_msetextpb_msetextpb_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDesc = []byte{
-	0x0a, 0x38, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74,
-	0x2f, 0x6d, 0x73, 0x65, 0x74, 0x65, 0x78, 0x74, 0x70, 0x62, 0x2f, 0x6d, 0x73, 0x65, 0x74, 0x65,
-	0x78, 0x74, 0x70, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x73, 0x65, 0x74, 0x1a, 0x3d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74,
-	0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x73, 0x65, 0x74, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x70,
-	0x62, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x22, 0xc3, 0x01, 0x0a, 0x04, 0x45, 0x78, 0x74, 0x31, 0x12, 0x1f, 0x0a, 0x0b,
-	0x65, 0x78, 0x74, 0x31, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x31, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x12, 0x1f, 0x0a,
-	0x0b, 0x65, 0x78, 0x74, 0x31, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x31, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x32, 0x79,
-	0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73,
-	0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0xe8, 0x07,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2e,
-	0x45, 0x78, 0x74, 0x31, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xa2, 0x01, 0x0a, 0x04, 0x45, 0x78,
-	0x74, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x32, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x32, 0x46, 0x69, 0x65,
-	0x6c, 0x64, 0x31, 0x32, 0x79, 0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73,
-	0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53,
-	0x65, 0x74, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x73, 0x65, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x32, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xb9,
-	0x01, 0x0a, 0x0b, 0x45, 0x78, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x27,
-	0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x31, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
-	0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x32, 0x80, 0x01, 0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x12, 0x24, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x65, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x52, 0x65, 0x71,
-	0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65,
-	0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x99, 0x01, 0x0a, 0x0e, 0x45,
-	0x78, 0x74, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x32, 0x86, 0x01,
-	0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73,
-	0x65, 0x74, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x80, 0x80,
-	0x80, 0x80, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73,
-	0x65, 0x74, 0x2e, 0x45, 0x78, 0x74, 0x4c, 0x61, 0x72, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65,
-	0x72, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x45, 0x5a, 0x43, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65,
-	0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x73, 0x65, 0x74, 0x2f, 0x6d, 0x73, 0x65, 0x74, 0x65, 0x78, 0x74, 0x70, 0x62,
-}
-
-var (
-	file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDescOnce sync.Once
-	file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDescData = file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDesc
-)
-
-func file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDescGZIP() []byte {
-	file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDescData)
-	})
-	return file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDescData
-}
-
-var file_internal_testprotos_messageset_msetextpb_msetextpb_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
-var file_internal_testprotos_messageset_msetextpb_msetextpb_proto_goTypes = []interface{}{
-	(*Ext1)(nil),                    // 0: goproto.proto.messageset.Ext1
-	(*Ext2)(nil),                    // 1: goproto.proto.messageset.Ext2
-	(*ExtRequired)(nil),             // 2: goproto.proto.messageset.ExtRequired
-	(*ExtLargeNumber)(nil),          // 3: goproto.proto.messageset.ExtLargeNumber
-	(*messagesetpb.MessageSet)(nil), // 4: goproto.proto.messageset.MessageSet
-}
-var file_internal_testprotos_messageset_msetextpb_msetextpb_proto_depIdxs = []int32{
-	4, // 0: goproto.proto.messageset.Ext1.message_set_extension:extendee -> goproto.proto.messageset.MessageSet
-	4, // 1: goproto.proto.messageset.Ext2.message_set_extension:extendee -> goproto.proto.messageset.MessageSet
-	4, // 2: goproto.proto.messageset.ExtRequired.message_set_extension:extendee -> goproto.proto.messageset.MessageSet
-	4, // 3: goproto.proto.messageset.ExtLargeNumber.message_set_extension:extendee -> goproto.proto.messageset.MessageSet
-	0, // 4: goproto.proto.messageset.Ext1.message_set_extension:type_name -> goproto.proto.messageset.Ext1
-	1, // 5: goproto.proto.messageset.Ext2.message_set_extension:type_name -> goproto.proto.messageset.Ext2
-	2, // 6: goproto.proto.messageset.ExtRequired.message_set_extension:type_name -> goproto.proto.messageset.ExtRequired
-	3, // 7: goproto.proto.messageset.ExtLargeNumber.message_set_extension:type_name -> goproto.proto.messageset.ExtLargeNumber
-	8, // [8:8] is the sub-list for method output_type
-	8, // [8:8] is the sub-list for method input_type
-	4, // [4:8] is the sub-list for extension type_name
-	0, // [0:4] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_messageset_msetextpb_msetextpb_proto_init() }
-func file_internal_testprotos_messageset_msetextpb_msetextpb_proto_init() {
-	if File_internal_testprotos_messageset_msetextpb_msetextpb_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_internal_testprotos_messageset_msetextpb_msetextpb_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Ext1); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_messageset_msetextpb_msetextpb_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Ext2); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_messageset_msetextpb_msetextpb_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ExtRequired); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_messageset_msetextpb_msetextpb_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ExtLargeNumber); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   4,
-			NumExtensions: 4,
-			NumServices:   0,
-		},
-		GoTypes:           file_internal_testprotos_messageset_msetextpb_msetextpb_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_messageset_msetextpb_msetextpb_proto_depIdxs,
-		MessageInfos:      file_internal_testprotos_messageset_msetextpb_msetextpb_proto_msgTypes,
-		ExtensionInfos:    file_internal_testprotos_messageset_msetextpb_msetextpb_proto_extTypes,
-	}.Build()
-	File_internal_testprotos_messageset_msetextpb_msetextpb_proto = out.File
-	file_internal_testprotos_messageset_msetextpb_msetextpb_proto_rawDesc = nil
-	file_internal_testprotos_messageset_msetextpb_msetextpb_proto_goTypes = nil
-	file_internal_testprotos_messageset_msetextpb_msetextpb_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/messageset/msetextpb/msetextpb.proto b/internal/testprotos/messageset/msetextpb/msetextpb.proto
deleted file mode 100644
index 231ded9..0000000
--- a/internal/testprotos/messageset/msetextpb/msetextpb.proto
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.proto.messageset;
-
-option go_package = "google.golang.org/protobuf/internal/testprotos/messageset/msetextpb";
-
-import "internal/testprotos/messageset/messagesetpb/message_set.proto";
-
-message Ext1 {
-  extend MessageSet {
-    optional Ext1 message_set_extension = 1000;
-  }
-  optional int32 ext1_field1 = 1;
-  optional int32 ext1_field2 = 2;
-}
-
-message Ext2 {
-  extend MessageSet {
-    optional Ext2 message_set_extension = 1001;
-  }
-  optional int32 ext2_field1 = 1;
-}
-
-message ExtRequired {
-  extend MessageSet {
-    optional ExtRequired message_set_extension = 1002;
-  }
-  required int32 required_field1 = 1;
-}
-
-message ExtLargeNumber {
-  extend MessageSet {
-    optional ExtLargeNumber message_set_extension = 536870912; // 1<<29
-  }
-}
diff --git a/internal/testprotos/news/news.pb.go b/internal/testprotos/news/news.pb.go
deleted file mode 100644
index bb728a6..0000000
--- a/internal/testprotos/news/news.pb.go
+++ /dev/null
@@ -1,421 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/news/news.proto
-
-package news
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	anypb "google.golang.org/protobuf/types/known/anypb"
-	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Article_Status int32
-
-const (
-	Article_DRAFT     Article_Status = 0
-	Article_PUBLISHED Article_Status = 1
-	Article_REVOKED   Article_Status = 2
-)
-
-// Enum value maps for Article_Status.
-var (
-	Article_Status_name = map[int32]string{
-		0: "DRAFT",
-		1: "PUBLISHED",
-		2: "REVOKED",
-	}
-	Article_Status_value = map[string]int32{
-		"DRAFT":     0,
-		"PUBLISHED": 1,
-		"REVOKED":   2,
-	}
-)
-
-func (x Article_Status) Enum() *Article_Status {
-	p := new(Article_Status)
-	*p = x
-	return p
-}
-
-func (x Article_Status) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Article_Status) Descriptor() protoreflect.EnumDescriptor {
-	return file_internal_testprotos_news_news_proto_enumTypes[0].Descriptor()
-}
-
-func (Article_Status) Type() protoreflect.EnumType {
-	return &file_internal_testprotos_news_news_proto_enumTypes[0]
-}
-
-func (x Article_Status) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Article_Status.Descriptor instead.
-func (Article_Status) EnumDescriptor() ([]byte, []int) {
-	return file_internal_testprotos_news_news_proto_rawDescGZIP(), []int{0, 0}
-}
-
-type Article struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Author      string                 `protobuf:"bytes,1,opt,name=author,proto3" json:"author,omitempty"`
-	Date        *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=date,proto3" json:"date,omitempty"`
-	Title       string                 `protobuf:"bytes,3,opt,name=title,proto3" json:"title,omitempty"`
-	Content     string                 `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"`
-	Status      Article_Status         `protobuf:"varint,8,opt,name=status,proto3,enum=google.golang.org.Article_Status" json:"status,omitempty"`
-	Tags        []string               `protobuf:"bytes,7,rep,name=tags,proto3" json:"tags,omitempty"`
-	Attachments []*anypb.Any           `protobuf:"bytes,6,rep,name=attachments,proto3" json:"attachments,omitempty"`
-}
-
-func (x *Article) Reset() {
-	*x = Article{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_news_news_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Article) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Article) ProtoMessage() {}
-
-func (x *Article) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_news_news_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Article.ProtoReflect.Descriptor instead.
-func (*Article) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_news_news_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Article) GetAuthor() string {
-	if x != nil {
-		return x.Author
-	}
-	return ""
-}
-
-func (x *Article) GetDate() *timestamppb.Timestamp {
-	if x != nil {
-		return x.Date
-	}
-	return nil
-}
-
-func (x *Article) GetTitle() string {
-	if x != nil {
-		return x.Title
-	}
-	return ""
-}
-
-func (x *Article) GetContent() string {
-	if x != nil {
-		return x.Content
-	}
-	return ""
-}
-
-func (x *Article) GetStatus() Article_Status {
-	if x != nil {
-		return x.Status
-	}
-	return Article_DRAFT
-}
-
-func (x *Article) GetTags() []string {
-	if x != nil {
-		return x.Tags
-	}
-	return nil
-}
-
-func (x *Article) GetAttachments() []*anypb.Any {
-	if x != nil {
-		return x.Attachments
-	}
-	return nil
-}
-
-type BinaryAttachment struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
-}
-
-func (x *BinaryAttachment) Reset() {
-	*x = BinaryAttachment{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_news_news_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *BinaryAttachment) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*BinaryAttachment) ProtoMessage() {}
-
-func (x *BinaryAttachment) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_news_news_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use BinaryAttachment.ProtoReflect.Descriptor instead.
-func (*BinaryAttachment) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_news_news_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *BinaryAttachment) GetName() string {
-	if x != nil {
-		return x.Name
-	}
-	return ""
-}
-
-func (x *BinaryAttachment) GetData() []byte {
-	if x != nil {
-		return x.Data
-	}
-	return nil
-}
-
-type KeyValueAttachment struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Name string            `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	Data map[string]string `protobuf:"bytes,2,rep,name=data,proto3" json:"data,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *KeyValueAttachment) Reset() {
-	*x = KeyValueAttachment{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_news_news_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *KeyValueAttachment) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*KeyValueAttachment) ProtoMessage() {}
-
-func (x *KeyValueAttachment) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_news_news_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use KeyValueAttachment.ProtoReflect.Descriptor instead.
-func (*KeyValueAttachment) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_news_news_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *KeyValueAttachment) GetName() string {
-	if x != nil {
-		return x.Name
-	}
-	return ""
-}
-
-func (x *KeyValueAttachment) GetData() map[string]string {
-	if x != nil {
-		return x.Data
-	}
-	return nil
-}
-
-var File_internal_testprotos_news_news_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_news_news_proto_rawDesc = []byte{
-	0x0a, 0x23, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6e, 0x65, 0x77, 0x73, 0x2f, 0x6e, 0x65, 0x77, 0x73, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f,
-	0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb9, 0x02, 0x0a, 0x07, 0x41, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65,
-	0x12, 0x16, 0x0a, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x06, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x12, 0x2e, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x65,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
-	0x6d, 0x70, 0x52, 0x04, 0x64, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c,
-	0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18,
-	0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74,
-	0x75, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x41, 0x72, 0x74,
-	0x69, 0x63, 0x6c, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61,
-	0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28,
-	0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x36, 0x0a, 0x0b, 0x61, 0x74, 0x74, 0x61, 0x63,
-	0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41,
-	0x6e, 0x79, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22,
-	0x2f, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x52, 0x41,
-	0x46, 0x54, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45,
-	0x44, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x45, 0x56, 0x4f, 0x4b, 0x45, 0x44, 0x10, 0x02,
-	0x22, 0x3a, 0x0a, 0x10, 0x42, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68,
-	0x6d, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa6, 0x01, 0x0a,
-	0x12, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d,
-	0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18,
-	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,
-	0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c,
-	0x75, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x61, 0x74,
-	0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x37, 0x0a, 0x09,
-	0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x35, 0x5a, 0x33, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
-	0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73,
-	0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6e, 0x65, 0x77, 0x73, 0x62, 0x06, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_internal_testprotos_news_news_proto_rawDescOnce sync.Once
-	file_internal_testprotos_news_news_proto_rawDescData = file_internal_testprotos_news_news_proto_rawDesc
-)
-
-func file_internal_testprotos_news_news_proto_rawDescGZIP() []byte {
-	file_internal_testprotos_news_news_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_news_news_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_news_news_proto_rawDescData)
-	})
-	return file_internal_testprotos_news_news_proto_rawDescData
-}
-
-var file_internal_testprotos_news_news_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_internal_testprotos_news_news_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
-var file_internal_testprotos_news_news_proto_goTypes = []interface{}{
-	(Article_Status)(0),           // 0: google.golang.org.Article.Status
-	(*Article)(nil),               // 1: google.golang.org.Article
-	(*BinaryAttachment)(nil),      // 2: google.golang.org.BinaryAttachment
-	(*KeyValueAttachment)(nil),    // 3: google.golang.org.KeyValueAttachment
-	nil,                           // 4: google.golang.org.KeyValueAttachment.DataEntry
-	(*timestamppb.Timestamp)(nil), // 5: google.protobuf.Timestamp
-	(*anypb.Any)(nil),             // 6: google.protobuf.Any
-}
-var file_internal_testprotos_news_news_proto_depIdxs = []int32{
-	5, // 0: google.golang.org.Article.date:type_name -> google.protobuf.Timestamp
-	0, // 1: google.golang.org.Article.status:type_name -> google.golang.org.Article.Status
-	6, // 2: google.golang.org.Article.attachments:type_name -> google.protobuf.Any
-	4, // 3: google.golang.org.KeyValueAttachment.data:type_name -> google.golang.org.KeyValueAttachment.DataEntry
-	4, // [4:4] is the sub-list for method output_type
-	4, // [4:4] is the sub-list for method input_type
-	4, // [4:4] is the sub-list for extension type_name
-	4, // [4:4] is the sub-list for extension extendee
-	0, // [0:4] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_news_news_proto_init() }
-func file_internal_testprotos_news_news_proto_init() {
-	if File_internal_testprotos_news_news_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_internal_testprotos_news_news_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Article); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_news_news_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*BinaryAttachment); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_news_news_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*KeyValueAttachment); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_news_news_proto_rawDesc,
-			NumEnums:      1,
-			NumMessages:   4,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_internal_testprotos_news_news_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_news_news_proto_depIdxs,
-		EnumInfos:         file_internal_testprotos_news_news_proto_enumTypes,
-		MessageInfos:      file_internal_testprotos_news_news_proto_msgTypes,
-	}.Build()
-	File_internal_testprotos_news_news_proto = out.File
-	file_internal_testprotos_news_news_proto_rawDesc = nil
-	file_internal_testprotos_news_news_proto_goTypes = nil
-	file_internal_testprotos_news_news_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/news/news.proto b/internal/testprotos/news/news.proto
deleted file mode 100644
index bf56f3b..0000000
--- a/internal/testprotos/news/news.proto
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-
-package google.golang.org;
-
-import "google/protobuf/any.proto";
-import "google/protobuf/timestamp.proto";
-
-option go_package = "google.golang.org/protobuf/internal/testprotos/news";
-
-message Article {
-	enum Status {
-		DRAFT = 0;
-		PUBLISHED = 1;
-		REVOKED = 2;
-	}
-
-	string author = 1;
-	google.protobuf.Timestamp date = 2;
-	string title = 3;
-	string content = 4;
-	Status status = 8;
-	repeated string tags = 7;
-	repeated google.protobuf.Any attachments = 6;
-}
-
-message BinaryAttachment {
-	string name = 1;
-	bytes data = 2;
-}
-
-message KeyValueAttachment {
-	string name = 1;
-	map<string, string> data = 2;
-}
\ No newline at end of file
diff --git a/internal/testprotos/nullable/methods_test.go b/internal/testprotos/nullable/methods_test.go
deleted file mode 100644
index c694810..0000000
--- a/internal/testprotos/nullable/methods_test.go
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2021 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// For messages which do not provide legacy Marshal and Unmarshal methods,
-// only test compatibility with the Marshal/Unmarshal functionality with
-// pure protobuf reflection since there is no support for nullable fields
-// in the table-driven implementation.
-//go:build protoreflect
-// +build protoreflect
-
-package nullable
-
-import "google.golang.org/protobuf/runtime/protoimpl"
-
-func init() {
-	methodTestProtos = append(methodTestProtos,
-		protoimpl.X.ProtoMessageV2Of((*Proto2)(nil)).ProtoReflect().Type(),
-		protoimpl.X.ProtoMessageV2Of((*Proto3)(nil)).ProtoReflect().Type(),
-	)
-}
diff --git a/internal/testprotos/nullable/nullable.go b/internal/testprotos/nullable/nullable.go
deleted file mode 100644
index 3466455..0000000
--- a/internal/testprotos/nullable/nullable.go
+++ /dev/null
@@ -1,266 +0,0 @@
-// Copyright 2021 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package nullable
-
-import (
-	"google.golang.org/protobuf/encoding/prototext"
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/runtime/protoimpl"
-	"google.golang.org/protobuf/types/descriptorpb"
-)
-
-type Proto2 struct {
-	OptionalBool    bool                                   `protobuf:"varint,100,opt,name=optional_bool"`
-	OptionalInt32   int32                                  `protobuf:"varint,101,opt,name=optional_int32"`
-	OptionalInt64   int64                                  `protobuf:"varint,102,opt,name=optional_int64"`
-	OptionalUint32  uint32                                 `protobuf:"varint,103,opt,name=optional_uint32"`
-	OptionalUint64  uint64                                 `protobuf:"varint,104,opt,name=optional_uint64"`
-	OptionalFloat   float32                                `protobuf:"fixed32,105,opt,name=optional_float"`
-	OptionalDouble  float64                                `protobuf:"fixed64,106,opt,name=optional_double"`
-	OptionalString  string                                 `protobuf:"bytes,107,opt,name=optional_string"`
-	OptionalBytes   []byte                                 `protobuf:"bytes,108,opt,name=optional_bytes"`
-	OptionalEnum    descriptorpb.FieldDescriptorProto_Type `protobuf:"varint,109,req,name=optional_enum"`
-	OptionalMessage descriptorpb.FieldOptions              `protobuf:"bytes,110,req,name=optional_message"`
-
-	RepeatedBool    []bool                                   `protobuf:"varint,200,rep,name=repeated_bool"`
-	RepeatedInt32   []int32                                  `protobuf:"varint,201,rep,name=repeated_int32"`
-	RepeatedInt64   []int64                                  `protobuf:"varint,202,rep,name=repeated_int64"`
-	RepeatedUint32  []uint32                                 `protobuf:"varint,203,rep,name=repeated_uint32"`
-	RepeatedUint64  []uint64                                 `protobuf:"varint,204,rep,name=repeated_uint64"`
-	RepeatedFloat   []float32                                `protobuf:"fixed32,205,rep,name=repeated_float"`
-	RepeatedDouble  []float64                                `protobuf:"fixed64,206,rep,name=repeated_double"`
-	RepeatedString  []string                                 `protobuf:"bytes,207,rep,name=repeated_string"`
-	RepeatedBytes   [][]byte                                 `protobuf:"bytes,208,rep,name=repeated_bytes"`
-	RepeatedEnum    []descriptorpb.FieldDescriptorProto_Type `protobuf:"varint,209,rep,name=repeated_enum"`
-	RepeatedMessage []descriptorpb.FieldOptions              `protobuf:"bytes,210,rep,name=repeated_message"`
-
-	MapBool    map[string]bool                                   `protobuf:"bytes,300,rep,name=map_bool" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapInt32   map[string]int32                                  `protobuf:"bytes,301,rep,name=map_int32" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapInt64   map[string]int64                                  `protobuf:"bytes,302,rep,name=map_int64" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint32  map[string]uint32                                 `protobuf:"bytes,303,rep,name=map_uint32" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint64  map[string]uint64                                 `protobuf:"bytes,304,rep,name=map_uint64" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapFloat   map[string]float32                                `protobuf:"bytes,305,rep,name=map_float" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapDouble  map[string]float64                                `protobuf:"bytes,306,rep,name=map_double" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapString  map[string]string                                 `protobuf:"bytes,307,rep,name=map_string" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapBytes   map[string][]byte                                 `protobuf:"bytes,308,rep,name=map_bytes" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapEnum    map[string]descriptorpb.FieldDescriptorProto_Type `protobuf:"bytes,309,rep,name=map_enum" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapMessage map[string]descriptorpb.FieldOptions              `protobuf:"bytes,310,rep,name=map_message" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-
-	OneofUnion isProto2_OneofUnion `protobuf_oneof:"oneof_union"`
-}
-
-func (x *Proto2) ProtoMessage()  {}
-func (x *Proto2) Reset()         { *x = Proto2{} }
-func (x *Proto2) String() string { return prototext.Format(protoimpl.X.ProtoMessageV2Of(x)) }
-func (x *Proto2) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*Proto2_OneofBool)(nil),
-		(*Proto2_OneofInt32)(nil),
-		(*Proto2_OneofInt64)(nil),
-		(*Proto2_OneofUint32)(nil),
-		(*Proto2_OneofUint64)(nil),
-		(*Proto2_OneofFloat)(nil),
-		(*Proto2_OneofDouble)(nil),
-		(*Proto2_OneofString)(nil),
-		(*Proto2_OneofBytes)(nil),
-		(*Proto2_OneofEnum)(nil),
-		(*Proto2_OneofMessage)(nil),
-	}
-}
-
-type isProto2_OneofUnion interface{ isProto2_OneofUnion() }
-
-type Proto2_OneofBool struct {
-	OneofBool bool `protobuf:"varint,400,opt,name=oneof_bool,oneof"`
-}
-type Proto2_OneofInt32 struct {
-	OneofInt32 int32 `protobuf:"varint,401,opt,name=oneof_int32,oneof"`
-}
-type Proto2_OneofInt64 struct {
-	OneofInt64 int64 `protobuf:"varint,402,opt,name=oneof_int64,oneof"`
-}
-type Proto2_OneofUint32 struct {
-	OneofUint32 uint32 `protobuf:"varint,403,opt,name=oneof_uint32,oneof"`
-}
-type Proto2_OneofUint64 struct {
-	OneofUint64 uint64 `protobuf:"varint,404,opt,name=oneof_uint64,oneof"`
-}
-type Proto2_OneofFloat struct {
-	OneofFloat float32 `protobuf:"fixed32,405,opt,name=oneof_float,oneof"`
-}
-type Proto2_OneofDouble struct {
-	OneofDouble float64 `protobuf:"fixed64,406,opt,name=oneof_double,oneof"`
-}
-type Proto2_OneofString struct {
-	OneofString string `protobuf:"bytes,407,opt,name=oneof_string,oneof"`
-}
-type Proto2_OneofBytes struct {
-	OneofBytes []byte `protobuf:"bytes,408,opt,name=oneof_bytes,oneof"`
-}
-type Proto2_OneofEnum struct {
-	OneofEnum descriptorpb.FieldDescriptorProto_Type `protobuf:"varint,409,opt,name=oneof_enum,oneof"`
-}
-type Proto2_OneofMessage struct {
-	OneofMessage descriptorpb.FieldOptions `protobuf:"bytes,410,opt,name=oneof_message,oneof"`
-}
-
-func (*Proto2_OneofBool) isProto2_OneofUnion()    {}
-func (*Proto2_OneofInt32) isProto2_OneofUnion()   {}
-func (*Proto2_OneofInt64) isProto2_OneofUnion()   {}
-func (*Proto2_OneofUint32) isProto2_OneofUnion()  {}
-func (*Proto2_OneofUint64) isProto2_OneofUnion()  {}
-func (*Proto2_OneofFloat) isProto2_OneofUnion()   {}
-func (*Proto2_OneofDouble) isProto2_OneofUnion()  {}
-func (*Proto2_OneofString) isProto2_OneofUnion()  {}
-func (*Proto2_OneofBytes) isProto2_OneofUnion()   {}
-func (*Proto2_OneofEnum) isProto2_OneofUnion()    {}
-func (*Proto2_OneofMessage) isProto2_OneofUnion() {}
-
-type Proto3 struct {
-	OptionalBool    bool                                   `protobuf:"varint,100,opt,name=optional_bool,proto3"`
-	OptionalInt32   int32                                  `protobuf:"varint,101,opt,name=optional_int32,proto3"`
-	OptionalInt64   int64                                  `protobuf:"varint,102,opt,name=optional_int64,proto3"`
-	OptionalUint32  uint32                                 `protobuf:"varint,103,opt,name=optional_uint32,proto3"`
-	OptionalUint64  uint64                                 `protobuf:"varint,104,opt,name=optional_uint64,proto3"`
-	OptionalFloat   float32                                `protobuf:"fixed32,105,opt,name=optional_float,proto3"`
-	OptionalDouble  float64                                `protobuf:"fixed64,106,opt,name=optional_double,proto3"`
-	OptionalString  string                                 `protobuf:"bytes,107,opt,name=optional_string,proto3"`
-	OptionalBytes   []byte                                 `protobuf:"bytes,108,opt,name=optional_bytes,proto3"`
-	OptionalEnum    descriptorpb.FieldDescriptorProto_Type `protobuf:"varint,109,req,name=optional_enum,proto3"`
-	OptionalMessage descriptorpb.FieldOptions              `protobuf:"bytes,110,req,name=optional_message,proto3"`
-
-	RepeatedBool    []bool                                   `protobuf:"varint,200,rep,name=repeated_bool,proto3"`
-	RepeatedInt32   []int32                                  `protobuf:"varint,201,rep,name=repeated_int32,proto3"`
-	RepeatedInt64   []int64                                  `protobuf:"varint,202,rep,name=repeated_int64,proto3"`
-	RepeatedUint32  []uint32                                 `protobuf:"varint,203,rep,name=repeated_uint32,proto3"`
-	RepeatedUint64  []uint64                                 `protobuf:"varint,204,rep,name=repeated_uint64,proto3"`
-	RepeatedFloat   []float32                                `protobuf:"fixed32,205,rep,name=repeated_float,proto3"`
-	RepeatedDouble  []float64                                `protobuf:"fixed64,206,rep,name=repeated_double,proto3"`
-	RepeatedString  []string                                 `protobuf:"bytes,207,rep,name=repeated_string,proto3"`
-	RepeatedBytes   [][]byte                                 `protobuf:"bytes,208,rep,name=repeated_bytes,proto3"`
-	RepeatedEnum    []descriptorpb.FieldDescriptorProto_Type `protobuf:"varint,209,rep,name=repeated_enum,proto3"`
-	RepeatedMessage []descriptorpb.FieldOptions              `protobuf:"bytes,210,rep,name=repeated_message,proto3"`
-
-	MapBool    map[string]bool                                   `protobuf:"bytes,300,rep,name=map_bool,proto3" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapInt32   map[string]int32                                  `protobuf:"bytes,301,rep,name=map_int32,proto3" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapInt64   map[string]int64                                  `protobuf:"bytes,302,rep,name=map_int64,proto3" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapUint32  map[string]uint32                                 `protobuf:"bytes,303,rep,name=map_uint32,proto3" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapUint64  map[string]uint64                                 `protobuf:"bytes,304,rep,name=map_uint64,proto3" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapFloat   map[string]float32                                `protobuf:"bytes,305,rep,name=map_float,proto3" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapDouble  map[string]float64                                `protobuf:"bytes,306,rep,name=map_double,proto3" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapString  map[string]string                                 `protobuf:"bytes,307,rep,name=map_string,proto3" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapBytes   map[string][]byte                                 `protobuf:"bytes,308,rep,name=map_bytes,proto3" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapEnum    map[string]descriptorpb.FieldDescriptorProto_Type `protobuf:"bytes,309,rep,name=map_enum,proto3" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapMessage map[string]descriptorpb.FieldOptions              `protobuf:"bytes,310,rep,name=map_message,proto3" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-
-	OneofUnion isProto3_OneofUnion `protobuf_oneof:"oneof_union"`
-}
-
-func (x *Proto3) ProtoMessage()  {}
-func (x *Proto3) Reset()         { *x = Proto3{} }
-func (x *Proto3) String() string { return prototext.Format(protoimpl.X.ProtoMessageV2Of(x)) }
-func (x *Proto3) XXX_OneofWrappers() []interface{} {
-	return []interface{}{
-		(*Proto3_OneofBool)(nil),
-		(*Proto3_OneofInt32)(nil),
-		(*Proto3_OneofInt64)(nil),
-		(*Proto3_OneofUint32)(nil),
-		(*Proto3_OneofUint64)(nil),
-		(*Proto3_OneofFloat)(nil),
-		(*Proto3_OneofDouble)(nil),
-		(*Proto3_OneofString)(nil),
-		(*Proto3_OneofBytes)(nil),
-		(*Proto3_OneofEnum)(nil),
-		(*Proto3_OneofMessage)(nil),
-	}
-}
-
-type isProto3_OneofUnion interface{ isProto3_OneofUnion() }
-
-type Proto3_OneofBool struct {
-	OneofBool bool `protobuf:"varint,400,opt,name=oneof_bool,proto3,oneof"`
-}
-type Proto3_OneofInt32 struct {
-	OneofInt32 int32 `protobuf:"varint,401,opt,name=oneof_int32,proto3,oneof"`
-}
-type Proto3_OneofInt64 struct {
-	OneofInt64 int64 `protobuf:"varint,402,opt,name=oneof_int64,proto3,oneof"`
-}
-type Proto3_OneofUint32 struct {
-	OneofUint32 uint32 `protobuf:"varint,403,opt,name=oneof_uint32,proto3,oneof"`
-}
-type Proto3_OneofUint64 struct {
-	OneofUint64 uint64 `protobuf:"varint,404,opt,name=oneof_uint64,proto3,oneof"`
-}
-type Proto3_OneofFloat struct {
-	OneofFloat float32 `protobuf:"fixed32,405,opt,name=oneof_float,proto3,oneof"`
-}
-type Proto3_OneofDouble struct {
-	OneofDouble float64 `protobuf:"fixed64,406,opt,name=oneof_double,proto3,oneof"`
-}
-type Proto3_OneofString struct {
-	OneofString string `protobuf:"bytes,407,opt,name=oneof_string,proto3,oneof"`
-}
-type Proto3_OneofBytes struct {
-	OneofBytes []byte `protobuf:"bytes,408,opt,name=oneof_bytes,proto3,oneof"`
-}
-type Proto3_OneofEnum struct {
-	OneofEnum descriptorpb.FieldDescriptorProto_Type `protobuf:"varint,409,opt,name=oneof_enum,proto3,oneof"`
-}
-type Proto3_OneofMessage struct {
-	OneofMessage descriptorpb.FieldOptions `protobuf:"bytes,410,opt,name=oneof_message,proto3,oneof"`
-}
-
-func (*Proto3_OneofBool) isProto3_OneofUnion()    {}
-func (*Proto3_OneofInt32) isProto3_OneofUnion()   {}
-func (*Proto3_OneofInt64) isProto3_OneofUnion()   {}
-func (*Proto3_OneofUint32) isProto3_OneofUnion()  {}
-func (*Proto3_OneofUint64) isProto3_OneofUnion()  {}
-func (*Proto3_OneofFloat) isProto3_OneofUnion()   {}
-func (*Proto3_OneofDouble) isProto3_OneofUnion()  {}
-func (*Proto3_OneofString) isProto3_OneofUnion()  {}
-func (*Proto3_OneofBytes) isProto3_OneofUnion()   {}
-func (*Proto3_OneofEnum) isProto3_OneofUnion()    {}
-func (*Proto3_OneofMessage) isProto3_OneofUnion() {}
-
-type Methods struct {
-	OptionalInt32 int32 `protobuf:"varint,101,opt,name=optional_int32"`
-}
-
-func (x *Methods) ProtoMessage()  {}
-func (x *Methods) Reset()         { *x = Methods{} }
-func (x *Methods) String() string { return prototext.Format(protoimpl.X.ProtoMessageV2Of(x)) }
-
-func (x *Methods) Marshal() ([]byte, error) {
-	var b []byte
-	b = protowire.AppendTag(b, 101, protowire.VarintType)
-	b = protowire.AppendVarint(b, uint64(x.OptionalInt32))
-	return b, nil
-}
-
-func (x *Methods) Unmarshal(b []byte) error {
-	for len(b) > 0 {
-		num, typ, n := protowire.ConsumeTag(b)
-		if n < 0 {
-			return protowire.ParseError(n)
-		}
-		b = b[n:]
-		if num != 101 || typ != protowire.VarintType {
-			n = protowire.ConsumeFieldValue(num, typ, b)
-			if n < 0 {
-				return protowire.ParseError(n)
-			}
-			b = b[n:]
-			continue
-		}
-		v, n := protowire.ConsumeVarint(b)
-		if n < 0 {
-			return protowire.ParseError(n)
-		}
-		b = b[n:]
-		x.OptionalInt32 = int32(v)
-	}
-	return nil
-}
diff --git a/internal/testprotos/nullable/nullable_test.go b/internal/testprotos/nullable/nullable_test.go
deleted file mode 100644
index 9c288b9..0000000
--- a/internal/testprotos/nullable/nullable_test.go
+++ /dev/null
@@ -1,214 +0,0 @@
-// Copyright 2021 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package nullable
-
-import (
-	"reflect"
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/runtime/protoimpl"
-	"google.golang.org/protobuf/testing/protocmp"
-)
-
-func Test(t *testing.T) {
-	for _, mt := range []protoreflect.MessageType{
-		protoimpl.X.ProtoMessageV2Of((*Proto2)(nil)).ProtoReflect().Type(),
-		protoimpl.X.ProtoMessageV2Of((*Proto3)(nil)).ProtoReflect().Type(),
-	} {
-		t.Run(string(mt.Descriptor().FullName()), func(t *testing.T) {
-			testEmptyMessage(t, mt.Zero(), false)
-			testEmptyMessage(t, mt.New(), true)
-			//testMethods(t, mt)
-		})
-	}
-}
-
-var methodTestProtos = []protoreflect.MessageType{
-	protoimpl.X.ProtoMessageV2Of((*Methods)(nil)).ProtoReflect().Type(),
-}
-
-func TestMethods(t *testing.T) {
-	for _, mt := range methodTestProtos {
-		t.Run(string(mt.Descriptor().FullName()), func(t *testing.T) {
-			testMethods(t, mt)
-		})
-	}
-}
-
-func testMethods(t *testing.T, mt protoreflect.MessageType) {
-	m1 := mt.New()
-	populated := testPopulateMessage(t, m1, 2)
-	b, err := proto.Marshal(m1.Interface())
-	if err != nil {
-		t.Errorf("proto.Marshal error: %v", err)
-	}
-	if populated && len(b) == 0 {
-		t.Errorf("len(proto.Marshal) = 0, want >0")
-	}
-	m2 := mt.New()
-	if err := proto.Unmarshal(b, m2.Interface()); err != nil {
-		t.Errorf("proto.Unmarshal error: %v", err)
-	}
-	if diff := cmp.Diff(m1.Interface(), m2.Interface(), protocmp.Transform()); diff != "" {
-		t.Errorf("message mismatch:\n%v", diff)
-	}
-	proto.Reset(m2.Interface())
-	testEmptyMessage(t, m2, true)
-	proto.Merge(m2.Interface(), m1.Interface())
-	if diff := cmp.Diff(m1.Interface(), m2.Interface(), protocmp.Transform()); diff != "" {
-		t.Errorf("message mismatch:\n%v", diff)
-	}
-	proto.Merge(mt.New().Interface(), mt.Zero().Interface())
-}
-
-func testEmptyMessage(t *testing.T, m protoreflect.Message, wantValid bool) {
-	numFields := func(m protoreflect.Message) (n int) {
-		m.Range(func(protoreflect.FieldDescriptor, protoreflect.Value) bool {
-			n++
-			return true
-		})
-		return n
-	}
-
-	md := m.Descriptor()
-	if gotValid := m.IsValid(); gotValid != wantValid {
-		t.Errorf("%v.IsValid = %v, want %v", md.FullName(), gotValid, wantValid)
-	}
-	m.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {
-		t.Errorf("%v.Range iterated over field %v, want no iteration", md.FullName(), fd.Name())
-		return true
-	})
-	fds := md.Fields()
-	for i := 0; i < fds.Len(); i++ {
-		fd := fds.Get(i)
-		if m.Has(fd) {
-			t.Errorf("%v.Has(%v) = true, want false", md.FullName(), fd.Name())
-		}
-		v := m.Get(fd)
-		switch {
-		case fd.IsList():
-			if n := v.List().Len(); n > 0 {
-				t.Errorf("%v.Get(%v).List().Len() = %v, want 0", md.FullName(), fd.Name(), n)
-			}
-			ls := m.NewField(fd).List()
-			if fd.Message() != nil {
-				if n := numFields(ls.NewElement().Message()); n > 0 {
-					t.Errorf("%v.NewField(%v).List().NewElement().Message().Len() = %v, want 0", md.FullName(), fd.Name(), n)
-				}
-			}
-		case fd.IsMap():
-			if n := v.Map().Len(); n > 0 {
-				t.Errorf("%v.Get(%v).Map().Len() = %v, want 0", md.FullName(), fd.Name(), n)
-			}
-			ms := m.NewField(fd).Map()
-			if fd.MapValue().Message() != nil {
-				if n := numFields(ms.NewValue().Message()); n > 0 {
-					t.Errorf("%v.NewField(%v).Map().NewValue().Message().Len() = %v, want 0", md.FullName(), fd.Name(), n)
-				}
-			}
-		case fd.Message() != nil:
-			if n := numFields(v.Message()); n > 0 {
-				t.Errorf("%v.Get(%v).Message().Len() = %v, want 0", md.FullName(), fd.Name(), n)
-			}
-			if n := numFields(m.NewField(fd).Message()); n > 0 {
-				t.Errorf("%v.NewField(%v).Message().Len() = %v, want 0", md.FullName(), fd.Name(), n)
-			}
-		default:
-			if !reflect.DeepEqual(v.Interface(), fd.Default().Interface()) {
-				t.Errorf("%v.Get(%v) = %v, want %v", md.FullName(), fd.Name(), v, fd.Default())
-			}
-			m.NewField(fd) // should not panic
-		}
-	}
-	ods := md.Oneofs()
-	for i := 0; i < ods.Len(); i++ {
-		od := ods.Get(i)
-		if fd := m.WhichOneof(od); fd != nil {
-			t.Errorf("%v.WhichOneof(%v) = %v, want nil", md.FullName(), od.Name(), fd.Name())
-		}
-	}
-	if b := m.GetUnknown(); b != nil {
-		t.Errorf("%v.GetUnknown() = %v, want nil", md.FullName(), b)
-	}
-}
-
-func testPopulateMessage(t *testing.T, m protoreflect.Message, depth int) bool {
-	if depth == 0 {
-		return false
-	}
-	md := m.Descriptor()
-	fds := md.Fields()
-	var populatedMessage bool
-	for i := 0; i < fds.Len(); i++ {
-		populatedField := true
-		fd := fds.Get(i)
-		m.Clear(fd) // should not panic
-		switch {
-		case fd.IsList():
-			ls := m.Mutable(fd).List()
-			if fd.Message() == nil {
-				ls.Append(scalarValue(fd.Kind()))
-			} else {
-				populatedField = testPopulateMessage(t, ls.AppendMutable().Message(), depth-1)
-			}
-		case fd.IsMap():
-			ms := m.Mutable(fd).Map()
-			if fd.MapValue().Message() == nil {
-				ms.Set(
-					scalarValue(fd.MapKey().Kind()).MapKey(),
-					scalarValue(fd.MapValue().Kind()),
-				)
-			} else {
-				// NOTE: Map.Mutable does not work with non-nullable fields.
-				m2 := ms.NewValue().Message()
-				populatedField = testPopulateMessage(t, m2, depth-1)
-				ms.Set(
-					scalarValue(fd.MapKey().Kind()).MapKey(),
-					protoreflect.ValueOfMessage(m2),
-				)
-			}
-		case fd.Message() != nil:
-			populatedField = testPopulateMessage(t, m.Mutable(fd).Message(), depth-1)
-		default:
-			m.Set(fd, scalarValue(fd.Kind()))
-		}
-		if populatedField && !m.Has(fd) {
-			t.Errorf("%v.Has(%v) = false, want true", md.FullName(), fd.Name())
-		}
-		populatedMessage = populatedMessage || populatedField
-	}
-	m.SetUnknown(m.GetUnknown()) // should not panic
-	return populatedMessage
-}
-
-func scalarValue(k protoreflect.Kind) protoreflect.Value {
-	switch k {
-	case protoreflect.BoolKind:
-		return protoreflect.ValueOfBool(true)
-	case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:
-		return protoreflect.ValueOfInt32(-32)
-	case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:
-		return protoreflect.ValueOfInt64(-64)
-	case protoreflect.Uint32Kind, protoreflect.Fixed32Kind:
-		return protoreflect.ValueOfUint32(32)
-	case protoreflect.Uint64Kind, protoreflect.Fixed64Kind:
-		return protoreflect.ValueOfUint64(64)
-	case protoreflect.FloatKind:
-		return protoreflect.ValueOfFloat32(32.32)
-	case protoreflect.DoubleKind:
-		return protoreflect.ValueOfFloat64(64.64)
-	case protoreflect.StringKind:
-		return protoreflect.ValueOfString(string("string"))
-	case protoreflect.BytesKind:
-		return protoreflect.ValueOfBytes([]byte("bytes"))
-	case protoreflect.EnumKind:
-		return protoreflect.ValueOfEnum(1)
-	default:
-		panic("unknown kind: " + k.String())
-	}
-}
diff --git a/internal/testprotos/order/order.pb.go b/internal/testprotos/order/order.pb.go
deleted file mode 100644
index 0d7482b..0000000
--- a/internal/testprotos/order/order.pb.go
+++ /dev/null
@@ -1,249 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Messages in this file are used to test wire encoding order.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/order/order.proto
-
-package order
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Message struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	Field_2 *string `protobuf:"bytes,2,opt,name=field_2,json=field2" json:"field_2,omitempty"`
-	Field_1 *string `protobuf:"bytes,1,opt,name=field_1,json=field1" json:"field_1,omitempty"`
-	// Types that are assignable to Oneof_1:
-	//	*Message_Field_10
-	Oneof_1  isMessage_Oneof_1 `protobuf_oneof:"oneof_1"`
-	Field_20 *string           `protobuf:"bytes,20,opt,name=field_20,json=field20" json:"field_20,omitempty"`
-}
-
-func (x *Message) Reset() {
-	*x = Message{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_order_order_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message) ProtoMessage() {}
-
-func (x *Message) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_order_order_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message.ProtoReflect.Descriptor instead.
-func (*Message) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_order_order_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Message) GetField_2() string {
-	if x != nil && x.Field_2 != nil {
-		return *x.Field_2
-	}
-	return ""
-}
-
-func (x *Message) GetField_1() string {
-	if x != nil && x.Field_1 != nil {
-		return *x.Field_1
-	}
-	return ""
-}
-
-func (m *Message) GetOneof_1() isMessage_Oneof_1 {
-	if m != nil {
-		return m.Oneof_1
-	}
-	return nil
-}
-
-func (x *Message) GetField_10() string {
-	if x, ok := x.GetOneof_1().(*Message_Field_10); ok {
-		return x.Field_10
-	}
-	return ""
-}
-
-func (x *Message) GetField_20() string {
-	if x != nil && x.Field_20 != nil {
-		return *x.Field_20
-	}
-	return ""
-}
-
-type isMessage_Oneof_1 interface {
-	isMessage_Oneof_1()
-}
-
-type Message_Field_10 struct {
-	Field_10 string `protobuf:"bytes,10,opt,name=field_10,json=field10,oneof"`
-}
-
-func (*Message_Field_10) isMessage_Oneof_1() {}
-
-var file_internal_testprotos_order_order_proto_extTypes = []protoimpl.ExtensionInfo{
-	{
-		ExtendedType:  (*Message)(nil),
-		ExtensionType: (*string)(nil),
-		Field:         30,
-		Name:          "goproto.proto.order.field_30",
-		Tag:           "bytes,30,opt,name=field_30",
-		Filename:      "internal/testprotos/order/order.proto",
-	},
-	{
-		ExtendedType:  (*Message)(nil),
-		ExtensionType: (*string)(nil),
-		Field:         31,
-		Name:          "goproto.proto.order.field_31",
-		Tag:           "bytes,31,opt,name=field_31",
-		Filename:      "internal/testprotos/order/order.proto",
-	},
-	{
-		ExtendedType:  (*Message)(nil),
-		ExtensionType: (*string)(nil),
-		Field:         32,
-		Name:          "goproto.proto.order.field_32",
-		Tag:           "bytes,32,opt,name=field_32",
-		Filename:      "internal/testprotos/order/order.proto",
-	},
-}
-
-// Extension fields to Message.
-var (
-	// optional string field_30 = 30;
-	E_Field_30 = &file_internal_testprotos_order_order_proto_extTypes[0]
-	// optional string field_31 = 31;
-	E_Field_31 = &file_internal_testprotos_order_order_proto_extTypes[1]
-	// optional string field_32 = 32;
-	E_Field_32 = &file_internal_testprotos_order_order_proto_extTypes[2]
-)
-
-var File_internal_testprotos_order_order_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_order_order_proto_rawDesc = []byte{
-	0x0a, 0x25, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2f, 0x6f, 0x72, 0x64, 0x65,
-	0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x84, 0x01, 0x0a,
-	0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x5f, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x12, 0x17, 0x0a, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x31, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x12, 0x1b, 0x0a, 0x08, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x5f, 0x31, 0x30, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x31, 0x30, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x5f, 0x32, 0x30, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x30, 0x2a, 0x04, 0x08, 0x1e, 0x10, 0x29, 0x42, 0x09, 0x0a, 0x07, 0x6f, 0x6e, 0x65, 0x6f,
-	0x66, 0x5f, 0x31, 0x3a, 0x37, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x33, 0x30, 0x12,
-	0x1c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x6f, 0x72, 0x64, 0x65, 0x72, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x1e, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x30, 0x3a, 0x37, 0x0a, 0x08,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x33, 0x31, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x33, 0x31, 0x3a, 0x37, 0x0a, 0x08, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x33,
-	0x32, 0x12, 0x1c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18,
-	0x20, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x33, 0x32, 0x42, 0x36,
-	0x5a, 0x34, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
-	0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74,
-	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
-	0x2f, 0x6f, 0x72, 0x64, 0x65, 0x72,
-}
-
-var (
-	file_internal_testprotos_order_order_proto_rawDescOnce sync.Once
-	file_internal_testprotos_order_order_proto_rawDescData = file_internal_testprotos_order_order_proto_rawDesc
-)
-
-func file_internal_testprotos_order_order_proto_rawDescGZIP() []byte {
-	file_internal_testprotos_order_order_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_order_order_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_order_order_proto_rawDescData)
-	})
-	return file_internal_testprotos_order_order_proto_rawDescData
-}
-
-var file_internal_testprotos_order_order_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_internal_testprotos_order_order_proto_goTypes = []interface{}{
-	(*Message)(nil), // 0: goproto.proto.order.Message
-}
-var file_internal_testprotos_order_order_proto_depIdxs = []int32{
-	0, // 0: goproto.proto.order.field_30:extendee -> goproto.proto.order.Message
-	0, // 1: goproto.proto.order.field_31:extendee -> goproto.proto.order.Message
-	0, // 2: goproto.proto.order.field_32:extendee -> goproto.proto.order.Message
-	3, // [3:3] is the sub-list for method output_type
-	3, // [3:3] is the sub-list for method input_type
-	3, // [3:3] is the sub-list for extension type_name
-	0, // [0:3] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_order_order_proto_init() }
-func file_internal_testprotos_order_order_proto_init() {
-	if File_internal_testprotos_order_order_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_internal_testprotos_order_order_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-	}
-	file_internal_testprotos_order_order_proto_msgTypes[0].OneofWrappers = []interface{}{
-		(*Message_Field_10)(nil),
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_order_order_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 3,
-			NumServices:   0,
-		},
-		GoTypes:           file_internal_testprotos_order_order_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_order_order_proto_depIdxs,
-		MessageInfos:      file_internal_testprotos_order_order_proto_msgTypes,
-		ExtensionInfos:    file_internal_testprotos_order_order_proto_extTypes,
-	}.Build()
-	File_internal_testprotos_order_order_proto = out.File
-	file_internal_testprotos_order_order_proto_rawDesc = nil
-	file_internal_testprotos_order_order_proto_goTypes = nil
-	file_internal_testprotos_order_order_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/order/order.proto b/internal/testprotos/order/order.proto
deleted file mode 100644
index 9333ace..0000000
--- a/internal/testprotos/order/order.proto
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Messages in this file are used to test wire encoding order.
-
-syntax = "proto2";
-
-package goproto.proto.order;
-
-option go_package = "google.golang.org/protobuf/internal/testprotos/order";
-
-message Message {
-  optional string field_2 = 2;
-  optional string field_1 = 1;
-
-  oneof oneof_1 {
-    string field_10 = 10;
-  }
-
-  extensions 30 to 40;
-
-  optional string field_20 = 20;
-}
-
-extend Message {
-  optional string field_30 = 30;
-  optional string field_31 = 31;
-  optional string field_32 = 32;
-}
diff --git a/internal/testprotos/registry/test.pb.go b/internal/testprotos/registry/test.pb.go
deleted file mode 100644
index c2613c7..0000000
--- a/internal/testprotos/registry/test.pb.go
+++ /dev/null
@@ -1,573 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Different proto type definitions for testing the Types registry.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/registry/test.proto
-
-package registry
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Enum1 int32
-
-const (
-	Enum1_ONE Enum1 = 1
-)
-
-// Enum value maps for Enum1.
-var (
-	Enum1_name = map[int32]string{
-		1: "ONE",
-	}
-	Enum1_value = map[string]int32{
-		"ONE": 1,
-	}
-)
-
-func (x Enum1) Enum() *Enum1 {
-	p := new(Enum1)
-	*p = x
-	return p
-}
-
-func (x Enum1) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum1) Descriptor() protoreflect.EnumDescriptor {
-	return file_internal_testprotos_registry_test_proto_enumTypes[0].Descriptor()
-}
-
-func (Enum1) Type() protoreflect.EnumType {
-	return &file_internal_testprotos_registry_test_proto_enumTypes[0]
-}
-
-func (x Enum1) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum1) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum1(num)
-	return nil
-}
-
-// Deprecated: Use Enum1.Descriptor instead.
-func (Enum1) EnumDescriptor() ([]byte, []int) {
-	return file_internal_testprotos_registry_test_proto_rawDescGZIP(), []int{0}
-}
-
-type Enum2 int32
-
-const (
-	Enum2_UNO Enum2 = 1
-)
-
-// Enum value maps for Enum2.
-var (
-	Enum2_name = map[int32]string{
-		1: "UNO",
-	}
-	Enum2_value = map[string]int32{
-		"UNO": 1,
-	}
-)
-
-func (x Enum2) Enum() *Enum2 {
-	p := new(Enum2)
-	*p = x
-	return p
-}
-
-func (x Enum2) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum2) Descriptor() protoreflect.EnumDescriptor {
-	return file_internal_testprotos_registry_test_proto_enumTypes[1].Descriptor()
-}
-
-func (Enum2) Type() protoreflect.EnumType {
-	return &file_internal_testprotos_registry_test_proto_enumTypes[1]
-}
-
-func (x Enum2) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum2) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum2(num)
-	return nil
-}
-
-// Deprecated: Use Enum2.Descriptor instead.
-func (Enum2) EnumDescriptor() ([]byte, []int) {
-	return file_internal_testprotos_registry_test_proto_rawDescGZIP(), []int{1}
-}
-
-type Enum3 int32
-
-const (
-	Enum3_YI Enum3 = 1
-)
-
-// Enum value maps for Enum3.
-var (
-	Enum3_name = map[int32]string{
-		1: "YI",
-	}
-	Enum3_value = map[string]int32{
-		"YI": 1,
-	}
-)
-
-func (x Enum3) Enum() *Enum3 {
-	p := new(Enum3)
-	*p = x
-	return p
-}
-
-func (x Enum3) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum3) Descriptor() protoreflect.EnumDescriptor {
-	return file_internal_testprotos_registry_test_proto_enumTypes[2].Descriptor()
-}
-
-func (Enum3) Type() protoreflect.EnumType {
-	return &file_internal_testprotos_registry_test_proto_enumTypes[2]
-}
-
-func (x Enum3) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum3) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum3(num)
-	return nil
-}
-
-// Deprecated: Use Enum3.Descriptor instead.
-func (Enum3) EnumDescriptor() ([]byte, []int) {
-	return file_internal_testprotos_registry_test_proto_rawDescGZIP(), []int{2}
-}
-
-type Message1 struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-}
-
-func (x *Message1) Reset() {
-	*x = Message1{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_registry_test_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message1) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message1) ProtoMessage() {}
-
-func (x *Message1) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_registry_test_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message1.ProtoReflect.Descriptor instead.
-func (*Message1) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_registry_test_proto_rawDescGZIP(), []int{0}
-}
-
-type Message2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message2) Reset() {
-	*x = Message2{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_registry_test_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message2) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message2) ProtoMessage() {}
-
-func (x *Message2) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_registry_test_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message2.ProtoReflect.Descriptor instead.
-func (*Message2) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_registry_test_proto_rawDescGZIP(), []int{1}
-}
-
-type Message3 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message3) Reset() {
-	*x = Message3{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_registry_test_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message3) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message3) ProtoMessage() {}
-
-func (x *Message3) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_registry_test_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message3.ProtoReflect.Descriptor instead.
-func (*Message3) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_registry_test_proto_rawDescGZIP(), []int{2}
-}
-
-type Message4 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	BoolField *bool `protobuf:"varint,30,opt,name=bool_field,json=boolField" json:"bool_field,omitempty"`
-}
-
-func (x *Message4) Reset() {
-	*x = Message4{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_registry_test_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message4) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message4) ProtoMessage() {}
-
-func (x *Message4) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_registry_test_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message4.ProtoReflect.Descriptor instead.
-func (*Message4) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_registry_test_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Message4) GetBoolField() bool {
-	if x != nil && x.BoolField != nil {
-		return *x.BoolField
-	}
-	return false
-}
-
-var file_internal_testprotos_registry_test_proto_extTypes = []protoimpl.ExtensionInfo{
-	{
-		ExtendedType:  (*Message1)(nil),
-		ExtensionType: (*string)(nil),
-		Field:         11,
-		Name:          "testprotos.string_field",
-		Tag:           "bytes,11,opt,name=string_field",
-		Filename:      "internal/testprotos/registry/test.proto",
-	},
-	{
-		ExtendedType:  (*Message1)(nil),
-		ExtensionType: (*Enum1)(nil),
-		Field:         12,
-		Name:          "testprotos.enum_field",
-		Tag:           "varint,12,opt,name=enum_field,enum=testprotos.Enum1",
-		Filename:      "internal/testprotos/registry/test.proto",
-	},
-	{
-		ExtendedType:  (*Message1)(nil),
-		ExtensionType: (*Message2)(nil),
-		Field:         13,
-		Name:          "testprotos.message_field",
-		Tag:           "bytes,13,opt,name=message_field",
-		Filename:      "internal/testprotos/registry/test.proto",
-	},
-	{
-		ExtendedType:  (*Message1)(nil),
-		ExtensionType: (*Message2)(nil),
-		Field:         21,
-		Name:          "testprotos.Message4.message_field",
-		Tag:           "bytes,21,opt,name=message_field",
-		Filename:      "internal/testprotos/registry/test.proto",
-	},
-	{
-		ExtendedType:  (*Message1)(nil),
-		ExtensionType: (*Enum1)(nil),
-		Field:         22,
-		Name:          "testprotos.Message4.enum_field",
-		Tag:           "varint,22,opt,name=enum_field,enum=testprotos.Enum1",
-		Filename:      "internal/testprotos/registry/test.proto",
-	},
-	{
-		ExtendedType:  (*Message1)(nil),
-		ExtensionType: (*string)(nil),
-		Field:         23,
-		Name:          "testprotos.Message4.string_field",
-		Tag:           "bytes,23,opt,name=string_field",
-		Filename:      "internal/testprotos/registry/test.proto",
-	},
-}
-
-// Extension fields to Message1.
-var (
-	// optional string string_field = 11;
-	E_StringField = &file_internal_testprotos_registry_test_proto_extTypes[0]
-	// optional testprotos.Enum1 enum_field = 12;
-	E_EnumField = &file_internal_testprotos_registry_test_proto_extTypes[1]
-	// optional testprotos.Message2 message_field = 13;
-	E_MessageField = &file_internal_testprotos_registry_test_proto_extTypes[2]
-	// optional testprotos.Message2 message_field = 21;
-	E_Message4_MessageField = &file_internal_testprotos_registry_test_proto_extTypes[3]
-	// optional testprotos.Enum1 enum_field = 22;
-	E_Message4_EnumField = &file_internal_testprotos_registry_test_proto_extTypes[4]
-	// optional string string_field = 23;
-	E_Message4_StringField = &file_internal_testprotos_registry_test_proto_extTypes[5]
-)
-
-var File_internal_testprotos_registry_test_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_registry_test_proto_rawDesc = []byte{
-	0x0a, 0x27, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x74,
-	0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x22, 0x14, 0x0a, 0x08, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x31, 0x2a, 0x08, 0x08, 0x0a, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x0a, 0x0a, 0x08, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x22, 0x0a, 0x0a, 0x08, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x33, 0x22, 0xfb, 0x01, 0x0a, 0x08, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x34,
-	0x12, 0x1d, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x1e,
-	0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x32,
-	0x4f, 0x0a, 0x0d, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64,
-	0x12, 0x14, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x32, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64,
-	0x32, 0x46, 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x14,
-	0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x31, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x52, 0x09, 0x65,
-	0x6e, 0x75, 0x6d, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x37, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x14, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x18, 0x17,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x65, 0x6c,
-	0x64, 0x2a, 0x10, 0x0a, 0x05, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x4e,
-	0x45, 0x10, 0x01, 0x2a, 0x10, 0x0a, 0x05, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x12, 0x07, 0x0a, 0x03,
-	0x55, 0x4e, 0x4f, 0x10, 0x01, 0x2a, 0x0f, 0x0a, 0x05, 0x45, 0x6e, 0x75, 0x6d, 0x33, 0x12, 0x06,
-	0x0a, 0x02, 0x59, 0x49, 0x10, 0x01, 0x3a, 0x37, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x14, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x18, 0x0b, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x3a,
-	0x46, 0x0a, 0x0a, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x14, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x31, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x31, 0x52, 0x09, 0x65, 0x6e,
-	0x75, 0x6d, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x3a, 0x4f, 0x0a, 0x0d, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x14, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x18, 0x0d,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x73, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x52, 0x0c, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x39, 0x5a, 0x37, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f,
-	0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x72, 0x65, 0x67, 0x69, 0x73,
-	0x74, 0x72, 0x79,
-}
-
-var (
-	file_internal_testprotos_registry_test_proto_rawDescOnce sync.Once
-	file_internal_testprotos_registry_test_proto_rawDescData = file_internal_testprotos_registry_test_proto_rawDesc
-)
-
-func file_internal_testprotos_registry_test_proto_rawDescGZIP() []byte {
-	file_internal_testprotos_registry_test_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_registry_test_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_registry_test_proto_rawDescData)
-	})
-	return file_internal_testprotos_registry_test_proto_rawDescData
-}
-
-var file_internal_testprotos_registry_test_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
-var file_internal_testprotos_registry_test_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
-var file_internal_testprotos_registry_test_proto_goTypes = []interface{}{
-	(Enum1)(0),       // 0: testprotos.Enum1
-	(Enum2)(0),       // 1: testprotos.Enum2
-	(Enum3)(0),       // 2: testprotos.Enum3
-	(*Message1)(nil), // 3: testprotos.Message1
-	(*Message2)(nil), // 4: testprotos.Message2
-	(*Message3)(nil), // 5: testprotos.Message3
-	(*Message4)(nil), // 6: testprotos.Message4
-}
-var file_internal_testprotos_registry_test_proto_depIdxs = []int32{
-	3,  // 0: testprotos.string_field:extendee -> testprotos.Message1
-	3,  // 1: testprotos.enum_field:extendee -> testprotos.Message1
-	3,  // 2: testprotos.message_field:extendee -> testprotos.Message1
-	3,  // 3: testprotos.Message4.message_field:extendee -> testprotos.Message1
-	3,  // 4: testprotos.Message4.enum_field:extendee -> testprotos.Message1
-	3,  // 5: testprotos.Message4.string_field:extendee -> testprotos.Message1
-	0,  // 6: testprotos.enum_field:type_name -> testprotos.Enum1
-	4,  // 7: testprotos.message_field:type_name -> testprotos.Message2
-	4,  // 8: testprotos.Message4.message_field:type_name -> testprotos.Message2
-	0,  // 9: testprotos.Message4.enum_field:type_name -> testprotos.Enum1
-	10, // [10:10] is the sub-list for method output_type
-	10, // [10:10] is the sub-list for method input_type
-	6,  // [6:10] is the sub-list for extension type_name
-	0,  // [0:6] is the sub-list for extension extendee
-	0,  // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_registry_test_proto_init() }
-func file_internal_testprotos_registry_test_proto_init() {
-	if File_internal_testprotos_registry_test_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_internal_testprotos_registry_test_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message1); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_registry_test_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message2); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_registry_test_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message3); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_registry_test_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message4); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_registry_test_proto_rawDesc,
-			NumEnums:      3,
-			NumMessages:   4,
-			NumExtensions: 6,
-			NumServices:   0,
-		},
-		GoTypes:           file_internal_testprotos_registry_test_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_registry_test_proto_depIdxs,
-		EnumInfos:         file_internal_testprotos_registry_test_proto_enumTypes,
-		MessageInfos:      file_internal_testprotos_registry_test_proto_msgTypes,
-		ExtensionInfos:    file_internal_testprotos_registry_test_proto_extTypes,
-	}.Build()
-	File_internal_testprotos_registry_test_proto = out.File
-	file_internal_testprotos_registry_test_proto_rawDesc = nil
-	file_internal_testprotos_registry_test_proto_goTypes = nil
-	file_internal_testprotos_registry_test_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/registry/test.proto b/internal/testprotos/registry/test.proto
deleted file mode 100644
index 32452b0..0000000
--- a/internal/testprotos/registry/test.proto
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Different proto type definitions for testing the Types registry.
-syntax = "proto2";
-
-package testprotos;
-option go_package = "google.golang.org/protobuf/internal/testprotos/registry";
-
-message Message1 {
-  extensions 10 to max;
-}
-
-message Message2 {}
-
-message Message3 {}
-
-enum Enum1 {
-  ONE = 1;
-}
-
-enum Enum2 {
-  UNO = 1;
-}
-
-enum Enum3 {
-  YI = 1;
-}
-
-extend Message1 {
-  optional string string_field = 11;
-  optional Enum1 enum_field = 12;
-  optional Message2 message_field = 13;
-}
-
-message Message4 {
-  optional bool bool_field = 30;
-
-  extend Message1 {
-    optional Message2 message_field = 21;
-    optional Enum1 enum_field = 22;
-    optional string string_field = 23;
-  }
-}
diff --git a/internal/testprotos/required/required.pb.go b/internal/testprotos/required/required.pb.go
deleted file mode 100644
index 065fcbf..0000000
--- a/internal/testprotos/required/required.pb.go
+++ /dev/null
@@ -1,1121 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/required/required.proto
-
-package required
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Int32 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	V *int32 `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
-}
-
-func (x *Int32) Reset() {
-	*x = Int32{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_required_required_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Int32) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Int32) ProtoMessage() {}
-
-func (x *Int32) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_required_required_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Int32.ProtoReflect.Descriptor instead.
-func (*Int32) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_required_required_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Int32) GetV() int32 {
-	if x != nil && x.V != nil {
-		return *x.V
-	}
-	return 0
-}
-
-type Int64 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	V *int64 `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
-}
-
-func (x *Int64) Reset() {
-	*x = Int64{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_required_required_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Int64) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Int64) ProtoMessage() {}
-
-func (x *Int64) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_required_required_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Int64.ProtoReflect.Descriptor instead.
-func (*Int64) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_required_required_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Int64) GetV() int64 {
-	if x != nil && x.V != nil {
-		return *x.V
-	}
-	return 0
-}
-
-type Uint32 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	V *uint32 `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
-}
-
-func (x *Uint32) Reset() {
-	*x = Uint32{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_required_required_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Uint32) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Uint32) ProtoMessage() {}
-
-func (x *Uint32) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_required_required_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Uint32.ProtoReflect.Descriptor instead.
-func (*Uint32) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_required_required_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Uint32) GetV() uint32 {
-	if x != nil && x.V != nil {
-		return *x.V
-	}
-	return 0
-}
-
-type Uint64 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	V *uint64 `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
-}
-
-func (x *Uint64) Reset() {
-	*x = Uint64{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_required_required_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Uint64) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Uint64) ProtoMessage() {}
-
-func (x *Uint64) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_required_required_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Uint64.ProtoReflect.Descriptor instead.
-func (*Uint64) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_required_required_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Uint64) GetV() uint64 {
-	if x != nil && x.V != nil {
-		return *x.V
-	}
-	return 0
-}
-
-type Sint32 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	V *int32 `protobuf:"zigzag32,1,req,name=v" json:"v,omitempty"`
-}
-
-func (x *Sint32) Reset() {
-	*x = Sint32{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_required_required_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Sint32) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Sint32) ProtoMessage() {}
-
-func (x *Sint32) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_required_required_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Sint32.ProtoReflect.Descriptor instead.
-func (*Sint32) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_required_required_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Sint32) GetV() int32 {
-	if x != nil && x.V != nil {
-		return *x.V
-	}
-	return 0
-}
-
-type Sint64 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	V *int64 `protobuf:"zigzag64,1,req,name=v" json:"v,omitempty"`
-}
-
-func (x *Sint64) Reset() {
-	*x = Sint64{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_required_required_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Sint64) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Sint64) ProtoMessage() {}
-
-func (x *Sint64) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_required_required_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Sint64.ProtoReflect.Descriptor instead.
-func (*Sint64) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_required_required_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *Sint64) GetV() int64 {
-	if x != nil && x.V != nil {
-		return *x.V
-	}
-	return 0
-}
-
-type Fixed32 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	V *uint32 `protobuf:"fixed32,1,req,name=v" json:"v,omitempty"`
-}
-
-func (x *Fixed32) Reset() {
-	*x = Fixed32{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_required_required_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Fixed32) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Fixed32) ProtoMessage() {}
-
-func (x *Fixed32) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_required_required_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Fixed32.ProtoReflect.Descriptor instead.
-func (*Fixed32) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_required_required_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *Fixed32) GetV() uint32 {
-	if x != nil && x.V != nil {
-		return *x.V
-	}
-	return 0
-}
-
-type Fixed64 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	V *uint64 `protobuf:"fixed64,1,req,name=v" json:"v,omitempty"`
-}
-
-func (x *Fixed64) Reset() {
-	*x = Fixed64{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_required_required_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Fixed64) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Fixed64) ProtoMessage() {}
-
-func (x *Fixed64) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_required_required_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Fixed64.ProtoReflect.Descriptor instead.
-func (*Fixed64) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_required_required_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *Fixed64) GetV() uint64 {
-	if x != nil && x.V != nil {
-		return *x.V
-	}
-	return 0
-}
-
-type Float struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	V *float32 `protobuf:"fixed32,1,req,name=v" json:"v,omitempty"`
-}
-
-func (x *Float) Reset() {
-	*x = Float{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_required_required_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Float) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Float) ProtoMessage() {}
-
-func (x *Float) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_required_required_proto_msgTypes[8]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Float.ProtoReflect.Descriptor instead.
-func (*Float) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_required_required_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *Float) GetV() float32 {
-	if x != nil && x.V != nil {
-		return *x.V
-	}
-	return 0
-}
-
-type Double struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	V *float64 `protobuf:"fixed64,1,req,name=v" json:"v,omitempty"`
-}
-
-func (x *Double) Reset() {
-	*x = Double{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_required_required_proto_msgTypes[9]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Double) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Double) ProtoMessage() {}
-
-func (x *Double) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_required_required_proto_msgTypes[9]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Double.ProtoReflect.Descriptor instead.
-func (*Double) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_required_required_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *Double) GetV() float64 {
-	if x != nil && x.V != nil {
-		return *x.V
-	}
-	return 0
-}
-
-type Bool struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	V *bool `protobuf:"varint,1,req,name=v" json:"v,omitempty"`
-}
-
-func (x *Bool) Reset() {
-	*x = Bool{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_required_required_proto_msgTypes[10]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Bool) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Bool) ProtoMessage() {}
-
-func (x *Bool) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_required_required_proto_msgTypes[10]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Bool.ProtoReflect.Descriptor instead.
-func (*Bool) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_required_required_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *Bool) GetV() bool {
-	if x != nil && x.V != nil {
-		return *x.V
-	}
-	return false
-}
-
-type String struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	V *string `protobuf:"bytes,1,req,name=v" json:"v,omitempty"`
-}
-
-func (x *String) Reset() {
-	*x = String{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_required_required_proto_msgTypes[11]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *String) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*String) ProtoMessage() {}
-
-func (x *String) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_required_required_proto_msgTypes[11]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use String.ProtoReflect.Descriptor instead.
-func (*String) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_required_required_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *String) GetV() string {
-	if x != nil && x.V != nil {
-		return *x.V
-	}
-	return ""
-}
-
-type Bytes struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	V []byte `protobuf:"bytes,1,req,name=v" json:"v,omitempty"`
-}
-
-func (x *Bytes) Reset() {
-	*x = Bytes{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_required_required_proto_msgTypes[12]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Bytes) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Bytes) ProtoMessage() {}
-
-func (x *Bytes) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_required_required_proto_msgTypes[12]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Bytes.ProtoReflect.Descriptor instead.
-func (*Bytes) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_required_required_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *Bytes) GetV() []byte {
-	if x != nil {
-		return x.V
-	}
-	return nil
-}
-
-type Message struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	V *Message_M `protobuf:"bytes,1,req,name=v" json:"v,omitempty"`
-}
-
-func (x *Message) Reset() {
-	*x = Message{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_required_required_proto_msgTypes[13]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message) ProtoMessage() {}
-
-func (x *Message) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_required_required_proto_msgTypes[13]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message.ProtoReflect.Descriptor instead.
-func (*Message) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_required_required_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *Message) GetV() *Message_M {
-	if x != nil {
-		return x.V
-	}
-	return nil
-}
-
-type Group struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Group *Group_Group `protobuf:"group,1,req,name=Group,json=group" json:"group,omitempty"`
-}
-
-func (x *Group) Reset() {
-	*x = Group{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_required_required_proto_msgTypes[14]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Group) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Group) ProtoMessage() {}
-
-func (x *Group) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_required_required_proto_msgTypes[14]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Group.ProtoReflect.Descriptor instead.
-func (*Group) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_required_required_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *Group) GetGroup() *Group_Group {
-	if x != nil {
-		return x.Group
-	}
-	return nil
-}
-
-type Message_M struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Message_M) Reset() {
-	*x = Message_M{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_required_required_proto_msgTypes[15]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Message_M) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Message_M) ProtoMessage() {}
-
-func (x *Message_M) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_required_required_proto_msgTypes[15]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Message_M.ProtoReflect.Descriptor instead.
-func (*Message_M) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_required_required_proto_rawDescGZIP(), []int{13, 0}
-}
-
-type Group_Group struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	V *int32 `protobuf:"varint,1,opt,name=v" json:"v,omitempty"`
-}
-
-func (x *Group_Group) Reset() {
-	*x = Group_Group{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_required_required_proto_msgTypes[16]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Group_Group) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Group_Group) ProtoMessage() {}
-
-func (x *Group_Group) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_required_required_proto_msgTypes[16]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Group_Group.ProtoReflect.Descriptor instead.
-func (*Group_Group) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_required_required_proto_rawDescGZIP(), []int{14, 0}
-}
-
-func (x *Group_Group) GetV() int32 {
-	if x != nil && x.V != nil {
-		return *x.V
-	}
-	return 0
-}
-
-var File_internal_testprotos_required_required_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_required_required_proto_rawDesc = []byte{
-	0x0a, 0x2b, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2f, 0x72,
-	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x22, 0x15, 0x0a, 0x05, 0x49, 0x6e, 0x74,
-	0x33, 0x32, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x01, 0x76,
-	0x22, 0x15, 0x0a, 0x05, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01,
-	0x20, 0x02, 0x28, 0x03, 0x52, 0x01, 0x76, 0x22, 0x16, 0x0a, 0x06, 0x55, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0d, 0x52, 0x01, 0x76, 0x22,
-	0x16, 0x0a, 0x06, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01,
-	0x20, 0x02, 0x28, 0x04, 0x52, 0x01, 0x76, 0x22, 0x16, 0x0a, 0x06, 0x53, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x02, 0x28, 0x11, 0x52, 0x01, 0x76, 0x22,
-	0x16, 0x0a, 0x06, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01,
-	0x20, 0x02, 0x28, 0x12, 0x52, 0x01, 0x76, 0x22, 0x17, 0x0a, 0x07, 0x46, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x02, 0x28, 0x07, 0x52, 0x01, 0x76,
-	0x22, 0x17, 0x0a, 0x07, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x0c, 0x0a, 0x01, 0x76,
-	0x18, 0x01, 0x20, 0x02, 0x28, 0x06, 0x52, 0x01, 0x76, 0x22, 0x15, 0x0a, 0x05, 0x46, 0x6c, 0x6f,
-	0x61, 0x74, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x02, 0x28, 0x02, 0x52, 0x01, 0x76,
-	0x22, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18,
-	0x01, 0x20, 0x02, 0x28, 0x01, 0x52, 0x01, 0x76, 0x22, 0x14, 0x0a, 0x04, 0x42, 0x6f, 0x6f, 0x6c,
-	0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x02, 0x28, 0x08, 0x52, 0x01, 0x76, 0x22, 0x16,
-	0x0a, 0x06, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20,
-	0x02, 0x28, 0x09, 0x52, 0x01, 0x76, 0x22, 0x15, 0x0a, 0x05, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12,
-	0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x01, 0x76, 0x22, 0x43, 0x0a,
-	0x07, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20,
-	0x02, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x4d, 0x52, 0x01, 0x76, 0x1a, 0x03, 0x0a,
-	0x01, 0x4d, 0x22, 0x5d, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3d, 0x0a, 0x05, 0x67,
-	0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0a, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x72,
-	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x47, 0x72,
-	0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x15, 0x0a, 0x05, 0x47, 0x72,
-	0x6f, 0x75, 0x70, 0x12, 0x0c, 0x0a, 0x01, 0x76, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01,
-	0x76, 0x42, 0x39, 0x5a, 0x37, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61,
-	0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
-	0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x73, 0x2f, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64,
-}
-
-var (
-	file_internal_testprotos_required_required_proto_rawDescOnce sync.Once
-	file_internal_testprotos_required_required_proto_rawDescData = file_internal_testprotos_required_required_proto_rawDesc
-)
-
-func file_internal_testprotos_required_required_proto_rawDescGZIP() []byte {
-	file_internal_testprotos_required_required_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_required_required_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_required_required_proto_rawDescData)
-	})
-	return file_internal_testprotos_required_required_proto_rawDescData
-}
-
-var file_internal_testprotos_required_required_proto_msgTypes = make([]protoimpl.MessageInfo, 17)
-var file_internal_testprotos_required_required_proto_goTypes = []interface{}{
-	(*Int32)(nil),       // 0: goproto.proto.testrequired.Int32
-	(*Int64)(nil),       // 1: goproto.proto.testrequired.Int64
-	(*Uint32)(nil),      // 2: goproto.proto.testrequired.Uint32
-	(*Uint64)(nil),      // 3: goproto.proto.testrequired.Uint64
-	(*Sint32)(nil),      // 4: goproto.proto.testrequired.Sint32
-	(*Sint64)(nil),      // 5: goproto.proto.testrequired.Sint64
-	(*Fixed32)(nil),     // 6: goproto.proto.testrequired.Fixed32
-	(*Fixed64)(nil),     // 7: goproto.proto.testrequired.Fixed64
-	(*Float)(nil),       // 8: goproto.proto.testrequired.Float
-	(*Double)(nil),      // 9: goproto.proto.testrequired.Double
-	(*Bool)(nil),        // 10: goproto.proto.testrequired.Bool
-	(*String)(nil),      // 11: goproto.proto.testrequired.String
-	(*Bytes)(nil),       // 12: goproto.proto.testrequired.Bytes
-	(*Message)(nil),     // 13: goproto.proto.testrequired.Message
-	(*Group)(nil),       // 14: goproto.proto.testrequired.Group
-	(*Message_M)(nil),   // 15: goproto.proto.testrequired.Message.M
-	(*Group_Group)(nil), // 16: goproto.proto.testrequired.Group.Group
-}
-var file_internal_testprotos_required_required_proto_depIdxs = []int32{
-	15, // 0: goproto.proto.testrequired.Message.v:type_name -> goproto.proto.testrequired.Message.M
-	16, // 1: goproto.proto.testrequired.Group.group:type_name -> goproto.proto.testrequired.Group.Group
-	2,  // [2:2] is the sub-list for method output_type
-	2,  // [2:2] is the sub-list for method input_type
-	2,  // [2:2] is the sub-list for extension type_name
-	2,  // [2:2] is the sub-list for extension extendee
-	0,  // [0:2] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_required_required_proto_init() }
-func file_internal_testprotos_required_required_proto_init() {
-	if File_internal_testprotos_required_required_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_internal_testprotos_required_required_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Int32); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_required_required_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Int64); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_required_required_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Uint32); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_required_required_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Uint64); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_required_required_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Sint32); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_required_required_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Sint64); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_required_required_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Fixed32); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_required_required_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Fixed64); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_required_required_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Float); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_required_required_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Double); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_required_required_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Bool); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_required_required_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*String); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_required_required_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Bytes); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_required_required_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_required_required_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Group); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_required_required_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Message_M); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_required_required_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Group_Group); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_required_required_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   17,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_internal_testprotos_required_required_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_required_required_proto_depIdxs,
-		MessageInfos:      file_internal_testprotos_required_required_proto_msgTypes,
-	}.Build()
-	File_internal_testprotos_required_required_proto = out.File
-	file_internal_testprotos_required_required_proto_rawDesc = nil
-	file_internal_testprotos_required_required_proto_goTypes = nil
-	file_internal_testprotos_required_required_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/required/required.proto b/internal/testprotos/required/required.proto
deleted file mode 100644
index 53c4198..0000000
--- a/internal/testprotos/required/required.proto
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.proto.testrequired;
-
-option go_package = "google.golang.org/protobuf/internal/testprotos/required";
-
-message Int32 {
-  required int32 v = 1;
-}
-
-message Int64 {
-  required int64 v =  1;
-}
-
-message Uint32 {
-  required uint32 v =  1;
-}
-
-message Uint64 {
-  required uint64 v =  1;
-}
-
-message Sint32 {
-  required sint32 v =  1;
-}
-
-message Sint64 {
-  required sint64 v =  1;
-}
-
-message Fixed32 {
-  required fixed32 v =  1;
-}
-
-message Fixed64 {
-  required fixed64 v =  1;
-}
-
-message Float {
-  required float v =  1;
-}
-
-message Double {
-  required double v =  1;
-}
-
-message Bool {
-  required bool v =  1;
-}
-
-message String {
-  required string v =  1;
-}
-
-message Bytes {
-  required bytes v =  1;
-}
-
-message Message {
-  message M {}
-  required M v = 1;
-}
-
-message Group {
-  required group Group = 1 {
-    optional int32 v = 1;
-  }
-}
diff --git a/internal/testprotos/test/ext.pb.go b/internal/testprotos/test/ext.pb.go
deleted file mode 100644
index 194b4c5..0000000
--- a/internal/testprotos/test/ext.pb.go
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/test/ext.proto
-
-package test
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-)
-
-var file_internal_testprotos_test_ext_proto_extTypes = []protoimpl.ExtensionInfo{
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*int32)(nil),
-		Field:         2000,
-		Name:          "goproto.proto.test.foreign_int32_extension",
-		Tag:           "varint,2000,opt,name=foreign_int32_extension",
-		Filename:      "internal/testprotos/test/ext.proto",
-	},
-}
-
-// Extension fields to TestAllExtensions.
-var (
-	// optional int32 foreign_int32_extension = 2000;
-	E_ForeignInt32Extension = &file_internal_testprotos_test_ext_proto_extTypes[0]
-)
-
-var File_internal_testprotos_test_ext_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_test_ext_proto_rawDesc = []byte{
-	0x0a, 0x22, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x65, 0x78, 0x74, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e,
-	0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65,
-	0x73, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3a, 0x5e, 0x0a,
-	0x17, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x65,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65,
-	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
-	0xd0, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x49,
-	0x6e, 0x74, 0x33, 0x32, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x35, 0x5a,
-	0x33, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f,
-	0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65,
-	0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f,
-	0x74, 0x65, 0x73, 0x74,
-}
-
-var file_internal_testprotos_test_ext_proto_goTypes = []interface{}{
-	(*TestAllExtensions)(nil), // 0: goproto.proto.test.TestAllExtensions
-}
-var file_internal_testprotos_test_ext_proto_depIdxs = []int32{
-	0, // 0: goproto.proto.test.foreign_int32_extension:extendee -> goproto.proto.test.TestAllExtensions
-	1, // [1:1] is the sub-list for method output_type
-	1, // [1:1] is the sub-list for method input_type
-	1, // [1:1] is the sub-list for extension type_name
-	0, // [0:1] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_test_ext_proto_init() }
-func file_internal_testprotos_test_ext_proto_init() {
-	if File_internal_testprotos_test_ext_proto != nil {
-		return
-	}
-	file_internal_testprotos_test_test_proto_init()
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_test_ext_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   0,
-			NumExtensions: 1,
-			NumServices:   0,
-		},
-		GoTypes:           file_internal_testprotos_test_ext_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_test_ext_proto_depIdxs,
-		ExtensionInfos:    file_internal_testprotos_test_ext_proto_extTypes,
-	}.Build()
-	File_internal_testprotos_test_ext_proto = out.File
-	file_internal_testprotos_test_ext_proto_rawDesc = nil
-	file_internal_testprotos_test_ext_proto_goTypes = nil
-	file_internal_testprotos_test_ext_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/test/ext.proto b/internal/testprotos/test/ext.proto
deleted file mode 100644
index 9ff1dd6..0000000
--- a/internal/testprotos/test/ext.proto
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.proto.test;
-
-import "internal/testprotos/test/test.proto";
-
-option go_package = "google.golang.org/protobuf/internal/testprotos/test";
-
-extend TestAllExtensions {
-  optional int32    foreign_int32_extension =  2000;
-}
diff --git a/internal/testprotos/test/test.pb.go b/internal/testprotos/test/test.pb.go
deleted file mode 100644
index 4263ff9..0000000
--- a/internal/testprotos/test/test.pb.go
+++ /dev/null
@@ -1,5409 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/test/test.proto
-
-package test
-
-import (
-	enums "google.golang.org/protobuf/internal/testprotos/enums"
-	proto "google.golang.org/protobuf/proto"
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type ForeignEnum int32
-
-const (
-	ForeignEnum_FOREIGN_FOO ForeignEnum = 4
-	ForeignEnum_FOREIGN_BAR ForeignEnum = 5
-	ForeignEnum_FOREIGN_BAZ ForeignEnum = 6
-)
-
-// Enum value maps for ForeignEnum.
-var (
-	ForeignEnum_name = map[int32]string{
-		4: "FOREIGN_FOO",
-		5: "FOREIGN_BAR",
-		6: "FOREIGN_BAZ",
-	}
-	ForeignEnum_value = map[string]int32{
-		"FOREIGN_FOO": 4,
-		"FOREIGN_BAR": 5,
-		"FOREIGN_BAZ": 6,
-	}
-)
-
-func (x ForeignEnum) Enum() *ForeignEnum {
-	p := new(ForeignEnum)
-	*p = x
-	return p
-}
-
-func (x ForeignEnum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ForeignEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_internal_testprotos_test_test_proto_enumTypes[0].Descriptor()
-}
-
-func (ForeignEnum) Type() protoreflect.EnumType {
-	return &file_internal_testprotos_test_test_proto_enumTypes[0]
-}
-
-func (x ForeignEnum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *ForeignEnum) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = ForeignEnum(num)
-	return nil
-}
-
-// Deprecated: Use ForeignEnum.Descriptor instead.
-func (ForeignEnum) EnumDescriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{0}
-}
-
-type TestReservedEnumFields int32
-
-const (
-	TestReservedEnumFields_RESERVED_ENUM TestReservedEnumFields = 0
-)
-
-// Enum value maps for TestReservedEnumFields.
-var (
-	TestReservedEnumFields_name = map[int32]string{
-		0: "RESERVED_ENUM",
-	}
-	TestReservedEnumFields_value = map[string]int32{
-		"RESERVED_ENUM": 0,
-	}
-)
-
-func (x TestReservedEnumFields) Enum() *TestReservedEnumFields {
-	p := new(TestReservedEnumFields)
-	*p = x
-	return p
-}
-
-func (x TestReservedEnumFields) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (TestReservedEnumFields) Descriptor() protoreflect.EnumDescriptor {
-	return file_internal_testprotos_test_test_proto_enumTypes[1].Descriptor()
-}
-
-func (TestReservedEnumFields) Type() protoreflect.EnumType {
-	return &file_internal_testprotos_test_test_proto_enumTypes[1]
-}
-
-func (x TestReservedEnumFields) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *TestReservedEnumFields) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = TestReservedEnumFields(num)
-	return nil
-}
-
-// Deprecated: Use TestReservedEnumFields.Descriptor instead.
-func (TestReservedEnumFields) EnumDescriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{1}
-}
-
-type TestAllTypes_NestedEnum int32
-
-const (
-	TestAllTypes_FOO TestAllTypes_NestedEnum = 0
-	TestAllTypes_BAR TestAllTypes_NestedEnum = 1
-	TestAllTypes_BAZ TestAllTypes_NestedEnum = 2
-	TestAllTypes_NEG TestAllTypes_NestedEnum = -1 // Intentionally negative.
-)
-
-// Enum value maps for TestAllTypes_NestedEnum.
-var (
-	TestAllTypes_NestedEnum_name = map[int32]string{
-		0:  "FOO",
-		1:  "BAR",
-		2:  "BAZ",
-		-1: "NEG",
-	}
-	TestAllTypes_NestedEnum_value = map[string]int32{
-		"FOO": 0,
-		"BAR": 1,
-		"BAZ": 2,
-		"NEG": -1,
-	}
-)
-
-func (x TestAllTypes_NestedEnum) Enum() *TestAllTypes_NestedEnum {
-	p := new(TestAllTypes_NestedEnum)
-	*p = x
-	return p
-}
-
-func (x TestAllTypes_NestedEnum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (TestAllTypes_NestedEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_internal_testprotos_test_test_proto_enumTypes[2].Descriptor()
-}
-
-func (TestAllTypes_NestedEnum) Type() protoreflect.EnumType {
-	return &file_internal_testprotos_test_test_proto_enumTypes[2]
-}
-
-func (x TestAllTypes_NestedEnum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *TestAllTypes_NestedEnum) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = TestAllTypes_NestedEnum(num)
-	return nil
-}
-
-// Deprecated: Use TestAllTypes_NestedEnum.Descriptor instead.
-func (TestAllTypes_NestedEnum) EnumDescriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{0, 0}
-}
-
-// Deprecated: Do not use.
-type TestDeprecatedMessage_DeprecatedEnum int32
-
-const (
-	// Deprecated: Do not use.
-	TestDeprecatedMessage_DEPRECATED TestDeprecatedMessage_DeprecatedEnum = 0
-)
-
-// Enum value maps for TestDeprecatedMessage_DeprecatedEnum.
-var (
-	TestDeprecatedMessage_DeprecatedEnum_name = map[int32]string{
-		0: "DEPRECATED",
-	}
-	TestDeprecatedMessage_DeprecatedEnum_value = map[string]int32{
-		"DEPRECATED": 0,
-	}
-)
-
-func (x TestDeprecatedMessage_DeprecatedEnum) Enum() *TestDeprecatedMessage_DeprecatedEnum {
-	p := new(TestDeprecatedMessage_DeprecatedEnum)
-	*p = x
-	return p
-}
-
-func (x TestDeprecatedMessage_DeprecatedEnum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (TestDeprecatedMessage_DeprecatedEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_internal_testprotos_test_test_proto_enumTypes[3].Descriptor()
-}
-
-func (TestDeprecatedMessage_DeprecatedEnum) Type() protoreflect.EnumType {
-	return &file_internal_testprotos_test_test_proto_enumTypes[3]
-}
-
-func (x TestDeprecatedMessage_DeprecatedEnum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *TestDeprecatedMessage_DeprecatedEnum) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = TestDeprecatedMessage_DeprecatedEnum(num)
-	return nil
-}
-
-// Deprecated: Use TestDeprecatedMessage_DeprecatedEnum.Descriptor instead.
-func (TestDeprecatedMessage_DeprecatedEnum) EnumDescriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{1, 0}
-}
-
-type TestAllTypes struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OptionalInt32          *int32                                 `protobuf:"varint,1,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
-	OptionalInt64          *int64                                 `protobuf:"varint,2,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
-	OptionalUint32         *uint32                                `protobuf:"varint,3,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
-	OptionalUint64         *uint64                                `protobuf:"varint,4,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
-	OptionalSint32         *int32                                 `protobuf:"zigzag32,5,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
-	OptionalSint64         *int64                                 `protobuf:"zigzag64,6,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
-	OptionalFixed32        *uint32                                `protobuf:"fixed32,7,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
-	OptionalFixed64        *uint64                                `protobuf:"fixed64,8,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
-	OptionalSfixed32       *int32                                 `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
-	OptionalSfixed64       *int64                                 `protobuf:"fixed64,10,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
-	OptionalFloat          *float32                               `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
-	OptionalDouble         *float64                               `protobuf:"fixed64,12,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
-	OptionalBool           *bool                                  `protobuf:"varint,13,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
-	OptionalString         *string                                `protobuf:"bytes,14,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
-	OptionalBytes          []byte                                 `protobuf:"bytes,15,opt,name=optional_bytes,json=optionalBytes" json:"optional_bytes,omitempty"`
-	Optionalgroup          *TestAllTypes_OptionalGroup            `protobuf:"group,16,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
-	OptionalNestedMessage  *TestAllTypes_NestedMessage            `protobuf:"bytes,18,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
-	OptionalForeignMessage *ForeignMessage                        `protobuf:"bytes,19,opt,name=optional_foreign_message,json=optionalForeignMessage" json:"optional_foreign_message,omitempty"`
-	OptionalImportMessage  *ImportMessage                         `protobuf:"bytes,20,opt,name=optional_import_message,json=optionalImportMessage" json:"optional_import_message,omitempty"`
-	OptionalNestedEnum     *TestAllTypes_NestedEnum               `protobuf:"varint,21,opt,name=optional_nested_enum,json=optionalNestedEnum,enum=goproto.proto.test.TestAllTypes_NestedEnum" json:"optional_nested_enum,omitempty"`
-	OptionalForeignEnum    *ForeignEnum                           `protobuf:"varint,22,opt,name=optional_foreign_enum,json=optionalForeignEnum,enum=goproto.proto.test.ForeignEnum" json:"optional_foreign_enum,omitempty"`
-	OptionalImportEnum     *ImportEnum                            `protobuf:"varint,23,opt,name=optional_import_enum,json=optionalImportEnum,enum=goproto.proto.test.ImportEnum" json:"optional_import_enum,omitempty"`
-	RepeatedInt32          []int32                                `protobuf:"varint,31,rep,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
-	RepeatedInt64          []int64                                `protobuf:"varint,32,rep,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
-	RepeatedUint32         []uint32                               `protobuf:"varint,33,rep,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
-	RepeatedUint64         []uint64                               `protobuf:"varint,34,rep,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
-	RepeatedSint32         []int32                                `protobuf:"zigzag32,35,rep,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
-	RepeatedSint64         []int64                                `protobuf:"zigzag64,36,rep,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
-	RepeatedFixed32        []uint32                               `protobuf:"fixed32,37,rep,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
-	RepeatedFixed64        []uint64                               `protobuf:"fixed64,38,rep,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
-	RepeatedSfixed32       []int32                                `protobuf:"fixed32,39,rep,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
-	RepeatedSfixed64       []int64                                `protobuf:"fixed64,40,rep,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
-	RepeatedFloat          []float32                              `protobuf:"fixed32,41,rep,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
-	RepeatedDouble         []float64                              `protobuf:"fixed64,42,rep,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
-	RepeatedBool           []bool                                 `protobuf:"varint,43,rep,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
-	RepeatedString         []string                               `protobuf:"bytes,44,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
-	RepeatedBytes          [][]byte                               `protobuf:"bytes,45,rep,name=repeated_bytes,json=repeatedBytes" json:"repeated_bytes,omitempty"`
-	Repeatedgroup          []*TestAllTypes_RepeatedGroup          `protobuf:"group,46,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
-	RepeatedNestedMessage  []*TestAllTypes_NestedMessage          `protobuf:"bytes,48,rep,name=repeated_nested_message,json=repeatedNestedMessage" json:"repeated_nested_message,omitempty"`
-	RepeatedForeignMessage []*ForeignMessage                      `protobuf:"bytes,49,rep,name=repeated_foreign_message,json=repeatedForeignMessage" json:"repeated_foreign_message,omitempty"`
-	RepeatedImportmessage  []*ImportMessage                       `protobuf:"bytes,50,rep,name=repeated_importmessage,json=repeatedImportmessage" json:"repeated_importmessage,omitempty"`
-	RepeatedNestedEnum     []TestAllTypes_NestedEnum              `protobuf:"varint,51,rep,name=repeated_nested_enum,json=repeatedNestedEnum,enum=goproto.proto.test.TestAllTypes_NestedEnum" json:"repeated_nested_enum,omitempty"`
-	RepeatedForeignEnum    []ForeignEnum                          `protobuf:"varint,52,rep,name=repeated_foreign_enum,json=repeatedForeignEnum,enum=goproto.proto.test.ForeignEnum" json:"repeated_foreign_enum,omitempty"`
-	RepeatedImportenum     []ImportEnum                           `protobuf:"varint,53,rep,name=repeated_importenum,json=repeatedImportenum,enum=goproto.proto.test.ImportEnum" json:"repeated_importenum,omitempty"`
-	MapInt32Int32          map[int32]int32                        `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32" json:"map_int32_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapInt64Int64          map[int64]int64                        `protobuf:"bytes,57,rep,name=map_int64_int64,json=mapInt64Int64" json:"map_int64_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint32Uint32        map[uint32]uint32                      `protobuf:"bytes,58,rep,name=map_uint32_uint32,json=mapUint32Uint32" json:"map_uint32_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapUint64Uint64        map[uint64]uint64                      `protobuf:"bytes,59,rep,name=map_uint64_uint64,json=mapUint64Uint64" json:"map_uint64_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapSint32Sint32        map[int32]int32                        `protobuf:"bytes,60,rep,name=map_sint32_sint32,json=mapSint32Sint32" json:"map_sint32_sint32,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
-	MapSint64Sint64        map[int64]int64                        `protobuf:"bytes,61,rep,name=map_sint64_sint64,json=mapSint64Sint64" json:"map_sint64_sint64,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
-	MapFixed32Fixed32      map[uint32]uint32                      `protobuf:"bytes,62,rep,name=map_fixed32_fixed32,json=mapFixed32Fixed32" json:"map_fixed32_fixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapFixed64Fixed64      map[uint64]uint64                      `protobuf:"bytes,63,rep,name=map_fixed64_fixed64,json=mapFixed64Fixed64" json:"map_fixed64_fixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapSfixed32Sfixed32    map[int32]int32                        `protobuf:"bytes,64,rep,name=map_sfixed32_sfixed32,json=mapSfixed32Sfixed32" json:"map_sfixed32_sfixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapSfixed64Sfixed64    map[int64]int64                        `protobuf:"bytes,65,rep,name=map_sfixed64_sfixed64,json=mapSfixed64Sfixed64" json:"map_sfixed64_sfixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapInt32Float          map[int32]float32                      `protobuf:"bytes,66,rep,name=map_int32_float,json=mapInt32Float" json:"map_int32_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
-	MapInt32Double         map[int32]float64                      `protobuf:"bytes,67,rep,name=map_int32_double,json=mapInt32Double" json:"map_int32_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
-	MapBoolBool            map[bool]bool                          `protobuf:"bytes,68,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-	MapStringString        map[string]string                      `protobuf:"bytes,69,rep,name=map_string_string,json=mapStringString" json:"map_string_string,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapStringBytes         map[string][]byte                      `protobuf:"bytes,70,rep,name=map_string_bytes,json=mapStringBytes" json:"map_string_bytes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapStringNestedMessage map[string]*TestAllTypes_NestedMessage `protobuf:"bytes,71,rep,name=map_string_nested_message,json=mapStringNestedMessage" json:"map_string_nested_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	MapStringNestedEnum    map[string]TestAllTypes_NestedEnum     `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=goproto.proto.test.TestAllTypes_NestedEnum"`
-	// Singular with defaults
-	DefaultInt32       *int32                   `protobuf:"varint,81,opt,name=default_int32,json=defaultInt32,def=81" json:"default_int32,omitempty"`
-	DefaultInt64       *int64                   `protobuf:"varint,82,opt,name=default_int64,json=defaultInt64,def=82" json:"default_int64,omitempty"`
-	DefaultUint32      *uint32                  `protobuf:"varint,83,opt,name=default_uint32,json=defaultUint32,def=83" json:"default_uint32,omitempty"`
-	DefaultUint64      *uint64                  `protobuf:"varint,84,opt,name=default_uint64,json=defaultUint64,def=84" json:"default_uint64,omitempty"`
-	DefaultSint32      *int32                   `protobuf:"zigzag32,85,opt,name=default_sint32,json=defaultSint32,def=-85" json:"default_sint32,omitempty"`
-	DefaultSint64      *int64                   `protobuf:"zigzag64,86,opt,name=default_sint64,json=defaultSint64,def=86" json:"default_sint64,omitempty"`
-	DefaultFixed32     *uint32                  `protobuf:"fixed32,87,opt,name=default_fixed32,json=defaultFixed32,def=87" json:"default_fixed32,omitempty"`
-	DefaultFixed64     *uint64                  `protobuf:"fixed64,88,opt,name=default_fixed64,json=defaultFixed64,def=88" json:"default_fixed64,omitempty"`
-	DefaultSfixed32    *int32                   `protobuf:"fixed32,89,opt,name=default_sfixed32,json=defaultSfixed32,def=89" json:"default_sfixed32,omitempty"`
-	DefaultSfixed64    *int64                   `protobuf:"fixed64,80,opt,name=default_sfixed64,json=defaultSfixed64,def=-90" json:"default_sfixed64,omitempty"`
-	DefaultFloat       *float32                 `protobuf:"fixed32,91,opt,name=default_float,json=defaultFloat,def=91.5" json:"default_float,omitempty"`
-	DefaultDouble      *float64                 `protobuf:"fixed64,92,opt,name=default_double,json=defaultDouble,def=92000" json:"default_double,omitempty"`
-	DefaultBool        *bool                    `protobuf:"varint,93,opt,name=default_bool,json=defaultBool,def=1" json:"default_bool,omitempty"`
-	DefaultString      *string                  `protobuf:"bytes,94,opt,name=default_string,json=defaultString,def=hello" json:"default_string,omitempty"`
-	DefaultBytes       []byte                   `protobuf:"bytes,95,opt,name=default_bytes,json=defaultBytes,def=world" json:"default_bytes,omitempty"`
-	DefaultNestedEnum  *TestAllTypes_NestedEnum `protobuf:"varint,96,opt,name=default_nested_enum,json=defaultNestedEnum,enum=goproto.proto.test.TestAllTypes_NestedEnum,def=1" json:"default_nested_enum,omitempty"`
-	DefaultForeignEnum *ForeignEnum             `protobuf:"varint,97,opt,name=default_foreign_enum,json=defaultForeignEnum,enum=goproto.proto.test.ForeignEnum,def=5" json:"default_foreign_enum,omitempty"`
-	// Types that are assignable to OneofField:
-	//	*TestAllTypes_OneofUint32
-	//	*TestAllTypes_OneofNestedMessage
-	//	*TestAllTypes_OneofString
-	//	*TestAllTypes_OneofBytes
-	//	*TestAllTypes_OneofBool
-	//	*TestAllTypes_OneofUint64
-	//	*TestAllTypes_OneofFloat
-	//	*TestAllTypes_OneofDouble
-	//	*TestAllTypes_OneofEnum
-	//	*TestAllTypes_Oneofgroup
-	OneofField isTestAllTypes_OneofField `protobuf_oneof:"oneof_field"`
-	// A oneof with exactly one field.
-	//
-	// Types that are assignable to OneofOptional:
-	//	*TestAllTypes_OneofOptionalUint32
-	OneofOptional isTestAllTypes_OneofOptional `protobuf_oneof:"oneof_optional"`
-}
-
-// Default values for TestAllTypes fields.
-const (
-	Default_TestAllTypes_DefaultInt32       = int32(81)
-	Default_TestAllTypes_DefaultInt64       = int64(82)
-	Default_TestAllTypes_DefaultUint32      = uint32(83)
-	Default_TestAllTypes_DefaultUint64      = uint64(84)
-	Default_TestAllTypes_DefaultSint32      = int32(-85)
-	Default_TestAllTypes_DefaultSint64      = int64(86)
-	Default_TestAllTypes_DefaultFixed32     = uint32(87)
-	Default_TestAllTypes_DefaultFixed64     = uint64(88)
-	Default_TestAllTypes_DefaultSfixed32    = int32(89)
-	Default_TestAllTypes_DefaultSfixed64    = int64(-90)
-	Default_TestAllTypes_DefaultFloat       = float32(91.5)
-	Default_TestAllTypes_DefaultDouble      = float64(92000)
-	Default_TestAllTypes_DefaultBool        = bool(true)
-	Default_TestAllTypes_DefaultString      = string("hello")
-	Default_TestAllTypes_DefaultNestedEnum  = TestAllTypes_BAR
-	Default_TestAllTypes_DefaultForeignEnum = ForeignEnum_FOREIGN_BAR
-)
-
-// Default values for TestAllTypes fields.
-var (
-	Default_TestAllTypes_DefaultBytes = []byte("world")
-)
-
-func (x *TestAllTypes) Reset() {
-	*x = TestAllTypes{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestAllTypes) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestAllTypes) ProtoMessage() {}
-
-func (x *TestAllTypes) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestAllTypes.ProtoReflect.Descriptor instead.
-func (*TestAllTypes) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *TestAllTypes) GetOptionalInt32() int32 {
-	if x != nil && x.OptionalInt32 != nil {
-		return *x.OptionalInt32
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalInt64() int64 {
-	if x != nil && x.OptionalInt64 != nil {
-		return *x.OptionalInt64
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalUint32() uint32 {
-	if x != nil && x.OptionalUint32 != nil {
-		return *x.OptionalUint32
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalUint64() uint64 {
-	if x != nil && x.OptionalUint64 != nil {
-		return *x.OptionalUint64
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalSint32() int32 {
-	if x != nil && x.OptionalSint32 != nil {
-		return *x.OptionalSint32
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalSint64() int64 {
-	if x != nil && x.OptionalSint64 != nil {
-		return *x.OptionalSint64
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalFixed32() uint32 {
-	if x != nil && x.OptionalFixed32 != nil {
-		return *x.OptionalFixed32
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalFixed64() uint64 {
-	if x != nil && x.OptionalFixed64 != nil {
-		return *x.OptionalFixed64
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalSfixed32() int32 {
-	if x != nil && x.OptionalSfixed32 != nil {
-		return *x.OptionalSfixed32
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalSfixed64() int64 {
-	if x != nil && x.OptionalSfixed64 != nil {
-		return *x.OptionalSfixed64
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalFloat() float32 {
-	if x != nil && x.OptionalFloat != nil {
-		return *x.OptionalFloat
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalDouble() float64 {
-	if x != nil && x.OptionalDouble != nil {
-		return *x.OptionalDouble
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalBool() bool {
-	if x != nil && x.OptionalBool != nil {
-		return *x.OptionalBool
-	}
-	return false
-}
-
-func (x *TestAllTypes) GetOptionalString() string {
-	if x != nil && x.OptionalString != nil {
-		return *x.OptionalString
-	}
-	return ""
-}
-
-func (x *TestAllTypes) GetOptionalBytes() []byte {
-	if x != nil {
-		return x.OptionalBytes
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetOptionalgroup() *TestAllTypes_OptionalGroup {
-	if x != nil {
-		return x.Optionalgroup
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetOptionalNestedMessage() *TestAllTypes_NestedMessage {
-	if x != nil {
-		return x.OptionalNestedMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetOptionalForeignMessage() *ForeignMessage {
-	if x != nil {
-		return x.OptionalForeignMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetOptionalImportMessage() *ImportMessage {
-	if x != nil {
-		return x.OptionalImportMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetOptionalNestedEnum() TestAllTypes_NestedEnum {
-	if x != nil && x.OptionalNestedEnum != nil {
-		return *x.OptionalNestedEnum
-	}
-	return TestAllTypes_FOO
-}
-
-func (x *TestAllTypes) GetOptionalForeignEnum() ForeignEnum {
-	if x != nil && x.OptionalForeignEnum != nil {
-		return *x.OptionalForeignEnum
-	}
-	return ForeignEnum_FOREIGN_FOO
-}
-
-func (x *TestAllTypes) GetOptionalImportEnum() ImportEnum {
-	if x != nil && x.OptionalImportEnum != nil {
-		return *x.OptionalImportEnum
-	}
-	return ImportEnum_IMPORT_ZERO
-}
-
-func (x *TestAllTypes) GetRepeatedInt32() []int32 {
-	if x != nil {
-		return x.RepeatedInt32
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedInt64() []int64 {
-	if x != nil {
-		return x.RepeatedInt64
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedUint32() []uint32 {
-	if x != nil {
-		return x.RepeatedUint32
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedUint64() []uint64 {
-	if x != nil {
-		return x.RepeatedUint64
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedSint32() []int32 {
-	if x != nil {
-		return x.RepeatedSint32
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedSint64() []int64 {
-	if x != nil {
-		return x.RepeatedSint64
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedFixed32() []uint32 {
-	if x != nil {
-		return x.RepeatedFixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedFixed64() []uint64 {
-	if x != nil {
-		return x.RepeatedFixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedSfixed32() []int32 {
-	if x != nil {
-		return x.RepeatedSfixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedSfixed64() []int64 {
-	if x != nil {
-		return x.RepeatedSfixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedFloat() []float32 {
-	if x != nil {
-		return x.RepeatedFloat
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedDouble() []float64 {
-	if x != nil {
-		return x.RepeatedDouble
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedBool() []bool {
-	if x != nil {
-		return x.RepeatedBool
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedString() []string {
-	if x != nil {
-		return x.RepeatedString
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedBytes() [][]byte {
-	if x != nil {
-		return x.RepeatedBytes
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedgroup() []*TestAllTypes_RepeatedGroup {
-	if x != nil {
-		return x.Repeatedgroup
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedNestedMessage() []*TestAllTypes_NestedMessage {
-	if x != nil {
-		return x.RepeatedNestedMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedForeignMessage() []*ForeignMessage {
-	if x != nil {
-		return x.RepeatedForeignMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedImportmessage() []*ImportMessage {
-	if x != nil {
-		return x.RepeatedImportmessage
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedNestedEnum() []TestAllTypes_NestedEnum {
-	if x != nil {
-		return x.RepeatedNestedEnum
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedForeignEnum() []ForeignEnum {
-	if x != nil {
-		return x.RepeatedForeignEnum
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedImportenum() []ImportEnum {
-	if x != nil {
-		return x.RepeatedImportenum
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapInt32Int32() map[int32]int32 {
-	if x != nil {
-		return x.MapInt32Int32
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapInt64Int64() map[int64]int64 {
-	if x != nil {
-		return x.MapInt64Int64
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapUint32Uint32() map[uint32]uint32 {
-	if x != nil {
-		return x.MapUint32Uint32
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapUint64Uint64() map[uint64]uint64 {
-	if x != nil {
-		return x.MapUint64Uint64
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapSint32Sint32() map[int32]int32 {
-	if x != nil {
-		return x.MapSint32Sint32
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapSint64Sint64() map[int64]int64 {
-	if x != nil {
-		return x.MapSint64Sint64
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapFixed32Fixed32() map[uint32]uint32 {
-	if x != nil {
-		return x.MapFixed32Fixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapFixed64Fixed64() map[uint64]uint64 {
-	if x != nil {
-		return x.MapFixed64Fixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapSfixed32Sfixed32() map[int32]int32 {
-	if x != nil {
-		return x.MapSfixed32Sfixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapSfixed64Sfixed64() map[int64]int64 {
-	if x != nil {
-		return x.MapSfixed64Sfixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapInt32Float() map[int32]float32 {
-	if x != nil {
-		return x.MapInt32Float
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapInt32Double() map[int32]float64 {
-	if x != nil {
-		return x.MapInt32Double
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapBoolBool() map[bool]bool {
-	if x != nil {
-		return x.MapBoolBool
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapStringString() map[string]string {
-	if x != nil {
-		return x.MapStringString
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapStringBytes() map[string][]byte {
-	if x != nil {
-		return x.MapStringBytes
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapStringNestedMessage() map[string]*TestAllTypes_NestedMessage {
-	if x != nil {
-		return x.MapStringNestedMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapStringNestedEnum() map[string]TestAllTypes_NestedEnum {
-	if x != nil {
-		return x.MapStringNestedEnum
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetDefaultInt32() int32 {
-	if x != nil && x.DefaultInt32 != nil {
-		return *x.DefaultInt32
-	}
-	return Default_TestAllTypes_DefaultInt32
-}
-
-func (x *TestAllTypes) GetDefaultInt64() int64 {
-	if x != nil && x.DefaultInt64 != nil {
-		return *x.DefaultInt64
-	}
-	return Default_TestAllTypes_DefaultInt64
-}
-
-func (x *TestAllTypes) GetDefaultUint32() uint32 {
-	if x != nil && x.DefaultUint32 != nil {
-		return *x.DefaultUint32
-	}
-	return Default_TestAllTypes_DefaultUint32
-}
-
-func (x *TestAllTypes) GetDefaultUint64() uint64 {
-	if x != nil && x.DefaultUint64 != nil {
-		return *x.DefaultUint64
-	}
-	return Default_TestAllTypes_DefaultUint64
-}
-
-func (x *TestAllTypes) GetDefaultSint32() int32 {
-	if x != nil && x.DefaultSint32 != nil {
-		return *x.DefaultSint32
-	}
-	return Default_TestAllTypes_DefaultSint32
-}
-
-func (x *TestAllTypes) GetDefaultSint64() int64 {
-	if x != nil && x.DefaultSint64 != nil {
-		return *x.DefaultSint64
-	}
-	return Default_TestAllTypes_DefaultSint64
-}
-
-func (x *TestAllTypes) GetDefaultFixed32() uint32 {
-	if x != nil && x.DefaultFixed32 != nil {
-		return *x.DefaultFixed32
-	}
-	return Default_TestAllTypes_DefaultFixed32
-}
-
-func (x *TestAllTypes) GetDefaultFixed64() uint64 {
-	if x != nil && x.DefaultFixed64 != nil {
-		return *x.DefaultFixed64
-	}
-	return Default_TestAllTypes_DefaultFixed64
-}
-
-func (x *TestAllTypes) GetDefaultSfixed32() int32 {
-	if x != nil && x.DefaultSfixed32 != nil {
-		return *x.DefaultSfixed32
-	}
-	return Default_TestAllTypes_DefaultSfixed32
-}
-
-func (x *TestAllTypes) GetDefaultSfixed64() int64 {
-	if x != nil && x.DefaultSfixed64 != nil {
-		return *x.DefaultSfixed64
-	}
-	return Default_TestAllTypes_DefaultSfixed64
-}
-
-func (x *TestAllTypes) GetDefaultFloat() float32 {
-	if x != nil && x.DefaultFloat != nil {
-		return *x.DefaultFloat
-	}
-	return Default_TestAllTypes_DefaultFloat
-}
-
-func (x *TestAllTypes) GetDefaultDouble() float64 {
-	if x != nil && x.DefaultDouble != nil {
-		return *x.DefaultDouble
-	}
-	return Default_TestAllTypes_DefaultDouble
-}
-
-func (x *TestAllTypes) GetDefaultBool() bool {
-	if x != nil && x.DefaultBool != nil {
-		return *x.DefaultBool
-	}
-	return Default_TestAllTypes_DefaultBool
-}
-
-func (x *TestAllTypes) GetDefaultString() string {
-	if x != nil && x.DefaultString != nil {
-		return *x.DefaultString
-	}
-	return Default_TestAllTypes_DefaultString
-}
-
-func (x *TestAllTypes) GetDefaultBytes() []byte {
-	if x != nil && x.DefaultBytes != nil {
-		return x.DefaultBytes
-	}
-	return append([]byte(nil), Default_TestAllTypes_DefaultBytes...)
-}
-
-func (x *TestAllTypes) GetDefaultNestedEnum() TestAllTypes_NestedEnum {
-	if x != nil && x.DefaultNestedEnum != nil {
-		return *x.DefaultNestedEnum
-	}
-	return Default_TestAllTypes_DefaultNestedEnum
-}
-
-func (x *TestAllTypes) GetDefaultForeignEnum() ForeignEnum {
-	if x != nil && x.DefaultForeignEnum != nil {
-		return *x.DefaultForeignEnum
-	}
-	return Default_TestAllTypes_DefaultForeignEnum
-}
-
-func (m *TestAllTypes) GetOneofField() isTestAllTypes_OneofField {
-	if m != nil {
-		return m.OneofField
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetOneofUint32() uint32 {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofUint32); ok {
-		return x.OneofUint32
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOneofNestedMessage() *TestAllTypes_NestedMessage {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofNestedMessage); ok {
-		return x.OneofNestedMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetOneofString() string {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofString); ok {
-		return x.OneofString
-	}
-	return ""
-}
-
-func (x *TestAllTypes) GetOneofBytes() []byte {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofBytes); ok {
-		return x.OneofBytes
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetOneofBool() bool {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofBool); ok {
-		return x.OneofBool
-	}
-	return false
-}
-
-func (x *TestAllTypes) GetOneofUint64() uint64 {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofUint64); ok {
-		return x.OneofUint64
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOneofFloat() float32 {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofFloat); ok {
-		return x.OneofFloat
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOneofDouble() float64 {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofDouble); ok {
-		return x.OneofDouble
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOneofEnum() TestAllTypes_NestedEnum {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofEnum); ok {
-		return x.OneofEnum
-	}
-	return TestAllTypes_FOO
-}
-
-func (x *TestAllTypes) GetOneofgroup() *TestAllTypes_OneofGroup {
-	if x, ok := x.GetOneofField().(*TestAllTypes_Oneofgroup); ok {
-		return x.Oneofgroup
-	}
-	return nil
-}
-
-func (m *TestAllTypes) GetOneofOptional() isTestAllTypes_OneofOptional {
-	if m != nil {
-		return m.OneofOptional
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetOneofOptionalUint32() uint32 {
-	if x, ok := x.GetOneofOptional().(*TestAllTypes_OneofOptionalUint32); ok {
-		return x.OneofOptionalUint32
-	}
-	return 0
-}
-
-type isTestAllTypes_OneofField interface {
-	isTestAllTypes_OneofField()
-}
-
-type TestAllTypes_OneofUint32 struct {
-	OneofUint32 uint32 `protobuf:"varint,111,opt,name=oneof_uint32,json=oneofUint32,oneof"`
-}
-
-type TestAllTypes_OneofNestedMessage struct {
-	OneofNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,112,opt,name=oneof_nested_message,json=oneofNestedMessage,oneof"`
-}
-
-type TestAllTypes_OneofString struct {
-	OneofString string `protobuf:"bytes,113,opt,name=oneof_string,json=oneofString,oneof"`
-}
-
-type TestAllTypes_OneofBytes struct {
-	OneofBytes []byte `protobuf:"bytes,114,opt,name=oneof_bytes,json=oneofBytes,oneof"`
-}
-
-type TestAllTypes_OneofBool struct {
-	OneofBool bool `protobuf:"varint,115,opt,name=oneof_bool,json=oneofBool,oneof"`
-}
-
-type TestAllTypes_OneofUint64 struct {
-	OneofUint64 uint64 `protobuf:"varint,116,opt,name=oneof_uint64,json=oneofUint64,oneof"`
-}
-
-type TestAllTypes_OneofFloat struct {
-	OneofFloat float32 `protobuf:"fixed32,117,opt,name=oneof_float,json=oneofFloat,oneof"`
-}
-
-type TestAllTypes_OneofDouble struct {
-	OneofDouble float64 `protobuf:"fixed64,118,opt,name=oneof_double,json=oneofDouble,oneof"`
-}
-
-type TestAllTypes_OneofEnum struct {
-	OneofEnum TestAllTypes_NestedEnum `protobuf:"varint,119,opt,name=oneof_enum,json=oneofEnum,enum=goproto.proto.test.TestAllTypes_NestedEnum,oneof"`
-}
-
-type TestAllTypes_Oneofgroup struct {
-	Oneofgroup *TestAllTypes_OneofGroup `protobuf:"group,121,opt,name=OneofGroup,json=oneofgroup,oneof"`
-}
-
-func (*TestAllTypes_OneofUint32) isTestAllTypes_OneofField() {}
-
-func (*TestAllTypes_OneofNestedMessage) isTestAllTypes_OneofField() {}
-
-func (*TestAllTypes_OneofString) isTestAllTypes_OneofField() {}
-
-func (*TestAllTypes_OneofBytes) isTestAllTypes_OneofField() {}
-
-func (*TestAllTypes_OneofBool) isTestAllTypes_OneofField() {}
-
-func (*TestAllTypes_OneofUint64) isTestAllTypes_OneofField() {}
-
-func (*TestAllTypes_OneofFloat) isTestAllTypes_OneofField() {}
-
-func (*TestAllTypes_OneofDouble) isTestAllTypes_OneofField() {}
-
-func (*TestAllTypes_OneofEnum) isTestAllTypes_OneofField() {}
-
-func (*TestAllTypes_Oneofgroup) isTestAllTypes_OneofField() {}
-
-type isTestAllTypes_OneofOptional interface {
-	isTestAllTypes_OneofOptional()
-}
-
-type TestAllTypes_OneofOptionalUint32 struct {
-	OneofOptionalUint32 uint32 `protobuf:"varint,120,opt,name=oneof_optional_uint32,json=oneofOptionalUint32,oneof"`
-}
-
-func (*TestAllTypes_OneofOptionalUint32) isTestAllTypes_OneofOptional() {}
-
-// Deprecated: Do not use.
-type TestDeprecatedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Deprecated: Do not use.
-	DeprecatedInt32 *int32 `protobuf:"varint,1,opt,name=deprecated_int32,json=deprecatedInt32" json:"deprecated_int32,omitempty"`
-	// Types that are assignable to DeprecatedOneof:
-	//	*TestDeprecatedMessage_DeprecatedOneofField
-	DeprecatedOneof isTestDeprecatedMessage_DeprecatedOneof `protobuf_oneof:"deprecated_oneof"`
-}
-
-func (x *TestDeprecatedMessage) Reset() {
-	*x = TestDeprecatedMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestDeprecatedMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestDeprecatedMessage) ProtoMessage() {}
-
-func (x *TestDeprecatedMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestDeprecatedMessage.ProtoReflect.Descriptor instead.
-func (*TestDeprecatedMessage) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{1}
-}
-
-// Deprecated: Do not use.
-func (x *TestDeprecatedMessage) GetDeprecatedInt32() int32 {
-	if x != nil && x.DeprecatedInt32 != nil {
-		return *x.DeprecatedInt32
-	}
-	return 0
-}
-
-func (m *TestDeprecatedMessage) GetDeprecatedOneof() isTestDeprecatedMessage_DeprecatedOneof {
-	if m != nil {
-		return m.DeprecatedOneof
-	}
-	return nil
-}
-
-// Deprecated: Do not use.
-func (x *TestDeprecatedMessage) GetDeprecatedOneofField() int32 {
-	if x, ok := x.GetDeprecatedOneof().(*TestDeprecatedMessage_DeprecatedOneofField); ok {
-		return x.DeprecatedOneofField
-	}
-	return 0
-}
-
-type isTestDeprecatedMessage_DeprecatedOneof interface {
-	isTestDeprecatedMessage_DeprecatedOneof()
-}
-
-type TestDeprecatedMessage_DeprecatedOneofField struct {
-	// Deprecated: Do not use.
-	DeprecatedOneofField int32 `protobuf:"varint,2,opt,name=deprecated_oneof_field,json=deprecatedOneofField,oneof"`
-}
-
-func (*TestDeprecatedMessage_DeprecatedOneofField) isTestDeprecatedMessage_DeprecatedOneof() {}
-
-type ForeignMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	C *int32 `protobuf:"varint,1,opt,name=c" json:"c,omitempty"`
-	D *int32 `protobuf:"varint,2,opt,name=d" json:"d,omitempty"`
-}
-
-func (x *ForeignMessage) Reset() {
-	*x = ForeignMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ForeignMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ForeignMessage) ProtoMessage() {}
-
-func (x *ForeignMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ForeignMessage.ProtoReflect.Descriptor instead.
-func (*ForeignMessage) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *ForeignMessage) GetC() int32 {
-	if x != nil && x.C != nil {
-		return *x.C
-	}
-	return 0
-}
-
-func (x *ForeignMessage) GetD() int32 {
-	if x != nil && x.D != nil {
-		return *x.D
-	}
-	return 0
-}
-
-type TestReservedFields struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *TestReservedFields) Reset() {
-	*x = TestReservedFields{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestReservedFields) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestReservedFields) ProtoMessage() {}
-
-func (x *TestReservedFields) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestReservedFields.ProtoReflect.Descriptor instead.
-func (*TestReservedFields) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{3}
-}
-
-type TestAllExtensions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-}
-
-func (x *TestAllExtensions) Reset() {
-	*x = TestAllExtensions{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestAllExtensions) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestAllExtensions) ProtoMessage() {}
-
-func (x *TestAllExtensions) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestAllExtensions.ProtoReflect.Descriptor instead.
-func (*TestAllExtensions) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{4}
-}
-
-type OptionalGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	A                     *int32                           `protobuf:"varint,17,opt,name=a" json:"a,omitempty"`
-	SameFieldNumber       *int32                           `protobuf:"varint,16,opt,name=same_field_number,json=sameFieldNumber" json:"same_field_number,omitempty"`
-	OptionalNestedMessage *TestAllExtensions_NestedMessage `protobuf:"bytes,1000,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
-}
-
-func (x *OptionalGroup) Reset() {
-	*x = OptionalGroup{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *OptionalGroup) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*OptionalGroup) ProtoMessage() {}
-
-func (x *OptionalGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use OptionalGroup.ProtoReflect.Descriptor instead.
-func (*OptionalGroup) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *OptionalGroup) GetA() int32 {
-	if x != nil && x.A != nil {
-		return *x.A
-	}
-	return 0
-}
-
-func (x *OptionalGroup) GetSameFieldNumber() int32 {
-	if x != nil && x.SameFieldNumber != nil {
-		return *x.SameFieldNumber
-	}
-	return 0
-}
-
-func (x *OptionalGroup) GetOptionalNestedMessage() *TestAllExtensions_NestedMessage {
-	if x != nil {
-		return x.OptionalNestedMessage
-	}
-	return nil
-}
-
-type RepeatedGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	A                     *int32                           `protobuf:"varint,47,opt,name=a" json:"a,omitempty"`
-	OptionalNestedMessage *TestAllExtensions_NestedMessage `protobuf:"bytes,1001,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
-}
-
-func (x *RepeatedGroup) Reset() {
-	*x = RepeatedGroup{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *RepeatedGroup) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RepeatedGroup) ProtoMessage() {}
-
-func (x *RepeatedGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use RepeatedGroup.ProtoReflect.Descriptor instead.
-func (*RepeatedGroup) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *RepeatedGroup) GetA() int32 {
-	if x != nil && x.A != nil {
-		return *x.A
-	}
-	return 0
-}
-
-func (x *RepeatedGroup) GetOptionalNestedMessage() *TestAllExtensions_NestedMessage {
-	if x != nil {
-		return x.OptionalNestedMessage
-	}
-	return nil
-}
-
-type TestNestedExtension struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *TestNestedExtension) Reset() {
-	*x = TestNestedExtension{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestNestedExtension) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestNestedExtension) ProtoMessage() {}
-
-func (x *TestNestedExtension) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestNestedExtension.ProtoReflect.Descriptor instead.
-func (*TestNestedExtension) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{7}
-}
-
-type TestRequired struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	RequiredField *int32 `protobuf:"varint,1,req,name=required_field,json=requiredField" json:"required_field,omitempty"`
-}
-
-func (x *TestRequired) Reset() {
-	*x = TestRequired{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestRequired) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestRequired) ProtoMessage() {}
-
-func (x *TestRequired) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[8]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestRequired.ProtoReflect.Descriptor instead.
-func (*TestRequired) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *TestRequired) GetRequiredField() int32 {
-	if x != nil && x.RequiredField != nil {
-		return *x.RequiredField
-	}
-	return 0
-}
-
-type TestRequiredForeign struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OptionalMessage *TestRequired           `protobuf:"bytes,1,opt,name=optional_message,json=optionalMessage" json:"optional_message,omitempty"`
-	RepeatedMessage []*TestRequired         `protobuf:"bytes,2,rep,name=repeated_message,json=repeatedMessage" json:"repeated_message,omitempty"`
-	MapMessage      map[int32]*TestRequired `protobuf:"bytes,3,rep,name=map_message,json=mapMessage" json:"map_message,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	// Types that are assignable to OneofField:
-	//	*TestRequiredForeign_OneofMessage
-	OneofField isTestRequiredForeign_OneofField `protobuf_oneof:"oneof_field"`
-}
-
-func (x *TestRequiredForeign) Reset() {
-	*x = TestRequiredForeign{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[9]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestRequiredForeign) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestRequiredForeign) ProtoMessage() {}
-
-func (x *TestRequiredForeign) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[9]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestRequiredForeign.ProtoReflect.Descriptor instead.
-func (*TestRequiredForeign) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *TestRequiredForeign) GetOptionalMessage() *TestRequired {
-	if x != nil {
-		return x.OptionalMessage
-	}
-	return nil
-}
-
-func (x *TestRequiredForeign) GetRepeatedMessage() []*TestRequired {
-	if x != nil {
-		return x.RepeatedMessage
-	}
-	return nil
-}
-
-func (x *TestRequiredForeign) GetMapMessage() map[int32]*TestRequired {
-	if x != nil {
-		return x.MapMessage
-	}
-	return nil
-}
-
-func (m *TestRequiredForeign) GetOneofField() isTestRequiredForeign_OneofField {
-	if m != nil {
-		return m.OneofField
-	}
-	return nil
-}
-
-func (x *TestRequiredForeign) GetOneofMessage() *TestRequired {
-	if x, ok := x.GetOneofField().(*TestRequiredForeign_OneofMessage); ok {
-		return x.OneofMessage
-	}
-	return nil
-}
-
-type isTestRequiredForeign_OneofField interface {
-	isTestRequiredForeign_OneofField()
-}
-
-type TestRequiredForeign_OneofMessage struct {
-	OneofMessage *TestRequired `protobuf:"bytes,4,opt,name=oneof_message,json=oneofMessage,oneof"`
-}
-
-func (*TestRequiredForeign_OneofMessage) isTestRequiredForeign_OneofField() {}
-
-type TestRequiredGroupFields struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Optionalgroup *TestRequiredGroupFields_OptionalGroup   `protobuf:"group,1,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
-	Repeatedgroup []*TestRequiredGroupFields_RepeatedGroup `protobuf:"group,3,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
-}
-
-func (x *TestRequiredGroupFields) Reset() {
-	*x = TestRequiredGroupFields{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[10]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestRequiredGroupFields) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestRequiredGroupFields) ProtoMessage() {}
-
-func (x *TestRequiredGroupFields) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[10]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestRequiredGroupFields.ProtoReflect.Descriptor instead.
-func (*TestRequiredGroupFields) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *TestRequiredGroupFields) GetOptionalgroup() *TestRequiredGroupFields_OptionalGroup {
-	if x != nil {
-		return x.Optionalgroup
-	}
-	return nil
-}
-
-func (x *TestRequiredGroupFields) GetRepeatedgroup() []*TestRequiredGroupFields_RepeatedGroup {
-	if x != nil {
-		return x.Repeatedgroup
-	}
-	return nil
-}
-
-type TestWeak struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	weakFields    protoimpl.WeakFields
-	unknownFields protoimpl.UnknownFields
-
-	XXX_weak_WeakMessage1 struct{} `protobuf:"bytes,1,opt,name=weak_message1,json=weakMessage1,weak=goproto.proto.test.weak.WeakImportMessage1" json:"weak_message1,omitempty"`
-	XXX_weak_WeakMessage2 struct{} `protobuf:"bytes,2,opt,name=weak_message2,json=weakMessage2,weak=goproto.proto.test.weak.WeakImportMessage2" json:"weak_message2,omitempty"`
-}
-
-func (x *TestWeak) Reset() {
-	*x = TestWeak{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[11]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestWeak) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestWeak) ProtoMessage() {}
-
-func (x *TestWeak) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[11]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestWeak.ProtoReflect.Descriptor instead.
-func (*TestWeak) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *TestWeak) GetWeakMessage1() proto.Message {
-	var w protoimpl.WeakFields
-	if x != nil {
-		w = x.weakFields
-	}
-	return protoimpl.X.GetWeak(w, 1, "goproto.proto.test.weak.WeakImportMessage1")
-}
-
-func (x *TestWeak) GetWeakMessage2() proto.Message {
-	var w protoimpl.WeakFields
-	if x != nil {
-		w = x.weakFields
-	}
-	return protoimpl.X.GetWeak(w, 2, "goproto.proto.test.weak.WeakImportMessage2")
-}
-
-func (x *TestWeak) SetWeakMessage1(v proto.Message) {
-	var w *protoimpl.WeakFields
-	if x != nil {
-		w = &x.weakFields
-	}
-	protoimpl.X.SetWeak(w, 1, "goproto.proto.test.weak.WeakImportMessage1", v)
-}
-
-func (x *TestWeak) SetWeakMessage2(v proto.Message) {
-	var w *protoimpl.WeakFields
-	if x != nil {
-		w = &x.weakFields
-	}
-	protoimpl.X.SetWeak(w, 2, "goproto.proto.test.weak.WeakImportMessage2", v)
-}
-
-type TestPackedTypes struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	PackedInt32    []int32       `protobuf:"varint,90,rep,packed,name=packed_int32,json=packedInt32" json:"packed_int32,omitempty"`
-	PackedInt64    []int64       `protobuf:"varint,91,rep,packed,name=packed_int64,json=packedInt64" json:"packed_int64,omitempty"`
-	PackedUint32   []uint32      `protobuf:"varint,92,rep,packed,name=packed_uint32,json=packedUint32" json:"packed_uint32,omitempty"`
-	PackedUint64   []uint64      `protobuf:"varint,93,rep,packed,name=packed_uint64,json=packedUint64" json:"packed_uint64,omitempty"`
-	PackedSint32   []int32       `protobuf:"zigzag32,94,rep,packed,name=packed_sint32,json=packedSint32" json:"packed_sint32,omitempty"`
-	PackedSint64   []int64       `protobuf:"zigzag64,95,rep,packed,name=packed_sint64,json=packedSint64" json:"packed_sint64,omitempty"`
-	PackedFixed32  []uint32      `protobuf:"fixed32,96,rep,packed,name=packed_fixed32,json=packedFixed32" json:"packed_fixed32,omitempty"`
-	PackedFixed64  []uint64      `protobuf:"fixed64,97,rep,packed,name=packed_fixed64,json=packedFixed64" json:"packed_fixed64,omitempty"`
-	PackedSfixed32 []int32       `protobuf:"fixed32,98,rep,packed,name=packed_sfixed32,json=packedSfixed32" json:"packed_sfixed32,omitempty"`
-	PackedSfixed64 []int64       `protobuf:"fixed64,99,rep,packed,name=packed_sfixed64,json=packedSfixed64" json:"packed_sfixed64,omitempty"`
-	PackedFloat    []float32     `protobuf:"fixed32,100,rep,packed,name=packed_float,json=packedFloat" json:"packed_float,omitempty"`
-	PackedDouble   []float64     `protobuf:"fixed64,101,rep,packed,name=packed_double,json=packedDouble" json:"packed_double,omitempty"`
-	PackedBool     []bool        `protobuf:"varint,102,rep,packed,name=packed_bool,json=packedBool" json:"packed_bool,omitempty"`
-	PackedEnum     []ForeignEnum `protobuf:"varint,103,rep,packed,name=packed_enum,json=packedEnum,enum=goproto.proto.test.ForeignEnum" json:"packed_enum,omitempty"`
-}
-
-func (x *TestPackedTypes) Reset() {
-	*x = TestPackedTypes{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[12]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestPackedTypes) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestPackedTypes) ProtoMessage() {}
-
-func (x *TestPackedTypes) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[12]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestPackedTypes.ProtoReflect.Descriptor instead.
-func (*TestPackedTypes) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *TestPackedTypes) GetPackedInt32() []int32 {
-	if x != nil {
-		return x.PackedInt32
-	}
-	return nil
-}
-
-func (x *TestPackedTypes) GetPackedInt64() []int64 {
-	if x != nil {
-		return x.PackedInt64
-	}
-	return nil
-}
-
-func (x *TestPackedTypes) GetPackedUint32() []uint32 {
-	if x != nil {
-		return x.PackedUint32
-	}
-	return nil
-}
-
-func (x *TestPackedTypes) GetPackedUint64() []uint64 {
-	if x != nil {
-		return x.PackedUint64
-	}
-	return nil
-}
-
-func (x *TestPackedTypes) GetPackedSint32() []int32 {
-	if x != nil {
-		return x.PackedSint32
-	}
-	return nil
-}
-
-func (x *TestPackedTypes) GetPackedSint64() []int64 {
-	if x != nil {
-		return x.PackedSint64
-	}
-	return nil
-}
-
-func (x *TestPackedTypes) GetPackedFixed32() []uint32 {
-	if x != nil {
-		return x.PackedFixed32
-	}
-	return nil
-}
-
-func (x *TestPackedTypes) GetPackedFixed64() []uint64 {
-	if x != nil {
-		return x.PackedFixed64
-	}
-	return nil
-}
-
-func (x *TestPackedTypes) GetPackedSfixed32() []int32 {
-	if x != nil {
-		return x.PackedSfixed32
-	}
-	return nil
-}
-
-func (x *TestPackedTypes) GetPackedSfixed64() []int64 {
-	if x != nil {
-		return x.PackedSfixed64
-	}
-	return nil
-}
-
-func (x *TestPackedTypes) GetPackedFloat() []float32 {
-	if x != nil {
-		return x.PackedFloat
-	}
-	return nil
-}
-
-func (x *TestPackedTypes) GetPackedDouble() []float64 {
-	if x != nil {
-		return x.PackedDouble
-	}
-	return nil
-}
-
-func (x *TestPackedTypes) GetPackedBool() []bool {
-	if x != nil {
-		return x.PackedBool
-	}
-	return nil
-}
-
-func (x *TestPackedTypes) GetPackedEnum() []ForeignEnum {
-	if x != nil {
-		return x.PackedEnum
-	}
-	return nil
-}
-
-type TestUnpackedTypes struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	UnpackedInt32    []int32       `protobuf:"varint,90,rep,name=unpacked_int32,json=unpackedInt32" json:"unpacked_int32,omitempty"`
-	UnpackedInt64    []int64       `protobuf:"varint,91,rep,name=unpacked_int64,json=unpackedInt64" json:"unpacked_int64,omitempty"`
-	UnpackedUint32   []uint32      `protobuf:"varint,92,rep,name=unpacked_uint32,json=unpackedUint32" json:"unpacked_uint32,omitempty"`
-	UnpackedUint64   []uint64      `protobuf:"varint,93,rep,name=unpacked_uint64,json=unpackedUint64" json:"unpacked_uint64,omitempty"`
-	UnpackedSint32   []int32       `protobuf:"zigzag32,94,rep,name=unpacked_sint32,json=unpackedSint32" json:"unpacked_sint32,omitempty"`
-	UnpackedSint64   []int64       `protobuf:"zigzag64,95,rep,name=unpacked_sint64,json=unpackedSint64" json:"unpacked_sint64,omitempty"`
-	UnpackedFixed32  []uint32      `protobuf:"fixed32,96,rep,name=unpacked_fixed32,json=unpackedFixed32" json:"unpacked_fixed32,omitempty"`
-	UnpackedFixed64  []uint64      `protobuf:"fixed64,97,rep,name=unpacked_fixed64,json=unpackedFixed64" json:"unpacked_fixed64,omitempty"`
-	UnpackedSfixed32 []int32       `protobuf:"fixed32,98,rep,name=unpacked_sfixed32,json=unpackedSfixed32" json:"unpacked_sfixed32,omitempty"`
-	UnpackedSfixed64 []int64       `protobuf:"fixed64,99,rep,name=unpacked_sfixed64,json=unpackedSfixed64" json:"unpacked_sfixed64,omitempty"`
-	UnpackedFloat    []float32     `protobuf:"fixed32,100,rep,name=unpacked_float,json=unpackedFloat" json:"unpacked_float,omitempty"`
-	UnpackedDouble   []float64     `protobuf:"fixed64,101,rep,name=unpacked_double,json=unpackedDouble" json:"unpacked_double,omitempty"`
-	UnpackedBool     []bool        `protobuf:"varint,102,rep,name=unpacked_bool,json=unpackedBool" json:"unpacked_bool,omitempty"`
-	UnpackedEnum     []ForeignEnum `protobuf:"varint,103,rep,name=unpacked_enum,json=unpackedEnum,enum=goproto.proto.test.ForeignEnum" json:"unpacked_enum,omitempty"`
-}
-
-func (x *TestUnpackedTypes) Reset() {
-	*x = TestUnpackedTypes{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[13]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestUnpackedTypes) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestUnpackedTypes) ProtoMessage() {}
-
-func (x *TestUnpackedTypes) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[13]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestUnpackedTypes.ProtoReflect.Descriptor instead.
-func (*TestUnpackedTypes) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *TestUnpackedTypes) GetUnpackedInt32() []int32 {
-	if x != nil {
-		return x.UnpackedInt32
-	}
-	return nil
-}
-
-func (x *TestUnpackedTypes) GetUnpackedInt64() []int64 {
-	if x != nil {
-		return x.UnpackedInt64
-	}
-	return nil
-}
-
-func (x *TestUnpackedTypes) GetUnpackedUint32() []uint32 {
-	if x != nil {
-		return x.UnpackedUint32
-	}
-	return nil
-}
-
-func (x *TestUnpackedTypes) GetUnpackedUint64() []uint64 {
-	if x != nil {
-		return x.UnpackedUint64
-	}
-	return nil
-}
-
-func (x *TestUnpackedTypes) GetUnpackedSint32() []int32 {
-	if x != nil {
-		return x.UnpackedSint32
-	}
-	return nil
-}
-
-func (x *TestUnpackedTypes) GetUnpackedSint64() []int64 {
-	if x != nil {
-		return x.UnpackedSint64
-	}
-	return nil
-}
-
-func (x *TestUnpackedTypes) GetUnpackedFixed32() []uint32 {
-	if x != nil {
-		return x.UnpackedFixed32
-	}
-	return nil
-}
-
-func (x *TestUnpackedTypes) GetUnpackedFixed64() []uint64 {
-	if x != nil {
-		return x.UnpackedFixed64
-	}
-	return nil
-}
-
-func (x *TestUnpackedTypes) GetUnpackedSfixed32() []int32 {
-	if x != nil {
-		return x.UnpackedSfixed32
-	}
-	return nil
-}
-
-func (x *TestUnpackedTypes) GetUnpackedSfixed64() []int64 {
-	if x != nil {
-		return x.UnpackedSfixed64
-	}
-	return nil
-}
-
-func (x *TestUnpackedTypes) GetUnpackedFloat() []float32 {
-	if x != nil {
-		return x.UnpackedFloat
-	}
-	return nil
-}
-
-func (x *TestUnpackedTypes) GetUnpackedDouble() []float64 {
-	if x != nil {
-		return x.UnpackedDouble
-	}
-	return nil
-}
-
-func (x *TestUnpackedTypes) GetUnpackedBool() []bool {
-	if x != nil {
-		return x.UnpackedBool
-	}
-	return nil
-}
-
-func (x *TestUnpackedTypes) GetUnpackedEnum() []ForeignEnum {
-	if x != nil {
-		return x.UnpackedEnum
-	}
-	return nil
-}
-
-type TestPackedExtensions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-}
-
-func (x *TestPackedExtensions) Reset() {
-	*x = TestPackedExtensions{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[14]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestPackedExtensions) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestPackedExtensions) ProtoMessage() {}
-
-func (x *TestPackedExtensions) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[14]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestPackedExtensions.ProtoReflect.Descriptor instead.
-func (*TestPackedExtensions) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{14}
-}
-
-type TestUnpackedExtensions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-}
-
-func (x *TestUnpackedExtensions) Reset() {
-	*x = TestUnpackedExtensions{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[15]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestUnpackedExtensions) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestUnpackedExtensions) ProtoMessage() {}
-
-func (x *TestUnpackedExtensions) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[15]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestUnpackedExtensions.ProtoReflect.Descriptor instead.
-func (*TestUnpackedExtensions) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{15}
-}
-
-// Test that RPC services work.
-type FooRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *FooRequest) Reset() {
-	*x = FooRequest{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[16]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *FooRequest) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FooRequest) ProtoMessage() {}
-
-func (x *FooRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[16]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use FooRequest.ProtoReflect.Descriptor instead.
-func (*FooRequest) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{16}
-}
-
-type FooResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *FooResponse) Reset() {
-	*x = FooResponse{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[17]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *FooResponse) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FooResponse) ProtoMessage() {}
-
-func (x *FooResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[17]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use FooResponse.ProtoReflect.Descriptor instead.
-func (*FooResponse) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{17}
-}
-
-type WeirdDefault struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	WeirdDefault []byte `protobuf:"bytes,1,opt,name=weird_default,json=weirdDefault,def=hello, \\\"world!\\\"\\ndead\\336\\255\\276\\357beef\x60" json:"weird_default,omitempty"`
-}
-
-// Default values for WeirdDefault fields.
-var (
-	Default_WeirdDefault_WeirdDefault = []byte("hello, \"world!\"\ndeadޭ\xbe\xefbeef`")
-)
-
-func (x *WeirdDefault) Reset() {
-	*x = WeirdDefault{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[18]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *WeirdDefault) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*WeirdDefault) ProtoMessage() {}
-
-func (x *WeirdDefault) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[18]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use WeirdDefault.ProtoReflect.Descriptor instead.
-func (*WeirdDefault) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{18}
-}
-
-func (x *WeirdDefault) GetWeirdDefault() []byte {
-	if x != nil && x.WeirdDefault != nil {
-		return x.WeirdDefault
-	}
-	return append([]byte(nil), Default_WeirdDefault_WeirdDefault...)
-}
-
-type RemoteDefault struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Default     *enums.Enum `protobuf:"varint,1,opt,name=default,enum=goproto.proto.enums.Enum" json:"default,omitempty"`
-	Zero        *enums.Enum `protobuf:"varint,2,opt,name=zero,enum=goproto.proto.enums.Enum,def=0" json:"zero,omitempty"`
-	One         *enums.Enum `protobuf:"varint,3,opt,name=one,enum=goproto.proto.enums.Enum,def=1" json:"one,omitempty"`
-	Elevent     *enums.Enum `protobuf:"varint,4,opt,name=elevent,enum=goproto.proto.enums.Enum,def=11" json:"elevent,omitempty"`
-	Seventeen   *enums.Enum `protobuf:"varint,5,opt,name=seventeen,enum=goproto.proto.enums.Enum,def=17" json:"seventeen,omitempty"`
-	Thirtyseven *enums.Enum `protobuf:"varint,6,opt,name=thirtyseven,enum=goproto.proto.enums.Enum,def=37" json:"thirtyseven,omitempty"`
-	Sixtyseven  *enums.Enum `protobuf:"varint,7,opt,name=sixtyseven,enum=goproto.proto.enums.Enum,def=67" json:"sixtyseven,omitempty"`
-	Negative    *enums.Enum `protobuf:"varint,8,opt,name=negative,enum=goproto.proto.enums.Enum,def=-1" json:"negative,omitempty"`
-}
-
-// Default values for RemoteDefault fields.
-const (
-	Default_RemoteDefault_Zero        = enums.Enum(0)  // enums.Enum_ZERO
-	Default_RemoteDefault_One         = enums.Enum(1)  // enums.Enum_ONE
-	Default_RemoteDefault_Elevent     = enums.Enum(11) // enums.Enum_ELEVENT
-	Default_RemoteDefault_Seventeen   = enums.Enum(17) // enums.Enum_SEVENTEEN
-	Default_RemoteDefault_Thirtyseven = enums.Enum(37) // enums.Enum_THIRTYSEVEN
-	Default_RemoteDefault_Sixtyseven  = enums.Enum(67) // enums.Enum_SIXTYSEVEN
-	Default_RemoteDefault_Negative    = enums.Enum(-1) // enums.Enum_NEGATIVE
-)
-
-func (x *RemoteDefault) Reset() {
-	*x = RemoteDefault{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[19]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *RemoteDefault) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RemoteDefault) ProtoMessage() {}
-
-func (x *RemoteDefault) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[19]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use RemoteDefault.ProtoReflect.Descriptor instead.
-func (*RemoteDefault) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{19}
-}
-
-func (x *RemoteDefault) GetDefault() enums.Enum {
-	if x != nil && x.Default != nil {
-		return *x.Default
-	}
-	return enums.Enum(1337)
-}
-
-func (x *RemoteDefault) GetZero() enums.Enum {
-	if x != nil && x.Zero != nil {
-		return *x.Zero
-	}
-	return Default_RemoteDefault_Zero
-}
-
-func (x *RemoteDefault) GetOne() enums.Enum {
-	if x != nil && x.One != nil {
-		return *x.One
-	}
-	return Default_RemoteDefault_One
-}
-
-func (x *RemoteDefault) GetElevent() enums.Enum {
-	if x != nil && x.Elevent != nil {
-		return *x.Elevent
-	}
-	return Default_RemoteDefault_Elevent
-}
-
-func (x *RemoteDefault) GetSeventeen() enums.Enum {
-	if x != nil && x.Seventeen != nil {
-		return *x.Seventeen
-	}
-	return Default_RemoteDefault_Seventeen
-}
-
-func (x *RemoteDefault) GetThirtyseven() enums.Enum {
-	if x != nil && x.Thirtyseven != nil {
-		return *x.Thirtyseven
-	}
-	return Default_RemoteDefault_Thirtyseven
-}
-
-func (x *RemoteDefault) GetSixtyseven() enums.Enum {
-	if x != nil && x.Sixtyseven != nil {
-		return *x.Sixtyseven
-	}
-	return Default_RemoteDefault_Sixtyseven
-}
-
-func (x *RemoteDefault) GetNegative() enums.Enum {
-	if x != nil && x.Negative != nil {
-		return *x.Negative
-	}
-	return Default_RemoteDefault_Negative
-}
-
-type TestAllTypes_NestedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	A           *int32        `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
-	Corecursive *TestAllTypes `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
-}
-
-func (x *TestAllTypes_NestedMessage) Reset() {
-	*x = TestAllTypes_NestedMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[20]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestAllTypes_NestedMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestAllTypes_NestedMessage) ProtoMessage() {}
-
-func (x *TestAllTypes_NestedMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[20]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestAllTypes_NestedMessage.ProtoReflect.Descriptor instead.
-func (*TestAllTypes_NestedMessage) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{0, 0}
-}
-
-func (x *TestAllTypes_NestedMessage) GetA() int32 {
-	if x != nil && x.A != nil {
-		return *x.A
-	}
-	return 0
-}
-
-func (x *TestAllTypes_NestedMessage) GetCorecursive() *TestAllTypes {
-	if x != nil {
-		return x.Corecursive
-	}
-	return nil
-}
-
-type TestAllTypes_OptionalGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	A                     *int32                      `protobuf:"varint,17,opt,name=a" json:"a,omitempty"`
-	OptionalNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,1000,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
-	SameFieldNumber       *int32                      `protobuf:"varint,16,opt,name=same_field_number,json=sameFieldNumber" json:"same_field_number,omitempty"`
-}
-
-func (x *TestAllTypes_OptionalGroup) Reset() {
-	*x = TestAllTypes_OptionalGroup{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[21]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestAllTypes_OptionalGroup) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestAllTypes_OptionalGroup) ProtoMessage() {}
-
-func (x *TestAllTypes_OptionalGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[21]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestAllTypes_OptionalGroup.ProtoReflect.Descriptor instead.
-func (*TestAllTypes_OptionalGroup) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{0, 1}
-}
-
-func (x *TestAllTypes_OptionalGroup) GetA() int32 {
-	if x != nil && x.A != nil {
-		return *x.A
-	}
-	return 0
-}
-
-func (x *TestAllTypes_OptionalGroup) GetOptionalNestedMessage() *TestAllTypes_NestedMessage {
-	if x != nil {
-		return x.OptionalNestedMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypes_OptionalGroup) GetSameFieldNumber() int32 {
-	if x != nil && x.SameFieldNumber != nil {
-		return *x.SameFieldNumber
-	}
-	return 0
-}
-
-type TestAllTypes_RepeatedGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	A                     *int32                      `protobuf:"varint,47,opt,name=a" json:"a,omitempty"`
-	OptionalNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,1001,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
-}
-
-func (x *TestAllTypes_RepeatedGroup) Reset() {
-	*x = TestAllTypes_RepeatedGroup{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[22]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestAllTypes_RepeatedGroup) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestAllTypes_RepeatedGroup) ProtoMessage() {}
-
-func (x *TestAllTypes_RepeatedGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[22]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestAllTypes_RepeatedGroup.ProtoReflect.Descriptor instead.
-func (*TestAllTypes_RepeatedGroup) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{0, 2}
-}
-
-func (x *TestAllTypes_RepeatedGroup) GetA() int32 {
-	if x != nil && x.A != nil {
-		return *x.A
-	}
-	return 0
-}
-
-func (x *TestAllTypes_RepeatedGroup) GetOptionalNestedMessage() *TestAllTypes_NestedMessage {
-	if x != nil {
-		return x.OptionalNestedMessage
-	}
-	return nil
-}
-
-type TestAllTypes_OneofGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	A *int32 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
-	B *int32 `protobuf:"varint,2,opt,name=b" json:"b,omitempty"`
-}
-
-func (x *TestAllTypes_OneofGroup) Reset() {
-	*x = TestAllTypes_OneofGroup{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[40]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestAllTypes_OneofGroup) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestAllTypes_OneofGroup) ProtoMessage() {}
-
-func (x *TestAllTypes_OneofGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[40]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestAllTypes_OneofGroup.ProtoReflect.Descriptor instead.
-func (*TestAllTypes_OneofGroup) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{0, 20}
-}
-
-func (x *TestAllTypes_OneofGroup) GetA() int32 {
-	if x != nil && x.A != nil {
-		return *x.A
-	}
-	return 0
-}
-
-func (x *TestAllTypes_OneofGroup) GetB() int32 {
-	if x != nil && x.B != nil {
-		return *x.B
-	}
-	return 0
-}
-
-type TestAllExtensions_NestedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	A           *int32             `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
-	Corecursive *TestAllExtensions `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
-}
-
-func (x *TestAllExtensions_NestedMessage) Reset() {
-	*x = TestAllExtensions_NestedMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[41]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestAllExtensions_NestedMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestAllExtensions_NestedMessage) ProtoMessage() {}
-
-func (x *TestAllExtensions_NestedMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[41]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestAllExtensions_NestedMessage.ProtoReflect.Descriptor instead.
-func (*TestAllExtensions_NestedMessage) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{4, 0}
-}
-
-func (x *TestAllExtensions_NestedMessage) GetA() int32 {
-	if x != nil && x.A != nil {
-		return *x.A
-	}
-	return 0
-}
-
-func (x *TestAllExtensions_NestedMessage) GetCorecursive() *TestAllExtensions {
-	if x != nil {
-		return x.Corecursive
-	}
-	return nil
-}
-
-type TestRequiredGroupFields_OptionalGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	A *int32 `protobuf:"varint,2,req,name=a" json:"a,omitempty"`
-}
-
-func (x *TestRequiredGroupFields_OptionalGroup) Reset() {
-	*x = TestRequiredGroupFields_OptionalGroup{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[43]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestRequiredGroupFields_OptionalGroup) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestRequiredGroupFields_OptionalGroup) ProtoMessage() {}
-
-func (x *TestRequiredGroupFields_OptionalGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[43]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestRequiredGroupFields_OptionalGroup.ProtoReflect.Descriptor instead.
-func (*TestRequiredGroupFields_OptionalGroup) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{10, 0}
-}
-
-func (x *TestRequiredGroupFields_OptionalGroup) GetA() int32 {
-	if x != nil && x.A != nil {
-		return *x.A
-	}
-	return 0
-}
-
-type TestRequiredGroupFields_RepeatedGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	A *int32 `protobuf:"varint,4,req,name=a" json:"a,omitempty"`
-}
-
-func (x *TestRequiredGroupFields_RepeatedGroup) Reset() {
-	*x = TestRequiredGroupFields_RepeatedGroup{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_proto_msgTypes[44]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestRequiredGroupFields_RepeatedGroup) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestRequiredGroupFields_RepeatedGroup) ProtoMessage() {}
-
-func (x *TestRequiredGroupFields_RepeatedGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_proto_msgTypes[44]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestRequiredGroupFields_RepeatedGroup.ProtoReflect.Descriptor instead.
-func (*TestRequiredGroupFields_RepeatedGroup) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_proto_rawDescGZIP(), []int{10, 1}
-}
-
-func (x *TestRequiredGroupFields_RepeatedGroup) GetA() int32 {
-	if x != nil && x.A != nil {
-		return *x.A
-	}
-	return 0
-}
-
-var file_internal_testprotos_test_test_proto_extTypes = []protoimpl.ExtensionInfo{
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*int32)(nil),
-		Field:         1,
-		Name:          "goproto.proto.test.optional_int32",
-		Tag:           "varint,1,opt,name=optional_int32",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*int64)(nil),
-		Field:         2,
-		Name:          "goproto.proto.test.optional_int64",
-		Tag:           "varint,2,opt,name=optional_int64",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*uint32)(nil),
-		Field:         3,
-		Name:          "goproto.proto.test.optional_uint32",
-		Tag:           "varint,3,opt,name=optional_uint32",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*uint64)(nil),
-		Field:         4,
-		Name:          "goproto.proto.test.optional_uint64",
-		Tag:           "varint,4,opt,name=optional_uint64",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*int32)(nil),
-		Field:         5,
-		Name:          "goproto.proto.test.optional_sint32",
-		Tag:           "zigzag32,5,opt,name=optional_sint32",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*int64)(nil),
-		Field:         6,
-		Name:          "goproto.proto.test.optional_sint64",
-		Tag:           "zigzag64,6,opt,name=optional_sint64",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*uint32)(nil),
-		Field:         7,
-		Name:          "goproto.proto.test.optional_fixed32",
-		Tag:           "fixed32,7,opt,name=optional_fixed32",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*uint64)(nil),
-		Field:         8,
-		Name:          "goproto.proto.test.optional_fixed64",
-		Tag:           "fixed64,8,opt,name=optional_fixed64",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*int32)(nil),
-		Field:         9,
-		Name:          "goproto.proto.test.optional_sfixed32",
-		Tag:           "fixed32,9,opt,name=optional_sfixed32",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*int64)(nil),
-		Field:         10,
-		Name:          "goproto.proto.test.optional_sfixed64",
-		Tag:           "fixed64,10,opt,name=optional_sfixed64",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*float32)(nil),
-		Field:         11,
-		Name:          "goproto.proto.test.optional_float",
-		Tag:           "fixed32,11,opt,name=optional_float",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*float64)(nil),
-		Field:         12,
-		Name:          "goproto.proto.test.optional_double",
-		Tag:           "fixed64,12,opt,name=optional_double",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*bool)(nil),
-		Field:         13,
-		Name:          "goproto.proto.test.optional_bool",
-		Tag:           "varint,13,opt,name=optional_bool",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*string)(nil),
-		Field:         14,
-		Name:          "goproto.proto.test.optional_string",
-		Tag:           "bytes,14,opt,name=optional_string",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: ([]byte)(nil),
-		Field:         15,
-		Name:          "goproto.proto.test.optional_bytes",
-		Tag:           "bytes,15,opt,name=optional_bytes",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*OptionalGroup)(nil),
-		Field:         16,
-		Name:          "goproto.proto.test.optionalgroup",
-		Tag:           "group,16,opt,name=OptionalGroup",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*TestAllExtensions_NestedMessage)(nil),
-		Field:         18,
-		Name:          "goproto.proto.test.optional_nested_message",
-		Tag:           "bytes,18,opt,name=optional_nested_message",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*TestAllTypes_NestedEnum)(nil),
-		Field:         21,
-		Name:          "goproto.proto.test.optional_nested_enum",
-		Tag:           "varint,21,opt,name=optional_nested_enum,enum=goproto.proto.test.TestAllTypes_NestedEnum",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: ([]int32)(nil),
-		Field:         31,
-		Name:          "goproto.proto.test.repeated_int32",
-		Tag:           "varint,31,rep,name=repeated_int32",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: ([]int64)(nil),
-		Field:         32,
-		Name:          "goproto.proto.test.repeated_int64",
-		Tag:           "varint,32,rep,name=repeated_int64",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: ([]uint32)(nil),
-		Field:         33,
-		Name:          "goproto.proto.test.repeated_uint32",
-		Tag:           "varint,33,rep,name=repeated_uint32",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: ([]uint64)(nil),
-		Field:         34,
-		Name:          "goproto.proto.test.repeated_uint64",
-		Tag:           "varint,34,rep,name=repeated_uint64",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: ([]int32)(nil),
-		Field:         35,
-		Name:          "goproto.proto.test.repeated_sint32",
-		Tag:           "zigzag32,35,rep,name=repeated_sint32",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: ([]int64)(nil),
-		Field:         36,
-		Name:          "goproto.proto.test.repeated_sint64",
-		Tag:           "zigzag64,36,rep,name=repeated_sint64",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: ([]uint32)(nil),
-		Field:         37,
-		Name:          "goproto.proto.test.repeated_fixed32",
-		Tag:           "fixed32,37,rep,name=repeated_fixed32",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: ([]uint64)(nil),
-		Field:         38,
-		Name:          "goproto.proto.test.repeated_fixed64",
-		Tag:           "fixed64,38,rep,name=repeated_fixed64",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: ([]int32)(nil),
-		Field:         39,
-		Name:          "goproto.proto.test.repeated_sfixed32",
-		Tag:           "fixed32,39,rep,name=repeated_sfixed32",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: ([]int64)(nil),
-		Field:         40,
-		Name:          "goproto.proto.test.repeated_sfixed64",
-		Tag:           "fixed64,40,rep,name=repeated_sfixed64",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: ([]float32)(nil),
-		Field:         41,
-		Name:          "goproto.proto.test.repeated_float",
-		Tag:           "fixed32,41,rep,name=repeated_float",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: ([]float64)(nil),
-		Field:         42,
-		Name:          "goproto.proto.test.repeated_double",
-		Tag:           "fixed64,42,rep,name=repeated_double",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: ([]bool)(nil),
-		Field:         43,
-		Name:          "goproto.proto.test.repeated_bool",
-		Tag:           "varint,43,rep,name=repeated_bool",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: ([]string)(nil),
-		Field:         44,
-		Name:          "goproto.proto.test.repeated_string",
-		Tag:           "bytes,44,rep,name=repeated_string",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: ([][]byte)(nil),
-		Field:         45,
-		Name:          "goproto.proto.test.repeated_bytes",
-		Tag:           "bytes,45,rep,name=repeated_bytes",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: ([]*RepeatedGroup)(nil),
-		Field:         46,
-		Name:          "goproto.proto.test.repeatedgroup",
-		Tag:           "group,46,rep,name=RepeatedGroup",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: ([]*TestAllExtensions_NestedMessage)(nil),
-		Field:         48,
-		Name:          "goproto.proto.test.repeated_nested_message",
-		Tag:           "bytes,48,rep,name=repeated_nested_message",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: ([]TestAllTypes_NestedEnum)(nil),
-		Field:         51,
-		Name:          "goproto.proto.test.repeated_nested_enum",
-		Tag:           "varint,51,rep,name=repeated_nested_enum,enum=goproto.proto.test.TestAllTypes_NestedEnum",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*int32)(nil),
-		Field:         81,
-		Name:          "goproto.proto.test.default_int32",
-		Tag:           "varint,81,opt,name=default_int32,def=81",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*int64)(nil),
-		Field:         82,
-		Name:          "goproto.proto.test.default_int64",
-		Tag:           "varint,82,opt,name=default_int64,def=82",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*uint32)(nil),
-		Field:         83,
-		Name:          "goproto.proto.test.default_uint32",
-		Tag:           "varint,83,opt,name=default_uint32,def=83",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*uint64)(nil),
-		Field:         84,
-		Name:          "goproto.proto.test.default_uint64",
-		Tag:           "varint,84,opt,name=default_uint64,def=84",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*int32)(nil),
-		Field:         85,
-		Name:          "goproto.proto.test.default_sint32",
-		Tag:           "zigzag32,85,opt,name=default_sint32,def=-85",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*int64)(nil),
-		Field:         86,
-		Name:          "goproto.proto.test.default_sint64",
-		Tag:           "zigzag64,86,opt,name=default_sint64,def=86",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*uint32)(nil),
-		Field:         87,
-		Name:          "goproto.proto.test.default_fixed32",
-		Tag:           "fixed32,87,opt,name=default_fixed32,def=87",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*uint64)(nil),
-		Field:         88,
-		Name:          "goproto.proto.test.default_fixed64",
-		Tag:           "fixed64,88,opt,name=default_fixed64,def=88",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*int32)(nil),
-		Field:         89,
-		Name:          "goproto.proto.test.default_sfixed32",
-		Tag:           "fixed32,89,opt,name=default_sfixed32,def=89",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*int64)(nil),
-		Field:         80,
-		Name:          "goproto.proto.test.default_sfixed64",
-		Tag:           "fixed64,80,opt,name=default_sfixed64,def=-90",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*float32)(nil),
-		Field:         91,
-		Name:          "goproto.proto.test.default_float",
-		Tag:           "fixed32,91,opt,name=default_float,def=91.5",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*float64)(nil),
-		Field:         92,
-		Name:          "goproto.proto.test.default_double",
-		Tag:           "fixed64,92,opt,name=default_double,def=92000",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*bool)(nil),
-		Field:         93,
-		Name:          "goproto.proto.test.default_bool",
-		Tag:           "varint,93,opt,name=default_bool,def=1",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*string)(nil),
-		Field:         94,
-		Name:          "goproto.proto.test.default_string",
-		Tag:           "bytes,94,opt,name=default_string,def=hello",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: ([]byte)(nil),
-		Field:         95,
-		Name:          "goproto.proto.test.default_bytes",
-		Tag:           "bytes,95,opt,name=default_bytes,def=world",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestPackedExtensions)(nil),
-		ExtensionType: ([]int32)(nil),
-		Field:         90,
-		Name:          "goproto.proto.test.packed_int32",
-		Tag:           "varint,90,rep,packed,name=packed_int32",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestPackedExtensions)(nil),
-		ExtensionType: ([]int64)(nil),
-		Field:         91,
-		Name:          "goproto.proto.test.packed_int64",
-		Tag:           "varint,91,rep,packed,name=packed_int64",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestPackedExtensions)(nil),
-		ExtensionType: ([]uint32)(nil),
-		Field:         92,
-		Name:          "goproto.proto.test.packed_uint32",
-		Tag:           "varint,92,rep,packed,name=packed_uint32",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestPackedExtensions)(nil),
-		ExtensionType: ([]uint64)(nil),
-		Field:         93,
-		Name:          "goproto.proto.test.packed_uint64",
-		Tag:           "varint,93,rep,packed,name=packed_uint64",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestPackedExtensions)(nil),
-		ExtensionType: ([]int32)(nil),
-		Field:         94,
-		Name:          "goproto.proto.test.packed_sint32",
-		Tag:           "zigzag32,94,rep,packed,name=packed_sint32",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestPackedExtensions)(nil),
-		ExtensionType: ([]int64)(nil),
-		Field:         95,
-		Name:          "goproto.proto.test.packed_sint64",
-		Tag:           "zigzag64,95,rep,packed,name=packed_sint64",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestPackedExtensions)(nil),
-		ExtensionType: ([]uint32)(nil),
-		Field:         96,
-		Name:          "goproto.proto.test.packed_fixed32",
-		Tag:           "fixed32,96,rep,packed,name=packed_fixed32",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestPackedExtensions)(nil),
-		ExtensionType: ([]uint64)(nil),
-		Field:         97,
-		Name:          "goproto.proto.test.packed_fixed64",
-		Tag:           "fixed64,97,rep,packed,name=packed_fixed64",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestPackedExtensions)(nil),
-		ExtensionType: ([]int32)(nil),
-		Field:         98,
-		Name:          "goproto.proto.test.packed_sfixed32",
-		Tag:           "fixed32,98,rep,packed,name=packed_sfixed32",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestPackedExtensions)(nil),
-		ExtensionType: ([]int64)(nil),
-		Field:         99,
-		Name:          "goproto.proto.test.packed_sfixed64",
-		Tag:           "fixed64,99,rep,packed,name=packed_sfixed64",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestPackedExtensions)(nil),
-		ExtensionType: ([]float32)(nil),
-		Field:         100,
-		Name:          "goproto.proto.test.packed_float",
-		Tag:           "fixed32,100,rep,packed,name=packed_float",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestPackedExtensions)(nil),
-		ExtensionType: ([]float64)(nil),
-		Field:         101,
-		Name:          "goproto.proto.test.packed_double",
-		Tag:           "fixed64,101,rep,packed,name=packed_double",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestPackedExtensions)(nil),
-		ExtensionType: ([]bool)(nil),
-		Field:         102,
-		Name:          "goproto.proto.test.packed_bool",
-		Tag:           "varint,102,rep,packed,name=packed_bool",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestPackedExtensions)(nil),
-		ExtensionType: ([]ForeignEnum)(nil),
-		Field:         103,
-		Name:          "goproto.proto.test.packed_enum",
-		Tag:           "varint,103,rep,packed,name=packed_enum,enum=goproto.proto.test.ForeignEnum",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestUnpackedExtensions)(nil),
-		ExtensionType: ([]int32)(nil),
-		Field:         90,
-		Name:          "goproto.proto.test.unpacked_int32",
-		Tag:           "varint,90,rep,name=unpacked_int32",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestUnpackedExtensions)(nil),
-		ExtensionType: ([]int64)(nil),
-		Field:         91,
-		Name:          "goproto.proto.test.unpacked_int64",
-		Tag:           "varint,91,rep,name=unpacked_int64",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestUnpackedExtensions)(nil),
-		ExtensionType: ([]uint32)(nil),
-		Field:         92,
-		Name:          "goproto.proto.test.unpacked_uint32",
-		Tag:           "varint,92,rep,name=unpacked_uint32",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestUnpackedExtensions)(nil),
-		ExtensionType: ([]uint64)(nil),
-		Field:         93,
-		Name:          "goproto.proto.test.unpacked_uint64",
-		Tag:           "varint,93,rep,name=unpacked_uint64",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestUnpackedExtensions)(nil),
-		ExtensionType: ([]int32)(nil),
-		Field:         94,
-		Name:          "goproto.proto.test.unpacked_sint32",
-		Tag:           "zigzag32,94,rep,name=unpacked_sint32",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestUnpackedExtensions)(nil),
-		ExtensionType: ([]int64)(nil),
-		Field:         95,
-		Name:          "goproto.proto.test.unpacked_sint64",
-		Tag:           "zigzag64,95,rep,name=unpacked_sint64",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestUnpackedExtensions)(nil),
-		ExtensionType: ([]uint32)(nil),
-		Field:         96,
-		Name:          "goproto.proto.test.unpacked_fixed32",
-		Tag:           "fixed32,96,rep,name=unpacked_fixed32",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestUnpackedExtensions)(nil),
-		ExtensionType: ([]uint64)(nil),
-		Field:         97,
-		Name:          "goproto.proto.test.unpacked_fixed64",
-		Tag:           "fixed64,97,rep,name=unpacked_fixed64",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestUnpackedExtensions)(nil),
-		ExtensionType: ([]int32)(nil),
-		Field:         98,
-		Name:          "goproto.proto.test.unpacked_sfixed32",
-		Tag:           "fixed32,98,rep,name=unpacked_sfixed32",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestUnpackedExtensions)(nil),
-		ExtensionType: ([]int64)(nil),
-		Field:         99,
-		Name:          "goproto.proto.test.unpacked_sfixed64",
-		Tag:           "fixed64,99,rep,name=unpacked_sfixed64",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestUnpackedExtensions)(nil),
-		ExtensionType: ([]float32)(nil),
-		Field:         100,
-		Name:          "goproto.proto.test.unpacked_float",
-		Tag:           "fixed32,100,rep,name=unpacked_float",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestUnpackedExtensions)(nil),
-		ExtensionType: ([]float64)(nil),
-		Field:         101,
-		Name:          "goproto.proto.test.unpacked_double",
-		Tag:           "fixed64,101,rep,name=unpacked_double",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestUnpackedExtensions)(nil),
-		ExtensionType: ([]bool)(nil),
-		Field:         102,
-		Name:          "goproto.proto.test.unpacked_bool",
-		Tag:           "varint,102,rep,name=unpacked_bool",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestUnpackedExtensions)(nil),
-		ExtensionType: ([]ForeignEnum)(nil),
-		Field:         103,
-		Name:          "goproto.proto.test.unpacked_enum",
-		Tag:           "varint,103,rep,name=unpacked_enum,enum=goproto.proto.test.ForeignEnum",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*string)(nil),
-		Field:         1003,
-		Name:          "goproto.proto.test.TestNestedExtension.nested_string_extension",
-		Tag:           "bytes,1003,opt,name=nested_string_extension",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: (*TestRequired)(nil),
-		Field:         1000,
-		Name:          "goproto.proto.test.TestRequired.single",
-		Tag:           "bytes,1000,opt,name=single",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-	{
-		ExtendedType:  (*TestAllExtensions)(nil),
-		ExtensionType: ([]*TestRequired)(nil),
-		Field:         1001,
-		Name:          "goproto.proto.test.TestRequired.multi",
-		Tag:           "bytes,1001,rep,name=multi",
-		Filename:      "internal/testprotos/test/test.proto",
-	},
-}
-
-// Extension fields to TestAllExtensions.
-var (
-	// optional int32 optional_int32 = 1;
-	E_OptionalInt32 = &file_internal_testprotos_test_test_proto_extTypes[0]
-	// optional int64 optional_int64 = 2;
-	E_OptionalInt64 = &file_internal_testprotos_test_test_proto_extTypes[1]
-	// optional uint32 optional_uint32 = 3;
-	E_OptionalUint32 = &file_internal_testprotos_test_test_proto_extTypes[2]
-	// optional uint64 optional_uint64 = 4;
-	E_OptionalUint64 = &file_internal_testprotos_test_test_proto_extTypes[3]
-	// optional sint32 optional_sint32 = 5;
-	E_OptionalSint32 = &file_internal_testprotos_test_test_proto_extTypes[4]
-	// optional sint64 optional_sint64 = 6;
-	E_OptionalSint64 = &file_internal_testprotos_test_test_proto_extTypes[5]
-	// optional fixed32 optional_fixed32 = 7;
-	E_OptionalFixed32 = &file_internal_testprotos_test_test_proto_extTypes[6]
-	// optional fixed64 optional_fixed64 = 8;
-	E_OptionalFixed64 = &file_internal_testprotos_test_test_proto_extTypes[7]
-	// optional sfixed32 optional_sfixed32 = 9;
-	E_OptionalSfixed32 = &file_internal_testprotos_test_test_proto_extTypes[8]
-	// optional sfixed64 optional_sfixed64 = 10;
-	E_OptionalSfixed64 = &file_internal_testprotos_test_test_proto_extTypes[9]
-	// optional float optional_float = 11;
-	E_OptionalFloat = &file_internal_testprotos_test_test_proto_extTypes[10]
-	// optional double optional_double = 12;
-	E_OptionalDouble = &file_internal_testprotos_test_test_proto_extTypes[11]
-	// optional bool optional_bool = 13;
-	E_OptionalBool = &file_internal_testprotos_test_test_proto_extTypes[12]
-	// optional string optional_string = 14;
-	E_OptionalString = &file_internal_testprotos_test_test_proto_extTypes[13]
-	// optional bytes optional_bytes = 15;
-	E_OptionalBytes = &file_internal_testprotos_test_test_proto_extTypes[14]
-	// optional goproto.proto.test.OptionalGroup optionalgroup = 16;
-	E_Optionalgroup = &file_internal_testprotos_test_test_proto_extTypes[15]
-	// optional goproto.proto.test.TestAllExtensions.NestedMessage optional_nested_message = 18;
-	E_OptionalNestedMessage = &file_internal_testprotos_test_test_proto_extTypes[16]
-	// optional goproto.proto.test.TestAllTypes.NestedEnum optional_nested_enum = 21;
-	E_OptionalNestedEnum = &file_internal_testprotos_test_test_proto_extTypes[17]
-	// repeated int32 repeated_int32 = 31;
-	E_RepeatedInt32 = &file_internal_testprotos_test_test_proto_extTypes[18]
-	// repeated int64 repeated_int64 = 32;
-	E_RepeatedInt64 = &file_internal_testprotos_test_test_proto_extTypes[19]
-	// repeated uint32 repeated_uint32 = 33;
-	E_RepeatedUint32 = &file_internal_testprotos_test_test_proto_extTypes[20]
-	// repeated uint64 repeated_uint64 = 34;
-	E_RepeatedUint64 = &file_internal_testprotos_test_test_proto_extTypes[21]
-	// repeated sint32 repeated_sint32 = 35;
-	E_RepeatedSint32 = &file_internal_testprotos_test_test_proto_extTypes[22]
-	// repeated sint64 repeated_sint64 = 36;
-	E_RepeatedSint64 = &file_internal_testprotos_test_test_proto_extTypes[23]
-	// repeated fixed32 repeated_fixed32 = 37;
-	E_RepeatedFixed32 = &file_internal_testprotos_test_test_proto_extTypes[24]
-	// repeated fixed64 repeated_fixed64 = 38;
-	E_RepeatedFixed64 = &file_internal_testprotos_test_test_proto_extTypes[25]
-	// repeated sfixed32 repeated_sfixed32 = 39;
-	E_RepeatedSfixed32 = &file_internal_testprotos_test_test_proto_extTypes[26]
-	// repeated sfixed64 repeated_sfixed64 = 40;
-	E_RepeatedSfixed64 = &file_internal_testprotos_test_test_proto_extTypes[27]
-	// repeated float repeated_float = 41;
-	E_RepeatedFloat = &file_internal_testprotos_test_test_proto_extTypes[28]
-	// repeated double repeated_double = 42;
-	E_RepeatedDouble = &file_internal_testprotos_test_test_proto_extTypes[29]
-	// repeated bool repeated_bool = 43;
-	E_RepeatedBool = &file_internal_testprotos_test_test_proto_extTypes[30]
-	// repeated string repeated_string = 44;
-	E_RepeatedString = &file_internal_testprotos_test_test_proto_extTypes[31]
-	// repeated bytes repeated_bytes = 45;
-	E_RepeatedBytes = &file_internal_testprotos_test_test_proto_extTypes[32]
-	// repeated goproto.proto.test.RepeatedGroup repeatedgroup = 46;
-	E_Repeatedgroup = &file_internal_testprotos_test_test_proto_extTypes[33]
-	// repeated goproto.proto.test.TestAllExtensions.NestedMessage repeated_nested_message = 48;
-	E_RepeatedNestedMessage = &file_internal_testprotos_test_test_proto_extTypes[34]
-	// repeated goproto.proto.test.TestAllTypes.NestedEnum repeated_nested_enum = 51;
-	E_RepeatedNestedEnum = &file_internal_testprotos_test_test_proto_extTypes[35]
-	// optional int32 default_int32 = 81;
-	E_DefaultInt32 = &file_internal_testprotos_test_test_proto_extTypes[36]
-	// optional int64 default_int64 = 82;
-	E_DefaultInt64 = &file_internal_testprotos_test_test_proto_extTypes[37]
-	// optional uint32 default_uint32 = 83;
-	E_DefaultUint32 = &file_internal_testprotos_test_test_proto_extTypes[38]
-	// optional uint64 default_uint64 = 84;
-	E_DefaultUint64 = &file_internal_testprotos_test_test_proto_extTypes[39]
-	// optional sint32 default_sint32 = 85;
-	E_DefaultSint32 = &file_internal_testprotos_test_test_proto_extTypes[40]
-	// optional sint64 default_sint64 = 86;
-	E_DefaultSint64 = &file_internal_testprotos_test_test_proto_extTypes[41]
-	// optional fixed32 default_fixed32 = 87;
-	E_DefaultFixed32 = &file_internal_testprotos_test_test_proto_extTypes[42]
-	// optional fixed64 default_fixed64 = 88;
-	E_DefaultFixed64 = &file_internal_testprotos_test_test_proto_extTypes[43]
-	// optional sfixed32 default_sfixed32 = 89;
-	E_DefaultSfixed32 = &file_internal_testprotos_test_test_proto_extTypes[44]
-	// optional sfixed64 default_sfixed64 = 80;
-	E_DefaultSfixed64 = &file_internal_testprotos_test_test_proto_extTypes[45]
-	// optional float default_float = 91;
-	E_DefaultFloat = &file_internal_testprotos_test_test_proto_extTypes[46]
-	// optional double default_double = 92;
-	E_DefaultDouble = &file_internal_testprotos_test_test_proto_extTypes[47]
-	// optional bool default_bool = 93;
-	E_DefaultBool = &file_internal_testprotos_test_test_proto_extTypes[48]
-	// optional string default_string = 94;
-	E_DefaultString = &file_internal_testprotos_test_test_proto_extTypes[49]
-	// optional bytes default_bytes = 95;
-	E_DefaultBytes = &file_internal_testprotos_test_test_proto_extTypes[50]
-	// optional string nested_string_extension = 1003;
-	E_TestNestedExtension_NestedStringExtension = &file_internal_testprotos_test_test_proto_extTypes[79]
-	// optional goproto.proto.test.TestRequired single = 1000;
-	E_TestRequired_Single = &file_internal_testprotos_test_test_proto_extTypes[80]
-	// repeated goproto.proto.test.TestRequired multi = 1001;
-	E_TestRequired_Multi = &file_internal_testprotos_test_test_proto_extTypes[81]
-)
-
-// Extension fields to TestPackedExtensions.
-var (
-	// repeated int32 packed_int32 = 90;
-	E_PackedInt32 = &file_internal_testprotos_test_test_proto_extTypes[51]
-	// repeated int64 packed_int64 = 91;
-	E_PackedInt64 = &file_internal_testprotos_test_test_proto_extTypes[52]
-	// repeated uint32 packed_uint32 = 92;
-	E_PackedUint32 = &file_internal_testprotos_test_test_proto_extTypes[53]
-	// repeated uint64 packed_uint64 = 93;
-	E_PackedUint64 = &file_internal_testprotos_test_test_proto_extTypes[54]
-	// repeated sint32 packed_sint32 = 94;
-	E_PackedSint32 = &file_internal_testprotos_test_test_proto_extTypes[55]
-	// repeated sint64 packed_sint64 = 95;
-	E_PackedSint64 = &file_internal_testprotos_test_test_proto_extTypes[56]
-	// repeated fixed32 packed_fixed32 = 96;
-	E_PackedFixed32 = &file_internal_testprotos_test_test_proto_extTypes[57]
-	// repeated fixed64 packed_fixed64 = 97;
-	E_PackedFixed64 = &file_internal_testprotos_test_test_proto_extTypes[58]
-	// repeated sfixed32 packed_sfixed32 = 98;
-	E_PackedSfixed32 = &file_internal_testprotos_test_test_proto_extTypes[59]
-	// repeated sfixed64 packed_sfixed64 = 99;
-	E_PackedSfixed64 = &file_internal_testprotos_test_test_proto_extTypes[60]
-	// repeated float packed_float = 100;
-	E_PackedFloat = &file_internal_testprotos_test_test_proto_extTypes[61]
-	// repeated double packed_double = 101;
-	E_PackedDouble = &file_internal_testprotos_test_test_proto_extTypes[62]
-	// repeated bool packed_bool = 102;
-	E_PackedBool = &file_internal_testprotos_test_test_proto_extTypes[63]
-	// repeated goproto.proto.test.ForeignEnum packed_enum = 103;
-	E_PackedEnum = &file_internal_testprotos_test_test_proto_extTypes[64]
-)
-
-// Extension fields to TestUnpackedExtensions.
-var (
-	// repeated int32 unpacked_int32 = 90;
-	E_UnpackedInt32 = &file_internal_testprotos_test_test_proto_extTypes[65]
-	// repeated int64 unpacked_int64 = 91;
-	E_UnpackedInt64 = &file_internal_testprotos_test_test_proto_extTypes[66]
-	// repeated uint32 unpacked_uint32 = 92;
-	E_UnpackedUint32 = &file_internal_testprotos_test_test_proto_extTypes[67]
-	// repeated uint64 unpacked_uint64 = 93;
-	E_UnpackedUint64 = &file_internal_testprotos_test_test_proto_extTypes[68]
-	// repeated sint32 unpacked_sint32 = 94;
-	E_UnpackedSint32 = &file_internal_testprotos_test_test_proto_extTypes[69]
-	// repeated sint64 unpacked_sint64 = 95;
-	E_UnpackedSint64 = &file_internal_testprotos_test_test_proto_extTypes[70]
-	// repeated fixed32 unpacked_fixed32 = 96;
-	E_UnpackedFixed32 = &file_internal_testprotos_test_test_proto_extTypes[71]
-	// repeated fixed64 unpacked_fixed64 = 97;
-	E_UnpackedFixed64 = &file_internal_testprotos_test_test_proto_extTypes[72]
-	// repeated sfixed32 unpacked_sfixed32 = 98;
-	E_UnpackedSfixed32 = &file_internal_testprotos_test_test_proto_extTypes[73]
-	// repeated sfixed64 unpacked_sfixed64 = 99;
-	E_UnpackedSfixed64 = &file_internal_testprotos_test_test_proto_extTypes[74]
-	// repeated float unpacked_float = 100;
-	E_UnpackedFloat = &file_internal_testprotos_test_test_proto_extTypes[75]
-	// repeated double unpacked_double = 101;
-	E_UnpackedDouble = &file_internal_testprotos_test_test_proto_extTypes[76]
-	// repeated bool unpacked_bool = 102;
-	E_UnpackedBool = &file_internal_testprotos_test_test_proto_extTypes[77]
-	// repeated goproto.proto.test.ForeignEnum unpacked_enum = 103;
-	E_UnpackedEnum = &file_internal_testprotos_test_test_proto_extTypes[78]
-)
-
-var File_internal_testprotos_test_test_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_test_test_proto_rawDesc = []byte{
-	0x0a, 0x23, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x69, 0x6e, 0x74, 0x65, 0x72,
-	0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x65,
-	0x6e, 0x75, 0x6d, 0x73, 0x2f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x1a, 0x2a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f,
-	0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2a, 0x69, 0x6e,
-	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x75, 0x62, 0x6c,
-	0x69, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e,
-	0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65,
-	0x73, 0x74, 0x2f, 0x77, 0x65, 0x61, 0x6b, 0x31, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x77, 0x65,
-	0x61, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e,
-	0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65,
-	0x73, 0x74, 0x2f, 0x77, 0x65, 0x61, 0x6b, 0x32, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x77, 0x65,
-	0x61, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa5, 0x3a, 0x0a, 0x0c, 0x54, 0x65, 0x73,
-	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x33, 0x32,
-	0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d,
-	0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x05, 0x20, 0x01,
-	0x28, 0x11, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x10, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18,
-	0x07, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46,
-	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x08, 0x20, 0x01, 0x28, 0x06,
-	0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36,
-	0x34, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x10, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2b,
-	0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x36, 0x34, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x10, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x0a, 0x0e, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x0b, 0x20,
-	0x01, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6c, 0x6f,
-	0x61, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x64,
-	0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x0d, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6c,
-	0x12, 0x27, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28,
-	0x0c, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73,
-	0x12, 0x54, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67, 0x72, 0x6f, 0x75,
-	0x70, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73,
-	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x66, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73,
-	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x5c,
-	0x0a, 0x18, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69,
-	0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x22, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x52, 0x16, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6f,
-	0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x59, 0x0a, 0x17,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
-	0x73, 0x74, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x5d, 0x0a, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18,
-	0x15, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
-	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e,
-	0x75, 0x6d, 0x52, 0x12, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x53, 0x0a, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18,
-	0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69,
-	0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x13, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x50, 0x0a, 0x14, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65,
-	0x6e, 0x75, 0x6d, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49,
-	0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x25, 0x0a,
-	0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
-	0x1f, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49,
-	0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x20, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x21,
-	0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x22, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0e, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a,
-	0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x18, 0x23, 0x20, 0x03, 0x28, 0x11, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x24, 0x20, 0x03, 0x28, 0x12, 0x52,
-	0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
-	0x29, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x33, 0x32, 0x18, 0x25, 0x20, 0x03, 0x28, 0x07, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x26,
-	0x20, 0x03, 0x28, 0x06, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69,
-	0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x27, 0x20, 0x03, 0x28, 0x0f,
-	0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x28, 0x20, 0x03, 0x28, 0x10, 0x52, 0x10, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12,
-	0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61,
-	0x74, 0x18, 0x29, 0x20, 0x03, 0x28, 0x02, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x2a, 0x20, 0x03, 0x28, 0x01, 0x52,
-	0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12,
-	0x23, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c,
-	0x18, 0x2b, 0x20, 0x03, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x2c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a,
-	0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18,
-	0x2d, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42,
-	0x79, 0x74, 0x65, 0x73, 0x12, 0x54, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x2e, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x2e, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x52, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0d, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x66, 0x0a, 0x17, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x30, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x12, 0x5c, 0x0a, 0x18, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66,
-	0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x31,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67,
-	0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x16, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x12, 0x58, 0x0a, 0x16, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6d, 0x70,
-	0x6f, 0x72, 0x74, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x32, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x21, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x70,
-	0x6f, 0x72, 0x74, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x5d, 0x0a, 0x14, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e,
-	0x75, 0x6d, 0x18, 0x33, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65,
-	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x53, 0x0a, 0x15, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e,
-	0x75, 0x6d, 0x18, 0x34, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f,
-	0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x13, 0x72, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x4f,
-	0x0a, 0x13, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72,
-	0x74, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x35, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x6e, 0x75, 0x6d, 0x12,
-	0x5b, 0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x18, 0x38, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65,
-	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e,
-	0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d,
-	0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x5b, 0x0a, 0x0f,
-	0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18,
-	0x39, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
-	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34,
-	0x49, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49,
-	0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x61, 0x0a, 0x11, 0x6d, 0x61, 0x70,
-	0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x3a,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
-	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70,
-	0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x61, 0x0a, 0x11,
-	0x6d, 0x61, 0x70, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36,
-	0x34, 0x18, 0x3b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73,
-	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f,
-	0x6d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
-	0x61, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x73, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x18, 0x3c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
-	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70,
-	0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x12, 0x61, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x3d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
-	0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e,
-	0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45,
-	0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x53,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x67, 0x0a, 0x13, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x33, 0x32, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x3e, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
-	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x46,
-	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6d, 0x61, 0x70,
-	0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x67,
-	0x0a, 0x13, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x5f, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x3f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61,
-	0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45,
-	0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
-	0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x6d, 0x0a, 0x15, 0x6d, 0x61, 0x70, 0x5f, 0x73,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
-	0x18, 0x40, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74,
-	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x33, 0x32, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x52, 0x13, 0x6d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x53, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x6d, 0x0a, 0x15, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18,
-	0x41, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
-	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x36, 0x34, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79,
-	0x52, 0x13, 0x6d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x53, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x5b, 0x0a, 0x0f, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x42, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
-	0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x45, 0x6e,
-	0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x46, 0x6c, 0x6f,
-	0x61, 0x74, 0x12, 0x5e, 0x0a, 0x10, 0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f,
-	0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x43, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d,
-	0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74,
-	0x72, 0x79, 0x52, 0x0e, 0x6d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75, 0x62,
-	0x6c, 0x65, 0x12, 0x55, 0x0a, 0x0d, 0x6d, 0x61, 0x70, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x62,
-	0x6f, 0x6f, 0x6c, 0x18, 0x44, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54,
-	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x42,
-	0x6f, 0x6f, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x6d, 0x61,
-	0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x61, 0x0a, 0x11, 0x6d, 0x61, 0x70,
-	0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x45,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
-	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70,
-	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x5e, 0x0a, 0x10,
-	0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73,
-	0x18, 0x46, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74,
-	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6d, 0x61,
-	0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x77, 0x0a, 0x19,
-	0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x47, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x3c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
-	0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x6d,
-	0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x6e, 0x0a, 0x16, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18,
-	0x49, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
-	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79,
-	0x52, 0x13, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x27, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
-	0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x51, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x38, 0x31,
-	0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27,
-	0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18,
-	0x52, 0x20, 0x01, 0x28, 0x03, 0x3a, 0x02, 0x38, 0x32, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75,
-	0x6c, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75,
-	0x6c, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x53, 0x20, 0x01, 0x28, 0x0d, 0x3a,
-	0x02, 0x38, 0x33, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x55, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x12, 0x29, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x18, 0x54, 0x20, 0x01, 0x28, 0x04, 0x3a, 0x02, 0x38, 0x34, 0x52, 0x0d,
-	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2a, 0x0a,
-	0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
-	0x55, 0x20, 0x01, 0x28, 0x11, 0x3a, 0x03, 0x2d, 0x38, 0x35, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61,
-	0x75, 0x6c, 0x74, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x0e, 0x64, 0x65, 0x66,
-	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x56, 0x20, 0x01, 0x28,
-	0x12, 0x3a, 0x02, 0x38, 0x36, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x57, 0x20, 0x01, 0x28, 0x07, 0x3a, 0x02, 0x38,
-	0x37, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33,
-	0x32, 0x12, 0x2b, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x18, 0x58, 0x20, 0x01, 0x28, 0x06, 0x3a, 0x02, 0x38, 0x38, 0x52, 0x0e,
-	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2d,
-	0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x18, 0x59, 0x20, 0x01, 0x28, 0x0f, 0x3a, 0x02, 0x38, 0x39, 0x52, 0x0f, 0x64, 0x65,
-	0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2e, 0x0a,
-	0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
-	0x34, 0x18, 0x50, 0x20, 0x01, 0x28, 0x10, 0x3a, 0x03, 0x2d, 0x39, 0x30, 0x52, 0x0f, 0x64, 0x65,
-	0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x29, 0x0a,
-	0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x5b,
-	0x20, 0x01, 0x28, 0x02, 0x3a, 0x04, 0x39, 0x31, 0x2e, 0x35, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61,
-	0x75, 0x6c, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2c, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61,
-	0x75, 0x6c, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x01,
-	0x3a, 0x05, 0x39, 0x32, 0x30, 0x30, 0x30, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
-	0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
-	0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x04, 0x74, 0x72,
-	0x75, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12,
-	0x2c, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x09, 0x3a, 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x0d,
-	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x0a,
-	0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x5f,
-	0x20, 0x01, 0x28, 0x0c, 0x3a, 0x05, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x52, 0x0c, 0x64, 0x65, 0x66,
-	0x61, 0x75, 0x6c, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x60, 0x0a, 0x13, 0x64, 0x65, 0x66,
-	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d,
-	0x18, 0x60, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74,
-	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45,
-	0x6e, 0x75, 0x6d, 0x3a, 0x03, 0x42, 0x41, 0x52, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
-	0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x5e, 0x0a, 0x14, 0x64,
-	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65,
-	0x6e, 0x75, 0x6d, 0x18, 0x61, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46,
-	0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x0b, 0x46, 0x4f, 0x52, 0x45,
-	0x49, 0x47, 0x4e, 0x5f, 0x42, 0x41, 0x52, 0x52, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
-	0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x23, 0x0a, 0x0c, 0x6f,
-	0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x6f, 0x20, 0x01, 0x28,
-	0x0d, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x12, 0x62, 0x0a, 0x14, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x70, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
-	0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00,
-	0x52, 0x12, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x73, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x18, 0x71, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e,
-	0x65, 0x6f, 0x66, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0b, 0x6f, 0x6e, 0x65,
-	0x6f, 0x66, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x72, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00,
-	0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0a,
-	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x73, 0x20, 0x01, 0x28, 0x08,
-	0x48, 0x00, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x23, 0x0a,
-	0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x74, 0x20,
-	0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x55, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x12, 0x21, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x6c, 0x6f, 0x61,
-	0x74, 0x18, 0x75, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
-	0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x64,
-	0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x76, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x6f,
-	0x6e, 0x65, 0x6f, 0x66, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x4c, 0x0a, 0x0a, 0x6f, 0x6e,
-	0x65, 0x6f, 0x66, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x77, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73,
-	0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x09, 0x6f,
-	0x6e, 0x65, 0x6f, 0x66, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x4d, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f,
-	0x66, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x79, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x2b, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4f,
-	0x6e, 0x65, 0x6f, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65,
-	0x6f, 0x66, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x34, 0x0a, 0x15, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
-	0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x18, 0x78, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x01, 0x52, 0x13, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x1a, 0x61, 0x0a,
-	0x0d, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0c,
-	0x0a, 0x01, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x61, 0x12, 0x42, 0x0a, 0x0b,
-	0x63, 0x6f, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
-	0x70, 0x65, 0x73, 0x52, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65,
-	0x1a, 0xb2, 0x01, 0x0a, 0x0d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f,
-	0x75, 0x70, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x61,
-	0x12, 0x67, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xe8, 0x07, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
-	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x61, 0x6d,
-	0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x10,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x73, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e,
-	0x75, 0x6d, 0x62, 0x65, 0x72, 0x1a, 0x86, 0x01, 0x0a, 0x0d, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x2f, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x01, 0x61, 0x12, 0x67, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73,
-	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x40,
-	0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x45,
-	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
-	0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e, 0x74, 0x36,
-	0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
-	0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
-	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
-	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79,
-	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61,
-	0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74,
-	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52,
-	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x11, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42,
-	0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74, 0x36,
-	0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x12, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
-	0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
-	0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
-	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
-	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x07, 0x52, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x61, 0x70, 0x46,
-	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74,
-	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x06, 0x52,
-	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x06, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46,
-	0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x53, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
-	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x36, 0x34, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74,
-	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x10, 0x52,
-	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x10, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40,
-	0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x45,
-	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
-	0x1a, 0x41, 0x0a, 0x13, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75, 0x62,
-	0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
-	0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x4d, 0x61, 0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42, 0x6f,
-	0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
-	0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
-	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61,
-	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x4d, 0x61, 0x70, 0x53, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
-	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
-	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x79, 0x0a, 0x1b, 0x4d, 0x61,
-	0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x44, 0x0a, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
-	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x73, 0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
-	0x6b, 0x65, 0x79, 0x12, 0x41, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
-	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x28, 0x0a, 0x0a, 0x4f, 0x6e,
-	0x65, 0x6f, 0x66, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x01, 0x61, 0x12, 0x0c, 0x0a, 0x01, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x01, 0x62, 0x22, 0x39, 0x0a, 0x0a, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e,
-	0x75, 0x6d, 0x12, 0x07, 0x0a, 0x03, 0x46, 0x4f, 0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x42,
-	0x41, 0x52, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x41, 0x5a, 0x10, 0x02, 0x12, 0x10, 0x0a,
-	0x03, 0x4e, 0x45, 0x47, 0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x42,
-	0x0d, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x10,
-	0x0a, 0x0e, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x22, 0xc4, 0x01, 0x0a, 0x15, 0x54, 0x65, 0x73, 0x74, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61,
-	0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x2d, 0x0a, 0x10, 0x64, 0x65,
-	0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0f, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63,
-	0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x3a, 0x0a, 0x16, 0x64, 0x65, 0x70,
-	0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x42, 0x02, 0x18, 0x01, 0x48, 0x00, 0x52,
-	0x14, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x65, 0x6f, 0x66,
-	0x46, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x28, 0x0a, 0x0e, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61,
-	0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x0a, 0x44, 0x45, 0x50, 0x52, 0x45,
-	0x43, 0x41, 0x54, 0x45, 0x44, 0x10, 0x00, 0x1a, 0x02, 0x08, 0x01, 0x1a, 0x02, 0x18, 0x01, 0x3a,
-	0x02, 0x18, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65,
-	0x64, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x22, 0x2c, 0x0a, 0x0e, 0x46, 0x6f, 0x72, 0x65, 0x69,
-	0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x63, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x63, 0x12, 0x0c, 0x0a, 0x01, 0x64, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x01, 0x64, 0x22, 0x30, 0x0a, 0x12, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73,
-	0x65, 0x72, 0x76, 0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x4a, 0x04, 0x08, 0x02, 0x10,
-	0x03, 0x4a, 0x04, 0x08, 0x0f, 0x10, 0x10, 0x4a, 0x04, 0x08, 0x09, 0x10, 0x0c, 0x52, 0x03, 0x62,
-	0x61, 0x72, 0x52, 0x03, 0x62, 0x61, 0x7a, 0x22, 0x85, 0x01, 0x0a, 0x11, 0x54, 0x65, 0x73, 0x74,
-	0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x66, 0x0a,
-	0x0d, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0c,
-	0x0a, 0x01, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x61, 0x12, 0x47, 0x0a, 0x0b,
-	0x63, 0x6f, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x75,
-	0x72, 0x73, 0x69, 0x76, 0x65, 0x2a, 0x08, 0x08, 0x01, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22,
-	0xb7, 0x01, 0x0a, 0x0d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75,
-	0x70, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x61, 0x12,
-	0x2a, 0x0a, 0x11, 0x73, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x75,
-	0x6d, 0x62, 0x65, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x73, 0x61, 0x6d, 0x65,
-	0x46, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x6c, 0x0a, 0x17, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
-	0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x0d, 0x52, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0c, 0x0a, 0x01, 0x61,
-	0x18, 0x2f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x61, 0x12, 0x6c, 0x0a, 0x17, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x75, 0x0a, 0x13, 0x54, 0x65, 0x73, 0x74, 0x4e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0x5e,
-	0x0a, 0x17, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f,
-	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54,
-	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
-	0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x53,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xf7,
-	0x01, 0x0a, 0x0c, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12,
-	0x25, 0x0a, 0x0e, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x65, 0x6c,
-	0x64, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
-	0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x32, 0x60, 0x0a, 0x06, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65,
-	0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xe8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64,
-	0x52, 0x06, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x32, 0x5e, 0x0a, 0x05, 0x6d, 0x75, 0x6c, 0x74,
-	0x69, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xe9, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x20, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
-	0x64, 0x52, 0x05, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x22, 0xc2, 0x03, 0x0a, 0x13, 0x54, 0x65, 0x73,
-	0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
-	0x12, 0x4b, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
-	0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x0f, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x4b, 0x0a,
-	0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73,
-	0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x58, 0x0a, 0x0b, 0x6d, 0x61,
-	0x70, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x37, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
-	0x64, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x2e, 0x4d, 0x61, 0x70, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x6d, 0x61, 0x70, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x12, 0x47, 0x0a, 0x0d, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x48, 0x00, 0x52,
-	0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x5f, 0x0a,
-	0x0f, 0x4d, 0x61, 0x70, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79,
-	0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b,
-	0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69,
-	0x72, 0x65, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0d,
-	0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0x99, 0x02,
-	0x0a, 0x17, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x47, 0x72,
-	0x6f, 0x75, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x5f, 0x0a, 0x0d, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0a,
-	0x32, 0x39, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72,
-	0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x2e, 0x4f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0d, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x5f, 0x0a, 0x0d, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28,
-	0x0a, 0x32, 0x39, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69,
-	0x72, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x2e, 0x52,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0d, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x1d, 0x0a, 0x0d, 0x4f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0c, 0x0a, 0x01,
-	0x61, 0x18, 0x02, 0x20, 0x02, 0x28, 0x05, 0x52, 0x01, 0x61, 0x1a, 0x1d, 0x0a, 0x0d, 0x52, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x0c, 0x0a, 0x01, 0x61,
-	0x18, 0x04, 0x20, 0x02, 0x28, 0x05, 0x52, 0x01, 0x61, 0x22, 0xb6, 0x01, 0x0a, 0x08, 0x54, 0x65,
-	0x73, 0x74, 0x57, 0x65, 0x61, 0x6b, 0x12, 0x54, 0x0a, 0x0d, 0x77, 0x65, 0x61, 0x6b, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
-	0x73, 0x74, 0x2e, 0x77, 0x65, 0x61, 0x6b, 0x2e, 0x57, 0x65, 0x61, 0x6b, 0x49, 0x6d, 0x70, 0x6f,
-	0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x42, 0x02, 0x50, 0x01, 0x52, 0x0c,
-	0x77, 0x65, 0x61, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x12, 0x54, 0x0a, 0x0d,
-	0x77, 0x65, 0x61, 0x6b, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x77, 0x65, 0x61, 0x6b, 0x2e, 0x57, 0x65,
-	0x61, 0x6b, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32,
-	0x42, 0x02, 0x50, 0x01, 0x52, 0x0c, 0x77, 0x65, 0x61, 0x6b, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x32, 0x22, 0xee, 0x04, 0x0a, 0x0f, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x5a, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01,
-	0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x0a,
-	0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5b, 0x20,
-	0x03, 0x28, 0x03, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49,
-	0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x5c, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x02, 0x10, 0x01, 0x52,
-	0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a,
-	0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5d,
-	0x20, 0x03, 0x28, 0x04, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x5e, 0x20, 0x03, 0x28, 0x11, 0x42, 0x02, 0x10,
-	0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12,
-	0x27, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x18, 0x5f, 0x20, 0x03, 0x28, 0x12, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x60, 0x20, 0x03, 0x28, 0x07,
-	0x42, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65,
-	0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x61, 0x20, 0x03, 0x28, 0x06, 0x42, 0x02, 0x10, 0x01, 0x52,
-	0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2b,
-	0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
-	0x32, 0x18, 0x62, 0x20, 0x03, 0x28, 0x0f, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63,
-	0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x0f, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x63,
-	0x20, 0x03, 0x28, 0x10, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x64, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02,
-	0x10, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12,
-	0x27, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-	0x18, 0x65, 0x20, 0x03, 0x28, 0x01, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x66, 0x20, 0x03, 0x28, 0x08, 0x42, 0x02, 0x10,
-	0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x44, 0x0a,
-	0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x67, 0x20, 0x03,
-	0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45,
-	0x6e, 0x75, 0x6d, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45,
-	0x6e, 0x75, 0x6d, 0x22, 0xa8, 0x05, 0x0a, 0x11, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x0e, 0x75, 0x6e, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x5a, 0x20, 0x03, 0x28,
-	0x05, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49,
-	0x6e, 0x74, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5b, 0x20, 0x03, 0x28, 0x03, 0x42, 0x02, 0x10, 0x00,
-	0x52, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12,
-	0x2b, 0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x18, 0x5c, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x0f,
-	0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18,
-	0x5d, 0x20, 0x03, 0x28, 0x04, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63,
-	0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2b, 0x0a, 0x0f, 0x75, 0x6e, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x5e, 0x20, 0x03,
-	0x28, 0x11, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2b, 0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x5f, 0x20, 0x03, 0x28, 0x12, 0x42,
-	0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x12, 0x2d, 0x0a, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x60, 0x20, 0x03, 0x28, 0x07, 0x42, 0x02, 0x10,
-	0x00, 0x52, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x12, 0x2d, 0x0a, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x61, 0x20, 0x03, 0x28, 0x06, 0x42, 0x02, 0x10, 0x00,
-	0x52, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36,
-	0x34, 0x12, 0x2f, 0x0a, 0x11, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x62, 0x20, 0x03, 0x28, 0x0f, 0x42, 0x02, 0x10, 0x00,
-	0x52, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x12, 0x2f, 0x0a, 0x11, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x63, 0x20, 0x03, 0x28, 0x10, 0x42, 0x02, 0x10,
-	0x00, 0x52, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f,
-	0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x64, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x00, 0x52,
-	0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2b,
-	0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-	0x65, 0x18, 0x65, 0x20, 0x03, 0x28, 0x01, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0d, 0x75,
-	0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x66, 0x20, 0x03,
-	0x28, 0x08, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0c, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x48, 0x0a, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x67, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x10, 0x00,
-	0x52, 0x0c, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x22, 0x20,
-	0x0a, 0x14, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2a, 0x08, 0x08, 0x01, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02,
-	0x22, 0x22, 0x0a, 0x16, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2a, 0x08, 0x08, 0x01, 0x10, 0x80,
-	0x80, 0x80, 0x80, 0x02, 0x22, 0x0c, 0x0a, 0x0a, 0x46, 0x6f, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x22, 0x0d, 0x0a, 0x0b, 0x46, 0x6f, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x22, 0x61, 0x0a, 0x0c, 0x57, 0x65, 0x69, 0x72, 0x64, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c,
-	0x74, 0x12, 0x51, 0x0a, 0x0d, 0x77, 0x65, 0x69, 0x72, 0x64, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75,
-	0x6c, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x3a, 0x2c, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x2c,
-	0x20, 0x5c, 0x22, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x21, 0x5c, 0x22, 0x5c, 0x6e, 0x64, 0x65, 0x61,
-	0x64, 0x5c, 0x33, 0x33, 0x36, 0x5c, 0x32, 0x35, 0x35, 0x5c, 0x32, 0x37, 0x36, 0x5c, 0x33, 0x35,
-	0x37, 0x62, 0x65, 0x65, 0x66, 0x60, 0x52, 0x0c, 0x77, 0x65, 0x69, 0x72, 0x64, 0x44, 0x65, 0x66,
-	0x61, 0x75, 0x6c, 0x74, 0x22, 0xff, 0x03, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x44,
-	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
-	0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e,
-	0x75, 0x6d, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x33, 0x0a, 0x04, 0x7a,
-	0x65, 0x72, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e,
-	0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x04, 0x5a, 0x45, 0x52, 0x4f, 0x52, 0x04, 0x7a, 0x65, 0x72, 0x6f,
-	0x12, 0x30, 0x0a, 0x03, 0x6f, 0x6e, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e,
-	0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x03, 0x4f, 0x4e, 0x45, 0x52, 0x03, 0x6f,
-	0x6e, 0x65, 0x12, 0x3c, 0x0a, 0x07, 0x65, 0x6c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20,
-	0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x07,
-	0x45, 0x4c, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x52, 0x07, 0x65, 0x6c, 0x65, 0x76, 0x65, 0x6e, 0x74,
-	0x12, 0x42, 0x0a, 0x09, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x65, 0x65, 0x6e, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x09,
-	0x53, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x45, 0x45, 0x4e, 0x52, 0x09, 0x73, 0x65, 0x76, 0x65, 0x6e,
-	0x74, 0x65, 0x65, 0x6e, 0x12, 0x48, 0x0a, 0x0b, 0x74, 0x68, 0x69, 0x72, 0x74, 0x79, 0x73, 0x65,
-	0x76, 0x65, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e,
-	0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x0b, 0x54, 0x48, 0x49, 0x52, 0x54, 0x59, 0x53, 0x45, 0x56, 0x45,
-	0x4e, 0x52, 0x0b, 0x74, 0x68, 0x69, 0x72, 0x74, 0x79, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x12, 0x45,
-	0x0a, 0x0a, 0x73, 0x69, 0x78, 0x74, 0x79, 0x73, 0x65, 0x76, 0x65, 0x6e, 0x18, 0x07, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x0a, 0x53,
-	0x49, 0x58, 0x54, 0x59, 0x53, 0x45, 0x56, 0x45, 0x4e, 0x52, 0x0a, 0x73, 0x69, 0x78, 0x74, 0x79,
-	0x73, 0x65, 0x76, 0x65, 0x6e, 0x12, 0x3f, 0x0a, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76,
-	0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x45, 0x6e,
-	0x75, 0x6d, 0x3a, 0x08, 0x4e, 0x45, 0x47, 0x41, 0x54, 0x49, 0x56, 0x45, 0x52, 0x08, 0x6e, 0x65,
-	0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2a, 0x40, 0x0a, 0x0b, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67,
-	0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e,
-	0x5f, 0x46, 0x4f, 0x4f, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49, 0x47,
-	0x4e, 0x5f, 0x42, 0x41, 0x52, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f, 0x52, 0x45, 0x49,
-	0x47, 0x4e, 0x5f, 0x42, 0x41, 0x5a, 0x10, 0x06, 0x2a, 0x47, 0x0a, 0x16, 0x54, 0x65, 0x73, 0x74,
-	0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x46, 0x69, 0x65, 0x6c,
-	0x64, 0x73, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x45, 0x44, 0x5f, 0x45,
-	0x4e, 0x55, 0x4d, 0x10, 0x00, 0x22, 0x04, 0x08, 0x02, 0x10, 0x02, 0x22, 0x04, 0x08, 0x0f, 0x10,
-	0x0f, 0x22, 0x04, 0x08, 0x09, 0x10, 0x0b, 0x2a, 0x03, 0x42, 0x41, 0x52, 0x2a, 0x03, 0x42, 0x41,
-	0x5a, 0x32, 0xa8, 0x01, 0x0a, 0x0b, 0x54, 0x65, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
-	0x65, 0x12, 0x46, 0x0a, 0x03, 0x46, 0x6f, 0x6f, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f,
-	0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f,
-	0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0a, 0x54, 0x65, 0x73,
-	0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x6f,
-	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x6f,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x28, 0x01, 0x30, 0x01, 0x32, 0x85, 0x01, 0x0a,
-	0x15, 0x54, 0x65, 0x73, 0x74, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x53,
-	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x67, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63,
-	0x61, 0x74, 0x65, 0x64, 0x12, 0x29, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x44, 0x65,
-	0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a,
-	0x29, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61,
-	0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x03, 0x88, 0x02, 0x01, 0x1a,
-	0x03, 0x88, 0x02, 0x01, 0x3a, 0x4c, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74,
-	0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74,
-	0x33, 0x32, 0x3a, 0x4c, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
-	0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x03, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34,
-	0x3a, 0x4e, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d,
-	0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x3a, 0x4e, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04,
-	0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x3a, 0x4e, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11,
-	0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x3a, 0x4e, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12,
-	0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x3a, 0x50, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x33, 0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
-	0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28,
-	0x07, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x3a, 0x50, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74,
-	0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20,
-	0x01, 0x28, 0x06, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x3a, 0x52, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54,
-	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
-	0x18, 0x09, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x52, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
-	0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x10, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x4c, 0x0a, 0x0e,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x25,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x4e, 0x0a, 0x0f, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x25, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
-	0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x3a, 0x4a, 0x0a, 0x0d, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x25, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x3a, 0x4e, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54,
-	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
-	0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x4c, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65,
-	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
-	0x0f, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42,
-	0x79, 0x74, 0x65, 0x73, 0x3a, 0x6e, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
-	0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x01,
-	0x28, 0x0a, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x67,
-	0x72, 0x6f, 0x75, 0x70, 0x3a, 0x92, 0x01, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
-	0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x84, 0x01, 0x0a, 0x14, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e,
-	0x75, 0x6d, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e, 0x32,
-	0x2b, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
-	0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d,
-	0x3a, 0x4c, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x05, 0x52,
-	0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x4c,
-	0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x4e, 0x0a, 0x0f,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12,
-	0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x21, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x4e, 0x0a, 0x0f,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
-	0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x22, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0e, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x4e, 0x0a, 0x0f,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12,
-	0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x23, 0x20, 0x03, 0x28, 0x11, 0x52, 0x0e, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x4e, 0x0a, 0x0f,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
-	0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x24, 0x20, 0x03, 0x28, 0x12, 0x52, 0x0e, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x50, 0x0a, 0x10,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
-	0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x25, 0x20, 0x03, 0x28, 0x07, 0x52, 0x0f, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x50,
-	0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x36, 0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x26, 0x20, 0x03, 0x28, 0x06, 0x52,
-	0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
-	0x3a, 0x52, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
-	0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x27, 0x20, 0x03,
-	0x28, 0x0f, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x33, 0x32, 0x3a, 0x52, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54,
-	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
-	0x18, 0x28, 0x20, 0x03, 0x28, 0x10, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x4c, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
-	0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x73, 0x18, 0x29, 0x20, 0x03, 0x28, 0x02, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65,
-	0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x4e, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54,
-	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
-	0x18, 0x2a, 0x20, 0x03, 0x28, 0x01, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x3a, 0x4a, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73,
-	0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2b,
-	0x20, 0x03, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x6f,
-	0x6f, 0x6c, 0x3a, 0x4e, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
-	0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2c, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x3a, 0x4c, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62,
-	0x79, 0x74, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
-	0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2d, 0x20, 0x03, 0x28,
-	0x0c, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73,
-	0x3a, 0x6e, 0x0a, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75,
-	0x70, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x2e, 0x20, 0x03, 0x28, 0x0a, 0x32, 0x21,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x2e, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75,
-	0x70, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70,
-	0x3a, 0x92, 0x01, 0x0a, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x25, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x73, 0x18, 0x30, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54,
-	0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
-	0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x3a, 0x84, 0x01, 0x0a, 0x14, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x25,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x33, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x4e, 0x0a, 0x0d,
-	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
-	0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x51, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x38, 0x31, 0x52, 0x0c,
-	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x4e, 0x0a, 0x0d,
-	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x25, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
-	0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x52, 0x20, 0x01, 0x28, 0x03, 0x3a, 0x02, 0x38, 0x32, 0x52, 0x0c,
-	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x50, 0x0a, 0x0e,
-	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x25,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x53, 0x20, 0x01, 0x28, 0x0d, 0x3a, 0x02, 0x38, 0x33, 0x52,
-	0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x50,
-	0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x54, 0x20, 0x01, 0x28, 0x04, 0x3a, 0x02, 0x38,
-	0x34, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x3a, 0x51, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x55, 0x20, 0x01, 0x28, 0x11, 0x3a,
-	0x03, 0x2d, 0x38, 0x35, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x3a, 0x50, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
-	0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x56, 0x20, 0x01,
-	0x28, 0x12, 0x3a, 0x02, 0x38, 0x36, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x52, 0x0a, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
-	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65,
-	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
-	0x57, 0x20, 0x01, 0x28, 0x07, 0x3a, 0x02, 0x38, 0x37, 0x52, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75,
-	0x6c, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x52, 0x0a, 0x0f, 0x64, 0x65, 0x66,
-	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x73, 0x18, 0x58, 0x20, 0x01, 0x28, 0x06, 0x3a, 0x02, 0x38, 0x38, 0x52, 0x0e, 0x64,
-	0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x54, 0x0a,
-	0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
-	0x32, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x59, 0x20, 0x01, 0x28, 0x0f, 0x3a, 0x02,
-	0x38, 0x39, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x33, 0x32, 0x3a, 0x55, 0x0a, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73,
-	0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x50,
-	0x20, 0x01, 0x28, 0x10, 0x3a, 0x03, 0x2d, 0x39, 0x30, 0x52, 0x0f, 0x64, 0x65, 0x66, 0x61, 0x75,
-	0x6c, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x50, 0x0a, 0x0d, 0x64, 0x65,
-	0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x25, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x73, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x02, 0x3a, 0x04, 0x39, 0x31, 0x2e, 0x35, 0x52, 0x0c,
-	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x53, 0x0a, 0x0e,
-	0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x25,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x01, 0x3a, 0x05, 0x39, 0x32, 0x30,
-	0x30, 0x30, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c,
-	0x65, 0x3a, 0x4e, 0x0a, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x62, 0x6f, 0x6f,
-	0x6c, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5d, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x04,
-	0x74, 0x72, 0x75, 0x65, 0x52, 0x0b, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x42, 0x6f, 0x6f,
-	0x6c, 0x3a, 0x53, 0x0a, 0x0e, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x73, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x09,
-	0x3a, 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x52, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
-	0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x51, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c,
-	0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73,
-	0x74, 0x41, 0x6c, 0x6c, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5f,
-	0x20, 0x01, 0x28, 0x0c, 0x3a, 0x05, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x52, 0x0c, 0x64, 0x65, 0x66,
-	0x61, 0x75, 0x6c, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x3a, 0x4f, 0x0a, 0x0c, 0x70, 0x61, 0x63,
-	0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54,
-	0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x73, 0x18, 0x5a, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0b, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x4f, 0x0a, 0x0c, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
-	0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5b, 0x20, 0x03, 0x28, 0x03, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0b,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x51, 0x0a, 0x0d, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x28, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5c, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x02, 0x10, 0x01,
-	0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x51,
-	0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12,
-	0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5d, 0x20, 0x03, 0x28, 0x04, 0x42,
-	0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36,
-	0x34, 0x3a, 0x51, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5e, 0x20, 0x03,
-	0x28, 0x11, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x3a, 0x51, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
-	0x5f, 0x20, 0x03, 0x28, 0x12, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x53, 0x0a, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54,
-	0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x73, 0x18, 0x60, 0x20, 0x03, 0x28, 0x07, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x53, 0x0a, 0x0e,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x28,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x61, 0x20, 0x03, 0x28, 0x06, 0x42, 0x02,
-	0x10, 0x01, 0x52, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36,
-	0x34, 0x3a, 0x55, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x33, 0x32, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x62,
-	0x20, 0x03, 0x28, 0x0f, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x55, 0x0a, 0x0f, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x28, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x63, 0x20, 0x03, 0x28, 0x10, 0x42, 0x02, 0x10, 0x01, 0x52,
-	0x0e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a,
-	0x4f, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12,
-	0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x64, 0x20, 0x03, 0x28, 0x02, 0x42,
-	0x02, 0x10, 0x01, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74,
-	0x3a, 0x51, 0x0a, 0x0d, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-	0x65, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x65, 0x20, 0x03, 0x28,
-	0x01, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x44, 0x6f, 0x75,
-	0x62, 0x6c, 0x65, 0x3a, 0x4d, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x62, 0x6f,
-	0x6f, 0x6c, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x66, 0x20, 0x03,
-	0x28, 0x08, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x42, 0x6f,
-	0x6f, 0x6c, 0x3a, 0x6e, 0x0a, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75,
-	0x6d, 0x12, 0x28, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x67, 0x20, 0x03, 0x28,
-	0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e,
-	0x75, 0x6d, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6e,
-	0x75, 0x6d, 0x3a, 0x55, 0x0a, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
-	0x18, 0x5a, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0d, 0x75, 0x6e, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x55, 0x0a, 0x0e, 0x75, 0x6e, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2a, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5b, 0x20, 0x03, 0x28, 0x03, 0x42, 0x02, 0x10,
-	0x00, 0x52, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34,
-	0x3a, 0x57, 0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
-	0x5c, 0x20, 0x03, 0x28, 0x0d, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63,
-	0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x57, 0x0a, 0x0f, 0x75, 0x6e, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2a, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5d, 0x20, 0x03, 0x28, 0x04, 0x42, 0x02,
-	0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x3a, 0x57, 0x0a, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55,
-	0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x73, 0x18, 0x5e, 0x20, 0x03, 0x28, 0x11, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x57, 0x0a, 0x0f, 0x75,
-	0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x2a,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x5f, 0x20, 0x03, 0x28, 0x12,
-	0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x3a, 0x59, 0x0a, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65,
-	0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x60, 0x20, 0x03, 0x28, 0x07, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0f,
-	0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a,
-	0x59, 0x0a, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x36, 0x34, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18,
-	0x61, 0x20, 0x03, 0x28, 0x06, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0f, 0x75, 0x6e, 0x70, 0x61, 0x63,
-	0x6b, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x5b, 0x0a, 0x11, 0x75, 0x6e,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12,
-	0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x62, 0x20, 0x03, 0x28,
-	0x0f, 0x42, 0x02, 0x10, 0x00, 0x52, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x5b, 0x0a, 0x11, 0x75, 0x6e, 0x70, 0x61, 0x63,
-	0x6b, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x2a, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x63, 0x20, 0x03, 0x28, 0x10, 0x42, 0x02,
-	0x10, 0x00, 0x52, 0x10, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x3a, 0x55, 0x0a, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74,
-	0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x73, 0x18, 0x64, 0x20, 0x03, 0x28, 0x02, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0d, 0x75, 0x6e,
-	0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x57, 0x0a, 0x0f, 0x75,
-	0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x2a,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x65, 0x20, 0x03, 0x28, 0x01,
-	0x42, 0x02, 0x10, 0x00, 0x52, 0x0e, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x44, 0x6f,
-	0x75, 0x62, 0x6c, 0x65, 0x3a, 0x53, 0x0a, 0x0d, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64,
-	0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x55,
-	0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x73, 0x18, 0x66, 0x20, 0x03, 0x28, 0x08, 0x42, 0x02, 0x10, 0x00, 0x52, 0x0c, 0x75, 0x6e, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x3a, 0x74, 0x0a, 0x0d, 0x75, 0x6e, 0x70,
-	0x61, 0x63, 0x6b, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x2a, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
-	0x54, 0x65, 0x73, 0x74, 0x55, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x67, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x02, 0x10,
-	0x00, 0x52, 0x0c, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x42,
-	0x35, 0x5a, 0x33, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
-	0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e,
-	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x50, 0x02, 0x58, 0x03, 0x58, 0x04,
-}
-
-var (
-	file_internal_testprotos_test_test_proto_rawDescOnce sync.Once
-	file_internal_testprotos_test_test_proto_rawDescData = file_internal_testprotos_test_test_proto_rawDesc
-)
-
-func file_internal_testprotos_test_test_proto_rawDescGZIP() []byte {
-	file_internal_testprotos_test_test_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_test_test_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_test_test_proto_rawDescData)
-	})
-	return file_internal_testprotos_test_test_proto_rawDescData
-}
-
-var file_internal_testprotos_test_test_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
-var file_internal_testprotos_test_test_proto_msgTypes = make([]protoimpl.MessageInfo, 45)
-var file_internal_testprotos_test_test_proto_goTypes = []interface{}{
-	(ForeignEnum)(0),                          // 0: goproto.proto.test.ForeignEnum
-	(TestReservedEnumFields)(0),               // 1: goproto.proto.test.TestReservedEnumFields
-	(TestAllTypes_NestedEnum)(0),              // 2: goproto.proto.test.TestAllTypes.NestedEnum
-	(TestDeprecatedMessage_DeprecatedEnum)(0), // 3: goproto.proto.test.TestDeprecatedMessage.DeprecatedEnum
-	(*TestAllTypes)(nil),                      // 4: goproto.proto.test.TestAllTypes
-	(*TestDeprecatedMessage)(nil),             // 5: goproto.proto.test.TestDeprecatedMessage
-	(*ForeignMessage)(nil),                    // 6: goproto.proto.test.ForeignMessage
-	(*TestReservedFields)(nil),                // 7: goproto.proto.test.TestReservedFields
-	(*TestAllExtensions)(nil),                 // 8: goproto.proto.test.TestAllExtensions
-	(*OptionalGroup)(nil),                     // 9: goproto.proto.test.OptionalGroup
-	(*RepeatedGroup)(nil),                     // 10: goproto.proto.test.RepeatedGroup
-	(*TestNestedExtension)(nil),               // 11: goproto.proto.test.TestNestedExtension
-	(*TestRequired)(nil),                      // 12: goproto.proto.test.TestRequired
-	(*TestRequiredForeign)(nil),               // 13: goproto.proto.test.TestRequiredForeign
-	(*TestRequiredGroupFields)(nil),           // 14: goproto.proto.test.TestRequiredGroupFields
-	(*TestWeak)(nil),                          // 15: goproto.proto.test.TestWeak
-	(*TestPackedTypes)(nil),                   // 16: goproto.proto.test.TestPackedTypes
-	(*TestUnpackedTypes)(nil),                 // 17: goproto.proto.test.TestUnpackedTypes
-	(*TestPackedExtensions)(nil),              // 18: goproto.proto.test.TestPackedExtensions
-	(*TestUnpackedExtensions)(nil),            // 19: goproto.proto.test.TestUnpackedExtensions
-	(*FooRequest)(nil),                        // 20: goproto.proto.test.FooRequest
-	(*FooResponse)(nil),                       // 21: goproto.proto.test.FooResponse
-	(*WeirdDefault)(nil),                      // 22: goproto.proto.test.WeirdDefault
-	(*RemoteDefault)(nil),                     // 23: goproto.proto.test.RemoteDefault
-	(*TestAllTypes_NestedMessage)(nil),        // 24: goproto.proto.test.TestAllTypes.NestedMessage
-	(*TestAllTypes_OptionalGroup)(nil),        // 25: goproto.proto.test.TestAllTypes.OptionalGroup
-	(*TestAllTypes_RepeatedGroup)(nil),        // 26: goproto.proto.test.TestAllTypes.RepeatedGroup
-	nil,                                       // 27: goproto.proto.test.TestAllTypes.MapInt32Int32Entry
-	nil,                                       // 28: goproto.proto.test.TestAllTypes.MapInt64Int64Entry
-	nil,                                       // 29: goproto.proto.test.TestAllTypes.MapUint32Uint32Entry
-	nil,                                       // 30: goproto.proto.test.TestAllTypes.MapUint64Uint64Entry
-	nil,                                       // 31: goproto.proto.test.TestAllTypes.MapSint32Sint32Entry
-	nil,                                       // 32: goproto.proto.test.TestAllTypes.MapSint64Sint64Entry
-	nil,                                       // 33: goproto.proto.test.TestAllTypes.MapFixed32Fixed32Entry
-	nil,                                       // 34: goproto.proto.test.TestAllTypes.MapFixed64Fixed64Entry
-	nil,                                       // 35: goproto.proto.test.TestAllTypes.MapSfixed32Sfixed32Entry
-	nil,                                       // 36: goproto.proto.test.TestAllTypes.MapSfixed64Sfixed64Entry
-	nil,                                       // 37: goproto.proto.test.TestAllTypes.MapInt32FloatEntry
-	nil,                                       // 38: goproto.proto.test.TestAllTypes.MapInt32DoubleEntry
-	nil,                                       // 39: goproto.proto.test.TestAllTypes.MapBoolBoolEntry
-	nil,                                       // 40: goproto.proto.test.TestAllTypes.MapStringStringEntry
-	nil,                                       // 41: goproto.proto.test.TestAllTypes.MapStringBytesEntry
-	nil,                                       // 42: goproto.proto.test.TestAllTypes.MapStringNestedMessageEntry
-	nil,                                       // 43: goproto.proto.test.TestAllTypes.MapStringNestedEnumEntry
-	(*TestAllTypes_OneofGroup)(nil),           // 44: goproto.proto.test.TestAllTypes.OneofGroup
-	(*TestAllExtensions_NestedMessage)(nil),   // 45: goproto.proto.test.TestAllExtensions.NestedMessage
-	nil,                                       // 46: goproto.proto.test.TestRequiredForeign.MapMessageEntry
-	(*TestRequiredGroupFields_OptionalGroup)(nil), // 47: goproto.proto.test.TestRequiredGroupFields.OptionalGroup
-	(*TestRequiredGroupFields_RepeatedGroup)(nil), // 48: goproto.proto.test.TestRequiredGroupFields.RepeatedGroup
-	(*ImportMessage)(nil),                         // 49: goproto.proto.test.ImportMessage
-	(ImportEnum)(0),                               // 50: goproto.proto.test.ImportEnum
-	(enums.Enum)(0),                               // 51: goproto.proto.enums.Enum
-}
-var file_internal_testprotos_test_test_proto_depIdxs = []int32{
-	25,  // 0: goproto.proto.test.TestAllTypes.optionalgroup:type_name -> goproto.proto.test.TestAllTypes.OptionalGroup
-	24,  // 1: goproto.proto.test.TestAllTypes.optional_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
-	6,   // 2: goproto.proto.test.TestAllTypes.optional_foreign_message:type_name -> goproto.proto.test.ForeignMessage
-	49,  // 3: goproto.proto.test.TestAllTypes.optional_import_message:type_name -> goproto.proto.test.ImportMessage
-	2,   // 4: goproto.proto.test.TestAllTypes.optional_nested_enum:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
-	0,   // 5: goproto.proto.test.TestAllTypes.optional_foreign_enum:type_name -> goproto.proto.test.ForeignEnum
-	50,  // 6: goproto.proto.test.TestAllTypes.optional_import_enum:type_name -> goproto.proto.test.ImportEnum
-	26,  // 7: goproto.proto.test.TestAllTypes.repeatedgroup:type_name -> goproto.proto.test.TestAllTypes.RepeatedGroup
-	24,  // 8: goproto.proto.test.TestAllTypes.repeated_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
-	6,   // 9: goproto.proto.test.TestAllTypes.repeated_foreign_message:type_name -> goproto.proto.test.ForeignMessage
-	49,  // 10: goproto.proto.test.TestAllTypes.repeated_importmessage:type_name -> goproto.proto.test.ImportMessage
-	2,   // 11: goproto.proto.test.TestAllTypes.repeated_nested_enum:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
-	0,   // 12: goproto.proto.test.TestAllTypes.repeated_foreign_enum:type_name -> goproto.proto.test.ForeignEnum
-	50,  // 13: goproto.proto.test.TestAllTypes.repeated_importenum:type_name -> goproto.proto.test.ImportEnum
-	27,  // 14: goproto.proto.test.TestAllTypes.map_int32_int32:type_name -> goproto.proto.test.TestAllTypes.MapInt32Int32Entry
-	28,  // 15: goproto.proto.test.TestAllTypes.map_int64_int64:type_name -> goproto.proto.test.TestAllTypes.MapInt64Int64Entry
-	29,  // 16: goproto.proto.test.TestAllTypes.map_uint32_uint32:type_name -> goproto.proto.test.TestAllTypes.MapUint32Uint32Entry
-	30,  // 17: goproto.proto.test.TestAllTypes.map_uint64_uint64:type_name -> goproto.proto.test.TestAllTypes.MapUint64Uint64Entry
-	31,  // 18: goproto.proto.test.TestAllTypes.map_sint32_sint32:type_name -> goproto.proto.test.TestAllTypes.MapSint32Sint32Entry
-	32,  // 19: goproto.proto.test.TestAllTypes.map_sint64_sint64:type_name -> goproto.proto.test.TestAllTypes.MapSint64Sint64Entry
-	33,  // 20: goproto.proto.test.TestAllTypes.map_fixed32_fixed32:type_name -> goproto.proto.test.TestAllTypes.MapFixed32Fixed32Entry
-	34,  // 21: goproto.proto.test.TestAllTypes.map_fixed64_fixed64:type_name -> goproto.proto.test.TestAllTypes.MapFixed64Fixed64Entry
-	35,  // 22: goproto.proto.test.TestAllTypes.map_sfixed32_sfixed32:type_name -> goproto.proto.test.TestAllTypes.MapSfixed32Sfixed32Entry
-	36,  // 23: goproto.proto.test.TestAllTypes.map_sfixed64_sfixed64:type_name -> goproto.proto.test.TestAllTypes.MapSfixed64Sfixed64Entry
-	37,  // 24: goproto.proto.test.TestAllTypes.map_int32_float:type_name -> goproto.proto.test.TestAllTypes.MapInt32FloatEntry
-	38,  // 25: goproto.proto.test.TestAllTypes.map_int32_double:type_name -> goproto.proto.test.TestAllTypes.MapInt32DoubleEntry
-	39,  // 26: goproto.proto.test.TestAllTypes.map_bool_bool:type_name -> goproto.proto.test.TestAllTypes.MapBoolBoolEntry
-	40,  // 27: goproto.proto.test.TestAllTypes.map_string_string:type_name -> goproto.proto.test.TestAllTypes.MapStringStringEntry
-	41,  // 28: goproto.proto.test.TestAllTypes.map_string_bytes:type_name -> goproto.proto.test.TestAllTypes.MapStringBytesEntry
-	42,  // 29: goproto.proto.test.TestAllTypes.map_string_nested_message:type_name -> goproto.proto.test.TestAllTypes.MapStringNestedMessageEntry
-	43,  // 30: goproto.proto.test.TestAllTypes.map_string_nested_enum:type_name -> goproto.proto.test.TestAllTypes.MapStringNestedEnumEntry
-	2,   // 31: goproto.proto.test.TestAllTypes.default_nested_enum:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
-	0,   // 32: goproto.proto.test.TestAllTypes.default_foreign_enum:type_name -> goproto.proto.test.ForeignEnum
-	24,  // 33: goproto.proto.test.TestAllTypes.oneof_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
-	2,   // 34: goproto.proto.test.TestAllTypes.oneof_enum:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
-	44,  // 35: goproto.proto.test.TestAllTypes.oneofgroup:type_name -> goproto.proto.test.TestAllTypes.OneofGroup
-	45,  // 36: goproto.proto.test.OptionalGroup.optional_nested_message:type_name -> goproto.proto.test.TestAllExtensions.NestedMessage
-	45,  // 37: goproto.proto.test.RepeatedGroup.optional_nested_message:type_name -> goproto.proto.test.TestAllExtensions.NestedMessage
-	12,  // 38: goproto.proto.test.TestRequiredForeign.optional_message:type_name -> goproto.proto.test.TestRequired
-	12,  // 39: goproto.proto.test.TestRequiredForeign.repeated_message:type_name -> goproto.proto.test.TestRequired
-	46,  // 40: goproto.proto.test.TestRequiredForeign.map_message:type_name -> goproto.proto.test.TestRequiredForeign.MapMessageEntry
-	12,  // 41: goproto.proto.test.TestRequiredForeign.oneof_message:type_name -> goproto.proto.test.TestRequired
-	47,  // 42: goproto.proto.test.TestRequiredGroupFields.optionalgroup:type_name -> goproto.proto.test.TestRequiredGroupFields.OptionalGroup
-	48,  // 43: goproto.proto.test.TestRequiredGroupFields.repeatedgroup:type_name -> goproto.proto.test.TestRequiredGroupFields.RepeatedGroup
-	0,   // 44: goproto.proto.test.TestPackedTypes.packed_enum:type_name -> goproto.proto.test.ForeignEnum
-	0,   // 45: goproto.proto.test.TestUnpackedTypes.unpacked_enum:type_name -> goproto.proto.test.ForeignEnum
-	51,  // 46: goproto.proto.test.RemoteDefault.default:type_name -> goproto.proto.enums.Enum
-	51,  // 47: goproto.proto.test.RemoteDefault.zero:type_name -> goproto.proto.enums.Enum
-	51,  // 48: goproto.proto.test.RemoteDefault.one:type_name -> goproto.proto.enums.Enum
-	51,  // 49: goproto.proto.test.RemoteDefault.elevent:type_name -> goproto.proto.enums.Enum
-	51,  // 50: goproto.proto.test.RemoteDefault.seventeen:type_name -> goproto.proto.enums.Enum
-	51,  // 51: goproto.proto.test.RemoteDefault.thirtyseven:type_name -> goproto.proto.enums.Enum
-	51,  // 52: goproto.proto.test.RemoteDefault.sixtyseven:type_name -> goproto.proto.enums.Enum
-	51,  // 53: goproto.proto.test.RemoteDefault.negative:type_name -> goproto.proto.enums.Enum
-	4,   // 54: goproto.proto.test.TestAllTypes.NestedMessage.corecursive:type_name -> goproto.proto.test.TestAllTypes
-	24,  // 55: goproto.proto.test.TestAllTypes.OptionalGroup.optional_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
-	24,  // 56: goproto.proto.test.TestAllTypes.RepeatedGroup.optional_nested_message:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
-	24,  // 57: goproto.proto.test.TestAllTypes.MapStringNestedMessageEntry.value:type_name -> goproto.proto.test.TestAllTypes.NestedMessage
-	2,   // 58: goproto.proto.test.TestAllTypes.MapStringNestedEnumEntry.value:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
-	8,   // 59: goproto.proto.test.TestAllExtensions.NestedMessage.corecursive:type_name -> goproto.proto.test.TestAllExtensions
-	12,  // 60: goproto.proto.test.TestRequiredForeign.MapMessageEntry.value:type_name -> goproto.proto.test.TestRequired
-	8,   // 61: goproto.proto.test.optional_int32:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 62: goproto.proto.test.optional_int64:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 63: goproto.proto.test.optional_uint32:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 64: goproto.proto.test.optional_uint64:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 65: goproto.proto.test.optional_sint32:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 66: goproto.proto.test.optional_sint64:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 67: goproto.proto.test.optional_fixed32:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 68: goproto.proto.test.optional_fixed64:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 69: goproto.proto.test.optional_sfixed32:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 70: goproto.proto.test.optional_sfixed64:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 71: goproto.proto.test.optional_float:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 72: goproto.proto.test.optional_double:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 73: goproto.proto.test.optional_bool:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 74: goproto.proto.test.optional_string:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 75: goproto.proto.test.optional_bytes:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 76: goproto.proto.test.optionalgroup:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 77: goproto.proto.test.optional_nested_message:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 78: goproto.proto.test.optional_nested_enum:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 79: goproto.proto.test.repeated_int32:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 80: goproto.proto.test.repeated_int64:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 81: goproto.proto.test.repeated_uint32:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 82: goproto.proto.test.repeated_uint64:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 83: goproto.proto.test.repeated_sint32:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 84: goproto.proto.test.repeated_sint64:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 85: goproto.proto.test.repeated_fixed32:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 86: goproto.proto.test.repeated_fixed64:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 87: goproto.proto.test.repeated_sfixed32:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 88: goproto.proto.test.repeated_sfixed64:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 89: goproto.proto.test.repeated_float:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 90: goproto.proto.test.repeated_double:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 91: goproto.proto.test.repeated_bool:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 92: goproto.proto.test.repeated_string:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 93: goproto.proto.test.repeated_bytes:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 94: goproto.proto.test.repeatedgroup:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 95: goproto.proto.test.repeated_nested_message:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 96: goproto.proto.test.repeated_nested_enum:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 97: goproto.proto.test.default_int32:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 98: goproto.proto.test.default_int64:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 99: goproto.proto.test.default_uint32:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 100: goproto.proto.test.default_uint64:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 101: goproto.proto.test.default_sint32:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 102: goproto.proto.test.default_sint64:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 103: goproto.proto.test.default_fixed32:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 104: goproto.proto.test.default_fixed64:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 105: goproto.proto.test.default_sfixed32:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 106: goproto.proto.test.default_sfixed64:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 107: goproto.proto.test.default_float:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 108: goproto.proto.test.default_double:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 109: goproto.proto.test.default_bool:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 110: goproto.proto.test.default_string:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 111: goproto.proto.test.default_bytes:extendee -> goproto.proto.test.TestAllExtensions
-	18,  // 112: goproto.proto.test.packed_int32:extendee -> goproto.proto.test.TestPackedExtensions
-	18,  // 113: goproto.proto.test.packed_int64:extendee -> goproto.proto.test.TestPackedExtensions
-	18,  // 114: goproto.proto.test.packed_uint32:extendee -> goproto.proto.test.TestPackedExtensions
-	18,  // 115: goproto.proto.test.packed_uint64:extendee -> goproto.proto.test.TestPackedExtensions
-	18,  // 116: goproto.proto.test.packed_sint32:extendee -> goproto.proto.test.TestPackedExtensions
-	18,  // 117: goproto.proto.test.packed_sint64:extendee -> goproto.proto.test.TestPackedExtensions
-	18,  // 118: goproto.proto.test.packed_fixed32:extendee -> goproto.proto.test.TestPackedExtensions
-	18,  // 119: goproto.proto.test.packed_fixed64:extendee -> goproto.proto.test.TestPackedExtensions
-	18,  // 120: goproto.proto.test.packed_sfixed32:extendee -> goproto.proto.test.TestPackedExtensions
-	18,  // 121: goproto.proto.test.packed_sfixed64:extendee -> goproto.proto.test.TestPackedExtensions
-	18,  // 122: goproto.proto.test.packed_float:extendee -> goproto.proto.test.TestPackedExtensions
-	18,  // 123: goproto.proto.test.packed_double:extendee -> goproto.proto.test.TestPackedExtensions
-	18,  // 124: goproto.proto.test.packed_bool:extendee -> goproto.proto.test.TestPackedExtensions
-	18,  // 125: goproto.proto.test.packed_enum:extendee -> goproto.proto.test.TestPackedExtensions
-	19,  // 126: goproto.proto.test.unpacked_int32:extendee -> goproto.proto.test.TestUnpackedExtensions
-	19,  // 127: goproto.proto.test.unpacked_int64:extendee -> goproto.proto.test.TestUnpackedExtensions
-	19,  // 128: goproto.proto.test.unpacked_uint32:extendee -> goproto.proto.test.TestUnpackedExtensions
-	19,  // 129: goproto.proto.test.unpacked_uint64:extendee -> goproto.proto.test.TestUnpackedExtensions
-	19,  // 130: goproto.proto.test.unpacked_sint32:extendee -> goproto.proto.test.TestUnpackedExtensions
-	19,  // 131: goproto.proto.test.unpacked_sint64:extendee -> goproto.proto.test.TestUnpackedExtensions
-	19,  // 132: goproto.proto.test.unpacked_fixed32:extendee -> goproto.proto.test.TestUnpackedExtensions
-	19,  // 133: goproto.proto.test.unpacked_fixed64:extendee -> goproto.proto.test.TestUnpackedExtensions
-	19,  // 134: goproto.proto.test.unpacked_sfixed32:extendee -> goproto.proto.test.TestUnpackedExtensions
-	19,  // 135: goproto.proto.test.unpacked_sfixed64:extendee -> goproto.proto.test.TestUnpackedExtensions
-	19,  // 136: goproto.proto.test.unpacked_float:extendee -> goproto.proto.test.TestUnpackedExtensions
-	19,  // 137: goproto.proto.test.unpacked_double:extendee -> goproto.proto.test.TestUnpackedExtensions
-	19,  // 138: goproto.proto.test.unpacked_bool:extendee -> goproto.proto.test.TestUnpackedExtensions
-	19,  // 139: goproto.proto.test.unpacked_enum:extendee -> goproto.proto.test.TestUnpackedExtensions
-	8,   // 140: goproto.proto.test.TestNestedExtension.nested_string_extension:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 141: goproto.proto.test.TestRequired.single:extendee -> goproto.proto.test.TestAllExtensions
-	8,   // 142: goproto.proto.test.TestRequired.multi:extendee -> goproto.proto.test.TestAllExtensions
-	9,   // 143: goproto.proto.test.optionalgroup:type_name -> goproto.proto.test.OptionalGroup
-	45,  // 144: goproto.proto.test.optional_nested_message:type_name -> goproto.proto.test.TestAllExtensions.NestedMessage
-	2,   // 145: goproto.proto.test.optional_nested_enum:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
-	10,  // 146: goproto.proto.test.repeatedgroup:type_name -> goproto.proto.test.RepeatedGroup
-	45,  // 147: goproto.proto.test.repeated_nested_message:type_name -> goproto.proto.test.TestAllExtensions.NestedMessage
-	2,   // 148: goproto.proto.test.repeated_nested_enum:type_name -> goproto.proto.test.TestAllTypes.NestedEnum
-	0,   // 149: goproto.proto.test.packed_enum:type_name -> goproto.proto.test.ForeignEnum
-	0,   // 150: goproto.proto.test.unpacked_enum:type_name -> goproto.proto.test.ForeignEnum
-	12,  // 151: goproto.proto.test.TestRequired.single:type_name -> goproto.proto.test.TestRequired
-	12,  // 152: goproto.proto.test.TestRequired.multi:type_name -> goproto.proto.test.TestRequired
-	20,  // 153: goproto.proto.test.TestService.Foo:input_type -> goproto.proto.test.FooRequest
-	20,  // 154: goproto.proto.test.TestService.TestStream:input_type -> goproto.proto.test.FooRequest
-	5,   // 155: goproto.proto.test.TestDeprecatedService.Deprecated:input_type -> goproto.proto.test.TestDeprecatedMessage
-	21,  // 156: goproto.proto.test.TestService.Foo:output_type -> goproto.proto.test.FooResponse
-	21,  // 157: goproto.proto.test.TestService.TestStream:output_type -> goproto.proto.test.FooResponse
-	5,   // 158: goproto.proto.test.TestDeprecatedService.Deprecated:output_type -> goproto.proto.test.TestDeprecatedMessage
-	156, // [156:159] is the sub-list for method output_type
-	153, // [153:156] is the sub-list for method input_type
-	143, // [143:153] is the sub-list for extension type_name
-	61,  // [61:143] is the sub-list for extension extendee
-	0,   // [0:61] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_test_test_proto_init() }
-func file_internal_testprotos_test_test_proto_init() {
-	if File_internal_testprotos_test_test_proto != nil {
-		return
-	}
-	file_internal_testprotos_test_test_import_proto_init()
-	file_internal_testprotos_test_test_public_proto_init()
-	if !protoimpl.UnsafeEnabled {
-		file_internal_testprotos_test_test_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestAllTypes); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestDeprecatedMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ForeignMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestReservedFields); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestAllExtensions); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*OptionalGroup); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*RepeatedGroup); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestNestedExtension); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestRequired); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestRequiredForeign); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestRequiredGroupFields); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestWeak); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.weakFields
-			case 3:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestPackedTypes); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestUnpackedTypes); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestPackedExtensions); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestUnpackedExtensions); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FooRequest); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FooResponse); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*WeirdDefault); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*RemoteDefault); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestAllTypes_NestedMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestAllTypes_OptionalGroup); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestAllTypes_RepeatedGroup); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestAllTypes_OneofGroup); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestAllExtensions_NestedMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestRequiredGroupFields_OptionalGroup); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test_test_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestRequiredGroupFields_RepeatedGroup); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	file_internal_testprotos_test_test_proto_msgTypes[0].OneofWrappers = []interface{}{
-		(*TestAllTypes_OneofUint32)(nil),
-		(*TestAllTypes_OneofNestedMessage)(nil),
-		(*TestAllTypes_OneofString)(nil),
-		(*TestAllTypes_OneofBytes)(nil),
-		(*TestAllTypes_OneofBool)(nil),
-		(*TestAllTypes_OneofUint64)(nil),
-		(*TestAllTypes_OneofFloat)(nil),
-		(*TestAllTypes_OneofDouble)(nil),
-		(*TestAllTypes_OneofEnum)(nil),
-		(*TestAllTypes_Oneofgroup)(nil),
-		(*TestAllTypes_OneofOptionalUint32)(nil),
-	}
-	file_internal_testprotos_test_test_proto_msgTypes[1].OneofWrappers = []interface{}{
-		(*TestDeprecatedMessage_DeprecatedOneofField)(nil),
-	}
-	file_internal_testprotos_test_test_proto_msgTypes[9].OneofWrappers = []interface{}{
-		(*TestRequiredForeign_OneofMessage)(nil),
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_test_test_proto_rawDesc,
-			NumEnums:      4,
-			NumMessages:   45,
-			NumExtensions: 82,
-			NumServices:   2,
-		},
-		GoTypes:           file_internal_testprotos_test_test_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_test_test_proto_depIdxs,
-		EnumInfos:         file_internal_testprotos_test_test_proto_enumTypes,
-		MessageInfos:      file_internal_testprotos_test_test_proto_msgTypes,
-		ExtensionInfos:    file_internal_testprotos_test_test_proto_extTypes,
-	}.Build()
-	File_internal_testprotos_test_test_proto = out.File
-	file_internal_testprotos_test_test_proto_rawDesc = nil
-	file_internal_testprotos_test_test_proto_goTypes = nil
-	file_internal_testprotos_test_test_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/test/test.proto b/internal/testprotos/test/test.proto
deleted file mode 100644
index f841ad6..0000000
--- a/internal/testprotos/test/test.proto
+++ /dev/null
@@ -1,395 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.proto.test;
-
-import "internal/testprotos/enums/enums.proto";
-import "internal/testprotos/test/test_import.proto";
-import public "internal/testprotos/test/test_public.proto";
-import weak "internal/testprotos/test/weak1/test_weak.proto";
-import weak "internal/testprotos/test/weak2/test_weak.proto";
-
-option go_package = "google.golang.org/protobuf/internal/testprotos/test";
-
-message TestAllTypes {
-  message NestedMessage {
-    optional int32 a = 1;
-    optional TestAllTypes corecursive = 2;
-  }
-
-  enum NestedEnum {
-    FOO = 0;
-    BAR = 1;
-    BAZ = 2;
-    NEG = -1;  // Intentionally negative.
-  }
-
-  optional int32         optional_int32    =  1;
-  optional int64         optional_int64    =  2;
-  optional uint32        optional_uint32   =  3;
-  optional uint64        optional_uint64   =  4;
-  optional sint32        optional_sint32   =  5;
-  optional sint64        optional_sint64   =  6;
-  optional fixed32       optional_fixed32  =  7;
-  optional fixed64       optional_fixed64  =  8;
-  optional sfixed32      optional_sfixed32 =  9;
-  optional sfixed64      optional_sfixed64 = 10;
-  optional float         optional_float    = 11;
-  optional double        optional_double   = 12;
-  optional bool          optional_bool     = 13;
-  optional string        optional_string   = 14;
-  optional bytes         optional_bytes    = 15;
-  optional group OptionalGroup = 16 {
-    optional int32 a = 17;
-    optional NestedMessage optional_nested_message = 1000;
-    optional int32 same_field_number = 16;
-  }
-  optional NestedMessage  optional_nested_message  = 18;
-  optional ForeignMessage optional_foreign_message = 19;
-  optional ImportMessage  optional_import_message  = 20;
-  optional NestedEnum     optional_nested_enum     = 21;
-  optional ForeignEnum    optional_foreign_enum    = 22;
-  optional ImportEnum     optional_import_enum     = 23;
-
-  repeated int32         repeated_int32    = 31;
-  repeated int64         repeated_int64    = 32;
-  repeated uint32        repeated_uint32   = 33;
-  repeated uint64        repeated_uint64   = 34;
-  repeated sint32        repeated_sint32   = 35;
-  repeated sint64        repeated_sint64   = 36;
-  repeated fixed32       repeated_fixed32  = 37;
-  repeated fixed64       repeated_fixed64  = 38;
-  repeated sfixed32      repeated_sfixed32 = 39;
-  repeated sfixed64      repeated_sfixed64 = 40;
-  repeated float         repeated_float    = 41;
-  repeated double        repeated_double   = 42;
-  repeated bool          repeated_bool     = 43;
-  repeated string        repeated_string   = 44;
-  repeated bytes         repeated_bytes    = 45;
-  repeated group RepeatedGroup = 46 {
-    optional int32 a = 47;
-    optional NestedMessage optional_nested_message = 1001;
-  }
-  repeated NestedMessage  repeated_nested_message  = 48;
-  repeated ForeignMessage repeated_foreign_message = 49;
-  repeated ImportMessage  repeated_importmessage   = 50;
-  repeated NestedEnum     repeated_nested_enum     = 51;
-  repeated ForeignEnum    repeated_foreign_enum    = 52;
-  repeated ImportEnum     repeated_importenum      = 53;
-
-  map <   int32, int32>         map_int32_int32           = 56;
-  map <   int64, int64>         map_int64_int64           = 57;
-  map <  uint32, uint32>        map_uint32_uint32         = 58;
-  map <  uint64, uint64>        map_uint64_uint64         = 59;
-  map <  sint32, sint32>        map_sint32_sint32         = 60;
-  map <  sint64, sint64>        map_sint64_sint64         = 61;
-  map < fixed32, fixed32>       map_fixed32_fixed32       = 62;
-  map < fixed64, fixed64>       map_fixed64_fixed64       = 63;
-  map <sfixed32, sfixed32>      map_sfixed32_sfixed32     = 64;
-  map <sfixed64, sfixed64>      map_sfixed64_sfixed64     = 65;
-  map <   int32, float>         map_int32_float           = 66;
-  map <   int32, double>        map_int32_double          = 67;
-  map <    bool, bool>          map_bool_bool             = 68;
-  map <  string, string>        map_string_string         = 69;
-  map <  string, bytes>         map_string_bytes          = 70;
-  map <  string, NestedMessage> map_string_nested_message = 71;
-  map <  string, NestedEnum>    map_string_nested_enum    = 73;
-
-  // Singular with defaults
-  optional    int32 default_int32    = 81 [default =  81    ];
-  optional    int64 default_int64    = 82 [default =  82    ];
-  optional   uint32 default_uint32   = 83 [default =  83    ];
-  optional   uint64 default_uint64   = 84 [default =  84    ];
-  optional   sint32 default_sint32   = 85 [default = -85    ];
-  optional   sint64 default_sint64   = 86 [default =  86    ];
-  optional  fixed32 default_fixed32  = 87 [default =  87    ];
-  optional  fixed64 default_fixed64  = 88 [default =  88    ];
-  optional sfixed32 default_sfixed32 = 89 [default =  89    ];
-  optional sfixed64 default_sfixed64 = 80 [default = -90    ];
-  optional    float default_float    = 91 [default =  91.5  ];
-  optional   double default_double   = 92 [default =  92e3  ];
-  optional     bool default_bool     = 93 [default = true   ];
-  optional   string default_string   = 94 [default = "hello"];
-  optional    bytes default_bytes    = 95 [default = "world"];
-  optional NestedEnum  default_nested_enum  = 96 [default = BAR        ];
-  optional ForeignEnum default_foreign_enum = 97 [default = FOREIGN_BAR];
-
-  oneof oneof_field {
-    uint32        oneof_uint32         = 111;
-    NestedMessage oneof_nested_message = 112;
-    string        oneof_string         = 113;
-    bytes         oneof_bytes          = 114;
-    bool          oneof_bool           = 115;
-    uint64        oneof_uint64         = 116;
-    float         oneof_float          = 117;
-    double        oneof_double         = 118;
-    NestedEnum    oneof_enum           = 119;
-    group OneofGroup = 121 {
-      optional int32 a = 1;
-      optional int32 b = 2;
-    }
-  }
-
-  // A oneof with exactly one field.
-  oneof oneof_optional {
-    uint32 oneof_optional_uint32 = 120;
-  }
-}
-
-message TestDeprecatedMessage {
-  option deprecated = true;
-  optional int32 deprecated_int32 = 1 [deprecated=true];
-  enum DeprecatedEnum {
-    option deprecated = true;
-    DEPRECATED = 0 [deprecated=true];
-  }
-  oneof deprecated_oneof {
-    int32 deprecated_oneof_field = 2 [deprecated = true];
-  }
-}
-
-message ForeignMessage {
-  optional int32 c = 1;
-  optional int32 d = 2;
-}
-
-enum ForeignEnum {
-  FOREIGN_FOO = 4;
-  FOREIGN_BAR = 5;
-  FOREIGN_BAZ = 6;
-}
-
-message TestReservedFields {
-  reserved 2, 15, 9 to 11;
-  reserved "bar", "baz";
-}
-
-enum TestReservedEnumFields {
-  RESERVED_ENUM = 0;
-  reserved 2, 15, 9 to 11;
-  reserved "BAR", "BAZ";
-}
-
-message TestAllExtensions {
-  message NestedMessage {
-    optional int32 a = 1;
-    optional TestAllExtensions corecursive = 2;
-  }
-
-  extensions 1 to max;
-}
-
-extend TestAllExtensions {
-  optional int32    optional_int32    =  1;
-  optional int64    optional_int64    =  2;
-  optional uint32   optional_uint32   =  3;
-  optional uint64   optional_uint64   =  4;
-  optional sint32   optional_sint32   =  5;
-  optional sint64   optional_sint64   =  6;
-  optional fixed32  optional_fixed32  =  7;
-  optional fixed64  optional_fixed64  =  8;
-  optional sfixed32 optional_sfixed32 =  9;
-  optional sfixed64 optional_sfixed64 = 10;
-  optional float    optional_float    = 11;
-  optional double   optional_double   = 12;
-  optional bool     optional_bool     = 13;
-  optional string   optional_string   = 14;
-  optional bytes    optional_bytes    = 15;
-
-  optional group OptionalGroup = 16 {
-    optional int32 a = 17;
-    optional int32 same_field_number = 16;
-    optional TestAllExtensions.NestedMessage optional_nested_message = 1000;
-  }
-
-  optional TestAllExtensions.NestedMessage optional_nested_message = 18;
-  optional TestAllTypes.NestedEnum optional_nested_enum = 21;
-
-  repeated int32    repeated_int32    = 31;
-  repeated int64    repeated_int64    = 32;
-  repeated uint32   repeated_uint32   = 33;
-  repeated uint64   repeated_uint64   = 34;
-  repeated sint32   repeated_sint32   = 35;
-  repeated sint64   repeated_sint64   = 36;
-  repeated fixed32  repeated_fixed32  = 37;
-  repeated fixed64  repeated_fixed64  = 38;
-  repeated sfixed32 repeated_sfixed32 = 39;
-  repeated sfixed64 repeated_sfixed64 = 40;
-  repeated float    repeated_float    = 41;
-  repeated double   repeated_double   = 42;
-  repeated bool     repeated_bool     = 43;
-  repeated string   repeated_string   = 44;
-  repeated bytes    repeated_bytes    = 45;
-
-  repeated group RepeatedGroup = 46 {
-    optional int32 a = 47;
-    optional TestAllExtensions.NestedMessage optional_nested_message = 1001;
-  }
-
-  repeated TestAllExtensions.NestedMessage repeated_nested_message = 48;
-  repeated TestAllTypes.NestedEnum repeated_nested_enum = 51;
-
-  optional int32    default_int32    = 81 [default =  81    ];
-  optional int64    default_int64    = 82 [default =  82    ];
-  optional uint32   default_uint32   = 83 [default =  83    ];
-  optional uint64   default_uint64   = 84 [default =  84    ];
-  optional sint32   default_sint32   = 85 [default = -85    ];
-  optional sint64   default_sint64   = 86 [default =  86    ];
-  optional fixed32  default_fixed32  = 87 [default =  87    ];
-  optional fixed64  default_fixed64  = 88 [default =  88    ];
-  optional sfixed32 default_sfixed32 = 89 [default =  89    ];
-  optional sfixed64 default_sfixed64 = 80 [default = -90    ];
-  optional float    default_float    = 91 [default =  91.5  ];
-  optional double   default_double   = 92 [default =  92e3  ];
-  optional bool     default_bool     = 93 [default = true   ];
-  optional string   default_string   = 94 [default = "hello"];
-  optional bytes    default_bytes    = 95 [default = "world"];
-}
-
-message TestNestedExtension {
-  extend TestAllExtensions {
-    optional string nested_string_extension = 1003;
-  }
-}
-
-message TestRequired {
-  required int32 required_field = 1;
-
-  extend TestAllExtensions {
-    optional TestRequired single = 1000;
-    repeated TestRequired multi  = 1001;
-  }
-}
-
-message TestRequiredForeign {
-  optional TestRequired    optional_message = 1;
-  repeated TestRequired    repeated_message = 2;
-  map<int32, TestRequired> map_message = 3;
-  oneof oneof_field {
-    TestRequired oneof_message = 4;
-  }
-}
-
-message TestRequiredGroupFields {
-  optional group OptionalGroup = 1 {
-    required int32 a = 2;
-  }
-  repeated group RepeatedGroup = 3 {
-    required int32 a = 4;
-  }
-}
-
-message TestWeak {
-  optional goproto.proto.test.weak.WeakImportMessage1 weak_message1 = 1 [weak=true];
-  optional goproto.proto.test.weak.WeakImportMessage2 weak_message2 = 2 [weak=true];
-}
-
-message TestPackedTypes {
-  repeated    int32 packed_int32    =  90 [packed = true];
-  repeated    int64 packed_int64    =  91 [packed = true];
-  repeated   uint32 packed_uint32   =  92 [packed = true];
-  repeated   uint64 packed_uint64   =  93 [packed = true];
-  repeated   sint32 packed_sint32   =  94 [packed = true];
-  repeated   sint64 packed_sint64   =  95 [packed = true];
-  repeated  fixed32 packed_fixed32  =  96 [packed = true];
-  repeated  fixed64 packed_fixed64  =  97 [packed = true];
-  repeated sfixed32 packed_sfixed32 =  98 [packed = true];
-  repeated sfixed64 packed_sfixed64 =  99 [packed = true];
-  repeated    float packed_float    = 100 [packed = true];
-  repeated   double packed_double   = 101 [packed = true];
-  repeated     bool packed_bool     = 102 [packed = true];
-  repeated ForeignEnum packed_enum  = 103 [packed = true];
-}
-
-message TestUnpackedTypes {
-  repeated    int32 unpacked_int32    =  90 [packed = false];
-  repeated    int64 unpacked_int64    =  91 [packed = false];
-  repeated   uint32 unpacked_uint32   =  92 [packed = false];
-  repeated   uint64 unpacked_uint64   =  93 [packed = false];
-  repeated   sint32 unpacked_sint32   =  94 [packed = false];
-  repeated   sint64 unpacked_sint64   =  95 [packed = false];
-  repeated  fixed32 unpacked_fixed32  =  96 [packed = false];
-  repeated  fixed64 unpacked_fixed64  =  97 [packed = false];
-  repeated sfixed32 unpacked_sfixed32 =  98 [packed = false];
-  repeated sfixed64 unpacked_sfixed64 =  99 [packed = false];
-  repeated    float unpacked_float    = 100 [packed = false];
-  repeated   double unpacked_double   = 101 [packed = false];
-  repeated     bool unpacked_bool     = 102 [packed = false];
-  repeated ForeignEnum unpacked_enum  = 103 [packed = false];
-}
-
-message TestPackedExtensions {
-  extensions 1 to max;
-}
-
-extend TestPackedExtensions {
-  repeated    int32 packed_int32    =  90 [packed = true];
-  repeated    int64 packed_int64    =  91 [packed = true];
-  repeated   uint32 packed_uint32   =  92 [packed = true];
-  repeated   uint64 packed_uint64   =  93 [packed = true];
-  repeated   sint32 packed_sint32   =  94 [packed = true];
-  repeated   sint64 packed_sint64   =  95 [packed = true];
-  repeated  fixed32 packed_fixed32  =  96 [packed = true];
-  repeated  fixed64 packed_fixed64  =  97 [packed = true];
-  repeated sfixed32 packed_sfixed32 =  98 [packed = true];
-  repeated sfixed64 packed_sfixed64 =  99 [packed = true];
-  repeated    float packed_float    = 100 [packed = true];
-  repeated   double packed_double   = 101 [packed = true];
-  repeated     bool packed_bool     = 102 [packed = true];
-  repeated ForeignEnum packed_enum  = 103 [packed = true];
-}
-
-message TestUnpackedExtensions {
-  extensions 1 to max;
-}
-
-extend TestUnpackedExtensions {
-  repeated    int32 unpacked_int32    =  90 [packed = false];
-  repeated    int64 unpacked_int64    =  91 [packed = false];
-  repeated   uint32 unpacked_uint32   =  92 [packed = false];
-  repeated   uint64 unpacked_uint64   =  93 [packed = false];
-  repeated   sint32 unpacked_sint32   =  94 [packed = false];
-  repeated   sint64 unpacked_sint64   =  95 [packed = false];
-  repeated  fixed32 unpacked_fixed32  =  96 [packed = false];
-  repeated  fixed64 unpacked_fixed64  =  97 [packed = false];
-  repeated sfixed32 unpacked_sfixed32 =  98 [packed = false];
-  repeated sfixed64 unpacked_sfixed64 =  99 [packed = false];
-  repeated    float unpacked_float    = 100 [packed = false];
-  repeated   double unpacked_double   = 101 [packed = false];
-  repeated     bool unpacked_bool     = 102 [packed = false];
-  repeated ForeignEnum unpacked_enum  = 103 [packed = false];
-}
-
-// Test that RPC services work.
-message FooRequest  {}
-message FooResponse {}
-
-service TestService {
-  rpc Foo(FooRequest) returns (FooResponse);
-  rpc TestStream(stream FooRequest) returns (stream FooResponse);
-}
-
-service TestDeprecatedService {
-  option deprecated = true;
-  rpc Deprecated(TestDeprecatedMessage) returns (TestDeprecatedMessage) {
-    option deprecated = true;
-  }
-}
-
-message WeirdDefault {
-  optional bytes weird_default = 1 [default = "hello, \"world!\"\ndead\xde\xad\xbe\xefbeef`"];
-}
-
-message RemoteDefault {
-  optional goproto.proto.enums.Enum default = 1;
-  optional goproto.proto.enums.Enum zero = 2 [default = ZERO];
-  optional goproto.proto.enums.Enum one = 3 [default = ONE];
-  optional goproto.proto.enums.Enum elevent = 4 [default = ELEVENT];
-  optional goproto.proto.enums.Enum seventeen = 5 [default = SEVENTEEN];
-  optional goproto.proto.enums.Enum thirtyseven = 6 [default = THIRTYSEVEN];
-  optional goproto.proto.enums.Enum sixtyseven = 7 [default = SIXTYSEVEN];
-  optional goproto.proto.enums.Enum negative = 8 [default = NEGATIVE];
-}
diff --git a/internal/testprotos/test/test_import.pb.go b/internal/testprotos/test/test_import.pb.go
deleted file mode 100644
index 6be93bd..0000000
--- a/internal/testprotos/test/test_import.pb.go
+++ /dev/null
@@ -1,188 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/test/test_import.proto
-
-package test
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type ImportEnum int32
-
-const (
-	ImportEnum_IMPORT_ZERO ImportEnum = 0
-)
-
-// Enum value maps for ImportEnum.
-var (
-	ImportEnum_name = map[int32]string{
-		0: "IMPORT_ZERO",
-	}
-	ImportEnum_value = map[string]int32{
-		"IMPORT_ZERO": 0,
-	}
-)
-
-func (x ImportEnum) Enum() *ImportEnum {
-	p := new(ImportEnum)
-	*p = x
-	return p
-}
-
-func (x ImportEnum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ImportEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_internal_testprotos_test_test_import_proto_enumTypes[0].Descriptor()
-}
-
-func (ImportEnum) Type() protoreflect.EnumType {
-	return &file_internal_testprotos_test_test_import_proto_enumTypes[0]
-}
-
-func (x ImportEnum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *ImportEnum) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = ImportEnum(num)
-	return nil
-}
-
-// Deprecated: Use ImportEnum.Descriptor instead.
-func (ImportEnum) EnumDescriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_import_proto_rawDescGZIP(), []int{0}
-}
-
-type ImportMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *ImportMessage) Reset() {
-	*x = ImportMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_import_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ImportMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ImportMessage) ProtoMessage() {}
-
-func (x *ImportMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_import_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ImportMessage.ProtoReflect.Descriptor instead.
-func (*ImportMessage) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_import_proto_rawDescGZIP(), []int{0}
-}
-
-var File_internal_testprotos_test_test_import_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_test_test_import_proto_rawDesc = []byte{
-	0x0a, 0x2a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f,
-	0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x22, 0x0f, 0x0a, 0x0d, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x2a, 0x1d, 0x0a, 0x0a, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12,
-	0x0f, 0x0a, 0x0b, 0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00,
-	0x42, 0x35, 0x5a, 0x33, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e,
-	0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69,
-	0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74,
-}
-
-var (
-	file_internal_testprotos_test_test_import_proto_rawDescOnce sync.Once
-	file_internal_testprotos_test_test_import_proto_rawDescData = file_internal_testprotos_test_test_import_proto_rawDesc
-)
-
-func file_internal_testprotos_test_test_import_proto_rawDescGZIP() []byte {
-	file_internal_testprotos_test_test_import_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_test_test_import_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_test_test_import_proto_rawDescData)
-	})
-	return file_internal_testprotos_test_test_import_proto_rawDescData
-}
-
-var file_internal_testprotos_test_test_import_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_internal_testprotos_test_test_import_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_internal_testprotos_test_test_import_proto_goTypes = []interface{}{
-	(ImportEnum)(0),       // 0: goproto.proto.test.ImportEnum
-	(*ImportMessage)(nil), // 1: goproto.proto.test.ImportMessage
-}
-var file_internal_testprotos_test_test_import_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_test_test_import_proto_init() }
-func file_internal_testprotos_test_test_import_proto_init() {
-	if File_internal_testprotos_test_test_import_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_internal_testprotos_test_test_import_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ImportMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_test_test_import_proto_rawDesc,
-			NumEnums:      1,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_internal_testprotos_test_test_import_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_test_test_import_proto_depIdxs,
-		EnumInfos:         file_internal_testprotos_test_test_import_proto_enumTypes,
-		MessageInfos:      file_internal_testprotos_test_test_import_proto_msgTypes,
-	}.Build()
-	File_internal_testprotos_test_test_import_proto = out.File
-	file_internal_testprotos_test_test_import_proto_rawDesc = nil
-	file_internal_testprotos_test_test_import_proto_goTypes = nil
-	file_internal_testprotos_test_test_import_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/test/test_import.proto b/internal/testprotos/test/test_import.proto
deleted file mode 100644
index fa80cfa..0000000
--- a/internal/testprotos/test/test_import.proto
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.proto.test;
-
-option go_package = "google.golang.org/protobuf/internal/testprotos/test";
-
-message ImportMessage {
-}
-
-enum ImportEnum {
- IMPORT_ZERO = 0;
-}
diff --git a/internal/testprotos/test/test_public.pb.go b/internal/testprotos/test/test_public.pb.go
deleted file mode 100644
index 19797ea..0000000
--- a/internal/testprotos/test/test_public.pb.go
+++ /dev/null
@@ -1,130 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/test/test_public.proto
-
-package test
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type PublicImportMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *PublicImportMessage) Reset() {
-	*x = PublicImportMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_test_public_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *PublicImportMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PublicImportMessage) ProtoMessage() {}
-
-func (x *PublicImportMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_test_public_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use PublicImportMessage.ProtoReflect.Descriptor instead.
-func (*PublicImportMessage) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_test_public_proto_rawDescGZIP(), []int{0}
-}
-
-var File_internal_testprotos_test_test_public_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_test_test_public_proto_rawDesc = []byte{
-	0x0a, 0x2a, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f,
-	0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x22, 0x15, 0x0a, 0x13, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x35, 0x5a, 0x33, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74,
-	0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74,
-}
-
-var (
-	file_internal_testprotos_test_test_public_proto_rawDescOnce sync.Once
-	file_internal_testprotos_test_test_public_proto_rawDescData = file_internal_testprotos_test_test_public_proto_rawDesc
-)
-
-func file_internal_testprotos_test_test_public_proto_rawDescGZIP() []byte {
-	file_internal_testprotos_test_test_public_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_test_test_public_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_test_test_public_proto_rawDescData)
-	})
-	return file_internal_testprotos_test_test_public_proto_rawDescData
-}
-
-var file_internal_testprotos_test_test_public_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_internal_testprotos_test_test_public_proto_goTypes = []interface{}{
-	(*PublicImportMessage)(nil), // 0: goproto.proto.test.PublicImportMessage
-}
-var file_internal_testprotos_test_test_public_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_test_test_public_proto_init() }
-func file_internal_testprotos_test_test_public_proto_init() {
-	if File_internal_testprotos_test_test_public_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_internal_testprotos_test_test_public_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PublicImportMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_test_test_public_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_internal_testprotos_test_test_public_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_test_test_public_proto_depIdxs,
-		MessageInfos:      file_internal_testprotos_test_test_public_proto_msgTypes,
-	}.Build()
-	File_internal_testprotos_test_test_public_proto = out.File
-	file_internal_testprotos_test_test_public_proto_rawDesc = nil
-	file_internal_testprotos_test_test_public_proto_goTypes = nil
-	file_internal_testprotos_test_test_public_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/test/test_public.proto b/internal/testprotos/test/test_public.proto
deleted file mode 100644
index d2f14a7..0000000
--- a/internal/testprotos/test/test_public.proto
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.proto.test;
-
-option go_package = "google.golang.org/protobuf/internal/testprotos/test";
-
-message PublicImportMessage {
-}
diff --git a/internal/testprotos/test/weak1/test_weak.pb.go b/internal/testprotos/test/weak1/test_weak.pb.go
deleted file mode 100644
index 63203c5..0000000
--- a/internal/testprotos/test/weak1/test_weak.pb.go
+++ /dev/null
@@ -1,141 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/test/weak1/test_weak.proto
-
-package weak1
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type WeakImportMessage1 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	A *int32 `protobuf:"varint,1,req,name=a" json:"a,omitempty"`
-}
-
-func (x *WeakImportMessage1) Reset() {
-	*x = WeakImportMessage1{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_weak1_test_weak_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *WeakImportMessage1) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*WeakImportMessage1) ProtoMessage() {}
-
-func (x *WeakImportMessage1) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_weak1_test_weak_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use WeakImportMessage1.ProtoReflect.Descriptor instead.
-func (*WeakImportMessage1) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_weak1_test_weak_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *WeakImportMessage1) GetA() int32 {
-	if x != nil && x.A != nil {
-		return *x.A
-	}
-	return 0
-}
-
-var File_internal_testprotos_test_weak1_test_weak_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_test_weak1_test_weak_proto_rawDesc = []byte{
-	0x0a, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x77, 0x65, 0x61, 0x6b, 0x31,
-	0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x77, 0x65, 0x61, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x12, 0x17, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x2e, 0x77, 0x65, 0x61, 0x6b, 0x22, 0x22, 0x0a, 0x12, 0x57, 0x65, 0x61,
-	0x6b, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x31, 0x12,
-	0x0c, 0x0a, 0x01, 0x61, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x01, 0x61, 0x42, 0x3b, 0x5a,
-	0x39, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f,
-	0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65,
-	0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f,
-	0x74, 0x65, 0x73, 0x74, 0x2f, 0x77, 0x65, 0x61, 0x6b, 0x31,
-}
-
-var (
-	file_internal_testprotos_test_weak1_test_weak_proto_rawDescOnce sync.Once
-	file_internal_testprotos_test_weak1_test_weak_proto_rawDescData = file_internal_testprotos_test_weak1_test_weak_proto_rawDesc
-)
-
-func file_internal_testprotos_test_weak1_test_weak_proto_rawDescGZIP() []byte {
-	file_internal_testprotos_test_weak1_test_weak_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_test_weak1_test_weak_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_test_weak1_test_weak_proto_rawDescData)
-	})
-	return file_internal_testprotos_test_weak1_test_weak_proto_rawDescData
-}
-
-var file_internal_testprotos_test_weak1_test_weak_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_internal_testprotos_test_weak1_test_weak_proto_goTypes = []interface{}{
-	(*WeakImportMessage1)(nil), // 0: goproto.proto.test.weak.WeakImportMessage1
-}
-var file_internal_testprotos_test_weak1_test_weak_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_test_weak1_test_weak_proto_init() }
-func file_internal_testprotos_test_weak1_test_weak_proto_init() {
-	if File_internal_testprotos_test_weak1_test_weak_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_internal_testprotos_test_weak1_test_weak_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*WeakImportMessage1); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_test_weak1_test_weak_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_internal_testprotos_test_weak1_test_weak_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_test_weak1_test_weak_proto_depIdxs,
-		MessageInfos:      file_internal_testprotos_test_weak1_test_weak_proto_msgTypes,
-	}.Build()
-	File_internal_testprotos_test_weak1_test_weak_proto = out.File
-	file_internal_testprotos_test_weak1_test_weak_proto_rawDesc = nil
-	file_internal_testprotos_test_weak1_test_weak_proto_goTypes = nil
-	file_internal_testprotos_test_weak1_test_weak_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/test/weak1/test_weak.proto b/internal/testprotos/test/weak1/test_weak.proto
deleted file mode 100644
index 113ed1b..0000000
--- a/internal/testprotos/test/weak1/test_weak.proto
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.proto.test.weak;
-
-option go_package = "google.golang.org/protobuf/internal/testprotos/test/weak1";
-
-message WeakImportMessage1 {
-	required int32 a = 1;
-}
diff --git a/internal/testprotos/test/weak2/test_weak.pb.go b/internal/testprotos/test/weak2/test_weak.pb.go
deleted file mode 100644
index 7678dc9..0000000
--- a/internal/testprotos/test/weak2/test_weak.pb.go
+++ /dev/null
@@ -1,141 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/test/weak2/test_weak.proto
-
-package weak2
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type WeakImportMessage2 struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	A *int32 `protobuf:"varint,1,req,name=a" json:"a,omitempty"`
-}
-
-func (x *WeakImportMessage2) Reset() {
-	*x = WeakImportMessage2{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test_weak2_test_weak_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *WeakImportMessage2) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*WeakImportMessage2) ProtoMessage() {}
-
-func (x *WeakImportMessage2) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test_weak2_test_weak_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use WeakImportMessage2.ProtoReflect.Descriptor instead.
-func (*WeakImportMessage2) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test_weak2_test_weak_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *WeakImportMessage2) GetA() int32 {
-	if x != nil && x.A != nil {
-		return *x.A
-	}
-	return 0
-}
-
-var File_internal_testprotos_test_weak2_test_weak_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_test_weak2_test_weak_proto_rawDesc = []byte{
-	0x0a, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x77, 0x65, 0x61, 0x6b, 0x32,
-	0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x77, 0x65, 0x61, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x12, 0x17, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x2e, 0x77, 0x65, 0x61, 0x6b, 0x22, 0x22, 0x0a, 0x12, 0x57, 0x65, 0x61,
-	0x6b, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x32, 0x12,
-	0x0c, 0x0a, 0x01, 0x61, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x01, 0x61, 0x42, 0x3b, 0x5a,
-	0x39, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f,
-	0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65,
-	0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f,
-	0x74, 0x65, 0x73, 0x74, 0x2f, 0x77, 0x65, 0x61, 0x6b, 0x32,
-}
-
-var (
-	file_internal_testprotos_test_weak2_test_weak_proto_rawDescOnce sync.Once
-	file_internal_testprotos_test_weak2_test_weak_proto_rawDescData = file_internal_testprotos_test_weak2_test_weak_proto_rawDesc
-)
-
-func file_internal_testprotos_test_weak2_test_weak_proto_rawDescGZIP() []byte {
-	file_internal_testprotos_test_weak2_test_weak_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_test_weak2_test_weak_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_test_weak2_test_weak_proto_rawDescData)
-	})
-	return file_internal_testprotos_test_weak2_test_weak_proto_rawDescData
-}
-
-var file_internal_testprotos_test_weak2_test_weak_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_internal_testprotos_test_weak2_test_weak_proto_goTypes = []interface{}{
-	(*WeakImportMessage2)(nil), // 0: goproto.proto.test.weak.WeakImportMessage2
-}
-var file_internal_testprotos_test_weak2_test_weak_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_test_weak2_test_weak_proto_init() }
-func file_internal_testprotos_test_weak2_test_weak_proto_init() {
-	if File_internal_testprotos_test_weak2_test_weak_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_internal_testprotos_test_weak2_test_weak_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*WeakImportMessage2); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_test_weak2_test_weak_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_internal_testprotos_test_weak2_test_weak_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_test_weak2_test_weak_proto_depIdxs,
-		MessageInfos:      file_internal_testprotos_test_weak2_test_weak_proto_msgTypes,
-	}.Build()
-	File_internal_testprotos_test_weak2_test_weak_proto = out.File
-	file_internal_testprotos_test_weak2_test_weak_proto_rawDesc = nil
-	file_internal_testprotos_test_weak2_test_weak_proto_goTypes = nil
-	file_internal_testprotos_test_weak2_test_weak_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/test/weak2/test_weak.proto b/internal/testprotos/test/weak2/test_weak.proto
deleted file mode 100644
index 61a03d6..0000000
--- a/internal/testprotos/test/weak2/test_weak.proto
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto2";
-
-package goproto.proto.test.weak;
-
-option go_package = "google.golang.org/protobuf/internal/testprotos/test/weak2";
-
-message WeakImportMessage2 {
-	required int32 a = 1;
-}
diff --git a/internal/testprotos/test3/test.pb.go b/internal/testprotos/test3/test.pb.go
deleted file mode 100644
index 6375d8f..0000000
--- a/internal/testprotos/test3/test.pb.go
+++ /dev/null
@@ -1,1716 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/test3/test.proto
-
-package test3
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type ForeignEnum int32
-
-const (
-	ForeignEnum_FOREIGN_ZERO ForeignEnum = 0
-	ForeignEnum_FOREIGN_FOO  ForeignEnum = 4
-	ForeignEnum_FOREIGN_BAR  ForeignEnum = 5
-	ForeignEnum_FOREIGN_BAZ  ForeignEnum = 6
-)
-
-// Enum value maps for ForeignEnum.
-var (
-	ForeignEnum_name = map[int32]string{
-		0: "FOREIGN_ZERO",
-		4: "FOREIGN_FOO",
-		5: "FOREIGN_BAR",
-		6: "FOREIGN_BAZ",
-	}
-	ForeignEnum_value = map[string]int32{
-		"FOREIGN_ZERO": 0,
-		"FOREIGN_FOO":  4,
-		"FOREIGN_BAR":  5,
-		"FOREIGN_BAZ":  6,
-	}
-)
-
-func (x ForeignEnum) Enum() *ForeignEnum {
-	p := new(ForeignEnum)
-	*p = x
-	return p
-}
-
-func (x ForeignEnum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ForeignEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_internal_testprotos_test3_test_proto_enumTypes[0].Descriptor()
-}
-
-func (ForeignEnum) Type() protoreflect.EnumType {
-	return &file_internal_testprotos_test3_test_proto_enumTypes[0]
-}
-
-func (x ForeignEnum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ForeignEnum.Descriptor instead.
-func (ForeignEnum) EnumDescriptor() ([]byte, []int) {
-	return file_internal_testprotos_test3_test_proto_rawDescGZIP(), []int{0}
-}
-
-type TestAllTypes_NestedEnum int32
-
-const (
-	TestAllTypes_FOO TestAllTypes_NestedEnum = 0
-	TestAllTypes_BAR TestAllTypes_NestedEnum = 1
-	TestAllTypes_BAZ TestAllTypes_NestedEnum = 2
-	TestAllTypes_NEG TestAllTypes_NestedEnum = -1 // Intentionally negative.
-)
-
-// Enum value maps for TestAllTypes_NestedEnum.
-var (
-	TestAllTypes_NestedEnum_name = map[int32]string{
-		0:  "FOO",
-		1:  "BAR",
-		2:  "BAZ",
-		-1: "NEG",
-	}
-	TestAllTypes_NestedEnum_value = map[string]int32{
-		"FOO": 0,
-		"BAR": 1,
-		"BAZ": 2,
-		"NEG": -1,
-	}
-)
-
-func (x TestAllTypes_NestedEnum) Enum() *TestAllTypes_NestedEnum {
-	p := new(TestAllTypes_NestedEnum)
-	*p = x
-	return p
-}
-
-func (x TestAllTypes_NestedEnum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (TestAllTypes_NestedEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_internal_testprotos_test3_test_proto_enumTypes[1].Descriptor()
-}
-
-func (TestAllTypes_NestedEnum) Type() protoreflect.EnumType {
-	return &file_internal_testprotos_test3_test_proto_enumTypes[1]
-}
-
-func (x TestAllTypes_NestedEnum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use TestAllTypes_NestedEnum.Descriptor instead.
-func (TestAllTypes_NestedEnum) EnumDescriptor() ([]byte, []int) {
-	return file_internal_testprotos_test3_test_proto_rawDescGZIP(), []int{0, 0}
-}
-
-type TestAllTypes struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	SingularInt32          int32                                  `protobuf:"varint,81,opt,name=singular_int32,json=singularInt32,proto3" json:"singular_int32,omitempty"`
-	SingularInt64          int64                                  `protobuf:"varint,82,opt,name=singular_int64,json=singularInt64,proto3" json:"singular_int64,omitempty"`
-	SingularUint32         uint32                                 `protobuf:"varint,83,opt,name=singular_uint32,json=singularUint32,proto3" json:"singular_uint32,omitempty"`
-	SingularUint64         uint64                                 `protobuf:"varint,84,opt,name=singular_uint64,json=singularUint64,proto3" json:"singular_uint64,omitempty"`
-	SingularSint32         int32                                  `protobuf:"zigzag32,85,opt,name=singular_sint32,json=singularSint32,proto3" json:"singular_sint32,omitempty"`
-	SingularSint64         int64                                  `protobuf:"zigzag64,86,opt,name=singular_sint64,json=singularSint64,proto3" json:"singular_sint64,omitempty"`
-	SingularFixed32        uint32                                 `protobuf:"fixed32,87,opt,name=singular_fixed32,json=singularFixed32,proto3" json:"singular_fixed32,omitempty"`
-	SingularFixed64        uint64                                 `protobuf:"fixed64,88,opt,name=singular_fixed64,json=singularFixed64,proto3" json:"singular_fixed64,omitempty"`
-	SingularSfixed32       int32                                  `protobuf:"fixed32,89,opt,name=singular_sfixed32,json=singularSfixed32,proto3" json:"singular_sfixed32,omitempty"`
-	SingularSfixed64       int64                                  `protobuf:"fixed64,90,opt,name=singular_sfixed64,json=singularSfixed64,proto3" json:"singular_sfixed64,omitempty"`
-	SingularFloat          float32                                `protobuf:"fixed32,91,opt,name=singular_float,json=singularFloat,proto3" json:"singular_float,omitempty"`
-	SingularDouble         float64                                `protobuf:"fixed64,92,opt,name=singular_double,json=singularDouble,proto3" json:"singular_double,omitempty"`
-	SingularBool           bool                                   `protobuf:"varint,93,opt,name=singular_bool,json=singularBool,proto3" json:"singular_bool,omitempty"`
-	SingularString         string                                 `protobuf:"bytes,94,opt,name=singular_string,json=singularString,proto3" json:"singular_string,omitempty"`
-	SingularBytes          []byte                                 `protobuf:"bytes,95,opt,name=singular_bytes,json=singularBytes,proto3" json:"singular_bytes,omitempty"`
-	SingularNestedMessage  *TestAllTypes_NestedMessage            `protobuf:"bytes,98,opt,name=singular_nested_message,json=singularNestedMessage,proto3" json:"singular_nested_message,omitempty"`
-	SingularForeignMessage *ForeignMessage                        `protobuf:"bytes,99,opt,name=singular_foreign_message,json=singularForeignMessage,proto3" json:"singular_foreign_message,omitempty"`
-	SingularImportMessage  *ImportMessage                         `protobuf:"bytes,100,opt,name=singular_import_message,json=singularImportMessage,proto3" json:"singular_import_message,omitempty"`
-	SingularNestedEnum     TestAllTypes_NestedEnum                `protobuf:"varint,101,opt,name=singular_nested_enum,json=singularNestedEnum,proto3,enum=goproto.proto.test3.TestAllTypes_NestedEnum" json:"singular_nested_enum,omitempty"`
-	SingularForeignEnum    ForeignEnum                            `protobuf:"varint,102,opt,name=singular_foreign_enum,json=singularForeignEnum,proto3,enum=goproto.proto.test3.ForeignEnum" json:"singular_foreign_enum,omitempty"`
-	SingularImportEnum     ImportEnum                             `protobuf:"varint,103,opt,name=singular_import_enum,json=singularImportEnum,proto3,enum=goproto.proto.test3.ImportEnum" json:"singular_import_enum,omitempty"`
-	OptionalInt32          *int32                                 `protobuf:"varint,1,opt,name=optional_int32,json=optionalInt32,proto3,oneof" json:"optional_int32,omitempty"`
-	OptionalInt64          *int64                                 `protobuf:"varint,2,opt,name=optional_int64,json=optionalInt64,proto3,oneof" json:"optional_int64,omitempty"`
-	OptionalUint32         *uint32                                `protobuf:"varint,3,opt,name=optional_uint32,json=optionalUint32,proto3,oneof" json:"optional_uint32,omitempty"`
-	OptionalUint64         *uint64                                `protobuf:"varint,4,opt,name=optional_uint64,json=optionalUint64,proto3,oneof" json:"optional_uint64,omitempty"`
-	OptionalSint32         *int32                                 `protobuf:"zigzag32,5,opt,name=optional_sint32,json=optionalSint32,proto3,oneof" json:"optional_sint32,omitempty"`
-	OptionalSint64         *int64                                 `protobuf:"zigzag64,6,opt,name=optional_sint64,json=optionalSint64,proto3,oneof" json:"optional_sint64,omitempty"`
-	OptionalFixed32        *uint32                                `protobuf:"fixed32,7,opt,name=optional_fixed32,json=optionalFixed32,proto3,oneof" json:"optional_fixed32,omitempty"`
-	OptionalFixed64        *uint64                                `protobuf:"fixed64,8,opt,name=optional_fixed64,json=optionalFixed64,proto3,oneof" json:"optional_fixed64,omitempty"`
-	OptionalSfixed32       *int32                                 `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32,proto3,oneof" json:"optional_sfixed32,omitempty"`
-	OptionalSfixed64       *int64                                 `protobuf:"fixed64,10,opt,name=optional_sfixed64,json=optionalSfixed64,proto3,oneof" json:"optional_sfixed64,omitempty"`
-	OptionalFloat          *float32                               `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat,proto3,oneof" json:"optional_float,omitempty"`
-	OptionalDouble         *float64                               `protobuf:"fixed64,12,opt,name=optional_double,json=optionalDouble,proto3,oneof" json:"optional_double,omitempty"`
-	OptionalBool           *bool                                  `protobuf:"varint,13,opt,name=optional_bool,json=optionalBool,proto3,oneof" json:"optional_bool,omitempty"`
-	OptionalString         *string                                `protobuf:"bytes,14,opt,name=optional_string,json=optionalString,proto3,oneof" json:"optional_string,omitempty"`
-	OptionalBytes          []byte                                 `protobuf:"bytes,15,opt,name=optional_bytes,json=optionalBytes,proto3,oneof" json:"optional_bytes,omitempty"`
-	OptionalNestedMessage  *TestAllTypes_NestedMessage            `protobuf:"bytes,18,opt,name=optional_nested_message,json=optionalNestedMessage,proto3,oneof" json:"optional_nested_message,omitempty"`
-	OptionalForeignMessage *ForeignMessage                        `protobuf:"bytes,19,opt,name=optional_foreign_message,json=optionalForeignMessage,proto3,oneof" json:"optional_foreign_message,omitempty"`
-	OptionalImportMessage  *ImportMessage                         `protobuf:"bytes,20,opt,name=optional_import_message,json=optionalImportMessage,proto3,oneof" json:"optional_import_message,omitempty"`
-	OptionalNestedEnum     *TestAllTypes_NestedEnum               `protobuf:"varint,21,opt,name=optional_nested_enum,json=optionalNestedEnum,proto3,enum=goproto.proto.test3.TestAllTypes_NestedEnum,oneof" json:"optional_nested_enum,omitempty"`
-	OptionalForeignEnum    *ForeignEnum                           `protobuf:"varint,22,opt,name=optional_foreign_enum,json=optionalForeignEnum,proto3,enum=goproto.proto.test3.ForeignEnum,oneof" json:"optional_foreign_enum,omitempty"`
-	OptionalImportEnum     *ImportEnum                            `protobuf:"varint,23,opt,name=optional_import_enum,json=optionalImportEnum,proto3,enum=goproto.proto.test3.ImportEnum,oneof" json:"optional_import_enum,omitempty"`
-	RepeatedInt32          []int32                                `protobuf:"varint,31,rep,packed,name=repeated_int32,json=repeatedInt32,proto3" json:"repeated_int32,omitempty"`
-	RepeatedInt64          []int64                                `protobuf:"varint,32,rep,packed,name=repeated_int64,json=repeatedInt64,proto3" json:"repeated_int64,omitempty"`
-	RepeatedUint32         []uint32                               `protobuf:"varint,33,rep,packed,name=repeated_uint32,json=repeatedUint32,proto3" json:"repeated_uint32,omitempty"`
-	RepeatedUint64         []uint64                               `protobuf:"varint,34,rep,packed,name=repeated_uint64,json=repeatedUint64,proto3" json:"repeated_uint64,omitempty"`
-	RepeatedSint32         []int32                                `protobuf:"zigzag32,35,rep,packed,name=repeated_sint32,json=repeatedSint32,proto3" json:"repeated_sint32,omitempty"`
-	RepeatedSint64         []int64                                `protobuf:"zigzag64,36,rep,packed,name=repeated_sint64,json=repeatedSint64,proto3" json:"repeated_sint64,omitempty"`
-	RepeatedFixed32        []uint32                               `protobuf:"fixed32,37,rep,packed,name=repeated_fixed32,json=repeatedFixed32,proto3" json:"repeated_fixed32,omitempty"`
-	RepeatedFixed64        []uint64                               `protobuf:"fixed64,38,rep,packed,name=repeated_fixed64,json=repeatedFixed64,proto3" json:"repeated_fixed64,omitempty"`
-	RepeatedSfixed32       []int32                                `protobuf:"fixed32,39,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32,proto3" json:"repeated_sfixed32,omitempty"`
-	RepeatedSfixed64       []int64                                `protobuf:"fixed64,40,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64,proto3" json:"repeated_sfixed64,omitempty"`
-	RepeatedFloat          []float32                              `protobuf:"fixed32,41,rep,packed,name=repeated_float,json=repeatedFloat,proto3" json:"repeated_float,omitempty"`
-	RepeatedDouble         []float64                              `protobuf:"fixed64,42,rep,packed,name=repeated_double,json=repeatedDouble,proto3" json:"repeated_double,omitempty"`
-	RepeatedBool           []bool                                 `protobuf:"varint,43,rep,packed,name=repeated_bool,json=repeatedBool,proto3" json:"repeated_bool,omitempty"`
-	RepeatedString         []string                               `protobuf:"bytes,44,rep,name=repeated_string,json=repeatedString,proto3" json:"repeated_string,omitempty"`
-	RepeatedBytes          [][]byte                               `protobuf:"bytes,45,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"`
-	RepeatedNestedMessage  []*TestAllTypes_NestedMessage          `protobuf:"bytes,48,rep,name=repeated_nested_message,json=repeatedNestedMessage,proto3" json:"repeated_nested_message,omitempty"`
-	RepeatedForeignMessage []*ForeignMessage                      `protobuf:"bytes,49,rep,name=repeated_foreign_message,json=repeatedForeignMessage,proto3" json:"repeated_foreign_message,omitempty"`
-	RepeatedImportmessage  []*ImportMessage                       `protobuf:"bytes,50,rep,name=repeated_importmessage,json=repeatedImportmessage,proto3" json:"repeated_importmessage,omitempty"`
-	RepeatedNestedEnum     []TestAllTypes_NestedEnum              `protobuf:"varint,51,rep,packed,name=repeated_nested_enum,json=repeatedNestedEnum,proto3,enum=goproto.proto.test3.TestAllTypes_NestedEnum" json:"repeated_nested_enum,omitempty"`
-	RepeatedForeignEnum    []ForeignEnum                          `protobuf:"varint,52,rep,packed,name=repeated_foreign_enum,json=repeatedForeignEnum,proto3,enum=goproto.proto.test3.ForeignEnum" json:"repeated_foreign_enum,omitempty"`
-	RepeatedImportenum     []ImportEnum                           `protobuf:"varint,53,rep,packed,name=repeated_importenum,json=repeatedImportenum,proto3,enum=goproto.proto.test3.ImportEnum" json:"repeated_importenum,omitempty"`
-	MapInt32Int32          map[int32]int32                        `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32,proto3" json:"map_int32_int32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapInt64Int64          map[int64]int64                        `protobuf:"bytes,57,rep,name=map_int64_int64,json=mapInt64Int64,proto3" json:"map_int64_int64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapUint32Uint32        map[uint32]uint32                      `protobuf:"bytes,58,rep,name=map_uint32_uint32,json=mapUint32Uint32,proto3" json:"map_uint32_uint32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapUint64Uint64        map[uint64]uint64                      `protobuf:"bytes,59,rep,name=map_uint64_uint64,json=mapUint64Uint64,proto3" json:"map_uint64_uint64,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapSint32Sint32        map[int32]int32                        `protobuf:"bytes,60,rep,name=map_sint32_sint32,json=mapSint32Sint32,proto3" json:"map_sint32_sint32,omitempty" protobuf_key:"zigzag32,1,opt,name=key,proto3" protobuf_val:"zigzag32,2,opt,name=value,proto3"`
-	MapSint64Sint64        map[int64]int64                        `protobuf:"bytes,61,rep,name=map_sint64_sint64,json=mapSint64Sint64,proto3" json:"map_sint64_sint64,omitempty" protobuf_key:"zigzag64,1,opt,name=key,proto3" protobuf_val:"zigzag64,2,opt,name=value,proto3"`
-	MapFixed32Fixed32      map[uint32]uint32                      `protobuf:"bytes,62,rep,name=map_fixed32_fixed32,json=mapFixed32Fixed32,proto3" json:"map_fixed32_fixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapFixed64Fixed64      map[uint64]uint64                      `protobuf:"bytes,63,rep,name=map_fixed64_fixed64,json=mapFixed64Fixed64,proto3" json:"map_fixed64_fixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapSfixed32Sfixed32    map[int32]int32                        `protobuf:"bytes,64,rep,name=map_sfixed32_sfixed32,json=mapSfixed32Sfixed32,proto3" json:"map_sfixed32_sfixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapSfixed64Sfixed64    map[int64]int64                        `protobuf:"bytes,65,rep,name=map_sfixed64_sfixed64,json=mapSfixed64Sfixed64,proto3" json:"map_sfixed64_sfixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapInt32Float          map[int32]float32                      `protobuf:"bytes,66,rep,name=map_int32_float,json=mapInt32Float,proto3" json:"map_int32_float,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
-	MapInt32Double         map[int32]float64                      `protobuf:"bytes,67,rep,name=map_int32_double,json=mapInt32Double,proto3" json:"map_int32_double,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"`
-	MapBoolBool            map[bool]bool                          `protobuf:"bytes,68,rep,name=map_bool_bool,json=mapBoolBool,proto3" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	MapStringString        map[string]string                      `protobuf:"bytes,69,rep,name=map_string_string,json=mapStringString,proto3" json:"map_string_string,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapStringBytes         map[string][]byte                      `protobuf:"bytes,70,rep,name=map_string_bytes,json=mapStringBytes,proto3" json:"map_string_bytes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapStringNestedMessage map[string]*TestAllTypes_NestedMessage `protobuf:"bytes,71,rep,name=map_string_nested_message,json=mapStringNestedMessage,proto3" json:"map_string_nested_message,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	MapStringNestedEnum    map[string]TestAllTypes_NestedEnum     `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum,proto3" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=goproto.proto.test3.TestAllTypes_NestedEnum"`
-	// Types that are assignable to OneofField:
-	//	*TestAllTypes_OneofUint32
-	//	*TestAllTypes_OneofNestedMessage
-	//	*TestAllTypes_OneofString
-	//	*TestAllTypes_OneofBytes
-	//	*TestAllTypes_OneofBool
-	//	*TestAllTypes_OneofUint64
-	//	*TestAllTypes_OneofFloat
-	//	*TestAllTypes_OneofDouble
-	//	*TestAllTypes_OneofEnum
-	OneofField isTestAllTypes_OneofField `protobuf_oneof:"oneof_field"`
-}
-
-func (x *TestAllTypes) Reset() {
-	*x = TestAllTypes{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test3_test_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestAllTypes) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestAllTypes) ProtoMessage() {}
-
-func (x *TestAllTypes) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test3_test_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestAllTypes.ProtoReflect.Descriptor instead.
-func (*TestAllTypes) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test3_test_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *TestAllTypes) GetSingularInt32() int32 {
-	if x != nil {
-		return x.SingularInt32
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetSingularInt64() int64 {
-	if x != nil {
-		return x.SingularInt64
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetSingularUint32() uint32 {
-	if x != nil {
-		return x.SingularUint32
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetSingularUint64() uint64 {
-	if x != nil {
-		return x.SingularUint64
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetSingularSint32() int32 {
-	if x != nil {
-		return x.SingularSint32
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetSingularSint64() int64 {
-	if x != nil {
-		return x.SingularSint64
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetSingularFixed32() uint32 {
-	if x != nil {
-		return x.SingularFixed32
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetSingularFixed64() uint64 {
-	if x != nil {
-		return x.SingularFixed64
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetSingularSfixed32() int32 {
-	if x != nil {
-		return x.SingularSfixed32
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetSingularSfixed64() int64 {
-	if x != nil {
-		return x.SingularSfixed64
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetSingularFloat() float32 {
-	if x != nil {
-		return x.SingularFloat
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetSingularDouble() float64 {
-	if x != nil {
-		return x.SingularDouble
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetSingularBool() bool {
-	if x != nil {
-		return x.SingularBool
-	}
-	return false
-}
-
-func (x *TestAllTypes) GetSingularString() string {
-	if x != nil {
-		return x.SingularString
-	}
-	return ""
-}
-
-func (x *TestAllTypes) GetSingularBytes() []byte {
-	if x != nil {
-		return x.SingularBytes
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetSingularNestedMessage() *TestAllTypes_NestedMessage {
-	if x != nil {
-		return x.SingularNestedMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetSingularForeignMessage() *ForeignMessage {
-	if x != nil {
-		return x.SingularForeignMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetSingularImportMessage() *ImportMessage {
-	if x != nil {
-		return x.SingularImportMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetSingularNestedEnum() TestAllTypes_NestedEnum {
-	if x != nil {
-		return x.SingularNestedEnum
-	}
-	return TestAllTypes_FOO
-}
-
-func (x *TestAllTypes) GetSingularForeignEnum() ForeignEnum {
-	if x != nil {
-		return x.SingularForeignEnum
-	}
-	return ForeignEnum_FOREIGN_ZERO
-}
-
-func (x *TestAllTypes) GetSingularImportEnum() ImportEnum {
-	if x != nil {
-		return x.SingularImportEnum
-	}
-	return ImportEnum_IMPORT_ZERO
-}
-
-func (x *TestAllTypes) GetOptionalInt32() int32 {
-	if x != nil && x.OptionalInt32 != nil {
-		return *x.OptionalInt32
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalInt64() int64 {
-	if x != nil && x.OptionalInt64 != nil {
-		return *x.OptionalInt64
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalUint32() uint32 {
-	if x != nil && x.OptionalUint32 != nil {
-		return *x.OptionalUint32
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalUint64() uint64 {
-	if x != nil && x.OptionalUint64 != nil {
-		return *x.OptionalUint64
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalSint32() int32 {
-	if x != nil && x.OptionalSint32 != nil {
-		return *x.OptionalSint32
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalSint64() int64 {
-	if x != nil && x.OptionalSint64 != nil {
-		return *x.OptionalSint64
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalFixed32() uint32 {
-	if x != nil && x.OptionalFixed32 != nil {
-		return *x.OptionalFixed32
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalFixed64() uint64 {
-	if x != nil && x.OptionalFixed64 != nil {
-		return *x.OptionalFixed64
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalSfixed32() int32 {
-	if x != nil && x.OptionalSfixed32 != nil {
-		return *x.OptionalSfixed32
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalSfixed64() int64 {
-	if x != nil && x.OptionalSfixed64 != nil {
-		return *x.OptionalSfixed64
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalFloat() float32 {
-	if x != nil && x.OptionalFloat != nil {
-		return *x.OptionalFloat
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalDouble() float64 {
-	if x != nil && x.OptionalDouble != nil {
-		return *x.OptionalDouble
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOptionalBool() bool {
-	if x != nil && x.OptionalBool != nil {
-		return *x.OptionalBool
-	}
-	return false
-}
-
-func (x *TestAllTypes) GetOptionalString() string {
-	if x != nil && x.OptionalString != nil {
-		return *x.OptionalString
-	}
-	return ""
-}
-
-func (x *TestAllTypes) GetOptionalBytes() []byte {
-	if x != nil {
-		return x.OptionalBytes
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetOptionalNestedMessage() *TestAllTypes_NestedMessage {
-	if x != nil {
-		return x.OptionalNestedMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetOptionalForeignMessage() *ForeignMessage {
-	if x != nil {
-		return x.OptionalForeignMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetOptionalImportMessage() *ImportMessage {
-	if x != nil {
-		return x.OptionalImportMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetOptionalNestedEnum() TestAllTypes_NestedEnum {
-	if x != nil && x.OptionalNestedEnum != nil {
-		return *x.OptionalNestedEnum
-	}
-	return TestAllTypes_FOO
-}
-
-func (x *TestAllTypes) GetOptionalForeignEnum() ForeignEnum {
-	if x != nil && x.OptionalForeignEnum != nil {
-		return *x.OptionalForeignEnum
-	}
-	return ForeignEnum_FOREIGN_ZERO
-}
-
-func (x *TestAllTypes) GetOptionalImportEnum() ImportEnum {
-	if x != nil && x.OptionalImportEnum != nil {
-		return *x.OptionalImportEnum
-	}
-	return ImportEnum_IMPORT_ZERO
-}
-
-func (x *TestAllTypes) GetRepeatedInt32() []int32 {
-	if x != nil {
-		return x.RepeatedInt32
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedInt64() []int64 {
-	if x != nil {
-		return x.RepeatedInt64
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedUint32() []uint32 {
-	if x != nil {
-		return x.RepeatedUint32
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedUint64() []uint64 {
-	if x != nil {
-		return x.RepeatedUint64
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedSint32() []int32 {
-	if x != nil {
-		return x.RepeatedSint32
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedSint64() []int64 {
-	if x != nil {
-		return x.RepeatedSint64
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedFixed32() []uint32 {
-	if x != nil {
-		return x.RepeatedFixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedFixed64() []uint64 {
-	if x != nil {
-		return x.RepeatedFixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedSfixed32() []int32 {
-	if x != nil {
-		return x.RepeatedSfixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedSfixed64() []int64 {
-	if x != nil {
-		return x.RepeatedSfixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedFloat() []float32 {
-	if x != nil {
-		return x.RepeatedFloat
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedDouble() []float64 {
-	if x != nil {
-		return x.RepeatedDouble
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedBool() []bool {
-	if x != nil {
-		return x.RepeatedBool
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedString() []string {
-	if x != nil {
-		return x.RepeatedString
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedBytes() [][]byte {
-	if x != nil {
-		return x.RepeatedBytes
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedNestedMessage() []*TestAllTypes_NestedMessage {
-	if x != nil {
-		return x.RepeatedNestedMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedForeignMessage() []*ForeignMessage {
-	if x != nil {
-		return x.RepeatedForeignMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedImportmessage() []*ImportMessage {
-	if x != nil {
-		return x.RepeatedImportmessage
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedNestedEnum() []TestAllTypes_NestedEnum {
-	if x != nil {
-		return x.RepeatedNestedEnum
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedForeignEnum() []ForeignEnum {
-	if x != nil {
-		return x.RepeatedForeignEnum
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetRepeatedImportenum() []ImportEnum {
-	if x != nil {
-		return x.RepeatedImportenum
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapInt32Int32() map[int32]int32 {
-	if x != nil {
-		return x.MapInt32Int32
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapInt64Int64() map[int64]int64 {
-	if x != nil {
-		return x.MapInt64Int64
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapUint32Uint32() map[uint32]uint32 {
-	if x != nil {
-		return x.MapUint32Uint32
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapUint64Uint64() map[uint64]uint64 {
-	if x != nil {
-		return x.MapUint64Uint64
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapSint32Sint32() map[int32]int32 {
-	if x != nil {
-		return x.MapSint32Sint32
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapSint64Sint64() map[int64]int64 {
-	if x != nil {
-		return x.MapSint64Sint64
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapFixed32Fixed32() map[uint32]uint32 {
-	if x != nil {
-		return x.MapFixed32Fixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapFixed64Fixed64() map[uint64]uint64 {
-	if x != nil {
-		return x.MapFixed64Fixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapSfixed32Sfixed32() map[int32]int32 {
-	if x != nil {
-		return x.MapSfixed32Sfixed32
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapSfixed64Sfixed64() map[int64]int64 {
-	if x != nil {
-		return x.MapSfixed64Sfixed64
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapInt32Float() map[int32]float32 {
-	if x != nil {
-		return x.MapInt32Float
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapInt32Double() map[int32]float64 {
-	if x != nil {
-		return x.MapInt32Double
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapBoolBool() map[bool]bool {
-	if x != nil {
-		return x.MapBoolBool
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapStringString() map[string]string {
-	if x != nil {
-		return x.MapStringString
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapStringBytes() map[string][]byte {
-	if x != nil {
-		return x.MapStringBytes
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapStringNestedMessage() map[string]*TestAllTypes_NestedMessage {
-	if x != nil {
-		return x.MapStringNestedMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetMapStringNestedEnum() map[string]TestAllTypes_NestedEnum {
-	if x != nil {
-		return x.MapStringNestedEnum
-	}
-	return nil
-}
-
-func (m *TestAllTypes) GetOneofField() isTestAllTypes_OneofField {
-	if m != nil {
-		return m.OneofField
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetOneofUint32() uint32 {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofUint32); ok {
-		return x.OneofUint32
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOneofNestedMessage() *TestAllTypes_NestedMessage {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofNestedMessage); ok {
-		return x.OneofNestedMessage
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetOneofString() string {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofString); ok {
-		return x.OneofString
-	}
-	return ""
-}
-
-func (x *TestAllTypes) GetOneofBytes() []byte {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofBytes); ok {
-		return x.OneofBytes
-	}
-	return nil
-}
-
-func (x *TestAllTypes) GetOneofBool() bool {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofBool); ok {
-		return x.OneofBool
-	}
-	return false
-}
-
-func (x *TestAllTypes) GetOneofUint64() uint64 {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofUint64); ok {
-		return x.OneofUint64
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOneofFloat() float32 {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofFloat); ok {
-		return x.OneofFloat
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOneofDouble() float64 {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofDouble); ok {
-		return x.OneofDouble
-	}
-	return 0
-}
-
-func (x *TestAllTypes) GetOneofEnum() TestAllTypes_NestedEnum {
-	if x, ok := x.GetOneofField().(*TestAllTypes_OneofEnum); ok {
-		return x.OneofEnum
-	}
-	return TestAllTypes_FOO
-}
-
-type isTestAllTypes_OneofField interface {
-	isTestAllTypes_OneofField()
-}
-
-type TestAllTypes_OneofUint32 struct {
-	OneofUint32 uint32 `protobuf:"varint,111,opt,name=oneof_uint32,json=oneofUint32,proto3,oneof"`
-}
-
-type TestAllTypes_OneofNestedMessage struct {
-	OneofNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,112,opt,name=oneof_nested_message,json=oneofNestedMessage,proto3,oneof"`
-}
-
-type TestAllTypes_OneofString struct {
-	OneofString string `protobuf:"bytes,113,opt,name=oneof_string,json=oneofString,proto3,oneof"`
-}
-
-type TestAllTypes_OneofBytes struct {
-	OneofBytes []byte `protobuf:"bytes,114,opt,name=oneof_bytes,json=oneofBytes,proto3,oneof"`
-}
-
-type TestAllTypes_OneofBool struct {
-	OneofBool bool `protobuf:"varint,115,opt,name=oneof_bool,json=oneofBool,proto3,oneof"`
-}
-
-type TestAllTypes_OneofUint64 struct {
-	OneofUint64 uint64 `protobuf:"varint,116,opt,name=oneof_uint64,json=oneofUint64,proto3,oneof"`
-}
-
-type TestAllTypes_OneofFloat struct {
-	OneofFloat float32 `protobuf:"fixed32,117,opt,name=oneof_float,json=oneofFloat,proto3,oneof"`
-}
-
-type TestAllTypes_OneofDouble struct {
-	OneofDouble float64 `protobuf:"fixed64,118,opt,name=oneof_double,json=oneofDouble,proto3,oneof"`
-}
-
-type TestAllTypes_OneofEnum struct {
-	OneofEnum TestAllTypes_NestedEnum `protobuf:"varint,119,opt,name=oneof_enum,json=oneofEnum,proto3,enum=goproto.proto.test3.TestAllTypes_NestedEnum,oneof"`
-}
-
-func (*TestAllTypes_OneofUint32) isTestAllTypes_OneofField() {}
-
-func (*TestAllTypes_OneofNestedMessage) isTestAllTypes_OneofField() {}
-
-func (*TestAllTypes_OneofString) isTestAllTypes_OneofField() {}
-
-func (*TestAllTypes_OneofBytes) isTestAllTypes_OneofField() {}
-
-func (*TestAllTypes_OneofBool) isTestAllTypes_OneofField() {}
-
-func (*TestAllTypes_OneofUint64) isTestAllTypes_OneofField() {}
-
-func (*TestAllTypes_OneofFloat) isTestAllTypes_OneofField() {}
-
-func (*TestAllTypes_OneofDouble) isTestAllTypes_OneofField() {}
-
-func (*TestAllTypes_OneofEnum) isTestAllTypes_OneofField() {}
-
-type ForeignMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	C int32 `protobuf:"varint,1,opt,name=c,proto3" json:"c,omitempty"`
-	D int32 `protobuf:"varint,2,opt,name=d,proto3" json:"d,omitempty"`
-}
-
-func (x *ForeignMessage) Reset() {
-	*x = ForeignMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test3_test_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ForeignMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ForeignMessage) ProtoMessage() {}
-
-func (x *ForeignMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test3_test_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ForeignMessage.ProtoReflect.Descriptor instead.
-func (*ForeignMessage) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test3_test_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *ForeignMessage) GetC() int32 {
-	if x != nil {
-		return x.C
-	}
-	return 0
-}
-
-func (x *ForeignMessage) GetD() int32 {
-	if x != nil {
-		return x.D
-	}
-	return 0
-}
-
-type TestAllTypes_NestedMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	A           int32         `protobuf:"varint,1,opt,name=a,proto3" json:"a,omitempty"`
-	Corecursive *TestAllTypes `protobuf:"bytes,2,opt,name=corecursive,proto3" json:"corecursive,omitempty"`
-}
-
-func (x *TestAllTypes_NestedMessage) Reset() {
-	*x = TestAllTypes_NestedMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test3_test_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TestAllTypes_NestedMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TestAllTypes_NestedMessage) ProtoMessage() {}
-
-func (x *TestAllTypes_NestedMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test3_test_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TestAllTypes_NestedMessage.ProtoReflect.Descriptor instead.
-func (*TestAllTypes_NestedMessage) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test3_test_proto_rawDescGZIP(), []int{0, 0}
-}
-
-func (x *TestAllTypes_NestedMessage) GetA() int32 {
-	if x != nil {
-		return x.A
-	}
-	return 0
-}
-
-func (x *TestAllTypes_NestedMessage) GetCorecursive() *TestAllTypes {
-	if x != nil {
-		return x.Corecursive
-	}
-	return nil
-}
-
-var File_internal_testprotos_test3_test_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_test3_test_proto_rawDesc = []byte{
-	0x0a, 0x24, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2f, 0x74, 0x65, 0x73, 0x74,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x1a, 0x2b, 0x69, 0x6e, 0x74,
-	0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
-	0x2f, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x6d, 0x70, 0x6f,
-	0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x90, 0x3c, 0x0a, 0x0c, 0x54, 0x65, 0x73,
-	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x69, 0x6e,
-	0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x51, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x49, 0x6e, 0x74, 0x33, 0x32,
-	0x12, 0x25, 0x0a, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x18, 0x52, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
-	0x61, 0x72, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75,
-	0x6c, 0x61, 0x72, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x53, 0x20, 0x01, 0x28, 0x0d,
-	0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x12, 0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x75, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x18, 0x54, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75,
-	0x6c, 0x61, 0x72, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e,
-	0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x55, 0x20, 0x01,
-	0x28, 0x11, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x56, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x73, 0x69, 0x6e,
-	0x67, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x10, 0x73,
-	0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18,
-	0x57, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46,
-	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c,
-	0x61, 0x72, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x58, 0x20, 0x01, 0x28, 0x06,
-	0x52, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36,
-	0x34, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x59, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x10, 0x73, 0x69,
-	0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x2b,
-	0x0a, 0x11, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x36, 0x34, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x10, 0x52, 0x10, 0x73, 0x69, 0x6e, 0x67, 0x75,
-	0x6c, 0x61, 0x72, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x0a, 0x0e, 0x73,
-	0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x5b, 0x20,
-	0x01, 0x28, 0x02, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46, 0x6c, 0x6f,
-	0x61, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x64,
-	0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x5c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x73, 0x69, 0x6e,
-	0x67, 0x75, 0x6c, 0x61, 0x72, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x73,
-	0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x5d, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x0c, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x42, 0x6f, 0x6f, 0x6c,
-	0x12, 0x27, 0x0a, 0x0f, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x73, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x18, 0x5e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x69, 0x6e, 0x67, 0x75,
-	0x6c, 0x61, 0x72, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x69, 0x6e,
-	0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x5f, 0x20, 0x01, 0x28,
-	0x0c, 0x52, 0x0d, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x42, 0x79, 0x74, 0x65, 0x73,
-	0x12, 0x67, 0x0a, 0x17, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x6e, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x62, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
-	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x52, 0x15, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x4e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x5d, 0x0a, 0x18, 0x73, 0x69, 0x6e,
-	0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x33, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x52, 0x16, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67,
-	0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x5a, 0x0a, 0x17, 0x73, 0x69, 0x6e, 0x67,
-	0x75, 0x6c, 0x61, 0x72, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e,
-	0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x73,
-	0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x12, 0x5e, 0x0a, 0x14, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72,
-	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x65, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
-	0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d,
-	0x52, 0x12, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x45, 0x6e, 0x75, 0x6d, 0x12, 0x54, 0x0a, 0x15, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72,
-	0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x66, 0x20,
-	0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67,
-	0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x13, 0x73, 0x69, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x46,
-	0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x51, 0x0a, 0x14, 0x73, 0x69,
-	0x6e, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e,
-	0x75, 0x6d, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x49,
-	0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x73, 0x69, 0x6e, 0x67, 0x75,
-	0x6c, 0x61, 0x72, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x2a, 0x0a,
-	0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x03, 0x48, 0x02, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74,
-	0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x03,
-	0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
-	0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x0e,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x88, 0x01,
-	0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x48, 0x05, 0x52, 0x0e, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x88, 0x01, 0x01, 0x12,
-	0x2c, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x18, 0x06, 0x20, 0x01, 0x28, 0x12, 0x48, 0x06, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a,
-	0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
-	0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x07, 0x48, 0x07, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x88, 0x01, 0x01, 0x12, 0x2e, 0x0a,
-	0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
-	0x34, 0x18, 0x08, 0x20, 0x01, 0x28, 0x06, 0x48, 0x08, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x30, 0x0a,
-	0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0f, 0x48, 0x09, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x88, 0x01, 0x01, 0x12,
-	0x30, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x10, 0x48, 0x0a, 0x52, 0x10, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x88, 0x01,
-	0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6c,
-	0x6f, 0x61, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x48, 0x0b, 0x52, 0x0d, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a,
-	0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-	0x18, 0x0c, 0x20, 0x01, 0x28, 0x01, 0x48, 0x0c, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x0d, 0x20, 0x01,
-	0x28, 0x08, 0x48, 0x0d, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x6f,
-	0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x0e,
-	0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
-	0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x0f, 0x52, 0x0d, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12,
-	0x6c, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
-	0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x48, 0x10, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x62, 0x0a,
-	0x18, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67,
-	0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x23, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x48, 0x11, 0x52, 0x16, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01,
-	0x01, 0x12, 0x5f, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6d,
-	0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x14, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x12, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88,
-	0x01, 0x01, 0x12, 0x63, 0x0a, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0e,
-	0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79,
-	0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x13,
-	0x52, 0x12, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x45, 0x6e, 0x75, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x59, 0x0a, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d,
-	0x18, 0x16, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x46, 0x6f, 0x72,
-	0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x14, 0x52, 0x13, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x88,
-	0x01, 0x01, 0x12, 0x56, 0x0a, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69,
-	0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e,
-	0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75,
-	0x6d, 0x48, 0x15, 0x52, 0x12, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6d, 0x70,
-	0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x1f, 0x20, 0x03,
-	0x28, 0x05, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x33,
-	0x32, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x18, 0x20, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x21, 0x20, 0x03, 0x28,
-	0x0d, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x75, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x18, 0x22, 0x20, 0x03, 0x28, 0x04, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x23, 0x20,
-	0x03, 0x28, 0x11, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
-	0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x24, 0x20, 0x03, 0x28, 0x12, 0x52, 0x0e, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x29, 0x0a, 0x10,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
-	0x18, 0x25, 0x20, 0x03, 0x28, 0x07, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x65, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x26, 0x20, 0x03, 0x28,
-	0x06, 0x52, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64,
-	0x36, 0x34, 0x12, 0x2b, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x27, 0x20, 0x03, 0x28, 0x0f, 0x52, 0x10, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12,
-	0x2b, 0x0a, 0x11, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x18, 0x28, 0x20, 0x03, 0x28, 0x10, 0x52, 0x10, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x25, 0x0a, 0x0e,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x29,
-	0x20, 0x03, 0x28, 0x02, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6c,
-	0x6f, 0x61, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f,
-	0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x2a, 0x20, 0x03, 0x28, 0x01, 0x52, 0x0e, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d,
-	0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x2b, 0x20,
-	0x03, 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x6f, 0x6f,
-	0x6c, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x18, 0x2c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x70, 0x65,
-	0x61, 0x74, 0x65, 0x64, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x2d, 0x20, 0x03,
-	0x28, 0x0c, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65,
-	0x73, 0x12, 0x67, 0x0a, 0x17, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x30, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
-	0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x5d, 0x0a, 0x18, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x31, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x33, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x52, 0x16, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46, 0x6f, 0x72, 0x65, 0x69,
-	0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x59, 0x0a, 0x16, 0x72, 0x65, 0x70,
-	0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x18, 0x32, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e,
-	0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x15, 0x72,
-	0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x6d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x12, 0x5e, 0x0a, 0x14, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x33, 0x20, 0x03,
-	0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
-	0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d,
-	0x52, 0x12, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x45, 0x6e, 0x75, 0x6d, 0x12, 0x54, 0x0a, 0x15, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-	0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x34, 0x20,
-	0x03, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67,
-	0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x13, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x46,
-	0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x50, 0x0a, 0x13, 0x72, 0x65,
-	0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x6e, 0x75,
-	0x6d, 0x18, 0x35, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x49, 0x6d,
-	0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x12, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-	0x65, 0x64, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x5c, 0x0a, 0x0f,
-	0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
-	0x38, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74,
-	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33,
-	0x32, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70,
-	0x49, 0x6e, 0x74, 0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x5c, 0x0a, 0x0f, 0x6d, 0x61,
-	0x70, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x39, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
-	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x49,
-	0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70, 0x49, 0x6e,
-	0x74, 0x36, 0x34, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x62, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f,
-	0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x3a, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c,
-	0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70,
-	0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x62, 0x0a, 0x11,
-	0x6d, 0x61, 0x70, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36,
-	0x34, 0x18, 0x3b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65,
-	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x55, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
-	0x0f, 0x6d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x12, 0x62, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x73,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x3c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d,
-	0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e,
-	0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x12, 0x62, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x3d, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x36, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
-	0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x68, 0x0a, 0x13, 0x6d, 0x61, 0x70, 0x5f,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18,
-	0x3e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74,
-	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65,
-	0x64, 0x33, 0x32, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
-	0x11, 0x6d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x46, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x12, 0x68, 0x0a, 0x13, 0x6d, 0x61, 0x70, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
-	0x34, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x3f, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x38, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70,
-	0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x46, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x6d, 0x61, 0x70, 0x46, 0x69,
-	0x78, 0x65, 0x64, 0x36, 0x34, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x6e, 0x0a, 0x15,
-	0x6d, 0x61, 0x70, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x5f, 0x73, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x40, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d,
-	0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x6d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x33, 0x32, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x6e, 0x0a, 0x15,
-	0x6d, 0x61, 0x70, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x5f, 0x73, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x41, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d,
-	0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13, 0x6d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x5c, 0x0a, 0x0f,
-	0x6d, 0x61, 0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18,
-	0x42, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74,
-	0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33,
-	0x32, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x70,
-	0x49, 0x6e, 0x74, 0x33, 0x32, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x5f, 0x0a, 0x10, 0x6d, 0x61,
-	0x70, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x43,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41,
-	0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74, 0x33, 0x32,
-	0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6d, 0x61, 0x70,
-	0x49, 0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x56, 0x0a, 0x0d, 0x6d,
-	0x61, 0x70, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x44, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x32, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
-	0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42, 0x6f, 0x6f,
-	0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x6d, 0x61, 0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42,
-	0x6f, 0x6f, 0x6c, 0x12, 0x62, 0x0a, 0x11, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x45, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36,
-	0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74,
-	0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65,
-	0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0f, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x5f, 0x0a, 0x10, 0x6d, 0x61, 0x70, 0x5f, 0x73,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x46, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x35, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54,
-	0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x79,
-	0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x6d, 0x61, 0x70, 0x53, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x78, 0x0a, 0x19, 0x6d, 0x61, 0x70, 0x5f,
-	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x47, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3d, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d,
-	0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x16, 0x6d, 0x61, 0x70, 0x53,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x12, 0x6f, 0x0a, 0x16, 0x6d, 0x61, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x49, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
-	0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x13,
-	0x6d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45,
-	0x6e, 0x75, 0x6d, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x75, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65,
-	0x6f, 0x66, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x63, 0x0a, 0x14, 0x6f, 0x6e, 0x65, 0x6f,
-	0x66, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x18, 0x70, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73,
-	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x48, 0x00, 0x52, 0x12, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
-	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a,
-	0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x71, 0x20,
-	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x53, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x12, 0x21, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x62, 0x79, 0x74, 0x65,
-	0x73, 0x18, 0x72, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
-	0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x62,
-	0x6f, 0x6f, 0x6c, 0x18, 0x73, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x6f, 0x6e, 0x65,
-	0x6f, 0x66, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x23, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f,
-	0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x74, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x0b,
-	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x21, 0x0a, 0x0b, 0x6f,
-	0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x75, 0x20, 0x01, 0x28, 0x02,
-	0x48, 0x00, 0x52, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x23,
-	0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x76,
-	0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x6f, 0x75,
-	0x62, 0x6c, 0x65, 0x12, 0x4d, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x6e, 0x75,
-	0x6d, 0x18, 0x77, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65,
-	0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x00, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x45, 0x6e,
-	0x75, 0x6d, 0x1a, 0x62, 0x0a, 0x0d, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01,
-	0x61, 0x12, 0x43, 0x0a, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73,
-	0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x0b, 0x63, 0x6f, 0x72, 0x65, 0x63,
-	0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74,
-	0x33, 0x32, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
-	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
-	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49,
-	0x6e, 0x74, 0x36, 0x34, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
-	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79,
-	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61,
-	0x70, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74,
-	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52,
-	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42,
-	0x0a, 0x14, 0x4d, 0x61, 0x70, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x55, 0x69, 0x6e, 0x74, 0x36,
-	0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
-	0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x53,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
-	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x11, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d, 0x61, 0x70, 0x53, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
-	0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x12, 0x52, 0x03, 0x6b, 0x65, 0x79,
-	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x12, 0x52,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x61,
-	0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45,
-	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x07, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x07, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
-	0x1a, 0x44, 0x0a, 0x16, 0x4d, 0x61, 0x70, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x46, 0x69,
-	0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
-	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x06, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x06, 0x52, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46, 0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x33, 0x32, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x45, 0x6e, 0x74,
-	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0f, 0x52,
-	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x0f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x46,
-	0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x53, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x36, 0x34, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
-	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x10, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x10, 0x52, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x4d, 0x61, 0x70, 0x49, 0x6e, 0x74,
-	0x33, 0x32, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
-	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
-	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x41, 0x0a, 0x13, 0x4d, 0x61, 0x70, 0x49,
-	0x6e, 0x74, 0x33, 0x32, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
-	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65,
-	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01,
-	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3e, 0x0a, 0x10, 0x4d,
-	0x61, 0x70, 0x42, 0x6f, 0x6f, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
-	0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x6b, 0x65,
-	0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x42, 0x0a, 0x14, 0x4d,
-	0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x45, 0x6e,
-	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
-	0x41, 0x0a, 0x13, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x79, 0x74, 0x65,
-	0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
-	0x38, 0x01, 0x1a, 0x7a, 0x0a, 0x1b, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
-	0x6b, 0x65, 0x79, 0x12, 0x45, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c,
-	0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x74,
-	0x0a, 0x18, 0x4d, 0x61, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4e, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
-	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x42, 0x0a, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x6f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-	0x33, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x4e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
-	0x3a, 0x02, 0x38, 0x01, 0x22, 0x39, 0x0a, 0x0a, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e,
-	0x75, 0x6d, 0x12, 0x07, 0x0a, 0x03, 0x46, 0x4f, 0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x42,
-	0x41, 0x52, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x41, 0x5a, 0x10, 0x02, 0x12, 0x10, 0x0a,
-	0x03, 0x4e, 0x45, 0x47, 0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x42,
-	0x0d, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x11,
-	0x0a, 0x0f, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x42, 0x12, 0x0a, 0x10,
-	0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x42, 0x14,
-	0x0a, 0x12, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x33, 0x32, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x42, 0x12, 0x0a,
-	0x10, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c,
-	0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62,
-	0x6f, 0x6f, 0x6c, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42,
-	0x17, 0x0a, 0x15, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6e, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e,
-	0x75, 0x6d, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
-	0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x22, 0x2c, 0x0a, 0x0e, 0x46,
-	0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0c, 0x0a,
-	0x01, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x63, 0x12, 0x0c, 0x0a, 0x01, 0x64,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x64, 0x2a, 0x52, 0x0a, 0x0b, 0x46, 0x6f, 0x72,
-	0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x4f, 0x52, 0x45,
-	0x49, 0x47, 0x4e, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x46, 0x4f,
-	0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x46, 0x4f, 0x4f, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x46,
-	0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x42, 0x41, 0x52, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b,
-	0x46, 0x4f, 0x52, 0x45, 0x49, 0x47, 0x4e, 0x5f, 0x42, 0x41, 0x5a, 0x10, 0x06, 0x42, 0x36, 0x5a,
-	0x34, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f,
-	0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65,
-	0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f,
-	0x74, 0x65, 0x73, 0x74, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_internal_testprotos_test3_test_proto_rawDescOnce sync.Once
-	file_internal_testprotos_test3_test_proto_rawDescData = file_internal_testprotos_test3_test_proto_rawDesc
-)
-
-func file_internal_testprotos_test3_test_proto_rawDescGZIP() []byte {
-	file_internal_testprotos_test3_test_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_test3_test_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_test3_test_proto_rawDescData)
-	})
-	return file_internal_testprotos_test3_test_proto_rawDescData
-}
-
-var file_internal_testprotos_test3_test_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_internal_testprotos_test3_test_proto_msgTypes = make([]protoimpl.MessageInfo, 20)
-var file_internal_testprotos_test3_test_proto_goTypes = []interface{}{
-	(ForeignEnum)(0),                   // 0: goproto.proto.test3.ForeignEnum
-	(TestAllTypes_NestedEnum)(0),       // 1: goproto.proto.test3.TestAllTypes.NestedEnum
-	(*TestAllTypes)(nil),               // 2: goproto.proto.test3.TestAllTypes
-	(*ForeignMessage)(nil),             // 3: goproto.proto.test3.ForeignMessage
-	(*TestAllTypes_NestedMessage)(nil), // 4: goproto.proto.test3.TestAllTypes.NestedMessage
-	nil,                                // 5: goproto.proto.test3.TestAllTypes.MapInt32Int32Entry
-	nil,                                // 6: goproto.proto.test3.TestAllTypes.MapInt64Int64Entry
-	nil,                                // 7: goproto.proto.test3.TestAllTypes.MapUint32Uint32Entry
-	nil,                                // 8: goproto.proto.test3.TestAllTypes.MapUint64Uint64Entry
-	nil,                                // 9: goproto.proto.test3.TestAllTypes.MapSint32Sint32Entry
-	nil,                                // 10: goproto.proto.test3.TestAllTypes.MapSint64Sint64Entry
-	nil,                                // 11: goproto.proto.test3.TestAllTypes.MapFixed32Fixed32Entry
-	nil,                                // 12: goproto.proto.test3.TestAllTypes.MapFixed64Fixed64Entry
-	nil,                                // 13: goproto.proto.test3.TestAllTypes.MapSfixed32Sfixed32Entry
-	nil,                                // 14: goproto.proto.test3.TestAllTypes.MapSfixed64Sfixed64Entry
-	nil,                                // 15: goproto.proto.test3.TestAllTypes.MapInt32FloatEntry
-	nil,                                // 16: goproto.proto.test3.TestAllTypes.MapInt32DoubleEntry
-	nil,                                // 17: goproto.proto.test3.TestAllTypes.MapBoolBoolEntry
-	nil,                                // 18: goproto.proto.test3.TestAllTypes.MapStringStringEntry
-	nil,                                // 19: goproto.proto.test3.TestAllTypes.MapStringBytesEntry
-	nil,                                // 20: goproto.proto.test3.TestAllTypes.MapStringNestedMessageEntry
-	nil,                                // 21: goproto.proto.test3.TestAllTypes.MapStringNestedEnumEntry
-	(*ImportMessage)(nil),              // 22: goproto.proto.test3.ImportMessage
-	(ImportEnum)(0),                    // 23: goproto.proto.test3.ImportEnum
-}
-var file_internal_testprotos_test3_test_proto_depIdxs = []int32{
-	4,  // 0: goproto.proto.test3.TestAllTypes.singular_nested_message:type_name -> goproto.proto.test3.TestAllTypes.NestedMessage
-	3,  // 1: goproto.proto.test3.TestAllTypes.singular_foreign_message:type_name -> goproto.proto.test3.ForeignMessage
-	22, // 2: goproto.proto.test3.TestAllTypes.singular_import_message:type_name -> goproto.proto.test3.ImportMessage
-	1,  // 3: goproto.proto.test3.TestAllTypes.singular_nested_enum:type_name -> goproto.proto.test3.TestAllTypes.NestedEnum
-	0,  // 4: goproto.proto.test3.TestAllTypes.singular_foreign_enum:type_name -> goproto.proto.test3.ForeignEnum
-	23, // 5: goproto.proto.test3.TestAllTypes.singular_import_enum:type_name -> goproto.proto.test3.ImportEnum
-	4,  // 6: goproto.proto.test3.TestAllTypes.optional_nested_message:type_name -> goproto.proto.test3.TestAllTypes.NestedMessage
-	3,  // 7: goproto.proto.test3.TestAllTypes.optional_foreign_message:type_name -> goproto.proto.test3.ForeignMessage
-	22, // 8: goproto.proto.test3.TestAllTypes.optional_import_message:type_name -> goproto.proto.test3.ImportMessage
-	1,  // 9: goproto.proto.test3.TestAllTypes.optional_nested_enum:type_name -> goproto.proto.test3.TestAllTypes.NestedEnum
-	0,  // 10: goproto.proto.test3.TestAllTypes.optional_foreign_enum:type_name -> goproto.proto.test3.ForeignEnum
-	23, // 11: goproto.proto.test3.TestAllTypes.optional_import_enum:type_name -> goproto.proto.test3.ImportEnum
-	4,  // 12: goproto.proto.test3.TestAllTypes.repeated_nested_message:type_name -> goproto.proto.test3.TestAllTypes.NestedMessage
-	3,  // 13: goproto.proto.test3.TestAllTypes.repeated_foreign_message:type_name -> goproto.proto.test3.ForeignMessage
-	22, // 14: goproto.proto.test3.TestAllTypes.repeated_importmessage:type_name -> goproto.proto.test3.ImportMessage
-	1,  // 15: goproto.proto.test3.TestAllTypes.repeated_nested_enum:type_name -> goproto.proto.test3.TestAllTypes.NestedEnum
-	0,  // 16: goproto.proto.test3.TestAllTypes.repeated_foreign_enum:type_name -> goproto.proto.test3.ForeignEnum
-	23, // 17: goproto.proto.test3.TestAllTypes.repeated_importenum:type_name -> goproto.proto.test3.ImportEnum
-	5,  // 18: goproto.proto.test3.TestAllTypes.map_int32_int32:type_name -> goproto.proto.test3.TestAllTypes.MapInt32Int32Entry
-	6,  // 19: goproto.proto.test3.TestAllTypes.map_int64_int64:type_name -> goproto.proto.test3.TestAllTypes.MapInt64Int64Entry
-	7,  // 20: goproto.proto.test3.TestAllTypes.map_uint32_uint32:type_name -> goproto.proto.test3.TestAllTypes.MapUint32Uint32Entry
-	8,  // 21: goproto.proto.test3.TestAllTypes.map_uint64_uint64:type_name -> goproto.proto.test3.TestAllTypes.MapUint64Uint64Entry
-	9,  // 22: goproto.proto.test3.TestAllTypes.map_sint32_sint32:type_name -> goproto.proto.test3.TestAllTypes.MapSint32Sint32Entry
-	10, // 23: goproto.proto.test3.TestAllTypes.map_sint64_sint64:type_name -> goproto.proto.test3.TestAllTypes.MapSint64Sint64Entry
-	11, // 24: goproto.proto.test3.TestAllTypes.map_fixed32_fixed32:type_name -> goproto.proto.test3.TestAllTypes.MapFixed32Fixed32Entry
-	12, // 25: goproto.proto.test3.TestAllTypes.map_fixed64_fixed64:type_name -> goproto.proto.test3.TestAllTypes.MapFixed64Fixed64Entry
-	13, // 26: goproto.proto.test3.TestAllTypes.map_sfixed32_sfixed32:type_name -> goproto.proto.test3.TestAllTypes.MapSfixed32Sfixed32Entry
-	14, // 27: goproto.proto.test3.TestAllTypes.map_sfixed64_sfixed64:type_name -> goproto.proto.test3.TestAllTypes.MapSfixed64Sfixed64Entry
-	15, // 28: goproto.proto.test3.TestAllTypes.map_int32_float:type_name -> goproto.proto.test3.TestAllTypes.MapInt32FloatEntry
-	16, // 29: goproto.proto.test3.TestAllTypes.map_int32_double:type_name -> goproto.proto.test3.TestAllTypes.MapInt32DoubleEntry
-	17, // 30: goproto.proto.test3.TestAllTypes.map_bool_bool:type_name -> goproto.proto.test3.TestAllTypes.MapBoolBoolEntry
-	18, // 31: goproto.proto.test3.TestAllTypes.map_string_string:type_name -> goproto.proto.test3.TestAllTypes.MapStringStringEntry
-	19, // 32: goproto.proto.test3.TestAllTypes.map_string_bytes:type_name -> goproto.proto.test3.TestAllTypes.MapStringBytesEntry
-	20, // 33: goproto.proto.test3.TestAllTypes.map_string_nested_message:type_name -> goproto.proto.test3.TestAllTypes.MapStringNestedMessageEntry
-	21, // 34: goproto.proto.test3.TestAllTypes.map_string_nested_enum:type_name -> goproto.proto.test3.TestAllTypes.MapStringNestedEnumEntry
-	4,  // 35: goproto.proto.test3.TestAllTypes.oneof_nested_message:type_name -> goproto.proto.test3.TestAllTypes.NestedMessage
-	1,  // 36: goproto.proto.test3.TestAllTypes.oneof_enum:type_name -> goproto.proto.test3.TestAllTypes.NestedEnum
-	2,  // 37: goproto.proto.test3.TestAllTypes.NestedMessage.corecursive:type_name -> goproto.proto.test3.TestAllTypes
-	4,  // 38: goproto.proto.test3.TestAllTypes.MapStringNestedMessageEntry.value:type_name -> goproto.proto.test3.TestAllTypes.NestedMessage
-	1,  // 39: goproto.proto.test3.TestAllTypes.MapStringNestedEnumEntry.value:type_name -> goproto.proto.test3.TestAllTypes.NestedEnum
-	40, // [40:40] is the sub-list for method output_type
-	40, // [40:40] is the sub-list for method input_type
-	40, // [40:40] is the sub-list for extension type_name
-	40, // [40:40] is the sub-list for extension extendee
-	0,  // [0:40] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_test3_test_proto_init() }
-func file_internal_testprotos_test3_test_proto_init() {
-	if File_internal_testprotos_test3_test_proto != nil {
-		return
-	}
-	file_internal_testprotos_test3_test_import_proto_init()
-	if !protoimpl.UnsafeEnabled {
-		file_internal_testprotos_test3_test_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestAllTypes); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test3_test_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ForeignMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_test3_test_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TestAllTypes_NestedMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	file_internal_testprotos_test3_test_proto_msgTypes[0].OneofWrappers = []interface{}{
-		(*TestAllTypes_OneofUint32)(nil),
-		(*TestAllTypes_OneofNestedMessage)(nil),
-		(*TestAllTypes_OneofString)(nil),
-		(*TestAllTypes_OneofBytes)(nil),
-		(*TestAllTypes_OneofBool)(nil),
-		(*TestAllTypes_OneofUint64)(nil),
-		(*TestAllTypes_OneofFloat)(nil),
-		(*TestAllTypes_OneofDouble)(nil),
-		(*TestAllTypes_OneofEnum)(nil),
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_test3_test_proto_rawDesc,
-			NumEnums:      2,
-			NumMessages:   20,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_internal_testprotos_test3_test_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_test3_test_proto_depIdxs,
-		EnumInfos:         file_internal_testprotos_test3_test_proto_enumTypes,
-		MessageInfos:      file_internal_testprotos_test3_test_proto_msgTypes,
-	}.Build()
-	File_internal_testprotos_test3_test_proto = out.File
-	file_internal_testprotos_test3_test_proto_rawDesc = nil
-	file_internal_testprotos_test3_test_proto_goTypes = nil
-	file_internal_testprotos_test3_test_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/test3/test.proto b/internal/testprotos/test3/test.proto
deleted file mode 100644
index 4d9a63c..0000000
--- a/internal/testprotos/test3/test.proto
+++ /dev/null
@@ -1,133 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-
-package goproto.proto.test3;
-
-import "internal/testprotos/test3/test_import.proto";
-
-option go_package = "google.golang.org/protobuf/internal/testprotos/test3";
-
-message TestAllTypes {
-  message NestedMessage {
-    int32 a = 1;
-    TestAllTypes corecursive = 2;
-  }
-
-  enum NestedEnum {
-    FOO = 0;
-    BAR = 1;
-    BAZ = 2;
-    NEG = -1;  // Intentionally negative.
-  }
-
-  int32         singular_int32    = 81;
-  int64         singular_int64    = 82;
-  uint32        singular_uint32   = 83;
-  uint64        singular_uint64   = 84;
-  sint32        singular_sint32   = 85;
-  sint64        singular_sint64   = 86;
-  fixed32       singular_fixed32  = 87;
-  fixed64       singular_fixed64  = 88;
-  sfixed32      singular_sfixed32 = 89;
-  sfixed64      singular_sfixed64 = 90;
-  float         singular_float    = 91;
-  double        singular_double   = 92;
-  bool          singular_bool     = 93;
-  string        singular_string   = 94;
-  bytes         singular_bytes    = 95;
-  NestedMessage  singular_nested_message  = 98;
-  ForeignMessage singular_foreign_message = 99;
-  ImportMessage  singular_import_message  = 100;
-  NestedEnum     singular_nested_enum     = 101;
-  ForeignEnum    singular_foreign_enum    = 102;
-  ImportEnum     singular_import_enum     = 103;
-
-  optional int32         optional_int32    =  1;
-  optional int64         optional_int64    =  2;
-  optional uint32        optional_uint32   =  3;
-  optional uint64        optional_uint64   =  4;
-  optional sint32        optional_sint32   =  5;
-  optional sint64        optional_sint64   =  6;
-  optional fixed32       optional_fixed32  =  7;
-  optional fixed64       optional_fixed64  =  8;
-  optional sfixed32      optional_sfixed32 =  9;
-  optional sfixed64      optional_sfixed64 = 10;
-  optional float         optional_float    = 11;
-  optional double        optional_double   = 12;
-  optional bool          optional_bool     = 13;
-  optional string        optional_string   = 14;
-  optional bytes         optional_bytes    = 15;
-  optional NestedMessage  optional_nested_message  = 18;
-  optional ForeignMessage optional_foreign_message = 19;
-  optional ImportMessage  optional_import_message  = 20;
-  optional NestedEnum     optional_nested_enum     = 21;
-  optional ForeignEnum    optional_foreign_enum    = 22;
-  optional ImportEnum     optional_import_enum     = 23;
-
-  repeated int32         repeated_int32    = 31;
-  repeated int64         repeated_int64    = 32;
-  repeated uint32        repeated_uint32   = 33;
-  repeated uint64        repeated_uint64   = 34;
-  repeated sint32        repeated_sint32   = 35;
-  repeated sint64        repeated_sint64   = 36;
-  repeated fixed32       repeated_fixed32  = 37;
-  repeated fixed64       repeated_fixed64  = 38;
-  repeated sfixed32      repeated_sfixed32 = 39;
-  repeated sfixed64      repeated_sfixed64 = 40;
-  repeated float         repeated_float    = 41;
-  repeated double        repeated_double   = 42;
-  repeated bool          repeated_bool     = 43;
-  repeated string        repeated_string   = 44;
-  repeated bytes         repeated_bytes    = 45;
-  repeated NestedMessage  repeated_nested_message  = 48;
-  repeated ForeignMessage repeated_foreign_message = 49;
-  repeated ImportMessage  repeated_importmessage   = 50;
-  repeated NestedEnum     repeated_nested_enum     = 51;
-  repeated ForeignEnum    repeated_foreign_enum    = 52;
-  repeated ImportEnum     repeated_importenum      = 53;
-
-  map <   int32, int32>         map_int32_int32           = 56;
-  map <   int64, int64>         map_int64_int64           = 57;
-  map <  uint32, uint32>        map_uint32_uint32         = 58;
-  map <  uint64, uint64>        map_uint64_uint64         = 59;
-  map <  sint32, sint32>        map_sint32_sint32         = 60;
-  map <  sint64, sint64>        map_sint64_sint64         = 61;
-  map < fixed32, fixed32>       map_fixed32_fixed32       = 62;
-  map < fixed64, fixed64>       map_fixed64_fixed64       = 63;
-  map <sfixed32, sfixed32>      map_sfixed32_sfixed32     = 64;
-  map <sfixed64, sfixed64>      map_sfixed64_sfixed64     = 65;
-  map <   int32, float>         map_int32_float           = 66;
-  map <   int32, double>        map_int32_double          = 67;
-  map <    bool, bool>          map_bool_bool             = 68;
-  map <  string, string>        map_string_string         = 69;
-  map <  string, bytes>         map_string_bytes          = 70;
-  map <  string, NestedMessage> map_string_nested_message = 71;
-  map <  string, NestedEnum>    map_string_nested_enum    = 73;
-
-  oneof oneof_field {
-    uint32        oneof_uint32         = 111;
-    NestedMessage oneof_nested_message = 112;
-    string        oneof_string         = 113;
-    bytes         oneof_bytes          = 114;
-    bool          oneof_bool           = 115;
-    uint64        oneof_uint64         = 116;
-    float         oneof_float          = 117;
-    double        oneof_double         = 118;
-    NestedEnum    oneof_enum           = 119;
-  }
-}
-
-message ForeignMessage {
-  int32 c = 1;
-  int32 d = 2;
-}
-
-enum ForeignEnum {
-  FOREIGN_ZERO = 0;
-  FOREIGN_FOO = 4;
-  FOREIGN_BAR = 5;
-  FOREIGN_BAZ = 6;
-}
diff --git a/internal/testprotos/test3/test_extension.pb.go b/internal/testprotos/test3/test_extension.pb.go
deleted file mode 100644
index 3105af8..0000000
--- a/internal/testprotos/test3/test_extension.pb.go
+++ /dev/null
@@ -1,650 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/test3/test_extension.proto
-
-package test3
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	descriptorpb "google.golang.org/protobuf/types/descriptorpb"
-	reflect "reflect"
-)
-
-var file_internal_testprotos_test3_test_extension_proto_extTypes = []protoimpl.ExtensionInfo{
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*int32)(nil),
-		Field:         1001,
-		Name:          "goproto.proto.test3.optional_int32",
-		Tag:           "varint,1001,opt,name=optional_int32",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*int64)(nil),
-		Field:         1002,
-		Name:          "goproto.proto.test3.optional_int64",
-		Tag:           "varint,1002,opt,name=optional_int64",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*uint32)(nil),
-		Field:         1003,
-		Name:          "goproto.proto.test3.optional_uint32",
-		Tag:           "varint,1003,opt,name=optional_uint32",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*uint64)(nil),
-		Field:         1004,
-		Name:          "goproto.proto.test3.optional_uint64",
-		Tag:           "varint,1004,opt,name=optional_uint64",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*int32)(nil),
-		Field:         1005,
-		Name:          "goproto.proto.test3.optional_sint32",
-		Tag:           "zigzag32,1005,opt,name=optional_sint32",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*int64)(nil),
-		Field:         1006,
-		Name:          "goproto.proto.test3.optional_sint64",
-		Tag:           "zigzag64,1006,opt,name=optional_sint64",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*uint32)(nil),
-		Field:         1007,
-		Name:          "goproto.proto.test3.optional_fixed32",
-		Tag:           "fixed32,1007,opt,name=optional_fixed32",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*uint64)(nil),
-		Field:         1008,
-		Name:          "goproto.proto.test3.optional_fixed64",
-		Tag:           "fixed64,1008,opt,name=optional_fixed64",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*int32)(nil),
-		Field:         1009,
-		Name:          "goproto.proto.test3.optional_sfixed32",
-		Tag:           "fixed32,1009,opt,name=optional_sfixed32",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*int64)(nil),
-		Field:         1010,
-		Name:          "goproto.proto.test3.optional_sfixed64",
-		Tag:           "fixed64,1010,opt,name=optional_sfixed64",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*float32)(nil),
-		Field:         1011,
-		Name:          "goproto.proto.test3.optional_float",
-		Tag:           "fixed32,1011,opt,name=optional_float",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*float64)(nil),
-		Field:         1012,
-		Name:          "goproto.proto.test3.optional_double",
-		Tag:           "fixed64,1012,opt,name=optional_double",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*bool)(nil),
-		Field:         1013,
-		Name:          "goproto.proto.test3.optional_bool",
-		Tag:           "varint,1013,opt,name=optional_bool",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*string)(nil),
-		Field:         1014,
-		Name:          "goproto.proto.test3.optional_string",
-		Tag:           "bytes,1014,opt,name=optional_string",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: ([]byte)(nil),
-		Field:         1015,
-		Name:          "goproto.proto.test3.optional_bytes",
-		Tag:           "bytes,1015,opt,name=optional_bytes",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*ForeignMessage)(nil),
-		Field:         1016,
-		Name:          "goproto.proto.test3.optional_foreign_message",
-		Tag:           "bytes,1016,opt,name=optional_foreign_message",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*ForeignEnum)(nil),
-		Field:         1017,
-		Name:          "goproto.proto.test3.optional_foreign_enum",
-		Tag:           "varint,1017,opt,name=optional_foreign_enum,enum=goproto.proto.test3.ForeignEnum",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*int32)(nil),
-		Field:         2001,
-		Name:          "goproto.proto.test3.optional_optional_int32",
-		Tag:           "varint,2001,opt,name=optional_optional_int32",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*int64)(nil),
-		Field:         2002,
-		Name:          "goproto.proto.test3.optional_optional_int64",
-		Tag:           "varint,2002,opt,name=optional_optional_int64",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*uint32)(nil),
-		Field:         2003,
-		Name:          "goproto.proto.test3.optional_optional_uint32",
-		Tag:           "varint,2003,opt,name=optional_optional_uint32",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*uint64)(nil),
-		Field:         2004,
-		Name:          "goproto.proto.test3.optional_optional_uint64",
-		Tag:           "varint,2004,opt,name=optional_optional_uint64",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*int32)(nil),
-		Field:         2005,
-		Name:          "goproto.proto.test3.optional_optional_sint32",
-		Tag:           "zigzag32,2005,opt,name=optional_optional_sint32",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*int64)(nil),
-		Field:         2006,
-		Name:          "goproto.proto.test3.optional_optional_sint64",
-		Tag:           "zigzag64,2006,opt,name=optional_optional_sint64",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*uint32)(nil),
-		Field:         2007,
-		Name:          "goproto.proto.test3.optional_optional_fixed32",
-		Tag:           "fixed32,2007,opt,name=optional_optional_fixed32",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*uint64)(nil),
-		Field:         2008,
-		Name:          "goproto.proto.test3.optional_optional_fixed64",
-		Tag:           "fixed64,2008,opt,name=optional_optional_fixed64",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*int32)(nil),
-		Field:         2009,
-		Name:          "goproto.proto.test3.optional_optional_sfixed32",
-		Tag:           "fixed32,2009,opt,name=optional_optional_sfixed32",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*int64)(nil),
-		Field:         2010,
-		Name:          "goproto.proto.test3.optional_optional_sfixed64",
-		Tag:           "fixed64,2010,opt,name=optional_optional_sfixed64",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*float32)(nil),
-		Field:         2011,
-		Name:          "goproto.proto.test3.optional_optional_float",
-		Tag:           "fixed32,2011,opt,name=optional_optional_float",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*float64)(nil),
-		Field:         2012,
-		Name:          "goproto.proto.test3.optional_optional_double",
-		Tag:           "fixed64,2012,opt,name=optional_optional_double",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*bool)(nil),
-		Field:         2013,
-		Name:          "goproto.proto.test3.optional_optional_bool",
-		Tag:           "varint,2013,opt,name=optional_optional_bool",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*string)(nil),
-		Field:         2014,
-		Name:          "goproto.proto.test3.optional_optional_string",
-		Tag:           "bytes,2014,opt,name=optional_optional_string",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: ([]byte)(nil),
-		Field:         2015,
-		Name:          "goproto.proto.test3.optional_optional_bytes",
-		Tag:           "bytes,2015,opt,name=optional_optional_bytes",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*ForeignMessage)(nil),
-		Field:         2016,
-		Name:          "goproto.proto.test3.optional_optional_foreign_message",
-		Tag:           "bytes,2016,opt,name=optional_optional_foreign_message",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-	{
-		ExtendedType:  (*descriptorpb.MessageOptions)(nil),
-		ExtensionType: (*ForeignEnum)(nil),
-		Field:         2017,
-		Name:          "goproto.proto.test3.optional_optional_foreign_enum",
-		Tag:           "varint,2017,opt,name=optional_optional_foreign_enum,enum=goproto.proto.test3.ForeignEnum",
-		Filename:      "internal/testprotos/test3/test_extension.proto",
-	},
-}
-
-// Extension fields to descriptorpb.MessageOptions.
-var (
-	// optional int32 optional_int32 = 1001;
-	E_OptionalInt32 = &file_internal_testprotos_test3_test_extension_proto_extTypes[0]
-	// optional int64 optional_int64 = 1002;
-	E_OptionalInt64 = &file_internal_testprotos_test3_test_extension_proto_extTypes[1]
-	// optional uint32 optional_uint32 = 1003;
-	E_OptionalUint32 = &file_internal_testprotos_test3_test_extension_proto_extTypes[2]
-	// optional uint64 optional_uint64 = 1004;
-	E_OptionalUint64 = &file_internal_testprotos_test3_test_extension_proto_extTypes[3]
-	// optional sint32 optional_sint32 = 1005;
-	E_OptionalSint32 = &file_internal_testprotos_test3_test_extension_proto_extTypes[4]
-	// optional sint64 optional_sint64 = 1006;
-	E_OptionalSint64 = &file_internal_testprotos_test3_test_extension_proto_extTypes[5]
-	// optional fixed32 optional_fixed32 = 1007;
-	E_OptionalFixed32 = &file_internal_testprotos_test3_test_extension_proto_extTypes[6]
-	// optional fixed64 optional_fixed64 = 1008;
-	E_OptionalFixed64 = &file_internal_testprotos_test3_test_extension_proto_extTypes[7]
-	// optional sfixed32 optional_sfixed32 = 1009;
-	E_OptionalSfixed32 = &file_internal_testprotos_test3_test_extension_proto_extTypes[8]
-	// optional sfixed64 optional_sfixed64 = 1010;
-	E_OptionalSfixed64 = &file_internal_testprotos_test3_test_extension_proto_extTypes[9]
-	// optional float optional_float = 1011;
-	E_OptionalFloat = &file_internal_testprotos_test3_test_extension_proto_extTypes[10]
-	// optional double optional_double = 1012;
-	E_OptionalDouble = &file_internal_testprotos_test3_test_extension_proto_extTypes[11]
-	// optional bool optional_bool = 1013;
-	E_OptionalBool = &file_internal_testprotos_test3_test_extension_proto_extTypes[12]
-	// optional string optional_string = 1014;
-	E_OptionalString = &file_internal_testprotos_test3_test_extension_proto_extTypes[13]
-	// optional bytes optional_bytes = 1015;
-	E_OptionalBytes = &file_internal_testprotos_test3_test_extension_proto_extTypes[14]
-	// optional goproto.proto.test3.ForeignMessage optional_foreign_message = 1016;
-	E_OptionalForeignMessage = &file_internal_testprotos_test3_test_extension_proto_extTypes[15]
-	// optional goproto.proto.test3.ForeignEnum optional_foreign_enum = 1017;
-	E_OptionalForeignEnum = &file_internal_testprotos_test3_test_extension_proto_extTypes[16]
-	// optional int32 optional_optional_int32 = 2001;
-	E_OptionalOptionalInt32 = &file_internal_testprotos_test3_test_extension_proto_extTypes[17]
-	// optional int64 optional_optional_int64 = 2002;
-	E_OptionalOptionalInt64 = &file_internal_testprotos_test3_test_extension_proto_extTypes[18]
-	// optional uint32 optional_optional_uint32 = 2003;
-	E_OptionalOptionalUint32 = &file_internal_testprotos_test3_test_extension_proto_extTypes[19]
-	// optional uint64 optional_optional_uint64 = 2004;
-	E_OptionalOptionalUint64 = &file_internal_testprotos_test3_test_extension_proto_extTypes[20]
-	// optional sint32 optional_optional_sint32 = 2005;
-	E_OptionalOptionalSint32 = &file_internal_testprotos_test3_test_extension_proto_extTypes[21]
-	// optional sint64 optional_optional_sint64 = 2006;
-	E_OptionalOptionalSint64 = &file_internal_testprotos_test3_test_extension_proto_extTypes[22]
-	// optional fixed32 optional_optional_fixed32 = 2007;
-	E_OptionalOptionalFixed32 = &file_internal_testprotos_test3_test_extension_proto_extTypes[23]
-	// optional fixed64 optional_optional_fixed64 = 2008;
-	E_OptionalOptionalFixed64 = &file_internal_testprotos_test3_test_extension_proto_extTypes[24]
-	// optional sfixed32 optional_optional_sfixed32 = 2009;
-	E_OptionalOptionalSfixed32 = &file_internal_testprotos_test3_test_extension_proto_extTypes[25]
-	// optional sfixed64 optional_optional_sfixed64 = 2010;
-	E_OptionalOptionalSfixed64 = &file_internal_testprotos_test3_test_extension_proto_extTypes[26]
-	// optional float optional_optional_float = 2011;
-	E_OptionalOptionalFloat = &file_internal_testprotos_test3_test_extension_proto_extTypes[27]
-	// optional double optional_optional_double = 2012;
-	E_OptionalOptionalDouble = &file_internal_testprotos_test3_test_extension_proto_extTypes[28]
-	// optional bool optional_optional_bool = 2013;
-	E_OptionalOptionalBool = &file_internal_testprotos_test3_test_extension_proto_extTypes[29]
-	// optional string optional_optional_string = 2014;
-	E_OptionalOptionalString = &file_internal_testprotos_test3_test_extension_proto_extTypes[30]
-	// optional bytes optional_optional_bytes = 2015;
-	E_OptionalOptionalBytes = &file_internal_testprotos_test3_test_extension_proto_extTypes[31]
-	// optional goproto.proto.test3.ForeignMessage optional_optional_foreign_message = 2016;
-	E_OptionalOptionalForeignMessage = &file_internal_testprotos_test3_test_extension_proto_extTypes[32]
-	// optional goproto.proto.test3.ForeignEnum optional_optional_foreign_enum = 2017;
-	E_OptionalOptionalForeignEnum = &file_internal_testprotos_test3_test_extension_proto_extTypes[33]
-)
-
-var File_internal_testprotos_test3_test_extension_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_test3_test_extension_proto_rawDesc = []byte{
-	0x0a, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2f, 0x74, 0x65, 0x73, 0x74,
-	0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x12, 0x13, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x74, 0x65, 0x73, 0x74, 0x33, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f,
-	0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61,
-	0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73,
-	0x74, 0x33, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x3a, 0x47, 0x0a,
-	0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12,
-	0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x18, 0xe9, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x47, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xea, 0x07, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x3a,
-	0x49, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x73, 0x18, 0xeb, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x3a, 0x49, 0x0a, 0x0f, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1f, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xec,
-	0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x49, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xed, 0x07, 0x20, 0x01, 0x28, 0x11,
-	0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x3a, 0x49, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x73, 0x18, 0xee, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x0e, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x3a, 0x4b, 0x0a, 0x10, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12,
-	0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x18, 0xef, 0x07, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x4b, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1f, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xf0, 0x07,
-	0x20, 0x01, 0x28, 0x06, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69,
-	0x78, 0x65, 0x64, 0x36, 0x34, 0x3a, 0x4d, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xf1, 0x07, 0x20, 0x01,
-	0x28, 0x0f, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x33, 0x32, 0x3a, 0x4d, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xf2, 0x07, 0x20, 0x01, 0x28,
-	0x10, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x36, 0x34, 0x3a, 0x47, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
-	0x66, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xf3, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x3a, 0x49, 0x0a, 0x0f,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12,
-	0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x18, 0xf4, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x3a, 0x45, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xf5, 0x07, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0c, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x3a, 0x49,
-	0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x73, 0x18, 0xf6, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x3a, 0x47, 0x0a, 0x0e, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xf7, 0x07, 0x20,
-	0x01, 0x28, 0x0c, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x79, 0x74,
-	0x65, 0x73, 0x3a, 0x7f, 0x0a, 0x18, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66,
-	0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1f,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
-	0xf8, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x46, 0x6f, 0x72,
-	0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x16, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x3a, 0x76, 0x0a, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
-	0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1f, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xf9, 0x07,
-	0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69,
-	0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x13, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x5b, 0x0a, 0x17, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xd1, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x15,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x49, 0x6e, 0x74, 0x33, 0x32, 0x88, 0x01, 0x01, 0x3a, 0x5b, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x73, 0x18, 0xd2, 0x0f, 0x20, 0x01, 0x28, 0x03, 0x52, 0x15, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x49, 0x6e, 0x74,
-	0x36, 0x34, 0x88, 0x01, 0x01, 0x3a, 0x5d, 0x0a, 0x18, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x73, 0x18, 0xd3, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x16, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x88, 0x01, 0x01, 0x3a, 0x5d, 0x0a, 0x18, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x73, 0x18, 0xd4, 0x0f, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x88, 0x01, 0x01, 0x3a, 0x5d, 0x0a, 0x18, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12,
-	0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x18, 0xd5, 0x0f, 0x20, 0x01, 0x28, 0x11, 0x52, 0x16, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x88,
-	0x01, 0x01, 0x3a, 0x5d, 0x0a, 0x18, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1f,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
-	0xd6, 0x0f, 0x20, 0x01, 0x28, 0x12, 0x52, 0x16, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x88, 0x01,
-	0x01, 0x3a, 0x5f, 0x0a, 0x19, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1f,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18,
-	0xd7, 0x0f, 0x20, 0x01, 0x28, 0x07, 0x52, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c,
-	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x88,
-	0x01, 0x01, 0x3a, 0x5f, 0x0a, 0x19, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12,
-	0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x18, 0xd8, 0x0f, 0x20, 0x01, 0x28, 0x06, 0x52, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34,
-	0x88, 0x01, 0x01, 0x3a, 0x61, 0x0a, 0x1a, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33,
-	0x32, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x73, 0x18, 0xd9, 0x0f, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x18, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x33, 0x32, 0x88, 0x01, 0x01, 0x3a, 0x61, 0x0a, 0x1a, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x36, 0x34, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xda, 0x0f, 0x20, 0x01, 0x28, 0x10, 0x52, 0x18, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x88, 0x01, 0x01, 0x3a, 0x5b, 0x0a, 0x17, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66,
-	0x6c, 0x6f, 0x61, 0x74, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xdb, 0x0f, 0x20, 0x01, 0x28, 0x02, 0x52, 0x15, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x46, 0x6c,
-	0x6f, 0x61, 0x74, 0x88, 0x01, 0x01, 0x3a, 0x5d, 0x0a, 0x18, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x6f, 0x75, 0x62,
-	0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x73, 0x18, 0xdc, 0x0f, 0x20, 0x01, 0x28, 0x01, 0x52, 0x16, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x44, 0x6f, 0x75, 0x62,
-	0x6c, 0x65, 0x88, 0x01, 0x01, 0x3a, 0x59, 0x0a, 0x16, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12,
-	0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x18, 0xdd, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x6f, 0x6f, 0x6c, 0x88, 0x01, 0x01,
-	0x3a, 0x5d, 0x0a, 0x18, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1f, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xde, 0x0f,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x16, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x3a,
-	0x5b, 0x0a, 0x17, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xdf, 0x0f, 0x20, 0x01,
-	0x28, 0x0c, 0x52, 0x15, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01, 0x3a, 0x93, 0x01, 0x0a,
-	0x21, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61,
-	0x67, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x73, 0x18, 0xe0, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x33,
-	0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52,
-	0x1e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88,
-	0x01, 0x01, 0x3a, 0x8a, 0x01, 0x0a, 0x1e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e,
-	0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xe1, 0x0f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e,
-	0x67, 0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65,
-	0x73, 0x74, 0x33, 0x2e, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x52,
-	0x1b, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61,
-	0x6c, 0x46, 0x6f, 0x72, 0x65, 0x69, 0x67, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x88, 0x01, 0x01, 0x42,
-	0x36, 0x5a, 0x34, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
-	0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e,
-	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var file_internal_testprotos_test3_test_extension_proto_goTypes = []interface{}{
-	(*descriptorpb.MessageOptions)(nil), // 0: google.protobuf.MessageOptions
-	(*ForeignMessage)(nil),              // 1: goproto.proto.test3.ForeignMessage
-	(ForeignEnum)(0),                    // 2: goproto.proto.test3.ForeignEnum
-}
-var file_internal_testprotos_test3_test_extension_proto_depIdxs = []int32{
-	0,  // 0: goproto.proto.test3.optional_int32:extendee -> google.protobuf.MessageOptions
-	0,  // 1: goproto.proto.test3.optional_int64:extendee -> google.protobuf.MessageOptions
-	0,  // 2: goproto.proto.test3.optional_uint32:extendee -> google.protobuf.MessageOptions
-	0,  // 3: goproto.proto.test3.optional_uint64:extendee -> google.protobuf.MessageOptions
-	0,  // 4: goproto.proto.test3.optional_sint32:extendee -> google.protobuf.MessageOptions
-	0,  // 5: goproto.proto.test3.optional_sint64:extendee -> google.protobuf.MessageOptions
-	0,  // 6: goproto.proto.test3.optional_fixed32:extendee -> google.protobuf.MessageOptions
-	0,  // 7: goproto.proto.test3.optional_fixed64:extendee -> google.protobuf.MessageOptions
-	0,  // 8: goproto.proto.test3.optional_sfixed32:extendee -> google.protobuf.MessageOptions
-	0,  // 9: goproto.proto.test3.optional_sfixed64:extendee -> google.protobuf.MessageOptions
-	0,  // 10: goproto.proto.test3.optional_float:extendee -> google.protobuf.MessageOptions
-	0,  // 11: goproto.proto.test3.optional_double:extendee -> google.protobuf.MessageOptions
-	0,  // 12: goproto.proto.test3.optional_bool:extendee -> google.protobuf.MessageOptions
-	0,  // 13: goproto.proto.test3.optional_string:extendee -> google.protobuf.MessageOptions
-	0,  // 14: goproto.proto.test3.optional_bytes:extendee -> google.protobuf.MessageOptions
-	0,  // 15: goproto.proto.test3.optional_foreign_message:extendee -> google.protobuf.MessageOptions
-	0,  // 16: goproto.proto.test3.optional_foreign_enum:extendee -> google.protobuf.MessageOptions
-	0,  // 17: goproto.proto.test3.optional_optional_int32:extendee -> google.protobuf.MessageOptions
-	0,  // 18: goproto.proto.test3.optional_optional_int64:extendee -> google.protobuf.MessageOptions
-	0,  // 19: goproto.proto.test3.optional_optional_uint32:extendee -> google.protobuf.MessageOptions
-	0,  // 20: goproto.proto.test3.optional_optional_uint64:extendee -> google.protobuf.MessageOptions
-	0,  // 21: goproto.proto.test3.optional_optional_sint32:extendee -> google.protobuf.MessageOptions
-	0,  // 22: goproto.proto.test3.optional_optional_sint64:extendee -> google.protobuf.MessageOptions
-	0,  // 23: goproto.proto.test3.optional_optional_fixed32:extendee -> google.protobuf.MessageOptions
-	0,  // 24: goproto.proto.test3.optional_optional_fixed64:extendee -> google.protobuf.MessageOptions
-	0,  // 25: goproto.proto.test3.optional_optional_sfixed32:extendee -> google.protobuf.MessageOptions
-	0,  // 26: goproto.proto.test3.optional_optional_sfixed64:extendee -> google.protobuf.MessageOptions
-	0,  // 27: goproto.proto.test3.optional_optional_float:extendee -> google.protobuf.MessageOptions
-	0,  // 28: goproto.proto.test3.optional_optional_double:extendee -> google.protobuf.MessageOptions
-	0,  // 29: goproto.proto.test3.optional_optional_bool:extendee -> google.protobuf.MessageOptions
-	0,  // 30: goproto.proto.test3.optional_optional_string:extendee -> google.protobuf.MessageOptions
-	0,  // 31: goproto.proto.test3.optional_optional_bytes:extendee -> google.protobuf.MessageOptions
-	0,  // 32: goproto.proto.test3.optional_optional_foreign_message:extendee -> google.protobuf.MessageOptions
-	0,  // 33: goproto.proto.test3.optional_optional_foreign_enum:extendee -> google.protobuf.MessageOptions
-	1,  // 34: goproto.proto.test3.optional_foreign_message:type_name -> goproto.proto.test3.ForeignMessage
-	2,  // 35: goproto.proto.test3.optional_foreign_enum:type_name -> goproto.proto.test3.ForeignEnum
-	1,  // 36: goproto.proto.test3.optional_optional_foreign_message:type_name -> goproto.proto.test3.ForeignMessage
-	2,  // 37: goproto.proto.test3.optional_optional_foreign_enum:type_name -> goproto.proto.test3.ForeignEnum
-	38, // [38:38] is the sub-list for method output_type
-	38, // [38:38] is the sub-list for method input_type
-	34, // [34:38] is the sub-list for extension type_name
-	0,  // [0:34] is the sub-list for extension extendee
-	0,  // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_test3_test_extension_proto_init() }
-func file_internal_testprotos_test3_test_extension_proto_init() {
-	if File_internal_testprotos_test3_test_extension_proto != nil {
-		return
-	}
-	file_internal_testprotos_test3_test_proto_init()
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_test3_test_extension_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   0,
-			NumExtensions: 34,
-			NumServices:   0,
-		},
-		GoTypes:           file_internal_testprotos_test3_test_extension_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_test3_test_extension_proto_depIdxs,
-		ExtensionInfos:    file_internal_testprotos_test3_test_extension_proto_extTypes,
-	}.Build()
-	File_internal_testprotos_test3_test_extension_proto = out.File
-	file_internal_testprotos_test3_test_extension_proto_rawDesc = nil
-	file_internal_testprotos_test3_test_extension_proto_goTypes = nil
-	file_internal_testprotos_test3_test_extension_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/test3/test_extension.proto b/internal/testprotos/test3/test_extension.proto
deleted file mode 100644
index 18a8381..0000000
--- a/internal/testprotos/test3/test_extension.proto
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-
-package goproto.proto.test3;
-
-import "google/protobuf/descriptor.proto";
-import "internal/testprotos/test3/test.proto";
-
-option go_package = "google.golang.org/protobuf/internal/testprotos/test3";
-
-extend google.protobuf.MessageOptions {
-  int32         optional_int32    = 1001;
-  int64         optional_int64    = 1002;
-  uint32        optional_uint32   = 1003;
-  uint64        optional_uint64   = 1004;
-  sint32        optional_sint32   = 1005;
-  sint64        optional_sint64   = 1006;
-  fixed32       optional_fixed32  = 1007;
-  fixed64       optional_fixed64  = 1008;
-  sfixed32      optional_sfixed32 = 1009;
-  sfixed64      optional_sfixed64 = 1010;
-  float         optional_float    = 1011;
-  double        optional_double   = 1012;
-  bool          optional_bool     = 1013;
-  string        optional_string   = 1014;
-  bytes         optional_bytes    = 1015;
-  ForeignMessage optional_foreign_message = 1016;
-  ForeignEnum    optional_foreign_enum    = 1017;
-
-  optional int32         optional_optional_int32    = 2001;
-  optional int64         optional_optional_int64    = 2002;
-  optional uint32        optional_optional_uint32   = 2003;
-  optional uint64        optional_optional_uint64   = 2004;
-  optional sint32        optional_optional_sint32   = 2005;
-  optional sint64        optional_optional_sint64   = 2006;
-  optional fixed32       optional_optional_fixed32  = 2007;
-  optional fixed64       optional_optional_fixed64  = 2008;
-  optional sfixed32      optional_optional_sfixed32 = 2009;
-  optional sfixed64      optional_optional_sfixed64 = 2010;
-  optional float         optional_optional_float    = 2011;
-  optional double        optional_optional_double   = 2012;
-  optional bool          optional_optional_bool     = 2013;
-  optional string        optional_optional_string   = 2014;
-  optional bytes         optional_optional_bytes    = 2015;
-  optional ForeignMessage optional_optional_foreign_message = 2016;
-  optional ForeignEnum    optional_optional_foreign_enum    = 2017;
-}
diff --git a/internal/testprotos/test3/test_import.pb.go b/internal/testprotos/test3/test_import.pb.go
deleted file mode 100644
index 5fc6043..0000000
--- a/internal/testprotos/test3/test_import.pb.go
+++ /dev/null
@@ -1,179 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/test3/test_import.proto
-
-package test3
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type ImportEnum int32
-
-const (
-	ImportEnum_IMPORT_ZERO ImportEnum = 0
-)
-
-// Enum value maps for ImportEnum.
-var (
-	ImportEnum_name = map[int32]string{
-		0: "IMPORT_ZERO",
-	}
-	ImportEnum_value = map[string]int32{
-		"IMPORT_ZERO": 0,
-	}
-)
-
-func (x ImportEnum) Enum() *ImportEnum {
-	p := new(ImportEnum)
-	*p = x
-	return p
-}
-
-func (x ImportEnum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ImportEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_internal_testprotos_test3_test_import_proto_enumTypes[0].Descriptor()
-}
-
-func (ImportEnum) Type() protoreflect.EnumType {
-	return &file_internal_testprotos_test3_test_import_proto_enumTypes[0]
-}
-
-func (x ImportEnum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ImportEnum.Descriptor instead.
-func (ImportEnum) EnumDescriptor() ([]byte, []int) {
-	return file_internal_testprotos_test3_test_import_proto_rawDescGZIP(), []int{0}
-}
-
-type ImportMessage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *ImportMessage) Reset() {
-	*x = ImportMessage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_test3_test_import_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ImportMessage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ImportMessage) ProtoMessage() {}
-
-func (x *ImportMessage) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_test3_test_import_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ImportMessage.ProtoReflect.Descriptor instead.
-func (*ImportMessage) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_test3_test_import_proto_rawDescGZIP(), []int{0}
-}
-
-var File_internal_testprotos_test3_test_import_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_test3_test_import_proto_rawDesc = []byte{
-	0x0a, 0x2b, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x33, 0x2f, 0x74, 0x65, 0x73, 0x74,
-	0x5f, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x67,
-	0x6f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x74, 0x65, 0x73,
-	0x74, 0x33, 0x22, 0x0f, 0x0a, 0x0d, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x2a, 0x1d, 0x0a, 0x0a, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x75,
-	0x6d, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4d, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x5a, 0x45, 0x52, 0x4f,
-	0x10, 0x00, 0x42, 0x36, 0x5a, 0x34, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c,
-	0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x33, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x33,
-}
-
-var (
-	file_internal_testprotos_test3_test_import_proto_rawDescOnce sync.Once
-	file_internal_testprotos_test3_test_import_proto_rawDescData = file_internal_testprotos_test3_test_import_proto_rawDesc
-)
-
-func file_internal_testprotos_test3_test_import_proto_rawDescGZIP() []byte {
-	file_internal_testprotos_test3_test_import_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_test3_test_import_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_test3_test_import_proto_rawDescData)
-	})
-	return file_internal_testprotos_test3_test_import_proto_rawDescData
-}
-
-var file_internal_testprotos_test3_test_import_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_internal_testprotos_test3_test_import_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_internal_testprotos_test3_test_import_proto_goTypes = []interface{}{
-	(ImportEnum)(0),       // 0: goproto.proto.test3.ImportEnum
-	(*ImportMessage)(nil), // 1: goproto.proto.test3.ImportMessage
-}
-var file_internal_testprotos_test3_test_import_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_test3_test_import_proto_init() }
-func file_internal_testprotos_test3_test_import_proto_init() {
-	if File_internal_testprotos_test3_test_import_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_internal_testprotos_test3_test_import_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ImportMessage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_test3_test_import_proto_rawDesc,
-			NumEnums:      1,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_internal_testprotos_test3_test_import_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_test3_test_import_proto_depIdxs,
-		EnumInfos:         file_internal_testprotos_test3_test_import_proto_enumTypes,
-		MessageInfos:      file_internal_testprotos_test3_test_import_proto_msgTypes,
-	}.Build()
-	File_internal_testprotos_test3_test_import_proto = out.File
-	file_internal_testprotos_test3_test_import_proto_rawDesc = nil
-	file_internal_testprotos_test3_test_import_proto_goTypes = nil
-	file_internal_testprotos_test3_test_import_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/test3/test_import.proto b/internal/testprotos/test3/test_import.proto
deleted file mode 100644
index d639bd3..0000000
--- a/internal/testprotos/test3/test_import.proto
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-syntax = "proto3";
-
-package goproto.proto.test3;
-
-option go_package = "google.golang.org/protobuf/internal/testprotos/test3";
-
-message ImportMessage {
-}
-
-enum ImportEnum {
- IMPORT_ZERO = 0;
-}
diff --git a/internal/testprotos/textpb2/test.pb.go b/internal/testprotos/textpb2/test.pb.go
deleted file mode 100644
index 4c0124a..0000000
--- a/internal/testprotos/textpb2/test.pb.go
+++ /dev/null
@@ -1,2575 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Test Protobuf definitions with proto2 syntax.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/textpb2/test.proto
-
-package textpb2
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	anypb "google.golang.org/protobuf/types/known/anypb"
-	durationpb "google.golang.org/protobuf/types/known/durationpb"
-	emptypb "google.golang.org/protobuf/types/known/emptypb"
-	fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb"
-	structpb "google.golang.org/protobuf/types/known/structpb"
-	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
-	wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Enum int32
-
-const (
-	Enum_ONE Enum = 1
-	Enum_TWO Enum = 2
-	Enum_TEN Enum = 10
-)
-
-// Enum value maps for Enum.
-var (
-	Enum_name = map[int32]string{
-		1:  "ONE",
-		2:  "TWO",
-		10: "TEN",
-	}
-	Enum_value = map[string]int32{
-		"ONE": 1,
-		"TWO": 2,
-		"TEN": 10,
-	}
-)
-
-func (x Enum) Enum() *Enum {
-	p := new(Enum)
-	*p = x
-	return p
-}
-
-func (x Enum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum) Descriptor() protoreflect.EnumDescriptor {
-	return file_internal_testprotos_textpb2_test_proto_enumTypes[0].Descriptor()
-}
-
-func (Enum) Type() protoreflect.EnumType {
-	return &file_internal_testprotos_textpb2_test_proto_enumTypes[0]
-}
-
-func (x Enum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enum) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enum(num)
-	return nil
-}
-
-// Deprecated: Use Enum.Descriptor instead.
-func (Enum) EnumDescriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{0}
-}
-
-type Enums_NestedEnum int32
-
-const (
-	Enums_UNO  Enums_NestedEnum = 1
-	Enums_DOS  Enums_NestedEnum = 2
-	Enums_DIEZ Enums_NestedEnum = 10
-)
-
-// Enum value maps for Enums_NestedEnum.
-var (
-	Enums_NestedEnum_name = map[int32]string{
-		1:  "UNO",
-		2:  "DOS",
-		10: "DIEZ",
-	}
-	Enums_NestedEnum_value = map[string]int32{
-		"UNO":  1,
-		"DOS":  2,
-		"DIEZ": 10,
-	}
-)
-
-func (x Enums_NestedEnum) Enum() *Enums_NestedEnum {
-	p := new(Enums_NestedEnum)
-	*p = x
-	return p
-}
-
-func (x Enums_NestedEnum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enums_NestedEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_internal_testprotos_textpb2_test_proto_enumTypes[1].Descriptor()
-}
-
-func (Enums_NestedEnum) Type() protoreflect.EnumType {
-	return &file_internal_testprotos_textpb2_test_proto_enumTypes[1]
-}
-
-func (x Enums_NestedEnum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Enums_NestedEnum) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Enums_NestedEnum(num)
-	return nil
-}
-
-// Deprecated: Use Enums_NestedEnum.Descriptor instead.
-func (Enums_NestedEnum) EnumDescriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{1, 0}
-}
-
-// Scalars contains optional scalar fields.
-type Scalars struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OptBool     *bool    `protobuf:"varint,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
-	OptInt32    *int32   `protobuf:"varint,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
-	OptInt64    *int64   `protobuf:"varint,3,opt,name=opt_int64,json=optInt64" json:"opt_int64,omitempty"`
-	OptUint32   *uint32  `protobuf:"varint,4,opt,name=opt_uint32,json=optUint32" json:"opt_uint32,omitempty"`
-	OptUint64   *uint64  `protobuf:"varint,5,opt,name=opt_uint64,json=optUint64" json:"opt_uint64,omitempty"`
-	OptSint32   *int32   `protobuf:"zigzag32,6,opt,name=opt_sint32,json=optSint32" json:"opt_sint32,omitempty"`
-	OptSint64   *int64   `protobuf:"zigzag64,7,opt,name=opt_sint64,json=optSint64" json:"opt_sint64,omitempty"`
-	OptFixed32  *uint32  `protobuf:"fixed32,8,opt,name=opt_fixed32,json=optFixed32" json:"opt_fixed32,omitempty"`
-	OptFixed64  *uint64  `protobuf:"fixed64,9,opt,name=opt_fixed64,json=optFixed64" json:"opt_fixed64,omitempty"`
-	OptSfixed32 *int32   `protobuf:"fixed32,10,opt,name=opt_sfixed32,json=optSfixed32" json:"opt_sfixed32,omitempty"`
-	OptSfixed64 *int64   `protobuf:"fixed64,11,opt,name=opt_sfixed64,json=optSfixed64" json:"opt_sfixed64,omitempty"`
-	OptFloat    *float32 `protobuf:"fixed32,20,opt,name=opt_float,json=optFloat" json:"opt_float,omitempty"`
-	OptDouble   *float64 `protobuf:"fixed64,21,opt,name=opt_double,json=optDouble" json:"opt_double,omitempty"`
-	OptBytes    []byte   `protobuf:"bytes,14,opt,name=opt_bytes,json=optBytes" json:"opt_bytes,omitempty"`
-	OptString   *string  `protobuf:"bytes,13,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
-}
-
-func (x *Scalars) Reset() {
-	*x = Scalars{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Scalars) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Scalars) ProtoMessage() {}
-
-func (x *Scalars) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Scalars.ProtoReflect.Descriptor instead.
-func (*Scalars) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Scalars) GetOptBool() bool {
-	if x != nil && x.OptBool != nil {
-		return *x.OptBool
-	}
-	return false
-}
-
-func (x *Scalars) GetOptInt32() int32 {
-	if x != nil && x.OptInt32 != nil {
-		return *x.OptInt32
-	}
-	return 0
-}
-
-func (x *Scalars) GetOptInt64() int64 {
-	if x != nil && x.OptInt64 != nil {
-		return *x.OptInt64
-	}
-	return 0
-}
-
-func (x *Scalars) GetOptUint32() uint32 {
-	if x != nil && x.OptUint32 != nil {
-		return *x.OptUint32
-	}
-	return 0
-}
-
-func (x *Scalars) GetOptUint64() uint64 {
-	if x != nil && x.OptUint64 != nil {
-		return *x.OptUint64
-	}
-	return 0
-}
-
-func (x *Scalars) GetOptSint32() int32 {
-	if x != nil && x.OptSint32 != nil {
-		return *x.OptSint32
-	}
-	return 0
-}
-
-func (x *Scalars) GetOptSint64() int64 {
-	if x != nil && x.OptSint64 != nil {
-		return *x.OptSint64
-	}
-	return 0
-}
-
-func (x *Scalars) GetOptFixed32() uint32 {
-	if x != nil && x.OptFixed32 != nil {
-		return *x.OptFixed32
-	}
-	return 0
-}
-
-func (x *Scalars) GetOptFixed64() uint64 {
-	if x != nil && x.OptFixed64 != nil {
-		return *x.OptFixed64
-	}
-	return 0
-}
-
-func (x *Scalars) GetOptSfixed32() int32 {
-	if x != nil && x.OptSfixed32 != nil {
-		return *x.OptSfixed32
-	}
-	return 0
-}
-
-func (x *Scalars) GetOptSfixed64() int64 {
-	if x != nil && x.OptSfixed64 != nil {
-		return *x.OptSfixed64
-	}
-	return 0
-}
-
-func (x *Scalars) GetOptFloat() float32 {
-	if x != nil && x.OptFloat != nil {
-		return *x.OptFloat
-	}
-	return 0
-}
-
-func (x *Scalars) GetOptDouble() float64 {
-	if x != nil && x.OptDouble != nil {
-		return *x.OptDouble
-	}
-	return 0
-}
-
-func (x *Scalars) GetOptBytes() []byte {
-	if x != nil {
-		return x.OptBytes
-	}
-	return nil
-}
-
-func (x *Scalars) GetOptString() string {
-	if x != nil && x.OptString != nil {
-		return *x.OptString
-	}
-	return ""
-}
-
-// Message contains enum fields.
-type Enums struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OptEnum       *Enum              `protobuf:"varint,1,opt,name=opt_enum,json=optEnum,enum=pb2.Enum" json:"opt_enum,omitempty"`
-	RptEnum       []Enum             `protobuf:"varint,2,rep,name=rpt_enum,json=rptEnum,enum=pb2.Enum" json:"rpt_enum,omitempty"`
-	OptNestedEnum *Enums_NestedEnum  `protobuf:"varint,3,opt,name=opt_nested_enum,json=optNestedEnum,enum=pb2.Enums_NestedEnum" json:"opt_nested_enum,omitempty"`
-	RptNestedEnum []Enums_NestedEnum `protobuf:"varint,4,rep,name=rpt_nested_enum,json=rptNestedEnum,enum=pb2.Enums_NestedEnum" json:"rpt_nested_enum,omitempty"`
-}
-
-func (x *Enums) Reset() {
-	*x = Enums{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Enums) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Enums) ProtoMessage() {}
-
-func (x *Enums) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Enums.ProtoReflect.Descriptor instead.
-func (*Enums) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Enums) GetOptEnum() Enum {
-	if x != nil && x.OptEnum != nil {
-		return *x.OptEnum
-	}
-	return Enum_ONE
-}
-
-func (x *Enums) GetRptEnum() []Enum {
-	if x != nil {
-		return x.RptEnum
-	}
-	return nil
-}
-
-func (x *Enums) GetOptNestedEnum() Enums_NestedEnum {
-	if x != nil && x.OptNestedEnum != nil {
-		return *x.OptNestedEnum
-	}
-	return Enums_UNO
-}
-
-func (x *Enums) GetRptNestedEnum() []Enums_NestedEnum {
-	if x != nil {
-		return x.RptNestedEnum
-	}
-	return nil
-}
-
-// Message contains repeated fields.
-type Repeats struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	RptBool   []bool    `protobuf:"varint,1,rep,name=rpt_bool,json=rptBool" json:"rpt_bool,omitempty"`
-	RptInt32  []int32   `protobuf:"varint,2,rep,name=rpt_int32,json=rptInt32" json:"rpt_int32,omitempty"`
-	RptInt64  []int64   `protobuf:"varint,3,rep,name=rpt_int64,json=rptInt64" json:"rpt_int64,omitempty"`
-	RptUint32 []uint32  `protobuf:"varint,4,rep,name=rpt_uint32,json=rptUint32" json:"rpt_uint32,omitempty"`
-	RptUint64 []uint64  `protobuf:"varint,5,rep,name=rpt_uint64,json=rptUint64" json:"rpt_uint64,omitempty"`
-	RptFloat  []float32 `protobuf:"fixed32,6,rep,name=rpt_float,json=rptFloat" json:"rpt_float,omitempty"`
-	RptDouble []float64 `protobuf:"fixed64,7,rep,name=rpt_double,json=rptDouble" json:"rpt_double,omitempty"`
-	RptString []string  `protobuf:"bytes,8,rep,name=rpt_string,json=rptString" json:"rpt_string,omitempty"`
-	RptBytes  [][]byte  `protobuf:"bytes,9,rep,name=rpt_bytes,json=rptBytes" json:"rpt_bytes,omitempty"`
-}
-
-func (x *Repeats) Reset() {
-	*x = Repeats{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Repeats) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Repeats) ProtoMessage() {}
-
-func (x *Repeats) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Repeats.ProtoReflect.Descriptor instead.
-func (*Repeats) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Repeats) GetRptBool() []bool {
-	if x != nil {
-		return x.RptBool
-	}
-	return nil
-}
-
-func (x *Repeats) GetRptInt32() []int32 {
-	if x != nil {
-		return x.RptInt32
-	}
-	return nil
-}
-
-func (x *Repeats) GetRptInt64() []int64 {
-	if x != nil {
-		return x.RptInt64
-	}
-	return nil
-}
-
-func (x *Repeats) GetRptUint32() []uint32 {
-	if x != nil {
-		return x.RptUint32
-	}
-	return nil
-}
-
-func (x *Repeats) GetRptUint64() []uint64 {
-	if x != nil {
-		return x.RptUint64
-	}
-	return nil
-}
-
-func (x *Repeats) GetRptFloat() []float32 {
-	if x != nil {
-		return x.RptFloat
-	}
-	return nil
-}
-
-func (x *Repeats) GetRptDouble() []float64 {
-	if x != nil {
-		return x.RptDouble
-	}
-	return nil
-}
-
-func (x *Repeats) GetRptString() []string {
-	if x != nil {
-		return x.RptString
-	}
-	return nil
-}
-
-func (x *Repeats) GetRptBytes() [][]byte {
-	if x != nil {
-		return x.RptBytes
-	}
-	return nil
-}
-
-// Message contains map fields.
-type Maps struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Int32ToStr  map[int32]string   `protobuf:"bytes,1,rep,name=int32_to_str,json=int32ToStr" json:"int32_to_str,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	StrToNested map[string]*Nested `protobuf:"bytes,4,rep,name=str_to_nested,json=strToNested" json:"str_to_nested,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-}
-
-func (x *Maps) Reset() {
-	*x = Maps{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Maps) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Maps) ProtoMessage() {}
-
-func (x *Maps) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Maps.ProtoReflect.Descriptor instead.
-func (*Maps) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Maps) GetInt32ToStr() map[int32]string {
-	if x != nil {
-		return x.Int32ToStr
-	}
-	return nil
-}
-
-func (x *Maps) GetStrToNested() map[string]*Nested {
-	if x != nil {
-		return x.StrToNested
-	}
-	return nil
-}
-
-// Message type used as submessage.
-type Nested struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OptString *string `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
-	OptNested *Nested `protobuf:"bytes,2,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
-}
-
-func (x *Nested) Reset() {
-	*x = Nested{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Nested) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Nested) ProtoMessage() {}
-
-func (x *Nested) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Nested.ProtoReflect.Descriptor instead.
-func (*Nested) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Nested) GetOptString() string {
-	if x != nil && x.OptString != nil {
-		return *x.OptString
-	}
-	return ""
-}
-
-func (x *Nested) GetOptNested() *Nested {
-	if x != nil {
-		return x.OptNested
-	}
-	return nil
-}
-
-// Message contains message and group fields.
-type Nests struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OptNested *Nested           `protobuf:"bytes,1,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
-	Optgroup  *Nests_OptGroup   `protobuf:"group,2,opt,name=OptGroup,json=optgroup" json:"optgroup,omitempty"`
-	RptNested []*Nested         `protobuf:"bytes,4,rep,name=rpt_nested,json=rptNested" json:"rpt_nested,omitempty"`
-	Rptgroup  []*Nests_RptGroup `protobuf:"group,5,rep,name=RptGroup,json=rptgroup" json:"rptgroup,omitempty"`
-}
-
-func (x *Nests) Reset() {
-	*x = Nests{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Nests) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Nests) ProtoMessage() {}
-
-func (x *Nests) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Nests.ProtoReflect.Descriptor instead.
-func (*Nests) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *Nests) GetOptNested() *Nested {
-	if x != nil {
-		return x.OptNested
-	}
-	return nil
-}
-
-func (x *Nests) GetOptgroup() *Nests_OptGroup {
-	if x != nil {
-		return x.Optgroup
-	}
-	return nil
-}
-
-func (x *Nests) GetRptNested() []*Nested {
-	if x != nil {
-		return x.RptNested
-	}
-	return nil
-}
-
-func (x *Nests) GetRptgroup() []*Nests_RptGroup {
-	if x != nil {
-		return x.Rptgroup
-	}
-	return nil
-}
-
-// Message contains required fields.
-type Requireds struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ReqBool     *bool    `protobuf:"varint,1,req,name=req_bool,json=reqBool" json:"req_bool,omitempty"`
-	ReqSfixed64 *int64   `protobuf:"fixed64,2,req,name=req_sfixed64,json=reqSfixed64" json:"req_sfixed64,omitempty"`
-	ReqDouble   *float64 `protobuf:"fixed64,3,req,name=req_double,json=reqDouble" json:"req_double,omitempty"`
-	ReqString   *string  `protobuf:"bytes,4,req,name=req_string,json=reqString" json:"req_string,omitempty"`
-	ReqEnum     *Enum    `protobuf:"varint,5,req,name=req_enum,json=reqEnum,enum=pb2.Enum" json:"req_enum,omitempty"`
-	ReqNested   *Nested  `protobuf:"bytes,6,req,name=req_nested,json=reqNested" json:"req_nested,omitempty"`
-}
-
-func (x *Requireds) Reset() {
-	*x = Requireds{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Requireds) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Requireds) ProtoMessage() {}
-
-func (x *Requireds) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Requireds.ProtoReflect.Descriptor instead.
-func (*Requireds) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *Requireds) GetReqBool() bool {
-	if x != nil && x.ReqBool != nil {
-		return *x.ReqBool
-	}
-	return false
-}
-
-func (x *Requireds) GetReqSfixed64() int64 {
-	if x != nil && x.ReqSfixed64 != nil {
-		return *x.ReqSfixed64
-	}
-	return 0
-}
-
-func (x *Requireds) GetReqDouble() float64 {
-	if x != nil && x.ReqDouble != nil {
-		return *x.ReqDouble
-	}
-	return 0
-}
-
-func (x *Requireds) GetReqString() string {
-	if x != nil && x.ReqString != nil {
-		return *x.ReqString
-	}
-	return ""
-}
-
-func (x *Requireds) GetReqEnum() Enum {
-	if x != nil && x.ReqEnum != nil {
-		return *x.ReqEnum
-	}
-	return Enum_ONE
-}
-
-func (x *Requireds) GetReqNested() *Nested {
-	if x != nil {
-		return x.ReqNested
-	}
-	return nil
-}
-
-// Message contains both required and optional fields.
-type PartialRequired struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ReqString *string `protobuf:"bytes,1,req,name=req_string,json=reqString" json:"req_string,omitempty"`
-	OptString *string `protobuf:"bytes,2,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
-}
-
-func (x *PartialRequired) Reset() {
-	*x = PartialRequired{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *PartialRequired) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PartialRequired) ProtoMessage() {}
-
-func (x *PartialRequired) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use PartialRequired.ProtoReflect.Descriptor instead.
-func (*PartialRequired) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *PartialRequired) GetReqString() string {
-	if x != nil && x.ReqString != nil {
-		return *x.ReqString
-	}
-	return ""
-}
-
-func (x *PartialRequired) GetOptString() string {
-	if x != nil && x.OptString != nil {
-		return *x.OptString
-	}
-	return ""
-}
-
-type NestedWithRequired struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ReqString *string `protobuf:"bytes,1,req,name=req_string,json=reqString" json:"req_string,omitempty"`
-}
-
-func (x *NestedWithRequired) Reset() {
-	*x = NestedWithRequired{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *NestedWithRequired) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*NestedWithRequired) ProtoMessage() {}
-
-func (x *NestedWithRequired) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[8]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use NestedWithRequired.ProtoReflect.Descriptor instead.
-func (*NestedWithRequired) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *NestedWithRequired) GetReqString() string {
-	if x != nil && x.ReqString != nil {
-		return *x.ReqString
-	}
-	return ""
-}
-
-type IndirectRequired struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OptNested   *NestedWithRequired            `protobuf:"bytes,1,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
-	RptNested   []*NestedWithRequired          `protobuf:"bytes,2,rep,name=rpt_nested,json=rptNested" json:"rpt_nested,omitempty"`
-	StrToNested map[string]*NestedWithRequired `protobuf:"bytes,3,rep,name=str_to_nested,json=strToNested" json:"str_to_nested,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
-	// Types that are assignable to Union:
-	//	*IndirectRequired_OneofNested
-	Union isIndirectRequired_Union `protobuf_oneof:"union"`
-}
-
-func (x *IndirectRequired) Reset() {
-	*x = IndirectRequired{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[9]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *IndirectRequired) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*IndirectRequired) ProtoMessage() {}
-
-func (x *IndirectRequired) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[9]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use IndirectRequired.ProtoReflect.Descriptor instead.
-func (*IndirectRequired) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *IndirectRequired) GetOptNested() *NestedWithRequired {
-	if x != nil {
-		return x.OptNested
-	}
-	return nil
-}
-
-func (x *IndirectRequired) GetRptNested() []*NestedWithRequired {
-	if x != nil {
-		return x.RptNested
-	}
-	return nil
-}
-
-func (x *IndirectRequired) GetStrToNested() map[string]*NestedWithRequired {
-	if x != nil {
-		return x.StrToNested
-	}
-	return nil
-}
-
-func (m *IndirectRequired) GetUnion() isIndirectRequired_Union {
-	if m != nil {
-		return m.Union
-	}
-	return nil
-}
-
-func (x *IndirectRequired) GetOneofNested() *NestedWithRequired {
-	if x, ok := x.GetUnion().(*IndirectRequired_OneofNested); ok {
-		return x.OneofNested
-	}
-	return nil
-}
-
-type isIndirectRequired_Union interface {
-	isIndirectRequired_Union()
-}
-
-type IndirectRequired_OneofNested struct {
-	OneofNested *NestedWithRequired `protobuf:"bytes,4,opt,name=oneof_nested,json=oneofNested,oneof"`
-}
-
-func (*IndirectRequired_OneofNested) isIndirectRequired_Union() {}
-
-type Extensions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	OptString *string `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
-	OptBool   *bool   `protobuf:"varint,101,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
-	OptInt32  *int32  `protobuf:"varint,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
-}
-
-func (x *Extensions) Reset() {
-	*x = Extensions{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[10]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Extensions) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Extensions) ProtoMessage() {}
-
-func (x *Extensions) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[10]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Extensions.ProtoReflect.Descriptor instead.
-func (*Extensions) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *Extensions) GetOptString() string {
-	if x != nil && x.OptString != nil {
-		return *x.OptString
-	}
-	return ""
-}
-
-func (x *Extensions) GetOptBool() bool {
-	if x != nil && x.OptBool != nil {
-		return *x.OptBool
-	}
-	return false
-}
-
-func (x *Extensions) GetOptInt32() int32 {
-	if x != nil && x.OptInt32 != nil {
-		return *x.OptInt32
-	}
-	return 0
-}
-
-type ExtensionsContainer struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *ExtensionsContainer) Reset() {
-	*x = ExtensionsContainer{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[11]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ExtensionsContainer) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ExtensionsContainer) ProtoMessage() {}
-
-func (x *ExtensionsContainer) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[11]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ExtensionsContainer.ProtoReflect.Descriptor instead.
-func (*ExtensionsContainer) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{11}
-}
-
-type MessageSet struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-}
-
-func (x *MessageSet) Reset() {
-	*x = MessageSet{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[12]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *MessageSet) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MessageSet) ProtoMessage() {}
-
-func (x *MessageSet) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[12]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use MessageSet.ProtoReflect.Descriptor instead.
-func (*MessageSet) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{12}
-}
-
-type MessageSetExtension struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OptString *string `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
-}
-
-func (x *MessageSetExtension) Reset() {
-	*x = MessageSetExtension{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[13]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *MessageSetExtension) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MessageSetExtension) ProtoMessage() {}
-
-func (x *MessageSetExtension) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[13]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use MessageSetExtension.ProtoReflect.Descriptor instead.
-func (*MessageSetExtension) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *MessageSetExtension) GetOptString() string {
-	if x != nil && x.OptString != nil {
-		return *x.OptString
-	}
-	return ""
-}
-
-type FakeMessageSet struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-}
-
-func (x *FakeMessageSet) Reset() {
-	*x = FakeMessageSet{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[14]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *FakeMessageSet) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FakeMessageSet) ProtoMessage() {}
-
-func (x *FakeMessageSet) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[14]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use FakeMessageSet.ProtoReflect.Descriptor instead.
-func (*FakeMessageSet) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{14}
-}
-
-type FakeMessageSetExtension struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OptString *string `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
-}
-
-func (x *FakeMessageSetExtension) Reset() {
-	*x = FakeMessageSetExtension{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[15]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *FakeMessageSetExtension) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FakeMessageSetExtension) ProtoMessage() {}
-
-func (x *FakeMessageSetExtension) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[15]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use FakeMessageSetExtension.ProtoReflect.Descriptor instead.
-func (*FakeMessageSetExtension) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{15}
-}
-
-func (x *FakeMessageSetExtension) GetOptString() string {
-	if x != nil && x.OptString != nil {
-		return *x.OptString
-	}
-	return ""
-}
-
-// Message contains well-known type fields.
-type KnownTypes struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OptBool      *wrapperspb.BoolValue   `protobuf:"bytes,1,opt,name=opt_bool,json=optBool" json:"opt_bool,omitempty"`
-	OptInt32     *wrapperspb.Int32Value  `protobuf:"bytes,2,opt,name=opt_int32,json=optInt32" json:"opt_int32,omitempty"`
-	OptInt64     *wrapperspb.Int64Value  `protobuf:"bytes,3,opt,name=opt_int64,json=optInt64" json:"opt_int64,omitempty"`
-	OptUint32    *wrapperspb.UInt32Value `protobuf:"bytes,4,opt,name=opt_uint32,json=optUint32" json:"opt_uint32,omitempty"`
-	OptUint64    *wrapperspb.UInt64Value `protobuf:"bytes,5,opt,name=opt_uint64,json=optUint64" json:"opt_uint64,omitempty"`
-	OptFloat     *wrapperspb.FloatValue  `protobuf:"bytes,6,opt,name=opt_float,json=optFloat" json:"opt_float,omitempty"`
-	OptDouble    *wrapperspb.DoubleValue `protobuf:"bytes,7,opt,name=opt_double,json=optDouble" json:"opt_double,omitempty"`
-	OptString    *wrapperspb.StringValue `protobuf:"bytes,8,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
-	OptBytes     *wrapperspb.BytesValue  `protobuf:"bytes,9,opt,name=opt_bytes,json=optBytes" json:"opt_bytes,omitempty"`
-	OptDuration  *durationpb.Duration    `protobuf:"bytes,20,opt,name=opt_duration,json=optDuration" json:"opt_duration,omitempty"`
-	OptTimestamp *timestamppb.Timestamp  `protobuf:"bytes,21,opt,name=opt_timestamp,json=optTimestamp" json:"opt_timestamp,omitempty"`
-	OptStruct    *structpb.Struct        `protobuf:"bytes,25,opt,name=opt_struct,json=optStruct" json:"opt_struct,omitempty"`
-	OptList      *structpb.ListValue     `protobuf:"bytes,26,opt,name=opt_list,json=optList" json:"opt_list,omitempty"`
-	OptValue     *structpb.Value         `protobuf:"bytes,27,opt,name=opt_value,json=optValue" json:"opt_value,omitempty"`
-	OptNull      *structpb.NullValue     `protobuf:"varint,28,opt,name=opt_null,json=optNull,enum=google.protobuf.NullValue" json:"opt_null,omitempty"`
-	OptEmpty     *emptypb.Empty          `protobuf:"bytes,30,opt,name=opt_empty,json=optEmpty" json:"opt_empty,omitempty"`
-	OptAny       *anypb.Any              `protobuf:"bytes,32,opt,name=opt_any,json=optAny" json:"opt_any,omitempty"`
-	OptFieldmask *fieldmaskpb.FieldMask  `protobuf:"bytes,40,opt,name=opt_fieldmask,json=optFieldmask" json:"opt_fieldmask,omitempty"`
-}
-
-func (x *KnownTypes) Reset() {
-	*x = KnownTypes{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[16]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *KnownTypes) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*KnownTypes) ProtoMessage() {}
-
-func (x *KnownTypes) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[16]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use KnownTypes.ProtoReflect.Descriptor instead.
-func (*KnownTypes) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *KnownTypes) GetOptBool() *wrapperspb.BoolValue {
-	if x != nil {
-		return x.OptBool
-	}
-	return nil
-}
-
-func (x *KnownTypes) GetOptInt32() *wrapperspb.Int32Value {
-	if x != nil {
-		return x.OptInt32
-	}
-	return nil
-}
-
-func (x *KnownTypes) GetOptInt64() *wrapperspb.Int64Value {
-	if x != nil {
-		return x.OptInt64
-	}
-	return nil
-}
-
-func (x *KnownTypes) GetOptUint32() *wrapperspb.UInt32Value {
-	if x != nil {
-		return x.OptUint32
-	}
-	return nil
-}
-
-func (x *KnownTypes) GetOptUint64() *wrapperspb.UInt64Value {
-	if x != nil {
-		return x.OptUint64
-	}
-	return nil
-}
-
-func (x *KnownTypes) GetOptFloat() *wrapperspb.FloatValue {
-	if x != nil {
-		return x.OptFloat
-	}
-	return nil
-}
-
-func (x *KnownTypes) GetOptDouble() *wrapperspb.DoubleValue {
-	if x != nil {
-		return x.OptDouble
-	}
-	return nil
-}
-
-func (x *KnownTypes) GetOptString() *wrapperspb.StringValue {
-	if x != nil {
-		return x.OptString
-	}
-	return nil
-}
-
-func (x *KnownTypes) GetOptBytes() *wrapperspb.BytesValue {
-	if x != nil {
-		return x.OptBytes
-	}
-	return nil
-}
-
-func (x *KnownTypes) GetOptDuration() *durationpb.Duration {
-	if x != nil {
-		return x.OptDuration
-	}
-	return nil
-}
-
-func (x *KnownTypes) GetOptTimestamp() *timestamppb.Timestamp {
-	if x != nil {
-		return x.OptTimestamp
-	}
-	return nil
-}
-
-func (x *KnownTypes) GetOptStruct() *structpb.Struct {
-	if x != nil {
-		return x.OptStruct
-	}
-	return nil
-}
-
-func (x *KnownTypes) GetOptList() *structpb.ListValue {
-	if x != nil {
-		return x.OptList
-	}
-	return nil
-}
-
-func (x *KnownTypes) GetOptValue() *structpb.Value {
-	if x != nil {
-		return x.OptValue
-	}
-	return nil
-}
-
-func (x *KnownTypes) GetOptNull() structpb.NullValue {
-	if x != nil && x.OptNull != nil {
-		return *x.OptNull
-	}
-	return structpb.NullValue(0)
-}
-
-func (x *KnownTypes) GetOptEmpty() *emptypb.Empty {
-	if x != nil {
-		return x.OptEmpty
-	}
-	return nil
-}
-
-func (x *KnownTypes) GetOptAny() *anypb.Any {
-	if x != nil {
-		return x.OptAny
-	}
-	return nil
-}
-
-func (x *KnownTypes) GetOptFieldmask() *fieldmaskpb.FieldMask {
-	if x != nil {
-		return x.OptFieldmask
-	}
-	return nil
-}
-
-type Nests_OptGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OptString      *string                        `protobuf:"bytes,1,opt,name=opt_string,json=optString" json:"opt_string,omitempty"`
-	OptNested      *Nested                        `protobuf:"bytes,2,opt,name=opt_nested,json=optNested" json:"opt_nested,omitempty"`
-	Optnestedgroup *Nests_OptGroup_OptNestedGroup `protobuf:"group,3,opt,name=OptNestedGroup,json=optnestedgroup" json:"optnestedgroup,omitempty"`
-}
-
-func (x *Nests_OptGroup) Reset() {
-	*x = Nests_OptGroup{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[19]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Nests_OptGroup) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Nests_OptGroup) ProtoMessage() {}
-
-func (x *Nests_OptGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[19]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Nests_OptGroup.ProtoReflect.Descriptor instead.
-func (*Nests_OptGroup) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{5, 0}
-}
-
-func (x *Nests_OptGroup) GetOptString() string {
-	if x != nil && x.OptString != nil {
-		return *x.OptString
-	}
-	return ""
-}
-
-func (x *Nests_OptGroup) GetOptNested() *Nested {
-	if x != nil {
-		return x.OptNested
-	}
-	return nil
-}
-
-func (x *Nests_OptGroup) GetOptnestedgroup() *Nests_OptGroup_OptNestedGroup {
-	if x != nil {
-		return x.Optnestedgroup
-	}
-	return nil
-}
-
-type Nests_RptGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	RptString []string `protobuf:"bytes,1,rep,name=rpt_string,json=rptString" json:"rpt_string,omitempty"`
-}
-
-func (x *Nests_RptGroup) Reset() {
-	*x = Nests_RptGroup{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[20]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Nests_RptGroup) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Nests_RptGroup) ProtoMessage() {}
-
-func (x *Nests_RptGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[20]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Nests_RptGroup.ProtoReflect.Descriptor instead.
-func (*Nests_RptGroup) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{5, 1}
-}
-
-func (x *Nests_RptGroup) GetRptString() []string {
-	if x != nil {
-		return x.RptString
-	}
-	return nil
-}
-
-type Nests_OptGroup_OptNestedGroup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OptFixed32 *uint32 `protobuf:"fixed32,1,opt,name=opt_fixed32,json=optFixed32" json:"opt_fixed32,omitempty"`
-}
-
-func (x *Nests_OptGroup_OptNestedGroup) Reset() {
-	*x = Nests_OptGroup_OptNestedGroup{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[21]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Nests_OptGroup_OptNestedGroup) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Nests_OptGroup_OptNestedGroup) ProtoMessage() {}
-
-func (x *Nests_OptGroup_OptNestedGroup) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb2_test_proto_msgTypes[21]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Nests_OptGroup_OptNestedGroup.ProtoReflect.Descriptor instead.
-func (*Nests_OptGroup_OptNestedGroup) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb2_test_proto_rawDescGZIP(), []int{5, 0, 0}
-}
-
-func (x *Nests_OptGroup_OptNestedGroup) GetOptFixed32() uint32 {
-	if x != nil && x.OptFixed32 != nil {
-		return *x.OptFixed32
-	}
-	return 0
-}
-
-var file_internal_testprotos_textpb2_test_proto_extTypes = []protoimpl.ExtensionInfo{
-	{
-		ExtendedType:  (*Extensions)(nil),
-		ExtensionType: (*bool)(nil),
-		Field:         21,
-		Name:          "pb2.opt_ext_bool",
-		Tag:           "varint,21,opt,name=opt_ext_bool",
-		Filename:      "internal/testprotos/textpb2/test.proto",
-	},
-	{
-		ExtendedType:  (*Extensions)(nil),
-		ExtensionType: (*string)(nil),
-		Field:         22,
-		Name:          "pb2.opt_ext_string",
-		Tag:           "bytes,22,opt,name=opt_ext_string",
-		Filename:      "internal/testprotos/textpb2/test.proto",
-	},
-	{
-		ExtendedType:  (*Extensions)(nil),
-		ExtensionType: (*Enum)(nil),
-		Field:         23,
-		Name:          "pb2.opt_ext_enum",
-		Tag:           "varint,23,opt,name=opt_ext_enum,enum=pb2.Enum",
-		Filename:      "internal/testprotos/textpb2/test.proto",
-	},
-	{
-		ExtendedType:  (*Extensions)(nil),
-		ExtensionType: (*Nested)(nil),
-		Field:         24,
-		Name:          "pb2.opt_ext_nested",
-		Tag:           "bytes,24,opt,name=opt_ext_nested",
-		Filename:      "internal/testprotos/textpb2/test.proto",
-	},
-	{
-		ExtendedType:  (*Extensions)(nil),
-		ExtensionType: (*PartialRequired)(nil),
-		Field:         25,
-		Name:          "pb2.opt_ext_partial",
-		Tag:           "bytes,25,opt,name=opt_ext_partial",
-		Filename:      "internal/testprotos/textpb2/test.proto",
-	},
-	{
-		ExtendedType:  (*Extensions)(nil),
-		ExtensionType: ([]uint32)(nil),
-		Field:         31,
-		Name:          "pb2.rpt_ext_fixed32",
-		Tag:           "fixed32,31,rep,name=rpt_ext_fixed32",
-		Filename:      "internal/testprotos/textpb2/test.proto",
-	},
-	{
-		ExtendedType:  (*Extensions)(nil),
-		ExtensionType: ([]Enum)(nil),
-		Field:         32,
-		Name:          "pb2.rpt_ext_enum",
-		Tag:           "varint,32,rep,name=rpt_ext_enum,enum=pb2.Enum",
-		Filename:      "internal/testprotos/textpb2/test.proto",
-	},
-	{
-		ExtendedType:  (*Extensions)(nil),
-		ExtensionType: ([]*Nested)(nil),
-		Field:         33,
-		Name:          "pb2.rpt_ext_nested",
-		Tag:           "bytes,33,rep,name=rpt_ext_nested",
-		Filename:      "internal/testprotos/textpb2/test.proto",
-	},
-	{
-		ExtendedType:  (*MessageSet)(nil),
-		ExtensionType: (*FakeMessageSetExtension)(nil),
-		Field:         50,
-		Name:          "pb2.message_set_extension",
-		Tag:           "bytes,50,opt,name=message_set_extension",
-		Filename:      "internal/testprotos/textpb2/test.proto",
-	},
-	{
-		ExtendedType:  (*Extensions)(nil),
-		ExtensionType: (*bool)(nil),
-		Field:         51,
-		Name:          "pb2.ExtensionsContainer.opt_ext_bool",
-		Tag:           "varint,51,opt,name=opt_ext_bool",
-		Filename:      "internal/testprotos/textpb2/test.proto",
-	},
-	{
-		ExtendedType:  (*Extensions)(nil),
-		ExtensionType: (*string)(nil),
-		Field:         52,
-		Name:          "pb2.ExtensionsContainer.opt_ext_string",
-		Tag:           "bytes,52,opt,name=opt_ext_string",
-		Filename:      "internal/testprotos/textpb2/test.proto",
-	},
-	{
-		ExtendedType:  (*Extensions)(nil),
-		ExtensionType: (*Enum)(nil),
-		Field:         53,
-		Name:          "pb2.ExtensionsContainer.opt_ext_enum",
-		Tag:           "varint,53,opt,name=opt_ext_enum,enum=pb2.Enum",
-		Filename:      "internal/testprotos/textpb2/test.proto",
-	},
-	{
-		ExtendedType:  (*Extensions)(nil),
-		ExtensionType: (*Nested)(nil),
-		Field:         54,
-		Name:          "pb2.ExtensionsContainer.opt_ext_nested",
-		Tag:           "bytes,54,opt,name=opt_ext_nested",
-		Filename:      "internal/testprotos/textpb2/test.proto",
-	},
-	{
-		ExtendedType:  (*Extensions)(nil),
-		ExtensionType: (*PartialRequired)(nil),
-		Field:         55,
-		Name:          "pb2.ExtensionsContainer.opt_ext_partial",
-		Tag:           "bytes,55,opt,name=opt_ext_partial",
-		Filename:      "internal/testprotos/textpb2/test.proto",
-	},
-	{
-		ExtendedType:  (*Extensions)(nil),
-		ExtensionType: ([]string)(nil),
-		Field:         61,
-		Name:          "pb2.ExtensionsContainer.rpt_ext_string",
-		Tag:           "bytes,61,rep,name=rpt_ext_string",
-		Filename:      "internal/testprotos/textpb2/test.proto",
-	},
-	{
-		ExtendedType:  (*Extensions)(nil),
-		ExtensionType: ([]Enum)(nil),
-		Field:         62,
-		Name:          "pb2.ExtensionsContainer.rpt_ext_enum",
-		Tag:           "varint,62,rep,name=rpt_ext_enum,enum=pb2.Enum",
-		Filename:      "internal/testprotos/textpb2/test.proto",
-	},
-	{
-		ExtendedType:  (*Extensions)(nil),
-		ExtensionType: ([]*Nested)(nil),
-		Field:         63,
-		Name:          "pb2.ExtensionsContainer.rpt_ext_nested",
-		Tag:           "bytes,63,rep,name=rpt_ext_nested",
-		Filename:      "internal/testprotos/textpb2/test.proto",
-	},
-	{
-		ExtendedType:  (*MessageSet)(nil),
-		ExtensionType: (*MessageSetExtension)(nil),
-		Field:         10,
-		Name:          "pb2.MessageSetExtension.message_set_extension",
-		Tag:           "bytes,10,opt,name=message_set_extension",
-		Filename:      "internal/testprotos/textpb2/test.proto",
-	},
-	{
-		ExtendedType:  (*MessageSet)(nil),
-		ExtensionType: (*MessageSetExtension)(nil),
-		Field:         20,
-		Name:          "pb2.MessageSetExtension.not_message_set_extension",
-		Tag:           "bytes,20,opt,name=not_message_set_extension",
-		Filename:      "internal/testprotos/textpb2/test.proto",
-	},
-	{
-		ExtendedType:  (*MessageSet)(nil),
-		ExtensionType: (*Nested)(nil),
-		Field:         30,
-		Name:          "pb2.MessageSetExtension.ext_nested",
-		Tag:           "bytes,30,opt,name=ext_nested",
-		Filename:      "internal/testprotos/textpb2/test.proto",
-	},
-	{
-		ExtendedType:  (*FakeMessageSet)(nil),
-		ExtensionType: (*FakeMessageSetExtension)(nil),
-		Field:         10,
-		Name:          "pb2.FakeMessageSetExtension.message_set_extension",
-		Tag:           "bytes,10,opt,name=message_set_extension",
-		Filename:      "internal/testprotos/textpb2/test.proto",
-	},
-}
-
-// Extension fields to Extensions.
-var (
-	// optional bool opt_ext_bool = 21;
-	E_OptExtBool = &file_internal_testprotos_textpb2_test_proto_extTypes[0]
-	// optional string opt_ext_string = 22;
-	E_OptExtString = &file_internal_testprotos_textpb2_test_proto_extTypes[1]
-	// optional pb2.Enum opt_ext_enum = 23;
-	E_OptExtEnum = &file_internal_testprotos_textpb2_test_proto_extTypes[2]
-	// optional pb2.Nested opt_ext_nested = 24;
-	E_OptExtNested = &file_internal_testprotos_textpb2_test_proto_extTypes[3]
-	// optional pb2.PartialRequired opt_ext_partial = 25;
-	E_OptExtPartial = &file_internal_testprotos_textpb2_test_proto_extTypes[4]
-	// repeated fixed32 rpt_ext_fixed32 = 31;
-	E_RptExtFixed32 = &file_internal_testprotos_textpb2_test_proto_extTypes[5]
-	// repeated pb2.Enum rpt_ext_enum = 32;
-	E_RptExtEnum = &file_internal_testprotos_textpb2_test_proto_extTypes[6]
-	// repeated pb2.Nested rpt_ext_nested = 33;
-	E_RptExtNested = &file_internal_testprotos_textpb2_test_proto_extTypes[7]
-	// optional bool opt_ext_bool = 51;
-	E_ExtensionsContainer_OptExtBool = &file_internal_testprotos_textpb2_test_proto_extTypes[9]
-	// optional string opt_ext_string = 52;
-	E_ExtensionsContainer_OptExtString = &file_internal_testprotos_textpb2_test_proto_extTypes[10]
-	// optional pb2.Enum opt_ext_enum = 53;
-	E_ExtensionsContainer_OptExtEnum = &file_internal_testprotos_textpb2_test_proto_extTypes[11]
-	// optional pb2.Nested opt_ext_nested = 54;
-	E_ExtensionsContainer_OptExtNested = &file_internal_testprotos_textpb2_test_proto_extTypes[12]
-	// optional pb2.PartialRequired opt_ext_partial = 55;
-	E_ExtensionsContainer_OptExtPartial = &file_internal_testprotos_textpb2_test_proto_extTypes[13]
-	// repeated string rpt_ext_string = 61;
-	E_ExtensionsContainer_RptExtString = &file_internal_testprotos_textpb2_test_proto_extTypes[14]
-	// repeated pb2.Enum rpt_ext_enum = 62;
-	E_ExtensionsContainer_RptExtEnum = &file_internal_testprotos_textpb2_test_proto_extTypes[15]
-	// repeated pb2.Nested rpt_ext_nested = 63;
-	E_ExtensionsContainer_RptExtNested = &file_internal_testprotos_textpb2_test_proto_extTypes[16]
-)
-
-// Extension fields to MessageSet.
-var (
-	// optional pb2.FakeMessageSetExtension message_set_extension = 50;
-	E_MessageSetExtension = &file_internal_testprotos_textpb2_test_proto_extTypes[8]
-	// optional pb2.MessageSetExtension message_set_extension = 10;
-	E_MessageSetExtension_MessageSetExtension = &file_internal_testprotos_textpb2_test_proto_extTypes[17]
-	// optional pb2.MessageSetExtension not_message_set_extension = 20;
-	E_MessageSetExtension_NotMessageSetExtension = &file_internal_testprotos_textpb2_test_proto_extTypes[18]
-	// optional pb2.Nested ext_nested = 30;
-	E_MessageSetExtension_ExtNested = &file_internal_testprotos_textpb2_test_proto_extTypes[19]
-)
-
-// Extension fields to FakeMessageSet.
-var (
-	// optional pb2.FakeMessageSetExtension message_set_extension = 10;
-	E_FakeMessageSetExtension_MessageSetExtension = &file_internal_testprotos_textpb2_test_proto_extTypes[20]
-)
-
-var File_internal_testprotos_textpb2_test_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_textpb2_test_proto_rawDesc = []byte{
-	0x0a, 0x26, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x70, 0x62, 0x32, 0x2f, 0x74, 0x65,
-	0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x70, 0x62, 0x32, 0x1a, 0x19, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61,
-	0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73,
-	0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
-	0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xda, 0x03, 0x0a, 0x07, 0x53, 0x63, 0x61, 0x6c, 0x61,
-	0x72, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1b, 0x0a,
-	0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70,
-	0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6f,
-	0x70, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6f, 0x70, 0x74,
-	0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x55,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x18, 0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x69, 0x6e,
-	0x74, 0x36, 0x34, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64,
-	0x33, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x46, 0x69, 0x78,
-	0x65, 0x64, 0x33, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x69, 0x78, 0x65,
-	0x64, 0x36, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28, 0x06, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x46, 0x69,
-	0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x0b, 0x6f, 0x70, 0x74,
-	0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f,
-	0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x10, 0x52, 0x0b,
-	0x6f, 0x70, 0x74, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1b, 0x0a, 0x09, 0x6f,
-	0x70, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08,
-	0x6f, 0x70, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f,
-	0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6f, 0x70,
-	0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x62,
-	0x79, 0x74, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x42,
-	0x79, 0x74, 0x65, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x22, 0xfb, 0x01, 0x0a, 0x05, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x12, 0x24, 0x0a,
-	0x08, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
-	0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x45,
-	0x6e, 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x08, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18,
-	0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d,
-	0x52, 0x07, 0x72, 0x70, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x3d, 0x0a, 0x0f, 0x6f, 0x70, 0x74,
-	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x15, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x4e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x3d, 0x0a, 0x0f, 0x72, 0x70, 0x74, 0x5f,
-	0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28,
-	0x0e, 0x32, 0x15, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0d, 0x72, 0x70, 0x74, 0x4e, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x22, 0x28, 0x0a, 0x0a, 0x4e, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x4e, 0x4f, 0x10, 0x01, 0x12, 0x07,
-	0x0a, 0x03, 0x44, 0x4f, 0x53, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x49, 0x45, 0x5a, 0x10,
-	0x0a, 0x22, 0x94, 0x02, 0x0a, 0x07, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x73, 0x12, 0x19, 0x0a,
-	0x08, 0x72, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x08, 0x52,
-	0x07, 0x72, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x72, 0x70, 0x74,
-	0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x72, 0x70, 0x74, 0x49, 0x6e, 0x74,
-	0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32,
-	0x18, 0x04, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33,
-	0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18,
-	0x05, 0x20, 0x03, 0x28, 0x04, 0x52, 0x09, 0x72, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34,
-	0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x06, 0x20,
-	0x03, 0x28, 0x02, 0x52, 0x08, 0x72, 0x70, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x1d, 0x0a,
-	0x0a, 0x72, 0x70, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28,
-	0x01, 0x52, 0x09, 0x72, 0x70, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a,
-	0x72, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09,
-	0x52, 0x09, 0x72, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x72,
-	0x70, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x08,
-	0x72, 0x70, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x8f, 0x02, 0x0a, 0x04, 0x4d, 0x61, 0x70,
-	0x73, 0x12, 0x3b, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74, 0x6f, 0x5f, 0x73, 0x74,
-	0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x61,
-	0x70, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x54, 0x6f, 0x53, 0x74, 0x72, 0x45, 0x6e, 0x74,
-	0x72, 0x79, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x54, 0x6f, 0x53, 0x74, 0x72, 0x12, 0x3e,
-	0x0a, 0x0d, 0x73, 0x74, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18,
-	0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x61, 0x70, 0x73,
-	0x2e, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x1a, 0x3d,
-	0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x54, 0x6f, 0x53, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
-	0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4b, 0x0a,
-	0x10, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
-	0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x53, 0x0a, 0x06, 0x4e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x12, 0x2a, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22,
-	0xd3, 0x03, 0x0a, 0x05, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x0a, 0x6f, 0x70, 0x74,
-	0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e,
-	0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x2f, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x67, 0x72, 0x6f, 0x75,
-	0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0a, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65,
-	0x73, 0x74, 0x73, 0x2e, 0x4f, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x08, 0x6f, 0x70,
-	0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x6e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32,
-	0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x72, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x12, 0x2f, 0x0a, 0x08, 0x72, 0x70, 0x74, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x05,
-	0x20, 0x03, 0x28, 0x0a, 0x32, 0x13, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x73,
-	0x2e, 0x52, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x08, 0x72, 0x70, 0x74, 0x67, 0x72,
-	0x6f, 0x75, 0x70, 0x1a, 0xd4, 0x01, 0x0a, 0x08, 0x4f, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70,
-	0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12,
-	0x2a, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x0e, 0x6f,
-	0x70, 0x74, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x0a, 0x32, 0x22, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x73, 0x2e,
-	0x4f, 0x70, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x4f, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x6e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x31, 0x0a, 0x0e, 0x4f, 0x70, 0x74, 0x4e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70, 0x74,
-	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x01, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0a,
-	0x6f, 0x70, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x1a, 0x29, 0x0a, 0x08, 0x52, 0x70,
-	0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x73, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x70, 0x74, 0x53,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f,
-	0x66, 0x69, 0x65, 0x6c, 0x64, 0x22, 0xd9, 0x01, 0x0a, 0x09, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72,
-	0x65, 0x64, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18,
-	0x01, 0x20, 0x02, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x71, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x21,
-	0x0a, 0x0c, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x02,
-	0x20, 0x02, 0x28, 0x10, 0x52, 0x0b, 0x72, 0x65, 0x71, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36,
-	0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18,
-	0x03, 0x20, 0x02, 0x28, 0x01, 0x52, 0x09, 0x72, 0x65, 0x71, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65,
-	0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04,
-	0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12,
-	0x24, 0x0a, 0x08, 0x72, 0x65, 0x71, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x05, 0x20, 0x02, 0x28,
-	0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x72, 0x65,
-	0x71, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x2a, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f, 0x6e, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x18, 0x06, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e,
-	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x72, 0x65, 0x71, 0x4e, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x22, 0x4f, 0x0a, 0x0f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75,
-	0x69, 0x72, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f, 0x73, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x71, 0x53, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x22, 0x33, 0x0a, 0x12, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68,
-	0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65, 0x71, 0x5f,
-	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65,
-	0x71, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0xee, 0x02, 0x0a, 0x10, 0x49, 0x6e, 0x64, 0x69,
-	0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x0a,
-	0x6f, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x17, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74,
-	0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x4e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65,
-	0x64, 0x52, 0x09, 0x72, 0x70, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x0d,
-	0x73, 0x74, 0x72, 0x5f, 0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x49, 0x6e, 0x64, 0x69, 0x72, 0x65,
-	0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2e, 0x53, 0x74, 0x72, 0x54, 0x6f,
-	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x74, 0x72,
-	0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f,
-	0x66, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17,
-	0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52,
-	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66,
-	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x1a, 0x57, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
-	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x62,
-	0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x57, 0x69, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75,
-	0x69, 0x72, 0x65, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42,
-	0x07, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x22, 0x69, 0x0a, 0x0a, 0x45, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74,
-	0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f,
-	0x6c, 0x18, 0x65, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c,
-	0x12, 0x1b, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x2a, 0x04, 0x08,
-	0x14, 0x10, 0x65, 0x22, 0x89, 0x04, 0x0a, 0x13, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x32, 0x31, 0x0a, 0x0c, 0x6f,
-	0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x0f, 0x2e, 0x70, 0x62,
-	0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x33, 0x20, 0x01,
-	0x28, 0x08, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x32, 0x35,
-	0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x73, 0x18, 0x34, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x53,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x3c, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74,
-	0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70,
-	0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45,
-	0x6e, 0x75, 0x6d, 0x32, 0x42, 0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70,
-	0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78,
-	0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x32, 0x4d, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x5f, 0x65,
-	0x78, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32,
-	0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x37, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x14, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x52,
-	0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x50,
-	0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x32, 0x35, 0x0a, 0x0e, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78,
-	0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3d, 0x20, 0x03, 0x28, 0x09, 0x52,
-	0x0c, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x3c, 0x0a,
-	0x0c, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x2e,
-	0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3e,
-	0x20, 0x03, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52,
-	0x0a, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x32, 0x42, 0x0a, 0x0e, 0x72,
-	0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x0f, 0x2e,
-	0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x3f,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x52, 0x0c, 0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22,
-	0x1a, 0x0a, 0x0a, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x2a, 0x08, 0x08,
-	0x04, 0x10, 0xff, 0xff, 0xff, 0xff, 0x07, 0x3a, 0x02, 0x08, 0x01, 0x22, 0xb6, 0x02, 0x0a, 0x13,
-	0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69,
-	0x6e, 0x67, 0x32, 0x5d, 0x0a, 0x15, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65,
-	0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x2e, 0x70, 0x62,
-	0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65,
-	0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
-	0x6e, 0x32, 0x64, 0x0a, 0x19, 0x6e, 0x6f, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0f,
-	0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18,
-	0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52,
-	0x16, 0x6e, 0x6f, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x32, 0x3b, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x5f, 0x6e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70,
-	0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x09, 0x65, 0x78, 0x74, 0x4e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x22, 0x1a, 0x0a, 0x0e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x2a, 0x08, 0x08, 0x04, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02,
-	0x22, 0x9f, 0x01, 0x0a, 0x17, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a,
-	0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x32, 0x65, 0x0a, 0x15, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x46, 0x61, 0x6b, 0x65, 0x4d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x1c, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67,
-	0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x22, 0x9e, 0x08, 0x0a, 0x0a, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79, 0x70, 0x65,
-	0x73, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
-	0x07, 0x6f, 0x70, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e,
-	0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74,
-	0x33, 0x32, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c,
-	0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x3b, 0x0a, 0x0a,
-	0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09,
-	0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74,
-	0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74,
-	0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x6c,
-	0x6f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x6c, 0x6f, 0x61,
-	0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74,
-	0x12, 0x3b, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x07,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c,
-	0x75, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x3b, 0x0a,
-	0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
-	0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x38, 0x0a, 0x09, 0x6f, 0x70,
-	0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x42, 0x79, 0x74, 0x65, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x42,
-	0x79, 0x74, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x64, 0x75, 0x72, 0x61,
-	0x74, 0x69, 0x6f, 0x6e, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72,
-	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69,
-	0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
-	0x61, 0x6d, 0x70, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
-	0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
-	0x61, 0x6d, 0x70, 0x12, 0x36, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x75, 0x63,
-	0x74, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74,
-	0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x6f,
-	0x70, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x4c, 0x69,
-	0x73, 0x74, 0x12, 0x33, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
-	0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6f,
-	0x70, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x6e,
-	0x75, 0x6c, 0x6c, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4e, 0x75, 0x6c, 0x6c,
-	0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x4e, 0x75, 0x6c, 0x6c, 0x12, 0x33,
-	0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x1e, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x45, 0x6d,
-	0x70, 0x74, 0x79, 0x12, 0x2d, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x5f, 0x61, 0x6e, 0x79, 0x18, 0x20,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x06, 0x6f, 0x70, 0x74, 0x41,
-	0x6e, 0x79, 0x12, 0x3f, 0x0a, 0x0d, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x6d,
-	0x61, 0x73, 0x6b, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c,
-	0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x6d,
-	0x61, 0x73, 0x6b, 0x2a, 0x21, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x07, 0x0a, 0x03, 0x4f,
-	0x4e, 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x57, 0x4f, 0x10, 0x02, 0x12, 0x07, 0x0a,
-	0x03, 0x54, 0x45, 0x4e, 0x10, 0x0a, 0x3a, 0x31, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78,
-	0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6f,
-	0x70, 0x74, 0x45, 0x78, 0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x3a, 0x35, 0x0a, 0x0e, 0x6f, 0x70, 0x74,
-	0x5f, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x0f, 0x2e, 0x70, 0x62,
-	0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x16, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x3a, 0x3c, 0x0a, 0x0c, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d,
-	0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e,
-	0x75, 0x6d, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x42,
-	0x0a, 0x0e, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64,
-	0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x52, 0x0c, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x3a, 0x4d, 0x0a, 0x0f, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61,
-	0x72, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x19, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70,
-	0x62, 0x32, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72,
-	0x65, 0x64, 0x52, 0x0d, 0x6f, 0x70, 0x74, 0x45, 0x78, 0x74, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61,
-	0x6c, 0x3a, 0x37, 0x0a, 0x0f, 0x72, 0x70, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x78,
-	0x65, 0x64, 0x33, 0x32, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x1f, 0x20, 0x03, 0x28, 0x07, 0x52, 0x0d, 0x72, 0x70, 0x74,
-	0x45, 0x78, 0x74, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x3a, 0x3c, 0x0a, 0x0c, 0x72, 0x70,
-	0x74, 0x5f, 0x65, 0x78, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32,
-	0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28,
-	0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x72, 0x70,
-	0x74, 0x45, 0x78, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x42, 0x0a, 0x0e, 0x72, 0x70, 0x74, 0x5f,
-	0x65, 0x78, 0x74, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32,
-	0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x21, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x0c,
-	0x72, 0x70, 0x74, 0x45, 0x78, 0x74, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x3a, 0x61, 0x0a, 0x15,
-	0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x32, 0x2e, 0x4d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70,
-	0x62, 0x32, 0x2e, 0x46, 0x61, 0x6b, 0x65, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65,
-	0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x6d, 0x65, 0x73, 0x73,
-	0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x42,
-	0x38, 0x5a, 0x36, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
-	0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x69, 0x6e,
-	0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x73, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x70, 0x62, 0x32,
-}
-
-var (
-	file_internal_testprotos_textpb2_test_proto_rawDescOnce sync.Once
-	file_internal_testprotos_textpb2_test_proto_rawDescData = file_internal_testprotos_textpb2_test_proto_rawDesc
-)
-
-func file_internal_testprotos_textpb2_test_proto_rawDescGZIP() []byte {
-	file_internal_testprotos_textpb2_test_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_textpb2_test_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_textpb2_test_proto_rawDescData)
-	})
-	return file_internal_testprotos_textpb2_test_proto_rawDescData
-}
-
-var file_internal_testprotos_textpb2_test_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_internal_testprotos_textpb2_test_proto_msgTypes = make([]protoimpl.MessageInfo, 23)
-var file_internal_testprotos_textpb2_test_proto_goTypes = []interface{}{
-	(Enum)(0),                             // 0: pb2.Enum
-	(Enums_NestedEnum)(0),                 // 1: pb2.Enums.NestedEnum
-	(*Scalars)(nil),                       // 2: pb2.Scalars
-	(*Enums)(nil),                         // 3: pb2.Enums
-	(*Repeats)(nil),                       // 4: pb2.Repeats
-	(*Maps)(nil),                          // 5: pb2.Maps
-	(*Nested)(nil),                        // 6: pb2.Nested
-	(*Nests)(nil),                         // 7: pb2.Nests
-	(*Requireds)(nil),                     // 8: pb2.Requireds
-	(*PartialRequired)(nil),               // 9: pb2.PartialRequired
-	(*NestedWithRequired)(nil),            // 10: pb2.NestedWithRequired
-	(*IndirectRequired)(nil),              // 11: pb2.IndirectRequired
-	(*Extensions)(nil),                    // 12: pb2.Extensions
-	(*ExtensionsContainer)(nil),           // 13: pb2.ExtensionsContainer
-	(*MessageSet)(nil),                    // 14: pb2.MessageSet
-	(*MessageSetExtension)(nil),           // 15: pb2.MessageSetExtension
-	(*FakeMessageSet)(nil),                // 16: pb2.FakeMessageSet
-	(*FakeMessageSetExtension)(nil),       // 17: pb2.FakeMessageSetExtension
-	(*KnownTypes)(nil),                    // 18: pb2.KnownTypes
-	nil,                                   // 19: pb2.Maps.Int32ToStrEntry
-	nil,                                   // 20: pb2.Maps.StrToNestedEntry
-	(*Nests_OptGroup)(nil),                // 21: pb2.Nests.OptGroup
-	(*Nests_RptGroup)(nil),                // 22: pb2.Nests.RptGroup
-	(*Nests_OptGroup_OptNestedGroup)(nil), // 23: pb2.Nests.OptGroup.OptNestedGroup
-	nil,                                   // 24: pb2.IndirectRequired.StrToNestedEntry
-	(*wrapperspb.BoolValue)(nil),          // 25: google.protobuf.BoolValue
-	(*wrapperspb.Int32Value)(nil),         // 26: google.protobuf.Int32Value
-	(*wrapperspb.Int64Value)(nil),         // 27: google.protobuf.Int64Value
-	(*wrapperspb.UInt32Value)(nil),        // 28: google.protobuf.UInt32Value
-	(*wrapperspb.UInt64Value)(nil),        // 29: google.protobuf.UInt64Value
-	(*wrapperspb.FloatValue)(nil),         // 30: google.protobuf.FloatValue
-	(*wrapperspb.DoubleValue)(nil),        // 31: google.protobuf.DoubleValue
-	(*wrapperspb.StringValue)(nil),        // 32: google.protobuf.StringValue
-	(*wrapperspb.BytesValue)(nil),         // 33: google.protobuf.BytesValue
-	(*durationpb.Duration)(nil),           // 34: google.protobuf.Duration
-	(*timestamppb.Timestamp)(nil),         // 35: google.protobuf.Timestamp
-	(*structpb.Struct)(nil),               // 36: google.protobuf.Struct
-	(*structpb.ListValue)(nil),            // 37: google.protobuf.ListValue
-	(*structpb.Value)(nil),                // 38: google.protobuf.Value
-	(structpb.NullValue)(0),               // 39: google.protobuf.NullValue
-	(*emptypb.Empty)(nil),                 // 40: google.protobuf.Empty
-	(*anypb.Any)(nil),                     // 41: google.protobuf.Any
-	(*fieldmaskpb.FieldMask)(nil),         // 42: google.protobuf.FieldMask
-}
-var file_internal_testprotos_textpb2_test_proto_depIdxs = []int32{
-	0,  // 0: pb2.Enums.opt_enum:type_name -> pb2.Enum
-	0,  // 1: pb2.Enums.rpt_enum:type_name -> pb2.Enum
-	1,  // 2: pb2.Enums.opt_nested_enum:type_name -> pb2.Enums.NestedEnum
-	1,  // 3: pb2.Enums.rpt_nested_enum:type_name -> pb2.Enums.NestedEnum
-	19, // 4: pb2.Maps.int32_to_str:type_name -> pb2.Maps.Int32ToStrEntry
-	20, // 5: pb2.Maps.str_to_nested:type_name -> pb2.Maps.StrToNestedEntry
-	6,  // 6: pb2.Nested.opt_nested:type_name -> pb2.Nested
-	6,  // 7: pb2.Nests.opt_nested:type_name -> pb2.Nested
-	21, // 8: pb2.Nests.optgroup:type_name -> pb2.Nests.OptGroup
-	6,  // 9: pb2.Nests.rpt_nested:type_name -> pb2.Nested
-	22, // 10: pb2.Nests.rptgroup:type_name -> pb2.Nests.RptGroup
-	0,  // 11: pb2.Requireds.req_enum:type_name -> pb2.Enum
-	6,  // 12: pb2.Requireds.req_nested:type_name -> pb2.Nested
-	10, // 13: pb2.IndirectRequired.opt_nested:type_name -> pb2.NestedWithRequired
-	10, // 14: pb2.IndirectRequired.rpt_nested:type_name -> pb2.NestedWithRequired
-	24, // 15: pb2.IndirectRequired.str_to_nested:type_name -> pb2.IndirectRequired.StrToNestedEntry
-	10, // 16: pb2.IndirectRequired.oneof_nested:type_name -> pb2.NestedWithRequired
-	25, // 17: pb2.KnownTypes.opt_bool:type_name -> google.protobuf.BoolValue
-	26, // 18: pb2.KnownTypes.opt_int32:type_name -> google.protobuf.Int32Value
-	27, // 19: pb2.KnownTypes.opt_int64:type_name -> google.protobuf.Int64Value
-	28, // 20: pb2.KnownTypes.opt_uint32:type_name -> google.protobuf.UInt32Value
-	29, // 21: pb2.KnownTypes.opt_uint64:type_name -> google.protobuf.UInt64Value
-	30, // 22: pb2.KnownTypes.opt_float:type_name -> google.protobuf.FloatValue
-	31, // 23: pb2.KnownTypes.opt_double:type_name -> google.protobuf.DoubleValue
-	32, // 24: pb2.KnownTypes.opt_string:type_name -> google.protobuf.StringValue
-	33, // 25: pb2.KnownTypes.opt_bytes:type_name -> google.protobuf.BytesValue
-	34, // 26: pb2.KnownTypes.opt_duration:type_name -> google.protobuf.Duration
-	35, // 27: pb2.KnownTypes.opt_timestamp:type_name -> google.protobuf.Timestamp
-	36, // 28: pb2.KnownTypes.opt_struct:type_name -> google.protobuf.Struct
-	37, // 29: pb2.KnownTypes.opt_list:type_name -> google.protobuf.ListValue
-	38, // 30: pb2.KnownTypes.opt_value:type_name -> google.protobuf.Value
-	39, // 31: pb2.KnownTypes.opt_null:type_name -> google.protobuf.NullValue
-	40, // 32: pb2.KnownTypes.opt_empty:type_name -> google.protobuf.Empty
-	41, // 33: pb2.KnownTypes.opt_any:type_name -> google.protobuf.Any
-	42, // 34: pb2.KnownTypes.opt_fieldmask:type_name -> google.protobuf.FieldMask
-	6,  // 35: pb2.Maps.StrToNestedEntry.value:type_name -> pb2.Nested
-	6,  // 36: pb2.Nests.OptGroup.opt_nested:type_name -> pb2.Nested
-	23, // 37: pb2.Nests.OptGroup.optnestedgroup:type_name -> pb2.Nests.OptGroup.OptNestedGroup
-	10, // 38: pb2.IndirectRequired.StrToNestedEntry.value:type_name -> pb2.NestedWithRequired
-	12, // 39: pb2.opt_ext_bool:extendee -> pb2.Extensions
-	12, // 40: pb2.opt_ext_string:extendee -> pb2.Extensions
-	12, // 41: pb2.opt_ext_enum:extendee -> pb2.Extensions
-	12, // 42: pb2.opt_ext_nested:extendee -> pb2.Extensions
-	12, // 43: pb2.opt_ext_partial:extendee -> pb2.Extensions
-	12, // 44: pb2.rpt_ext_fixed32:extendee -> pb2.Extensions
-	12, // 45: pb2.rpt_ext_enum:extendee -> pb2.Extensions
-	12, // 46: pb2.rpt_ext_nested:extendee -> pb2.Extensions
-	14, // 47: pb2.message_set_extension:extendee -> pb2.MessageSet
-	12, // 48: pb2.ExtensionsContainer.opt_ext_bool:extendee -> pb2.Extensions
-	12, // 49: pb2.ExtensionsContainer.opt_ext_string:extendee -> pb2.Extensions
-	12, // 50: pb2.ExtensionsContainer.opt_ext_enum:extendee -> pb2.Extensions
-	12, // 51: pb2.ExtensionsContainer.opt_ext_nested:extendee -> pb2.Extensions
-	12, // 52: pb2.ExtensionsContainer.opt_ext_partial:extendee -> pb2.Extensions
-	12, // 53: pb2.ExtensionsContainer.rpt_ext_string:extendee -> pb2.Extensions
-	12, // 54: pb2.ExtensionsContainer.rpt_ext_enum:extendee -> pb2.Extensions
-	12, // 55: pb2.ExtensionsContainer.rpt_ext_nested:extendee -> pb2.Extensions
-	14, // 56: pb2.MessageSetExtension.message_set_extension:extendee -> pb2.MessageSet
-	14, // 57: pb2.MessageSetExtension.not_message_set_extension:extendee -> pb2.MessageSet
-	14, // 58: pb2.MessageSetExtension.ext_nested:extendee -> pb2.MessageSet
-	16, // 59: pb2.FakeMessageSetExtension.message_set_extension:extendee -> pb2.FakeMessageSet
-	0,  // 60: pb2.opt_ext_enum:type_name -> pb2.Enum
-	6,  // 61: pb2.opt_ext_nested:type_name -> pb2.Nested
-	9,  // 62: pb2.opt_ext_partial:type_name -> pb2.PartialRequired
-	0,  // 63: pb2.rpt_ext_enum:type_name -> pb2.Enum
-	6,  // 64: pb2.rpt_ext_nested:type_name -> pb2.Nested
-	17, // 65: pb2.message_set_extension:type_name -> pb2.FakeMessageSetExtension
-	0,  // 66: pb2.ExtensionsContainer.opt_ext_enum:type_name -> pb2.Enum
-	6,  // 67: pb2.ExtensionsContainer.opt_ext_nested:type_name -> pb2.Nested
-	9,  // 68: pb2.ExtensionsContainer.opt_ext_partial:type_name -> pb2.PartialRequired
-	0,  // 69: pb2.ExtensionsContainer.rpt_ext_enum:type_name -> pb2.Enum
-	6,  // 70: pb2.ExtensionsContainer.rpt_ext_nested:type_name -> pb2.Nested
-	15, // 71: pb2.MessageSetExtension.message_set_extension:type_name -> pb2.MessageSetExtension
-	15, // 72: pb2.MessageSetExtension.not_message_set_extension:type_name -> pb2.MessageSetExtension
-	6,  // 73: pb2.MessageSetExtension.ext_nested:type_name -> pb2.Nested
-	17, // 74: pb2.FakeMessageSetExtension.message_set_extension:type_name -> pb2.FakeMessageSetExtension
-	75, // [75:75] is the sub-list for method output_type
-	75, // [75:75] is the sub-list for method input_type
-	60, // [60:75] is the sub-list for extension type_name
-	39, // [39:60] is the sub-list for extension extendee
-	0,  // [0:39] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_textpb2_test_proto_init() }
-func file_internal_testprotos_textpb2_test_proto_init() {
-	if File_internal_testprotos_textpb2_test_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_internal_testprotos_textpb2_test_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Scalars); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb2_test_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Enums); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb2_test_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Repeats); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb2_test_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Maps); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb2_test_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Nested); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb2_test_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Nests); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb2_test_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Requireds); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb2_test_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PartialRequired); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb2_test_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*NestedWithRequired); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb2_test_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*IndirectRequired); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb2_test_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Extensions); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb2_test_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ExtensionsContainer); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb2_test_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MessageSet); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb2_test_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MessageSetExtension); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb2_test_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FakeMessageSet); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb2_test_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FakeMessageSetExtension); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb2_test_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*KnownTypes); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb2_test_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Nests_OptGroup); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb2_test_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Nests_RptGroup); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb2_test_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Nests_OptGroup_OptNestedGroup); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	file_internal_testprotos_textpb2_test_proto_msgTypes[9].OneofWrappers = []interface{}{
-		(*IndirectRequired_OneofNested)(nil),
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_textpb2_test_proto_rawDesc,
-			NumEnums:      2,
-			NumMessages:   23,
-			NumExtensions: 21,
-			NumServices:   0,
-		},
-		GoTypes:           file_internal_testprotos_textpb2_test_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_textpb2_test_proto_depIdxs,
-		EnumInfos:         file_internal_testprotos_textpb2_test_proto_enumTypes,
-		MessageInfos:      file_internal_testprotos_textpb2_test_proto_msgTypes,
-		ExtensionInfos:    file_internal_testprotos_textpb2_test_proto_extTypes,
-	}.Build()
-	File_internal_testprotos_textpb2_test_proto = out.File
-	file_internal_testprotos_textpb2_test_proto_rawDesc = nil
-	file_internal_testprotos_textpb2_test_proto_goTypes = nil
-	file_internal_testprotos_textpb2_test_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/textpb2/test.proto b/internal/testprotos/textpb2/test.proto
deleted file mode 100644
index a23558b..0000000
--- a/internal/testprotos/textpb2/test.proto
+++ /dev/null
@@ -1,234 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Test Protobuf definitions with proto2 syntax.
-syntax = "proto2";
-
-package pb2;
-option go_package = "google.golang.org/protobuf/internal/testprotos/textpb2";
-
-import "google/protobuf/any.proto";
-import "google/protobuf/empty.proto";
-import "google/protobuf/field_mask.proto";
-import "google/protobuf/duration.proto";
-import "google/protobuf/struct.proto";
-import "google/protobuf/timestamp.proto";
-import "google/protobuf/wrappers.proto";
-
-// Scalars contains optional scalar fields.
-message Scalars {
-  optional bool opt_bool = 1;
-  optional int32 opt_int32 = 2;
-  optional int64 opt_int64 = 3;
-  optional uint32 opt_uint32 = 4;
-  optional uint64 opt_uint64 = 5;
-  optional sint32 opt_sint32 = 6;
-  optional sint64 opt_sint64 = 7;
-  optional fixed32 opt_fixed32 = 8;
-  optional fixed64 opt_fixed64 = 9;
-  optional sfixed32 opt_sfixed32 = 10;
-  optional sfixed64 opt_sfixed64 = 11;
-
-  // Textproto marshal outputs fields in the same order as this proto
-  // definition regardless of field number. Following fields are intended to
-  // test that assumption.
-
-  optional float opt_float = 20;
-  optional double opt_double = 21;
-
-  optional bytes opt_bytes = 14;
-  optional string opt_string = 13;
-}
-
-enum Enum {
-  ONE = 1;
-  TWO = 2;
-  TEN = 10;
-}
-
-// Message contains enum fields.
-message Enums {
-  optional Enum opt_enum = 1;
-  repeated Enum rpt_enum = 2;
-
-  enum NestedEnum {
-	UNO = 1;
-	DOS = 2;
-	DIEZ = 10;
-  }
-  optional NestedEnum opt_nested_enum = 3;
-  repeated NestedEnum rpt_nested_enum = 4;
-}
-
-// Message contains repeated fields.
-message Repeats {
-  repeated bool rpt_bool = 1;
-  repeated int32 rpt_int32 = 2;
-  repeated int64 rpt_int64 = 3;
-  repeated uint32 rpt_uint32 = 4;
-  repeated uint64 rpt_uint64 = 5;
-  repeated float rpt_float = 6;
-  repeated double rpt_double = 7;
-  repeated string rpt_string = 8;
-  repeated bytes rpt_bytes = 9;
-}
-
-// Message contains map fields.
-message Maps {
-  map<int32, string> int32_to_str = 1;
-  map<string, Nested> str_to_nested = 4;
-}
-
-// Message type used as submessage.
-message Nested {
-  optional string opt_string = 1;
-  optional Nested opt_nested = 2;
-}
-
-// Message contains message and group fields.
-message Nests {
-  optional Nested opt_nested = 1;
-  optional group OptGroup = 2 {
-    optional string opt_string = 1;
-    optional Nested opt_nested = 2;
-
-    optional group OptNestedGroup = 3 {
-      optional fixed32 opt_fixed32 = 1;
-    }
-  }
-
-  repeated Nested rpt_nested = 4;
-  repeated group RptGroup = 5 {
-    repeated string rpt_string = 1;
-  }
-
-  reserved "reserved_field";
-}
-
-// Message contains required fields.
-message Requireds {
-  required bool req_bool = 1;
-  required sfixed64 req_sfixed64 = 2;
-  required double req_double = 3;
-  required string req_string = 4;
-  required Enum req_enum = 5;
-  required Nested req_nested = 6;
-}
-
-// Message contains both required and optional fields.
-message PartialRequired {
-  required string req_string = 1;
-  optional string opt_string = 2;
-}
-
-// Following messages are for testing required field nested in optional, repeated and map fields.
-
-message NestedWithRequired {
-  required string req_string = 1;
-}
-
-message IndirectRequired {
-  optional NestedWithRequired opt_nested = 1;
-  repeated NestedWithRequired rpt_nested = 2;
-  map<string, NestedWithRequired> str_to_nested = 3;
-
-  oneof union {
-    NestedWithRequired oneof_nested = 4;
-  }
-}
-
-// Following messages are for testing extensions.
-
-message Extensions {
-  optional string opt_string = 1;
-  extensions 20 to 100;
-  optional bool opt_bool = 101;
-  optional int32 opt_int32 = 2;
-}
-
-extend Extensions {
-  optional bool opt_ext_bool = 21;
-  optional string opt_ext_string = 22;
-  optional Enum opt_ext_enum = 23;
-  optional Nested opt_ext_nested = 24;
-  optional PartialRequired opt_ext_partial = 25;
-
-  repeated fixed32 rpt_ext_fixed32 = 31;
-  repeated Enum rpt_ext_enum = 32;
-  repeated Nested rpt_ext_nested = 33;
-}
-
-message ExtensionsContainer {
-  extend Extensions {
-    optional bool opt_ext_bool = 51;
-    optional string opt_ext_string = 52;
-    optional Enum opt_ext_enum = 53;
-    optional Nested opt_ext_nested = 54;
-    optional PartialRequired opt_ext_partial = 55;
-
-    repeated string rpt_ext_string = 61;
-    repeated Enum rpt_ext_enum = 62;
-    repeated Nested rpt_ext_nested = 63;
-  }
-}
-
-// Following messages are for testing MessageSet.
-
-message MessageSet {
-  option message_set_wire_format = true;
-
-  extensions 4 to max;
-}
-
-message MessageSetExtension {
-  optional string opt_string = 1;
-
-  extend MessageSet {
-    optional MessageSetExtension message_set_extension = 10;
-    optional MessageSetExtension not_message_set_extension = 20;
-    optional Nested ext_nested = 30;
-  }
-}
-
-message FakeMessageSet {
-  extensions 4 to max;
-}
-
-message FakeMessageSetExtension {
-  optional string opt_string = 1;
-
-  extend FakeMessageSet {
-    optional FakeMessageSetExtension message_set_extension = 10;
-  }
-}
-
-extend MessageSet {
-  optional FakeMessageSetExtension message_set_extension = 50;
-}
-
-// Message contains well-known type fields.
-message KnownTypes {
-  optional google.protobuf.BoolValue opt_bool = 1;
-  optional google.protobuf.Int32Value opt_int32 = 2;
-  optional google.protobuf.Int64Value opt_int64 = 3;
-  optional google.protobuf.UInt32Value opt_uint32 = 4;
-  optional google.protobuf.UInt64Value opt_uint64 = 5;
-  optional google.protobuf.FloatValue opt_float = 6;
-  optional google.protobuf.DoubleValue opt_double = 7;
-  optional google.protobuf.StringValue opt_string = 8;
-  optional google.protobuf.BytesValue opt_bytes = 9;
-
-  optional google.protobuf.Duration opt_duration = 20;
-  optional google.protobuf.Timestamp opt_timestamp = 21;
-
-  optional google.protobuf.Struct opt_struct = 25;
-  optional google.protobuf.ListValue opt_list = 26;
-  optional google.protobuf.Value opt_value = 27;
-  optional google.protobuf.NullValue opt_null = 28;
-
-  optional google.protobuf.Empty opt_empty = 30;
-  optional google.protobuf.Any opt_any = 32;
-
-  optional google.protobuf.FieldMask opt_fieldmask = 40;
-}
diff --git a/internal/testprotos/textpb3/test.pb.go b/internal/testprotos/textpb3/test.pb.go
deleted file mode 100644
index 51e94c8..0000000
--- a/internal/testprotos/textpb3/test.pb.go
+++ /dev/null
@@ -1,1269 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Test Protobuf definitions with proto3 syntax.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: internal/testprotos/textpb3/test.proto
-
-package textpb3
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type Enum int32
-
-const (
-	Enum_ZERO Enum = 0
-	Enum_ONE  Enum = 1
-	Enum_TWO  Enum = 2
-	Enum_TEN  Enum = 10
-)
-
-// Enum value maps for Enum.
-var (
-	Enum_name = map[int32]string{
-		0:  "ZERO",
-		1:  "ONE",
-		2:  "TWO",
-		10: "TEN",
-	}
-	Enum_value = map[string]int32{
-		"ZERO": 0,
-		"ONE":  1,
-		"TWO":  2,
-		"TEN":  10,
-	}
-)
-
-func (x Enum) Enum() *Enum {
-	p := new(Enum)
-	*p = x
-	return p
-}
-
-func (x Enum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enum) Descriptor() protoreflect.EnumDescriptor {
-	return file_internal_testprotos_textpb3_test_proto_enumTypes[0].Descriptor()
-}
-
-func (Enum) Type() protoreflect.EnumType {
-	return &file_internal_testprotos_textpb3_test_proto_enumTypes[0]
-}
-
-func (x Enum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Enum.Descriptor instead.
-func (Enum) EnumDescriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb3_test_proto_rawDescGZIP(), []int{0}
-}
-
-type Enums_NestedEnum int32
-
-const (
-	Enums_CERO Enums_NestedEnum = 0
-	Enums_UNO  Enums_NestedEnum = 1
-	Enums_DOS  Enums_NestedEnum = 2
-	Enums_DIEZ Enums_NestedEnum = 10
-)
-
-// Enum value maps for Enums_NestedEnum.
-var (
-	Enums_NestedEnum_name = map[int32]string{
-		0:  "CERO",
-		1:  "UNO",
-		2:  "DOS",
-		10: "DIEZ",
-	}
-	Enums_NestedEnum_value = map[string]int32{
-		"CERO": 0,
-		"UNO":  1,
-		"DOS":  2,
-		"DIEZ": 10,
-	}
-)
-
-func (x Enums_NestedEnum) Enum() *Enums_NestedEnum {
-	p := new(Enums_NestedEnum)
-	*p = x
-	return p
-}
-
-func (x Enums_NestedEnum) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Enums_NestedEnum) Descriptor() protoreflect.EnumDescriptor {
-	return file_internal_testprotos_textpb3_test_proto_enumTypes[1].Descriptor()
-}
-
-func (Enums_NestedEnum) Type() protoreflect.EnumType {
-	return &file_internal_testprotos_textpb3_test_proto_enumTypes[1]
-}
-
-func (x Enums_NestedEnum) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Enums_NestedEnum.Descriptor instead.
-func (Enums_NestedEnum) EnumDescriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb3_test_proto_rawDescGZIP(), []int{3, 0}
-}
-
-// Scalars contains scalar field types.
-type Scalars struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	SBool     bool    `protobuf:"varint,1,opt,name=s_bool,json=sBool,proto3" json:"s_bool,omitempty"`
-	SInt32    int32   `protobuf:"varint,2,opt,name=s_int32,json=sInt32,proto3" json:"s_int32,omitempty"`
-	SInt64    int64   `protobuf:"varint,3,opt,name=s_int64,json=sInt64,proto3" json:"s_int64,omitempty"`
-	SUint32   uint32  `protobuf:"varint,4,opt,name=s_uint32,json=sUint32,proto3" json:"s_uint32,omitempty"`
-	SUint64   uint64  `protobuf:"varint,5,opt,name=s_uint64,json=sUint64,proto3" json:"s_uint64,omitempty"`
-	SSint32   int32   `protobuf:"zigzag32,6,opt,name=s_sint32,json=sSint32,proto3" json:"s_sint32,omitempty"`
-	SSint64   int64   `protobuf:"zigzag64,7,opt,name=s_sint64,json=sSint64,proto3" json:"s_sint64,omitempty"`
-	SFixed32  uint32  `protobuf:"fixed32,8,opt,name=s_fixed32,json=sFixed32,proto3" json:"s_fixed32,omitempty"`
-	SFixed64  uint64  `protobuf:"fixed64,9,opt,name=s_fixed64,json=sFixed64,proto3" json:"s_fixed64,omitempty"`
-	SSfixed32 int32   `protobuf:"fixed32,10,opt,name=s_sfixed32,json=sSfixed32,proto3" json:"s_sfixed32,omitempty"`
-	SSfixed64 int64   `protobuf:"fixed64,11,opt,name=s_sfixed64,json=sSfixed64,proto3" json:"s_sfixed64,omitempty"`
-	SFloat    float32 `protobuf:"fixed32,20,opt,name=s_float,json=sFloat,proto3" json:"s_float,omitempty"`
-	SDouble   float64 `protobuf:"fixed64,21,opt,name=s_double,json=sDouble,proto3" json:"s_double,omitempty"`
-	SBytes    []byte  `protobuf:"bytes,14,opt,name=s_bytes,json=sBytes,proto3" json:"s_bytes,omitempty"`
-	SString   string  `protobuf:"bytes,13,opt,name=s_string,json=sString,proto3" json:"s_string,omitempty"`
-}
-
-func (x *Scalars) Reset() {
-	*x = Scalars{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb3_test_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Scalars) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Scalars) ProtoMessage() {}
-
-func (x *Scalars) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb3_test_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Scalars.ProtoReflect.Descriptor instead.
-func (*Scalars) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb3_test_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Scalars) GetSBool() bool {
-	if x != nil {
-		return x.SBool
-	}
-	return false
-}
-
-func (x *Scalars) GetSInt32() int32 {
-	if x != nil {
-		return x.SInt32
-	}
-	return 0
-}
-
-func (x *Scalars) GetSInt64() int64 {
-	if x != nil {
-		return x.SInt64
-	}
-	return 0
-}
-
-func (x *Scalars) GetSUint32() uint32 {
-	if x != nil {
-		return x.SUint32
-	}
-	return 0
-}
-
-func (x *Scalars) GetSUint64() uint64 {
-	if x != nil {
-		return x.SUint64
-	}
-	return 0
-}
-
-func (x *Scalars) GetSSint32() int32 {
-	if x != nil {
-		return x.SSint32
-	}
-	return 0
-}
-
-func (x *Scalars) GetSSint64() int64 {
-	if x != nil {
-		return x.SSint64
-	}
-	return 0
-}
-
-func (x *Scalars) GetSFixed32() uint32 {
-	if x != nil {
-		return x.SFixed32
-	}
-	return 0
-}
-
-func (x *Scalars) GetSFixed64() uint64 {
-	if x != nil {
-		return x.SFixed64
-	}
-	return 0
-}
-
-func (x *Scalars) GetSSfixed32() int32 {
-	if x != nil {
-		return x.SSfixed32
-	}
-	return 0
-}
-
-func (x *Scalars) GetSSfixed64() int64 {
-	if x != nil {
-		return x.SSfixed64
-	}
-	return 0
-}
-
-func (x *Scalars) GetSFloat() float32 {
-	if x != nil {
-		return x.SFloat
-	}
-	return 0
-}
-
-func (x *Scalars) GetSDouble() float64 {
-	if x != nil {
-		return x.SDouble
-	}
-	return 0
-}
-
-func (x *Scalars) GetSBytes() []byte {
-	if x != nil {
-		return x.SBytes
-	}
-	return nil
-}
-
-func (x *Scalars) GetSString() string {
-	if x != nil {
-		return x.SString
-	}
-	return ""
-}
-
-// Message contains repeated fields.
-type Repeats struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	RptBool   []bool    `protobuf:"varint,1,rep,packed,name=rpt_bool,json=rptBool,proto3" json:"rpt_bool,omitempty"`
-	RptInt32  []int32   `protobuf:"varint,2,rep,packed,name=rpt_int32,json=rptInt32,proto3" json:"rpt_int32,omitempty"`
-	RptInt64  []int64   `protobuf:"varint,3,rep,packed,name=rpt_int64,json=rptInt64,proto3" json:"rpt_int64,omitempty"`
-	RptUint32 []uint32  `protobuf:"varint,4,rep,packed,name=rpt_uint32,json=rptUint32,proto3" json:"rpt_uint32,omitempty"`
-	RptUint64 []uint64  `protobuf:"varint,5,rep,packed,name=rpt_uint64,json=rptUint64,proto3" json:"rpt_uint64,omitempty"`
-	RptFloat  []float32 `protobuf:"fixed32,6,rep,packed,name=rpt_float,json=rptFloat,proto3" json:"rpt_float,omitempty"`
-	RptDouble []float64 `protobuf:"fixed64,7,rep,packed,name=rpt_double,json=rptDouble,proto3" json:"rpt_double,omitempty"`
-	RptString []string  `protobuf:"bytes,8,rep,name=rpt_string,json=rptString,proto3" json:"rpt_string,omitempty"`
-	RptBytes  [][]byte  `protobuf:"bytes,9,rep,name=rpt_bytes,json=rptBytes,proto3" json:"rpt_bytes,omitempty"`
-}
-
-func (x *Repeats) Reset() {
-	*x = Repeats{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb3_test_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Repeats) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Repeats) ProtoMessage() {}
-
-func (x *Repeats) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb3_test_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Repeats.ProtoReflect.Descriptor instead.
-func (*Repeats) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb3_test_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Repeats) GetRptBool() []bool {
-	if x != nil {
-		return x.RptBool
-	}
-	return nil
-}
-
-func (x *Repeats) GetRptInt32() []int32 {
-	if x != nil {
-		return x.RptInt32
-	}
-	return nil
-}
-
-func (x *Repeats) GetRptInt64() []int64 {
-	if x != nil {
-		return x.RptInt64
-	}
-	return nil
-}
-
-func (x *Repeats) GetRptUint32() []uint32 {
-	if x != nil {
-		return x.RptUint32
-	}
-	return nil
-}
-
-func (x *Repeats) GetRptUint64() []uint64 {
-	if x != nil {
-		return x.RptUint64
-	}
-	return nil
-}
-
-func (x *Repeats) GetRptFloat() []float32 {
-	if x != nil {
-		return x.RptFloat
-	}
-	return nil
-}
-
-func (x *Repeats) GetRptDouble() []float64 {
-	if x != nil {
-		return x.RptDouble
-	}
-	return nil
-}
-
-func (x *Repeats) GetRptString() []string {
-	if x != nil {
-		return x.RptString
-	}
-	return nil
-}
-
-func (x *Repeats) GetRptBytes() [][]byte {
-	if x != nil {
-		return x.RptBytes
-	}
-	return nil
-}
-
-type Proto3Optional struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OptBool    *bool    `protobuf:"varint,1,opt,name=opt_bool,json=optBool,proto3,oneof" json:"opt_bool,omitempty"`
-	OptInt32   *int32   `protobuf:"varint,2,opt,name=opt_int32,json=optInt32,proto3,oneof" json:"opt_int32,omitempty"`
-	OptInt64   *int64   `protobuf:"varint,3,opt,name=opt_int64,json=optInt64,proto3,oneof" json:"opt_int64,omitempty"`
-	OptUint32  *uint32  `protobuf:"varint,4,opt,name=opt_uint32,json=optUint32,proto3,oneof" json:"opt_uint32,omitempty"`
-	OptUint64  *uint64  `protobuf:"varint,5,opt,name=opt_uint64,json=optUint64,proto3,oneof" json:"opt_uint64,omitempty"`
-	OptFloat   *float32 `protobuf:"fixed32,6,opt,name=opt_float,json=optFloat,proto3,oneof" json:"opt_float,omitempty"`
-	OptDouble  *float64 `protobuf:"fixed64,7,opt,name=opt_double,json=optDouble,proto3,oneof" json:"opt_double,omitempty"`
-	OptString  *string  `protobuf:"bytes,8,opt,name=opt_string,json=optString,proto3,oneof" json:"opt_string,omitempty"`
-	OptBytes   []byte   `protobuf:"bytes,9,opt,name=opt_bytes,json=optBytes,proto3,oneof" json:"opt_bytes,omitempty"`
-	OptEnum    *Enum    `protobuf:"varint,10,opt,name=opt_enum,json=optEnum,proto3,enum=pb3.Enum,oneof" json:"opt_enum,omitempty"`
-	OptMessage *Nested  `protobuf:"bytes,11,opt,name=opt_message,json=optMessage,proto3,oneof" json:"opt_message,omitempty"`
-}
-
-func (x *Proto3Optional) Reset() {
-	*x = Proto3Optional{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb3_test_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Proto3Optional) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Proto3Optional) ProtoMessage() {}
-
-func (x *Proto3Optional) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb3_test_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Proto3Optional.ProtoReflect.Descriptor instead.
-func (*Proto3Optional) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb3_test_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Proto3Optional) GetOptBool() bool {
-	if x != nil && x.OptBool != nil {
-		return *x.OptBool
-	}
-	return false
-}
-
-func (x *Proto3Optional) GetOptInt32() int32 {
-	if x != nil && x.OptInt32 != nil {
-		return *x.OptInt32
-	}
-	return 0
-}
-
-func (x *Proto3Optional) GetOptInt64() int64 {
-	if x != nil && x.OptInt64 != nil {
-		return *x.OptInt64
-	}
-	return 0
-}
-
-func (x *Proto3Optional) GetOptUint32() uint32 {
-	if x != nil && x.OptUint32 != nil {
-		return *x.OptUint32
-	}
-	return 0
-}
-
-func (x *Proto3Optional) GetOptUint64() uint64 {
-	if x != nil && x.OptUint64 != nil {
-		return *x.OptUint64
-	}
-	return 0
-}
-
-func (x *Proto3Optional) GetOptFloat() float32 {
-	if x != nil && x.OptFloat != nil {
-		return *x.OptFloat
-	}
-	return 0
-}
-
-func (x *Proto3Optional) GetOptDouble() float64 {
-	if x != nil && x.OptDouble != nil {
-		return *x.OptDouble
-	}
-	return 0
-}
-
-func (x *Proto3Optional) GetOptString() string {
-	if x != nil && x.OptString != nil {
-		return *x.OptString
-	}
-	return ""
-}
-
-func (x *Proto3Optional) GetOptBytes() []byte {
-	if x != nil {
-		return x.OptBytes
-	}
-	return nil
-}
-
-func (x *Proto3Optional) GetOptEnum() Enum {
-	if x != nil && x.OptEnum != nil {
-		return *x.OptEnum
-	}
-	return Enum_ZERO
-}
-
-func (x *Proto3Optional) GetOptMessage() *Nested {
-	if x != nil {
-		return x.OptMessage
-	}
-	return nil
-}
-
-// Message contains enum fields.
-type Enums struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	SEnum       Enum             `protobuf:"varint,1,opt,name=s_enum,json=sEnum,proto3,enum=pb3.Enum" json:"s_enum,omitempty"`
-	SNestedEnum Enums_NestedEnum `protobuf:"varint,3,opt,name=s_nested_enum,json=sNestedEnum,proto3,enum=pb3.Enums_NestedEnum" json:"s_nested_enum,omitempty"`
-}
-
-func (x *Enums) Reset() {
-	*x = Enums{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb3_test_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Enums) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Enums) ProtoMessage() {}
-
-func (x *Enums) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb3_test_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Enums.ProtoReflect.Descriptor instead.
-func (*Enums) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb3_test_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Enums) GetSEnum() Enum {
-	if x != nil {
-		return x.SEnum
-	}
-	return Enum_ZERO
-}
-
-func (x *Enums) GetSNestedEnum() Enums_NestedEnum {
-	if x != nil {
-		return x.SNestedEnum
-	}
-	return Enums_CERO
-}
-
-// Message contains nested message field.
-type Nests struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	SNested *Nested `protobuf:"bytes,2,opt,name=s_nested,json=sNested,proto3" json:"s_nested,omitempty"`
-}
-
-func (x *Nests) Reset() {
-	*x = Nests{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb3_test_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Nests) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Nests) ProtoMessage() {}
-
-func (x *Nests) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb3_test_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Nests.ProtoReflect.Descriptor instead.
-func (*Nests) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb3_test_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Nests) GetSNested() *Nested {
-	if x != nil {
-		return x.SNested
-	}
-	return nil
-}
-
-// Message type used as submessage.
-type Nested struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	SString string  `protobuf:"bytes,1,opt,name=s_string,json=sString,proto3" json:"s_string,omitempty"`
-	SNested *Nested `protobuf:"bytes,2,opt,name=s_nested,json=sNested,proto3" json:"s_nested,omitempty"`
-}
-
-func (x *Nested) Reset() {
-	*x = Nested{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb3_test_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Nested) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Nested) ProtoMessage() {}
-
-func (x *Nested) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb3_test_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Nested.ProtoReflect.Descriptor instead.
-func (*Nested) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb3_test_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *Nested) GetSString() string {
-	if x != nil {
-		return x.SString
-	}
-	return ""
-}
-
-func (x *Nested) GetSNested() *Nested {
-	if x != nil {
-		return x.SNested
-	}
-	return nil
-}
-
-// Message contains oneof field.
-type Oneofs struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Types that are assignable to Union:
-	//	*Oneofs_OneofEnum
-	//	*Oneofs_OneofString
-	//	*Oneofs_OneofNested
-	Union isOneofs_Union `protobuf_oneof:"union"`
-}
-
-func (x *Oneofs) Reset() {
-	*x = Oneofs{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb3_test_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Oneofs) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Oneofs) ProtoMessage() {}
-
-func (x *Oneofs) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb3_test_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Oneofs.ProtoReflect.Descriptor instead.
-func (*Oneofs) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb3_test_proto_rawDescGZIP(), []int{6}
-}
-
-func (m *Oneofs) GetUnion() isOneofs_Union {
-	if m != nil {
-		return m.Union
-	}
-	return nil
-}
-
-func (x *Oneofs) GetOneofEnum() Enum {
-	if x, ok := x.GetUnion().(*Oneofs_OneofEnum); ok {
-		return x.OneofEnum
-	}
-	return Enum_ZERO
-}
-
-func (x *Oneofs) GetOneofString() string {
-	if x, ok := x.GetUnion().(*Oneofs_OneofString); ok {
-		return x.OneofString
-	}
-	return ""
-}
-
-func (x *Oneofs) GetOneofNested() *Nested {
-	if x, ok := x.GetUnion().(*Oneofs_OneofNested); ok {
-		return x.OneofNested
-	}
-	return nil
-}
-
-type isOneofs_Union interface {
-	isOneofs_Union()
-}
-
-type Oneofs_OneofEnum struct {
-	OneofEnum Enum `protobuf:"varint,1,opt,name=oneof_enum,json=oneofEnum,proto3,enum=pb3.Enum,oneof"`
-}
-
-type Oneofs_OneofString struct {
-	OneofString string `protobuf:"bytes,2,opt,name=oneof_string,json=oneofString,proto3,oneof"`
-}
-
-type Oneofs_OneofNested struct {
-	OneofNested *Nested `protobuf:"bytes,3,opt,name=oneof_nested,json=oneofNested,proto3,oneof"`
-}
-
-func (*Oneofs_OneofEnum) isOneofs_Union() {}
-
-func (*Oneofs_OneofString) isOneofs_Union() {}
-
-func (*Oneofs_OneofNested) isOneofs_Union() {}
-
-// Message contains map fields.
-type Maps struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Int32ToStr   map[int32]string   `protobuf:"bytes,1,rep,name=int32_to_str,json=int32ToStr,proto3" json:"int32_to_str,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	BoolToUint32 map[bool]uint32    `protobuf:"bytes,2,rep,name=bool_to_uint32,json=boolToUint32,proto3" json:"bool_to_uint32,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
-	Uint64ToEnum map[uint64]Enum    `protobuf:"bytes,3,rep,name=uint64_to_enum,json=uint64ToEnum,proto3" json:"uint64_to_enum,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=pb3.Enum"`
-	StrToNested  map[string]*Nested `protobuf:"bytes,4,rep,name=str_to_nested,json=strToNested,proto3" json:"str_to_nested,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-	StrToOneofs  map[string]*Oneofs `protobuf:"bytes,5,rep,name=str_to_oneofs,json=strToOneofs,proto3" json:"str_to_oneofs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-func (x *Maps) Reset() {
-	*x = Maps{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb3_test_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Maps) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Maps) ProtoMessage() {}
-
-func (x *Maps) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb3_test_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Maps.ProtoReflect.Descriptor instead.
-func (*Maps) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb3_test_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *Maps) GetInt32ToStr() map[int32]string {
-	if x != nil {
-		return x.Int32ToStr
-	}
-	return nil
-}
-
-func (x *Maps) GetBoolToUint32() map[bool]uint32 {
-	if x != nil {
-		return x.BoolToUint32
-	}
-	return nil
-}
-
-func (x *Maps) GetUint64ToEnum() map[uint64]Enum {
-	if x != nil {
-		return x.Uint64ToEnum
-	}
-	return nil
-}
-
-func (x *Maps) GetStrToNested() map[string]*Nested {
-	if x != nil {
-		return x.StrToNested
-	}
-	return nil
-}
-
-func (x *Maps) GetStrToOneofs() map[string]*Oneofs {
-	if x != nil {
-		return x.StrToOneofs
-	}
-	return nil
-}
-
-// Message for testing json_name option.
-type JSONNames struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	SString string `protobuf:"bytes,1,opt,name=s_string,json=foo_bar,proto3" json:"s_string,omitempty"`
-}
-
-func (x *JSONNames) Reset() {
-	*x = JSONNames{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_internal_testprotos_textpb3_test_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *JSONNames) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*JSONNames) ProtoMessage() {}
-
-func (x *JSONNames) ProtoReflect() protoreflect.Message {
-	mi := &file_internal_testprotos_textpb3_test_proto_msgTypes[8]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use JSONNames.ProtoReflect.Descriptor instead.
-func (*JSONNames) Descriptor() ([]byte, []int) {
-	return file_internal_testprotos_textpb3_test_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *JSONNames) GetSString() string {
-	if x != nil {
-		return x.SString
-	}
-	return ""
-}
-
-var File_internal_testprotos_textpb3_test_proto protoreflect.FileDescriptor
-
-var file_internal_testprotos_textpb3_test_proto_rawDesc = []byte{
-	0x0a, 0x26, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x70, 0x62, 0x33, 0x2f, 0x74, 0x65,
-	0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x03, 0x70, 0x62, 0x33, 0x22, 0x9e, 0x03,
-	0x0a, 0x07, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x73, 0x12, 0x15, 0x0a, 0x06, 0x73, 0x5f, 0x62,
-	0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x73, 0x42, 0x6f, 0x6f, 0x6c,
-	0x12, 0x17, 0x0a, 0x07, 0x73, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x06, 0x73, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x5f, 0x69,
-	0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x73, 0x49, 0x6e, 0x74,
-	0x36, 0x34, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x19, 0x0a,
-	0x08, 0x73, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52,
-	0x07, 0x73, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x07, 0x73, 0x53, 0x69, 0x6e,
-	0x74, 0x33, 0x32, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18,
-	0x07, 0x20, 0x01, 0x28, 0x12, 0x52, 0x07, 0x73, 0x53, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1b,
-	0x0a, 0x09, 0x73, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28,
-	0x07, 0x52, 0x08, 0x73, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1b, 0x0a, 0x09, 0x73,
-	0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x09, 0x20, 0x01, 0x28, 0x06, 0x52, 0x08,
-	0x73, 0x46, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x5f, 0x73, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0f, 0x52, 0x09, 0x73, 0x53,
-	0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x5f, 0x73, 0x66, 0x69,
-	0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x10, 0x52, 0x09, 0x73, 0x53, 0x66,
-	0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x5f, 0x66, 0x6c, 0x6f, 0x61,
-	0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x02, 0x52, 0x06, 0x73, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12,
-	0x19, 0x0a, 0x08, 0x73, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28,
-	0x01, 0x52, 0x07, 0x73, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x73, 0x5f,
-	0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x42, 0x79,
-	0x74, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18,
-	0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x94,
-	0x02, 0x0a, 0x07, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x70,
-	0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x08, 0x52, 0x07, 0x72, 0x70,
-	0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x72, 0x70, 0x74, 0x49, 0x6e, 0x74,
-	0x33, 0x32, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18,
-	0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x08, 0x72, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x12,
-	0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20,
-	0x03, 0x28, 0x0d, 0x52, 0x09, 0x72, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x1d,
-	0x0a, 0x0a, 0x72, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05, 0x20, 0x03,
-	0x28, 0x04, 0x52, 0x09, 0x72, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x1b, 0x0a,
-	0x09, 0x72, 0x70, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x03, 0x28, 0x02,
-	0x52, 0x08, 0x72, 0x70, 0x74, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70,
-	0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x01, 0x52, 0x09,
-	0x72, 0x70, 0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x70, 0x74,
-	0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72,
-	0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x70, 0x74, 0x5f,
-	0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x08, 0x72, 0x70, 0x74,
-	0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xc4, 0x04, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x12, 0x1e, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f,
-	0x62, 0x6f, 0x6f, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x07, 0x6f, 0x70,
-	0x74, 0x42, 0x6f, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x08, 0x6f,
-	0x70, 0x74, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x6f, 0x70,
-	0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x02, 0x52,
-	0x08, 0x6f, 0x70, 0x74, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a,
-	0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d,
-	0x48, 0x03, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x88, 0x01, 0x01,
-	0x12, 0x22, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x04, 0x48, 0x04, 0x52, 0x09, 0x6f, 0x70, 0x74, 0x55, 0x69, 0x6e, 0x74, 0x36,
-	0x34, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x6c, 0x6f, 0x61,
-	0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x48, 0x05, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x46, 0x6c,
-	0x6f, 0x61, 0x74, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x6f, 0x70, 0x74, 0x5f, 0x64, 0x6f,
-	0x75, 0x62, 0x6c, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x48, 0x06, 0x52, 0x09, 0x6f, 0x70,
-	0x74, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x6f, 0x70,
-	0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x07,
-	0x52, 0x09, 0x6f, 0x70, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x20,
-	0x0a, 0x09, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28,
-	0x0c, 0x48, 0x08, 0x52, 0x08, 0x6f, 0x70, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x88, 0x01, 0x01,
-	0x12, 0x29, 0x0a, 0x08, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x0a, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48, 0x09, 0x52,
-	0x07, 0x6f, 0x70, 0x74, 0x45, 0x6e, 0x75, 0x6d, 0x88, 0x01, 0x01, 0x12, 0x31, 0x0a, 0x0b, 0x6f,
-	0x70, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x0b, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x48, 0x0a, 0x52,
-	0x0a, 0x6f, 0x70, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0b,
-	0x0a, 0x09, 0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x6f, 0x6f, 0x6c, 0x42, 0x0c, 0x0a, 0x0a, 0x5f,
-	0x6f, 0x70, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6f, 0x70,
-	0x74, 0x5f, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6f, 0x70, 0x74, 0x5f,
-	0x75, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x75,
-	0x69, 0x6e, 0x74, 0x36, 0x34, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x66, 0x6c,
-	0x6f, 0x61, 0x74, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x64, 0x6f, 0x75, 0x62,
-	0x6c, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x42,
-	0x0b, 0x0a, 0x09, 0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x42, 0x0e, 0x0a, 0x0c,
-	0x5f, 0x6f, 0x70, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x98, 0x01, 0x0a,
-	0x05, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x12, 0x20, 0x0a, 0x06, 0x73, 0x5f, 0x65, 0x6e, 0x75, 0x6d,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x45, 0x6e, 0x75,
-	0x6d, 0x52, 0x05, 0x73, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x39, 0x0a, 0x0d, 0x73, 0x5f, 0x6e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32,
-	0x15, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0b, 0x73, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45,
-	0x6e, 0x75, 0x6d, 0x22, 0x32, 0x0a, 0x0a, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75,
-	0x6d, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x55,
-	0x4e, 0x4f, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x4f, 0x53, 0x10, 0x02, 0x12, 0x08, 0x0a,
-	0x04, 0x44, 0x49, 0x45, 0x5a, 0x10, 0x0a, 0x22, 0x2f, 0x0a, 0x05, 0x4e, 0x65, 0x73, 0x74, 0x73,
-	0x12, 0x26, 0x0a, 0x08, 0x73, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52,
-	0x07, 0x73, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x4b, 0x0a, 0x06, 0x4e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x26, 0x0a,
-	0x08, 0x73, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x0b, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x07, 0x73, 0x4e,
-	0x65, 0x73, 0x74, 0x65, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x06, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x73,
-	0x12, 0x2a, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x48,
-	0x00, 0x52, 0x09, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x23, 0x0a, 0x0c,
-	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x53, 0x74, 0x72, 0x69, 0x6e,
-	0x67, 0x12, 0x30, 0x0a, 0x0c, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65,
-	0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x4e, 0x65,
-	0x73, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x4e, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x22, 0xaf, 0x05, 0x0a,
-	0x04, 0x4d, 0x61, 0x70, 0x73, 0x12, 0x3b, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x5f, 0x74,
-	0x6f, 0x5f, 0x73, 0x74, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62,
-	0x33, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x54, 0x6f, 0x53, 0x74,
-	0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x54, 0x6f, 0x53,
-	0x74, 0x72, 0x12, 0x41, 0x0a, 0x0e, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x74, 0x6f, 0x5f, 0x75, 0x69,
-	0x6e, 0x74, 0x33, 0x32, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x62, 0x33,
-	0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x54, 0x6f, 0x55, 0x69, 0x6e, 0x74,
-	0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x62, 0x6f, 0x6f, 0x6c, 0x54, 0x6f, 0x55,
-	0x69, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x41, 0x0a, 0x0e, 0x75, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x5f,
-	0x74, 0x6f, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e,
-	0x70, 0x62, 0x33, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e, 0x55, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x54,
-	0x6f, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x75, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x54, 0x6f, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x3e, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x5f,
-	0x74, 0x6f, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x1a, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e, 0x53, 0x74, 0x72, 0x54, 0x6f,
-	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x74, 0x72,
-	0x54, 0x6f, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x12, 0x3e, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x5f,
-	0x74, 0x6f, 0x5f, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x1a, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x4d, 0x61, 0x70, 0x73, 0x2e, 0x53, 0x74, 0x72, 0x54, 0x6f,
-	0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x73, 0x74, 0x72,
-	0x54, 0x6f, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x49, 0x6e, 0x74, 0x33,
-	0x32, 0x54, 0x6f, 0x53, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
-	0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61,
-	0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x42, 0x6f, 0x6f, 0x6c, 0x54,
-	0x6f, 0x55, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
-	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
-	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4a, 0x0a, 0x11, 0x55, 0x69, 0x6e, 0x74,
-	0x36, 0x34, 0x54, 0x6f, 0x45, 0x6e, 0x75, 0x6d, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
-	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
-	0x1f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09,
-	0x2e, 0x70, 0x62, 0x33, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
-	0x3a, 0x02, 0x38, 0x01, 0x1a, 0x4b, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4e, 0x65, 0x73,
-	0x74, 0x65, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x05, 0x76, 0x61,
-	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x33, 0x2e,
-	0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
-	0x01, 0x1a, 0x4b, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x54, 0x6f, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x73,
-	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x70, 0x62, 0x33, 0x2e, 0x4f, 0x6e, 0x65,
-	0x6f, 0x66, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x26,
-	0x0a, 0x09, 0x4a, 0x53, 0x4f, 0x4e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x73,
-	0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x66,
-	0x6f, 0x6f, 0x5f, 0x62, 0x61, 0x72, 0x2a, 0x2b, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x08,
-	0x0a, 0x04, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x4e, 0x45, 0x10,
-	0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x57, 0x4f, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x45,
-	0x4e, 0x10, 0x0a, 0x42, 0x38, 0x5a, 0x36, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f,
-	0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2f, 0x74, 0x65, 0x78, 0x74, 0x70, 0x62, 0x33, 0x62, 0x06, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_internal_testprotos_textpb3_test_proto_rawDescOnce sync.Once
-	file_internal_testprotos_textpb3_test_proto_rawDescData = file_internal_testprotos_textpb3_test_proto_rawDesc
-)
-
-func file_internal_testprotos_textpb3_test_proto_rawDescGZIP() []byte {
-	file_internal_testprotos_textpb3_test_proto_rawDescOnce.Do(func() {
-		file_internal_testprotos_textpb3_test_proto_rawDescData = protoimpl.X.CompressGZIP(file_internal_testprotos_textpb3_test_proto_rawDescData)
-	})
-	return file_internal_testprotos_textpb3_test_proto_rawDescData
-}
-
-var file_internal_testprotos_textpb3_test_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_internal_testprotos_textpb3_test_proto_msgTypes = make([]protoimpl.MessageInfo, 14)
-var file_internal_testprotos_textpb3_test_proto_goTypes = []interface{}{
-	(Enum)(0),              // 0: pb3.Enum
-	(Enums_NestedEnum)(0),  // 1: pb3.Enums.NestedEnum
-	(*Scalars)(nil),        // 2: pb3.Scalars
-	(*Repeats)(nil),        // 3: pb3.Repeats
-	(*Proto3Optional)(nil), // 4: pb3.Proto3Optional
-	(*Enums)(nil),          // 5: pb3.Enums
-	(*Nests)(nil),          // 6: pb3.Nests
-	(*Nested)(nil),         // 7: pb3.Nested
-	(*Oneofs)(nil),         // 8: pb3.Oneofs
-	(*Maps)(nil),           // 9: pb3.Maps
-	(*JSONNames)(nil),      // 10: pb3.JSONNames
-	nil,                    // 11: pb3.Maps.Int32ToStrEntry
-	nil,                    // 12: pb3.Maps.BoolToUint32Entry
-	nil,                    // 13: pb3.Maps.Uint64ToEnumEntry
-	nil,                    // 14: pb3.Maps.StrToNestedEntry
-	nil,                    // 15: pb3.Maps.StrToOneofsEntry
-}
-var file_internal_testprotos_textpb3_test_proto_depIdxs = []int32{
-	0,  // 0: pb3.Proto3Optional.opt_enum:type_name -> pb3.Enum
-	7,  // 1: pb3.Proto3Optional.opt_message:type_name -> pb3.Nested
-	0,  // 2: pb3.Enums.s_enum:type_name -> pb3.Enum
-	1,  // 3: pb3.Enums.s_nested_enum:type_name -> pb3.Enums.NestedEnum
-	7,  // 4: pb3.Nests.s_nested:type_name -> pb3.Nested
-	7,  // 5: pb3.Nested.s_nested:type_name -> pb3.Nested
-	0,  // 6: pb3.Oneofs.oneof_enum:type_name -> pb3.Enum
-	7,  // 7: pb3.Oneofs.oneof_nested:type_name -> pb3.Nested
-	11, // 8: pb3.Maps.int32_to_str:type_name -> pb3.Maps.Int32ToStrEntry
-	12, // 9: pb3.Maps.bool_to_uint32:type_name -> pb3.Maps.BoolToUint32Entry
-	13, // 10: pb3.Maps.uint64_to_enum:type_name -> pb3.Maps.Uint64ToEnumEntry
-	14, // 11: pb3.Maps.str_to_nested:type_name -> pb3.Maps.StrToNestedEntry
-	15, // 12: pb3.Maps.str_to_oneofs:type_name -> pb3.Maps.StrToOneofsEntry
-	0,  // 13: pb3.Maps.Uint64ToEnumEntry.value:type_name -> pb3.Enum
-	7,  // 14: pb3.Maps.StrToNestedEntry.value:type_name -> pb3.Nested
-	8,  // 15: pb3.Maps.StrToOneofsEntry.value:type_name -> pb3.Oneofs
-	16, // [16:16] is the sub-list for method output_type
-	16, // [16:16] is the sub-list for method input_type
-	16, // [16:16] is the sub-list for extension type_name
-	16, // [16:16] is the sub-list for extension extendee
-	0,  // [0:16] is the sub-list for field type_name
-}
-
-func init() { file_internal_testprotos_textpb3_test_proto_init() }
-func file_internal_testprotos_textpb3_test_proto_init() {
-	if File_internal_testprotos_textpb3_test_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_internal_testprotos_textpb3_test_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Scalars); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb3_test_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Repeats); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb3_test_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Proto3Optional); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb3_test_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Enums); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb3_test_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Nests); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb3_test_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Nested); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb3_test_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Oneofs); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb3_test_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Maps); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_internal_testprotos_textpb3_test_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*JSONNames); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	file_internal_testprotos_textpb3_test_proto_msgTypes[2].OneofWrappers = []interface{}{}
-	file_internal_testprotos_textpb3_test_proto_msgTypes[6].OneofWrappers = []interface{}{
-		(*Oneofs_OneofEnum)(nil),
-		(*Oneofs_OneofString)(nil),
-		(*Oneofs_OneofNested)(nil),
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_internal_testprotos_textpb3_test_proto_rawDesc,
-			NumEnums:      2,
-			NumMessages:   14,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_internal_testprotos_textpb3_test_proto_goTypes,
-		DependencyIndexes: file_internal_testprotos_textpb3_test_proto_depIdxs,
-		EnumInfos:         file_internal_testprotos_textpb3_test_proto_enumTypes,
-		MessageInfos:      file_internal_testprotos_textpb3_test_proto_msgTypes,
-	}.Build()
-	File_internal_testprotos_textpb3_test_proto = out.File
-	file_internal_testprotos_textpb3_test_proto_rawDesc = nil
-	file_internal_testprotos_textpb3_test_proto_goTypes = nil
-	file_internal_testprotos_textpb3_test_proto_depIdxs = nil
-}
diff --git a/internal/testprotos/textpb3/test.proto b/internal/testprotos/textpb3/test.proto
deleted file mode 100644
index 8b1c7db..0000000
--- a/internal/testprotos/textpb3/test.proto
+++ /dev/null
@@ -1,115 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Test Protobuf definitions with proto3 syntax.
-syntax = "proto3";
-
-package pb3;
-option go_package = "google.golang.org/protobuf/internal/testprotos/textpb3";
-
-// Scalars contains scalar field types.
-message Scalars {
-  bool s_bool = 1;
-  int32 s_int32 = 2;
-  int64 s_int64 = 3;
-  uint32 s_uint32 = 4;
-  uint64 s_uint64 = 5;
-  sint32 s_sint32 = 6;
-  sint64 s_sint64 = 7;
-  fixed32 s_fixed32 = 8;
-  fixed64 s_fixed64 = 9;
-  sfixed32 s_sfixed32 = 10;
-  sfixed64 s_sfixed64 = 11;
-
-  // Textproto marshal outputs fields in the same order as this proto
-  // definition regardless of field number. Following fields are intended to
-  // test that assumption.
-
-  float s_float = 20;
-  double s_double = 21;
-
-  bytes s_bytes = 14;
-  string s_string = 13;
-}
-
-// Message contains repeated fields.
-message Repeats {
-  repeated bool rpt_bool = 1;
-  repeated int32 rpt_int32 = 2;
-  repeated int64 rpt_int64 = 3;
-  repeated uint32 rpt_uint32 = 4;
-  repeated uint64 rpt_uint64 = 5;
-  repeated float rpt_float = 6;
-  repeated double rpt_double = 7;
-  repeated string rpt_string = 8;
-  repeated bytes rpt_bytes = 9;
-}
-
-message Proto3Optional {
-  optional bool opt_bool = 1;
-  optional int32 opt_int32 = 2;
-  optional int64 opt_int64 = 3;
-  optional uint32 opt_uint32 = 4;
-  optional uint64 opt_uint64 = 5;
-  optional float opt_float = 6;
-  optional double opt_double = 7;
-  optional string opt_string = 8;
-  optional bytes opt_bytes = 9;
-  optional Enum opt_enum = 10;
-  optional Nested opt_message = 11;
-}
-
-enum Enum {
-  ZERO = 0;
-  ONE = 1;
-  TWO = 2;
-  TEN = 10;
-}
-
-// Message contains enum fields.
-message Enums {
-  Enum s_enum = 1;
-
-  enum NestedEnum {
-  	CERO = 0;
-	UNO = 1;
-	DOS = 2;
-	DIEZ = 10;
-  }
-  NestedEnum s_nested_enum = 3;
-}
-
-// Message contains nested message field.
-message Nests {
-  Nested s_nested = 2;
-}
-
-// Message type used as submessage.
-message Nested {
-  string s_string = 1;
-  Nested s_nested = 2;
-}
-
-// Message contains oneof field.
-message Oneofs {
-  oneof union {
-    Enum oneof_enum = 1;
-    string oneof_string = 2;
-    Nested oneof_nested = 3;
-  }
-}
-
-// Message contains map fields.
-message Maps {
-  map<int32, string> int32_to_str = 1;
-  map<bool, uint32> bool_to_uint32 = 2;
-  map<uint64, Enum> uint64_to_enum = 3;
-  map<string, Nested> str_to_nested = 4;
-  map<string, Oneofs> str_to_oneofs = 5;
-}
-
-// Message for testing json_name option.
-message JSONNames {
-  string s_string = 1 [json_name = "foo_bar"];
-}
diff --git a/internal/version/version.go b/internal/version/version.go
deleted file mode 100644
index 3d40d52..0000000
--- a/internal/version/version.go
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package version records versioning information about this module.
-package version
-
-import (
-	"fmt"
-	"strings"
-)
-
-// These constants determine the current version of this module.
-//
-//
-// For our release process, we enforce the following rules:
-//	* Tagged releases use a tag that is identical to String.
-//	* Tagged releases never reference a commit where the String
-//	contains "devel".
-//	* The set of all commits in this repository where String
-//	does not contain "devel" must have a unique String.
-//
-//
-// Steps for tagging a new release:
-//	1. Create a new CL.
-//
-//	2. Update Minor, Patch, and/or PreRelease as necessary.
-//	PreRelease must not contain the string "devel".
-//
-//	3. Since the last released minor version, have there been any changes to
-//	generator that relies on new functionality in the runtime?
-//	If yes, then increment RequiredGenerated.
-//
-//	4. Since the last released minor version, have there been any changes to
-//	the runtime that removes support for old .pb.go source code?
-//	If yes, then increment SupportMinimum.
-//
-//	5. Send out the CL for review and submit it.
-//	Note that the next CL in step 8 must be submitted after this CL
-//	without any other CLs in-between.
-//
-//	6. Tag a new version, where the tag is is the current String.
-//
-//	7. Write release notes for all notable changes
-//	between this release and the last release.
-//
-//	8. Create a new CL.
-//
-//	9. Update PreRelease to include the string "devel".
-//	For example: "" -> "devel" or "rc.1" -> "rc.1.devel"
-//
-//	10. Send out the CL for review and submit it.
-const (
-	Major      = 1
-	Minor      = 28
-	Patch      = 0
-	PreRelease = ""
-)
-
-// String formats the version string for this module in semver format.
-//
-// Examples:
-//	v1.20.1
-//	v1.21.0-rc.1
-func String() string {
-	v := fmt.Sprintf("v%d.%d.%d", Major, Minor, Patch)
-	if PreRelease != "" {
-		v += "-" + PreRelease
-
-		// TODO: Add metadata about the commit or build hash.
-		// See https://golang.org/issue/29814
-		// See https://golang.org/issue/33533
-		var metadata string
-		if strings.Contains(PreRelease, "devel") && metadata != "" {
-			v += "+" + metadata
-		}
-	}
-	return v
-}
diff --git a/internal/weakdeps/doc.go b/internal/weakdeps/doc.go
deleted file mode 100644
index bc7d7c5..0000000
--- a/internal/weakdeps/doc.go
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package weakdeps exists to add weak module dependencies.
-//
-// We want to ensure that this module is used with a minimum
-// version of certain other modules, without actually importing
-// those modules in normal builds. We do that by adding an
-// import of a package in the module under a build constraint
-// that is never satisfied in normal usage.
-package weakdeps
diff --git a/internal/weakdeps/weakdeps.go b/internal/weakdeps/weakdeps.go
deleted file mode 100644
index e8261fb..0000000
--- a/internal/weakdeps/weakdeps.go
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:build weak_dependency
-// +build weak_dependency
-
-package weakdeps
-
-import (
-	// Ensure that any program using "github.com/golang/protobuf"
-	// uses a version that wraps this module so that there is a
-	// unified view on what protobuf types are globally registered.
-	_ "github.com/golang/protobuf/proto"
-)
diff --git a/jsonpb/jsonpb.go b/jsonpb/jsonpb.go
new file mode 100644
index 0000000..f0d66be
--- /dev/null
+++ b/jsonpb/jsonpb.go
@@ -0,0 +1,1290 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2015 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/*
+Package jsonpb provides marshaling and unmarshaling between protocol buffers and JSON.
+It follows the specification at https://developers.google.com/protocol-buffers/docs/proto3#json.
+
+This package produces a different output than the standard "encoding/json" package,
+which does not operate correctly on protocol buffers.
+*/
+package jsonpb
+
+import (
+	"bytes"
+	"encoding/json"
+	"errors"
+	"fmt"
+	"io"
+	"math"
+	"reflect"
+	"sort"
+	"strconv"
+	"strings"
+	"time"
+
+	"github.com/golang/protobuf/proto"
+
+	stpb "github.com/golang/protobuf/ptypes/struct"
+)
+
+const secondInNanos = int64(time.Second / time.Nanosecond)
+const maxSecondsInDuration = 315576000000
+
+// Marshaler is a configurable object for converting between
+// protocol buffer objects and a JSON representation for them.
+type Marshaler struct {
+	// Whether to render enum values as integers, as opposed to string values.
+	EnumsAsInts bool
+
+	// Whether to render fields with zero values.
+	EmitDefaults bool
+
+	// A string to indent each level by. The presence of this field will
+	// also cause a space to appear between the field separator and
+	// value, and for newlines to be appear between fields and array
+	// elements.
+	Indent string
+
+	// Whether to use the original (.proto) name for fields.
+	OrigName bool
+
+	// A custom URL resolver to use when marshaling Any messages to JSON.
+	// If unset, the default resolution strategy is to extract the
+	// fully-qualified type name from the type URL and pass that to
+	// proto.MessageType(string).
+	AnyResolver AnyResolver
+}
+
+// AnyResolver takes a type URL, present in an Any message, and resolves it into
+// an instance of the associated message.
+type AnyResolver interface {
+	Resolve(typeUrl string) (proto.Message, error)
+}
+
+func defaultResolveAny(typeUrl string) (proto.Message, error) {
+	// Only the part of typeUrl after the last slash is relevant.
+	mname := typeUrl
+	if slash := strings.LastIndex(mname, "/"); slash >= 0 {
+		mname = mname[slash+1:]
+	}
+	mt := proto.MessageType(mname)
+	if mt == nil {
+		return nil, fmt.Errorf("unknown message type %q", mname)
+	}
+	return reflect.New(mt.Elem()).Interface().(proto.Message), nil
+}
+
+// JSONPBMarshaler is implemented by protobuf messages that customize the
+// way they are marshaled to JSON. Messages that implement this should
+// also implement JSONPBUnmarshaler so that the custom format can be
+// parsed.
+//
+// The JSON marshaling must follow the proto to JSON specification:
+//	https://developers.google.com/protocol-buffers/docs/proto3#json
+type JSONPBMarshaler interface {
+	MarshalJSONPB(*Marshaler) ([]byte, error)
+}
+
+// JSONPBUnmarshaler is implemented by protobuf messages that customize
+// the way they are unmarshaled from JSON. Messages that implement this
+// should also implement JSONPBMarshaler so that the custom format can be
+// produced.
+//
+// The JSON unmarshaling must follow the JSON to proto specification:
+//	https://developers.google.com/protocol-buffers/docs/proto3#json
+type JSONPBUnmarshaler interface {
+	UnmarshalJSONPB(*Unmarshaler, []byte) error
+}
+
+// Marshal marshals a protocol buffer into JSON.
+func (m *Marshaler) Marshal(out io.Writer, pb proto.Message) error {
+	v := reflect.ValueOf(pb)
+	if pb == nil || (v.Kind() == reflect.Ptr && v.IsNil()) {
+		return errors.New("Marshal called with nil")
+	}
+	// Check for unset required fields first.
+	if err := checkRequiredFields(pb); err != nil {
+		return err
+	}
+	writer := &errWriter{writer: out}
+	return m.marshalObject(writer, pb, "", "")
+}
+
+// MarshalToString converts a protocol buffer object to JSON string.
+func (m *Marshaler) MarshalToString(pb proto.Message) (string, error) {
+	var buf bytes.Buffer
+	if err := m.Marshal(&buf, pb); err != nil {
+		return "", err
+	}
+	return buf.String(), nil
+}
+
+type int32Slice []int32
+
+var nonFinite = map[string]float64{
+	`"NaN"`:       math.NaN(),
+	`"Infinity"`:  math.Inf(1),
+	`"-Infinity"`: math.Inf(-1),
+}
+
+// For sorting extensions ids to ensure stable output.
+func (s int32Slice) Len() int           { return len(s) }
+func (s int32Slice) Less(i, j int) bool { return s[i] < s[j] }
+func (s int32Slice) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }
+
+type wkt interface {
+	XXX_WellKnownType() string
+}
+
+var (
+	wktType     = reflect.TypeOf((*wkt)(nil)).Elem()
+	messageType = reflect.TypeOf((*proto.Message)(nil)).Elem()
+)
+
+// marshalObject writes a struct to the Writer.
+func (m *Marshaler) marshalObject(out *errWriter, v proto.Message, indent, typeURL string) error {
+	if jsm, ok := v.(JSONPBMarshaler); ok {
+		b, err := jsm.MarshalJSONPB(m)
+		if err != nil {
+			return err
+		}
+		if typeURL != "" {
+			// we are marshaling this object to an Any type
+			var js map[string]*json.RawMessage
+			if err = json.Unmarshal(b, &js); err != nil {
+				return fmt.Errorf("type %T produced invalid JSON: %v", v, err)
+			}
+			turl, err := json.Marshal(typeURL)
+			if err != nil {
+				return fmt.Errorf("failed to marshal type URL %q to JSON: %v", typeURL, err)
+			}
+			js["@type"] = (*json.RawMessage)(&turl)
+			if m.Indent != "" {
+				b, err = json.MarshalIndent(js, indent, m.Indent)
+			} else {
+				b, err = json.Marshal(js)
+			}
+			if err != nil {
+				return err
+			}
+		}
+
+		out.write(string(b))
+		return out.err
+	}
+
+	s := reflect.ValueOf(v).Elem()
+
+	// Handle well-known types.
+	if wkt, ok := v.(wkt); ok {
+		switch wkt.XXX_WellKnownType() {
+		case "DoubleValue", "FloatValue", "Int64Value", "UInt64Value",
+			"Int32Value", "UInt32Value", "BoolValue", "StringValue", "BytesValue":
+			// "Wrappers use the same representation in JSON
+			//  as the wrapped primitive type, ..."
+			sprop := proto.GetProperties(s.Type())
+			return m.marshalValue(out, sprop.Prop[0], s.Field(0), indent)
+		case "Any":
+			// Any is a bit more involved.
+			return m.marshalAny(out, v, indent)
+		case "Duration":
+			s, ns := s.Field(0).Int(), s.Field(1).Int()
+			if s < -maxSecondsInDuration || s > maxSecondsInDuration {
+				return fmt.Errorf("seconds out of range %v", s)
+			}
+			if ns <= -secondInNanos || ns >= secondInNanos {
+				return fmt.Errorf("ns out of range (%v, %v)", -secondInNanos, secondInNanos)
+			}
+			if (s > 0 && ns < 0) || (s < 0 && ns > 0) {
+				return errors.New("signs of seconds and nanos do not match")
+			}
+			// Generated output always contains 0, 3, 6, or 9 fractional digits,
+			// depending on required precision, followed by the suffix "s".
+			f := "%d.%09d"
+			if ns < 0 {
+				ns = -ns
+				if s == 0 {
+					f = "-%d.%09d"
+				}
+			}
+			x := fmt.Sprintf(f, s, ns)
+			x = strings.TrimSuffix(x, "000")
+			x = strings.TrimSuffix(x, "000")
+			x = strings.TrimSuffix(x, ".000")
+			out.write(`"`)
+			out.write(x)
+			out.write(`s"`)
+			return out.err
+		case "Struct", "ListValue":
+			// Let marshalValue handle the `Struct.fields` map or the `ListValue.values` slice.
+			// TODO: pass the correct Properties if needed.
+			return m.marshalValue(out, &proto.Properties{}, s.Field(0), indent)
+		case "Timestamp":
+			// "RFC 3339, where generated output will always be Z-normalized
+			//  and uses 0, 3, 6 or 9 fractional digits."
+			s, ns := s.Field(0).Int(), s.Field(1).Int()
+			if ns < 0 || ns >= secondInNanos {
+				return fmt.Errorf("ns out of range [0, %v)", secondInNanos)
+			}
+			t := time.Unix(s, ns).UTC()
+			// time.RFC3339Nano isn't exactly right (we need to get 3/6/9 fractional digits).
+			x := t.Format("2006-01-02T15:04:05.000000000")
+			x = strings.TrimSuffix(x, "000")
+			x = strings.TrimSuffix(x, "000")
+			x = strings.TrimSuffix(x, ".000")
+			out.write(`"`)
+			out.write(x)
+			out.write(`Z"`)
+			return out.err
+		case "Value":
+			// Value has a single oneof.
+			kind := s.Field(0)
+			if kind.IsNil() {
+				// "absence of any variant indicates an error"
+				return errors.New("nil Value")
+			}
+			// oneof -> *T -> T -> T.F
+			x := kind.Elem().Elem().Field(0)
+			// TODO: pass the correct Properties if needed.
+			return m.marshalValue(out, &proto.Properties{}, x, indent)
+		}
+	}
+
+	out.write("{")
+	if m.Indent != "" {
+		out.write("\n")
+	}
+
+	firstField := true
+
+	if typeURL != "" {
+		if err := m.marshalTypeURL(out, indent, typeURL); err != nil {
+			return err
+		}
+		firstField = false
+	}
+
+	for i := 0; i < s.NumField(); i++ {
+		value := s.Field(i)
+		valueField := s.Type().Field(i)
+		if strings.HasPrefix(valueField.Name, "XXX_") {
+			continue
+		}
+
+		// IsNil will panic on most value kinds.
+		switch value.Kind() {
+		case reflect.Chan, reflect.Func, reflect.Interface:
+			if value.IsNil() {
+				continue
+			}
+		}
+
+		if !m.EmitDefaults {
+			switch value.Kind() {
+			case reflect.Bool:
+				if !value.Bool() {
+					continue
+				}
+			case reflect.Int32, reflect.Int64:
+				if value.Int() == 0 {
+					continue
+				}
+			case reflect.Uint32, reflect.Uint64:
+				if value.Uint() == 0 {
+					continue
+				}
+			case reflect.Float32, reflect.Float64:
+				if value.Float() == 0 {
+					continue
+				}
+			case reflect.String:
+				if value.Len() == 0 {
+					continue
+				}
+			case reflect.Map, reflect.Ptr, reflect.Slice:
+				if value.IsNil() {
+					continue
+				}
+			}
+		}
+
+		// Oneof fields need special handling.
+		if valueField.Tag.Get("protobuf_oneof") != "" {
+			// value is an interface containing &T{real_value}.
+			sv := value.Elem().Elem() // interface -> *T -> T
+			value = sv.Field(0)
+			valueField = sv.Type().Field(0)
+		}
+		prop := jsonProperties(valueField, m.OrigName)
+		if !firstField {
+			m.writeSep(out)
+		}
+		if err := m.marshalField(out, prop, value, indent); err != nil {
+			return err
+		}
+		firstField = false
+	}
+
+	// Handle proto2 extensions.
+	if ep, ok := v.(proto.Message); ok {
+		extensions := proto.RegisteredExtensions(v)
+		// Sort extensions for stable output.
+		ids := make([]int32, 0, len(extensions))
+		for id, desc := range extensions {
+			if !proto.HasExtension(ep, desc) {
+				continue
+			}
+			ids = append(ids, id)
+		}
+		sort.Sort(int32Slice(ids))
+		for _, id := range ids {
+			desc := extensions[id]
+			if desc == nil {
+				// unknown extension
+				continue
+			}
+			ext, extErr := proto.GetExtension(ep, desc)
+			if extErr != nil {
+				return extErr
+			}
+			value := reflect.ValueOf(ext)
+			var prop proto.Properties
+			prop.Parse(desc.Tag)
+			prop.JSONName = fmt.Sprintf("[%s]", desc.Name)
+			if !firstField {
+				m.writeSep(out)
+			}
+			if err := m.marshalField(out, &prop, value, indent); err != nil {
+				return err
+			}
+			firstField = false
+		}
+
+	}
+
+	if m.Indent != "" {
+		out.write("\n")
+		out.write(indent)
+	}
+	out.write("}")
+	return out.err
+}
+
+func (m *Marshaler) writeSep(out *errWriter) {
+	if m.Indent != "" {
+		out.write(",\n")
+	} else {
+		out.write(",")
+	}
+}
+
+func (m *Marshaler) marshalAny(out *errWriter, any proto.Message, indent string) error {
+	// "If the Any contains a value that has a special JSON mapping,
+	//  it will be converted as follows: {"@type": xxx, "value": yyy}.
+	//  Otherwise, the value will be converted into a JSON object,
+	//  and the "@type" field will be inserted to indicate the actual data type."
+	v := reflect.ValueOf(any).Elem()
+	turl := v.Field(0).String()
+	val := v.Field(1).Bytes()
+
+	var msg proto.Message
+	var err error
+	if m.AnyResolver != nil {
+		msg, err = m.AnyResolver.Resolve(turl)
+	} else {
+		msg, err = defaultResolveAny(turl)
+	}
+	if err != nil {
+		return err
+	}
+
+	if err := proto.Unmarshal(val, msg); err != nil {
+		return err
+	}
+
+	if _, ok := msg.(wkt); ok {
+		out.write("{")
+		if m.Indent != "" {
+			out.write("\n")
+		}
+		if err := m.marshalTypeURL(out, indent, turl); err != nil {
+			return err
+		}
+		m.writeSep(out)
+		if m.Indent != "" {
+			out.write(indent)
+			out.write(m.Indent)
+			out.write(`"value": `)
+		} else {
+			out.write(`"value":`)
+		}
+		if err := m.marshalObject(out, msg, indent+m.Indent, ""); err != nil {
+			return err
+		}
+		if m.Indent != "" {
+			out.write("\n")
+			out.write(indent)
+		}
+		out.write("}")
+		return out.err
+	}
+
+	return m.marshalObject(out, msg, indent, turl)
+}
+
+func (m *Marshaler) marshalTypeURL(out *errWriter, indent, typeURL string) error {
+	if m.Indent != "" {
+		out.write(indent)
+		out.write(m.Indent)
+	}
+	out.write(`"@type":`)
+	if m.Indent != "" {
+		out.write(" ")
+	}
+	b, err := json.Marshal(typeURL)
+	if err != nil {
+		return err
+	}
+	out.write(string(b))
+	return out.err
+}
+
+// marshalField writes field description and value to the Writer.
+func (m *Marshaler) marshalField(out *errWriter, prop *proto.Properties, v reflect.Value, indent string) error {
+	if m.Indent != "" {
+		out.write(indent)
+		out.write(m.Indent)
+	}
+	out.write(`"`)
+	out.write(prop.JSONName)
+	out.write(`":`)
+	if m.Indent != "" {
+		out.write(" ")
+	}
+	if err := m.marshalValue(out, prop, v, indent); err != nil {
+		return err
+	}
+	return nil
+}
+
+// marshalValue writes the value to the Writer.
+func (m *Marshaler) marshalValue(out *errWriter, prop *proto.Properties, v reflect.Value, indent string) error {
+	var err error
+	v = reflect.Indirect(v)
+
+	// Handle nil pointer
+	if v.Kind() == reflect.Invalid {
+		out.write("null")
+		return out.err
+	}
+
+	// Handle repeated elements.
+	if v.Kind() == reflect.Slice && v.Type().Elem().Kind() != reflect.Uint8 {
+		out.write("[")
+		comma := ""
+		for i := 0; i < v.Len(); i++ {
+			sliceVal := v.Index(i)
+			out.write(comma)
+			if m.Indent != "" {
+				out.write("\n")
+				out.write(indent)
+				out.write(m.Indent)
+				out.write(m.Indent)
+			}
+			if err := m.marshalValue(out, prop, sliceVal, indent+m.Indent); err != nil {
+				return err
+			}
+			comma = ","
+		}
+		if m.Indent != "" {
+			out.write("\n")
+			out.write(indent)
+			out.write(m.Indent)
+		}
+		out.write("]")
+		return out.err
+	}
+
+	// Handle well-known types.
+	// Most are handled up in marshalObject (because 99% are messages).
+	if v.Type().Implements(wktType) {
+		wkt := v.Interface().(wkt)
+		switch wkt.XXX_WellKnownType() {
+		case "NullValue":
+			out.write("null")
+			return out.err
+		}
+	}
+
+	// Handle enumerations.
+	if !m.EnumsAsInts && prop.Enum != "" {
+		// Unknown enum values will are stringified by the proto library as their
+		// value. Such values should _not_ be quoted or they will be interpreted
+		// as an enum string instead of their value.
+		enumStr := v.Interface().(fmt.Stringer).String()
+		var valStr string
+		if v.Kind() == reflect.Ptr {
+			valStr = strconv.Itoa(int(v.Elem().Int()))
+		} else {
+			valStr = strconv.Itoa(int(v.Int()))
+		}
+		isKnownEnum := enumStr != valStr
+		if isKnownEnum {
+			out.write(`"`)
+		}
+		out.write(enumStr)
+		if isKnownEnum {
+			out.write(`"`)
+		}
+		return out.err
+	}
+
+	// Handle nested messages.
+	if v.Kind() == reflect.Struct {
+		return m.marshalObject(out, v.Addr().Interface().(proto.Message), indent+m.Indent, "")
+	}
+
+	// Handle maps.
+	// Since Go randomizes map iteration, we sort keys for stable output.
+	if v.Kind() == reflect.Map {
+		out.write(`{`)
+		keys := v.MapKeys()
+		sort.Sort(mapKeys(keys))
+		for i, k := range keys {
+			if i > 0 {
+				out.write(`,`)
+			}
+			if m.Indent != "" {
+				out.write("\n")
+				out.write(indent)
+				out.write(m.Indent)
+				out.write(m.Indent)
+			}
+
+			// TODO handle map key prop properly
+			b, err := json.Marshal(k.Interface())
+			if err != nil {
+				return err
+			}
+			s := string(b)
+
+			// If the JSON is not a string value, encode it again to make it one.
+			if !strings.HasPrefix(s, `"`) {
+				b, err := json.Marshal(s)
+				if err != nil {
+					return err
+				}
+				s = string(b)
+			}
+
+			out.write(s)
+			out.write(`:`)
+			if m.Indent != "" {
+				out.write(` `)
+			}
+
+			vprop := prop
+			if prop != nil && prop.MapValProp != nil {
+				vprop = prop.MapValProp
+			}
+			if err := m.marshalValue(out, vprop, v.MapIndex(k), indent+m.Indent); err != nil {
+				return err
+			}
+		}
+		if m.Indent != "" {
+			out.write("\n")
+			out.write(indent)
+			out.write(m.Indent)
+		}
+		out.write(`}`)
+		return out.err
+	}
+
+	// Handle non-finite floats, e.g. NaN, Infinity and -Infinity.
+	if v.Kind() == reflect.Float32 || v.Kind() == reflect.Float64 {
+		f := v.Float()
+		var sval string
+		switch {
+		case math.IsInf(f, 1):
+			sval = `"Infinity"`
+		case math.IsInf(f, -1):
+			sval = `"-Infinity"`
+		case math.IsNaN(f):
+			sval = `"NaN"`
+		}
+		if sval != "" {
+			out.write(sval)
+			return out.err
+		}
+	}
+
+	// Default handling defers to the encoding/json library.
+	b, err := json.Marshal(v.Interface())
+	if err != nil {
+		return err
+	}
+	needToQuote := string(b[0]) != `"` && (v.Kind() == reflect.Int64 || v.Kind() == reflect.Uint64)
+	if needToQuote {
+		out.write(`"`)
+	}
+	out.write(string(b))
+	if needToQuote {
+		out.write(`"`)
+	}
+	return out.err
+}
+
+// Unmarshaler is a configurable object for converting from a JSON
+// representation to a protocol buffer object.
+type Unmarshaler struct {
+	// Whether to allow messages to contain unknown fields, as opposed to
+	// failing to unmarshal.
+	AllowUnknownFields bool
+
+	// A custom URL resolver to use when unmarshaling Any messages from JSON.
+	// If unset, the default resolution strategy is to extract the
+	// fully-qualified type name from the type URL and pass that to
+	// proto.MessageType(string).
+	AnyResolver AnyResolver
+}
+
+// UnmarshalNext unmarshals the next protocol buffer from a JSON object stream.
+// This function is lenient and will decode any options permutations of the
+// related Marshaler.
+func (u *Unmarshaler) UnmarshalNext(dec *json.Decoder, pb proto.Message) error {
+	inputValue := json.RawMessage{}
+	if err := dec.Decode(&inputValue); err != nil {
+		return err
+	}
+	if err := u.unmarshalValue(reflect.ValueOf(pb).Elem(), inputValue, nil); err != nil {
+		return err
+	}
+	return checkRequiredFields(pb)
+}
+
+// Unmarshal unmarshals a JSON object stream into a protocol
+// buffer. This function is lenient and will decode any options
+// permutations of the related Marshaler.
+func (u *Unmarshaler) Unmarshal(r io.Reader, pb proto.Message) error {
+	dec := json.NewDecoder(r)
+	return u.UnmarshalNext(dec, pb)
+}
+
+// UnmarshalNext unmarshals the next protocol buffer from a JSON object stream.
+// This function is lenient and will decode any options permutations of the
+// related Marshaler.
+func UnmarshalNext(dec *json.Decoder, pb proto.Message) error {
+	return new(Unmarshaler).UnmarshalNext(dec, pb)
+}
+
+// Unmarshal unmarshals a JSON object stream into a protocol
+// buffer. This function is lenient and will decode any options
+// permutations of the related Marshaler.
+func Unmarshal(r io.Reader, pb proto.Message) error {
+	return new(Unmarshaler).Unmarshal(r, pb)
+}
+
+// UnmarshalString will populate the fields of a protocol buffer based
+// on a JSON string. This function is lenient and will decode any options
+// permutations of the related Marshaler.
+func UnmarshalString(str string, pb proto.Message) error {
+	return new(Unmarshaler).Unmarshal(strings.NewReader(str), pb)
+}
+
+// unmarshalValue converts/copies a value into the target.
+// prop may be nil.
+func (u *Unmarshaler) unmarshalValue(target reflect.Value, inputValue json.RawMessage, prop *proto.Properties) error {
+	targetType := target.Type()
+
+	// Allocate memory for pointer fields.
+	if targetType.Kind() == reflect.Ptr {
+		// If input value is "null" and target is a pointer type, then the field should be treated as not set
+		// UNLESS the target is structpb.Value, in which case it should be set to structpb.NullValue.
+		_, isJSONPBUnmarshaler := target.Interface().(JSONPBUnmarshaler)
+		if string(inputValue) == "null" && targetType != reflect.TypeOf(&stpb.Value{}) && !isJSONPBUnmarshaler {
+			return nil
+		}
+		target.Set(reflect.New(targetType.Elem()))
+
+		return u.unmarshalValue(target.Elem(), inputValue, prop)
+	}
+
+	if jsu, ok := target.Addr().Interface().(JSONPBUnmarshaler); ok {
+		return jsu.UnmarshalJSONPB(u, []byte(inputValue))
+	}
+
+	// Handle well-known types that are not pointers.
+	if w, ok := target.Addr().Interface().(wkt); ok {
+		switch w.XXX_WellKnownType() {
+		case "DoubleValue", "FloatValue", "Int64Value", "UInt64Value",
+			"Int32Value", "UInt32Value", "BoolValue", "StringValue", "BytesValue":
+			return u.unmarshalValue(target.Field(0), inputValue, prop)
+		case "Any":
+			// Use json.RawMessage pointer type instead of value to support pre-1.8 version.
+			// 1.8 changed RawMessage.MarshalJSON from pointer type to value type, see
+			// https://github.com/golang/go/issues/14493
+			var jsonFields map[string]*json.RawMessage
+			if err := json.Unmarshal(inputValue, &jsonFields); err != nil {
+				return err
+			}
+
+			val, ok := jsonFields["@type"]
+			if !ok || val == nil {
+				return errors.New("Any JSON doesn't have '@type'")
+			}
+
+			var turl string
+			if err := json.Unmarshal([]byte(*val), &turl); err != nil {
+				return fmt.Errorf("can't unmarshal Any's '@type': %q", *val)
+			}
+			target.Field(0).SetString(turl)
+
+			var m proto.Message
+			var err error
+			if u.AnyResolver != nil {
+				m, err = u.AnyResolver.Resolve(turl)
+			} else {
+				m, err = defaultResolveAny(turl)
+			}
+			if err != nil {
+				return err
+			}
+
+			if _, ok := m.(wkt); ok {
+				val, ok := jsonFields["value"]
+				if !ok {
+					return errors.New("Any JSON doesn't have 'value'")
+				}
+
+				if err := u.unmarshalValue(reflect.ValueOf(m).Elem(), *val, nil); err != nil {
+					return fmt.Errorf("can't unmarshal Any nested proto %T: %v", m, err)
+				}
+			} else {
+				delete(jsonFields, "@type")
+				nestedProto, err := json.Marshal(jsonFields)
+				if err != nil {
+					return fmt.Errorf("can't generate JSON for Any's nested proto to be unmarshaled: %v", err)
+				}
+
+				if err = u.unmarshalValue(reflect.ValueOf(m).Elem(), nestedProto, nil); err != nil {
+					return fmt.Errorf("can't unmarshal Any nested proto %T: %v", m, err)
+				}
+			}
+
+			b, err := proto.Marshal(m)
+			if err != nil {
+				return fmt.Errorf("can't marshal proto %T into Any.Value: %v", m, err)
+			}
+			target.Field(1).SetBytes(b)
+
+			return nil
+		case "Duration":
+			unq, err := unquote(string(inputValue))
+			if err != nil {
+				return err
+			}
+
+			d, err := time.ParseDuration(unq)
+			if err != nil {
+				return fmt.Errorf("bad Duration: %v", err)
+			}
+
+			ns := d.Nanoseconds()
+			s := ns / 1e9
+			ns %= 1e9
+			target.Field(0).SetInt(s)
+			target.Field(1).SetInt(ns)
+			return nil
+		case "Timestamp":
+			unq, err := unquote(string(inputValue))
+			if err != nil {
+				return err
+			}
+
+			t, err := time.Parse(time.RFC3339Nano, unq)
+			if err != nil {
+				return fmt.Errorf("bad Timestamp: %v", err)
+			}
+
+			target.Field(0).SetInt(t.Unix())
+			target.Field(1).SetInt(int64(t.Nanosecond()))
+			return nil
+		case "Struct":
+			var m map[string]json.RawMessage
+			if err := json.Unmarshal(inputValue, &m); err != nil {
+				return fmt.Errorf("bad StructValue: %v", err)
+			}
+
+			target.Field(0).Set(reflect.ValueOf(map[string]*stpb.Value{}))
+			for k, jv := range m {
+				pv := &stpb.Value{}
+				if err := u.unmarshalValue(reflect.ValueOf(pv).Elem(), jv, prop); err != nil {
+					return fmt.Errorf("bad value in StructValue for key %q: %v", k, err)
+				}
+				target.Field(0).SetMapIndex(reflect.ValueOf(k), reflect.ValueOf(pv))
+			}
+			return nil
+		case "ListValue":
+			var s []json.RawMessage
+			if err := json.Unmarshal(inputValue, &s); err != nil {
+				return fmt.Errorf("bad ListValue: %v", err)
+			}
+
+			target.Field(0).Set(reflect.ValueOf(make([]*stpb.Value, len(s))))
+			for i, sv := range s {
+				if err := u.unmarshalValue(target.Field(0).Index(i), sv, prop); err != nil {
+					return err
+				}
+			}
+			return nil
+		case "Value":
+			ivStr := string(inputValue)
+			if ivStr == "null" {
+				target.Field(0).Set(reflect.ValueOf(&stpb.Value_NullValue{}))
+			} else if v, err := strconv.ParseFloat(ivStr, 0); err == nil {
+				target.Field(0).Set(reflect.ValueOf(&stpb.Value_NumberValue{v}))
+			} else if v, err := unquote(ivStr); err == nil {
+				target.Field(0).Set(reflect.ValueOf(&stpb.Value_StringValue{v}))
+			} else if v, err := strconv.ParseBool(ivStr); err == nil {
+				target.Field(0).Set(reflect.ValueOf(&stpb.Value_BoolValue{v}))
+			} else if err := json.Unmarshal(inputValue, &[]json.RawMessage{}); err == nil {
+				lv := &stpb.ListValue{}
+				target.Field(0).Set(reflect.ValueOf(&stpb.Value_ListValue{lv}))
+				return u.unmarshalValue(reflect.ValueOf(lv).Elem(), inputValue, prop)
+			} else if err := json.Unmarshal(inputValue, &map[string]json.RawMessage{}); err == nil {
+				sv := &stpb.Struct{}
+				target.Field(0).Set(reflect.ValueOf(&stpb.Value_StructValue{sv}))
+				return u.unmarshalValue(reflect.ValueOf(sv).Elem(), inputValue, prop)
+			} else {
+				return fmt.Errorf("unrecognized type for Value %q", ivStr)
+			}
+			return nil
+		}
+	}
+
+	// Handle enums, which have an underlying type of int32,
+	// and may appear as strings.
+	// The case of an enum appearing as a number is handled
+	// at the bottom of this function.
+	if inputValue[0] == '"' && prop != nil && prop.Enum != "" {
+		vmap := proto.EnumValueMap(prop.Enum)
+		// Don't need to do unquoting; valid enum names
+		// are from a limited character set.
+		s := inputValue[1 : len(inputValue)-1]
+		n, ok := vmap[string(s)]
+		if !ok {
+			return fmt.Errorf("unknown value %q for enum %s", s, prop.Enum)
+		}
+		if target.Kind() == reflect.Ptr { // proto2
+			target.Set(reflect.New(targetType.Elem()))
+			target = target.Elem()
+		}
+		if targetType.Kind() != reflect.Int32 {
+			return fmt.Errorf("invalid target %q for enum %s", targetType.Kind(), prop.Enum)
+		}
+		target.SetInt(int64(n))
+		return nil
+	}
+
+	// Handle nested messages.
+	if targetType.Kind() == reflect.Struct {
+		var jsonFields map[string]json.RawMessage
+		if err := json.Unmarshal(inputValue, &jsonFields); err != nil {
+			return err
+		}
+
+		consumeField := func(prop *proto.Properties) (json.RawMessage, bool) {
+			// Be liberal in what names we accept; both orig_name and camelName are okay.
+			fieldNames := acceptedJSONFieldNames(prop)
+
+			vOrig, okOrig := jsonFields[fieldNames.orig]
+			vCamel, okCamel := jsonFields[fieldNames.camel]
+			if !okOrig && !okCamel {
+				return nil, false
+			}
+			// If, for some reason, both are present in the data, favour the camelName.
+			var raw json.RawMessage
+			if okOrig {
+				raw = vOrig
+				delete(jsonFields, fieldNames.orig)
+			}
+			if okCamel {
+				raw = vCamel
+				delete(jsonFields, fieldNames.camel)
+			}
+			return raw, true
+		}
+
+		sprops := proto.GetProperties(targetType)
+		for i := 0; i < target.NumField(); i++ {
+			ft := target.Type().Field(i)
+			if strings.HasPrefix(ft.Name, "XXX_") {
+				continue
+			}
+
+			valueForField, ok := consumeField(sprops.Prop[i])
+			if !ok {
+				continue
+			}
+
+			if err := u.unmarshalValue(target.Field(i), valueForField, sprops.Prop[i]); err != nil {
+				return err
+			}
+		}
+		// Check for any oneof fields.
+		if len(jsonFields) > 0 {
+			for _, oop := range sprops.OneofTypes {
+				raw, ok := consumeField(oop.Prop)
+				if !ok {
+					continue
+				}
+				nv := reflect.New(oop.Type.Elem())
+				target.Field(oop.Field).Set(nv)
+				if err := u.unmarshalValue(nv.Elem().Field(0), raw, oop.Prop); err != nil {
+					return err
+				}
+			}
+		}
+		// Handle proto2 extensions.
+		if len(jsonFields) > 0 {
+			if ep, ok := target.Addr().Interface().(proto.Message); ok {
+				for _, ext := range proto.RegisteredExtensions(ep) {
+					name := fmt.Sprintf("[%s]", ext.Name)
+					raw, ok := jsonFields[name]
+					if !ok {
+						continue
+					}
+					delete(jsonFields, name)
+					nv := reflect.New(reflect.TypeOf(ext.ExtensionType).Elem())
+					if err := u.unmarshalValue(nv.Elem(), raw, nil); err != nil {
+						return err
+					}
+					if err := proto.SetExtension(ep, ext, nv.Interface()); err != nil {
+						return err
+					}
+				}
+			}
+		}
+		if !u.AllowUnknownFields && len(jsonFields) > 0 {
+			// Pick any field to be the scapegoat.
+			var f string
+			for fname := range jsonFields {
+				f = fname
+				break
+			}
+			return fmt.Errorf("unknown field %q in %v", f, targetType)
+		}
+		return nil
+	}
+
+	// Handle arrays (which aren't encoded bytes)
+	if targetType.Kind() == reflect.Slice && targetType.Elem().Kind() != reflect.Uint8 {
+		var slc []json.RawMessage
+		if err := json.Unmarshal(inputValue, &slc); err != nil {
+			return err
+		}
+		if slc != nil {
+			l := len(slc)
+			target.Set(reflect.MakeSlice(targetType, l, l))
+			for i := 0; i < l; i++ {
+				if err := u.unmarshalValue(target.Index(i), slc[i], prop); err != nil {
+					return err
+				}
+			}
+		}
+		return nil
+	}
+
+	// Handle maps (whose keys are always strings)
+	if targetType.Kind() == reflect.Map {
+		var mp map[string]json.RawMessage
+		if err := json.Unmarshal(inputValue, &mp); err != nil {
+			return err
+		}
+		if mp != nil {
+			target.Set(reflect.MakeMap(targetType))
+			for ks, raw := range mp {
+				// Unmarshal map key. The core json library already decoded the key into a
+				// string, so we handle that specially. Other types were quoted post-serialization.
+				var k reflect.Value
+				if targetType.Key().Kind() == reflect.String {
+					k = reflect.ValueOf(ks)
+				} else {
+					k = reflect.New(targetType.Key()).Elem()
+					var kprop *proto.Properties
+					if prop != nil && prop.MapKeyProp != nil {
+						kprop = prop.MapKeyProp
+					}
+					if err := u.unmarshalValue(k, json.RawMessage(ks), kprop); err != nil {
+						return err
+					}
+				}
+
+				// Unmarshal map value.
+				v := reflect.New(targetType.Elem()).Elem()
+				var vprop *proto.Properties
+				if prop != nil && prop.MapValProp != nil {
+					vprop = prop.MapValProp
+				}
+				if err := u.unmarshalValue(v, raw, vprop); err != nil {
+					return err
+				}
+				target.SetMapIndex(k, v)
+			}
+		}
+		return nil
+	}
+
+	// Non-finite numbers can be encoded as strings.
+	isFloat := targetType.Kind() == reflect.Float32 || targetType.Kind() == reflect.Float64
+	if isFloat {
+		if num, ok := nonFinite[string(inputValue)]; ok {
+			target.SetFloat(num)
+			return nil
+		}
+	}
+
+	// integers & floats can be encoded as strings. In this case we drop
+	// the quotes and proceed as normal.
+	isNum := targetType.Kind() == reflect.Int64 || targetType.Kind() == reflect.Uint64 ||
+		targetType.Kind() == reflect.Int32 || targetType.Kind() == reflect.Uint32 ||
+		targetType.Kind() == reflect.Float32 || targetType.Kind() == reflect.Float64
+	if isNum && strings.HasPrefix(string(inputValue), `"`) {
+		inputValue = inputValue[1 : len(inputValue)-1]
+	}
+
+	// Use the encoding/json for parsing other value types.
+	return json.Unmarshal(inputValue, target.Addr().Interface())
+}
+
+func unquote(s string) (string, error) {
+	var ret string
+	err := json.Unmarshal([]byte(s), &ret)
+	return ret, err
+}
+
+// jsonProperties returns parsed proto.Properties for the field and corrects JSONName attribute.
+func jsonProperties(f reflect.StructField, origName bool) *proto.Properties {
+	var prop proto.Properties
+	prop.Init(f.Type, f.Name, f.Tag.Get("protobuf"), &f)
+	if origName || prop.JSONName == "" {
+		prop.JSONName = prop.OrigName
+	}
+	return &prop
+}
+
+type fieldNames struct {
+	orig, camel string
+}
+
+func acceptedJSONFieldNames(prop *proto.Properties) fieldNames {
+	opts := fieldNames{orig: prop.OrigName, camel: prop.OrigName}
+	if prop.JSONName != "" {
+		opts.camel = prop.JSONName
+	}
+	return opts
+}
+
+// Writer wrapper inspired by https://blog.golang.org/errors-are-values
+type errWriter struct {
+	writer io.Writer
+	err    error
+}
+
+func (w *errWriter) write(str string) {
+	if w.err != nil {
+		return
+	}
+	_, w.err = w.writer.Write([]byte(str))
+}
+
+// Map fields may have key types of non-float scalars, strings and enums.
+// The easiest way to sort them in some deterministic order is to use fmt.
+// If this turns out to be inefficient we can always consider other options,
+// such as doing a Schwartzian transform.
+//
+// Numeric keys are sorted in numeric order per
+// https://developers.google.com/protocol-buffers/docs/proto#maps.
+type mapKeys []reflect.Value
+
+func (s mapKeys) Len() int      { return len(s) }
+func (s mapKeys) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
+func (s mapKeys) Less(i, j int) bool {
+	if k := s[i].Kind(); k == s[j].Kind() {
+		switch k {
+		case reflect.String:
+			return s[i].String() < s[j].String()
+		case reflect.Int32, reflect.Int64:
+			return s[i].Int() < s[j].Int()
+		case reflect.Uint32, reflect.Uint64:
+			return s[i].Uint() < s[j].Uint()
+		}
+	}
+	return fmt.Sprint(s[i].Interface()) < fmt.Sprint(s[j].Interface())
+}
+
+// checkRequiredFields returns an error if any required field in the given proto message is not set.
+// This function is used by both Marshal and Unmarshal.  While required fields only exist in a
+// proto2 message, a proto3 message can contain proto2 message(s).
+func checkRequiredFields(pb proto.Message) error {
+	// Most well-known type messages do not contain required fields.  The "Any" type may contain
+	// a message that has required fields.
+	//
+	// When an Any message is being marshaled, the code will invoked proto.Unmarshal on Any.Value
+	// field in order to transform that into JSON, and that should have returned an error if a
+	// required field is not set in the embedded message.
+	//
+	// When an Any message is being unmarshaled, the code will have invoked proto.Marshal on the
+	// embedded message to store the serialized message in Any.Value field, and that should have
+	// returned an error if a required field is not set.
+	if _, ok := pb.(wkt); ok {
+		return nil
+	}
+
+	v := reflect.ValueOf(pb)
+	// Skip message if it is not a struct pointer.
+	if v.Kind() != reflect.Ptr {
+		return nil
+	}
+	v = v.Elem()
+	if v.Kind() != reflect.Struct {
+		return nil
+	}
+
+	for i := 0; i < v.NumField(); i++ {
+		field := v.Field(i)
+		sfield := v.Type().Field(i)
+
+		if sfield.PkgPath != "" {
+			// blank PkgPath means the field is exported; skip if not exported
+			continue
+		}
+
+		if strings.HasPrefix(sfield.Name, "XXX_") {
+			continue
+		}
+
+		// Oneof field is an interface implemented by wrapper structs containing the actual oneof
+		// field, i.e. an interface containing &T{real_value}.
+		if sfield.Tag.Get("protobuf_oneof") != "" {
+			if field.Kind() != reflect.Interface {
+				continue
+			}
+			v := field.Elem()
+			if v.Kind() != reflect.Ptr || v.IsNil() {
+				continue
+			}
+			v = v.Elem()
+			if v.Kind() != reflect.Struct || v.NumField() < 1 {
+				continue
+			}
+			field = v.Field(0)
+			sfield = v.Type().Field(0)
+		}
+
+		protoTag := sfield.Tag.Get("protobuf")
+		if protoTag == "" {
+			continue
+		}
+		var prop proto.Properties
+		prop.Init(sfield.Type, sfield.Name, protoTag, &sfield)
+
+		switch field.Kind() {
+		case reflect.Map:
+			if field.IsNil() {
+				continue
+			}
+			// Check each map value.
+			keys := field.MapKeys()
+			for _, k := range keys {
+				v := field.MapIndex(k)
+				if err := checkRequiredFieldsInValue(v); err != nil {
+					return err
+				}
+			}
+		case reflect.Slice:
+			// Handle non-repeated type, e.g. bytes.
+			if !prop.Repeated {
+				if prop.Required && field.IsNil() {
+					return fmt.Errorf("required field %q is not set", prop.Name)
+				}
+				continue
+			}
+
+			// Handle repeated type.
+			if field.IsNil() {
+				continue
+			}
+			// Check each slice item.
+			for i := 0; i < field.Len(); i++ {
+				v := field.Index(i)
+				if err := checkRequiredFieldsInValue(v); err != nil {
+					return err
+				}
+			}
+		case reflect.Ptr:
+			if field.IsNil() {
+				if prop.Required {
+					return fmt.Errorf("required field %q is not set", prop.Name)
+				}
+				continue
+			}
+			if err := checkRequiredFieldsInValue(field); err != nil {
+				return err
+			}
+		}
+	}
+
+	// Handle proto2 extensions.
+	for _, ext := range proto.RegisteredExtensions(pb) {
+		if !proto.HasExtension(pb, ext) {
+			continue
+		}
+		ep, err := proto.GetExtension(pb, ext)
+		if err != nil {
+			return err
+		}
+		err = checkRequiredFieldsInValue(reflect.ValueOf(ep))
+		if err != nil {
+			return err
+		}
+	}
+
+	return nil
+}
+
+func checkRequiredFieldsInValue(v reflect.Value) error {
+	if v.Type().Implements(messageType) {
+		return checkRequiredFields(v.Interface().(proto.Message))
+	}
+	return nil
+}
diff --git a/jsonpb/jsonpb_test.go b/jsonpb/jsonpb_test.go
new file mode 100644
index 0000000..931dc48
--- /dev/null
+++ b/jsonpb/jsonpb_test.go
@@ -0,0 +1,1262 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2015 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package jsonpb
+
+import (
+	"bytes"
+	"encoding/json"
+	"io"
+	"math"
+	"reflect"
+	"strings"
+	"testing"
+
+	"github.com/golang/protobuf/proto"
+
+	pb "github.com/golang/protobuf/jsonpb/jsonpb_test_proto"
+	proto3pb "github.com/golang/protobuf/proto/proto3_proto"
+	"github.com/golang/protobuf/ptypes"
+	anypb "github.com/golang/protobuf/ptypes/any"
+	durpb "github.com/golang/protobuf/ptypes/duration"
+	stpb "github.com/golang/protobuf/ptypes/struct"
+	tspb "github.com/golang/protobuf/ptypes/timestamp"
+	wpb "github.com/golang/protobuf/ptypes/wrappers"
+)
+
+var (
+	marshaler = Marshaler{}
+
+	marshalerAllOptions = Marshaler{
+		Indent: "  ",
+	}
+
+	simpleObject = &pb.Simple{
+		OInt32:     proto.Int32(-32),
+		OInt32Str:  proto.Int32(-32),
+		OInt64:     proto.Int64(-6400000000),
+		OInt64Str:  proto.Int64(-6400000000),
+		OUint32:    proto.Uint32(32),
+		OUint32Str: proto.Uint32(32),
+		OUint64:    proto.Uint64(6400000000),
+		OUint64Str: proto.Uint64(6400000000),
+		OSint32:    proto.Int32(-13),
+		OSint32Str: proto.Int32(-13),
+		OSint64:    proto.Int64(-2600000000),
+		OSint64Str: proto.Int64(-2600000000),
+		OFloat:     proto.Float32(3.14),
+		OFloatStr:  proto.Float32(3.14),
+		ODouble:    proto.Float64(6.02214179e23),
+		ODoubleStr: proto.Float64(6.02214179e23),
+		OBool:      proto.Bool(true),
+		OString:    proto.String("hello \"there\""),
+		OBytes:     []byte("beep boop"),
+	}
+
+	simpleObjectInputJSON = `{` +
+		`"oBool":true,` +
+		`"oInt32":-32,` +
+		`"oInt32Str":"-32",` +
+		`"oInt64":-6400000000,` +
+		`"oInt64Str":"-6400000000",` +
+		`"oUint32":32,` +
+		`"oUint32Str":"32",` +
+		`"oUint64":6400000000,` +
+		`"oUint64Str":"6400000000",` +
+		`"oSint32":-13,` +
+		`"oSint32Str":"-13",` +
+		`"oSint64":-2600000000,` +
+		`"oSint64Str":"-2600000000",` +
+		`"oFloat":3.14,` +
+		`"oFloatStr":"3.14",` +
+		`"oDouble":6.02214179e+23,` +
+		`"oDoubleStr":"6.02214179e+23",` +
+		`"oString":"hello \"there\"",` +
+		`"oBytes":"YmVlcCBib29w"` +
+		`}`
+
+	simpleObjectOutputJSON = `{` +
+		`"oBool":true,` +
+		`"oInt32":-32,` +
+		`"oInt32Str":-32,` +
+		`"oInt64":"-6400000000",` +
+		`"oInt64Str":"-6400000000",` +
+		`"oUint32":32,` +
+		`"oUint32Str":32,` +
+		`"oUint64":"6400000000",` +
+		`"oUint64Str":"6400000000",` +
+		`"oSint32":-13,` +
+		`"oSint32Str":-13,` +
+		`"oSint64":"-2600000000",` +
+		`"oSint64Str":"-2600000000",` +
+		`"oFloat":3.14,` +
+		`"oFloatStr":3.14,` +
+		`"oDouble":6.02214179e+23,` +
+		`"oDoubleStr":6.02214179e+23,` +
+		`"oString":"hello \"there\"",` +
+		`"oBytes":"YmVlcCBib29w"` +
+		`}`
+
+	simpleObjectInputPrettyJSON = `{
+  "oBool": true,
+  "oInt32": -32,
+  "oInt32Str": "-32",
+  "oInt64": -6400000000,
+  "oInt64Str": "-6400000000",
+  "oUint32": 32,
+  "oUint32Str": "32",
+  "oUint64": 6400000000,
+  "oUint64Str": "6400000000",
+  "oSint32": -13,
+  "oSint32Str": "-13",
+  "oSint64": -2600000000,
+  "oSint64Str": "-2600000000",
+  "oFloat": 3.14,
+  "oFloatStr": "3.14",
+  "oDouble": 6.02214179e+23,
+  "oDoubleStr": "6.02214179e+23",
+  "oString": "hello \"there\"",
+  "oBytes": "YmVlcCBib29w"
+}`
+
+	simpleObjectOutputPrettyJSON = `{
+  "oBool": true,
+  "oInt32": -32,
+  "oInt32Str": -32,
+  "oInt64": "-6400000000",
+  "oInt64Str": "-6400000000",
+  "oUint32": 32,
+  "oUint32Str": 32,
+  "oUint64": "6400000000",
+  "oUint64Str": "6400000000",
+  "oSint32": -13,
+  "oSint32Str": -13,
+  "oSint64": "-2600000000",
+  "oSint64Str": "-2600000000",
+  "oFloat": 3.14,
+  "oFloatStr": 3.14,
+  "oDouble": 6.02214179e+23,
+  "oDoubleStr": 6.02214179e+23,
+  "oString": "hello \"there\"",
+  "oBytes": "YmVlcCBib29w"
+}`
+
+	repeatsObject = &pb.Repeats{
+		RBool:   []bool{true, false, true},
+		RInt32:  []int32{-3, -4, -5},
+		RInt64:  []int64{-123456789, -987654321},
+		RUint32: []uint32{1, 2, 3},
+		RUint64: []uint64{6789012345, 3456789012},
+		RSint32: []int32{-1, -2, -3},
+		RSint64: []int64{-6789012345, -3456789012},
+		RFloat:  []float32{3.14, 6.28},
+		RDouble: []float64{299792458 * 1e20, 6.62606957e-34},
+		RString: []string{"happy", "days"},
+		RBytes:  [][]byte{[]byte("skittles"), []byte("m&m's")},
+	}
+
+	repeatsObjectJSON = `{` +
+		`"rBool":[true,false,true],` +
+		`"rInt32":[-3,-4,-5],` +
+		`"rInt64":["-123456789","-987654321"],` +
+		`"rUint32":[1,2,3],` +
+		`"rUint64":["6789012345","3456789012"],` +
+		`"rSint32":[-1,-2,-3],` +
+		`"rSint64":["-6789012345","-3456789012"],` +
+		`"rFloat":[3.14,6.28],` +
+		`"rDouble":[2.99792458e+28,6.62606957e-34],` +
+		`"rString":["happy","days"],` +
+		`"rBytes":["c2tpdHRsZXM=","bSZtJ3M="]` +
+		`}`
+
+	repeatsObjectPrettyJSON = `{
+  "rBool": [
+    true,
+    false,
+    true
+  ],
+  "rInt32": [
+    -3,
+    -4,
+    -5
+  ],
+  "rInt64": [
+    "-123456789",
+    "-987654321"
+  ],
+  "rUint32": [
+    1,
+    2,
+    3
+  ],
+  "rUint64": [
+    "6789012345",
+    "3456789012"
+  ],
+  "rSint32": [
+    -1,
+    -2,
+    -3
+  ],
+  "rSint64": [
+    "-6789012345",
+    "-3456789012"
+  ],
+  "rFloat": [
+    3.14,
+    6.28
+  ],
+  "rDouble": [
+    2.99792458e+28,
+    6.62606957e-34
+  ],
+  "rString": [
+    "happy",
+    "days"
+  ],
+  "rBytes": [
+    "c2tpdHRsZXM=",
+    "bSZtJ3M="
+  ]
+}`
+
+	innerSimple   = &pb.Simple{OInt32: proto.Int32(-32)}
+	innerSimple2  = &pb.Simple{OInt64: proto.Int64(25)}
+	innerRepeats  = &pb.Repeats{RString: []string{"roses", "red"}}
+	innerRepeats2 = &pb.Repeats{RString: []string{"violets", "blue"}}
+	complexObject = &pb.Widget{
+		Color:    pb.Widget_GREEN.Enum(),
+		RColor:   []pb.Widget_Color{pb.Widget_RED, pb.Widget_GREEN, pb.Widget_BLUE},
+		Simple:   innerSimple,
+		RSimple:  []*pb.Simple{innerSimple, innerSimple2},
+		Repeats:  innerRepeats,
+		RRepeats: []*pb.Repeats{innerRepeats, innerRepeats2},
+	}
+
+	complexObjectJSON = `{"color":"GREEN",` +
+		`"rColor":["RED","GREEN","BLUE"],` +
+		`"simple":{"oInt32":-32},` +
+		`"rSimple":[{"oInt32":-32},{"oInt64":"25"}],` +
+		`"repeats":{"rString":["roses","red"]},` +
+		`"rRepeats":[{"rString":["roses","red"]},{"rString":["violets","blue"]}]` +
+		`}`
+
+	complexObjectPrettyJSON = `{
+  "color": "GREEN",
+  "rColor": [
+    "RED",
+    "GREEN",
+    "BLUE"
+  ],
+  "simple": {
+    "oInt32": -32
+  },
+  "rSimple": [
+    {
+      "oInt32": -32
+    },
+    {
+      "oInt64": "25"
+    }
+  ],
+  "repeats": {
+    "rString": [
+      "roses",
+      "red"
+    ]
+  },
+  "rRepeats": [
+    {
+      "rString": [
+        "roses",
+        "red"
+      ]
+    },
+    {
+      "rString": [
+        "violets",
+        "blue"
+      ]
+    }
+  ]
+}`
+
+	colorPrettyJSON = `{
+ "color": 2
+}`
+
+	colorListPrettyJSON = `{
+  "color": 1000,
+  "rColor": [
+    "RED"
+  ]
+}`
+
+	nummyPrettyJSON = `{
+  "nummy": {
+    "1": 2,
+    "3": 4
+  }
+}`
+
+	objjyPrettyJSON = `{
+  "objjy": {
+    "1": {
+      "dub": 1
+    }
+  }
+}`
+	realNumber     = &pb.Real{Value: proto.Float64(3.14159265359)}
+	realNumberName = "Pi"
+	complexNumber  = &pb.Complex{Imaginary: proto.Float64(0.5772156649)}
+	realNumberJSON = `{` +
+		`"value":3.14159265359,` +
+		`"[jsonpb.Complex.real_extension]":{"imaginary":0.5772156649},` +
+		`"[jsonpb.name]":"Pi"` +
+		`}`
+
+	anySimple = &pb.KnownTypes{
+		An: &anypb.Any{
+			TypeUrl: "something.example.com/jsonpb.Simple",
+			Value: []byte{
+				// &pb.Simple{OBool:true}
+				1 << 3, 1,
+			},
+		},
+	}
+	anySimpleJSON       = `{"an":{"@type":"something.example.com/jsonpb.Simple","oBool":true}}`
+	anySimplePrettyJSON = `{
+  "an": {
+    "@type": "something.example.com/jsonpb.Simple",
+    "oBool": true
+  }
+}`
+
+	anyWellKnown = &pb.KnownTypes{
+		An: &anypb.Any{
+			TypeUrl: "type.googleapis.com/google.protobuf.Duration",
+			Value: []byte{
+				// &durpb.Duration{Seconds: 1, Nanos: 212000000 }
+				1 << 3, 1, // seconds
+				2 << 3, 0x80, 0xba, 0x8b, 0x65, // nanos
+			},
+		},
+	}
+	anyWellKnownJSON       = `{"an":{"@type":"type.googleapis.com/google.protobuf.Duration","value":"1.212s"}}`
+	anyWellKnownPrettyJSON = `{
+  "an": {
+    "@type": "type.googleapis.com/google.protobuf.Duration",
+    "value": "1.212s"
+  }
+}`
+
+	nonFinites = &pb.NonFinites{
+		FNan:  proto.Float32(float32(math.NaN())),
+		FPinf: proto.Float32(float32(math.Inf(1))),
+		FNinf: proto.Float32(float32(math.Inf(-1))),
+		DNan:  proto.Float64(float64(math.NaN())),
+		DPinf: proto.Float64(float64(math.Inf(1))),
+		DNinf: proto.Float64(float64(math.Inf(-1))),
+	}
+	nonFinitesJSON = `{` +
+		`"fNan":"NaN",` +
+		`"fPinf":"Infinity",` +
+		`"fNinf":"-Infinity",` +
+		`"dNan":"NaN",` +
+		`"dPinf":"Infinity",` +
+		`"dNinf":"-Infinity"` +
+		`}`
+)
+
+func init() {
+	if err := proto.SetExtension(realNumber, pb.E_Name, &realNumberName); err != nil {
+		panic(err)
+	}
+	if err := proto.SetExtension(realNumber, pb.E_Complex_RealExtension, complexNumber); err != nil {
+		panic(err)
+	}
+}
+
+var marshalingTests = []struct {
+	desc      string
+	marshaler Marshaler
+	pb        proto.Message
+	json      string
+}{
+	{"simple flat object", marshaler, simpleObject, simpleObjectOutputJSON},
+	{"simple pretty object", marshalerAllOptions, simpleObject, simpleObjectOutputPrettyJSON},
+	{"non-finite floats fields object", marshaler, nonFinites, nonFinitesJSON},
+	{"repeated fields flat object", marshaler, repeatsObject, repeatsObjectJSON},
+	{"repeated fields pretty object", marshalerAllOptions, repeatsObject, repeatsObjectPrettyJSON},
+	{"nested message/enum flat object", marshaler, complexObject, complexObjectJSON},
+	{"nested message/enum pretty object", marshalerAllOptions, complexObject, complexObjectPrettyJSON},
+	{"enum-string flat object", Marshaler{},
+		&pb.Widget{Color: pb.Widget_BLUE.Enum()}, `{"color":"BLUE"}`},
+	{"enum-value pretty object", Marshaler{EnumsAsInts: true, Indent: " "},
+		&pb.Widget{Color: pb.Widget_BLUE.Enum()}, colorPrettyJSON},
+	{"unknown enum value object", marshalerAllOptions,
+		&pb.Widget{Color: pb.Widget_Color(1000).Enum(), RColor: []pb.Widget_Color{pb.Widget_RED}}, colorListPrettyJSON},
+	{"repeated proto3 enum", Marshaler{},
+		&proto3pb.Message{RFunny: []proto3pb.Message_Humour{
+			proto3pb.Message_PUNS,
+			proto3pb.Message_SLAPSTICK,
+		}},
+		`{"rFunny":["PUNS","SLAPSTICK"]}`},
+	{"repeated proto3 enum as int", Marshaler{EnumsAsInts: true},
+		&proto3pb.Message{RFunny: []proto3pb.Message_Humour{
+			proto3pb.Message_PUNS,
+			proto3pb.Message_SLAPSTICK,
+		}},
+		`{"rFunny":[1,2]}`},
+	{"empty value", marshaler, &pb.Simple3{}, `{}`},
+	{"empty value emitted", Marshaler{EmitDefaults: true}, &pb.Simple3{}, `{"dub":0}`},
+	{"empty repeated emitted", Marshaler{EmitDefaults: true}, &pb.SimpleSlice3{}, `{"slices":[]}`},
+	{"empty map emitted", Marshaler{EmitDefaults: true}, &pb.SimpleMap3{}, `{"stringy":{}}`},
+	{"nested struct null", Marshaler{EmitDefaults: true}, &pb.SimpleNull3{}, `{"simple":null}`},
+	{"map<int64, int32>", marshaler, &pb.Mappy{Nummy: map[int64]int32{1: 2, 3: 4}}, `{"nummy":{"1":2,"3":4}}`},
+	{"map<int64, int32>", marshalerAllOptions, &pb.Mappy{Nummy: map[int64]int32{1: 2, 3: 4}}, nummyPrettyJSON},
+	{"map<string, string>", marshaler,
+		&pb.Mappy{Strry: map[string]string{`"one"`: "two", "three": "four"}},
+		`{"strry":{"\"one\"":"two","three":"four"}}`},
+	{"map<int32, Object>", marshaler,
+		&pb.Mappy{Objjy: map[int32]*pb.Simple3{1: {Dub: 1}}}, `{"objjy":{"1":{"dub":1}}}`},
+	{"map<int32, Object>", marshalerAllOptions,
+		&pb.Mappy{Objjy: map[int32]*pb.Simple3{1: {Dub: 1}}}, objjyPrettyJSON},
+	{"map<int64, string>", marshaler, &pb.Mappy{Buggy: map[int64]string{1234: "yup"}},
+		`{"buggy":{"1234":"yup"}}`},
+	{"map<bool, bool>", marshaler, &pb.Mappy{Booly: map[bool]bool{false: true}}, `{"booly":{"false":true}}`},
+	{"map<string, enum>", marshaler, &pb.Mappy{Enumy: map[string]pb.Numeral{"XIV": pb.Numeral_ROMAN}}, `{"enumy":{"XIV":"ROMAN"}}`},
+	{"map<string, enum as int>", Marshaler{EnumsAsInts: true}, &pb.Mappy{Enumy: map[string]pb.Numeral{"XIV": pb.Numeral_ROMAN}}, `{"enumy":{"XIV":2}}`},
+	{"map<int32, bool>", marshaler, &pb.Mappy{S32Booly: map[int32]bool{1: true, 3: false, 10: true, 12: false}}, `{"s32booly":{"1":true,"3":false,"10":true,"12":false}}`},
+	{"map<int64, bool>", marshaler, &pb.Mappy{S64Booly: map[int64]bool{1: true, 3: false, 10: true, 12: false}}, `{"s64booly":{"1":true,"3":false,"10":true,"12":false}}`},
+	{"map<uint32, bool>", marshaler, &pb.Mappy{U32Booly: map[uint32]bool{1: true, 3: false, 10: true, 12: false}}, `{"u32booly":{"1":true,"3":false,"10":true,"12":false}}`},
+	{"map<uint64, bool>", marshaler, &pb.Mappy{U64Booly: map[uint64]bool{1: true, 3: false, 10: true, 12: false}}, `{"u64booly":{"1":true,"3":false,"10":true,"12":false}}`},
+	{"proto2 map<int64, string>", marshaler, &pb.Maps{MInt64Str: map[int64]string{213: "cat"}},
+		`{"mInt64Str":{"213":"cat"}}`},
+	{"proto2 map<bool, Object>", marshaler,
+		&pb.Maps{MBoolSimple: map[bool]*pb.Simple{true: {OInt32: proto.Int32(1)}}},
+		`{"mBoolSimple":{"true":{"oInt32":1}}}`},
+	{"oneof, not set", marshaler, &pb.MsgWithOneof{}, `{}`},
+	{"oneof, set", marshaler, &pb.MsgWithOneof{Union: &pb.MsgWithOneof_Title{"Grand Poobah"}}, `{"title":"Grand Poobah"}`},
+	{"force orig_name", Marshaler{OrigName: true}, &pb.Simple{OInt32: proto.Int32(4)},
+		`{"o_int32":4}`},
+	{"proto2 extension", marshaler, realNumber, realNumberJSON},
+	{"Any with message", marshaler, anySimple, anySimpleJSON},
+	{"Any with message and indent", marshalerAllOptions, anySimple, anySimplePrettyJSON},
+	{"Any with WKT", marshaler, anyWellKnown, anyWellKnownJSON},
+	{"Any with WKT and indent", marshalerAllOptions, anyWellKnown, anyWellKnownPrettyJSON},
+	{"Duration empty", marshaler, &durpb.Duration{}, `"0s"`},
+	{"Duration with secs", marshaler, &durpb.Duration{Seconds: 3}, `"3s"`},
+	{"Duration with -secs", marshaler, &durpb.Duration{Seconds: -3}, `"-3s"`},
+	{"Duration with nanos", marshaler, &durpb.Duration{Nanos: 1e6}, `"0.001s"`},
+	{"Duration with -nanos", marshaler, &durpb.Duration{Nanos: -1e6}, `"-0.001s"`},
+	{"Duration with large secs", marshaler, &durpb.Duration{Seconds: 1e10, Nanos: 1}, `"10000000000.000000001s"`},
+	{"Duration with 6-digit nanos", marshaler, &durpb.Duration{Nanos: 1e4}, `"0.000010s"`},
+	{"Duration with 3-digit nanos", marshaler, &durpb.Duration{Nanos: 1e6}, `"0.001s"`},
+	{"Duration with -secs -nanos", marshaler, &durpb.Duration{Seconds: -123, Nanos: -450}, `"-123.000000450s"`},
+	{"Duration max value", marshaler, &durpb.Duration{Seconds: 315576000000, Nanos: 999999999}, `"315576000000.999999999s"`},
+	{"Duration min value", marshaler, &durpb.Duration{Seconds: -315576000000, Nanos: -999999999}, `"-315576000000.999999999s"`},
+	{"Struct", marshaler, &pb.KnownTypes{St: &stpb.Struct{
+		Fields: map[string]*stpb.Value{
+			"one": {Kind: &stpb.Value_StringValue{"loneliest number"}},
+			"two": {Kind: &stpb.Value_NullValue{stpb.NullValue_NULL_VALUE}},
+		},
+	}}, `{"st":{"one":"loneliest number","two":null}}`},
+	{"empty ListValue", marshaler, &pb.KnownTypes{Lv: &stpb.ListValue{}}, `{"lv":[]}`},
+	{"basic ListValue", marshaler, &pb.KnownTypes{Lv: &stpb.ListValue{Values: []*stpb.Value{
+		{Kind: &stpb.Value_StringValue{"x"}},
+		{Kind: &stpb.Value_NullValue{}},
+		{Kind: &stpb.Value_NumberValue{3}},
+		{Kind: &stpb.Value_BoolValue{true}},
+	}}}, `{"lv":["x",null,3,true]}`},
+	{"Timestamp", marshaler, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 14e8, Nanos: 21e6}}, `{"ts":"2014-05-13T16:53:20.021Z"}`},
+	{"Timestamp", marshaler, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 14e8, Nanos: 0}}, `{"ts":"2014-05-13T16:53:20Z"}`},
+	{"number Value", marshaler, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_NumberValue{1}}}, `{"val":1}`},
+	{"null Value", marshaler, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_NullValue{stpb.NullValue_NULL_VALUE}}}, `{"val":null}`},
+	{"string number value", marshaler, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_StringValue{"9223372036854775807"}}}, `{"val":"9223372036854775807"}`},
+	{"list of lists Value", marshaler, &pb.KnownTypes{Val: &stpb.Value{
+		Kind: &stpb.Value_ListValue{&stpb.ListValue{
+			Values: []*stpb.Value{
+				{Kind: &stpb.Value_StringValue{"x"}},
+				{Kind: &stpb.Value_ListValue{&stpb.ListValue{
+					Values: []*stpb.Value{
+						{Kind: &stpb.Value_ListValue{&stpb.ListValue{
+							Values: []*stpb.Value{{Kind: &stpb.Value_StringValue{"y"}}},
+						}}},
+						{Kind: &stpb.Value_StringValue{"z"}},
+					},
+				}}},
+			},
+		}},
+	}}, `{"val":["x",[["y"],"z"]]}`},
+
+	{"DoubleValue", marshaler, &pb.KnownTypes{Dbl: &wpb.DoubleValue{Value: 1.2}}, `{"dbl":1.2}`},
+	{"FloatValue", marshaler, &pb.KnownTypes{Flt: &wpb.FloatValue{Value: 1.2}}, `{"flt":1.2}`},
+	{"Int64Value", marshaler, &pb.KnownTypes{I64: &wpb.Int64Value{Value: -3}}, `{"i64":"-3"}`},
+	{"UInt64Value", marshaler, &pb.KnownTypes{U64: &wpb.UInt64Value{Value: 3}}, `{"u64":"3"}`},
+	{"Int32Value", marshaler, &pb.KnownTypes{I32: &wpb.Int32Value{Value: -4}}, `{"i32":-4}`},
+	{"UInt32Value", marshaler, &pb.KnownTypes{U32: &wpb.UInt32Value{Value: 4}}, `{"u32":4}`},
+	{"BoolValue", marshaler, &pb.KnownTypes{Bool: &wpb.BoolValue{Value: true}}, `{"bool":true}`},
+	{"StringValue", marshaler, &pb.KnownTypes{Str: &wpb.StringValue{Value: "plush"}}, `{"str":"plush"}`},
+	{"BytesValue", marshaler, &pb.KnownTypes{Bytes: &wpb.BytesValue{Value: []byte("wow")}}, `{"bytes":"d293"}`},
+
+	{"required", marshaler, &pb.MsgWithRequired{Str: proto.String("hello")}, `{"str":"hello"}`},
+	{"required bytes", marshaler, &pb.MsgWithRequiredBytes{Byts: []byte{}}, `{"byts":""}`},
+}
+
+func TestMarshaling(t *testing.T) {
+	for _, tt := range marshalingTests {
+		json, err := tt.marshaler.MarshalToString(tt.pb)
+		if err != nil {
+			t.Errorf("%s: marshaling error: %v", tt.desc, err)
+		} else if tt.json != json {
+			t.Errorf("%s: got [%v] want [%v]", tt.desc, json, tt.json)
+		}
+	}
+}
+
+func TestMarshalingNil(t *testing.T) {
+	var msg *pb.Simple
+	m := &Marshaler{}
+	if _, err := m.MarshalToString(msg); err == nil {
+		t.Errorf("mashaling nil returned no error")
+	}
+}
+
+func TestMarshalIllegalTime(t *testing.T) {
+	tests := []struct {
+		pb   proto.Message
+		fail bool
+	}{
+		{&durpb.Duration{Seconds: 1, Nanos: 0}, false},
+		{&durpb.Duration{Seconds: -1, Nanos: 0}, false},
+		{&durpb.Duration{Seconds: 1, Nanos: -1}, true},
+		{&durpb.Duration{Seconds: -1, Nanos: 1}, true},
+		{&durpb.Duration{Seconds: 315576000001}, true},
+		{&durpb.Duration{Seconds: -315576000001}, true},
+		{&durpb.Duration{Seconds: 1, Nanos: 1000000000}, true},
+		{&durpb.Duration{Seconds: -1, Nanos: -1000000000}, true},
+		{&tspb.Timestamp{Seconds: 1, Nanos: 1}, false},
+		{&tspb.Timestamp{Seconds: 1, Nanos: -1}, true},
+		{&tspb.Timestamp{Seconds: 1, Nanos: 1000000000}, true},
+	}
+	for _, tt := range tests {
+		_, err := marshaler.MarshalToString(tt.pb)
+		if err == nil && tt.fail {
+			t.Errorf("marshaler.MarshalToString(%v) = _, <nil>; want _, <non-nil>", tt.pb)
+		}
+		if err != nil && !tt.fail {
+			t.Errorf("marshaler.MarshalToString(%v) = _, %v; want _, <nil>", tt.pb, err)
+		}
+	}
+}
+
+func TestMarshalJSONPBMarshaler(t *testing.T) {
+	rawJson := `{ "foo": "bar", "baz": [0, 1, 2, 3] }`
+	msg := dynamicMessage{RawJson: rawJson}
+	str, err := new(Marshaler).MarshalToString(&msg)
+	if err != nil {
+		t.Errorf("an unexpected error occurred when marshaling JSONPBMarshaler: %v", err)
+	}
+	if str != rawJson {
+		t.Errorf("marshaling JSON produced incorrect output: got %s, wanted %s", str, rawJson)
+	}
+}
+
+func TestMarshalAnyJSONPBMarshaler(t *testing.T) {
+	msg := dynamicMessage{RawJson: `{ "foo": "bar", "baz": [0, 1, 2, 3] }`}
+	a, err := ptypes.MarshalAny(&msg)
+	if err != nil {
+		t.Errorf("an unexpected error occurred when marshaling to Any: %v", err)
+	}
+	str, err := new(Marshaler).MarshalToString(a)
+	if err != nil {
+		t.Errorf("an unexpected error occurred when marshaling Any to JSON: %v", err)
+	}
+	// after custom marshaling, it's round-tripped through JSON decoding/encoding already,
+	// so the keys are sorted, whitespace is compacted, and "@type" key has been added
+	expected := `{"@type":"type.googleapis.com/` + dynamicMessageName + `","baz":[0,1,2,3],"foo":"bar"}`
+	if str != expected {
+		t.Errorf("marshaling JSON produced incorrect output: got %s, wanted %s", str, expected)
+	}
+
+	// Do it again, but this time with indentation:
+
+	marshaler := Marshaler{Indent: "  "}
+	str, err = marshaler.MarshalToString(a)
+	if err != nil {
+		t.Errorf("an unexpected error occurred when marshaling Any to JSON: %v", err)
+	}
+	// same as expected above, but pretty-printed w/ indentation
+	expected = `{
+  "@type": "type.googleapis.com/` + dynamicMessageName + `",
+  "baz": [
+    0,
+    1,
+    2,
+    3
+  ],
+  "foo": "bar"
+}`
+	if str != expected {
+		t.Errorf("marshaling JSON produced incorrect output: got %s, wanted %s", str, expected)
+	}
+}
+
+func TestMarshalWithCustomValidation(t *testing.T) {
+	msg := dynamicMessage{RawJson: `{ "foo": "bar", "baz": [0, 1, 2, 3] }`, Dummy: &dynamicMessage{}}
+
+	js, err := new(Marshaler).MarshalToString(&msg)
+	if err != nil {
+		t.Errorf("an unexpected error occurred when marshaling to json: %v", err)
+	}
+	err = Unmarshal(strings.NewReader(js), &msg)
+	if err != nil {
+		t.Errorf("an unexpected error occurred when unmarshaling from json: %v", err)
+	}
+}
+
+// Test marshaling message containing unset required fields should produce error.
+func TestMarshalUnsetRequiredFields(t *testing.T) {
+	msgExt := &pb.Real{}
+	proto.SetExtension(msgExt, pb.E_Extm, &pb.MsgWithRequired{})
+
+	tests := []struct {
+		desc      string
+		marshaler *Marshaler
+		pb        proto.Message
+	}{
+		{
+			desc:      "direct required field",
+			marshaler: &Marshaler{},
+			pb:        &pb.MsgWithRequired{},
+		},
+		{
+			desc:      "direct required field + emit defaults",
+			marshaler: &Marshaler{EmitDefaults: true},
+			pb:        &pb.MsgWithRequired{},
+		},
+		{
+			desc:      "indirect required field",
+			marshaler: &Marshaler{},
+			pb:        &pb.MsgWithIndirectRequired{Subm: &pb.MsgWithRequired{}},
+		},
+		{
+			desc:      "indirect required field + emit defaults",
+			marshaler: &Marshaler{EmitDefaults: true},
+			pb:        &pb.MsgWithIndirectRequired{Subm: &pb.MsgWithRequired{}},
+		},
+		{
+			desc:      "direct required wkt field",
+			marshaler: &Marshaler{},
+			pb:        &pb.MsgWithRequiredWKT{},
+		},
+		{
+			desc:      "direct required wkt field + emit defaults",
+			marshaler: &Marshaler{EmitDefaults: true},
+			pb:        &pb.MsgWithRequiredWKT{},
+		},
+		{
+			desc:      "direct required bytes field",
+			marshaler: &Marshaler{},
+			pb:        &pb.MsgWithRequiredBytes{},
+		},
+		{
+			desc:      "required in map value",
+			marshaler: &Marshaler{},
+			pb: &pb.MsgWithIndirectRequired{
+				MapField: map[string]*pb.MsgWithRequired{
+					"key": {},
+				},
+			},
+		},
+		{
+			desc:      "required in repeated item",
+			marshaler: &Marshaler{},
+			pb: &pb.MsgWithIndirectRequired{
+				SliceField: []*pb.MsgWithRequired{
+					{Str: proto.String("hello")},
+					{},
+				},
+			},
+		},
+		{
+			desc:      "required inside oneof",
+			marshaler: &Marshaler{},
+			pb: &pb.MsgWithOneof{
+				Union: &pb.MsgWithOneof_MsgWithRequired{&pb.MsgWithRequired{}},
+			},
+		},
+		{
+			desc:      "required inside extension",
+			marshaler: &Marshaler{},
+			pb:        msgExt,
+		},
+	}
+
+	for _, tc := range tests {
+		if _, err := tc.marshaler.MarshalToString(tc.pb); err == nil {
+			t.Errorf("%s: expecting error in marshaling with unset required fields %+v", tc.desc, tc.pb)
+		}
+	}
+}
+
+var unmarshalingTests = []struct {
+	desc        string
+	unmarshaler Unmarshaler
+	json        string
+	pb          proto.Message
+}{
+	{"simple flat object", Unmarshaler{}, simpleObjectInputJSON, simpleObject},
+	{"simple pretty object", Unmarshaler{}, simpleObjectInputPrettyJSON, simpleObject},
+	{"repeated fields flat object", Unmarshaler{}, repeatsObjectJSON, repeatsObject},
+	{"repeated fields pretty object", Unmarshaler{}, repeatsObjectPrettyJSON, repeatsObject},
+	{"nested message/enum flat object", Unmarshaler{}, complexObjectJSON, complexObject},
+	{"nested message/enum pretty object", Unmarshaler{}, complexObjectPrettyJSON, complexObject},
+	{"enum-string object", Unmarshaler{}, `{"color":"BLUE"}`, &pb.Widget{Color: pb.Widget_BLUE.Enum()}},
+	{"enum-value object", Unmarshaler{}, "{\n \"color\": 2\n}", &pb.Widget{Color: pb.Widget_BLUE.Enum()}},
+	{"unknown field with allowed option", Unmarshaler{AllowUnknownFields: true}, `{"unknown": "foo"}`, new(pb.Simple)},
+	{"proto3 enum string", Unmarshaler{}, `{"hilarity":"PUNS"}`, &proto3pb.Message{Hilarity: proto3pb.Message_PUNS}},
+	{"proto3 enum value", Unmarshaler{}, `{"hilarity":1}`, &proto3pb.Message{Hilarity: proto3pb.Message_PUNS}},
+	{"unknown enum value object",
+		Unmarshaler{},
+		"{\n  \"color\": 1000,\n  \"r_color\": [\n    \"RED\"\n  ]\n}",
+		&pb.Widget{Color: pb.Widget_Color(1000).Enum(), RColor: []pb.Widget_Color{pb.Widget_RED}}},
+	{"repeated proto3 enum", Unmarshaler{}, `{"rFunny":["PUNS","SLAPSTICK"]}`,
+		&proto3pb.Message{RFunny: []proto3pb.Message_Humour{
+			proto3pb.Message_PUNS,
+			proto3pb.Message_SLAPSTICK,
+		}}},
+	{"repeated proto3 enum as int", Unmarshaler{}, `{"rFunny":[1,2]}`,
+		&proto3pb.Message{RFunny: []proto3pb.Message_Humour{
+			proto3pb.Message_PUNS,
+			proto3pb.Message_SLAPSTICK,
+		}}},
+	{"repeated proto3 enum as mix of strings and ints", Unmarshaler{}, `{"rFunny":["PUNS",2]}`,
+		&proto3pb.Message{RFunny: []proto3pb.Message_Humour{
+			proto3pb.Message_PUNS,
+			proto3pb.Message_SLAPSTICK,
+		}}},
+	{"unquoted int64 object", Unmarshaler{}, `{"oInt64":-314}`, &pb.Simple{OInt64: proto.Int64(-314)}},
+	{"unquoted uint64 object", Unmarshaler{}, `{"oUint64":123}`, &pb.Simple{OUint64: proto.Uint64(123)}},
+	{"NaN", Unmarshaler{}, `{"oDouble":"NaN"}`, &pb.Simple{ODouble: proto.Float64(math.NaN())}},
+	{"Inf", Unmarshaler{}, `{"oFloat":"Infinity"}`, &pb.Simple{OFloat: proto.Float32(float32(math.Inf(1)))}},
+	{"-Inf", Unmarshaler{}, `{"oDouble":"-Infinity"}`, &pb.Simple{ODouble: proto.Float64(math.Inf(-1))}},
+	{"map<int64, int32>", Unmarshaler{}, `{"nummy":{"1":2,"3":4}}`, &pb.Mappy{Nummy: map[int64]int32{1: 2, 3: 4}}},
+	{"map<string, string>", Unmarshaler{}, `{"strry":{"\"one\"":"two","three":"four"}}`, &pb.Mappy{Strry: map[string]string{`"one"`: "two", "three": "four"}}},
+	{"map<int32, Object>", Unmarshaler{}, `{"objjy":{"1":{"dub":1}}}`, &pb.Mappy{Objjy: map[int32]*pb.Simple3{1: {Dub: 1}}}},
+	{"proto2 extension", Unmarshaler{}, realNumberJSON, realNumber},
+	{"Any with message", Unmarshaler{}, anySimpleJSON, anySimple},
+	{"Any with message and indent", Unmarshaler{}, anySimplePrettyJSON, anySimple},
+	{"Any with WKT", Unmarshaler{}, anyWellKnownJSON, anyWellKnown},
+	{"Any with WKT and indent", Unmarshaler{}, anyWellKnownPrettyJSON, anyWellKnown},
+	{"map<string, enum>", Unmarshaler{}, `{"enumy":{"XIV":"ROMAN"}}`, &pb.Mappy{Enumy: map[string]pb.Numeral{"XIV": pb.Numeral_ROMAN}}},
+	{"map<string, enum as int>", Unmarshaler{}, `{"enumy":{"XIV":2}}`, &pb.Mappy{Enumy: map[string]pb.Numeral{"XIV": pb.Numeral_ROMAN}}},
+	{"oneof", Unmarshaler{}, `{"salary":31000}`, &pb.MsgWithOneof{Union: &pb.MsgWithOneof_Salary{31000}}},
+	{"oneof spec name", Unmarshaler{}, `{"Country":"Australia"}`, &pb.MsgWithOneof{Union: &pb.MsgWithOneof_Country{"Australia"}}},
+	{"oneof orig_name", Unmarshaler{}, `{"Country":"Australia"}`, &pb.MsgWithOneof{Union: &pb.MsgWithOneof_Country{"Australia"}}},
+	{"oneof spec name2", Unmarshaler{}, `{"homeAddress":"Australia"}`, &pb.MsgWithOneof{Union: &pb.MsgWithOneof_HomeAddress{"Australia"}}},
+	{"oneof orig_name2", Unmarshaler{}, `{"home_address":"Australia"}`, &pb.MsgWithOneof{Union: &pb.MsgWithOneof_HomeAddress{"Australia"}}},
+	{"orig_name input", Unmarshaler{}, `{"o_bool":true}`, &pb.Simple{OBool: proto.Bool(true)}},
+	{"camelName input", Unmarshaler{}, `{"oBool":true}`, &pb.Simple{OBool: proto.Bool(true)}},
+
+	{"Duration", Unmarshaler{}, `{"dur":"3.000s"}`, &pb.KnownTypes{Dur: &durpb.Duration{Seconds: 3}}},
+	{"Duration", Unmarshaler{}, `{"dur":"4s"}`, &pb.KnownTypes{Dur: &durpb.Duration{Seconds: 4}}},
+	{"Duration with unicode", Unmarshaler{}, `{"dur": "3\u0073"}`, &pb.KnownTypes{Dur: &durpb.Duration{Seconds: 3}}},
+	{"null Duration", Unmarshaler{}, `{"dur":null}`, &pb.KnownTypes{Dur: nil}},
+	{"Timestamp", Unmarshaler{}, `{"ts":"2014-05-13T16:53:20.021Z"}`, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 14e8, Nanos: 21e6}}},
+	{"Timestamp", Unmarshaler{}, `{"ts":"2014-05-13T16:53:20Z"}`, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 14e8, Nanos: 0}}},
+	{"Timestamp with unicode", Unmarshaler{}, `{"ts": "2014-05-13T16:53:20\u005a"}`, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 14e8, Nanos: 0}}},
+	{"PreEpochTimestamp", Unmarshaler{}, `{"ts":"1969-12-31T23:59:58.999999995Z"}`, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: -2, Nanos: 999999995}}},
+	{"ZeroTimeTimestamp", Unmarshaler{}, `{"ts":"0001-01-01T00:00:00Z"}`, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: -62135596800, Nanos: 0}}},
+	{"null Timestamp", Unmarshaler{}, `{"ts":null}`, &pb.KnownTypes{Ts: nil}},
+	{"null Struct", Unmarshaler{}, `{"st": null}`, &pb.KnownTypes{St: nil}},
+	{"empty Struct", Unmarshaler{}, `{"st": {}}`, &pb.KnownTypes{St: &stpb.Struct{}}},
+	{"basic Struct", Unmarshaler{}, `{"st": {"a": "x", "b": null, "c": 3, "d": true}}`, &pb.KnownTypes{St: &stpb.Struct{Fields: map[string]*stpb.Value{
+		"a": {Kind: &stpb.Value_StringValue{"x"}},
+		"b": {Kind: &stpb.Value_NullValue{}},
+		"c": {Kind: &stpb.Value_NumberValue{3}},
+		"d": {Kind: &stpb.Value_BoolValue{true}},
+	}}}},
+	{"nested Struct", Unmarshaler{}, `{"st": {"a": {"b": 1, "c": [{"d": true}, "f"]}}}`, &pb.KnownTypes{St: &stpb.Struct{Fields: map[string]*stpb.Value{
+		"a": {Kind: &stpb.Value_StructValue{&stpb.Struct{Fields: map[string]*stpb.Value{
+			"b": {Kind: &stpb.Value_NumberValue{1}},
+			"c": {Kind: &stpb.Value_ListValue{&stpb.ListValue{Values: []*stpb.Value{
+				{Kind: &stpb.Value_StructValue{&stpb.Struct{Fields: map[string]*stpb.Value{"d": {Kind: &stpb.Value_BoolValue{true}}}}}},
+				{Kind: &stpb.Value_StringValue{"f"}},
+			}}}},
+		}}}},
+	}}}},
+	{"null ListValue", Unmarshaler{}, `{"lv": null}`, &pb.KnownTypes{Lv: nil}},
+	{"empty ListValue", Unmarshaler{}, `{"lv": []}`, &pb.KnownTypes{Lv: &stpb.ListValue{}}},
+	{"basic ListValue", Unmarshaler{}, `{"lv": ["x", null, 3, true]}`, &pb.KnownTypes{Lv: &stpb.ListValue{Values: []*stpb.Value{
+		{Kind: &stpb.Value_StringValue{"x"}},
+		{Kind: &stpb.Value_NullValue{}},
+		{Kind: &stpb.Value_NumberValue{3}},
+		{Kind: &stpb.Value_BoolValue{true}},
+	}}}},
+	{"number Value", Unmarshaler{}, `{"val":1}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_NumberValue{1}}}},
+	{"null Value", Unmarshaler{}, `{"val":null}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_NullValue{stpb.NullValue_NULL_VALUE}}}},
+	{"bool Value", Unmarshaler{}, `{"val":true}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_BoolValue{true}}}},
+	{"string Value", Unmarshaler{}, `{"val":"x"}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_StringValue{"x"}}}},
+	{"string number value", Unmarshaler{}, `{"val":"9223372036854775807"}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_StringValue{"9223372036854775807"}}}},
+	{"list of lists Value", Unmarshaler{}, `{"val":["x", [["y"], "z"]]}`, &pb.KnownTypes{Val: &stpb.Value{
+		Kind: &stpb.Value_ListValue{&stpb.ListValue{
+			Values: []*stpb.Value{
+				{Kind: &stpb.Value_StringValue{"x"}},
+				{Kind: &stpb.Value_ListValue{&stpb.ListValue{
+					Values: []*stpb.Value{
+						{Kind: &stpb.Value_ListValue{&stpb.ListValue{
+							Values: []*stpb.Value{{Kind: &stpb.Value_StringValue{"y"}}},
+						}}},
+						{Kind: &stpb.Value_StringValue{"z"}},
+					},
+				}}},
+			},
+		}}}}},
+
+	{"DoubleValue", Unmarshaler{}, `{"dbl":1.2}`, &pb.KnownTypes{Dbl: &wpb.DoubleValue{Value: 1.2}}},
+	{"FloatValue", Unmarshaler{}, `{"flt":1.2}`, &pb.KnownTypes{Flt: &wpb.FloatValue{Value: 1.2}}},
+	{"Int64Value", Unmarshaler{}, `{"i64":"-3"}`, &pb.KnownTypes{I64: &wpb.Int64Value{Value: -3}}},
+	{"UInt64Value", Unmarshaler{}, `{"u64":"3"}`, &pb.KnownTypes{U64: &wpb.UInt64Value{Value: 3}}},
+	{"Int32Value", Unmarshaler{}, `{"i32":-4}`, &pb.KnownTypes{I32: &wpb.Int32Value{Value: -4}}},
+	{"UInt32Value", Unmarshaler{}, `{"u32":4}`, &pb.KnownTypes{U32: &wpb.UInt32Value{Value: 4}}},
+	{"BoolValue", Unmarshaler{}, `{"bool":true}`, &pb.KnownTypes{Bool: &wpb.BoolValue{Value: true}}},
+	{"StringValue", Unmarshaler{}, `{"str":"plush"}`, &pb.KnownTypes{Str: &wpb.StringValue{Value: "plush"}}},
+	{"StringValue containing escaped character", Unmarshaler{}, `{"str":"a\/b"}`, &pb.KnownTypes{Str: &wpb.StringValue{Value: "a/b"}}},
+	{"StructValue containing StringValue's", Unmarshaler{}, `{"escaped": "a\/b", "unicode": "\u00004E16\u0000754C"}`,
+		&stpb.Struct{
+			Fields: map[string]*stpb.Value{
+				"escaped": {Kind: &stpb.Value_StringValue{"a/b"}},
+				"unicode": {Kind: &stpb.Value_StringValue{"\u00004E16\u0000754C"}},
+			},
+		}},
+	{"BytesValue", Unmarshaler{}, `{"bytes":"d293"}`, &pb.KnownTypes{Bytes: &wpb.BytesValue{Value: []byte("wow")}}},
+
+	// Ensure that `null` as a value ends up with a nil pointer instead of a [type]Value struct.
+	{"null DoubleValue", Unmarshaler{}, `{"dbl":null}`, &pb.KnownTypes{Dbl: nil}},
+	{"null FloatValue", Unmarshaler{}, `{"flt":null}`, &pb.KnownTypes{Flt: nil}},
+	{"null Int64Value", Unmarshaler{}, `{"i64":null}`, &pb.KnownTypes{I64: nil}},
+	{"null UInt64Value", Unmarshaler{}, `{"u64":null}`, &pb.KnownTypes{U64: nil}},
+	{"null Int32Value", Unmarshaler{}, `{"i32":null}`, &pb.KnownTypes{I32: nil}},
+	{"null UInt32Value", Unmarshaler{}, `{"u32":null}`, &pb.KnownTypes{U32: nil}},
+	{"null BoolValue", Unmarshaler{}, `{"bool":null}`, &pb.KnownTypes{Bool: nil}},
+	{"null StringValue", Unmarshaler{}, `{"str":null}`, &pb.KnownTypes{Str: nil}},
+	{"null BytesValue", Unmarshaler{}, `{"bytes":null}`, &pb.KnownTypes{Bytes: nil}},
+
+	{"required", Unmarshaler{}, `{"str":"hello"}`, &pb.MsgWithRequired{Str: proto.String("hello")}},
+	{"required bytes", Unmarshaler{}, `{"byts": []}`, &pb.MsgWithRequiredBytes{Byts: []byte{}}},
+}
+
+func TestUnmarshaling(t *testing.T) {
+	for _, tt := range unmarshalingTests {
+		// Make a new instance of the type of our expected object.
+		p := reflect.New(reflect.TypeOf(tt.pb).Elem()).Interface().(proto.Message)
+
+		err := tt.unmarshaler.Unmarshal(strings.NewReader(tt.json), p)
+		if err != nil {
+			t.Errorf("unmarshaling %s: %v", tt.desc, err)
+			continue
+		}
+
+		// For easier diffs, compare text strings of the protos.
+		exp := proto.MarshalTextString(tt.pb)
+		act := proto.MarshalTextString(p)
+		if string(exp) != string(act) {
+			t.Errorf("%s: got [%s] want [%s]", tt.desc, act, exp)
+		}
+	}
+}
+
+func TestUnmarshalNullArray(t *testing.T) {
+	var repeats pb.Repeats
+	if err := UnmarshalString(`{"rBool":null}`, &repeats); err != nil {
+		t.Fatal(err)
+	}
+	if !reflect.DeepEqual(repeats, pb.Repeats{}) {
+		t.Errorf("got non-nil fields in [%#v]", repeats)
+	}
+}
+
+func TestUnmarshalNullObject(t *testing.T) {
+	var maps pb.Maps
+	if err := UnmarshalString(`{"mInt64Str":null}`, &maps); err != nil {
+		t.Fatal(err)
+	}
+	if !reflect.DeepEqual(maps, pb.Maps{}) {
+		t.Errorf("got non-nil fields in [%#v]", maps)
+	}
+}
+
+func TestUnmarshalNext(t *testing.T) {
+	// We only need to check against a few, not all of them.
+	tests := unmarshalingTests[:5]
+
+	// Create a buffer with many concatenated JSON objects.
+	var b bytes.Buffer
+	for _, tt := range tests {
+		b.WriteString(tt.json)
+	}
+
+	dec := json.NewDecoder(&b)
+	for _, tt := range tests {
+		// Make a new instance of the type of our expected object.
+		p := reflect.New(reflect.TypeOf(tt.pb).Elem()).Interface().(proto.Message)
+
+		err := tt.unmarshaler.UnmarshalNext(dec, p)
+		if err != nil {
+			t.Errorf("%s: %v", tt.desc, err)
+			continue
+		}
+
+		// For easier diffs, compare text strings of the protos.
+		exp := proto.MarshalTextString(tt.pb)
+		act := proto.MarshalTextString(p)
+		if string(exp) != string(act) {
+			t.Errorf("%s: got [%s] want [%s]", tt.desc, act, exp)
+		}
+	}
+
+	p := &pb.Simple{}
+	err := new(Unmarshaler).UnmarshalNext(dec, p)
+	if err != io.EOF {
+		t.Errorf("eof: got %v, expected io.EOF", err)
+	}
+}
+
+var unmarshalingShouldError = []struct {
+	desc string
+	in   string
+	pb   proto.Message
+}{
+	{"a value", "666", new(pb.Simple)},
+	{"gibberish", "{adskja123;l23=-=", new(pb.Simple)},
+	{"unknown field", `{"unknown": "foo"}`, new(pb.Simple)},
+	{"unknown enum name", `{"hilarity":"DAVE"}`, new(proto3pb.Message)},
+	{"Duration containing invalid character", `{"dur": "3\U0073"}`, &pb.KnownTypes{}},
+	{"Timestamp containing invalid character", `{"ts": "2014-05-13T16:53:20\U005a"}`, &pb.KnownTypes{}},
+	{"StringValue containing invalid character", `{"str": "\U00004E16\U0000754C"}`, &pb.KnownTypes{}},
+	{"StructValue containing invalid character", `{"str": "\U00004E16\U0000754C"}`, &stpb.Struct{}},
+	{"repeated proto3 enum with non array input", `{"rFunny":"PUNS"}`, &proto3pb.Message{RFunny: []proto3pb.Message_Humour{}}},
+}
+
+func TestUnmarshalingBadInput(t *testing.T) {
+	for _, tt := range unmarshalingShouldError {
+		err := UnmarshalString(tt.in, tt.pb)
+		if err == nil {
+			t.Errorf("an error was expected when parsing %q instead of an object", tt.desc)
+		}
+	}
+}
+
+type funcResolver func(turl string) (proto.Message, error)
+
+func (fn funcResolver) Resolve(turl string) (proto.Message, error) {
+	return fn(turl)
+}
+
+func TestAnyWithCustomResolver(t *testing.T) {
+	var resolvedTypeUrls []string
+	resolver := funcResolver(func(turl string) (proto.Message, error) {
+		resolvedTypeUrls = append(resolvedTypeUrls, turl)
+		return new(pb.Simple), nil
+	})
+	msg := &pb.Simple{
+		OBytes:  []byte{1, 2, 3, 4},
+		OBool:   proto.Bool(true),
+		OString: proto.String("foobar"),
+		OInt64:  proto.Int64(1020304),
+	}
+	msgBytes, err := proto.Marshal(msg)
+	if err != nil {
+		t.Errorf("an unexpected error occurred when marshaling message: %v", err)
+	}
+	// make an Any with a type URL that won't resolve w/out custom resolver
+	any := &anypb.Any{
+		TypeUrl: "https://foobar.com/some.random.MessageKind",
+		Value:   msgBytes,
+	}
+
+	m := Marshaler{AnyResolver: resolver}
+	js, err := m.MarshalToString(any)
+	if err != nil {
+		t.Errorf("an unexpected error occurred when marshaling any to JSON: %v", err)
+	}
+	if len(resolvedTypeUrls) != 1 {
+		t.Errorf("custom resolver was not invoked during marshaling")
+	} else if resolvedTypeUrls[0] != "https://foobar.com/some.random.MessageKind" {
+		t.Errorf("custom resolver was invoked with wrong URL: got %q, wanted %q", resolvedTypeUrls[0], "https://foobar.com/some.random.MessageKind")
+	}
+	wanted := `{"@type":"https://foobar.com/some.random.MessageKind","oBool":true,"oInt64":"1020304","oString":"foobar","oBytes":"AQIDBA=="}`
+	if js != wanted {
+		t.Errorf("marshaling JSON produced incorrect output: got %s, wanted %s", js, wanted)
+	}
+
+	u := Unmarshaler{AnyResolver: resolver}
+	roundTrip := &anypb.Any{}
+	err = u.Unmarshal(bytes.NewReader([]byte(js)), roundTrip)
+	if err != nil {
+		t.Errorf("an unexpected error occurred when unmarshaling any from JSON: %v", err)
+	}
+	if len(resolvedTypeUrls) != 2 {
+		t.Errorf("custom resolver was not invoked during marshaling")
+	} else if resolvedTypeUrls[1] != "https://foobar.com/some.random.MessageKind" {
+		t.Errorf("custom resolver was invoked with wrong URL: got %q, wanted %q", resolvedTypeUrls[1], "https://foobar.com/some.random.MessageKind")
+	}
+	if !proto.Equal(any, roundTrip) {
+		t.Errorf("message contents not set correctly after unmarshaling JSON: got %s, wanted %s", roundTrip, any)
+	}
+}
+
+func TestUnmarshalJSONPBUnmarshaler(t *testing.T) {
+	rawJson := `{ "foo": "bar", "baz": [0, 1, 2, 3] }`
+	var msg dynamicMessage
+	if err := Unmarshal(strings.NewReader(rawJson), &msg); err != nil {
+		t.Errorf("an unexpected error occurred when parsing into JSONPBUnmarshaler: %v", err)
+	}
+	if msg.RawJson != rawJson {
+		t.Errorf("message contents not set correctly after unmarshaling JSON: got %s, wanted %s", msg.RawJson, rawJson)
+	}
+}
+
+func TestUnmarshalNullWithJSONPBUnmarshaler(t *testing.T) {
+	rawJson := `{"stringField":null}`
+	var ptrFieldMsg ptrFieldMessage
+	if err := Unmarshal(strings.NewReader(rawJson), &ptrFieldMsg); err != nil {
+		t.Errorf("unmarshal error: %v", err)
+	}
+
+	want := ptrFieldMessage{StringField: &stringField{IsSet: true, StringValue: "null"}}
+	if !proto.Equal(&ptrFieldMsg, &want) {
+		t.Errorf("unmarshal result StringField: got %v, want %v", ptrFieldMsg, want)
+	}
+}
+
+func TestUnmarshalAnyJSONPBUnmarshaler(t *testing.T) {
+	rawJson := `{ "@type": "blah.com/` + dynamicMessageName + `", "foo": "bar", "baz": [0, 1, 2, 3] }`
+	var got anypb.Any
+	if err := Unmarshal(strings.NewReader(rawJson), &got); err != nil {
+		t.Errorf("an unexpected error occurred when parsing into JSONPBUnmarshaler: %v", err)
+	}
+
+	dm := &dynamicMessage{RawJson: `{"baz":[0,1,2,3],"foo":"bar"}`}
+	var want anypb.Any
+	if b, err := proto.Marshal(dm); err != nil {
+		t.Errorf("an unexpected error occurred when marshaling message: %v", err)
+	} else {
+		want.TypeUrl = "blah.com/" + dynamicMessageName
+		want.Value = b
+	}
+
+	if !proto.Equal(&got, &want) {
+		t.Errorf("message contents not set correctly after unmarshaling JSON: got %v, wanted %v", got, want)
+	}
+}
+
+const (
+	dynamicMessageName = "google.protobuf.jsonpb.testing.dynamicMessage"
+)
+
+func init() {
+	// we register the custom type below so that we can use it in Any types
+	proto.RegisterType((*dynamicMessage)(nil), dynamicMessageName)
+}
+
+type ptrFieldMessage struct {
+	StringField *stringField `protobuf:"bytes,1,opt,name=stringField"`
+}
+
+func (m *ptrFieldMessage) Reset() {
+}
+
+func (m *ptrFieldMessage) String() string {
+	return m.StringField.StringValue
+}
+
+func (m *ptrFieldMessage) ProtoMessage() {
+}
+
+type stringField struct {
+	IsSet       bool   `protobuf:"varint,1,opt,name=isSet"`
+	StringValue string `protobuf:"bytes,2,opt,name=stringValue"`
+}
+
+func (s *stringField) Reset() {
+}
+
+func (s *stringField) String() string {
+	return s.StringValue
+}
+
+func (s *stringField) ProtoMessage() {
+}
+
+func (s *stringField) UnmarshalJSONPB(jum *Unmarshaler, js []byte) error {
+	s.IsSet = true
+	s.StringValue = string(js)
+	return nil
+}
+
+// dynamicMessage implements protobuf.Message but is not a normal generated message type.
+// It provides implementations of JSONPBMarshaler and JSONPBUnmarshaler for JSON support.
+type dynamicMessage struct {
+	RawJson string `protobuf:"bytes,1,opt,name=rawJson"`
+
+	// an unexported nested message is present just to ensure that it
+	// won't result in a panic (see issue #509)
+	Dummy *dynamicMessage `protobuf:"bytes,2,opt,name=dummy"`
+}
+
+func (m *dynamicMessage) Reset() {
+	m.RawJson = "{}"
+}
+
+func (m *dynamicMessage) String() string {
+	return m.RawJson
+}
+
+func (m *dynamicMessage) ProtoMessage() {
+}
+
+func (m *dynamicMessage) MarshalJSONPB(jm *Marshaler) ([]byte, error) {
+	return []byte(m.RawJson), nil
+}
+
+func (m *dynamicMessage) UnmarshalJSONPB(jum *Unmarshaler, js []byte) error {
+	m.RawJson = string(js)
+	return nil
+}
+
+// Test unmarshaling message containing unset required fields should produce error.
+func TestUnmarshalUnsetRequiredFields(t *testing.T) {
+	tests := []struct {
+		desc string
+		pb   proto.Message
+		json string
+	}{
+		{
+			desc: "direct required field missing",
+			pb:   &pb.MsgWithRequired{},
+			json: `{}`,
+		},
+		{
+			desc: "direct required field set to null",
+			pb:   &pb.MsgWithRequired{},
+			json: `{"str": null}`,
+		},
+		{
+			desc: "indirect required field missing",
+			pb:   &pb.MsgWithIndirectRequired{},
+			json: `{"subm": {}}`,
+		},
+		{
+			desc: "indirect required field set to null",
+			pb:   &pb.MsgWithIndirectRequired{},
+			json: `{"subm": {"str": null}}`,
+		},
+		{
+			desc: "direct required bytes field missing",
+			pb:   &pb.MsgWithRequiredBytes{},
+			json: `{}`,
+		},
+		{
+			desc: "direct required bytes field set to null",
+			pb:   &pb.MsgWithRequiredBytes{},
+			json: `{"byts": null}`,
+		},
+		{
+			desc: "direct required wkt field missing",
+			pb:   &pb.MsgWithRequiredWKT{},
+			json: `{}`,
+		},
+		{
+			desc: "direct required wkt field set to null",
+			pb:   &pb.MsgWithRequiredWKT{},
+			json: `{"str": null}`,
+		},
+		{
+			desc: "any containing message with required field set to null",
+			pb:   &pb.KnownTypes{},
+			json: `{"an": {"@type": "example.com/jsonpb.MsgWithRequired", "str": null}}`,
+		},
+		{
+			desc: "any containing message with missing required field",
+			pb:   &pb.KnownTypes{},
+			json: `{"an": {"@type": "example.com/jsonpb.MsgWithRequired"}}`,
+		},
+		{
+			desc: "missing required in map value",
+			pb:   &pb.MsgWithIndirectRequired{},
+			json: `{"map_field": {"a": {}, "b": {"str": "hi"}}}`,
+		},
+		{
+			desc: "required in map value set to null",
+			pb:   &pb.MsgWithIndirectRequired{},
+			json: `{"map_field": {"a": {"str": "hello"}, "b": {"str": null}}}`,
+		},
+		{
+			desc: "missing required in slice item",
+			pb:   &pb.MsgWithIndirectRequired{},
+			json: `{"slice_field": [{}, {"str": "hi"}]}`,
+		},
+		{
+			desc: "required in slice item set to null",
+			pb:   &pb.MsgWithIndirectRequired{},
+			json: `{"slice_field": [{"str": "hello"}, {"str": null}]}`,
+		},
+		{
+			desc: "required inside oneof missing",
+			pb:   &pb.MsgWithOneof{},
+			json: `{"msgWithRequired": {}}`,
+		},
+		{
+			desc: "required inside oneof set to null",
+			pb:   &pb.MsgWithOneof{},
+			json: `{"msgWithRequired": {"str": null}}`,
+		},
+		{
+			desc: "required field in extension missing",
+			pb:   &pb.Real{},
+			json: `{"[jsonpb.extm]":{}}`,
+		},
+		{
+			desc: "required field in extension set to null",
+			pb:   &pb.Real{},
+			json: `{"[jsonpb.extm]":{"str": null}}`,
+		},
+	}
+
+	for _, tc := range tests {
+		if err := UnmarshalString(tc.json, tc.pb); err == nil {
+			t.Errorf("%s: expecting error in unmarshaling with unset required fields %s", tc.desc, tc.json)
+		}
+	}
+}
diff --git a/jsonpb/jsonpb_test_proto/more_test_objects.pb.go b/jsonpb/jsonpb_test_proto/more_test_objects.pb.go
new file mode 100644
index 0000000..87f9e24
--- /dev/null
+++ b/jsonpb/jsonpb_test_proto/more_test_objects.pb.go
@@ -0,0 +1,377 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: more_test_objects.proto
+
+package jsonpb
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+type Numeral int32
+
+const (
+	Numeral_UNKNOWN Numeral = 0
+	Numeral_ARABIC  Numeral = 1
+	Numeral_ROMAN   Numeral = 2
+)
+
+var Numeral_name = map[int32]string{
+	0: "UNKNOWN",
+	1: "ARABIC",
+	2: "ROMAN",
+}
+
+var Numeral_value = map[string]int32{
+	"UNKNOWN": 0,
+	"ARABIC":  1,
+	"ROMAN":   2,
+}
+
+func (x Numeral) String() string {
+	return proto.EnumName(Numeral_name, int32(x))
+}
+
+func (Numeral) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_e6c135db3023e377, []int{0}
+}
+
+type Simple3 struct {
+	Dub                  float64  `protobuf:"fixed64,1,opt,name=dub,proto3" json:"dub,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Simple3) Reset()         { *m = Simple3{} }
+func (m *Simple3) String() string { return proto.CompactTextString(m) }
+func (*Simple3) ProtoMessage()    {}
+func (*Simple3) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e6c135db3023e377, []int{0}
+}
+
+func (m *Simple3) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Simple3.Unmarshal(m, b)
+}
+func (m *Simple3) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Simple3.Marshal(b, m, deterministic)
+}
+func (m *Simple3) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Simple3.Merge(m, src)
+}
+func (m *Simple3) XXX_Size() int {
+	return xxx_messageInfo_Simple3.Size(m)
+}
+func (m *Simple3) XXX_DiscardUnknown() {
+	xxx_messageInfo_Simple3.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Simple3 proto.InternalMessageInfo
+
+func (m *Simple3) GetDub() float64 {
+	if m != nil {
+		return m.Dub
+	}
+	return 0
+}
+
+type SimpleSlice3 struct {
+	Slices               []string `protobuf:"bytes,1,rep,name=slices,proto3" json:"slices,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *SimpleSlice3) Reset()         { *m = SimpleSlice3{} }
+func (m *SimpleSlice3) String() string { return proto.CompactTextString(m) }
+func (*SimpleSlice3) ProtoMessage()    {}
+func (*SimpleSlice3) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e6c135db3023e377, []int{1}
+}
+
+func (m *SimpleSlice3) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SimpleSlice3.Unmarshal(m, b)
+}
+func (m *SimpleSlice3) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SimpleSlice3.Marshal(b, m, deterministic)
+}
+func (m *SimpleSlice3) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SimpleSlice3.Merge(m, src)
+}
+func (m *SimpleSlice3) XXX_Size() int {
+	return xxx_messageInfo_SimpleSlice3.Size(m)
+}
+func (m *SimpleSlice3) XXX_DiscardUnknown() {
+	xxx_messageInfo_SimpleSlice3.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SimpleSlice3 proto.InternalMessageInfo
+
+func (m *SimpleSlice3) GetSlices() []string {
+	if m != nil {
+		return m.Slices
+	}
+	return nil
+}
+
+type SimpleMap3 struct {
+	Stringy              map[string]string `protobuf:"bytes,1,rep,name=stringy,proto3" json:"stringy,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
+	XXX_unrecognized     []byte            `json:"-"`
+	XXX_sizecache        int32             `json:"-"`
+}
+
+func (m *SimpleMap3) Reset()         { *m = SimpleMap3{} }
+func (m *SimpleMap3) String() string { return proto.CompactTextString(m) }
+func (*SimpleMap3) ProtoMessage()    {}
+func (*SimpleMap3) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e6c135db3023e377, []int{2}
+}
+
+func (m *SimpleMap3) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SimpleMap3.Unmarshal(m, b)
+}
+func (m *SimpleMap3) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SimpleMap3.Marshal(b, m, deterministic)
+}
+func (m *SimpleMap3) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SimpleMap3.Merge(m, src)
+}
+func (m *SimpleMap3) XXX_Size() int {
+	return xxx_messageInfo_SimpleMap3.Size(m)
+}
+func (m *SimpleMap3) XXX_DiscardUnknown() {
+	xxx_messageInfo_SimpleMap3.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SimpleMap3 proto.InternalMessageInfo
+
+func (m *SimpleMap3) GetStringy() map[string]string {
+	if m != nil {
+		return m.Stringy
+	}
+	return nil
+}
+
+type SimpleNull3 struct {
+	Simple               *Simple3 `protobuf:"bytes,1,opt,name=simple,proto3" json:"simple,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *SimpleNull3) Reset()         { *m = SimpleNull3{} }
+func (m *SimpleNull3) String() string { return proto.CompactTextString(m) }
+func (*SimpleNull3) ProtoMessage()    {}
+func (*SimpleNull3) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e6c135db3023e377, []int{3}
+}
+
+func (m *SimpleNull3) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SimpleNull3.Unmarshal(m, b)
+}
+func (m *SimpleNull3) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SimpleNull3.Marshal(b, m, deterministic)
+}
+func (m *SimpleNull3) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SimpleNull3.Merge(m, src)
+}
+func (m *SimpleNull3) XXX_Size() int {
+	return xxx_messageInfo_SimpleNull3.Size(m)
+}
+func (m *SimpleNull3) XXX_DiscardUnknown() {
+	xxx_messageInfo_SimpleNull3.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SimpleNull3 proto.InternalMessageInfo
+
+func (m *SimpleNull3) GetSimple() *Simple3 {
+	if m != nil {
+		return m.Simple
+	}
+	return nil
+}
+
+type Mappy struct {
+	Nummy                map[int64]int32    `protobuf:"bytes,1,rep,name=nummy,proto3" json:"nummy,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	Strry                map[string]string  `protobuf:"bytes,2,rep,name=strry,proto3" json:"strry,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	Objjy                map[int32]*Simple3 `protobuf:"bytes,3,rep,name=objjy,proto3" json:"objjy,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	Buggy                map[int64]string   `protobuf:"bytes,4,rep,name=buggy,proto3" json:"buggy,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	Booly                map[bool]bool      `protobuf:"bytes,5,rep,name=booly,proto3" json:"booly,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	Enumy                map[string]Numeral `protobuf:"bytes,6,rep,name=enumy,proto3" json:"enumy,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=jsonpb.Numeral"`
+	S32Booly             map[int32]bool     `protobuf:"bytes,7,rep,name=s32booly,proto3" json:"s32booly,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	S64Booly             map[int64]bool     `protobuf:"bytes,8,rep,name=s64booly,proto3" json:"s64booly,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	U32Booly             map[uint32]bool    `protobuf:"bytes,9,rep,name=u32booly,proto3" json:"u32booly,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	U64Booly             map[uint64]bool    `protobuf:"bytes,10,rep,name=u64booly,proto3" json:"u64booly,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
+	XXX_unrecognized     []byte             `json:"-"`
+	XXX_sizecache        int32              `json:"-"`
+}
+
+func (m *Mappy) Reset()         { *m = Mappy{} }
+func (m *Mappy) String() string { return proto.CompactTextString(m) }
+func (*Mappy) ProtoMessage()    {}
+func (*Mappy) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e6c135db3023e377, []int{4}
+}
+
+func (m *Mappy) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Mappy.Unmarshal(m, b)
+}
+func (m *Mappy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Mappy.Marshal(b, m, deterministic)
+}
+func (m *Mappy) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Mappy.Merge(m, src)
+}
+func (m *Mappy) XXX_Size() int {
+	return xxx_messageInfo_Mappy.Size(m)
+}
+func (m *Mappy) XXX_DiscardUnknown() {
+	xxx_messageInfo_Mappy.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Mappy proto.InternalMessageInfo
+
+func (m *Mappy) GetNummy() map[int64]int32 {
+	if m != nil {
+		return m.Nummy
+	}
+	return nil
+}
+
+func (m *Mappy) GetStrry() map[string]string {
+	if m != nil {
+		return m.Strry
+	}
+	return nil
+}
+
+func (m *Mappy) GetObjjy() map[int32]*Simple3 {
+	if m != nil {
+		return m.Objjy
+	}
+	return nil
+}
+
+func (m *Mappy) GetBuggy() map[int64]string {
+	if m != nil {
+		return m.Buggy
+	}
+	return nil
+}
+
+func (m *Mappy) GetBooly() map[bool]bool {
+	if m != nil {
+		return m.Booly
+	}
+	return nil
+}
+
+func (m *Mappy) GetEnumy() map[string]Numeral {
+	if m != nil {
+		return m.Enumy
+	}
+	return nil
+}
+
+func (m *Mappy) GetS32Booly() map[int32]bool {
+	if m != nil {
+		return m.S32Booly
+	}
+	return nil
+}
+
+func (m *Mappy) GetS64Booly() map[int64]bool {
+	if m != nil {
+		return m.S64Booly
+	}
+	return nil
+}
+
+func (m *Mappy) GetU32Booly() map[uint32]bool {
+	if m != nil {
+		return m.U32Booly
+	}
+	return nil
+}
+
+func (m *Mappy) GetU64Booly() map[uint64]bool {
+	if m != nil {
+		return m.U64Booly
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterEnum("jsonpb.Numeral", Numeral_name, Numeral_value)
+	proto.RegisterType((*Simple3)(nil), "jsonpb.Simple3")
+	proto.RegisterType((*SimpleSlice3)(nil), "jsonpb.SimpleSlice3")
+	proto.RegisterType((*SimpleMap3)(nil), "jsonpb.SimpleMap3")
+	proto.RegisterMapType((map[string]string)(nil), "jsonpb.SimpleMap3.StringyEntry")
+	proto.RegisterType((*SimpleNull3)(nil), "jsonpb.SimpleNull3")
+	proto.RegisterType((*Mappy)(nil), "jsonpb.Mappy")
+	proto.RegisterMapType((map[bool]bool)(nil), "jsonpb.Mappy.BoolyEntry")
+	proto.RegisterMapType((map[int64]string)(nil), "jsonpb.Mappy.BuggyEntry")
+	proto.RegisterMapType((map[string]Numeral)(nil), "jsonpb.Mappy.EnumyEntry")
+	proto.RegisterMapType((map[int64]int32)(nil), "jsonpb.Mappy.NummyEntry")
+	proto.RegisterMapType((map[int32]*Simple3)(nil), "jsonpb.Mappy.ObjjyEntry")
+	proto.RegisterMapType((map[int32]bool)(nil), "jsonpb.Mappy.S32boolyEntry")
+	proto.RegisterMapType((map[int64]bool)(nil), "jsonpb.Mappy.S64boolyEntry")
+	proto.RegisterMapType((map[string]string)(nil), "jsonpb.Mappy.StrryEntry")
+	proto.RegisterMapType((map[uint32]bool)(nil), "jsonpb.Mappy.U32boolyEntry")
+	proto.RegisterMapType((map[uint64]bool)(nil), "jsonpb.Mappy.U64boolyEntry")
+}
+
+func init() {
+	proto.RegisterFile("more_test_objects.proto", fileDescriptor_e6c135db3023e377)
+}
+
+var fileDescriptor_e6c135db3023e377 = []byte{
+	// 526 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0xdd, 0x6b, 0xdb, 0x3c,
+	0x14, 0x87, 0x5f, 0x27, 0xf5, 0xd7, 0x49, 0xfb, 0x2e, 0x88, 0xb1, 0x99, 0xf4, 0x62, 0xc5, 0xb0,
+	0xad, 0x0c, 0xe6, 0x8b, 0x78, 0x74, 0x5d, 0x77, 0x95, 0x8e, 0x5e, 0x94, 0x11, 0x07, 0x1c, 0xc2,
+	0x2e, 0x4b, 0xdc, 0x99, 0x90, 0xcc, 0x5f, 0xd8, 0xd6, 0xc0, 0xd7, 0xfb, 0xbb, 0x07, 0xe3, 0x48,
+	0x72, 0x2d, 0x07, 0x85, 0x6c, 0x77, 0x52, 0x7e, 0xcf, 0xe3, 0x73, 0x24, 0x1d, 0x02, 0x2f, 0xd3,
+	0xbc, 0x8c, 0x1f, 0xea, 0xb8, 0xaa, 0x1f, 0xf2, 0x68, 0x17, 0x3f, 0xd6, 0x95, 0x57, 0x94, 0x79,
+	0x9d, 0x13, 0x63, 0x57, 0xe5, 0x59, 0x11, 0xb9, 0xe7, 0x60, 0x2e, 0xb7, 0x69, 0x91, 0xc4, 0x3e,
+	0x19, 0xc3, 0xf0, 0x3b, 0x8d, 0x1c, 0xed, 0x42, 0xbb, 0xd4, 0x42, 0x5c, 0xba, 0x6f, 0xe0, 0x94,
+	0x87, 0xcb, 0x64, 0xfb, 0x18, 0xfb, 0xe4, 0x05, 0x18, 0x15, 0xae, 0x2a, 0x47, 0xbb, 0x18, 0x5e,
+	0xda, 0xa1, 0xd8, 0xb9, 0xbf, 0x34, 0x00, 0x0e, 0xce, 0xd7, 0x85, 0x4f, 0x3e, 0x81, 0x59, 0xd5,
+	0xe5, 0x36, 0xdb, 0x34, 0x8c, 0x1b, 0x4d, 0x5f, 0x79, 0xbc, 0x9a, 0xd7, 0x41, 0xde, 0x92, 0x13,
+	0x77, 0x59, 0x5d, 0x36, 0x61, 0xcb, 0x4f, 0x6e, 0xe0, 0x54, 0x0e, 0xb0, 0xa7, 0x1f, 0x71, 0xc3,
+	0x7a, 0xb2, 0x43, 0x5c, 0x92, 0xe7, 0xa0, 0xff, 0x5c, 0x27, 0x34, 0x76, 0x06, 0xec, 0x37, 0xbe,
+	0xb9, 0x19, 0x5c, 0x6b, 0xee, 0x15, 0x8c, 0xf8, 0xf7, 0x03, 0x9a, 0x24, 0x3e, 0x79, 0x0b, 0x46,
+	0xc5, 0xb6, 0xcc, 0x1e, 0x4d, 0x9f, 0xf5, 0x9b, 0xf0, 0x43, 0x11, 0xbb, 0xbf, 0x2d, 0xd0, 0xe7,
+	0xeb, 0xa2, 0x68, 0x88, 0x07, 0x7a, 0x46, 0xd3, 0xb4, 0x6d, 0xdb, 0x69, 0x0d, 0x96, 0x7a, 0x01,
+	0x46, 0xbc, 0x5f, 0x8e, 0x21, 0x5f, 0xd5, 0x65, 0xd9, 0x38, 0x03, 0x15, 0xbf, 0xc4, 0x48, 0xf0,
+	0x0c, 0x43, 0x3e, 0x8f, 0x76, 0xbb, 0xc6, 0x19, 0xaa, 0xf8, 0x05, 0x46, 0x82, 0x67, 0x18, 0xf2,
+	0x11, 0xdd, 0x6c, 0x1a, 0xe7, 0x44, 0xc5, 0xdf, 0x62, 0x24, 0x78, 0x86, 0x31, 0x3e, 0xcf, 0x93,
+	0xc6, 0xd1, 0x95, 0x3c, 0x46, 0x2d, 0x8f, 0x6b, 0xe4, 0xe3, 0x8c, 0xa6, 0x8d, 0x63, 0xa8, 0xf8,
+	0x3b, 0x8c, 0x04, 0xcf, 0x30, 0xf2, 0x11, 0xac, 0xca, 0x9f, 0xf2, 0x12, 0x26, 0x53, 0xce, 0xf7,
+	0x8e, 0x2c, 0x52, 0x6e, 0x3d, 0xc1, 0x4c, 0xbc, 0xfa, 0xc0, 0x45, 0x4b, 0x29, 0x8a, 0xb4, 0x15,
+	0xc5, 0x16, 0x45, 0xda, 0x56, 0xb4, 0x55, 0xe2, 0xaa, 0x5f, 0x91, 0x4a, 0x15, 0x69, 0x5b, 0x11,
+	0x94, 0x62, 0xbf, 0x62, 0x0b, 0x4f, 0xae, 0x01, 0xba, 0x87, 0x96, 0xe7, 0x6f, 0xa8, 0x98, 0x3f,
+	0x5d, 0x9a, 0x3f, 0x34, 0xbb, 0x27, 0xff, 0x97, 0xc9, 0x9d, 0xdc, 0x03, 0x74, 0x8f, 0x2f, 0x9b,
+	0x3a, 0x37, 0x5f, 0xcb, 0xa6, 0x62, 0x92, 0xfb, 0x4d, 0x74, 0x73, 0x71, 0xac, 0x7d, 0x7b, 0xdf,
+	0x7c, 0xba, 0x10, 0xd9, 0xb4, 0x14, 0xa6, 0xb5, 0xd7, 0x7e, 0x37, 0x2b, 0x8a, 0x83, 0xf7, 0xda,
+	0xff, 0xbf, 0x6b, 0x3f, 0xa0, 0x69, 0x5c, 0xae, 0x13, 0xf9, 0x53, 0x9f, 0xe1, 0xac, 0x37, 0x43,
+	0x8a, 0xcb, 0x38, 0xdc, 0x07, 0xca, 0xf2, 0xab, 0x1e, 0x3b, 0xfe, 0xbe, 0xbc, 0x3a, 0x54, 0xf9,
+	0xec, 0x6f, 0xe4, 0x43, 0x95, 0x4f, 0x8e, 0xc8, 0xef, 0xde, 0x83, 0x29, 0x6e, 0x82, 0x8c, 0xc0,
+	0x5c, 0x05, 0x5f, 0x83, 0xc5, 0xb7, 0x60, 0xfc, 0x1f, 0x01, 0x30, 0x66, 0xe1, 0xec, 0xf6, 0xfe,
+	0xcb, 0x58, 0x23, 0x36, 0xe8, 0xe1, 0x62, 0x3e, 0x0b, 0xc6, 0x83, 0xc8, 0x60, 0x7f, 0xe0, 0xfe,
+	0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xdc, 0x84, 0x34, 0xaf, 0xdb, 0x05, 0x00, 0x00,
+}
diff --git a/jsonpb/jsonpb_test_proto/more_test_objects.proto b/jsonpb/jsonpb_test_proto/more_test_objects.proto
new file mode 100644
index 0000000..d254fa5
--- /dev/null
+++ b/jsonpb/jsonpb_test_proto/more_test_objects.proto
@@ -0,0 +1,69 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2015 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+package jsonpb;
+
+message Simple3 {
+  double dub = 1;
+}
+
+message SimpleSlice3 {
+  repeated string slices = 1;
+}
+
+message SimpleMap3 {
+  map<string,string> stringy = 1;
+}
+
+message SimpleNull3 {
+  Simple3 simple = 1;
+}
+
+enum Numeral {
+  UNKNOWN = 0;
+  ARABIC = 1;
+  ROMAN = 2;
+}
+
+message Mappy {
+  map<int64, int32> nummy = 1;
+  map<string, string> strry = 2;
+  map<int32, Simple3> objjy = 3;
+  map<int64, string> buggy = 4;
+  map<bool, bool> booly = 5;
+  map<string, Numeral> enumy = 6;
+  map<int32, bool> s32booly = 7;
+  map<int64, bool> s64booly = 8;
+  map<uint32, bool> u32booly = 9;
+  map<uint64, bool> u64booly = 10;
+}
diff --git a/jsonpb/jsonpb_test_proto/test_objects.pb.go b/jsonpb/jsonpb_test_proto/test_objects.pb.go
new file mode 100644
index 0000000..8a90476
--- /dev/null
+++ b/jsonpb/jsonpb_test_proto/test_objects.pb.go
@@ -0,0 +1,1275 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: test_objects.proto
+
+package jsonpb
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	any "github.com/golang/protobuf/ptypes/any"
+	duration "github.com/golang/protobuf/ptypes/duration"
+	_struct "github.com/golang/protobuf/ptypes/struct"
+	timestamp "github.com/golang/protobuf/ptypes/timestamp"
+	wrappers "github.com/golang/protobuf/ptypes/wrappers"
+	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
+
+type Widget_Color int32
+
+const (
+	Widget_RED   Widget_Color = 0
+	Widget_GREEN Widget_Color = 1
+	Widget_BLUE  Widget_Color = 2
+)
+
+var Widget_Color_name = map[int32]string{
+	0: "RED",
+	1: "GREEN",
+	2: "BLUE",
+}
+
+var Widget_Color_value = map[string]int32{
+	"RED":   0,
+	"GREEN": 1,
+	"BLUE":  2,
+}
+
+func (x Widget_Color) Enum() *Widget_Color {
+	p := new(Widget_Color)
+	*p = x
+	return p
+}
+
+func (x Widget_Color) String() string {
+	return proto.EnumName(Widget_Color_name, int32(x))
+}
+
+func (x *Widget_Color) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(Widget_Color_value, data, "Widget_Color")
+	if err != nil {
+		return err
+	}
+	*x = Widget_Color(value)
+	return nil
+}
+
+func (Widget_Color) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_e97c739a0ce14cc6, []int{3, 0}
+}
+
+// Test message for holding primitive types.
+type Simple struct {
+	OBool                *bool    `protobuf:"varint,1,opt,name=o_bool,json=oBool" json:"o_bool,omitempty"`
+	OInt32               *int32   `protobuf:"varint,2,opt,name=o_int32,json=oInt32" json:"o_int32,omitempty"`
+	OInt32Str            *int32   `protobuf:"varint,3,opt,name=o_int32_str,json=oInt32Str" json:"o_int32_str,omitempty"`
+	OInt64               *int64   `protobuf:"varint,4,opt,name=o_int64,json=oInt64" json:"o_int64,omitempty"`
+	OInt64Str            *int64   `protobuf:"varint,5,opt,name=o_int64_str,json=oInt64Str" json:"o_int64_str,omitempty"`
+	OUint32              *uint32  `protobuf:"varint,6,opt,name=o_uint32,json=oUint32" json:"o_uint32,omitempty"`
+	OUint32Str           *uint32  `protobuf:"varint,7,opt,name=o_uint32_str,json=oUint32Str" json:"o_uint32_str,omitempty"`
+	OUint64              *uint64  `protobuf:"varint,8,opt,name=o_uint64,json=oUint64" json:"o_uint64,omitempty"`
+	OUint64Str           *uint64  `protobuf:"varint,9,opt,name=o_uint64_str,json=oUint64Str" json:"o_uint64_str,omitempty"`
+	OSint32              *int32   `protobuf:"zigzag32,10,opt,name=o_sint32,json=oSint32" json:"o_sint32,omitempty"`
+	OSint32Str           *int32   `protobuf:"zigzag32,11,opt,name=o_sint32_str,json=oSint32Str" json:"o_sint32_str,omitempty"`
+	OSint64              *int64   `protobuf:"zigzag64,12,opt,name=o_sint64,json=oSint64" json:"o_sint64,omitempty"`
+	OSint64Str           *int64   `protobuf:"zigzag64,13,opt,name=o_sint64_str,json=oSint64Str" json:"o_sint64_str,omitempty"`
+	OFloat               *float32 `protobuf:"fixed32,14,opt,name=o_float,json=oFloat" json:"o_float,omitempty"`
+	OFloatStr            *float32 `protobuf:"fixed32,15,opt,name=o_float_str,json=oFloatStr" json:"o_float_str,omitempty"`
+	ODouble              *float64 `protobuf:"fixed64,16,opt,name=o_double,json=oDouble" json:"o_double,omitempty"`
+	ODoubleStr           *float64 `protobuf:"fixed64,17,opt,name=o_double_str,json=oDoubleStr" json:"o_double_str,omitempty"`
+	OString              *string  `protobuf:"bytes,18,opt,name=o_string,json=oString" json:"o_string,omitempty"`
+	OBytes               []byte   `protobuf:"bytes,19,opt,name=o_bytes,json=oBytes" json:"o_bytes,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Simple) Reset()         { *m = Simple{} }
+func (m *Simple) String() string { return proto.CompactTextString(m) }
+func (*Simple) ProtoMessage()    {}
+func (*Simple) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e97c739a0ce14cc6, []int{0}
+}
+
+func (m *Simple) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Simple.Unmarshal(m, b)
+}
+func (m *Simple) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Simple.Marshal(b, m, deterministic)
+}
+func (m *Simple) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Simple.Merge(m, src)
+}
+func (m *Simple) XXX_Size() int {
+	return xxx_messageInfo_Simple.Size(m)
+}
+func (m *Simple) XXX_DiscardUnknown() {
+	xxx_messageInfo_Simple.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Simple proto.InternalMessageInfo
+
+func (m *Simple) GetOBool() bool {
+	if m != nil && m.OBool != nil {
+		return *m.OBool
+	}
+	return false
+}
+
+func (m *Simple) GetOInt32() int32 {
+	if m != nil && m.OInt32 != nil {
+		return *m.OInt32
+	}
+	return 0
+}
+
+func (m *Simple) GetOInt32Str() int32 {
+	if m != nil && m.OInt32Str != nil {
+		return *m.OInt32Str
+	}
+	return 0
+}
+
+func (m *Simple) GetOInt64() int64 {
+	if m != nil && m.OInt64 != nil {
+		return *m.OInt64
+	}
+	return 0
+}
+
+func (m *Simple) GetOInt64Str() int64 {
+	if m != nil && m.OInt64Str != nil {
+		return *m.OInt64Str
+	}
+	return 0
+}
+
+func (m *Simple) GetOUint32() uint32 {
+	if m != nil && m.OUint32 != nil {
+		return *m.OUint32
+	}
+	return 0
+}
+
+func (m *Simple) GetOUint32Str() uint32 {
+	if m != nil && m.OUint32Str != nil {
+		return *m.OUint32Str
+	}
+	return 0
+}
+
+func (m *Simple) GetOUint64() uint64 {
+	if m != nil && m.OUint64 != nil {
+		return *m.OUint64
+	}
+	return 0
+}
+
+func (m *Simple) GetOUint64Str() uint64 {
+	if m != nil && m.OUint64Str != nil {
+		return *m.OUint64Str
+	}
+	return 0
+}
+
+func (m *Simple) GetOSint32() int32 {
+	if m != nil && m.OSint32 != nil {
+		return *m.OSint32
+	}
+	return 0
+}
+
+func (m *Simple) GetOSint32Str() int32 {
+	if m != nil && m.OSint32Str != nil {
+		return *m.OSint32Str
+	}
+	return 0
+}
+
+func (m *Simple) GetOSint64() int64 {
+	if m != nil && m.OSint64 != nil {
+		return *m.OSint64
+	}
+	return 0
+}
+
+func (m *Simple) GetOSint64Str() int64 {
+	if m != nil && m.OSint64Str != nil {
+		return *m.OSint64Str
+	}
+	return 0
+}
+
+func (m *Simple) GetOFloat() float32 {
+	if m != nil && m.OFloat != nil {
+		return *m.OFloat
+	}
+	return 0
+}
+
+func (m *Simple) GetOFloatStr() float32 {
+	if m != nil && m.OFloatStr != nil {
+		return *m.OFloatStr
+	}
+	return 0
+}
+
+func (m *Simple) GetODouble() float64 {
+	if m != nil && m.ODouble != nil {
+		return *m.ODouble
+	}
+	return 0
+}
+
+func (m *Simple) GetODoubleStr() float64 {
+	if m != nil && m.ODoubleStr != nil {
+		return *m.ODoubleStr
+	}
+	return 0
+}
+
+func (m *Simple) GetOString() string {
+	if m != nil && m.OString != nil {
+		return *m.OString
+	}
+	return ""
+}
+
+func (m *Simple) GetOBytes() []byte {
+	if m != nil {
+		return m.OBytes
+	}
+	return nil
+}
+
+// Test message for holding special non-finites primitives.
+type NonFinites struct {
+	FNan                 *float32 `protobuf:"fixed32,1,opt,name=f_nan,json=fNan" json:"f_nan,omitempty"`
+	FPinf                *float32 `protobuf:"fixed32,2,opt,name=f_pinf,json=fPinf" json:"f_pinf,omitempty"`
+	FNinf                *float32 `protobuf:"fixed32,3,opt,name=f_ninf,json=fNinf" json:"f_ninf,omitempty"`
+	DNan                 *float64 `protobuf:"fixed64,4,opt,name=d_nan,json=dNan" json:"d_nan,omitempty"`
+	DPinf                *float64 `protobuf:"fixed64,5,opt,name=d_pinf,json=dPinf" json:"d_pinf,omitempty"`
+	DNinf                *float64 `protobuf:"fixed64,6,opt,name=d_ninf,json=dNinf" json:"d_ninf,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *NonFinites) Reset()         { *m = NonFinites{} }
+func (m *NonFinites) String() string { return proto.CompactTextString(m) }
+func (*NonFinites) ProtoMessage()    {}
+func (*NonFinites) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e97c739a0ce14cc6, []int{1}
+}
+
+func (m *NonFinites) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_NonFinites.Unmarshal(m, b)
+}
+func (m *NonFinites) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_NonFinites.Marshal(b, m, deterministic)
+}
+func (m *NonFinites) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_NonFinites.Merge(m, src)
+}
+func (m *NonFinites) XXX_Size() int {
+	return xxx_messageInfo_NonFinites.Size(m)
+}
+func (m *NonFinites) XXX_DiscardUnknown() {
+	xxx_messageInfo_NonFinites.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_NonFinites proto.InternalMessageInfo
+
+func (m *NonFinites) GetFNan() float32 {
+	if m != nil && m.FNan != nil {
+		return *m.FNan
+	}
+	return 0
+}
+
+func (m *NonFinites) GetFPinf() float32 {
+	if m != nil && m.FPinf != nil {
+		return *m.FPinf
+	}
+	return 0
+}
+
+func (m *NonFinites) GetFNinf() float32 {
+	if m != nil && m.FNinf != nil {
+		return *m.FNinf
+	}
+	return 0
+}
+
+func (m *NonFinites) GetDNan() float64 {
+	if m != nil && m.DNan != nil {
+		return *m.DNan
+	}
+	return 0
+}
+
+func (m *NonFinites) GetDPinf() float64 {
+	if m != nil && m.DPinf != nil {
+		return *m.DPinf
+	}
+	return 0
+}
+
+func (m *NonFinites) GetDNinf() float64 {
+	if m != nil && m.DNinf != nil {
+		return *m.DNinf
+	}
+	return 0
+}
+
+// Test message for holding repeated primitives.
+type Repeats struct {
+	RBool                []bool    `protobuf:"varint,1,rep,name=r_bool,json=rBool" json:"r_bool,omitempty"`
+	RInt32               []int32   `protobuf:"varint,2,rep,name=r_int32,json=rInt32" json:"r_int32,omitempty"`
+	RInt64               []int64   `protobuf:"varint,3,rep,name=r_int64,json=rInt64" json:"r_int64,omitempty"`
+	RUint32              []uint32  `protobuf:"varint,4,rep,name=r_uint32,json=rUint32" json:"r_uint32,omitempty"`
+	RUint64              []uint64  `protobuf:"varint,5,rep,name=r_uint64,json=rUint64" json:"r_uint64,omitempty"`
+	RSint32              []int32   `protobuf:"zigzag32,6,rep,name=r_sint32,json=rSint32" json:"r_sint32,omitempty"`
+	RSint64              []int64   `protobuf:"zigzag64,7,rep,name=r_sint64,json=rSint64" json:"r_sint64,omitempty"`
+	RFloat               []float32 `protobuf:"fixed32,8,rep,name=r_float,json=rFloat" json:"r_float,omitempty"`
+	RDouble              []float64 `protobuf:"fixed64,9,rep,name=r_double,json=rDouble" json:"r_double,omitempty"`
+	RString              []string  `protobuf:"bytes,10,rep,name=r_string,json=rString" json:"r_string,omitempty"`
+	RBytes               [][]byte  `protobuf:"bytes,11,rep,name=r_bytes,json=rBytes" json:"r_bytes,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
+	XXX_unrecognized     []byte    `json:"-"`
+	XXX_sizecache        int32     `json:"-"`
+}
+
+func (m *Repeats) Reset()         { *m = Repeats{} }
+func (m *Repeats) String() string { return proto.CompactTextString(m) }
+func (*Repeats) ProtoMessage()    {}
+func (*Repeats) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e97c739a0ce14cc6, []int{2}
+}
+
+func (m *Repeats) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Repeats.Unmarshal(m, b)
+}
+func (m *Repeats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Repeats.Marshal(b, m, deterministic)
+}
+func (m *Repeats) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Repeats.Merge(m, src)
+}
+func (m *Repeats) XXX_Size() int {
+	return xxx_messageInfo_Repeats.Size(m)
+}
+func (m *Repeats) XXX_DiscardUnknown() {
+	xxx_messageInfo_Repeats.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Repeats proto.InternalMessageInfo
+
+func (m *Repeats) GetRBool() []bool {
+	if m != nil {
+		return m.RBool
+	}
+	return nil
+}
+
+func (m *Repeats) GetRInt32() []int32 {
+	if m != nil {
+		return m.RInt32
+	}
+	return nil
+}
+
+func (m *Repeats) GetRInt64() []int64 {
+	if m != nil {
+		return m.RInt64
+	}
+	return nil
+}
+
+func (m *Repeats) GetRUint32() []uint32 {
+	if m != nil {
+		return m.RUint32
+	}
+	return nil
+}
+
+func (m *Repeats) GetRUint64() []uint64 {
+	if m != nil {
+		return m.RUint64
+	}
+	return nil
+}
+
+func (m *Repeats) GetRSint32() []int32 {
+	if m != nil {
+		return m.RSint32
+	}
+	return nil
+}
+
+func (m *Repeats) GetRSint64() []int64 {
+	if m != nil {
+		return m.RSint64
+	}
+	return nil
+}
+
+func (m *Repeats) GetRFloat() []float32 {
+	if m != nil {
+		return m.RFloat
+	}
+	return nil
+}
+
+func (m *Repeats) GetRDouble() []float64 {
+	if m != nil {
+		return m.RDouble
+	}
+	return nil
+}
+
+func (m *Repeats) GetRString() []string {
+	if m != nil {
+		return m.RString
+	}
+	return nil
+}
+
+func (m *Repeats) GetRBytes() [][]byte {
+	if m != nil {
+		return m.RBytes
+	}
+	return nil
+}
+
+// Test message for holding enums and nested messages.
+type Widget struct {
+	Color                *Widget_Color  `protobuf:"varint,1,opt,name=color,enum=jsonpb.Widget_Color" json:"color,omitempty"`
+	RColor               []Widget_Color `protobuf:"varint,2,rep,name=r_color,json=rColor,enum=jsonpb.Widget_Color" json:"r_color,omitempty"`
+	Simple               *Simple        `protobuf:"bytes,10,opt,name=simple" json:"simple,omitempty"`
+	RSimple              []*Simple      `protobuf:"bytes,11,rep,name=r_simple,json=rSimple" json:"r_simple,omitempty"`
+	Repeats              *Repeats       `protobuf:"bytes,20,opt,name=repeats" json:"repeats,omitempty"`
+	RRepeats             []*Repeats     `protobuf:"bytes,21,rep,name=r_repeats,json=rRepeats" json:"r_repeats,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
+	XXX_unrecognized     []byte         `json:"-"`
+	XXX_sizecache        int32          `json:"-"`
+}
+
+func (m *Widget) Reset()         { *m = Widget{} }
+func (m *Widget) String() string { return proto.CompactTextString(m) }
+func (*Widget) ProtoMessage()    {}
+func (*Widget) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e97c739a0ce14cc6, []int{3}
+}
+
+func (m *Widget) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Widget.Unmarshal(m, b)
+}
+func (m *Widget) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Widget.Marshal(b, m, deterministic)
+}
+func (m *Widget) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Widget.Merge(m, src)
+}
+func (m *Widget) XXX_Size() int {
+	return xxx_messageInfo_Widget.Size(m)
+}
+func (m *Widget) XXX_DiscardUnknown() {
+	xxx_messageInfo_Widget.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Widget proto.InternalMessageInfo
+
+func (m *Widget) GetColor() Widget_Color {
+	if m != nil && m.Color != nil {
+		return *m.Color
+	}
+	return Widget_RED
+}
+
+func (m *Widget) GetRColor() []Widget_Color {
+	if m != nil {
+		return m.RColor
+	}
+	return nil
+}
+
+func (m *Widget) GetSimple() *Simple {
+	if m != nil {
+		return m.Simple
+	}
+	return nil
+}
+
+func (m *Widget) GetRSimple() []*Simple {
+	if m != nil {
+		return m.RSimple
+	}
+	return nil
+}
+
+func (m *Widget) GetRepeats() *Repeats {
+	if m != nil {
+		return m.Repeats
+	}
+	return nil
+}
+
+func (m *Widget) GetRRepeats() []*Repeats {
+	if m != nil {
+		return m.RRepeats
+	}
+	return nil
+}
+
+type Maps struct {
+	MInt64Str            map[int64]string `protobuf:"bytes,1,rep,name=m_int64_str,json=mInt64Str" json:"m_int64_str,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MBoolSimple          map[bool]*Simple `protobuf:"bytes,2,rep,name=m_bool_simple,json=mBoolSimple" json:"m_bool_simple,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
+	XXX_unrecognized     []byte           `json:"-"`
+	XXX_sizecache        int32            `json:"-"`
+}
+
+func (m *Maps) Reset()         { *m = Maps{} }
+func (m *Maps) String() string { return proto.CompactTextString(m) }
+func (*Maps) ProtoMessage()    {}
+func (*Maps) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e97c739a0ce14cc6, []int{4}
+}
+
+func (m *Maps) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Maps.Unmarshal(m, b)
+}
+func (m *Maps) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Maps.Marshal(b, m, deterministic)
+}
+func (m *Maps) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Maps.Merge(m, src)
+}
+func (m *Maps) XXX_Size() int {
+	return xxx_messageInfo_Maps.Size(m)
+}
+func (m *Maps) XXX_DiscardUnknown() {
+	xxx_messageInfo_Maps.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Maps proto.InternalMessageInfo
+
+func (m *Maps) GetMInt64Str() map[int64]string {
+	if m != nil {
+		return m.MInt64Str
+	}
+	return nil
+}
+
+func (m *Maps) GetMBoolSimple() map[bool]*Simple {
+	if m != nil {
+		return m.MBoolSimple
+	}
+	return nil
+}
+
+type MsgWithOneof struct {
+	// Types that are valid to be assigned to Union:
+	//	*MsgWithOneof_Title
+	//	*MsgWithOneof_Salary
+	//	*MsgWithOneof_Country
+	//	*MsgWithOneof_HomeAddress
+	//	*MsgWithOneof_MsgWithRequired
+	Union                isMsgWithOneof_Union `protobuf_oneof:"union"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *MsgWithOneof) Reset()         { *m = MsgWithOneof{} }
+func (m *MsgWithOneof) String() string { return proto.CompactTextString(m) }
+func (*MsgWithOneof) ProtoMessage()    {}
+func (*MsgWithOneof) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e97c739a0ce14cc6, []int{5}
+}
+
+func (m *MsgWithOneof) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MsgWithOneof.Unmarshal(m, b)
+}
+func (m *MsgWithOneof) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MsgWithOneof.Marshal(b, m, deterministic)
+}
+func (m *MsgWithOneof) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MsgWithOneof.Merge(m, src)
+}
+func (m *MsgWithOneof) XXX_Size() int {
+	return xxx_messageInfo_MsgWithOneof.Size(m)
+}
+func (m *MsgWithOneof) XXX_DiscardUnknown() {
+	xxx_messageInfo_MsgWithOneof.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MsgWithOneof proto.InternalMessageInfo
+
+type isMsgWithOneof_Union interface {
+	isMsgWithOneof_Union()
+}
+
+type MsgWithOneof_Title struct {
+	Title string `protobuf:"bytes,1,opt,name=title,oneof"`
+}
+
+type MsgWithOneof_Salary struct {
+	Salary int64 `protobuf:"varint,2,opt,name=salary,oneof"`
+}
+
+type MsgWithOneof_Country struct {
+	Country string `protobuf:"bytes,3,opt,name=Country,oneof"`
+}
+
+type MsgWithOneof_HomeAddress struct {
+	HomeAddress string `protobuf:"bytes,4,opt,name=home_address,json=homeAddress,oneof"`
+}
+
+type MsgWithOneof_MsgWithRequired struct {
+	MsgWithRequired *MsgWithRequired `protobuf:"bytes,5,opt,name=msg_with_required,json=msgWithRequired,oneof"`
+}
+
+func (*MsgWithOneof_Title) isMsgWithOneof_Union() {}
+
+func (*MsgWithOneof_Salary) isMsgWithOneof_Union() {}
+
+func (*MsgWithOneof_Country) isMsgWithOneof_Union() {}
+
+func (*MsgWithOneof_HomeAddress) isMsgWithOneof_Union() {}
+
+func (*MsgWithOneof_MsgWithRequired) isMsgWithOneof_Union() {}
+
+func (m *MsgWithOneof) GetUnion() isMsgWithOneof_Union {
+	if m != nil {
+		return m.Union
+	}
+	return nil
+}
+
+func (m *MsgWithOneof) GetTitle() string {
+	if x, ok := m.GetUnion().(*MsgWithOneof_Title); ok {
+		return x.Title
+	}
+	return ""
+}
+
+func (m *MsgWithOneof) GetSalary() int64 {
+	if x, ok := m.GetUnion().(*MsgWithOneof_Salary); ok {
+		return x.Salary
+	}
+	return 0
+}
+
+func (m *MsgWithOneof) GetCountry() string {
+	if x, ok := m.GetUnion().(*MsgWithOneof_Country); ok {
+		return x.Country
+	}
+	return ""
+}
+
+func (m *MsgWithOneof) GetHomeAddress() string {
+	if x, ok := m.GetUnion().(*MsgWithOneof_HomeAddress); ok {
+		return x.HomeAddress
+	}
+	return ""
+}
+
+func (m *MsgWithOneof) GetMsgWithRequired() *MsgWithRequired {
+	if x, ok := m.GetUnion().(*MsgWithOneof_MsgWithRequired); ok {
+		return x.MsgWithRequired
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*MsgWithOneof) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*MsgWithOneof_Title)(nil),
+		(*MsgWithOneof_Salary)(nil),
+		(*MsgWithOneof_Country)(nil),
+		(*MsgWithOneof_HomeAddress)(nil),
+		(*MsgWithOneof_MsgWithRequired)(nil),
+	}
+}
+
+type Real struct {
+	Value                        *float64 `protobuf:"fixed64,1,opt,name=value" json:"value,omitempty"`
+	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
+	proto.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized             []byte `json:"-"`
+	XXX_sizecache                int32  `json:"-"`
+}
+
+func (m *Real) Reset()         { *m = Real{} }
+func (m *Real) String() string { return proto.CompactTextString(m) }
+func (*Real) ProtoMessage()    {}
+func (*Real) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e97c739a0ce14cc6, []int{6}
+}
+
+var extRange_Real = []proto.ExtensionRange{
+	{Start: 100, End: 536870911},
+}
+
+func (*Real) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_Real
+}
+
+func (m *Real) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Real.Unmarshal(m, b)
+}
+func (m *Real) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Real.Marshal(b, m, deterministic)
+}
+func (m *Real) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Real.Merge(m, src)
+}
+func (m *Real) XXX_Size() int {
+	return xxx_messageInfo_Real.Size(m)
+}
+func (m *Real) XXX_DiscardUnknown() {
+	xxx_messageInfo_Real.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Real proto.InternalMessageInfo
+
+func (m *Real) GetValue() float64 {
+	if m != nil && m.Value != nil {
+		return *m.Value
+	}
+	return 0
+}
+
+type Complex struct {
+	Imaginary                    *float64 `protobuf:"fixed64,1,opt,name=imaginary" json:"imaginary,omitempty"`
+	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
+	proto.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized             []byte `json:"-"`
+	XXX_sizecache                int32  `json:"-"`
+}
+
+func (m *Complex) Reset()         { *m = Complex{} }
+func (m *Complex) String() string { return proto.CompactTextString(m) }
+func (*Complex) ProtoMessage()    {}
+func (*Complex) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e97c739a0ce14cc6, []int{7}
+}
+
+var extRange_Complex = []proto.ExtensionRange{
+	{Start: 100, End: 536870911},
+}
+
+func (*Complex) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_Complex
+}
+
+func (m *Complex) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Complex.Unmarshal(m, b)
+}
+func (m *Complex) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Complex.Marshal(b, m, deterministic)
+}
+func (m *Complex) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Complex.Merge(m, src)
+}
+func (m *Complex) XXX_Size() int {
+	return xxx_messageInfo_Complex.Size(m)
+}
+func (m *Complex) XXX_DiscardUnknown() {
+	xxx_messageInfo_Complex.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Complex proto.InternalMessageInfo
+
+func (m *Complex) GetImaginary() float64 {
+	if m != nil && m.Imaginary != nil {
+		return *m.Imaginary
+	}
+	return 0
+}
+
+var E_Complex_RealExtension = &proto.ExtensionDesc{
+	ExtendedType:  (*Real)(nil),
+	ExtensionType: (*Complex)(nil),
+	Field:         123,
+	Name:          "jsonpb.Complex.real_extension",
+	Tag:           "bytes,123,opt,name=real_extension",
+	Filename:      "test_objects.proto",
+}
+
+type KnownTypes struct {
+	An                   *any.Any              `protobuf:"bytes,14,opt,name=an" json:"an,omitempty"`
+	Dur                  *duration.Duration    `protobuf:"bytes,1,opt,name=dur" json:"dur,omitempty"`
+	St                   *_struct.Struct       `protobuf:"bytes,12,opt,name=st" json:"st,omitempty"`
+	Ts                   *timestamp.Timestamp  `protobuf:"bytes,2,opt,name=ts" json:"ts,omitempty"`
+	Lv                   *_struct.ListValue    `protobuf:"bytes,15,opt,name=lv" json:"lv,omitempty"`
+	Val                  *_struct.Value        `protobuf:"bytes,16,opt,name=val" json:"val,omitempty"`
+	Dbl                  *wrappers.DoubleValue `protobuf:"bytes,3,opt,name=dbl" json:"dbl,omitempty"`
+	Flt                  *wrappers.FloatValue  `protobuf:"bytes,4,opt,name=flt" json:"flt,omitempty"`
+	I64                  *wrappers.Int64Value  `protobuf:"bytes,5,opt,name=i64" json:"i64,omitempty"`
+	U64                  *wrappers.UInt64Value `protobuf:"bytes,6,opt,name=u64" json:"u64,omitempty"`
+	I32                  *wrappers.Int32Value  `protobuf:"bytes,7,opt,name=i32" json:"i32,omitempty"`
+	U32                  *wrappers.UInt32Value `protobuf:"bytes,8,opt,name=u32" json:"u32,omitempty"`
+	Bool                 *wrappers.BoolValue   `protobuf:"bytes,9,opt,name=bool" json:"bool,omitempty"`
+	Str                  *wrappers.StringValue `protobuf:"bytes,10,opt,name=str" json:"str,omitempty"`
+	Bytes                *wrappers.BytesValue  `protobuf:"bytes,11,opt,name=bytes" json:"bytes,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
+	XXX_unrecognized     []byte                `json:"-"`
+	XXX_sizecache        int32                 `json:"-"`
+}
+
+func (m *KnownTypes) Reset()         { *m = KnownTypes{} }
+func (m *KnownTypes) String() string { return proto.CompactTextString(m) }
+func (*KnownTypes) ProtoMessage()    {}
+func (*KnownTypes) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e97c739a0ce14cc6, []int{8}
+}
+
+func (m *KnownTypes) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_KnownTypes.Unmarshal(m, b)
+}
+func (m *KnownTypes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_KnownTypes.Marshal(b, m, deterministic)
+}
+func (m *KnownTypes) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_KnownTypes.Merge(m, src)
+}
+func (m *KnownTypes) XXX_Size() int {
+	return xxx_messageInfo_KnownTypes.Size(m)
+}
+func (m *KnownTypes) XXX_DiscardUnknown() {
+	xxx_messageInfo_KnownTypes.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_KnownTypes proto.InternalMessageInfo
+
+func (m *KnownTypes) GetAn() *any.Any {
+	if m != nil {
+		return m.An
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetDur() *duration.Duration {
+	if m != nil {
+		return m.Dur
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetSt() *_struct.Struct {
+	if m != nil {
+		return m.St
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetTs() *timestamp.Timestamp {
+	if m != nil {
+		return m.Ts
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetLv() *_struct.ListValue {
+	if m != nil {
+		return m.Lv
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetVal() *_struct.Value {
+	if m != nil {
+		return m.Val
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetDbl() *wrappers.DoubleValue {
+	if m != nil {
+		return m.Dbl
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetFlt() *wrappers.FloatValue {
+	if m != nil {
+		return m.Flt
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetI64() *wrappers.Int64Value {
+	if m != nil {
+		return m.I64
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetU64() *wrappers.UInt64Value {
+	if m != nil {
+		return m.U64
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetI32() *wrappers.Int32Value {
+	if m != nil {
+		return m.I32
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetU32() *wrappers.UInt32Value {
+	if m != nil {
+		return m.U32
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetBool() *wrappers.BoolValue {
+	if m != nil {
+		return m.Bool
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetStr() *wrappers.StringValue {
+	if m != nil {
+		return m.Str
+	}
+	return nil
+}
+
+func (m *KnownTypes) GetBytes() *wrappers.BytesValue {
+	if m != nil {
+		return m.Bytes
+	}
+	return nil
+}
+
+// Test messages for marshaling/unmarshaling required fields.
+type MsgWithRequired struct {
+	Str                  *string  `protobuf:"bytes,1,req,name=str" json:"str,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *MsgWithRequired) Reset()         { *m = MsgWithRequired{} }
+func (m *MsgWithRequired) String() string { return proto.CompactTextString(m) }
+func (*MsgWithRequired) ProtoMessage()    {}
+func (*MsgWithRequired) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e97c739a0ce14cc6, []int{9}
+}
+
+func (m *MsgWithRequired) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MsgWithRequired.Unmarshal(m, b)
+}
+func (m *MsgWithRequired) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MsgWithRequired.Marshal(b, m, deterministic)
+}
+func (m *MsgWithRequired) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MsgWithRequired.Merge(m, src)
+}
+func (m *MsgWithRequired) XXX_Size() int {
+	return xxx_messageInfo_MsgWithRequired.Size(m)
+}
+func (m *MsgWithRequired) XXX_DiscardUnknown() {
+	xxx_messageInfo_MsgWithRequired.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MsgWithRequired proto.InternalMessageInfo
+
+func (m *MsgWithRequired) GetStr() string {
+	if m != nil && m.Str != nil {
+		return *m.Str
+	}
+	return ""
+}
+
+type MsgWithIndirectRequired struct {
+	Subm                 *MsgWithRequired            `protobuf:"bytes,1,opt,name=subm" json:"subm,omitempty"`
+	MapField             map[string]*MsgWithRequired `protobuf:"bytes,2,rep,name=map_field,json=mapField" json:"map_field,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	SliceField           []*MsgWithRequired          `protobuf:"bytes,3,rep,name=slice_field,json=sliceField" json:"slice_field,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                    `json:"-"`
+	XXX_unrecognized     []byte                      `json:"-"`
+	XXX_sizecache        int32                       `json:"-"`
+}
+
+func (m *MsgWithIndirectRequired) Reset()         { *m = MsgWithIndirectRequired{} }
+func (m *MsgWithIndirectRequired) String() string { return proto.CompactTextString(m) }
+func (*MsgWithIndirectRequired) ProtoMessage()    {}
+func (*MsgWithIndirectRequired) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e97c739a0ce14cc6, []int{10}
+}
+
+func (m *MsgWithIndirectRequired) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MsgWithIndirectRequired.Unmarshal(m, b)
+}
+func (m *MsgWithIndirectRequired) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MsgWithIndirectRequired.Marshal(b, m, deterministic)
+}
+func (m *MsgWithIndirectRequired) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MsgWithIndirectRequired.Merge(m, src)
+}
+func (m *MsgWithIndirectRequired) XXX_Size() int {
+	return xxx_messageInfo_MsgWithIndirectRequired.Size(m)
+}
+func (m *MsgWithIndirectRequired) XXX_DiscardUnknown() {
+	xxx_messageInfo_MsgWithIndirectRequired.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MsgWithIndirectRequired proto.InternalMessageInfo
+
+func (m *MsgWithIndirectRequired) GetSubm() *MsgWithRequired {
+	if m != nil {
+		return m.Subm
+	}
+	return nil
+}
+
+func (m *MsgWithIndirectRequired) GetMapField() map[string]*MsgWithRequired {
+	if m != nil {
+		return m.MapField
+	}
+	return nil
+}
+
+func (m *MsgWithIndirectRequired) GetSliceField() []*MsgWithRequired {
+	if m != nil {
+		return m.SliceField
+	}
+	return nil
+}
+
+type MsgWithRequiredBytes struct {
+	Byts                 []byte   `protobuf:"bytes,1,req,name=byts" json:"byts,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *MsgWithRequiredBytes) Reset()         { *m = MsgWithRequiredBytes{} }
+func (m *MsgWithRequiredBytes) String() string { return proto.CompactTextString(m) }
+func (*MsgWithRequiredBytes) ProtoMessage()    {}
+func (*MsgWithRequiredBytes) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e97c739a0ce14cc6, []int{11}
+}
+
+func (m *MsgWithRequiredBytes) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MsgWithRequiredBytes.Unmarshal(m, b)
+}
+func (m *MsgWithRequiredBytes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MsgWithRequiredBytes.Marshal(b, m, deterministic)
+}
+func (m *MsgWithRequiredBytes) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MsgWithRequiredBytes.Merge(m, src)
+}
+func (m *MsgWithRequiredBytes) XXX_Size() int {
+	return xxx_messageInfo_MsgWithRequiredBytes.Size(m)
+}
+func (m *MsgWithRequiredBytes) XXX_DiscardUnknown() {
+	xxx_messageInfo_MsgWithRequiredBytes.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MsgWithRequiredBytes proto.InternalMessageInfo
+
+func (m *MsgWithRequiredBytes) GetByts() []byte {
+	if m != nil {
+		return m.Byts
+	}
+	return nil
+}
+
+type MsgWithRequiredWKT struct {
+	Str                  *wrappers.StringValue `protobuf:"bytes,1,req,name=str" json:"str,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
+	XXX_unrecognized     []byte                `json:"-"`
+	XXX_sizecache        int32                 `json:"-"`
+}
+
+func (m *MsgWithRequiredWKT) Reset()         { *m = MsgWithRequiredWKT{} }
+func (m *MsgWithRequiredWKT) String() string { return proto.CompactTextString(m) }
+func (*MsgWithRequiredWKT) ProtoMessage()    {}
+func (*MsgWithRequiredWKT) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e97c739a0ce14cc6, []int{12}
+}
+
+func (m *MsgWithRequiredWKT) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MsgWithRequiredWKT.Unmarshal(m, b)
+}
+func (m *MsgWithRequiredWKT) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MsgWithRequiredWKT.Marshal(b, m, deterministic)
+}
+func (m *MsgWithRequiredWKT) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MsgWithRequiredWKT.Merge(m, src)
+}
+func (m *MsgWithRequiredWKT) XXX_Size() int {
+	return xxx_messageInfo_MsgWithRequiredWKT.Size(m)
+}
+func (m *MsgWithRequiredWKT) XXX_DiscardUnknown() {
+	xxx_messageInfo_MsgWithRequiredWKT.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MsgWithRequiredWKT proto.InternalMessageInfo
+
+func (m *MsgWithRequiredWKT) GetStr() *wrappers.StringValue {
+	if m != nil {
+		return m.Str
+	}
+	return nil
+}
+
+var E_Name = &proto.ExtensionDesc{
+	ExtendedType:  (*Real)(nil),
+	ExtensionType: (*string)(nil),
+	Field:         124,
+	Name:          "jsonpb.name",
+	Tag:           "bytes,124,opt,name=name",
+	Filename:      "test_objects.proto",
+}
+
+var E_Extm = &proto.ExtensionDesc{
+	ExtendedType:  (*Real)(nil),
+	ExtensionType: (*MsgWithRequired)(nil),
+	Field:         125,
+	Name:          "jsonpb.extm",
+	Tag:           "bytes,125,opt,name=extm",
+	Filename:      "test_objects.proto",
+}
+
+func init() {
+	proto.RegisterEnum("jsonpb.Widget_Color", Widget_Color_name, Widget_Color_value)
+	proto.RegisterType((*Simple)(nil), "jsonpb.Simple")
+	proto.RegisterType((*NonFinites)(nil), "jsonpb.NonFinites")
+	proto.RegisterType((*Repeats)(nil), "jsonpb.Repeats")
+	proto.RegisterType((*Widget)(nil), "jsonpb.Widget")
+	proto.RegisterType((*Maps)(nil), "jsonpb.Maps")
+	proto.RegisterMapType((map[bool]*Simple)(nil), "jsonpb.Maps.MBoolSimpleEntry")
+	proto.RegisterMapType((map[int64]string)(nil), "jsonpb.Maps.MInt64StrEntry")
+	proto.RegisterType((*MsgWithOneof)(nil), "jsonpb.MsgWithOneof")
+	proto.RegisterType((*Real)(nil), "jsonpb.Real")
+	proto.RegisterExtension(E_Complex_RealExtension)
+	proto.RegisterType((*Complex)(nil), "jsonpb.Complex")
+	proto.RegisterType((*KnownTypes)(nil), "jsonpb.KnownTypes")
+	proto.RegisterType((*MsgWithRequired)(nil), "jsonpb.MsgWithRequired")
+	proto.RegisterType((*MsgWithIndirectRequired)(nil), "jsonpb.MsgWithIndirectRequired")
+	proto.RegisterMapType((map[string]*MsgWithRequired)(nil), "jsonpb.MsgWithIndirectRequired.MapFieldEntry")
+	proto.RegisterType((*MsgWithRequiredBytes)(nil), "jsonpb.MsgWithRequiredBytes")
+	proto.RegisterType((*MsgWithRequiredWKT)(nil), "jsonpb.MsgWithRequiredWKT")
+	proto.RegisterExtension(E_Name)
+	proto.RegisterExtension(E_Extm)
+}
+
+func init() {
+	proto.RegisterFile("test_objects.proto", fileDescriptor_e97c739a0ce14cc6)
+}
+
+var fileDescriptor_e97c739a0ce14cc6 = []byte{
+	// 1460 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x56, 0xdd, 0x72, 0xdb, 0x44,
+	0x14, 0x8e, 0x24, 0xcb, 0xb6, 0x8e, 0xf3, 0xd7, 0x6d, 0xda, 0x2a, 0xa1, 0x14, 0x8d, 0x5b, 0x8a,
+	0x69, 0x89, 0x3b, 0x38, 0x1e, 0x4f, 0x29, 0xdc, 0x34, 0x4d, 0x4a, 0x4b, 0xdb, 0xc0, 0x6c, 0x52,
+	0x7a, 0xe9, 0x91, 0x23, 0x39, 0x55, 0x91, 0xb4, 0x66, 0x77, 0x9d, 0xd4, 0x03, 0xcc, 0xe4, 0x19,
+	0x18, 0x9e, 0x80, 0x0b, 0x6e, 0xb9, 0xe3, 0x82, 0xb7, 0xe0, 0x8d, 0x98, 0x3d, 0xbb, 0xf2, 0x5f,
+	0xe2, 0x81, 0x2b, 0x7b, 0xf7, 0xfb, 0xd9, 0xd5, 0x9e, 0x4f, 0x67, 0x05, 0x44, 0xc6, 0x42, 0x76,
+	0x59, 0xef, 0x5d, 0x7c, 0x2c, 0x45, 0x73, 0xc0, 0x99, 0x64, 0xa4, 0xfc, 0x4e, 0xb0, 0x7c, 0xd0,
+	0xdb, 0xda, 0x3c, 0x61, 0xec, 0x24, 0x8d, 0x1f, 0xe0, 0x6c, 0x6f, 0xd8, 0x7f, 0x10, 0xe6, 0x23,
+	0x4d, 0xd9, 0xba, 0x35, 0x0f, 0x45, 0x43, 0x1e, 0xca, 0x84, 0xe5, 0x06, 0xbf, 0x39, 0x8f, 0x0b,
+	0xc9, 0x87, 0xc7, 0xd2, 0xa0, 0x1f, 0xcd, 0xa3, 0x32, 0xc9, 0x62, 0x21, 0xc3, 0x6c, 0xb0, 0xc8,
+	0xfe, 0x8c, 0x87, 0x83, 0x41, 0xcc, 0xcd, 0x0e, 0xeb, 0x7f, 0x96, 0xa0, 0x7c, 0x98, 0x64, 0x83,
+	0x34, 0x26, 0xd7, 0xa0, 0xcc, 0xba, 0x3d, 0xc6, 0x52, 0xdf, 0x0a, 0xac, 0x46, 0x95, 0xba, 0x6c,
+	0x97, 0xb1, 0x94, 0xdc, 0x80, 0x0a, 0xeb, 0x26, 0xb9, 0xdc, 0x69, 0xf9, 0x76, 0x60, 0x35, 0x5c,
+	0x5a, 0x66, 0xcf, 0xd5, 0x88, 0xdc, 0x82, 0x9a, 0x01, 0xba, 0x42, 0x72, 0xdf, 0x41, 0xd0, 0xd3,
+	0xe0, 0xa1, 0xe4, 0x63, 0x61, 0xa7, 0xed, 0x97, 0x02, 0xab, 0xe1, 0x68, 0x61, 0xa7, 0x3d, 0x16,
+	0x76, 0xda, 0x28, 0x74, 0x11, 0xf4, 0x34, 0xa8, 0x84, 0x9b, 0x50, 0x65, 0xdd, 0xa1, 0x5e, 0xb2,
+	0x1c, 0x58, 0x8d, 0x15, 0x5a, 0x61, 0xaf, 0x71, 0x48, 0x02, 0x58, 0x2e, 0x20, 0xd4, 0x56, 0x10,
+	0x06, 0x03, 0xcf, 0x88, 0x3b, 0x6d, 0xbf, 0x1a, 0x58, 0x8d, 0x92, 0x11, 0x77, 0xda, 0x13, 0xb1,
+	0x59, 0xd8, 0x43, 0x18, 0x0c, 0x3c, 0x16, 0x0b, 0xbd, 0x32, 0x04, 0x56, 0xe3, 0x0a, 0xad, 0xb0,
+	0xc3, 0xa9, 0x95, 0xc5, 0x64, 0xe5, 0x1a, 0xc2, 0x60, 0xe0, 0x19, 0x71, 0xa7, 0xed, 0x2f, 0x07,
+	0x56, 0x83, 0x18, 0x71, 0xb1, 0xb2, 0x98, 0xac, 0xbc, 0x82, 0x30, 0x18, 0x78, 0x7c, 0x58, 0xfd,
+	0x94, 0x85, 0xd2, 0x5f, 0x0d, 0xac, 0x86, 0x4d, 0xcb, 0xec, 0xa9, 0x1a, 0xe9, 0xc3, 0x42, 0x00,
+	0x95, 0x6b, 0x08, 0x7a, 0x1a, 0x1c, 0xaf, 0x1a, 0xb1, 0x61, 0x2f, 0x8d, 0xfd, 0xf5, 0xc0, 0x6a,
+	0x58, 0xb4, 0xc2, 0xf6, 0x70, 0xa8, 0x57, 0xd5, 0x10, 0x6a, 0xaf, 0x20, 0x0c, 0x06, 0x9e, 0x6c,
+	0x59, 0xf2, 0x24, 0x3f, 0xf1, 0x49, 0x60, 0x35, 0x3c, 0xb5, 0x65, 0x1c, 0xea, 0x0d, 0xf5, 0x46,
+	0x32, 0x16, 0xfe, 0xd5, 0xc0, 0x6a, 0x2c, 0xd3, 0x32, 0xdb, 0x55, 0xa3, 0xfa, 0xaf, 0x16, 0xc0,
+	0x01, 0xcb, 0x9f, 0x26, 0x79, 0x22, 0x63, 0x41, 0xae, 0x82, 0xdb, 0xef, 0xe6, 0x61, 0x8e, 0xa1,
+	0xb1, 0x69, 0xa9, 0x7f, 0x10, 0xe6, 0x2a, 0x4a, 0xfd, 0xee, 0x20, 0xc9, 0xfb, 0x18, 0x19, 0x9b,
+	0xba, 0xfd, 0xef, 0x92, 0xbc, 0xaf, 0xa7, 0x73, 0x35, 0xed, 0x98, 0xe9, 0x03, 0x35, 0x7d, 0x15,
+	0xdc, 0x08, 0x2d, 0x4a, 0xb8, 0xc1, 0x52, 0x64, 0x2c, 0x22, 0x6d, 0xe1, 0xe2, 0xac, 0x1b, 0x15,
+	0x16, 0x91, 0xb6, 0x28, 0x9b, 0x69, 0x65, 0x51, 0xff, 0xc3, 0x86, 0x0a, 0x8d, 0x07, 0x71, 0x28,
+	0x85, 0xa2, 0xf0, 0x22, 0xc7, 0x8e, 0xca, 0x31, 0x2f, 0x72, 0xcc, 0xc7, 0x39, 0x76, 0x54, 0x8e,
+	0xb9, 0xce, 0x71, 0x01, 0x74, 0xda, 0xbe, 0x13, 0x38, 0x2a, 0xa7, 0x5c, 0xe7, 0x74, 0x13, 0xaa,
+	0xbc, 0xc8, 0x61, 0x29, 0x70, 0x54, 0x0e, 0xb9, 0xc9, 0xe1, 0x18, 0xea, 0xb4, 0x7d, 0x37, 0x70,
+	0x54, 0xca, 0xb8, 0x49, 0x19, 0x42, 0xa2, 0x48, 0xaf, 0xa3, 0x32, 0xc4, 0x0f, 0xa7, 0x54, 0x26,
+	0x21, 0x95, 0xc0, 0x51, 0x09, 0xe1, 0x26, 0x21, 0xb8, 0x09, 0x5d, 0xff, 0x6a, 0xe0, 0xa8, 0xfa,
+	0x73, 0x5d, 0x7f, 0xd4, 0x98, 0xfa, 0x7a, 0x81, 0xa3, 0xea, 0xcb, 0x4d, 0x7d, 0xb5, 0x9d, 0xae,
+	0x1e, 0x04, 0x8e, 0xaa, 0x1e, 0x9f, 0x54, 0x8f, 0x9b, 0xea, 0xd5, 0x02, 0x47, 0x55, 0x8f, 0xeb,
+	0xea, 0xfd, 0x65, 0x43, 0xf9, 0x4d, 0x12, 0x9d, 0xc4, 0x92, 0xdc, 0x03, 0xf7, 0x98, 0xa5, 0x8c,
+	0x63, 0xe5, 0x56, 0x5b, 0x1b, 0x4d, 0xdd, 0xac, 0x9a, 0x1a, 0x6e, 0x3e, 0x51, 0x18, 0xd5, 0x14,
+	0xb2, 0xad, 0xfc, 0x34, 0x5b, 0x1d, 0xde, 0x22, 0x76, 0x99, 0xe3, 0x2f, 0xb9, 0x0b, 0x65, 0x81,
+	0x4d, 0x05, 0xdf, 0xa2, 0x5a, 0x6b, 0xb5, 0x60, 0xeb, 0x56, 0x43, 0x0d, 0x4a, 0x3e, 0xd5, 0x07,
+	0x82, 0x4c, 0xb5, 0xcf, 0x8b, 0x4c, 0x75, 0x40, 0x86, 0x5a, 0xe1, 0xba, 0xc0, 0xfe, 0x06, 0x7a,
+	0xae, 0x15, 0x4c, 0x53, 0x77, 0x5a, 0xe0, 0xe4, 0x33, 0xf0, 0x78, 0xb7, 0x20, 0x5f, 0x43, 0xdb,
+	0x0b, 0xe4, 0x2a, 0x37, 0xff, 0xea, 0x1f, 0x83, 0xab, 0x37, 0x5d, 0x01, 0x87, 0xee, 0xef, 0xad,
+	0x2f, 0x11, 0x0f, 0xdc, 0xaf, 0xe9, 0xfe, 0xfe, 0xc1, 0xba, 0x45, 0xaa, 0x50, 0xda, 0x7d, 0xf9,
+	0x7a, 0x7f, 0xdd, 0xae, 0xff, 0x66, 0x43, 0xe9, 0x55, 0x38, 0x10, 0xe4, 0x4b, 0xa8, 0x65, 0x53,
+	0xdd, 0xcb, 0x42, 0xff, 0x0f, 0x0a, 0x7f, 0x45, 0x69, 0xbe, 0x2a, 0x5a, 0xd9, 0x7e, 0x2e, 0xf9,
+	0x88, 0x7a, 0xd9, 0xb8, 0xb5, 0x3d, 0x86, 0x95, 0x0c, 0xb3, 0x59, 0x3c, 0xb5, 0x8d, 0xf2, 0x0f,
+	0x67, 0xe5, 0x2a, 0xaf, 0xfa, 0xb1, 0xb5, 0x41, 0x2d, 0x9b, 0xcc, 0x6c, 0x7d, 0x05, 0xab, 0xb3,
+	0xfe, 0x64, 0x1d, 0x9c, 0x1f, 0xe2, 0x11, 0x96, 0xd1, 0xa1, 0xea, 0x2f, 0xd9, 0x00, 0xf7, 0x34,
+	0x4c, 0x87, 0x31, 0xbe, 0x7e, 0x1e, 0xd5, 0x83, 0x47, 0xf6, 0x43, 0x6b, 0xeb, 0x00, 0xd6, 0xe7,
+	0xed, 0xa7, 0xf5, 0x55, 0xad, 0xbf, 0x33, 0xad, 0xbf, 0x58, 0x94, 0x89, 0x5f, 0xfd, 0x1f, 0x0b,
+	0x96, 0x5f, 0x89, 0x93, 0x37, 0x89, 0x7c, 0xfb, 0x6d, 0x1e, 0xb3, 0x3e, 0xb9, 0x0e, 0xae, 0x4c,
+	0x64, 0x1a, 0xa3, 0x9d, 0xf7, 0x6c, 0x89, 0xea, 0x21, 0xf1, 0xa1, 0x2c, 0xc2, 0x34, 0xe4, 0x23,
+	0xf4, 0x74, 0x9e, 0x2d, 0x51, 0x33, 0x26, 0x5b, 0x50, 0x79, 0xc2, 0x86, 0x6a, 0x27, 0xd8, 0x16,
+	0x94, 0xa6, 0x98, 0x20, 0xb7, 0x61, 0xf9, 0x2d, 0xcb, 0xe2, 0x6e, 0x18, 0x45, 0x3c, 0x16, 0x02,
+	0x3b, 0x84, 0x22, 0xd4, 0xd4, 0xec, 0x63, 0x3d, 0x49, 0xf6, 0xe1, 0x4a, 0x26, 0x4e, 0xba, 0x67,
+	0x89, 0x7c, 0xdb, 0xe5, 0xf1, 0x8f, 0xc3, 0x84, 0xc7, 0x11, 0x76, 0x8d, 0x5a, 0xeb, 0xc6, 0xf8,
+	0x60, 0xf5, 0x1e, 0xa9, 0x81, 0x9f, 0x2d, 0xd1, 0xb5, 0x6c, 0x76, 0x6a, 0xb7, 0x02, 0xee, 0x30,
+	0x4f, 0x58, 0x5e, 0xbf, 0x0b, 0x25, 0x1a, 0x87, 0xe9, 0xe4, 0x14, 0x2d, 0xdd, 0x6a, 0x70, 0x70,
+	0xaf, 0x5a, 0x8d, 0xd6, 0xcf, 0xcf, 0xcf, 0xcf, 0xed, 0xfa, 0x99, 0xda, 0xb8, 0x3a, 0x90, 0xf7,
+	0xe4, 0x26, 0x78, 0x49, 0x16, 0x9e, 0x24, 0xb9, 0x7a, 0x40, 0x4d, 0x9f, 0x4c, 0x4c, 0x24, 0xad,
+	0x3d, 0x58, 0xe5, 0x71, 0x98, 0x76, 0xe3, 0xf7, 0x32, 0xce, 0x45, 0xc2, 0x72, 0xb2, 0x3c, 0x49,
+	0x66, 0x98, 0xfa, 0x3f, 0xcd, 0x46, 0xdb, 0xd8, 0xd3, 0x15, 0x25, 0xda, 0x2f, 0x34, 0xf5, 0xbf,
+	0x5d, 0x80, 0x17, 0x39, 0x3b, 0xcb, 0x8f, 0x46, 0x83, 0x58, 0x90, 0x3b, 0x60, 0x87, 0x39, 0x5e,
+	0x1b, 0xb5, 0xd6, 0x46, 0x53, 0x5f, 0xf8, 0xcd, 0xe2, 0xc2, 0x6f, 0x3e, 0xce, 0x47, 0xd4, 0x0e,
+	0x73, 0x72, 0x1f, 0x9c, 0x68, 0xa8, 0x5f, 0xf6, 0x5a, 0x6b, 0xf3, 0x02, 0x6d, 0xcf, 0x7c, 0x76,
+	0x50, 0xc5, 0x22, 0x9f, 0x80, 0x2d, 0x24, 0xde, 0x62, 0xea, 0x0c, 0xe7, 0xb9, 0x87, 0xf8, 0x09,
+	0x42, 0x6d, 0xa1, 0x9a, 0x88, 0x2d, 0x85, 0x89, 0xc9, 0xd6, 0x05, 0xe2, 0x51, 0xf1, 0x35, 0x42,
+	0x6d, 0x29, 0x14, 0x37, 0x3d, 0xc5, 0x1b, 0xec, 0x32, 0xee, 0xcb, 0x44, 0xc8, 0xef, 0xd5, 0x09,
+	0x53, 0x3b, 0x3d, 0x25, 0x0d, 0x70, 0x4e, 0xc3, 0x14, 0x6f, 0xb4, 0x5a, 0xeb, 0xfa, 0x05, 0xb2,
+	0x26, 0x2a, 0x0a, 0x69, 0x82, 0x13, 0xf5, 0x52, 0x8c, 0x4e, 0xad, 0x75, 0xf3, 0xe2, 0x73, 0x61,
+	0xaf, 0x34, 0xfc, 0xa8, 0x97, 0x92, 0x6d, 0x70, 0xfa, 0xa9, 0xc4, 0x24, 0xa9, 0xf7, 0x76, 0x9e,
+	0x8f, 0x5d, 0xd7, 0xd0, 0xfb, 0xa9, 0x54, 0xf4, 0x04, 0x9b, 0xfc, 0xe5, 0x74, 0x7c, 0x13, 0x0d,
+	0x3d, 0xe9, 0xb4, 0xd5, 0x6e, 0x86, 0x9d, 0x36, 0x5e, 0x4e, 0x97, 0xed, 0xe6, 0xf5, 0x34, 0x7f,
+	0xd8, 0x69, 0xa3, 0xfd, 0x4e, 0x0b, 0xbf, 0x63, 0x16, 0xd8, 0xef, 0xb4, 0x0a, 0xfb, 0x9d, 0x16,
+	0xda, 0xef, 0xb4, 0xf0, 0xc3, 0x66, 0x91, 0xfd, 0x98, 0x3f, 0x44, 0x7e, 0x09, 0x6f, 0x42, 0x6f,
+	0xc1, 0xa1, 0xab, 0x56, 0xa0, 0xe9, 0xc8, 0x53, 0xfe, 0xaa, 0xa9, 0xc1, 0x02, 0x7f, 0x7d, 0xbb,
+	0x18, 0x7f, 0x21, 0x39, 0xf9, 0x1c, 0xdc, 0xe2, 0x96, 0xb9, 0xfc, 0x01, 0xf0, 0xd6, 0xd1, 0x02,
+	0xcd, 0xac, 0xdf, 0x86, 0xb5, 0xb9, 0x97, 0x51, 0x35, 0x20, 0xdd, 0x4a, 0xed, 0x86, 0x87, 0xbe,
+	0xf5, 0xdf, 0x6d, 0xb8, 0x61, 0x58, 0xcf, 0xf3, 0x28, 0xe1, 0xf1, 0xb1, 0x1c, 0xb3, 0xef, 0x43,
+	0x49, 0x0c, 0x7b, 0x99, 0x49, 0xf2, 0xa2, 0x37, 0x9c, 0x22, 0x89, 0x7c, 0x03, 0x5e, 0x16, 0x0e,
+	0xba, 0xfd, 0x24, 0x4e, 0x23, 0xd3, 0x6c, 0xb7, 0xe7, 0x14, 0xf3, 0x0b, 0xa8, 0x26, 0xfc, 0x54,
+	0xf1, 0x75, 0xf3, 0xad, 0x66, 0x66, 0x48, 0x1e, 0x42, 0x4d, 0xa4, 0xc9, 0x71, 0x6c, 0xdc, 0x1c,
+	0x74, 0x5b, 0xb8, 0x3e, 0x20, 0x17, 0x95, 0x5b, 0x47, 0xb0, 0x32, 0x63, 0x3a, 0xdd, 0x72, 0x3d,
+	0xdd, 0x72, 0xb7, 0x67, 0x5b, 0xee, 0x42, 0xdb, 0xa9, 0xde, 0x7b, 0x0f, 0x36, 0xe6, 0x50, 0x3c,
+	0x6d, 0x42, 0xa0, 0xd4, 0x1b, 0x49, 0x81, 0xe7, 0xb9, 0x4c, 0xf1, 0x7f, 0x7d, 0x0f, 0xc8, 0x1c,
+	0xf7, 0xcd, 0x8b, 0xa3, 0xa2, 0xdc, 0x8a, 0xf8, 0x7f, 0xca, 0xfd, 0x28, 0x80, 0x52, 0x1e, 0x66,
+	0xf1, 0x5c, 0xd3, 0xfa, 0x19, 0x9f, 0x02, 0x91, 0x47, 0x5f, 0x40, 0x29, 0x7e, 0x2f, 0xb3, 0x39,
+	0xc6, 0x2f, 0xff, 0x51, 0x2a, 0x25, 0xf9, 0x37, 0x00, 0x00, 0xff, 0xff, 0xe9, 0xd4, 0xfd, 0x2f,
+	0x41, 0x0d, 0x00, 0x00,
+}
diff --git a/jsonpb/jsonpb_test_proto/test_objects.proto b/jsonpb/jsonpb_test_proto/test_objects.proto
new file mode 100644
index 0000000..e01386e
--- /dev/null
+++ b/jsonpb/jsonpb_test_proto/test_objects.proto
@@ -0,0 +1,179 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2015 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto2";
+
+import "google/protobuf/any.proto";
+import "google/protobuf/duration.proto";
+import "google/protobuf/struct.proto";
+import "google/protobuf/timestamp.proto";
+import "google/protobuf/wrappers.proto";
+
+package jsonpb;
+
+// Test message for holding primitive types.
+message Simple {
+  optional bool o_bool = 1;
+  optional int32 o_int32 = 2;
+  optional int32 o_int32_str = 3;
+  optional int64 o_int64 = 4;
+  optional int64 o_int64_str = 5;
+  optional uint32 o_uint32 = 6;
+  optional uint32 o_uint32_str = 7;
+  optional uint64 o_uint64 = 8;
+  optional uint64 o_uint64_str = 9;
+  optional sint32 o_sint32 = 10;
+  optional sint32 o_sint32_str = 11;
+  optional sint64 o_sint64 = 12;
+  optional sint64 o_sint64_str = 13;
+  optional float o_float = 14;
+  optional float o_float_str = 15;
+  optional double o_double = 16;
+  optional double o_double_str = 17;
+  optional string o_string = 18;
+  optional bytes o_bytes = 19;
+}
+
+// Test message for holding special non-finites primitives.
+message NonFinites {
+    optional float f_nan = 1;
+    optional float f_pinf = 2;
+    optional float f_ninf = 3;
+    optional double d_nan = 4;
+    optional double d_pinf = 5;
+    optional double d_ninf = 6;
+}
+
+// Test message for holding repeated primitives.
+message Repeats {
+  repeated bool r_bool = 1;
+  repeated int32 r_int32 = 2;
+  repeated int64 r_int64 = 3;
+  repeated uint32 r_uint32 = 4;
+  repeated uint64 r_uint64 = 5;
+  repeated sint32 r_sint32 = 6;
+  repeated sint64 r_sint64 = 7;
+  repeated float r_float = 8;
+  repeated double r_double = 9;
+  repeated string r_string = 10;
+  repeated bytes r_bytes = 11;
+}
+
+// Test message for holding enums and nested messages.
+message Widget {
+  enum Color {
+    RED = 0;
+    GREEN = 1;
+    BLUE = 2;
+  };
+  optional Color color = 1;
+  repeated Color r_color = 2;
+
+  optional Simple simple = 10;
+  repeated Simple r_simple = 11;
+
+  optional Repeats repeats = 20;
+  repeated Repeats r_repeats = 21;
+}
+
+message Maps {
+  map<int64, string> m_int64_str = 1;
+  map<bool, Simple> m_bool_simple = 2;
+}
+
+message MsgWithOneof {
+  oneof union {
+    string title = 1;
+    int64 salary = 2;
+    string Country = 3;
+    string home_address = 4;
+    MsgWithRequired msg_with_required = 5;
+  }
+}
+
+message Real {
+  optional double value = 1;
+  extensions 100 to max;
+}
+
+extend Real {
+  optional string name = 124;
+}
+
+message Complex {
+  extend Real {
+    optional Complex real_extension = 123;
+  }
+  optional double imaginary = 1;
+  extensions 100 to max;
+}
+
+message KnownTypes {
+  optional google.protobuf.Any an = 14;
+  optional google.protobuf.Duration dur = 1;
+  optional google.protobuf.Struct st = 12;
+  optional google.protobuf.Timestamp ts = 2;
+  optional google.protobuf.ListValue lv = 15;
+  optional google.protobuf.Value val = 16;
+
+  optional google.protobuf.DoubleValue dbl = 3;
+  optional google.protobuf.FloatValue flt = 4;
+  optional google.protobuf.Int64Value i64 = 5;
+  optional google.protobuf.UInt64Value u64 = 6;
+  optional google.protobuf.Int32Value i32 = 7;
+  optional google.protobuf.UInt32Value u32 = 8;
+  optional google.protobuf.BoolValue bool = 9;
+  optional google.protobuf.StringValue str = 10;
+  optional google.protobuf.BytesValue bytes = 11;
+}
+
+// Test messages for marshaling/unmarshaling required fields.
+message MsgWithRequired {
+  required string str = 1;
+}
+
+message MsgWithIndirectRequired {
+  optional MsgWithRequired subm = 1;
+  map<string, MsgWithRequired> map_field = 2;
+  repeated MsgWithRequired slice_field = 3;
+}
+
+message MsgWithRequiredBytes {
+  required bytes byts = 1;
+}
+
+message MsgWithRequiredWKT {
+  required google.protobuf.StringValue str = 1;
+}
+
+extend Real {
+  optional MsgWithRequired extm = 125;
+}
diff --git a/proto/all_test.go b/proto/all_test.go
new file mode 100644
index 0000000..a966a77
--- /dev/null
+++ b/proto/all_test.go
@@ -0,0 +1,2524 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto_test
+
+import (
+	"bytes"
+	"encoding/json"
+	"errors"
+	"fmt"
+	"math"
+	"math/rand"
+	"reflect"
+	"runtime/debug"
+	"strings"
+	"sync"
+	"testing"
+	"time"
+
+	"github.com/golang/protobuf/jsonpb"
+	. "github.com/golang/protobuf/proto"
+	pb3 "github.com/golang/protobuf/proto/proto3_proto"
+	. "github.com/golang/protobuf/proto/test_proto"
+	descriptorpb "github.com/golang/protobuf/protoc-gen-go/descriptor"
+)
+
+var globalO *Buffer
+
+func old() *Buffer {
+	if globalO == nil {
+		globalO = NewBuffer(nil)
+	}
+	globalO.Reset()
+	return globalO
+}
+
+func equalbytes(b1, b2 []byte, t *testing.T) {
+	if len(b1) != len(b2) {
+		t.Errorf("wrong lengths: 2*%d != %d", len(b1), len(b2))
+		return
+	}
+	for i := 0; i < len(b1); i++ {
+		if b1[i] != b2[i] {
+			t.Errorf("bad byte[%d]:%x %x: %s %s", i, b1[i], b2[i], b1, b2)
+		}
+	}
+}
+
+func initGoTestField() *GoTestField {
+	f := new(GoTestField)
+	f.Label = String("label")
+	f.Type = String("type")
+	return f
+}
+
+// These are all structurally equivalent but the tag numbers differ.
+// (It's remarkable that required, optional, and repeated all have
+// 8 letters.)
+func initGoTest_RequiredGroup() *GoTest_RequiredGroup {
+	return &GoTest_RequiredGroup{
+		RequiredField: String("required"),
+	}
+}
+
+func initGoTest_OptionalGroup() *GoTest_OptionalGroup {
+	return &GoTest_OptionalGroup{
+		RequiredField: String("optional"),
+	}
+}
+
+func initGoTest_RepeatedGroup() *GoTest_RepeatedGroup {
+	return &GoTest_RepeatedGroup{
+		RequiredField: String("repeated"),
+	}
+}
+
+func initGoTest(setdefaults bool) *GoTest {
+	pb := new(GoTest)
+	if setdefaults {
+		pb.F_BoolDefaulted = Bool(Default_GoTest_F_BoolDefaulted)
+		pb.F_Int32Defaulted = Int32(Default_GoTest_F_Int32Defaulted)
+		pb.F_Int64Defaulted = Int64(Default_GoTest_F_Int64Defaulted)
+		pb.F_Fixed32Defaulted = Uint32(Default_GoTest_F_Fixed32Defaulted)
+		pb.F_Fixed64Defaulted = Uint64(Default_GoTest_F_Fixed64Defaulted)
+		pb.F_Uint32Defaulted = Uint32(Default_GoTest_F_Uint32Defaulted)
+		pb.F_Uint64Defaulted = Uint64(Default_GoTest_F_Uint64Defaulted)
+		pb.F_FloatDefaulted = Float32(Default_GoTest_F_FloatDefaulted)
+		pb.F_DoubleDefaulted = Float64(Default_GoTest_F_DoubleDefaulted)
+		pb.F_StringDefaulted = String(Default_GoTest_F_StringDefaulted)
+		pb.F_BytesDefaulted = Default_GoTest_F_BytesDefaulted
+		pb.F_Sint32Defaulted = Int32(Default_GoTest_F_Sint32Defaulted)
+		pb.F_Sint64Defaulted = Int64(Default_GoTest_F_Sint64Defaulted)
+		pb.F_Sfixed32Defaulted = Int32(Default_GoTest_F_Sfixed32Defaulted)
+		pb.F_Sfixed64Defaulted = Int64(Default_GoTest_F_Sfixed64Defaulted)
+	}
+
+	pb.Kind = GoTest_TIME.Enum()
+	pb.RequiredField = initGoTestField()
+	pb.F_BoolRequired = Bool(true)
+	pb.F_Int32Required = Int32(3)
+	pb.F_Int64Required = Int64(6)
+	pb.F_Fixed32Required = Uint32(32)
+	pb.F_Fixed64Required = Uint64(64)
+	pb.F_Uint32Required = Uint32(3232)
+	pb.F_Uint64Required = Uint64(6464)
+	pb.F_FloatRequired = Float32(3232)
+	pb.F_DoubleRequired = Float64(6464)
+	pb.F_StringRequired = String("string")
+	pb.F_BytesRequired = []byte("bytes")
+	pb.F_Sint32Required = Int32(-32)
+	pb.F_Sint64Required = Int64(-64)
+	pb.F_Sfixed32Required = Int32(-32)
+	pb.F_Sfixed64Required = Int64(-64)
+	pb.Requiredgroup = initGoTest_RequiredGroup()
+
+	return pb
+}
+
+func hex(c uint8) uint8 {
+	if '0' <= c && c <= '9' {
+		return c - '0'
+	}
+	if 'a' <= c && c <= 'f' {
+		return 10 + c - 'a'
+	}
+	if 'A' <= c && c <= 'F' {
+		return 10 + c - 'A'
+	}
+	return 0
+}
+
+func equal(b []byte, s string, t *testing.T) bool {
+	if 2*len(b) != len(s) {
+		//		fail(fmt.Sprintf("wrong lengths: 2*%d != %d", len(b), len(s)), b, s, t)
+		fmt.Printf("wrong lengths: 2*%d != %d\n", len(b), len(s))
+		return false
+	}
+	for i, j := 0, 0; i < len(b); i, j = i+1, j+2 {
+		x := hex(s[j])*16 + hex(s[j+1])
+		if b[i] != x {
+			//			fail(fmt.Sprintf("bad byte[%d]:%x %x", i, b[i], x), b, s, t)
+			fmt.Printf("bad byte[%d]:%x %x", i, b[i], x)
+			return false
+		}
+	}
+	return true
+}
+
+func overify(t *testing.T, pb *GoTest, expected string) {
+	o := old()
+	err := o.Marshal(pb)
+	if err != nil {
+		fmt.Printf("overify marshal-1 err = %v", err)
+		o.DebugPrint("", o.Bytes())
+		t.Fatalf("expected = %s", expected)
+	}
+	if !equal(o.Bytes(), expected, t) {
+		o.DebugPrint("overify neq 1", o.Bytes())
+		t.Fatalf("expected = %s", expected)
+	}
+
+	// Now test Unmarshal by recreating the original buffer.
+	pbd := new(GoTest)
+	err = o.Unmarshal(pbd)
+	if err != nil {
+		t.Fatalf("overify unmarshal err = %v", err)
+		o.DebugPrint("", o.Bytes())
+		t.Fatalf("string = %s", expected)
+	}
+	o.Reset()
+	err = o.Marshal(pbd)
+	if err != nil {
+		t.Errorf("overify marshal-2 err = %v", err)
+		o.DebugPrint("", o.Bytes())
+		t.Fatalf("string = %s", expected)
+	}
+	if !equal(o.Bytes(), expected, t) {
+		o.DebugPrint("overify neq 2", o.Bytes())
+		t.Fatalf("string = %s", expected)
+	}
+}
+
+// Simple tests for numeric encode/decode primitives (varint, etc.)
+func TestNumericPrimitives(t *testing.T) {
+	for i := uint64(0); i < 1e6; i += 111 {
+		o := old()
+		if o.EncodeVarint(i) != nil {
+			t.Error("EncodeVarint")
+			break
+		}
+		x, e := o.DecodeVarint()
+		if e != nil {
+			t.Fatal("DecodeVarint")
+		}
+		if x != i {
+			t.Fatal("varint decode fail:", i, x)
+		}
+
+		o = old()
+		if o.EncodeFixed32(i) != nil {
+			t.Fatal("encFixed32")
+		}
+		x, e = o.DecodeFixed32()
+		if e != nil {
+			t.Fatal("decFixed32")
+		}
+		if x != i {
+			t.Fatal("fixed32 decode fail:", i, x)
+		}
+
+		o = old()
+		if o.EncodeFixed64(i*1234567) != nil {
+			t.Error("encFixed64")
+			break
+		}
+		x, e = o.DecodeFixed64()
+		if e != nil {
+			t.Error("decFixed64")
+			break
+		}
+		if x != i*1234567 {
+			t.Error("fixed64 decode fail:", i*1234567, x)
+			break
+		}
+
+		o = old()
+		i32 := int32(i - 12345)
+		if o.EncodeZigzag32(uint64(i32)) != nil {
+			t.Fatal("EncodeZigzag32")
+		}
+		x, e = o.DecodeZigzag32()
+		if e != nil {
+			t.Fatal("DecodeZigzag32")
+		}
+		if x != uint64(uint32(i32)) {
+			t.Fatal("zigzag32 decode fail:", i32, x)
+		}
+
+		o = old()
+		i64 := int64(i - 12345)
+		if o.EncodeZigzag64(uint64(i64)) != nil {
+			t.Fatal("EncodeZigzag64")
+		}
+		x, e = o.DecodeZigzag64()
+		if e != nil {
+			t.Fatal("DecodeZigzag64")
+		}
+		if x != uint64(i64) {
+			t.Fatal("zigzag64 decode fail:", i64, x)
+		}
+	}
+}
+
+// fakeMarshaler is a simple struct implementing Marshaler and Message interfaces.
+type fakeMarshaler struct {
+	b   []byte
+	err error
+}
+
+func (f *fakeMarshaler) Marshal() ([]byte, error) { return f.b, f.err }
+func (f *fakeMarshaler) String() string           { return fmt.Sprintf("Bytes: %v Error: %v", f.b, f.err) }
+func (f *fakeMarshaler) ProtoMessage()            {}
+func (f *fakeMarshaler) Reset()                   {}
+
+type msgWithFakeMarshaler struct {
+	M *fakeMarshaler `protobuf:"bytes,1,opt,name=fake"`
+}
+
+func (m *msgWithFakeMarshaler) String() string { return CompactTextString(m) }
+func (m *msgWithFakeMarshaler) ProtoMessage()  {}
+func (m *msgWithFakeMarshaler) Reset()         {}
+
+// Simple tests for proto messages that implement the Marshaler interface.
+func TestMarshalerEncoding(t *testing.T) {
+	tests := []struct {
+		name    string
+		m       Message
+		want    []byte
+		errType reflect.Type
+	}{
+		{
+			name: "Marshaler that fails",
+			m: &fakeMarshaler{
+				err: errors.New("some marshal err"),
+				b:   []byte{5, 6, 7},
+			},
+			// Since the Marshal method returned bytes, they should be written to the
+			// buffer.  (For efficiency, we assume that Marshal implementations are
+			// always correct w.r.t. RequiredNotSetError and output.)
+			want:    []byte{5, 6, 7},
+			errType: reflect.TypeOf(errors.New("some marshal err")),
+		},
+		{
+			name: "Marshaler that fails with RequiredNotSetError",
+			m: &msgWithFakeMarshaler{
+				M: &fakeMarshaler{
+					err: &RequiredNotSetError{},
+					b:   []byte{5, 6, 7},
+				},
+			},
+			// Since there's an error that can be continued after,
+			// the buffer should be written.
+			want: []byte{
+				10, 3, // for &msgWithFakeMarshaler
+				5, 6, 7, // for &fakeMarshaler
+			},
+			errType: reflect.TypeOf(&RequiredNotSetError{}),
+		},
+		{
+			name: "Marshaler that succeeds",
+			m: &fakeMarshaler{
+				b: []byte{0, 1, 2, 3, 4, 127, 255},
+			},
+			want: []byte{0, 1, 2, 3, 4, 127, 255},
+		},
+	}
+	for _, test := range tests {
+		b := NewBuffer(nil)
+		err := b.Marshal(test.m)
+		if reflect.TypeOf(err) != test.errType {
+			t.Errorf("%s: got err %T(%v) wanted %T", test.name, err, err, test.errType)
+		}
+		if !reflect.DeepEqual(test.want, b.Bytes()) {
+			t.Errorf("%s: got bytes %v wanted %v", test.name, b.Bytes(), test.want)
+		}
+		if size := Size(test.m); size != len(b.Bytes()) {
+			t.Errorf("%s: Size(_) = %v, but marshaled to %v bytes", test.name, size, len(b.Bytes()))
+		}
+
+		m, mErr := Marshal(test.m)
+		if !bytes.Equal(b.Bytes(), m) {
+			t.Errorf("%s: Marshal returned %v, but (*Buffer).Marshal wrote %v", test.name, m, b.Bytes())
+		}
+		if !reflect.DeepEqual(err, mErr) {
+			t.Errorf("%s: Marshal err = %q, but (*Buffer).Marshal returned %q",
+				test.name, fmt.Sprint(mErr), fmt.Sprint(err))
+		}
+	}
+}
+
+// Ensure that Buffer.Marshal uses O(N) memory for N messages
+func TestBufferMarshalAllocs(t *testing.T) {
+	value := &OtherMessage{Key: Int64(1)}
+	msg := &MyMessage{Count: Int32(1), Others: []*OtherMessage{value}}
+
+	reallocSize := func(t *testing.T, items int, prealloc int) (int64, int64) {
+		var b Buffer
+		b.SetBuf(make([]byte, 0, prealloc))
+
+		var allocSpace int64
+		prevCap := cap(b.Bytes())
+		for i := 0; i < items; i++ {
+			err := b.Marshal(msg)
+			if err != nil {
+				t.Errorf("Marshal err = %q", err)
+				break
+			}
+			if c := cap(b.Bytes()); prevCap != c {
+				allocSpace += int64(c)
+				prevCap = c
+			}
+		}
+		needSpace := int64(len(b.Bytes()))
+		return allocSpace, needSpace
+	}
+
+	for _, prealloc := range []int{0, 100, 10000} {
+		for _, items := range []int{1, 2, 5, 10, 20, 50, 100, 200, 500, 1000} {
+			runtimeSpace, need := reallocSize(t, items, prealloc)
+			totalSpace := int64(prealloc) + runtimeSpace
+
+			runtimeRatio := float64(runtimeSpace) / float64(need)
+			totalRatio := float64(totalSpace) / float64(need)
+
+			if totalRatio < 1 || runtimeRatio > 4 {
+				t.Errorf("needed %dB, allocated %dB total (ratio %.1f), allocated %dB at runtime (ratio %.1f)",
+					need, totalSpace, totalRatio, runtimeSpace, runtimeRatio)
+			}
+		}
+	}
+}
+
+// Simple tests for bytes
+func TestBytesPrimitives(t *testing.T) {
+	o := old()
+	bytes := []byte{'n', 'o', 'w', ' ', 'i', 's', ' ', 't', 'h', 'e', ' ', 't', 'i', 'm', 'e'}
+	if o.EncodeRawBytes(bytes) != nil {
+		t.Error("EncodeRawBytes")
+	}
+	decb, e := o.DecodeRawBytes(false)
+	if e != nil {
+		t.Error("DecodeRawBytes")
+	}
+	equalbytes(bytes, decb, t)
+}
+
+// Simple tests for strings
+func TestStringPrimitives(t *testing.T) {
+	o := old()
+	s := "now is the time"
+	if o.EncodeStringBytes(s) != nil {
+		t.Error("enc_string")
+	}
+	decs, e := o.DecodeStringBytes()
+	if e != nil {
+		t.Error("dec_string")
+	}
+	if s != decs {
+		t.Error("string encode/decode fail:", s, decs)
+	}
+}
+
+// Do we catch the "required bit not set" case?
+func TestRequiredBit(t *testing.T) {
+	o := old()
+	pb := new(GoTest)
+	err := o.Marshal(pb)
+	if err == nil {
+		t.Error("did not catch missing required fields")
+	} else if !strings.Contains(err.Error(), "Kind") {
+		t.Error("wrong error type:", err)
+	}
+}
+
+// Check that all fields are nil.
+// Clearly silly, and a residue from a more interesting test with an earlier,
+// different initialization property, but it once caught a compiler bug so
+// it lives.
+func checkInitialized(pb *GoTest, t *testing.T) {
+	if pb.F_BoolDefaulted != nil {
+		t.Error("New or Reset did not set boolean:", *pb.F_BoolDefaulted)
+	}
+	if pb.F_Int32Defaulted != nil {
+		t.Error("New or Reset did not set int32:", *pb.F_Int32Defaulted)
+	}
+	if pb.F_Int64Defaulted != nil {
+		t.Error("New or Reset did not set int64:", *pb.F_Int64Defaulted)
+	}
+	if pb.F_Fixed32Defaulted != nil {
+		t.Error("New or Reset did not set fixed32:", *pb.F_Fixed32Defaulted)
+	}
+	if pb.F_Fixed64Defaulted != nil {
+		t.Error("New or Reset did not set fixed64:", *pb.F_Fixed64Defaulted)
+	}
+	if pb.F_Uint32Defaulted != nil {
+		t.Error("New or Reset did not set uint32:", *pb.F_Uint32Defaulted)
+	}
+	if pb.F_Uint64Defaulted != nil {
+		t.Error("New or Reset did not set uint64:", *pb.F_Uint64Defaulted)
+	}
+	if pb.F_FloatDefaulted != nil {
+		t.Error("New or Reset did not set float:", *pb.F_FloatDefaulted)
+	}
+	if pb.F_DoubleDefaulted != nil {
+		t.Error("New or Reset did not set double:", *pb.F_DoubleDefaulted)
+	}
+	if pb.F_StringDefaulted != nil {
+		t.Error("New or Reset did not set string:", *pb.F_StringDefaulted)
+	}
+	if pb.F_BytesDefaulted != nil {
+		t.Error("New or Reset did not set bytes:", string(pb.F_BytesDefaulted))
+	}
+	if pb.F_Sint32Defaulted != nil {
+		t.Error("New or Reset did not set int32:", *pb.F_Sint32Defaulted)
+	}
+	if pb.F_Sint64Defaulted != nil {
+		t.Error("New or Reset did not set int64:", *pb.F_Sint64Defaulted)
+	}
+}
+
+// Does Reset() reset?
+func TestReset(t *testing.T) {
+	pb := initGoTest(true)
+	// muck with some values
+	pb.F_BoolDefaulted = Bool(false)
+	pb.F_Int32Defaulted = Int32(237)
+	pb.F_Int64Defaulted = Int64(12346)
+	pb.F_Fixed32Defaulted = Uint32(32000)
+	pb.F_Fixed64Defaulted = Uint64(666)
+	pb.F_Uint32Defaulted = Uint32(323232)
+	pb.F_Uint64Defaulted = nil
+	pb.F_FloatDefaulted = nil
+	pb.F_DoubleDefaulted = Float64(0)
+	pb.F_StringDefaulted = String("gotcha")
+	pb.F_BytesDefaulted = []byte("asdfasdf")
+	pb.F_Sint32Defaulted = Int32(123)
+	pb.F_Sint64Defaulted = Int64(789)
+	pb.Reset()
+	checkInitialized(pb, t)
+}
+
+// All required fields set, no defaults provided.
+func TestEncodeDecode1(t *testing.T) {
+	pb := initGoTest(false)
+	overify(t, pb,
+		"0807"+ // field 1, encoding 0, value 7
+			"220d"+"0a056c6162656c120474797065"+ // field 4, encoding 2 (GoTestField)
+			"5001"+ // field 10, encoding 0, value 1
+			"5803"+ // field 11, encoding 0, value 3
+			"6006"+ // field 12, encoding 0, value 6
+			"6d20000000"+ // field 13, encoding 5, value 0x20
+			"714000000000000000"+ // field 14, encoding 1, value 0x40
+			"78a019"+ // field 15, encoding 0, value 0xca0 = 3232
+			"8001c032"+ // field 16, encoding 0, value 0x1940 = 6464
+			"8d0100004a45"+ // field 17, encoding 5, value 3232.0
+			"9101000000000040b940"+ // field 18, encoding 1, value 6464.0
+			"9a0106"+"737472696e67"+ // field 19, encoding 2, string "string"
+			"b304"+ // field 70, encoding 3, start group
+			"ba0408"+"7265717569726564"+ // field 71, encoding 2, string "required"
+			"b404"+ // field 70, encoding 4, end group
+			"aa0605"+"6279746573"+ // field 101, encoding 2, string "bytes"
+			"b0063f"+ // field 102, encoding 0, 0x3f zigzag32
+			"b8067f"+ // field 103, encoding 0, 0x7f zigzag64
+			"c506e0ffffff"+ // field 104, encoding 5, -32 fixed32
+			"c906c0ffffffffffffff") // field 105, encoding 1, -64 fixed64
+}
+
+// All required fields set, defaults provided.
+func TestEncodeDecode2(t *testing.T) {
+	pb := initGoTest(true)
+	overify(t, pb,
+		"0807"+ // field 1, encoding 0, value 7
+			"220d"+"0a056c6162656c120474797065"+ // field 4, encoding 2 (GoTestField)
+			"5001"+ // field 10, encoding 0, value 1
+			"5803"+ // field 11, encoding 0, value 3
+			"6006"+ // field 12, encoding 0, value 6
+			"6d20000000"+ // field 13, encoding 5, value 32
+			"714000000000000000"+ // field 14, encoding 1, value 64
+			"78a019"+ // field 15, encoding 0, value 3232
+			"8001c032"+ // field 16, encoding 0, value 6464
+			"8d0100004a45"+ // field 17, encoding 5, value 3232.0
+			"9101000000000040b940"+ // field 18, encoding 1, value 6464.0
+			"9a0106"+"737472696e67"+ // field 19, encoding 2 string "string"
+			"c00201"+ // field 40, encoding 0, value 1
+			"c80220"+ // field 41, encoding 0, value 32
+			"d00240"+ // field 42, encoding 0, value 64
+			"dd0240010000"+ // field 43, encoding 5, value 320
+			"e1028002000000000000"+ // field 44, encoding 1, value 640
+			"e8028019"+ // field 45, encoding 0, value 3200
+			"f0028032"+ // field 46, encoding 0, value 6400
+			"fd02e0659948"+ // field 47, encoding 5, value 314159.0
+			"81030000000050971041"+ // field 48, encoding 1, value 271828.0
+			"8a0310"+"68656c6c6f2c2022776f726c6421220a"+ // field 49, encoding 2 string "hello, \"world!\"\n"
+			"b304"+ // start group field 70 level 1
+			"ba0408"+"7265717569726564"+ // field 71, encoding 2, string "required"
+			"b404"+ // end group field 70 level 1
+			"aa0605"+"6279746573"+ // field 101, encoding 2 string "bytes"
+			"b0063f"+ // field 102, encoding 0, 0x3f zigzag32
+			"b8067f"+ // field 103, encoding 0, 0x7f zigzag64
+			"c506e0ffffff"+ // field 104, encoding 5, -32 fixed32
+			"c906c0ffffffffffffff"+ // field 105, encoding 1, -64 fixed64
+			"8a1907"+"4269676e6f7365"+ // field 401, encoding 2, string "Bignose"
+			"90193f"+ // field 402, encoding 0, value 63
+			"98197f"+ // field 403, encoding 0, value 127
+			"a519e0ffffff"+ // field 404, encoding 5, -32 fixed32
+			"a919c0ffffffffffffff") // field 405, encoding 1, -64 fixed64
+
+}
+
+// All default fields set to their default value by hand
+func TestEncodeDecode3(t *testing.T) {
+	pb := initGoTest(false)
+	pb.F_BoolDefaulted = Bool(true)
+	pb.F_Int32Defaulted = Int32(32)
+	pb.F_Int64Defaulted = Int64(64)
+	pb.F_Fixed32Defaulted = Uint32(320)
+	pb.F_Fixed64Defaulted = Uint64(640)
+	pb.F_Uint32Defaulted = Uint32(3200)
+	pb.F_Uint64Defaulted = Uint64(6400)
+	pb.F_FloatDefaulted = Float32(314159)
+	pb.F_DoubleDefaulted = Float64(271828)
+	pb.F_StringDefaulted = String("hello, \"world!\"\n")
+	pb.F_BytesDefaulted = []byte("Bignose")
+	pb.F_Sint32Defaulted = Int32(-32)
+	pb.F_Sint64Defaulted = Int64(-64)
+	pb.F_Sfixed32Defaulted = Int32(-32)
+	pb.F_Sfixed64Defaulted = Int64(-64)
+
+	overify(t, pb,
+		"0807"+ // field 1, encoding 0, value 7
+			"220d"+"0a056c6162656c120474797065"+ // field 4, encoding 2 (GoTestField)
+			"5001"+ // field 10, encoding 0, value 1
+			"5803"+ // field 11, encoding 0, value 3
+			"6006"+ // field 12, encoding 0, value 6
+			"6d20000000"+ // field 13, encoding 5, value 32
+			"714000000000000000"+ // field 14, encoding 1, value 64
+			"78a019"+ // field 15, encoding 0, value 3232
+			"8001c032"+ // field 16, encoding 0, value 6464
+			"8d0100004a45"+ // field 17, encoding 5, value 3232.0
+			"9101000000000040b940"+ // field 18, encoding 1, value 6464.0
+			"9a0106"+"737472696e67"+ // field 19, encoding 2 string "string"
+			"c00201"+ // field 40, encoding 0, value 1
+			"c80220"+ // field 41, encoding 0, value 32
+			"d00240"+ // field 42, encoding 0, value 64
+			"dd0240010000"+ // field 43, encoding 5, value 320
+			"e1028002000000000000"+ // field 44, encoding 1, value 640
+			"e8028019"+ // field 45, encoding 0, value 3200
+			"f0028032"+ // field 46, encoding 0, value 6400
+			"fd02e0659948"+ // field 47, encoding 5, value 314159.0
+			"81030000000050971041"+ // field 48, encoding 1, value 271828.0
+			"8a0310"+"68656c6c6f2c2022776f726c6421220a"+ // field 49, encoding 2 string "hello, \"world!\"\n"
+			"b304"+ // start group field 70 level 1
+			"ba0408"+"7265717569726564"+ // field 71, encoding 2, string "required"
+			"b404"+ // end group field 70 level 1
+			"aa0605"+"6279746573"+ // field 101, encoding 2 string "bytes"
+			"b0063f"+ // field 102, encoding 0, 0x3f zigzag32
+			"b8067f"+ // field 103, encoding 0, 0x7f zigzag64
+			"c506e0ffffff"+ // field 104, encoding 5, -32 fixed32
+			"c906c0ffffffffffffff"+ // field 105, encoding 1, -64 fixed64
+			"8a1907"+"4269676e6f7365"+ // field 401, encoding 2, string "Bignose"
+			"90193f"+ // field 402, encoding 0, value 63
+			"98197f"+ // field 403, encoding 0, value 127
+			"a519e0ffffff"+ // field 404, encoding 5, -32 fixed32
+			"a919c0ffffffffffffff") // field 405, encoding 1, -64 fixed64
+
+}
+
+// All required fields set, defaults provided, all non-defaulted optional fields have values.
+func TestEncodeDecode4(t *testing.T) {
+	pb := initGoTest(true)
+	pb.Table = String("hello")
+	pb.Param = Int32(7)
+	pb.OptionalField = initGoTestField()
+	pb.F_BoolOptional = Bool(true)
+	pb.F_Int32Optional = Int32(32)
+	pb.F_Int64Optional = Int64(64)
+	pb.F_Fixed32Optional = Uint32(3232)
+	pb.F_Fixed64Optional = Uint64(6464)
+	pb.F_Uint32Optional = Uint32(323232)
+	pb.F_Uint64Optional = Uint64(646464)
+	pb.F_FloatOptional = Float32(32.)
+	pb.F_DoubleOptional = Float64(64.)
+	pb.F_StringOptional = String("hello")
+	pb.F_BytesOptional = []byte("Bignose")
+	pb.F_Sint32Optional = Int32(-32)
+	pb.F_Sint64Optional = Int64(-64)
+	pb.F_Sfixed32Optional = Int32(-32)
+	pb.F_Sfixed64Optional = Int64(-64)
+	pb.Optionalgroup = initGoTest_OptionalGroup()
+
+	overify(t, pb,
+		"0807"+ // field 1, encoding 0, value 7
+			"1205"+"68656c6c6f"+ // field 2, encoding 2, string "hello"
+			"1807"+ // field 3, encoding 0, value 7
+			"220d"+"0a056c6162656c120474797065"+ // field 4, encoding 2 (GoTestField)
+			"320d"+"0a056c6162656c120474797065"+ // field 6, encoding 2 (GoTestField)
+			"5001"+ // field 10, encoding 0, value 1
+			"5803"+ // field 11, encoding 0, value 3
+			"6006"+ // field 12, encoding 0, value 6
+			"6d20000000"+ // field 13, encoding 5, value 32
+			"714000000000000000"+ // field 14, encoding 1, value 64
+			"78a019"+ // field 15, encoding 0, value 3232
+			"8001c032"+ // field 16, encoding 0, value 6464
+			"8d0100004a45"+ // field 17, encoding 5, value 3232.0
+			"9101000000000040b940"+ // field 18, encoding 1, value 6464.0
+			"9a0106"+"737472696e67"+ // field 19, encoding 2 string "string"
+			"f00101"+ // field 30, encoding 0, value 1
+			"f80120"+ // field 31, encoding 0, value 32
+			"800240"+ // field 32, encoding 0, value 64
+			"8d02a00c0000"+ // field 33, encoding 5, value 3232
+			"91024019000000000000"+ // field 34, encoding 1, value 6464
+			"9802a0dd13"+ // field 35, encoding 0, value 323232
+			"a002c0ba27"+ // field 36, encoding 0, value 646464
+			"ad0200000042"+ // field 37, encoding 5, value 32.0
+			"b1020000000000005040"+ // field 38, encoding 1, value 64.0
+			"ba0205"+"68656c6c6f"+ // field 39, encoding 2, string "hello"
+			"c00201"+ // field 40, encoding 0, value 1
+			"c80220"+ // field 41, encoding 0, value 32
+			"d00240"+ // field 42, encoding 0, value 64
+			"dd0240010000"+ // field 43, encoding 5, value 320
+			"e1028002000000000000"+ // field 44, encoding 1, value 640
+			"e8028019"+ // field 45, encoding 0, value 3200
+			"f0028032"+ // field 46, encoding 0, value 6400
+			"fd02e0659948"+ // field 47, encoding 5, value 314159.0
+			"81030000000050971041"+ // field 48, encoding 1, value 271828.0
+			"8a0310"+"68656c6c6f2c2022776f726c6421220a"+ // field 49, encoding 2 string "hello, \"world!\"\n"
+			"b304"+ // start group field 70 level 1
+			"ba0408"+"7265717569726564"+ // field 71, encoding 2, string "required"
+			"b404"+ // end group field 70 level 1
+			"d305"+ // start group field 90 level 1
+			"da0508"+"6f7074696f6e616c"+ // field 91, encoding 2, string "optional"
+			"d405"+ // end group field 90 level 1
+			"aa0605"+"6279746573"+ // field 101, encoding 2 string "bytes"
+			"b0063f"+ // field 102, encoding 0, 0x3f zigzag32
+			"b8067f"+ // field 103, encoding 0, 0x7f zigzag64
+			"c506e0ffffff"+ // field 104, encoding 5, -32 fixed32
+			"c906c0ffffffffffffff"+ // field 105, encoding 1, -64 fixed64
+			"ea1207"+"4269676e6f7365"+ // field 301, encoding 2, string "Bignose"
+			"f0123f"+ // field 302, encoding 0, value 63
+			"f8127f"+ // field 303, encoding 0, value 127
+			"8513e0ffffff"+ // field 304, encoding 5, -32 fixed32
+			"8913c0ffffffffffffff"+ // field 305, encoding 1, -64 fixed64
+			"8a1907"+"4269676e6f7365"+ // field 401, encoding 2, string "Bignose"
+			"90193f"+ // field 402, encoding 0, value 63
+			"98197f"+ // field 403, encoding 0, value 127
+			"a519e0ffffff"+ // field 404, encoding 5, -32 fixed32
+			"a919c0ffffffffffffff") // field 405, encoding 1, -64 fixed64
+
+}
+
+// All required fields set, defaults provided, all repeated fields given two values.
+func TestEncodeDecode5(t *testing.T) {
+	pb := initGoTest(true)
+	pb.RepeatedField = []*GoTestField{initGoTestField(), initGoTestField()}
+	pb.F_BoolRepeated = []bool{false, true}
+	pb.F_Int32Repeated = []int32{32, 33}
+	pb.F_Int64Repeated = []int64{64, 65}
+	pb.F_Fixed32Repeated = []uint32{3232, 3333}
+	pb.F_Fixed64Repeated = []uint64{6464, 6565}
+	pb.F_Uint32Repeated = []uint32{323232, 333333}
+	pb.F_Uint64Repeated = []uint64{646464, 656565}
+	pb.F_FloatRepeated = []float32{32., 33.}
+	pb.F_DoubleRepeated = []float64{64., 65.}
+	pb.F_StringRepeated = []string{"hello", "sailor"}
+	pb.F_BytesRepeated = [][]byte{[]byte("big"), []byte("nose")}
+	pb.F_Sint32Repeated = []int32{32, -32}
+	pb.F_Sint64Repeated = []int64{64, -64}
+	pb.F_Sfixed32Repeated = []int32{32, -32}
+	pb.F_Sfixed64Repeated = []int64{64, -64}
+	pb.Repeatedgroup = []*GoTest_RepeatedGroup{initGoTest_RepeatedGroup(), initGoTest_RepeatedGroup()}
+
+	overify(t, pb,
+		"0807"+ // field 1, encoding 0, value 7
+			"220d"+"0a056c6162656c120474797065"+ // field 4, encoding 2 (GoTestField)
+			"2a0d"+"0a056c6162656c120474797065"+ // field 5, encoding 2 (GoTestField)
+			"2a0d"+"0a056c6162656c120474797065"+ // field 5, encoding 2 (GoTestField)
+			"5001"+ // field 10, encoding 0, value 1
+			"5803"+ // field 11, encoding 0, value 3
+			"6006"+ // field 12, encoding 0, value 6
+			"6d20000000"+ // field 13, encoding 5, value 32
+			"714000000000000000"+ // field 14, encoding 1, value 64
+			"78a019"+ // field 15, encoding 0, value 3232
+			"8001c032"+ // field 16, encoding 0, value 6464
+			"8d0100004a45"+ // field 17, encoding 5, value 3232.0
+			"9101000000000040b940"+ // field 18, encoding 1, value 6464.0
+			"9a0106"+"737472696e67"+ // field 19, encoding 2 string "string"
+			"a00100"+ // field 20, encoding 0, value 0
+			"a00101"+ // field 20, encoding 0, value 1
+			"a80120"+ // field 21, encoding 0, value 32
+			"a80121"+ // field 21, encoding 0, value 33
+			"b00140"+ // field 22, encoding 0, value 64
+			"b00141"+ // field 22, encoding 0, value 65
+			"bd01a00c0000"+ // field 23, encoding 5, value 3232
+			"bd01050d0000"+ // field 23, encoding 5, value 3333
+			"c1014019000000000000"+ // field 24, encoding 1, value 6464
+			"c101a519000000000000"+ // field 24, encoding 1, value 6565
+			"c801a0dd13"+ // field 25, encoding 0, value 323232
+			"c80195ac14"+ // field 25, encoding 0, value 333333
+			"d001c0ba27"+ // field 26, encoding 0, value 646464
+			"d001b58928"+ // field 26, encoding 0, value 656565
+			"dd0100000042"+ // field 27, encoding 5, value 32.0
+			"dd0100000442"+ // field 27, encoding 5, value 33.0
+			"e1010000000000005040"+ // field 28, encoding 1, value 64.0
+			"e1010000000000405040"+ // field 28, encoding 1, value 65.0
+			"ea0105"+"68656c6c6f"+ // field 29, encoding 2, string "hello"
+			"ea0106"+"7361696c6f72"+ // field 29, encoding 2, string "sailor"
+			"c00201"+ // field 40, encoding 0, value 1
+			"c80220"+ // field 41, encoding 0, value 32
+			"d00240"+ // field 42, encoding 0, value 64
+			"dd0240010000"+ // field 43, encoding 5, value 320
+			"e1028002000000000000"+ // field 44, encoding 1, value 640
+			"e8028019"+ // field 45, encoding 0, value 3200
+			"f0028032"+ // field 46, encoding 0, value 6400
+			"fd02e0659948"+ // field 47, encoding 5, value 314159.0
+			"81030000000050971041"+ // field 48, encoding 1, value 271828.0
+			"8a0310"+"68656c6c6f2c2022776f726c6421220a"+ // field 49, encoding 2 string "hello, \"world!\"\n"
+			"b304"+ // start group field 70 level 1
+			"ba0408"+"7265717569726564"+ // field 71, encoding 2, string "required"
+			"b404"+ // end group field 70 level 1
+			"8305"+ // start group field 80 level 1
+			"8a0508"+"7265706561746564"+ // field 81, encoding 2, string "repeated"
+			"8405"+ // end group field 80 level 1
+			"8305"+ // start group field 80 level 1
+			"8a0508"+"7265706561746564"+ // field 81, encoding 2, string "repeated"
+			"8405"+ // end group field 80 level 1
+			"aa0605"+"6279746573"+ // field 101, encoding 2 string "bytes"
+			"b0063f"+ // field 102, encoding 0, 0x3f zigzag32
+			"b8067f"+ // field 103, encoding 0, 0x7f zigzag64
+			"c506e0ffffff"+ // field 104, encoding 5, -32 fixed32
+			"c906c0ffffffffffffff"+ // field 105, encoding 1, -64 fixed64
+			"ca0c03"+"626967"+ // field 201, encoding 2, string "big"
+			"ca0c04"+"6e6f7365"+ // field 201, encoding 2, string "nose"
+			"d00c40"+ // field 202, encoding 0, value 32
+			"d00c3f"+ // field 202, encoding 0, value -32
+			"d80c8001"+ // field 203, encoding 0, value 64
+			"d80c7f"+ // field 203, encoding 0, value -64
+			"e50c20000000"+ // field 204, encoding 5, 32 fixed32
+			"e50ce0ffffff"+ // field 204, encoding 5, -32 fixed32
+			"e90c4000000000000000"+ // field 205, encoding 1, 64 fixed64
+			"e90cc0ffffffffffffff"+ // field 205, encoding 1, -64 fixed64
+			"8a1907"+"4269676e6f7365"+ // field 401, encoding 2, string "Bignose"
+			"90193f"+ // field 402, encoding 0, value 63
+			"98197f"+ // field 403, encoding 0, value 127
+			"a519e0ffffff"+ // field 404, encoding 5, -32 fixed32
+			"a919c0ffffffffffffff") // field 405, encoding 1, -64 fixed64
+
+}
+
+// All required fields set, all packed repeated fields given two values.
+func TestEncodeDecode6(t *testing.T) {
+	pb := initGoTest(false)
+	pb.F_BoolRepeatedPacked = []bool{false, true}
+	pb.F_Int32RepeatedPacked = []int32{32, 33}
+	pb.F_Int64RepeatedPacked = []int64{64, 65}
+	pb.F_Fixed32RepeatedPacked = []uint32{3232, 3333}
+	pb.F_Fixed64RepeatedPacked = []uint64{6464, 6565}
+	pb.F_Uint32RepeatedPacked = []uint32{323232, 333333}
+	pb.F_Uint64RepeatedPacked = []uint64{646464, 656565}
+	pb.F_FloatRepeatedPacked = []float32{32., 33.}
+	pb.F_DoubleRepeatedPacked = []float64{64., 65.}
+	pb.F_Sint32RepeatedPacked = []int32{32, -32}
+	pb.F_Sint64RepeatedPacked = []int64{64, -64}
+	pb.F_Sfixed32RepeatedPacked = []int32{32, -32}
+	pb.F_Sfixed64RepeatedPacked = []int64{64, -64}
+
+	overify(t, pb,
+		"0807"+ // field 1, encoding 0, value 7
+			"220d"+"0a056c6162656c120474797065"+ // field 4, encoding 2 (GoTestField)
+			"5001"+ // field 10, encoding 0, value 1
+			"5803"+ // field 11, encoding 0, value 3
+			"6006"+ // field 12, encoding 0, value 6
+			"6d20000000"+ // field 13, encoding 5, value 32
+			"714000000000000000"+ // field 14, encoding 1, value 64
+			"78a019"+ // field 15, encoding 0, value 3232
+			"8001c032"+ // field 16, encoding 0, value 6464
+			"8d0100004a45"+ // field 17, encoding 5, value 3232.0
+			"9101000000000040b940"+ // field 18, encoding 1, value 6464.0
+			"9a0106"+"737472696e67"+ // field 19, encoding 2 string "string"
+			"9203020001"+ // field 50, encoding 2, 2 bytes, value 0, value 1
+			"9a03022021"+ // field 51, encoding 2, 2 bytes, value 32, value 33
+			"a203024041"+ // field 52, encoding 2, 2 bytes, value 64, value 65
+			"aa0308"+ // field 53, encoding 2, 8 bytes
+			"a00c0000050d0000"+ // value 3232, value 3333
+			"b20310"+ // field 54, encoding 2, 16 bytes
+			"4019000000000000a519000000000000"+ // value 6464, value 6565
+			"ba0306"+ // field 55, encoding 2, 6 bytes
+			"a0dd1395ac14"+ // value 323232, value 333333
+			"c20306"+ // field 56, encoding 2, 6 bytes
+			"c0ba27b58928"+ // value 646464, value 656565
+			"ca0308"+ // field 57, encoding 2, 8 bytes
+			"0000004200000442"+ // value 32.0, value 33.0
+			"d20310"+ // field 58, encoding 2, 16 bytes
+			"00000000000050400000000000405040"+ // value 64.0, value 65.0
+			"b304"+ // start group field 70 level 1
+			"ba0408"+"7265717569726564"+ // field 71, encoding 2, string "required"
+			"b404"+ // end group field 70 level 1
+			"aa0605"+"6279746573"+ // field 101, encoding 2 string "bytes"
+			"b0063f"+ // field 102, encoding 0, 0x3f zigzag32
+			"b8067f"+ // field 103, encoding 0, 0x7f zigzag64
+			"c506e0ffffff"+ // field 104, encoding 5, -32 fixed32
+			"c906c0ffffffffffffff"+ // field 105, encoding 1, -64 fixed64
+			"b21f02"+ // field 502, encoding 2, 2 bytes
+			"403f"+ // value 32, value -32
+			"ba1f03"+ // field 503, encoding 2, 3 bytes
+			"80017f"+ // value 64, value -64
+			"c21f08"+ // field 504, encoding 2, 8 bytes
+			"20000000e0ffffff"+ // value 32, value -32
+			"ca1f10"+ // field 505, encoding 2, 16 bytes
+			"4000000000000000c0ffffffffffffff") // value 64, value -64
+
+}
+
+// Test that we can encode empty bytes fields.
+func TestEncodeDecodeBytes1(t *testing.T) {
+	pb := initGoTest(false)
+
+	// Create our bytes
+	pb.F_BytesRequired = []byte{}
+	pb.F_BytesRepeated = [][]byte{{}}
+	pb.F_BytesOptional = []byte{}
+
+	d, err := Marshal(pb)
+	if err != nil {
+		t.Error(err)
+	}
+
+	pbd := new(GoTest)
+	if err := Unmarshal(d, pbd); err != nil {
+		t.Error(err)
+	}
+
+	if pbd.F_BytesRequired == nil || len(pbd.F_BytesRequired) != 0 {
+		t.Error("required empty bytes field is incorrect")
+	}
+	if pbd.F_BytesRepeated == nil || len(pbd.F_BytesRepeated) == 1 && pbd.F_BytesRepeated[0] == nil {
+		t.Error("repeated empty bytes field is incorrect")
+	}
+	if pbd.F_BytesOptional == nil || len(pbd.F_BytesOptional) != 0 {
+		t.Error("optional empty bytes field is incorrect")
+	}
+}
+
+// Test that we encode nil-valued fields of a repeated bytes field correctly.
+// Since entries in a repeated field cannot be nil, nil must mean empty value.
+func TestEncodeDecodeBytes2(t *testing.T) {
+	pb := initGoTest(false)
+
+	// Create our bytes
+	pb.F_BytesRepeated = [][]byte{nil}
+
+	d, err := Marshal(pb)
+	if err != nil {
+		t.Error(err)
+	}
+
+	pbd := new(GoTest)
+	if err := Unmarshal(d, pbd); err != nil {
+		t.Error(err)
+	}
+
+	if len(pbd.F_BytesRepeated) != 1 || pbd.F_BytesRepeated[0] == nil {
+		t.Error("Unexpected value for repeated bytes field")
+	}
+}
+
+// All required fields set, defaults provided, all repeated fields given two values.
+func TestSkippingUnrecognizedFields(t *testing.T) {
+	o := old()
+	pb := initGoTestField()
+
+	// Marshal it normally.
+	o.Marshal(pb)
+
+	// Now new a GoSkipTest record.
+	skip := &GoSkipTest{
+		SkipInt32:   Int32(32),
+		SkipFixed32: Uint32(3232),
+		SkipFixed64: Uint64(6464),
+		SkipString:  String("skipper"),
+		Skipgroup: &GoSkipTest_SkipGroup{
+			GroupInt32:  Int32(75),
+			GroupString: String("wxyz"),
+		},
+	}
+
+	// Marshal it into same buffer.
+	o.Marshal(skip)
+
+	pbd := new(GoTestField)
+	o.Unmarshal(pbd)
+
+	// The __unrecognized field should be a marshaling of GoSkipTest
+	skipd := new(GoSkipTest)
+
+	o.SetBuf(pbd.XXX_unrecognized)
+	o.Unmarshal(skipd)
+
+	if *skipd.SkipInt32 != *skip.SkipInt32 {
+		t.Error("skip int32", skipd.SkipInt32)
+	}
+	if *skipd.SkipFixed32 != *skip.SkipFixed32 {
+		t.Error("skip fixed32", skipd.SkipFixed32)
+	}
+	if *skipd.SkipFixed64 != *skip.SkipFixed64 {
+		t.Error("skip fixed64", skipd.SkipFixed64)
+	}
+	if *skipd.SkipString != *skip.SkipString {
+		t.Error("skip string", *skipd.SkipString)
+	}
+	if *skipd.Skipgroup.GroupInt32 != *skip.Skipgroup.GroupInt32 {
+		t.Error("skip group int32", skipd.Skipgroup.GroupInt32)
+	}
+	if *skipd.Skipgroup.GroupString != *skip.Skipgroup.GroupString {
+		t.Error("skip group string", *skipd.Skipgroup.GroupString)
+	}
+}
+
+// Check that unrecognized fields of a submessage are preserved.
+func TestSubmessageUnrecognizedFields(t *testing.T) {
+	nm := &NewMessage{
+		Nested: &NewMessage_Nested{
+			Name:      String("Nigel"),
+			FoodGroup: String("carbs"),
+		},
+	}
+	b, err := Marshal(nm)
+	if err != nil {
+		t.Fatalf("Marshal of NewMessage: %v", err)
+	}
+
+	// Unmarshal into an OldMessage.
+	om := new(OldMessage)
+	if err := Unmarshal(b, om); err != nil {
+		t.Fatalf("Unmarshal to OldMessage: %v", err)
+	}
+	exp := &OldMessage{
+		Nested: &OldMessage_Nested{
+			Name: String("Nigel"),
+			// normal protocol buffer users should not do this
+			XXX_unrecognized: []byte("\x12\x05carbs"),
+		},
+	}
+	if !Equal(om, exp) {
+		t.Errorf("om = %v, want %v", om, exp)
+	}
+
+	// Clone the OldMessage.
+	om = Clone(om).(*OldMessage)
+	if !Equal(om, exp) {
+		t.Errorf("Clone(om) = %v, want %v", om, exp)
+	}
+
+	// Marshal the OldMessage, then unmarshal it into an empty NewMessage.
+	if b, err = Marshal(om); err != nil {
+		t.Fatalf("Marshal of OldMessage: %v", err)
+	}
+	t.Logf("Marshal(%v) -> %q", om, b)
+	nm2 := new(NewMessage)
+	if err := Unmarshal(b, nm2); err != nil {
+		t.Fatalf("Unmarshal to NewMessage: %v", err)
+	}
+	if !Equal(nm, nm2) {
+		t.Errorf("NewMessage round-trip: %v => %v", nm, nm2)
+	}
+}
+
+// Check that an int32 field can be upgraded to an int64 field.
+func TestNegativeInt32(t *testing.T) {
+	om := &OldMessage{
+		Num: Int32(-1),
+	}
+	b, err := Marshal(om)
+	if err != nil {
+		t.Fatalf("Marshal of OldMessage: %v", err)
+	}
+
+	// Check the size. It should be 11 bytes;
+	// 1 for the field/wire type, and 10 for the negative number.
+	if len(b) != 11 {
+		t.Errorf("%v marshaled as %q, wanted 11 bytes", om, b)
+	}
+
+	// Unmarshal into a NewMessage.
+	nm := new(NewMessage)
+	if err := Unmarshal(b, nm); err != nil {
+		t.Fatalf("Unmarshal to NewMessage: %v", err)
+	}
+	want := &NewMessage{
+		Num: Int64(-1),
+	}
+	if !Equal(nm, want) {
+		t.Errorf("nm = %v, want %v", nm, want)
+	}
+}
+
+// Check that we can grow an array (repeated field) to have many elements.
+// This test doesn't depend only on our encoding; for variety, it makes sure
+// we create, encode, and decode the correct contents explicitly.  It's therefore
+// a bit messier.
+// This test also uses (and hence tests) the Marshal/Unmarshal functions
+// instead of the methods.
+func TestBigRepeated(t *testing.T) {
+	pb := initGoTest(true)
+
+	// Create the arrays
+	const N = 50 // Internally the library starts much smaller.
+	pb.Repeatedgroup = make([]*GoTest_RepeatedGroup, N)
+	pb.F_Sint64Repeated = make([]int64, N)
+	pb.F_Sint32Repeated = make([]int32, N)
+	pb.F_BytesRepeated = make([][]byte, N)
+	pb.F_StringRepeated = make([]string, N)
+	pb.F_DoubleRepeated = make([]float64, N)
+	pb.F_FloatRepeated = make([]float32, N)
+	pb.F_Uint64Repeated = make([]uint64, N)
+	pb.F_Uint32Repeated = make([]uint32, N)
+	pb.F_Fixed64Repeated = make([]uint64, N)
+	pb.F_Fixed32Repeated = make([]uint32, N)
+	pb.F_Int64Repeated = make([]int64, N)
+	pb.F_Int32Repeated = make([]int32, N)
+	pb.F_BoolRepeated = make([]bool, N)
+	pb.RepeatedField = make([]*GoTestField, N)
+
+	// Fill in the arrays with checkable values.
+	igtf := initGoTestField()
+	igtrg := initGoTest_RepeatedGroup()
+	for i := 0; i < N; i++ {
+		pb.Repeatedgroup[i] = igtrg
+		pb.F_Sint64Repeated[i] = int64(i)
+		pb.F_Sint32Repeated[i] = int32(i)
+		s := fmt.Sprint(i)
+		pb.F_BytesRepeated[i] = []byte(s)
+		pb.F_StringRepeated[i] = s
+		pb.F_DoubleRepeated[i] = float64(i)
+		pb.F_FloatRepeated[i] = float32(i)
+		pb.F_Uint64Repeated[i] = uint64(i)
+		pb.F_Uint32Repeated[i] = uint32(i)
+		pb.F_Fixed64Repeated[i] = uint64(i)
+		pb.F_Fixed32Repeated[i] = uint32(i)
+		pb.F_Int64Repeated[i] = int64(i)
+		pb.F_Int32Repeated[i] = int32(i)
+		pb.F_BoolRepeated[i] = i%2 == 0
+		pb.RepeatedField[i] = igtf
+	}
+
+	// Marshal.
+	buf, _ := Marshal(pb)
+
+	// Now test Unmarshal by recreating the original buffer.
+	pbd := new(GoTest)
+	Unmarshal(buf, pbd)
+
+	// Check the checkable values
+	for i := uint64(0); i < N; i++ {
+		if pbd.Repeatedgroup[i] == nil { // TODO: more checking?
+			t.Error("pbd.Repeatedgroup bad")
+		}
+		if x := uint64(pbd.F_Sint64Repeated[i]); x != i {
+			t.Error("pbd.F_Sint64Repeated bad", x, i)
+		}
+		if x := uint64(pbd.F_Sint32Repeated[i]); x != i {
+			t.Error("pbd.F_Sint32Repeated bad", x, i)
+		}
+		s := fmt.Sprint(i)
+		equalbytes(pbd.F_BytesRepeated[i], []byte(s), t)
+		if pbd.F_StringRepeated[i] != s {
+			t.Error("pbd.F_Sint32Repeated bad", pbd.F_StringRepeated[i], i)
+		}
+		if x := uint64(pbd.F_DoubleRepeated[i]); x != i {
+			t.Error("pbd.F_DoubleRepeated bad", x, i)
+		}
+		if x := uint64(pbd.F_FloatRepeated[i]); x != i {
+			t.Error("pbd.F_FloatRepeated bad", x, i)
+		}
+		if x := pbd.F_Uint64Repeated[i]; x != i {
+			t.Error("pbd.F_Uint64Repeated bad", x, i)
+		}
+		if x := uint64(pbd.F_Uint32Repeated[i]); x != i {
+			t.Error("pbd.F_Uint32Repeated bad", x, i)
+		}
+		if x := pbd.F_Fixed64Repeated[i]; x != i {
+			t.Error("pbd.F_Fixed64Repeated bad", x, i)
+		}
+		if x := uint64(pbd.F_Fixed32Repeated[i]); x != i {
+			t.Error("pbd.F_Fixed32Repeated bad", x, i)
+		}
+		if x := uint64(pbd.F_Int64Repeated[i]); x != i {
+			t.Error("pbd.F_Int64Repeated bad", x, i)
+		}
+		if x := uint64(pbd.F_Int32Repeated[i]); x != i {
+			t.Error("pbd.F_Int32Repeated bad", x, i)
+		}
+		if x := pbd.F_BoolRepeated[i]; x != (i%2 == 0) {
+			t.Error("pbd.F_BoolRepeated bad", x, i)
+		}
+		if pbd.RepeatedField[i] == nil { // TODO: more checking?
+			t.Error("pbd.RepeatedField bad")
+		}
+	}
+}
+
+func TestBadWireTypeUnknown(t *testing.T) {
+	var b []byte
+	fmt.Sscanf("0a01780d00000000080b101612036161611521000000202c220362626225370000002203636363214200000000000000584d5a036464645900000000000056405d63000000", "%x", &b)
+
+	m := new(MyMessage)
+	if err := Unmarshal(b, m); err != nil {
+		t.Errorf("unexpected Unmarshal error: %v", err)
+	}
+
+	var unknown []byte
+	fmt.Sscanf("0a01780d0000000010161521000000202c2537000000214200000000000000584d5a036464645d63000000", "%x", &unknown)
+	if !bytes.Equal(m.XXX_unrecognized, unknown) {
+		t.Errorf("unknown bytes mismatch:\ngot  %x\nwant %x", m.XXX_unrecognized, unknown)
+	}
+	DiscardUnknown(m)
+
+	want := &MyMessage{Count: Int32(11), Name: String("aaa"), Pet: []string{"bbb", "ccc"}, Bigfloat: Float64(88)}
+	if !Equal(m, want) {
+		t.Errorf("message mismatch:\ngot  %v\nwant %v", m, want)
+	}
+}
+
+func encodeDecode(t *testing.T, in, out Message, msg string) {
+	buf, err := Marshal(in)
+	if err != nil {
+		t.Fatalf("failed marshaling %v: %v", msg, err)
+	}
+	if err := Unmarshal(buf, out); err != nil {
+		t.Fatalf("failed unmarshaling %v: %v", msg, err)
+	}
+}
+
+func TestPackedNonPackedDecoderSwitching(t *testing.T) {
+	np, p := new(NonPackedTest), new(PackedTest)
+
+	// non-packed -> packed
+	np.A = []int32{0, 1, 1, 2, 3, 5}
+	encodeDecode(t, np, p, "non-packed -> packed")
+	if !reflect.DeepEqual(np.A, p.B) {
+		t.Errorf("failed non-packed -> packed; np.A=%+v, p.B=%+v", np.A, p.B)
+	}
+
+	// packed -> non-packed
+	np.Reset()
+	p.B = []int32{3, 1, 4, 1, 5, 9}
+	encodeDecode(t, p, np, "packed -> non-packed")
+	if !reflect.DeepEqual(p.B, np.A) {
+		t.Errorf("failed packed -> non-packed; p.B=%+v, np.A=%+v", p.B, np.A)
+	}
+}
+
+func TestProto1RepeatedGroup(t *testing.T) {
+	pb := &MessageList{
+		Message: []*MessageList_Message{
+			{
+				Name:  String("blah"),
+				Count: Int32(7),
+			},
+			// NOTE: pb.Message[1] is a nil
+			nil,
+		},
+	}
+
+	o := old()
+	err := o.Marshal(pb)
+	if err == nil || !strings.Contains(err.Error(), "repeated field Message has nil") {
+		t.Fatalf("unexpected or no error when marshaling: %v", err)
+	}
+}
+
+// Test that enums work.  Checks for a bug introduced by making enums
+// named types instead of int32: newInt32FromUint64 would crash with
+// a type mismatch in reflect.PointTo.
+func TestEnum(t *testing.T) {
+	pb := new(GoEnum)
+	pb.Foo = FOO_FOO1.Enum()
+	o := old()
+	if err := o.Marshal(pb); err != nil {
+		t.Fatal("error encoding enum:", err)
+	}
+	pb1 := new(GoEnum)
+	if err := o.Unmarshal(pb1); err != nil {
+		t.Fatal("error decoding enum:", err)
+	}
+	if *pb1.Foo != FOO_FOO1 {
+		t.Error("expected 7 but got ", *pb1.Foo)
+	}
+}
+
+// Enum types have String methods. Check that enum fields can be printed.
+// We don't care what the value actually is, just as long as it doesn't crash.
+func TestPrintingNilEnumFields(t *testing.T) {
+	pb := new(GoEnum)
+	_ = fmt.Sprintf("%+v", pb)
+}
+
+// Verify that absent required fields cause Marshal/Unmarshal to return errors.
+func TestRequiredFieldEnforcement(t *testing.T) {
+	pb := new(GoTestField)
+	_, err := Marshal(pb)
+	if err == nil {
+		t.Error("marshal: expected error, got nil")
+	} else if _, ok := err.(*RequiredNotSetError); !ok || !strings.Contains(err.Error(), "Label") {
+		t.Errorf("marshal: bad error type: %v", err)
+	}
+
+	// A slightly sneaky, yet valid, proto. It encodes the same required field twice,
+	// so simply counting the required fields is insufficient.
+	// field 1, encoding 2, value "hi"
+	buf := []byte("\x0A\x02hi\x0A\x02hi")
+	err = Unmarshal(buf, pb)
+	if err == nil {
+		t.Error("unmarshal: expected error, got nil")
+	} else if _, ok := err.(*RequiredNotSetError); !ok || !strings.Contains(err.Error(), "Type") && !strings.Contains(err.Error(), "{Unknown}") {
+		// TODO: remove unknown cases once we commit to the new unmarshaler.
+		t.Errorf("unmarshal: bad error type: %v", err)
+	}
+}
+
+// Verify that absent required fields in groups cause Marshal/Unmarshal to return errors.
+func TestRequiredFieldEnforcementGroups(t *testing.T) {
+	pb := &GoTestRequiredGroupField{Group: &GoTestRequiredGroupField_Group{}}
+	if _, err := Marshal(pb); err == nil {
+		t.Error("marshal: expected error, got nil")
+	} else if _, ok := err.(*RequiredNotSetError); !ok || !strings.Contains(err.Error(), "Group.Field") {
+		t.Errorf("marshal: bad error type: %v", err)
+	}
+
+	buf := []byte{11, 12}
+	if err := Unmarshal(buf, pb); err == nil {
+		t.Error("unmarshal: expected error, got nil")
+	} else if _, ok := err.(*RequiredNotSetError); !ok || !strings.Contains(err.Error(), "Group.Field") && !strings.Contains(err.Error(), "Group.{Unknown}") {
+		t.Errorf("unmarshal: bad error type: %v", err)
+	}
+}
+
+func TestTypedNilMarshal(t *testing.T) {
+	// A typed nil should return ErrNil and not crash.
+	{
+		var m *GoEnum
+		if _, err := Marshal(m); err != ErrNil {
+			t.Errorf("Marshal(%#v): got %v, want ErrNil", m, err)
+		}
+	}
+
+	{
+		m := &Communique{Union: &Communique_Msg{nil}}
+		if _, err := Marshal(m); err == nil || err == ErrNil {
+			t.Errorf("Marshal(%#v): got %v, want errOneofHasNil", m, err)
+		}
+	}
+}
+
+// A type that implements the Marshaler interface, but is not nillable.
+type nonNillableInt uint64
+
+func (nni nonNillableInt) Marshal() ([]byte, error) {
+	return EncodeVarint(uint64(nni)), nil
+}
+
+type NNIMessage struct {
+	nni nonNillableInt
+}
+
+func (*NNIMessage) Reset()         {}
+func (*NNIMessage) String() string { return "" }
+func (*NNIMessage) ProtoMessage()  {}
+
+type NMMessage struct{}
+
+func (*NMMessage) Reset()         {}
+func (*NMMessage) String() string { return "" }
+func (*NMMessage) ProtoMessage()  {}
+
+// Verify a type that uses the Marshaler interface, but has a nil pointer.
+func TestNilMarshaler(t *testing.T) {
+	// Try a struct with a Marshaler field that is nil.
+	// It should be directly marshable.
+	nmm := new(NMMessage)
+	if _, err := Marshal(nmm); err != nil {
+		t.Error("unexpected error marshaling nmm: ", err)
+	}
+
+	// Try a struct with a Marshaler field that is not nillable.
+	nnim := new(NNIMessage)
+	nnim.nni = 7
+	var _ Marshaler = nnim.nni // verify it is truly a Marshaler
+	if _, err := Marshal(nnim); err != nil {
+		t.Error("unexpected error marshaling nnim: ", err)
+	}
+}
+
+func TestAllSetDefaults(t *testing.T) {
+	// Exercise SetDefaults with all scalar field types.
+	m := &Defaults{
+		// NaN != NaN, so override that here.
+		F_Nan: Float32(1.7),
+	}
+	expected := &Defaults{
+		F_Bool:    Bool(true),
+		F_Int32:   Int32(32),
+		F_Int64:   Int64(64),
+		F_Fixed32: Uint32(320),
+		F_Fixed64: Uint64(640),
+		F_Uint32:  Uint32(3200),
+		F_Uint64:  Uint64(6400),
+		F_Float:   Float32(314159),
+		F_Double:  Float64(271828),
+		F_String:  String(`hello, "world!"` + "\n"),
+		F_Bytes:   []byte("Bignose"),
+		F_Sint32:  Int32(-32),
+		F_Sint64:  Int64(-64),
+		F_Enum:    Defaults_GREEN.Enum(),
+		F_Pinf:    Float32(float32(math.Inf(1))),
+		F_Ninf:    Float32(float32(math.Inf(-1))),
+		F_Nan:     Float32(1.7),
+		StrZero:   String(""),
+	}
+	SetDefaults(m)
+	if !Equal(m, expected) {
+		t.Errorf("SetDefaults failed\n got %v\nwant %v", m, expected)
+	}
+}
+
+func TestSetDefaultsWithSetField(t *testing.T) {
+	// Check that a set value is not overridden.
+	m := &Defaults{
+		F_Int32: Int32(12),
+	}
+	SetDefaults(m)
+	if v := m.GetF_Int32(); v != 12 {
+		t.Errorf("m.FInt32 = %v, want 12", v)
+	}
+}
+
+func TestSetDefaultsWithSubMessage(t *testing.T) {
+	m := &OtherMessage{
+		Key: Int64(123),
+		Inner: &InnerMessage{
+			Host: String("gopher"),
+		},
+	}
+	expected := &OtherMessage{
+		Key: Int64(123),
+		Inner: &InnerMessage{
+			Host: String("gopher"),
+			Port: Int32(4000),
+		},
+	}
+	SetDefaults(m)
+	if !Equal(m, expected) {
+		t.Errorf("\n got %v\nwant %v", m, expected)
+	}
+}
+
+func TestSetDefaultsWithRepeatedSubMessage(t *testing.T) {
+	m := &MyMessage{
+		RepInner: []*InnerMessage{{}},
+	}
+	expected := &MyMessage{
+		RepInner: []*InnerMessage{{
+			Port: Int32(4000),
+		}},
+	}
+	SetDefaults(m)
+	if !Equal(m, expected) {
+		t.Errorf("\n got %v\nwant %v", m, expected)
+	}
+}
+
+func TestSetDefaultWithRepeatedNonMessage(t *testing.T) {
+	m := &MyMessage{
+		Pet: []string{"turtle", "wombat"},
+	}
+	expected := Clone(m)
+	SetDefaults(m)
+	if !Equal(m, expected) {
+		t.Errorf("\n got %v\nwant %v", m, expected)
+	}
+}
+
+func TestMaximumTagNumber(t *testing.T) {
+	m := &MaxTag{
+		LastField: String("natural goat essence"),
+	}
+	buf, err := Marshal(m)
+	if err != nil {
+		t.Fatalf("proto.Marshal failed: %v", err)
+	}
+	m2 := new(MaxTag)
+	if err := Unmarshal(buf, m2); err != nil {
+		t.Fatalf("proto.Unmarshal failed: %v", err)
+	}
+	if got, want := m2.GetLastField(), *m.LastField; got != want {
+		t.Errorf("got %q, want %q", got, want)
+	}
+}
+
+func TestJSON(t *testing.T) {
+	m := &MyMessage{
+		Count: Int32(4),
+		Pet:   []string{"bunny", "kitty"},
+		Inner: &InnerMessage{
+			Host: String("cauchy"),
+		},
+		Bikeshed: MyMessage_GREEN.Enum(),
+	}
+	const expected = `{"count":4,"pet":["bunny","kitty"],"inner":{"host":"cauchy"},"bikeshed":1}`
+
+	b, err := json.Marshal(m)
+	if err != nil {
+		t.Fatalf("json.Marshal failed: %v", err)
+	}
+	s := string(b)
+	if s != expected {
+		t.Errorf("got  %s\nwant %s", s, expected)
+	}
+
+	received := new(MyMessage)
+	if err := json.Unmarshal(b, received); err != nil {
+		t.Fatalf("json.Unmarshal failed: %v", err)
+	}
+	if !Equal(received, m) {
+		t.Fatalf("got %s, want %s", received, m)
+	}
+
+	// Test unmarshaling of JSON with symbolic enum name.
+	const old = `{"count":4,"pet":["bunny","kitty"],"inner":{"host":"cauchy"},"bikeshed":"GREEN"}`
+	received.Reset()
+	if err := json.Unmarshal([]byte(old), received); err != nil {
+		t.Fatalf("json.Unmarshal failed: %v", err)
+	}
+	if !Equal(received, m) {
+		t.Fatalf("got %s, want %s", received, m)
+	}
+}
+
+func TestBadWireType(t *testing.T) {
+	b := []byte{7<<3 | 6} // field 7, wire type 6
+	pb := new(OtherMessage)
+	if err := Unmarshal(b, pb); err == nil {
+		t.Errorf("Unmarshal did not fail")
+	} else if !strings.Contains(err.Error(), "unknown wire type") {
+		t.Errorf("wrong error: %v", err)
+	}
+}
+
+func TestBytesWithInvalidLength(t *testing.T) {
+	// If a byte sequence has an invalid (negative) length, Unmarshal should not panic.
+	b := []byte{2<<3 | WireBytes, 0xff, 0xff, 0xff, 0xff, 0xff, 0}
+	Unmarshal(b, new(MyMessage))
+}
+
+func TestLengthOverflow(t *testing.T) {
+	// Overflowing a length should not panic.
+	b := []byte{2<<3 | WireBytes, 1, 1, 3<<3 | WireBytes, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x01}
+	Unmarshal(b, new(MyMessage))
+}
+
+func TestVarintOverflow(t *testing.T) {
+	// Overflowing a 64-bit length should not be allowed.
+	b := []byte{1<<3 | WireVarint, 0x01, 3<<3 | WireBytes, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x01}
+	if err := Unmarshal(b, new(MyMessage)); err == nil {
+		t.Fatalf("Overflowed uint64 length without error")
+	}
+}
+
+func TestBytesWithInvalidLengthInGroup(t *testing.T) {
+	// Overflowing a 64-bit length should not be allowed.
+	b := []byte{0xbb, 0x30, 0xb2, 0x30, 0xb0, 0xb2, 0x83, 0xf1, 0xb0, 0xb2, 0xef, 0xbf, 0xbd, 0x01}
+	if err := Unmarshal(b, new(MyMessage)); err == nil {
+		t.Fatalf("Overflowed uint64 length without error")
+	}
+}
+
+func TestUnmarshalFuzz(t *testing.T) {
+	const N = 1000
+	seed := time.Now().UnixNano()
+	t.Logf("RNG seed is %d", seed)
+	rng := rand.New(rand.NewSource(seed))
+	buf := make([]byte, 20)
+	for i := 0; i < N; i++ {
+		for j := range buf {
+			buf[j] = byte(rng.Intn(256))
+		}
+		fuzzUnmarshal(t, buf)
+	}
+}
+
+func TestMergeMessages(t *testing.T) {
+	pb := &MessageList{Message: []*MessageList_Message{{Name: String("x"), Count: Int32(1)}}}
+	data, err := Marshal(pb)
+	if err != nil {
+		t.Fatalf("Marshal: %v", err)
+	}
+
+	pb1 := new(MessageList)
+	if err := Unmarshal(data, pb1); err != nil {
+		t.Fatalf("first Unmarshal: %v", err)
+	}
+	if err := Unmarshal(data, pb1); err != nil {
+		t.Fatalf("second Unmarshal: %v", err)
+	}
+	if len(pb1.Message) != 1 {
+		t.Errorf("two Unmarshals produced %d Messages, want 1", len(pb1.Message))
+	}
+
+	pb2 := new(MessageList)
+	if err := UnmarshalMerge(data, pb2); err != nil {
+		t.Fatalf("first UnmarshalMerge: %v", err)
+	}
+	if err := UnmarshalMerge(data, pb2); err != nil {
+		t.Fatalf("second UnmarshalMerge: %v", err)
+	}
+	if len(pb2.Message) != 2 {
+		t.Errorf("two UnmarshalMerges produced %d Messages, want 2", len(pb2.Message))
+	}
+}
+
+func TestExtensionMarshalOrder(t *testing.T) {
+	m := &MyMessage{Count: Int(123)}
+	if err := SetExtension(m, E_Ext_More, &Ext{Data: String("alpha")}); err != nil {
+		t.Fatalf("SetExtension: %v", err)
+	}
+	if err := SetExtension(m, E_Ext_Text, String("aleph")); err != nil {
+		t.Fatalf("SetExtension: %v", err)
+	}
+	if err := SetExtension(m, E_Ext_Number, Int32(1)); err != nil {
+		t.Fatalf("SetExtension: %v", err)
+	}
+
+	// Serialize m several times, and check we get the same bytes each time.
+	var orig []byte
+	for i := 0; i < 100; i++ {
+		b, err := Marshal(m)
+		if err != nil {
+			t.Fatalf("Marshal: %v", err)
+		}
+		if i == 0 {
+			orig = b
+			continue
+		}
+		if !bytes.Equal(b, orig) {
+			t.Errorf("Bytes differ on attempt #%d", i)
+		}
+	}
+}
+
+func TestExtensionMapFieldMarshalDeterministic(t *testing.T) {
+	m := &MyMessage{Count: Int(123)}
+	if err := SetExtension(m, E_Ext_More, &Ext{MapField: map[int32]int32{1: 1, 2: 2, 3: 3, 4: 4}}); err != nil {
+		t.Fatalf("SetExtension: %v", err)
+	}
+	marshal := func(m Message) []byte {
+		var b Buffer
+		b.SetDeterministic(true)
+		if err := b.Marshal(m); err != nil {
+			t.Fatalf("Marshal failed: %v", err)
+		}
+		return b.Bytes()
+	}
+
+	want := marshal(m)
+	for i := 0; i < 100; i++ {
+		if got := marshal(m); !bytes.Equal(got, want) {
+			t.Errorf("Marshal produced inconsistent output with determinism enabled (pass %d).\n got %v\nwant %v", i, got, want)
+		}
+	}
+}
+
+// Many extensions, because small maps might not iterate differently on each iteration.
+var exts = []*ExtensionDesc{
+	E_X201,
+	E_X202,
+	E_X203,
+	E_X204,
+	E_X205,
+	E_X206,
+	E_X207,
+	E_X208,
+	E_X209,
+	E_X210,
+	E_X211,
+	E_X212,
+	E_X213,
+	E_X214,
+	E_X215,
+	E_X216,
+	E_X217,
+	E_X218,
+	E_X219,
+	E_X220,
+	E_X221,
+	E_X222,
+	E_X223,
+	E_X224,
+	E_X225,
+	E_X226,
+	E_X227,
+	E_X228,
+	E_X229,
+	E_X230,
+	E_X231,
+	E_X232,
+	E_X233,
+	E_X234,
+	E_X235,
+	E_X236,
+	E_X237,
+	E_X238,
+	E_X239,
+	E_X240,
+	E_X241,
+	E_X242,
+	E_X243,
+	E_X244,
+	E_X245,
+	E_X246,
+	E_X247,
+	E_X248,
+	E_X249,
+	E_X250,
+}
+
+func TestMessageSetMarshalOrder(t *testing.T) {
+	m := &MyMessageSet{}
+	for _, x := range exts {
+		if err := SetExtension(m, x, &Empty{}); err != nil {
+			t.Fatalf("SetExtension: %v", err)
+		}
+	}
+
+	buf, err := Marshal(m)
+	if err != nil {
+		t.Fatalf("Marshal: %v", err)
+	}
+
+	// Serialize m several times, and check we get the same bytes each time.
+	for i := 0; i < 10; i++ {
+		b1, err := Marshal(m)
+		if err != nil {
+			t.Fatalf("Marshal: %v", err)
+		}
+		if !bytes.Equal(b1, buf) {
+			t.Errorf("Bytes differ on re-Marshal #%d", i)
+		}
+
+		m2 := &MyMessageSet{}
+		if err := Unmarshal(buf, m2); err != nil {
+			t.Errorf("Unmarshal: %v", err)
+		}
+		b2, err := Marshal(m2)
+		if err != nil {
+			t.Errorf("re-Marshal: %v", err)
+		}
+		if !bytes.Equal(b2, buf) {
+			t.Errorf("Bytes differ on round-trip #%d", i)
+		}
+	}
+}
+
+func TestUnmarshalMergesMessages(t *testing.T) {
+	// If a nested message occurs twice in the input,
+	// the fields should be merged when decoding.
+	a := &OtherMessage{
+		Key: Int64(123),
+		Inner: &InnerMessage{
+			Host: String("polhode"),
+			Port: Int32(1234),
+		},
+	}
+	aData, err := Marshal(a)
+	if err != nil {
+		t.Fatalf("Marshal(a): %v", err)
+	}
+	b := &OtherMessage{
+		Weight: Float32(1.2),
+		Inner: &InnerMessage{
+			Host:      String("herpolhode"),
+			Connected: Bool(true),
+		},
+	}
+	bData, err := Marshal(b)
+	if err != nil {
+		t.Fatalf("Marshal(b): %v", err)
+	}
+	want := &OtherMessage{
+		Key:    Int64(123),
+		Weight: Float32(1.2),
+		Inner: &InnerMessage{
+			Host:      String("herpolhode"),
+			Port:      Int32(1234),
+			Connected: Bool(true),
+		},
+	}
+	got := new(OtherMessage)
+	if err := Unmarshal(append(aData, bData...), got); err != nil {
+		t.Fatalf("Unmarshal: %v", err)
+	}
+	if !Equal(got, want) {
+		t.Errorf("\n got %v\nwant %v", got, want)
+	}
+}
+
+func TestUnmarshalMergesGroups(t *testing.T) {
+	// If a nested group occurs twice in the input,
+	// the fields should be merged when decoding.
+	a := &GroupNew{
+		G: &GroupNew_G{
+			X: Int32(7),
+			Y: Int32(8),
+		},
+	}
+	aData, err := Marshal(a)
+	if err != nil {
+		t.Fatalf("Marshal(a): %v", err)
+	}
+	b := &GroupNew{
+		G: &GroupNew_G{
+			X: Int32(9),
+		},
+	}
+	bData, err := Marshal(b)
+	if err != nil {
+		t.Fatalf("Marshal(b): %v", err)
+	}
+	want := &GroupNew{
+		G: &GroupNew_G{
+			X: Int32(9),
+			Y: Int32(8),
+		},
+	}
+	got := new(GroupNew)
+	if err := Unmarshal(append(aData, bData...), got); err != nil {
+		t.Fatalf("Unmarshal: %v", err)
+	}
+	if !Equal(got, want) {
+		t.Errorf("\n got %v\nwant %v", got, want)
+	}
+}
+
+func TestEncodingSizes(t *testing.T) {
+	tests := []struct {
+		m Message
+		n int
+	}{
+		{&Defaults{F_Int32: Int32(math.MaxInt32)}, 6},
+		{&Defaults{F_Int32: Int32(math.MinInt32)}, 11},
+		{&Defaults{F_Uint32: Uint32(uint32(math.MaxInt32) + 1)}, 6},
+		{&Defaults{F_Uint32: Uint32(math.MaxUint32)}, 6},
+	}
+	for _, test := range tests {
+		b, err := Marshal(test.m)
+		if err != nil {
+			t.Errorf("Marshal(%v): %v", test.m, err)
+			continue
+		}
+		if len(b) != test.n {
+			t.Errorf("Marshal(%v) yielded %d bytes, want %d bytes", test.m, len(b), test.n)
+		}
+	}
+}
+
+func TestRequiredNotSetError(t *testing.T) {
+	pb := initGoTest(false)
+	pb.RequiredField.Label = nil
+	pb.F_Int32Required = nil
+	pb.F_Int64Required = nil
+
+	expected := "0807" + // field 1, encoding 0, value 7
+		"2206" + "120474797065" + // field 4, encoding 2 (GoTestField)
+		"5001" + // field 10, encoding 0, value 1
+		"6d20000000" + // field 13, encoding 5, value 0x20
+		"714000000000000000" + // field 14, encoding 1, value 0x40
+		"78a019" + // field 15, encoding 0, value 0xca0 = 3232
+		"8001c032" + // field 16, encoding 0, value 0x1940 = 6464
+		"8d0100004a45" + // field 17, encoding 5, value 3232.0
+		"9101000000000040b940" + // field 18, encoding 1, value 6464.0
+		"9a0106" + "737472696e67" + // field 19, encoding 2, string "string"
+		"b304" + // field 70, encoding 3, start group
+		"ba0408" + "7265717569726564" + // field 71, encoding 2, string "required"
+		"b404" + // field 70, encoding 4, end group
+		"aa0605" + "6279746573" + // field 101, encoding 2, string "bytes"
+		"b0063f" + // field 102, encoding 0, 0x3f zigzag32
+		"b8067f" + // field 103, encoding 0, 0x7f zigzag64
+		"c506e0ffffff" + // field 104, encoding 5, -32 fixed32
+		"c906c0ffffffffffffff" // field 105, encoding 1, -64 fixed64
+
+	o := old()
+	bytes, err := Marshal(pb)
+	if _, ok := err.(*RequiredNotSetError); !ok {
+		fmt.Printf("marshal-1 err = %v, want *RequiredNotSetError", err)
+		o.DebugPrint("", bytes)
+		t.Fatalf("expected = %s", expected)
+	}
+	if !strings.Contains(err.Error(), "RequiredField.Label") {
+		t.Errorf("marshal-1 wrong err msg: %v", err)
+	}
+	if !equal(bytes, expected, t) {
+		o.DebugPrint("neq 1", bytes)
+		t.Fatalf("expected = %s", expected)
+	}
+
+	// Now test Unmarshal by recreating the original buffer.
+	pbd := new(GoTest)
+	err = Unmarshal(bytes, pbd)
+	if _, ok := err.(*RequiredNotSetError); !ok {
+		t.Fatalf("unmarshal err = %v, want *RequiredNotSetError", err)
+		o.DebugPrint("", bytes)
+		t.Fatalf("string = %s", expected)
+	}
+	if !strings.Contains(err.Error(), "RequiredField.Label") && !strings.Contains(err.Error(), "RequiredField.{Unknown}") {
+		t.Errorf("unmarshal wrong err msg: %v", err)
+	}
+	bytes, err = Marshal(pbd)
+	if _, ok := err.(*RequiredNotSetError); !ok {
+		t.Errorf("marshal-2 err = %v, want *RequiredNotSetError", err)
+		o.DebugPrint("", bytes)
+		t.Fatalf("string = %s", expected)
+	}
+	if !strings.Contains(err.Error(), "RequiredField.Label") {
+		t.Errorf("marshal-2 wrong err msg: %v", err)
+	}
+	if !equal(bytes, expected, t) {
+		o.DebugPrint("neq 2", bytes)
+		t.Fatalf("string = %s", expected)
+	}
+}
+
+func TestRequiredNotSetErrorWithBadWireTypes(t *testing.T) {
+	// Required field expects a varint, and properly found a varint.
+	if err := Unmarshal([]byte{0x08, 0x00}, new(GoEnum)); err != nil {
+		t.Errorf("Unmarshal = %v, want nil", err)
+	}
+	// Required field expects a varint, but found a fixed32 instead.
+	if err := Unmarshal([]byte{0x0d, 0x00, 0x00, 0x00, 0x00}, new(GoEnum)); err == nil {
+		t.Errorf("Unmarshal = nil, want RequiredNotSetError")
+	}
+	// Required field expects a varint, and found both a varint and fixed32 (ignored).
+	m := new(GoEnum)
+	if err := Unmarshal([]byte{0x08, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00}, m); err != nil {
+		t.Errorf("Unmarshal = %v, want nil", err)
+	}
+	if !bytes.Equal(m.XXX_unrecognized, []byte{0x0d, 0x00, 0x00, 0x00, 0x00}) {
+		t.Errorf("expected fixed32 to appear as unknown bytes: %x", m.XXX_unrecognized)
+	}
+}
+
+func fuzzUnmarshal(t *testing.T, data []byte) {
+	defer func() {
+		if e := recover(); e != nil {
+			t.Errorf("These bytes caused a panic: %+v", data)
+			t.Logf("Stack:\n%s", debug.Stack())
+			t.FailNow()
+		}
+	}()
+
+	pb := new(MyMessage)
+	Unmarshal(data, pb)
+}
+
+func TestMapFieldMarshal(t *testing.T) {
+	m := &MessageWithMap{
+		NameMapping: map[int32]string{
+			1: "Rob",
+			4: "Ian",
+			8: "Dave",
+		},
+	}
+	b, err := Marshal(m)
+	if err != nil {
+		t.Fatalf("Marshal: %v", err)
+	}
+
+	// b should be the concatenation of these three byte sequences in some order.
+	parts := []string{
+		"\n\a\b\x01\x12\x03Rob",
+		"\n\a\b\x04\x12\x03Ian",
+		"\n\b\b\x08\x12\x04Dave",
+	}
+	ok := false
+	for i := range parts {
+		for j := range parts {
+			if j == i {
+				continue
+			}
+			for k := range parts {
+				if k == i || k == j {
+					continue
+				}
+				try := parts[i] + parts[j] + parts[k]
+				if bytes.Equal(b, []byte(try)) {
+					ok = true
+					break
+				}
+			}
+		}
+	}
+	if !ok {
+		t.Fatalf("Incorrect Marshal output.\n got %q\nwant %q (or a permutation of that)", b, parts[0]+parts[1]+parts[2])
+	}
+	t.Logf("FYI b: %q", b)
+
+	(new(Buffer)).DebugPrint("Dump of b", b)
+}
+
+func TestMapFieldDeterministicMarshal(t *testing.T) {
+	m := &MessageWithMap{
+		NameMapping: map[int32]string{
+			1: "Rob",
+			4: "Ian",
+			8: "Dave",
+		},
+	}
+
+	marshal := func(m Message) []byte {
+		var b Buffer
+		b.SetDeterministic(true)
+		if err := b.Marshal(m); err != nil {
+			t.Fatalf("Marshal failed: %v", err)
+		}
+		return b.Bytes()
+	}
+
+	want := marshal(m)
+	for i := 0; i < 10; i++ {
+		if got := marshal(m); !bytes.Equal(got, want) {
+			t.Errorf("Marshal produced inconsistent output with determinism enabled (pass %d).\n got %v\nwant %v", i, got, want)
+		}
+	}
+}
+
+func TestMapFieldRoundTrips(t *testing.T) {
+	m := &MessageWithMap{
+		NameMapping: map[int32]string{
+			1: "Rob",
+			4: "Ian",
+			8: "Dave",
+		},
+		MsgMapping: map[int64]*FloatingPoint{
+			0x7001: {F: Float64(2.0)},
+		},
+		ByteMapping: map[bool][]byte{
+			false: []byte("that's not right!"),
+			true:  []byte("aye, 'tis true!"),
+		},
+	}
+	b, err := Marshal(m)
+	if err != nil {
+		t.Fatalf("Marshal: %v", err)
+	}
+	t.Logf("FYI b: %q", b)
+	m2 := new(MessageWithMap)
+	if err := Unmarshal(b, m2); err != nil {
+		t.Fatalf("Unmarshal: %v", err)
+	}
+	if !Equal(m, m2) {
+		t.Errorf("Map did not survive a round trip.\ninitial: %v\n  final: %v", m, m2)
+	}
+}
+
+func TestMapFieldWithNil(t *testing.T) {
+	m1 := &MessageWithMap{
+		MsgMapping: map[int64]*FloatingPoint{
+			1: nil,
+		},
+	}
+	b, err := Marshal(m1)
+	if err != nil {
+		t.Fatalf("Marshal: %v", err)
+	}
+	m2 := new(MessageWithMap)
+	if err := Unmarshal(b, m2); err != nil {
+		t.Fatalf("Unmarshal: %v, got these bytes: %v", err, b)
+	}
+	if v, ok := m2.MsgMapping[1]; !ok {
+		t.Error("msg_mapping[1] not present")
+	} else if v != nil {
+		t.Errorf("msg_mapping[1] not nil: %v", v)
+	}
+}
+
+func TestMapFieldWithNilBytes(t *testing.T) {
+	m1 := &MessageWithMap{
+		ByteMapping: map[bool][]byte{
+			false: {},
+			true:  nil,
+		},
+	}
+	n := Size(m1)
+	b, err := Marshal(m1)
+	if err != nil {
+		t.Fatalf("Marshal: %v", err)
+	}
+	if n != len(b) {
+		t.Errorf("Size(m1) = %d; want len(Marshal(m1)) = %d", n, len(b))
+	}
+	m2 := new(MessageWithMap)
+	if err := Unmarshal(b, m2); err != nil {
+		t.Fatalf("Unmarshal: %v, got these bytes: %v", err, b)
+	}
+	if v, ok := m2.ByteMapping[false]; !ok {
+		t.Error("byte_mapping[false] not present")
+	} else if len(v) != 0 {
+		t.Errorf("byte_mapping[false] not empty: %#v", v)
+	}
+	if v, ok := m2.ByteMapping[true]; !ok {
+		t.Error("byte_mapping[true] not present")
+	} else if len(v) != 0 {
+		t.Errorf("byte_mapping[true] not empty: %#v", v)
+	}
+}
+
+func TestDecodeMapFieldMissingKey(t *testing.T) {
+	b := []byte{
+		0x0A, 0x03, // message, tag 1 (name_mapping), of length 3 bytes
+		// no key
+		0x12, 0x01, 0x6D, // string value of length 1 byte, value "m"
+	}
+	got := &MessageWithMap{}
+	err := Unmarshal(b, got)
+	if err != nil {
+		t.Fatalf("failed to marshal map with missing key: %v", err)
+	}
+	want := &MessageWithMap{NameMapping: map[int32]string{0: "m"}}
+	if !Equal(got, want) {
+		t.Errorf("Unmarshaled map with no key was not as expected. got: %v, want %v", got, want)
+	}
+}
+
+func TestDecodeMapFieldMissingValue(t *testing.T) {
+	b := []byte{
+		0x0A, 0x02, // message, tag 1 (name_mapping), of length 2 bytes
+		0x08, 0x01, // varint key, value 1
+		// no value
+	}
+	got := &MessageWithMap{}
+	err := Unmarshal(b, got)
+	if err != nil {
+		t.Fatalf("failed to marshal map with missing value: %v", err)
+	}
+	want := &MessageWithMap{NameMapping: map[int32]string{1: ""}}
+	if !Equal(got, want) {
+		t.Errorf("Unmarshaled map with no value was not as expected. got: %v, want %v", got, want)
+	}
+}
+
+func TestOneof(t *testing.T) {
+	m := &Communique{}
+	b, err := Marshal(m)
+	if err != nil {
+		t.Fatalf("Marshal of empty message with oneof: %v", err)
+	}
+	if len(b) != 0 {
+		t.Errorf("Marshal of empty message yielded too many bytes: %v", b)
+	}
+
+	m = &Communique{
+		Union: &Communique_Name{"Barry"},
+	}
+
+	// Round-trip.
+	b, err = Marshal(m)
+	if err != nil {
+		t.Fatalf("Marshal of message with oneof: %v", err)
+	}
+	if len(b) != 7 { // name tag/wire (1) + name len (1) + name (5)
+		t.Errorf("Incorrect marshal of message with oneof: %v", b)
+	}
+	m.Reset()
+	if err := Unmarshal(b, m); err != nil {
+		t.Fatalf("Unmarshal of message with oneof: %v", err)
+	}
+	if x, ok := m.Union.(*Communique_Name); !ok || x.Name != "Barry" {
+		t.Errorf("After round trip, Union = %+v", m.Union)
+	}
+	if name := m.GetName(); name != "Barry" {
+		t.Errorf("After round trip, GetName = %q, want %q", name, "Barry")
+	}
+
+	// Let's try with a message in the oneof.
+	m.Union = &Communique_Msg{&Strings{StringField: String("deep deep string")}}
+	b, err = Marshal(m)
+	if err != nil {
+		t.Fatalf("Marshal of message with oneof set to message: %v", err)
+	}
+	if len(b) != 20 { // msg tag/wire (1) + msg len (1) + msg (1 + 1 + 16)
+		t.Errorf("Incorrect marshal of message with oneof set to message: %v", b)
+	}
+	m.Reset()
+	if err := Unmarshal(b, m); err != nil {
+		t.Fatalf("Unmarshal of message with oneof set to message: %v", err)
+	}
+	ss, ok := m.Union.(*Communique_Msg)
+	if !ok || ss.Msg.GetStringField() != "deep deep string" {
+		t.Errorf("After round trip with oneof set to message, Union = %+v", m.Union)
+	}
+}
+
+func TestOneofNilBytes(t *testing.T) {
+	// A oneof with nil byte slice should marshal to tag + 0 (size), with no error.
+	m := &Communique{Union: &Communique_Data{Data: nil}}
+	b, err := Marshal(m)
+	if err != nil {
+		t.Fatalf("Marshal failed: %v", err)
+	}
+	want := []byte{
+		7<<3 | 2, // tag 7, wire type 2
+		0,        // size
+	}
+	if !bytes.Equal(b, want) {
+		t.Errorf("Wrong result of Marshal: got %x, want %x", b, want)
+	}
+}
+
+func TestInefficientPackedBool(t *testing.T) {
+	// https://github.com/golang/protobuf/issues/76
+	inp := []byte{
+		0x12, 0x02, // 0x12 = 2<<3|2; 2 bytes
+		// Usually a bool should take a single byte,
+		// but it is permitted to be any varint.
+		0xb9, 0x30,
+	}
+	if err := Unmarshal(inp, new(MoreRepeated)); err != nil {
+		t.Error(err)
+	}
+}
+
+// Make sure pure-reflect-based implementation handles
+// []int32-[]enum conversion correctly.
+func TestRepeatedEnum2(t *testing.T) {
+	pb := &RepeatedEnum{
+		Color: []RepeatedEnum_Color{RepeatedEnum_RED},
+	}
+	b, err := Marshal(pb)
+	if err != nil {
+		t.Fatalf("Marshal failed: %v", err)
+	}
+	x := new(RepeatedEnum)
+	err = Unmarshal(b, x)
+	if err != nil {
+		t.Fatalf("Unmarshal failed: %v", err)
+	}
+	if !Equal(pb, x) {
+		t.Errorf("Incorrect result: want: %v got: %v", pb, x)
+	}
+}
+
+// TestConcurrentMarshal makes sure that it is safe to marshal
+// same message in multiple goroutines concurrently.
+func TestConcurrentMarshal(t *testing.T) {
+	pb := initGoTest(true)
+	const N = 100
+	b := make([][]byte, N)
+
+	var wg sync.WaitGroup
+	for i := 0; i < N; i++ {
+		wg.Add(1)
+		go func(i int) {
+			defer wg.Done()
+			var err error
+			b[i], err = Marshal(pb)
+			if err != nil {
+				t.Errorf("marshal error: %v", err)
+			}
+		}(i)
+	}
+
+	wg.Wait()
+	for i := 1; i < N; i++ {
+		if !bytes.Equal(b[0], b[i]) {
+			t.Errorf("concurrent marshal result not same: b[0] = %v, b[%d] = %v", b[0], i, b[i])
+		}
+	}
+}
+
+func TestInvalidUTF8(t *testing.T) {
+	const invalidUTF8 = "\xde\xad\xbe\xef\x80\x00\xff"
+	tests := []struct {
+		label  string
+		proto2 Message
+		proto3 Message
+		want   []byte
+	}{{
+		label:  "Scalar",
+		proto2: &TestUTF8{Scalar: String(invalidUTF8)},
+		proto3: &pb3.TestUTF8{Scalar: invalidUTF8},
+		want:   []byte{0x0a, 0x07, 0xde, 0xad, 0xbe, 0xef, 0x80, 0x00, 0xff},
+	}, {
+		label:  "Vector",
+		proto2: &TestUTF8{Vector: []string{invalidUTF8}},
+		proto3: &pb3.TestUTF8{Vector: []string{invalidUTF8}},
+		want:   []byte{0x12, 0x07, 0xde, 0xad, 0xbe, 0xef, 0x80, 0x00, 0xff},
+	}, {
+		label:  "Oneof",
+		proto2: &TestUTF8{Oneof: &TestUTF8_Field{invalidUTF8}},
+		proto3: &pb3.TestUTF8{Oneof: &pb3.TestUTF8_Field{invalidUTF8}},
+		want:   []byte{0x1a, 0x07, 0xde, 0xad, 0xbe, 0xef, 0x80, 0x00, 0xff},
+	}, {
+		label:  "MapKey",
+		proto2: &TestUTF8{MapKey: map[string]int64{invalidUTF8: 0}},
+		proto3: &pb3.TestUTF8{MapKey: map[string]int64{invalidUTF8: 0}},
+		want:   []byte{0x22, 0x0b, 0x0a, 0x07, 0xde, 0xad, 0xbe, 0xef, 0x80, 0x00, 0xff, 0x10, 0x00},
+	}, {
+		label:  "MapValue",
+		proto2: &TestUTF8{MapValue: map[int64]string{0: invalidUTF8}},
+		proto3: &pb3.TestUTF8{MapValue: map[int64]string{0: invalidUTF8}},
+		want:   []byte{0x2a, 0x0b, 0x08, 0x00, 0x12, 0x07, 0xde, 0xad, 0xbe, 0xef, 0x80, 0x00, 0xff},
+	}}
+
+	for _, tt := range tests {
+		// Proto2 should not validate UTF-8.
+		b, err := Marshal(tt.proto2)
+		if err != nil {
+			t.Errorf("Marshal(proto2.%s) = %v, want nil", tt.label, err)
+		}
+		if !bytes.Equal(b, tt.want) {
+			t.Errorf("Marshal(proto2.%s) = %x, want %x", tt.label, b, tt.want)
+		}
+
+		m := Clone(tt.proto2)
+		m.Reset()
+		if err = Unmarshal(tt.want, m); err != nil {
+			t.Errorf("Unmarshal(proto2.%s) = %v, want nil", tt.label, err)
+		}
+		if !Equal(m, tt.proto2) {
+			t.Errorf("proto2.%s: output mismatch:\ngot  %v\nwant %v", tt.label, m, tt.proto2)
+		}
+
+		// Proto3 should validate UTF-8.
+		b, err = Marshal(tt.proto3)
+		if err == nil {
+			t.Errorf("Marshal(proto3.%s) = %v, want non-nil", tt.label, err)
+		}
+		if !bytes.Equal(b, tt.want) {
+			t.Errorf("Marshal(proto3.%s) = %x, want %x", tt.label, b, tt.want)
+		}
+
+		m = Clone(tt.proto3)
+		m.Reset()
+		err = Unmarshal(tt.want, m)
+		if err == nil {
+			t.Errorf("Unmarshal(proto3.%s) = %v, want non-nil", tt.label, err)
+		}
+		if !Equal(m, tt.proto3) {
+			t.Errorf("proto3.%s: output mismatch:\ngot  %v\nwant %v", tt.label, m, tt.proto2)
+		}
+	}
+}
+
+func TestRequired(t *testing.T) {
+	// The F_BoolRequired field appears after all of the required fields.
+	// It should still be handled even after multiple required field violations.
+	m := &GoTest{F_BoolRequired: Bool(true)}
+	got, err := Marshal(m)
+	if _, ok := err.(*RequiredNotSetError); !ok {
+		t.Errorf("Marshal() = %v, want RequiredNotSetError error", err)
+	}
+	if want := []byte{0x50, 0x01}; !bytes.Equal(got, want) {
+		t.Errorf("Marshal() = %x, want %x", got, want)
+	}
+
+	m = new(GoTest)
+	err = Unmarshal(got, m)
+	if _, ok := err.(*RequiredNotSetError); !ok {
+		t.Errorf("Marshal() = %v, want RequiredNotSetError error", err)
+	}
+	if !m.GetF_BoolRequired() {
+		t.Error("m.F_BoolRequired = false, want true")
+	}
+}
+
+// Benchmarks
+
+func testMsg() *GoTest {
+	pb := initGoTest(true)
+	const N = 1000 // Internally the library starts much smaller.
+	pb.F_Int32Repeated = make([]int32, N)
+	pb.F_DoubleRepeated = make([]float64, N)
+	for i := 0; i < N; i++ {
+		pb.F_Int32Repeated[i] = int32(i)
+		pb.F_DoubleRepeated[i] = float64(i)
+	}
+	return pb
+}
+
+func bytesMsg() *GoTest {
+	pb := initGoTest(true)
+	buf := make([]byte, 4000)
+	for i := range buf {
+		buf[i] = byte(i)
+	}
+	pb.F_BytesDefaulted = buf
+	return pb
+}
+
+func benchmarkMarshal(b *testing.B, pb Message, marshal func(Message) ([]byte, error)) {
+	d, _ := marshal(pb)
+	b.SetBytes(int64(len(d)))
+	b.ResetTimer()
+	for i := 0; i < b.N; i++ {
+		marshal(pb)
+	}
+}
+
+func benchmarkBufferMarshal(b *testing.B, pb Message) {
+	p := NewBuffer(nil)
+	benchmarkMarshal(b, pb, func(pb0 Message) ([]byte, error) {
+		p.Reset()
+		err := p.Marshal(pb0)
+		return p.Bytes(), err
+	})
+}
+
+func benchmarkSize(b *testing.B, pb Message) {
+	benchmarkMarshal(b, pb, func(pb0 Message) ([]byte, error) {
+		Size(pb)
+		return nil, nil
+	})
+}
+
+func newOf(pb Message) Message {
+	in := reflect.ValueOf(pb)
+	if in.IsNil() {
+		return pb
+	}
+	return reflect.New(in.Type().Elem()).Interface().(Message)
+}
+
+func benchmarkUnmarshal(b *testing.B, pb Message, unmarshal func([]byte, Message) error) {
+	d, _ := Marshal(pb)
+	b.SetBytes(int64(len(d)))
+	pbd := newOf(pb)
+
+	b.ResetTimer()
+	for i := 0; i < b.N; i++ {
+		unmarshal(d, pbd)
+	}
+}
+
+func benchmarkBufferUnmarshal(b *testing.B, pb Message) {
+	p := NewBuffer(nil)
+	benchmarkUnmarshal(b, pb, func(d []byte, pb0 Message) error {
+		p.SetBuf(d)
+		return p.Unmarshal(pb0)
+	})
+}
+
+// Benchmark{Marshal,BufferMarshal,Size,Unmarshal,BufferUnmarshal}{,Bytes}
+
+func BenchmarkMarshal(b *testing.B) {
+	benchmarkMarshal(b, testMsg(), Marshal)
+}
+
+func BenchmarkBufferMarshal(b *testing.B) {
+	benchmarkBufferMarshal(b, testMsg())
+}
+
+func BenchmarkSize(b *testing.B) {
+	benchmarkSize(b, testMsg())
+}
+
+func BenchmarkUnmarshal(b *testing.B) {
+	benchmarkUnmarshal(b, testMsg(), Unmarshal)
+}
+
+func BenchmarkBufferUnmarshal(b *testing.B) {
+	benchmarkBufferUnmarshal(b, testMsg())
+}
+
+func BenchmarkMarshalBytes(b *testing.B) {
+	benchmarkMarshal(b, bytesMsg(), Marshal)
+}
+
+func BenchmarkBufferMarshalBytes(b *testing.B) {
+	benchmarkBufferMarshal(b, bytesMsg())
+}
+
+func BenchmarkSizeBytes(b *testing.B) {
+	benchmarkSize(b, bytesMsg())
+}
+
+func BenchmarkUnmarshalBytes(b *testing.B) {
+	benchmarkUnmarshal(b, bytesMsg(), Unmarshal)
+}
+
+func BenchmarkBufferUnmarshalBytes(b *testing.B) {
+	benchmarkBufferUnmarshal(b, bytesMsg())
+}
+
+func BenchmarkUnmarshalUnrecognizedFields(b *testing.B) {
+	b.StopTimer()
+	pb := initGoTestField()
+	skip := &GoSkipTest{
+		SkipInt32:   Int32(32),
+		SkipFixed32: Uint32(3232),
+		SkipFixed64: Uint64(6464),
+		SkipString:  String("skipper"),
+		Skipgroup: &GoSkipTest_SkipGroup{
+			GroupInt32:  Int32(75),
+			GroupString: String("wxyz"),
+		},
+	}
+
+	pbd := new(GoTestField)
+	p := NewBuffer(nil)
+	p.Marshal(pb)
+	p.Marshal(skip)
+	p2 := NewBuffer(nil)
+
+	b.StartTimer()
+	for i := 0; i < b.N; i++ {
+		p2.SetBuf(p.Bytes())
+		p2.Unmarshal(pbd)
+	}
+}
+
+// TestRace tests whether there are races among the different marshalers.
+func TestRace(t *testing.T) {
+	m := &descriptorpb.FileDescriptorProto{
+		Options: &descriptorpb.FileOptions{
+			GoPackage: String("path/to/my/package"),
+		},
+	}
+
+	wg := &sync.WaitGroup{}
+	defer wg.Wait()
+
+	wg.Add(1)
+	go func() {
+		defer wg.Done()
+		Marshal(m)
+	}()
+
+	wg.Add(1)
+	go func() {
+		defer wg.Done()
+		(&jsonpb.Marshaler{}).MarshalToString(m)
+	}()
+
+	wg.Add(1)
+	go func() {
+		defer wg.Done()
+		m.String()
+	}()
+}
diff --git a/proto/any_test.go b/proto/any_test.go
new file mode 100644
index 0000000..56fc97c
--- /dev/null
+++ b/proto/any_test.go
@@ -0,0 +1,300 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2016 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto_test
+
+import (
+	"strings"
+	"testing"
+
+	"github.com/golang/protobuf/proto"
+
+	pb "github.com/golang/protobuf/proto/proto3_proto"
+	testpb "github.com/golang/protobuf/proto/test_proto"
+	anypb "github.com/golang/protobuf/ptypes/any"
+)
+
+var (
+	expandedMarshaler        = proto.TextMarshaler{ExpandAny: true}
+	expandedCompactMarshaler = proto.TextMarshaler{Compact: true, ExpandAny: true}
+)
+
+// anyEqual reports whether two messages which may be google.protobuf.Any or may
+// contain google.protobuf.Any fields are equal. We can't use proto.Equal for
+// comparison, because semantically equivalent messages may be marshaled to
+// binary in different tag order. Instead, trust that TextMarshaler with
+// ExpandAny option works and compare the text marshaling results.
+func anyEqual(got, want proto.Message) bool {
+	// if messages are proto.Equal, no need to marshal.
+	if proto.Equal(got, want) {
+		return true
+	}
+	g := expandedMarshaler.Text(got)
+	w := expandedMarshaler.Text(want)
+	return g == w
+}
+
+type golden struct {
+	m    proto.Message
+	t, c string
+}
+
+var goldenMessages = makeGolden()
+
+func makeGolden() []golden {
+	nested := &pb.Nested{Bunny: "Monty"}
+	nb, err := proto.Marshal(nested)
+	if err != nil {
+		panic(err)
+	}
+	m1 := &pb.Message{
+		Name:        "David",
+		ResultCount: 47,
+		Anything:    &anypb.Any{TypeUrl: "type.googleapis.com/" + proto.MessageName(nested), Value: nb},
+	}
+	m2 := &pb.Message{
+		Name:        "David",
+		ResultCount: 47,
+		Anything:    &anypb.Any{TypeUrl: "http://[::1]/type.googleapis.com/" + proto.MessageName(nested), Value: nb},
+	}
+	m3 := &pb.Message{
+		Name:        "David",
+		ResultCount: 47,
+		Anything:    &anypb.Any{TypeUrl: `type.googleapis.com/"/` + proto.MessageName(nested), Value: nb},
+	}
+	m4 := &pb.Message{
+		Name:        "David",
+		ResultCount: 47,
+		Anything:    &anypb.Any{TypeUrl: "type.googleapis.com/a/path/" + proto.MessageName(nested), Value: nb},
+	}
+	m5 := &anypb.Any{TypeUrl: "type.googleapis.com/" + proto.MessageName(nested), Value: nb}
+
+	any1 := &testpb.MyMessage{Count: proto.Int32(47), Name: proto.String("David")}
+	proto.SetExtension(any1, testpb.E_Ext_More, &testpb.Ext{Data: proto.String("foo")})
+	proto.SetExtension(any1, testpb.E_Ext_Text, proto.String("bar"))
+	any1b, err := proto.Marshal(any1)
+	if err != nil {
+		panic(err)
+	}
+	any2 := &testpb.MyMessage{Count: proto.Int32(42), Bikeshed: testpb.MyMessage_GREEN.Enum(), RepBytes: [][]byte{[]byte("roboto")}}
+	proto.SetExtension(any2, testpb.E_Ext_More, &testpb.Ext{Data: proto.String("baz")})
+	any2b, err := proto.Marshal(any2)
+	if err != nil {
+		panic(err)
+	}
+	m6 := &pb.Message{
+		Name:        "David",
+		ResultCount: 47,
+		Anything:    &anypb.Any{TypeUrl: "type.googleapis.com/" + proto.MessageName(any1), Value: any1b},
+		ManyThings: []*anypb.Any{
+			&anypb.Any{TypeUrl: "type.googleapis.com/" + proto.MessageName(any2), Value: any2b},
+			&anypb.Any{TypeUrl: "type.googleapis.com/" + proto.MessageName(any1), Value: any1b},
+		},
+	}
+
+	const (
+		m1Golden = `
+name: "David"
+result_count: 47
+anything: <
+  [type.googleapis.com/proto3_proto.Nested]: <
+    bunny: "Monty"
+  >
+>
+`
+		m2Golden = `
+name: "David"
+result_count: 47
+anything: <
+  ["http://[::1]/type.googleapis.com/proto3_proto.Nested"]: <
+    bunny: "Monty"
+  >
+>
+`
+		m3Golden = `
+name: "David"
+result_count: 47
+anything: <
+  ["type.googleapis.com/\"/proto3_proto.Nested"]: <
+    bunny: "Monty"
+  >
+>
+`
+		m4Golden = `
+name: "David"
+result_count: 47
+anything: <
+  [type.googleapis.com/a/path/proto3_proto.Nested]: <
+    bunny: "Monty"
+  >
+>
+`
+		m5Golden = `
+[type.googleapis.com/proto3_proto.Nested]: <
+  bunny: "Monty"
+>
+`
+		m6Golden = `
+name: "David"
+result_count: 47
+anything: <
+  [type.googleapis.com/test_proto.MyMessage]: <
+    count: 47
+    name: "David"
+    [test_proto.Ext.more]: <
+      data: "foo"
+    >
+    [test_proto.Ext.text]: "bar"
+  >
+>
+many_things: <
+  [type.googleapis.com/test_proto.MyMessage]: <
+    count: 42
+    bikeshed: GREEN
+    rep_bytes: "roboto"
+    [test_proto.Ext.more]: <
+      data: "baz"
+    >
+  >
+>
+many_things: <
+  [type.googleapis.com/test_proto.MyMessage]: <
+    count: 47
+    name: "David"
+    [test_proto.Ext.more]: <
+      data: "foo"
+    >
+    [test_proto.Ext.text]: "bar"
+  >
+>
+`
+	)
+	return []golden{
+		{m1, strings.TrimSpace(m1Golden) + "\n", strings.TrimSpace(compact(m1Golden)) + " "},
+		{m2, strings.TrimSpace(m2Golden) + "\n", strings.TrimSpace(compact(m2Golden)) + " "},
+		{m3, strings.TrimSpace(m3Golden) + "\n", strings.TrimSpace(compact(m3Golden)) + " "},
+		{m4, strings.TrimSpace(m4Golden) + "\n", strings.TrimSpace(compact(m4Golden)) + " "},
+		{m5, strings.TrimSpace(m5Golden) + "\n", strings.TrimSpace(compact(m5Golden)) + " "},
+		{m6, strings.TrimSpace(m6Golden) + "\n", strings.TrimSpace(compact(m6Golden)) + " "},
+	}
+}
+
+func TestMarshalGolden(t *testing.T) {
+	for _, tt := range goldenMessages {
+		if got, want := expandedMarshaler.Text(tt.m), tt.t; got != want {
+			t.Errorf("message %v: got:\n%s\nwant:\n%s", tt.m, got, want)
+		}
+		if got, want := expandedCompactMarshaler.Text(tt.m), tt.c; got != want {
+			t.Errorf("message %v: got:\n`%s`\nwant:\n`%s`", tt.m, got, want)
+		}
+	}
+}
+
+func TestUnmarshalGolden(t *testing.T) {
+	for _, tt := range goldenMessages {
+		want := tt.m
+		got := proto.Clone(tt.m)
+		got.Reset()
+		if err := proto.UnmarshalText(tt.t, got); err != nil {
+			t.Errorf("failed to unmarshal\n%s\nerror: %v", tt.t, err)
+		}
+		if !anyEqual(got, want) {
+			t.Errorf("message:\n%s\ngot:\n%s\nwant:\n%s", tt.t, got, want)
+		}
+		got.Reset()
+		if err := proto.UnmarshalText(tt.c, got); err != nil {
+			t.Errorf("failed to unmarshal\n%s\nerror: %v", tt.c, err)
+		}
+		if !anyEqual(got, want) {
+			t.Errorf("message:\n%s\ngot:\n%s\nwant:\n%s", tt.c, got, want)
+		}
+	}
+}
+
+func TestMarshalUnknownAny(t *testing.T) {
+	m := &pb.Message{
+		Anything: &anypb.Any{
+			TypeUrl: "foo",
+			Value:   []byte("bar"),
+		},
+	}
+	want := `anything: <
+  type_url: "foo"
+  value: "bar"
+>
+`
+	got := expandedMarshaler.Text(m)
+	if got != want {
+		t.Errorf("got\n`%s`\nwant\n`%s`", got, want)
+	}
+}
+
+func TestAmbiguousAny(t *testing.T) {
+	pb := &anypb.Any{}
+	err := proto.UnmarshalText(`
+	type_url: "ttt/proto3_proto.Nested"
+	value: "\n\x05Monty"
+	`, pb)
+	t.Logf("result: %v (error: %v)", expandedMarshaler.Text(pb), err)
+	if err != nil {
+		t.Errorf("failed to parse ambiguous Any message: %v", err)
+	}
+}
+
+func TestUnmarshalOverwriteAny(t *testing.T) {
+	pb := &anypb.Any{}
+	err := proto.UnmarshalText(`
+  [type.googleapis.com/a/path/proto3_proto.Nested]: <
+    bunny: "Monty"
+  >
+  [type.googleapis.com/a/path/proto3_proto.Nested]: <
+    bunny: "Rabbit of Caerbannog"
+  >
+	`, pb)
+	want := `line 7: Any message unpacked multiple times, or "type_url" already set`
+	if err.Error() != want {
+		t.Errorf("incorrect error.\nHave: %v\nWant: %v", err.Error(), want)
+	}
+}
+
+func TestUnmarshalAnyMixAndMatch(t *testing.T) {
+	pb := &anypb.Any{}
+	err := proto.UnmarshalText(`
+	value: "\n\x05Monty"
+  [type.googleapis.com/a/path/proto3_proto.Nested]: <
+    bunny: "Rabbit of Caerbannog"
+  >
+	`, pb)
+	want := `line 5: Any message unpacked multiple times, or "value" already set`
+	if err.Error() != want {
+		t.Errorf("incorrect error.\nHave: %v\nWant: %v", err.Error(), want)
+	}
+}
diff --git a/proto/bench_test.go b/proto/bench_test.go
deleted file mode 100644
index 55bce59..0000000
--- a/proto/bench_test.go
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package proto_test
-
-import (
-	"flag"
-	"fmt"
-	"reflect"
-	"testing"
-
-	"google.golang.org/protobuf/proto"
-)
-
-// The results of these microbenchmarks are unlikely to correspond well
-// to real world peformance. They are mainly useful as a quick check to
-// detect unexpected regressions and for profiling specific cases.
-
-var (
-	allowPartial = flag.Bool("allow_partial", false, "set AllowPartial")
-)
-
-// BenchmarkEncode benchmarks encoding all the test messages.
-func BenchmarkEncode(b *testing.B) {
-	for _, test := range testValidMessages {
-		for _, want := range test.decodeTo {
-			opts := proto.MarshalOptions{AllowPartial: *allowPartial}
-			b.Run(fmt.Sprintf("%s (%T)", test.desc, want), func(b *testing.B) {
-				b.RunParallel(func(pb *testing.PB) {
-					for pb.Next() {
-						_, err := opts.Marshal(want)
-						if err != nil && !test.partial {
-							b.Fatal(err)
-						}
-					}
-				})
-			})
-		}
-	}
-}
-
-// BenchmarkDecode benchmarks decoding all the test messages.
-func BenchmarkDecode(b *testing.B) {
-	for _, test := range testValidMessages {
-		for _, want := range test.decodeTo {
-			opts := proto.UnmarshalOptions{AllowPartial: *allowPartial}
-			b.Run(fmt.Sprintf("%s (%T)", test.desc, want), func(b *testing.B) {
-				b.RunParallel(func(pb *testing.PB) {
-					for pb.Next() {
-						m := reflect.New(reflect.TypeOf(want).Elem()).Interface().(proto.Message)
-						err := opts.Unmarshal(test.wire, m)
-						if err != nil && !test.partial {
-							b.Fatal(err)
-						}
-					}
-				})
-			})
-		}
-	}
-}
diff --git a/proto/checkinit.go b/proto/checkinit.go
deleted file mode 100644
index 3e9a6a2..0000000
--- a/proto/checkinit.go
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package proto
-
-import (
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/runtime/protoiface"
-)
-
-// CheckInitialized returns an error if any required fields in m are not set.
-func CheckInitialized(m Message) error {
-	// Treat a nil message interface as an "untyped" empty message,
-	// which we assume to have no required fields.
-	if m == nil {
-		return nil
-	}
-
-	return checkInitialized(m.ProtoReflect())
-}
-
-// CheckInitialized returns an error if any required fields in m are not set.
-func checkInitialized(m protoreflect.Message) error {
-	if methods := protoMethods(m); methods != nil && methods.CheckInitialized != nil {
-		_, err := methods.CheckInitialized(protoiface.CheckInitializedInput{
-			Message: m,
-		})
-		return err
-	}
-	return checkInitializedSlow(m)
-}
-
-func checkInitializedSlow(m protoreflect.Message) error {
-	md := m.Descriptor()
-	fds := md.Fields()
-	for i, nums := 0, md.RequiredNumbers(); i < nums.Len(); i++ {
-		fd := fds.ByNumber(nums.Get(i))
-		if !m.Has(fd) {
-			return errors.RequiredNotSet(string(fd.FullName()))
-		}
-	}
-	var err error
-	m.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {
-		switch {
-		case fd.IsList():
-			if fd.Message() == nil {
-				return true
-			}
-			for i, list := 0, v.List(); i < list.Len() && err == nil; i++ {
-				err = checkInitialized(list.Get(i).Message())
-			}
-		case fd.IsMap():
-			if fd.MapValue().Message() == nil {
-				return true
-			}
-			v.Map().Range(func(key protoreflect.MapKey, v protoreflect.Value) bool {
-				err = checkInitialized(v.Message())
-				return err == nil
-			})
-		default:
-			if fd.Message() == nil {
-				return true
-			}
-			err = checkInitialized(v.Message())
-		}
-		return err == nil
-	})
-	return err
-}
diff --git a/proto/checkinit_test.go b/proto/checkinit_test.go
deleted file mode 100644
index 29c9a9a..0000000
--- a/proto/checkinit_test.go
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package proto_test
-
-import (
-	"fmt"
-	"strings"
-	"testing"
-
-	"google.golang.org/protobuf/encoding/prototext"
-	"google.golang.org/protobuf/internal/flags"
-	"google.golang.org/protobuf/proto"
-
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-	weakpb "google.golang.org/protobuf/internal/testprotos/test/weak1"
-)
-
-func TestCheckInitializedErrors(t *testing.T) {
-	type test struct {
-		m    proto.Message
-		want string
-		skip bool
-	}
-	tests := []test{{
-		m:    &testpb.TestRequired{},
-		want: `goproto.proto.test.TestRequired.required_field`,
-	}, {
-		m: &testpb.TestRequiredForeign{
-			OptionalMessage: &testpb.TestRequired{},
-		},
-		want: `goproto.proto.test.TestRequired.required_field`,
-	}, {
-		m: &testpb.TestRequiredForeign{
-			RepeatedMessage: []*testpb.TestRequired{
-				{RequiredField: proto.Int32(1)},
-				{},
-			},
-		},
-		want: `goproto.proto.test.TestRequired.required_field`,
-	}, {
-		m: &testpb.TestRequiredForeign{
-			MapMessage: map[int32]*testpb.TestRequired{
-				1: {},
-			},
-		},
-		want: `goproto.proto.test.TestRequired.required_field`,
-	}, {
-		m:    &testpb.TestWeak{},
-		want: `<nil>`,
-		skip: !flags.ProtoLegacy,
-	}, {
-		m: func() proto.Message {
-			m := &testpb.TestWeak{}
-			m.SetWeakMessage1(&weakpb.WeakImportMessage1{})
-			return m
-		}(),
-		want: `goproto.proto.test.weak.WeakImportMessage1.a`,
-		skip: !flags.ProtoLegacy,
-	}, {
-		m: func() proto.Message {
-			m := &testpb.TestWeak{}
-			m.SetWeakMessage1(&weakpb.WeakImportMessage1{
-				A: proto.Int32(1),
-			})
-			return m
-		}(),
-		want: `<nil>`,
-		skip: !flags.ProtoLegacy,
-	}}
-
-	for _, tt := range tests {
-		t.Run("", func(t *testing.T) {
-			if tt.skip {
-				t.SkipNow()
-			}
-
-			err := proto.CheckInitialized(tt.m)
-			got := "<nil>"
-			if err != nil {
-				got = fmt.Sprintf("%q", err)
-			}
-			if !strings.Contains(got, tt.want) {
-				t.Errorf("CheckInitialized(m):\n got: %v\nwant contains: %v\nMessage:\n%v", got, tt.want, prototext.Format(tt.m))
-			}
-		})
-	}
-}
diff --git a/proto/clone.go b/proto/clone.go
new file mode 100644
index 0000000..3cd3249
--- /dev/null
+++ b/proto/clone.go
@@ -0,0 +1,253 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2011 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Protocol buffer deep copy and merge.
+// TODO: RawMessage.
+
+package proto
+
+import (
+	"fmt"
+	"log"
+	"reflect"
+	"strings"
+)
+
+// Clone returns a deep copy of a protocol buffer.
+func Clone(src Message) Message {
+	in := reflect.ValueOf(src)
+	if in.IsNil() {
+		return src
+	}
+	out := reflect.New(in.Type().Elem())
+	dst := out.Interface().(Message)
+	Merge(dst, src)
+	return dst
+}
+
+// Merger is the interface representing objects that can merge messages of the same type.
+type Merger interface {
+	// Merge merges src into this message.
+	// Required and optional fields that are set in src will be set to that value in dst.
+	// Elements of repeated fields will be appended.
+	//
+	// Merge may panic if called with a different argument type than the receiver.
+	Merge(src Message)
+}
+
+// generatedMerger is the custom merge method that generated protos will have.
+// We must add this method since a generate Merge method will conflict with
+// many existing protos that have a Merge data field already defined.
+type generatedMerger interface {
+	XXX_Merge(src Message)
+}
+
+// Merge merges src into dst.
+// Required and optional fields that are set in src will be set to that value in dst.
+// Elements of repeated fields will be appended.
+// Merge panics if src and dst are not the same type, or if dst is nil.
+func Merge(dst, src Message) {
+	if m, ok := dst.(Merger); ok {
+		m.Merge(src)
+		return
+	}
+
+	in := reflect.ValueOf(src)
+	out := reflect.ValueOf(dst)
+	if out.IsNil() {
+		panic("proto: nil destination")
+	}
+	if in.Type() != out.Type() {
+		panic(fmt.Sprintf("proto.Merge(%T, %T) type mismatch", dst, src))
+	}
+	if in.IsNil() {
+		return // Merge from nil src is a noop
+	}
+	if m, ok := dst.(generatedMerger); ok {
+		m.XXX_Merge(src)
+		return
+	}
+	mergeStruct(out.Elem(), in.Elem())
+}
+
+func mergeStruct(out, in reflect.Value) {
+	sprop := GetProperties(in.Type())
+	for i := 0; i < in.NumField(); i++ {
+		f := in.Type().Field(i)
+		if strings.HasPrefix(f.Name, "XXX_") {
+			continue
+		}
+		mergeAny(out.Field(i), in.Field(i), false, sprop.Prop[i])
+	}
+
+	if emIn, err := extendable(in.Addr().Interface()); err == nil {
+		emOut, _ := extendable(out.Addr().Interface())
+		mIn, muIn := emIn.extensionsRead()
+		if mIn != nil {
+			mOut := emOut.extensionsWrite()
+			muIn.Lock()
+			mergeExtension(mOut, mIn)
+			muIn.Unlock()
+		}
+	}
+
+	uf := in.FieldByName("XXX_unrecognized")
+	if !uf.IsValid() {
+		return
+	}
+	uin := uf.Bytes()
+	if len(uin) > 0 {
+		out.FieldByName("XXX_unrecognized").SetBytes(append([]byte(nil), uin...))
+	}
+}
+
+// mergeAny performs a merge between two values of the same type.
+// viaPtr indicates whether the values were indirected through a pointer (implying proto2).
+// prop is set if this is a struct field (it may be nil).
+func mergeAny(out, in reflect.Value, viaPtr bool, prop *Properties) {
+	if in.Type() == protoMessageType {
+		if !in.IsNil() {
+			if out.IsNil() {
+				out.Set(reflect.ValueOf(Clone(in.Interface().(Message))))
+			} else {
+				Merge(out.Interface().(Message), in.Interface().(Message))
+			}
+		}
+		return
+	}
+	switch in.Kind() {
+	case reflect.Bool, reflect.Float32, reflect.Float64, reflect.Int32, reflect.Int64,
+		reflect.String, reflect.Uint32, reflect.Uint64:
+		if !viaPtr && isProto3Zero(in) {
+			return
+		}
+		out.Set(in)
+	case reflect.Interface:
+		// Probably a oneof field; copy non-nil values.
+		if in.IsNil() {
+			return
+		}
+		// Allocate destination if it is not set, or set to a different type.
+		// Otherwise we will merge as normal.
+		if out.IsNil() || out.Elem().Type() != in.Elem().Type() {
+			out.Set(reflect.New(in.Elem().Elem().Type())) // interface -> *T -> T -> new(T)
+		}
+		mergeAny(out.Elem(), in.Elem(), false, nil)
+	case reflect.Map:
+		if in.Len() == 0 {
+			return
+		}
+		if out.IsNil() {
+			out.Set(reflect.MakeMap(in.Type()))
+		}
+		// For maps with value types of *T or []byte we need to deep copy each value.
+		elemKind := in.Type().Elem().Kind()
+		for _, key := range in.MapKeys() {
+			var val reflect.Value
+			switch elemKind {
+			case reflect.Ptr:
+				val = reflect.New(in.Type().Elem().Elem())
+				mergeAny(val, in.MapIndex(key), false, nil)
+			case reflect.Slice:
+				val = in.MapIndex(key)
+				val = reflect.ValueOf(append([]byte{}, val.Bytes()...))
+			default:
+				val = in.MapIndex(key)
+			}
+			out.SetMapIndex(key, val)
+		}
+	case reflect.Ptr:
+		if in.IsNil() {
+			return
+		}
+		if out.IsNil() {
+			out.Set(reflect.New(in.Elem().Type()))
+		}
+		mergeAny(out.Elem(), in.Elem(), true, nil)
+	case reflect.Slice:
+		if in.IsNil() {
+			return
+		}
+		if in.Type().Elem().Kind() == reflect.Uint8 {
+			// []byte is a scalar bytes field, not a repeated field.
+
+			// Edge case: if this is in a proto3 message, a zero length
+			// bytes field is considered the zero value, and should not
+			// be merged.
+			if prop != nil && prop.proto3 && in.Len() == 0 {
+				return
+			}
+
+			// Make a deep copy.
+			// Append to []byte{} instead of []byte(nil) so that we never end up
+			// with a nil result.
+			out.SetBytes(append([]byte{}, in.Bytes()...))
+			return
+		}
+		n := in.Len()
+		if out.IsNil() {
+			out.Set(reflect.MakeSlice(in.Type(), 0, n))
+		}
+		switch in.Type().Elem().Kind() {
+		case reflect.Bool, reflect.Float32, reflect.Float64, reflect.Int32, reflect.Int64,
+			reflect.String, reflect.Uint32, reflect.Uint64:
+			out.Set(reflect.AppendSlice(out, in))
+		default:
+			for i := 0; i < n; i++ {
+				x := reflect.Indirect(reflect.New(in.Type().Elem()))
+				mergeAny(x, in.Index(i), false, nil)
+				out.Set(reflect.Append(out, x))
+			}
+		}
+	case reflect.Struct:
+		mergeStruct(out, in)
+	default:
+		// unknown type, so not a protocol buffer
+		log.Printf("proto: don't know how to copy %v", in)
+	}
+}
+
+func mergeExtension(out, in map[int32]Extension) {
+	for extNum, eIn := range in {
+		eOut := Extension{desc: eIn.desc}
+		if eIn.value != nil {
+			v := reflect.New(reflect.TypeOf(eIn.value)).Elem()
+			mergeAny(v, reflect.ValueOf(eIn.value), false, nil)
+			eOut.value = v.Interface()
+		}
+		if eIn.enc != nil {
+			eOut.enc = make([]byte, len(eIn.enc))
+			copy(eOut.enc, eIn.enc)
+		}
+
+		out[extNum] = eOut
+	}
+}
diff --git a/proto/clone_test.go b/proto/clone_test.go
new file mode 100644
index 0000000..b04989e
--- /dev/null
+++ b/proto/clone_test.go
@@ -0,0 +1,406 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2011 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto_test
+
+import (
+	"testing"
+
+	"github.com/golang/protobuf/proto"
+
+	proto3pb "github.com/golang/protobuf/proto/proto3_proto"
+	pb "github.com/golang/protobuf/proto/test_proto"
+)
+
+var cloneTestMessage = &pb.MyMessage{
+	Count: proto.Int32(42),
+	Name:  proto.String("Dave"),
+	Pet:   []string{"bunny", "kitty", "horsey"},
+	Inner: &pb.InnerMessage{
+		Host:      proto.String("niles"),
+		Port:      proto.Int32(9099),
+		Connected: proto.Bool(true),
+	},
+	Others: []*pb.OtherMessage{
+		{
+			Value: []byte("some bytes"),
+		},
+	},
+	Somegroup: &pb.MyMessage_SomeGroup{
+		GroupField: proto.Int32(6),
+	},
+	RepBytes: [][]byte{[]byte("sham"), []byte("wow")},
+}
+
+func init() {
+	ext := &pb.Ext{
+		Data: proto.String("extension"),
+	}
+	if err := proto.SetExtension(cloneTestMessage, pb.E_Ext_More, ext); err != nil {
+		panic("SetExtension: " + err.Error())
+	}
+	if err := proto.SetExtension(cloneTestMessage, pb.E_Ext_Text, proto.String("hello")); err != nil {
+		panic("SetExtension: " + err.Error())
+	}
+	if err := proto.SetExtension(cloneTestMessage, pb.E_Greeting, []string{"one", "two"}); err != nil {
+		panic("SetExtension: " + err.Error())
+	}
+}
+
+func TestClone(t *testing.T) {
+	// Create a clone using a marshal/unmarshal roundtrip.
+	vanilla := new(pb.MyMessage)
+	b, err := proto.Marshal(cloneTestMessage)
+	if err != nil {
+		t.Errorf("unexpected Marshal error: %v", err)
+	}
+	if err := proto.Unmarshal(b, vanilla); err != nil {
+		t.Errorf("unexpected Unarshal error: %v", err)
+	}
+
+	// Create a clone using Clone and verify that it is equal to the original.
+	m := proto.Clone(cloneTestMessage).(*pb.MyMessage)
+	if !proto.Equal(m, cloneTestMessage) {
+		t.Fatalf("Clone(%v) = %v", cloneTestMessage, m)
+	}
+
+	// Mutate the clone, which should not affect the original.
+	x1, err := proto.GetExtension(m, pb.E_Ext_More)
+	if err != nil {
+		t.Errorf("unexpected GetExtension(%v) error: %v", pb.E_Ext_More.Name, err)
+	}
+	x2, err := proto.GetExtension(m, pb.E_Ext_Text)
+	if err != nil {
+		t.Errorf("unexpected GetExtension(%v) error: %v", pb.E_Ext_Text.Name, err)
+	}
+	x3, err := proto.GetExtension(m, pb.E_Greeting)
+	if err != nil {
+		t.Errorf("unexpected GetExtension(%v) error: %v", pb.E_Greeting.Name, err)
+	}
+	*m.Inner.Port++
+	*(x1.(*pb.Ext)).Data = "blah blah"
+	*(x2.(*string)) = "goodbye"
+	x3.([]string)[0] = "zero"
+	if !proto.Equal(cloneTestMessage, vanilla) {
+		t.Fatalf("mutation on original detected:\ngot  %v\nwant %v", cloneTestMessage, vanilla)
+	}
+}
+
+func TestCloneNil(t *testing.T) {
+	var m *pb.MyMessage
+	if c := proto.Clone(m); !proto.Equal(m, c) {
+		t.Errorf("Clone(%v) = %v", m, c)
+	}
+}
+
+var mergeTests = []struct {
+	src, dst, want proto.Message
+}{
+	{
+		src: &pb.MyMessage{
+			Count: proto.Int32(42),
+		},
+		dst: &pb.MyMessage{
+			Name: proto.String("Dave"),
+		},
+		want: &pb.MyMessage{
+			Count: proto.Int32(42),
+			Name:  proto.String("Dave"),
+		},
+	},
+	{
+		src: &pb.MyMessage{
+			Inner: &pb.InnerMessage{
+				Host:      proto.String("hey"),
+				Connected: proto.Bool(true),
+			},
+			Pet: []string{"horsey"},
+			Others: []*pb.OtherMessage{
+				{
+					Value: []byte("some bytes"),
+				},
+			},
+		},
+		dst: &pb.MyMessage{
+			Inner: &pb.InnerMessage{
+				Host: proto.String("niles"),
+				Port: proto.Int32(9099),
+			},
+			Pet: []string{"bunny", "kitty"},
+			Others: []*pb.OtherMessage{
+				{
+					Key: proto.Int64(31415926535),
+				},
+				{
+					// Explicitly test a src=nil field
+					Inner: nil,
+				},
+			},
+		},
+		want: &pb.MyMessage{
+			Inner: &pb.InnerMessage{
+				Host:      proto.String("hey"),
+				Connected: proto.Bool(true),
+				Port:      proto.Int32(9099),
+			},
+			Pet: []string{"bunny", "kitty", "horsey"},
+			Others: []*pb.OtherMessage{
+				{
+					Key: proto.Int64(31415926535),
+				},
+				{},
+				{
+					Value: []byte("some bytes"),
+				},
+			},
+		},
+	},
+	{
+		src: &pb.MyMessage{
+			RepBytes: [][]byte{[]byte("wow")},
+		},
+		dst: &pb.MyMessage{
+			Somegroup: &pb.MyMessage_SomeGroup{
+				GroupField: proto.Int32(6),
+			},
+			RepBytes: [][]byte{[]byte("sham")},
+		},
+		want: &pb.MyMessage{
+			Somegroup: &pb.MyMessage_SomeGroup{
+				GroupField: proto.Int32(6),
+			},
+			RepBytes: [][]byte{[]byte("sham"), []byte("wow")},
+		},
+	},
+	// Check that a scalar bytes field replaces rather than appends.
+	{
+		src:  &pb.OtherMessage{Value: []byte("foo")},
+		dst:  &pb.OtherMessage{Value: []byte("bar")},
+		want: &pb.OtherMessage{Value: []byte("foo")},
+	},
+	{
+		src: &pb.MessageWithMap{
+			NameMapping: map[int32]string{6: "Nigel"},
+			MsgMapping: map[int64]*pb.FloatingPoint{
+				0x4001: &pb.FloatingPoint{F: proto.Float64(2.0)},
+				0x4002: &pb.FloatingPoint{
+					F: proto.Float64(2.0),
+				},
+			},
+			ByteMapping: map[bool][]byte{true: []byte("wowsa")},
+		},
+		dst: &pb.MessageWithMap{
+			NameMapping: map[int32]string{
+				6: "Bruce", // should be overwritten
+				7: "Andrew",
+			},
+			MsgMapping: map[int64]*pb.FloatingPoint{
+				0x4002: &pb.FloatingPoint{
+					F:     proto.Float64(3.0),
+					Exact: proto.Bool(true),
+				}, // the entire message should be overwritten
+			},
+		},
+		want: &pb.MessageWithMap{
+			NameMapping: map[int32]string{
+				6: "Nigel",
+				7: "Andrew",
+			},
+			MsgMapping: map[int64]*pb.FloatingPoint{
+				0x4001: &pb.FloatingPoint{F: proto.Float64(2.0)},
+				0x4002: &pb.FloatingPoint{
+					F: proto.Float64(2.0),
+				},
+			},
+			ByteMapping: map[bool][]byte{true: []byte("wowsa")},
+		},
+	},
+	// proto3 shouldn't merge zero values,
+	// in the same way that proto2 shouldn't merge nils.
+	{
+		src: &proto3pb.Message{
+			Name: "Aaron",
+			Data: []byte(""), // zero value, but not nil
+		},
+		dst: &proto3pb.Message{
+			HeightInCm: 176,
+			Data:       []byte("texas!"),
+		},
+		want: &proto3pb.Message{
+			Name:       "Aaron",
+			HeightInCm: 176,
+			Data:       []byte("texas!"),
+		},
+	},
+	{ // Oneof fields should merge by assignment.
+		src:  &pb.Communique{Union: &pb.Communique_Number{41}},
+		dst:  &pb.Communique{Union: &pb.Communique_Name{"Bobby Tables"}},
+		want: &pb.Communique{Union: &pb.Communique_Number{41}},
+	},
+	{ // Oneof nil is the same as not set.
+		src:  &pb.Communique{},
+		dst:  &pb.Communique{Union: &pb.Communique_Name{"Bobby Tables"}},
+		want: &pb.Communique{Union: &pb.Communique_Name{"Bobby Tables"}},
+	},
+	{
+		src:  &pb.Communique{Union: &pb.Communique_Number{1337}},
+		dst:  &pb.Communique{},
+		want: &pb.Communique{Union: &pb.Communique_Number{1337}},
+	},
+	{
+		src:  &pb.Communique{Union: &pb.Communique_Col{pb.MyMessage_RED}},
+		dst:  &pb.Communique{},
+		want: &pb.Communique{Union: &pb.Communique_Col{pb.MyMessage_RED}},
+	},
+	{
+		src:  &pb.Communique{Union: &pb.Communique_Data{[]byte("hello")}},
+		dst:  &pb.Communique{},
+		want: &pb.Communique{Union: &pb.Communique_Data{[]byte("hello")}},
+	},
+	{
+		src:  &pb.Communique{Union: &pb.Communique_Msg{&pb.Strings{BytesField: []byte{1, 2, 3}}}},
+		dst:  &pb.Communique{},
+		want: &pb.Communique{Union: &pb.Communique_Msg{&pb.Strings{BytesField: []byte{1, 2, 3}}}},
+	},
+	{
+		src:  &pb.Communique{Union: &pb.Communique_Msg{}},
+		dst:  &pb.Communique{},
+		want: &pb.Communique{Union: &pb.Communique_Msg{}},
+	},
+	{
+		src:  &pb.Communique{Union: &pb.Communique_Msg{&pb.Strings{StringField: proto.String("123")}}},
+		dst:  &pb.Communique{Union: &pb.Communique_Msg{&pb.Strings{BytesField: []byte{1, 2, 3}}}},
+		want: &pb.Communique{Union: &pb.Communique_Msg{&pb.Strings{StringField: proto.String("123"), BytesField: []byte{1, 2, 3}}}},
+	},
+	{
+		src: &proto3pb.Message{
+			Terrain: map[string]*proto3pb.Nested{
+				"kay_a": &proto3pb.Nested{Cute: true},      // replace
+				"kay_b": &proto3pb.Nested{Bunny: "rabbit"}, // insert
+			},
+		},
+		dst: &proto3pb.Message{
+			Terrain: map[string]*proto3pb.Nested{
+				"kay_a": &proto3pb.Nested{Bunny: "lost"},  // replaced
+				"kay_c": &proto3pb.Nested{Bunny: "bunny"}, // keep
+			},
+		},
+		want: &proto3pb.Message{
+			Terrain: map[string]*proto3pb.Nested{
+				"kay_a": &proto3pb.Nested{Cute: true},
+				"kay_b": &proto3pb.Nested{Bunny: "rabbit"},
+				"kay_c": &proto3pb.Nested{Bunny: "bunny"},
+			},
+		},
+	},
+	{
+		src: &pb.GoTest{
+			F_BoolRepeated:   []bool{},
+			F_Int32Repeated:  []int32{},
+			F_Int64Repeated:  []int64{},
+			F_Uint32Repeated: []uint32{},
+			F_Uint64Repeated: []uint64{},
+			F_FloatRepeated:  []float32{},
+			F_DoubleRepeated: []float64{},
+			F_StringRepeated: []string{},
+			F_BytesRepeated:  [][]byte{},
+		},
+		dst: &pb.GoTest{},
+		want: &pb.GoTest{
+			F_BoolRepeated:   []bool{},
+			F_Int32Repeated:  []int32{},
+			F_Int64Repeated:  []int64{},
+			F_Uint32Repeated: []uint32{},
+			F_Uint64Repeated: []uint64{},
+			F_FloatRepeated:  []float32{},
+			F_DoubleRepeated: []float64{},
+			F_StringRepeated: []string{},
+			F_BytesRepeated:  [][]byte{},
+		},
+	},
+	{
+		src: &pb.GoTest{},
+		dst: &pb.GoTest{
+			F_BoolRepeated:   []bool{},
+			F_Int32Repeated:  []int32{},
+			F_Int64Repeated:  []int64{},
+			F_Uint32Repeated: []uint32{},
+			F_Uint64Repeated: []uint64{},
+			F_FloatRepeated:  []float32{},
+			F_DoubleRepeated: []float64{},
+			F_StringRepeated: []string{},
+			F_BytesRepeated:  [][]byte{},
+		},
+		want: &pb.GoTest{
+			F_BoolRepeated:   []bool{},
+			F_Int32Repeated:  []int32{},
+			F_Int64Repeated:  []int64{},
+			F_Uint32Repeated: []uint32{},
+			F_Uint64Repeated: []uint64{},
+			F_FloatRepeated:  []float32{},
+			F_DoubleRepeated: []float64{},
+			F_StringRepeated: []string{},
+			F_BytesRepeated:  [][]byte{},
+		},
+	},
+	{
+		src: &pb.GoTest{
+			F_BytesRepeated: [][]byte{nil, []byte{}, []byte{0}},
+		},
+		dst: &pb.GoTest{},
+		want: &pb.GoTest{
+			F_BytesRepeated: [][]byte{nil, []byte{}, []byte{0}},
+		},
+	},
+	{
+		src: &pb.MyMessage{
+			Others: []*pb.OtherMessage{},
+		},
+		dst: &pb.MyMessage{},
+		want: &pb.MyMessage{
+			Others: []*pb.OtherMessage{},
+		},
+	},
+}
+
+func TestMerge(t *testing.T) {
+	for _, m := range mergeTests {
+		got := proto.Clone(m.dst)
+		if !proto.Equal(got, m.dst) {
+			t.Errorf("Clone()\ngot  %v\nwant %v", got, m.dst)
+			continue
+		}
+		proto.Merge(got, m.src)
+		if !proto.Equal(got, m.want) {
+			t.Errorf("Merge(%v, %v)\ngot  %v\nwant %v", m.dst, m.src, got, m.want)
+		}
+	}
+}
diff --git a/proto/decode.go b/proto/decode.go
index 11bf717..63b0f08 100644
--- a/proto/decode.go
+++ b/proto/decode.go
@@ -1,293 +1,427 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 package proto
 
+/*
+ * Routines for decoding protocol buffer data to construct in-memory representations.
+ */
+
 import (
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/encoding/messageset"
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/internal/flags"
-	"google.golang.org/protobuf/internal/genid"
-	"google.golang.org/protobuf/internal/pragma"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/reflect/protoregistry"
-	"google.golang.org/protobuf/runtime/protoiface"
+	"errors"
+	"fmt"
+	"io"
 )
 
-// UnmarshalOptions configures the unmarshaler.
-//
-// Example usage:
-//   err := UnmarshalOptions{DiscardUnknown: true}.Unmarshal(b, m)
-type UnmarshalOptions struct {
-	pragma.NoUnkeyedLiterals
+// errOverflow is returned when an integer is too large to be represented.
+var errOverflow = errors.New("proto: integer overflow")
 
-	// Merge merges the input into the destination message.
-	// The default behavior is to always reset the message before unmarshaling,
-	// unless Merge is specified.
-	Merge bool
+// ErrInternalBadWireType is returned by generated code when an incorrect
+// wire type is encountered. It does not get returned to user code.
+var ErrInternalBadWireType = errors.New("proto: internal error: bad wiretype for oneof")
 
-	// AllowPartial accepts input for messages that will result in missing
-	// required fields. If AllowPartial is false (the default), Unmarshal will
-	// return an error if there are any missing required fields.
-	AllowPartial bool
-
-	// If DiscardUnknown is set, unknown fields are ignored.
-	DiscardUnknown bool
-
-	// Resolver is used for looking up types when unmarshaling extension fields.
-	// If nil, this defaults to using protoregistry.GlobalTypes.
-	Resolver interface {
-		FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error)
-		FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error)
-	}
-
-	// RecursionLimit limits how deeply messages may be nested.
-	// If zero, a default limit is applied.
-	RecursionLimit int
-}
-
-// Unmarshal parses the wire-format message in b and places the result in m.
-// The provided message must be mutable (e.g., a non-nil pointer to a message).
-func Unmarshal(b []byte, m Message) error {
-	_, err := UnmarshalOptions{RecursionLimit: protowire.DefaultRecursionLimit}.unmarshal(b, m.ProtoReflect())
-	return err
-}
-
-// Unmarshal parses the wire-format message in b and places the result in m.
-// The provided message must be mutable (e.g., a non-nil pointer to a message).
-func (o UnmarshalOptions) Unmarshal(b []byte, m Message) error {
-	if o.RecursionLimit == 0 {
-		o.RecursionLimit = protowire.DefaultRecursionLimit
-	}
-	_, err := o.unmarshal(b, m.ProtoReflect())
-	return err
-}
-
-// UnmarshalState parses a wire-format message and places the result in m.
-//
-// This method permits fine-grained control over the unmarshaler.
-// Most users should use Unmarshal instead.
-func (o UnmarshalOptions) UnmarshalState(in protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) {
-	if o.RecursionLimit == 0 {
-		o.RecursionLimit = protowire.DefaultRecursionLimit
-	}
-	return o.unmarshal(in.Buf, in.Message)
-}
-
-// unmarshal is a centralized function that all unmarshal operations go through.
-// For profiling purposes, avoid changing the name of this function or
-// introducing other code paths for unmarshal that do not go through this.
-func (o UnmarshalOptions) unmarshal(b []byte, m protoreflect.Message) (out protoiface.UnmarshalOutput, err error) {
-	if o.Resolver == nil {
-		o.Resolver = protoregistry.GlobalTypes
-	}
-	if !o.Merge {
-		Reset(m.Interface())
-	}
-	allowPartial := o.AllowPartial
-	o.Merge = true
-	o.AllowPartial = true
-	methods := protoMethods(m)
-	if methods != nil && methods.Unmarshal != nil &&
-		!(o.DiscardUnknown && methods.Flags&protoiface.SupportUnmarshalDiscardUnknown == 0) {
-		in := protoiface.UnmarshalInput{
-			Message:  m,
-			Buf:      b,
-			Resolver: o.Resolver,
-			Depth:    o.RecursionLimit,
+// DecodeVarint reads a varint-encoded integer from the slice.
+// It returns the integer and the number of bytes consumed, or
+// zero if there is not enough.
+// This is the format for the
+// int32, int64, uint32, uint64, bool, and enum
+// protocol buffer types.
+func DecodeVarint(buf []byte) (x uint64, n int) {
+	for shift := uint(0); shift < 64; shift += 7 {
+		if n >= len(buf) {
+			return 0, 0
 		}
-		if o.DiscardUnknown {
-			in.Flags |= protoiface.UnmarshalDiscardUnknown
+		b := uint64(buf[n])
+		n++
+		x |= (b & 0x7F) << shift
+		if (b & 0x80) == 0 {
+			return x, n
 		}
-		out, err = methods.Unmarshal(in)
-	} else {
-		o.RecursionLimit--
-		if o.RecursionLimit < 0 {
-			return out, errors.New("exceeded max recursion depth")
-		}
-		err = o.unmarshalMessageSlow(b, m)
 	}
+
+	// The number is too large to represent in a 64-bit value.
+	return 0, 0
+}
+
+func (p *Buffer) decodeVarintSlow() (x uint64, err error) {
+	i := p.index
+	l := len(p.buf)
+
+	for shift := uint(0); shift < 64; shift += 7 {
+		if i >= l {
+			err = io.ErrUnexpectedEOF
+			return
+		}
+		b := p.buf[i]
+		i++
+		x |= (uint64(b) & 0x7F) << shift
+		if b < 0x80 {
+			p.index = i
+			return
+		}
+	}
+
+	// The number is too large to represent in a 64-bit value.
+	err = errOverflow
+	return
+}
+
+// DecodeVarint reads a varint-encoded integer from the Buffer.
+// This is the format for the
+// int32, int64, uint32, uint64, bool, and enum
+// protocol buffer types.
+func (p *Buffer) DecodeVarint() (x uint64, err error) {
+	i := p.index
+	buf := p.buf
+
+	if i >= len(buf) {
+		return 0, io.ErrUnexpectedEOF
+	} else if buf[i] < 0x80 {
+		p.index++
+		return uint64(buf[i]), nil
+	} else if len(buf)-i < 10 {
+		return p.decodeVarintSlow()
+	}
+
+	var b uint64
+	// we already checked the first byte
+	x = uint64(buf[i]) - 0x80
+	i++
+
+	b = uint64(buf[i])
+	i++
+	x += b << 7
+	if b&0x80 == 0 {
+		goto done
+	}
+	x -= 0x80 << 7
+
+	b = uint64(buf[i])
+	i++
+	x += b << 14
+	if b&0x80 == 0 {
+		goto done
+	}
+	x -= 0x80 << 14
+
+	b = uint64(buf[i])
+	i++
+	x += b << 21
+	if b&0x80 == 0 {
+		goto done
+	}
+	x -= 0x80 << 21
+
+	b = uint64(buf[i])
+	i++
+	x += b << 28
+	if b&0x80 == 0 {
+		goto done
+	}
+	x -= 0x80 << 28
+
+	b = uint64(buf[i])
+	i++
+	x += b << 35
+	if b&0x80 == 0 {
+		goto done
+	}
+	x -= 0x80 << 35
+
+	b = uint64(buf[i])
+	i++
+	x += b << 42
+	if b&0x80 == 0 {
+		goto done
+	}
+	x -= 0x80 << 42
+
+	b = uint64(buf[i])
+	i++
+	x += b << 49
+	if b&0x80 == 0 {
+		goto done
+	}
+	x -= 0x80 << 49
+
+	b = uint64(buf[i])
+	i++
+	x += b << 56
+	if b&0x80 == 0 {
+		goto done
+	}
+	x -= 0x80 << 56
+
+	b = uint64(buf[i])
+	i++
+	x += b << 63
+	if b&0x80 == 0 {
+		goto done
+	}
+
+	return 0, errOverflow
+
+done:
+	p.index = i
+	return x, nil
+}
+
+// DecodeFixed64 reads a 64-bit integer from the Buffer.
+// This is the format for the
+// fixed64, sfixed64, and double protocol buffer types.
+func (p *Buffer) DecodeFixed64() (x uint64, err error) {
+	// x, err already 0
+	i := p.index + 8
+	if i < 0 || i > len(p.buf) {
+		err = io.ErrUnexpectedEOF
+		return
+	}
+	p.index = i
+
+	x = uint64(p.buf[i-8])
+	x |= uint64(p.buf[i-7]) << 8
+	x |= uint64(p.buf[i-6]) << 16
+	x |= uint64(p.buf[i-5]) << 24
+	x |= uint64(p.buf[i-4]) << 32
+	x |= uint64(p.buf[i-3]) << 40
+	x |= uint64(p.buf[i-2]) << 48
+	x |= uint64(p.buf[i-1]) << 56
+	return
+}
+
+// DecodeFixed32 reads a 32-bit integer from the Buffer.
+// This is the format for the
+// fixed32, sfixed32, and float protocol buffer types.
+func (p *Buffer) DecodeFixed32() (x uint64, err error) {
+	// x, err already 0
+	i := p.index + 4
+	if i < 0 || i > len(p.buf) {
+		err = io.ErrUnexpectedEOF
+		return
+	}
+	p.index = i
+
+	x = uint64(p.buf[i-4])
+	x |= uint64(p.buf[i-3]) << 8
+	x |= uint64(p.buf[i-2]) << 16
+	x |= uint64(p.buf[i-1]) << 24
+	return
+}
+
+// DecodeZigzag64 reads a zigzag-encoded 64-bit integer
+// from the Buffer.
+// This is the format used for the sint64 protocol buffer type.
+func (p *Buffer) DecodeZigzag64() (x uint64, err error) {
+	x, err = p.DecodeVarint()
 	if err != nil {
-		return out, err
+		return
 	}
-	if allowPartial || (out.Flags&protoiface.UnmarshalInitialized != 0) {
-		return out, nil
-	}
-	return out, checkInitialized(m)
+	x = (x >> 1) ^ uint64((int64(x&1)<<63)>>63)
+	return
 }
 
-func (o UnmarshalOptions) unmarshalMessage(b []byte, m protoreflect.Message) error {
-	_, err := o.unmarshal(b, m)
+// DecodeZigzag32 reads a zigzag-encoded 32-bit integer
+// from  the Buffer.
+// This is the format used for the sint32 protocol buffer type.
+func (p *Buffer) DecodeZigzag32() (x uint64, err error) {
+	x, err = p.DecodeVarint()
+	if err != nil {
+		return
+	}
+	x = uint64((uint32(x) >> 1) ^ uint32((int32(x&1)<<31)>>31))
+	return
+}
+
+// DecodeRawBytes reads a count-delimited byte buffer from the Buffer.
+// This is the format used for the bytes protocol buffer
+// type and for embedded messages.
+func (p *Buffer) DecodeRawBytes(alloc bool) (buf []byte, err error) {
+	n, err := p.DecodeVarint()
+	if err != nil {
+		return nil, err
+	}
+
+	nb := int(n)
+	if nb < 0 {
+		return nil, fmt.Errorf("proto: bad byte length %d", nb)
+	}
+	end := p.index + nb
+	if end < p.index || end > len(p.buf) {
+		return nil, io.ErrUnexpectedEOF
+	}
+
+	if !alloc {
+		// todo: check if can get more uses of alloc=false
+		buf = p.buf[p.index:end]
+		p.index += nb
+		return
+	}
+
+	buf = make([]byte, nb)
+	copy(buf, p.buf[p.index:])
+	p.index += nb
+	return
+}
+
+// DecodeStringBytes reads an encoded string from the Buffer.
+// This is the format used for the proto2 string type.
+func (p *Buffer) DecodeStringBytes() (s string, err error) {
+	buf, err := p.DecodeRawBytes(false)
+	if err != nil {
+		return
+	}
+	return string(buf), nil
+}
+
+// Unmarshaler is the interface representing objects that can
+// unmarshal themselves.  The argument points to data that may be
+// overwritten, so implementations should not keep references to the
+// buffer.
+// Unmarshal implementations should not clear the receiver.
+// Any unmarshaled data should be merged into the receiver.
+// Callers of Unmarshal that do not want to retain existing data
+// should Reset the receiver before calling Unmarshal.
+type Unmarshaler interface {
+	Unmarshal([]byte) error
+}
+
+// newUnmarshaler is the interface representing objects that can
+// unmarshal themselves. The semantics are identical to Unmarshaler.
+//
+// This exists to support protoc-gen-go generated messages.
+// The proto package will stop type-asserting to this interface in the future.
+//
+// DO NOT DEPEND ON THIS.
+type newUnmarshaler interface {
+	XXX_Unmarshal([]byte) error
+}
+
+// Unmarshal parses the protocol buffer representation in buf and places the
+// decoded result in pb.  If the struct underlying pb does not match
+// the data in buf, the results can be unpredictable.
+//
+// Unmarshal resets pb before starting to unmarshal, so any
+// existing data in pb is always removed. Use UnmarshalMerge
+// to preserve and append to existing data.
+func Unmarshal(buf []byte, pb Message) error {
+	pb.Reset()
+	if u, ok := pb.(newUnmarshaler); ok {
+		return u.XXX_Unmarshal(buf)
+	}
+	if u, ok := pb.(Unmarshaler); ok {
+		return u.Unmarshal(buf)
+	}
+	return NewBuffer(buf).Unmarshal(pb)
+}
+
+// UnmarshalMerge parses the protocol buffer representation in buf and
+// writes the decoded result to pb.  If the struct underlying pb does not match
+// the data in buf, the results can be unpredictable.
+//
+// UnmarshalMerge merges into existing data in pb.
+// Most code should use Unmarshal instead.
+func UnmarshalMerge(buf []byte, pb Message) error {
+	if u, ok := pb.(newUnmarshaler); ok {
+		return u.XXX_Unmarshal(buf)
+	}
+	if u, ok := pb.(Unmarshaler); ok {
+		// NOTE: The history of proto have unfortunately been inconsistent
+		// whether Unmarshaler should or should not implicitly clear itself.
+		// Some implementations do, most do not.
+		// Thus, calling this here may or may not do what people want.
+		//
+		// See https://github.com/golang/protobuf/issues/424
+		return u.Unmarshal(buf)
+	}
+	return NewBuffer(buf).Unmarshal(pb)
+}
+
+// DecodeMessage reads a count-delimited message from the Buffer.
+func (p *Buffer) DecodeMessage(pb Message) error {
+	enc, err := p.DecodeRawBytes(false)
+	if err != nil {
+		return err
+	}
+	return NewBuffer(enc).Unmarshal(pb)
+}
+
+// DecodeGroup reads a tag-delimited group from the Buffer.
+// StartGroup tag is already consumed. This function consumes
+// EndGroup tag.
+func (p *Buffer) DecodeGroup(pb Message) error {
+	b := p.buf[p.index:]
+	x, y := findEndGroup(b)
+	if x < 0 {
+		return io.ErrUnexpectedEOF
+	}
+	err := Unmarshal(b[:x], pb)
+	p.index += y
 	return err
 }
 
-func (o UnmarshalOptions) unmarshalMessageSlow(b []byte, m protoreflect.Message) error {
-	md := m.Descriptor()
-	if messageset.IsMessageSet(md) {
-		return o.unmarshalMessageSet(b, m)
+// Unmarshal parses the protocol buffer representation in the
+// Buffer and places the decoded result in pb.  If the struct
+// underlying pb does not match the data in the buffer, the results can be
+// unpredictable.
+//
+// Unlike proto.Unmarshal, this does not reset pb before starting to unmarshal.
+func (p *Buffer) Unmarshal(pb Message) error {
+	// If the object can unmarshal itself, let it.
+	if u, ok := pb.(newUnmarshaler); ok {
+		err := u.XXX_Unmarshal(p.buf[p.index:])
+		p.index = len(p.buf)
+		return err
 	}
-	fields := md.Fields()
-	for len(b) > 0 {
-		// Parse the tag (field number and wire type).
-		num, wtyp, tagLen := protowire.ConsumeTag(b)
-		if tagLen < 0 {
-			return errDecode
-		}
-		if num > protowire.MaxValidNumber {
-			return errDecode
-		}
-
-		// Find the field descriptor for this field number.
-		fd := fields.ByNumber(num)
-		if fd == nil && md.ExtensionRanges().Has(num) {
-			extType, err := o.Resolver.FindExtensionByNumber(md.FullName(), num)
-			if err != nil && err != protoregistry.NotFound {
-				return errors.New("%v: unable to resolve extension %v: %v", md.FullName(), num, err)
-			}
-			if extType != nil {
-				fd = extType.TypeDescriptor()
-			}
-		}
-		var err error
-		if fd == nil {
-			err = errUnknown
-		} else if flags.ProtoLegacy {
-			if fd.IsWeak() && fd.Message().IsPlaceholder() {
-				err = errUnknown // weak referent is not linked in
-			}
-		}
-
-		// Parse the field value.
-		var valLen int
-		switch {
-		case err != nil:
-		case fd.IsList():
-			valLen, err = o.unmarshalList(b[tagLen:], wtyp, m.Mutable(fd).List(), fd)
-		case fd.IsMap():
-			valLen, err = o.unmarshalMap(b[tagLen:], wtyp, m.Mutable(fd).Map(), fd)
-		default:
-			valLen, err = o.unmarshalSingular(b[tagLen:], wtyp, m, fd)
-		}
-		if err != nil {
-			if err != errUnknown {
-				return err
-			}
-			valLen = protowire.ConsumeFieldValue(num, wtyp, b[tagLen:])
-			if valLen < 0 {
-				return errDecode
-			}
-			if !o.DiscardUnknown {
-				m.SetUnknown(append(m.GetUnknown(), b[:tagLen+valLen]...))
-			}
-		}
-		b = b[tagLen+valLen:]
+	if u, ok := pb.(Unmarshaler); ok {
+		// NOTE: The history of proto have unfortunately been inconsistent
+		// whether Unmarshaler should or should not implicitly clear itself.
+		// Some implementations do, most do not.
+		// Thus, calling this here may or may not do what people want.
+		//
+		// See https://github.com/golang/protobuf/issues/424
+		err := u.Unmarshal(p.buf[p.index:])
+		p.index = len(p.buf)
+		return err
 	}
-	return nil
+
+	// Slow workaround for messages that aren't Unmarshalers.
+	// This includes some hand-coded .pb.go files and
+	// bootstrap protos.
+	// TODO: fix all of those and then add Unmarshal to
+	// the Message interface. Then:
+	// The cast above and code below can be deleted.
+	// The old unmarshaler can be deleted.
+	// Clients can call Unmarshal directly (can already do that, actually).
+	var info InternalMessageInfo
+	err := info.Unmarshal(pb, p.buf[p.index:])
+	p.index = len(p.buf)
+	return err
 }
-
-func (o UnmarshalOptions) unmarshalSingular(b []byte, wtyp protowire.Type, m protoreflect.Message, fd protoreflect.FieldDescriptor) (n int, err error) {
-	v, n, err := o.unmarshalScalar(b, wtyp, fd)
-	if err != nil {
-		return 0, err
-	}
-	switch fd.Kind() {
-	case protoreflect.GroupKind, protoreflect.MessageKind:
-		m2 := m.Mutable(fd).Message()
-		if err := o.unmarshalMessage(v.Bytes(), m2); err != nil {
-			return n, err
-		}
-	default:
-		// Non-message scalars replace the previous value.
-		m.Set(fd, v)
-	}
-	return n, nil
-}
-
-func (o UnmarshalOptions) unmarshalMap(b []byte, wtyp protowire.Type, mapv protoreflect.Map, fd protoreflect.FieldDescriptor) (n int, err error) {
-	if wtyp != protowire.BytesType {
-		return 0, errUnknown
-	}
-	b, n = protowire.ConsumeBytes(b)
-	if n < 0 {
-		return 0, errDecode
-	}
-	var (
-		keyField = fd.MapKey()
-		valField = fd.MapValue()
-		key      protoreflect.Value
-		val      protoreflect.Value
-		haveKey  bool
-		haveVal  bool
-	)
-	switch valField.Kind() {
-	case protoreflect.GroupKind, protoreflect.MessageKind:
-		val = mapv.NewValue()
-	}
-	// Map entries are represented as a two-element message with fields
-	// containing the key and value.
-	for len(b) > 0 {
-		num, wtyp, n := protowire.ConsumeTag(b)
-		if n < 0 {
-			return 0, errDecode
-		}
-		if num > protowire.MaxValidNumber {
-			return 0, errDecode
-		}
-		b = b[n:]
-		err = errUnknown
-		switch num {
-		case genid.MapEntry_Key_field_number:
-			key, n, err = o.unmarshalScalar(b, wtyp, keyField)
-			if err != nil {
-				break
-			}
-			haveKey = true
-		case genid.MapEntry_Value_field_number:
-			var v protoreflect.Value
-			v, n, err = o.unmarshalScalar(b, wtyp, valField)
-			if err != nil {
-				break
-			}
-			switch valField.Kind() {
-			case protoreflect.GroupKind, protoreflect.MessageKind:
-				if err := o.unmarshalMessage(v.Bytes(), val.Message()); err != nil {
-					return 0, err
-				}
-			default:
-				val = v
-			}
-			haveVal = true
-		}
-		if err == errUnknown {
-			n = protowire.ConsumeFieldValue(num, wtyp, b)
-			if n < 0 {
-				return 0, errDecode
-			}
-		} else if err != nil {
-			return 0, err
-		}
-		b = b[n:]
-	}
-	// Every map entry should have entries for key and value, but this is not strictly required.
-	if !haveKey {
-		key = keyField.Default()
-	}
-	if !haveVal {
-		switch valField.Kind() {
-		case protoreflect.GroupKind, protoreflect.MessageKind:
-		default:
-			val = valField.Default()
-		}
-	}
-	mapv.Set(key.MapKey(), val)
-	return n, nil
-}
-
-// errUnknown is used internally to indicate fields which should be added
-// to the unknown field set of a message. It is never returned from an exported
-// function.
-var errUnknown = errors.New("BUG: internal error (unknown)")
-
-var errDecode = errors.New("cannot parse invalid wire-format data")
diff --git a/proto/decode_gen.go b/proto/decode_gen.go
deleted file mode 100644
index 301eeb2..0000000
--- a/proto/decode_gen.go
+++ /dev/null
@@ -1,603 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by generate-types. DO NOT EDIT.
-
-package proto
-
-import (
-	"math"
-	"unicode/utf8"
-
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/internal/strs"
-	"google.golang.org/protobuf/reflect/protoreflect"
-)
-
-// unmarshalScalar decodes a value of the given kind.
-//
-// Message values are decoded into a []byte which aliases the input data.
-func (o UnmarshalOptions) unmarshalScalar(b []byte, wtyp protowire.Type, fd protoreflect.FieldDescriptor) (val protoreflect.Value, n int, err error) {
-	switch fd.Kind() {
-	case protoreflect.BoolKind:
-		if wtyp != protowire.VarintType {
-			return val, 0, errUnknown
-		}
-		v, n := protowire.ConsumeVarint(b)
-		if n < 0 {
-			return val, 0, errDecode
-		}
-		return protoreflect.ValueOfBool(protowire.DecodeBool(v)), n, nil
-	case protoreflect.EnumKind:
-		if wtyp != protowire.VarintType {
-			return val, 0, errUnknown
-		}
-		v, n := protowire.ConsumeVarint(b)
-		if n < 0 {
-			return val, 0, errDecode
-		}
-		return protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)), n, nil
-	case protoreflect.Int32Kind:
-		if wtyp != protowire.VarintType {
-			return val, 0, errUnknown
-		}
-		v, n := protowire.ConsumeVarint(b)
-		if n < 0 {
-			return val, 0, errDecode
-		}
-		return protoreflect.ValueOfInt32(int32(v)), n, nil
-	case protoreflect.Sint32Kind:
-		if wtyp != protowire.VarintType {
-			return val, 0, errUnknown
-		}
-		v, n := protowire.ConsumeVarint(b)
-		if n < 0 {
-			return val, 0, errDecode
-		}
-		return protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))), n, nil
-	case protoreflect.Uint32Kind:
-		if wtyp != protowire.VarintType {
-			return val, 0, errUnknown
-		}
-		v, n := protowire.ConsumeVarint(b)
-		if n < 0 {
-			return val, 0, errDecode
-		}
-		return protoreflect.ValueOfUint32(uint32(v)), n, nil
-	case protoreflect.Int64Kind:
-		if wtyp != protowire.VarintType {
-			return val, 0, errUnknown
-		}
-		v, n := protowire.ConsumeVarint(b)
-		if n < 0 {
-			return val, 0, errDecode
-		}
-		return protoreflect.ValueOfInt64(int64(v)), n, nil
-	case protoreflect.Sint64Kind:
-		if wtyp != protowire.VarintType {
-			return val, 0, errUnknown
-		}
-		v, n := protowire.ConsumeVarint(b)
-		if n < 0 {
-			return val, 0, errDecode
-		}
-		return protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)), n, nil
-	case protoreflect.Uint64Kind:
-		if wtyp != protowire.VarintType {
-			return val, 0, errUnknown
-		}
-		v, n := protowire.ConsumeVarint(b)
-		if n < 0 {
-			return val, 0, errDecode
-		}
-		return protoreflect.ValueOfUint64(v), n, nil
-	case protoreflect.Sfixed32Kind:
-		if wtyp != protowire.Fixed32Type {
-			return val, 0, errUnknown
-		}
-		v, n := protowire.ConsumeFixed32(b)
-		if n < 0 {
-			return val, 0, errDecode
-		}
-		return protoreflect.ValueOfInt32(int32(v)), n, nil
-	case protoreflect.Fixed32Kind:
-		if wtyp != protowire.Fixed32Type {
-			return val, 0, errUnknown
-		}
-		v, n := protowire.ConsumeFixed32(b)
-		if n < 0 {
-			return val, 0, errDecode
-		}
-		return protoreflect.ValueOfUint32(uint32(v)), n, nil
-	case protoreflect.FloatKind:
-		if wtyp != protowire.Fixed32Type {
-			return val, 0, errUnknown
-		}
-		v, n := protowire.ConsumeFixed32(b)
-		if n < 0 {
-			return val, 0, errDecode
-		}
-		return protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))), n, nil
-	case protoreflect.Sfixed64Kind:
-		if wtyp != protowire.Fixed64Type {
-			return val, 0, errUnknown
-		}
-		v, n := protowire.ConsumeFixed64(b)
-		if n < 0 {
-			return val, 0, errDecode
-		}
-		return protoreflect.ValueOfInt64(int64(v)), n, nil
-	case protoreflect.Fixed64Kind:
-		if wtyp != protowire.Fixed64Type {
-			return val, 0, errUnknown
-		}
-		v, n := protowire.ConsumeFixed64(b)
-		if n < 0 {
-			return val, 0, errDecode
-		}
-		return protoreflect.ValueOfUint64(v), n, nil
-	case protoreflect.DoubleKind:
-		if wtyp != protowire.Fixed64Type {
-			return val, 0, errUnknown
-		}
-		v, n := protowire.ConsumeFixed64(b)
-		if n < 0 {
-			return val, 0, errDecode
-		}
-		return protoreflect.ValueOfFloat64(math.Float64frombits(v)), n, nil
-	case protoreflect.StringKind:
-		if wtyp != protowire.BytesType {
-			return val, 0, errUnknown
-		}
-		v, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return val, 0, errDecode
-		}
-		if strs.EnforceUTF8(fd) && !utf8.Valid(v) {
-			return protoreflect.Value{}, 0, errors.InvalidUTF8(string(fd.FullName()))
-		}
-		return protoreflect.ValueOfString(string(v)), n, nil
-	case protoreflect.BytesKind:
-		if wtyp != protowire.BytesType {
-			return val, 0, errUnknown
-		}
-		v, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return val, 0, errDecode
-		}
-		return protoreflect.ValueOfBytes(append(emptyBuf[:], v...)), n, nil
-	case protoreflect.MessageKind:
-		if wtyp != protowire.BytesType {
-			return val, 0, errUnknown
-		}
-		v, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return val, 0, errDecode
-		}
-		return protoreflect.ValueOfBytes(v), n, nil
-	case protoreflect.GroupKind:
-		if wtyp != protowire.StartGroupType {
-			return val, 0, errUnknown
-		}
-		v, n := protowire.ConsumeGroup(fd.Number(), b)
-		if n < 0 {
-			return val, 0, errDecode
-		}
-		return protoreflect.ValueOfBytes(v), n, nil
-	default:
-		return val, 0, errUnknown
-	}
-}
-
-func (o UnmarshalOptions) unmarshalList(b []byte, wtyp protowire.Type, list protoreflect.List, fd protoreflect.FieldDescriptor) (n int, err error) {
-	switch fd.Kind() {
-	case protoreflect.BoolKind:
-		if wtyp == protowire.BytesType {
-			buf, n := protowire.ConsumeBytes(b)
-			if n < 0 {
-				return 0, errDecode
-			}
-			for len(buf) > 0 {
-				v, n := protowire.ConsumeVarint(buf)
-				if n < 0 {
-					return 0, errDecode
-				}
-				buf = buf[n:]
-				list.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v)))
-			}
-			return n, nil
-		}
-		if wtyp != protowire.VarintType {
-			return 0, errUnknown
-		}
-		v, n := protowire.ConsumeVarint(b)
-		if n < 0 {
-			return 0, errDecode
-		}
-		list.Append(protoreflect.ValueOfBool(protowire.DecodeBool(v)))
-		return n, nil
-	case protoreflect.EnumKind:
-		if wtyp == protowire.BytesType {
-			buf, n := protowire.ConsumeBytes(b)
-			if n < 0 {
-				return 0, errDecode
-			}
-			for len(buf) > 0 {
-				v, n := protowire.ConsumeVarint(buf)
-				if n < 0 {
-					return 0, errDecode
-				}
-				buf = buf[n:]
-				list.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)))
-			}
-			return n, nil
-		}
-		if wtyp != protowire.VarintType {
-			return 0, errUnknown
-		}
-		v, n := protowire.ConsumeVarint(b)
-		if n < 0 {
-			return 0, errDecode
-		}
-		list.Append(protoreflect.ValueOfEnum(protoreflect.EnumNumber(v)))
-		return n, nil
-	case protoreflect.Int32Kind:
-		if wtyp == protowire.BytesType {
-			buf, n := protowire.ConsumeBytes(b)
-			if n < 0 {
-				return 0, errDecode
-			}
-			for len(buf) > 0 {
-				v, n := protowire.ConsumeVarint(buf)
-				if n < 0 {
-					return 0, errDecode
-				}
-				buf = buf[n:]
-				list.Append(protoreflect.ValueOfInt32(int32(v)))
-			}
-			return n, nil
-		}
-		if wtyp != protowire.VarintType {
-			return 0, errUnknown
-		}
-		v, n := protowire.ConsumeVarint(b)
-		if n < 0 {
-			return 0, errDecode
-		}
-		list.Append(protoreflect.ValueOfInt32(int32(v)))
-		return n, nil
-	case protoreflect.Sint32Kind:
-		if wtyp == protowire.BytesType {
-			buf, n := protowire.ConsumeBytes(b)
-			if n < 0 {
-				return 0, errDecode
-			}
-			for len(buf) > 0 {
-				v, n := protowire.ConsumeVarint(buf)
-				if n < 0 {
-					return 0, errDecode
-				}
-				buf = buf[n:]
-				list.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))))
-			}
-			return n, nil
-		}
-		if wtyp != protowire.VarintType {
-			return 0, errUnknown
-		}
-		v, n := protowire.ConsumeVarint(b)
-		if n < 0 {
-			return 0, errDecode
-		}
-		list.Append(protoreflect.ValueOfInt32(int32(protowire.DecodeZigZag(v & math.MaxUint32))))
-		return n, nil
-	case protoreflect.Uint32Kind:
-		if wtyp == protowire.BytesType {
-			buf, n := protowire.ConsumeBytes(b)
-			if n < 0 {
-				return 0, errDecode
-			}
-			for len(buf) > 0 {
-				v, n := protowire.ConsumeVarint(buf)
-				if n < 0 {
-					return 0, errDecode
-				}
-				buf = buf[n:]
-				list.Append(protoreflect.ValueOfUint32(uint32(v)))
-			}
-			return n, nil
-		}
-		if wtyp != protowire.VarintType {
-			return 0, errUnknown
-		}
-		v, n := protowire.ConsumeVarint(b)
-		if n < 0 {
-			return 0, errDecode
-		}
-		list.Append(protoreflect.ValueOfUint32(uint32(v)))
-		return n, nil
-	case protoreflect.Int64Kind:
-		if wtyp == protowire.BytesType {
-			buf, n := protowire.ConsumeBytes(b)
-			if n < 0 {
-				return 0, errDecode
-			}
-			for len(buf) > 0 {
-				v, n := protowire.ConsumeVarint(buf)
-				if n < 0 {
-					return 0, errDecode
-				}
-				buf = buf[n:]
-				list.Append(protoreflect.ValueOfInt64(int64(v)))
-			}
-			return n, nil
-		}
-		if wtyp != protowire.VarintType {
-			return 0, errUnknown
-		}
-		v, n := protowire.ConsumeVarint(b)
-		if n < 0 {
-			return 0, errDecode
-		}
-		list.Append(protoreflect.ValueOfInt64(int64(v)))
-		return n, nil
-	case protoreflect.Sint64Kind:
-		if wtyp == protowire.BytesType {
-			buf, n := protowire.ConsumeBytes(b)
-			if n < 0 {
-				return 0, errDecode
-			}
-			for len(buf) > 0 {
-				v, n := protowire.ConsumeVarint(buf)
-				if n < 0 {
-					return 0, errDecode
-				}
-				buf = buf[n:]
-				list.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)))
-			}
-			return n, nil
-		}
-		if wtyp != protowire.VarintType {
-			return 0, errUnknown
-		}
-		v, n := protowire.ConsumeVarint(b)
-		if n < 0 {
-			return 0, errDecode
-		}
-		list.Append(protoreflect.ValueOfInt64(protowire.DecodeZigZag(v)))
-		return n, nil
-	case protoreflect.Uint64Kind:
-		if wtyp == protowire.BytesType {
-			buf, n := protowire.ConsumeBytes(b)
-			if n < 0 {
-				return 0, errDecode
-			}
-			for len(buf) > 0 {
-				v, n := protowire.ConsumeVarint(buf)
-				if n < 0 {
-					return 0, errDecode
-				}
-				buf = buf[n:]
-				list.Append(protoreflect.ValueOfUint64(v))
-			}
-			return n, nil
-		}
-		if wtyp != protowire.VarintType {
-			return 0, errUnknown
-		}
-		v, n := protowire.ConsumeVarint(b)
-		if n < 0 {
-			return 0, errDecode
-		}
-		list.Append(protoreflect.ValueOfUint64(v))
-		return n, nil
-	case protoreflect.Sfixed32Kind:
-		if wtyp == protowire.BytesType {
-			buf, n := protowire.ConsumeBytes(b)
-			if n < 0 {
-				return 0, errDecode
-			}
-			for len(buf) > 0 {
-				v, n := protowire.ConsumeFixed32(buf)
-				if n < 0 {
-					return 0, errDecode
-				}
-				buf = buf[n:]
-				list.Append(protoreflect.ValueOfInt32(int32(v)))
-			}
-			return n, nil
-		}
-		if wtyp != protowire.Fixed32Type {
-			return 0, errUnknown
-		}
-		v, n := protowire.ConsumeFixed32(b)
-		if n < 0 {
-			return 0, errDecode
-		}
-		list.Append(protoreflect.ValueOfInt32(int32(v)))
-		return n, nil
-	case protoreflect.Fixed32Kind:
-		if wtyp == protowire.BytesType {
-			buf, n := protowire.ConsumeBytes(b)
-			if n < 0 {
-				return 0, errDecode
-			}
-			for len(buf) > 0 {
-				v, n := protowire.ConsumeFixed32(buf)
-				if n < 0 {
-					return 0, errDecode
-				}
-				buf = buf[n:]
-				list.Append(protoreflect.ValueOfUint32(uint32(v)))
-			}
-			return n, nil
-		}
-		if wtyp != protowire.Fixed32Type {
-			return 0, errUnknown
-		}
-		v, n := protowire.ConsumeFixed32(b)
-		if n < 0 {
-			return 0, errDecode
-		}
-		list.Append(protoreflect.ValueOfUint32(uint32(v)))
-		return n, nil
-	case protoreflect.FloatKind:
-		if wtyp == protowire.BytesType {
-			buf, n := protowire.ConsumeBytes(b)
-			if n < 0 {
-				return 0, errDecode
-			}
-			for len(buf) > 0 {
-				v, n := protowire.ConsumeFixed32(buf)
-				if n < 0 {
-					return 0, errDecode
-				}
-				buf = buf[n:]
-				list.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))))
-			}
-			return n, nil
-		}
-		if wtyp != protowire.Fixed32Type {
-			return 0, errUnknown
-		}
-		v, n := protowire.ConsumeFixed32(b)
-		if n < 0 {
-			return 0, errDecode
-		}
-		list.Append(protoreflect.ValueOfFloat32(math.Float32frombits(uint32(v))))
-		return n, nil
-	case protoreflect.Sfixed64Kind:
-		if wtyp == protowire.BytesType {
-			buf, n := protowire.ConsumeBytes(b)
-			if n < 0 {
-				return 0, errDecode
-			}
-			for len(buf) > 0 {
-				v, n := protowire.ConsumeFixed64(buf)
-				if n < 0 {
-					return 0, errDecode
-				}
-				buf = buf[n:]
-				list.Append(protoreflect.ValueOfInt64(int64(v)))
-			}
-			return n, nil
-		}
-		if wtyp != protowire.Fixed64Type {
-			return 0, errUnknown
-		}
-		v, n := protowire.ConsumeFixed64(b)
-		if n < 0 {
-			return 0, errDecode
-		}
-		list.Append(protoreflect.ValueOfInt64(int64(v)))
-		return n, nil
-	case protoreflect.Fixed64Kind:
-		if wtyp == protowire.BytesType {
-			buf, n := protowire.ConsumeBytes(b)
-			if n < 0 {
-				return 0, errDecode
-			}
-			for len(buf) > 0 {
-				v, n := protowire.ConsumeFixed64(buf)
-				if n < 0 {
-					return 0, errDecode
-				}
-				buf = buf[n:]
-				list.Append(protoreflect.ValueOfUint64(v))
-			}
-			return n, nil
-		}
-		if wtyp != protowire.Fixed64Type {
-			return 0, errUnknown
-		}
-		v, n := protowire.ConsumeFixed64(b)
-		if n < 0 {
-			return 0, errDecode
-		}
-		list.Append(protoreflect.ValueOfUint64(v))
-		return n, nil
-	case protoreflect.DoubleKind:
-		if wtyp == protowire.BytesType {
-			buf, n := protowire.ConsumeBytes(b)
-			if n < 0 {
-				return 0, errDecode
-			}
-			for len(buf) > 0 {
-				v, n := protowire.ConsumeFixed64(buf)
-				if n < 0 {
-					return 0, errDecode
-				}
-				buf = buf[n:]
-				list.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v)))
-			}
-			return n, nil
-		}
-		if wtyp != protowire.Fixed64Type {
-			return 0, errUnknown
-		}
-		v, n := protowire.ConsumeFixed64(b)
-		if n < 0 {
-			return 0, errDecode
-		}
-		list.Append(protoreflect.ValueOfFloat64(math.Float64frombits(v)))
-		return n, nil
-	case protoreflect.StringKind:
-		if wtyp != protowire.BytesType {
-			return 0, errUnknown
-		}
-		v, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return 0, errDecode
-		}
-		if strs.EnforceUTF8(fd) && !utf8.Valid(v) {
-			return 0, errors.InvalidUTF8(string(fd.FullName()))
-		}
-		list.Append(protoreflect.ValueOfString(string(v)))
-		return n, nil
-	case protoreflect.BytesKind:
-		if wtyp != protowire.BytesType {
-			return 0, errUnknown
-		}
-		v, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return 0, errDecode
-		}
-		list.Append(protoreflect.ValueOfBytes(append(emptyBuf[:], v...)))
-		return n, nil
-	case protoreflect.MessageKind:
-		if wtyp != protowire.BytesType {
-			return 0, errUnknown
-		}
-		v, n := protowire.ConsumeBytes(b)
-		if n < 0 {
-			return 0, errDecode
-		}
-		m := list.NewElement()
-		if err := o.unmarshalMessage(v, m.Message()); err != nil {
-			return 0, err
-		}
-		list.Append(m)
-		return n, nil
-	case protoreflect.GroupKind:
-		if wtyp != protowire.StartGroupType {
-			return 0, errUnknown
-		}
-		v, n := protowire.ConsumeGroup(fd.Number(), b)
-		if n < 0 {
-			return 0, errDecode
-		}
-		m := list.NewElement()
-		if err := o.unmarshalMessage(v, m.Message()); err != nil {
-			return 0, err
-		}
-		list.Append(m)
-		return n, nil
-	default:
-		return 0, errUnknown
-	}
-}
-
-// We append to an empty array rather than a nil []byte to get non-nil zero-length byte slices.
-var emptyBuf [0]byte
diff --git a/proto/decode_test.go b/proto/decode_test.go
index 1b2f216..949be3a 100644
--- a/proto/decode_test.go
+++ b/proto/decode_test.go
@@ -1,157 +1,255 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// +build go1.7
 
 package proto_test
 
 import (
-	"bytes"
 	"fmt"
-	"reflect"
 	"testing"
 
-	"google.golang.org/protobuf/encoding/prototext"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/testing/protopack"
-
-	"google.golang.org/protobuf/internal/errors"
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-	test3pb "google.golang.org/protobuf/internal/testprotos/test3"
+	"github.com/golang/protobuf/proto"
+	tpb "github.com/golang/protobuf/proto/proto3_proto"
 )
 
-func TestDecode(t *testing.T) {
-	for _, test := range testValidMessages {
-		if len(test.decodeTo) == 0 {
-			t.Errorf("%v: no test message types", test.desc)
-		}
-		for _, want := range test.decodeTo {
-			t.Run(fmt.Sprintf("%s (%T)", test.desc, want), func(t *testing.T) {
-				opts := test.unmarshalOptions
-				opts.AllowPartial = test.partial
-				wire := append(([]byte)(nil), test.wire...)
-				got := reflect.New(reflect.TypeOf(want).Elem()).Interface().(proto.Message)
-				if err := opts.Unmarshal(wire, got); err != nil {
-					t.Errorf("Unmarshal error: %v\nMessage:\n%v", err, prototext.Format(want))
-					return
-				}
+var msgBlackhole = new(tpb.Message)
 
-				// Aliasing check: Unmarshal shouldn't modify the original wire
-				// bytes, and modifying the original wire bytes shouldn't affect
-				// the unmarshaled message.
-				if !bytes.Equal(test.wire, wire) {
-					t.Errorf("Unmarshal unexpectedly modified its input")
+// BenchmarkVarint32ArraySmall shows the performance on an array of small int32 fields (1 and
+// 2 bytes long).
+func BenchmarkVarint32ArraySmall(b *testing.B) {
+	for i := uint(1); i <= 10; i++ {
+		dist := genInt32Dist([7]int{0, 3, 1}, 1<<i)
+		raw, err := proto.Marshal(&tpb.Message{
+			ShortKey: dist,
+		})
+		if err != nil {
+			b.Error("wrong encode", err)
+		}
+		b.Run(fmt.Sprintf("Len%v", len(dist)), func(b *testing.B) {
+			scratchBuf := proto.NewBuffer(nil)
+			b.ResetTimer()
+			for k := 0; k < b.N; k++ {
+				scratchBuf.SetBuf(raw)
+				msgBlackhole.Reset()
+				if err := scratchBuf.Unmarshal(msgBlackhole); err != nil {
+					b.Error("wrong decode", err)
 				}
-				for i := range wire {
-					wire[i] = 0
+			}
+		})
+	}
+}
+
+// BenchmarkVarint32ArrayLarge shows the performance on an array of large int32 fields (3 and
+// 4 bytes long, with a small number of 1, 2, 5 and 10 byte long versions).
+func BenchmarkVarint32ArrayLarge(b *testing.B) {
+	for i := uint(1); i <= 10; i++ {
+		dist := genInt32Dist([7]int{0, 1, 2, 4, 8, 1, 1}, 1<<i)
+		raw, err := proto.Marshal(&tpb.Message{
+			ShortKey: dist,
+		})
+		if err != nil {
+			b.Error("wrong encode", err)
+		}
+		b.Run(fmt.Sprintf("Len%v", len(dist)), func(b *testing.B) {
+			scratchBuf := proto.NewBuffer(nil)
+			b.ResetTimer()
+			for k := 0; k < b.N; k++ {
+				scratchBuf.SetBuf(raw)
+				msgBlackhole.Reset()
+				if err := scratchBuf.Unmarshal(msgBlackhole); err != nil {
+					b.Error("wrong decode", err)
 				}
-				if !proto.Equal(got, want) && got.ProtoReflect().IsValid() && want.ProtoReflect().IsValid() {
-					t.Errorf("Unmarshal returned unexpected result; got:\n%v\nwant:\n%v", prototext.Format(got), prototext.Format(want))
+			}
+		})
+	}
+}
+
+// BenchmarkVarint64ArraySmall shows the performance on an array of small int64 fields (1 and
+// 2 bytes long).
+func BenchmarkVarint64ArraySmall(b *testing.B) {
+	for i := uint(1); i <= 10; i++ {
+		dist := genUint64Dist([11]int{0, 3, 1}, 1<<i)
+		raw, err := proto.Marshal(&tpb.Message{
+			Key: dist,
+		})
+		if err != nil {
+			b.Error("wrong encode", err)
+		}
+		b.Run(fmt.Sprintf("Len%v", len(dist)), func(b *testing.B) {
+			scratchBuf := proto.NewBuffer(nil)
+			b.ResetTimer()
+			for k := 0; k < b.N; k++ {
+				scratchBuf.SetBuf(raw)
+				msgBlackhole.Reset()
+				if err := scratchBuf.Unmarshal(msgBlackhole); err != nil {
+					b.Error("wrong decode", err)
+				}
+			}
+		})
+	}
+}
+
+// BenchmarkVarint64ArrayLarge shows the performance on an array of large int64 fields (6, 7,
+// and 8 bytes long with a small number of the other sizes).
+func BenchmarkVarint64ArrayLarge(b *testing.B) {
+	for i := uint(1); i <= 10; i++ {
+		dist := genUint64Dist([11]int{0, 1, 1, 2, 4, 8, 16, 32, 16, 1, 1}, 1<<i)
+		raw, err := proto.Marshal(&tpb.Message{
+			Key: dist,
+		})
+		if err != nil {
+			b.Error("wrong encode", err)
+		}
+		b.Run(fmt.Sprintf("Len%v", len(dist)), func(b *testing.B) {
+			scratchBuf := proto.NewBuffer(nil)
+			b.ResetTimer()
+			for k := 0; k < b.N; k++ {
+				scratchBuf.SetBuf(raw)
+				msgBlackhole.Reset()
+				if err := scratchBuf.Unmarshal(msgBlackhole); err != nil {
+					b.Error("wrong decode", err)
+				}
+			}
+		})
+	}
+}
+
+// BenchmarkVarint64ArrayMixed shows the performance of lots of small messages, each
+// containing a small number of large (3, 4, and 5 byte) repeated int64s.
+func BenchmarkVarint64ArrayMixed(b *testing.B) {
+	for i := uint(1); i <= 1<<5; i <<= 1 {
+		dist := genUint64Dist([11]int{0, 0, 0, 4, 6, 4, 0, 0, 0, 0, 0}, int(i))
+		// number of sub fields
+		for k := uint(1); k <= 1<<10; k <<= 2 {
+			msg := &tpb.Message{}
+			for m := uint(0); m < k; m++ {
+				msg.Children = append(msg.Children, &tpb.Message{
+					Key: dist,
+				})
+			}
+			raw, err := proto.Marshal(msg)
+			if err != nil {
+				b.Error("wrong encode", err)
+			}
+			b.Run(fmt.Sprintf("Fields%vLen%v", k, i), func(b *testing.B) {
+				scratchBuf := proto.NewBuffer(nil)
+				b.ResetTimer()
+				for k := 0; k < b.N; k++ {
+					scratchBuf.SetBuf(raw)
+					msgBlackhole.Reset()
+					if err := scratchBuf.Unmarshal(msgBlackhole); err != nil {
+						b.Error("wrong decode", err)
+					}
 				}
 			})
 		}
 	}
 }
 
-func TestDecodeRequiredFieldChecks(t *testing.T) {
-	for _, test := range testValidMessages {
-		if !test.partial {
-			continue
-		}
-		for _, m := range test.decodeTo {
-			t.Run(fmt.Sprintf("%s (%T)", test.desc, m), func(t *testing.T) {
-				opts := test.unmarshalOptions
-				opts.AllowPartial = false
-				got := reflect.New(reflect.TypeOf(m).Elem()).Interface().(proto.Message)
-				if err := proto.Unmarshal(test.wire, got); err == nil {
-					t.Fatalf("Unmarshal succeeded (want error)\nMessage:\n%v", prototext.Format(got))
-				}
-			})
+// genInt32Dist generates a slice of ints that will match the size distribution of dist.
+// A size of 6 corresponds to a max length varint32, which is 10 bytes.  The distribution
+// is 1-indexed. (i.e. the value at index 1 is how many 1 byte ints to create).
+func genInt32Dist(dist [7]int, count int) (dest []int32) {
+	for i := 0; i < count; i++ {
+		for k := 0; k < len(dist); k++ {
+			var num int32
+			switch k {
+			case 1:
+				num = 1<<7 - 1
+			case 2:
+				num = 1<<14 - 1
+			case 3:
+				num = 1<<21 - 1
+			case 4:
+				num = 1<<28 - 1
+			case 5:
+				num = 1<<29 - 1
+			case 6:
+				num = -1
+			}
+			for m := 0; m < dist[k]; m++ {
+				dest = append(dest, num)
+			}
 		}
 	}
+	return
 }
 
-func TestDecodeInvalidMessages(t *testing.T) {
-	for _, test := range testInvalidMessages {
-		if len(test.decodeTo) == 0 {
-			t.Errorf("%v: no test message types", test.desc)
-		}
-		for _, want := range test.decodeTo {
-			t.Run(fmt.Sprintf("%s (%T)", test.desc, want), func(t *testing.T) {
-				opts := test.unmarshalOptions
-				opts.AllowPartial = test.partial
-				got := want.ProtoReflect().New().Interface()
-				if err := opts.Unmarshal(test.wire, got); err == nil {
-					t.Errorf("Unmarshal unexpectedly succeeded\ninput bytes: [%x]\nMessage:\n%v", test.wire, prototext.Format(got))
-				} else if !errors.Is(err, proto.Error) {
-					t.Errorf("Unmarshal error is not a proto.Error: %v", err)
-				}
-			})
+// genUint64Dist generates a slice of ints that will match the size distribution of dist.
+// The distribution is 1-indexed. (i.e. the value at index 1 is how many 1 byte ints to create).
+func genUint64Dist(dist [11]int, count int) (dest []uint64) {
+	for i := 0; i < count; i++ {
+		for k := 0; k < len(dist); k++ {
+			var num uint64
+			switch k {
+			case 1:
+				num = 1<<7 - 1
+			case 2:
+				num = 1<<14 - 1
+			case 3:
+				num = 1<<21 - 1
+			case 4:
+				num = 1<<28 - 1
+			case 5:
+				num = 1<<35 - 1
+			case 6:
+				num = 1<<42 - 1
+			case 7:
+				num = 1<<49 - 1
+			case 8:
+				num = 1<<56 - 1
+			case 9:
+				num = 1<<63 - 1
+			case 10:
+				num = 1<<64 - 1
+			}
+			for m := 0; m < dist[k]; m++ {
+				dest = append(dest, num)
+			}
 		}
 	}
+	return
 }
 
-func TestDecodeZeroLengthBytes(t *testing.T) {
-	// Verify that proto3 bytes fields don't give the mistaken
-	// impression that they preserve presence.
-	wire := protopack.Message{
-		protopack.Tag{94, protopack.BytesType}, protopack.Bytes(nil),
-	}.Marshal()
-	m := &test3pb.TestAllTypes{}
-	if err := proto.Unmarshal(wire, m); err != nil {
-		t.Fatal(err)
+// BenchmarkDecodeEmpty measures the overhead of doing the minimal possible decode.
+func BenchmarkDecodeEmpty(b *testing.B) {
+	raw, err := proto.Marshal(&tpb.Message{})
+	if err != nil {
+		b.Error("wrong encode", err)
 	}
-	if m.OptionalBytes != nil {
-		t.Errorf("unmarshal zero-length proto3 bytes field: got %v, want nil", m.OptionalBytes)
-	}
-}
-
-func TestDecodeOneofNilWrapper(t *testing.T) {
-	wire := protopack.Message{
-		protopack.Tag{111, protopack.VarintType}, protopack.Varint(1111),
-	}.Marshal()
-	m := &testpb.TestAllTypes{OneofField: (*testpb.TestAllTypes_OneofUint32)(nil)}
-	if err := proto.Unmarshal(wire, m); err != nil {
-		t.Fatal(err)
-	}
-	if got := m.GetOneofUint32(); got != 1111 {
-		t.Errorf("GetOneofUint32() = %v, want %v", got, 1111)
-	}
-}
-
-func TestDecodeEmptyBytes(t *testing.T) {
-	// There's really nothing wrong with a nil entry in a [][]byte,
-	// but we take care to produce non-nil []bytes for zero-length
-	// byte strings, so test for it.
-	m := &testpb.TestAllTypes{}
-	b := protopack.Message{
-		protopack.Tag{45, protopack.BytesType}, protopack.Bytes(nil),
-	}.Marshal()
-	if err := proto.Unmarshal(b, m); err != nil {
-		t.Fatal(err)
-	}
-	if m.RepeatedBytes[0] == nil {
-		t.Errorf("unmarshaling repeated bytes field containing zero-length value: Got nil bytes, want non-nil")
-	}
-}
-
-func build(m proto.Message, opts ...buildOpt) proto.Message {
-	for _, opt := range opts {
-		opt(m)
-	}
-	return m
-}
-
-type buildOpt func(proto.Message)
-
-func unknown(raw protoreflect.RawFields) buildOpt {
-	return func(m proto.Message) {
-		m.ProtoReflect().SetUnknown(raw)
-	}
-}
-
-func extend(desc protoreflect.ExtensionType, value interface{}) buildOpt {
-	return func(m proto.Message) {
-		proto.SetExtension(m, desc, value)
+	b.ResetTimer()
+	for i := 0; i < b.N; i++ {
+		if err := proto.Unmarshal(raw, msgBlackhole); err != nil {
+			b.Error("wrong decode", err)
+		}
 	}
 }
diff --git a/proto/deprecated.go b/proto/deprecated.go
new file mode 100644
index 0000000..35b882c
--- /dev/null
+++ b/proto/deprecated.go
@@ -0,0 +1,63 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2018 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto
+
+import "errors"
+
+// Deprecated: do not use.
+type Stats struct{ Emalloc, Dmalloc, Encode, Decode, Chit, Cmiss, Size uint64 }
+
+// Deprecated: do not use.
+func GetStats() Stats { return Stats{} }
+
+// Deprecated: do not use.
+func MarshalMessageSet(interface{}) ([]byte, error) {
+	return nil, errors.New("proto: not implemented")
+}
+
+// Deprecated: do not use.
+func UnmarshalMessageSet([]byte, interface{}) error {
+	return errors.New("proto: not implemented")
+}
+
+// Deprecated: do not use.
+func MarshalMessageSetJSON(interface{}) ([]byte, error) {
+	return nil, errors.New("proto: not implemented")
+}
+
+// Deprecated: do not use.
+func UnmarshalMessageSetJSON([]byte, interface{}) error {
+	return errors.New("proto: not implemented")
+}
+
+// Deprecated: do not use.
+func RegisterMessageSetType(Message, int32, string) {}
diff --git a/proto/discard.go b/proto/discard.go
new file mode 100644
index 0000000..dea2617
--- /dev/null
+++ b/proto/discard.go
@@ -0,0 +1,350 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2017 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto
+
+import (
+	"fmt"
+	"reflect"
+	"strings"
+	"sync"
+	"sync/atomic"
+)
+
+type generatedDiscarder interface {
+	XXX_DiscardUnknown()
+}
+
+// DiscardUnknown recursively discards all unknown fields from this message
+// and all embedded messages.
+//
+// When unmarshaling a message with unrecognized fields, the tags and values
+// of such fields are preserved in the Message. This allows a later call to
+// marshal to be able to produce a message that continues to have those
+// unrecognized fields. To avoid this, DiscardUnknown is used to
+// explicitly clear the unknown fields after unmarshaling.
+//
+// For proto2 messages, the unknown fields of message extensions are only
+// discarded from messages that have been accessed via GetExtension.
+func DiscardUnknown(m Message) {
+	if m, ok := m.(generatedDiscarder); ok {
+		m.XXX_DiscardUnknown()
+		return
+	}
+	// TODO: Dynamically populate a InternalMessageInfo for legacy messages,
+	// but the master branch has no implementation for InternalMessageInfo,
+	// so it would be more work to replicate that approach.
+	discardLegacy(m)
+}
+
+// DiscardUnknown recursively discards all unknown fields.
+func (a *InternalMessageInfo) DiscardUnknown(m Message) {
+	di := atomicLoadDiscardInfo(&a.discard)
+	if di == nil {
+		di = getDiscardInfo(reflect.TypeOf(m).Elem())
+		atomicStoreDiscardInfo(&a.discard, di)
+	}
+	di.discard(toPointer(&m))
+}
+
+type discardInfo struct {
+	typ reflect.Type
+
+	initialized int32 // 0: only typ is valid, 1: everything is valid
+	lock        sync.Mutex
+
+	fields       []discardFieldInfo
+	unrecognized field
+}
+
+type discardFieldInfo struct {
+	field   field // Offset of field, guaranteed to be valid
+	discard func(src pointer)
+}
+
+var (
+	discardInfoMap  = map[reflect.Type]*discardInfo{}
+	discardInfoLock sync.Mutex
+)
+
+func getDiscardInfo(t reflect.Type) *discardInfo {
+	discardInfoLock.Lock()
+	defer discardInfoLock.Unlock()
+	di := discardInfoMap[t]
+	if di == nil {
+		di = &discardInfo{typ: t}
+		discardInfoMap[t] = di
+	}
+	return di
+}
+
+func (di *discardInfo) discard(src pointer) {
+	if src.isNil() {
+		return // Nothing to do.
+	}
+
+	if atomic.LoadInt32(&di.initialized) == 0 {
+		di.computeDiscardInfo()
+	}
+
+	for _, fi := range di.fields {
+		sfp := src.offset(fi.field)
+		fi.discard(sfp)
+	}
+
+	// For proto2 messages, only discard unknown fields in message extensions
+	// that have been accessed via GetExtension.
+	if em, err := extendable(src.asPointerTo(di.typ).Interface()); err == nil {
+		// Ignore lock since DiscardUnknown is not concurrency safe.
+		emm, _ := em.extensionsRead()
+		for _, mx := range emm {
+			if m, ok := mx.value.(Message); ok {
+				DiscardUnknown(m)
+			}
+		}
+	}
+
+	if di.unrecognized.IsValid() {
+		*src.offset(di.unrecognized).toBytes() = nil
+	}
+}
+
+func (di *discardInfo) computeDiscardInfo() {
+	di.lock.Lock()
+	defer di.lock.Unlock()
+	if di.initialized != 0 {
+		return
+	}
+	t := di.typ
+	n := t.NumField()
+
+	for i := 0; i < n; i++ {
+		f := t.Field(i)
+		if strings.HasPrefix(f.Name, "XXX_") {
+			continue
+		}
+
+		dfi := discardFieldInfo{field: toField(&f)}
+		tf := f.Type
+
+		// Unwrap tf to get its most basic type.
+		var isPointer, isSlice bool
+		if tf.Kind() == reflect.Slice && tf.Elem().Kind() != reflect.Uint8 {
+			isSlice = true
+			tf = tf.Elem()
+		}
+		if tf.Kind() == reflect.Ptr {
+			isPointer = true
+			tf = tf.Elem()
+		}
+		if isPointer && isSlice && tf.Kind() != reflect.Struct {
+			panic(fmt.Sprintf("%v.%s cannot be a slice of pointers to primitive types", t, f.Name))
+		}
+
+		switch tf.Kind() {
+		case reflect.Struct:
+			switch {
+			case !isPointer:
+				panic(fmt.Sprintf("%v.%s cannot be a direct struct value", t, f.Name))
+			case isSlice: // E.g., []*pb.T
+				di := getDiscardInfo(tf)
+				dfi.discard = func(src pointer) {
+					sps := src.getPointerSlice()
+					for _, sp := range sps {
+						if !sp.isNil() {
+							di.discard(sp)
+						}
+					}
+				}
+			default: // E.g., *pb.T
+				di := getDiscardInfo(tf)
+				dfi.discard = func(src pointer) {
+					sp := src.getPointer()
+					if !sp.isNil() {
+						di.discard(sp)
+					}
+				}
+			}
+		case reflect.Map:
+			switch {
+			case isPointer || isSlice:
+				panic(fmt.Sprintf("%v.%s cannot be a pointer to a map or a slice of map values", t, f.Name))
+			default: // E.g., map[K]V
+				if tf.Elem().Kind() == reflect.Ptr { // Proto struct (e.g., *T)
+					dfi.discard = func(src pointer) {
+						sm := src.asPointerTo(tf).Elem()
+						if sm.Len() == 0 {
+							return
+						}
+						for _, key := range sm.MapKeys() {
+							val := sm.MapIndex(key)
+							DiscardUnknown(val.Interface().(Message))
+						}
+					}
+				} else {
+					dfi.discard = func(pointer) {} // Noop
+				}
+			}
+		case reflect.Interface:
+			// Must be oneof field.
+			switch {
+			case isPointer || isSlice:
+				panic(fmt.Sprintf("%v.%s cannot be a pointer to a interface or a slice of interface values", t, f.Name))
+			default: // E.g., interface{}
+				// TODO: Make this faster?
+				dfi.discard = func(src pointer) {
+					su := src.asPointerTo(tf).Elem()
+					if !su.IsNil() {
+						sv := su.Elem().Elem().Field(0)
+						if sv.Kind() == reflect.Ptr && sv.IsNil() {
+							return
+						}
+						switch sv.Type().Kind() {
+						case reflect.Ptr: // Proto struct (e.g., *T)
+							DiscardUnknown(sv.Interface().(Message))
+						}
+					}
+				}
+			}
+		default:
+			continue
+		}
+		di.fields = append(di.fields, dfi)
+	}
+
+	di.unrecognized = invalidField
+	if f, ok := t.FieldByName("XXX_unrecognized"); ok {
+		if f.Type != reflect.TypeOf([]byte{}) {
+			panic("expected XXX_unrecognized to be of type []byte")
+		}
+		di.unrecognized = toField(&f)
+	}
+
+	atomic.StoreInt32(&di.initialized, 1)
+}
+
+func discardLegacy(m Message) {
+	v := reflect.ValueOf(m)
+	if v.Kind() != reflect.Ptr || v.IsNil() {
+		return
+	}
+	v = v.Elem()
+	if v.Kind() != reflect.Struct {
+		return
+	}
+	t := v.Type()
+
+	for i := 0; i < v.NumField(); i++ {
+		f := t.Field(i)
+		if strings.HasPrefix(f.Name, "XXX_") {
+			continue
+		}
+		vf := v.Field(i)
+		tf := f.Type
+
+		// Unwrap tf to get its most basic type.
+		var isPointer, isSlice bool
+		if tf.Kind() == reflect.Slice && tf.Elem().Kind() != reflect.Uint8 {
+			isSlice = true
+			tf = tf.Elem()
+		}
+		if tf.Kind() == reflect.Ptr {
+			isPointer = true
+			tf = tf.Elem()
+		}
+		if isPointer && isSlice && tf.Kind() != reflect.Struct {
+			panic(fmt.Sprintf("%T.%s cannot be a slice of pointers to primitive types", m, f.Name))
+		}
+
+		switch tf.Kind() {
+		case reflect.Struct:
+			switch {
+			case !isPointer:
+				panic(fmt.Sprintf("%T.%s cannot be a direct struct value", m, f.Name))
+			case isSlice: // E.g., []*pb.T
+				for j := 0; j < vf.Len(); j++ {
+					discardLegacy(vf.Index(j).Interface().(Message))
+				}
+			default: // E.g., *pb.T
+				discardLegacy(vf.Interface().(Message))
+			}
+		case reflect.Map:
+			switch {
+			case isPointer || isSlice:
+				panic(fmt.Sprintf("%T.%s cannot be a pointer to a map or a slice of map values", m, f.Name))
+			default: // E.g., map[K]V
+				tv := vf.Type().Elem()
+				if tv.Kind() == reflect.Ptr && tv.Implements(protoMessageType) { // Proto struct (e.g., *T)
+					for _, key := range vf.MapKeys() {
+						val := vf.MapIndex(key)
+						discardLegacy(val.Interface().(Message))
+					}
+				}
+			}
+		case reflect.Interface:
+			// Must be oneof field.
+			switch {
+			case isPointer || isSlice:
+				panic(fmt.Sprintf("%T.%s cannot be a pointer to a interface or a slice of interface values", m, f.Name))
+			default: // E.g., test_proto.isCommunique_Union interface
+				if !vf.IsNil() && f.Tag.Get("protobuf_oneof") != "" {
+					vf = vf.Elem() // E.g., *test_proto.Communique_Msg
+					if !vf.IsNil() {
+						vf = vf.Elem()   // E.g., test_proto.Communique_Msg
+						vf = vf.Field(0) // E.g., Proto struct (e.g., *T) or primitive value
+						if vf.Kind() == reflect.Ptr {
+							discardLegacy(vf.Interface().(Message))
+						}
+					}
+				}
+			}
+		}
+	}
+
+	if vf := v.FieldByName("XXX_unrecognized"); vf.IsValid() {
+		if vf.Type() != reflect.TypeOf([]byte{}) {
+			panic("expected XXX_unrecognized to be of type []byte")
+		}
+		vf.Set(reflect.ValueOf([]byte(nil)))
+	}
+
+	// For proto2 messages, only discard unknown fields in message extensions
+	// that have been accessed via GetExtension.
+	if em, err := extendable(m); err == nil {
+		// Ignore lock since discardLegacy is not concurrency safe.
+		emm, _ := em.extensionsRead()
+		for _, mx := range emm {
+			if m, ok := mx.value.(Message); ok {
+				discardLegacy(m)
+			}
+		}
+	}
+}
diff --git a/proto/discard_test.go b/proto/discard_test.go
new file mode 100644
index 0000000..a2ff550
--- /dev/null
+++ b/proto/discard_test.go
@@ -0,0 +1,170 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2017 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto_test
+
+import (
+	"testing"
+
+	"github.com/golang/protobuf/proto"
+
+	proto3pb "github.com/golang/protobuf/proto/proto3_proto"
+	pb "github.com/golang/protobuf/proto/test_proto"
+)
+
+func TestDiscardUnknown(t *testing.T) {
+	tests := []struct {
+		desc     string
+		in, want proto.Message
+	}{{
+		desc: "Nil",
+		in:   nil, want: nil, // Should not panic
+	}, {
+		desc: "NilPtr",
+		in:   (*proto3pb.Message)(nil), want: (*proto3pb.Message)(nil), // Should not panic
+	}, {
+		desc: "Nested",
+		in: &proto3pb.Message{
+			Name:             "Aaron",
+			Nested:           &proto3pb.Nested{Cute: true, XXX_unrecognized: []byte("blah")},
+			XXX_unrecognized: []byte("blah"),
+		},
+		want: &proto3pb.Message{
+			Name:   "Aaron",
+			Nested: &proto3pb.Nested{Cute: true},
+		},
+	}, {
+		desc: "Slice",
+		in: &proto3pb.Message{
+			Name: "Aaron",
+			Children: []*proto3pb.Message{
+				{Name: "Sarah", XXX_unrecognized: []byte("blah")},
+				{Name: "Abraham", XXX_unrecognized: []byte("blah")},
+			},
+			XXX_unrecognized: []byte("blah"),
+		},
+		want: &proto3pb.Message{
+			Name: "Aaron",
+			Children: []*proto3pb.Message{
+				{Name: "Sarah"},
+				{Name: "Abraham"},
+			},
+		},
+	}, {
+		desc: "OneOf",
+		in: &pb.Communique{
+			Union: &pb.Communique_Msg{&pb.Strings{
+				StringField:      proto.String("123"),
+				XXX_unrecognized: []byte("blah"),
+			}},
+			XXX_unrecognized: []byte("blah"),
+		},
+		want: &pb.Communique{
+			Union: &pb.Communique_Msg{&pb.Strings{StringField: proto.String("123")}},
+		},
+	}, {
+		desc: "Map",
+		in: &pb.MessageWithMap{MsgMapping: map[int64]*pb.FloatingPoint{
+			0x4002: &pb.FloatingPoint{
+				Exact:            proto.Bool(true),
+				XXX_unrecognized: []byte("blah"),
+			},
+		}},
+		want: &pb.MessageWithMap{MsgMapping: map[int64]*pb.FloatingPoint{
+			0x4002: &pb.FloatingPoint{Exact: proto.Bool(true)},
+		}},
+	}, {
+		desc: "Extension",
+		in: func() proto.Message {
+			m := &pb.MyMessage{
+				Count: proto.Int32(42),
+				Somegroup: &pb.MyMessage_SomeGroup{
+					GroupField:       proto.Int32(6),
+					XXX_unrecognized: []byte("blah"),
+				},
+				XXX_unrecognized: []byte("blah"),
+			}
+			proto.SetExtension(m, pb.E_Ext_More, &pb.Ext{
+				Data:             proto.String("extension"),
+				XXX_unrecognized: []byte("blah"),
+			})
+			return m
+		}(),
+		want: func() proto.Message {
+			m := &pb.MyMessage{
+				Count:     proto.Int32(42),
+				Somegroup: &pb.MyMessage_SomeGroup{GroupField: proto.Int32(6)},
+			}
+			proto.SetExtension(m, pb.E_Ext_More, &pb.Ext{Data: proto.String("extension")})
+			return m
+		}(),
+	}}
+
+	// Test the legacy code path.
+	for _, tt := range tests {
+		// Clone the input so that we don't alter the original.
+		in := tt.in
+		if in != nil {
+			in = proto.Clone(tt.in)
+		}
+
+		var m LegacyMessage
+		m.Message, _ = in.(*proto3pb.Message)
+		m.Communique, _ = in.(*pb.Communique)
+		m.MessageWithMap, _ = in.(*pb.MessageWithMap)
+		m.MyMessage, _ = in.(*pb.MyMessage)
+		proto.DiscardUnknown(&m)
+		if !proto.Equal(in, tt.want) {
+			t.Errorf("test %s/Legacy, expected unknown fields to be discarded\ngot  %v\nwant %v", tt.desc, in, tt.want)
+		}
+	}
+
+	for _, tt := range tests {
+		proto.DiscardUnknown(tt.in)
+		if !proto.Equal(tt.in, tt.want) {
+			t.Errorf("test %s, expected unknown fields to be discarded\ngot  %v\nwant %v", tt.desc, tt.in, tt.want)
+		}
+	}
+}
+
+// LegacyMessage is a proto.Message that has several nested messages.
+// This does not have the XXX_DiscardUnknown method and so forces DiscardUnknown
+// to use the legacy fallback logic.
+type LegacyMessage struct {
+	Message        *proto3pb.Message
+	Communique     *pb.Communique
+	MessageWithMap *pb.MessageWithMap
+	MyMessage      *pb.MyMessage
+}
+
+func (m *LegacyMessage) Reset()         { *m = LegacyMessage{} }
+func (m *LegacyMessage) String() string { return proto.CompactTextString(m) }
+func (*LegacyMessage) ProtoMessage()    {}
diff --git a/proto/doc.go b/proto/doc.go
deleted file mode 100644
index c52d8c4..0000000
--- a/proto/doc.go
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package proto provides functions operating on protocol buffer messages.
-//
-// For documentation on protocol buffers in general, see:
-//
-//   https://developers.google.com/protocol-buffers
-//
-// For a tutorial on using protocol buffers with Go, see:
-//
-//   https://developers.google.com/protocol-buffers/docs/gotutorial
-//
-// For a guide to generated Go protocol buffer code, see:
-//
-//   https://developers.google.com/protocol-buffers/docs/reference/go-generated
-//
-//
-// Binary serialization
-//
-// This package contains functions to convert to and from the wire format,
-// an efficient binary serialization of protocol buffers.
-//
-// • Size reports the size of a message in the wire format.
-//
-// • Marshal converts a message to the wire format.
-// The MarshalOptions type provides more control over wire marshaling.
-//
-// • Unmarshal converts a message from the wire format.
-// The UnmarshalOptions type provides more control over wire unmarshaling.
-//
-//
-// Basic message operations
-//
-// • Clone makes a deep copy of a message.
-//
-// • Merge merges the content of a message into another.
-//
-// • Equal compares two messages. For more control over comparisons
-// and detailed reporting of differences, see package
-// "google.golang.org/protobuf/testing/protocmp".
-//
-// • Reset clears the content of a message.
-//
-// • CheckInitialized reports whether all required fields in a message are set.
-//
-//
-// Optional scalar constructors
-//
-// The API for some generated messages represents optional scalar fields
-// as pointers to a value. For example, an optional string field has the
-// Go type *string.
-//
-// • Bool, Int32, Int64, Uint32, Uint64, Float32, Float64, and String
-// take a value and return a pointer to a new instance of it,
-// to simplify construction of optional field values.
-//
-// Generated enum types usually have an Enum method which performs the
-// same operation.
-//
-// Optional scalar fields are only supported in proto2.
-//
-//
-// Extension accessors
-//
-// • HasExtension, GetExtension, SetExtension, and ClearExtension
-// access extension field values in a protocol buffer message.
-//
-// Extension fields are only supported in proto2.
-//
-//
-// Related packages
-//
-// • Package "google.golang.org/protobuf/encoding/protojson" converts messages to
-// and from JSON.
-//
-// • Package "google.golang.org/protobuf/encoding/prototext" converts messages to
-// and from the text format.
-//
-// • Package "google.golang.org/protobuf/reflect/protoreflect" provides a
-// reflection interface for protocol buffer data types.
-//
-// • Package "google.golang.org/protobuf/testing/protocmp" provides features
-// to compare protocol buffer messages with the "github.com/google/go-cmp/cmp"
-// package.
-//
-// • Package "google.golang.org/protobuf/types/dynamicpb" provides a dynamic
-// message type, suitable for working with messages where the protocol buffer
-// type is only known at runtime.
-//
-// This module contains additional packages for more specialized use cases.
-// Consult the individual package documentation for details.
-package proto
diff --git a/proto/encode.go b/proto/encode.go
index d18239c..3abfed2 100644
--- a/proto/encode.go
+++ b/proto/encode.go
@@ -1,319 +1,203 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 package proto
 
+/*
+ * Routines for encoding data into the wire format for protocol buffers.
+ */
+
 import (
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/encoding/messageset"
-	"google.golang.org/protobuf/internal/order"
-	"google.golang.org/protobuf/internal/pragma"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/runtime/protoiface"
+	"errors"
+	"reflect"
 )
 
-// MarshalOptions configures the marshaler.
-//
-// Example usage:
-//   b, err := MarshalOptions{Deterministic: true}.Marshal(m)
-type MarshalOptions struct {
-	pragma.NoUnkeyedLiterals
+var (
+	// errRepeatedHasNil is the error returned if Marshal is called with
+	// a struct with a repeated field containing a nil element.
+	errRepeatedHasNil = errors.New("proto: repeated field has nil element")
 
-	// AllowPartial allows messages that have missing required fields to marshal
-	// without returning an error. If AllowPartial is false (the default),
-	// Marshal will return an error if there are any missing required fields.
-	AllowPartial bool
+	// errOneofHasNil is the error returned if Marshal is called with
+	// a struct with a oneof field containing a nil element.
+	errOneofHasNil = errors.New("proto: oneof field has nil value")
 
-	// Deterministic controls whether the same message will always be
-	// serialized to the same bytes within the same binary.
-	//
-	// Setting this option guarantees that repeated serialization of
-	// the same message will return the same bytes, and that different
-	// processes of the same binary (which may be executing on different
-	// machines) will serialize equal messages to the same bytes.
-	// It has no effect on the resulting size of the encoded message compared
-	// to a non-deterministic marshal.
-	//
-	// Note that the deterministic serialization is NOT canonical across
-	// languages. It is not guaranteed to remain stable over time. It is
-	// unstable across different builds with schema changes due to unknown
-	// fields. Users who need canonical serialization (e.g., persistent
-	// storage in a canonical form, fingerprinting, etc.) must define
-	// their own canonicalization specification and implement their own
-	// serializer rather than relying on this API.
-	//
-	// If deterministic serialization is requested, map entries will be
-	// sorted by keys in lexographical order. This is an implementation
-	// detail and subject to change.
-	Deterministic bool
+	// ErrNil is the error returned if Marshal is called with nil.
+	ErrNil = errors.New("proto: Marshal called with nil")
 
-	// UseCachedSize indicates that the result of a previous Size call
-	// may be reused.
-	//
-	// Setting this option asserts that:
-	//
-	// 1. Size has previously been called on this message with identical
-	// options (except for UseCachedSize itself).
-	//
-	// 2. The message and all its submessages have not changed in any
-	// way since the Size call.
-	//
-	// If either of these invariants is violated,
-	// the results are undefined and may include panics or corrupted output.
-	//
-	// Implementations MAY take this option into account to provide
-	// better performance, but there is no guarantee that they will do so.
-	// There is absolutely no guarantee that Size followed by Marshal with
-	// UseCachedSize set will perform equivalently to Marshal alone.
-	UseCachedSize bool
+	// ErrTooLarge is the error returned if Marshal is called with a
+	// message that encodes to >2GB.
+	ErrTooLarge = errors.New("proto: message encodes to over 2 GB")
+)
+
+// The fundamental encoders that put bytes on the wire.
+// Those that take integer types all accept uint64 and are
+// therefore of type valueEncoder.
+
+const maxVarintBytes = 10 // maximum length of a varint
+
+// EncodeVarint returns the varint encoding of x.
+// This is the format for the
+// int32, int64, uint32, uint64, bool, and enum
+// protocol buffer types.
+// Not used by the package itself, but helpful to clients
+// wishing to use the same encoding.
+func EncodeVarint(x uint64) []byte {
+	var buf [maxVarintBytes]byte
+	var n int
+	for n = 0; x > 127; n++ {
+		buf[n] = 0x80 | uint8(x&0x7F)
+		x >>= 7
+	}
+	buf[n] = uint8(x)
+	n++
+	return buf[0:n]
 }
 
-// Marshal returns the wire-format encoding of m.
-func Marshal(m Message) ([]byte, error) {
-	// Treat nil message interface as an empty message; nothing to output.
-	if m == nil {
-		return nil, nil
+// EncodeVarint writes a varint-encoded integer to the Buffer.
+// This is the format for the
+// int32, int64, uint32, uint64, bool, and enum
+// protocol buffer types.
+func (p *Buffer) EncodeVarint(x uint64) error {
+	for x >= 1<<7 {
+		p.buf = append(p.buf, uint8(x&0x7f|0x80))
+		x >>= 7
 	}
-
-	out, err := MarshalOptions{}.marshal(nil, m.ProtoReflect())
-	if len(out.Buf) == 0 && err == nil {
-		out.Buf = emptyBytesForMessage(m)
-	}
-	return out.Buf, err
+	p.buf = append(p.buf, uint8(x))
+	return nil
 }
 
-// Marshal returns the wire-format encoding of m.
-func (o MarshalOptions) Marshal(m Message) ([]byte, error) {
-	// Treat nil message interface as an empty message; nothing to output.
-	if m == nil {
-		return nil, nil
-	}
-
-	out, err := o.marshal(nil, m.ProtoReflect())
-	if len(out.Buf) == 0 && err == nil {
-		out.Buf = emptyBytesForMessage(m)
-	}
-	return out.Buf, err
-}
-
-// emptyBytesForMessage returns a nil buffer if and only if m is invalid,
-// otherwise it returns a non-nil empty buffer.
-//
-// This is to assist the edge-case where user-code does the following:
-//	m1.OptionalBytes, _ = proto.Marshal(m2)
-// where they expect the proto2 "optional_bytes" field to be populated
-// if any only if m2 is a valid message.
-func emptyBytesForMessage(m Message) []byte {
-	if m == nil || !m.ProtoReflect().IsValid() {
-		return nil
-	}
-	return emptyBuf[:]
-}
-
-// MarshalAppend appends the wire-format encoding of m to b,
-// returning the result.
-func (o MarshalOptions) MarshalAppend(b []byte, m Message) ([]byte, error) {
-	// Treat nil message interface as an empty message; nothing to append.
-	if m == nil {
-		return b, nil
-	}
-
-	out, err := o.marshal(b, m.ProtoReflect())
-	return out.Buf, err
-}
-
-// MarshalState returns the wire-format encoding of a message.
-//
-// This method permits fine-grained control over the marshaler.
-// Most users should use Marshal instead.
-func (o MarshalOptions) MarshalState(in protoiface.MarshalInput) (protoiface.MarshalOutput, error) {
-	return o.marshal(in.Buf, in.Message)
-}
-
-// marshal is a centralized function that all marshal operations go through.
-// For profiling purposes, avoid changing the name of this function or
-// introducing other code paths for marshal that do not go through this.
-func (o MarshalOptions) marshal(b []byte, m protoreflect.Message) (out protoiface.MarshalOutput, err error) {
-	allowPartial := o.AllowPartial
-	o.AllowPartial = true
-	if methods := protoMethods(m); methods != nil && methods.Marshal != nil &&
-		!(o.Deterministic && methods.Flags&protoiface.SupportMarshalDeterministic == 0) {
-		in := protoiface.MarshalInput{
-			Message: m,
-			Buf:     b,
-		}
-		if o.Deterministic {
-			in.Flags |= protoiface.MarshalDeterministic
-		}
-		if o.UseCachedSize {
-			in.Flags |= protoiface.MarshalUseCachedSize
-		}
-		if methods.Size != nil {
-			sout := methods.Size(protoiface.SizeInput{
-				Message: m,
-				Flags:   in.Flags,
-			})
-			if cap(b) < len(b)+sout.Size {
-				in.Buf = make([]byte, len(b), growcap(cap(b), len(b)+sout.Size))
-				copy(in.Buf, b)
-			}
-			in.Flags |= protoiface.MarshalUseCachedSize
-		}
-		out, err = methods.Marshal(in)
-	} else {
-		out.Buf, err = o.marshalMessageSlow(b, m)
-	}
-	if err != nil {
-		return out, err
-	}
-	if allowPartial {
-		return out, nil
-	}
-	return out, checkInitialized(m)
-}
-
-func (o MarshalOptions) marshalMessage(b []byte, m protoreflect.Message) ([]byte, error) {
-	out, err := o.marshal(b, m)
-	return out.Buf, err
-}
-
-// growcap scales up the capacity of a slice.
-//
-// Given a slice with a current capacity of oldcap and a desired
-// capacity of wantcap, growcap returns a new capacity >= wantcap.
-//
-// The algorithm is mostly identical to the one used by append as of Go 1.14.
-func growcap(oldcap, wantcap int) (newcap int) {
-	if wantcap > oldcap*2 {
-		newcap = wantcap
-	} else if oldcap < 1024 {
-		// The Go 1.14 runtime takes this case when len(s) < 1024,
-		// not when cap(s) < 1024. The difference doesn't seem
-		// significant here.
-		newcap = oldcap * 2
-	} else {
-		newcap = oldcap
-		for 0 < newcap && newcap < wantcap {
-			newcap += newcap / 4
-		}
-		if newcap <= 0 {
-			newcap = wantcap
-		}
-	}
-	return newcap
-}
-
-func (o MarshalOptions) marshalMessageSlow(b []byte, m protoreflect.Message) ([]byte, error) {
-	if messageset.IsMessageSet(m.Descriptor()) {
-		return o.marshalMessageSet(b, m)
-	}
-	fieldOrder := order.AnyFieldOrder
-	if o.Deterministic {
-		// TODO: This should use a more natural ordering like NumberFieldOrder,
-		// but doing so breaks golden tests that make invalid assumption about
-		// output stability of this implementation.
-		fieldOrder = order.LegacyFieldOrder
-	}
-	var err error
-	order.RangeFields(m, fieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {
-		b, err = o.marshalField(b, fd, v)
-		return err == nil
-	})
-	if err != nil {
-		return b, err
-	}
-	b = append(b, m.GetUnknown()...)
-	return b, nil
-}
-
-func (o MarshalOptions) marshalField(b []byte, fd protoreflect.FieldDescriptor, value protoreflect.Value) ([]byte, error) {
+// SizeVarint returns the varint encoding size of an integer.
+func SizeVarint(x uint64) int {
 	switch {
-	case fd.IsList():
-		return o.marshalList(b, fd, value.List())
-	case fd.IsMap():
-		return o.marshalMap(b, fd, value.Map())
-	default:
-		b = protowire.AppendTag(b, fd.Number(), wireTypes[fd.Kind()])
-		return o.marshalSingular(b, fd, value)
+	case x < 1<<7:
+		return 1
+	case x < 1<<14:
+		return 2
+	case x < 1<<21:
+		return 3
+	case x < 1<<28:
+		return 4
+	case x < 1<<35:
+		return 5
+	case x < 1<<42:
+		return 6
+	case x < 1<<49:
+		return 7
+	case x < 1<<56:
+		return 8
+	case x < 1<<63:
+		return 9
 	}
+	return 10
 }
 
-func (o MarshalOptions) marshalList(b []byte, fd protoreflect.FieldDescriptor, list protoreflect.List) ([]byte, error) {
-	if fd.IsPacked() && list.Len() > 0 {
-		b = protowire.AppendTag(b, fd.Number(), protowire.BytesType)
-		b, pos := appendSpeculativeLength(b)
-		for i, llen := 0, list.Len(); i < llen; i++ {
-			var err error
-			b, err = o.marshalSingular(b, fd, list.Get(i))
-			if err != nil {
-				return b, err
-			}
-		}
-		b = finishSpeculativeLength(b, pos)
-		return b, nil
-	}
-
-	kind := fd.Kind()
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		var err error
-		b = protowire.AppendTag(b, fd.Number(), wireTypes[kind])
-		b, err = o.marshalSingular(b, fd, list.Get(i))
-		if err != nil {
-			return b, err
-		}
-	}
-	return b, nil
+// EncodeFixed64 writes a 64-bit integer to the Buffer.
+// This is the format for the
+// fixed64, sfixed64, and double protocol buffer types.
+func (p *Buffer) EncodeFixed64(x uint64) error {
+	p.buf = append(p.buf,
+		uint8(x),
+		uint8(x>>8),
+		uint8(x>>16),
+		uint8(x>>24),
+		uint8(x>>32),
+		uint8(x>>40),
+		uint8(x>>48),
+		uint8(x>>56))
+	return nil
 }
 
-func (o MarshalOptions) marshalMap(b []byte, fd protoreflect.FieldDescriptor, mapv protoreflect.Map) ([]byte, error) {
-	keyf := fd.MapKey()
-	valf := fd.MapValue()
-	keyOrder := order.AnyKeyOrder
-	if o.Deterministic {
-		keyOrder = order.GenericKeyOrder
-	}
-	var err error
-	order.RangeEntries(mapv, keyOrder, func(key protoreflect.MapKey, value protoreflect.Value) bool {
-		b = protowire.AppendTag(b, fd.Number(), protowire.BytesType)
-		var pos int
-		b, pos = appendSpeculativeLength(b)
-
-		b, err = o.marshalField(b, keyf, key.Value())
-		if err != nil {
-			return false
-		}
-		b, err = o.marshalField(b, valf, value)
-		if err != nil {
-			return false
-		}
-		b = finishSpeculativeLength(b, pos)
-		return true
-	})
-	return b, err
+// EncodeFixed32 writes a 32-bit integer to the Buffer.
+// This is the format for the
+// fixed32, sfixed32, and float protocol buffer types.
+func (p *Buffer) EncodeFixed32(x uint64) error {
+	p.buf = append(p.buf,
+		uint8(x),
+		uint8(x>>8),
+		uint8(x>>16),
+		uint8(x>>24))
+	return nil
 }
 
-// When encoding length-prefixed fields, we speculatively set aside some number of bytes
-// for the length, encode the data, and then encode the length (shifting the data if necessary
-// to make room).
-const speculativeLength = 1
-
-func appendSpeculativeLength(b []byte) ([]byte, int) {
-	pos := len(b)
-	b = append(b, "\x00\x00\x00\x00"[:speculativeLength]...)
-	return b, pos
+// EncodeZigzag64 writes a zigzag-encoded 64-bit integer
+// to the Buffer.
+// This is the format used for the sint64 protocol buffer type.
+func (p *Buffer) EncodeZigzag64(x uint64) error {
+	// use signed number to get arithmetic right shift.
+	return p.EncodeVarint(uint64((x << 1) ^ uint64((int64(x) >> 63))))
 }
 
-func finishSpeculativeLength(b []byte, pos int) []byte {
-	mlen := len(b) - pos - speculativeLength
-	msiz := protowire.SizeVarint(uint64(mlen))
-	if msiz != speculativeLength {
-		for i := 0; i < msiz-speculativeLength; i++ {
-			b = append(b, 0)
-		}
-		copy(b[pos+msiz:], b[pos+speculativeLength:])
-		b = b[:pos+msiz+mlen]
+// EncodeZigzag32 writes a zigzag-encoded 32-bit integer
+// to the Buffer.
+// This is the format used for the sint32 protocol buffer type.
+func (p *Buffer) EncodeZigzag32(x uint64) error {
+	// use signed number to get arithmetic right shift.
+	return p.EncodeVarint(uint64((uint32(x) << 1) ^ uint32((int32(x) >> 31))))
+}
+
+// EncodeRawBytes writes a count-delimited byte buffer to the Buffer.
+// This is the format used for the bytes protocol buffer
+// type and for embedded messages.
+func (p *Buffer) EncodeRawBytes(b []byte) error {
+	p.EncodeVarint(uint64(len(b)))
+	p.buf = append(p.buf, b...)
+	return nil
+}
+
+// EncodeStringBytes writes an encoded string to the Buffer.
+// This is the format used for the proto2 string type.
+func (p *Buffer) EncodeStringBytes(s string) error {
+	p.EncodeVarint(uint64(len(s)))
+	p.buf = append(p.buf, s...)
+	return nil
+}
+
+// Marshaler is the interface representing objects that can marshal themselves.
+type Marshaler interface {
+	Marshal() ([]byte, error)
+}
+
+// EncodeMessage writes the protocol buffer to the Buffer,
+// prefixed by a varint-encoded length.
+func (p *Buffer) EncodeMessage(pb Message) error {
+	siz := Size(pb)
+	p.EncodeVarint(uint64(siz))
+	return p.Marshal(pb)
+}
+
+// All protocol buffer fields are nillable, but be careful.
+func isNil(v reflect.Value) bool {
+	switch v.Kind() {
+	case reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice:
+		return v.IsNil()
 	}
-	protowire.AppendVarint(b[:pos], uint64(mlen))
-	return b
+	return false
 }
diff --git a/proto/encode_gen.go b/proto/encode_gen.go
deleted file mode 100644
index 185dacf..0000000
--- a/proto/encode_gen.go
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by generate-types. DO NOT EDIT.
-
-package proto
-
-import (
-	"math"
-	"unicode/utf8"
-
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/internal/strs"
-	"google.golang.org/protobuf/reflect/protoreflect"
-)
-
-var wireTypes = map[protoreflect.Kind]protowire.Type{
-	protoreflect.BoolKind:     protowire.VarintType,
-	protoreflect.EnumKind:     protowire.VarintType,
-	protoreflect.Int32Kind:    protowire.VarintType,
-	protoreflect.Sint32Kind:   protowire.VarintType,
-	protoreflect.Uint32Kind:   protowire.VarintType,
-	protoreflect.Int64Kind:    protowire.VarintType,
-	protoreflect.Sint64Kind:   protowire.VarintType,
-	protoreflect.Uint64Kind:   protowire.VarintType,
-	protoreflect.Sfixed32Kind: protowire.Fixed32Type,
-	protoreflect.Fixed32Kind:  protowire.Fixed32Type,
-	protoreflect.FloatKind:    protowire.Fixed32Type,
-	protoreflect.Sfixed64Kind: protowire.Fixed64Type,
-	protoreflect.Fixed64Kind:  protowire.Fixed64Type,
-	protoreflect.DoubleKind:   protowire.Fixed64Type,
-	protoreflect.StringKind:   protowire.BytesType,
-	protoreflect.BytesKind:    protowire.BytesType,
-	protoreflect.MessageKind:  protowire.BytesType,
-	protoreflect.GroupKind:    protowire.StartGroupType,
-}
-
-func (o MarshalOptions) marshalSingular(b []byte, fd protoreflect.FieldDescriptor, v protoreflect.Value) ([]byte, error) {
-	switch fd.Kind() {
-	case protoreflect.BoolKind:
-		b = protowire.AppendVarint(b, protowire.EncodeBool(v.Bool()))
-	case protoreflect.EnumKind:
-		b = protowire.AppendVarint(b, uint64(v.Enum()))
-	case protoreflect.Int32Kind:
-		b = protowire.AppendVarint(b, uint64(int32(v.Int())))
-	case protoreflect.Sint32Kind:
-		b = protowire.AppendVarint(b, protowire.EncodeZigZag(int64(int32(v.Int()))))
-	case protoreflect.Uint32Kind:
-		b = protowire.AppendVarint(b, uint64(uint32(v.Uint())))
-	case protoreflect.Int64Kind:
-		b = protowire.AppendVarint(b, uint64(v.Int()))
-	case protoreflect.Sint64Kind:
-		b = protowire.AppendVarint(b, protowire.EncodeZigZag(v.Int()))
-	case protoreflect.Uint64Kind:
-		b = protowire.AppendVarint(b, v.Uint())
-	case protoreflect.Sfixed32Kind:
-		b = protowire.AppendFixed32(b, uint32(v.Int()))
-	case protoreflect.Fixed32Kind:
-		b = protowire.AppendFixed32(b, uint32(v.Uint()))
-	case protoreflect.FloatKind:
-		b = protowire.AppendFixed32(b, math.Float32bits(float32(v.Float())))
-	case protoreflect.Sfixed64Kind:
-		b = protowire.AppendFixed64(b, uint64(v.Int()))
-	case protoreflect.Fixed64Kind:
-		b = protowire.AppendFixed64(b, v.Uint())
-	case protoreflect.DoubleKind:
-		b = protowire.AppendFixed64(b, math.Float64bits(v.Float()))
-	case protoreflect.StringKind:
-		if strs.EnforceUTF8(fd) && !utf8.ValidString(v.String()) {
-			return b, errors.InvalidUTF8(string(fd.FullName()))
-		}
-		b = protowire.AppendString(b, v.String())
-	case protoreflect.BytesKind:
-		b = protowire.AppendBytes(b, v.Bytes())
-	case protoreflect.MessageKind:
-		var pos int
-		var err error
-		b, pos = appendSpeculativeLength(b)
-		b, err = o.marshalMessage(b, v.Message())
-		if err != nil {
-			return b, err
-		}
-		b = finishSpeculativeLength(b, pos)
-	case protoreflect.GroupKind:
-		var err error
-		b, err = o.marshalMessage(b, v.Message())
-		if err != nil {
-			return b, err
-		}
-		b = protowire.AppendVarint(b, protowire.EncodeTag(fd.Number(), protowire.EndGroupType))
-	default:
-		return b, errors.New("invalid kind %v", fd.Kind())
-	}
-	return b, nil
-}
diff --git a/proto/encode_test.go b/proto/encode_test.go
index 967def7..1909f11 100644
--- a/proto/encode_test.go
+++ b/proto/encode_test.go
@@ -1,278 +1,85 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// +build go1.7
 
 package proto_test
 
 import (
-	"bytes"
-	"fmt"
-	"math"
-	"reflect"
+	"strconv"
 	"testing"
 
-	"github.com/google/go-cmp/cmp"
-
-	"google.golang.org/protobuf/encoding/prototext"
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/proto"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-
-	"google.golang.org/protobuf/internal/errors"
-	orderpb "google.golang.org/protobuf/internal/testprotos/order"
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-	test3pb "google.golang.org/protobuf/internal/testprotos/test3"
+	"github.com/golang/protobuf/proto"
+	tpb "github.com/golang/protobuf/proto/proto3_proto"
+	"github.com/golang/protobuf/ptypes"
 )
 
-func TestEncode(t *testing.T) {
-	for _, test := range testValidMessages {
-		for _, want := range test.decodeTo {
-			t.Run(fmt.Sprintf("%s (%T)", test.desc, want), func(t *testing.T) {
-				opts := proto.MarshalOptions{
-					AllowPartial: test.partial,
+var (
+	blackhole []byte
+)
+
+// BenchmarkAny creates increasingly large arbitrary Any messages.  The type is always the
+// same.
+func BenchmarkAny(b *testing.B) {
+	data := make([]byte, 1<<20)
+	quantum := 1 << 10
+	for i := uint(0); i <= 10; i++ {
+		b.Run(strconv.Itoa(quantum<<i), func(b *testing.B) {
+			for k := 0; k < b.N; k++ {
+				inner := &tpb.Message{
+					Data: data[:quantum<<i],
 				}
-				wire, err := opts.Marshal(want)
+				outer, err := ptypes.MarshalAny(inner)
 				if err != nil {
-					t.Fatalf("Marshal error: %v\nMessage:\n%v", err, prototext.Format(want))
+					b.Error("wrong encode", err)
 				}
-
-				size := proto.Size(want)
-				if size != len(wire) {
-					t.Errorf("Size and marshal disagree: Size(m)=%v; len(Marshal(m))=%v\nMessage:\n%v", size, len(wire), prototext.Format(want))
-				}
-
-				got := want.ProtoReflect().New().Interface()
-				uopts := proto.UnmarshalOptions{
-					AllowPartial: test.partial,
-				}
-				if err := uopts.Unmarshal(wire, got); err != nil {
-					t.Errorf("Unmarshal error: %v\nMessage:\n%v", err, prototext.Format(want))
-					return
-				}
-				if !proto.Equal(got, want) && got.ProtoReflect().IsValid() && want.ProtoReflect().IsValid() {
-					t.Errorf("Unmarshal returned unexpected result; got:\n%v\nwant:\n%v", prototext.Format(got), prototext.Format(want))
-				}
-			})
-		}
-	}
-}
-
-func TestEncodeDeterministic(t *testing.T) {
-	for _, test := range testValidMessages {
-		for _, want := range test.decodeTo {
-			t.Run(fmt.Sprintf("%s (%T)", test.desc, want), func(t *testing.T) {
-				opts := proto.MarshalOptions{
-					Deterministic: true,
-					AllowPartial:  test.partial,
-				}
-				wire, err := opts.Marshal(want)
+				raw, err := proto.Marshal(&tpb.Message{
+					Anything: outer,
+				})
 				if err != nil {
-					t.Fatalf("Marshal error: %v\nMessage:\n%v", err, prototext.Format(want))
+					b.Error("wrong encode", err)
 				}
-				wire2, err := opts.Marshal(want)
-				if err != nil {
-					t.Fatalf("Marshal error: %v\nMessage:\n%v", err, prototext.Format(want))
-				}
-				if !bytes.Equal(wire, wire2) {
-					t.Fatalf("deterministic marshal returned varying results:\n%v", cmp.Diff(wire, wire2))
-				}
-
-				got := want.ProtoReflect().New().Interface()
-				uopts := proto.UnmarshalOptions{
-					AllowPartial: test.partial,
-				}
-				if err := uopts.Unmarshal(wire, got); err != nil {
-					t.Errorf("Unmarshal error: %v\nMessage:\n%v", err, prototext.Format(want))
-					return
-				}
-				if !proto.Equal(got, want) && got.ProtoReflect().IsValid() && want.ProtoReflect().IsValid() {
-					t.Errorf("Unmarshal returned unexpected result; got:\n%v\nwant:\n%v", prototext.Format(got), prototext.Format(want))
-				}
-			})
-		}
-	}
-}
-
-func TestEncodeRequiredFieldChecks(t *testing.T) {
-	for _, test := range testValidMessages {
-		if !test.partial {
-			continue
-		}
-		for _, m := range test.decodeTo {
-			t.Run(fmt.Sprintf("%s (%T)", test.desc, m), func(t *testing.T) {
-				_, err := proto.Marshal(m)
-				if err == nil {
-					t.Fatalf("Marshal succeeded (want error)\nMessage:\n%v", prototext.Format(m))
-				}
-			})
-		}
-	}
-}
-
-func TestEncodeAppend(t *testing.T) {
-	want := []byte("prefix")
-	got := append([]byte(nil), want...)
-	got, err := proto.MarshalOptions{}.MarshalAppend(got, &test3pb.TestAllTypes{
-		SingularString: "value",
-	})
-	if err != nil {
-		t.Fatal(err)
-	}
-	if !bytes.HasPrefix(got, want) {
-		t.Fatalf("MarshalAppend modified prefix: got %v, want prefix %v", got, want)
-	}
-}
-
-func TestEncodeInvalidMessages(t *testing.T) {
-	for _, test := range testInvalidMessages {
-		for _, m := range test.decodeTo {
-			if !m.ProtoReflect().IsValid() {
-				continue
+				blackhole = raw
 			}
-			t.Run(fmt.Sprintf("%s (%T)", test.desc, m), func(t *testing.T) {
-				opts := proto.MarshalOptions{
-					AllowPartial: test.partial,
-				}
-				got, err := opts.Marshal(m)
-				if err == nil {
-					t.Fatalf("Marshal unexpectedly succeeded\noutput bytes: [%x]\nMessage:\n%v", got, prototext.Format(m))
-				}
-				if !errors.Is(err, proto.Error) {
-					t.Fatalf("Marshal error is not a proto.Error: %v", err)
-				}
-			})
-		}
+		})
 	}
 }
 
-func TestEncodeOneofNilWrapper(t *testing.T) {
-	m := &testpb.TestAllTypes{OneofField: (*testpb.TestAllTypes_OneofUint32)(nil)}
-	b, err := proto.Marshal(m)
-	if err != nil {
-		t.Fatal(err)
-	}
-	if len(b) > 0 {
-		t.Errorf("Marshal return non-empty, want empty")
-	}
-}
-
-func TestMarshalAppendAllocations(t *testing.T) {
-	m := &test3pb.TestAllTypes{SingularInt32: 1}
-	size := proto.Size(m)
-	const count = 1000
-	b := make([]byte, size)
-	// AllocsPerRun returns an integral value.
-	marshalAllocs := testing.AllocsPerRun(count, func() {
-		_, err := proto.MarshalOptions{}.MarshalAppend(b[:0], m)
+// BenchmarkEmpty measures the overhead of doing the minimal possible encode.
+func BenchmarkEmpty(b *testing.B) {
+	for i := 0; i < b.N; i++ {
+		raw, err := proto.Marshal(&tpb.Message{})
 		if err != nil {
-			t.Fatal(err)
+			b.Error("wrong encode", err)
 		}
-	})
-	b = nil
-	marshalAppendAllocs := testing.AllocsPerRun(count, func() {
-		var err error
-		b, err = proto.MarshalOptions{}.MarshalAppend(b, m)
-		if err != nil {
-			t.Fatal(err)
-		}
-	})
-	if marshalAllocs != marshalAppendAllocs {
-		t.Errorf("%v allocs/op when writing to a preallocated buffer", marshalAllocs)
-		t.Errorf("%v allocs/op when repeatedly appending to a slice", marshalAppendAllocs)
-		t.Errorf("expect amortized allocs/op to be identical")
-	}
-}
-
-func TestEncodeOrder(t *testing.T) {
-	// We make no guarantees about the stability of wire marshal output.
-	// The order in which fields are marshaled may change over time.
-	// If deterministic marshaling is not enabled, it may change over
-	// successive calls to proto.Marshal in the same binary.
-	//
-	// Unfortunately, many users have come to rely on the specific current
-	// wire marshal output. Perhaps someday we will choose to deliberately
-	// change the marshal output; until that day comes, this test verifies
-	// that we don't unintentionally change it.
-	m := &orderpb.Message{
-		Field_1:  proto.String("one"),
-		Field_2:  proto.String("two"),
-		Field_20: proto.String("twenty"),
-		Oneof_1:  &orderpb.Message_Field_10{"ten"},
-	}
-	proto.SetExtension(m, orderpb.E_Field_30, "thirty")
-	proto.SetExtension(m, orderpb.E_Field_31, "thirty-one")
-	proto.SetExtension(m, orderpb.E_Field_32, "thirty-two")
-	want := []pref.FieldNumber{
-		30, 31, 32, // extensions first, in number order
-		1, 2, 20, // non-extension, non-oneof in number order
-		10, // oneofs last, undefined order
-	}
-
-	// Test with deterministic serialization, since fields are not sorted without
-	// it when -tags=protoreflect.
-	b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-	if err != nil {
-		t.Fatal(err)
-	}
-	var got []pref.FieldNumber
-	for len(b) > 0 {
-		num, _, n := protowire.ConsumeField(b)
-		if n < 0 {
-			t.Fatal(protowire.ParseError(n))
-		}
-		b = b[n:]
-		got = append(got, num)
-	}
-	if !reflect.DeepEqual(got, want) {
-		t.Errorf("unexpected field marshal order:\ngot:  %v\nwant: %v\nmessage:\n%v", got, want, m)
-	}
-}
-
-func TestEncodeLarge(t *testing.T) {
-	// Encode/decode a message large enough to overflow a 32-bit size cache.
-	t.Skip("too slow and memory-hungry to run all the time")
-	size := int64(math.MaxUint32 + 1)
-	m := &testpb.TestAllTypes_NestedMessage{
-		Corecursive: &testpb.TestAllTypes{
-			OptionalBytes: make([]byte, size),
-		},
-	}
-	b, err := proto.Marshal(m)
-	if err != nil {
-		t.Fatalf("Marshal: %v", err)
-	}
-	if got, want := len(b), proto.Size(m); got != want {
-		t.Fatalf("Size(m) = %v, but len(Marshal(m)) = %v", got, want)
-	}
-	if err := proto.Unmarshal(b, m); err != nil {
-		t.Fatalf("Unmarshal: %v", err)
-	}
-	if got, want := int64(len(m.Corecursive.OptionalBytes)), size; got != want {
-		t.Errorf("after round-trip marshal, got len(m.OptionalBytes) = %v, want %v", got, want)
-	}
-}
-
-// TestEncodeEmpty tests for boundary conditions when producing an empty output.
-// These tests are not necessarily a statement of proper behavior,
-// but exist to detect accidental changes in behavior.
-func TestEncodeEmpty(t *testing.T) {
-	for _, m := range []proto.Message{nil, (*testpb.TestAllTypes)(nil), &testpb.TestAllTypes{}} {
-		isValid := m != nil && m.ProtoReflect().IsValid()
-
-		b, err := proto.Marshal(m)
-		if err != nil {
-			t.Errorf("proto.Marshal() = %v", err)
-		}
-		if isNil := b == nil; isNil == isValid {
-			t.Errorf("proto.Marshal() == nil: %v, want %v", isNil, !isValid)
-		}
-
-		b, err = proto.MarshalOptions{}.Marshal(m)
-		if err != nil {
-			t.Errorf("proto.MarshalOptions{}.Marshal() = %v", err)
-		}
-		if isNil := b == nil; isNil == isValid {
-			t.Errorf("proto.MarshalOptions{}.Marshal() = %v, want %v", isNil, !isValid)
-		}
+		blackhole = raw
 	}
 }
diff --git a/proto/equal.go b/proto/equal.go
index 4dba2b9..f9b6e41 100644
--- a/proto/equal.go
+++ b/proto/equal.go
@@ -1,167 +1,301 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2011 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Protocol buffer comparison.
 
 package proto
 
 import (
 	"bytes"
-	"math"
+	"log"
 	"reflect"
-
-	"google.golang.org/protobuf/encoding/protowire"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
+	"strings"
 )
 
-// Equal reports whether two messages are equal.
-// If two messages marshal to the same bytes under deterministic serialization,
-// then Equal is guaranteed to report true.
-//
-// Two messages are equal if they belong to the same message descriptor,
-// have the same set of populated known and extension field values,
-// and the same set of unknown fields values. If either of the top-level
-// messages are invalid, then Equal reports true only if both are invalid.
-//
-// Scalar values are compared with the equivalent of the == operator in Go,
-// except bytes values which are compared using bytes.Equal and
-// floating point values which specially treat NaNs as equal.
-// Message values are compared by recursively calling Equal.
-// Lists are equal if each element value is also equal.
-// Maps are equal if they have the same set of keys, where the pair of values
-// for each key is also equal.
-func Equal(x, y Message) bool {
-	if x == nil || y == nil {
-		return x == nil && y == nil
+/*
+Equal returns true iff protocol buffers a and b are equal.
+The arguments must both be pointers to protocol buffer structs.
+
+Equality is defined in this way:
+  - Two messages are equal iff they are the same type,
+    corresponding fields are equal, unknown field sets
+    are equal, and extensions sets are equal.
+  - Two set scalar fields are equal iff their values are equal.
+    If the fields are of a floating-point type, remember that
+    NaN != x for all x, including NaN. If the message is defined
+    in a proto3 .proto file, fields are not "set"; specifically,
+    zero length proto3 "bytes" fields are equal (nil == {}).
+  - Two repeated fields are equal iff their lengths are the same,
+    and their corresponding elements are equal. Note a "bytes" field,
+    although represented by []byte, is not a repeated field and the
+    rule for the scalar fields described above applies.
+  - Two unset fields are equal.
+  - Two unknown field sets are equal if their current
+    encoded state is equal.
+  - Two extension sets are equal iff they have corresponding
+    elements that are pairwise equal.
+  - Two map fields are equal iff their lengths are the same,
+    and they contain the same set of elements. Zero-length map
+    fields are equal.
+  - Every other combination of things are not equal.
+
+The return value is undefined if a and b are not protocol buffers.
+*/
+func Equal(a, b Message) bool {
+	if a == nil || b == nil {
+		return a == b
 	}
-	mx := x.ProtoReflect()
-	my := y.ProtoReflect()
-	if mx.IsValid() != my.IsValid() {
+	v1, v2 := reflect.ValueOf(a), reflect.ValueOf(b)
+	if v1.Type() != v2.Type() {
 		return false
 	}
-	return equalMessage(mx, my)
+	if v1.Kind() == reflect.Ptr {
+		if v1.IsNil() {
+			return v2.IsNil()
+		}
+		if v2.IsNil() {
+			return false
+		}
+		v1, v2 = v1.Elem(), v2.Elem()
+	}
+	if v1.Kind() != reflect.Struct {
+		return false
+	}
+	return equalStruct(v1, v2)
 }
 
-// equalMessage compares two messages.
-func equalMessage(mx, my pref.Message) bool {
-	if mx.Descriptor() != my.Descriptor() {
-		return false
-	}
-
-	nx := 0
-	equal := true
-	mx.Range(func(fd pref.FieldDescriptor, vx pref.Value) bool {
-		nx++
-		vy := my.Get(fd)
-		equal = my.Has(fd) && equalField(fd, vx, vy)
-		return equal
-	})
-	if !equal {
-		return false
-	}
-	ny := 0
-	my.Range(func(fd pref.FieldDescriptor, vx pref.Value) bool {
-		ny++
-		return true
-	})
-	if nx != ny {
-		return false
-	}
-
-	return equalUnknown(mx.GetUnknown(), my.GetUnknown())
-}
-
-// equalField compares two fields.
-func equalField(fd pref.FieldDescriptor, x, y pref.Value) bool {
-	switch {
-	case fd.IsList():
-		return equalList(fd, x.List(), y.List())
-	case fd.IsMap():
-		return equalMap(fd, x.Map(), y.Map())
-	default:
-		return equalValue(fd, x, y)
-	}
-}
-
-// equalMap compares two maps.
-func equalMap(fd pref.FieldDescriptor, x, y pref.Map) bool {
-	if x.Len() != y.Len() {
-		return false
-	}
-	equal := true
-	x.Range(func(k pref.MapKey, vx pref.Value) bool {
-		vy := y.Get(k)
-		equal = y.Has(k) && equalValue(fd.MapValue(), vx, vy)
-		return equal
-	})
-	return equal
-}
-
-// equalList compares two lists.
-func equalList(fd pref.FieldDescriptor, x, y pref.List) bool {
-	if x.Len() != y.Len() {
-		return false
-	}
-	for i := x.Len() - 1; i >= 0; i-- {
-		if !equalValue(fd, x.Get(i), y.Get(i)) {
+// v1 and v2 are known to have the same type.
+func equalStruct(v1, v2 reflect.Value) bool {
+	sprop := GetProperties(v1.Type())
+	for i := 0; i < v1.NumField(); i++ {
+		f := v1.Type().Field(i)
+		if strings.HasPrefix(f.Name, "XXX_") {
+			continue
+		}
+		f1, f2 := v1.Field(i), v2.Field(i)
+		if f.Type.Kind() == reflect.Ptr {
+			if n1, n2 := f1.IsNil(), f2.IsNil(); n1 && n2 {
+				// both unset
+				continue
+			} else if n1 != n2 {
+				// set/unset mismatch
+				return false
+			}
+			f1, f2 = f1.Elem(), f2.Elem()
+		}
+		if !equalAny(f1, f2, sprop.Prop[i]) {
 			return false
 		}
 	}
-	return true
-}
 
-// equalValue compares two singular values.
-func equalValue(fd pref.FieldDescriptor, x, y pref.Value) bool {
-	switch fd.Kind() {
-	case pref.BoolKind:
-		return x.Bool() == y.Bool()
-	case pref.EnumKind:
-		return x.Enum() == y.Enum()
-	case pref.Int32Kind, pref.Sint32Kind,
-		pref.Int64Kind, pref.Sint64Kind,
-		pref.Sfixed32Kind, pref.Sfixed64Kind:
-		return x.Int() == y.Int()
-	case pref.Uint32Kind, pref.Uint64Kind,
-		pref.Fixed32Kind, pref.Fixed64Kind:
-		return x.Uint() == y.Uint()
-	case pref.FloatKind, pref.DoubleKind:
-		fx := x.Float()
-		fy := y.Float()
-		if math.IsNaN(fx) || math.IsNaN(fy) {
-			return math.IsNaN(fx) && math.IsNaN(fy)
+	if em1 := v1.FieldByName("XXX_InternalExtensions"); em1.IsValid() {
+		em2 := v2.FieldByName("XXX_InternalExtensions")
+		if !equalExtensions(v1.Type(), em1.Interface().(XXX_InternalExtensions), em2.Interface().(XXX_InternalExtensions)) {
+			return false
 		}
-		return fx == fy
-	case pref.StringKind:
-		return x.String() == y.String()
-	case pref.BytesKind:
-		return bytes.Equal(x.Bytes(), y.Bytes())
-	case pref.MessageKind, pref.GroupKind:
-		return equalMessage(x.Message(), y.Message())
-	default:
-		return x.Interface() == y.Interface()
 	}
-}
 
-// equalUnknown compares unknown fields by direct comparison on the raw bytes
-// of each individual field number.
-func equalUnknown(x, y pref.RawFields) bool {
-	if len(x) != len(y) {
-		return false
+	if em1 := v1.FieldByName("XXX_extensions"); em1.IsValid() {
+		em2 := v2.FieldByName("XXX_extensions")
+		if !equalExtMap(v1.Type(), em1.Interface().(map[int32]Extension), em2.Interface().(map[int32]Extension)) {
+			return false
+		}
 	}
-	if bytes.Equal([]byte(x), []byte(y)) {
+
+	uf := v1.FieldByName("XXX_unrecognized")
+	if !uf.IsValid() {
 		return true
 	}
 
-	mx := make(map[pref.FieldNumber]pref.RawFields)
-	my := make(map[pref.FieldNumber]pref.RawFields)
-	for len(x) > 0 {
-		fnum, _, n := protowire.ConsumeField(x)
-		mx[fnum] = append(mx[fnum], x[:n]...)
-		x = x[n:]
+	u1 := uf.Bytes()
+	u2 := v2.FieldByName("XXX_unrecognized").Bytes()
+	return bytes.Equal(u1, u2)
+}
+
+// v1 and v2 are known to have the same type.
+// prop may be nil.
+func equalAny(v1, v2 reflect.Value, prop *Properties) bool {
+	if v1.Type() == protoMessageType {
+		m1, _ := v1.Interface().(Message)
+		m2, _ := v2.Interface().(Message)
+		return Equal(m1, m2)
 	}
-	for len(y) > 0 {
-		fnum, _, n := protowire.ConsumeField(y)
-		my[fnum] = append(my[fnum], y[:n]...)
-		y = y[n:]
+	switch v1.Kind() {
+	case reflect.Bool:
+		return v1.Bool() == v2.Bool()
+	case reflect.Float32, reflect.Float64:
+		return v1.Float() == v2.Float()
+	case reflect.Int32, reflect.Int64:
+		return v1.Int() == v2.Int()
+	case reflect.Interface:
+		// Probably a oneof field; compare the inner values.
+		n1, n2 := v1.IsNil(), v2.IsNil()
+		if n1 || n2 {
+			return n1 == n2
+		}
+		e1, e2 := v1.Elem(), v2.Elem()
+		if e1.Type() != e2.Type() {
+			return false
+		}
+		return equalAny(e1, e2, nil)
+	case reflect.Map:
+		if v1.Len() != v2.Len() {
+			return false
+		}
+		for _, key := range v1.MapKeys() {
+			val2 := v2.MapIndex(key)
+			if !val2.IsValid() {
+				// This key was not found in the second map.
+				return false
+			}
+			if !equalAny(v1.MapIndex(key), val2, nil) {
+				return false
+			}
+		}
+		return true
+	case reflect.Ptr:
+		// Maps may have nil values in them, so check for nil.
+		if v1.IsNil() && v2.IsNil() {
+			return true
+		}
+		if v1.IsNil() != v2.IsNil() {
+			return false
+		}
+		return equalAny(v1.Elem(), v2.Elem(), prop)
+	case reflect.Slice:
+		if v1.Type().Elem().Kind() == reflect.Uint8 {
+			// short circuit: []byte
+
+			// Edge case: if this is in a proto3 message, a zero length
+			// bytes field is considered the zero value.
+			if prop != nil && prop.proto3 && v1.Len() == 0 && v2.Len() == 0 {
+				return true
+			}
+			if v1.IsNil() != v2.IsNil() {
+				return false
+			}
+			return bytes.Equal(v1.Interface().([]byte), v2.Interface().([]byte))
+		}
+
+		if v1.Len() != v2.Len() {
+			return false
+		}
+		for i := 0; i < v1.Len(); i++ {
+			if !equalAny(v1.Index(i), v2.Index(i), prop) {
+				return false
+			}
+		}
+		return true
+	case reflect.String:
+		return v1.Interface().(string) == v2.Interface().(string)
+	case reflect.Struct:
+		return equalStruct(v1, v2)
+	case reflect.Uint32, reflect.Uint64:
+		return v1.Uint() == v2.Uint()
 	}
-	return reflect.DeepEqual(mx, my)
+
+	// unknown type, so not a protocol buffer
+	log.Printf("proto: don't know how to compare %v", v1)
+	return false
+}
+
+// base is the struct type that the extensions are based on.
+// x1 and x2 are InternalExtensions.
+func equalExtensions(base reflect.Type, x1, x2 XXX_InternalExtensions) bool {
+	em1, _ := x1.extensionsRead()
+	em2, _ := x2.extensionsRead()
+	return equalExtMap(base, em1, em2)
+}
+
+func equalExtMap(base reflect.Type, em1, em2 map[int32]Extension) bool {
+	if len(em1) != len(em2) {
+		return false
+	}
+
+	for extNum, e1 := range em1 {
+		e2, ok := em2[extNum]
+		if !ok {
+			return false
+		}
+
+		m1 := extensionAsLegacyType(e1.value)
+		m2 := extensionAsLegacyType(e2.value)
+
+		if m1 == nil && m2 == nil {
+			// Both have only encoded form.
+			if bytes.Equal(e1.enc, e2.enc) {
+				continue
+			}
+			// The bytes are different, but the extensions might still be
+			// equal. We need to decode them to compare.
+		}
+
+		if m1 != nil && m2 != nil {
+			// Both are unencoded.
+			if !equalAny(reflect.ValueOf(m1), reflect.ValueOf(m2), nil) {
+				return false
+			}
+			continue
+		}
+
+		// At least one is encoded. To do a semantically correct comparison
+		// we need to unmarshal them first.
+		var desc *ExtensionDesc
+		if m := extensionMaps[base]; m != nil {
+			desc = m[extNum]
+		}
+		if desc == nil {
+			// If both have only encoded form and the bytes are the same,
+			// it is handled above. We get here when the bytes are different.
+			// We don't know how to decode it, so just compare them as byte
+			// slices.
+			log.Printf("proto: don't know how to compare extension %d of %v", extNum, base)
+			return false
+		}
+		var err error
+		if m1 == nil {
+			m1, err = decodeExtension(e1.enc, desc)
+		}
+		if m2 == nil && err == nil {
+			m2, err = decodeExtension(e2.enc, desc)
+		}
+		if err != nil {
+			// The encoded form is invalid.
+			log.Printf("proto: badly encoded extension %d of %v: %v", extNum, base, err)
+			return false
+		}
+		if !equalAny(reflect.ValueOf(m1), reflect.ValueOf(m2), nil) {
+			return false
+		}
+	}
+
+	return true
 }
diff --git a/proto/equal_test.go b/proto/equal_test.go
index 2def30f..93ff88f 100644
--- a/proto/equal_test.go
+++ b/proto/equal_test.go
@@ -1,564 +1,244 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2011 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 package proto_test
 
 import (
-	"math"
 	"testing"
 
-	"google.golang.org/protobuf/encoding/prototext"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/testing/protopack"
-
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-	test3pb "google.golang.org/protobuf/internal/testprotos/test3"
+	. "github.com/golang/protobuf/proto"
+	proto3pb "github.com/golang/protobuf/proto/proto3_proto"
+	pb "github.com/golang/protobuf/proto/test_proto"
 )
 
-func TestEqual(t *testing.T) {
-	tests := []struct {
-		x, y proto.Message
-		eq   bool
-	}{
-		{
-			x:  nil,
-			y:  nil,
-			eq: true,
-		}, {
-			x:  (*testpb.TestAllTypes)(nil),
-			y:  nil,
-			eq: false,
-		}, {
-			x:  (*testpb.TestAllTypes)(nil),
-			y:  (*testpb.TestAllTypes)(nil),
-			eq: true,
-		}, {
-			x:  new(testpb.TestAllTypes),
-			y:  (*testpb.TestAllTypes)(nil),
-			eq: false,
-		}, {
-			x:  new(testpb.TestAllTypes),
-			y:  new(testpb.TestAllTypes),
-			eq: true,
-		}, {
-			x:  (*testpb.TestAllTypes)(nil),
-			y:  (*testpb.TestAllExtensions)(nil),
-			eq: false,
-		}, {
-			x:  (*testpb.TestAllTypes)(nil),
-			y:  new(testpb.TestAllExtensions),
-			eq: false,
-		}, {
-			x:  new(testpb.TestAllTypes),
-			y:  new(testpb.TestAllExtensions),
-			eq: false,
-		},
+// Four identical base messages.
+// The init function adds extensions to some of them.
+var messageWithoutExtension = &pb.MyMessage{Count: Int32(7)}
+var messageWithExtension1a = &pb.MyMessage{Count: Int32(7)}
+var messageWithExtension1b = &pb.MyMessage{Count: Int32(7)}
+var messageWithExtension2 = &pb.MyMessage{Count: Int32(7)}
+var messageWithExtension3a = &pb.MyMessage{Count: Int32(7)}
+var messageWithExtension3b = &pb.MyMessage{Count: Int32(7)}
+var messageWithExtension3c = &pb.MyMessage{Count: Int32(7)}
 
-		// Proto2 scalars.
-		{
-			x: &testpb.TestAllTypes{OptionalInt32: proto.Int32(1)},
-			y: &testpb.TestAllTypes{OptionalInt32: proto.Int32(2)},
-		}, {
-			x: &testpb.TestAllTypes{OptionalInt64: proto.Int64(1)},
-			y: &testpb.TestAllTypes{OptionalInt64: proto.Int64(2)},
-		}, {
-			x: &testpb.TestAllTypes{OptionalUint32: proto.Uint32(1)},
-			y: &testpb.TestAllTypes{OptionalUint32: proto.Uint32(2)},
-		}, {
-			x: &testpb.TestAllTypes{OptionalUint64: proto.Uint64(1)},
-			y: &testpb.TestAllTypes{OptionalUint64: proto.Uint64(2)},
-		}, {
-			x: &testpb.TestAllTypes{OptionalSint32: proto.Int32(1)},
-			y: &testpb.TestAllTypes{OptionalSint32: proto.Int32(2)},
-		}, {
-			x: &testpb.TestAllTypes{OptionalSint64: proto.Int64(1)},
-			y: &testpb.TestAllTypes{OptionalSint64: proto.Int64(2)},
-		}, {
-			x: &testpb.TestAllTypes{OptionalFixed32: proto.Uint32(1)},
-			y: &testpb.TestAllTypes{OptionalFixed32: proto.Uint32(2)},
-		}, {
-			x: &testpb.TestAllTypes{OptionalFixed64: proto.Uint64(1)},
-			y: &testpb.TestAllTypes{OptionalFixed64: proto.Uint64(2)},
-		}, {
-			x: &testpb.TestAllTypes{OptionalSfixed32: proto.Int32(1)},
-			y: &testpb.TestAllTypes{OptionalSfixed32: proto.Int32(2)},
-		}, {
-			x: &testpb.TestAllTypes{OptionalSfixed64: proto.Int64(1)},
-			y: &testpb.TestAllTypes{OptionalSfixed64: proto.Int64(2)},
-		}, {
-			x: &testpb.TestAllTypes{OptionalFloat: proto.Float32(1)},
-			y: &testpb.TestAllTypes{OptionalFloat: proto.Float32(2)},
-		}, {
-			x: &testpb.TestAllTypes{OptionalDouble: proto.Float64(1)},
-			y: &testpb.TestAllTypes{OptionalDouble: proto.Float64(2)},
-		}, {
-			x: &testpb.TestAllTypes{OptionalFloat: proto.Float32(float32(math.NaN()))},
-			y: &testpb.TestAllTypes{OptionalFloat: proto.Float32(0)},
-		}, {
-			x: &testpb.TestAllTypes{OptionalDouble: proto.Float64(float64(math.NaN()))},
-			y: &testpb.TestAllTypes{OptionalDouble: proto.Float64(0)},
-		}, {
-			x: &testpb.TestAllTypes{OptionalBool: proto.Bool(true)},
-			y: &testpb.TestAllTypes{OptionalBool: proto.Bool(false)},
-		}, {
-			x: &testpb.TestAllTypes{OptionalString: proto.String("a")},
-			y: &testpb.TestAllTypes{OptionalString: proto.String("b")},
-		}, {
-			x: &testpb.TestAllTypes{OptionalBytes: []byte("a")},
-			y: &testpb.TestAllTypes{OptionalBytes: []byte("b")},
-		}, {
-			x: &testpb.TestAllTypes{OptionalNestedEnum: testpb.TestAllTypes_FOO.Enum()},
-			y: &testpb.TestAllTypes{OptionalNestedEnum: testpb.TestAllTypes_BAR.Enum()},
-		}, {
-			x:  &testpb.TestAllTypes{OptionalInt32: proto.Int32(2)},
-			y:  &testpb.TestAllTypes{OptionalInt32: proto.Int32(2)},
-			eq: true,
-		}, {
-			x:  &testpb.TestAllTypes{OptionalInt64: proto.Int64(2)},
-			y:  &testpb.TestAllTypes{OptionalInt64: proto.Int64(2)},
-			eq: true,
-		}, {
-			x:  &testpb.TestAllTypes{OptionalUint32: proto.Uint32(2)},
-			y:  &testpb.TestAllTypes{OptionalUint32: proto.Uint32(2)},
-			eq: true,
-		}, {
-			x:  &testpb.TestAllTypes{OptionalUint64: proto.Uint64(2)},
-			y:  &testpb.TestAllTypes{OptionalUint64: proto.Uint64(2)},
-			eq: true,
-		}, {
-			x:  &testpb.TestAllTypes{OptionalSint32: proto.Int32(2)},
-			y:  &testpb.TestAllTypes{OptionalSint32: proto.Int32(2)},
-			eq: true,
-		}, {
-			x:  &testpb.TestAllTypes{OptionalSint64: proto.Int64(2)},
-			y:  &testpb.TestAllTypes{OptionalSint64: proto.Int64(2)},
-			eq: true,
-		}, {
-			x:  &testpb.TestAllTypes{OptionalFixed32: proto.Uint32(2)},
-			y:  &testpb.TestAllTypes{OptionalFixed32: proto.Uint32(2)},
-			eq: true,
-		}, {
-			x:  &testpb.TestAllTypes{OptionalFixed64: proto.Uint64(2)},
-			y:  &testpb.TestAllTypes{OptionalFixed64: proto.Uint64(2)},
-			eq: true,
-		}, {
-			x:  &testpb.TestAllTypes{OptionalSfixed32: proto.Int32(2)},
-			y:  &testpb.TestAllTypes{OptionalSfixed32: proto.Int32(2)},
-			eq: true,
-		}, {
-			x:  &testpb.TestAllTypes{OptionalSfixed64: proto.Int64(2)},
-			y:  &testpb.TestAllTypes{OptionalSfixed64: proto.Int64(2)},
-			eq: true,
-		}, {
-			x:  &testpb.TestAllTypes{OptionalFloat: proto.Float32(2)},
-			y:  &testpb.TestAllTypes{OptionalFloat: proto.Float32(2)},
-			eq: true,
-		}, {
-			x:  &testpb.TestAllTypes{OptionalDouble: proto.Float64(2)},
-			y:  &testpb.TestAllTypes{OptionalDouble: proto.Float64(2)},
-			eq: true,
-		}, {
-			x:  &testpb.TestAllTypes{OptionalFloat: proto.Float32(float32(math.NaN()))},
-			y:  &testpb.TestAllTypes{OptionalFloat: proto.Float32(float32(math.NaN()))},
-			eq: true,
-		}, {
-			x:  &testpb.TestAllTypes{OptionalDouble: proto.Float64(float64(math.NaN()))},
-			y:  &testpb.TestAllTypes{OptionalDouble: proto.Float64(float64(math.NaN()))},
-			eq: true,
-		}, {
-			x:  &testpb.TestAllTypes{OptionalBool: proto.Bool(true)},
-			y:  &testpb.TestAllTypes{OptionalBool: proto.Bool(true)},
-			eq: true,
-		}, {
-			x:  &testpb.TestAllTypes{OptionalString: proto.String("abc")},
-			y:  &testpb.TestAllTypes{OptionalString: proto.String("abc")},
-			eq: true,
-		}, {
-			x:  &testpb.TestAllTypes{OptionalBytes: []byte("abc")},
-			y:  &testpb.TestAllTypes{OptionalBytes: []byte("abc")},
-			eq: true,
-		}, {
-			x:  &testpb.TestAllTypes{OptionalNestedEnum: testpb.TestAllTypes_FOO.Enum()},
-			y:  &testpb.TestAllTypes{OptionalNestedEnum: testpb.TestAllTypes_FOO.Enum()},
-			eq: true,
-		},
+// Two messages with non-message extensions.
+var messageWithInt32Extension1 = &pb.MyMessage{Count: Int32(8)}
+var messageWithInt32Extension2 = &pb.MyMessage{Count: Int32(8)}
 
-		// Proto2 presence.
-		{
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{OptionalInt32: proto.Int32(0)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{OptionalInt64: proto.Int64(0)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{OptionalUint32: proto.Uint32(0)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{OptionalUint64: proto.Uint64(0)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{OptionalSint32: proto.Int32(0)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{OptionalSint64: proto.Int64(0)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{OptionalFixed32: proto.Uint32(0)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{OptionalFixed64: proto.Uint64(0)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{OptionalSfixed32: proto.Int32(0)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{OptionalSfixed64: proto.Int64(0)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{OptionalFloat: proto.Float32(0)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{OptionalDouble: proto.Float64(0)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{OptionalBool: proto.Bool(false)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{OptionalString: proto.String("")},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{OptionalBytes: []byte{}},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{OptionalNestedEnum: testpb.TestAllTypes_FOO.Enum()},
-		},
+func init() {
+	ext1 := &pb.Ext{Data: String("Kirk")}
+	ext2 := &pb.Ext{Data: String("Picard")}
 
-		// Proto3 presence.
-		{
-			x: &test3pb.TestAllTypes{},
-			y: &test3pb.TestAllTypes{OptionalInt32: proto.Int32(0)},
-		}, {
-			x: &test3pb.TestAllTypes{},
-			y: &test3pb.TestAllTypes{OptionalInt64: proto.Int64(0)},
-		}, {
-			x: &test3pb.TestAllTypes{},
-			y: &test3pb.TestAllTypes{OptionalUint32: proto.Uint32(0)},
-		}, {
-			x: &test3pb.TestAllTypes{},
-			y: &test3pb.TestAllTypes{OptionalUint64: proto.Uint64(0)},
-		}, {
-			x: &test3pb.TestAllTypes{},
-			y: &test3pb.TestAllTypes{OptionalSint32: proto.Int32(0)},
-		}, {
-			x: &test3pb.TestAllTypes{},
-			y: &test3pb.TestAllTypes{OptionalSint64: proto.Int64(0)},
-		}, {
-			x: &test3pb.TestAllTypes{},
-			y: &test3pb.TestAllTypes{OptionalFixed32: proto.Uint32(0)},
-		}, {
-			x: &test3pb.TestAllTypes{},
-			y: &test3pb.TestAllTypes{OptionalFixed64: proto.Uint64(0)},
-		}, {
-			x: &test3pb.TestAllTypes{},
-			y: &test3pb.TestAllTypes{OptionalSfixed32: proto.Int32(0)},
-		}, {
-			x: &test3pb.TestAllTypes{},
-			y: &test3pb.TestAllTypes{OptionalSfixed64: proto.Int64(0)},
-		}, {
-			x: &test3pb.TestAllTypes{},
-			y: &test3pb.TestAllTypes{OptionalFloat: proto.Float32(0)},
-		}, {
-			x: &test3pb.TestAllTypes{},
-			y: &test3pb.TestAllTypes{OptionalDouble: proto.Float64(0)},
-		}, {
-			x: &test3pb.TestAllTypes{},
-			y: &test3pb.TestAllTypes{OptionalBool: proto.Bool(false)},
-		}, {
-			x: &test3pb.TestAllTypes{},
-			y: &test3pb.TestAllTypes{OptionalString: proto.String("")},
-		}, {
-			x: &test3pb.TestAllTypes{},
-			y: &test3pb.TestAllTypes{OptionalBytes: []byte{}},
-		}, {
-			x: &test3pb.TestAllTypes{},
-			y: &test3pb.TestAllTypes{OptionalNestedEnum: test3pb.TestAllTypes_FOO.Enum()},
-		},
-
-		// Proto2 default values are not considered by Equal, so the following are still unequal.
-		{
-			x: &testpb.TestAllTypes{DefaultInt32: proto.Int32(81)},
-			y: &testpb.TestAllTypes{},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{DefaultInt32: proto.Int32(81)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{DefaultInt64: proto.Int64(82)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{DefaultUint32: proto.Uint32(83)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{DefaultUint64: proto.Uint64(84)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{DefaultSint32: proto.Int32(-85)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{DefaultSint64: proto.Int64(86)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{DefaultFixed32: proto.Uint32(87)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{DefaultFixed64: proto.Uint64(88)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{DefaultSfixed32: proto.Int32(89)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{DefaultSfixed64: proto.Int64(-90)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{DefaultFloat: proto.Float32(91.5)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{DefaultDouble: proto.Float64(92e3)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{DefaultBool: proto.Bool(true)},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{DefaultString: proto.String("hello")},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{DefaultBytes: []byte("world")},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{DefaultNestedEnum: testpb.TestAllTypes_BAR.Enum()},
-		},
-
-		// Groups.
-		{
-			x: &testpb.TestAllTypes{Optionalgroup: &testpb.TestAllTypes_OptionalGroup{
-				A: proto.Int32(1),
-			}},
-			y: &testpb.TestAllTypes{Optionalgroup: &testpb.TestAllTypes_OptionalGroup{
-				A: proto.Int32(2),
-			}},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{Optionalgroup: &testpb.TestAllTypes_OptionalGroup{}},
-		},
-
-		// Messages.
-		{
-			x: &testpb.TestAllTypes{OptionalNestedMessage: &testpb.TestAllTypes_NestedMessage{
-				A: proto.Int32(1),
-			}},
-			y: &testpb.TestAllTypes{OptionalNestedMessage: &testpb.TestAllTypes_NestedMessage{
-				A: proto.Int32(2),
-			}},
-		}, {
-			x: &testpb.TestAllTypes{},
-			y: &testpb.TestAllTypes{OptionalNestedMessage: &testpb.TestAllTypes_NestedMessage{}},
-		}, {
-			x: &test3pb.TestAllTypes{},
-			y: &test3pb.TestAllTypes{OptionalNestedMessage: &test3pb.TestAllTypes_NestedMessage{}},
-		},
-
-		// Lists.
-		{
-			x: &testpb.TestAllTypes{RepeatedInt32: []int32{1}},
-			y: &testpb.TestAllTypes{RepeatedInt32: []int32{1, 2}},
-		}, {
-			x: &testpb.TestAllTypes{RepeatedInt32: []int32{1, 2}},
-			y: &testpb.TestAllTypes{RepeatedInt32: []int32{1, 3}},
-		}, {
-			x: &testpb.TestAllTypes{RepeatedInt64: []int64{1, 2}},
-			y: &testpb.TestAllTypes{RepeatedInt64: []int64{1, 3}},
-		}, {
-			x: &testpb.TestAllTypes{RepeatedUint32: []uint32{1, 2}},
-			y: &testpb.TestAllTypes{RepeatedUint32: []uint32{1, 3}},
-		}, {
-			x: &testpb.TestAllTypes{RepeatedUint64: []uint64{1, 2}},
-			y: &testpb.TestAllTypes{RepeatedUint64: []uint64{1, 3}},
-		}, {
-			x: &testpb.TestAllTypes{RepeatedSint32: []int32{1, 2}},
-			y: &testpb.TestAllTypes{RepeatedSint32: []int32{1, 3}},
-		}, {
-			x: &testpb.TestAllTypes{RepeatedSint64: []int64{1, 2}},
-			y: &testpb.TestAllTypes{RepeatedSint64: []int64{1, 3}},
-		}, {
-			x: &testpb.TestAllTypes{RepeatedFixed32: []uint32{1, 2}},
-			y: &testpb.TestAllTypes{RepeatedFixed32: []uint32{1, 3}},
-		}, {
-			x: &testpb.TestAllTypes{RepeatedFixed64: []uint64{1, 2}},
-			y: &testpb.TestAllTypes{RepeatedFixed64: []uint64{1, 3}},
-		}, {
-			x: &testpb.TestAllTypes{RepeatedSfixed32: []int32{1, 2}},
-			y: &testpb.TestAllTypes{RepeatedSfixed32: []int32{1, 3}},
-		}, {
-			x: &testpb.TestAllTypes{RepeatedSfixed64: []int64{1, 2}},
-			y: &testpb.TestAllTypes{RepeatedSfixed64: []int64{1, 3}},
-		}, {
-			x: &testpb.TestAllTypes{RepeatedFloat: []float32{1, 2}},
-			y: &testpb.TestAllTypes{RepeatedFloat: []float32{1, 3}},
-		}, {
-			x: &testpb.TestAllTypes{RepeatedDouble: []float64{1, 2}},
-			y: &testpb.TestAllTypes{RepeatedDouble: []float64{1, 3}},
-		}, {
-			x: &testpb.TestAllTypes{RepeatedBool: []bool{true, false}},
-			y: &testpb.TestAllTypes{RepeatedBool: []bool{true, true}},
-		}, {
-			x: &testpb.TestAllTypes{RepeatedString: []string{"a", "b"}},
-			y: &testpb.TestAllTypes{RepeatedString: []string{"a", "c"}},
-		}, {
-			x: &testpb.TestAllTypes{RepeatedBytes: [][]byte{[]byte("a"), []byte("b")}},
-			y: &testpb.TestAllTypes{RepeatedBytes: [][]byte{[]byte("a"), []byte("c")}},
-		}, {
-			x: &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_FOO}},
-			y: &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_BAR}},
-		}, {
-			x: &testpb.TestAllTypes{Repeatedgroup: []*testpb.TestAllTypes_RepeatedGroup{
-				{A: proto.Int32(1)},
-				{A: proto.Int32(2)},
-			}},
-			y: &testpb.TestAllTypes{Repeatedgroup: []*testpb.TestAllTypes_RepeatedGroup{
-				{A: proto.Int32(1)},
-				{A: proto.Int32(3)},
-			}},
-		}, {
-			x: &testpb.TestAllTypes{RepeatedNestedMessage: []*testpb.TestAllTypes_NestedMessage{
-				{A: proto.Int32(1)},
-				{A: proto.Int32(2)},
-			}},
-			y: &testpb.TestAllTypes{RepeatedNestedMessage: []*testpb.TestAllTypes_NestedMessage{
-				{A: proto.Int32(1)},
-				{A: proto.Int32(3)},
-			}},
-		},
-
-		// Maps: various configurations.
-		{
-			x: &testpb.TestAllTypes{MapInt32Int32: map[int32]int32{1: 2}},
-			y: &testpb.TestAllTypes{MapInt32Int32: map[int32]int32{3: 4}},
-		}, {
-			x: &testpb.TestAllTypes{MapInt32Int32: map[int32]int32{1: 2}},
-			y: &testpb.TestAllTypes{MapInt32Int32: map[int32]int32{1: 2, 3: 4}},
-		}, {
-			x: &testpb.TestAllTypes{MapInt32Int32: map[int32]int32{1: 2, 3: 4}},
-			y: &testpb.TestAllTypes{MapInt32Int32: map[int32]int32{1: 2}},
-		},
-
-		// Maps: various types.
-		{
-			x: &testpb.TestAllTypes{MapInt32Int32: map[int32]int32{1: 2, 3: 4}},
-			y: &testpb.TestAllTypes{MapInt32Int32: map[int32]int32{1: 2, 3: 5}},
-		}, {
-			x: &testpb.TestAllTypes{MapInt64Int64: map[int64]int64{1: 2, 3: 4}},
-			y: &testpb.TestAllTypes{MapInt64Int64: map[int64]int64{1: 2, 3: 5}},
-		}, {
-			x: &testpb.TestAllTypes{MapUint32Uint32: map[uint32]uint32{1: 2, 3: 4}},
-			y: &testpb.TestAllTypes{MapUint32Uint32: map[uint32]uint32{1: 2, 3: 5}},
-		}, {
-			x: &testpb.TestAllTypes{MapUint64Uint64: map[uint64]uint64{1: 2, 3: 4}},
-			y: &testpb.TestAllTypes{MapUint64Uint64: map[uint64]uint64{1: 2, 3: 5}},
-		}, {
-			x: &testpb.TestAllTypes{MapSint32Sint32: map[int32]int32{1: 2, 3: 4}},
-			y: &testpb.TestAllTypes{MapSint32Sint32: map[int32]int32{1: 2, 3: 5}},
-		}, {
-			x: &testpb.TestAllTypes{MapSint64Sint64: map[int64]int64{1: 2, 3: 4}},
-			y: &testpb.TestAllTypes{MapSint64Sint64: map[int64]int64{1: 2, 3: 5}},
-		}, {
-			x: &testpb.TestAllTypes{MapFixed32Fixed32: map[uint32]uint32{1: 2, 3: 4}},
-			y: &testpb.TestAllTypes{MapFixed32Fixed32: map[uint32]uint32{1: 2, 3: 5}},
-		}, {
-			x: &testpb.TestAllTypes{MapFixed64Fixed64: map[uint64]uint64{1: 2, 3: 4}},
-			y: &testpb.TestAllTypes{MapFixed64Fixed64: map[uint64]uint64{1: 2, 3: 5}},
-		}, {
-			x: &testpb.TestAllTypes{MapSfixed32Sfixed32: map[int32]int32{1: 2, 3: 4}},
-			y: &testpb.TestAllTypes{MapSfixed32Sfixed32: map[int32]int32{1: 2, 3: 5}},
-		}, {
-			x: &testpb.TestAllTypes{MapSfixed64Sfixed64: map[int64]int64{1: 2, 3: 4}},
-			y: &testpb.TestAllTypes{MapSfixed64Sfixed64: map[int64]int64{1: 2, 3: 5}},
-		}, {
-			x: &testpb.TestAllTypes{MapInt32Float: map[int32]float32{1: 2, 3: 4}},
-			y: &testpb.TestAllTypes{MapInt32Float: map[int32]float32{1: 2, 3: 5}},
-		}, {
-			x: &testpb.TestAllTypes{MapInt32Double: map[int32]float64{1: 2, 3: 4}},
-			y: &testpb.TestAllTypes{MapInt32Double: map[int32]float64{1: 2, 3: 5}},
-		}, {
-			x: &testpb.TestAllTypes{MapBoolBool: map[bool]bool{true: false, false: true}},
-			y: &testpb.TestAllTypes{MapBoolBool: map[bool]bool{true: false, false: false}},
-		}, {
-			x: &testpb.TestAllTypes{MapStringString: map[string]string{"a": "b", "c": "d"}},
-			y: &testpb.TestAllTypes{MapStringString: map[string]string{"a": "b", "c": "e"}},
-		}, {
-			x: &testpb.TestAllTypes{MapStringBytes: map[string][]byte{"a": []byte("b"), "c": []byte("d")}},
-			y: &testpb.TestAllTypes{MapStringBytes: map[string][]byte{"a": []byte("b"), "c": []byte("e")}},
-		}, {
-			x: &testpb.TestAllTypes{MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{
-				"a": {A: proto.Int32(1)},
-				"b": {A: proto.Int32(2)},
-			}},
-			y: &testpb.TestAllTypes{MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{
-				"a": {A: proto.Int32(1)},
-				"b": {A: proto.Int32(3)},
-			}},
-		}, {
-			x: &testpb.TestAllTypes{MapStringNestedEnum: map[string]testpb.TestAllTypes_NestedEnum{
-				"a": testpb.TestAllTypes_FOO,
-				"b": testpb.TestAllTypes_BAR,
-			}},
-			y: &testpb.TestAllTypes{MapStringNestedEnum: map[string]testpb.TestAllTypes_NestedEnum{
-				"a": testpb.TestAllTypes_FOO,
-				"b": testpb.TestAllTypes_BAZ,
-			}},
-		},
-
-		// Extensions.
-		{
-			x: build(&testpb.TestAllExtensions{},
-				extend(testpb.E_OptionalInt32, int32(1)),
-			),
-			y: build(&testpb.TestAllExtensions{},
-				extend(testpb.E_OptionalInt32, int32(2)),
-			),
-		}, {
-			x: &testpb.TestAllExtensions{},
-			y: build(&testpb.TestAllExtensions{},
-				extend(testpb.E_OptionalInt32, int32(2)),
-			),
-		},
-
-		// Unknown fields.
-		{
-			x: build(&testpb.TestAllTypes{}, unknown(protopack.Message{
-				protopack.Tag{100000, protopack.VarintType}, protopack.Varint(1),
-			}.Marshal())),
-			y: build(&testpb.TestAllTypes{}, unknown(protopack.Message{
-				protopack.Tag{100000, protopack.VarintType}, protopack.Varint(2),
-			}.Marshal())),
-		}, {
-			x: build(&testpb.TestAllTypes{}, unknown(protopack.Message{
-				protopack.Tag{100000, protopack.VarintType}, protopack.Varint(1),
-			}.Marshal())),
-			y: &testpb.TestAllTypes{},
-		},
+	// messageWithExtension1a has ext1, but never marshals it.
+	if err := SetExtension(messageWithExtension1a, pb.E_Ext_More, ext1); err != nil {
+		panic("SetExtension on 1a failed: " + err.Error())
 	}
 
-	for _, tt := range tests {
-		if !tt.eq && !proto.Equal(tt.x, tt.x) {
-			t.Errorf("Equal(x, x) = false, want true\n==== x ====\n%v", prototext.Format(tt.x))
-		}
-		if !tt.eq && !proto.Equal(tt.y, tt.y) {
-			t.Errorf("Equal(y, y) = false, want true\n==== y ====\n%v", prototext.Format(tt.y))
-		}
-		if eq := proto.Equal(tt.x, tt.y); eq != tt.eq {
-			t.Errorf("Equal(x, y) = %v, want %v\n==== x ====\n%v==== y ====\n%v", eq, tt.eq, prototext.Format(tt.x), prototext.Format(tt.y))
+	// messageWithExtension1b is the unmarshaled form of messageWithExtension1a.
+	if err := SetExtension(messageWithExtension1b, pb.E_Ext_More, ext1); err != nil {
+		panic("SetExtension on 1b failed: " + err.Error())
+	}
+	buf, err := Marshal(messageWithExtension1b)
+	if err != nil {
+		panic("Marshal of 1b failed: " + err.Error())
+	}
+	messageWithExtension1b.Reset()
+	if err := Unmarshal(buf, messageWithExtension1b); err != nil {
+		panic("Unmarshal of 1b failed: " + err.Error())
+	}
+
+	// messageWithExtension2 has ext2.
+	if err := SetExtension(messageWithExtension2, pb.E_Ext_More, ext2); err != nil {
+		panic("SetExtension on 2 failed: " + err.Error())
+	}
+
+	if err := SetExtension(messageWithInt32Extension1, pb.E_Ext_Number, Int32(23)); err != nil {
+		panic("SetExtension on Int32-1 failed: " + err.Error())
+	}
+	if err := SetExtension(messageWithInt32Extension1, pb.E_Ext_Number, Int32(24)); err != nil {
+		panic("SetExtension on Int32-2 failed: " + err.Error())
+	}
+
+	// messageWithExtension3{a,b,c} has unregistered extension.
+	if RegisteredExtensions(messageWithExtension3a)[200] != nil {
+		panic("expect extension 200 unregistered")
+	}
+	bytes := []byte{
+		0xc0, 0x0c, 0x01, // id=200, wiretype=0 (varint), data=1
+	}
+	bytes2 := []byte{
+		0xc0, 0x0c, 0x02, // id=200, wiretype=0 (varint), data=2
+	}
+	SetRawExtension(messageWithExtension3a, 200, bytes)
+	SetRawExtension(messageWithExtension3b, 200, bytes)
+	SetRawExtension(messageWithExtension3c, 200, bytes2)
+}
+
+var EqualTests = []struct {
+	desc string
+	a, b Message
+	exp  bool
+}{
+	{"different types", &pb.GoEnum{}, &pb.GoTestField{}, false},
+	{"equal empty", &pb.GoEnum{}, &pb.GoEnum{}, true},
+	{"nil vs nil", nil, nil, true},
+	{"typed nil vs typed nil", (*pb.GoEnum)(nil), (*pb.GoEnum)(nil), true},
+	{"typed nil vs empty", (*pb.GoEnum)(nil), &pb.GoEnum{}, false},
+	{"different typed nil", (*pb.GoEnum)(nil), (*pb.GoTestField)(nil), false},
+
+	{"one set field, one unset field", &pb.GoTestField{Label: String("foo")}, &pb.GoTestField{}, false},
+	{"one set field zero, one unset field", &pb.GoTest{Param: Int32(0)}, &pb.GoTest{}, false},
+	{"different set fields", &pb.GoTestField{Label: String("foo")}, &pb.GoTestField{Label: String("bar")}, false},
+	{"equal set", &pb.GoTestField{Label: String("foo")}, &pb.GoTestField{Label: String("foo")}, true},
+
+	{"repeated, one set", &pb.GoTest{F_Int32Repeated: []int32{2, 3}}, &pb.GoTest{}, false},
+	{"repeated, different length", &pb.GoTest{F_Int32Repeated: []int32{2, 3}}, &pb.GoTest{F_Int32Repeated: []int32{2}}, false},
+	{"repeated, different value", &pb.GoTest{F_Int32Repeated: []int32{2}}, &pb.GoTest{F_Int32Repeated: []int32{3}}, false},
+	{"repeated, equal", &pb.GoTest{F_Int32Repeated: []int32{2, 4}}, &pb.GoTest{F_Int32Repeated: []int32{2, 4}}, true},
+	{"repeated, nil equal nil", &pb.GoTest{F_Int32Repeated: nil}, &pb.GoTest{F_Int32Repeated: nil}, true},
+	{"repeated, nil equal empty", &pb.GoTest{F_Int32Repeated: nil}, &pb.GoTest{F_Int32Repeated: []int32{}}, true},
+	{"repeated, empty equal nil", &pb.GoTest{F_Int32Repeated: []int32{}}, &pb.GoTest{F_Int32Repeated: nil}, true},
+
+	{
+		"nested, different",
+		&pb.GoTest{RequiredField: &pb.GoTestField{Label: String("foo")}},
+		&pb.GoTest{RequiredField: &pb.GoTestField{Label: String("bar")}},
+		false,
+	},
+	{
+		"nested, equal",
+		&pb.GoTest{RequiredField: &pb.GoTestField{Label: String("wow")}},
+		&pb.GoTest{RequiredField: &pb.GoTestField{Label: String("wow")}},
+		true,
+	},
+
+	{"bytes", &pb.OtherMessage{Value: []byte("foo")}, &pb.OtherMessage{Value: []byte("foo")}, true},
+	{"bytes, empty", &pb.OtherMessage{Value: []byte{}}, &pb.OtherMessage{Value: []byte{}}, true},
+	{"bytes, empty vs nil", &pb.OtherMessage{Value: []byte{}}, &pb.OtherMessage{Value: nil}, false},
+	{
+		"repeated bytes",
+		&pb.MyMessage{RepBytes: [][]byte{[]byte("sham"), []byte("wow")}},
+		&pb.MyMessage{RepBytes: [][]byte{[]byte("sham"), []byte("wow")}},
+		true,
+	},
+	// In proto3, []byte{} and []byte(nil) are equal.
+	{"proto3 bytes, empty vs nil", &proto3pb.Message{Data: []byte{}}, &proto3pb.Message{Data: nil}, true},
+
+	{"extension vs. no extension", messageWithoutExtension, messageWithExtension1a, false},
+	{"extension vs. same extension", messageWithExtension1a, messageWithExtension1b, true},
+	{"extension vs. different extension", messageWithExtension1a, messageWithExtension2, false},
+
+	{"int32 extension vs. itself", messageWithInt32Extension1, messageWithInt32Extension1, true},
+	{"int32 extension vs. a different int32", messageWithInt32Extension1, messageWithInt32Extension2, false},
+
+	{"unregistered extension same", messageWithExtension3a, messageWithExtension3b, true},
+	{"unregistered extension different", messageWithExtension3a, messageWithExtension3c, false},
+
+	{
+		"message with group",
+		&pb.MyMessage{
+			Count: Int32(1),
+			Somegroup: &pb.MyMessage_SomeGroup{
+				GroupField: Int32(5),
+			},
+		},
+		&pb.MyMessage{
+			Count: Int32(1),
+			Somegroup: &pb.MyMessage_SomeGroup{
+				GroupField: Int32(5),
+			},
+		},
+		true,
+	},
+
+	{
+		"map same",
+		&pb.MessageWithMap{NameMapping: map[int32]string{1: "Ken"}},
+		&pb.MessageWithMap{NameMapping: map[int32]string{1: "Ken"}},
+		true,
+	},
+	{
+		"map different entry",
+		&pb.MessageWithMap{NameMapping: map[int32]string{1: "Ken"}},
+		&pb.MessageWithMap{NameMapping: map[int32]string{2: "Rob"}},
+		false,
+	},
+	{
+		"map different key only",
+		&pb.MessageWithMap{NameMapping: map[int32]string{1: "Ken"}},
+		&pb.MessageWithMap{NameMapping: map[int32]string{2: "Ken"}},
+		false,
+	},
+	{
+		"map different value only",
+		&pb.MessageWithMap{NameMapping: map[int32]string{1: "Ken"}},
+		&pb.MessageWithMap{NameMapping: map[int32]string{1: "Rob"}},
+		false,
+	},
+	{
+		"zero-length maps same",
+		&pb.MessageWithMap{NameMapping: map[int32]string{}},
+		&pb.MessageWithMap{NameMapping: nil},
+		true,
+	},
+	{
+		"orders in map don't matter",
+		&pb.MessageWithMap{NameMapping: map[int32]string{1: "Ken", 2: "Rob"}},
+		&pb.MessageWithMap{NameMapping: map[int32]string{2: "Rob", 1: "Ken"}},
+		true,
+	},
+	{
+		"oneof same",
+		&pb.Communique{Union: &pb.Communique_Number{41}},
+		&pb.Communique{Union: &pb.Communique_Number{41}},
+		true,
+	},
+	{
+		"oneof one nil",
+		&pb.Communique{Union: &pb.Communique_Number{41}},
+		&pb.Communique{},
+		false,
+	},
+	{
+		"oneof different",
+		&pb.Communique{Union: &pb.Communique_Number{41}},
+		&pb.Communique{Union: &pb.Communique_Name{"Bobby Tables"}},
+		false,
+	},
+}
+
+func TestEqual(t *testing.T) {
+	for _, tc := range EqualTests {
+		if res := Equal(tc.a, tc.b); res != tc.exp {
+			t.Errorf("%v: Equal(%v, %v) = %v, want %v", tc.desc, tc.a, tc.b, res, tc.exp)
 		}
 	}
 }
diff --git a/proto/extension.go b/proto/extension.go
deleted file mode 100644
index 5f293cd..0000000
--- a/proto/extension.go
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package proto
-
-import (
-	"google.golang.org/protobuf/reflect/protoreflect"
-)
-
-// HasExtension reports whether an extension field is populated.
-// It returns false if m is invalid or if xt does not extend m.
-func HasExtension(m Message, xt protoreflect.ExtensionType) bool {
-	// Treat nil message interface as an empty message; no populated fields.
-	if m == nil {
-		return false
-	}
-
-	// As a special-case, we reports invalid or mismatching descriptors
-	// as always not being populated (since they aren't).
-	if xt == nil || m.ProtoReflect().Descriptor() != xt.TypeDescriptor().ContainingMessage() {
-		return false
-	}
-
-	return m.ProtoReflect().Has(xt.TypeDescriptor())
-}
-
-// ClearExtension clears an extension field such that subsequent
-// HasExtension calls return false.
-// It panics if m is invalid or if xt does not extend m.
-func ClearExtension(m Message, xt protoreflect.ExtensionType) {
-	m.ProtoReflect().Clear(xt.TypeDescriptor())
-}
-
-// GetExtension retrieves the value for an extension field.
-// If the field is unpopulated, it returns the default value for
-// scalars and an immutable, empty value for lists or messages.
-// It panics if xt does not extend m.
-func GetExtension(m Message, xt protoreflect.ExtensionType) interface{} {
-	// Treat nil message interface as an empty message; return the default.
-	if m == nil {
-		return xt.InterfaceOf(xt.Zero())
-	}
-
-	return xt.InterfaceOf(m.ProtoReflect().Get(xt.TypeDescriptor()))
-}
-
-// SetExtension stores the value of an extension field.
-// It panics if m is invalid, xt does not extend m, or if type of v
-// is invalid for the specified extension field.
-func SetExtension(m Message, xt protoreflect.ExtensionType, v interface{}) {
-	xd := xt.TypeDescriptor()
-	pv := xt.ValueOf(v)
-
-	// Specially treat an invalid list, map, or message as clear.
-	isValid := true
-	switch {
-	case xd.IsList():
-		isValid = pv.List().IsValid()
-	case xd.IsMap():
-		isValid = pv.Map().IsValid()
-	case xd.Message() != nil:
-		isValid = pv.Message().IsValid()
-	}
-	if !isValid {
-		m.ProtoReflect().Clear(xd)
-		return
-	}
-
-	m.ProtoReflect().Set(xd, pv)
-}
-
-// RangeExtensions iterates over every populated extension field in m in an
-// undefined order, calling f for each extension type and value encountered.
-// It returns immediately if f returns false.
-// While iterating, mutating operations may only be performed
-// on the current extension field.
-func RangeExtensions(m Message, f func(protoreflect.ExtensionType, interface{}) bool) {
-	// Treat nil message interface as an empty message; nothing to range over.
-	if m == nil {
-		return
-	}
-
-	m.ProtoReflect().Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {
-		if fd.IsExtension() {
-			xt := fd.(protoreflect.ExtensionTypeDescriptor).Type()
-			vi := xt.InterfaceOf(v)
-			return f(xt, vi)
-		}
-		return true
-	})
-}
diff --git a/proto/extension_test.go b/proto/extension_test.go
deleted file mode 100644
index b3ab788..0000000
--- a/proto/extension_test.go
+++ /dev/null
@@ -1,290 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package proto_test
-
-import (
-	"fmt"
-	"reflect"
-	"sync"
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/runtime/protoimpl"
-	"google.golang.org/protobuf/testing/protocmp"
-
-	legacy1pb "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20160225_2fc053c5"
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-	test3pb "google.golang.org/protobuf/internal/testprotos/test3"
-	descpb "google.golang.org/protobuf/types/descriptorpb"
-)
-
-func TestExtensionFuncs(t *testing.T) {
-	for _, test := range []struct {
-		message     proto.Message
-		ext         pref.ExtensionType
-		wantDefault interface{}
-		value       interface{}
-	}{
-		{
-			message:     &testpb.TestAllExtensions{},
-			ext:         testpb.E_OptionalInt32,
-			wantDefault: int32(0),
-			value:       int32(1),
-		},
-		{
-			message:     &testpb.TestAllExtensions{},
-			ext:         testpb.E_RepeatedString,
-			wantDefault: ([]string)(nil),
-			value:       []string{"a", "b", "c"},
-		},
-		{
-			message:     protoimpl.X.MessageOf(&legacy1pb.Message{}).Interface(),
-			ext:         legacy1pb.E_Message_ExtensionOptionalBool,
-			wantDefault: false,
-			value:       true,
-		},
-	} {
-		desc := fmt.Sprintf("Extension %v, value %v", test.ext.TypeDescriptor().FullName(), test.value)
-		if proto.HasExtension(test.message, test.ext) {
-			t.Errorf("%v:\nbefore setting extension HasExtension(...) = true, want false", desc)
-		}
-		got := proto.GetExtension(test.message, test.ext)
-		if d := cmp.Diff(test.wantDefault, got); d != "" {
-			t.Errorf("%v:\nbefore setting extension GetExtension(...) returns unexpected value (-want,+got):\n%v", desc, d)
-		}
-		proto.SetExtension(test.message, test.ext, test.value)
-		if !proto.HasExtension(test.message, test.ext) {
-			t.Errorf("%v:\nafter setting extension HasExtension(...) = false, want true", desc)
-		}
-		got = proto.GetExtension(test.message, test.ext)
-		if d := cmp.Diff(test.value, got); d != "" {
-			t.Errorf("%v:\nafter setting extension GetExtension(...) returns unexpected value (-want,+got):\n%v", desc, d)
-		}
-		proto.ClearExtension(test.message, test.ext)
-		if proto.HasExtension(test.message, test.ext) {
-			t.Errorf("%v:\nafter clearing extension HasExtension(...) = true, want false", desc)
-		}
-	}
-}
-
-func TestIsValid(t *testing.T) {
-	tests := []struct {
-		xt   protoreflect.ExtensionType
-		vi   interface{}
-		want bool
-	}{
-		{testpb.E_OptionalBool, nil, false},
-		{testpb.E_OptionalBool, bool(true), true},
-		{testpb.E_OptionalBool, new(bool), false},
-		{testpb.E_OptionalInt32, nil, false},
-		{testpb.E_OptionalInt32, int32(0), true},
-		{testpb.E_OptionalInt32, new(int32), false},
-		{testpb.E_OptionalInt64, nil, false},
-		{testpb.E_OptionalInt64, int64(0), true},
-		{testpb.E_OptionalInt64, new(int64), false},
-		{testpb.E_OptionalUint32, nil, false},
-		{testpb.E_OptionalUint32, uint32(0), true},
-		{testpb.E_OptionalUint32, new(uint32), false},
-		{testpb.E_OptionalUint64, nil, false},
-		{testpb.E_OptionalUint64, uint64(0), true},
-		{testpb.E_OptionalUint64, new(uint64), false},
-		{testpb.E_OptionalFloat, nil, false},
-		{testpb.E_OptionalFloat, float32(0), true},
-		{testpb.E_OptionalFloat, new(float32), false},
-		{testpb.E_OptionalDouble, nil, false},
-		{testpb.E_OptionalDouble, float64(0), true},
-		{testpb.E_OptionalDouble, new(float32), false},
-		{testpb.E_OptionalString, nil, false},
-		{testpb.E_OptionalString, string(""), true},
-		{testpb.E_OptionalString, new(string), false},
-		{testpb.E_OptionalNestedEnum, nil, false},
-		{testpb.E_OptionalNestedEnum, testpb.TestAllTypes_BAZ, true},
-		{testpb.E_OptionalNestedEnum, testpb.TestAllTypes_BAZ.Enum(), false},
-		{testpb.E_OptionalNestedMessage, nil, false},
-		{testpb.E_OptionalNestedMessage, (*testpb.TestAllExtensions_NestedMessage)(nil), true},
-		{testpb.E_OptionalNestedMessage, new(testpb.TestAllExtensions_NestedMessage), true},
-		{testpb.E_OptionalNestedMessage, new(testpb.TestAllExtensions), false},
-		{testpb.E_RepeatedBool, nil, false},
-		{testpb.E_RepeatedBool, []bool(nil), true},
-		{testpb.E_RepeatedBool, []bool{}, true},
-		{testpb.E_RepeatedBool, []bool{false}, true},
-		{testpb.E_RepeatedBool, []*bool{}, false},
-		{testpb.E_RepeatedInt32, nil, false},
-		{testpb.E_RepeatedInt32, []int32(nil), true},
-		{testpb.E_RepeatedInt32, []int32{}, true},
-		{testpb.E_RepeatedInt32, []int32{0}, true},
-		{testpb.E_RepeatedInt32, []*int32{}, false},
-		{testpb.E_RepeatedInt64, nil, false},
-		{testpb.E_RepeatedInt64, []int64(nil), true},
-		{testpb.E_RepeatedInt64, []int64{}, true},
-		{testpb.E_RepeatedInt64, []int64{0}, true},
-		{testpb.E_RepeatedInt64, []*int64{}, false},
-		{testpb.E_RepeatedUint32, nil, false},
-		{testpb.E_RepeatedUint32, []uint32(nil), true},
-		{testpb.E_RepeatedUint32, []uint32{}, true},
-		{testpb.E_RepeatedUint32, []uint32{0}, true},
-		{testpb.E_RepeatedUint32, []*uint32{}, false},
-		{testpb.E_RepeatedUint64, nil, false},
-		{testpb.E_RepeatedUint64, []uint64(nil), true},
-		{testpb.E_RepeatedUint64, []uint64{}, true},
-		{testpb.E_RepeatedUint64, []uint64{0}, true},
-		{testpb.E_RepeatedUint64, []*uint64{}, false},
-		{testpb.E_RepeatedFloat, nil, false},
-		{testpb.E_RepeatedFloat, []float32(nil), true},
-		{testpb.E_RepeatedFloat, []float32{}, true},
-		{testpb.E_RepeatedFloat, []float32{0}, true},
-		{testpb.E_RepeatedFloat, []*float32{}, false},
-		{testpb.E_RepeatedDouble, nil, false},
-		{testpb.E_RepeatedDouble, []float64(nil), true},
-		{testpb.E_RepeatedDouble, []float64{}, true},
-		{testpb.E_RepeatedDouble, []float64{0}, true},
-		{testpb.E_RepeatedDouble, []*float64{}, false},
-		{testpb.E_RepeatedString, nil, false},
-		{testpb.E_RepeatedString, []string(nil), true},
-		{testpb.E_RepeatedString, []string{}, true},
-		{testpb.E_RepeatedString, []string{""}, true},
-		{testpb.E_RepeatedString, []*string{}, false},
-		{testpb.E_RepeatedNestedEnum, nil, false},
-		{testpb.E_RepeatedNestedEnum, []testpb.TestAllTypes_NestedEnum(nil), true},
-		{testpb.E_RepeatedNestedEnum, []testpb.TestAllTypes_NestedEnum{}, true},
-		{testpb.E_RepeatedNestedEnum, []testpb.TestAllTypes_NestedEnum{0}, true},
-		{testpb.E_RepeatedNestedEnum, []*testpb.TestAllTypes_NestedEnum{}, false},
-		{testpb.E_RepeatedNestedMessage, nil, false},
-		{testpb.E_RepeatedNestedMessage, []*testpb.TestAllExtensions_NestedMessage(nil), true},
-		{testpb.E_RepeatedNestedMessage, []*testpb.TestAllExtensions_NestedMessage{}, true},
-		{testpb.E_RepeatedNestedMessage, []*testpb.TestAllExtensions_NestedMessage{{}}, true},
-		{testpb.E_RepeatedNestedMessage, []*testpb.TestAllExtensions{}, false},
-	}
-
-	for _, tt := range tests {
-		// Check the results of IsValidInterface.
-		got := tt.xt.IsValidInterface(tt.vi)
-		if got != tt.want {
-			t.Errorf("%v.IsValidInterface() = %v, want %v", tt.xt.TypeDescriptor().FullName(), got, tt.want)
-		}
-		if !got {
-			continue
-		}
-
-		// Set the extension value and verify the results of Has.
-		wantHas := true
-		pv := tt.xt.ValueOf(tt.vi)
-		switch v := pv.Interface().(type) {
-		case protoreflect.List:
-			wantHas = v.Len() > 0
-		case protoreflect.Message:
-			wantHas = v.IsValid()
-		}
-		m := &testpb.TestAllExtensions{}
-		proto.SetExtension(m, tt.xt, tt.vi)
-		gotHas := proto.HasExtension(m, tt.xt)
-		if gotHas != wantHas {
-			t.Errorf("HasExtension(%q) = %v, want %v", tt.xt.TypeDescriptor().FullName(), gotHas, wantHas)
-		}
-
-		// Check consistency of IsValidInterface and IsValidValue.
-		got = tt.xt.IsValidValue(pv)
-		if got != tt.want {
-			t.Errorf("%v.IsValidValue() = %v, want %v", tt.xt.TypeDescriptor().FullName(), got, tt.want)
-		}
-		if !got {
-			continue
-		}
-
-		// Use of reflect.DeepEqual is intentional.
-		// We really do want to ensure that the memory layout is identical.
-		vi := tt.xt.InterfaceOf(pv)
-		if !reflect.DeepEqual(vi, tt.vi) {
-			t.Errorf("InterfaceOf(ValueOf(...)) round-trip mismatch: got %v, want %v", vi, tt.vi)
-		}
-	}
-}
-
-func TestExtensionRanger(t *testing.T) {
-	tests := []struct {
-		msg  proto.Message
-		want map[pref.ExtensionType]interface{}
-	}{{
-		msg: &testpb.TestAllExtensions{},
-		want: map[pref.ExtensionType]interface{}{
-			testpb.E_OptionalInt32:         int32(5),
-			testpb.E_OptionalString:        string("hello"),
-			testpb.E_OptionalNestedMessage: &testpb.TestAllExtensions_NestedMessage{},
-			testpb.E_OptionalNestedEnum:    testpb.TestAllTypes_BAZ,
-			testpb.E_RepeatedFloat:         []float32{+32.32, -32.32},
-			testpb.E_RepeatedNestedMessage: []*testpb.TestAllExtensions_NestedMessage{{}},
-			testpb.E_RepeatedNestedEnum:    []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_BAZ},
-		},
-	}, {
-		msg: &descpb.MessageOptions{},
-		want: map[pref.ExtensionType]interface{}{
-			test3pb.E_OptionalInt32:          int32(5),
-			test3pb.E_OptionalString:         string("hello"),
-			test3pb.E_OptionalForeignMessage: &test3pb.ForeignMessage{},
-			test3pb.E_OptionalForeignEnum:    test3pb.ForeignEnum_FOREIGN_BAR,
-
-			test3pb.E_OptionalOptionalInt32:          int32(5),
-			test3pb.E_OptionalOptionalString:         string("hello"),
-			test3pb.E_OptionalOptionalForeignMessage: &test3pb.ForeignMessage{},
-			test3pb.E_OptionalOptionalForeignEnum:    test3pb.ForeignEnum_FOREIGN_BAR,
-		},
-	}}
-
-	for _, tt := range tests {
-		for xt, v := range tt.want {
-			proto.SetExtension(tt.msg, xt, v)
-		}
-
-		got := make(map[pref.ExtensionType]interface{})
-		proto.RangeExtensions(tt.msg, func(xt pref.ExtensionType, v interface{}) bool {
-			got[xt] = v
-			return true
-		})
-
-		if diff := cmp.Diff(tt.want, got, protocmp.Transform()); diff != "" {
-			t.Errorf("proto.RangeExtensions mismatch (-want +got):\n%s", diff)
-		}
-	}
-}
-
-func TestExtensionGetRace(t *testing.T) {
-	// Concurrently fetch an extension value while marshaling the message containing it.
-	// Create the message with proto.Unmarshal to give lazy extension decoding (if present)
-	// a chance to occur.
-	want := int32(42)
-	m1 := &testpb.TestAllExtensions{}
-	proto.SetExtension(m1, testpb.E_OptionalNestedMessage, &testpb.TestAllExtensions_NestedMessage{A: proto.Int32(want)})
-	b, err := proto.Marshal(m1)
-	if err != nil {
-		t.Fatal(err)
-	}
-	m := &testpb.TestAllExtensions{}
-	if err := proto.Unmarshal(b, m); err != nil {
-		t.Fatal(err)
-	}
-	var wg sync.WaitGroup
-	for i := 0; i < 3; i++ {
-		wg.Add(1)
-		go func() {
-			defer wg.Done()
-			if _, err := proto.Marshal(m); err != nil {
-				t.Error(err)
-			}
-		}()
-		wg.Add(1)
-		go func() {
-			defer wg.Done()
-			got := proto.GetExtension(m, testpb.E_OptionalNestedMessage).(*testpb.TestAllExtensions_NestedMessage).GetA()
-			if got != want {
-				t.Errorf("GetExtension(optional_nested_message).a = %v, want %v", got, want)
-			}
-		}()
-	}
-	wg.Wait()
-}
diff --git a/proto/extensions.go b/proto/extensions.go
new file mode 100644
index 0000000..fa88add
--- /dev/null
+++ b/proto/extensions.go
@@ -0,0 +1,607 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto
+
+/*
+ * Types and routines for supporting protocol buffer extensions.
+ */
+
+import (
+	"errors"
+	"fmt"
+	"io"
+	"reflect"
+	"strconv"
+	"sync"
+)
+
+// ErrMissingExtension is the error returned by GetExtension if the named extension is not in the message.
+var ErrMissingExtension = errors.New("proto: missing extension")
+
+// ExtensionRange represents a range of message extensions for a protocol buffer.
+// Used in code generated by the protocol compiler.
+type ExtensionRange struct {
+	Start, End int32 // both inclusive
+}
+
+// extendableProto is an interface implemented by any protocol buffer generated by the current
+// proto compiler that may be extended.
+type extendableProto interface {
+	Message
+	ExtensionRangeArray() []ExtensionRange
+	extensionsWrite() map[int32]Extension
+	extensionsRead() (map[int32]Extension, sync.Locker)
+}
+
+// extendableProtoV1 is an interface implemented by a protocol buffer generated by the previous
+// version of the proto compiler that may be extended.
+type extendableProtoV1 interface {
+	Message
+	ExtensionRangeArray() []ExtensionRange
+	ExtensionMap() map[int32]Extension
+}
+
+// extensionAdapter is a wrapper around extendableProtoV1 that implements extendableProto.
+type extensionAdapter struct {
+	extendableProtoV1
+}
+
+func (e extensionAdapter) extensionsWrite() map[int32]Extension {
+	return e.ExtensionMap()
+}
+
+func (e extensionAdapter) extensionsRead() (map[int32]Extension, sync.Locker) {
+	return e.ExtensionMap(), notLocker{}
+}
+
+// notLocker is a sync.Locker whose Lock and Unlock methods are nops.
+type notLocker struct{}
+
+func (n notLocker) Lock()   {}
+func (n notLocker) Unlock() {}
+
+// extendable returns the extendableProto interface for the given generated proto message.
+// If the proto message has the old extension format, it returns a wrapper that implements
+// the extendableProto interface.
+func extendable(p interface{}) (extendableProto, error) {
+	switch p := p.(type) {
+	case extendableProto:
+		if isNilPtr(p) {
+			return nil, fmt.Errorf("proto: nil %T is not extendable", p)
+		}
+		return p, nil
+	case extendableProtoV1:
+		if isNilPtr(p) {
+			return nil, fmt.Errorf("proto: nil %T is not extendable", p)
+		}
+		return extensionAdapter{p}, nil
+	}
+	// Don't allocate a specific error containing %T:
+	// this is the hot path for Clone and MarshalText.
+	return nil, errNotExtendable
+}
+
+var errNotExtendable = errors.New("proto: not an extendable proto.Message")
+
+func isNilPtr(x interface{}) bool {
+	v := reflect.ValueOf(x)
+	return v.Kind() == reflect.Ptr && v.IsNil()
+}
+
+// XXX_InternalExtensions is an internal representation of proto extensions.
+//
+// Each generated message struct type embeds an anonymous XXX_InternalExtensions field,
+// thus gaining the unexported 'extensions' method, which can be called only from the proto package.
+//
+// The methods of XXX_InternalExtensions are not concurrency safe in general,
+// but calls to logically read-only methods such as has and get may be executed concurrently.
+type XXX_InternalExtensions struct {
+	// The struct must be indirect so that if a user inadvertently copies a
+	// generated message and its embedded XXX_InternalExtensions, they
+	// avoid the mayhem of a copied mutex.
+	//
+	// The mutex serializes all logically read-only operations to p.extensionMap.
+	// It is up to the client to ensure that write operations to p.extensionMap are
+	// mutually exclusive with other accesses.
+	p *struct {
+		mu           sync.Mutex
+		extensionMap map[int32]Extension
+	}
+}
+
+// extensionsWrite returns the extension map, creating it on first use.
+func (e *XXX_InternalExtensions) extensionsWrite() map[int32]Extension {
+	if e.p == nil {
+		e.p = new(struct {
+			mu           sync.Mutex
+			extensionMap map[int32]Extension
+		})
+		e.p.extensionMap = make(map[int32]Extension)
+	}
+	return e.p.extensionMap
+}
+
+// extensionsRead returns the extensions map for read-only use.  It may be nil.
+// The caller must hold the returned mutex's lock when accessing Elements within the map.
+func (e *XXX_InternalExtensions) extensionsRead() (map[int32]Extension, sync.Locker) {
+	if e.p == nil {
+		return nil, nil
+	}
+	return e.p.extensionMap, &e.p.mu
+}
+
+// ExtensionDesc represents an extension specification.
+// Used in generated code from the protocol compiler.
+type ExtensionDesc struct {
+	ExtendedType  Message     // nil pointer to the type that is being extended
+	ExtensionType interface{} // nil pointer to the extension type
+	Field         int32       // field number
+	Name          string      // fully-qualified name of extension, for text formatting
+	Tag           string      // protobuf tag style
+	Filename      string      // name of the file in which the extension is defined
+}
+
+func (ed *ExtensionDesc) repeated() bool {
+	t := reflect.TypeOf(ed.ExtensionType)
+	return t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8
+}
+
+// Extension represents an extension in a message.
+type Extension struct {
+	// When an extension is stored in a message using SetExtension
+	// only desc and value are set. When the message is marshaled
+	// enc will be set to the encoded form of the message.
+	//
+	// When a message is unmarshaled and contains extensions, each
+	// extension will have only enc set. When such an extension is
+	// accessed using GetExtension (or GetExtensions) desc and value
+	// will be set.
+	desc *ExtensionDesc
+
+	// value is a concrete value for the extension field. Let the type of
+	// desc.ExtensionType be the "API type" and the type of Extension.value
+	// be the "storage type". The API type and storage type are the same except:
+	//	* For scalars (except []byte), the API type uses *T,
+	//	while the storage type uses T.
+	//	* For repeated fields, the API type uses []T, while the storage type
+	//	uses *[]T.
+	//
+	// The reason for the divergence is so that the storage type more naturally
+	// matches what is expected of when retrieving the values through the
+	// protobuf reflection APIs.
+	//
+	// The value may only be populated if desc is also populated.
+	value interface{}
+
+	// enc is the raw bytes for the extension field.
+	enc []byte
+}
+
+// SetRawExtension is for testing only.
+func SetRawExtension(base Message, id int32, b []byte) {
+	epb, err := extendable(base)
+	if err != nil {
+		return
+	}
+	extmap := epb.extensionsWrite()
+	extmap[id] = Extension{enc: b}
+}
+
+// isExtensionField returns true iff the given field number is in an extension range.
+func isExtensionField(pb extendableProto, field int32) bool {
+	for _, er := range pb.ExtensionRangeArray() {
+		if er.Start <= field && field <= er.End {
+			return true
+		}
+	}
+	return false
+}
+
+// checkExtensionTypes checks that the given extension is valid for pb.
+func checkExtensionTypes(pb extendableProto, extension *ExtensionDesc) error {
+	var pbi interface{} = pb
+	// Check the extended type.
+	if ea, ok := pbi.(extensionAdapter); ok {
+		pbi = ea.extendableProtoV1
+	}
+	if a, b := reflect.TypeOf(pbi), reflect.TypeOf(extension.ExtendedType); a != b {
+		return fmt.Errorf("proto: bad extended type; %v does not extend %v", b, a)
+	}
+	// Check the range.
+	if !isExtensionField(pb, extension.Field) {
+		return errors.New("proto: bad extension number; not in declared ranges")
+	}
+	return nil
+}
+
+// extPropKey is sufficient to uniquely identify an extension.
+type extPropKey struct {
+	base  reflect.Type
+	field int32
+}
+
+var extProp = struct {
+	sync.RWMutex
+	m map[extPropKey]*Properties
+}{
+	m: make(map[extPropKey]*Properties),
+}
+
+func extensionProperties(ed *ExtensionDesc) *Properties {
+	key := extPropKey{base: reflect.TypeOf(ed.ExtendedType), field: ed.Field}
+
+	extProp.RLock()
+	if prop, ok := extProp.m[key]; ok {
+		extProp.RUnlock()
+		return prop
+	}
+	extProp.RUnlock()
+
+	extProp.Lock()
+	defer extProp.Unlock()
+	// Check again.
+	if prop, ok := extProp.m[key]; ok {
+		return prop
+	}
+
+	prop := new(Properties)
+	prop.Init(reflect.TypeOf(ed.ExtensionType), "unknown_name", ed.Tag, nil)
+	extProp.m[key] = prop
+	return prop
+}
+
+// HasExtension returns whether the given extension is present in pb.
+func HasExtension(pb Message, extension *ExtensionDesc) bool {
+	// TODO: Check types, field numbers, etc.?
+	epb, err := extendable(pb)
+	if err != nil {
+		return false
+	}
+	extmap, mu := epb.extensionsRead()
+	if extmap == nil {
+		return false
+	}
+	mu.Lock()
+	_, ok := extmap[extension.Field]
+	mu.Unlock()
+	return ok
+}
+
+// ClearExtension removes the given extension from pb.
+func ClearExtension(pb Message, extension *ExtensionDesc) {
+	epb, err := extendable(pb)
+	if err != nil {
+		return
+	}
+	// TODO: Check types, field numbers, etc.?
+	extmap := epb.extensionsWrite()
+	delete(extmap, extension.Field)
+}
+
+// GetExtension retrieves a proto2 extended field from pb.
+//
+// If the descriptor is type complete (i.e., ExtensionDesc.ExtensionType is non-nil),
+// then GetExtension parses the encoded field and returns a Go value of the specified type.
+// If the field is not present, then the default value is returned (if one is specified),
+// otherwise ErrMissingExtension is reported.
+//
+// If the descriptor is not type complete (i.e., ExtensionDesc.ExtensionType is nil),
+// then GetExtension returns the raw encoded bytes of the field extension.
+func GetExtension(pb Message, extension *ExtensionDesc) (interface{}, error) {
+	epb, err := extendable(pb)
+	if err != nil {
+		return nil, err
+	}
+
+	if extension.ExtendedType != nil {
+		// can only check type if this is a complete descriptor
+		if err := checkExtensionTypes(epb, extension); err != nil {
+			return nil, err
+		}
+	}
+
+	emap, mu := epb.extensionsRead()
+	if emap == nil {
+		return defaultExtensionValue(extension)
+	}
+	mu.Lock()
+	defer mu.Unlock()
+	e, ok := emap[extension.Field]
+	if !ok {
+		// defaultExtensionValue returns the default value or
+		// ErrMissingExtension if there is no default.
+		return defaultExtensionValue(extension)
+	}
+
+	if e.value != nil {
+		// Already decoded. Check the descriptor, though.
+		if e.desc != extension {
+			// This shouldn't happen. If it does, it means that
+			// GetExtension was called twice with two different
+			// descriptors with the same field number.
+			return nil, errors.New("proto: descriptor conflict")
+		}
+		return extensionAsLegacyType(e.value), nil
+	}
+
+	if extension.ExtensionType == nil {
+		// incomplete descriptor
+		return e.enc, nil
+	}
+
+	v, err := decodeExtension(e.enc, extension)
+	if err != nil {
+		return nil, err
+	}
+
+	// Remember the decoded version and drop the encoded version.
+	// That way it is safe to mutate what we return.
+	e.value = extensionAsStorageType(v)
+	e.desc = extension
+	e.enc = nil
+	emap[extension.Field] = e
+	return extensionAsLegacyType(e.value), nil
+}
+
+// defaultExtensionValue returns the default value for extension.
+// If no default for an extension is defined ErrMissingExtension is returned.
+func defaultExtensionValue(extension *ExtensionDesc) (interface{}, error) {
+	if extension.ExtensionType == nil {
+		// incomplete descriptor, so no default
+		return nil, ErrMissingExtension
+	}
+
+	t := reflect.TypeOf(extension.ExtensionType)
+	props := extensionProperties(extension)
+
+	sf, _, err := fieldDefault(t, props)
+	if err != nil {
+		return nil, err
+	}
+
+	if sf == nil || sf.value == nil {
+		// There is no default value.
+		return nil, ErrMissingExtension
+	}
+
+	if t.Kind() != reflect.Ptr {
+		// We do not need to return a Ptr, we can directly return sf.value.
+		return sf.value, nil
+	}
+
+	// We need to return an interface{} that is a pointer to sf.value.
+	value := reflect.New(t).Elem()
+	value.Set(reflect.New(value.Type().Elem()))
+	if sf.kind == reflect.Int32 {
+		// We may have an int32 or an enum, but the underlying data is int32.
+		// Since we can't set an int32 into a non int32 reflect.value directly
+		// set it as a int32.
+		value.Elem().SetInt(int64(sf.value.(int32)))
+	} else {
+		value.Elem().Set(reflect.ValueOf(sf.value))
+	}
+	return value.Interface(), nil
+}
+
+// decodeExtension decodes an extension encoded in b.
+func decodeExtension(b []byte, extension *ExtensionDesc) (interface{}, error) {
+	t := reflect.TypeOf(extension.ExtensionType)
+	unmarshal := typeUnmarshaler(t, extension.Tag)
+
+	// t is a pointer to a struct, pointer to basic type or a slice.
+	// Allocate space to store the pointer/slice.
+	value := reflect.New(t).Elem()
+
+	var err error
+	for {
+		x, n := decodeVarint(b)
+		if n == 0 {
+			return nil, io.ErrUnexpectedEOF
+		}
+		b = b[n:]
+		wire := int(x) & 7
+
+		b, err = unmarshal(b, valToPointer(value.Addr()), wire)
+		if err != nil {
+			return nil, err
+		}
+
+		if len(b) == 0 {
+			break
+		}
+	}
+	return value.Interface(), nil
+}
+
+// GetExtensions returns a slice of the extensions present in pb that are also listed in es.
+// The returned slice has the same length as es; missing extensions will appear as nil elements.
+func GetExtensions(pb Message, es []*ExtensionDesc) (extensions []interface{}, err error) {
+	epb, err := extendable(pb)
+	if err != nil {
+		return nil, err
+	}
+	extensions = make([]interface{}, len(es))
+	for i, e := range es {
+		extensions[i], err = GetExtension(epb, e)
+		if err == ErrMissingExtension {
+			err = nil
+		}
+		if err != nil {
+			return
+		}
+	}
+	return
+}
+
+// ExtensionDescs returns a new slice containing pb's extension descriptors, in undefined order.
+// For non-registered extensions, ExtensionDescs returns an incomplete descriptor containing
+// just the Field field, which defines the extension's field number.
+func ExtensionDescs(pb Message) ([]*ExtensionDesc, error) {
+	epb, err := extendable(pb)
+	if err != nil {
+		return nil, err
+	}
+	registeredExtensions := RegisteredExtensions(pb)
+
+	emap, mu := epb.extensionsRead()
+	if emap == nil {
+		return nil, nil
+	}
+	mu.Lock()
+	defer mu.Unlock()
+	extensions := make([]*ExtensionDesc, 0, len(emap))
+	for extid, e := range emap {
+		desc := e.desc
+		if desc == nil {
+			desc = registeredExtensions[extid]
+			if desc == nil {
+				desc = &ExtensionDesc{Field: extid}
+			}
+		}
+
+		extensions = append(extensions, desc)
+	}
+	return extensions, nil
+}
+
+// SetExtension sets the specified extension of pb to the specified value.
+func SetExtension(pb Message, extension *ExtensionDesc, value interface{}) error {
+	epb, err := extendable(pb)
+	if err != nil {
+		return err
+	}
+	if err := checkExtensionTypes(epb, extension); err != nil {
+		return err
+	}
+	typ := reflect.TypeOf(extension.ExtensionType)
+	if typ != reflect.TypeOf(value) {
+		return fmt.Errorf("proto: bad extension value type. got: %T, want: %T", value, extension.ExtensionType)
+	}
+	// nil extension values need to be caught early, because the
+	// encoder can't distinguish an ErrNil due to a nil extension
+	// from an ErrNil due to a missing field. Extensions are
+	// always optional, so the encoder would just swallow the error
+	// and drop all the extensions from the encoded message.
+	if reflect.ValueOf(value).IsNil() {
+		return fmt.Errorf("proto: SetExtension called with nil value of type %T", value)
+	}
+
+	extmap := epb.extensionsWrite()
+	extmap[extension.Field] = Extension{desc: extension, value: extensionAsStorageType(value)}
+	return nil
+}
+
+// ClearAllExtensions clears all extensions from pb.
+func ClearAllExtensions(pb Message) {
+	epb, err := extendable(pb)
+	if err != nil {
+		return
+	}
+	m := epb.extensionsWrite()
+	for k := range m {
+		delete(m, k)
+	}
+}
+
+// A global registry of extensions.
+// The generated code will register the generated descriptors by calling RegisterExtension.
+
+var extensionMaps = make(map[reflect.Type]map[int32]*ExtensionDesc)
+
+// RegisterExtension is called from the generated code.
+func RegisterExtension(desc *ExtensionDesc) {
+	st := reflect.TypeOf(desc.ExtendedType).Elem()
+	m := extensionMaps[st]
+	if m == nil {
+		m = make(map[int32]*ExtensionDesc)
+		extensionMaps[st] = m
+	}
+	if _, ok := m[desc.Field]; ok {
+		panic("proto: duplicate extension registered: " + st.String() + " " + strconv.Itoa(int(desc.Field)))
+	}
+	m[desc.Field] = desc
+}
+
+// RegisteredExtensions returns a map of the registered extensions of a
+// protocol buffer struct, indexed by the extension number.
+// The argument pb should be a nil pointer to the struct type.
+func RegisteredExtensions(pb Message) map[int32]*ExtensionDesc {
+	return extensionMaps[reflect.TypeOf(pb).Elem()]
+}
+
+// extensionAsLegacyType converts an value in the storage type as the API type.
+// See Extension.value.
+func extensionAsLegacyType(v interface{}) interface{} {
+	switch rv := reflect.ValueOf(v); rv.Kind() {
+	case reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String:
+		// Represent primitive types as a pointer to the value.
+		rv2 := reflect.New(rv.Type())
+		rv2.Elem().Set(rv)
+		v = rv2.Interface()
+	case reflect.Ptr:
+		// Represent slice types as the value itself.
+		switch rv.Type().Elem().Kind() {
+		case reflect.Slice:
+			if rv.IsNil() {
+				v = reflect.Zero(rv.Type().Elem()).Interface()
+			} else {
+				v = rv.Elem().Interface()
+			}
+		}
+	}
+	return v
+}
+
+// extensionAsStorageType converts an value in the API type as the storage type.
+// See Extension.value.
+func extensionAsStorageType(v interface{}) interface{} {
+	switch rv := reflect.ValueOf(v); rv.Kind() {
+	case reflect.Ptr:
+		// Represent slice types as the value itself.
+		switch rv.Type().Elem().Kind() {
+		case reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String:
+			if rv.IsNil() {
+				v = reflect.Zero(rv.Type().Elem()).Interface()
+			} else {
+				v = rv.Elem().Interface()
+			}
+		}
+	case reflect.Slice:
+		// Represent slice types as a pointer to the value.
+		if rv.Type().Elem().Kind() != reflect.Uint8 {
+			rv2 := reflect.New(rv.Type())
+			rv2.Elem().Set(rv)
+			v = rv2.Interface()
+		}
+	}
+	return v
+}
diff --git a/proto/extensions_test.go b/proto/extensions_test.go
new file mode 100644
index 0000000..bfdffee
--- /dev/null
+++ b/proto/extensions_test.go
@@ -0,0 +1,692 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2014 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto_test
+
+import (
+	"bytes"
+	"fmt"
+	"io"
+	"reflect"
+	"sort"
+	"strings"
+	"sync"
+	"testing"
+
+	"github.com/golang/protobuf/proto"
+	pb "github.com/golang/protobuf/proto/test_proto"
+)
+
+func TestGetExtensionsWithMissingExtensions(t *testing.T) {
+	msg := &pb.MyMessage{}
+	ext1 := &pb.Ext{}
+	if err := proto.SetExtension(msg, pb.E_Ext_More, ext1); err != nil {
+		t.Fatalf("Could not set ext1: %s", err)
+	}
+	exts, err := proto.GetExtensions(msg, []*proto.ExtensionDesc{
+		pb.E_Ext_More,
+		pb.E_Ext_Text,
+	})
+	if err != nil {
+		t.Fatalf("GetExtensions() failed: %s", err)
+	}
+	if exts[0] != ext1 {
+		t.Errorf("ext1 not in returned extensions: %T %v", exts[0], exts[0])
+	}
+	if exts[1] != nil {
+		t.Errorf("ext2 in returned extensions: %T %v", exts[1], exts[1])
+	}
+}
+
+func TestGetExtensionWithEmptyBuffer(t *testing.T) {
+	// Make sure that GetExtension returns an error if its
+	// undecoded buffer is empty.
+	msg := &pb.MyMessage{}
+	proto.SetRawExtension(msg, pb.E_Ext_More.Field, []byte{})
+	_, err := proto.GetExtension(msg, pb.E_Ext_More)
+	if want := io.ErrUnexpectedEOF; err != want {
+		t.Errorf("unexpected error in GetExtension from empty buffer: got %v, want %v", err, want)
+	}
+}
+
+func TestGetExtensionForIncompleteDesc(t *testing.T) {
+	msg := &pb.MyMessage{Count: proto.Int32(0)}
+	extdesc1 := &proto.ExtensionDesc{
+		ExtendedType:  (*pb.MyMessage)(nil),
+		ExtensionType: (*bool)(nil),
+		Field:         123456789,
+		Name:          "a.b",
+		Tag:           "varint,123456789,opt",
+	}
+	ext1 := proto.Bool(true)
+	if err := proto.SetExtension(msg, extdesc1, ext1); err != nil {
+		t.Fatalf("Could not set ext1: %s", err)
+	}
+	extdesc2 := &proto.ExtensionDesc{
+		ExtendedType:  (*pb.MyMessage)(nil),
+		ExtensionType: ([]byte)(nil),
+		Field:         123456790,
+		Name:          "a.c",
+		Tag:           "bytes,123456790,opt",
+	}
+	ext2 := []byte{0, 1, 2, 3, 4, 5, 6, 7}
+	if err := proto.SetExtension(msg, extdesc2, ext2); err != nil {
+		t.Fatalf("Could not set ext2: %s", err)
+	}
+	extdesc3 := &proto.ExtensionDesc{
+		ExtendedType:  (*pb.MyMessage)(nil),
+		ExtensionType: (*pb.Ext)(nil),
+		Field:         123456791,
+		Name:          "a.d",
+		Tag:           "bytes,123456791,opt",
+	}
+	ext3 := &pb.Ext{Data: proto.String("foo")}
+	if err := proto.SetExtension(msg, extdesc3, ext3); err != nil {
+		t.Fatalf("Could not set ext3: %s", err)
+	}
+
+	b, err := proto.Marshal(msg)
+	if err != nil {
+		t.Fatalf("Could not marshal msg: %v", err)
+	}
+	if err := proto.Unmarshal(b, msg); err != nil {
+		t.Fatalf("Could not unmarshal into msg: %v", err)
+	}
+
+	var expected proto.Buffer
+	if err := expected.EncodeVarint(uint64((extdesc1.Field << 3) | proto.WireVarint)); err != nil {
+		t.Fatalf("failed to compute expected prefix for ext1: %s", err)
+	}
+	if err := expected.EncodeVarint(1 /* bool true */); err != nil {
+		t.Fatalf("failed to compute expected value for ext1: %s", err)
+	}
+
+	if b, err := proto.GetExtension(msg, &proto.ExtensionDesc{Field: extdesc1.Field}); err != nil {
+		t.Fatalf("Failed to get raw value for ext1: %s", err)
+	} else if !reflect.DeepEqual(b, expected.Bytes()) {
+		t.Fatalf("Raw value for ext1: got %v, want %v", b, expected.Bytes())
+	}
+
+	expected = proto.Buffer{} // reset
+	if err := expected.EncodeVarint(uint64((extdesc2.Field << 3) | proto.WireBytes)); err != nil {
+		t.Fatalf("failed to compute expected prefix for ext2: %s", err)
+	}
+	if err := expected.EncodeRawBytes(ext2); err != nil {
+		t.Fatalf("failed to compute expected value for ext2: %s", err)
+	}
+
+	if b, err := proto.GetExtension(msg, &proto.ExtensionDesc{Field: extdesc2.Field}); err != nil {
+		t.Fatalf("Failed to get raw value for ext2: %s", err)
+	} else if !reflect.DeepEqual(b, expected.Bytes()) {
+		t.Fatalf("Raw value for ext2: got %v, want %v", b, expected.Bytes())
+	}
+
+	expected = proto.Buffer{} // reset
+	if err := expected.EncodeVarint(uint64((extdesc3.Field << 3) | proto.WireBytes)); err != nil {
+		t.Fatalf("failed to compute expected prefix for ext3: %s", err)
+	}
+	if b, err := proto.Marshal(ext3); err != nil {
+		t.Fatalf("failed to compute expected value for ext3: %s", err)
+	} else if err := expected.EncodeRawBytes(b); err != nil {
+		t.Fatalf("failed to compute expected value for ext3: %s", err)
+	}
+
+	if b, err := proto.GetExtension(msg, &proto.ExtensionDesc{Field: extdesc3.Field}); err != nil {
+		t.Fatalf("Failed to get raw value for ext3: %s", err)
+	} else if !reflect.DeepEqual(b, expected.Bytes()) {
+		t.Fatalf("Raw value for ext3: got %v, want %v", b, expected.Bytes())
+	}
+}
+
+func TestExtensionDescsWithUnregisteredExtensions(t *testing.T) {
+	msg := &pb.MyMessage{Count: proto.Int32(0)}
+	extdesc1 := pb.E_Ext_More
+	if descs, err := proto.ExtensionDescs(msg); len(descs) != 0 || err != nil {
+		t.Errorf("proto.ExtensionDescs: got %d descs, error %v; want 0, nil", len(descs), err)
+	}
+
+	ext1 := &pb.Ext{}
+	if err := proto.SetExtension(msg, extdesc1, ext1); err != nil {
+		t.Fatalf("Could not set ext1: %s", err)
+	}
+	extdesc2 := &proto.ExtensionDesc{
+		ExtendedType:  (*pb.MyMessage)(nil),
+		ExtensionType: (*bool)(nil),
+		Field:         123456789,
+		Name:          "a.b",
+		Tag:           "varint,123456789,opt",
+	}
+	ext2 := proto.Bool(false)
+	if err := proto.SetExtension(msg, extdesc2, ext2); err != nil {
+		t.Fatalf("Could not set ext2: %s", err)
+	}
+
+	b, err := proto.Marshal(msg)
+	if err != nil {
+		t.Fatalf("Could not marshal msg: %v", err)
+	}
+	if err := proto.Unmarshal(b, msg); err != nil {
+		t.Fatalf("Could not unmarshal into msg: %v", err)
+	}
+
+	descs, err := proto.ExtensionDescs(msg)
+	if err != nil {
+		t.Fatalf("proto.ExtensionDescs: got error %v", err)
+	}
+	sortExtDescs(descs)
+	wantDescs := []*proto.ExtensionDesc{extdesc1, {Field: extdesc2.Field}}
+	if !reflect.DeepEqual(descs, wantDescs) {
+		t.Errorf("proto.ExtensionDescs(msg) sorted extension ids: got %+v, want %+v", descs, wantDescs)
+	}
+}
+
+type ExtensionDescSlice []*proto.ExtensionDesc
+
+func (s ExtensionDescSlice) Len() int           { return len(s) }
+func (s ExtensionDescSlice) Less(i, j int) bool { return s[i].Field < s[j].Field }
+func (s ExtensionDescSlice) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }
+
+func sortExtDescs(s []*proto.ExtensionDesc) {
+	sort.Sort(ExtensionDescSlice(s))
+}
+
+func TestGetExtensionStability(t *testing.T) {
+	check := func(m *pb.MyMessage) bool {
+		ext1, err := proto.GetExtension(m, pb.E_Ext_More)
+		if err != nil {
+			t.Fatalf("GetExtension() failed: %s", err)
+		}
+		ext2, err := proto.GetExtension(m, pb.E_Ext_More)
+		if err != nil {
+			t.Fatalf("GetExtension() failed: %s", err)
+		}
+		return ext1 == ext2
+	}
+	msg := &pb.MyMessage{Count: proto.Int32(4)}
+	ext0 := &pb.Ext{}
+	if err := proto.SetExtension(msg, pb.E_Ext_More, ext0); err != nil {
+		t.Fatalf("Could not set ext1: %s", ext0)
+	}
+	if !check(msg) {
+		t.Errorf("GetExtension() not stable before marshaling")
+	}
+	bb, err := proto.Marshal(msg)
+	if err != nil {
+		t.Fatalf("Marshal() failed: %s", err)
+	}
+	msg1 := &pb.MyMessage{}
+	err = proto.Unmarshal(bb, msg1)
+	if err != nil {
+		t.Fatalf("Unmarshal() failed: %s", err)
+	}
+	if !check(msg1) {
+		t.Errorf("GetExtension() not stable after unmarshaling")
+	}
+}
+
+func TestGetExtensionDefaults(t *testing.T) {
+	var setFloat64 float64 = 1
+	var setFloat32 float32 = 2
+	var setInt32 int32 = 3
+	var setInt64 int64 = 4
+	var setUint32 uint32 = 5
+	var setUint64 uint64 = 6
+	var setBool = true
+	var setBool2 = false
+	var setString = "Goodnight string"
+	var setBytes = []byte("Goodnight bytes")
+	var setEnum = pb.DefaultsMessage_TWO
+
+	type testcase struct {
+		ext  *proto.ExtensionDesc // Extension we are testing.
+		want interface{}          // Expected value of extension, or nil (meaning that GetExtension will fail).
+		def  interface{}          // Expected value of extension after ClearExtension().
+	}
+	tests := []testcase{
+		{pb.E_NoDefaultDouble, setFloat64, nil},
+		{pb.E_NoDefaultFloat, setFloat32, nil},
+		{pb.E_NoDefaultInt32, setInt32, nil},
+		{pb.E_NoDefaultInt64, setInt64, nil},
+		{pb.E_NoDefaultUint32, setUint32, nil},
+		{pb.E_NoDefaultUint64, setUint64, nil},
+		{pb.E_NoDefaultSint32, setInt32, nil},
+		{pb.E_NoDefaultSint64, setInt64, nil},
+		{pb.E_NoDefaultFixed32, setUint32, nil},
+		{pb.E_NoDefaultFixed64, setUint64, nil},
+		{pb.E_NoDefaultSfixed32, setInt32, nil},
+		{pb.E_NoDefaultSfixed64, setInt64, nil},
+		{pb.E_NoDefaultBool, setBool, nil},
+		{pb.E_NoDefaultBool, setBool2, nil},
+		{pb.E_NoDefaultString, setString, nil},
+		{pb.E_NoDefaultBytes, setBytes, nil},
+		{pb.E_NoDefaultEnum, setEnum, nil},
+		{pb.E_DefaultDouble, setFloat64, float64(3.1415)},
+		{pb.E_DefaultFloat, setFloat32, float32(3.14)},
+		{pb.E_DefaultInt32, setInt32, int32(42)},
+		{pb.E_DefaultInt64, setInt64, int64(43)},
+		{pb.E_DefaultUint32, setUint32, uint32(44)},
+		{pb.E_DefaultUint64, setUint64, uint64(45)},
+		{pb.E_DefaultSint32, setInt32, int32(46)},
+		{pb.E_DefaultSint64, setInt64, int64(47)},
+		{pb.E_DefaultFixed32, setUint32, uint32(48)},
+		{pb.E_DefaultFixed64, setUint64, uint64(49)},
+		{pb.E_DefaultSfixed32, setInt32, int32(50)},
+		{pb.E_DefaultSfixed64, setInt64, int64(51)},
+		{pb.E_DefaultBool, setBool, true},
+		{pb.E_DefaultBool, setBool2, true},
+		{pb.E_DefaultString, setString, "Hello, string,def=foo"},
+		{pb.E_DefaultBytes, setBytes, []byte("Hello, bytes")},
+		{pb.E_DefaultEnum, setEnum, pb.DefaultsMessage_ONE},
+	}
+
+	checkVal := func(test testcase, msg *pb.DefaultsMessage, valWant interface{}) error {
+		val, err := proto.GetExtension(msg, test.ext)
+		if err != nil {
+			if valWant != nil {
+				return fmt.Errorf("GetExtension(): %s", err)
+			}
+			if want := proto.ErrMissingExtension; err != want {
+				return fmt.Errorf("Unexpected error: got %v, want %v", err, want)
+			}
+			return nil
+		}
+
+		// All proto2 extension values are either a pointer to a value or a slice of values.
+		ty := reflect.TypeOf(val)
+		tyWant := reflect.TypeOf(test.ext.ExtensionType)
+		if got, want := ty, tyWant; got != want {
+			return fmt.Errorf("unexpected reflect.TypeOf(): got %v want %v", got, want)
+		}
+		tye := ty.Elem()
+		tyeWant := tyWant.Elem()
+		if got, want := tye, tyeWant; got != want {
+			return fmt.Errorf("unexpected reflect.TypeOf().Elem(): got %v want %v", got, want)
+		}
+
+		// Check the name of the type of the value.
+		// If it is an enum it will be type int32 with the name of the enum.
+		if got, want := tye.Name(), tye.Name(); got != want {
+			return fmt.Errorf("unexpected reflect.TypeOf().Elem().Name(): got %v want %v", got, want)
+		}
+
+		// Check that value is what we expect.
+		// If we have a pointer in val, get the value it points to.
+		valExp := val
+		if ty.Kind() == reflect.Ptr {
+			valExp = reflect.ValueOf(val).Elem().Interface()
+		}
+		if got, want := valExp, valWant; !reflect.DeepEqual(got, want) {
+			return fmt.Errorf("unexpected reflect.DeepEqual(): got %v want %v", got, want)
+		}
+
+		return nil
+	}
+
+	setTo := func(test testcase) interface{} {
+		setTo := reflect.ValueOf(test.want)
+		if typ := reflect.TypeOf(test.ext.ExtensionType); typ.Kind() == reflect.Ptr {
+			setTo = reflect.New(typ).Elem()
+			setTo.Set(reflect.New(setTo.Type().Elem()))
+			setTo.Elem().Set(reflect.ValueOf(test.want))
+		}
+		return setTo.Interface()
+	}
+
+	for _, test := range tests {
+		msg := &pb.DefaultsMessage{}
+		name := test.ext.Name
+
+		// Check the initial value.
+		if err := checkVal(test, msg, test.def); err != nil {
+			t.Errorf("%s: %v", name, err)
+		}
+
+		// Set the per-type value and check value.
+		name = fmt.Sprintf("%s (set to %T %v)", name, test.want, test.want)
+		if err := proto.SetExtension(msg, test.ext, setTo(test)); err != nil {
+			t.Errorf("%s: SetExtension(): %v", name, err)
+			continue
+		}
+		if err := checkVal(test, msg, test.want); err != nil {
+			t.Errorf("%s: %v", name, err)
+			continue
+		}
+
+		// Set and check the value.
+		name += " (cleared)"
+		proto.ClearExtension(msg, test.ext)
+		if err := checkVal(test, msg, test.def); err != nil {
+			t.Errorf("%s: %v", name, err)
+		}
+	}
+}
+
+func TestNilMessage(t *testing.T) {
+	name := "nil interface"
+	if got, err := proto.GetExtension(nil, pb.E_Ext_More); err == nil {
+		t.Errorf("%s: got %T %v, expected to fail", name, got, got)
+	} else if !strings.Contains(err.Error(), "extendable") {
+		t.Errorf("%s: got error %v, expected not-extendable error", name, err)
+	}
+
+	// Regression tests: all functions of the Extension API
+	// used to panic when passed (*M)(nil), where M is a concrete message
+	// type.  Now they handle this gracefully as a no-op or reported error.
+	var nilMsg *pb.MyMessage
+	desc := pb.E_Ext_More
+
+	isNotExtendable := func(err error) bool {
+		return strings.Contains(fmt.Sprint(err), "not extendable")
+	}
+
+	if proto.HasExtension(nilMsg, desc) {
+		t.Error("HasExtension(nil) = true")
+	}
+
+	if _, err := proto.GetExtensions(nilMsg, []*proto.ExtensionDesc{desc}); !isNotExtendable(err) {
+		t.Errorf("GetExtensions(nil) = %q (wrong error)", err)
+	}
+
+	if _, err := proto.ExtensionDescs(nilMsg); !isNotExtendable(err) {
+		t.Errorf("ExtensionDescs(nil) = %q (wrong error)", err)
+	}
+
+	if err := proto.SetExtension(nilMsg, desc, nil); !isNotExtendable(err) {
+		t.Errorf("SetExtension(nil) = %q (wrong error)", err)
+	}
+
+	proto.ClearExtension(nilMsg, desc) // no-op
+	proto.ClearAllExtensions(nilMsg)   // no-op
+}
+
+func TestExtensionsRoundTrip(t *testing.T) {
+	msg := &pb.MyMessage{}
+	ext1 := &pb.Ext{
+		Data: proto.String("hi"),
+	}
+	ext2 := &pb.Ext{
+		Data: proto.String("there"),
+	}
+	exists := proto.HasExtension(msg, pb.E_Ext_More)
+	if exists {
+		t.Error("Extension More present unexpectedly")
+	}
+	if err := proto.SetExtension(msg, pb.E_Ext_More, ext1); err != nil {
+		t.Error(err)
+	}
+	if err := proto.SetExtension(msg, pb.E_Ext_More, ext2); err != nil {
+		t.Error(err)
+	}
+	e, err := proto.GetExtension(msg, pb.E_Ext_More)
+	if err != nil {
+		t.Error(err)
+	}
+	x, ok := e.(*pb.Ext)
+	if !ok {
+		t.Errorf("e has type %T, expected test_proto.Ext", e)
+	} else if *x.Data != "there" {
+		t.Errorf("SetExtension failed to overwrite, got %+v, not 'there'", x)
+	}
+	proto.ClearExtension(msg, pb.E_Ext_More)
+	if _, err = proto.GetExtension(msg, pb.E_Ext_More); err != proto.ErrMissingExtension {
+		t.Errorf("got %v, expected ErrMissingExtension", e)
+	}
+	if _, err := proto.GetExtension(msg, pb.E_X215); err == nil {
+		t.Error("expected bad extension error, got nil")
+	}
+	if err := proto.SetExtension(msg, pb.E_X215, 12); err == nil {
+		t.Error("expected extension err")
+	}
+	if err := proto.SetExtension(msg, pb.E_Ext_More, 12); err == nil {
+		t.Error("expected some sort of type mismatch error, got nil")
+	}
+}
+
+func TestNilExtension(t *testing.T) {
+	msg := &pb.MyMessage{
+		Count: proto.Int32(1),
+	}
+	if err := proto.SetExtension(msg, pb.E_Ext_Text, proto.String("hello")); err != nil {
+		t.Fatal(err)
+	}
+	if err := proto.SetExtension(msg, pb.E_Ext_More, (*pb.Ext)(nil)); err == nil {
+		t.Error("expected SetExtension to fail due to a nil extension")
+	} else if want := fmt.Sprintf("proto: SetExtension called with nil value of type %T", new(pb.Ext)); err.Error() != want {
+		t.Errorf("expected error %v, got %v", want, err)
+	}
+	// Note: if the behavior of Marshal is ever changed to ignore nil extensions, update
+	// this test to verify that E_Ext_Text is properly propagated through marshal->unmarshal.
+}
+
+func TestMarshalUnmarshalRepeatedExtension(t *testing.T) {
+	// Add a repeated extension to the result.
+	tests := []struct {
+		name string
+		ext  []*pb.ComplexExtension
+	}{
+		{
+			"two fields",
+			[]*pb.ComplexExtension{
+				{First: proto.Int32(7)},
+				{Second: proto.Int32(11)},
+			},
+		},
+		{
+			"repeated field",
+			[]*pb.ComplexExtension{
+				{Third: []int32{1000}},
+				{Third: []int32{2000}},
+			},
+		},
+		{
+			"two fields and repeated field",
+			[]*pb.ComplexExtension{
+				{Third: []int32{1000}},
+				{First: proto.Int32(9)},
+				{Second: proto.Int32(21)},
+				{Third: []int32{2000}},
+			},
+		},
+	}
+	for _, test := range tests {
+		// Marshal message with a repeated extension.
+		msg1 := new(pb.OtherMessage)
+		err := proto.SetExtension(msg1, pb.E_RComplex, test.ext)
+		if err != nil {
+			t.Fatalf("[%s] Error setting extension: %v", test.name, err)
+		}
+		b, err := proto.Marshal(msg1)
+		if err != nil {
+			t.Fatalf("[%s] Error marshaling message: %v", test.name, err)
+		}
+
+		// Unmarshal and read the merged proto.
+		msg2 := new(pb.OtherMessage)
+		err = proto.Unmarshal(b, msg2)
+		if err != nil {
+			t.Fatalf("[%s] Error unmarshaling message: %v", test.name, err)
+		}
+		e, err := proto.GetExtension(msg2, pb.E_RComplex)
+		if err != nil {
+			t.Fatalf("[%s] Error getting extension: %v", test.name, err)
+		}
+		ext := e.([]*pb.ComplexExtension)
+		if ext == nil {
+			t.Fatalf("[%s] Invalid extension", test.name)
+		}
+		if len(ext) != len(test.ext) {
+			t.Errorf("[%s] Wrong length of ComplexExtension: got: %v want: %v\n", test.name, len(ext), len(test.ext))
+		}
+		for i := range test.ext {
+			if !proto.Equal(ext[i], test.ext[i]) {
+				t.Errorf("[%s] Wrong value for ComplexExtension[%d]: got: %v want: %v\n", test.name, i, ext[i], test.ext[i])
+			}
+		}
+	}
+}
+
+func TestUnmarshalRepeatingNonRepeatedExtension(t *testing.T) {
+	// We may see multiple instances of the same extension in the wire
+	// format. For example, the proto compiler may encode custom options in
+	// this way. Here, we verify that we merge the extensions together.
+	tests := []struct {
+		name string
+		ext  []*pb.ComplexExtension
+	}{
+		{
+			"two fields",
+			[]*pb.ComplexExtension{
+				{First: proto.Int32(7)},
+				{Second: proto.Int32(11)},
+			},
+		},
+		{
+			"repeated field",
+			[]*pb.ComplexExtension{
+				{Third: []int32{1000}},
+				{Third: []int32{2000}},
+			},
+		},
+		{
+			"two fields and repeated field",
+			[]*pb.ComplexExtension{
+				{Third: []int32{1000}},
+				{First: proto.Int32(9)},
+				{Second: proto.Int32(21)},
+				{Third: []int32{2000}},
+			},
+		},
+	}
+	for _, test := range tests {
+		var buf bytes.Buffer
+		var want pb.ComplexExtension
+
+		// Generate a serialized representation of a repeated extension
+		// by concatenating bytes together.
+		for i, e := range test.ext {
+			// Merge to create the wanted proto.
+			proto.Merge(&want, e)
+
+			// serialize the message
+			msg := new(pb.OtherMessage)
+			err := proto.SetExtension(msg, pb.E_Complex, e)
+			if err != nil {
+				t.Fatalf("[%s] Error setting extension %d: %v", test.name, i, err)
+			}
+			b, err := proto.Marshal(msg)
+			if err != nil {
+				t.Fatalf("[%s] Error marshaling message %d: %v", test.name, i, err)
+			}
+			buf.Write(b)
+		}
+
+		// Unmarshal and read the merged proto.
+		msg2 := new(pb.OtherMessage)
+		err := proto.Unmarshal(buf.Bytes(), msg2)
+		if err != nil {
+			t.Fatalf("[%s] Error unmarshaling message: %v", test.name, err)
+		}
+		e, err := proto.GetExtension(msg2, pb.E_Complex)
+		if err != nil {
+			t.Fatalf("[%s] Error getting extension: %v", test.name, err)
+		}
+		ext := e.(*pb.ComplexExtension)
+		if ext == nil {
+			t.Fatalf("[%s] Invalid extension", test.name)
+		}
+		if !proto.Equal(ext, &want) {
+			t.Errorf("[%s] Wrong value for ComplexExtension: got: %s want: %s\n", test.name, ext, &want)
+		}
+	}
+}
+
+func TestClearAllExtensions(t *testing.T) {
+	// unregistered extension
+	desc := &proto.ExtensionDesc{
+		ExtendedType:  (*pb.MyMessage)(nil),
+		ExtensionType: (*bool)(nil),
+		Field:         101010100,
+		Name:          "emptyextension",
+		Tag:           "varint,0,opt",
+	}
+	m := &pb.MyMessage{}
+	if proto.HasExtension(m, desc) {
+		t.Errorf("proto.HasExtension(%s): got true, want false", proto.MarshalTextString(m))
+	}
+	if err := proto.SetExtension(m, desc, proto.Bool(true)); err != nil {
+		t.Errorf("proto.SetExtension(m, desc, true): got error %q, want nil", err)
+	}
+	if !proto.HasExtension(m, desc) {
+		t.Errorf("proto.HasExtension(%s): got false, want true", proto.MarshalTextString(m))
+	}
+	proto.ClearAllExtensions(m)
+	if proto.HasExtension(m, desc) {
+		t.Errorf("proto.HasExtension(%s): got true, want false", proto.MarshalTextString(m))
+	}
+}
+
+func TestMarshalRace(t *testing.T) {
+	ext := &pb.Ext{}
+	m := &pb.MyMessage{Count: proto.Int32(4)}
+	if err := proto.SetExtension(m, pb.E_Ext_More, ext); err != nil {
+		t.Fatalf("proto.SetExtension(m, desc, true): got error %q, want nil", err)
+	}
+
+	b, err := proto.Marshal(m)
+	if err != nil {
+		t.Fatalf("Could not marshal message: %v", err)
+	}
+	if err := proto.Unmarshal(b, m); err != nil {
+		t.Fatalf("Could not unmarshal message: %v", err)
+	}
+	// after Unmarshal, the extension is in undecoded form.
+	// GetExtension will decode it lazily. Make sure this does
+	// not race against Marshal.
+
+	wg := sync.WaitGroup{}
+	errs := make(chan error, 3)
+	for n := 3; n > 0; n-- {
+		wg.Add(1)
+		go func() {
+			defer wg.Done()
+			_, err := proto.Marshal(m)
+			errs <- err
+		}()
+	}
+	wg.Wait()
+	close(errs)
+
+	for err = range errs {
+		if err != nil {
+			t.Fatal(err)
+		}
+	}
+}
diff --git a/proto/lib.go b/proto/lib.go
new file mode 100644
index 0000000..70fbda5
--- /dev/null
+++ b/proto/lib.go
@@ -0,0 +1,965 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/*
+Package proto converts data structures to and from the wire format of
+protocol buffers.  It works in concert with the Go source code generated
+for .proto files by the protocol compiler.
+
+A summary of the properties of the protocol buffer interface
+for a protocol buffer variable v:
+
+  - Names are turned from camel_case to CamelCase for export.
+  - There are no methods on v to set fields; just treat
+	them as structure fields.
+  - There are getters that return a field's value if set,
+	and return the field's default value if unset.
+	The getters work even if the receiver is a nil message.
+  - The zero value for a struct is its correct initialization state.
+	All desired fields must be set before marshaling.
+  - A Reset() method will restore a protobuf struct to its zero state.
+  - Non-repeated fields are pointers to the values; nil means unset.
+	That is, optional or required field int32 f becomes F *int32.
+  - Repeated fields are slices.
+  - Helper functions are available to aid the setting of fields.
+	msg.Foo = proto.String("hello") // set field
+  - Constants are defined to hold the default values of all fields that
+	have them.  They have the form Default_StructName_FieldName.
+	Because the getter methods handle defaulted values,
+	direct use of these constants should be rare.
+  - Enums are given type names and maps from names to values.
+	Enum values are prefixed by the enclosing message's name, or by the
+	enum's type name if it is a top-level enum. Enum types have a String
+	method, and a Enum method to assist in message construction.
+  - Nested messages, groups and enums have type names prefixed with the name of
+	the surrounding message type.
+  - Extensions are given descriptor names that start with E_,
+	followed by an underscore-delimited list of the nested messages
+	that contain it (if any) followed by the CamelCased name of the
+	extension field itself.  HasExtension, ClearExtension, GetExtension
+	and SetExtension are functions for manipulating extensions.
+  - Oneof field sets are given a single field in their message,
+	with distinguished wrapper types for each possible field value.
+  - Marshal and Unmarshal are functions to encode and decode the wire format.
+
+When the .proto file specifies `syntax="proto3"`, there are some differences:
+
+  - Non-repeated fields of non-message type are values instead of pointers.
+  - Enum types do not get an Enum method.
+
+The simplest way to describe this is to see an example.
+Given file test.proto, containing
+
+	package example;
+
+	enum FOO { X = 17; }
+
+	message Test {
+	  required string label = 1;
+	  optional int32 type = 2 [default=77];
+	  repeated int64 reps = 3;
+	  optional group OptionalGroup = 4 {
+	    required string RequiredField = 5;
+	  }
+	  oneof union {
+	    int32 number = 6;
+	    string name = 7;
+	  }
+	}
+
+The resulting file, test.pb.go, is:
+
+	package example
+
+	import proto "github.com/golang/protobuf/proto"
+	import math "math"
+
+	type FOO int32
+	const (
+		FOO_X FOO = 17
+	)
+	var FOO_name = map[int32]string{
+		17: "X",
+	}
+	var FOO_value = map[string]int32{
+		"X": 17,
+	}
+
+	func (x FOO) Enum() *FOO {
+		p := new(FOO)
+		*p = x
+		return p
+	}
+	func (x FOO) String() string {
+		return proto.EnumName(FOO_name, int32(x))
+	}
+	func (x *FOO) UnmarshalJSON(data []byte) error {
+		value, err := proto.UnmarshalJSONEnum(FOO_value, data)
+		if err != nil {
+			return err
+		}
+		*x = FOO(value)
+		return nil
+	}
+
+	type Test struct {
+		Label         *string             `protobuf:"bytes,1,req,name=label" json:"label,omitempty"`
+		Type          *int32              `protobuf:"varint,2,opt,name=type,def=77" json:"type,omitempty"`
+		Reps          []int64             `protobuf:"varint,3,rep,name=reps" json:"reps,omitempty"`
+		Optionalgroup *Test_OptionalGroup `protobuf:"group,4,opt,name=OptionalGroup" json:"optionalgroup,omitempty"`
+		// Types that are valid to be assigned to Union:
+		//	*Test_Number
+		//	*Test_Name
+		Union            isTest_Union `protobuf_oneof:"union"`
+		XXX_unrecognized []byte       `json:"-"`
+	}
+	func (m *Test) Reset()         { *m = Test{} }
+	func (m *Test) String() string { return proto.CompactTextString(m) }
+	func (*Test) ProtoMessage() {}
+
+	type isTest_Union interface {
+		isTest_Union()
+	}
+
+	type Test_Number struct {
+		Number int32 `protobuf:"varint,6,opt,name=number"`
+	}
+	type Test_Name struct {
+		Name string `protobuf:"bytes,7,opt,name=name"`
+	}
+
+	func (*Test_Number) isTest_Union() {}
+	func (*Test_Name) isTest_Union()   {}
+
+	func (m *Test) GetUnion() isTest_Union {
+		if m != nil {
+			return m.Union
+		}
+		return nil
+	}
+	const Default_Test_Type int32 = 77
+
+	func (m *Test) GetLabel() string {
+		if m != nil && m.Label != nil {
+			return *m.Label
+		}
+		return ""
+	}
+
+	func (m *Test) GetType() int32 {
+		if m != nil && m.Type != nil {
+			return *m.Type
+		}
+		return Default_Test_Type
+	}
+
+	func (m *Test) GetOptionalgroup() *Test_OptionalGroup {
+		if m != nil {
+			return m.Optionalgroup
+		}
+		return nil
+	}
+
+	type Test_OptionalGroup struct {
+		RequiredField *string `protobuf:"bytes,5,req" json:"RequiredField,omitempty"`
+	}
+	func (m *Test_OptionalGroup) Reset()         { *m = Test_OptionalGroup{} }
+	func (m *Test_OptionalGroup) String() string { return proto.CompactTextString(m) }
+
+	func (m *Test_OptionalGroup) GetRequiredField() string {
+		if m != nil && m.RequiredField != nil {
+			return *m.RequiredField
+		}
+		return ""
+	}
+
+	func (m *Test) GetNumber() int32 {
+		if x, ok := m.GetUnion().(*Test_Number); ok {
+			return x.Number
+		}
+		return 0
+	}
+
+	func (m *Test) GetName() string {
+		if x, ok := m.GetUnion().(*Test_Name); ok {
+			return x.Name
+		}
+		return ""
+	}
+
+	func init() {
+		proto.RegisterEnum("example.FOO", FOO_name, FOO_value)
+	}
+
+To create and play with a Test object:
+
+	package main
+
+	import (
+		"log"
+
+		"github.com/golang/protobuf/proto"
+		pb "./example.pb"
+	)
+
+	func main() {
+		test := &pb.Test{
+			Label: proto.String("hello"),
+			Type:  proto.Int32(17),
+			Reps:  []int64{1, 2, 3},
+			Optionalgroup: &pb.Test_OptionalGroup{
+				RequiredField: proto.String("good bye"),
+			},
+			Union: &pb.Test_Name{"fred"},
+		}
+		data, err := proto.Marshal(test)
+		if err != nil {
+			log.Fatal("marshaling error: ", err)
+		}
+		newTest := &pb.Test{}
+		err = proto.Unmarshal(data, newTest)
+		if err != nil {
+			log.Fatal("unmarshaling error: ", err)
+		}
+		// Now test and newTest contain the same data.
+		if test.GetLabel() != newTest.GetLabel() {
+			log.Fatalf("data mismatch %q != %q", test.GetLabel(), newTest.GetLabel())
+		}
+		// Use a type switch to determine which oneof was set.
+		switch u := test.Union.(type) {
+		case *pb.Test_Number: // u.Number contains the number.
+		case *pb.Test_Name: // u.Name contains the string.
+		}
+		// etc.
+	}
+*/
+package proto
+
+import (
+	"encoding/json"
+	"fmt"
+	"log"
+	"reflect"
+	"sort"
+	"strconv"
+	"sync"
+)
+
+// RequiredNotSetError is an error type returned by either Marshal or Unmarshal.
+// Marshal reports this when a required field is not initialized.
+// Unmarshal reports this when a required field is missing from the wire data.
+type RequiredNotSetError struct{ field string }
+
+func (e *RequiredNotSetError) Error() string {
+	if e.field == "" {
+		return fmt.Sprintf("proto: required field not set")
+	}
+	return fmt.Sprintf("proto: required field %q not set", e.field)
+}
+func (e *RequiredNotSetError) RequiredNotSet() bool {
+	return true
+}
+
+type invalidUTF8Error struct{ field string }
+
+func (e *invalidUTF8Error) Error() string {
+	if e.field == "" {
+		return "proto: invalid UTF-8 detected"
+	}
+	return fmt.Sprintf("proto: field %q contains invalid UTF-8", e.field)
+}
+func (e *invalidUTF8Error) InvalidUTF8() bool {
+	return true
+}
+
+// errInvalidUTF8 is a sentinel error to identify fields with invalid UTF-8.
+// This error should not be exposed to the external API as such errors should
+// be recreated with the field information.
+var errInvalidUTF8 = &invalidUTF8Error{}
+
+// isNonFatal reports whether the error is either a RequiredNotSet error
+// or a InvalidUTF8 error.
+func isNonFatal(err error) bool {
+	if re, ok := err.(interface{ RequiredNotSet() bool }); ok && re.RequiredNotSet() {
+		return true
+	}
+	if re, ok := err.(interface{ InvalidUTF8() bool }); ok && re.InvalidUTF8() {
+		return true
+	}
+	return false
+}
+
+type nonFatal struct{ E error }
+
+// Merge merges err into nf and reports whether it was successful.
+// Otherwise it returns false for any fatal non-nil errors.
+func (nf *nonFatal) Merge(err error) (ok bool) {
+	if err == nil {
+		return true // not an error
+	}
+	if !isNonFatal(err) {
+		return false // fatal error
+	}
+	if nf.E == nil {
+		nf.E = err // store first instance of non-fatal error
+	}
+	return true
+}
+
+// Message is implemented by generated protocol buffer messages.
+type Message interface {
+	Reset()
+	String() string
+	ProtoMessage()
+}
+
+// A Buffer is a buffer manager for marshaling and unmarshaling
+// protocol buffers.  It may be reused between invocations to
+// reduce memory usage.  It is not necessary to use a Buffer;
+// the global functions Marshal and Unmarshal create a
+// temporary Buffer and are fine for most applications.
+type Buffer struct {
+	buf   []byte // encode/decode byte stream
+	index int    // read point
+
+	deterministic bool
+}
+
+// NewBuffer allocates a new Buffer and initializes its internal data to
+// the contents of the argument slice.
+func NewBuffer(e []byte) *Buffer {
+	return &Buffer{buf: e}
+}
+
+// Reset resets the Buffer, ready for marshaling a new protocol buffer.
+func (p *Buffer) Reset() {
+	p.buf = p.buf[0:0] // for reading/writing
+	p.index = 0        // for reading
+}
+
+// SetBuf replaces the internal buffer with the slice,
+// ready for unmarshaling the contents of the slice.
+func (p *Buffer) SetBuf(s []byte) {
+	p.buf = s
+	p.index = 0
+}
+
+// Bytes returns the contents of the Buffer.
+func (p *Buffer) Bytes() []byte { return p.buf }
+
+// SetDeterministic sets whether to use deterministic serialization.
+//
+// Deterministic serialization guarantees that for a given binary, equal
+// messages will always be serialized to the same bytes. This implies:
+//
+//   - Repeated serialization of a message will return the same bytes.
+//   - Different processes of the same binary (which may be executing on
+//     different machines) will serialize equal messages to the same bytes.
+//
+// Note that the deterministic serialization is NOT canonical across
+// languages. It is not guaranteed to remain stable over time. It is unstable
+// across different builds with schema changes due to unknown fields.
+// Users who need canonical serialization (e.g., persistent storage in a
+// canonical form, fingerprinting, etc.) should define their own
+// canonicalization specification and implement their own serializer rather
+// than relying on this API.
+//
+// If deterministic serialization is requested, map entries will be sorted
+// by keys in lexicographical order. This is an implementation detail and
+// subject to change.
+func (p *Buffer) SetDeterministic(deterministic bool) {
+	p.deterministic = deterministic
+}
+
+/*
+ * Helper routines for simplifying the creation of optional fields of basic type.
+ */
+
+// Bool is a helper routine that allocates a new bool value
+// to store v and returns a pointer to it.
+func Bool(v bool) *bool {
+	return &v
+}
+
+// Int32 is a helper routine that allocates a new int32 value
+// to store v and returns a pointer to it.
+func Int32(v int32) *int32 {
+	return &v
+}
+
+// Int is a helper routine that allocates a new int32 value
+// to store v and returns a pointer to it, but unlike Int32
+// its argument value is an int.
+func Int(v int) *int32 {
+	p := new(int32)
+	*p = int32(v)
+	return p
+}
+
+// Int64 is a helper routine that allocates a new int64 value
+// to store v and returns a pointer to it.
+func Int64(v int64) *int64 {
+	return &v
+}
+
+// Float32 is a helper routine that allocates a new float32 value
+// to store v and returns a pointer to it.
+func Float32(v float32) *float32 {
+	return &v
+}
+
+// Float64 is a helper routine that allocates a new float64 value
+// to store v and returns a pointer to it.
+func Float64(v float64) *float64 {
+	return &v
+}
+
+// Uint32 is a helper routine that allocates a new uint32 value
+// to store v and returns a pointer to it.
+func Uint32(v uint32) *uint32 {
+	return &v
+}
+
+// Uint64 is a helper routine that allocates a new uint64 value
+// to store v and returns a pointer to it.
+func Uint64(v uint64) *uint64 {
+	return &v
+}
+
+// String is a helper routine that allocates a new string value
+// to store v and returns a pointer to it.
+func String(v string) *string {
+	return &v
+}
+
+// EnumName is a helper function to simplify printing protocol buffer enums
+// by name.  Given an enum map and a value, it returns a useful string.
+func EnumName(m map[int32]string, v int32) string {
+	s, ok := m[v]
+	if ok {
+		return s
+	}
+	return strconv.Itoa(int(v))
+}
+
+// UnmarshalJSONEnum is a helper function to simplify recovering enum int values
+// from their JSON-encoded representation. Given a map from the enum's symbolic
+// names to its int values, and a byte buffer containing the JSON-encoded
+// value, it returns an int32 that can be cast to the enum type by the caller.
+//
+// The function can deal with both JSON representations, numeric and symbolic.
+func UnmarshalJSONEnum(m map[string]int32, data []byte, enumName string) (int32, error) {
+	if data[0] == '"' {
+		// New style: enums are strings.
+		var repr string
+		if err := json.Unmarshal(data, &repr); err != nil {
+			return -1, err
+		}
+		val, ok := m[repr]
+		if !ok {
+			return 0, fmt.Errorf("unrecognized enum %s value %q", enumName, repr)
+		}
+		return val, nil
+	}
+	// Old style: enums are ints.
+	var val int32
+	if err := json.Unmarshal(data, &val); err != nil {
+		return 0, fmt.Errorf("cannot unmarshal %#q into enum %s", data, enumName)
+	}
+	return val, nil
+}
+
+// DebugPrint dumps the encoded data in b in a debugging format with a header
+// including the string s. Used in testing but made available for general debugging.
+func (p *Buffer) DebugPrint(s string, b []byte) {
+	var u uint64
+
+	obuf := p.buf
+	index := p.index
+	p.buf = b
+	p.index = 0
+	depth := 0
+
+	fmt.Printf("\n--- %s ---\n", s)
+
+out:
+	for {
+		for i := 0; i < depth; i++ {
+			fmt.Print("  ")
+		}
+
+		index := p.index
+		if index == len(p.buf) {
+			break
+		}
+
+		op, err := p.DecodeVarint()
+		if err != nil {
+			fmt.Printf("%3d: fetching op err %v\n", index, err)
+			break out
+		}
+		tag := op >> 3
+		wire := op & 7
+
+		switch wire {
+		default:
+			fmt.Printf("%3d: t=%3d unknown wire=%d\n",
+				index, tag, wire)
+			break out
+
+		case WireBytes:
+			var r []byte
+
+			r, err = p.DecodeRawBytes(false)
+			if err != nil {
+				break out
+			}
+			fmt.Printf("%3d: t=%3d bytes [%d]", index, tag, len(r))
+			if len(r) <= 6 {
+				for i := 0; i < len(r); i++ {
+					fmt.Printf(" %.2x", r[i])
+				}
+			} else {
+				for i := 0; i < 3; i++ {
+					fmt.Printf(" %.2x", r[i])
+				}
+				fmt.Printf(" ..")
+				for i := len(r) - 3; i < len(r); i++ {
+					fmt.Printf(" %.2x", r[i])
+				}
+			}
+			fmt.Printf("\n")
+
+		case WireFixed32:
+			u, err = p.DecodeFixed32()
+			if err != nil {
+				fmt.Printf("%3d: t=%3d fix32 err %v\n", index, tag, err)
+				break out
+			}
+			fmt.Printf("%3d: t=%3d fix32 %d\n", index, tag, u)
+
+		case WireFixed64:
+			u, err = p.DecodeFixed64()
+			if err != nil {
+				fmt.Printf("%3d: t=%3d fix64 err %v\n", index, tag, err)
+				break out
+			}
+			fmt.Printf("%3d: t=%3d fix64 %d\n", index, tag, u)
+
+		case WireVarint:
+			u, err = p.DecodeVarint()
+			if err != nil {
+				fmt.Printf("%3d: t=%3d varint err %v\n", index, tag, err)
+				break out
+			}
+			fmt.Printf("%3d: t=%3d varint %d\n", index, tag, u)
+
+		case WireStartGroup:
+			fmt.Printf("%3d: t=%3d start\n", index, tag)
+			depth++
+
+		case WireEndGroup:
+			depth--
+			fmt.Printf("%3d: t=%3d end\n", index, tag)
+		}
+	}
+
+	if depth != 0 {
+		fmt.Printf("%3d: start-end not balanced %d\n", p.index, depth)
+	}
+	fmt.Printf("\n")
+
+	p.buf = obuf
+	p.index = index
+}
+
+// SetDefaults sets unset protocol buffer fields to their default values.
+// It only modifies fields that are both unset and have defined defaults.
+// It recursively sets default values in any non-nil sub-messages.
+func SetDefaults(pb Message) {
+	setDefaults(reflect.ValueOf(pb), true, false)
+}
+
+// v is a pointer to a struct.
+func setDefaults(v reflect.Value, recur, zeros bool) {
+	v = v.Elem()
+
+	defaultMu.RLock()
+	dm, ok := defaults[v.Type()]
+	defaultMu.RUnlock()
+	if !ok {
+		dm = buildDefaultMessage(v.Type())
+		defaultMu.Lock()
+		defaults[v.Type()] = dm
+		defaultMu.Unlock()
+	}
+
+	for _, sf := range dm.scalars {
+		f := v.Field(sf.index)
+		if !f.IsNil() {
+			// field already set
+			continue
+		}
+		dv := sf.value
+		if dv == nil && !zeros {
+			// no explicit default, and don't want to set zeros
+			continue
+		}
+		fptr := f.Addr().Interface() // **T
+		// TODO: Consider batching the allocations we do here.
+		switch sf.kind {
+		case reflect.Bool:
+			b := new(bool)
+			if dv != nil {
+				*b = dv.(bool)
+			}
+			*(fptr.(**bool)) = b
+		case reflect.Float32:
+			f := new(float32)
+			if dv != nil {
+				*f = dv.(float32)
+			}
+			*(fptr.(**float32)) = f
+		case reflect.Float64:
+			f := new(float64)
+			if dv != nil {
+				*f = dv.(float64)
+			}
+			*(fptr.(**float64)) = f
+		case reflect.Int32:
+			// might be an enum
+			if ft := f.Type(); ft != int32PtrType {
+				// enum
+				f.Set(reflect.New(ft.Elem()))
+				if dv != nil {
+					f.Elem().SetInt(int64(dv.(int32)))
+				}
+			} else {
+				// int32 field
+				i := new(int32)
+				if dv != nil {
+					*i = dv.(int32)
+				}
+				*(fptr.(**int32)) = i
+			}
+		case reflect.Int64:
+			i := new(int64)
+			if dv != nil {
+				*i = dv.(int64)
+			}
+			*(fptr.(**int64)) = i
+		case reflect.String:
+			s := new(string)
+			if dv != nil {
+				*s = dv.(string)
+			}
+			*(fptr.(**string)) = s
+		case reflect.Uint8:
+			// exceptional case: []byte
+			var b []byte
+			if dv != nil {
+				db := dv.([]byte)
+				b = make([]byte, len(db))
+				copy(b, db)
+			} else {
+				b = []byte{}
+			}
+			*(fptr.(*[]byte)) = b
+		case reflect.Uint32:
+			u := new(uint32)
+			if dv != nil {
+				*u = dv.(uint32)
+			}
+			*(fptr.(**uint32)) = u
+		case reflect.Uint64:
+			u := new(uint64)
+			if dv != nil {
+				*u = dv.(uint64)
+			}
+			*(fptr.(**uint64)) = u
+		default:
+			log.Printf("proto: can't set default for field %v (sf.kind=%v)", f, sf.kind)
+		}
+	}
+
+	for _, ni := range dm.nested {
+		f := v.Field(ni)
+		// f is *T or []*T or map[T]*T
+		switch f.Kind() {
+		case reflect.Ptr:
+			if f.IsNil() {
+				continue
+			}
+			setDefaults(f, recur, zeros)
+
+		case reflect.Slice:
+			for i := 0; i < f.Len(); i++ {
+				e := f.Index(i)
+				if e.IsNil() {
+					continue
+				}
+				setDefaults(e, recur, zeros)
+			}
+
+		case reflect.Map:
+			for _, k := range f.MapKeys() {
+				e := f.MapIndex(k)
+				if e.IsNil() {
+					continue
+				}
+				setDefaults(e, recur, zeros)
+			}
+		}
+	}
+}
+
+var (
+	// defaults maps a protocol buffer struct type to a slice of the fields,
+	// with its scalar fields set to their proto-declared non-zero default values.
+	defaultMu sync.RWMutex
+	defaults  = make(map[reflect.Type]defaultMessage)
+
+	int32PtrType = reflect.TypeOf((*int32)(nil))
+)
+
+// defaultMessage represents information about the default values of a message.
+type defaultMessage struct {
+	scalars []scalarField
+	nested  []int // struct field index of nested messages
+}
+
+type scalarField struct {
+	index int          // struct field index
+	kind  reflect.Kind // element type (the T in *T or []T)
+	value interface{}  // the proto-declared default value, or nil
+}
+
+// t is a struct type.
+func buildDefaultMessage(t reflect.Type) (dm defaultMessage) {
+	sprop := GetProperties(t)
+	for _, prop := range sprop.Prop {
+		fi, ok := sprop.decoderTags.get(prop.Tag)
+		if !ok {
+			// XXX_unrecognized
+			continue
+		}
+		ft := t.Field(fi).Type
+
+		sf, nested, err := fieldDefault(ft, prop)
+		switch {
+		case err != nil:
+			log.Print(err)
+		case nested:
+			dm.nested = append(dm.nested, fi)
+		case sf != nil:
+			sf.index = fi
+			dm.scalars = append(dm.scalars, *sf)
+		}
+	}
+
+	return dm
+}
+
+// fieldDefault returns the scalarField for field type ft.
+// sf will be nil if the field can not have a default.
+// nestedMessage will be true if this is a nested message.
+// Note that sf.index is not set on return.
+func fieldDefault(ft reflect.Type, prop *Properties) (sf *scalarField, nestedMessage bool, err error) {
+	var canHaveDefault bool
+	switch ft.Kind() {
+	case reflect.Ptr:
+		if ft.Elem().Kind() == reflect.Struct {
+			nestedMessage = true
+		} else {
+			canHaveDefault = true // proto2 scalar field
+		}
+
+	case reflect.Slice:
+		switch ft.Elem().Kind() {
+		case reflect.Ptr:
+			nestedMessage = true // repeated message
+		case reflect.Uint8:
+			canHaveDefault = true // bytes field
+		}
+
+	case reflect.Map:
+		if ft.Elem().Kind() == reflect.Ptr {
+			nestedMessage = true // map with message values
+		}
+	}
+
+	if !canHaveDefault {
+		if nestedMessage {
+			return nil, true, nil
+		}
+		return nil, false, nil
+	}
+
+	// We now know that ft is a pointer or slice.
+	sf = &scalarField{kind: ft.Elem().Kind()}
+
+	// scalar fields without defaults
+	if !prop.HasDefault {
+		return sf, false, nil
+	}
+
+	// a scalar field: either *T or []byte
+	switch ft.Elem().Kind() {
+	case reflect.Bool:
+		x, err := strconv.ParseBool(prop.Default)
+		if err != nil {
+			return nil, false, fmt.Errorf("proto: bad default bool %q: %v", prop.Default, err)
+		}
+		sf.value = x
+	case reflect.Float32:
+		x, err := strconv.ParseFloat(prop.Default, 32)
+		if err != nil {
+			return nil, false, fmt.Errorf("proto: bad default float32 %q: %v", prop.Default, err)
+		}
+		sf.value = float32(x)
+	case reflect.Float64:
+		x, err := strconv.ParseFloat(prop.Default, 64)
+		if err != nil {
+			return nil, false, fmt.Errorf("proto: bad default float64 %q: %v", prop.Default, err)
+		}
+		sf.value = x
+	case reflect.Int32:
+		x, err := strconv.ParseInt(prop.Default, 10, 32)
+		if err != nil {
+			return nil, false, fmt.Errorf("proto: bad default int32 %q: %v", prop.Default, err)
+		}
+		sf.value = int32(x)
+	case reflect.Int64:
+		x, err := strconv.ParseInt(prop.Default, 10, 64)
+		if err != nil {
+			return nil, false, fmt.Errorf("proto: bad default int64 %q: %v", prop.Default, err)
+		}
+		sf.value = x
+	case reflect.String:
+		sf.value = prop.Default
+	case reflect.Uint8:
+		// []byte (not *uint8)
+		sf.value = []byte(prop.Default)
+	case reflect.Uint32:
+		x, err := strconv.ParseUint(prop.Default, 10, 32)
+		if err != nil {
+			return nil, false, fmt.Errorf("proto: bad default uint32 %q: %v", prop.Default, err)
+		}
+		sf.value = uint32(x)
+	case reflect.Uint64:
+		x, err := strconv.ParseUint(prop.Default, 10, 64)
+		if err != nil {
+			return nil, false, fmt.Errorf("proto: bad default uint64 %q: %v", prop.Default, err)
+		}
+		sf.value = x
+	default:
+		return nil, false, fmt.Errorf("proto: unhandled def kind %v", ft.Elem().Kind())
+	}
+
+	return sf, false, nil
+}
+
+// mapKeys returns a sort.Interface to be used for sorting the map keys.
+// Map fields may have key types of non-float scalars, strings and enums.
+func mapKeys(vs []reflect.Value) sort.Interface {
+	s := mapKeySorter{vs: vs}
+
+	// Type specialization per https://developers.google.com/protocol-buffers/docs/proto#maps.
+	if len(vs) == 0 {
+		return s
+	}
+	switch vs[0].Kind() {
+	case reflect.Int32, reflect.Int64:
+		s.less = func(a, b reflect.Value) bool { return a.Int() < b.Int() }
+	case reflect.Uint32, reflect.Uint64:
+		s.less = func(a, b reflect.Value) bool { return a.Uint() < b.Uint() }
+	case reflect.Bool:
+		s.less = func(a, b reflect.Value) bool { return !a.Bool() && b.Bool() } // false < true
+	case reflect.String:
+		s.less = func(a, b reflect.Value) bool { return a.String() < b.String() }
+	default:
+		panic(fmt.Sprintf("unsupported map key type: %v", vs[0].Kind()))
+	}
+
+	return s
+}
+
+type mapKeySorter struct {
+	vs   []reflect.Value
+	less func(a, b reflect.Value) bool
+}
+
+func (s mapKeySorter) Len() int      { return len(s.vs) }
+func (s mapKeySorter) Swap(i, j int) { s.vs[i], s.vs[j] = s.vs[j], s.vs[i] }
+func (s mapKeySorter) Less(i, j int) bool {
+	return s.less(s.vs[i], s.vs[j])
+}
+
+// isProto3Zero reports whether v is a zero proto3 value.
+func isProto3Zero(v reflect.Value) bool {
+	switch v.Kind() {
+	case reflect.Bool:
+		return !v.Bool()
+	case reflect.Int32, reflect.Int64:
+		return v.Int() == 0
+	case reflect.Uint32, reflect.Uint64:
+		return v.Uint() == 0
+	case reflect.Float32, reflect.Float64:
+		return v.Float() == 0
+	case reflect.String:
+		return v.String() == ""
+	}
+	return false
+}
+
+const (
+	// ProtoPackageIsVersion3 is referenced from generated protocol buffer files
+	// to assert that that code is compatible with this version of the proto package.
+	ProtoPackageIsVersion3 = true
+
+	// ProtoPackageIsVersion2 is referenced from generated protocol buffer files
+	// to assert that that code is compatible with this version of the proto package.
+	ProtoPackageIsVersion2 = true
+
+	// ProtoPackageIsVersion1 is referenced from generated protocol buffer files
+	// to assert that that code is compatible with this version of the proto package.
+	ProtoPackageIsVersion1 = true
+)
+
+// InternalMessageInfo is a type used internally by generated .pb.go files.
+// This type is not intended to be used by non-generated code.
+// This type is not subject to any compatibility guarantee.
+type InternalMessageInfo struct {
+	marshal   *marshalInfo
+	unmarshal *unmarshalInfo
+	merge     *mergeInfo
+	discard   *discardInfo
+}
diff --git a/proto/map_test.go b/proto/map_test.go
new file mode 100644
index 0000000..43214f9
--- /dev/null
+++ b/proto/map_test.go
@@ -0,0 +1,70 @@
+package proto_test
+
+import (
+	"fmt"
+	"reflect"
+	"testing"
+
+	"github.com/golang/protobuf/proto"
+	ppb "github.com/golang/protobuf/proto/proto3_proto"
+)
+
+func TestMap(t *testing.T) {
+	var b []byte
+	fmt.Sscanf("a2010c0a044b657931120456616c31a201130a044b657932120556616c3261120456616c32a201240a044b6579330d05000000120556616c33621a0556616c3361120456616c331505000000a20100a201260a044b657934130a07536f6d6555524c1209536f6d655469746c651a08536e69707065743114", "%x", &b)
+
+	var m ppb.Message
+	if err := proto.Unmarshal(b, &m); err != nil {
+		t.Fatalf("proto.Unmarshal error: %v", err)
+	}
+
+	got := m.StringMap
+	want := map[string]string{
+		"":     "",
+		"Key1": "Val1",
+		"Key2": "Val2",
+		"Key3": "Val3",
+		"Key4": "",
+	}
+
+	if !reflect.DeepEqual(got, want) {
+		t.Errorf("maps differ:\ngot  %#v\nwant %#v", got, want)
+	}
+}
+
+func marshaled() []byte {
+	m := &ppb.IntMaps{}
+	for i := 0; i < 1000; i++ {
+		m.Maps = append(m.Maps, &ppb.IntMap{
+			Rtt: map[int32]int32{1: 2},
+		})
+	}
+	b, err := proto.Marshal(m)
+	if err != nil {
+		panic(fmt.Sprintf("Can't marshal %+v: %v", m, err))
+	}
+	return b
+}
+
+func BenchmarkConcurrentMapUnmarshal(b *testing.B) {
+	in := marshaled()
+	b.RunParallel(func(pb *testing.PB) {
+		for pb.Next() {
+			var out ppb.IntMaps
+			if err := proto.Unmarshal(in, &out); err != nil {
+				b.Errorf("Can't unmarshal ppb.IntMaps: %v", err)
+			}
+		}
+	})
+}
+
+func BenchmarkSequentialMapUnmarshal(b *testing.B) {
+	in := marshaled()
+	b.ResetTimer()
+	for i := 0; i < b.N; i++ {
+		var out ppb.IntMaps
+		if err := proto.Unmarshal(in, &out); err != nil {
+			b.Errorf("Can't unmarshal ppb.IntMaps: %v", err)
+		}
+	}
+}
diff --git a/proto/merge.go b/proto/merge.go
deleted file mode 100644
index d761ab3..0000000
--- a/proto/merge.go
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package proto
-
-import (
-	"fmt"
-
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/runtime/protoiface"
-)
-
-// Merge merges src into dst, which must be a message with the same descriptor.
-//
-// Populated scalar fields in src are copied to dst, while populated
-// singular messages in src are merged into dst by recursively calling Merge.
-// The elements of every list field in src is appended to the corresponded
-// list fields in dst. The entries of every map field in src is copied into
-// the corresponding map field in dst, possibly replacing existing entries.
-// The unknown fields of src are appended to the unknown fields of dst.
-//
-// It is semantically equivalent to unmarshaling the encoded form of src
-// into dst with the UnmarshalOptions.Merge option specified.
-func Merge(dst, src Message) {
-	// TODO: Should nil src be treated as semantically equivalent to a
-	// untyped, read-only, empty message? What about a nil dst?
-
-	dstMsg, srcMsg := dst.ProtoReflect(), src.ProtoReflect()
-	if dstMsg.Descriptor() != srcMsg.Descriptor() {
-		if got, want := dstMsg.Descriptor().FullName(), srcMsg.Descriptor().FullName(); got != want {
-			panic(fmt.Sprintf("descriptor mismatch: %v != %v", got, want))
-		}
-		panic("descriptor mismatch")
-	}
-	mergeOptions{}.mergeMessage(dstMsg, srcMsg)
-}
-
-// Clone returns a deep copy of m.
-// If the top-level message is invalid, it returns an invalid message as well.
-func Clone(m Message) Message {
-	// NOTE: Most usages of Clone assume the following properties:
-	//	t := reflect.TypeOf(m)
-	//	t == reflect.TypeOf(m.ProtoReflect().New().Interface())
-	//	t == reflect.TypeOf(m.ProtoReflect().Type().Zero().Interface())
-	//
-	// Embedding protobuf messages breaks this since the parent type will have
-	// a forwarded ProtoReflect method, but the Interface method will return
-	// the underlying embedded message type.
-	if m == nil {
-		return nil
-	}
-	src := m.ProtoReflect()
-	if !src.IsValid() {
-		return src.Type().Zero().Interface()
-	}
-	dst := src.New()
-	mergeOptions{}.mergeMessage(dst, src)
-	return dst.Interface()
-}
-
-// mergeOptions provides a namespace for merge functions, and can be
-// exported in the future if we add user-visible merge options.
-type mergeOptions struct{}
-
-func (o mergeOptions) mergeMessage(dst, src protoreflect.Message) {
-	methods := protoMethods(dst)
-	if methods != nil && methods.Merge != nil {
-		in := protoiface.MergeInput{
-			Destination: dst,
-			Source:      src,
-		}
-		out := methods.Merge(in)
-		if out.Flags&protoiface.MergeComplete != 0 {
-			return
-		}
-	}
-
-	if !dst.IsValid() {
-		panic(fmt.Sprintf("cannot merge into invalid %v message", dst.Descriptor().FullName()))
-	}
-
-	src.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {
-		switch {
-		case fd.IsList():
-			o.mergeList(dst.Mutable(fd).List(), v.List(), fd)
-		case fd.IsMap():
-			o.mergeMap(dst.Mutable(fd).Map(), v.Map(), fd.MapValue())
-		case fd.Message() != nil:
-			o.mergeMessage(dst.Mutable(fd).Message(), v.Message())
-		case fd.Kind() == protoreflect.BytesKind:
-			dst.Set(fd, o.cloneBytes(v))
-		default:
-			dst.Set(fd, v)
-		}
-		return true
-	})
-
-	if len(src.GetUnknown()) > 0 {
-		dst.SetUnknown(append(dst.GetUnknown(), src.GetUnknown()...))
-	}
-}
-
-func (o mergeOptions) mergeList(dst, src protoreflect.List, fd protoreflect.FieldDescriptor) {
-	// Merge semantics appends to the end of the existing list.
-	for i, n := 0, src.Len(); i < n; i++ {
-		switch v := src.Get(i); {
-		case fd.Message() != nil:
-			dstv := dst.NewElement()
-			o.mergeMessage(dstv.Message(), v.Message())
-			dst.Append(dstv)
-		case fd.Kind() == protoreflect.BytesKind:
-			dst.Append(o.cloneBytes(v))
-		default:
-			dst.Append(v)
-		}
-	}
-}
-
-func (o mergeOptions) mergeMap(dst, src protoreflect.Map, fd protoreflect.FieldDescriptor) {
-	// Merge semantics replaces, rather than merges into existing entries.
-	src.Range(func(k protoreflect.MapKey, v protoreflect.Value) bool {
-		switch {
-		case fd.Message() != nil:
-			dstv := dst.NewValue()
-			o.mergeMessage(dstv.Message(), v.Message())
-			dst.Set(k, dstv)
-		case fd.Kind() == protoreflect.BytesKind:
-			dst.Set(k, o.cloneBytes(v))
-		default:
-			dst.Set(k, v)
-		}
-		return true
-	})
-}
-
-func (o mergeOptions) cloneBytes(v protoreflect.Value) protoreflect.Value {
-	return protoreflect.ValueOfBytes(append([]byte{}, v.Bytes()...))
-}
diff --git a/proto/merge_test.go b/proto/merge_test.go
deleted file mode 100644
index 05978cb..0000000
--- a/proto/merge_test.go
+++ /dev/null
@@ -1,905 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package proto_test
-
-import (
-	"fmt"
-	"reflect"
-	"sync"
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-
-	"google.golang.org/protobuf/encoding/prototext"
-	"google.golang.org/protobuf/internal/protobuild"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/testing/protocmp"
-	"google.golang.org/protobuf/testing/protopack"
-	"google.golang.org/protobuf/types/dynamicpb"
-
-	legacypb "google.golang.org/protobuf/internal/testprotos/legacy"
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-	test3pb "google.golang.org/protobuf/internal/testprotos/test3"
-)
-
-type testMerge struct {
-	desc  string
-	dst   protobuild.Message
-	src   protobuild.Message
-	want  protobuild.Message // if dst and want are nil, want = src
-	types []proto.Message
-}
-
-var testMerges = []testMerge{{
-	desc: "clone a large message",
-	src: protobuild.Message{
-		"optional_int32":       1001,
-		"optional_int64":       1002,
-		"optional_uint32":      1003,
-		"optional_uint64":      1004,
-		"optional_sint32":      1005,
-		"optional_sint64":      1006,
-		"optional_fixed32":     1007,
-		"optional_fixed64":     1008,
-		"optional_sfixed32":    1009,
-		"optional_sfixed64":    1010,
-		"optional_float":       1011.5,
-		"optional_double":      1012.5,
-		"optional_bool":        true,
-		"optional_string":      "string",
-		"optional_bytes":       []byte("bytes"),
-		"optional_nested_enum": 1,
-		"optional_nested_message": protobuild.Message{
-			"a": 100,
-		},
-		"repeated_int32":       []int32{1001, 2001},
-		"repeated_int64":       []int64{1002, 2002},
-		"repeated_uint32":      []uint32{1003, 2003},
-		"repeated_uint64":      []uint64{1004, 2004},
-		"repeated_sint32":      []int32{1005, 2005},
-		"repeated_sint64":      []int64{1006, 2006},
-		"repeated_fixed32":     []uint32{1007, 2007},
-		"repeated_fixed64":     []uint64{1008, 2008},
-		"repeated_sfixed32":    []int32{1009, 2009},
-		"repeated_sfixed64":    []int64{1010, 2010},
-		"repeated_float":       []float32{1011.5, 2011.5},
-		"repeated_double":      []float64{1012.5, 2012.5},
-		"repeated_bool":        []bool{true, false},
-		"repeated_string":      []string{"foo", "bar"},
-		"repeated_bytes":       []string{"FOO", "BAR"},
-		"repeated_nested_enum": []string{"FOO", "BAR"},
-		"repeated_nested_message": []protobuild.Message{
-			{"a": 200},
-			{"a": 300},
-		},
-	},
-}, {
-	desc: "clone maps",
-	src: protobuild.Message{
-		"map_int32_int32":       map[int32]int32{1056: 1156, 2056: 2156},
-		"map_int64_int64":       map[int64]int64{1057: 1157, 2057: 2157},
-		"map_uint32_uint32":     map[uint32]uint32{1058: 1158, 2058: 2158},
-		"map_uint64_uint64":     map[uint64]uint64{1059: 1159, 2059: 2159},
-		"map_sint32_sint32":     map[int32]int32{1060: 1160, 2060: 2160},
-		"map_sint64_sint64":     map[int64]int64{1061: 1161, 2061: 2161},
-		"map_fixed32_fixed32":   map[uint32]uint32{1062: 1162, 2062: 2162},
-		"map_fixed64_fixed64":   map[uint64]uint64{1063: 1163, 2063: 2163},
-		"map_sfixed32_sfixed32": map[int32]int32{1064: 1164, 2064: 2164},
-		"map_sfixed64_sfixed64": map[int64]int64{1065: 1165, 2065: 2165},
-		"map_int32_float":       map[int32]float32{1066: 1166.5, 2066: 2166.5},
-		"map_int32_double":      map[int32]float64{1067: 1167.5, 2067: 2167.5},
-		"map_bool_bool":         map[bool]bool{true: false, false: true},
-		"map_string_string":     map[string]string{"69.1.key": "69.1.val", "69.2.key": "69.2.val"},
-		"map_string_bytes":      map[string][]byte{"70.1.key": []byte("70.1.val"), "70.2.key": []byte("70.2.val")},
-		"map_string_nested_message": map[string]protobuild.Message{
-			"71.1.key": {"a": 1171},
-			"71.2.key": {"a": 2171},
-		},
-		"map_string_nested_enum": map[string]string{"73.1.key": "FOO", "73.2.key": "BAR"},
-	},
-	types: []proto.Message{&testpb.TestAllTypes{}, &test3pb.TestAllTypes{}},
-}, {
-	desc: "clone oneof uint32",
-	src: protobuild.Message{
-		"oneof_uint32": 1111,
-	},
-	types: []proto.Message{&testpb.TestAllTypes{}, &test3pb.TestAllTypes{}},
-}, {
-	desc: "clone oneof string",
-	src: protobuild.Message{
-		"oneof_string": "string",
-	},
-	types: []proto.Message{&testpb.TestAllTypes{}, &test3pb.TestAllTypes{}},
-}, {
-	desc: "clone oneof bytes",
-	src: protobuild.Message{
-		"oneof_bytes": "bytes",
-	},
-	types: []proto.Message{&testpb.TestAllTypes{}, &test3pb.TestAllTypes{}},
-}, {
-	desc: "clone oneof bool",
-	src: protobuild.Message{
-		"oneof_bool": true,
-	},
-	types: []proto.Message{&testpb.TestAllTypes{}, &test3pb.TestAllTypes{}},
-}, {
-	desc: "clone oneof uint64",
-	src: protobuild.Message{
-		"oneof_uint64": 100,
-	},
-	types: []proto.Message{&testpb.TestAllTypes{}, &test3pb.TestAllTypes{}},
-}, {
-	desc: "clone oneof float",
-	src: protobuild.Message{
-		"oneof_float": 100,
-	},
-	types: []proto.Message{&testpb.TestAllTypes{}, &test3pb.TestAllTypes{}},
-}, {
-	desc: "clone oneof double",
-	src: protobuild.Message{
-		"oneof_double": 1111,
-	},
-	types: []proto.Message{&testpb.TestAllTypes{}, &test3pb.TestAllTypes{}},
-}, {
-	desc: "clone oneof enum",
-	src: protobuild.Message{
-		"oneof_enum": 1,
-	},
-	types: []proto.Message{&testpb.TestAllTypes{}, &test3pb.TestAllTypes{}},
-}, {
-	desc: "clone oneof message",
-	src: protobuild.Message{
-		"oneof_nested_message": protobuild.Message{
-			"a": 1,
-		},
-	},
-	types: []proto.Message{&testpb.TestAllTypes{}, &test3pb.TestAllTypes{}},
-}, {
-	desc: "clone oneof group",
-	src: protobuild.Message{
-		"oneofgroup": protobuild.Message{
-			"a": 1,
-		},
-	},
-	types: []proto.Message{&testpb.TestAllTypes{}},
-}, {
-	desc: "merge bytes",
-	dst: protobuild.Message{
-		"optional_bytes":   []byte{1, 2, 3},
-		"repeated_bytes":   [][]byte{{1, 2}, {3, 4}},
-		"map_string_bytes": map[string][]byte{"alpha": {1, 2, 3}},
-	},
-	src: protobuild.Message{
-		"optional_bytes":   []byte{4, 5, 6},
-		"repeated_bytes":   [][]byte{{5, 6}, {7, 8}},
-		"map_string_bytes": map[string][]byte{"alpha": {4, 5, 6}, "bravo": {1, 2, 3}},
-	},
-	want: protobuild.Message{
-		"optional_bytes":   []byte{4, 5, 6},
-		"repeated_bytes":   [][]byte{{1, 2}, {3, 4}, {5, 6}, {7, 8}},
-		"map_string_bytes": map[string][]byte{"alpha": {4, 5, 6}, "bravo": {1, 2, 3}},
-	},
-	types: []proto.Message{&testpb.TestAllTypes{}, &test3pb.TestAllTypes{}},
-}, {
-	desc: "merge singular fields",
-	dst: protobuild.Message{
-		"optional_int32":       1,
-		"optional_int64":       1,
-		"optional_uint32":      1,
-		"optional_uint64":      1,
-		"optional_sint32":      1,
-		"optional_sint64":      1,
-		"optional_fixed32":     1,
-		"optional_fixed64":     1,
-		"optional_sfixed32":    1,
-		"optional_sfixed64":    1,
-		"optional_float":       1,
-		"optional_double":      1,
-		"optional_bool":        false,
-		"optional_string":      "1",
-		"optional_bytes":       "1",
-		"optional_nested_enum": 1,
-		"optional_nested_message": protobuild.Message{
-			"a": 1,
-			"corecursive": protobuild.Message{
-				"optional_int64": 1,
-			},
-		},
-	},
-	src: protobuild.Message{
-		"optional_int32":       2,
-		"optional_int64":       2,
-		"optional_uint32":      2,
-		"optional_uint64":      2,
-		"optional_sint32":      2,
-		"optional_sint64":      2,
-		"optional_fixed32":     2,
-		"optional_fixed64":     2,
-		"optional_sfixed32":    2,
-		"optional_sfixed64":    2,
-		"optional_float":       2,
-		"optional_double":      2,
-		"optional_bool":        true,
-		"optional_string":      "2",
-		"optional_bytes":       "2",
-		"optional_nested_enum": 2,
-		"optional_nested_message": protobuild.Message{
-			"a": 2,
-			"corecursive": protobuild.Message{
-				"optional_int64": 2,
-			},
-		},
-	},
-	want: protobuild.Message{
-		"optional_int32":       2,
-		"optional_int64":       2,
-		"optional_uint32":      2,
-		"optional_uint64":      2,
-		"optional_sint32":      2,
-		"optional_sint64":      2,
-		"optional_fixed32":     2,
-		"optional_fixed64":     2,
-		"optional_sfixed32":    2,
-		"optional_sfixed64":    2,
-		"optional_float":       2,
-		"optional_double":      2,
-		"optional_bool":        true,
-		"optional_string":      "2",
-		"optional_bytes":       "2",
-		"optional_nested_enum": 2,
-		"optional_nested_message": protobuild.Message{
-			"a": 2,
-			"corecursive": protobuild.Message{
-				"optional_int64": 2,
-			},
-		},
-	},
-}, {
-	desc: "no merge of empty singular fields",
-	dst: protobuild.Message{
-		"optional_int32":       1,
-		"optional_int64":       1,
-		"optional_uint32":      1,
-		"optional_uint64":      1,
-		"optional_sint32":      1,
-		"optional_sint64":      1,
-		"optional_fixed32":     1,
-		"optional_fixed64":     1,
-		"optional_sfixed32":    1,
-		"optional_sfixed64":    1,
-		"optional_float":       1,
-		"optional_double":      1,
-		"optional_bool":        false,
-		"optional_string":      "1",
-		"optional_bytes":       "1",
-		"optional_nested_enum": 1,
-		"optional_nested_message": protobuild.Message{
-			"a": 1,
-			"corecursive": protobuild.Message{
-				"optional_int64": 1,
-			},
-		},
-	},
-	src: protobuild.Message{
-		"optional_nested_message": protobuild.Message{
-			"a": 1,
-			"corecursive": protobuild.Message{
-				"optional_int32": 2,
-			},
-		},
-	},
-	want: protobuild.Message{
-		"optional_int32":       1,
-		"optional_int64":       1,
-		"optional_uint32":      1,
-		"optional_uint64":      1,
-		"optional_sint32":      1,
-		"optional_sint64":      1,
-		"optional_fixed32":     1,
-		"optional_fixed64":     1,
-		"optional_sfixed32":    1,
-		"optional_sfixed64":    1,
-		"optional_float":       1,
-		"optional_double":      1,
-		"optional_bool":        false,
-		"optional_string":      "1",
-		"optional_bytes":       "1",
-		"optional_nested_enum": 1,
-		"optional_nested_message": protobuild.Message{
-			"a": 1,
-			"corecursive": protobuild.Message{
-				"optional_int32": 2,
-				"optional_int64": 1,
-			},
-		},
-	},
-}, {
-	desc: "merge list fields",
-	dst: protobuild.Message{
-		"repeated_int32":       []int32{1, 2, 3},
-		"repeated_int64":       []int64{1, 2, 3},
-		"repeated_uint32":      []uint32{1, 2, 3},
-		"repeated_uint64":      []uint64{1, 2, 3},
-		"repeated_sint32":      []int32{1, 2, 3},
-		"repeated_sint64":      []int64{1, 2, 3},
-		"repeated_fixed32":     []uint32{1, 2, 3},
-		"repeated_fixed64":     []uint64{1, 2, 3},
-		"repeated_sfixed32":    []int32{1, 2, 3},
-		"repeated_sfixed64":    []int64{1, 2, 3},
-		"repeated_float":       []float32{1, 2, 3},
-		"repeated_double":      []float64{1, 2, 3},
-		"repeated_bool":        []bool{true},
-		"repeated_string":      []string{"a", "b", "c"},
-		"repeated_bytes":       []string{"a", "b", "c"},
-		"repeated_nested_enum": []int{1, 2, 3},
-		"repeated_nested_message": []protobuild.Message{
-			{"a": 100},
-			{"a": 200},
-		},
-	},
-	src: protobuild.Message{
-		"repeated_int32":       []int32{4, 5, 6},
-		"repeated_int64":       []int64{4, 5, 6},
-		"repeated_uint32":      []uint32{4, 5, 6},
-		"repeated_uint64":      []uint64{4, 5, 6},
-		"repeated_sint32":      []int32{4, 5, 6},
-		"repeated_sint64":      []int64{4, 5, 6},
-		"repeated_fixed32":     []uint32{4, 5, 6},
-		"repeated_fixed64":     []uint64{4, 5, 6},
-		"repeated_sfixed32":    []int32{4, 5, 6},
-		"repeated_sfixed64":    []int64{4, 5, 6},
-		"repeated_float":       []float32{4, 5, 6},
-		"repeated_double":      []float64{4, 5, 6},
-		"repeated_bool":        []bool{false},
-		"repeated_string":      []string{"d", "e", "f"},
-		"repeated_bytes":       []string{"d", "e", "f"},
-		"repeated_nested_enum": []int{4, 5, 6},
-		"repeated_nested_message": []protobuild.Message{
-			{"a": 300},
-			{"a": 400},
-		},
-	},
-	want: protobuild.Message{
-		"repeated_int32":       []int32{1, 2, 3, 4, 5, 6},
-		"repeated_int64":       []int64{1, 2, 3, 4, 5, 6},
-		"repeated_uint32":      []uint32{1, 2, 3, 4, 5, 6},
-		"repeated_uint64":      []uint64{1, 2, 3, 4, 5, 6},
-		"repeated_sint32":      []int32{1, 2, 3, 4, 5, 6},
-		"repeated_sint64":      []int64{1, 2, 3, 4, 5, 6},
-		"repeated_fixed32":     []uint32{1, 2, 3, 4, 5, 6},
-		"repeated_fixed64":     []uint64{1, 2, 3, 4, 5, 6},
-		"repeated_sfixed32":    []int32{1, 2, 3, 4, 5, 6},
-		"repeated_sfixed64":    []int64{1, 2, 3, 4, 5, 6},
-		"repeated_float":       []float32{1, 2, 3, 4, 5, 6},
-		"repeated_double":      []float64{1, 2, 3, 4, 5, 6},
-		"repeated_bool":        []bool{true, false},
-		"repeated_string":      []string{"a", "b", "c", "d", "e", "f"},
-		"repeated_bytes":       []string{"a", "b", "c", "d", "e", "f"},
-		"repeated_nested_enum": []int{1, 2, 3, 4, 5, 6},
-		"repeated_nested_message": []protobuild.Message{
-			{"a": 100},
-			{"a": 200},
-			{"a": 300},
-			{"a": 400},
-		},
-	},
-}, {
-	desc: "merge map fields",
-	dst: protobuild.Message{
-		"map_int32_int32":       map[int]int{1: 1, 3: 1},
-		"map_int64_int64":       map[int]int{1: 1, 3: 1},
-		"map_uint32_uint32":     map[int]int{1: 1, 3: 1},
-		"map_uint64_uint64":     map[int]int{1: 1, 3: 1},
-		"map_sint32_sint32":     map[int]int{1: 1, 3: 1},
-		"map_sint64_sint64":     map[int]int{1: 1, 3: 1},
-		"map_fixed32_fixed32":   map[int]int{1: 1, 3: 1},
-		"map_fixed64_fixed64":   map[int]int{1: 1, 3: 1},
-		"map_sfixed32_sfixed32": map[int]int{1: 1, 3: 1},
-		"map_sfixed64_sfixed64": map[int]int{1: 1, 3: 1},
-		"map_int32_float":       map[int]int{1: 1, 3: 1},
-		"map_int32_double":      map[int]int{1: 1, 3: 1},
-		"map_bool_bool":         map[bool]bool{true: true},
-		"map_string_string":     map[string]string{"a": "1", "ab": "1"},
-		"map_string_bytes":      map[string]string{"a": "1", "ab": "1"},
-		"map_string_nested_message": map[string]protobuild.Message{
-			"a": {"a": 1},
-			"ab": {
-				"a": 1,
-				"corecursive": protobuild.Message{
-					"map_int32_int32": map[int]int{1: 1, 3: 1},
-				},
-			},
-		},
-		"map_string_nested_enum": map[string]int{"a": 1, "ab": 1},
-	},
-	src: protobuild.Message{
-		"map_int32_int32":       map[int]int{2: 2, 3: 2},
-		"map_int64_int64":       map[int]int{2: 2, 3: 2},
-		"map_uint32_uint32":     map[int]int{2: 2, 3: 2},
-		"map_uint64_uint64":     map[int]int{2: 2, 3: 2},
-		"map_sint32_sint32":     map[int]int{2: 2, 3: 2},
-		"map_sint64_sint64":     map[int]int{2: 2, 3: 2},
-		"map_fixed32_fixed32":   map[int]int{2: 2, 3: 2},
-		"map_fixed64_fixed64":   map[int]int{2: 2, 3: 2},
-		"map_sfixed32_sfixed32": map[int]int{2: 2, 3: 2},
-		"map_sfixed64_sfixed64": map[int]int{2: 2, 3: 2},
-		"map_int32_float":       map[int]int{2: 2, 3: 2},
-		"map_int32_double":      map[int]int{2: 2, 3: 2},
-		"map_bool_bool":         map[bool]bool{false: false},
-		"map_string_string":     map[string]string{"b": "2", "ab": "2"},
-		"map_string_bytes":      map[string]string{"b": "2", "ab": "2"},
-		"map_string_nested_message": map[string]protobuild.Message{
-			"b": {"a": 2},
-			"ab": {
-				"a": 2,
-				"corecursive": protobuild.Message{
-					"map_int32_int32": map[int]int{2: 2, 3: 2},
-				},
-			},
-		},
-		"map_string_nested_enum": map[string]int{"b": 2, "ab": 2},
-	},
-	want: protobuild.Message{
-		"map_int32_int32":       map[int]int{1: 1, 2: 2, 3: 2},
-		"map_int64_int64":       map[int]int{1: 1, 2: 2, 3: 2},
-		"map_uint32_uint32":     map[int]int{1: 1, 2: 2, 3: 2},
-		"map_uint64_uint64":     map[int]int{1: 1, 2: 2, 3: 2},
-		"map_sint32_sint32":     map[int]int{1: 1, 2: 2, 3: 2},
-		"map_sint64_sint64":     map[int]int{1: 1, 2: 2, 3: 2},
-		"map_fixed32_fixed32":   map[int]int{1: 1, 2: 2, 3: 2},
-		"map_fixed64_fixed64":   map[int]int{1: 1, 2: 2, 3: 2},
-		"map_sfixed32_sfixed32": map[int]int{1: 1, 2: 2, 3: 2},
-		"map_sfixed64_sfixed64": map[int]int{1: 1, 2: 2, 3: 2},
-		"map_int32_float":       map[int]int{1: 1, 2: 2, 3: 2},
-		"map_int32_double":      map[int]int{1: 1, 2: 2, 3: 2},
-		"map_bool_bool":         map[bool]bool{true: true, false: false},
-		"map_string_string":     map[string]string{"a": "1", "b": "2", "ab": "2"},
-		"map_string_bytes":      map[string]string{"a": "1", "b": "2", "ab": "2"},
-		"map_string_nested_message": map[string]protobuild.Message{
-			"a": {"a": 1},
-			"b": {"a": 2},
-			"ab": {
-				"a": 2,
-				"corecursive": protobuild.Message{
-					// The map item "ab" was entirely replaced, so
-					// this does not contain 1:1 from dst.
-					"map_int32_int32": map[int]int{2: 2, 3: 2},
-				},
-			},
-		},
-		"map_string_nested_enum": map[string]int{"a": 1, "b": 2, "ab": 2},
-	},
-	types: []proto.Message{&testpb.TestAllTypes{}, &test3pb.TestAllTypes{}},
-}, {
-	desc: "merge oneof message fields",
-	dst: protobuild.Message{
-		"oneof_nested_message": protobuild.Message{
-			"a": 100,
-		},
-	},
-	src: protobuild.Message{
-		"oneof_nested_message": protobuild.Message{
-			"corecursive": protobuild.Message{
-				"optional_int64": 1000,
-			},
-		},
-	},
-	want: protobuild.Message{
-		"oneof_nested_message": protobuild.Message{
-			"a": 100,
-			"corecursive": protobuild.Message{
-				"optional_int64": 1000,
-			},
-		},
-	},
-	types: []proto.Message{&testpb.TestAllTypes{}, &test3pb.TestAllTypes{}},
-}, {
-	desc: "merge oneof scalar fields",
-	dst: protobuild.Message{
-		"oneof_uint32": 100,
-	},
-	src: protobuild.Message{
-		"oneof_float": 3.14152,
-	},
-	want: protobuild.Message{
-		"oneof_float": 3.14152,
-	},
-	types: []proto.Message{&testpb.TestAllTypes{}, &test3pb.TestAllTypes{}},
-}, {
-	desc: "merge unknown fields",
-	dst: protobuild.Message{
-		protobuild.Unknown: protopack.Message{
-			protopack.Tag{Number: 50000, Type: protopack.VarintType}, protopack.Svarint(-5),
-		}.Marshal(),
-	},
-	src: protobuild.Message{
-		protobuild.Unknown: protopack.Message{
-			protopack.Tag{Number: 500000, Type: protopack.VarintType}, protopack.Svarint(-50),
-		}.Marshal(),
-	},
-	want: protobuild.Message{
-		protobuild.Unknown: protopack.Message{
-			protopack.Tag{Number: 50000, Type: protopack.VarintType}, protopack.Svarint(-5),
-			protopack.Tag{Number: 500000, Type: protopack.VarintType}, protopack.Svarint(-50),
-		}.Marshal(),
-	},
-}, {
-	desc: "clone legacy message",
-	src: protobuild.Message{"f1": protobuild.Message{
-		"optional_int32":        1,
-		"optional_int64":        1,
-		"optional_uint32":       1,
-		"optional_uint64":       1,
-		"optional_sint32":       1,
-		"optional_sint64":       1,
-		"optional_fixed32":      1,
-		"optional_fixed64":      1,
-		"optional_sfixed32":     1,
-		"optional_sfixed64":     1,
-		"optional_float":        1,
-		"optional_double":       1,
-		"optional_bool":         true,
-		"optional_string":       "string",
-		"optional_bytes":        "bytes",
-		"optional_sibling_enum": 1,
-		"optional_sibling_message": protobuild.Message{
-			"f1": "value",
-		},
-		"repeated_int32":        []int32{1},
-		"repeated_int64":        []int64{1},
-		"repeated_uint32":       []uint32{1},
-		"repeated_uint64":       []uint64{1},
-		"repeated_sint32":       []int32{1},
-		"repeated_sint64":       []int64{1},
-		"repeated_fixed32":      []uint32{1},
-		"repeated_fixed64":      []uint64{1},
-		"repeated_sfixed32":     []int32{1},
-		"repeated_sfixed64":     []int64{1},
-		"repeated_float":        []float32{1},
-		"repeated_double":       []float64{1},
-		"repeated_bool":         []bool{true},
-		"repeated_string":       []string{"string"},
-		"repeated_bytes":        []string{"bytes"},
-		"repeated_sibling_enum": []int{1},
-		"repeated_sibling_message": []protobuild.Message{
-			{"f1": "1"},
-		},
-		"map_bool_int32":    map[bool]int{true: 1},
-		"map_bool_int64":    map[bool]int{true: 1},
-		"map_bool_uint32":   map[bool]int{true: 1},
-		"map_bool_uint64":   map[bool]int{true: 1},
-		"map_bool_sint32":   map[bool]int{true: 1},
-		"map_bool_sint64":   map[bool]int{true: 1},
-		"map_bool_fixed32":  map[bool]int{true: 1},
-		"map_bool_fixed64":  map[bool]int{true: 1},
-		"map_bool_sfixed32": map[bool]int{true: 1},
-		"map_bool_sfixed64": map[bool]int{true: 1},
-		"map_bool_float":    map[bool]int{true: 1},
-		"map_bool_double":   map[bool]int{true: 1},
-		"map_bool_bool":     map[bool]bool{true: false},
-		"map_bool_string":   map[bool]string{true: "1"},
-		"map_bool_bytes":    map[bool]string{true: "1"},
-		"map_bool_sibling_message": map[bool]protobuild.Message{
-			true: {"f1": "1"},
-		},
-		"map_bool_sibling_enum": map[bool]int{true: 1},
-		"oneof_sibling_message": protobuild.Message{
-			"f1": "1",
-		},
-	}},
-	types: []proto.Message{&legacypb.Legacy{}},
-}}
-
-func TestMerge(t *testing.T) {
-	for _, tt := range testMerges {
-		for _, mt := range templateMessages(tt.types...) {
-			t.Run(fmt.Sprintf("%s (%v)", tt.desc, mt.Descriptor().FullName()), func(t *testing.T) {
-				dst := mt.New().Interface()
-				tt.dst.Build(dst.ProtoReflect())
-
-				src := mt.New().Interface()
-				tt.src.Build(src.ProtoReflect())
-
-				want := mt.New().Interface()
-				if tt.dst == nil && tt.want == nil {
-					tt.src.Build(want.ProtoReflect())
-				} else {
-					tt.want.Build(want.ProtoReflect())
-				}
-
-				// Merge should be semantically equivalent to unmarshaling the
-				// encoded form of src into the current dst.
-				b1, err := proto.MarshalOptions{AllowPartial: true}.Marshal(dst)
-				if err != nil {
-					t.Fatalf("Marshal(dst) error: %v", err)
-				}
-				b2, err := proto.MarshalOptions{AllowPartial: true}.Marshal(src)
-				if err != nil {
-					t.Fatalf("Marshal(src) error: %v", err)
-				}
-				unmarshaled := dst.ProtoReflect().New().Interface()
-				err = proto.UnmarshalOptions{AllowPartial: true}.Unmarshal(append(b1, b2...), unmarshaled)
-				if err != nil {
-					t.Fatalf("Unmarshal() error: %v", err)
-				}
-				if !proto.Equal(unmarshaled, want) {
-					t.Fatalf("Unmarshal(Marshal(dst)+Marshal(src)) mismatch:\n got %v\nwant %v\ndiff (-want,+got):\n%v", unmarshaled, want, cmp.Diff(want, unmarshaled, protocmp.Transform()))
-				}
-
-				// Test heterogeneous MessageTypes by merging into a
-				// dynamic message.
-				ddst := dynamicpb.NewMessage(mt.Descriptor())
-				tt.dst.Build(ddst.ProtoReflect())
-				proto.Merge(ddst, src)
-				if !proto.Equal(ddst, want) {
-					t.Fatalf("Merge() into dynamic message mismatch:\n got %v\nwant %v\ndiff (-want,+got):\n%v", ddst, want, cmp.Diff(want, ddst, protocmp.Transform()))
-				}
-
-				proto.Merge(dst, src)
-				if !proto.Equal(dst, want) {
-					t.Fatalf("Merge() mismatch:\n got %v\nwant %v\ndiff (-want,+got):\n%v", dst, want, cmp.Diff(want, dst, protocmp.Transform()))
-				}
-				mutateValue(protoreflect.ValueOfMessage(src.ProtoReflect()))
-				if !proto.Equal(dst, want) {
-					t.Fatalf("mutation observed after modifying source:\n got %v\nwant %v\ndiff (-want,+got):\n%v", dst, want, cmp.Diff(want, dst, protocmp.Transform()))
-				}
-			})
-		}
-	}
-}
-
-func TestMergeFromNil(t *testing.T) {
-	dst := &testpb.TestAllTypes{}
-	proto.Merge(dst, (*testpb.TestAllTypes)(nil))
-	if !proto.Equal(dst, &testpb.TestAllTypes{}) {
-		t.Errorf("destination should be empty after merging from nil message; got:\n%v", prototext.Format(dst))
-	}
-}
-
-// TestMergeAberrant tests inputs that are beyond the protobuf data model.
-// Just because there is a test for the current behavior does not mean that
-// this will behave the same way in the future.
-func TestMergeAberrant(t *testing.T) {
-	tests := []struct {
-		label string
-		dst   proto.Message
-		src   proto.Message
-		check func(proto.Message) bool
-	}{{
-		label: "Proto2EmptyBytes",
-		dst:   &testpb.TestAllTypes{OptionalBytes: nil},
-		src:   &testpb.TestAllTypes{OptionalBytes: []byte{}},
-		check: func(m proto.Message) bool {
-			return m.(*testpb.TestAllTypes).OptionalBytes != nil
-		},
-	}, {
-		label: "Proto3EmptyBytes",
-		dst:   &test3pb.TestAllTypes{SingularBytes: nil},
-		src:   &test3pb.TestAllTypes{SingularBytes: []byte{}},
-		check: func(m proto.Message) bool {
-			return m.(*test3pb.TestAllTypes).SingularBytes == nil
-		},
-	}, {
-		label: "EmptyList",
-		dst:   &testpb.TestAllTypes{RepeatedInt32: nil},
-		src:   &testpb.TestAllTypes{RepeatedInt32: []int32{}},
-		check: func(m proto.Message) bool {
-			return m.(*testpb.TestAllTypes).RepeatedInt32 == nil
-		},
-	}, {
-		label: "ListWithNilBytes",
-		dst:   &testpb.TestAllTypes{RepeatedBytes: nil},
-		src:   &testpb.TestAllTypes{RepeatedBytes: [][]byte{nil}},
-		check: func(m proto.Message) bool {
-			return reflect.DeepEqual(m.(*testpb.TestAllTypes).RepeatedBytes, [][]byte{{}})
-		},
-	}, {
-		label: "ListWithEmptyBytes",
-		dst:   &testpb.TestAllTypes{RepeatedBytes: nil},
-		src:   &testpb.TestAllTypes{RepeatedBytes: [][]byte{{}}},
-		check: func(m proto.Message) bool {
-			return reflect.DeepEqual(m.(*testpb.TestAllTypes).RepeatedBytes, [][]byte{{}})
-		},
-	}, {
-		label: "ListWithNilMessage",
-		dst:   &testpb.TestAllTypes{RepeatedNestedMessage: nil},
-		src:   &testpb.TestAllTypes{RepeatedNestedMessage: []*testpb.TestAllTypes_NestedMessage{nil}},
-		check: func(m proto.Message) bool {
-			return m.(*testpb.TestAllTypes).RepeatedNestedMessage[0] != nil
-		},
-	}, {
-		label: "EmptyMap",
-		dst:   &testpb.TestAllTypes{MapStringString: nil},
-		src:   &testpb.TestAllTypes{MapStringString: map[string]string{}},
-		check: func(m proto.Message) bool {
-			return m.(*testpb.TestAllTypes).MapStringString == nil
-		},
-	}, {
-		label: "MapWithNilBytes",
-		dst:   &testpb.TestAllTypes{MapStringBytes: nil},
-		src:   &testpb.TestAllTypes{MapStringBytes: map[string][]byte{"k": nil}},
-		check: func(m proto.Message) bool {
-			return reflect.DeepEqual(m.(*testpb.TestAllTypes).MapStringBytes, map[string][]byte{"k": {}})
-		},
-	}, {
-		label: "MapWithEmptyBytes",
-		dst:   &testpb.TestAllTypes{MapStringBytes: nil},
-		src:   &testpb.TestAllTypes{MapStringBytes: map[string][]byte{"k": {}}},
-		check: func(m proto.Message) bool {
-			return reflect.DeepEqual(m.(*testpb.TestAllTypes).MapStringBytes, map[string][]byte{"k": {}})
-		},
-	}, {
-		label: "MapWithNilMessage",
-		dst:   &testpb.TestAllTypes{MapStringNestedMessage: nil},
-		src:   &testpb.TestAllTypes{MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"k": nil}},
-		check: func(m proto.Message) bool {
-			return m.(*testpb.TestAllTypes).MapStringNestedMessage["k"] != nil
-		},
-	}, {
-		label: "OneofWithTypedNilWrapper",
-		dst:   &testpb.TestAllTypes{OneofField: nil},
-		src:   &testpb.TestAllTypes{OneofField: (*testpb.TestAllTypes_OneofNestedMessage)(nil)},
-		check: func(m proto.Message) bool {
-			return m.(*testpb.TestAllTypes).OneofField == nil
-		},
-	}, {
-		label: "OneofWithNilMessage",
-		dst:   &testpb.TestAllTypes{OneofField: nil},
-		src:   &testpb.TestAllTypes{OneofField: &testpb.TestAllTypes_OneofNestedMessage{OneofNestedMessage: nil}},
-		check: func(m proto.Message) bool {
-			return m.(*testpb.TestAllTypes).OneofField.(*testpb.TestAllTypes_OneofNestedMessage).OneofNestedMessage != nil
-		},
-		// TODO: extension, nil message
-		// TODO: repeated extension, nil
-		// TODO: extension bytes
-		// TODO: repeated extension, nil message
-	}}
-
-	for _, tt := range tests {
-		t.Run(tt.label, func(t *testing.T) {
-			var pass bool
-			func() {
-				defer func() { recover() }()
-				proto.Merge(tt.dst, tt.src)
-				pass = tt.check(tt.dst)
-			}()
-			if !pass {
-				t.Error("check failed")
-			}
-		})
-	}
-}
-
-func TestMergeRace(t *testing.T) {
-	dst := new(testpb.TestAllTypes)
-	srcs := []*testpb.TestAllTypes{
-		{OptionalInt32: proto.Int32(1)},
-		{OptionalString: proto.String("hello")},
-		{RepeatedInt32: []int32{2, 3, 4}},
-		{RepeatedString: []string{"goodbye"}},
-		{MapStringString: map[string]string{"key": "value"}},
-		{OptionalNestedMessage: &testpb.TestAllTypes_NestedMessage{
-			A: proto.Int32(5),
-		}},
-		func() *testpb.TestAllTypes {
-			m := new(testpb.TestAllTypes)
-			m.ProtoReflect().SetUnknown(protopack.Message{
-				protopack.Tag{Number: 50000, Type: protopack.VarintType}, protopack.Svarint(-5),
-			}.Marshal())
-			return m
-		}(),
-	}
-
-	// It should be safe to concurrently merge non-overlapping fields.
-	var wg sync.WaitGroup
-	defer wg.Wait()
-	for _, src := range srcs {
-		wg.Add(1)
-		go func(src proto.Message) {
-			defer wg.Done()
-			proto.Merge(dst, src)
-		}(src)
-	}
-}
-
-func TestMergeSelf(t *testing.T) {
-	got := &testpb.TestAllTypes{
-		OptionalInt32:   proto.Int32(1),
-		OptionalString:  proto.String("hello"),
-		RepeatedInt32:   []int32{2, 3, 4},
-		RepeatedString:  []string{"goodbye"},
-		MapStringString: map[string]string{"key": "value"},
-		OptionalNestedMessage: &testpb.TestAllTypes_NestedMessage{
-			A: proto.Int32(5),
-		},
-	}
-	got.ProtoReflect().SetUnknown(protopack.Message{
-		protopack.Tag{Number: 50000, Type: protopack.VarintType}, protopack.Svarint(-5),
-	}.Marshal())
-	proto.Merge(got, got)
-
-	// The main impact of merging to self is that repeated fields and
-	// unknown fields are doubled.
-	want := &testpb.TestAllTypes{
-		OptionalInt32:   proto.Int32(1),
-		OptionalString:  proto.String("hello"),
-		RepeatedInt32:   []int32{2, 3, 4, 2, 3, 4},
-		RepeatedString:  []string{"goodbye", "goodbye"},
-		MapStringString: map[string]string{"key": "value"},
-		OptionalNestedMessage: &testpb.TestAllTypes_NestedMessage{
-			A: proto.Int32(5),
-		},
-	}
-	want.ProtoReflect().SetUnknown(protopack.Message{
-		protopack.Tag{Number: 50000, Type: protopack.VarintType}, protopack.Svarint(-5),
-		protopack.Tag{Number: 50000, Type: protopack.VarintType}, protopack.Svarint(-5),
-	}.Marshal())
-
-	if !proto.Equal(got, want) {
-		t.Errorf("Equal mismatch:\ngot  %v\nwant %v", got, want)
-	}
-}
-
-func TestClone(t *testing.T) {
-	want := &testpb.TestAllTypes{
-		OptionalInt32: proto.Int32(1),
-	}
-	got := proto.Clone(want).(*testpb.TestAllTypes)
-	if !proto.Equal(got, want) {
-		t.Errorf("Clone(src) != src:\n got %v\nwant %v", got, want)
-	}
-}
-
-// mutateValue changes a Value, returning a new value.
-//
-// For scalar values, it returns a value different from the input.
-// For Message, List, and Map values, it mutates the input and returns it.
-func mutateValue(v protoreflect.Value) protoreflect.Value {
-	switch v := v.Interface().(type) {
-	case bool:
-		return protoreflect.ValueOfBool(!v)
-	case protoreflect.EnumNumber:
-		return protoreflect.ValueOfEnum(v + 1)
-	case int32:
-		return protoreflect.ValueOfInt32(v + 1)
-	case int64:
-		return protoreflect.ValueOfInt64(v + 1)
-	case uint32:
-		return protoreflect.ValueOfUint32(v + 1)
-	case uint64:
-		return protoreflect.ValueOfUint64(v + 1)
-	case float32:
-		return protoreflect.ValueOfFloat32(v + 1)
-	case float64:
-		return protoreflect.ValueOfFloat64(v + 1)
-	case []byte:
-		for i := range v {
-			v[i]++
-		}
-		return protoreflect.ValueOfBytes(v)
-	case string:
-		return protoreflect.ValueOfString("_" + v)
-	case protoreflect.Message:
-		v.Range(func(fd protoreflect.FieldDescriptor, val protoreflect.Value) bool {
-			v.Set(fd, mutateValue(val))
-			return true
-		})
-		return protoreflect.ValueOfMessage(v)
-	case protoreflect.List:
-		for i := 0; i < v.Len(); i++ {
-			v.Set(i, mutateValue(v.Get(i)))
-		}
-		return protoreflect.ValueOfList(v)
-	case protoreflect.Map:
-		v.Range(func(mk protoreflect.MapKey, mv protoreflect.Value) bool {
-			v.Set(mk, mutateValue(mv))
-			return true
-		})
-		return protoreflect.ValueOfMap(v)
-	default:
-		panic(fmt.Sprintf("unknown value type %T", v))
-	}
-}
diff --git a/proto/message_set.go b/proto/message_set.go
new file mode 100644
index 0000000..f48a756
--- /dev/null
+++ b/proto/message_set.go
@@ -0,0 +1,181 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto
+
+/*
+ * Support for message sets.
+ */
+
+import (
+	"errors"
+)
+
+// errNoMessageTypeID occurs when a protocol buffer does not have a message type ID.
+// A message type ID is required for storing a protocol buffer in a message set.
+var errNoMessageTypeID = errors.New("proto does not have a message type ID")
+
+// The first two types (_MessageSet_Item and messageSet)
+// model what the protocol compiler produces for the following protocol message:
+//   message MessageSet {
+//     repeated group Item = 1 {
+//       required int32 type_id = 2;
+//       required string message = 3;
+//     };
+//   }
+// That is the MessageSet wire format. We can't use a proto to generate these
+// because that would introduce a circular dependency between it and this package.
+
+type _MessageSet_Item struct {
+	TypeId  *int32 `protobuf:"varint,2,req,name=type_id"`
+	Message []byte `protobuf:"bytes,3,req,name=message"`
+}
+
+type messageSet struct {
+	Item             []*_MessageSet_Item `protobuf:"group,1,rep"`
+	XXX_unrecognized []byte
+	// TODO: caching?
+}
+
+// Make sure messageSet is a Message.
+var _ Message = (*messageSet)(nil)
+
+// messageTypeIder is an interface satisfied by a protocol buffer type
+// that may be stored in a MessageSet.
+type messageTypeIder interface {
+	MessageTypeId() int32
+}
+
+func (ms *messageSet) find(pb Message) *_MessageSet_Item {
+	mti, ok := pb.(messageTypeIder)
+	if !ok {
+		return nil
+	}
+	id := mti.MessageTypeId()
+	for _, item := range ms.Item {
+		if *item.TypeId == id {
+			return item
+		}
+	}
+	return nil
+}
+
+func (ms *messageSet) Has(pb Message) bool {
+	return ms.find(pb) != nil
+}
+
+func (ms *messageSet) Unmarshal(pb Message) error {
+	if item := ms.find(pb); item != nil {
+		return Unmarshal(item.Message, pb)
+	}
+	if _, ok := pb.(messageTypeIder); !ok {
+		return errNoMessageTypeID
+	}
+	return nil // TODO: return error instead?
+}
+
+func (ms *messageSet) Marshal(pb Message) error {
+	msg, err := Marshal(pb)
+	if err != nil {
+		return err
+	}
+	if item := ms.find(pb); item != nil {
+		// reuse existing item
+		item.Message = msg
+		return nil
+	}
+
+	mti, ok := pb.(messageTypeIder)
+	if !ok {
+		return errNoMessageTypeID
+	}
+
+	mtid := mti.MessageTypeId()
+	ms.Item = append(ms.Item, &_MessageSet_Item{
+		TypeId:  &mtid,
+		Message: msg,
+	})
+	return nil
+}
+
+func (ms *messageSet) Reset()         { *ms = messageSet{} }
+func (ms *messageSet) String() string { return CompactTextString(ms) }
+func (*messageSet) ProtoMessage()     {}
+
+// Support for the message_set_wire_format message option.
+
+func skipVarint(buf []byte) []byte {
+	i := 0
+	for ; buf[i]&0x80 != 0; i++ {
+	}
+	return buf[i+1:]
+}
+
+// unmarshalMessageSet decodes the extension map encoded in buf in the message set wire format.
+// It is called by Unmarshal methods on protocol buffer messages with the message_set_wire_format option.
+func unmarshalMessageSet(buf []byte, exts interface{}) error {
+	var m map[int32]Extension
+	switch exts := exts.(type) {
+	case *XXX_InternalExtensions:
+		m = exts.extensionsWrite()
+	case map[int32]Extension:
+		m = exts
+	default:
+		return errors.New("proto: not an extension map")
+	}
+
+	ms := new(messageSet)
+	if err := Unmarshal(buf, ms); err != nil {
+		return err
+	}
+	for _, item := range ms.Item {
+		id := *item.TypeId
+		msg := item.Message
+
+		// Restore wire type and field number varint, plus length varint.
+		// Be careful to preserve duplicate items.
+		b := EncodeVarint(uint64(id)<<3 | WireBytes)
+		if ext, ok := m[id]; ok {
+			// Existing data; rip off the tag and length varint
+			// so we join the new data correctly.
+			// We can assume that ext.enc is set because we are unmarshaling.
+			o := ext.enc[len(b):]   // skip wire type and field number
+			_, n := DecodeVarint(o) // calculate length of length varint
+			o = o[n:]               // skip length varint
+			msg = append(o, msg...) // join old data and new data
+		}
+		b = append(b, EncodeVarint(uint64(len(msg)))...)
+		b = append(b, msg...)
+
+		m[id] = Extension{enc: b}
+	}
+	return nil
+}
diff --git a/proto/message_set_test.go b/proto/message_set_test.go
new file mode 100644
index 0000000..1bd11aa
--- /dev/null
+++ b/proto/message_set_test.go
@@ -0,0 +1,88 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2014 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto_test
+
+import (
+	"bytes"
+	"fmt"
+	"testing"
+
+	"github.com/golang/protobuf/proto"
+	. "github.com/golang/protobuf/proto/test_proto"
+)
+
+func TestUnmarshalMessageSetWithDuplicate(t *testing.T) {
+	/*
+		Message{
+			Tag{1, StartGroup},
+			Message{
+				Tag{2, Varint}, Uvarint(12345),
+				Tag{3, Bytes}, Bytes("hoo"),
+			},
+			Tag{1, EndGroup},
+			Tag{1, StartGroup},
+			Message{
+				Tag{2, Varint}, Uvarint(12345),
+				Tag{3, Bytes}, Bytes("hah"),
+			},
+			Tag{1, EndGroup},
+		}
+	*/
+	var in []byte
+	fmt.Sscanf("0b10b9601a03686f6f0c0b10b9601a036861680c", "%x", &in)
+
+	/*
+		Message{
+			Tag{1, StartGroup},
+			Message{
+				Tag{2, Varint}, Uvarint(12345),
+				Tag{3, Bytes}, Bytes("hoohah"),
+			},
+			Tag{1, EndGroup},
+		}
+	*/
+	var want []byte
+	fmt.Sscanf("0b10b9601a06686f6f6861680c", "%x", &want)
+
+	var m MyMessageSet
+	if err := proto.Unmarshal(in, &m); err != nil {
+		t.Fatalf("unexpected Unmarshal error: %v", err)
+	}
+	got, err := proto.Marshal(&m)
+	if err != nil {
+		t.Fatalf("unexpected Marshal error: %v", err)
+	}
+
+	if !bytes.Equal(got, want) {
+		t.Errorf("output mismatch:\ngot  %x\nwant %x", got, want)
+	}
+}
diff --git a/proto/messageset.go b/proto/messageset.go
deleted file mode 100644
index 312d5d4..0000000
--- a/proto/messageset.go
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package proto
-
-import (
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/encoding/messageset"
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/internal/flags"
-	"google.golang.org/protobuf/internal/order"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/reflect/protoregistry"
-)
-
-func (o MarshalOptions) sizeMessageSet(m protoreflect.Message) (size int) {
-	m.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {
-		size += messageset.SizeField(fd.Number())
-		size += protowire.SizeTag(messageset.FieldMessage)
-		size += protowire.SizeBytes(o.size(v.Message()))
-		return true
-	})
-	size += messageset.SizeUnknown(m.GetUnknown())
-	return size
-}
-
-func (o MarshalOptions) marshalMessageSet(b []byte, m protoreflect.Message) ([]byte, error) {
-	if !flags.ProtoLegacy {
-		return b, errors.New("no support for message_set_wire_format")
-	}
-	fieldOrder := order.AnyFieldOrder
-	if o.Deterministic {
-		fieldOrder = order.NumberFieldOrder
-	}
-	var err error
-	order.RangeFields(m, fieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {
-		b, err = o.marshalMessageSetField(b, fd, v)
-		return err == nil
-	})
-	if err != nil {
-		return b, err
-	}
-	return messageset.AppendUnknown(b, m.GetUnknown())
-}
-
-func (o MarshalOptions) marshalMessageSetField(b []byte, fd protoreflect.FieldDescriptor, value protoreflect.Value) ([]byte, error) {
-	b = messageset.AppendFieldStart(b, fd.Number())
-	b = protowire.AppendTag(b, messageset.FieldMessage, protowire.BytesType)
-	b = protowire.AppendVarint(b, uint64(o.Size(value.Message().Interface())))
-	b, err := o.marshalMessage(b, value.Message())
-	if err != nil {
-		return b, err
-	}
-	b = messageset.AppendFieldEnd(b)
-	return b, nil
-}
-
-func (o UnmarshalOptions) unmarshalMessageSet(b []byte, m protoreflect.Message) error {
-	if !flags.ProtoLegacy {
-		return errors.New("no support for message_set_wire_format")
-	}
-	return messageset.Unmarshal(b, false, func(num protowire.Number, v []byte) error {
-		err := o.unmarshalMessageSetField(m, num, v)
-		if err == errUnknown {
-			unknown := m.GetUnknown()
-			unknown = protowire.AppendTag(unknown, num, protowire.BytesType)
-			unknown = protowire.AppendBytes(unknown, v)
-			m.SetUnknown(unknown)
-			return nil
-		}
-		return err
-	})
-}
-
-func (o UnmarshalOptions) unmarshalMessageSetField(m protoreflect.Message, num protowire.Number, v []byte) error {
-	md := m.Descriptor()
-	if !md.ExtensionRanges().Has(num) {
-		return errUnknown
-	}
-	xt, err := o.Resolver.FindExtensionByNumber(md.FullName(), num)
-	if err == protoregistry.NotFound {
-		return errUnknown
-	}
-	if err != nil {
-		return errors.New("%v: unable to resolve extension %v: %v", md.FullName(), num, err)
-	}
-	xd := xt.TypeDescriptor()
-	if err := o.unmarshalMessage(v, m.Mutable(xd).Message()); err != nil {
-		return err
-	}
-	return nil
-}
diff --git a/proto/messageset_test.go b/proto/messageset_test.go
deleted file mode 100644
index e634112..0000000
--- a/proto/messageset_test.go
+++ /dev/null
@@ -1,312 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package proto_test
-
-import (
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/flags"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/testing/protopack"
-
-	messagesetpb "google.golang.org/protobuf/internal/testprotos/messageset/messagesetpb"
-	msetextpb "google.golang.org/protobuf/internal/testprotos/messageset/msetextpb"
-)
-
-func init() {
-	if flags.ProtoLegacy {
-		testValidMessages = append(testValidMessages, messageSetTestProtos...)
-		testInvalidMessages = append(testInvalidMessages, messageSetInvalidTestProtos...)
-	}
-}
-
-var messageSetTestProtos = []testProto{
-	{
-		desc: "MessageSet type_id before message content",
-		decodeTo: []proto.Message{func() proto.Message {
-			m := &messagesetpb.MessageSetContainer{MessageSet: &messagesetpb.MessageSet{}}
-			proto.SetExtension(m.MessageSet, msetextpb.E_Ext1_MessageSetExtension, &msetextpb.Ext1{
-				Ext1Field1: proto.Int32(10),
-			})
-			return m
-		}()},
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.StartGroupType},
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(1000),
-				protopack.Tag{3, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-					protopack.Tag{1, protopack.VarintType}, protopack.Varint(10),
-				}),
-				protopack.Tag{1, protopack.EndGroupType},
-			}),
-		}.Marshal(),
-	},
-	{
-		desc: "MessageSet type_id after message content",
-		decodeTo: []proto.Message{func() proto.Message {
-			m := &messagesetpb.MessageSetContainer{MessageSet: &messagesetpb.MessageSet{}}
-			proto.SetExtension(m.MessageSet, msetextpb.E_Ext1_MessageSetExtension, &msetextpb.Ext1{
-				Ext1Field1: proto.Int32(10),
-			})
-			return m
-		}()},
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.StartGroupType},
-				protopack.Tag{3, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-					protopack.Tag{1, protopack.VarintType}, protopack.Varint(10),
-				}),
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(1000),
-				protopack.Tag{1, protopack.EndGroupType},
-			}),
-		}.Marshal(),
-	},
-	{
-		desc: "MessageSet does not preserve unknown field",
-		decodeTo: []proto.Message{build(
-			&messagesetpb.MessageSet{},
-			extend(msetextpb.E_Ext1_MessageSetExtension, &msetextpb.Ext1{
-				Ext1Field1: proto.Int32(10),
-			}),
-		)},
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.StartGroupType},
-			protopack.Tag{2, protopack.VarintType}, protopack.Varint(1000),
-			protopack.Tag{3, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(10),
-			}),
-			protopack.Tag{1, protopack.EndGroupType},
-			// Unknown field
-			protopack.Tag{4, protopack.VarintType}, protopack.Varint(30),
-		}.Marshal(),
-	},
-	{
-		desc: "MessageSet with unknown type_id",
-		decodeTo: []proto.Message{build(
-			&messagesetpb.MessageSet{},
-			unknown(protopack.Message{
-				protopack.Tag{999, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-					protopack.Tag{1, protopack.VarintType}, protopack.Varint(10),
-				}),
-			}.Marshal()),
-		)},
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.StartGroupType},
-			protopack.Tag{2, protopack.VarintType}, protopack.Varint(999),
-			protopack.Tag{3, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(10),
-			}),
-			protopack.Tag{1, protopack.EndGroupType},
-		}.Marshal(),
-	},
-	{
-		desc: "MessageSet merges repeated message fields in item",
-		decodeTo: []proto.Message{build(
-			&messagesetpb.MessageSet{},
-			extend(msetextpb.E_Ext1_MessageSetExtension, &msetextpb.Ext1{
-				Ext1Field1: proto.Int32(10),
-				Ext1Field2: proto.Int32(20),
-			}),
-		)},
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.StartGroupType},
-			protopack.Tag{2, protopack.VarintType}, protopack.Varint(1000),
-			protopack.Tag{3, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(10),
-			}),
-			protopack.Tag{3, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(20),
-			}),
-			protopack.Tag{1, protopack.EndGroupType},
-		}.Marshal(),
-	},
-	{
-		desc: "MessageSet merges message fields in repeated items",
-		decodeTo: []proto.Message{build(
-			&messagesetpb.MessageSet{},
-			extend(msetextpb.E_Ext1_MessageSetExtension, &msetextpb.Ext1{
-				Ext1Field1: proto.Int32(10),
-				Ext1Field2: proto.Int32(20),
-			}),
-			extend(msetextpb.E_Ext2_MessageSetExtension, &msetextpb.Ext2{
-				Ext2Field1: proto.Int32(30),
-			}),
-		)},
-		wire: protopack.Message{
-			// Ext1, field1
-			protopack.Tag{1, protopack.StartGroupType},
-			protopack.Tag{2, protopack.VarintType}, protopack.Varint(1000),
-			protopack.Tag{3, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(10),
-			}),
-			protopack.Tag{1, protopack.EndGroupType},
-			// Ext2, field1
-			protopack.Tag{1, protopack.StartGroupType},
-			protopack.Tag{2, protopack.VarintType}, protopack.Varint(1001),
-			protopack.Tag{3, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(30),
-			}),
-			protopack.Tag{1, protopack.EndGroupType},
-			// Ext2, field2
-			protopack.Tag{1, protopack.StartGroupType},
-			protopack.Tag{2, protopack.VarintType}, protopack.Varint(1000),
-			protopack.Tag{3, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(20),
-			}),
-			protopack.Tag{1, protopack.EndGroupType},
-		}.Marshal(),
-	},
-	{
-		desc: "MessageSet with missing type_id",
-		decodeTo: []proto.Message{build(
-			&messagesetpb.MessageSet{},
-		)},
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.StartGroupType},
-			protopack.Tag{3, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(10),
-			}),
-			protopack.Tag{1, protopack.EndGroupType},
-		}.Marshal(),
-	},
-	{
-		desc: "MessageSet with missing message",
-		decodeTo: []proto.Message{build(
-			&messagesetpb.MessageSet{},
-			extend(msetextpb.E_Ext1_MessageSetExtension, &msetextpb.Ext1{}),
-		)},
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.StartGroupType},
-			protopack.Tag{2, protopack.VarintType}, protopack.Varint(1000),
-			protopack.Tag{1, protopack.EndGroupType},
-		}.Marshal(),
-	},
-	{
-		desc: "MessageSet with type id out of valid field number range",
-		decodeTo: []proto.Message{func() proto.Message {
-			m := &messagesetpb.MessageSetContainer{MessageSet: &messagesetpb.MessageSet{}}
-			proto.SetExtension(m.MessageSet, msetextpb.E_ExtLargeNumber_MessageSetExtension, &msetextpb.ExtLargeNumber{})
-			return m
-		}()},
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.StartGroupType},
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(protowire.MaxValidNumber + 1),
-				protopack.Tag{3, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{}),
-				protopack.Tag{1, protopack.EndGroupType},
-			}),
-		}.Marshal(),
-	},
-	{
-		desc: "MessageSet with unknown type id out of valid field number range",
-		decodeTo: []proto.Message{func() proto.Message {
-			m := &messagesetpb.MessageSetContainer{MessageSet: &messagesetpb.MessageSet{}}
-			m.MessageSet.ProtoReflect().SetUnknown(
-				protopack.Message{
-					protopack.Tag{protowire.MaxValidNumber + 2, protopack.BytesType}, protopack.LengthPrefix{},
-				}.Marshal(),
-			)
-			return m
-		}()},
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.StartGroupType},
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(protowire.MaxValidNumber + 2),
-				protopack.Tag{3, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{}),
-				protopack.Tag{1, protopack.EndGroupType},
-			}),
-		}.Marshal(),
-	},
-	{
-		desc: "MessageSet with unknown field",
-		decodeTo: []proto.Message{func() proto.Message {
-			m := &messagesetpb.MessageSetContainer{MessageSet: &messagesetpb.MessageSet{}}
-			proto.SetExtension(m.MessageSet, msetextpb.E_Ext1_MessageSetExtension, &msetextpb.Ext1{
-				Ext1Field1: proto.Int32(10),
-			})
-			return m
-		}()},
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.StartGroupType},
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(1000),
-				protopack.Tag{3, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-					protopack.Tag{1, protopack.VarintType}, protopack.Varint(10),
-				}),
-				protopack.Tag{4, protopack.VarintType}, protopack.Varint(0),
-				protopack.Tag{1, protopack.EndGroupType},
-			}),
-		}.Marshal(),
-	},
-	{
-		desc:          "MessageSet with required field set",
-		checkFastInit: true,
-		decodeTo: []proto.Message{func() proto.Message {
-			m := &messagesetpb.MessageSetContainer{MessageSet: &messagesetpb.MessageSet{}}
-			proto.SetExtension(m.MessageSet, msetextpb.E_ExtRequired_MessageSetExtension, &msetextpb.ExtRequired{
-				RequiredField1: proto.Int32(1),
-			})
-			return m
-		}()},
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.StartGroupType},
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(1002),
-				protopack.Tag{3, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-					protopack.Tag{1, protopack.VarintType}, protopack.Varint(1),
-				}),
-				protopack.Tag{1, protopack.EndGroupType},
-			}),
-		}.Marshal(),
-	},
-	{
-		desc:          "MessageSet with required field unset",
-		checkFastInit: true,
-		partial:       true,
-		decodeTo: []proto.Message{func() proto.Message {
-			m := &messagesetpb.MessageSetContainer{MessageSet: &messagesetpb.MessageSet{}}
-			proto.SetExtension(m.MessageSet, msetextpb.E_ExtRequired_MessageSetExtension, &msetextpb.ExtRequired{})
-			return m
-		}()},
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.StartGroupType},
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(1002),
-				protopack.Tag{3, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{}),
-				protopack.Tag{1, protopack.EndGroupType},
-			}),
-		}.Marshal(),
-	},
-}
-
-var messageSetInvalidTestProtos = []testProto{
-	{
-		desc: "MessageSet with type id 0",
-		decodeTo: []proto.Message{
-			(*messagesetpb.MessageSetContainer)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.StartGroupType},
-				protopack.Tag{2, protopack.VarintType}, protopack.Uvarint(0),
-				protopack.Tag{3, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{}),
-				protopack.Tag{1, protopack.EndGroupType},
-			}),
-		}.Marshal(),
-	},
-	{
-		desc: "MessageSet with type id overflowing int32",
-		decodeTo: []proto.Message{
-			(*messagesetpb.MessageSetContainer)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.StartGroupType},
-				protopack.Tag{2, protopack.VarintType}, protopack.Uvarint(0x80000000),
-				protopack.Tag{3, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{}),
-				protopack.Tag{1, protopack.EndGroupType},
-			}),
-		}.Marshal(),
-	},
-}
diff --git a/proto/methods_test.go b/proto/methods_test.go
deleted file mode 100644
index 203d42a..0000000
--- a/proto/methods_test.go
+++ /dev/null
@@ -1,185 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// The protoreflect tag disables fast-path methods, including legacy ones.
-//go:build !protoreflect
-// +build !protoreflect
-
-package proto_test
-
-import (
-	"bytes"
-	"errors"
-	"fmt"
-	"testing"
-
-	"google.golang.org/protobuf/internal/impl"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/runtime/protoiface"
-
-	legacypb "google.golang.org/protobuf/internal/testprotos/legacy"
-)
-
-type selfMarshaler struct {
-	bytes []byte
-	err   error
-}
-
-func (m selfMarshaler) Reset()        {}
-func (m selfMarshaler) ProtoMessage() {}
-
-func (m selfMarshaler) String() string {
-	return fmt.Sprintf("selfMarshaler{bytes:%v, err:%v}", m.bytes, m.err)
-}
-
-func (m selfMarshaler) Marshal() ([]byte, error) {
-	return m.bytes, m.err
-}
-
-func (m *selfMarshaler) Unmarshal(b []byte) error {
-	m.bytes = b
-	return m.err
-}
-
-func TestLegacyMarshalMethod(t *testing.T) {
-	for _, test := range []selfMarshaler{
-		{bytes: []byte("marshal")},
-		{bytes: []byte("marshal"), err: errors.New("some error")},
-	} {
-		m := impl.Export{}.MessageOf(test).Interface()
-		b, err := proto.Marshal(m)
-		if err != test.err || !bytes.Equal(b, test.bytes) {
-			t.Errorf("proto.Marshal(%v) = %v, %v; want %v, %v", test, b, err, test.bytes, test.err)
-		}
-		if gotSize, wantSize := proto.Size(m), len(test.bytes); gotSize != wantSize {
-			t.Fatalf("proto.Size(%v) = %v, want %v", test, gotSize, wantSize)
-		}
-
-		prefix := []byte("prefix")
-		want := append(prefix, test.bytes...)
-		b, err = proto.MarshalOptions{}.MarshalAppend(prefix, m)
-		if err != test.err || !bytes.Equal(b, want) {
-			t.Errorf("MarshalAppend(%v, %v) = %v, %v; want %v, %v", prefix, test, b, err, test.bytes, test.err)
-		}
-
-		b, err = proto.MarshalOptions{
-			Deterministic: true,
-		}.MarshalAppend(nil, m)
-		if err != test.err || !bytes.Equal(b, test.bytes) {
-			t.Errorf("MarshalOptions{Deterministic:true}.MarshalAppend(nil, %v) = %v, %v; want %v, %v", test, b, err, test.bytes, test.err)
-		}
-	}
-}
-
-func TestLegacyUnmarshalMethod(t *testing.T) {
-	sm := &selfMarshaler{}
-	m := impl.Export{}.MessageOf(sm).Interface()
-	want := []byte("unmarshal")
-	if err := proto.Unmarshal(want, m); err != nil {
-		t.Fatalf("proto.Unmarshal(selfMarshaler{}) = %v, want nil", err)
-	}
-	if !bytes.Equal(sm.bytes, want) {
-		t.Fatalf("proto.Unmarshal(selfMarshaler{}): Marshal method not called")
-	}
-}
-
-type descPanicSelfMarshaler struct{}
-
-const descPanicSelfMarshalerBytes = "bytes"
-
-func (m *descPanicSelfMarshaler) Reset()                      {}
-func (m *descPanicSelfMarshaler) ProtoMessage()               {}
-func (m *descPanicSelfMarshaler) Descriptor() ([]byte, []int) { panic("Descriptor method panics") }
-func (m *descPanicSelfMarshaler) String() string              { return "descPanicSelfMarshaler{}" }
-func (m *descPanicSelfMarshaler) Marshal() ([]byte, error) {
-	return []byte(descPanicSelfMarshalerBytes), nil
-}
-
-func TestSelfMarshalerDescriptorPanics(t *testing.T) {
-	m := &descPanicSelfMarshaler{}
-	got, err := proto.Marshal(impl.Export{}.MessageOf(m).Interface())
-	want := []byte(descPanicSelfMarshalerBytes)
-	if err != nil || !bytes.Equal(got, want) {
-		t.Fatalf("proto.Marshal(%v) = %v, %v; want %v, nil", m, got, err, want)
-	}
-}
-
-type descSelfMarshaler struct {
-	someField int // some non-generated field
-}
-
-const descSelfMarshalerBytes = "bytes"
-
-func (m *descSelfMarshaler) Reset()        {}
-func (m *descSelfMarshaler) ProtoMessage() {}
-func (m *descSelfMarshaler) Descriptor() ([]byte, []int) {
-	return ((*legacypb.Legacy)(nil)).GetF1().Descriptor()
-}
-func (m *descSelfMarshaler) String() string {
-	return "descSelfMarshaler{}"
-}
-func (m *descSelfMarshaler) Marshal() ([]byte, error) {
-	return []byte(descSelfMarshalerBytes), nil
-}
-
-func TestSelfMarshalerWithDescriptor(t *testing.T) {
-	m := &descSelfMarshaler{}
-	got, err := proto.Marshal(impl.Export{}.MessageOf(m).Interface())
-	want := []byte(descSelfMarshalerBytes)
-	if err != nil || !bytes.Equal(got, want) {
-		t.Fatalf("proto.Marshal(%v) = %v, %v; want %v, nil", m, got, err, want)
-	}
-}
-
-func TestDecodeFastCheckInitialized(t *testing.T) {
-	for _, test := range testValidMessages {
-		if !test.checkFastInit {
-			continue
-		}
-		for _, message := range test.decodeTo {
-			t.Run(fmt.Sprintf("%s (%T)", test.desc, message), func(t *testing.T) {
-				m := message.ProtoReflect().New()
-				opts := proto.UnmarshalOptions{
-					AllowPartial: true,
-				}
-				out, err := opts.UnmarshalState(protoiface.UnmarshalInput{
-					Buf:     test.wire,
-					Message: m,
-				})
-				if err != nil {
-					t.Fatalf("Unmarshal error: %v", err)
-				}
-				if got, want := (out.Flags&protoiface.UnmarshalInitialized != 0), !test.partial; got != want {
-					t.Errorf("out.Initialized = %v, want %v", got, want)
-				}
-			})
-		}
-	}
-}
-
-type selfMerger struct {
-	src protoiface.MessageV1
-}
-
-func (*selfMerger) Reset()         {}
-func (*selfMerger) ProtoMessage()  {}
-func (*selfMerger) String() string { return "selfMerger{}" }
-func (m *selfMerger) Merge(src protoiface.MessageV1) {
-	m.src = src
-}
-
-func TestLegacyMergeMethod(t *testing.T) {
-	src := &selfMerger{}
-	dst := &selfMerger{}
-	proto.Merge(
-		impl.Export{}.MessageOf(dst).Interface(),
-		impl.Export{}.MessageOf(src).Interface(),
-	)
-	if got, want := dst.src, src; got != want {
-		t.Errorf("Merge(dst, src): want dst.src = src, got %v", got)
-	}
-	if got := src.src; got != nil {
-		t.Errorf("Merge(dst, src): want src.src = nil, got %v", got)
-	}
-}
diff --git a/proto/nil_test.go b/proto/nil_test.go
deleted file mode 100644
index 29d259d..0000000
--- a/proto/nil_test.go
+++ /dev/null
@@ -1,176 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package proto_test
-
-import (
-	"testing"
-
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoreflect"
-
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-)
-
-// TestNil tests for boundary conditions when nil and typed-nil messages
-// are passed to various top-level functions.
-// These tests are not necessarily a statement of proper behavior,
-// but exist to detect accidental changes in behavior.
-func TestNil(t *testing.T) {
-	nilMsg := (*testpb.TestAllExtensions)(nil)
-	extType := testpb.E_OptionalBool
-	extRanger := func(protoreflect.ExtensionType, interface{}) bool { return true }
-
-	tests := []struct {
-		label string
-		test  func()
-		panic bool
-	}{{
-		label: "Size",
-		test:  func() { proto.Size(nil) },
-	}, {
-		label: "Size",
-		test:  func() { proto.Size(nilMsg) },
-	}, {
-		label: "Marshal",
-		test:  func() { proto.Marshal(nil) },
-	}, {
-		label: "Marshal",
-		test:  func() { proto.Marshal(nilMsg) },
-	}, {
-		label: "Unmarshal",
-		test:  func() { proto.Unmarshal(nil, nil) },
-		panic: true,
-	}, {
-		label: "Unmarshal",
-		test:  func() { proto.Unmarshal(nil, nilMsg) },
-		panic: true,
-	}, {
-		label: "Merge",
-		test:  func() { proto.Merge(nil, nil) },
-		panic: true,
-	}, {
-		label: "Merge",
-		test:  func() { proto.Merge(nil, nilMsg) },
-		panic: true,
-	}, {
-		label: "Merge",
-		test:  func() { proto.Merge(nilMsg, nil) },
-		panic: true,
-	}, {
-		label: "Merge",
-		test:  func() { proto.Merge(nilMsg, nilMsg) },
-		panic: true,
-	}, {
-		label: "Clone",
-		test:  func() { proto.Clone(nil) },
-	}, {
-		label: "Clone",
-		test:  func() { proto.Clone(nilMsg) },
-	}, {
-		label: "Equal",
-		test:  func() { proto.Equal(nil, nil) },
-	}, {
-		label: "Equal",
-		test:  func() { proto.Equal(nil, nilMsg) },
-	}, {
-		label: "Equal",
-		test:  func() { proto.Equal(nilMsg, nil) },
-	}, {
-		label: "Equal",
-		test:  func() { proto.Equal(nilMsg, nilMsg) },
-	}, {
-		label: "Reset",
-		test:  func() { proto.Reset(nil) },
-		panic: true,
-	}, {
-		label: "Reset",
-		test:  func() { proto.Reset(nilMsg) },
-		panic: true,
-	}, {
-		label: "HasExtension",
-		test:  func() { proto.HasExtension(nil, nil) },
-	}, {
-		label: "HasExtension",
-		test:  func() { proto.HasExtension(nil, extType) },
-	}, {
-		label: "HasExtension",
-		test:  func() { proto.HasExtension(nilMsg, nil) },
-	}, {
-		label: "HasExtension",
-		test:  func() { proto.HasExtension(nilMsg, extType) },
-	}, {
-		label: "GetExtension",
-		test:  func() { proto.GetExtension(nil, nil) },
-		panic: true,
-	}, {
-		label: "GetExtension",
-		test:  func() { proto.GetExtension(nil, extType) },
-	}, {
-		label: "GetExtension",
-		test:  func() { proto.GetExtension(nilMsg, nil) },
-		panic: true,
-	}, {
-		label: "GetExtension",
-		test:  func() { proto.GetExtension(nilMsg, extType) },
-	}, {
-		label: "SetExtension",
-		test:  func() { proto.SetExtension(nil, nil, true) },
-		panic: true,
-	}, {
-		label: "SetExtension",
-		test:  func() { proto.SetExtension(nil, extType, true) },
-		panic: true,
-	}, {
-		label: "SetExtension",
-		test:  func() { proto.SetExtension(nilMsg, nil, true) },
-		panic: true,
-	}, {
-		label: "SetExtension",
-		test:  func() { proto.SetExtension(nilMsg, extType, true) },
-		panic: true,
-	}, {
-		label: "ClearExtension",
-		test:  func() { proto.ClearExtension(nil, nil) },
-		panic: true,
-	}, {
-		label: "ClearExtension",
-		test:  func() { proto.ClearExtension(nil, extType) },
-		panic: true,
-	}, {
-		label: "ClearExtension",
-		test:  func() { proto.ClearExtension(nilMsg, nil) },
-		panic: true,
-	}, {
-		label: "ClearExtension",
-		test:  func() { proto.ClearExtension(nilMsg, extType) },
-		panic: true,
-	}, {
-		label: "RangeExtensions",
-		test:  func() { proto.RangeExtensions(nil, nil) },
-	}, {
-		label: "RangeExtensions",
-		test:  func() { proto.RangeExtensions(nil, extRanger) },
-	}, {
-		label: "RangeExtensions",
-		test:  func() { proto.RangeExtensions(nilMsg, nil) },
-	}, {
-		label: "RangeExtensions",
-		test:  func() { proto.RangeExtensions(nilMsg, extRanger) },
-	}}
-
-	for _, tt := range tests {
-		t.Run(tt.label, func(t *testing.T) {
-			defer func() {
-				switch gotPanic := recover() != nil; {
-				case gotPanic && !tt.panic:
-					t.Errorf("unexpected panic")
-				case !gotPanic && tt.panic:
-					t.Errorf("expected panic")
-				}
-			}()
-			tt.test()
-		})
-	}
-}
diff --git a/proto/noenforceutf8_test.go b/proto/noenforceutf8_test.go
deleted file mode 100644
index 2bd011e..0000000
--- a/proto/noenforceutf8_test.go
+++ /dev/null
@@ -1,146 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package proto_test
-
-import (
-	"reflect"
-
-	"google.golang.org/protobuf/encoding/prototext"
-	"google.golang.org/protobuf/internal/filedesc"
-	"google.golang.org/protobuf/internal/flags"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protodesc"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/runtime/protoimpl"
-	"google.golang.org/protobuf/testing/protopack"
-
-	"google.golang.org/protobuf/types/descriptorpb"
-)
-
-func init() {
-	if flags.ProtoLegacy {
-		testValidMessages = append(testValidMessages, noEnforceUTF8TestProtos...)
-	} else {
-		testInvalidMessages = append(testInvalidMessages, noEnforceUTF8TestProtos...)
-	}
-}
-
-var noEnforceUTF8TestProtos = []testProto{
-	{
-		desc: "invalid UTF-8 in optional string field",
-		decodeTo: []proto.Message{&TestNoEnforceUTF8{
-			OptionalString: string("abc\xff"),
-		}},
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.BytesType}, protopack.String("abc\xff"),
-		}.Marshal(),
-	},
-	{
-		desc: "invalid UTF-8 in optional string field of Go bytes",
-		decodeTo: []proto.Message{&TestNoEnforceUTF8{
-			OptionalBytes: []byte("abc\xff"),
-		}},
-		wire: protopack.Message{
-			protopack.Tag{2, protopack.BytesType}, protopack.String("abc\xff"),
-		}.Marshal(),
-	},
-	{
-		desc: "invalid UTF-8 in repeated string field",
-		decodeTo: []proto.Message{&TestNoEnforceUTF8{
-			RepeatedString: []string{string("foo"), string("abc\xff")},
-		}},
-		wire: protopack.Message{
-			protopack.Tag{3, protopack.BytesType}, protopack.String("foo"),
-			protopack.Tag{3, protopack.BytesType}, protopack.String("abc\xff"),
-		}.Marshal(),
-	},
-	{
-		desc: "invalid UTF-8 in repeated string field of Go bytes",
-		decodeTo: []proto.Message{&TestNoEnforceUTF8{
-			RepeatedBytes: [][]byte{[]byte("foo"), []byte("abc\xff")},
-		}},
-		wire: protopack.Message{
-			protopack.Tag{4, protopack.BytesType}, protopack.String("foo"),
-			protopack.Tag{4, protopack.BytesType}, protopack.String("abc\xff"),
-		}.Marshal(),
-	},
-	{
-		desc: "invalid UTF-8 in oneof string field",
-		decodeTo: []proto.Message{
-			&TestNoEnforceUTF8{OneofField: &TestNoEnforceUTF8_OneofString{string("abc\xff")}},
-		},
-		wire: protopack.Message{protopack.Tag{5, protopack.BytesType}, protopack.String("abc\xff")}.Marshal(),
-	},
-	{
-		desc: "invalid UTF-8 in oneof string field of Go bytes",
-		decodeTo: []proto.Message{
-			&TestNoEnforceUTF8{OneofField: &TestNoEnforceUTF8_OneofBytes{[]byte("abc\xff")}},
-		},
-		wire: protopack.Message{protopack.Tag{6, protopack.BytesType}, protopack.String("abc\xff")}.Marshal(),
-	},
-}
-
-type TestNoEnforceUTF8 struct {
-	OptionalString string       `protobuf:"bytes,1,opt,name=optional_string"`
-	OptionalBytes  []byte       `protobuf:"bytes,2,opt,name=optional_bytes"`
-	RepeatedString []string     `protobuf:"bytes,3,rep,name=repeated_string"`
-	RepeatedBytes  [][]byte     `protobuf:"bytes,4,rep,name=repeated_bytes"`
-	OneofField     isOneofField `protobuf_oneof:"oneof_field"`
-}
-
-type isOneofField interface{ isOneofField() }
-
-type TestNoEnforceUTF8_OneofString struct {
-	OneofString string `protobuf:"bytes,5,opt,name=oneof_string,oneof"`
-}
-type TestNoEnforceUTF8_OneofBytes struct {
-	OneofBytes []byte `protobuf:"bytes,6,opt,name=oneof_bytes,oneof"`
-}
-
-func (*TestNoEnforceUTF8_OneofString) isOneofField() {}
-func (*TestNoEnforceUTF8_OneofBytes) isOneofField()  {}
-
-func (m *TestNoEnforceUTF8) ProtoReflect() protoreflect.Message {
-	return messageInfo_TestNoEnforceUTF8.MessageOf(m)
-}
-
-var messageInfo_TestNoEnforceUTF8 = protoimpl.MessageInfo{
-	GoReflectType: reflect.TypeOf((*TestNoEnforceUTF8)(nil)),
-	Desc: func() protoreflect.MessageDescriptor {
-		pb := new(descriptorpb.FileDescriptorProto)
-		if err := prototext.Unmarshal([]byte(`
-				syntax:  "proto3"
-				name:    "test.proto"
-				message_type: [{
-					name: "TestNoEnforceUTF8"
-					field: [
-						{name:"optional_string" number:1 label:LABEL_OPTIONAL type:TYPE_STRING},
-						{name:"optional_bytes"  number:2 label:LABEL_OPTIONAL type:TYPE_STRING},
-						{name:"repeated_string" number:3 label:LABEL_REPEATED type:TYPE_STRING},
-						{name:"repeated_bytes"  number:4 label:LABEL_REPEATED type:TYPE_STRING},
-						{name:"oneof_string"    number:5 label:LABEL_OPTIONAL type:TYPE_STRING, oneof_index:0},
-						{name:"oneof_bytes"     number:6 label:LABEL_OPTIONAL type:TYPE_STRING, oneof_index:0}
-					]
-					oneof_decl: [{name:"oneof_field"}]
-				}]
-			`), pb); err != nil {
-			panic(err)
-		}
-		fd, err := protodesc.NewFile(pb, nil)
-		if err != nil {
-			panic(err)
-		}
-		md := fd.Messages().Get(0)
-		for i := 0; i < md.Fields().Len(); i++ {
-			md.Fields().Get(i).(*filedesc.Field).L1.HasEnforceUTF8 = true
-			md.Fields().Get(i).(*filedesc.Field).L1.EnforceUTF8 = false
-		}
-		return md
-	}(),
-	OneofWrappers: []interface{}{
-		(*TestNoEnforceUTF8_OneofString)(nil),
-		(*TestNoEnforceUTF8_OneofBytes)(nil),
-	},
-}
diff --git a/proto/pointer_reflect.go b/proto/pointer_reflect.go
new file mode 100644
index 0000000..94fa919
--- /dev/null
+++ b/proto/pointer_reflect.go
@@ -0,0 +1,360 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2012 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// +build purego appengine js
+
+// This file contains an implementation of proto field accesses using package reflect.
+// It is slower than the code in pointer_unsafe.go but it avoids package unsafe and can
+// be used on App Engine.
+
+package proto
+
+import (
+	"reflect"
+	"sync"
+)
+
+const unsafeAllowed = false
+
+// A field identifies a field in a struct, accessible from a pointer.
+// In this implementation, a field is identified by the sequence of field indices
+// passed to reflect's FieldByIndex.
+type field []int
+
+// toField returns a field equivalent to the given reflect field.
+func toField(f *reflect.StructField) field {
+	return f.Index
+}
+
+// invalidField is an invalid field identifier.
+var invalidField = field(nil)
+
+// zeroField is a noop when calling pointer.offset.
+var zeroField = field([]int{})
+
+// IsValid reports whether the field identifier is valid.
+func (f field) IsValid() bool { return f != nil }
+
+// The pointer type is for the table-driven decoder.
+// The implementation here uses a reflect.Value of pointer type to
+// create a generic pointer. In pointer_unsafe.go we use unsafe
+// instead of reflect to implement the same (but faster) interface.
+type pointer struct {
+	v reflect.Value
+}
+
+// toPointer converts an interface of pointer type to a pointer
+// that points to the same target.
+func toPointer(i *Message) pointer {
+	return pointer{v: reflect.ValueOf(*i)}
+}
+
+// toAddrPointer converts an interface to a pointer that points to
+// the interface data.
+func toAddrPointer(i *interface{}, isptr, deref bool) pointer {
+	v := reflect.ValueOf(*i)
+	u := reflect.New(v.Type())
+	u.Elem().Set(v)
+	if deref {
+		u = u.Elem()
+	}
+	return pointer{v: u}
+}
+
+// valToPointer converts v to a pointer.  v must be of pointer type.
+func valToPointer(v reflect.Value) pointer {
+	return pointer{v: v}
+}
+
+// offset converts from a pointer to a structure to a pointer to
+// one of its fields.
+func (p pointer) offset(f field) pointer {
+	return pointer{v: p.v.Elem().FieldByIndex(f).Addr()}
+}
+
+func (p pointer) isNil() bool {
+	return p.v.IsNil()
+}
+
+// grow updates the slice s in place to make it one element longer.
+// s must be addressable.
+// Returns the (addressable) new element.
+func grow(s reflect.Value) reflect.Value {
+	n, m := s.Len(), s.Cap()
+	if n < m {
+		s.SetLen(n + 1)
+	} else {
+		s.Set(reflect.Append(s, reflect.Zero(s.Type().Elem())))
+	}
+	return s.Index(n)
+}
+
+func (p pointer) toInt64() *int64 {
+	return p.v.Interface().(*int64)
+}
+func (p pointer) toInt64Ptr() **int64 {
+	return p.v.Interface().(**int64)
+}
+func (p pointer) toInt64Slice() *[]int64 {
+	return p.v.Interface().(*[]int64)
+}
+
+var int32ptr = reflect.TypeOf((*int32)(nil))
+
+func (p pointer) toInt32() *int32 {
+	return p.v.Convert(int32ptr).Interface().(*int32)
+}
+
+// The toInt32Ptr/Slice methods don't work because of enums.
+// Instead, we must use set/get methods for the int32ptr/slice case.
+/*
+	func (p pointer) toInt32Ptr() **int32 {
+		return p.v.Interface().(**int32)
+}
+	func (p pointer) toInt32Slice() *[]int32 {
+		return p.v.Interface().(*[]int32)
+}
+*/
+func (p pointer) getInt32Ptr() *int32 {
+	if p.v.Type().Elem().Elem() == reflect.TypeOf(int32(0)) {
+		// raw int32 type
+		return p.v.Elem().Interface().(*int32)
+	}
+	// an enum
+	return p.v.Elem().Convert(int32PtrType).Interface().(*int32)
+}
+func (p pointer) setInt32Ptr(v int32) {
+	// Allocate value in a *int32. Possibly convert that to a *enum.
+	// Then assign it to a **int32 or **enum.
+	// Note: we can convert *int32 to *enum, but we can't convert
+	// **int32 to **enum!
+	p.v.Elem().Set(reflect.ValueOf(&v).Convert(p.v.Type().Elem()))
+}
+
+// getInt32Slice copies []int32 from p as a new slice.
+// This behavior differs from the implementation in pointer_unsafe.go.
+func (p pointer) getInt32Slice() []int32 {
+	if p.v.Type().Elem().Elem() == reflect.TypeOf(int32(0)) {
+		// raw int32 type
+		return p.v.Elem().Interface().([]int32)
+	}
+	// an enum
+	// Allocate a []int32, then assign []enum's values into it.
+	// Note: we can't convert []enum to []int32.
+	slice := p.v.Elem()
+	s := make([]int32, slice.Len())
+	for i := 0; i < slice.Len(); i++ {
+		s[i] = int32(slice.Index(i).Int())
+	}
+	return s
+}
+
+// setInt32Slice copies []int32 into p as a new slice.
+// This behavior differs from the implementation in pointer_unsafe.go.
+func (p pointer) setInt32Slice(v []int32) {
+	if p.v.Type().Elem().Elem() == reflect.TypeOf(int32(0)) {
+		// raw int32 type
+		p.v.Elem().Set(reflect.ValueOf(v))
+		return
+	}
+	// an enum
+	// Allocate a []enum, then assign []int32's values into it.
+	// Note: we can't convert []enum to []int32.
+	slice := reflect.MakeSlice(p.v.Type().Elem(), len(v), cap(v))
+	for i, x := range v {
+		slice.Index(i).SetInt(int64(x))
+	}
+	p.v.Elem().Set(slice)
+}
+func (p pointer) appendInt32Slice(v int32) {
+	grow(p.v.Elem()).SetInt(int64(v))
+}
+
+func (p pointer) toUint64() *uint64 {
+	return p.v.Interface().(*uint64)
+}
+func (p pointer) toUint64Ptr() **uint64 {
+	return p.v.Interface().(**uint64)
+}
+func (p pointer) toUint64Slice() *[]uint64 {
+	return p.v.Interface().(*[]uint64)
+}
+func (p pointer) toUint32() *uint32 {
+	return p.v.Interface().(*uint32)
+}
+func (p pointer) toUint32Ptr() **uint32 {
+	return p.v.Interface().(**uint32)
+}
+func (p pointer) toUint32Slice() *[]uint32 {
+	return p.v.Interface().(*[]uint32)
+}
+func (p pointer) toBool() *bool {
+	return p.v.Interface().(*bool)
+}
+func (p pointer) toBoolPtr() **bool {
+	return p.v.Interface().(**bool)
+}
+func (p pointer) toBoolSlice() *[]bool {
+	return p.v.Interface().(*[]bool)
+}
+func (p pointer) toFloat64() *float64 {
+	return p.v.Interface().(*float64)
+}
+func (p pointer) toFloat64Ptr() **float64 {
+	return p.v.Interface().(**float64)
+}
+func (p pointer) toFloat64Slice() *[]float64 {
+	return p.v.Interface().(*[]float64)
+}
+func (p pointer) toFloat32() *float32 {
+	return p.v.Interface().(*float32)
+}
+func (p pointer) toFloat32Ptr() **float32 {
+	return p.v.Interface().(**float32)
+}
+func (p pointer) toFloat32Slice() *[]float32 {
+	return p.v.Interface().(*[]float32)
+}
+func (p pointer) toString() *string {
+	return p.v.Interface().(*string)
+}
+func (p pointer) toStringPtr() **string {
+	return p.v.Interface().(**string)
+}
+func (p pointer) toStringSlice() *[]string {
+	return p.v.Interface().(*[]string)
+}
+func (p pointer) toBytes() *[]byte {
+	return p.v.Interface().(*[]byte)
+}
+func (p pointer) toBytesSlice() *[][]byte {
+	return p.v.Interface().(*[][]byte)
+}
+func (p pointer) toExtensions() *XXX_InternalExtensions {
+	return p.v.Interface().(*XXX_InternalExtensions)
+}
+func (p pointer) toOldExtensions() *map[int32]Extension {
+	return p.v.Interface().(*map[int32]Extension)
+}
+func (p pointer) getPointer() pointer {
+	return pointer{v: p.v.Elem()}
+}
+func (p pointer) setPointer(q pointer) {
+	p.v.Elem().Set(q.v)
+}
+func (p pointer) appendPointer(q pointer) {
+	grow(p.v.Elem()).Set(q.v)
+}
+
+// getPointerSlice copies []*T from p as a new []pointer.
+// This behavior differs from the implementation in pointer_unsafe.go.
+func (p pointer) getPointerSlice() []pointer {
+	if p.v.IsNil() {
+		return nil
+	}
+	n := p.v.Elem().Len()
+	s := make([]pointer, n)
+	for i := 0; i < n; i++ {
+		s[i] = pointer{v: p.v.Elem().Index(i)}
+	}
+	return s
+}
+
+// setPointerSlice copies []pointer into p as a new []*T.
+// This behavior differs from the implementation in pointer_unsafe.go.
+func (p pointer) setPointerSlice(v []pointer) {
+	if v == nil {
+		p.v.Elem().Set(reflect.New(p.v.Elem().Type()).Elem())
+		return
+	}
+	s := reflect.MakeSlice(p.v.Elem().Type(), 0, len(v))
+	for _, p := range v {
+		s = reflect.Append(s, p.v)
+	}
+	p.v.Elem().Set(s)
+}
+
+// getInterfacePointer returns a pointer that points to the
+// interface data of the interface pointed by p.
+func (p pointer) getInterfacePointer() pointer {
+	if p.v.Elem().IsNil() {
+		return pointer{v: p.v.Elem()}
+	}
+	return pointer{v: p.v.Elem().Elem().Elem().Field(0).Addr()} // *interface -> interface -> *struct -> struct
+}
+
+func (p pointer) asPointerTo(t reflect.Type) reflect.Value {
+	// TODO: check that p.v.Type().Elem() == t?
+	return p.v
+}
+
+func atomicLoadUnmarshalInfo(p **unmarshalInfo) *unmarshalInfo {
+	atomicLock.Lock()
+	defer atomicLock.Unlock()
+	return *p
+}
+func atomicStoreUnmarshalInfo(p **unmarshalInfo, v *unmarshalInfo) {
+	atomicLock.Lock()
+	defer atomicLock.Unlock()
+	*p = v
+}
+func atomicLoadMarshalInfo(p **marshalInfo) *marshalInfo {
+	atomicLock.Lock()
+	defer atomicLock.Unlock()
+	return *p
+}
+func atomicStoreMarshalInfo(p **marshalInfo, v *marshalInfo) {
+	atomicLock.Lock()
+	defer atomicLock.Unlock()
+	*p = v
+}
+func atomicLoadMergeInfo(p **mergeInfo) *mergeInfo {
+	atomicLock.Lock()
+	defer atomicLock.Unlock()
+	return *p
+}
+func atomicStoreMergeInfo(p **mergeInfo, v *mergeInfo) {
+	atomicLock.Lock()
+	defer atomicLock.Unlock()
+	*p = v
+}
+func atomicLoadDiscardInfo(p **discardInfo) *discardInfo {
+	atomicLock.Lock()
+	defer atomicLock.Unlock()
+	return *p
+}
+func atomicStoreDiscardInfo(p **discardInfo, v *discardInfo) {
+	atomicLock.Lock()
+	defer atomicLock.Unlock()
+	*p = v
+}
+
+var atomicLock sync.Mutex
diff --git a/proto/pointer_unsafe.go b/proto/pointer_unsafe.go
new file mode 100644
index 0000000..dbfffe0
--- /dev/null
+++ b/proto/pointer_unsafe.go
@@ -0,0 +1,313 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2012 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// +build !purego,!appengine,!js
+
+// This file contains the implementation of the proto field accesses using package unsafe.
+
+package proto
+
+import (
+	"reflect"
+	"sync/atomic"
+	"unsafe"
+)
+
+const unsafeAllowed = true
+
+// A field identifies a field in a struct, accessible from a pointer.
+// In this implementation, a field is identified by its byte offset from the start of the struct.
+type field uintptr
+
+// toField returns a field equivalent to the given reflect field.
+func toField(f *reflect.StructField) field {
+	return field(f.Offset)
+}
+
+// invalidField is an invalid field identifier.
+const invalidField = ^field(0)
+
+// zeroField is a noop when calling pointer.offset.
+const zeroField = field(0)
+
+// IsValid reports whether the field identifier is valid.
+func (f field) IsValid() bool {
+	return f != invalidField
+}
+
+// The pointer type below is for the new table-driven encoder/decoder.
+// The implementation here uses unsafe.Pointer to create a generic pointer.
+// In pointer_reflect.go we use reflect instead of unsafe to implement
+// the same (but slower) interface.
+type pointer struct {
+	p unsafe.Pointer
+}
+
+// size of pointer
+var ptrSize = unsafe.Sizeof(uintptr(0))
+
+// toPointer converts an interface of pointer type to a pointer
+// that points to the same target.
+func toPointer(i *Message) pointer {
+	// Super-tricky - read pointer out of data word of interface value.
+	// Saves ~25ns over the equivalent:
+	// return valToPointer(reflect.ValueOf(*i))
+	return pointer{p: (*[2]unsafe.Pointer)(unsafe.Pointer(i))[1]}
+}
+
+// toAddrPointer converts an interface to a pointer that points to
+// the interface data.
+func toAddrPointer(i *interface{}, isptr, deref bool) (p pointer) {
+	// Super-tricky - read or get the address of data word of interface value.
+	if isptr {
+		// The interface is of pointer type, thus it is a direct interface.
+		// The data word is the pointer data itself. We take its address.
+		p = pointer{p: unsafe.Pointer(uintptr(unsafe.Pointer(i)) + ptrSize)}
+	} else {
+		// The interface is not of pointer type. The data word is the pointer
+		// to the data.
+		p = pointer{p: (*[2]unsafe.Pointer)(unsafe.Pointer(i))[1]}
+	}
+	if deref {
+		p.p = *(*unsafe.Pointer)(p.p)
+	}
+	return p
+}
+
+// valToPointer converts v to a pointer. v must be of pointer type.
+func valToPointer(v reflect.Value) pointer {
+	return pointer{p: unsafe.Pointer(v.Pointer())}
+}
+
+// offset converts from a pointer to a structure to a pointer to
+// one of its fields.
+func (p pointer) offset(f field) pointer {
+	// For safety, we should panic if !f.IsValid, however calling panic causes
+	// this to no longer be inlineable, which is a serious performance cost.
+	/*
+		if !f.IsValid() {
+			panic("invalid field")
+		}
+	*/
+	return pointer{p: unsafe.Pointer(uintptr(p.p) + uintptr(f))}
+}
+
+func (p pointer) isNil() bool {
+	return p.p == nil
+}
+
+func (p pointer) toInt64() *int64 {
+	return (*int64)(p.p)
+}
+func (p pointer) toInt64Ptr() **int64 {
+	return (**int64)(p.p)
+}
+func (p pointer) toInt64Slice() *[]int64 {
+	return (*[]int64)(p.p)
+}
+func (p pointer) toInt32() *int32 {
+	return (*int32)(p.p)
+}
+
+// See pointer_reflect.go for why toInt32Ptr/Slice doesn't exist.
+/*
+	func (p pointer) toInt32Ptr() **int32 {
+		return (**int32)(p.p)
+	}
+	func (p pointer) toInt32Slice() *[]int32 {
+		return (*[]int32)(p.p)
+	}
+*/
+func (p pointer) getInt32Ptr() *int32 {
+	return *(**int32)(p.p)
+}
+func (p pointer) setInt32Ptr(v int32) {
+	*(**int32)(p.p) = &v
+}
+
+// getInt32Slice loads a []int32 from p.
+// The value returned is aliased with the original slice.
+// This behavior differs from the implementation in pointer_reflect.go.
+func (p pointer) getInt32Slice() []int32 {
+	return *(*[]int32)(p.p)
+}
+
+// setInt32Slice stores a []int32 to p.
+// The value set is aliased with the input slice.
+// This behavior differs from the implementation in pointer_reflect.go.
+func (p pointer) setInt32Slice(v []int32) {
+	*(*[]int32)(p.p) = v
+}
+
+// TODO: Can we get rid of appendInt32Slice and use setInt32Slice instead?
+func (p pointer) appendInt32Slice(v int32) {
+	s := (*[]int32)(p.p)
+	*s = append(*s, v)
+}
+
+func (p pointer) toUint64() *uint64 {
+	return (*uint64)(p.p)
+}
+func (p pointer) toUint64Ptr() **uint64 {
+	return (**uint64)(p.p)
+}
+func (p pointer) toUint64Slice() *[]uint64 {
+	return (*[]uint64)(p.p)
+}
+func (p pointer) toUint32() *uint32 {
+	return (*uint32)(p.p)
+}
+func (p pointer) toUint32Ptr() **uint32 {
+	return (**uint32)(p.p)
+}
+func (p pointer) toUint32Slice() *[]uint32 {
+	return (*[]uint32)(p.p)
+}
+func (p pointer) toBool() *bool {
+	return (*bool)(p.p)
+}
+func (p pointer) toBoolPtr() **bool {
+	return (**bool)(p.p)
+}
+func (p pointer) toBoolSlice() *[]bool {
+	return (*[]bool)(p.p)
+}
+func (p pointer) toFloat64() *float64 {
+	return (*float64)(p.p)
+}
+func (p pointer) toFloat64Ptr() **float64 {
+	return (**float64)(p.p)
+}
+func (p pointer) toFloat64Slice() *[]float64 {
+	return (*[]float64)(p.p)
+}
+func (p pointer) toFloat32() *float32 {
+	return (*float32)(p.p)
+}
+func (p pointer) toFloat32Ptr() **float32 {
+	return (**float32)(p.p)
+}
+func (p pointer) toFloat32Slice() *[]float32 {
+	return (*[]float32)(p.p)
+}
+func (p pointer) toString() *string {
+	return (*string)(p.p)
+}
+func (p pointer) toStringPtr() **string {
+	return (**string)(p.p)
+}
+func (p pointer) toStringSlice() *[]string {
+	return (*[]string)(p.p)
+}
+func (p pointer) toBytes() *[]byte {
+	return (*[]byte)(p.p)
+}
+func (p pointer) toBytesSlice() *[][]byte {
+	return (*[][]byte)(p.p)
+}
+func (p pointer) toExtensions() *XXX_InternalExtensions {
+	return (*XXX_InternalExtensions)(p.p)
+}
+func (p pointer) toOldExtensions() *map[int32]Extension {
+	return (*map[int32]Extension)(p.p)
+}
+
+// getPointerSlice loads []*T from p as a []pointer.
+// The value returned is aliased with the original slice.
+// This behavior differs from the implementation in pointer_reflect.go.
+func (p pointer) getPointerSlice() []pointer {
+	// Super-tricky - p should point to a []*T where T is a
+	// message type. We load it as []pointer.
+	return *(*[]pointer)(p.p)
+}
+
+// setPointerSlice stores []pointer into p as a []*T.
+// The value set is aliased with the input slice.
+// This behavior differs from the implementation in pointer_reflect.go.
+func (p pointer) setPointerSlice(v []pointer) {
+	// Super-tricky - p should point to a []*T where T is a
+	// message type. We store it as []pointer.
+	*(*[]pointer)(p.p) = v
+}
+
+// getPointer loads the pointer at p and returns it.
+func (p pointer) getPointer() pointer {
+	return pointer{p: *(*unsafe.Pointer)(p.p)}
+}
+
+// setPointer stores the pointer q at p.
+func (p pointer) setPointer(q pointer) {
+	*(*unsafe.Pointer)(p.p) = q.p
+}
+
+// append q to the slice pointed to by p.
+func (p pointer) appendPointer(q pointer) {
+	s := (*[]unsafe.Pointer)(p.p)
+	*s = append(*s, q.p)
+}
+
+// getInterfacePointer returns a pointer that points to the
+// interface data of the interface pointed by p.
+func (p pointer) getInterfacePointer() pointer {
+	// Super-tricky - read pointer out of data word of interface value.
+	return pointer{p: (*(*[2]unsafe.Pointer)(p.p))[1]}
+}
+
+// asPointerTo returns a reflect.Value that is a pointer to an
+// object of type t stored at p.
+func (p pointer) asPointerTo(t reflect.Type) reflect.Value {
+	return reflect.NewAt(t, p.p)
+}
+
+func atomicLoadUnmarshalInfo(p **unmarshalInfo) *unmarshalInfo {
+	return (*unmarshalInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p))))
+}
+func atomicStoreUnmarshalInfo(p **unmarshalInfo, v *unmarshalInfo) {
+	atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v))
+}
+func atomicLoadMarshalInfo(p **marshalInfo) *marshalInfo {
+	return (*marshalInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p))))
+}
+func atomicStoreMarshalInfo(p **marshalInfo, v *marshalInfo) {
+	atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v))
+}
+func atomicLoadMergeInfo(p **mergeInfo) *mergeInfo {
+	return (*mergeInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p))))
+}
+func atomicStoreMergeInfo(p **mergeInfo, v *mergeInfo) {
+	atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v))
+}
+func atomicLoadDiscardInfo(p **discardInfo) *discardInfo {
+	return (*discardInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(p))))
+}
+func atomicStoreDiscardInfo(p **discardInfo, v *discardInfo) {
+	atomic.StorePointer((*unsafe.Pointer)(unsafe.Pointer(p)), unsafe.Pointer(v))
+}
diff --git a/proto/properties.go b/proto/properties.go
new file mode 100644
index 0000000..a4b8c0c
--- /dev/null
+++ b/proto/properties.go
@@ -0,0 +1,544 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto
+
+/*
+ * Routines for encoding data into the wire format for protocol buffers.
+ */
+
+import (
+	"fmt"
+	"log"
+	"reflect"
+	"sort"
+	"strconv"
+	"strings"
+	"sync"
+)
+
+const debug bool = false
+
+// Constants that identify the encoding of a value on the wire.
+const (
+	WireVarint     = 0
+	WireFixed64    = 1
+	WireBytes      = 2
+	WireStartGroup = 3
+	WireEndGroup   = 4
+	WireFixed32    = 5
+)
+
+// tagMap is an optimization over map[int]int for typical protocol buffer
+// use-cases. Encoded protocol buffers are often in tag order with small tag
+// numbers.
+type tagMap struct {
+	fastTags []int
+	slowTags map[int]int
+}
+
+// tagMapFastLimit is the upper bound on the tag number that will be stored in
+// the tagMap slice rather than its map.
+const tagMapFastLimit = 1024
+
+func (p *tagMap) get(t int) (int, bool) {
+	if t > 0 && t < tagMapFastLimit {
+		if t >= len(p.fastTags) {
+			return 0, false
+		}
+		fi := p.fastTags[t]
+		return fi, fi >= 0
+	}
+	fi, ok := p.slowTags[t]
+	return fi, ok
+}
+
+func (p *tagMap) put(t int, fi int) {
+	if t > 0 && t < tagMapFastLimit {
+		for len(p.fastTags) < t+1 {
+			p.fastTags = append(p.fastTags, -1)
+		}
+		p.fastTags[t] = fi
+		return
+	}
+	if p.slowTags == nil {
+		p.slowTags = make(map[int]int)
+	}
+	p.slowTags[t] = fi
+}
+
+// StructProperties represents properties for all the fields of a struct.
+// decoderTags and decoderOrigNames should only be used by the decoder.
+type StructProperties struct {
+	Prop             []*Properties  // properties for each field
+	reqCount         int            // required count
+	decoderTags      tagMap         // map from proto tag to struct field number
+	decoderOrigNames map[string]int // map from original name to struct field number
+	order            []int          // list of struct field numbers in tag order
+
+	// OneofTypes contains information about the oneof fields in this message.
+	// It is keyed by the original name of a field.
+	OneofTypes map[string]*OneofProperties
+}
+
+// OneofProperties represents information about a specific field in a oneof.
+type OneofProperties struct {
+	Type  reflect.Type // pointer to generated struct type for this oneof field
+	Field int          // struct field number of the containing oneof in the message
+	Prop  *Properties
+}
+
+// Implement the sorting interface so we can sort the fields in tag order, as recommended by the spec.
+// See encode.go, (*Buffer).enc_struct.
+
+func (sp *StructProperties) Len() int { return len(sp.order) }
+func (sp *StructProperties) Less(i, j int) bool {
+	return sp.Prop[sp.order[i]].Tag < sp.Prop[sp.order[j]].Tag
+}
+func (sp *StructProperties) Swap(i, j int) { sp.order[i], sp.order[j] = sp.order[j], sp.order[i] }
+
+// Properties represents the protocol-specific behavior of a single struct field.
+type Properties struct {
+	Name     string // name of the field, for error messages
+	OrigName string // original name before protocol compiler (always set)
+	JSONName string // name to use for JSON; determined by protoc
+	Wire     string
+	WireType int
+	Tag      int
+	Required bool
+	Optional bool
+	Repeated bool
+	Packed   bool   // relevant for repeated primitives only
+	Enum     string // set for enum types only
+	proto3   bool   // whether this is known to be a proto3 field
+	oneof    bool   // whether this is a oneof field
+
+	Default    string // default value
+	HasDefault bool   // whether an explicit default was provided
+
+	stype reflect.Type      // set for struct types only
+	sprop *StructProperties // set for struct types only
+
+	mtype      reflect.Type // set for map types only
+	MapKeyProp *Properties  // set for map types only
+	MapValProp *Properties  // set for map types only
+}
+
+// String formats the properties in the protobuf struct field tag style.
+func (p *Properties) String() string {
+	s := p.Wire
+	s += ","
+	s += strconv.Itoa(p.Tag)
+	if p.Required {
+		s += ",req"
+	}
+	if p.Optional {
+		s += ",opt"
+	}
+	if p.Repeated {
+		s += ",rep"
+	}
+	if p.Packed {
+		s += ",packed"
+	}
+	s += ",name=" + p.OrigName
+	if p.JSONName != p.OrigName {
+		s += ",json=" + p.JSONName
+	}
+	if p.proto3 {
+		s += ",proto3"
+	}
+	if p.oneof {
+		s += ",oneof"
+	}
+	if len(p.Enum) > 0 {
+		s += ",enum=" + p.Enum
+	}
+	if p.HasDefault {
+		s += ",def=" + p.Default
+	}
+	return s
+}
+
+// Parse populates p by parsing a string in the protobuf struct field tag style.
+func (p *Properties) Parse(s string) {
+	// "bytes,49,opt,name=foo,def=hello!"
+	fields := strings.Split(s, ",") // breaks def=, but handled below.
+	if len(fields) < 2 {
+		log.Printf("proto: tag has too few fields: %q", s)
+		return
+	}
+
+	p.Wire = fields[0]
+	switch p.Wire {
+	case "varint":
+		p.WireType = WireVarint
+	case "fixed32":
+		p.WireType = WireFixed32
+	case "fixed64":
+		p.WireType = WireFixed64
+	case "zigzag32":
+		p.WireType = WireVarint
+	case "zigzag64":
+		p.WireType = WireVarint
+	case "bytes", "group":
+		p.WireType = WireBytes
+		// no numeric converter for non-numeric types
+	default:
+		log.Printf("proto: tag has unknown wire type: %q", s)
+		return
+	}
+
+	var err error
+	p.Tag, err = strconv.Atoi(fields[1])
+	if err != nil {
+		return
+	}
+
+outer:
+	for i := 2; i < len(fields); i++ {
+		f := fields[i]
+		switch {
+		case f == "req":
+			p.Required = true
+		case f == "opt":
+			p.Optional = true
+		case f == "rep":
+			p.Repeated = true
+		case f == "packed":
+			p.Packed = true
+		case strings.HasPrefix(f, "name="):
+			p.OrigName = f[5:]
+		case strings.HasPrefix(f, "json="):
+			p.JSONName = f[5:]
+		case strings.HasPrefix(f, "enum="):
+			p.Enum = f[5:]
+		case f == "proto3":
+			p.proto3 = true
+		case f == "oneof":
+			p.oneof = true
+		case strings.HasPrefix(f, "def="):
+			p.HasDefault = true
+			p.Default = f[4:] // rest of string
+			if i+1 < len(fields) {
+				// Commas aren't escaped, and def is always last.
+				p.Default += "," + strings.Join(fields[i+1:], ",")
+				break outer
+			}
+		}
+	}
+}
+
+var protoMessageType = reflect.TypeOf((*Message)(nil)).Elem()
+
+// setFieldProps initializes the field properties for submessages and maps.
+func (p *Properties) setFieldProps(typ reflect.Type, f *reflect.StructField, lockGetProp bool) {
+	switch t1 := typ; t1.Kind() {
+	case reflect.Ptr:
+		if t1.Elem().Kind() == reflect.Struct {
+			p.stype = t1.Elem()
+		}
+
+	case reflect.Slice:
+		if t2 := t1.Elem(); t2.Kind() == reflect.Ptr && t2.Elem().Kind() == reflect.Struct {
+			p.stype = t2.Elem()
+		}
+
+	case reflect.Map:
+		p.mtype = t1
+		p.MapKeyProp = &Properties{}
+		p.MapKeyProp.init(reflect.PtrTo(p.mtype.Key()), "Key", f.Tag.Get("protobuf_key"), nil, lockGetProp)
+		p.MapValProp = &Properties{}
+		vtype := p.mtype.Elem()
+		if vtype.Kind() != reflect.Ptr && vtype.Kind() != reflect.Slice {
+			// The value type is not a message (*T) or bytes ([]byte),
+			// so we need encoders for the pointer to this type.
+			vtype = reflect.PtrTo(vtype)
+		}
+		p.MapValProp.init(vtype, "Value", f.Tag.Get("protobuf_val"), nil, lockGetProp)
+	}
+
+	if p.stype != nil {
+		if lockGetProp {
+			p.sprop = GetProperties(p.stype)
+		} else {
+			p.sprop = getPropertiesLocked(p.stype)
+		}
+	}
+}
+
+var (
+	marshalerType = reflect.TypeOf((*Marshaler)(nil)).Elem()
+)
+
+// Init populates the properties from a protocol buffer struct tag.
+func (p *Properties) Init(typ reflect.Type, name, tag string, f *reflect.StructField) {
+	p.init(typ, name, tag, f, true)
+}
+
+func (p *Properties) init(typ reflect.Type, name, tag string, f *reflect.StructField, lockGetProp bool) {
+	// "bytes,49,opt,def=hello!"
+	p.Name = name
+	p.OrigName = name
+	if tag == "" {
+		return
+	}
+	p.Parse(tag)
+	p.setFieldProps(typ, f, lockGetProp)
+}
+
+var (
+	propertiesMu  sync.RWMutex
+	propertiesMap = make(map[reflect.Type]*StructProperties)
+)
+
+// GetProperties returns the list of properties for the type represented by t.
+// t must represent a generated struct type of a protocol message.
+func GetProperties(t reflect.Type) *StructProperties {
+	if t.Kind() != reflect.Struct {
+		panic("proto: type must have kind struct")
+	}
+
+	// Most calls to GetProperties in a long-running program will be
+	// retrieving details for types we have seen before.
+	propertiesMu.RLock()
+	sprop, ok := propertiesMap[t]
+	propertiesMu.RUnlock()
+	if ok {
+		return sprop
+	}
+
+	propertiesMu.Lock()
+	sprop = getPropertiesLocked(t)
+	propertiesMu.Unlock()
+	return sprop
+}
+
+type (
+	oneofFuncsIface interface {
+		XXX_OneofFuncs() (func(Message, *Buffer) error, func(Message, int, int, *Buffer) (bool, error), func(Message) int, []interface{})
+	}
+	oneofWrappersIface interface {
+		XXX_OneofWrappers() []interface{}
+	}
+)
+
+// getPropertiesLocked requires that propertiesMu is held.
+func getPropertiesLocked(t reflect.Type) *StructProperties {
+	if prop, ok := propertiesMap[t]; ok {
+		return prop
+	}
+
+	prop := new(StructProperties)
+	// in case of recursive protos, fill this in now.
+	propertiesMap[t] = prop
+
+	// build properties
+	prop.Prop = make([]*Properties, t.NumField())
+	prop.order = make([]int, t.NumField())
+
+	for i := 0; i < t.NumField(); i++ {
+		f := t.Field(i)
+		p := new(Properties)
+		name := f.Name
+		p.init(f.Type, name, f.Tag.Get("protobuf"), &f, false)
+
+		oneof := f.Tag.Get("protobuf_oneof") // special case
+		if oneof != "" {
+			// Oneof fields don't use the traditional protobuf tag.
+			p.OrigName = oneof
+		}
+		prop.Prop[i] = p
+		prop.order[i] = i
+		if debug {
+			print(i, " ", f.Name, " ", t.String(), " ")
+			if p.Tag > 0 {
+				print(p.String())
+			}
+			print("\n")
+		}
+	}
+
+	// Re-order prop.order.
+	sort.Sort(prop)
+
+	var oots []interface{}
+	switch m := reflect.Zero(reflect.PtrTo(t)).Interface().(type) {
+	case oneofFuncsIface:
+		_, _, _, oots = m.XXX_OneofFuncs()
+	case oneofWrappersIface:
+		oots = m.XXX_OneofWrappers()
+	}
+	if len(oots) > 0 {
+		// Interpret oneof metadata.
+		prop.OneofTypes = make(map[string]*OneofProperties)
+		for _, oot := range oots {
+			oop := &OneofProperties{
+				Type: reflect.ValueOf(oot).Type(), // *T
+				Prop: new(Properties),
+			}
+			sft := oop.Type.Elem().Field(0)
+			oop.Prop.Name = sft.Name
+			oop.Prop.Parse(sft.Tag.Get("protobuf"))
+			// There will be exactly one interface field that
+			// this new value is assignable to.
+			for i := 0; i < t.NumField(); i++ {
+				f := t.Field(i)
+				if f.Type.Kind() != reflect.Interface {
+					continue
+				}
+				if !oop.Type.AssignableTo(f.Type) {
+					continue
+				}
+				oop.Field = i
+				break
+			}
+			prop.OneofTypes[oop.Prop.OrigName] = oop
+		}
+	}
+
+	// build required counts
+	// build tags
+	reqCount := 0
+	prop.decoderOrigNames = make(map[string]int)
+	for i, p := range prop.Prop {
+		if strings.HasPrefix(p.Name, "XXX_") {
+			// Internal fields should not appear in tags/origNames maps.
+			// They are handled specially when encoding and decoding.
+			continue
+		}
+		if p.Required {
+			reqCount++
+		}
+		prop.decoderTags.put(p.Tag, i)
+		prop.decoderOrigNames[p.OrigName] = i
+	}
+	prop.reqCount = reqCount
+
+	return prop
+}
+
+// A global registry of enum types.
+// The generated code will register the generated maps by calling RegisterEnum.
+
+var enumValueMaps = make(map[string]map[string]int32)
+
+// RegisterEnum is called from the generated code to install the enum descriptor
+// maps into the global table to aid parsing text format protocol buffers.
+func RegisterEnum(typeName string, unusedNameMap map[int32]string, valueMap map[string]int32) {
+	if _, ok := enumValueMaps[typeName]; ok {
+		panic("proto: duplicate enum registered: " + typeName)
+	}
+	enumValueMaps[typeName] = valueMap
+}
+
+// EnumValueMap returns the mapping from names to integers of the
+// enum type enumType, or a nil if not found.
+func EnumValueMap(enumType string) map[string]int32 {
+	return enumValueMaps[enumType]
+}
+
+// A registry of all linked message types.
+// The string is a fully-qualified proto name ("pkg.Message").
+var (
+	protoTypedNils = make(map[string]Message)      // a map from proto names to typed nil pointers
+	protoMapTypes  = make(map[string]reflect.Type) // a map from proto names to map types
+	revProtoTypes  = make(map[reflect.Type]string)
+)
+
+// RegisterType is called from generated code and maps from the fully qualified
+// proto name to the type (pointer to struct) of the protocol buffer.
+func RegisterType(x Message, name string) {
+	if _, ok := protoTypedNils[name]; ok {
+		// TODO: Some day, make this a panic.
+		log.Printf("proto: duplicate proto type registered: %s", name)
+		return
+	}
+	t := reflect.TypeOf(x)
+	if v := reflect.ValueOf(x); v.Kind() == reflect.Ptr && v.Pointer() == 0 {
+		// Generated code always calls RegisterType with nil x.
+		// This check is just for extra safety.
+		protoTypedNils[name] = x
+	} else {
+		protoTypedNils[name] = reflect.Zero(t).Interface().(Message)
+	}
+	revProtoTypes[t] = name
+}
+
+// RegisterMapType is called from generated code and maps from the fully qualified
+// proto name to the native map type of the proto map definition.
+func RegisterMapType(x interface{}, name string) {
+	if reflect.TypeOf(x).Kind() != reflect.Map {
+		panic(fmt.Sprintf("RegisterMapType(%T, %q); want map", x, name))
+	}
+	if _, ok := protoMapTypes[name]; ok {
+		log.Printf("proto: duplicate proto type registered: %s", name)
+		return
+	}
+	t := reflect.TypeOf(x)
+	protoMapTypes[name] = t
+	revProtoTypes[t] = name
+}
+
+// MessageName returns the fully-qualified proto name for the given message type.
+func MessageName(x Message) string {
+	type xname interface {
+		XXX_MessageName() string
+	}
+	if m, ok := x.(xname); ok {
+		return m.XXX_MessageName()
+	}
+	return revProtoTypes[reflect.TypeOf(x)]
+}
+
+// MessageType returns the message type (pointer to struct) for a named message.
+// The type is not guaranteed to implement proto.Message if the name refers to a
+// map entry.
+func MessageType(name string) reflect.Type {
+	if t, ok := protoTypedNils[name]; ok {
+		return reflect.TypeOf(t)
+	}
+	return protoMapTypes[name]
+}
+
+// A registry of all linked proto files.
+var (
+	protoFiles = make(map[string][]byte) // file name => fileDescriptor
+)
+
+// RegisterFile is called from generated code and maps from the
+// full file name of a .proto file to its compressed FileDescriptorProto.
+func RegisterFile(filename string, fileDescriptor []byte) {
+	protoFiles[filename] = fileDescriptor
+}
+
+// FileDescriptor returns the compressed FileDescriptorProto for a .proto file.
+func FileDescriptor(filename string) []byte { return protoFiles[filename] }
diff --git a/proto/proto.go b/proto/proto.go
deleted file mode 100644
index 1f0d183..0000000
--- a/proto/proto.go
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package proto
-
-import (
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/reflect/protoreflect"
-)
-
-// Message is the top-level interface that all messages must implement.
-// It provides access to a reflective view of a message.
-// Any implementation of this interface may be used with all functions in the
-// protobuf module that accept a Message, except where otherwise specified.
-//
-// This is the v2 interface definition for protobuf messages.
-// The v1 interface definition is "github.com/golang/protobuf/proto".Message.
-//
-// To convert a v1 message to a v2 message,
-// use "github.com/golang/protobuf/proto".MessageV2.
-// To convert a v2 message to a v1 message,
-// use "github.com/golang/protobuf/proto".MessageV1.
-type Message = protoreflect.ProtoMessage
-
-// Error matches all errors produced by packages in the protobuf module.
-//
-// That is, errors.Is(err, Error) reports whether an error is produced
-// by this module.
-var Error error
-
-func init() {
-	Error = errors.Error
-}
-
-// MessageName returns the full name of m.
-// If m is nil, it returns an empty string.
-func MessageName(m Message) protoreflect.FullName {
-	if m == nil {
-		return ""
-	}
-	return m.ProtoReflect().Descriptor().FullName()
-}
diff --git a/proto/proto3_proto/proto3.pb.go b/proto/proto3_proto/proto3.pb.go
new file mode 100644
index 0000000..6c7b6c9
--- /dev/null
+++ b/proto/proto3_proto/proto3.pb.go
@@ -0,0 +1,579 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: proto3_proto/proto3.proto
+
+package proto3_proto
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	test_proto "github.com/golang/protobuf/proto/test_proto"
+	any "github.com/golang/protobuf/ptypes/any"
+	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
+
+type Message_Humour int32
+
+const (
+	Message_UNKNOWN     Message_Humour = 0
+	Message_PUNS        Message_Humour = 1
+	Message_SLAPSTICK   Message_Humour = 2
+	Message_BILL_BAILEY Message_Humour = 3
+)
+
+var Message_Humour_name = map[int32]string{
+	0: "UNKNOWN",
+	1: "PUNS",
+	2: "SLAPSTICK",
+	3: "BILL_BAILEY",
+}
+
+var Message_Humour_value = map[string]int32{
+	"UNKNOWN":     0,
+	"PUNS":        1,
+	"SLAPSTICK":   2,
+	"BILL_BAILEY": 3,
+}
+
+func (x Message_Humour) String() string {
+	return proto.EnumName(Message_Humour_name, int32(x))
+}
+
+func (Message_Humour) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_1c50d9b824d4ac38, []int{0, 0}
+}
+
+type Message struct {
+	Name                 string                             `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Hilarity             Message_Humour                     `protobuf:"varint,2,opt,name=hilarity,proto3,enum=proto3_proto.Message_Humour" json:"hilarity,omitempty"`
+	HeightInCm           uint32                             `protobuf:"varint,3,opt,name=height_in_cm,json=heightInCm,proto3" json:"height_in_cm,omitempty"`
+	Data                 []byte                             `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
+	ResultCount          int64                              `protobuf:"varint,7,opt,name=result_count,json=resultCount,proto3" json:"result_count,omitempty"`
+	TrueScotsman         bool                               `protobuf:"varint,8,opt,name=true_scotsman,json=trueScotsman,proto3" json:"true_scotsman,omitempty"`
+	Score                float32                            `protobuf:"fixed32,9,opt,name=score,proto3" json:"score,omitempty"`
+	Key                  []uint64                           `protobuf:"varint,5,rep,packed,name=key,proto3" json:"key,omitempty"`
+	ShortKey             []int32                            `protobuf:"varint,19,rep,packed,name=short_key,json=shortKey,proto3" json:"short_key,omitempty"`
+	Nested               *Nested                            `protobuf:"bytes,6,opt,name=nested,proto3" json:"nested,omitempty"`
+	RFunny               []Message_Humour                   `protobuf:"varint,16,rep,packed,name=r_funny,json=rFunny,proto3,enum=proto3_proto.Message_Humour" json:"r_funny,omitempty"`
+	Terrain              map[string]*Nested                 `protobuf:"bytes,10,rep,name=terrain,proto3" json:"terrain,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	Proto2Field          *test_proto.SubDefaults            `protobuf:"bytes,11,opt,name=proto2_field,json=proto2Field,proto3" json:"proto2_field,omitempty"`
+	Proto2Value          map[string]*test_proto.SubDefaults `protobuf:"bytes,13,rep,name=proto2_value,json=proto2Value,proto3" json:"proto2_value,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	Anything             *any.Any                           `protobuf:"bytes,14,opt,name=anything,proto3" json:"anything,omitempty"`
+	ManyThings           []*any.Any                         `protobuf:"bytes,15,rep,name=many_things,json=manyThings,proto3" json:"many_things,omitempty"`
+	Submessage           *Message                           `protobuf:"bytes,17,opt,name=submessage,proto3" json:"submessage,omitempty"`
+	Children             []*Message                         `protobuf:"bytes,18,rep,name=children,proto3" json:"children,omitempty"`
+	StringMap            map[string]string                  `protobuf:"bytes,20,rep,name=string_map,json=stringMap,proto3" json:"string_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	XXX_NoUnkeyedLiteral struct{}                           `json:"-"`
+	XXX_unrecognized     []byte                             `json:"-"`
+	XXX_sizecache        int32                              `json:"-"`
+}
+
+func (m *Message) Reset()         { *m = Message{} }
+func (m *Message) String() string { return proto.CompactTextString(m) }
+func (*Message) ProtoMessage()    {}
+func (*Message) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1c50d9b824d4ac38, []int{0}
+}
+
+func (m *Message) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Message.Unmarshal(m, b)
+}
+func (m *Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Message.Marshal(b, m, deterministic)
+}
+func (m *Message) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Message.Merge(m, src)
+}
+func (m *Message) XXX_Size() int {
+	return xxx_messageInfo_Message.Size(m)
+}
+func (m *Message) XXX_DiscardUnknown() {
+	xxx_messageInfo_Message.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Message proto.InternalMessageInfo
+
+func (m *Message) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *Message) GetHilarity() Message_Humour {
+	if m != nil {
+		return m.Hilarity
+	}
+	return Message_UNKNOWN
+}
+
+func (m *Message) GetHeightInCm() uint32 {
+	if m != nil {
+		return m.HeightInCm
+	}
+	return 0
+}
+
+func (m *Message) GetData() []byte {
+	if m != nil {
+		return m.Data
+	}
+	return nil
+}
+
+func (m *Message) GetResultCount() int64 {
+	if m != nil {
+		return m.ResultCount
+	}
+	return 0
+}
+
+func (m *Message) GetTrueScotsman() bool {
+	if m != nil {
+		return m.TrueScotsman
+	}
+	return false
+}
+
+func (m *Message) GetScore() float32 {
+	if m != nil {
+		return m.Score
+	}
+	return 0
+}
+
+func (m *Message) GetKey() []uint64 {
+	if m != nil {
+		return m.Key
+	}
+	return nil
+}
+
+func (m *Message) GetShortKey() []int32 {
+	if m != nil {
+		return m.ShortKey
+	}
+	return nil
+}
+
+func (m *Message) GetNested() *Nested {
+	if m != nil {
+		return m.Nested
+	}
+	return nil
+}
+
+func (m *Message) GetRFunny() []Message_Humour {
+	if m != nil {
+		return m.RFunny
+	}
+	return nil
+}
+
+func (m *Message) GetTerrain() map[string]*Nested {
+	if m != nil {
+		return m.Terrain
+	}
+	return nil
+}
+
+func (m *Message) GetProto2Field() *test_proto.SubDefaults {
+	if m != nil {
+		return m.Proto2Field
+	}
+	return nil
+}
+
+func (m *Message) GetProto2Value() map[string]*test_proto.SubDefaults {
+	if m != nil {
+		return m.Proto2Value
+	}
+	return nil
+}
+
+func (m *Message) GetAnything() *any.Any {
+	if m != nil {
+		return m.Anything
+	}
+	return nil
+}
+
+func (m *Message) GetManyThings() []*any.Any {
+	if m != nil {
+		return m.ManyThings
+	}
+	return nil
+}
+
+func (m *Message) GetSubmessage() *Message {
+	if m != nil {
+		return m.Submessage
+	}
+	return nil
+}
+
+func (m *Message) GetChildren() []*Message {
+	if m != nil {
+		return m.Children
+	}
+	return nil
+}
+
+func (m *Message) GetStringMap() map[string]string {
+	if m != nil {
+		return m.StringMap
+	}
+	return nil
+}
+
+type Nested struct {
+	Bunny                string   `protobuf:"bytes,1,opt,name=bunny,proto3" json:"bunny,omitempty"`
+	Cute                 bool     `protobuf:"varint,2,opt,name=cute,proto3" json:"cute,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Nested) Reset()         { *m = Nested{} }
+func (m *Nested) String() string { return proto.CompactTextString(m) }
+func (*Nested) ProtoMessage()    {}
+func (*Nested) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1c50d9b824d4ac38, []int{1}
+}
+
+func (m *Nested) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Nested.Unmarshal(m, b)
+}
+func (m *Nested) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Nested.Marshal(b, m, deterministic)
+}
+func (m *Nested) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Nested.Merge(m, src)
+}
+func (m *Nested) XXX_Size() int {
+	return xxx_messageInfo_Nested.Size(m)
+}
+func (m *Nested) XXX_DiscardUnknown() {
+	xxx_messageInfo_Nested.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Nested proto.InternalMessageInfo
+
+func (m *Nested) GetBunny() string {
+	if m != nil {
+		return m.Bunny
+	}
+	return ""
+}
+
+func (m *Nested) GetCute() bool {
+	if m != nil {
+		return m.Cute
+	}
+	return false
+}
+
+type MessageWithMap struct {
+	ByteMapping          map[bool][]byte `protobuf:"bytes,1,rep,name=byte_mapping,json=byteMapping,proto3" json:"byte_mapping,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
+	XXX_unrecognized     []byte          `json:"-"`
+	XXX_sizecache        int32           `json:"-"`
+}
+
+func (m *MessageWithMap) Reset()         { *m = MessageWithMap{} }
+func (m *MessageWithMap) String() string { return proto.CompactTextString(m) }
+func (*MessageWithMap) ProtoMessage()    {}
+func (*MessageWithMap) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1c50d9b824d4ac38, []int{2}
+}
+
+func (m *MessageWithMap) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MessageWithMap.Unmarshal(m, b)
+}
+func (m *MessageWithMap) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MessageWithMap.Marshal(b, m, deterministic)
+}
+func (m *MessageWithMap) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MessageWithMap.Merge(m, src)
+}
+func (m *MessageWithMap) XXX_Size() int {
+	return xxx_messageInfo_MessageWithMap.Size(m)
+}
+func (m *MessageWithMap) XXX_DiscardUnknown() {
+	xxx_messageInfo_MessageWithMap.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MessageWithMap proto.InternalMessageInfo
+
+func (m *MessageWithMap) GetByteMapping() map[bool][]byte {
+	if m != nil {
+		return m.ByteMapping
+	}
+	return nil
+}
+
+type IntMap struct {
+	Rtt                  map[int32]int32 `protobuf:"bytes,1,rep,name=rtt,proto3" json:"rtt,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
+	XXX_unrecognized     []byte          `json:"-"`
+	XXX_sizecache        int32           `json:"-"`
+}
+
+func (m *IntMap) Reset()         { *m = IntMap{} }
+func (m *IntMap) String() string { return proto.CompactTextString(m) }
+func (*IntMap) ProtoMessage()    {}
+func (*IntMap) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1c50d9b824d4ac38, []int{3}
+}
+
+func (m *IntMap) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_IntMap.Unmarshal(m, b)
+}
+func (m *IntMap) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_IntMap.Marshal(b, m, deterministic)
+}
+func (m *IntMap) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_IntMap.Merge(m, src)
+}
+func (m *IntMap) XXX_Size() int {
+	return xxx_messageInfo_IntMap.Size(m)
+}
+func (m *IntMap) XXX_DiscardUnknown() {
+	xxx_messageInfo_IntMap.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_IntMap proto.InternalMessageInfo
+
+func (m *IntMap) GetRtt() map[int32]int32 {
+	if m != nil {
+		return m.Rtt
+	}
+	return nil
+}
+
+type IntMaps struct {
+	Maps                 []*IntMap `protobuf:"bytes,1,rep,name=maps,proto3" json:"maps,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
+	XXX_unrecognized     []byte    `json:"-"`
+	XXX_sizecache        int32     `json:"-"`
+}
+
+func (m *IntMaps) Reset()         { *m = IntMaps{} }
+func (m *IntMaps) String() string { return proto.CompactTextString(m) }
+func (*IntMaps) ProtoMessage()    {}
+func (*IntMaps) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1c50d9b824d4ac38, []int{4}
+}
+
+func (m *IntMaps) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_IntMaps.Unmarshal(m, b)
+}
+func (m *IntMaps) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_IntMaps.Marshal(b, m, deterministic)
+}
+func (m *IntMaps) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_IntMaps.Merge(m, src)
+}
+func (m *IntMaps) XXX_Size() int {
+	return xxx_messageInfo_IntMaps.Size(m)
+}
+func (m *IntMaps) XXX_DiscardUnknown() {
+	xxx_messageInfo_IntMaps.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_IntMaps proto.InternalMessageInfo
+
+func (m *IntMaps) GetMaps() []*IntMap {
+	if m != nil {
+		return m.Maps
+	}
+	return nil
+}
+
+type TestUTF8 struct {
+	Scalar string   `protobuf:"bytes,1,opt,name=scalar,proto3" json:"scalar,omitempty"`
+	Vector []string `protobuf:"bytes,2,rep,name=vector,proto3" json:"vector,omitempty"`
+	// Types that are valid to be assigned to Oneof:
+	//	*TestUTF8_Field
+	Oneof                isTestUTF8_Oneof `protobuf_oneof:"oneof"`
+	MapKey               map[string]int64 `protobuf:"bytes,4,rep,name=map_key,json=mapKey,proto3" json:"map_key,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
+	MapValue             map[int64]string `protobuf:"bytes,5,rep,name=map_value,json=mapValue,proto3" json:"map_value,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
+	XXX_unrecognized     []byte           `json:"-"`
+	XXX_sizecache        int32            `json:"-"`
+}
+
+func (m *TestUTF8) Reset()         { *m = TestUTF8{} }
+func (m *TestUTF8) String() string { return proto.CompactTextString(m) }
+func (*TestUTF8) ProtoMessage()    {}
+func (*TestUTF8) Descriptor() ([]byte, []int) {
+	return fileDescriptor_1c50d9b824d4ac38, []int{5}
+}
+
+func (m *TestUTF8) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TestUTF8.Unmarshal(m, b)
+}
+func (m *TestUTF8) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TestUTF8.Marshal(b, m, deterministic)
+}
+func (m *TestUTF8) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TestUTF8.Merge(m, src)
+}
+func (m *TestUTF8) XXX_Size() int {
+	return xxx_messageInfo_TestUTF8.Size(m)
+}
+func (m *TestUTF8) XXX_DiscardUnknown() {
+	xxx_messageInfo_TestUTF8.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TestUTF8 proto.InternalMessageInfo
+
+func (m *TestUTF8) GetScalar() string {
+	if m != nil {
+		return m.Scalar
+	}
+	return ""
+}
+
+func (m *TestUTF8) GetVector() []string {
+	if m != nil {
+		return m.Vector
+	}
+	return nil
+}
+
+type isTestUTF8_Oneof interface {
+	isTestUTF8_Oneof()
+}
+
+type TestUTF8_Field struct {
+	Field string `protobuf:"bytes,3,opt,name=field,proto3,oneof"`
+}
+
+func (*TestUTF8_Field) isTestUTF8_Oneof() {}
+
+func (m *TestUTF8) GetOneof() isTestUTF8_Oneof {
+	if m != nil {
+		return m.Oneof
+	}
+	return nil
+}
+
+func (m *TestUTF8) GetField() string {
+	if x, ok := m.GetOneof().(*TestUTF8_Field); ok {
+		return x.Field
+	}
+	return ""
+}
+
+func (m *TestUTF8) GetMapKey() map[string]int64 {
+	if m != nil {
+		return m.MapKey
+	}
+	return nil
+}
+
+func (m *TestUTF8) GetMapValue() map[int64]string {
+	if m != nil {
+		return m.MapValue
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*TestUTF8) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*TestUTF8_Field)(nil),
+	}
+}
+
+func init() {
+	proto.RegisterEnum("proto3_proto.Message_Humour", Message_Humour_name, Message_Humour_value)
+	proto.RegisterType((*Message)(nil), "proto3_proto.Message")
+	proto.RegisterMapType((map[string]*test_proto.SubDefaults)(nil), "proto3_proto.Message.Proto2ValueEntry")
+	proto.RegisterMapType((map[string]string)(nil), "proto3_proto.Message.StringMapEntry")
+	proto.RegisterMapType((map[string]*Nested)(nil), "proto3_proto.Message.TerrainEntry")
+	proto.RegisterType((*Nested)(nil), "proto3_proto.Nested")
+	proto.RegisterType((*MessageWithMap)(nil), "proto3_proto.MessageWithMap")
+	proto.RegisterMapType((map[bool][]byte)(nil), "proto3_proto.MessageWithMap.ByteMappingEntry")
+	proto.RegisterType((*IntMap)(nil), "proto3_proto.IntMap")
+	proto.RegisterMapType((map[int32]int32)(nil), "proto3_proto.IntMap.RttEntry")
+	proto.RegisterType((*IntMaps)(nil), "proto3_proto.IntMaps")
+	proto.RegisterType((*TestUTF8)(nil), "proto3_proto.TestUTF8")
+	proto.RegisterMapType((map[string]int64)(nil), "proto3_proto.TestUTF8.MapKeyEntry")
+	proto.RegisterMapType((map[int64]string)(nil), "proto3_proto.TestUTF8.MapValueEntry")
+}
+
+func init() {
+	proto.RegisterFile("proto3_proto/proto3.proto", fileDescriptor_1c50d9b824d4ac38)
+}
+
+var fileDescriptor_1c50d9b824d4ac38 = []byte{
+	// 896 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x54, 0x6f, 0x6f, 0xdb, 0xb6,
+	0x13, 0xae, 0x2c, 0xff, 0x91, 0xcf, 0x76, 0xea, 0x1f, 0x7f, 0x6e, 0xc7, 0x7a, 0x1b, 0xa0, 0x79,
+	0xc3, 0x20, 0x0c, 0xab, 0xb2, 0xb9, 0xc8, 0x90, 0xb5, 0xc5, 0x86, 0x24, 0x6b, 0x50, 0x23, 0xb1,
+	0x67, 0xd0, 0xce, 0x82, 0xbd, 0x12, 0x68, 0x87, 0xb6, 0x85, 0x59, 0x94, 0x27, 0x52, 0x05, 0xf4,
+	0x05, 0xf6, 0x41, 0xf6, 0x95, 0xf6, 0x85, 0x06, 0x92, 0x72, 0x2a, 0x17, 0xea, 0xf2, 0x4a, 0xbc,
+	0x47, 0xcf, 0xdd, 0x73, 0xbc, 0x3b, 0x1e, 0x3c, 0xdb, 0x25, 0xb1, 0x8c, 0x5f, 0x04, 0xfa, 0x73,
+	0x6c, 0x0c, 0x5f, 0x7f, 0x50, 0xbb, 0xf8, 0xab, 0xff, 0x6c, 0x1d, 0xc7, 0xeb, 0x2d, 0x33, 0x94,
+	0x45, 0xba, 0x3a, 0xa6, 0x3c, 0x33, 0xc4, 0xfe, 0x13, 0xc9, 0x84, 0xcc, 0x23, 0xa8, 0xa3, 0x81,
+	0x07, 0x7f, 0x35, 0xa1, 0x31, 0x66, 0x42, 0xd0, 0x35, 0x43, 0x08, 0xaa, 0x9c, 0x46, 0x0c, 0x5b,
+	0xae, 0xe5, 0x35, 0x89, 0x3e, 0xa3, 0x53, 0x70, 0x36, 0xe1, 0x96, 0x26, 0xa1, 0xcc, 0x70, 0xc5,
+	0xb5, 0xbc, 0xa3, 0xe1, 0x67, 0x7e, 0x51, 0xd2, 0xcf, 0x9d, 0xfd, 0xb7, 0x69, 0x14, 0xa7, 0x09,
+	0xb9, 0x67, 0x23, 0x17, 0xda, 0x1b, 0x16, 0xae, 0x37, 0x32, 0x08, 0x79, 0xb0, 0x8c, 0xb0, 0xed,
+	0x5a, 0x5e, 0x87, 0x80, 0xc1, 0x46, 0xfc, 0x22, 0x52, 0x7a, 0x77, 0x54, 0x52, 0x5c, 0x75, 0x2d,
+	0xaf, 0x4d, 0xf4, 0x19, 0x7d, 0x01, 0xed, 0x84, 0x89, 0x74, 0x2b, 0x83, 0x65, 0x9c, 0x72, 0x89,
+	0x1b, 0xae, 0xe5, 0xd9, 0xa4, 0x65, 0xb0, 0x0b, 0x05, 0xa1, 0x2f, 0xa1, 0x23, 0x93, 0x94, 0x05,
+	0x62, 0x19, 0x4b, 0x11, 0x51, 0x8e, 0x1d, 0xd7, 0xf2, 0x1c, 0xd2, 0x56, 0xe0, 0x2c, 0xc7, 0x50,
+	0x0f, 0x6a, 0x62, 0x19, 0x27, 0x0c, 0x37, 0x5d, 0xcb, 0xab, 0x10, 0x63, 0xa0, 0x2e, 0xd8, 0x7f,
+	0xb0, 0x0c, 0xd7, 0x5c, 0xdb, 0xab, 0x12, 0x75, 0x44, 0x9f, 0x42, 0x53, 0x6c, 0xe2, 0x44, 0x06,
+	0x0a, 0xff, 0xbf, 0x6b, 0x7b, 0x35, 0xe2, 0x68, 0xe0, 0x8a, 0x65, 0xe8, 0x5b, 0xa8, 0x73, 0x26,
+	0x24, 0xbb, 0xc3, 0x75, 0xd7, 0xf2, 0x5a, 0xc3, 0xde, 0xe1, 0xd5, 0x27, 0xfa, 0x1f, 0xc9, 0x39,
+	0xe8, 0x04, 0x1a, 0x49, 0xb0, 0x4a, 0x39, 0xcf, 0x70, 0xd7, 0xb5, 0x1f, 0xac, 0x54, 0x3d, 0xb9,
+	0x54, 0x5c, 0xf4, 0x1a, 0x1a, 0x92, 0x25, 0x09, 0x0d, 0x39, 0x06, 0xd7, 0xf6, 0x5a, 0xc3, 0x41,
+	0xb9, 0xdb, 0xdc, 0x90, 0xde, 0x70, 0x99, 0x64, 0x64, 0xef, 0x82, 0x5e, 0x82, 0x99, 0x80, 0x61,
+	0xb0, 0x0a, 0xd9, 0xf6, 0x0e, 0xb7, 0x74, 0xa2, 0x9f, 0xf8, 0xef, 0xbb, 0xed, 0xcf, 0xd2, 0xc5,
+	0x2f, 0x6c, 0x45, 0xd3, 0xad, 0x14, 0xa4, 0x65, 0xc8, 0x97, 0x8a, 0x8b, 0x46, 0xf7, 0xbe, 0xef,
+	0xe8, 0x36, 0x65, 0xb8, 0xa3, 0xe5, 0xbf, 0x2e, 0x97, 0x9f, 0x6a, 0xe6, 0x6f, 0x8a, 0x68, 0x52,
+	0xc8, 0x43, 0x69, 0x04, 0x7d, 0x07, 0x0e, 0xe5, 0x99, 0xdc, 0x84, 0x7c, 0x8d, 0x8f, 0xf2, 0x5a,
+	0x99, 0x59, 0xf4, 0xf7, 0xb3, 0xe8, 0x9f, 0xf1, 0x8c, 0xdc, 0xb3, 0xd0, 0x09, 0xb4, 0x22, 0xca,
+	0xb3, 0x40, 0x5b, 0x02, 0x3f, 0xd6, 0xda, 0xe5, 0x4e, 0xa0, 0x88, 0x73, 0xcd, 0x43, 0x27, 0x00,
+	0x22, 0x5d, 0x44, 0x26, 0x29, 0xfc, 0x3f, 0x2d, 0xf5, 0xa4, 0x34, 0x63, 0x52, 0x20, 0xa2, 0xef,
+	0xc1, 0x59, 0x6e, 0xc2, 0xed, 0x5d, 0xc2, 0x38, 0x46, 0x5a, 0xea, 0x23, 0x4e, 0xf7, 0x34, 0x74,
+	0x01, 0x20, 0x64, 0x12, 0xf2, 0x75, 0x10, 0xd1, 0x1d, 0xee, 0x69, 0xa7, 0xaf, 0xca, 0x6b, 0x33,
+	0xd3, 0xbc, 0x31, 0xdd, 0x99, 0xca, 0x34, 0xc5, 0xde, 0xee, 0x4f, 0xa1, 0x5d, 0xec, 0xdb, 0x7e,
+	0x00, 0xcd, 0x0b, 0xd3, 0x03, 0xf8, 0x0d, 0xd4, 0x4c, 0xf5, 0x2b, 0xff, 0x31, 0x62, 0x86, 0xf2,
+	0xb2, 0x72, 0x6a, 0xf5, 0x6f, 0xa1, 0xfb, 0x61, 0x2b, 0x4a, 0xa2, 0x3e, 0x3f, 0x8c, 0xfa, 0xd1,
+	0x79, 0x28, 0x04, 0x7e, 0x0d, 0x47, 0x87, 0xf7, 0x28, 0x09, 0xdb, 0x2b, 0x86, 0x6d, 0x16, 0xbc,
+	0x07, 0x3f, 0x43, 0xdd, 0xcc, 0x35, 0x6a, 0x41, 0xe3, 0x66, 0x72, 0x35, 0xf9, 0xf5, 0x76, 0xd2,
+	0x7d, 0x84, 0x1c, 0xa8, 0x4e, 0x6f, 0x26, 0xb3, 0xae, 0x85, 0x3a, 0xd0, 0x9c, 0x5d, 0x9f, 0x4d,
+	0x67, 0xf3, 0xd1, 0xc5, 0x55, 0xb7, 0x82, 0x1e, 0x43, 0xeb, 0x7c, 0x74, 0x7d, 0x1d, 0x9c, 0x9f,
+	0x8d, 0xae, 0xdf, 0xfc, 0xde, 0xb5, 0x07, 0x43, 0xa8, 0x9b, 0xcb, 0x2a, 0x91, 0x85, 0x7e, 0x45,
+	0x46, 0xd8, 0x18, 0x6a, 0x59, 0x2c, 0x53, 0x69, 0x94, 0x1d, 0xa2, 0xcf, 0x83, 0xbf, 0x2d, 0x38,
+	0xca, 0x7b, 0x70, 0x1b, 0xca, 0xcd, 0x98, 0xee, 0xd0, 0x14, 0xda, 0x8b, 0x4c, 0x32, 0xd5, 0xb3,
+	0x9d, 0x1a, 0x46, 0x4b, 0xf7, 0xed, 0x79, 0x69, 0xdf, 0x72, 0x1f, 0xff, 0x3c, 0x93, 0x6c, 0x6c,
+	0xf8, 0xf9, 0x68, 0x2f, 0xde, 0x23, 0xfd, 0x9f, 0xa0, 0xfb, 0x21, 0xa1, 0x58, 0x19, 0xa7, 0xa4,
+	0x32, 0xed, 0x62, 0x65, 0xfe, 0x84, 0xfa, 0x88, 0x4b, 0x95, 0xdb, 0x31, 0xd8, 0x89, 0x94, 0x79,
+	0x4a, 0x9f, 0x1f, 0xa6, 0x64, 0x28, 0x3e, 0x91, 0xd2, 0xa4, 0xa0, 0x98, 0xfd, 0x1f, 0xc0, 0xd9,
+	0x03, 0x45, 0xc9, 0x5a, 0x89, 0x64, 0xad, 0x28, 0xf9, 0x02, 0x1a, 0x26, 0x9e, 0x40, 0x1e, 0x54,
+	0x23, 0xba, 0x13, 0xb9, 0x68, 0xaf, 0x4c, 0x94, 0x68, 0xc6, 0xe0, 0x9f, 0x0a, 0x38, 0x73, 0x26,
+	0xe4, 0xcd, 0xfc, 0xf2, 0x14, 0x3d, 0x85, 0xba, 0x58, 0xd2, 0x2d, 0x4d, 0xf2, 0x26, 0xe4, 0x96,
+	0xc2, 0xdf, 0xb1, 0xa5, 0x8c, 0x13, 0x5c, 0x71, 0x6d, 0x85, 0x1b, 0x0b, 0x3d, 0x85, 0x9a, 0xd9,
+	0x3f, 0x6a, 0xcb, 0x37, 0xdf, 0x3e, 0x22, 0xc6, 0x44, 0xaf, 0xa0, 0x11, 0xd1, 0x9d, 0x5e, 0xae,
+	0xd5, 0xb2, 0xe5, 0xb6, 0x17, 0xf4, 0xc7, 0x74, 0x77, 0xc5, 0x32, 0x73, 0xf7, 0x7a, 0xa4, 0x0d,
+	0x74, 0x06, 0x4d, 0xe5, 0x6c, 0x2e, 0x59, 0x2b, 0x7b, 0x80, 0x45, 0xf7, 0xc2, 0x6a, 0x72, 0xa2,
+	0xdc, 0xec, 0xff, 0x08, 0xad, 0x42, 0xe4, 0x87, 0x26, 0xda, 0x2e, 0xbe, 0x87, 0x57, 0xd0, 0x39,
+	0x88, 0x5a, 0x74, 0xb6, 0x1f, 0x78, 0x0e, 0xe7, 0x0d, 0xa8, 0xc5, 0x9c, 0xc5, 0xab, 0x45, 0xdd,
+	0xe4, 0xfb, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xeb, 0x74, 0x17, 0x7f, 0xc3, 0x07, 0x00, 0x00,
+}
diff --git a/proto/proto3_proto/proto3.proto b/proto/proto3_proto/proto3.proto
new file mode 100644
index 0000000..6adea22
--- /dev/null
+++ b/proto/proto3_proto/proto3.proto
@@ -0,0 +1,97 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2014 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+import "google/protobuf/any.proto";
+import "test_proto/test.proto";
+
+package proto3_proto;
+
+message Message {
+  enum Humour {
+    UNKNOWN = 0;
+    PUNS = 1;
+    SLAPSTICK = 2;
+    BILL_BAILEY = 3;
+  }
+
+  string name = 1;
+  Humour hilarity = 2;
+  uint32 height_in_cm = 3;
+  bytes data = 4;
+  int64 result_count = 7;
+  bool true_scotsman = 8;
+  float score = 9;
+
+  repeated uint64 key = 5;
+  repeated int32 short_key = 19;
+  Nested nested = 6;
+  repeated Humour r_funny = 16;
+
+  map<string, Nested> terrain = 10;
+  test_proto.SubDefaults proto2_field = 11;
+  map<string, test_proto.SubDefaults> proto2_value = 13;
+
+  google.protobuf.Any anything = 14;
+  repeated google.protobuf.Any many_things = 15;
+
+  Message submessage = 17;
+  repeated Message children = 18;
+
+  map<string, string> string_map = 20;
+}
+
+message Nested {
+  string bunny = 1;
+  bool cute = 2;
+}
+
+message MessageWithMap {
+  map<bool, bytes> byte_mapping = 1;
+}
+
+
+message IntMap {
+  map<int32, int32> rtt = 1;
+}
+
+message IntMaps {
+  repeated IntMap maps = 1;
+}
+
+message TestUTF8 {
+  string scalar = 1;
+  repeated string vector = 2;
+  oneof oneof { string field = 3; }
+  map<string, int64> map_key = 4;
+  map<int64, string> map_value = 5;
+}
diff --git a/proto/proto3_test.go b/proto/proto3_test.go
new file mode 100644
index 0000000..73eed6c
--- /dev/null
+++ b/proto/proto3_test.go
@@ -0,0 +1,151 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2014 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto_test
+
+import (
+	"bytes"
+	"testing"
+
+	"github.com/golang/protobuf/proto"
+	pb "github.com/golang/protobuf/proto/proto3_proto"
+	tpb "github.com/golang/protobuf/proto/test_proto"
+)
+
+func TestProto3ZeroValues(t *testing.T) {
+	tests := []struct {
+		desc string
+		m    proto.Message
+	}{
+		{"zero message", &pb.Message{}},
+		{"empty bytes field", &pb.Message{Data: []byte{}}},
+	}
+	for _, test := range tests {
+		b, err := proto.Marshal(test.m)
+		if err != nil {
+			t.Errorf("%s: proto.Marshal: %v", test.desc, err)
+			continue
+		}
+		if len(b) > 0 {
+			t.Errorf("%s: Encoding is non-empty: %q", test.desc, b)
+		}
+	}
+}
+
+func TestRoundTripProto3(t *testing.T) {
+	m := &pb.Message{
+		Name:         "David",          // (2 | 1<<3): 0x0a 0x05 "David"
+		Hilarity:     pb.Message_PUNS,  // (0 | 2<<3): 0x10 0x01
+		HeightInCm:   178,              // (0 | 3<<3): 0x18 0xb2 0x01
+		Data:         []byte("roboto"), // (2 | 4<<3): 0x20 0x06 "roboto"
+		ResultCount:  47,               // (0 | 7<<3): 0x38 0x2f
+		TrueScotsman: true,             // (0 | 8<<3): 0x40 0x01
+		Score:        8.1,              // (5 | 9<<3): 0x4d <8.1>
+
+		Key: []uint64{1, 0xdeadbeef},
+		Nested: &pb.Nested{
+			Bunny: "Monty",
+		},
+	}
+	t.Logf(" m: %v", m)
+
+	b, err := proto.Marshal(m)
+	if err != nil {
+		t.Fatalf("proto.Marshal: %v", err)
+	}
+	t.Logf(" b: %q", b)
+
+	m2 := new(pb.Message)
+	if err := proto.Unmarshal(b, m2); err != nil {
+		t.Fatalf("proto.Unmarshal: %v", err)
+	}
+	t.Logf("m2: %v", m2)
+
+	if !proto.Equal(m, m2) {
+		t.Errorf("proto.Equal returned false:\n m: %v\nm2: %v", m, m2)
+	}
+}
+
+func TestGettersForBasicTypesExist(t *testing.T) {
+	var m pb.Message
+	if got := m.GetNested().GetBunny(); got != "" {
+		t.Errorf("m.GetNested().GetBunny() = %q, want empty string", got)
+	}
+	if got := m.GetNested().GetCute(); got {
+		t.Errorf("m.GetNested().GetCute() = %t, want false", got)
+	}
+}
+
+func TestProto3SetDefaults(t *testing.T) {
+	in := &pb.Message{
+		Terrain: map[string]*pb.Nested{
+			"meadow": new(pb.Nested),
+		},
+		Proto2Field: new(tpb.SubDefaults),
+		Proto2Value: map[string]*tpb.SubDefaults{
+			"badlands": new(tpb.SubDefaults),
+		},
+	}
+
+	got := proto.Clone(in).(*pb.Message)
+	proto.SetDefaults(got)
+
+	// There are no defaults in proto3.  Everything should be the zero value, but
+	// we need to remember to set defaults for nested proto2 messages.
+	want := &pb.Message{
+		Terrain: map[string]*pb.Nested{
+			"meadow": new(pb.Nested),
+		},
+		Proto2Field: &tpb.SubDefaults{N: proto.Int64(7)},
+		Proto2Value: map[string]*tpb.SubDefaults{
+			"badlands": &tpb.SubDefaults{N: proto.Int64(7)},
+		},
+	}
+
+	if !proto.Equal(got, want) {
+		t.Errorf("with in = %v\nproto.SetDefaults(in) =>\ngot %v\nwant %v", in, got, want)
+	}
+}
+
+func TestUnknownFieldPreservation(t *testing.T) {
+	b1 := "\x0a\x05David"      // Known tag 1
+	b2 := "\xc2\x0c\x06Google" // Unknown tag 200
+	b := []byte(b1 + b2)
+
+	m := new(pb.Message)
+	if err := proto.Unmarshal(b, m); err != nil {
+		t.Fatalf("proto.Unmarshal: %v", err)
+	}
+
+	if !bytes.Equal(m.XXX_unrecognized, []byte(b2)) {
+		t.Fatalf("mismatching unknown fields:\ngot  %q\nwant %q", m.XXX_unrecognized, b2)
+	}
+}
diff --git a/proto/proto_methods.go b/proto/proto_methods.go
deleted file mode 100644
index 465e057..0000000
--- a/proto/proto_methods.go
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// The protoreflect build tag disables use of fast-path methods.
-//go:build !protoreflect
-// +build !protoreflect
-
-package proto
-
-import (
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/runtime/protoiface"
-)
-
-const hasProtoMethods = true
-
-func protoMethods(m protoreflect.Message) *protoiface.Methods {
-	return m.ProtoMethods()
-}
diff --git a/proto/proto_reflect.go b/proto/proto_reflect.go
deleted file mode 100644
index 494d6ce..0000000
--- a/proto/proto_reflect.go
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// The protoreflect build tag disables use of fast-path methods.
-//go:build protoreflect
-// +build protoreflect
-
-package proto
-
-import (
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/runtime/protoiface"
-)
-
-const hasProtoMethods = false
-
-func protoMethods(m protoreflect.Message) *protoiface.Methods {
-	return nil
-}
diff --git a/proto/reset.go b/proto/reset.go
deleted file mode 100644
index 3d7f894..0000000
--- a/proto/reset.go
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package proto
-
-import (
-	"fmt"
-
-	"google.golang.org/protobuf/reflect/protoreflect"
-)
-
-// Reset clears every field in the message.
-// The resulting message shares no observable memory with its previous state
-// other than the memory for the message itself.
-func Reset(m Message) {
-	if mr, ok := m.(interface{ Reset() }); ok && hasProtoMethods {
-		mr.Reset()
-		return
-	}
-	resetMessage(m.ProtoReflect())
-}
-
-func resetMessage(m protoreflect.Message) {
-	if !m.IsValid() {
-		panic(fmt.Sprintf("cannot reset invalid %v message", m.Descriptor().FullName()))
-	}
-
-	// Clear all known fields.
-	fds := m.Descriptor().Fields()
-	for i := 0; i < fds.Len(); i++ {
-		m.Clear(fds.Get(i))
-	}
-
-	// Clear extension fields.
-	m.Range(func(fd protoreflect.FieldDescriptor, _ protoreflect.Value) bool {
-		m.Clear(fd)
-		return true
-	})
-
-	// Clear unknown fields.
-	m.SetUnknown(nil)
-}
diff --git a/proto/reset_test.go b/proto/reset_test.go
deleted file mode 100644
index 0048b56..0000000
--- a/proto/reset_test.go
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package proto_test
-
-import (
-	"testing"
-
-	"google.golang.org/protobuf/proto"
-
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-)
-
-func TestReset(t *testing.T) {
-	m := &testpb.TestAllTypes{
-		OptionalSfixed64:       proto.Int64(5),
-		RepeatedInt32:          []int32{},
-		RepeatedFloat:          []float32{1.234, 5.678},
-		MapFixed64Fixed64:      map[uint64]uint64{5: 7},
-		MapStringString:        map[string]string{},
-		OptionalForeignMessage: &testpb.ForeignMessage{},
-		OneofField:             (*testpb.TestAllTypes_OneofUint32)(nil),
-		OneofOptional:          (*testpb.TestAllTypes_OneofOptionalUint32)(nil),
-	}
-	m.ProtoReflect().SetUnknown([]byte{})
-
-	proto.Reset(m)
-
-	if m.OptionalSfixed64 != nil {
-		t.Errorf("m.OptionalSfixed64 = %p, want nil", m.OptionalSfixed64)
-	}
-	if m.RepeatedInt32 != nil {
-		t.Errorf("m.RepeatedInt32 = %p, want nil", m.RepeatedInt32)
-	}
-	if m.RepeatedFloat != nil {
-		t.Errorf("m.RepeatedFloat = %p, want nil", m.RepeatedFloat)
-	}
-	if m.MapFixed64Fixed64 != nil {
-		t.Errorf("m.MapFixed64Fixed64 = %p, want nil", m.MapFixed64Fixed64)
-	}
-	if m.MapStringString != nil {
-		t.Errorf("m.MapStringString = %p, want nil", m.MapStringString)
-	}
-	if m.OptionalForeignMessage != nil {
-		t.Errorf("m.OptionalForeignMessage = %p, want nil", m.OptionalForeignMessage)
-	}
-	if m.OneofField != nil {
-		t.Errorf("m.OneofField = %p, want nil", m.OneofField)
-	}
-	if m.OneofOptional != nil {
-		t.Errorf("m.OneofOptional = %p, want nil", m.OneofOptional)
-	}
-
-	if got := m.ProtoReflect().GetUnknown(); got != nil {
-		t.Errorf("m.ProtoReflect().GetUnknown() = %d, want nil", got)
-	}
-}
diff --git a/proto/size.go b/proto/size.go
deleted file mode 100644
index 554b9c6..0000000
--- a/proto/size.go
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package proto
-
-import (
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/encoding/messageset"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/runtime/protoiface"
-)
-
-// Size returns the size in bytes of the wire-format encoding of m.
-func Size(m Message) int {
-	return MarshalOptions{}.Size(m)
-}
-
-// Size returns the size in bytes of the wire-format encoding of m.
-func (o MarshalOptions) Size(m Message) int {
-	// Treat a nil message interface as an empty message; nothing to output.
-	if m == nil {
-		return 0
-	}
-
-	return o.size(m.ProtoReflect())
-}
-
-// size is a centralized function that all size operations go through.
-// For profiling purposes, avoid changing the name of this function or
-// introducing other code paths for size that do not go through this.
-func (o MarshalOptions) size(m protoreflect.Message) (size int) {
-	methods := protoMethods(m)
-	if methods != nil && methods.Size != nil {
-		out := methods.Size(protoiface.SizeInput{
-			Message: m,
-		})
-		return out.Size
-	}
-	if methods != nil && methods.Marshal != nil {
-		// This is not efficient, but we don't have any choice.
-		// This case is mainly used for legacy types with a Marshal method.
-		out, _ := methods.Marshal(protoiface.MarshalInput{
-			Message: m,
-		})
-		return len(out.Buf)
-	}
-	return o.sizeMessageSlow(m)
-}
-
-func (o MarshalOptions) sizeMessageSlow(m protoreflect.Message) (size int) {
-	if messageset.IsMessageSet(m.Descriptor()) {
-		return o.sizeMessageSet(m)
-	}
-	m.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {
-		size += o.sizeField(fd, v)
-		return true
-	})
-	size += len(m.GetUnknown())
-	return size
-}
-
-func (o MarshalOptions) sizeField(fd protoreflect.FieldDescriptor, value protoreflect.Value) (size int) {
-	num := fd.Number()
-	switch {
-	case fd.IsList():
-		return o.sizeList(num, fd, value.List())
-	case fd.IsMap():
-		return o.sizeMap(num, fd, value.Map())
-	default:
-		return protowire.SizeTag(num) + o.sizeSingular(num, fd.Kind(), value)
-	}
-}
-
-func (o MarshalOptions) sizeList(num protowire.Number, fd protoreflect.FieldDescriptor, list protoreflect.List) (size int) {
-	if fd.IsPacked() && list.Len() > 0 {
-		content := 0
-		for i, llen := 0, list.Len(); i < llen; i++ {
-			content += o.sizeSingular(num, fd.Kind(), list.Get(i))
-		}
-		return protowire.SizeTag(num) + protowire.SizeBytes(content)
-	}
-
-	for i, llen := 0, list.Len(); i < llen; i++ {
-		size += protowire.SizeTag(num) + o.sizeSingular(num, fd.Kind(), list.Get(i))
-	}
-	return size
-}
-
-func (o MarshalOptions) sizeMap(num protowire.Number, fd protoreflect.FieldDescriptor, mapv protoreflect.Map) (size int) {
-	mapv.Range(func(key protoreflect.MapKey, value protoreflect.Value) bool {
-		size += protowire.SizeTag(num)
-		size += protowire.SizeBytes(o.sizeField(fd.MapKey(), key.Value()) + o.sizeField(fd.MapValue(), value))
-		return true
-	})
-	return size
-}
diff --git a/proto/size2_test.go b/proto/size2_test.go
new file mode 100644
index 0000000..0b8eb85
--- /dev/null
+++ b/proto/size2_test.go
@@ -0,0 +1,64 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2012 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto
+
+import (
+	"math"
+	"testing"
+)
+
+// This is a separate file and package from size_test.go because that one uses
+// generated messages and thus may not be in package proto without having a circular
+// dependency, whereas this file tests unexported details of size.go.
+
+func TestVarintSize(t *testing.T) {
+	// Check the edge cases carefully.
+	testCases := []struct {
+		n    uint64
+		size int
+	}{
+		{0, 1},
+		{1, 1},
+		{127, 1},
+		{128, 2},
+		{16383, 2},
+		{16384, 3},
+		{math.MaxInt64, 9},
+		{math.MaxInt64 + 1, 10},
+	}
+	for _, tc := range testCases {
+		size := SizeVarint(tc.n)
+		if size != tc.size {
+			t.Errorf("sizeVarint(%d) = %d, want %d", tc.n, size, tc.size)
+		}
+	}
+}
diff --git a/proto/size_gen.go b/proto/size_gen.go
deleted file mode 100644
index 3cf61a8..0000000
--- a/proto/size_gen.go
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by generate-types. DO NOT EDIT.
-
-package proto
-
-import (
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/reflect/protoreflect"
-)
-
-func (o MarshalOptions) sizeSingular(num protowire.Number, kind protoreflect.Kind, v protoreflect.Value) int {
-	switch kind {
-	case protoreflect.BoolKind:
-		return protowire.SizeVarint(protowire.EncodeBool(v.Bool()))
-	case protoreflect.EnumKind:
-		return protowire.SizeVarint(uint64(v.Enum()))
-	case protoreflect.Int32Kind:
-		return protowire.SizeVarint(uint64(int32(v.Int())))
-	case protoreflect.Sint32Kind:
-		return protowire.SizeVarint(protowire.EncodeZigZag(int64(int32(v.Int()))))
-	case protoreflect.Uint32Kind:
-		return protowire.SizeVarint(uint64(uint32(v.Uint())))
-	case protoreflect.Int64Kind:
-		return protowire.SizeVarint(uint64(v.Int()))
-	case protoreflect.Sint64Kind:
-		return protowire.SizeVarint(protowire.EncodeZigZag(v.Int()))
-	case protoreflect.Uint64Kind:
-		return protowire.SizeVarint(v.Uint())
-	case protoreflect.Sfixed32Kind:
-		return protowire.SizeFixed32()
-	case protoreflect.Fixed32Kind:
-		return protowire.SizeFixed32()
-	case protoreflect.FloatKind:
-		return protowire.SizeFixed32()
-	case protoreflect.Sfixed64Kind:
-		return protowire.SizeFixed64()
-	case protoreflect.Fixed64Kind:
-		return protowire.SizeFixed64()
-	case protoreflect.DoubleKind:
-		return protowire.SizeFixed64()
-	case protoreflect.StringKind:
-		return protowire.SizeBytes(len(v.String()))
-	case protoreflect.BytesKind:
-		return protowire.SizeBytes(len(v.Bytes()))
-	case protoreflect.MessageKind:
-		return protowire.SizeBytes(o.size(v.Message()))
-	case protoreflect.GroupKind:
-		return protowire.SizeGroup(num, o.size(v.Message()))
-	default:
-		return 0
-	}
-}
diff --git a/proto/size_test.go b/proto/size_test.go
new file mode 100644
index 0000000..3abac41
--- /dev/null
+++ b/proto/size_test.go
@@ -0,0 +1,191 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2012 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto_test
+
+import (
+	"log"
+	"strings"
+	"testing"
+
+	. "github.com/golang/protobuf/proto"
+	proto3pb "github.com/golang/protobuf/proto/proto3_proto"
+	pb "github.com/golang/protobuf/proto/test_proto"
+)
+
+var messageWithExtension1 = &pb.MyMessage{Count: Int32(7)}
+
+// messageWithExtension2 is in equal_test.go.
+var messageWithExtension3 = &pb.MyMessage{Count: Int32(8)}
+
+func init() {
+	if err := SetExtension(messageWithExtension1, pb.E_Ext_More, &pb.Ext{Data: String("Abbott")}); err != nil {
+		log.Panicf("SetExtension: %v", err)
+	}
+	if err := SetExtension(messageWithExtension3, pb.E_Ext_More, &pb.Ext{Data: String("Costello")}); err != nil {
+		log.Panicf("SetExtension: %v", err)
+	}
+
+	// Force messageWithExtension3 to have the extension encoded.
+	Marshal(messageWithExtension3)
+
+}
+
+// non-pointer custom message
+type nonptrMessage struct{}
+
+func (m nonptrMessage) ProtoMessage()  {}
+func (m nonptrMessage) Reset()         {}
+func (m nonptrMessage) String() string { return "" }
+
+func (m nonptrMessage) Marshal() ([]byte, error) {
+	return []byte{42}, nil
+}
+
+// custom message embedding a proto.Message
+type messageWithEmbedding struct {
+	*pb.OtherMessage
+}
+
+func (m *messageWithEmbedding) ProtoMessage()  {}
+func (m *messageWithEmbedding) Reset()         {}
+func (m *messageWithEmbedding) String() string { return "" }
+
+func (m *messageWithEmbedding) Marshal() ([]byte, error) {
+	return []byte{42}, nil
+}
+
+var SizeTests = []struct {
+	desc string
+	pb   Message
+}{
+	{"empty", &pb.OtherMessage{}},
+	// Basic types.
+	{"bool", &pb.Defaults{F_Bool: Bool(true)}},
+	{"int32", &pb.Defaults{F_Int32: Int32(12)}},
+	{"negative int32", &pb.Defaults{F_Int32: Int32(-1)}},
+	{"small int64", &pb.Defaults{F_Int64: Int64(1)}},
+	{"big int64", &pb.Defaults{F_Int64: Int64(1 << 20)}},
+	{"negative int64", &pb.Defaults{F_Int64: Int64(-1)}},
+	{"fixed32", &pb.Defaults{F_Fixed32: Uint32(71)}},
+	{"fixed64", &pb.Defaults{F_Fixed64: Uint64(72)}},
+	{"uint32", &pb.Defaults{F_Uint32: Uint32(123)}},
+	{"uint64", &pb.Defaults{F_Uint64: Uint64(124)}},
+	{"float", &pb.Defaults{F_Float: Float32(12.6)}},
+	{"double", &pb.Defaults{F_Double: Float64(13.9)}},
+	{"string", &pb.Defaults{F_String: String("niles")}},
+	{"bytes", &pb.Defaults{F_Bytes: []byte("wowsa")}},
+	{"bytes, empty", &pb.Defaults{F_Bytes: []byte{}}},
+	{"sint32", &pb.Defaults{F_Sint32: Int32(65)}},
+	{"sint64", &pb.Defaults{F_Sint64: Int64(67)}},
+	{"enum", &pb.Defaults{F_Enum: pb.Defaults_BLUE.Enum()}},
+	// Repeated.
+	{"empty repeated bool", &pb.MoreRepeated{Bools: []bool{}}},
+	{"repeated bool", &pb.MoreRepeated{Bools: []bool{false, true, true, false}}},
+	{"packed repeated bool", &pb.MoreRepeated{BoolsPacked: []bool{false, true, true, false, true, true, true}}},
+	{"repeated int32", &pb.MoreRepeated{Ints: []int32{1, 12203, 1729, -1}}},
+	{"repeated int32 packed", &pb.MoreRepeated{IntsPacked: []int32{1, 12203, 1729}}},
+	{"repeated int64 packed", &pb.MoreRepeated{Int64SPacked: []int64{
+		// Need enough large numbers to verify that the header is counting the number of bytes
+		// for the field, not the number of elements.
+		1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62,
+		1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62, 1 << 62,
+	}}},
+	{"repeated string", &pb.MoreRepeated{Strings: []string{"r", "ken", "gri"}}},
+	{"repeated fixed", &pb.MoreRepeated{Fixeds: []uint32{1, 2, 3, 4}}},
+	// Nested.
+	{"nested", &pb.OldMessage{Nested: &pb.OldMessage_Nested{Name: String("whatever")}}},
+	{"group", &pb.GroupOld{G: &pb.GroupOld_G{X: Int32(12345)}}},
+	// Other things.
+	{"unrecognized", &pb.MoreRepeated{XXX_unrecognized: []byte{13<<3 | 0, 4}}},
+	{"extension (unencoded)", messageWithExtension1},
+	{"extension (encoded)", messageWithExtension3},
+	// proto3 message
+	{"proto3 empty", &proto3pb.Message{}},
+	{"proto3 bool", &proto3pb.Message{TrueScotsman: true}},
+	{"proto3 int64", &proto3pb.Message{ResultCount: 1}},
+	{"proto3 uint32", &proto3pb.Message{HeightInCm: 123}},
+	{"proto3 float", &proto3pb.Message{Score: 12.6}},
+	{"proto3 string", &proto3pb.Message{Name: "Snezana"}},
+	{"proto3 bytes", &proto3pb.Message{Data: []byte("wowsa")}},
+	{"proto3 bytes, empty", &proto3pb.Message{Data: []byte{}}},
+	{"proto3 enum", &proto3pb.Message{Hilarity: proto3pb.Message_PUNS}},
+	{"proto3 map field with empty bytes", &proto3pb.MessageWithMap{ByteMapping: map[bool][]byte{false: []byte{}}}},
+
+	{"map field", &pb.MessageWithMap{NameMapping: map[int32]string{1: "Rob", 7: "Andrew"}}},
+	{"map field with message", &pb.MessageWithMap{MsgMapping: map[int64]*pb.FloatingPoint{0x7001: &pb.FloatingPoint{F: Float64(2.0)}}}},
+	{"map field with bytes", &pb.MessageWithMap{ByteMapping: map[bool][]byte{true: []byte("this time for sure")}}},
+	{"map field with empty bytes", &pb.MessageWithMap{ByteMapping: map[bool][]byte{true: []byte{}}}},
+
+	{"map field with big entry", &pb.MessageWithMap{NameMapping: map[int32]string{8: strings.Repeat("x", 125)}}},
+	{"map field with big key and val", &pb.MessageWithMap{StrToStr: map[string]string{strings.Repeat("x", 70): strings.Repeat("y", 70)}}},
+	{"map field with big numeric key", &pb.MessageWithMap{NameMapping: map[int32]string{0xf00d: "om nom nom"}}},
+
+	{"oneof not set", &pb.Oneof{}},
+	{"oneof bool", &pb.Oneof{Union: &pb.Oneof_F_Bool{true}}},
+	{"oneof zero int32", &pb.Oneof{Union: &pb.Oneof_F_Int32{0}}},
+	{"oneof big int32", &pb.Oneof{Union: &pb.Oneof_F_Int32{1 << 20}}},
+	{"oneof int64", &pb.Oneof{Union: &pb.Oneof_F_Int64{42}}},
+	{"oneof fixed32", &pb.Oneof{Union: &pb.Oneof_F_Fixed32{43}}},
+	{"oneof fixed64", &pb.Oneof{Union: &pb.Oneof_F_Fixed64{44}}},
+	{"oneof uint32", &pb.Oneof{Union: &pb.Oneof_F_Uint32{45}}},
+	{"oneof uint64", &pb.Oneof{Union: &pb.Oneof_F_Uint64{46}}},
+	{"oneof float", &pb.Oneof{Union: &pb.Oneof_F_Float{47.1}}},
+	{"oneof double", &pb.Oneof{Union: &pb.Oneof_F_Double{48.9}}},
+	{"oneof string", &pb.Oneof{Union: &pb.Oneof_F_String{"Rhythmic Fman"}}},
+	{"oneof bytes", &pb.Oneof{Union: &pb.Oneof_F_Bytes{[]byte("let go")}}},
+	{"oneof sint32", &pb.Oneof{Union: &pb.Oneof_F_Sint32{50}}},
+	{"oneof sint64", &pb.Oneof{Union: &pb.Oneof_F_Sint64{51}}},
+	{"oneof enum", &pb.Oneof{Union: &pb.Oneof_F_Enum{pb.MyMessage_BLUE}}},
+	{"message for oneof", &pb.GoTestField{Label: String("k"), Type: String("v")}},
+	{"oneof message", &pb.Oneof{Union: &pb.Oneof_F_Message{&pb.GoTestField{Label: String("k"), Type: String("v")}}}},
+	{"oneof group", &pb.Oneof{Union: &pb.Oneof_FGroup{&pb.Oneof_F_Group{X: Int32(52)}}}},
+	{"oneof largest tag", &pb.Oneof{Union: &pb.Oneof_F_Largest_Tag{1}}},
+	{"multiple oneofs", &pb.Oneof{Union: &pb.Oneof_F_Int32{1}, Tormato: &pb.Oneof_Value{2}}},
+
+	{"non-pointer message", nonptrMessage{}},
+	{"custom message with embedding", &messageWithEmbedding{&pb.OtherMessage{}}},
+}
+
+func TestSize(t *testing.T) {
+	for _, tc := range SizeTests {
+		size := Size(tc.pb)
+		b, err := Marshal(tc.pb)
+		if err != nil {
+			t.Errorf("%v: Marshal failed: %v", tc.desc, err)
+			continue
+		}
+		if size != len(b) {
+			t.Errorf("%v: Size(%v) = %d, want %d", tc.desc, tc.pb, size, len(b))
+			t.Logf("%v: bytes: %#v", tc.desc, b)
+		}
+	}
+}
diff --git a/proto/table_marshal.go b/proto/table_marshal.go
new file mode 100644
index 0000000..5cb11fa
--- /dev/null
+++ b/proto/table_marshal.go
@@ -0,0 +1,2776 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2016 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto
+
+import (
+	"errors"
+	"fmt"
+	"math"
+	"reflect"
+	"sort"
+	"strconv"
+	"strings"
+	"sync"
+	"sync/atomic"
+	"unicode/utf8"
+)
+
+// a sizer takes a pointer to a field and the size of its tag, computes the size of
+// the encoded data.
+type sizer func(pointer, int) int
+
+// a marshaler takes a byte slice, a pointer to a field, and its tag (in wire format),
+// marshals the field to the end of the slice, returns the slice and error (if any).
+type marshaler func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error)
+
+// marshalInfo is the information used for marshaling a message.
+type marshalInfo struct {
+	typ          reflect.Type
+	fields       []*marshalFieldInfo
+	unrecognized field                      // offset of XXX_unrecognized
+	extensions   field                      // offset of XXX_InternalExtensions
+	v1extensions field                      // offset of XXX_extensions
+	sizecache    field                      // offset of XXX_sizecache
+	initialized  int32                      // 0 -- only typ is set, 1 -- fully initialized
+	messageset   bool                       // uses message set wire format
+	hasmarshaler bool                       // has custom marshaler
+	sync.RWMutex                            // protect extElems map, also for initialization
+	extElems     map[int32]*marshalElemInfo // info of extension elements
+}
+
+// marshalFieldInfo is the information used for marshaling a field of a message.
+type marshalFieldInfo struct {
+	field      field
+	wiretag    uint64 // tag in wire format
+	tagsize    int    // size of tag in wire format
+	sizer      sizer
+	marshaler  marshaler
+	isPointer  bool
+	required   bool                              // field is required
+	name       string                            // name of the field, for error reporting
+	oneofElems map[reflect.Type]*marshalElemInfo // info of oneof elements
+}
+
+// marshalElemInfo is the information used for marshaling an extension or oneof element.
+type marshalElemInfo struct {
+	wiretag   uint64 // tag in wire format
+	tagsize   int    // size of tag in wire format
+	sizer     sizer
+	marshaler marshaler
+	isptr     bool // elem is pointer typed, thus interface of this type is a direct interface (extension only)
+	deref     bool // dereference the pointer before operating on it; implies isptr
+}
+
+var (
+	marshalInfoMap  = map[reflect.Type]*marshalInfo{}
+	marshalInfoLock sync.Mutex
+)
+
+// getMarshalInfo returns the information to marshal a given type of message.
+// The info it returns may not necessarily initialized.
+// t is the type of the message (NOT the pointer to it).
+func getMarshalInfo(t reflect.Type) *marshalInfo {
+	marshalInfoLock.Lock()
+	u, ok := marshalInfoMap[t]
+	if !ok {
+		u = &marshalInfo{typ: t}
+		marshalInfoMap[t] = u
+	}
+	marshalInfoLock.Unlock()
+	return u
+}
+
+// Size is the entry point from generated code,
+// and should be ONLY called by generated code.
+// It computes the size of encoded data of msg.
+// a is a pointer to a place to store cached marshal info.
+func (a *InternalMessageInfo) Size(msg Message) int {
+	u := getMessageMarshalInfo(msg, a)
+	ptr := toPointer(&msg)
+	if ptr.isNil() {
+		// We get here if msg is a typed nil ((*SomeMessage)(nil)),
+		// so it satisfies the interface, and msg == nil wouldn't
+		// catch it. We don't want crash in this case.
+		return 0
+	}
+	return u.size(ptr)
+}
+
+// Marshal is the entry point from generated code,
+// and should be ONLY called by generated code.
+// It marshals msg to the end of b.
+// a is a pointer to a place to store cached marshal info.
+func (a *InternalMessageInfo) Marshal(b []byte, msg Message, deterministic bool) ([]byte, error) {
+	u := getMessageMarshalInfo(msg, a)
+	ptr := toPointer(&msg)
+	if ptr.isNil() {
+		// We get here if msg is a typed nil ((*SomeMessage)(nil)),
+		// so it satisfies the interface, and msg == nil wouldn't
+		// catch it. We don't want crash in this case.
+		return b, ErrNil
+	}
+	return u.marshal(b, ptr, deterministic)
+}
+
+func getMessageMarshalInfo(msg interface{}, a *InternalMessageInfo) *marshalInfo {
+	// u := a.marshal, but atomically.
+	// We use an atomic here to ensure memory consistency.
+	u := atomicLoadMarshalInfo(&a.marshal)
+	if u == nil {
+		// Get marshal information from type of message.
+		t := reflect.ValueOf(msg).Type()
+		if t.Kind() != reflect.Ptr {
+			panic(fmt.Sprintf("cannot handle non-pointer message type %v", t))
+		}
+		u = getMarshalInfo(t.Elem())
+		// Store it in the cache for later users.
+		// a.marshal = u, but atomically.
+		atomicStoreMarshalInfo(&a.marshal, u)
+	}
+	return u
+}
+
+// size is the main function to compute the size of the encoded data of a message.
+// ptr is the pointer to the message.
+func (u *marshalInfo) size(ptr pointer) int {
+	if atomic.LoadInt32(&u.initialized) == 0 {
+		u.computeMarshalInfo()
+	}
+
+	// If the message can marshal itself, let it do it, for compatibility.
+	// NOTE: This is not efficient.
+	if u.hasmarshaler {
+		m := ptr.asPointerTo(u.typ).Interface().(Marshaler)
+		b, _ := m.Marshal()
+		return len(b)
+	}
+
+	n := 0
+	for _, f := range u.fields {
+		if f.isPointer && ptr.offset(f.field).getPointer().isNil() {
+			// nil pointer always marshals to nothing
+			continue
+		}
+		n += f.sizer(ptr.offset(f.field), f.tagsize)
+	}
+	if u.extensions.IsValid() {
+		e := ptr.offset(u.extensions).toExtensions()
+		if u.messageset {
+			n += u.sizeMessageSet(e)
+		} else {
+			n += u.sizeExtensions(e)
+		}
+	}
+	if u.v1extensions.IsValid() {
+		m := *ptr.offset(u.v1extensions).toOldExtensions()
+		n += u.sizeV1Extensions(m)
+	}
+	if u.unrecognized.IsValid() {
+		s := *ptr.offset(u.unrecognized).toBytes()
+		n += len(s)
+	}
+	// cache the result for use in marshal
+	if u.sizecache.IsValid() {
+		atomic.StoreInt32(ptr.offset(u.sizecache).toInt32(), int32(n))
+	}
+	return n
+}
+
+// cachedsize gets the size from cache. If there is no cache (i.e. message is not generated),
+// fall back to compute the size.
+func (u *marshalInfo) cachedsize(ptr pointer) int {
+	if u.sizecache.IsValid() {
+		return int(atomic.LoadInt32(ptr.offset(u.sizecache).toInt32()))
+	}
+	return u.size(ptr)
+}
+
+// marshal is the main function to marshal a message. It takes a byte slice and appends
+// the encoded data to the end of the slice, returns the slice and error (if any).
+// ptr is the pointer to the message.
+// If deterministic is true, map is marshaled in deterministic order.
+func (u *marshalInfo) marshal(b []byte, ptr pointer, deterministic bool) ([]byte, error) {
+	if atomic.LoadInt32(&u.initialized) == 0 {
+		u.computeMarshalInfo()
+	}
+
+	// If the message can marshal itself, let it do it, for compatibility.
+	// NOTE: This is not efficient.
+	if u.hasmarshaler {
+		m := ptr.asPointerTo(u.typ).Interface().(Marshaler)
+		b1, err := m.Marshal()
+		b = append(b, b1...)
+		return b, err
+	}
+
+	var err, errLater error
+	// The old marshaler encodes extensions at beginning.
+	if u.extensions.IsValid() {
+		e := ptr.offset(u.extensions).toExtensions()
+		if u.messageset {
+			b, err = u.appendMessageSet(b, e, deterministic)
+		} else {
+			b, err = u.appendExtensions(b, e, deterministic)
+		}
+		if err != nil {
+			return b, err
+		}
+	}
+	if u.v1extensions.IsValid() {
+		m := *ptr.offset(u.v1extensions).toOldExtensions()
+		b, err = u.appendV1Extensions(b, m, deterministic)
+		if err != nil {
+			return b, err
+		}
+	}
+	for _, f := range u.fields {
+		if f.required {
+			if ptr.offset(f.field).getPointer().isNil() {
+				// Required field is not set.
+				// We record the error but keep going, to give a complete marshaling.
+				if errLater == nil {
+					errLater = &RequiredNotSetError{f.name}
+				}
+				continue
+			}
+		}
+		if f.isPointer && ptr.offset(f.field).getPointer().isNil() {
+			// nil pointer always marshals to nothing
+			continue
+		}
+		b, err = f.marshaler(b, ptr.offset(f.field), f.wiretag, deterministic)
+		if err != nil {
+			if err1, ok := err.(*RequiredNotSetError); ok {
+				// Required field in submessage is not set.
+				// We record the error but keep going, to give a complete marshaling.
+				if errLater == nil {
+					errLater = &RequiredNotSetError{f.name + "." + err1.field}
+				}
+				continue
+			}
+			if err == errRepeatedHasNil {
+				err = errors.New("proto: repeated field " + f.name + " has nil element")
+			}
+			if err == errInvalidUTF8 {
+				if errLater == nil {
+					fullName := revProtoTypes[reflect.PtrTo(u.typ)] + "." + f.name
+					errLater = &invalidUTF8Error{fullName}
+				}
+				continue
+			}
+			return b, err
+		}
+	}
+	if u.unrecognized.IsValid() {
+		s := *ptr.offset(u.unrecognized).toBytes()
+		b = append(b, s...)
+	}
+	return b, errLater
+}
+
+// computeMarshalInfo initializes the marshal info.
+func (u *marshalInfo) computeMarshalInfo() {
+	u.Lock()
+	defer u.Unlock()
+	if u.initialized != 0 { // non-atomic read is ok as it is protected by the lock
+		return
+	}
+
+	t := u.typ
+	u.unrecognized = invalidField
+	u.extensions = invalidField
+	u.v1extensions = invalidField
+	u.sizecache = invalidField
+
+	// If the message can marshal itself, let it do it, for compatibility.
+	// NOTE: This is not efficient.
+	if reflect.PtrTo(t).Implements(marshalerType) {
+		u.hasmarshaler = true
+		atomic.StoreInt32(&u.initialized, 1)
+		return
+	}
+
+	// get oneof implementers
+	var oneofImplementers []interface{}
+	switch m := reflect.Zero(reflect.PtrTo(t)).Interface().(type) {
+	case oneofFuncsIface:
+		_, _, _, oneofImplementers = m.XXX_OneofFuncs()
+	case oneofWrappersIface:
+		oneofImplementers = m.XXX_OneofWrappers()
+	}
+
+	n := t.NumField()
+
+	// deal with XXX fields first
+	for i := 0; i < t.NumField(); i++ {
+		f := t.Field(i)
+		if !strings.HasPrefix(f.Name, "XXX_") {
+			continue
+		}
+		switch f.Name {
+		case "XXX_sizecache":
+			u.sizecache = toField(&f)
+		case "XXX_unrecognized":
+			u.unrecognized = toField(&f)
+		case "XXX_InternalExtensions":
+			u.extensions = toField(&f)
+			u.messageset = f.Tag.Get("protobuf_messageset") == "1"
+		case "XXX_extensions":
+			u.v1extensions = toField(&f)
+		case "XXX_NoUnkeyedLiteral":
+			// nothing to do
+		default:
+			panic("unknown XXX field: " + f.Name)
+		}
+		n--
+	}
+
+	// normal fields
+	fields := make([]marshalFieldInfo, n) // batch allocation
+	u.fields = make([]*marshalFieldInfo, 0, n)
+	for i, j := 0, 0; i < t.NumField(); i++ {
+		f := t.Field(i)
+
+		if strings.HasPrefix(f.Name, "XXX_") {
+			continue
+		}
+		field := &fields[j]
+		j++
+		field.name = f.Name
+		u.fields = append(u.fields, field)
+		if f.Tag.Get("protobuf_oneof") != "" {
+			field.computeOneofFieldInfo(&f, oneofImplementers)
+			continue
+		}
+		if f.Tag.Get("protobuf") == "" {
+			// field has no tag (not in generated message), ignore it
+			u.fields = u.fields[:len(u.fields)-1]
+			j--
+			continue
+		}
+		field.computeMarshalFieldInfo(&f)
+	}
+
+	// fields are marshaled in tag order on the wire.
+	sort.Sort(byTag(u.fields))
+
+	atomic.StoreInt32(&u.initialized, 1)
+}
+
+// helper for sorting fields by tag
+type byTag []*marshalFieldInfo
+
+func (a byTag) Len() int           { return len(a) }
+func (a byTag) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }
+func (a byTag) Less(i, j int) bool { return a[i].wiretag < a[j].wiretag }
+
+// getExtElemInfo returns the information to marshal an extension element.
+// The info it returns is initialized.
+func (u *marshalInfo) getExtElemInfo(desc *ExtensionDesc) *marshalElemInfo {
+	// get from cache first
+	u.RLock()
+	e, ok := u.extElems[desc.Field]
+	u.RUnlock()
+	if ok {
+		return e
+	}
+
+	t := reflect.TypeOf(desc.ExtensionType) // pointer or slice to basic type or struct
+	tags := strings.Split(desc.Tag, ",")
+	tag, err := strconv.Atoi(tags[1])
+	if err != nil {
+		panic("tag is not an integer")
+	}
+	wt := wiretype(tags[0])
+	if t.Kind() == reflect.Ptr && t.Elem().Kind() != reflect.Struct {
+		t = t.Elem()
+	}
+	sizer, marshaler := typeMarshaler(t, tags, false, false)
+	var deref bool
+	if t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 {
+		t = reflect.PtrTo(t)
+		deref = true
+	}
+	e = &marshalElemInfo{
+		wiretag:   uint64(tag)<<3 | wt,
+		tagsize:   SizeVarint(uint64(tag) << 3),
+		sizer:     sizer,
+		marshaler: marshaler,
+		isptr:     t.Kind() == reflect.Ptr,
+		deref:     deref,
+	}
+
+	// update cache
+	u.Lock()
+	if u.extElems == nil {
+		u.extElems = make(map[int32]*marshalElemInfo)
+	}
+	u.extElems[desc.Field] = e
+	u.Unlock()
+	return e
+}
+
+// computeMarshalFieldInfo fills up the information to marshal a field.
+func (fi *marshalFieldInfo) computeMarshalFieldInfo(f *reflect.StructField) {
+	// parse protobuf tag of the field.
+	// tag has format of "bytes,49,opt,name=foo,def=hello!"
+	tags := strings.Split(f.Tag.Get("protobuf"), ",")
+	if tags[0] == "" {
+		return
+	}
+	tag, err := strconv.Atoi(tags[1])
+	if err != nil {
+		panic("tag is not an integer")
+	}
+	wt := wiretype(tags[0])
+	if tags[2] == "req" {
+		fi.required = true
+	}
+	fi.setTag(f, tag, wt)
+	fi.setMarshaler(f, tags)
+}
+
+func (fi *marshalFieldInfo) computeOneofFieldInfo(f *reflect.StructField, oneofImplementers []interface{}) {
+	fi.field = toField(f)
+	fi.wiretag = math.MaxInt32 // Use a large tag number, make oneofs sorted at the end. This tag will not appear on the wire.
+	fi.isPointer = true
+	fi.sizer, fi.marshaler = makeOneOfMarshaler(fi, f)
+	fi.oneofElems = make(map[reflect.Type]*marshalElemInfo)
+
+	ityp := f.Type // interface type
+	for _, o := range oneofImplementers {
+		t := reflect.TypeOf(o)
+		if !t.Implements(ityp) {
+			continue
+		}
+		sf := t.Elem().Field(0) // oneof implementer is a struct with a single field
+		tags := strings.Split(sf.Tag.Get("protobuf"), ",")
+		tag, err := strconv.Atoi(tags[1])
+		if err != nil {
+			panic("tag is not an integer")
+		}
+		wt := wiretype(tags[0])
+		sizer, marshaler := typeMarshaler(sf.Type, tags, false, true) // oneof should not omit any zero value
+		fi.oneofElems[t.Elem()] = &marshalElemInfo{
+			wiretag:   uint64(tag)<<3 | wt,
+			tagsize:   SizeVarint(uint64(tag) << 3),
+			sizer:     sizer,
+			marshaler: marshaler,
+		}
+	}
+}
+
+// wiretype returns the wire encoding of the type.
+func wiretype(encoding string) uint64 {
+	switch encoding {
+	case "fixed32":
+		return WireFixed32
+	case "fixed64":
+		return WireFixed64
+	case "varint", "zigzag32", "zigzag64":
+		return WireVarint
+	case "bytes":
+		return WireBytes
+	case "group":
+		return WireStartGroup
+	}
+	panic("unknown wire type " + encoding)
+}
+
+// setTag fills up the tag (in wire format) and its size in the info of a field.
+func (fi *marshalFieldInfo) setTag(f *reflect.StructField, tag int, wt uint64) {
+	fi.field = toField(f)
+	fi.wiretag = uint64(tag)<<3 | wt
+	fi.tagsize = SizeVarint(uint64(tag) << 3)
+}
+
+// setMarshaler fills up the sizer and marshaler in the info of a field.
+func (fi *marshalFieldInfo) setMarshaler(f *reflect.StructField, tags []string) {
+	switch f.Type.Kind() {
+	case reflect.Map:
+		// map field
+		fi.isPointer = true
+		fi.sizer, fi.marshaler = makeMapMarshaler(f)
+		return
+	case reflect.Ptr, reflect.Slice:
+		fi.isPointer = true
+	}
+	fi.sizer, fi.marshaler = typeMarshaler(f.Type, tags, true, false)
+}
+
+// typeMarshaler returns the sizer and marshaler of a given field.
+// t is the type of the field.
+// tags is the generated "protobuf" tag of the field.
+// If nozero is true, zero value is not marshaled to the wire.
+// If oneof is true, it is a oneof field.
+func typeMarshaler(t reflect.Type, tags []string, nozero, oneof bool) (sizer, marshaler) {
+	encoding := tags[0]
+
+	pointer := false
+	slice := false
+	if t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 {
+		slice = true
+		t = t.Elem()
+	}
+	if t.Kind() == reflect.Ptr {
+		pointer = true
+		t = t.Elem()
+	}
+
+	packed := false
+	proto3 := false
+	validateUTF8 := true
+	for i := 2; i < len(tags); i++ {
+		if tags[i] == "packed" {
+			packed = true
+		}
+		if tags[i] == "proto3" {
+			proto3 = true
+		}
+	}
+	validateUTF8 = validateUTF8 && proto3
+
+	switch t.Kind() {
+	case reflect.Bool:
+		if pointer {
+			return sizeBoolPtr, appendBoolPtr
+		}
+		if slice {
+			if packed {
+				return sizeBoolPackedSlice, appendBoolPackedSlice
+			}
+			return sizeBoolSlice, appendBoolSlice
+		}
+		if nozero {
+			return sizeBoolValueNoZero, appendBoolValueNoZero
+		}
+		return sizeBoolValue, appendBoolValue
+	case reflect.Uint32:
+		switch encoding {
+		case "fixed32":
+			if pointer {
+				return sizeFixed32Ptr, appendFixed32Ptr
+			}
+			if slice {
+				if packed {
+					return sizeFixed32PackedSlice, appendFixed32PackedSlice
+				}
+				return sizeFixed32Slice, appendFixed32Slice
+			}
+			if nozero {
+				return sizeFixed32ValueNoZero, appendFixed32ValueNoZero
+			}
+			return sizeFixed32Value, appendFixed32Value
+		case "varint":
+			if pointer {
+				return sizeVarint32Ptr, appendVarint32Ptr
+			}
+			if slice {
+				if packed {
+					return sizeVarint32PackedSlice, appendVarint32PackedSlice
+				}
+				return sizeVarint32Slice, appendVarint32Slice
+			}
+			if nozero {
+				return sizeVarint32ValueNoZero, appendVarint32ValueNoZero
+			}
+			return sizeVarint32Value, appendVarint32Value
+		}
+	case reflect.Int32:
+		switch encoding {
+		case "fixed32":
+			if pointer {
+				return sizeFixedS32Ptr, appendFixedS32Ptr
+			}
+			if slice {
+				if packed {
+					return sizeFixedS32PackedSlice, appendFixedS32PackedSlice
+				}
+				return sizeFixedS32Slice, appendFixedS32Slice
+			}
+			if nozero {
+				return sizeFixedS32ValueNoZero, appendFixedS32ValueNoZero
+			}
+			return sizeFixedS32Value, appendFixedS32Value
+		case "varint":
+			if pointer {
+				return sizeVarintS32Ptr, appendVarintS32Ptr
+			}
+			if slice {
+				if packed {
+					return sizeVarintS32PackedSlice, appendVarintS32PackedSlice
+				}
+				return sizeVarintS32Slice, appendVarintS32Slice
+			}
+			if nozero {
+				return sizeVarintS32ValueNoZero, appendVarintS32ValueNoZero
+			}
+			return sizeVarintS32Value, appendVarintS32Value
+		case "zigzag32":
+			if pointer {
+				return sizeZigzag32Ptr, appendZigzag32Ptr
+			}
+			if slice {
+				if packed {
+					return sizeZigzag32PackedSlice, appendZigzag32PackedSlice
+				}
+				return sizeZigzag32Slice, appendZigzag32Slice
+			}
+			if nozero {
+				return sizeZigzag32ValueNoZero, appendZigzag32ValueNoZero
+			}
+			return sizeZigzag32Value, appendZigzag32Value
+		}
+	case reflect.Uint64:
+		switch encoding {
+		case "fixed64":
+			if pointer {
+				return sizeFixed64Ptr, appendFixed64Ptr
+			}
+			if slice {
+				if packed {
+					return sizeFixed64PackedSlice, appendFixed64PackedSlice
+				}
+				return sizeFixed64Slice, appendFixed64Slice
+			}
+			if nozero {
+				return sizeFixed64ValueNoZero, appendFixed64ValueNoZero
+			}
+			return sizeFixed64Value, appendFixed64Value
+		case "varint":
+			if pointer {
+				return sizeVarint64Ptr, appendVarint64Ptr
+			}
+			if slice {
+				if packed {
+					return sizeVarint64PackedSlice, appendVarint64PackedSlice
+				}
+				return sizeVarint64Slice, appendVarint64Slice
+			}
+			if nozero {
+				return sizeVarint64ValueNoZero, appendVarint64ValueNoZero
+			}
+			return sizeVarint64Value, appendVarint64Value
+		}
+	case reflect.Int64:
+		switch encoding {
+		case "fixed64":
+			if pointer {
+				return sizeFixedS64Ptr, appendFixedS64Ptr
+			}
+			if slice {
+				if packed {
+					return sizeFixedS64PackedSlice, appendFixedS64PackedSlice
+				}
+				return sizeFixedS64Slice, appendFixedS64Slice
+			}
+			if nozero {
+				return sizeFixedS64ValueNoZero, appendFixedS64ValueNoZero
+			}
+			return sizeFixedS64Value, appendFixedS64Value
+		case "varint":
+			if pointer {
+				return sizeVarintS64Ptr, appendVarintS64Ptr
+			}
+			if slice {
+				if packed {
+					return sizeVarintS64PackedSlice, appendVarintS64PackedSlice
+				}
+				return sizeVarintS64Slice, appendVarintS64Slice
+			}
+			if nozero {
+				return sizeVarintS64ValueNoZero, appendVarintS64ValueNoZero
+			}
+			return sizeVarintS64Value, appendVarintS64Value
+		case "zigzag64":
+			if pointer {
+				return sizeZigzag64Ptr, appendZigzag64Ptr
+			}
+			if slice {
+				if packed {
+					return sizeZigzag64PackedSlice, appendZigzag64PackedSlice
+				}
+				return sizeZigzag64Slice, appendZigzag64Slice
+			}
+			if nozero {
+				return sizeZigzag64ValueNoZero, appendZigzag64ValueNoZero
+			}
+			return sizeZigzag64Value, appendZigzag64Value
+		}
+	case reflect.Float32:
+		if pointer {
+			return sizeFloat32Ptr, appendFloat32Ptr
+		}
+		if slice {
+			if packed {
+				return sizeFloat32PackedSlice, appendFloat32PackedSlice
+			}
+			return sizeFloat32Slice, appendFloat32Slice
+		}
+		if nozero {
+			return sizeFloat32ValueNoZero, appendFloat32ValueNoZero
+		}
+		return sizeFloat32Value, appendFloat32Value
+	case reflect.Float64:
+		if pointer {
+			return sizeFloat64Ptr, appendFloat64Ptr
+		}
+		if slice {
+			if packed {
+				return sizeFloat64PackedSlice, appendFloat64PackedSlice
+			}
+			return sizeFloat64Slice, appendFloat64Slice
+		}
+		if nozero {
+			return sizeFloat64ValueNoZero, appendFloat64ValueNoZero
+		}
+		return sizeFloat64Value, appendFloat64Value
+	case reflect.String:
+		if validateUTF8 {
+			if pointer {
+				return sizeStringPtr, appendUTF8StringPtr
+			}
+			if slice {
+				return sizeStringSlice, appendUTF8StringSlice
+			}
+			if nozero {
+				return sizeStringValueNoZero, appendUTF8StringValueNoZero
+			}
+			return sizeStringValue, appendUTF8StringValue
+		}
+		if pointer {
+			return sizeStringPtr, appendStringPtr
+		}
+		if slice {
+			return sizeStringSlice, appendStringSlice
+		}
+		if nozero {
+			return sizeStringValueNoZero, appendStringValueNoZero
+		}
+		return sizeStringValue, appendStringValue
+	case reflect.Slice:
+		if slice {
+			return sizeBytesSlice, appendBytesSlice
+		}
+		if oneof {
+			// Oneof bytes field may also have "proto3" tag.
+			// We want to marshal it as a oneof field. Do this
+			// check before the proto3 check.
+			return sizeBytesOneof, appendBytesOneof
+		}
+		if proto3 {
+			return sizeBytes3, appendBytes3
+		}
+		return sizeBytes, appendBytes
+	case reflect.Struct:
+		switch encoding {
+		case "group":
+			if slice {
+				return makeGroupSliceMarshaler(getMarshalInfo(t))
+			}
+			return makeGroupMarshaler(getMarshalInfo(t))
+		case "bytes":
+			if slice {
+				return makeMessageSliceMarshaler(getMarshalInfo(t))
+			}
+			return makeMessageMarshaler(getMarshalInfo(t))
+		}
+	}
+	panic(fmt.Sprintf("unknown or mismatched type: type: %v, wire type: %v", t, encoding))
+}
+
+// Below are functions to size/marshal a specific type of a field.
+// They are stored in the field's info, and called by function pointers.
+// They have type sizer or marshaler.
+
+func sizeFixed32Value(_ pointer, tagsize int) int {
+	return 4 + tagsize
+}
+func sizeFixed32ValueNoZero(ptr pointer, tagsize int) int {
+	v := *ptr.toUint32()
+	if v == 0 {
+		return 0
+	}
+	return 4 + tagsize
+}
+func sizeFixed32Ptr(ptr pointer, tagsize int) int {
+	p := *ptr.toUint32Ptr()
+	if p == nil {
+		return 0
+	}
+	return 4 + tagsize
+}
+func sizeFixed32Slice(ptr pointer, tagsize int) int {
+	s := *ptr.toUint32Slice()
+	return (4 + tagsize) * len(s)
+}
+func sizeFixed32PackedSlice(ptr pointer, tagsize int) int {
+	s := *ptr.toUint32Slice()
+	if len(s) == 0 {
+		return 0
+	}
+	return 4*len(s) + SizeVarint(uint64(4*len(s))) + tagsize
+}
+func sizeFixedS32Value(_ pointer, tagsize int) int {
+	return 4 + tagsize
+}
+func sizeFixedS32ValueNoZero(ptr pointer, tagsize int) int {
+	v := *ptr.toInt32()
+	if v == 0 {
+		return 0
+	}
+	return 4 + tagsize
+}
+func sizeFixedS32Ptr(ptr pointer, tagsize int) int {
+	p := ptr.getInt32Ptr()
+	if p == nil {
+		return 0
+	}
+	return 4 + tagsize
+}
+func sizeFixedS32Slice(ptr pointer, tagsize int) int {
+	s := ptr.getInt32Slice()
+	return (4 + tagsize) * len(s)
+}
+func sizeFixedS32PackedSlice(ptr pointer, tagsize int) int {
+	s := ptr.getInt32Slice()
+	if len(s) == 0 {
+		return 0
+	}
+	return 4*len(s) + SizeVarint(uint64(4*len(s))) + tagsize
+}
+func sizeFloat32Value(_ pointer, tagsize int) int {
+	return 4 + tagsize
+}
+func sizeFloat32ValueNoZero(ptr pointer, tagsize int) int {
+	v := math.Float32bits(*ptr.toFloat32())
+	if v == 0 {
+		return 0
+	}
+	return 4 + tagsize
+}
+func sizeFloat32Ptr(ptr pointer, tagsize int) int {
+	p := *ptr.toFloat32Ptr()
+	if p == nil {
+		return 0
+	}
+	return 4 + tagsize
+}
+func sizeFloat32Slice(ptr pointer, tagsize int) int {
+	s := *ptr.toFloat32Slice()
+	return (4 + tagsize) * len(s)
+}
+func sizeFloat32PackedSlice(ptr pointer, tagsize int) int {
+	s := *ptr.toFloat32Slice()
+	if len(s) == 0 {
+		return 0
+	}
+	return 4*len(s) + SizeVarint(uint64(4*len(s))) + tagsize
+}
+func sizeFixed64Value(_ pointer, tagsize int) int {
+	return 8 + tagsize
+}
+func sizeFixed64ValueNoZero(ptr pointer, tagsize int) int {
+	v := *ptr.toUint64()
+	if v == 0 {
+		return 0
+	}
+	return 8 + tagsize
+}
+func sizeFixed64Ptr(ptr pointer, tagsize int) int {
+	p := *ptr.toUint64Ptr()
+	if p == nil {
+		return 0
+	}
+	return 8 + tagsize
+}
+func sizeFixed64Slice(ptr pointer, tagsize int) int {
+	s := *ptr.toUint64Slice()
+	return (8 + tagsize) * len(s)
+}
+func sizeFixed64PackedSlice(ptr pointer, tagsize int) int {
+	s := *ptr.toUint64Slice()
+	if len(s) == 0 {
+		return 0
+	}
+	return 8*len(s) + SizeVarint(uint64(8*len(s))) + tagsize
+}
+func sizeFixedS64Value(_ pointer, tagsize int) int {
+	return 8 + tagsize
+}
+func sizeFixedS64ValueNoZero(ptr pointer, tagsize int) int {
+	v := *ptr.toInt64()
+	if v == 0 {
+		return 0
+	}
+	return 8 + tagsize
+}
+func sizeFixedS64Ptr(ptr pointer, tagsize int) int {
+	p := *ptr.toInt64Ptr()
+	if p == nil {
+		return 0
+	}
+	return 8 + tagsize
+}
+func sizeFixedS64Slice(ptr pointer, tagsize int) int {
+	s := *ptr.toInt64Slice()
+	return (8 + tagsize) * len(s)
+}
+func sizeFixedS64PackedSlice(ptr pointer, tagsize int) int {
+	s := *ptr.toInt64Slice()
+	if len(s) == 0 {
+		return 0
+	}
+	return 8*len(s) + SizeVarint(uint64(8*len(s))) + tagsize
+}
+func sizeFloat64Value(_ pointer, tagsize int) int {
+	return 8 + tagsize
+}
+func sizeFloat64ValueNoZero(ptr pointer, tagsize int) int {
+	v := math.Float64bits(*ptr.toFloat64())
+	if v == 0 {
+		return 0
+	}
+	return 8 + tagsize
+}
+func sizeFloat64Ptr(ptr pointer, tagsize int) int {
+	p := *ptr.toFloat64Ptr()
+	if p == nil {
+		return 0
+	}
+	return 8 + tagsize
+}
+func sizeFloat64Slice(ptr pointer, tagsize int) int {
+	s := *ptr.toFloat64Slice()
+	return (8 + tagsize) * len(s)
+}
+func sizeFloat64PackedSlice(ptr pointer, tagsize int) int {
+	s := *ptr.toFloat64Slice()
+	if len(s) == 0 {
+		return 0
+	}
+	return 8*len(s) + SizeVarint(uint64(8*len(s))) + tagsize
+}
+func sizeVarint32Value(ptr pointer, tagsize int) int {
+	v := *ptr.toUint32()
+	return SizeVarint(uint64(v)) + tagsize
+}
+func sizeVarint32ValueNoZero(ptr pointer, tagsize int) int {
+	v := *ptr.toUint32()
+	if v == 0 {
+		return 0
+	}
+	return SizeVarint(uint64(v)) + tagsize
+}
+func sizeVarint32Ptr(ptr pointer, tagsize int) int {
+	p := *ptr.toUint32Ptr()
+	if p == nil {
+		return 0
+	}
+	return SizeVarint(uint64(*p)) + tagsize
+}
+func sizeVarint32Slice(ptr pointer, tagsize int) int {
+	s := *ptr.toUint32Slice()
+	n := 0
+	for _, v := range s {
+		n += SizeVarint(uint64(v)) + tagsize
+	}
+	return n
+}
+func sizeVarint32PackedSlice(ptr pointer, tagsize int) int {
+	s := *ptr.toUint32Slice()
+	if len(s) == 0 {
+		return 0
+	}
+	n := 0
+	for _, v := range s {
+		n += SizeVarint(uint64(v))
+	}
+	return n + SizeVarint(uint64(n)) + tagsize
+}
+func sizeVarintS32Value(ptr pointer, tagsize int) int {
+	v := *ptr.toInt32()
+	return SizeVarint(uint64(v)) + tagsize
+}
+func sizeVarintS32ValueNoZero(ptr pointer, tagsize int) int {
+	v := *ptr.toInt32()
+	if v == 0 {
+		return 0
+	}
+	return SizeVarint(uint64(v)) + tagsize
+}
+func sizeVarintS32Ptr(ptr pointer, tagsize int) int {
+	p := ptr.getInt32Ptr()
+	if p == nil {
+		return 0
+	}
+	return SizeVarint(uint64(*p)) + tagsize
+}
+func sizeVarintS32Slice(ptr pointer, tagsize int) int {
+	s := ptr.getInt32Slice()
+	n := 0
+	for _, v := range s {
+		n += SizeVarint(uint64(v)) + tagsize
+	}
+	return n
+}
+func sizeVarintS32PackedSlice(ptr pointer, tagsize int) int {
+	s := ptr.getInt32Slice()
+	if len(s) == 0 {
+		return 0
+	}
+	n := 0
+	for _, v := range s {
+		n += SizeVarint(uint64(v))
+	}
+	return n + SizeVarint(uint64(n)) + tagsize
+}
+func sizeVarint64Value(ptr pointer, tagsize int) int {
+	v := *ptr.toUint64()
+	return SizeVarint(v) + tagsize
+}
+func sizeVarint64ValueNoZero(ptr pointer, tagsize int) int {
+	v := *ptr.toUint64()
+	if v == 0 {
+		return 0
+	}
+	return SizeVarint(v) + tagsize
+}
+func sizeVarint64Ptr(ptr pointer, tagsize int) int {
+	p := *ptr.toUint64Ptr()
+	if p == nil {
+		return 0
+	}
+	return SizeVarint(*p) + tagsize
+}
+func sizeVarint64Slice(ptr pointer, tagsize int) int {
+	s := *ptr.toUint64Slice()
+	n := 0
+	for _, v := range s {
+		n += SizeVarint(v) + tagsize
+	}
+	return n
+}
+func sizeVarint64PackedSlice(ptr pointer, tagsize int) int {
+	s := *ptr.toUint64Slice()
+	if len(s) == 0 {
+		return 0
+	}
+	n := 0
+	for _, v := range s {
+		n += SizeVarint(v)
+	}
+	return n + SizeVarint(uint64(n)) + tagsize
+}
+func sizeVarintS64Value(ptr pointer, tagsize int) int {
+	v := *ptr.toInt64()
+	return SizeVarint(uint64(v)) + tagsize
+}
+func sizeVarintS64ValueNoZero(ptr pointer, tagsize int) int {
+	v := *ptr.toInt64()
+	if v == 0 {
+		return 0
+	}
+	return SizeVarint(uint64(v)) + tagsize
+}
+func sizeVarintS64Ptr(ptr pointer, tagsize int) int {
+	p := *ptr.toInt64Ptr()
+	if p == nil {
+		return 0
+	}
+	return SizeVarint(uint64(*p)) + tagsize
+}
+func sizeVarintS64Slice(ptr pointer, tagsize int) int {
+	s := *ptr.toInt64Slice()
+	n := 0
+	for _, v := range s {
+		n += SizeVarint(uint64(v)) + tagsize
+	}
+	return n
+}
+func sizeVarintS64PackedSlice(ptr pointer, tagsize int) int {
+	s := *ptr.toInt64Slice()
+	if len(s) == 0 {
+		return 0
+	}
+	n := 0
+	for _, v := range s {
+		n += SizeVarint(uint64(v))
+	}
+	return n + SizeVarint(uint64(n)) + tagsize
+}
+func sizeZigzag32Value(ptr pointer, tagsize int) int {
+	v := *ptr.toInt32()
+	return SizeVarint(uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) + tagsize
+}
+func sizeZigzag32ValueNoZero(ptr pointer, tagsize int) int {
+	v := *ptr.toInt32()
+	if v == 0 {
+		return 0
+	}
+	return SizeVarint(uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) + tagsize
+}
+func sizeZigzag32Ptr(ptr pointer, tagsize int) int {
+	p := ptr.getInt32Ptr()
+	if p == nil {
+		return 0
+	}
+	v := *p
+	return SizeVarint(uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) + tagsize
+}
+func sizeZigzag32Slice(ptr pointer, tagsize int) int {
+	s := ptr.getInt32Slice()
+	n := 0
+	for _, v := range s {
+		n += SizeVarint(uint64((uint32(v)<<1)^uint32((int32(v)>>31)))) + tagsize
+	}
+	return n
+}
+func sizeZigzag32PackedSlice(ptr pointer, tagsize int) int {
+	s := ptr.getInt32Slice()
+	if len(s) == 0 {
+		return 0
+	}
+	n := 0
+	for _, v := range s {
+		n += SizeVarint(uint64((uint32(v) << 1) ^ uint32((int32(v) >> 31))))
+	}
+	return n + SizeVarint(uint64(n)) + tagsize
+}
+func sizeZigzag64Value(ptr pointer, tagsize int) int {
+	v := *ptr.toInt64()
+	return SizeVarint(uint64(v<<1)^uint64((int64(v)>>63))) + tagsize
+}
+func sizeZigzag64ValueNoZero(ptr pointer, tagsize int) int {
+	v := *ptr.toInt64()
+	if v == 0 {
+		return 0
+	}
+	return SizeVarint(uint64(v<<1)^uint64((int64(v)>>63))) + tagsize
+}
+func sizeZigzag64Ptr(ptr pointer, tagsize int) int {
+	p := *ptr.toInt64Ptr()
+	if p == nil {
+		return 0
+	}
+	v := *p
+	return SizeVarint(uint64(v<<1)^uint64((int64(v)>>63))) + tagsize
+}
+func sizeZigzag64Slice(ptr pointer, tagsize int) int {
+	s := *ptr.toInt64Slice()
+	n := 0
+	for _, v := range s {
+		n += SizeVarint(uint64(v<<1)^uint64((int64(v)>>63))) + tagsize
+	}
+	return n
+}
+func sizeZigzag64PackedSlice(ptr pointer, tagsize int) int {
+	s := *ptr.toInt64Slice()
+	if len(s) == 0 {
+		return 0
+	}
+	n := 0
+	for _, v := range s {
+		n += SizeVarint(uint64(v<<1) ^ uint64((int64(v) >> 63)))
+	}
+	return n + SizeVarint(uint64(n)) + tagsize
+}
+func sizeBoolValue(_ pointer, tagsize int) int {
+	return 1 + tagsize
+}
+func sizeBoolValueNoZero(ptr pointer, tagsize int) int {
+	v := *ptr.toBool()
+	if !v {
+		return 0
+	}
+	return 1 + tagsize
+}
+func sizeBoolPtr(ptr pointer, tagsize int) int {
+	p := *ptr.toBoolPtr()
+	if p == nil {
+		return 0
+	}
+	return 1 + tagsize
+}
+func sizeBoolSlice(ptr pointer, tagsize int) int {
+	s := *ptr.toBoolSlice()
+	return (1 + tagsize) * len(s)
+}
+func sizeBoolPackedSlice(ptr pointer, tagsize int) int {
+	s := *ptr.toBoolSlice()
+	if len(s) == 0 {
+		return 0
+	}
+	return len(s) + SizeVarint(uint64(len(s))) + tagsize
+}
+func sizeStringValue(ptr pointer, tagsize int) int {
+	v := *ptr.toString()
+	return len(v) + SizeVarint(uint64(len(v))) + tagsize
+}
+func sizeStringValueNoZero(ptr pointer, tagsize int) int {
+	v := *ptr.toString()
+	if v == "" {
+		return 0
+	}
+	return len(v) + SizeVarint(uint64(len(v))) + tagsize
+}
+func sizeStringPtr(ptr pointer, tagsize int) int {
+	p := *ptr.toStringPtr()
+	if p == nil {
+		return 0
+	}
+	v := *p
+	return len(v) + SizeVarint(uint64(len(v))) + tagsize
+}
+func sizeStringSlice(ptr pointer, tagsize int) int {
+	s := *ptr.toStringSlice()
+	n := 0
+	for _, v := range s {
+		n += len(v) + SizeVarint(uint64(len(v))) + tagsize
+	}
+	return n
+}
+func sizeBytes(ptr pointer, tagsize int) int {
+	v := *ptr.toBytes()
+	if v == nil {
+		return 0
+	}
+	return len(v) + SizeVarint(uint64(len(v))) + tagsize
+}
+func sizeBytes3(ptr pointer, tagsize int) int {
+	v := *ptr.toBytes()
+	if len(v) == 0 {
+		return 0
+	}
+	return len(v) + SizeVarint(uint64(len(v))) + tagsize
+}
+func sizeBytesOneof(ptr pointer, tagsize int) int {
+	v := *ptr.toBytes()
+	return len(v) + SizeVarint(uint64(len(v))) + tagsize
+}
+func sizeBytesSlice(ptr pointer, tagsize int) int {
+	s := *ptr.toBytesSlice()
+	n := 0
+	for _, v := range s {
+		n += len(v) + SizeVarint(uint64(len(v))) + tagsize
+	}
+	return n
+}
+
+// appendFixed32 appends an encoded fixed32 to b.
+func appendFixed32(b []byte, v uint32) []byte {
+	b = append(b,
+		byte(v),
+		byte(v>>8),
+		byte(v>>16),
+		byte(v>>24))
+	return b
+}
+
+// appendFixed64 appends an encoded fixed64 to b.
+func appendFixed64(b []byte, v uint64) []byte {
+	b = append(b,
+		byte(v),
+		byte(v>>8),
+		byte(v>>16),
+		byte(v>>24),
+		byte(v>>32),
+		byte(v>>40),
+		byte(v>>48),
+		byte(v>>56))
+	return b
+}
+
+// appendVarint appends an encoded varint to b.
+func appendVarint(b []byte, v uint64) []byte {
+	// TODO: make 1-byte (maybe 2-byte) case inline-able, once we
+	// have non-leaf inliner.
+	switch {
+	case v < 1<<7:
+		b = append(b, byte(v))
+	case v < 1<<14:
+		b = append(b,
+			byte(v&0x7f|0x80),
+			byte(v>>7))
+	case v < 1<<21:
+		b = append(b,
+			byte(v&0x7f|0x80),
+			byte((v>>7)&0x7f|0x80),
+			byte(v>>14))
+	case v < 1<<28:
+		b = append(b,
+			byte(v&0x7f|0x80),
+			byte((v>>7)&0x7f|0x80),
+			byte((v>>14)&0x7f|0x80),
+			byte(v>>21))
+	case v < 1<<35:
+		b = append(b,
+			byte(v&0x7f|0x80),
+			byte((v>>7)&0x7f|0x80),
+			byte((v>>14)&0x7f|0x80),
+			byte((v>>21)&0x7f|0x80),
+			byte(v>>28))
+	case v < 1<<42:
+		b = append(b,
+			byte(v&0x7f|0x80),
+			byte((v>>7)&0x7f|0x80),
+			byte((v>>14)&0x7f|0x80),
+			byte((v>>21)&0x7f|0x80),
+			byte((v>>28)&0x7f|0x80),
+			byte(v>>35))
+	case v < 1<<49:
+		b = append(b,
+			byte(v&0x7f|0x80),
+			byte((v>>7)&0x7f|0x80),
+			byte((v>>14)&0x7f|0x80),
+			byte((v>>21)&0x7f|0x80),
+			byte((v>>28)&0x7f|0x80),
+			byte((v>>35)&0x7f|0x80),
+			byte(v>>42))
+	case v < 1<<56:
+		b = append(b,
+			byte(v&0x7f|0x80),
+			byte((v>>7)&0x7f|0x80),
+			byte((v>>14)&0x7f|0x80),
+			byte((v>>21)&0x7f|0x80),
+			byte((v>>28)&0x7f|0x80),
+			byte((v>>35)&0x7f|0x80),
+			byte((v>>42)&0x7f|0x80),
+			byte(v>>49))
+	case v < 1<<63:
+		b = append(b,
+			byte(v&0x7f|0x80),
+			byte((v>>7)&0x7f|0x80),
+			byte((v>>14)&0x7f|0x80),
+			byte((v>>21)&0x7f|0x80),
+			byte((v>>28)&0x7f|0x80),
+			byte((v>>35)&0x7f|0x80),
+			byte((v>>42)&0x7f|0x80),
+			byte((v>>49)&0x7f|0x80),
+			byte(v>>56))
+	default:
+		b = append(b,
+			byte(v&0x7f|0x80),
+			byte((v>>7)&0x7f|0x80),
+			byte((v>>14)&0x7f|0x80),
+			byte((v>>21)&0x7f|0x80),
+			byte((v>>28)&0x7f|0x80),
+			byte((v>>35)&0x7f|0x80),
+			byte((v>>42)&0x7f|0x80),
+			byte((v>>49)&0x7f|0x80),
+			byte((v>>56)&0x7f|0x80),
+			1)
+	}
+	return b
+}
+
+func appendFixed32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toUint32()
+	b = appendVarint(b, wiretag)
+	b = appendFixed32(b, v)
+	return b, nil
+}
+func appendFixed32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toUint32()
+	if v == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendFixed32(b, v)
+	return b, nil
+}
+func appendFixed32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	p := *ptr.toUint32Ptr()
+	if p == nil {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendFixed32(b, *p)
+	return b, nil
+}
+func appendFixed32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := *ptr.toUint32Slice()
+	for _, v := range s {
+		b = appendVarint(b, wiretag)
+		b = appendFixed32(b, v)
+	}
+	return b, nil
+}
+func appendFixed32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := *ptr.toUint32Slice()
+	if len(s) == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag&^7|WireBytes)
+	b = appendVarint(b, uint64(4*len(s)))
+	for _, v := range s {
+		b = appendFixed32(b, v)
+	}
+	return b, nil
+}
+func appendFixedS32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toInt32()
+	b = appendVarint(b, wiretag)
+	b = appendFixed32(b, uint32(v))
+	return b, nil
+}
+func appendFixedS32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toInt32()
+	if v == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendFixed32(b, uint32(v))
+	return b, nil
+}
+func appendFixedS32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	p := ptr.getInt32Ptr()
+	if p == nil {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendFixed32(b, uint32(*p))
+	return b, nil
+}
+func appendFixedS32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := ptr.getInt32Slice()
+	for _, v := range s {
+		b = appendVarint(b, wiretag)
+		b = appendFixed32(b, uint32(v))
+	}
+	return b, nil
+}
+func appendFixedS32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := ptr.getInt32Slice()
+	if len(s) == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag&^7|WireBytes)
+	b = appendVarint(b, uint64(4*len(s)))
+	for _, v := range s {
+		b = appendFixed32(b, uint32(v))
+	}
+	return b, nil
+}
+func appendFloat32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := math.Float32bits(*ptr.toFloat32())
+	b = appendVarint(b, wiretag)
+	b = appendFixed32(b, v)
+	return b, nil
+}
+func appendFloat32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := math.Float32bits(*ptr.toFloat32())
+	if v == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendFixed32(b, v)
+	return b, nil
+}
+func appendFloat32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	p := *ptr.toFloat32Ptr()
+	if p == nil {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendFixed32(b, math.Float32bits(*p))
+	return b, nil
+}
+func appendFloat32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := *ptr.toFloat32Slice()
+	for _, v := range s {
+		b = appendVarint(b, wiretag)
+		b = appendFixed32(b, math.Float32bits(v))
+	}
+	return b, nil
+}
+func appendFloat32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := *ptr.toFloat32Slice()
+	if len(s) == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag&^7|WireBytes)
+	b = appendVarint(b, uint64(4*len(s)))
+	for _, v := range s {
+		b = appendFixed32(b, math.Float32bits(v))
+	}
+	return b, nil
+}
+func appendFixed64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toUint64()
+	b = appendVarint(b, wiretag)
+	b = appendFixed64(b, v)
+	return b, nil
+}
+func appendFixed64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toUint64()
+	if v == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendFixed64(b, v)
+	return b, nil
+}
+func appendFixed64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	p := *ptr.toUint64Ptr()
+	if p == nil {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendFixed64(b, *p)
+	return b, nil
+}
+func appendFixed64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := *ptr.toUint64Slice()
+	for _, v := range s {
+		b = appendVarint(b, wiretag)
+		b = appendFixed64(b, v)
+	}
+	return b, nil
+}
+func appendFixed64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := *ptr.toUint64Slice()
+	if len(s) == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag&^7|WireBytes)
+	b = appendVarint(b, uint64(8*len(s)))
+	for _, v := range s {
+		b = appendFixed64(b, v)
+	}
+	return b, nil
+}
+func appendFixedS64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toInt64()
+	b = appendVarint(b, wiretag)
+	b = appendFixed64(b, uint64(v))
+	return b, nil
+}
+func appendFixedS64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toInt64()
+	if v == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendFixed64(b, uint64(v))
+	return b, nil
+}
+func appendFixedS64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	p := *ptr.toInt64Ptr()
+	if p == nil {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendFixed64(b, uint64(*p))
+	return b, nil
+}
+func appendFixedS64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := *ptr.toInt64Slice()
+	for _, v := range s {
+		b = appendVarint(b, wiretag)
+		b = appendFixed64(b, uint64(v))
+	}
+	return b, nil
+}
+func appendFixedS64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := *ptr.toInt64Slice()
+	if len(s) == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag&^7|WireBytes)
+	b = appendVarint(b, uint64(8*len(s)))
+	for _, v := range s {
+		b = appendFixed64(b, uint64(v))
+	}
+	return b, nil
+}
+func appendFloat64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := math.Float64bits(*ptr.toFloat64())
+	b = appendVarint(b, wiretag)
+	b = appendFixed64(b, v)
+	return b, nil
+}
+func appendFloat64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := math.Float64bits(*ptr.toFloat64())
+	if v == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendFixed64(b, v)
+	return b, nil
+}
+func appendFloat64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	p := *ptr.toFloat64Ptr()
+	if p == nil {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendFixed64(b, math.Float64bits(*p))
+	return b, nil
+}
+func appendFloat64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := *ptr.toFloat64Slice()
+	for _, v := range s {
+		b = appendVarint(b, wiretag)
+		b = appendFixed64(b, math.Float64bits(v))
+	}
+	return b, nil
+}
+func appendFloat64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := *ptr.toFloat64Slice()
+	if len(s) == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag&^7|WireBytes)
+	b = appendVarint(b, uint64(8*len(s)))
+	for _, v := range s {
+		b = appendFixed64(b, math.Float64bits(v))
+	}
+	return b, nil
+}
+func appendVarint32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toUint32()
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, uint64(v))
+	return b, nil
+}
+func appendVarint32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toUint32()
+	if v == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, uint64(v))
+	return b, nil
+}
+func appendVarint32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	p := *ptr.toUint32Ptr()
+	if p == nil {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, uint64(*p))
+	return b, nil
+}
+func appendVarint32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := *ptr.toUint32Slice()
+	for _, v := range s {
+		b = appendVarint(b, wiretag)
+		b = appendVarint(b, uint64(v))
+	}
+	return b, nil
+}
+func appendVarint32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := *ptr.toUint32Slice()
+	if len(s) == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag&^7|WireBytes)
+	// compute size
+	n := 0
+	for _, v := range s {
+		n += SizeVarint(uint64(v))
+	}
+	b = appendVarint(b, uint64(n))
+	for _, v := range s {
+		b = appendVarint(b, uint64(v))
+	}
+	return b, nil
+}
+func appendVarintS32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toInt32()
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, uint64(v))
+	return b, nil
+}
+func appendVarintS32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toInt32()
+	if v == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, uint64(v))
+	return b, nil
+}
+func appendVarintS32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	p := ptr.getInt32Ptr()
+	if p == nil {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, uint64(*p))
+	return b, nil
+}
+func appendVarintS32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := ptr.getInt32Slice()
+	for _, v := range s {
+		b = appendVarint(b, wiretag)
+		b = appendVarint(b, uint64(v))
+	}
+	return b, nil
+}
+func appendVarintS32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := ptr.getInt32Slice()
+	if len(s) == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag&^7|WireBytes)
+	// compute size
+	n := 0
+	for _, v := range s {
+		n += SizeVarint(uint64(v))
+	}
+	b = appendVarint(b, uint64(n))
+	for _, v := range s {
+		b = appendVarint(b, uint64(v))
+	}
+	return b, nil
+}
+func appendVarint64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toUint64()
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, v)
+	return b, nil
+}
+func appendVarint64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toUint64()
+	if v == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, v)
+	return b, nil
+}
+func appendVarint64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	p := *ptr.toUint64Ptr()
+	if p == nil {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, *p)
+	return b, nil
+}
+func appendVarint64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := *ptr.toUint64Slice()
+	for _, v := range s {
+		b = appendVarint(b, wiretag)
+		b = appendVarint(b, v)
+	}
+	return b, nil
+}
+func appendVarint64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := *ptr.toUint64Slice()
+	if len(s) == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag&^7|WireBytes)
+	// compute size
+	n := 0
+	for _, v := range s {
+		n += SizeVarint(v)
+	}
+	b = appendVarint(b, uint64(n))
+	for _, v := range s {
+		b = appendVarint(b, v)
+	}
+	return b, nil
+}
+func appendVarintS64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toInt64()
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, uint64(v))
+	return b, nil
+}
+func appendVarintS64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toInt64()
+	if v == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, uint64(v))
+	return b, nil
+}
+func appendVarintS64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	p := *ptr.toInt64Ptr()
+	if p == nil {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, uint64(*p))
+	return b, nil
+}
+func appendVarintS64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := *ptr.toInt64Slice()
+	for _, v := range s {
+		b = appendVarint(b, wiretag)
+		b = appendVarint(b, uint64(v))
+	}
+	return b, nil
+}
+func appendVarintS64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := *ptr.toInt64Slice()
+	if len(s) == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag&^7|WireBytes)
+	// compute size
+	n := 0
+	for _, v := range s {
+		n += SizeVarint(uint64(v))
+	}
+	b = appendVarint(b, uint64(n))
+	for _, v := range s {
+		b = appendVarint(b, uint64(v))
+	}
+	return b, nil
+}
+func appendZigzag32Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toInt32()
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31))))
+	return b, nil
+}
+func appendZigzag32ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toInt32()
+	if v == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31))))
+	return b, nil
+}
+func appendZigzag32Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	p := ptr.getInt32Ptr()
+	if p == nil {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	v := *p
+	b = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31))))
+	return b, nil
+}
+func appendZigzag32Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := ptr.getInt32Slice()
+	for _, v := range s {
+		b = appendVarint(b, wiretag)
+		b = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31))))
+	}
+	return b, nil
+}
+func appendZigzag32PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := ptr.getInt32Slice()
+	if len(s) == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag&^7|WireBytes)
+	// compute size
+	n := 0
+	for _, v := range s {
+		n += SizeVarint(uint64((uint32(v) << 1) ^ uint32((int32(v) >> 31))))
+	}
+	b = appendVarint(b, uint64(n))
+	for _, v := range s {
+		b = appendVarint(b, uint64((uint32(v)<<1)^uint32((int32(v)>>31))))
+	}
+	return b, nil
+}
+func appendZigzag64Value(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toInt64()
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63)))
+	return b, nil
+}
+func appendZigzag64ValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toInt64()
+	if v == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63)))
+	return b, nil
+}
+func appendZigzag64Ptr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	p := *ptr.toInt64Ptr()
+	if p == nil {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	v := *p
+	b = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63)))
+	return b, nil
+}
+func appendZigzag64Slice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := *ptr.toInt64Slice()
+	for _, v := range s {
+		b = appendVarint(b, wiretag)
+		b = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63)))
+	}
+	return b, nil
+}
+func appendZigzag64PackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := *ptr.toInt64Slice()
+	if len(s) == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag&^7|WireBytes)
+	// compute size
+	n := 0
+	for _, v := range s {
+		n += SizeVarint(uint64(v<<1) ^ uint64((int64(v) >> 63)))
+	}
+	b = appendVarint(b, uint64(n))
+	for _, v := range s {
+		b = appendVarint(b, uint64(v<<1)^uint64((int64(v)>>63)))
+	}
+	return b, nil
+}
+func appendBoolValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toBool()
+	b = appendVarint(b, wiretag)
+	if v {
+		b = append(b, 1)
+	} else {
+		b = append(b, 0)
+	}
+	return b, nil
+}
+func appendBoolValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toBool()
+	if !v {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = append(b, 1)
+	return b, nil
+}
+
+func appendBoolPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	p := *ptr.toBoolPtr()
+	if p == nil {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	if *p {
+		b = append(b, 1)
+	} else {
+		b = append(b, 0)
+	}
+	return b, nil
+}
+func appendBoolSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := *ptr.toBoolSlice()
+	for _, v := range s {
+		b = appendVarint(b, wiretag)
+		if v {
+			b = append(b, 1)
+		} else {
+			b = append(b, 0)
+		}
+	}
+	return b, nil
+}
+func appendBoolPackedSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := *ptr.toBoolSlice()
+	if len(s) == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag&^7|WireBytes)
+	b = appendVarint(b, uint64(len(s)))
+	for _, v := range s {
+		if v {
+			b = append(b, 1)
+		} else {
+			b = append(b, 0)
+		}
+	}
+	return b, nil
+}
+func appendStringValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toString()
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, uint64(len(v)))
+	b = append(b, v...)
+	return b, nil
+}
+func appendStringValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toString()
+	if v == "" {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, uint64(len(v)))
+	b = append(b, v...)
+	return b, nil
+}
+func appendStringPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	p := *ptr.toStringPtr()
+	if p == nil {
+		return b, nil
+	}
+	v := *p
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, uint64(len(v)))
+	b = append(b, v...)
+	return b, nil
+}
+func appendStringSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := *ptr.toStringSlice()
+	for _, v := range s {
+		b = appendVarint(b, wiretag)
+		b = appendVarint(b, uint64(len(v)))
+		b = append(b, v...)
+	}
+	return b, nil
+}
+func appendUTF8StringValue(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	var invalidUTF8 bool
+	v := *ptr.toString()
+	if !utf8.ValidString(v) {
+		invalidUTF8 = true
+	}
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, uint64(len(v)))
+	b = append(b, v...)
+	if invalidUTF8 {
+		return b, errInvalidUTF8
+	}
+	return b, nil
+}
+func appendUTF8StringValueNoZero(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	var invalidUTF8 bool
+	v := *ptr.toString()
+	if v == "" {
+		return b, nil
+	}
+	if !utf8.ValidString(v) {
+		invalidUTF8 = true
+	}
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, uint64(len(v)))
+	b = append(b, v...)
+	if invalidUTF8 {
+		return b, errInvalidUTF8
+	}
+	return b, nil
+}
+func appendUTF8StringPtr(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	var invalidUTF8 bool
+	p := *ptr.toStringPtr()
+	if p == nil {
+		return b, nil
+	}
+	v := *p
+	if !utf8.ValidString(v) {
+		invalidUTF8 = true
+	}
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, uint64(len(v)))
+	b = append(b, v...)
+	if invalidUTF8 {
+		return b, errInvalidUTF8
+	}
+	return b, nil
+}
+func appendUTF8StringSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	var invalidUTF8 bool
+	s := *ptr.toStringSlice()
+	for _, v := range s {
+		if !utf8.ValidString(v) {
+			invalidUTF8 = true
+		}
+		b = appendVarint(b, wiretag)
+		b = appendVarint(b, uint64(len(v)))
+		b = append(b, v...)
+	}
+	if invalidUTF8 {
+		return b, errInvalidUTF8
+	}
+	return b, nil
+}
+func appendBytes(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toBytes()
+	if v == nil {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, uint64(len(v)))
+	b = append(b, v...)
+	return b, nil
+}
+func appendBytes3(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toBytes()
+	if len(v) == 0 {
+		return b, nil
+	}
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, uint64(len(v)))
+	b = append(b, v...)
+	return b, nil
+}
+func appendBytesOneof(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	v := *ptr.toBytes()
+	b = appendVarint(b, wiretag)
+	b = appendVarint(b, uint64(len(v)))
+	b = append(b, v...)
+	return b, nil
+}
+func appendBytesSlice(b []byte, ptr pointer, wiretag uint64, _ bool) ([]byte, error) {
+	s := *ptr.toBytesSlice()
+	for _, v := range s {
+		b = appendVarint(b, wiretag)
+		b = appendVarint(b, uint64(len(v)))
+		b = append(b, v...)
+	}
+	return b, nil
+}
+
+// makeGroupMarshaler returns the sizer and marshaler for a group.
+// u is the marshal info of the underlying message.
+func makeGroupMarshaler(u *marshalInfo) (sizer, marshaler) {
+	return func(ptr pointer, tagsize int) int {
+			p := ptr.getPointer()
+			if p.isNil() {
+				return 0
+			}
+			return u.size(p) + 2*tagsize
+		},
+		func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {
+			p := ptr.getPointer()
+			if p.isNil() {
+				return b, nil
+			}
+			var err error
+			b = appendVarint(b, wiretag) // start group
+			b, err = u.marshal(b, p, deterministic)
+			b = appendVarint(b, wiretag+(WireEndGroup-WireStartGroup)) // end group
+			return b, err
+		}
+}
+
+// makeGroupSliceMarshaler returns the sizer and marshaler for a group slice.
+// u is the marshal info of the underlying message.
+func makeGroupSliceMarshaler(u *marshalInfo) (sizer, marshaler) {
+	return func(ptr pointer, tagsize int) int {
+			s := ptr.getPointerSlice()
+			n := 0
+			for _, v := range s {
+				if v.isNil() {
+					continue
+				}
+				n += u.size(v) + 2*tagsize
+			}
+			return n
+		},
+		func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {
+			s := ptr.getPointerSlice()
+			var err error
+			var nerr nonFatal
+			for _, v := range s {
+				if v.isNil() {
+					return b, errRepeatedHasNil
+				}
+				b = appendVarint(b, wiretag) // start group
+				b, err = u.marshal(b, v, deterministic)
+				b = appendVarint(b, wiretag+(WireEndGroup-WireStartGroup)) // end group
+				if !nerr.Merge(err) {
+					if err == ErrNil {
+						err = errRepeatedHasNil
+					}
+					return b, err
+				}
+			}
+			return b, nerr.E
+		}
+}
+
+// makeMessageMarshaler returns the sizer and marshaler for a message field.
+// u is the marshal info of the message.
+func makeMessageMarshaler(u *marshalInfo) (sizer, marshaler) {
+	return func(ptr pointer, tagsize int) int {
+			p := ptr.getPointer()
+			if p.isNil() {
+				return 0
+			}
+			siz := u.size(p)
+			return siz + SizeVarint(uint64(siz)) + tagsize
+		},
+		func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {
+			p := ptr.getPointer()
+			if p.isNil() {
+				return b, nil
+			}
+			b = appendVarint(b, wiretag)
+			siz := u.cachedsize(p)
+			b = appendVarint(b, uint64(siz))
+			return u.marshal(b, p, deterministic)
+		}
+}
+
+// makeMessageSliceMarshaler returns the sizer and marshaler for a message slice.
+// u is the marshal info of the message.
+func makeMessageSliceMarshaler(u *marshalInfo) (sizer, marshaler) {
+	return func(ptr pointer, tagsize int) int {
+			s := ptr.getPointerSlice()
+			n := 0
+			for _, v := range s {
+				if v.isNil() {
+					continue
+				}
+				siz := u.size(v)
+				n += siz + SizeVarint(uint64(siz)) + tagsize
+			}
+			return n
+		},
+		func(b []byte, ptr pointer, wiretag uint64, deterministic bool) ([]byte, error) {
+			s := ptr.getPointerSlice()
+			var err error
+			var nerr nonFatal
+			for _, v := range s {
+				if v.isNil() {
+					return b, errRepeatedHasNil
+				}
+				b = appendVarint(b, wiretag)
+				siz := u.cachedsize(v)
+				b = appendVarint(b, uint64(siz))
+				b, err = u.marshal(b, v, deterministic)
+
+				if !nerr.Merge(err) {
+					if err == ErrNil {
+						err = errRepeatedHasNil
+					}
+					return b, err
+				}
+			}
+			return b, nerr.E
+		}
+}
+
+// makeMapMarshaler returns the sizer and marshaler for a map field.
+// f is the pointer to the reflect data structure of the field.
+func makeMapMarshaler(f *reflect.StructField) (sizer, marshaler) {
+	// figure out key and value type
+	t := f.Type
+	keyType := t.Key()
+	valType := t.Elem()
+	keyTags := strings.Split(f.Tag.Get("protobuf_key"), ",")
+	valTags := strings.Split(f.Tag.Get("protobuf_val"), ",")
+	keySizer, keyMarshaler := typeMarshaler(keyType, keyTags, false, false) // don't omit zero value in map
+	valSizer, valMarshaler := typeMarshaler(valType, valTags, false, false) // don't omit zero value in map
+	keyWireTag := 1<<3 | wiretype(keyTags[0])
+	valWireTag := 2<<3 | wiretype(valTags[0])
+
+	// We create an interface to get the addresses of the map key and value.
+	// If value is pointer-typed, the interface is a direct interface, the
+	// idata itself is the value. Otherwise, the idata is the pointer to the
+	// value.
+	// Key cannot be pointer-typed.
+	valIsPtr := valType.Kind() == reflect.Ptr
+
+	// If value is a message with nested maps, calling
+	// valSizer in marshal may be quadratic. We should use
+	// cached version in marshal (but not in size).
+	// If value is not message type, we don't have size cache,
+	// but it cannot be nested either. Just use valSizer.
+	valCachedSizer := valSizer
+	if valIsPtr && valType.Elem().Kind() == reflect.Struct {
+		u := getMarshalInfo(valType.Elem())
+		valCachedSizer = func(ptr pointer, tagsize int) int {
+			// Same as message sizer, but use cache.
+			p := ptr.getPointer()
+			if p.isNil() {
+				return 0
+			}
+			siz := u.cachedsize(p)
+			return siz + SizeVarint(uint64(siz)) + tagsize
+		}
+	}
+	return func(ptr pointer, tagsize int) int {
+			m := ptr.asPointerTo(t).Elem() // the map
+			n := 0
+			for _, k := range m.MapKeys() {
+				ki := k.Interface()
+				vi := m.MapIndex(k).Interface()
+				kaddr := toAddrPointer(&ki, false, false)      // pointer to key
+				vaddr := toAddrPointer(&vi, valIsPtr, false)   // pointer to value
+				siz := keySizer(kaddr, 1) + valSizer(vaddr, 1) // tag of key = 1 (size=1), tag of val = 2 (size=1)
+				n += siz + SizeVarint(uint64(siz)) + tagsize
+			}
+			return n
+		},
+		func(b []byte, ptr pointer, tag uint64, deterministic bool) ([]byte, error) {
+			m := ptr.asPointerTo(t).Elem() // the map
+			var err error
+			keys := m.MapKeys()
+			if len(keys) > 1 && deterministic {
+				sort.Sort(mapKeys(keys))
+			}
+
+			var nerr nonFatal
+			for _, k := range keys {
+				ki := k.Interface()
+				vi := m.MapIndex(k).Interface()
+				kaddr := toAddrPointer(&ki, false, false)    // pointer to key
+				vaddr := toAddrPointer(&vi, valIsPtr, false) // pointer to value
+				b = appendVarint(b, tag)
+				siz := keySizer(kaddr, 1) + valCachedSizer(vaddr, 1) // tag of key = 1 (size=1), tag of val = 2 (size=1)
+				b = appendVarint(b, uint64(siz))
+				b, err = keyMarshaler(b, kaddr, keyWireTag, deterministic)
+				if !nerr.Merge(err) {
+					return b, err
+				}
+				b, err = valMarshaler(b, vaddr, valWireTag, deterministic)
+				if err != ErrNil && !nerr.Merge(err) { // allow nil value in map
+					return b, err
+				}
+			}
+			return b, nerr.E
+		}
+}
+
+// makeOneOfMarshaler returns the sizer and marshaler for a oneof field.
+// fi is the marshal info of the field.
+// f is the pointer to the reflect data structure of the field.
+func makeOneOfMarshaler(fi *marshalFieldInfo, f *reflect.StructField) (sizer, marshaler) {
+	// Oneof field is an interface. We need to get the actual data type on the fly.
+	t := f.Type
+	return func(ptr pointer, _ int) int {
+			p := ptr.getInterfacePointer()
+			if p.isNil() {
+				return 0
+			}
+			v := ptr.asPointerTo(t).Elem().Elem().Elem() // *interface -> interface -> *struct -> struct
+			telem := v.Type()
+			e := fi.oneofElems[telem]
+			return e.sizer(p, e.tagsize)
+		},
+		func(b []byte, ptr pointer, _ uint64, deterministic bool) ([]byte, error) {
+			p := ptr.getInterfacePointer()
+			if p.isNil() {
+				return b, nil
+			}
+			v := ptr.asPointerTo(t).Elem().Elem().Elem() // *interface -> interface -> *struct -> struct
+			telem := v.Type()
+			if telem.Field(0).Type.Kind() == reflect.Ptr && p.getPointer().isNil() {
+				return b, errOneofHasNil
+			}
+			e := fi.oneofElems[telem]
+			return e.marshaler(b, p, e.wiretag, deterministic)
+		}
+}
+
+// sizeExtensions computes the size of encoded data for a XXX_InternalExtensions field.
+func (u *marshalInfo) sizeExtensions(ext *XXX_InternalExtensions) int {
+	m, mu := ext.extensionsRead()
+	if m == nil {
+		return 0
+	}
+	mu.Lock()
+
+	n := 0
+	for _, e := range m {
+		if e.value == nil || e.desc == nil {
+			// Extension is only in its encoded form.
+			n += len(e.enc)
+			continue
+		}
+
+		// We don't skip extensions that have an encoded form set,
+		// because the extension value may have been mutated after
+		// the last time this function was called.
+		ei := u.getExtElemInfo(e.desc)
+		v := e.value
+		p := toAddrPointer(&v, ei.isptr, ei.deref)
+		n += ei.sizer(p, ei.tagsize)
+	}
+	mu.Unlock()
+	return n
+}
+
+// appendExtensions marshals a XXX_InternalExtensions field to the end of byte slice b.
+func (u *marshalInfo) appendExtensions(b []byte, ext *XXX_InternalExtensions, deterministic bool) ([]byte, error) {
+	m, mu := ext.extensionsRead()
+	if m == nil {
+		return b, nil
+	}
+	mu.Lock()
+	defer mu.Unlock()
+
+	var err error
+	var nerr nonFatal
+
+	// Fast-path for common cases: zero or one extensions.
+	// Don't bother sorting the keys.
+	if len(m) <= 1 {
+		for _, e := range m {
+			if e.value == nil || e.desc == nil {
+				// Extension is only in its encoded form.
+				b = append(b, e.enc...)
+				continue
+			}
+
+			// We don't skip extensions that have an encoded form set,
+			// because the extension value may have been mutated after
+			// the last time this function was called.
+
+			ei := u.getExtElemInfo(e.desc)
+			v := e.value
+			p := toAddrPointer(&v, ei.isptr, ei.deref)
+			b, err = ei.marshaler(b, p, ei.wiretag, deterministic)
+			if !nerr.Merge(err) {
+				return b, err
+			}
+		}
+		return b, nerr.E
+	}
+
+	// Sort the keys to provide a deterministic encoding.
+	// Not sure this is required, but the old code does it.
+	keys := make([]int, 0, len(m))
+	for k := range m {
+		keys = append(keys, int(k))
+	}
+	sort.Ints(keys)
+
+	for _, k := range keys {
+		e := m[int32(k)]
+		if e.value == nil || e.desc == nil {
+			// Extension is only in its encoded form.
+			b = append(b, e.enc...)
+			continue
+		}
+
+		// We don't skip extensions that have an encoded form set,
+		// because the extension value may have been mutated after
+		// the last time this function was called.
+
+		ei := u.getExtElemInfo(e.desc)
+		v := e.value
+		p := toAddrPointer(&v, ei.isptr, ei.deref)
+		b, err = ei.marshaler(b, p, ei.wiretag, deterministic)
+		if !nerr.Merge(err) {
+			return b, err
+		}
+	}
+	return b, nerr.E
+}
+
+// message set format is:
+//   message MessageSet {
+//     repeated group Item = 1 {
+//       required int32 type_id = 2;
+//       required string message = 3;
+//     };
+//   }
+
+// sizeMessageSet computes the size of encoded data for a XXX_InternalExtensions field
+// in message set format (above).
+func (u *marshalInfo) sizeMessageSet(ext *XXX_InternalExtensions) int {
+	m, mu := ext.extensionsRead()
+	if m == nil {
+		return 0
+	}
+	mu.Lock()
+
+	n := 0
+	for id, e := range m {
+		n += 2                          // start group, end group. tag = 1 (size=1)
+		n += SizeVarint(uint64(id)) + 1 // type_id, tag = 2 (size=1)
+
+		if e.value == nil || e.desc == nil {
+			// Extension is only in its encoded form.
+			msgWithLen := skipVarint(e.enc) // skip old tag, but leave the length varint
+			siz := len(msgWithLen)
+			n += siz + 1 // message, tag = 3 (size=1)
+			continue
+		}
+
+		// We don't skip extensions that have an encoded form set,
+		// because the extension value may have been mutated after
+		// the last time this function was called.
+
+		ei := u.getExtElemInfo(e.desc)
+		v := e.value
+		p := toAddrPointer(&v, ei.isptr, ei.deref)
+		n += ei.sizer(p, 1) // message, tag = 3 (size=1)
+	}
+	mu.Unlock()
+	return n
+}
+
+// appendMessageSet marshals a XXX_InternalExtensions field in message set format (above)
+// to the end of byte slice b.
+func (u *marshalInfo) appendMessageSet(b []byte, ext *XXX_InternalExtensions, deterministic bool) ([]byte, error) {
+	m, mu := ext.extensionsRead()
+	if m == nil {
+		return b, nil
+	}
+	mu.Lock()
+	defer mu.Unlock()
+
+	var err error
+	var nerr nonFatal
+
+	// Fast-path for common cases: zero or one extensions.
+	// Don't bother sorting the keys.
+	if len(m) <= 1 {
+		for id, e := range m {
+			b = append(b, 1<<3|WireStartGroup)
+			b = append(b, 2<<3|WireVarint)
+			b = appendVarint(b, uint64(id))
+
+			if e.value == nil || e.desc == nil {
+				// Extension is only in its encoded form.
+				msgWithLen := skipVarint(e.enc) // skip old tag, but leave the length varint
+				b = append(b, 3<<3|WireBytes)
+				b = append(b, msgWithLen...)
+				b = append(b, 1<<3|WireEndGroup)
+				continue
+			}
+
+			// We don't skip extensions that have an encoded form set,
+			// because the extension value may have been mutated after
+			// the last time this function was called.
+
+			ei := u.getExtElemInfo(e.desc)
+			v := e.value
+			p := toAddrPointer(&v, ei.isptr, ei.deref)
+			b, err = ei.marshaler(b, p, 3<<3|WireBytes, deterministic)
+			if !nerr.Merge(err) {
+				return b, err
+			}
+			b = append(b, 1<<3|WireEndGroup)
+		}
+		return b, nerr.E
+	}
+
+	// Sort the keys to provide a deterministic encoding.
+	keys := make([]int, 0, len(m))
+	for k := range m {
+		keys = append(keys, int(k))
+	}
+	sort.Ints(keys)
+
+	for _, id := range keys {
+		e := m[int32(id)]
+		b = append(b, 1<<3|WireStartGroup)
+		b = append(b, 2<<3|WireVarint)
+		b = appendVarint(b, uint64(id))
+
+		if e.value == nil || e.desc == nil {
+			// Extension is only in its encoded form.
+			msgWithLen := skipVarint(e.enc) // skip old tag, but leave the length varint
+			b = append(b, 3<<3|WireBytes)
+			b = append(b, msgWithLen...)
+			b = append(b, 1<<3|WireEndGroup)
+			continue
+		}
+
+		// We don't skip extensions that have an encoded form set,
+		// because the extension value may have been mutated after
+		// the last time this function was called.
+
+		ei := u.getExtElemInfo(e.desc)
+		v := e.value
+		p := toAddrPointer(&v, ei.isptr, ei.deref)
+		b, err = ei.marshaler(b, p, 3<<3|WireBytes, deterministic)
+		b = append(b, 1<<3|WireEndGroup)
+		if !nerr.Merge(err) {
+			return b, err
+		}
+	}
+	return b, nerr.E
+}
+
+// sizeV1Extensions computes the size of encoded data for a V1-API extension field.
+func (u *marshalInfo) sizeV1Extensions(m map[int32]Extension) int {
+	if m == nil {
+		return 0
+	}
+
+	n := 0
+	for _, e := range m {
+		if e.value == nil || e.desc == nil {
+			// Extension is only in its encoded form.
+			n += len(e.enc)
+			continue
+		}
+
+		// We don't skip extensions that have an encoded form set,
+		// because the extension value may have been mutated after
+		// the last time this function was called.
+
+		ei := u.getExtElemInfo(e.desc)
+		v := e.value
+		p := toAddrPointer(&v, ei.isptr, ei.deref)
+		n += ei.sizer(p, ei.tagsize)
+	}
+	return n
+}
+
+// appendV1Extensions marshals a V1-API extension field to the end of byte slice b.
+func (u *marshalInfo) appendV1Extensions(b []byte, m map[int32]Extension, deterministic bool) ([]byte, error) {
+	if m == nil {
+		return b, nil
+	}
+
+	// Sort the keys to provide a deterministic encoding.
+	keys := make([]int, 0, len(m))
+	for k := range m {
+		keys = append(keys, int(k))
+	}
+	sort.Ints(keys)
+
+	var err error
+	var nerr nonFatal
+	for _, k := range keys {
+		e := m[int32(k)]
+		if e.value == nil || e.desc == nil {
+			// Extension is only in its encoded form.
+			b = append(b, e.enc...)
+			continue
+		}
+
+		// We don't skip extensions that have an encoded form set,
+		// because the extension value may have been mutated after
+		// the last time this function was called.
+
+		ei := u.getExtElemInfo(e.desc)
+		v := e.value
+		p := toAddrPointer(&v, ei.isptr, ei.deref)
+		b, err = ei.marshaler(b, p, ei.wiretag, deterministic)
+		if !nerr.Merge(err) {
+			return b, err
+		}
+	}
+	return b, nerr.E
+}
+
+// newMarshaler is the interface representing objects that can marshal themselves.
+//
+// This exists to support protoc-gen-go generated messages.
+// The proto package will stop type-asserting to this interface in the future.
+//
+// DO NOT DEPEND ON THIS.
+type newMarshaler interface {
+	XXX_Size() int
+	XXX_Marshal(b []byte, deterministic bool) ([]byte, error)
+}
+
+// Size returns the encoded size of a protocol buffer message.
+// This is the main entry point.
+func Size(pb Message) int {
+	if m, ok := pb.(newMarshaler); ok {
+		return m.XXX_Size()
+	}
+	if m, ok := pb.(Marshaler); ok {
+		// If the message can marshal itself, let it do it, for compatibility.
+		// NOTE: This is not efficient.
+		b, _ := m.Marshal()
+		return len(b)
+	}
+	// in case somehow we didn't generate the wrapper
+	if pb == nil {
+		return 0
+	}
+	var info InternalMessageInfo
+	return info.Size(pb)
+}
+
+// Marshal takes a protocol buffer message
+// and encodes it into the wire format, returning the data.
+// This is the main entry point.
+func Marshal(pb Message) ([]byte, error) {
+	if m, ok := pb.(newMarshaler); ok {
+		siz := m.XXX_Size()
+		b := make([]byte, 0, siz)
+		return m.XXX_Marshal(b, false)
+	}
+	if m, ok := pb.(Marshaler); ok {
+		// If the message can marshal itself, let it do it, for compatibility.
+		// NOTE: This is not efficient.
+		return m.Marshal()
+	}
+	// in case somehow we didn't generate the wrapper
+	if pb == nil {
+		return nil, ErrNil
+	}
+	var info InternalMessageInfo
+	siz := info.Size(pb)
+	b := make([]byte, 0, siz)
+	return info.Marshal(b, pb, false)
+}
+
+// Marshal takes a protocol buffer message
+// and encodes it into the wire format, writing the result to the
+// Buffer.
+// This is an alternative entry point. It is not necessary to use
+// a Buffer for most applications.
+func (p *Buffer) Marshal(pb Message) error {
+	var err error
+	if m, ok := pb.(newMarshaler); ok {
+		siz := m.XXX_Size()
+		p.grow(siz) // make sure buf has enough capacity
+		p.buf, err = m.XXX_Marshal(p.buf, p.deterministic)
+		return err
+	}
+	if m, ok := pb.(Marshaler); ok {
+		// If the message can marshal itself, let it do it, for compatibility.
+		// NOTE: This is not efficient.
+		b, err := m.Marshal()
+		p.buf = append(p.buf, b...)
+		return err
+	}
+	// in case somehow we didn't generate the wrapper
+	if pb == nil {
+		return ErrNil
+	}
+	var info InternalMessageInfo
+	siz := info.Size(pb)
+	p.grow(siz) // make sure buf has enough capacity
+	p.buf, err = info.Marshal(p.buf, pb, p.deterministic)
+	return err
+}
+
+// grow grows the buffer's capacity, if necessary, to guarantee space for
+// another n bytes. After grow(n), at least n bytes can be written to the
+// buffer without another allocation.
+func (p *Buffer) grow(n int) {
+	need := len(p.buf) + n
+	if need <= cap(p.buf) {
+		return
+	}
+	newCap := len(p.buf) * 2
+	if newCap < need {
+		newCap = need
+	}
+	p.buf = append(make([]byte, 0, newCap), p.buf...)
+}
diff --git a/proto/table_merge.go b/proto/table_merge.go
new file mode 100644
index 0000000..5525def
--- /dev/null
+++ b/proto/table_merge.go
@@ -0,0 +1,654 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2016 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto
+
+import (
+	"fmt"
+	"reflect"
+	"strings"
+	"sync"
+	"sync/atomic"
+)
+
+// Merge merges the src message into dst.
+// This assumes that dst and src of the same type and are non-nil.
+func (a *InternalMessageInfo) Merge(dst, src Message) {
+	mi := atomicLoadMergeInfo(&a.merge)
+	if mi == nil {
+		mi = getMergeInfo(reflect.TypeOf(dst).Elem())
+		atomicStoreMergeInfo(&a.merge, mi)
+	}
+	mi.merge(toPointer(&dst), toPointer(&src))
+}
+
+type mergeInfo struct {
+	typ reflect.Type
+
+	initialized int32 // 0: only typ is valid, 1: everything is valid
+	lock        sync.Mutex
+
+	fields       []mergeFieldInfo
+	unrecognized field // Offset of XXX_unrecognized
+}
+
+type mergeFieldInfo struct {
+	field field // Offset of field, guaranteed to be valid
+
+	// isPointer reports whether the value in the field is a pointer.
+	// This is true for the following situations:
+	//	* Pointer to struct
+	//	* Pointer to basic type (proto2 only)
+	//	* Slice (first value in slice header is a pointer)
+	//	* String (first value in string header is a pointer)
+	isPointer bool
+
+	// basicWidth reports the width of the field assuming that it is directly
+	// embedded in the struct (as is the case for basic types in proto3).
+	// The possible values are:
+	// 	0: invalid
+	//	1: bool
+	//	4: int32, uint32, float32
+	//	8: int64, uint64, float64
+	basicWidth int
+
+	// Where dst and src are pointers to the types being merged.
+	merge func(dst, src pointer)
+}
+
+var (
+	mergeInfoMap  = map[reflect.Type]*mergeInfo{}
+	mergeInfoLock sync.Mutex
+)
+
+func getMergeInfo(t reflect.Type) *mergeInfo {
+	mergeInfoLock.Lock()
+	defer mergeInfoLock.Unlock()
+	mi := mergeInfoMap[t]
+	if mi == nil {
+		mi = &mergeInfo{typ: t}
+		mergeInfoMap[t] = mi
+	}
+	return mi
+}
+
+// merge merges src into dst assuming they are both of type *mi.typ.
+func (mi *mergeInfo) merge(dst, src pointer) {
+	if dst.isNil() {
+		panic("proto: nil destination")
+	}
+	if src.isNil() {
+		return // Nothing to do.
+	}
+
+	if atomic.LoadInt32(&mi.initialized) == 0 {
+		mi.computeMergeInfo()
+	}
+
+	for _, fi := range mi.fields {
+		sfp := src.offset(fi.field)
+
+		// As an optimization, we can avoid the merge function call cost
+		// if we know for sure that the source will have no effect
+		// by checking if it is the zero value.
+		if unsafeAllowed {
+			if fi.isPointer && sfp.getPointer().isNil() { // Could be slice or string
+				continue
+			}
+			if fi.basicWidth > 0 {
+				switch {
+				case fi.basicWidth == 1 && !*sfp.toBool():
+					continue
+				case fi.basicWidth == 4 && *sfp.toUint32() == 0:
+					continue
+				case fi.basicWidth == 8 && *sfp.toUint64() == 0:
+					continue
+				}
+			}
+		}
+
+		dfp := dst.offset(fi.field)
+		fi.merge(dfp, sfp)
+	}
+
+	// TODO: Make this faster?
+	out := dst.asPointerTo(mi.typ).Elem()
+	in := src.asPointerTo(mi.typ).Elem()
+	if emIn, err := extendable(in.Addr().Interface()); err == nil {
+		emOut, _ := extendable(out.Addr().Interface())
+		mIn, muIn := emIn.extensionsRead()
+		if mIn != nil {
+			mOut := emOut.extensionsWrite()
+			muIn.Lock()
+			mergeExtension(mOut, mIn)
+			muIn.Unlock()
+		}
+	}
+
+	if mi.unrecognized.IsValid() {
+		if b := *src.offset(mi.unrecognized).toBytes(); len(b) > 0 {
+			*dst.offset(mi.unrecognized).toBytes() = append([]byte(nil), b...)
+		}
+	}
+}
+
+func (mi *mergeInfo) computeMergeInfo() {
+	mi.lock.Lock()
+	defer mi.lock.Unlock()
+	if mi.initialized != 0 {
+		return
+	}
+	t := mi.typ
+	n := t.NumField()
+
+	props := GetProperties(t)
+	for i := 0; i < n; i++ {
+		f := t.Field(i)
+		if strings.HasPrefix(f.Name, "XXX_") {
+			continue
+		}
+
+		mfi := mergeFieldInfo{field: toField(&f)}
+		tf := f.Type
+
+		// As an optimization, we can avoid the merge function call cost
+		// if we know for sure that the source will have no effect
+		// by checking if it is the zero value.
+		if unsafeAllowed {
+			switch tf.Kind() {
+			case reflect.Ptr, reflect.Slice, reflect.String:
+				// As a special case, we assume slices and strings are pointers
+				// since we know that the first field in the SliceSlice or
+				// StringHeader is a data pointer.
+				mfi.isPointer = true
+			case reflect.Bool:
+				mfi.basicWidth = 1
+			case reflect.Int32, reflect.Uint32, reflect.Float32:
+				mfi.basicWidth = 4
+			case reflect.Int64, reflect.Uint64, reflect.Float64:
+				mfi.basicWidth = 8
+			}
+		}
+
+		// Unwrap tf to get at its most basic type.
+		var isPointer, isSlice bool
+		if tf.Kind() == reflect.Slice && tf.Elem().Kind() != reflect.Uint8 {
+			isSlice = true
+			tf = tf.Elem()
+		}
+		if tf.Kind() == reflect.Ptr {
+			isPointer = true
+			tf = tf.Elem()
+		}
+		if isPointer && isSlice && tf.Kind() != reflect.Struct {
+			panic("both pointer and slice for basic type in " + tf.Name())
+		}
+
+		switch tf.Kind() {
+		case reflect.Int32:
+			switch {
+			case isSlice: // E.g., []int32
+				mfi.merge = func(dst, src pointer) {
+					// NOTE: toInt32Slice is not defined (see pointer_reflect.go).
+					/*
+						sfsp := src.toInt32Slice()
+						if *sfsp != nil {
+							dfsp := dst.toInt32Slice()
+							*dfsp = append(*dfsp, *sfsp...)
+							if *dfsp == nil {
+								*dfsp = []int64{}
+							}
+						}
+					*/
+					sfs := src.getInt32Slice()
+					if sfs != nil {
+						dfs := dst.getInt32Slice()
+						dfs = append(dfs, sfs...)
+						if dfs == nil {
+							dfs = []int32{}
+						}
+						dst.setInt32Slice(dfs)
+					}
+				}
+			case isPointer: // E.g., *int32
+				mfi.merge = func(dst, src pointer) {
+					// NOTE: toInt32Ptr is not defined (see pointer_reflect.go).
+					/*
+						sfpp := src.toInt32Ptr()
+						if *sfpp != nil {
+							dfpp := dst.toInt32Ptr()
+							if *dfpp == nil {
+								*dfpp = Int32(**sfpp)
+							} else {
+								**dfpp = **sfpp
+							}
+						}
+					*/
+					sfp := src.getInt32Ptr()
+					if sfp != nil {
+						dfp := dst.getInt32Ptr()
+						if dfp == nil {
+							dst.setInt32Ptr(*sfp)
+						} else {
+							*dfp = *sfp
+						}
+					}
+				}
+			default: // E.g., int32
+				mfi.merge = func(dst, src pointer) {
+					if v := *src.toInt32(); v != 0 {
+						*dst.toInt32() = v
+					}
+				}
+			}
+		case reflect.Int64:
+			switch {
+			case isSlice: // E.g., []int64
+				mfi.merge = func(dst, src pointer) {
+					sfsp := src.toInt64Slice()
+					if *sfsp != nil {
+						dfsp := dst.toInt64Slice()
+						*dfsp = append(*dfsp, *sfsp...)
+						if *dfsp == nil {
+							*dfsp = []int64{}
+						}
+					}
+				}
+			case isPointer: // E.g., *int64
+				mfi.merge = func(dst, src pointer) {
+					sfpp := src.toInt64Ptr()
+					if *sfpp != nil {
+						dfpp := dst.toInt64Ptr()
+						if *dfpp == nil {
+							*dfpp = Int64(**sfpp)
+						} else {
+							**dfpp = **sfpp
+						}
+					}
+				}
+			default: // E.g., int64
+				mfi.merge = func(dst, src pointer) {
+					if v := *src.toInt64(); v != 0 {
+						*dst.toInt64() = v
+					}
+				}
+			}
+		case reflect.Uint32:
+			switch {
+			case isSlice: // E.g., []uint32
+				mfi.merge = func(dst, src pointer) {
+					sfsp := src.toUint32Slice()
+					if *sfsp != nil {
+						dfsp := dst.toUint32Slice()
+						*dfsp = append(*dfsp, *sfsp...)
+						if *dfsp == nil {
+							*dfsp = []uint32{}
+						}
+					}
+				}
+			case isPointer: // E.g., *uint32
+				mfi.merge = func(dst, src pointer) {
+					sfpp := src.toUint32Ptr()
+					if *sfpp != nil {
+						dfpp := dst.toUint32Ptr()
+						if *dfpp == nil {
+							*dfpp = Uint32(**sfpp)
+						} else {
+							**dfpp = **sfpp
+						}
+					}
+				}
+			default: // E.g., uint32
+				mfi.merge = func(dst, src pointer) {
+					if v := *src.toUint32(); v != 0 {
+						*dst.toUint32() = v
+					}
+				}
+			}
+		case reflect.Uint64:
+			switch {
+			case isSlice: // E.g., []uint64
+				mfi.merge = func(dst, src pointer) {
+					sfsp := src.toUint64Slice()
+					if *sfsp != nil {
+						dfsp := dst.toUint64Slice()
+						*dfsp = append(*dfsp, *sfsp...)
+						if *dfsp == nil {
+							*dfsp = []uint64{}
+						}
+					}
+				}
+			case isPointer: // E.g., *uint64
+				mfi.merge = func(dst, src pointer) {
+					sfpp := src.toUint64Ptr()
+					if *sfpp != nil {
+						dfpp := dst.toUint64Ptr()
+						if *dfpp == nil {
+							*dfpp = Uint64(**sfpp)
+						} else {
+							**dfpp = **sfpp
+						}
+					}
+				}
+			default: // E.g., uint64
+				mfi.merge = func(dst, src pointer) {
+					if v := *src.toUint64(); v != 0 {
+						*dst.toUint64() = v
+					}
+				}
+			}
+		case reflect.Float32:
+			switch {
+			case isSlice: // E.g., []float32
+				mfi.merge = func(dst, src pointer) {
+					sfsp := src.toFloat32Slice()
+					if *sfsp != nil {
+						dfsp := dst.toFloat32Slice()
+						*dfsp = append(*dfsp, *sfsp...)
+						if *dfsp == nil {
+							*dfsp = []float32{}
+						}
+					}
+				}
+			case isPointer: // E.g., *float32
+				mfi.merge = func(dst, src pointer) {
+					sfpp := src.toFloat32Ptr()
+					if *sfpp != nil {
+						dfpp := dst.toFloat32Ptr()
+						if *dfpp == nil {
+							*dfpp = Float32(**sfpp)
+						} else {
+							**dfpp = **sfpp
+						}
+					}
+				}
+			default: // E.g., float32
+				mfi.merge = func(dst, src pointer) {
+					if v := *src.toFloat32(); v != 0 {
+						*dst.toFloat32() = v
+					}
+				}
+			}
+		case reflect.Float64:
+			switch {
+			case isSlice: // E.g., []float64
+				mfi.merge = func(dst, src pointer) {
+					sfsp := src.toFloat64Slice()
+					if *sfsp != nil {
+						dfsp := dst.toFloat64Slice()
+						*dfsp = append(*dfsp, *sfsp...)
+						if *dfsp == nil {
+							*dfsp = []float64{}
+						}
+					}
+				}
+			case isPointer: // E.g., *float64
+				mfi.merge = func(dst, src pointer) {
+					sfpp := src.toFloat64Ptr()
+					if *sfpp != nil {
+						dfpp := dst.toFloat64Ptr()
+						if *dfpp == nil {
+							*dfpp = Float64(**sfpp)
+						} else {
+							**dfpp = **sfpp
+						}
+					}
+				}
+			default: // E.g., float64
+				mfi.merge = func(dst, src pointer) {
+					if v := *src.toFloat64(); v != 0 {
+						*dst.toFloat64() = v
+					}
+				}
+			}
+		case reflect.Bool:
+			switch {
+			case isSlice: // E.g., []bool
+				mfi.merge = func(dst, src pointer) {
+					sfsp := src.toBoolSlice()
+					if *sfsp != nil {
+						dfsp := dst.toBoolSlice()
+						*dfsp = append(*dfsp, *sfsp...)
+						if *dfsp == nil {
+							*dfsp = []bool{}
+						}
+					}
+				}
+			case isPointer: // E.g., *bool
+				mfi.merge = func(dst, src pointer) {
+					sfpp := src.toBoolPtr()
+					if *sfpp != nil {
+						dfpp := dst.toBoolPtr()
+						if *dfpp == nil {
+							*dfpp = Bool(**sfpp)
+						} else {
+							**dfpp = **sfpp
+						}
+					}
+				}
+			default: // E.g., bool
+				mfi.merge = func(dst, src pointer) {
+					if v := *src.toBool(); v {
+						*dst.toBool() = v
+					}
+				}
+			}
+		case reflect.String:
+			switch {
+			case isSlice: // E.g., []string
+				mfi.merge = func(dst, src pointer) {
+					sfsp := src.toStringSlice()
+					if *sfsp != nil {
+						dfsp := dst.toStringSlice()
+						*dfsp = append(*dfsp, *sfsp...)
+						if *dfsp == nil {
+							*dfsp = []string{}
+						}
+					}
+				}
+			case isPointer: // E.g., *string
+				mfi.merge = func(dst, src pointer) {
+					sfpp := src.toStringPtr()
+					if *sfpp != nil {
+						dfpp := dst.toStringPtr()
+						if *dfpp == nil {
+							*dfpp = String(**sfpp)
+						} else {
+							**dfpp = **sfpp
+						}
+					}
+				}
+			default: // E.g., string
+				mfi.merge = func(dst, src pointer) {
+					if v := *src.toString(); v != "" {
+						*dst.toString() = v
+					}
+				}
+			}
+		case reflect.Slice:
+			isProto3 := props.Prop[i].proto3
+			switch {
+			case isPointer:
+				panic("bad pointer in byte slice case in " + tf.Name())
+			case tf.Elem().Kind() != reflect.Uint8:
+				panic("bad element kind in byte slice case in " + tf.Name())
+			case isSlice: // E.g., [][]byte
+				mfi.merge = func(dst, src pointer) {
+					sbsp := src.toBytesSlice()
+					if *sbsp != nil {
+						dbsp := dst.toBytesSlice()
+						for _, sb := range *sbsp {
+							if sb == nil {
+								*dbsp = append(*dbsp, nil)
+							} else {
+								*dbsp = append(*dbsp, append([]byte{}, sb...))
+							}
+						}
+						if *dbsp == nil {
+							*dbsp = [][]byte{}
+						}
+					}
+				}
+			default: // E.g., []byte
+				mfi.merge = func(dst, src pointer) {
+					sbp := src.toBytes()
+					if *sbp != nil {
+						dbp := dst.toBytes()
+						if !isProto3 || len(*sbp) > 0 {
+							*dbp = append([]byte{}, *sbp...)
+						}
+					}
+				}
+			}
+		case reflect.Struct:
+			switch {
+			case !isPointer:
+				panic(fmt.Sprintf("message field %s without pointer", tf))
+			case isSlice: // E.g., []*pb.T
+				mi := getMergeInfo(tf)
+				mfi.merge = func(dst, src pointer) {
+					sps := src.getPointerSlice()
+					if sps != nil {
+						dps := dst.getPointerSlice()
+						for _, sp := range sps {
+							var dp pointer
+							if !sp.isNil() {
+								dp = valToPointer(reflect.New(tf))
+								mi.merge(dp, sp)
+							}
+							dps = append(dps, dp)
+						}
+						if dps == nil {
+							dps = []pointer{}
+						}
+						dst.setPointerSlice(dps)
+					}
+				}
+			default: // E.g., *pb.T
+				mi := getMergeInfo(tf)
+				mfi.merge = func(dst, src pointer) {
+					sp := src.getPointer()
+					if !sp.isNil() {
+						dp := dst.getPointer()
+						if dp.isNil() {
+							dp = valToPointer(reflect.New(tf))
+							dst.setPointer(dp)
+						}
+						mi.merge(dp, sp)
+					}
+				}
+			}
+		case reflect.Map:
+			switch {
+			case isPointer || isSlice:
+				panic("bad pointer or slice in map case in " + tf.Name())
+			default: // E.g., map[K]V
+				mfi.merge = func(dst, src pointer) {
+					sm := src.asPointerTo(tf).Elem()
+					if sm.Len() == 0 {
+						return
+					}
+					dm := dst.asPointerTo(tf).Elem()
+					if dm.IsNil() {
+						dm.Set(reflect.MakeMap(tf))
+					}
+
+					switch tf.Elem().Kind() {
+					case reflect.Ptr: // Proto struct (e.g., *T)
+						for _, key := range sm.MapKeys() {
+							val := sm.MapIndex(key)
+							val = reflect.ValueOf(Clone(val.Interface().(Message)))
+							dm.SetMapIndex(key, val)
+						}
+					case reflect.Slice: // E.g. Bytes type (e.g., []byte)
+						for _, key := range sm.MapKeys() {
+							val := sm.MapIndex(key)
+							val = reflect.ValueOf(append([]byte{}, val.Bytes()...))
+							dm.SetMapIndex(key, val)
+						}
+					default: // Basic type (e.g., string)
+						for _, key := range sm.MapKeys() {
+							val := sm.MapIndex(key)
+							dm.SetMapIndex(key, val)
+						}
+					}
+				}
+			}
+		case reflect.Interface:
+			// Must be oneof field.
+			switch {
+			case isPointer || isSlice:
+				panic("bad pointer or slice in interface case in " + tf.Name())
+			default: // E.g., interface{}
+				// TODO: Make this faster?
+				mfi.merge = func(dst, src pointer) {
+					su := src.asPointerTo(tf).Elem()
+					if !su.IsNil() {
+						du := dst.asPointerTo(tf).Elem()
+						typ := su.Elem().Type()
+						if du.IsNil() || du.Elem().Type() != typ {
+							du.Set(reflect.New(typ.Elem())) // Initialize interface if empty
+						}
+						sv := su.Elem().Elem().Field(0)
+						if sv.Kind() == reflect.Ptr && sv.IsNil() {
+							return
+						}
+						dv := du.Elem().Elem().Field(0)
+						if dv.Kind() == reflect.Ptr && dv.IsNil() {
+							dv.Set(reflect.New(sv.Type().Elem())) // Initialize proto message if empty
+						}
+						switch sv.Type().Kind() {
+						case reflect.Ptr: // Proto struct (e.g., *T)
+							Merge(dv.Interface().(Message), sv.Interface().(Message))
+						case reflect.Slice: // E.g. Bytes type (e.g., []byte)
+							dv.Set(reflect.ValueOf(append([]byte{}, sv.Bytes()...)))
+						default: // Basic type (e.g., string)
+							dv.Set(sv)
+						}
+					}
+				}
+			}
+		default:
+			panic(fmt.Sprintf("merger not found for type:%s", tf))
+		}
+		mi.fields = append(mi.fields, mfi)
+	}
+
+	mi.unrecognized = invalidField
+	if f, ok := t.FieldByName("XXX_unrecognized"); ok {
+		if f.Type != reflect.TypeOf([]byte{}) {
+			panic("expected XXX_unrecognized to be of type []byte")
+		}
+		mi.unrecognized = toField(&f)
+	}
+
+	atomic.StoreInt32(&mi.initialized, 1)
+}
diff --git a/proto/table_unmarshal.go b/proto/table_unmarshal.go
new file mode 100644
index 0000000..acee2fc
--- /dev/null
+++ b/proto/table_unmarshal.go
@@ -0,0 +1,2053 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2016 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto
+
+import (
+	"errors"
+	"fmt"
+	"io"
+	"math"
+	"reflect"
+	"strconv"
+	"strings"
+	"sync"
+	"sync/atomic"
+	"unicode/utf8"
+)
+
+// Unmarshal is the entry point from the generated .pb.go files.
+// This function is not intended to be used by non-generated code.
+// This function is not subject to any compatibility guarantee.
+// msg contains a pointer to a protocol buffer struct.
+// b is the data to be unmarshaled into the protocol buffer.
+// a is a pointer to a place to store cached unmarshal information.
+func (a *InternalMessageInfo) Unmarshal(msg Message, b []byte) error {
+	// Load the unmarshal information for this message type.
+	// The atomic load ensures memory consistency.
+	u := atomicLoadUnmarshalInfo(&a.unmarshal)
+	if u == nil {
+		// Slow path: find unmarshal info for msg, update a with it.
+		u = getUnmarshalInfo(reflect.TypeOf(msg).Elem())
+		atomicStoreUnmarshalInfo(&a.unmarshal, u)
+	}
+	// Then do the unmarshaling.
+	err := u.unmarshal(toPointer(&msg), b)
+	return err
+}
+
+type unmarshalInfo struct {
+	typ reflect.Type // type of the protobuf struct
+
+	// 0 = only typ field is initialized
+	// 1 = completely initialized
+	initialized     int32
+	lock            sync.Mutex                    // prevents double initialization
+	dense           []unmarshalFieldInfo          // fields indexed by tag #
+	sparse          map[uint64]unmarshalFieldInfo // fields indexed by tag #
+	reqFields       []string                      // names of required fields
+	reqMask         uint64                        // 1<<len(reqFields)-1
+	unrecognized    field                         // offset of []byte to put unrecognized data (or invalidField if we should throw it away)
+	extensions      field                         // offset of extensions field (of type proto.XXX_InternalExtensions), or invalidField if it does not exist
+	oldExtensions   field                         // offset of old-form extensions field (of type map[int]Extension)
+	extensionRanges []ExtensionRange              // if non-nil, implies extensions field is valid
+	isMessageSet    bool                          // if true, implies extensions field is valid
+}
+
+// An unmarshaler takes a stream of bytes and a pointer to a field of a message.
+// It decodes the field, stores it at f, and returns the unused bytes.
+// w is the wire encoding.
+// b is the data after the tag and wire encoding have been read.
+type unmarshaler func(b []byte, f pointer, w int) ([]byte, error)
+
+type unmarshalFieldInfo struct {
+	// location of the field in the proto message structure.
+	field field
+
+	// function to unmarshal the data for the field.
+	unmarshal unmarshaler
+
+	// if a required field, contains a single set bit at this field's index in the required field list.
+	reqMask uint64
+
+	name string // name of the field, for error reporting
+}
+
+var (
+	unmarshalInfoMap  = map[reflect.Type]*unmarshalInfo{}
+	unmarshalInfoLock sync.Mutex
+)
+
+// getUnmarshalInfo returns the data structure which can be
+// subsequently used to unmarshal a message of the given type.
+// t is the type of the message (note: not pointer to message).
+func getUnmarshalInfo(t reflect.Type) *unmarshalInfo {
+	// It would be correct to return a new unmarshalInfo
+	// unconditionally. We would end up allocating one
+	// per occurrence of that type as a message or submessage.
+	// We use a cache here just to reduce memory usage.
+	unmarshalInfoLock.Lock()
+	defer unmarshalInfoLock.Unlock()
+	u := unmarshalInfoMap[t]
+	if u == nil {
+		u = &unmarshalInfo{typ: t}
+		// Note: we just set the type here. The rest of the fields
+		// will be initialized on first use.
+		unmarshalInfoMap[t] = u
+	}
+	return u
+}
+
+// unmarshal does the main work of unmarshaling a message.
+// u provides type information used to unmarshal the message.
+// m is a pointer to a protocol buffer message.
+// b is a byte stream to unmarshal into m.
+// This is top routine used when recursively unmarshaling submessages.
+func (u *unmarshalInfo) unmarshal(m pointer, b []byte) error {
+	if atomic.LoadInt32(&u.initialized) == 0 {
+		u.computeUnmarshalInfo()
+	}
+	if u.isMessageSet {
+		return unmarshalMessageSet(b, m.offset(u.extensions).toExtensions())
+	}
+	var reqMask uint64 // bitmask of required fields we've seen.
+	var errLater error
+	for len(b) > 0 {
+		// Read tag and wire type.
+		// Special case 1 and 2 byte varints.
+		var x uint64
+		if b[0] < 128 {
+			x = uint64(b[0])
+			b = b[1:]
+		} else if len(b) >= 2 && b[1] < 128 {
+			x = uint64(b[0]&0x7f) + uint64(b[1])<<7
+			b = b[2:]
+		} else {
+			var n int
+			x, n = decodeVarint(b)
+			if n == 0 {
+				return io.ErrUnexpectedEOF
+			}
+			b = b[n:]
+		}
+		tag := x >> 3
+		wire := int(x) & 7
+
+		// Dispatch on the tag to one of the unmarshal* functions below.
+		var f unmarshalFieldInfo
+		if tag < uint64(len(u.dense)) {
+			f = u.dense[tag]
+		} else {
+			f = u.sparse[tag]
+		}
+		if fn := f.unmarshal; fn != nil {
+			var err error
+			b, err = fn(b, m.offset(f.field), wire)
+			if err == nil {
+				reqMask |= f.reqMask
+				continue
+			}
+			if r, ok := err.(*RequiredNotSetError); ok {
+				// Remember this error, but keep parsing. We need to produce
+				// a full parse even if a required field is missing.
+				if errLater == nil {
+					errLater = r
+				}
+				reqMask |= f.reqMask
+				continue
+			}
+			if err != errInternalBadWireType {
+				if err == errInvalidUTF8 {
+					if errLater == nil {
+						fullName := revProtoTypes[reflect.PtrTo(u.typ)] + "." + f.name
+						errLater = &invalidUTF8Error{fullName}
+					}
+					continue
+				}
+				return err
+			}
+			// Fragments with bad wire type are treated as unknown fields.
+		}
+
+		// Unknown tag.
+		if !u.unrecognized.IsValid() {
+			// Don't keep unrecognized data; just skip it.
+			var err error
+			b, err = skipField(b, wire)
+			if err != nil {
+				return err
+			}
+			continue
+		}
+		// Keep unrecognized data around.
+		// maybe in extensions, maybe in the unrecognized field.
+		z := m.offset(u.unrecognized).toBytes()
+		var emap map[int32]Extension
+		var e Extension
+		for _, r := range u.extensionRanges {
+			if uint64(r.Start) <= tag && tag <= uint64(r.End) {
+				if u.extensions.IsValid() {
+					mp := m.offset(u.extensions).toExtensions()
+					emap = mp.extensionsWrite()
+					e = emap[int32(tag)]
+					z = &e.enc
+					break
+				}
+				if u.oldExtensions.IsValid() {
+					p := m.offset(u.oldExtensions).toOldExtensions()
+					emap = *p
+					if emap == nil {
+						emap = map[int32]Extension{}
+						*p = emap
+					}
+					e = emap[int32(tag)]
+					z = &e.enc
+					break
+				}
+				panic("no extensions field available")
+			}
+		}
+
+		// Use wire type to skip data.
+		var err error
+		b0 := b
+		b, err = skipField(b, wire)
+		if err != nil {
+			return err
+		}
+		*z = encodeVarint(*z, tag<<3|uint64(wire))
+		*z = append(*z, b0[:len(b0)-len(b)]...)
+
+		if emap != nil {
+			emap[int32(tag)] = e
+		}
+	}
+	if reqMask != u.reqMask && errLater == nil {
+		// A required field of this message is missing.
+		for _, n := range u.reqFields {
+			if reqMask&1 == 0 {
+				errLater = &RequiredNotSetError{n}
+			}
+			reqMask >>= 1
+		}
+	}
+	return errLater
+}
+
+// computeUnmarshalInfo fills in u with information for use
+// in unmarshaling protocol buffers of type u.typ.
+func (u *unmarshalInfo) computeUnmarshalInfo() {
+	u.lock.Lock()
+	defer u.lock.Unlock()
+	if u.initialized != 0 {
+		return
+	}
+	t := u.typ
+	n := t.NumField()
+
+	// Set up the "not found" value for the unrecognized byte buffer.
+	// This is the default for proto3.
+	u.unrecognized = invalidField
+	u.extensions = invalidField
+	u.oldExtensions = invalidField
+
+	// List of the generated type and offset for each oneof field.
+	type oneofField struct {
+		ityp  reflect.Type // interface type of oneof field
+		field field        // offset in containing message
+	}
+	var oneofFields []oneofField
+
+	for i := 0; i < n; i++ {
+		f := t.Field(i)
+		if f.Name == "XXX_unrecognized" {
+			// The byte slice used to hold unrecognized input is special.
+			if f.Type != reflect.TypeOf(([]byte)(nil)) {
+				panic("bad type for XXX_unrecognized field: " + f.Type.Name())
+			}
+			u.unrecognized = toField(&f)
+			continue
+		}
+		if f.Name == "XXX_InternalExtensions" {
+			// Ditto here.
+			if f.Type != reflect.TypeOf(XXX_InternalExtensions{}) {
+				panic("bad type for XXX_InternalExtensions field: " + f.Type.Name())
+			}
+			u.extensions = toField(&f)
+			if f.Tag.Get("protobuf_messageset") == "1" {
+				u.isMessageSet = true
+			}
+			continue
+		}
+		if f.Name == "XXX_extensions" {
+			// An older form of the extensions field.
+			if f.Type != reflect.TypeOf((map[int32]Extension)(nil)) {
+				panic("bad type for XXX_extensions field: " + f.Type.Name())
+			}
+			u.oldExtensions = toField(&f)
+			continue
+		}
+		if f.Name == "XXX_NoUnkeyedLiteral" || f.Name == "XXX_sizecache" {
+			continue
+		}
+
+		oneof := f.Tag.Get("protobuf_oneof")
+		if oneof != "" {
+			oneofFields = append(oneofFields, oneofField{f.Type, toField(&f)})
+			// The rest of oneof processing happens below.
+			continue
+		}
+
+		tags := f.Tag.Get("protobuf")
+		tagArray := strings.Split(tags, ",")
+		if len(tagArray) < 2 {
+			panic("protobuf tag not enough fields in " + t.Name() + "." + f.Name + ": " + tags)
+		}
+		tag, err := strconv.Atoi(tagArray[1])
+		if err != nil {
+			panic("protobuf tag field not an integer: " + tagArray[1])
+		}
+
+		name := ""
+		for _, tag := range tagArray[3:] {
+			if strings.HasPrefix(tag, "name=") {
+				name = tag[5:]
+			}
+		}
+
+		// Extract unmarshaling function from the field (its type and tags).
+		unmarshal := fieldUnmarshaler(&f)
+
+		// Required field?
+		var reqMask uint64
+		if tagArray[2] == "req" {
+			bit := len(u.reqFields)
+			u.reqFields = append(u.reqFields, name)
+			reqMask = uint64(1) << uint(bit)
+			// TODO: if we have more than 64 required fields, we end up
+			// not verifying that all required fields are present.
+			// Fix this, perhaps using a count of required fields?
+		}
+
+		// Store the info in the correct slot in the message.
+		u.setTag(tag, toField(&f), unmarshal, reqMask, name)
+	}
+
+	// Find any types associated with oneof fields.
+	var oneofImplementers []interface{}
+	switch m := reflect.Zero(reflect.PtrTo(t)).Interface().(type) {
+	case oneofFuncsIface:
+		_, _, _, oneofImplementers = m.XXX_OneofFuncs()
+	case oneofWrappersIface:
+		oneofImplementers = m.XXX_OneofWrappers()
+	}
+	for _, v := range oneofImplementers {
+		tptr := reflect.TypeOf(v) // *Msg_X
+		typ := tptr.Elem()        // Msg_X
+
+		f := typ.Field(0) // oneof implementers have one field
+		baseUnmarshal := fieldUnmarshaler(&f)
+		tags := strings.Split(f.Tag.Get("protobuf"), ",")
+		fieldNum, err := strconv.Atoi(tags[1])
+		if err != nil {
+			panic("protobuf tag field not an integer: " + tags[1])
+		}
+		var name string
+		for _, tag := range tags {
+			if strings.HasPrefix(tag, "name=") {
+				name = strings.TrimPrefix(tag, "name=")
+				break
+			}
+		}
+
+		// Find the oneof field that this struct implements.
+		// Might take O(n^2) to process all of the oneofs, but who cares.
+		for _, of := range oneofFields {
+			if tptr.Implements(of.ityp) {
+				// We have found the corresponding interface for this struct.
+				// That lets us know where this struct should be stored
+				// when we encounter it during unmarshaling.
+				unmarshal := makeUnmarshalOneof(typ, of.ityp, baseUnmarshal)
+				u.setTag(fieldNum, of.field, unmarshal, 0, name)
+			}
+		}
+
+	}
+
+	// Get extension ranges, if any.
+	fn := reflect.Zero(reflect.PtrTo(t)).MethodByName("ExtensionRangeArray")
+	if fn.IsValid() {
+		if !u.extensions.IsValid() && !u.oldExtensions.IsValid() {
+			panic("a message with extensions, but no extensions field in " + t.Name())
+		}
+		u.extensionRanges = fn.Call(nil)[0].Interface().([]ExtensionRange)
+	}
+
+	// Explicitly disallow tag 0. This will ensure we flag an error
+	// when decoding a buffer of all zeros. Without this code, we
+	// would decode and skip an all-zero buffer of even length.
+	// [0 0] is [tag=0/wiretype=varint varint-encoded-0].
+	u.setTag(0, zeroField, func(b []byte, f pointer, w int) ([]byte, error) {
+		return nil, fmt.Errorf("proto: %s: illegal tag 0 (wire type %d)", t, w)
+	}, 0, "")
+
+	// Set mask for required field check.
+	u.reqMask = uint64(1)<<uint(len(u.reqFields)) - 1
+
+	atomic.StoreInt32(&u.initialized, 1)
+}
+
+// setTag stores the unmarshal information for the given tag.
+// tag = tag # for field
+// field/unmarshal = unmarshal info for that field.
+// reqMask = if required, bitmask for field position in required field list. 0 otherwise.
+// name = short name of the field.
+func (u *unmarshalInfo) setTag(tag int, field field, unmarshal unmarshaler, reqMask uint64, name string) {
+	i := unmarshalFieldInfo{field: field, unmarshal: unmarshal, reqMask: reqMask, name: name}
+	n := u.typ.NumField()
+	if tag >= 0 && (tag < 16 || tag < 2*n) { // TODO: what are the right numbers here?
+		for len(u.dense) <= tag {
+			u.dense = append(u.dense, unmarshalFieldInfo{})
+		}
+		u.dense[tag] = i
+		return
+	}
+	if u.sparse == nil {
+		u.sparse = map[uint64]unmarshalFieldInfo{}
+	}
+	u.sparse[uint64(tag)] = i
+}
+
+// fieldUnmarshaler returns an unmarshaler for the given field.
+func fieldUnmarshaler(f *reflect.StructField) unmarshaler {
+	if f.Type.Kind() == reflect.Map {
+		return makeUnmarshalMap(f)
+	}
+	return typeUnmarshaler(f.Type, f.Tag.Get("protobuf"))
+}
+
+// typeUnmarshaler returns an unmarshaler for the given field type / field tag pair.
+func typeUnmarshaler(t reflect.Type, tags string) unmarshaler {
+	tagArray := strings.Split(tags, ",")
+	encoding := tagArray[0]
+	name := "unknown"
+	proto3 := false
+	validateUTF8 := true
+	for _, tag := range tagArray[3:] {
+		if strings.HasPrefix(tag, "name=") {
+			name = tag[5:]
+		}
+		if tag == "proto3" {
+			proto3 = true
+		}
+	}
+	validateUTF8 = validateUTF8 && proto3
+
+	// Figure out packaging (pointer, slice, or both)
+	slice := false
+	pointer := false
+	if t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 {
+		slice = true
+		t = t.Elem()
+	}
+	if t.Kind() == reflect.Ptr {
+		pointer = true
+		t = t.Elem()
+	}
+
+	// We'll never have both pointer and slice for basic types.
+	if pointer && slice && t.Kind() != reflect.Struct {
+		panic("both pointer and slice for basic type in " + t.Name())
+	}
+
+	switch t.Kind() {
+	case reflect.Bool:
+		if pointer {
+			return unmarshalBoolPtr
+		}
+		if slice {
+			return unmarshalBoolSlice
+		}
+		return unmarshalBoolValue
+	case reflect.Int32:
+		switch encoding {
+		case "fixed32":
+			if pointer {
+				return unmarshalFixedS32Ptr
+			}
+			if slice {
+				return unmarshalFixedS32Slice
+			}
+			return unmarshalFixedS32Value
+		case "varint":
+			// this could be int32 or enum
+			if pointer {
+				return unmarshalInt32Ptr
+			}
+			if slice {
+				return unmarshalInt32Slice
+			}
+			return unmarshalInt32Value
+		case "zigzag32":
+			if pointer {
+				return unmarshalSint32Ptr
+			}
+			if slice {
+				return unmarshalSint32Slice
+			}
+			return unmarshalSint32Value
+		}
+	case reflect.Int64:
+		switch encoding {
+		case "fixed64":
+			if pointer {
+				return unmarshalFixedS64Ptr
+			}
+			if slice {
+				return unmarshalFixedS64Slice
+			}
+			return unmarshalFixedS64Value
+		case "varint":
+			if pointer {
+				return unmarshalInt64Ptr
+			}
+			if slice {
+				return unmarshalInt64Slice
+			}
+			return unmarshalInt64Value
+		case "zigzag64":
+			if pointer {
+				return unmarshalSint64Ptr
+			}
+			if slice {
+				return unmarshalSint64Slice
+			}
+			return unmarshalSint64Value
+		}
+	case reflect.Uint32:
+		switch encoding {
+		case "fixed32":
+			if pointer {
+				return unmarshalFixed32Ptr
+			}
+			if slice {
+				return unmarshalFixed32Slice
+			}
+			return unmarshalFixed32Value
+		case "varint":
+			if pointer {
+				return unmarshalUint32Ptr
+			}
+			if slice {
+				return unmarshalUint32Slice
+			}
+			return unmarshalUint32Value
+		}
+	case reflect.Uint64:
+		switch encoding {
+		case "fixed64":
+			if pointer {
+				return unmarshalFixed64Ptr
+			}
+			if slice {
+				return unmarshalFixed64Slice
+			}
+			return unmarshalFixed64Value
+		case "varint":
+			if pointer {
+				return unmarshalUint64Ptr
+			}
+			if slice {
+				return unmarshalUint64Slice
+			}
+			return unmarshalUint64Value
+		}
+	case reflect.Float32:
+		if pointer {
+			return unmarshalFloat32Ptr
+		}
+		if slice {
+			return unmarshalFloat32Slice
+		}
+		return unmarshalFloat32Value
+	case reflect.Float64:
+		if pointer {
+			return unmarshalFloat64Ptr
+		}
+		if slice {
+			return unmarshalFloat64Slice
+		}
+		return unmarshalFloat64Value
+	case reflect.Map:
+		panic("map type in typeUnmarshaler in " + t.Name())
+	case reflect.Slice:
+		if pointer {
+			panic("bad pointer in slice case in " + t.Name())
+		}
+		if slice {
+			return unmarshalBytesSlice
+		}
+		return unmarshalBytesValue
+	case reflect.String:
+		if validateUTF8 {
+			if pointer {
+				return unmarshalUTF8StringPtr
+			}
+			if slice {
+				return unmarshalUTF8StringSlice
+			}
+			return unmarshalUTF8StringValue
+		}
+		if pointer {
+			return unmarshalStringPtr
+		}
+		if slice {
+			return unmarshalStringSlice
+		}
+		return unmarshalStringValue
+	case reflect.Struct:
+		// message or group field
+		if !pointer {
+			panic(fmt.Sprintf("message/group field %s:%s without pointer", t, encoding))
+		}
+		switch encoding {
+		case "bytes":
+			if slice {
+				return makeUnmarshalMessageSlicePtr(getUnmarshalInfo(t), name)
+			}
+			return makeUnmarshalMessagePtr(getUnmarshalInfo(t), name)
+		case "group":
+			if slice {
+				return makeUnmarshalGroupSlicePtr(getUnmarshalInfo(t), name)
+			}
+			return makeUnmarshalGroupPtr(getUnmarshalInfo(t), name)
+		}
+	}
+	panic(fmt.Sprintf("unmarshaler not found type:%s encoding:%s", t, encoding))
+}
+
+// Below are all the unmarshalers for individual fields of various types.
+
+func unmarshalInt64Value(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireVarint {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	v := int64(x)
+	*f.toInt64() = v
+	return b, nil
+}
+
+func unmarshalInt64Ptr(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireVarint {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	v := int64(x)
+	*f.toInt64Ptr() = &v
+	return b, nil
+}
+
+func unmarshalInt64Slice(b []byte, f pointer, w int) ([]byte, error) {
+	if w == WireBytes { // packed
+		x, n := decodeVarint(b)
+		if n == 0 {
+			return nil, io.ErrUnexpectedEOF
+		}
+		b = b[n:]
+		if x > uint64(len(b)) {
+			return nil, io.ErrUnexpectedEOF
+		}
+		res := b[x:]
+		b = b[:x]
+		for len(b) > 0 {
+			x, n = decodeVarint(b)
+			if n == 0 {
+				return nil, io.ErrUnexpectedEOF
+			}
+			b = b[n:]
+			v := int64(x)
+			s := f.toInt64Slice()
+			*s = append(*s, v)
+		}
+		return res, nil
+	}
+	if w != WireVarint {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	v := int64(x)
+	s := f.toInt64Slice()
+	*s = append(*s, v)
+	return b, nil
+}
+
+func unmarshalSint64Value(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireVarint {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	v := int64(x>>1) ^ int64(x)<<63>>63
+	*f.toInt64() = v
+	return b, nil
+}
+
+func unmarshalSint64Ptr(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireVarint {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	v := int64(x>>1) ^ int64(x)<<63>>63
+	*f.toInt64Ptr() = &v
+	return b, nil
+}
+
+func unmarshalSint64Slice(b []byte, f pointer, w int) ([]byte, error) {
+	if w == WireBytes { // packed
+		x, n := decodeVarint(b)
+		if n == 0 {
+			return nil, io.ErrUnexpectedEOF
+		}
+		b = b[n:]
+		if x > uint64(len(b)) {
+			return nil, io.ErrUnexpectedEOF
+		}
+		res := b[x:]
+		b = b[:x]
+		for len(b) > 0 {
+			x, n = decodeVarint(b)
+			if n == 0 {
+				return nil, io.ErrUnexpectedEOF
+			}
+			b = b[n:]
+			v := int64(x>>1) ^ int64(x)<<63>>63
+			s := f.toInt64Slice()
+			*s = append(*s, v)
+		}
+		return res, nil
+	}
+	if w != WireVarint {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	v := int64(x>>1) ^ int64(x)<<63>>63
+	s := f.toInt64Slice()
+	*s = append(*s, v)
+	return b, nil
+}
+
+func unmarshalUint64Value(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireVarint {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	v := uint64(x)
+	*f.toUint64() = v
+	return b, nil
+}
+
+func unmarshalUint64Ptr(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireVarint {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	v := uint64(x)
+	*f.toUint64Ptr() = &v
+	return b, nil
+}
+
+func unmarshalUint64Slice(b []byte, f pointer, w int) ([]byte, error) {
+	if w == WireBytes { // packed
+		x, n := decodeVarint(b)
+		if n == 0 {
+			return nil, io.ErrUnexpectedEOF
+		}
+		b = b[n:]
+		if x > uint64(len(b)) {
+			return nil, io.ErrUnexpectedEOF
+		}
+		res := b[x:]
+		b = b[:x]
+		for len(b) > 0 {
+			x, n = decodeVarint(b)
+			if n == 0 {
+				return nil, io.ErrUnexpectedEOF
+			}
+			b = b[n:]
+			v := uint64(x)
+			s := f.toUint64Slice()
+			*s = append(*s, v)
+		}
+		return res, nil
+	}
+	if w != WireVarint {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	v := uint64(x)
+	s := f.toUint64Slice()
+	*s = append(*s, v)
+	return b, nil
+}
+
+func unmarshalInt32Value(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireVarint {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	v := int32(x)
+	*f.toInt32() = v
+	return b, nil
+}
+
+func unmarshalInt32Ptr(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireVarint {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	v := int32(x)
+	f.setInt32Ptr(v)
+	return b, nil
+}
+
+func unmarshalInt32Slice(b []byte, f pointer, w int) ([]byte, error) {
+	if w == WireBytes { // packed
+		x, n := decodeVarint(b)
+		if n == 0 {
+			return nil, io.ErrUnexpectedEOF
+		}
+		b = b[n:]
+		if x > uint64(len(b)) {
+			return nil, io.ErrUnexpectedEOF
+		}
+		res := b[x:]
+		b = b[:x]
+		for len(b) > 0 {
+			x, n = decodeVarint(b)
+			if n == 0 {
+				return nil, io.ErrUnexpectedEOF
+			}
+			b = b[n:]
+			v := int32(x)
+			f.appendInt32Slice(v)
+		}
+		return res, nil
+	}
+	if w != WireVarint {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	v := int32(x)
+	f.appendInt32Slice(v)
+	return b, nil
+}
+
+func unmarshalSint32Value(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireVarint {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	v := int32(x>>1) ^ int32(x)<<31>>31
+	*f.toInt32() = v
+	return b, nil
+}
+
+func unmarshalSint32Ptr(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireVarint {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	v := int32(x>>1) ^ int32(x)<<31>>31
+	f.setInt32Ptr(v)
+	return b, nil
+}
+
+func unmarshalSint32Slice(b []byte, f pointer, w int) ([]byte, error) {
+	if w == WireBytes { // packed
+		x, n := decodeVarint(b)
+		if n == 0 {
+			return nil, io.ErrUnexpectedEOF
+		}
+		b = b[n:]
+		if x > uint64(len(b)) {
+			return nil, io.ErrUnexpectedEOF
+		}
+		res := b[x:]
+		b = b[:x]
+		for len(b) > 0 {
+			x, n = decodeVarint(b)
+			if n == 0 {
+				return nil, io.ErrUnexpectedEOF
+			}
+			b = b[n:]
+			v := int32(x>>1) ^ int32(x)<<31>>31
+			f.appendInt32Slice(v)
+		}
+		return res, nil
+	}
+	if w != WireVarint {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	v := int32(x>>1) ^ int32(x)<<31>>31
+	f.appendInt32Slice(v)
+	return b, nil
+}
+
+func unmarshalUint32Value(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireVarint {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	v := uint32(x)
+	*f.toUint32() = v
+	return b, nil
+}
+
+func unmarshalUint32Ptr(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireVarint {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	v := uint32(x)
+	*f.toUint32Ptr() = &v
+	return b, nil
+}
+
+func unmarshalUint32Slice(b []byte, f pointer, w int) ([]byte, error) {
+	if w == WireBytes { // packed
+		x, n := decodeVarint(b)
+		if n == 0 {
+			return nil, io.ErrUnexpectedEOF
+		}
+		b = b[n:]
+		if x > uint64(len(b)) {
+			return nil, io.ErrUnexpectedEOF
+		}
+		res := b[x:]
+		b = b[:x]
+		for len(b) > 0 {
+			x, n = decodeVarint(b)
+			if n == 0 {
+				return nil, io.ErrUnexpectedEOF
+			}
+			b = b[n:]
+			v := uint32(x)
+			s := f.toUint32Slice()
+			*s = append(*s, v)
+		}
+		return res, nil
+	}
+	if w != WireVarint {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	v := uint32(x)
+	s := f.toUint32Slice()
+	*s = append(*s, v)
+	return b, nil
+}
+
+func unmarshalFixed64Value(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireFixed64 {
+		return b, errInternalBadWireType
+	}
+	if len(b) < 8 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56
+	*f.toUint64() = v
+	return b[8:], nil
+}
+
+func unmarshalFixed64Ptr(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireFixed64 {
+		return b, errInternalBadWireType
+	}
+	if len(b) < 8 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56
+	*f.toUint64Ptr() = &v
+	return b[8:], nil
+}
+
+func unmarshalFixed64Slice(b []byte, f pointer, w int) ([]byte, error) {
+	if w == WireBytes { // packed
+		x, n := decodeVarint(b)
+		if n == 0 {
+			return nil, io.ErrUnexpectedEOF
+		}
+		b = b[n:]
+		if x > uint64(len(b)) {
+			return nil, io.ErrUnexpectedEOF
+		}
+		res := b[x:]
+		b = b[:x]
+		for len(b) > 0 {
+			if len(b) < 8 {
+				return nil, io.ErrUnexpectedEOF
+			}
+			v := uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56
+			s := f.toUint64Slice()
+			*s = append(*s, v)
+			b = b[8:]
+		}
+		return res, nil
+	}
+	if w != WireFixed64 {
+		return b, errInternalBadWireType
+	}
+	if len(b) < 8 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56
+	s := f.toUint64Slice()
+	*s = append(*s, v)
+	return b[8:], nil
+}
+
+func unmarshalFixedS64Value(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireFixed64 {
+		return b, errInternalBadWireType
+	}
+	if len(b) < 8 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := int64(b[0]) | int64(b[1])<<8 | int64(b[2])<<16 | int64(b[3])<<24 | int64(b[4])<<32 | int64(b[5])<<40 | int64(b[6])<<48 | int64(b[7])<<56
+	*f.toInt64() = v
+	return b[8:], nil
+}
+
+func unmarshalFixedS64Ptr(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireFixed64 {
+		return b, errInternalBadWireType
+	}
+	if len(b) < 8 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := int64(b[0]) | int64(b[1])<<8 | int64(b[2])<<16 | int64(b[3])<<24 | int64(b[4])<<32 | int64(b[5])<<40 | int64(b[6])<<48 | int64(b[7])<<56
+	*f.toInt64Ptr() = &v
+	return b[8:], nil
+}
+
+func unmarshalFixedS64Slice(b []byte, f pointer, w int) ([]byte, error) {
+	if w == WireBytes { // packed
+		x, n := decodeVarint(b)
+		if n == 0 {
+			return nil, io.ErrUnexpectedEOF
+		}
+		b = b[n:]
+		if x > uint64(len(b)) {
+			return nil, io.ErrUnexpectedEOF
+		}
+		res := b[x:]
+		b = b[:x]
+		for len(b) > 0 {
+			if len(b) < 8 {
+				return nil, io.ErrUnexpectedEOF
+			}
+			v := int64(b[0]) | int64(b[1])<<8 | int64(b[2])<<16 | int64(b[3])<<24 | int64(b[4])<<32 | int64(b[5])<<40 | int64(b[6])<<48 | int64(b[7])<<56
+			s := f.toInt64Slice()
+			*s = append(*s, v)
+			b = b[8:]
+		}
+		return res, nil
+	}
+	if w != WireFixed64 {
+		return b, errInternalBadWireType
+	}
+	if len(b) < 8 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := int64(b[0]) | int64(b[1])<<8 | int64(b[2])<<16 | int64(b[3])<<24 | int64(b[4])<<32 | int64(b[5])<<40 | int64(b[6])<<48 | int64(b[7])<<56
+	s := f.toInt64Slice()
+	*s = append(*s, v)
+	return b[8:], nil
+}
+
+func unmarshalFixed32Value(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireFixed32 {
+		return b, errInternalBadWireType
+	}
+	if len(b) < 4 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24
+	*f.toUint32() = v
+	return b[4:], nil
+}
+
+func unmarshalFixed32Ptr(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireFixed32 {
+		return b, errInternalBadWireType
+	}
+	if len(b) < 4 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24
+	*f.toUint32Ptr() = &v
+	return b[4:], nil
+}
+
+func unmarshalFixed32Slice(b []byte, f pointer, w int) ([]byte, error) {
+	if w == WireBytes { // packed
+		x, n := decodeVarint(b)
+		if n == 0 {
+			return nil, io.ErrUnexpectedEOF
+		}
+		b = b[n:]
+		if x > uint64(len(b)) {
+			return nil, io.ErrUnexpectedEOF
+		}
+		res := b[x:]
+		b = b[:x]
+		for len(b) > 0 {
+			if len(b) < 4 {
+				return nil, io.ErrUnexpectedEOF
+			}
+			v := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24
+			s := f.toUint32Slice()
+			*s = append(*s, v)
+			b = b[4:]
+		}
+		return res, nil
+	}
+	if w != WireFixed32 {
+		return b, errInternalBadWireType
+	}
+	if len(b) < 4 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24
+	s := f.toUint32Slice()
+	*s = append(*s, v)
+	return b[4:], nil
+}
+
+func unmarshalFixedS32Value(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireFixed32 {
+		return b, errInternalBadWireType
+	}
+	if len(b) < 4 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := int32(b[0]) | int32(b[1])<<8 | int32(b[2])<<16 | int32(b[3])<<24
+	*f.toInt32() = v
+	return b[4:], nil
+}
+
+func unmarshalFixedS32Ptr(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireFixed32 {
+		return b, errInternalBadWireType
+	}
+	if len(b) < 4 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := int32(b[0]) | int32(b[1])<<8 | int32(b[2])<<16 | int32(b[3])<<24
+	f.setInt32Ptr(v)
+	return b[4:], nil
+}
+
+func unmarshalFixedS32Slice(b []byte, f pointer, w int) ([]byte, error) {
+	if w == WireBytes { // packed
+		x, n := decodeVarint(b)
+		if n == 0 {
+			return nil, io.ErrUnexpectedEOF
+		}
+		b = b[n:]
+		if x > uint64(len(b)) {
+			return nil, io.ErrUnexpectedEOF
+		}
+		res := b[x:]
+		b = b[:x]
+		for len(b) > 0 {
+			if len(b) < 4 {
+				return nil, io.ErrUnexpectedEOF
+			}
+			v := int32(b[0]) | int32(b[1])<<8 | int32(b[2])<<16 | int32(b[3])<<24
+			f.appendInt32Slice(v)
+			b = b[4:]
+		}
+		return res, nil
+	}
+	if w != WireFixed32 {
+		return b, errInternalBadWireType
+	}
+	if len(b) < 4 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := int32(b[0]) | int32(b[1])<<8 | int32(b[2])<<16 | int32(b[3])<<24
+	f.appendInt32Slice(v)
+	return b[4:], nil
+}
+
+func unmarshalBoolValue(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireVarint {
+		return b, errInternalBadWireType
+	}
+	// Note: any length varint is allowed, even though any sane
+	// encoder will use one byte.
+	// See https://github.com/golang/protobuf/issues/76
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	// TODO: check if x>1? Tests seem to indicate no.
+	v := x != 0
+	*f.toBool() = v
+	return b[n:], nil
+}
+
+func unmarshalBoolPtr(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireVarint {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := x != 0
+	*f.toBoolPtr() = &v
+	return b[n:], nil
+}
+
+func unmarshalBoolSlice(b []byte, f pointer, w int) ([]byte, error) {
+	if w == WireBytes { // packed
+		x, n := decodeVarint(b)
+		if n == 0 {
+			return nil, io.ErrUnexpectedEOF
+		}
+		b = b[n:]
+		if x > uint64(len(b)) {
+			return nil, io.ErrUnexpectedEOF
+		}
+		res := b[x:]
+		b = b[:x]
+		for len(b) > 0 {
+			x, n = decodeVarint(b)
+			if n == 0 {
+				return nil, io.ErrUnexpectedEOF
+			}
+			v := x != 0
+			s := f.toBoolSlice()
+			*s = append(*s, v)
+			b = b[n:]
+		}
+		return res, nil
+	}
+	if w != WireVarint {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := x != 0
+	s := f.toBoolSlice()
+	*s = append(*s, v)
+	return b[n:], nil
+}
+
+func unmarshalFloat64Value(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireFixed64 {
+		return b, errInternalBadWireType
+	}
+	if len(b) < 8 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := math.Float64frombits(uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56)
+	*f.toFloat64() = v
+	return b[8:], nil
+}
+
+func unmarshalFloat64Ptr(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireFixed64 {
+		return b, errInternalBadWireType
+	}
+	if len(b) < 8 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := math.Float64frombits(uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56)
+	*f.toFloat64Ptr() = &v
+	return b[8:], nil
+}
+
+func unmarshalFloat64Slice(b []byte, f pointer, w int) ([]byte, error) {
+	if w == WireBytes { // packed
+		x, n := decodeVarint(b)
+		if n == 0 {
+			return nil, io.ErrUnexpectedEOF
+		}
+		b = b[n:]
+		if x > uint64(len(b)) {
+			return nil, io.ErrUnexpectedEOF
+		}
+		res := b[x:]
+		b = b[:x]
+		for len(b) > 0 {
+			if len(b) < 8 {
+				return nil, io.ErrUnexpectedEOF
+			}
+			v := math.Float64frombits(uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56)
+			s := f.toFloat64Slice()
+			*s = append(*s, v)
+			b = b[8:]
+		}
+		return res, nil
+	}
+	if w != WireFixed64 {
+		return b, errInternalBadWireType
+	}
+	if len(b) < 8 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := math.Float64frombits(uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 | uint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56)
+	s := f.toFloat64Slice()
+	*s = append(*s, v)
+	return b[8:], nil
+}
+
+func unmarshalFloat32Value(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireFixed32 {
+		return b, errInternalBadWireType
+	}
+	if len(b) < 4 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := math.Float32frombits(uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24)
+	*f.toFloat32() = v
+	return b[4:], nil
+}
+
+func unmarshalFloat32Ptr(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireFixed32 {
+		return b, errInternalBadWireType
+	}
+	if len(b) < 4 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := math.Float32frombits(uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24)
+	*f.toFloat32Ptr() = &v
+	return b[4:], nil
+}
+
+func unmarshalFloat32Slice(b []byte, f pointer, w int) ([]byte, error) {
+	if w == WireBytes { // packed
+		x, n := decodeVarint(b)
+		if n == 0 {
+			return nil, io.ErrUnexpectedEOF
+		}
+		b = b[n:]
+		if x > uint64(len(b)) {
+			return nil, io.ErrUnexpectedEOF
+		}
+		res := b[x:]
+		b = b[:x]
+		for len(b) > 0 {
+			if len(b) < 4 {
+				return nil, io.ErrUnexpectedEOF
+			}
+			v := math.Float32frombits(uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24)
+			s := f.toFloat32Slice()
+			*s = append(*s, v)
+			b = b[4:]
+		}
+		return res, nil
+	}
+	if w != WireFixed32 {
+		return b, errInternalBadWireType
+	}
+	if len(b) < 4 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := math.Float32frombits(uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24)
+	s := f.toFloat32Slice()
+	*s = append(*s, v)
+	return b[4:], nil
+}
+
+func unmarshalStringValue(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireBytes {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	if x > uint64(len(b)) {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := string(b[:x])
+	*f.toString() = v
+	return b[x:], nil
+}
+
+func unmarshalStringPtr(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireBytes {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	if x > uint64(len(b)) {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := string(b[:x])
+	*f.toStringPtr() = &v
+	return b[x:], nil
+}
+
+func unmarshalStringSlice(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireBytes {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	if x > uint64(len(b)) {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := string(b[:x])
+	s := f.toStringSlice()
+	*s = append(*s, v)
+	return b[x:], nil
+}
+
+func unmarshalUTF8StringValue(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireBytes {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	if x > uint64(len(b)) {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := string(b[:x])
+	*f.toString() = v
+	if !utf8.ValidString(v) {
+		return b[x:], errInvalidUTF8
+	}
+	return b[x:], nil
+}
+
+func unmarshalUTF8StringPtr(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireBytes {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	if x > uint64(len(b)) {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := string(b[:x])
+	*f.toStringPtr() = &v
+	if !utf8.ValidString(v) {
+		return b[x:], errInvalidUTF8
+	}
+	return b[x:], nil
+}
+
+func unmarshalUTF8StringSlice(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireBytes {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	if x > uint64(len(b)) {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := string(b[:x])
+	s := f.toStringSlice()
+	*s = append(*s, v)
+	if !utf8.ValidString(v) {
+		return b[x:], errInvalidUTF8
+	}
+	return b[x:], nil
+}
+
+var emptyBuf [0]byte
+
+func unmarshalBytesValue(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireBytes {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	if x > uint64(len(b)) {
+		return nil, io.ErrUnexpectedEOF
+	}
+	// The use of append here is a trick which avoids the zeroing
+	// that would be required if we used a make/copy pair.
+	// We append to emptyBuf instead of nil because we want
+	// a non-nil result even when the length is 0.
+	v := append(emptyBuf[:], b[:x]...)
+	*f.toBytes() = v
+	return b[x:], nil
+}
+
+func unmarshalBytesSlice(b []byte, f pointer, w int) ([]byte, error) {
+	if w != WireBytes {
+		return b, errInternalBadWireType
+	}
+	x, n := decodeVarint(b)
+	if n == 0 {
+		return nil, io.ErrUnexpectedEOF
+	}
+	b = b[n:]
+	if x > uint64(len(b)) {
+		return nil, io.ErrUnexpectedEOF
+	}
+	v := append(emptyBuf[:], b[:x]...)
+	s := f.toBytesSlice()
+	*s = append(*s, v)
+	return b[x:], nil
+}
+
+func makeUnmarshalMessagePtr(sub *unmarshalInfo, name string) unmarshaler {
+	return func(b []byte, f pointer, w int) ([]byte, error) {
+		if w != WireBytes {
+			return b, errInternalBadWireType
+		}
+		x, n := decodeVarint(b)
+		if n == 0 {
+			return nil, io.ErrUnexpectedEOF
+		}
+		b = b[n:]
+		if x > uint64(len(b)) {
+			return nil, io.ErrUnexpectedEOF
+		}
+		// First read the message field to see if something is there.
+		// The semantics of multiple submessages are weird.  Instead of
+		// the last one winning (as it is for all other fields), multiple
+		// submessages are merged.
+		v := f.getPointer()
+		if v.isNil() {
+			v = valToPointer(reflect.New(sub.typ))
+			f.setPointer(v)
+		}
+		err := sub.unmarshal(v, b[:x])
+		if err != nil {
+			if r, ok := err.(*RequiredNotSetError); ok {
+				r.field = name + "." + r.field
+			} else {
+				return nil, err
+			}
+		}
+		return b[x:], err
+	}
+}
+
+func makeUnmarshalMessageSlicePtr(sub *unmarshalInfo, name string) unmarshaler {
+	return func(b []byte, f pointer, w int) ([]byte, error) {
+		if w != WireBytes {
+			return b, errInternalBadWireType
+		}
+		x, n := decodeVarint(b)
+		if n == 0 {
+			return nil, io.ErrUnexpectedEOF
+		}
+		b = b[n:]
+		if x > uint64(len(b)) {
+			return nil, io.ErrUnexpectedEOF
+		}
+		v := valToPointer(reflect.New(sub.typ))
+		err := sub.unmarshal(v, b[:x])
+		if err != nil {
+			if r, ok := err.(*RequiredNotSetError); ok {
+				r.field = name + "." + r.field
+			} else {
+				return nil, err
+			}
+		}
+		f.appendPointer(v)
+		return b[x:], err
+	}
+}
+
+func makeUnmarshalGroupPtr(sub *unmarshalInfo, name string) unmarshaler {
+	return func(b []byte, f pointer, w int) ([]byte, error) {
+		if w != WireStartGroup {
+			return b, errInternalBadWireType
+		}
+		x, y := findEndGroup(b)
+		if x < 0 {
+			return nil, io.ErrUnexpectedEOF
+		}
+		v := f.getPointer()
+		if v.isNil() {
+			v = valToPointer(reflect.New(sub.typ))
+			f.setPointer(v)
+		}
+		err := sub.unmarshal(v, b[:x])
+		if err != nil {
+			if r, ok := err.(*RequiredNotSetError); ok {
+				r.field = name + "." + r.field
+			} else {
+				return nil, err
+			}
+		}
+		return b[y:], err
+	}
+}
+
+func makeUnmarshalGroupSlicePtr(sub *unmarshalInfo, name string) unmarshaler {
+	return func(b []byte, f pointer, w int) ([]byte, error) {
+		if w != WireStartGroup {
+			return b, errInternalBadWireType
+		}
+		x, y := findEndGroup(b)
+		if x < 0 {
+			return nil, io.ErrUnexpectedEOF
+		}
+		v := valToPointer(reflect.New(sub.typ))
+		err := sub.unmarshal(v, b[:x])
+		if err != nil {
+			if r, ok := err.(*RequiredNotSetError); ok {
+				r.field = name + "." + r.field
+			} else {
+				return nil, err
+			}
+		}
+		f.appendPointer(v)
+		return b[y:], err
+	}
+}
+
+func makeUnmarshalMap(f *reflect.StructField) unmarshaler {
+	t := f.Type
+	kt := t.Key()
+	vt := t.Elem()
+	unmarshalKey := typeUnmarshaler(kt, f.Tag.Get("protobuf_key"))
+	unmarshalVal := typeUnmarshaler(vt, f.Tag.Get("protobuf_val"))
+	return func(b []byte, f pointer, w int) ([]byte, error) {
+		// The map entry is a submessage. Figure out how big it is.
+		if w != WireBytes {
+			return nil, fmt.Errorf("proto: bad wiretype for map field: got %d want %d", w, WireBytes)
+		}
+		x, n := decodeVarint(b)
+		if n == 0 {
+			return nil, io.ErrUnexpectedEOF
+		}
+		b = b[n:]
+		if x > uint64(len(b)) {
+			return nil, io.ErrUnexpectedEOF
+		}
+		r := b[x:] // unused data to return
+		b = b[:x]  // data for map entry
+
+		// Note: we could use #keys * #values ~= 200 functions
+		// to do map decoding without reflection. Probably not worth it.
+		// Maps will be somewhat slow. Oh well.
+
+		// Read key and value from data.
+		var nerr nonFatal
+		k := reflect.New(kt)
+		v := reflect.New(vt)
+		for len(b) > 0 {
+			x, n := decodeVarint(b)
+			if n == 0 {
+				return nil, io.ErrUnexpectedEOF
+			}
+			wire := int(x) & 7
+			b = b[n:]
+
+			var err error
+			switch x >> 3 {
+			case 1:
+				b, err = unmarshalKey(b, valToPointer(k), wire)
+			case 2:
+				b, err = unmarshalVal(b, valToPointer(v), wire)
+			default:
+				err = errInternalBadWireType // skip unknown tag
+			}
+
+			if nerr.Merge(err) {
+				continue
+			}
+			if err != errInternalBadWireType {
+				return nil, err
+			}
+
+			// Skip past unknown fields.
+			b, err = skipField(b, wire)
+			if err != nil {
+				return nil, err
+			}
+		}
+
+		// Get map, allocate if needed.
+		m := f.asPointerTo(t).Elem() // an addressable map[K]T
+		if m.IsNil() {
+			m.Set(reflect.MakeMap(t))
+		}
+
+		// Insert into map.
+		m.SetMapIndex(k.Elem(), v.Elem())
+
+		return r, nerr.E
+	}
+}
+
+// makeUnmarshalOneof makes an unmarshaler for oneof fields.
+// for:
+// message Msg {
+//   oneof F {
+//     int64 X = 1;
+//     float64 Y = 2;
+//   }
+// }
+// typ is the type of the concrete entry for a oneof case (e.g. Msg_X).
+// ityp is the interface type of the oneof field (e.g. isMsg_F).
+// unmarshal is the unmarshaler for the base type of the oneof case (e.g. int64).
+// Note that this function will be called once for each case in the oneof.
+func makeUnmarshalOneof(typ, ityp reflect.Type, unmarshal unmarshaler) unmarshaler {
+	sf := typ.Field(0)
+	field0 := toField(&sf)
+	return func(b []byte, f pointer, w int) ([]byte, error) {
+		// Allocate holder for value.
+		v := reflect.New(typ)
+
+		// Unmarshal data into holder.
+		// We unmarshal into the first field of the holder object.
+		var err error
+		var nerr nonFatal
+		b, err = unmarshal(b, valToPointer(v).offset(field0), w)
+		if !nerr.Merge(err) {
+			return nil, err
+		}
+
+		// Write pointer to holder into target field.
+		f.asPointerTo(ityp).Elem().Set(v)
+
+		return b, nerr.E
+	}
+}
+
+// Error used by decode internally.
+var errInternalBadWireType = errors.New("proto: internal error: bad wiretype")
+
+// skipField skips past a field of type wire and returns the remaining bytes.
+func skipField(b []byte, wire int) ([]byte, error) {
+	switch wire {
+	case WireVarint:
+		_, k := decodeVarint(b)
+		if k == 0 {
+			return b, io.ErrUnexpectedEOF
+		}
+		b = b[k:]
+	case WireFixed32:
+		if len(b) < 4 {
+			return b, io.ErrUnexpectedEOF
+		}
+		b = b[4:]
+	case WireFixed64:
+		if len(b) < 8 {
+			return b, io.ErrUnexpectedEOF
+		}
+		b = b[8:]
+	case WireBytes:
+		m, k := decodeVarint(b)
+		if k == 0 || uint64(len(b)-k) < m {
+			return b, io.ErrUnexpectedEOF
+		}
+		b = b[uint64(k)+m:]
+	case WireStartGroup:
+		_, i := findEndGroup(b)
+		if i == -1 {
+			return b, io.ErrUnexpectedEOF
+		}
+		b = b[i:]
+	default:
+		return b, fmt.Errorf("proto: can't skip unknown wire type %d", wire)
+	}
+	return b, nil
+}
+
+// findEndGroup finds the index of the next EndGroup tag.
+// Groups may be nested, so the "next" EndGroup tag is the first
+// unpaired EndGroup.
+// findEndGroup returns the indexes of the start and end of the EndGroup tag.
+// Returns (-1,-1) if it can't find one.
+func findEndGroup(b []byte) (int, int) {
+	depth := 1
+	i := 0
+	for {
+		x, n := decodeVarint(b[i:])
+		if n == 0 {
+			return -1, -1
+		}
+		j := i
+		i += n
+		switch x & 7 {
+		case WireVarint:
+			_, k := decodeVarint(b[i:])
+			if k == 0 {
+				return -1, -1
+			}
+			i += k
+		case WireFixed32:
+			if len(b)-4 < i {
+				return -1, -1
+			}
+			i += 4
+		case WireFixed64:
+			if len(b)-8 < i {
+				return -1, -1
+			}
+			i += 8
+		case WireBytes:
+			m, k := decodeVarint(b[i:])
+			if k == 0 {
+				return -1, -1
+			}
+			i += k
+			if uint64(len(b)-i) < m {
+				return -1, -1
+			}
+			i += int(m)
+		case WireStartGroup:
+			depth++
+		case WireEndGroup:
+			depth--
+			if depth == 0 {
+				return j, i
+			}
+		default:
+			return -1, -1
+		}
+	}
+}
+
+// encodeVarint appends a varint-encoded integer to b and returns the result.
+func encodeVarint(b []byte, x uint64) []byte {
+	for x >= 1<<7 {
+		b = append(b, byte(x&0x7f|0x80))
+		x >>= 7
+	}
+	return append(b, byte(x))
+}
+
+// decodeVarint reads a varint-encoded integer from b.
+// Returns the decoded integer and the number of bytes read.
+// If there is an error, it returns 0,0.
+func decodeVarint(b []byte) (uint64, int) {
+	var x, y uint64
+	if len(b) == 0 {
+		goto bad
+	}
+	x = uint64(b[0])
+	if x < 0x80 {
+		return x, 1
+	}
+	x -= 0x80
+
+	if len(b) <= 1 {
+		goto bad
+	}
+	y = uint64(b[1])
+	x += y << 7
+	if y < 0x80 {
+		return x, 2
+	}
+	x -= 0x80 << 7
+
+	if len(b) <= 2 {
+		goto bad
+	}
+	y = uint64(b[2])
+	x += y << 14
+	if y < 0x80 {
+		return x, 3
+	}
+	x -= 0x80 << 14
+
+	if len(b) <= 3 {
+		goto bad
+	}
+	y = uint64(b[3])
+	x += y << 21
+	if y < 0x80 {
+		return x, 4
+	}
+	x -= 0x80 << 21
+
+	if len(b) <= 4 {
+		goto bad
+	}
+	y = uint64(b[4])
+	x += y << 28
+	if y < 0x80 {
+		return x, 5
+	}
+	x -= 0x80 << 28
+
+	if len(b) <= 5 {
+		goto bad
+	}
+	y = uint64(b[5])
+	x += y << 35
+	if y < 0x80 {
+		return x, 6
+	}
+	x -= 0x80 << 35
+
+	if len(b) <= 6 {
+		goto bad
+	}
+	y = uint64(b[6])
+	x += y << 42
+	if y < 0x80 {
+		return x, 7
+	}
+	x -= 0x80 << 42
+
+	if len(b) <= 7 {
+		goto bad
+	}
+	y = uint64(b[7])
+	x += y << 49
+	if y < 0x80 {
+		return x, 8
+	}
+	x -= 0x80 << 49
+
+	if len(b) <= 8 {
+		goto bad
+	}
+	y = uint64(b[8])
+	x += y << 56
+	if y < 0x80 {
+		return x, 9
+	}
+	x -= 0x80 << 56
+
+	if len(b) <= 9 {
+		goto bad
+	}
+	y = uint64(b[9])
+	x += y << 63
+	if y < 2 {
+		return x, 10
+	}
+
+bad:
+	return 0, 0
+}
diff --git a/proto/test_proto/test.pb.go b/proto/test_proto/test.pb.go
new file mode 100644
index 0000000..1a24a2e
--- /dev/null
+++ b/proto/test_proto/test.pb.go
@@ -0,0 +1,4928 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: test_proto/test.proto
+
+package test_proto
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+type FOO int32
+
+const (
+	FOO_FOO1 FOO = 1
+)
+
+var FOO_name = map[int32]string{
+	1: "FOO1",
+}
+
+var FOO_value = map[string]int32{
+	"FOO1": 1,
+}
+
+func (x FOO) Enum() *FOO {
+	p := new(FOO)
+	*p = x
+	return p
+}
+
+func (x FOO) String() string {
+	return proto.EnumName(FOO_name, int32(x))
+}
+
+func (x *FOO) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(FOO_value, data, "FOO")
+	if err != nil {
+		return err
+	}
+	*x = FOO(value)
+	return nil
+}
+
+func (FOO) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{0}
+}
+
+// An enum, for completeness.
+type GoTest_KIND int32
+
+const (
+	GoTest_VOID GoTest_KIND = 0
+	// Basic types
+	GoTest_BOOL        GoTest_KIND = 1
+	GoTest_BYTES       GoTest_KIND = 2
+	GoTest_FINGERPRINT GoTest_KIND = 3
+	GoTest_FLOAT       GoTest_KIND = 4
+	GoTest_INT         GoTest_KIND = 5
+	GoTest_STRING      GoTest_KIND = 6
+	GoTest_TIME        GoTest_KIND = 7
+	// Groupings
+	GoTest_TUPLE GoTest_KIND = 8
+	GoTest_ARRAY GoTest_KIND = 9
+	GoTest_MAP   GoTest_KIND = 10
+	// Table types
+	GoTest_TABLE GoTest_KIND = 11
+	// Functions
+	GoTest_FUNCTION GoTest_KIND = 12
+)
+
+var GoTest_KIND_name = map[int32]string{
+	0:  "VOID",
+	1:  "BOOL",
+	2:  "BYTES",
+	3:  "FINGERPRINT",
+	4:  "FLOAT",
+	5:  "INT",
+	6:  "STRING",
+	7:  "TIME",
+	8:  "TUPLE",
+	9:  "ARRAY",
+	10: "MAP",
+	11: "TABLE",
+	12: "FUNCTION",
+}
+
+var GoTest_KIND_value = map[string]int32{
+	"VOID":        0,
+	"BOOL":        1,
+	"BYTES":       2,
+	"FINGERPRINT": 3,
+	"FLOAT":       4,
+	"INT":         5,
+	"STRING":      6,
+	"TIME":        7,
+	"TUPLE":       8,
+	"ARRAY":       9,
+	"MAP":         10,
+	"TABLE":       11,
+	"FUNCTION":    12,
+}
+
+func (x GoTest_KIND) Enum() *GoTest_KIND {
+	p := new(GoTest_KIND)
+	*p = x
+	return p
+}
+
+func (x GoTest_KIND) String() string {
+	return proto.EnumName(GoTest_KIND_name, int32(x))
+}
+
+func (x *GoTest_KIND) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(GoTest_KIND_value, data, "GoTest_KIND")
+	if err != nil {
+		return err
+	}
+	*x = GoTest_KIND(value)
+	return nil
+}
+
+func (GoTest_KIND) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{2, 0}
+}
+
+type MyMessage_Color int32
+
+const (
+	MyMessage_RED   MyMessage_Color = 0
+	MyMessage_GREEN MyMessage_Color = 1
+	MyMessage_BLUE  MyMessage_Color = 2
+)
+
+var MyMessage_Color_name = map[int32]string{
+	0: "RED",
+	1: "GREEN",
+	2: "BLUE",
+}
+
+var MyMessage_Color_value = map[string]int32{
+	"RED":   0,
+	"GREEN": 1,
+	"BLUE":  2,
+}
+
+func (x MyMessage_Color) Enum() *MyMessage_Color {
+	p := new(MyMessage_Color)
+	*p = x
+	return p
+}
+
+func (x MyMessage_Color) String() string {
+	return proto.EnumName(MyMessage_Color_name, int32(x))
+}
+
+func (x *MyMessage_Color) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(MyMessage_Color_value, data, "MyMessage_Color")
+	if err != nil {
+		return err
+	}
+	*x = MyMessage_Color(value)
+	return nil
+}
+
+func (MyMessage_Color) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{13, 0}
+}
+
+type DefaultsMessage_DefaultsEnum int32
+
+const (
+	DefaultsMessage_ZERO DefaultsMessage_DefaultsEnum = 0
+	DefaultsMessage_ONE  DefaultsMessage_DefaultsEnum = 1
+	DefaultsMessage_TWO  DefaultsMessage_DefaultsEnum = 2
+)
+
+var DefaultsMessage_DefaultsEnum_name = map[int32]string{
+	0: "ZERO",
+	1: "ONE",
+	2: "TWO",
+}
+
+var DefaultsMessage_DefaultsEnum_value = map[string]int32{
+	"ZERO": 0,
+	"ONE":  1,
+	"TWO":  2,
+}
+
+func (x DefaultsMessage_DefaultsEnum) Enum() *DefaultsMessage_DefaultsEnum {
+	p := new(DefaultsMessage_DefaultsEnum)
+	*p = x
+	return p
+}
+
+func (x DefaultsMessage_DefaultsEnum) String() string {
+	return proto.EnumName(DefaultsMessage_DefaultsEnum_name, int32(x))
+}
+
+func (x *DefaultsMessage_DefaultsEnum) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(DefaultsMessage_DefaultsEnum_value, data, "DefaultsMessage_DefaultsEnum")
+	if err != nil {
+		return err
+	}
+	*x = DefaultsMessage_DefaultsEnum(value)
+	return nil
+}
+
+func (DefaultsMessage_DefaultsEnum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{16, 0}
+}
+
+type Defaults_Color int32
+
+const (
+	Defaults_RED   Defaults_Color = 0
+	Defaults_GREEN Defaults_Color = 1
+	Defaults_BLUE  Defaults_Color = 2
+)
+
+var Defaults_Color_name = map[int32]string{
+	0: "RED",
+	1: "GREEN",
+	2: "BLUE",
+}
+
+var Defaults_Color_value = map[string]int32{
+	"RED":   0,
+	"GREEN": 1,
+	"BLUE":  2,
+}
+
+func (x Defaults_Color) Enum() *Defaults_Color {
+	p := new(Defaults_Color)
+	*p = x
+	return p
+}
+
+func (x Defaults_Color) String() string {
+	return proto.EnumName(Defaults_Color_name, int32(x))
+}
+
+func (x *Defaults_Color) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(Defaults_Color_value, data, "Defaults_Color")
+	if err != nil {
+		return err
+	}
+	*x = Defaults_Color(value)
+	return nil
+}
+
+func (Defaults_Color) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{21, 0}
+}
+
+type RepeatedEnum_Color int32
+
+const (
+	RepeatedEnum_RED RepeatedEnum_Color = 1
+)
+
+var RepeatedEnum_Color_name = map[int32]string{
+	1: "RED",
+}
+
+var RepeatedEnum_Color_value = map[string]int32{
+	"RED": 1,
+}
+
+func (x RepeatedEnum_Color) Enum() *RepeatedEnum_Color {
+	p := new(RepeatedEnum_Color)
+	*p = x
+	return p
+}
+
+func (x RepeatedEnum_Color) String() string {
+	return proto.EnumName(RepeatedEnum_Color_name, int32(x))
+}
+
+func (x *RepeatedEnum_Color) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(RepeatedEnum_Color_value, data, "RepeatedEnum_Color")
+	if err != nil {
+		return err
+	}
+	*x = RepeatedEnum_Color(value)
+	return nil
+}
+
+func (RepeatedEnum_Color) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{23, 0}
+}
+
+type GoEnum struct {
+	Foo                  *FOO     `protobuf:"varint,1,req,name=foo,enum=test_proto.FOO" json:"foo,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GoEnum) Reset()         { *m = GoEnum{} }
+func (m *GoEnum) String() string { return proto.CompactTextString(m) }
+func (*GoEnum) ProtoMessage()    {}
+func (*GoEnum) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{0}
+}
+
+func (m *GoEnum) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GoEnum.Unmarshal(m, b)
+}
+func (m *GoEnum) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GoEnum.Marshal(b, m, deterministic)
+}
+func (m *GoEnum) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GoEnum.Merge(m, src)
+}
+func (m *GoEnum) XXX_Size() int {
+	return xxx_messageInfo_GoEnum.Size(m)
+}
+func (m *GoEnum) XXX_DiscardUnknown() {
+	xxx_messageInfo_GoEnum.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GoEnum proto.InternalMessageInfo
+
+func (m *GoEnum) GetFoo() FOO {
+	if m != nil && m.Foo != nil {
+		return *m.Foo
+	}
+	return FOO_FOO1
+}
+
+type GoTestField struct {
+	Label                *string  `protobuf:"bytes,1,req,name=Label" json:"Label,omitempty"`
+	Type                 *string  `protobuf:"bytes,2,req,name=Type" json:"Type,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GoTestField) Reset()         { *m = GoTestField{} }
+func (m *GoTestField) String() string { return proto.CompactTextString(m) }
+func (*GoTestField) ProtoMessage()    {}
+func (*GoTestField) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{1}
+}
+
+func (m *GoTestField) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GoTestField.Unmarshal(m, b)
+}
+func (m *GoTestField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GoTestField.Marshal(b, m, deterministic)
+}
+func (m *GoTestField) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GoTestField.Merge(m, src)
+}
+func (m *GoTestField) XXX_Size() int {
+	return xxx_messageInfo_GoTestField.Size(m)
+}
+func (m *GoTestField) XXX_DiscardUnknown() {
+	xxx_messageInfo_GoTestField.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GoTestField proto.InternalMessageInfo
+
+func (m *GoTestField) GetLabel() string {
+	if m != nil && m.Label != nil {
+		return *m.Label
+	}
+	return ""
+}
+
+func (m *GoTestField) GetType() string {
+	if m != nil && m.Type != nil {
+		return *m.Type
+	}
+	return ""
+}
+
+type GoTest struct {
+	// Some typical parameters
+	Kind  *GoTest_KIND `protobuf:"varint,1,req,name=Kind,enum=test_proto.GoTest_KIND" json:"Kind,omitempty"`
+	Table *string      `protobuf:"bytes,2,opt,name=Table" json:"Table,omitempty"`
+	Param *int32       `protobuf:"varint,3,opt,name=Param" json:"Param,omitempty"`
+	// Required, repeated and optional foreign fields.
+	RequiredField *GoTestField   `protobuf:"bytes,4,req,name=RequiredField" json:"RequiredField,omitempty"`
+	RepeatedField []*GoTestField `protobuf:"bytes,5,rep,name=RepeatedField" json:"RepeatedField,omitempty"`
+	OptionalField *GoTestField   `protobuf:"bytes,6,opt,name=OptionalField" json:"OptionalField,omitempty"`
+	// Required fields of all basic types
+	F_BoolRequired     *bool    `protobuf:"varint,10,req,name=F_Bool_required,json=FBoolRequired" json:"F_Bool_required,omitempty"`
+	F_Int32Required    *int32   `protobuf:"varint,11,req,name=F_Int32_required,json=FInt32Required" json:"F_Int32_required,omitempty"`
+	F_Int64Required    *int64   `protobuf:"varint,12,req,name=F_Int64_required,json=FInt64Required" json:"F_Int64_required,omitempty"`
+	F_Fixed32Required  *uint32  `protobuf:"fixed32,13,req,name=F_Fixed32_required,json=FFixed32Required" json:"F_Fixed32_required,omitempty"`
+	F_Fixed64Required  *uint64  `protobuf:"fixed64,14,req,name=F_Fixed64_required,json=FFixed64Required" json:"F_Fixed64_required,omitempty"`
+	F_Uint32Required   *uint32  `protobuf:"varint,15,req,name=F_Uint32_required,json=FUint32Required" json:"F_Uint32_required,omitempty"`
+	F_Uint64Required   *uint64  `protobuf:"varint,16,req,name=F_Uint64_required,json=FUint64Required" json:"F_Uint64_required,omitempty"`
+	F_FloatRequired    *float32 `protobuf:"fixed32,17,req,name=F_Float_required,json=FFloatRequired" json:"F_Float_required,omitempty"`
+	F_DoubleRequired   *float64 `protobuf:"fixed64,18,req,name=F_Double_required,json=FDoubleRequired" json:"F_Double_required,omitempty"`
+	F_StringRequired   *string  `protobuf:"bytes,19,req,name=F_String_required,json=FStringRequired" json:"F_String_required,omitempty"`
+	F_BytesRequired    []byte   `protobuf:"bytes,101,req,name=F_Bytes_required,json=FBytesRequired" json:"F_Bytes_required,omitempty"`
+	F_Sint32Required   *int32   `protobuf:"zigzag32,102,req,name=F_Sint32_required,json=FSint32Required" json:"F_Sint32_required,omitempty"`
+	F_Sint64Required   *int64   `protobuf:"zigzag64,103,req,name=F_Sint64_required,json=FSint64Required" json:"F_Sint64_required,omitempty"`
+	F_Sfixed32Required *int32   `protobuf:"fixed32,104,req,name=F_Sfixed32_required,json=FSfixed32Required" json:"F_Sfixed32_required,omitempty"`
+	F_Sfixed64Required *int64   `protobuf:"fixed64,105,req,name=F_Sfixed64_required,json=FSfixed64Required" json:"F_Sfixed64_required,omitempty"`
+	// Repeated fields of all basic types
+	F_BoolRepeated     []bool    `protobuf:"varint,20,rep,name=F_Bool_repeated,json=FBoolRepeated" json:"F_Bool_repeated,omitempty"`
+	F_Int32Repeated    []int32   `protobuf:"varint,21,rep,name=F_Int32_repeated,json=FInt32Repeated" json:"F_Int32_repeated,omitempty"`
+	F_Int64Repeated    []int64   `protobuf:"varint,22,rep,name=F_Int64_repeated,json=FInt64Repeated" json:"F_Int64_repeated,omitempty"`
+	F_Fixed32Repeated  []uint32  `protobuf:"fixed32,23,rep,name=F_Fixed32_repeated,json=FFixed32Repeated" json:"F_Fixed32_repeated,omitempty"`
+	F_Fixed64Repeated  []uint64  `protobuf:"fixed64,24,rep,name=F_Fixed64_repeated,json=FFixed64Repeated" json:"F_Fixed64_repeated,omitempty"`
+	F_Uint32Repeated   []uint32  `protobuf:"varint,25,rep,name=F_Uint32_repeated,json=FUint32Repeated" json:"F_Uint32_repeated,omitempty"`
+	F_Uint64Repeated   []uint64  `protobuf:"varint,26,rep,name=F_Uint64_repeated,json=FUint64Repeated" json:"F_Uint64_repeated,omitempty"`
+	F_FloatRepeated    []float32 `protobuf:"fixed32,27,rep,name=F_Float_repeated,json=FFloatRepeated" json:"F_Float_repeated,omitempty"`
+	F_DoubleRepeated   []float64 `protobuf:"fixed64,28,rep,name=F_Double_repeated,json=FDoubleRepeated" json:"F_Double_repeated,omitempty"`
+	F_StringRepeated   []string  `protobuf:"bytes,29,rep,name=F_String_repeated,json=FStringRepeated" json:"F_String_repeated,omitempty"`
+	F_BytesRepeated    [][]byte  `protobuf:"bytes,201,rep,name=F_Bytes_repeated,json=FBytesRepeated" json:"F_Bytes_repeated,omitempty"`
+	F_Sint32Repeated   []int32   `protobuf:"zigzag32,202,rep,name=F_Sint32_repeated,json=FSint32Repeated" json:"F_Sint32_repeated,omitempty"`
+	F_Sint64Repeated   []int64   `protobuf:"zigzag64,203,rep,name=F_Sint64_repeated,json=FSint64Repeated" json:"F_Sint64_repeated,omitempty"`
+	F_Sfixed32Repeated []int32   `protobuf:"fixed32,204,rep,name=F_Sfixed32_repeated,json=FSfixed32Repeated" json:"F_Sfixed32_repeated,omitempty"`
+	F_Sfixed64Repeated []int64   `protobuf:"fixed64,205,rep,name=F_Sfixed64_repeated,json=FSfixed64Repeated" json:"F_Sfixed64_repeated,omitempty"`
+	// Optional fields of all basic types
+	F_BoolOptional     *bool    `protobuf:"varint,30,opt,name=F_Bool_optional,json=FBoolOptional" json:"F_Bool_optional,omitempty"`
+	F_Int32Optional    *int32   `protobuf:"varint,31,opt,name=F_Int32_optional,json=FInt32Optional" json:"F_Int32_optional,omitempty"`
+	F_Int64Optional    *int64   `protobuf:"varint,32,opt,name=F_Int64_optional,json=FInt64Optional" json:"F_Int64_optional,omitempty"`
+	F_Fixed32Optional  *uint32  `protobuf:"fixed32,33,opt,name=F_Fixed32_optional,json=FFixed32Optional" json:"F_Fixed32_optional,omitempty"`
+	F_Fixed64Optional  *uint64  `protobuf:"fixed64,34,opt,name=F_Fixed64_optional,json=FFixed64Optional" json:"F_Fixed64_optional,omitempty"`
+	F_Uint32Optional   *uint32  `protobuf:"varint,35,opt,name=F_Uint32_optional,json=FUint32Optional" json:"F_Uint32_optional,omitempty"`
+	F_Uint64Optional   *uint64  `protobuf:"varint,36,opt,name=F_Uint64_optional,json=FUint64Optional" json:"F_Uint64_optional,omitempty"`
+	F_FloatOptional    *float32 `protobuf:"fixed32,37,opt,name=F_Float_optional,json=FFloatOptional" json:"F_Float_optional,omitempty"`
+	F_DoubleOptional   *float64 `protobuf:"fixed64,38,opt,name=F_Double_optional,json=FDoubleOptional" json:"F_Double_optional,omitempty"`
+	F_StringOptional   *string  `protobuf:"bytes,39,opt,name=F_String_optional,json=FStringOptional" json:"F_String_optional,omitempty"`
+	F_BytesOptional    []byte   `protobuf:"bytes,301,opt,name=F_Bytes_optional,json=FBytesOptional" json:"F_Bytes_optional,omitempty"`
+	F_Sint32Optional   *int32   `protobuf:"zigzag32,302,opt,name=F_Sint32_optional,json=FSint32Optional" json:"F_Sint32_optional,omitempty"`
+	F_Sint64Optional   *int64   `protobuf:"zigzag64,303,opt,name=F_Sint64_optional,json=FSint64Optional" json:"F_Sint64_optional,omitempty"`
+	F_Sfixed32Optional *int32   `protobuf:"fixed32,304,opt,name=F_Sfixed32_optional,json=FSfixed32Optional" json:"F_Sfixed32_optional,omitempty"`
+	F_Sfixed64Optional *int64   `protobuf:"fixed64,305,opt,name=F_Sfixed64_optional,json=FSfixed64Optional" json:"F_Sfixed64_optional,omitempty"`
+	// Default-valued fields of all basic types
+	F_BoolDefaulted     *bool    `protobuf:"varint,40,opt,name=F_Bool_defaulted,json=FBoolDefaulted,def=1" json:"F_Bool_defaulted,omitempty"`
+	F_Int32Defaulted    *int32   `protobuf:"varint,41,opt,name=F_Int32_defaulted,json=FInt32Defaulted,def=32" json:"F_Int32_defaulted,omitempty"`
+	F_Int64Defaulted    *int64   `protobuf:"varint,42,opt,name=F_Int64_defaulted,json=FInt64Defaulted,def=64" json:"F_Int64_defaulted,omitempty"`
+	F_Fixed32Defaulted  *uint32  `protobuf:"fixed32,43,opt,name=F_Fixed32_defaulted,json=FFixed32Defaulted,def=320" json:"F_Fixed32_defaulted,omitempty"`
+	F_Fixed64Defaulted  *uint64  `protobuf:"fixed64,44,opt,name=F_Fixed64_defaulted,json=FFixed64Defaulted,def=640" json:"F_Fixed64_defaulted,omitempty"`
+	F_Uint32Defaulted   *uint32  `protobuf:"varint,45,opt,name=F_Uint32_defaulted,json=FUint32Defaulted,def=3200" json:"F_Uint32_defaulted,omitempty"`
+	F_Uint64Defaulted   *uint64  `protobuf:"varint,46,opt,name=F_Uint64_defaulted,json=FUint64Defaulted,def=6400" json:"F_Uint64_defaulted,omitempty"`
+	F_FloatDefaulted    *float32 `protobuf:"fixed32,47,opt,name=F_Float_defaulted,json=FFloatDefaulted,def=314159" json:"F_Float_defaulted,omitempty"`
+	F_DoubleDefaulted   *float64 `protobuf:"fixed64,48,opt,name=F_Double_defaulted,json=FDoubleDefaulted,def=271828" json:"F_Double_defaulted,omitempty"`
+	F_StringDefaulted   *string  `protobuf:"bytes,49,opt,name=F_String_defaulted,json=FStringDefaulted,def=hello, \"world!\"\n" json:"F_String_defaulted,omitempty"`
+	F_BytesDefaulted    []byte   `protobuf:"bytes,401,opt,name=F_Bytes_defaulted,json=FBytesDefaulted,def=Bignose" json:"F_Bytes_defaulted,omitempty"`
+	F_Sint32Defaulted   *int32   `protobuf:"zigzag32,402,opt,name=F_Sint32_defaulted,json=FSint32Defaulted,def=-32" json:"F_Sint32_defaulted,omitempty"`
+	F_Sint64Defaulted   *int64   `protobuf:"zigzag64,403,opt,name=F_Sint64_defaulted,json=FSint64Defaulted,def=-64" json:"F_Sint64_defaulted,omitempty"`
+	F_Sfixed32Defaulted *int32   `protobuf:"fixed32,404,opt,name=F_Sfixed32_defaulted,json=FSfixed32Defaulted,def=-32" json:"F_Sfixed32_defaulted,omitempty"`
+	F_Sfixed64Defaulted *int64   `protobuf:"fixed64,405,opt,name=F_Sfixed64_defaulted,json=FSfixed64Defaulted,def=-64" json:"F_Sfixed64_defaulted,omitempty"`
+	// Packed repeated fields (no string or bytes).
+	F_BoolRepeatedPacked     []bool                  `protobuf:"varint,50,rep,packed,name=F_Bool_repeated_packed,json=FBoolRepeatedPacked" json:"F_Bool_repeated_packed,omitempty"`
+	F_Int32RepeatedPacked    []int32                 `protobuf:"varint,51,rep,packed,name=F_Int32_repeated_packed,json=FInt32RepeatedPacked" json:"F_Int32_repeated_packed,omitempty"`
+	F_Int64RepeatedPacked    []int64                 `protobuf:"varint,52,rep,packed,name=F_Int64_repeated_packed,json=FInt64RepeatedPacked" json:"F_Int64_repeated_packed,omitempty"`
+	F_Fixed32RepeatedPacked  []uint32                `protobuf:"fixed32,53,rep,packed,name=F_Fixed32_repeated_packed,json=FFixed32RepeatedPacked" json:"F_Fixed32_repeated_packed,omitempty"`
+	F_Fixed64RepeatedPacked  []uint64                `protobuf:"fixed64,54,rep,packed,name=F_Fixed64_repeated_packed,json=FFixed64RepeatedPacked" json:"F_Fixed64_repeated_packed,omitempty"`
+	F_Uint32RepeatedPacked   []uint32                `protobuf:"varint,55,rep,packed,name=F_Uint32_repeated_packed,json=FUint32RepeatedPacked" json:"F_Uint32_repeated_packed,omitempty"`
+	F_Uint64RepeatedPacked   []uint64                `protobuf:"varint,56,rep,packed,name=F_Uint64_repeated_packed,json=FUint64RepeatedPacked" json:"F_Uint64_repeated_packed,omitempty"`
+	F_FloatRepeatedPacked    []float32               `protobuf:"fixed32,57,rep,packed,name=F_Float_repeated_packed,json=FFloatRepeatedPacked" json:"F_Float_repeated_packed,omitempty"`
+	F_DoubleRepeatedPacked   []float64               `protobuf:"fixed64,58,rep,packed,name=F_Double_repeated_packed,json=FDoubleRepeatedPacked" json:"F_Double_repeated_packed,omitempty"`
+	F_Sint32RepeatedPacked   []int32                 `protobuf:"zigzag32,502,rep,packed,name=F_Sint32_repeated_packed,json=FSint32RepeatedPacked" json:"F_Sint32_repeated_packed,omitempty"`
+	F_Sint64RepeatedPacked   []int64                 `protobuf:"zigzag64,503,rep,packed,name=F_Sint64_repeated_packed,json=FSint64RepeatedPacked" json:"F_Sint64_repeated_packed,omitempty"`
+	F_Sfixed32RepeatedPacked []int32                 `protobuf:"fixed32,504,rep,packed,name=F_Sfixed32_repeated_packed,json=FSfixed32RepeatedPacked" json:"F_Sfixed32_repeated_packed,omitempty"`
+	F_Sfixed64RepeatedPacked []int64                 `protobuf:"fixed64,505,rep,packed,name=F_Sfixed64_repeated_packed,json=FSfixed64RepeatedPacked" json:"F_Sfixed64_repeated_packed,omitempty"`
+	Requiredgroup            *GoTest_RequiredGroup   `protobuf:"group,70,req,name=RequiredGroup,json=requiredgroup" json:"requiredgroup,omitempty"`
+	Repeatedgroup            []*GoTest_RepeatedGroup `protobuf:"group,80,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
+	Optionalgroup            *GoTest_OptionalGroup   `protobuf:"group,90,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
+	XXX_NoUnkeyedLiteral     struct{}                `json:"-"`
+	XXX_unrecognized         []byte                  `json:"-"`
+	XXX_sizecache            int32                   `json:"-"`
+}
+
+func (m *GoTest) Reset()         { *m = GoTest{} }
+func (m *GoTest) String() string { return proto.CompactTextString(m) }
+func (*GoTest) ProtoMessage()    {}
+func (*GoTest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{2}
+}
+
+func (m *GoTest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GoTest.Unmarshal(m, b)
+}
+func (m *GoTest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GoTest.Marshal(b, m, deterministic)
+}
+func (m *GoTest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GoTest.Merge(m, src)
+}
+func (m *GoTest) XXX_Size() int {
+	return xxx_messageInfo_GoTest.Size(m)
+}
+func (m *GoTest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GoTest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GoTest proto.InternalMessageInfo
+
+const Default_GoTest_F_BoolDefaulted bool = true
+const Default_GoTest_F_Int32Defaulted int32 = 32
+const Default_GoTest_F_Int64Defaulted int64 = 64
+const Default_GoTest_F_Fixed32Defaulted uint32 = 320
+const Default_GoTest_F_Fixed64Defaulted uint64 = 640
+const Default_GoTest_F_Uint32Defaulted uint32 = 3200
+const Default_GoTest_F_Uint64Defaulted uint64 = 6400
+const Default_GoTest_F_FloatDefaulted float32 = 314159
+const Default_GoTest_F_DoubleDefaulted float64 = 271828
+const Default_GoTest_F_StringDefaulted string = "hello, \"world!\"\n"
+
+var Default_GoTest_F_BytesDefaulted []byte = []byte("Bignose")
+
+const Default_GoTest_F_Sint32Defaulted int32 = -32
+const Default_GoTest_F_Sint64Defaulted int64 = -64
+const Default_GoTest_F_Sfixed32Defaulted int32 = -32
+const Default_GoTest_F_Sfixed64Defaulted int64 = -64
+
+func (m *GoTest) GetKind() GoTest_KIND {
+	if m != nil && m.Kind != nil {
+		return *m.Kind
+	}
+	return GoTest_VOID
+}
+
+func (m *GoTest) GetTable() string {
+	if m != nil && m.Table != nil {
+		return *m.Table
+	}
+	return ""
+}
+
+func (m *GoTest) GetParam() int32 {
+	if m != nil && m.Param != nil {
+		return *m.Param
+	}
+	return 0
+}
+
+func (m *GoTest) GetRequiredField() *GoTestField {
+	if m != nil {
+		return m.RequiredField
+	}
+	return nil
+}
+
+func (m *GoTest) GetRepeatedField() []*GoTestField {
+	if m != nil {
+		return m.RepeatedField
+	}
+	return nil
+}
+
+func (m *GoTest) GetOptionalField() *GoTestField {
+	if m != nil {
+		return m.OptionalField
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_BoolRequired() bool {
+	if m != nil && m.F_BoolRequired != nil {
+		return *m.F_BoolRequired
+	}
+	return false
+}
+
+func (m *GoTest) GetF_Int32Required() int32 {
+	if m != nil && m.F_Int32Required != nil {
+		return *m.F_Int32Required
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_Int64Required() int64 {
+	if m != nil && m.F_Int64Required != nil {
+		return *m.F_Int64Required
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_Fixed32Required() uint32 {
+	if m != nil && m.F_Fixed32Required != nil {
+		return *m.F_Fixed32Required
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_Fixed64Required() uint64 {
+	if m != nil && m.F_Fixed64Required != nil {
+		return *m.F_Fixed64Required
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_Uint32Required() uint32 {
+	if m != nil && m.F_Uint32Required != nil {
+		return *m.F_Uint32Required
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_Uint64Required() uint64 {
+	if m != nil && m.F_Uint64Required != nil {
+		return *m.F_Uint64Required
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_FloatRequired() float32 {
+	if m != nil && m.F_FloatRequired != nil {
+		return *m.F_FloatRequired
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_DoubleRequired() float64 {
+	if m != nil && m.F_DoubleRequired != nil {
+		return *m.F_DoubleRequired
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_StringRequired() string {
+	if m != nil && m.F_StringRequired != nil {
+		return *m.F_StringRequired
+	}
+	return ""
+}
+
+func (m *GoTest) GetF_BytesRequired() []byte {
+	if m != nil {
+		return m.F_BytesRequired
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_Sint32Required() int32 {
+	if m != nil && m.F_Sint32Required != nil {
+		return *m.F_Sint32Required
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_Sint64Required() int64 {
+	if m != nil && m.F_Sint64Required != nil {
+		return *m.F_Sint64Required
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_Sfixed32Required() int32 {
+	if m != nil && m.F_Sfixed32Required != nil {
+		return *m.F_Sfixed32Required
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_Sfixed64Required() int64 {
+	if m != nil && m.F_Sfixed64Required != nil {
+		return *m.F_Sfixed64Required
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_BoolRepeated() []bool {
+	if m != nil {
+		return m.F_BoolRepeated
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_Int32Repeated() []int32 {
+	if m != nil {
+		return m.F_Int32Repeated
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_Int64Repeated() []int64 {
+	if m != nil {
+		return m.F_Int64Repeated
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_Fixed32Repeated() []uint32 {
+	if m != nil {
+		return m.F_Fixed32Repeated
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_Fixed64Repeated() []uint64 {
+	if m != nil {
+		return m.F_Fixed64Repeated
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_Uint32Repeated() []uint32 {
+	if m != nil {
+		return m.F_Uint32Repeated
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_Uint64Repeated() []uint64 {
+	if m != nil {
+		return m.F_Uint64Repeated
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_FloatRepeated() []float32 {
+	if m != nil {
+		return m.F_FloatRepeated
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_DoubleRepeated() []float64 {
+	if m != nil {
+		return m.F_DoubleRepeated
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_StringRepeated() []string {
+	if m != nil {
+		return m.F_StringRepeated
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_BytesRepeated() [][]byte {
+	if m != nil {
+		return m.F_BytesRepeated
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_Sint32Repeated() []int32 {
+	if m != nil {
+		return m.F_Sint32Repeated
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_Sint64Repeated() []int64 {
+	if m != nil {
+		return m.F_Sint64Repeated
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_Sfixed32Repeated() []int32 {
+	if m != nil {
+		return m.F_Sfixed32Repeated
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_Sfixed64Repeated() []int64 {
+	if m != nil {
+		return m.F_Sfixed64Repeated
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_BoolOptional() bool {
+	if m != nil && m.F_BoolOptional != nil {
+		return *m.F_BoolOptional
+	}
+	return false
+}
+
+func (m *GoTest) GetF_Int32Optional() int32 {
+	if m != nil && m.F_Int32Optional != nil {
+		return *m.F_Int32Optional
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_Int64Optional() int64 {
+	if m != nil && m.F_Int64Optional != nil {
+		return *m.F_Int64Optional
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_Fixed32Optional() uint32 {
+	if m != nil && m.F_Fixed32Optional != nil {
+		return *m.F_Fixed32Optional
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_Fixed64Optional() uint64 {
+	if m != nil && m.F_Fixed64Optional != nil {
+		return *m.F_Fixed64Optional
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_Uint32Optional() uint32 {
+	if m != nil && m.F_Uint32Optional != nil {
+		return *m.F_Uint32Optional
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_Uint64Optional() uint64 {
+	if m != nil && m.F_Uint64Optional != nil {
+		return *m.F_Uint64Optional
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_FloatOptional() float32 {
+	if m != nil && m.F_FloatOptional != nil {
+		return *m.F_FloatOptional
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_DoubleOptional() float64 {
+	if m != nil && m.F_DoubleOptional != nil {
+		return *m.F_DoubleOptional
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_StringOptional() string {
+	if m != nil && m.F_StringOptional != nil {
+		return *m.F_StringOptional
+	}
+	return ""
+}
+
+func (m *GoTest) GetF_BytesOptional() []byte {
+	if m != nil {
+		return m.F_BytesOptional
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_Sint32Optional() int32 {
+	if m != nil && m.F_Sint32Optional != nil {
+		return *m.F_Sint32Optional
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_Sint64Optional() int64 {
+	if m != nil && m.F_Sint64Optional != nil {
+		return *m.F_Sint64Optional
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_Sfixed32Optional() int32 {
+	if m != nil && m.F_Sfixed32Optional != nil {
+		return *m.F_Sfixed32Optional
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_Sfixed64Optional() int64 {
+	if m != nil && m.F_Sfixed64Optional != nil {
+		return *m.F_Sfixed64Optional
+	}
+	return 0
+}
+
+func (m *GoTest) GetF_BoolDefaulted() bool {
+	if m != nil && m.F_BoolDefaulted != nil {
+		return *m.F_BoolDefaulted
+	}
+	return Default_GoTest_F_BoolDefaulted
+}
+
+func (m *GoTest) GetF_Int32Defaulted() int32 {
+	if m != nil && m.F_Int32Defaulted != nil {
+		return *m.F_Int32Defaulted
+	}
+	return Default_GoTest_F_Int32Defaulted
+}
+
+func (m *GoTest) GetF_Int64Defaulted() int64 {
+	if m != nil && m.F_Int64Defaulted != nil {
+		return *m.F_Int64Defaulted
+	}
+	return Default_GoTest_F_Int64Defaulted
+}
+
+func (m *GoTest) GetF_Fixed32Defaulted() uint32 {
+	if m != nil && m.F_Fixed32Defaulted != nil {
+		return *m.F_Fixed32Defaulted
+	}
+	return Default_GoTest_F_Fixed32Defaulted
+}
+
+func (m *GoTest) GetF_Fixed64Defaulted() uint64 {
+	if m != nil && m.F_Fixed64Defaulted != nil {
+		return *m.F_Fixed64Defaulted
+	}
+	return Default_GoTest_F_Fixed64Defaulted
+}
+
+func (m *GoTest) GetF_Uint32Defaulted() uint32 {
+	if m != nil && m.F_Uint32Defaulted != nil {
+		return *m.F_Uint32Defaulted
+	}
+	return Default_GoTest_F_Uint32Defaulted
+}
+
+func (m *GoTest) GetF_Uint64Defaulted() uint64 {
+	if m != nil && m.F_Uint64Defaulted != nil {
+		return *m.F_Uint64Defaulted
+	}
+	return Default_GoTest_F_Uint64Defaulted
+}
+
+func (m *GoTest) GetF_FloatDefaulted() float32 {
+	if m != nil && m.F_FloatDefaulted != nil {
+		return *m.F_FloatDefaulted
+	}
+	return Default_GoTest_F_FloatDefaulted
+}
+
+func (m *GoTest) GetF_DoubleDefaulted() float64 {
+	if m != nil && m.F_DoubleDefaulted != nil {
+		return *m.F_DoubleDefaulted
+	}
+	return Default_GoTest_F_DoubleDefaulted
+}
+
+func (m *GoTest) GetF_StringDefaulted() string {
+	if m != nil && m.F_StringDefaulted != nil {
+		return *m.F_StringDefaulted
+	}
+	return Default_GoTest_F_StringDefaulted
+}
+
+func (m *GoTest) GetF_BytesDefaulted() []byte {
+	if m != nil && m.F_BytesDefaulted != nil {
+		return m.F_BytesDefaulted
+	}
+	return append([]byte(nil), Default_GoTest_F_BytesDefaulted...)
+}
+
+func (m *GoTest) GetF_Sint32Defaulted() int32 {
+	if m != nil && m.F_Sint32Defaulted != nil {
+		return *m.F_Sint32Defaulted
+	}
+	return Default_GoTest_F_Sint32Defaulted
+}
+
+func (m *GoTest) GetF_Sint64Defaulted() int64 {
+	if m != nil && m.F_Sint64Defaulted != nil {
+		return *m.F_Sint64Defaulted
+	}
+	return Default_GoTest_F_Sint64Defaulted
+}
+
+func (m *GoTest) GetF_Sfixed32Defaulted() int32 {
+	if m != nil && m.F_Sfixed32Defaulted != nil {
+		return *m.F_Sfixed32Defaulted
+	}
+	return Default_GoTest_F_Sfixed32Defaulted
+}
+
+func (m *GoTest) GetF_Sfixed64Defaulted() int64 {
+	if m != nil && m.F_Sfixed64Defaulted != nil {
+		return *m.F_Sfixed64Defaulted
+	}
+	return Default_GoTest_F_Sfixed64Defaulted
+}
+
+func (m *GoTest) GetF_BoolRepeatedPacked() []bool {
+	if m != nil {
+		return m.F_BoolRepeatedPacked
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_Int32RepeatedPacked() []int32 {
+	if m != nil {
+		return m.F_Int32RepeatedPacked
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_Int64RepeatedPacked() []int64 {
+	if m != nil {
+		return m.F_Int64RepeatedPacked
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_Fixed32RepeatedPacked() []uint32 {
+	if m != nil {
+		return m.F_Fixed32RepeatedPacked
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_Fixed64RepeatedPacked() []uint64 {
+	if m != nil {
+		return m.F_Fixed64RepeatedPacked
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_Uint32RepeatedPacked() []uint32 {
+	if m != nil {
+		return m.F_Uint32RepeatedPacked
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_Uint64RepeatedPacked() []uint64 {
+	if m != nil {
+		return m.F_Uint64RepeatedPacked
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_FloatRepeatedPacked() []float32 {
+	if m != nil {
+		return m.F_FloatRepeatedPacked
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_DoubleRepeatedPacked() []float64 {
+	if m != nil {
+		return m.F_DoubleRepeatedPacked
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_Sint32RepeatedPacked() []int32 {
+	if m != nil {
+		return m.F_Sint32RepeatedPacked
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_Sint64RepeatedPacked() []int64 {
+	if m != nil {
+		return m.F_Sint64RepeatedPacked
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_Sfixed32RepeatedPacked() []int32 {
+	if m != nil {
+		return m.F_Sfixed32RepeatedPacked
+	}
+	return nil
+}
+
+func (m *GoTest) GetF_Sfixed64RepeatedPacked() []int64 {
+	if m != nil {
+		return m.F_Sfixed64RepeatedPacked
+	}
+	return nil
+}
+
+func (m *GoTest) GetRequiredgroup() *GoTest_RequiredGroup {
+	if m != nil {
+		return m.Requiredgroup
+	}
+	return nil
+}
+
+func (m *GoTest) GetRepeatedgroup() []*GoTest_RepeatedGroup {
+	if m != nil {
+		return m.Repeatedgroup
+	}
+	return nil
+}
+
+func (m *GoTest) GetOptionalgroup() *GoTest_OptionalGroup {
+	if m != nil {
+		return m.Optionalgroup
+	}
+	return nil
+}
+
+// Required, repeated, and optional groups.
+type GoTest_RequiredGroup struct {
+	RequiredField        *string  `protobuf:"bytes,71,req,name=RequiredField" json:"RequiredField,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GoTest_RequiredGroup) Reset()         { *m = GoTest_RequiredGroup{} }
+func (m *GoTest_RequiredGroup) String() string { return proto.CompactTextString(m) }
+func (*GoTest_RequiredGroup) ProtoMessage()    {}
+func (*GoTest_RequiredGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{2, 0}
+}
+
+func (m *GoTest_RequiredGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GoTest_RequiredGroup.Unmarshal(m, b)
+}
+func (m *GoTest_RequiredGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GoTest_RequiredGroup.Marshal(b, m, deterministic)
+}
+func (m *GoTest_RequiredGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GoTest_RequiredGroup.Merge(m, src)
+}
+func (m *GoTest_RequiredGroup) XXX_Size() int {
+	return xxx_messageInfo_GoTest_RequiredGroup.Size(m)
+}
+func (m *GoTest_RequiredGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_GoTest_RequiredGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GoTest_RequiredGroup proto.InternalMessageInfo
+
+func (m *GoTest_RequiredGroup) GetRequiredField() string {
+	if m != nil && m.RequiredField != nil {
+		return *m.RequiredField
+	}
+	return ""
+}
+
+type GoTest_RepeatedGroup struct {
+	RequiredField        *string  `protobuf:"bytes,81,req,name=RequiredField" json:"RequiredField,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GoTest_RepeatedGroup) Reset()         { *m = GoTest_RepeatedGroup{} }
+func (m *GoTest_RepeatedGroup) String() string { return proto.CompactTextString(m) }
+func (*GoTest_RepeatedGroup) ProtoMessage()    {}
+func (*GoTest_RepeatedGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{2, 1}
+}
+
+func (m *GoTest_RepeatedGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GoTest_RepeatedGroup.Unmarshal(m, b)
+}
+func (m *GoTest_RepeatedGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GoTest_RepeatedGroup.Marshal(b, m, deterministic)
+}
+func (m *GoTest_RepeatedGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GoTest_RepeatedGroup.Merge(m, src)
+}
+func (m *GoTest_RepeatedGroup) XXX_Size() int {
+	return xxx_messageInfo_GoTest_RepeatedGroup.Size(m)
+}
+func (m *GoTest_RepeatedGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_GoTest_RepeatedGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GoTest_RepeatedGroup proto.InternalMessageInfo
+
+func (m *GoTest_RepeatedGroup) GetRequiredField() string {
+	if m != nil && m.RequiredField != nil {
+		return *m.RequiredField
+	}
+	return ""
+}
+
+type GoTest_OptionalGroup struct {
+	RequiredField        *string  `protobuf:"bytes,91,req,name=RequiredField" json:"RequiredField,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GoTest_OptionalGroup) Reset()         { *m = GoTest_OptionalGroup{} }
+func (m *GoTest_OptionalGroup) String() string { return proto.CompactTextString(m) }
+func (*GoTest_OptionalGroup) ProtoMessage()    {}
+func (*GoTest_OptionalGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{2, 2}
+}
+
+func (m *GoTest_OptionalGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GoTest_OptionalGroup.Unmarshal(m, b)
+}
+func (m *GoTest_OptionalGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GoTest_OptionalGroup.Marshal(b, m, deterministic)
+}
+func (m *GoTest_OptionalGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GoTest_OptionalGroup.Merge(m, src)
+}
+func (m *GoTest_OptionalGroup) XXX_Size() int {
+	return xxx_messageInfo_GoTest_OptionalGroup.Size(m)
+}
+func (m *GoTest_OptionalGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_GoTest_OptionalGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GoTest_OptionalGroup proto.InternalMessageInfo
+
+func (m *GoTest_OptionalGroup) GetRequiredField() string {
+	if m != nil && m.RequiredField != nil {
+		return *m.RequiredField
+	}
+	return ""
+}
+
+// For testing a group containing a required field.
+type GoTestRequiredGroupField struct {
+	Group                *GoTestRequiredGroupField_Group `protobuf:"group,1,req,name=Group,json=group" json:"group,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                        `json:"-"`
+	XXX_unrecognized     []byte                          `json:"-"`
+	XXX_sizecache        int32                           `json:"-"`
+}
+
+func (m *GoTestRequiredGroupField) Reset()         { *m = GoTestRequiredGroupField{} }
+func (m *GoTestRequiredGroupField) String() string { return proto.CompactTextString(m) }
+func (*GoTestRequiredGroupField) ProtoMessage()    {}
+func (*GoTestRequiredGroupField) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{3}
+}
+
+func (m *GoTestRequiredGroupField) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GoTestRequiredGroupField.Unmarshal(m, b)
+}
+func (m *GoTestRequiredGroupField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GoTestRequiredGroupField.Marshal(b, m, deterministic)
+}
+func (m *GoTestRequiredGroupField) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GoTestRequiredGroupField.Merge(m, src)
+}
+func (m *GoTestRequiredGroupField) XXX_Size() int {
+	return xxx_messageInfo_GoTestRequiredGroupField.Size(m)
+}
+func (m *GoTestRequiredGroupField) XXX_DiscardUnknown() {
+	xxx_messageInfo_GoTestRequiredGroupField.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GoTestRequiredGroupField proto.InternalMessageInfo
+
+func (m *GoTestRequiredGroupField) GetGroup() *GoTestRequiredGroupField_Group {
+	if m != nil {
+		return m.Group
+	}
+	return nil
+}
+
+type GoTestRequiredGroupField_Group struct {
+	Field                *int32   `protobuf:"varint,2,req,name=Field" json:"Field,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GoTestRequiredGroupField_Group) Reset()         { *m = GoTestRequiredGroupField_Group{} }
+func (m *GoTestRequiredGroupField_Group) String() string { return proto.CompactTextString(m) }
+func (*GoTestRequiredGroupField_Group) ProtoMessage()    {}
+func (*GoTestRequiredGroupField_Group) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{3, 0}
+}
+
+func (m *GoTestRequiredGroupField_Group) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GoTestRequiredGroupField_Group.Unmarshal(m, b)
+}
+func (m *GoTestRequiredGroupField_Group) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GoTestRequiredGroupField_Group.Marshal(b, m, deterministic)
+}
+func (m *GoTestRequiredGroupField_Group) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GoTestRequiredGroupField_Group.Merge(m, src)
+}
+func (m *GoTestRequiredGroupField_Group) XXX_Size() int {
+	return xxx_messageInfo_GoTestRequiredGroupField_Group.Size(m)
+}
+func (m *GoTestRequiredGroupField_Group) XXX_DiscardUnknown() {
+	xxx_messageInfo_GoTestRequiredGroupField_Group.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GoTestRequiredGroupField_Group proto.InternalMessageInfo
+
+func (m *GoTestRequiredGroupField_Group) GetField() int32 {
+	if m != nil && m.Field != nil {
+		return *m.Field
+	}
+	return 0
+}
+
+// For testing skipping of unrecognized fields.
+// Numbers are all big, larger than tag numbers in GoTestField,
+// the message used in the corresponding test.
+type GoSkipTest struct {
+	SkipInt32            *int32                `protobuf:"varint,11,req,name=skip_int32,json=skipInt32" json:"skip_int32,omitempty"`
+	SkipFixed32          *uint32               `protobuf:"fixed32,12,req,name=skip_fixed32,json=skipFixed32" json:"skip_fixed32,omitempty"`
+	SkipFixed64          *uint64               `protobuf:"fixed64,13,req,name=skip_fixed64,json=skipFixed64" json:"skip_fixed64,omitempty"`
+	SkipString           *string               `protobuf:"bytes,14,req,name=skip_string,json=skipString" json:"skip_string,omitempty"`
+	Skipgroup            *GoSkipTest_SkipGroup `protobuf:"group,15,req,name=SkipGroup,json=skipgroup" json:"skipgroup,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
+	XXX_unrecognized     []byte                `json:"-"`
+	XXX_sizecache        int32                 `json:"-"`
+}
+
+func (m *GoSkipTest) Reset()         { *m = GoSkipTest{} }
+func (m *GoSkipTest) String() string { return proto.CompactTextString(m) }
+func (*GoSkipTest) ProtoMessage()    {}
+func (*GoSkipTest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{4}
+}
+
+func (m *GoSkipTest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GoSkipTest.Unmarshal(m, b)
+}
+func (m *GoSkipTest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GoSkipTest.Marshal(b, m, deterministic)
+}
+func (m *GoSkipTest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GoSkipTest.Merge(m, src)
+}
+func (m *GoSkipTest) XXX_Size() int {
+	return xxx_messageInfo_GoSkipTest.Size(m)
+}
+func (m *GoSkipTest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GoSkipTest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GoSkipTest proto.InternalMessageInfo
+
+func (m *GoSkipTest) GetSkipInt32() int32 {
+	if m != nil && m.SkipInt32 != nil {
+		return *m.SkipInt32
+	}
+	return 0
+}
+
+func (m *GoSkipTest) GetSkipFixed32() uint32 {
+	if m != nil && m.SkipFixed32 != nil {
+		return *m.SkipFixed32
+	}
+	return 0
+}
+
+func (m *GoSkipTest) GetSkipFixed64() uint64 {
+	if m != nil && m.SkipFixed64 != nil {
+		return *m.SkipFixed64
+	}
+	return 0
+}
+
+func (m *GoSkipTest) GetSkipString() string {
+	if m != nil && m.SkipString != nil {
+		return *m.SkipString
+	}
+	return ""
+}
+
+func (m *GoSkipTest) GetSkipgroup() *GoSkipTest_SkipGroup {
+	if m != nil {
+		return m.Skipgroup
+	}
+	return nil
+}
+
+type GoSkipTest_SkipGroup struct {
+	GroupInt32           *int32   `protobuf:"varint,16,req,name=group_int32,json=groupInt32" json:"group_int32,omitempty"`
+	GroupString          *string  `protobuf:"bytes,17,req,name=group_string,json=groupString" json:"group_string,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GoSkipTest_SkipGroup) Reset()         { *m = GoSkipTest_SkipGroup{} }
+func (m *GoSkipTest_SkipGroup) String() string { return proto.CompactTextString(m) }
+func (*GoSkipTest_SkipGroup) ProtoMessage()    {}
+func (*GoSkipTest_SkipGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{4, 0}
+}
+
+func (m *GoSkipTest_SkipGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GoSkipTest_SkipGroup.Unmarshal(m, b)
+}
+func (m *GoSkipTest_SkipGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GoSkipTest_SkipGroup.Marshal(b, m, deterministic)
+}
+func (m *GoSkipTest_SkipGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GoSkipTest_SkipGroup.Merge(m, src)
+}
+func (m *GoSkipTest_SkipGroup) XXX_Size() int {
+	return xxx_messageInfo_GoSkipTest_SkipGroup.Size(m)
+}
+func (m *GoSkipTest_SkipGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_GoSkipTest_SkipGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GoSkipTest_SkipGroup proto.InternalMessageInfo
+
+func (m *GoSkipTest_SkipGroup) GetGroupInt32() int32 {
+	if m != nil && m.GroupInt32 != nil {
+		return *m.GroupInt32
+	}
+	return 0
+}
+
+func (m *GoSkipTest_SkipGroup) GetGroupString() string {
+	if m != nil && m.GroupString != nil {
+		return *m.GroupString
+	}
+	return ""
+}
+
+// For testing packed/non-packed decoder switching.
+// A serialized instance of one should be deserializable as the other.
+type NonPackedTest struct {
+	A                    []int32  `protobuf:"varint,1,rep,name=a" json:"a,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *NonPackedTest) Reset()         { *m = NonPackedTest{} }
+func (m *NonPackedTest) String() string { return proto.CompactTextString(m) }
+func (*NonPackedTest) ProtoMessage()    {}
+func (*NonPackedTest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{5}
+}
+
+func (m *NonPackedTest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_NonPackedTest.Unmarshal(m, b)
+}
+func (m *NonPackedTest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_NonPackedTest.Marshal(b, m, deterministic)
+}
+func (m *NonPackedTest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_NonPackedTest.Merge(m, src)
+}
+func (m *NonPackedTest) XXX_Size() int {
+	return xxx_messageInfo_NonPackedTest.Size(m)
+}
+func (m *NonPackedTest) XXX_DiscardUnknown() {
+	xxx_messageInfo_NonPackedTest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_NonPackedTest proto.InternalMessageInfo
+
+func (m *NonPackedTest) GetA() []int32 {
+	if m != nil {
+		return m.A
+	}
+	return nil
+}
+
+type PackedTest struct {
+	B                    []int32  `protobuf:"varint,1,rep,packed,name=b" json:"b,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *PackedTest) Reset()         { *m = PackedTest{} }
+func (m *PackedTest) String() string { return proto.CompactTextString(m) }
+func (*PackedTest) ProtoMessage()    {}
+func (*PackedTest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{6}
+}
+
+func (m *PackedTest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PackedTest.Unmarshal(m, b)
+}
+func (m *PackedTest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PackedTest.Marshal(b, m, deterministic)
+}
+func (m *PackedTest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PackedTest.Merge(m, src)
+}
+func (m *PackedTest) XXX_Size() int {
+	return xxx_messageInfo_PackedTest.Size(m)
+}
+func (m *PackedTest) XXX_DiscardUnknown() {
+	xxx_messageInfo_PackedTest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PackedTest proto.InternalMessageInfo
+
+func (m *PackedTest) GetB() []int32 {
+	if m != nil {
+		return m.B
+	}
+	return nil
+}
+
+type MaxTag struct {
+	// Maximum possible tag number.
+	LastField            *string  `protobuf:"bytes,536870911,opt,name=last_field,json=lastField" json:"last_field,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *MaxTag) Reset()         { *m = MaxTag{} }
+func (m *MaxTag) String() string { return proto.CompactTextString(m) }
+func (*MaxTag) ProtoMessage()    {}
+func (*MaxTag) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{7}
+}
+
+func (m *MaxTag) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MaxTag.Unmarshal(m, b)
+}
+func (m *MaxTag) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MaxTag.Marshal(b, m, deterministic)
+}
+func (m *MaxTag) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MaxTag.Merge(m, src)
+}
+func (m *MaxTag) XXX_Size() int {
+	return xxx_messageInfo_MaxTag.Size(m)
+}
+func (m *MaxTag) XXX_DiscardUnknown() {
+	xxx_messageInfo_MaxTag.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MaxTag proto.InternalMessageInfo
+
+func (m *MaxTag) GetLastField() string {
+	if m != nil && m.LastField != nil {
+		return *m.LastField
+	}
+	return ""
+}
+
+type OldMessage struct {
+	Nested               *OldMessage_Nested `protobuf:"bytes,1,opt,name=nested" json:"nested,omitempty"`
+	Num                  *int32             `protobuf:"varint,2,opt,name=num" json:"num,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
+	XXX_unrecognized     []byte             `json:"-"`
+	XXX_sizecache        int32              `json:"-"`
+}
+
+func (m *OldMessage) Reset()         { *m = OldMessage{} }
+func (m *OldMessage) String() string { return proto.CompactTextString(m) }
+func (*OldMessage) ProtoMessage()    {}
+func (*OldMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{8}
+}
+
+func (m *OldMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OldMessage.Unmarshal(m, b)
+}
+func (m *OldMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OldMessage.Marshal(b, m, deterministic)
+}
+func (m *OldMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OldMessage.Merge(m, src)
+}
+func (m *OldMessage) XXX_Size() int {
+	return xxx_messageInfo_OldMessage.Size(m)
+}
+func (m *OldMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_OldMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OldMessage proto.InternalMessageInfo
+
+func (m *OldMessage) GetNested() *OldMessage_Nested {
+	if m != nil {
+		return m.Nested
+	}
+	return nil
+}
+
+func (m *OldMessage) GetNum() int32 {
+	if m != nil && m.Num != nil {
+		return *m.Num
+	}
+	return 0
+}
+
+type OldMessage_Nested struct {
+	Name                 *string  `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OldMessage_Nested) Reset()         { *m = OldMessage_Nested{} }
+func (m *OldMessage_Nested) String() string { return proto.CompactTextString(m) }
+func (*OldMessage_Nested) ProtoMessage()    {}
+func (*OldMessage_Nested) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{8, 0}
+}
+
+func (m *OldMessage_Nested) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OldMessage_Nested.Unmarshal(m, b)
+}
+func (m *OldMessage_Nested) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OldMessage_Nested.Marshal(b, m, deterministic)
+}
+func (m *OldMessage_Nested) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OldMessage_Nested.Merge(m, src)
+}
+func (m *OldMessage_Nested) XXX_Size() int {
+	return xxx_messageInfo_OldMessage_Nested.Size(m)
+}
+func (m *OldMessage_Nested) XXX_DiscardUnknown() {
+	xxx_messageInfo_OldMessage_Nested.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OldMessage_Nested proto.InternalMessageInfo
+
+func (m *OldMessage_Nested) GetName() string {
+	if m != nil && m.Name != nil {
+		return *m.Name
+	}
+	return ""
+}
+
+// NewMessage is wire compatible with OldMessage;
+// imagine it as a future version.
+type NewMessage struct {
+	Nested *NewMessage_Nested `protobuf:"bytes,1,opt,name=nested" json:"nested,omitempty"`
+	// This is an int32 in OldMessage.
+	Num                  *int64   `protobuf:"varint,2,opt,name=num" json:"num,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *NewMessage) Reset()         { *m = NewMessage{} }
+func (m *NewMessage) String() string { return proto.CompactTextString(m) }
+func (*NewMessage) ProtoMessage()    {}
+func (*NewMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{9}
+}
+
+func (m *NewMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_NewMessage.Unmarshal(m, b)
+}
+func (m *NewMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_NewMessage.Marshal(b, m, deterministic)
+}
+func (m *NewMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_NewMessage.Merge(m, src)
+}
+func (m *NewMessage) XXX_Size() int {
+	return xxx_messageInfo_NewMessage.Size(m)
+}
+func (m *NewMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_NewMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_NewMessage proto.InternalMessageInfo
+
+func (m *NewMessage) GetNested() *NewMessage_Nested {
+	if m != nil {
+		return m.Nested
+	}
+	return nil
+}
+
+func (m *NewMessage) GetNum() int64 {
+	if m != nil && m.Num != nil {
+		return *m.Num
+	}
+	return 0
+}
+
+type NewMessage_Nested struct {
+	Name                 *string  `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	FoodGroup            *string  `protobuf:"bytes,2,opt,name=food_group,json=foodGroup" json:"food_group,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *NewMessage_Nested) Reset()         { *m = NewMessage_Nested{} }
+func (m *NewMessage_Nested) String() string { return proto.CompactTextString(m) }
+func (*NewMessage_Nested) ProtoMessage()    {}
+func (*NewMessage_Nested) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{9, 0}
+}
+
+func (m *NewMessage_Nested) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_NewMessage_Nested.Unmarshal(m, b)
+}
+func (m *NewMessage_Nested) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_NewMessage_Nested.Marshal(b, m, deterministic)
+}
+func (m *NewMessage_Nested) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_NewMessage_Nested.Merge(m, src)
+}
+func (m *NewMessage_Nested) XXX_Size() int {
+	return xxx_messageInfo_NewMessage_Nested.Size(m)
+}
+func (m *NewMessage_Nested) XXX_DiscardUnknown() {
+	xxx_messageInfo_NewMessage_Nested.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_NewMessage_Nested proto.InternalMessageInfo
+
+func (m *NewMessage_Nested) GetName() string {
+	if m != nil && m.Name != nil {
+		return *m.Name
+	}
+	return ""
+}
+
+func (m *NewMessage_Nested) GetFoodGroup() string {
+	if m != nil && m.FoodGroup != nil {
+		return *m.FoodGroup
+	}
+	return ""
+}
+
+type InnerMessage struct {
+	Host                 *string  `protobuf:"bytes,1,req,name=host" json:"host,omitempty"`
+	Port                 *int32   `protobuf:"varint,2,opt,name=port,def=4000" json:"port,omitempty"`
+	Connected            *bool    `protobuf:"varint,3,opt,name=connected" json:"connected,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *InnerMessage) Reset()         { *m = InnerMessage{} }
+func (m *InnerMessage) String() string { return proto.CompactTextString(m) }
+func (*InnerMessage) ProtoMessage()    {}
+func (*InnerMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{10}
+}
+
+func (m *InnerMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_InnerMessage.Unmarshal(m, b)
+}
+func (m *InnerMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_InnerMessage.Marshal(b, m, deterministic)
+}
+func (m *InnerMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_InnerMessage.Merge(m, src)
+}
+func (m *InnerMessage) XXX_Size() int {
+	return xxx_messageInfo_InnerMessage.Size(m)
+}
+func (m *InnerMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_InnerMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_InnerMessage proto.InternalMessageInfo
+
+const Default_InnerMessage_Port int32 = 4000
+
+func (m *InnerMessage) GetHost() string {
+	if m != nil && m.Host != nil {
+		return *m.Host
+	}
+	return ""
+}
+
+func (m *InnerMessage) GetPort() int32 {
+	if m != nil && m.Port != nil {
+		return *m.Port
+	}
+	return Default_InnerMessage_Port
+}
+
+func (m *InnerMessage) GetConnected() bool {
+	if m != nil && m.Connected != nil {
+		return *m.Connected
+	}
+	return false
+}
+
+type OtherMessage struct {
+	Key                          *int64        `protobuf:"varint,1,opt,name=key" json:"key,omitempty"`
+	Value                        []byte        `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
+	Weight                       *float32      `protobuf:"fixed32,3,opt,name=weight" json:"weight,omitempty"`
+	Inner                        *InnerMessage `protobuf:"bytes,4,opt,name=inner" json:"inner,omitempty"`
+	XXX_NoUnkeyedLiteral         struct{}      `json:"-"`
+	proto.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized             []byte `json:"-"`
+	XXX_sizecache                int32  `json:"-"`
+}
+
+func (m *OtherMessage) Reset()         { *m = OtherMessage{} }
+func (m *OtherMessage) String() string { return proto.CompactTextString(m) }
+func (*OtherMessage) ProtoMessage()    {}
+func (*OtherMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{11}
+}
+
+var extRange_OtherMessage = []proto.ExtensionRange{
+	{Start: 100, End: 536870911},
+}
+
+func (*OtherMessage) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_OtherMessage
+}
+
+func (m *OtherMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OtherMessage.Unmarshal(m, b)
+}
+func (m *OtherMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OtherMessage.Marshal(b, m, deterministic)
+}
+func (m *OtherMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OtherMessage.Merge(m, src)
+}
+func (m *OtherMessage) XXX_Size() int {
+	return xxx_messageInfo_OtherMessage.Size(m)
+}
+func (m *OtherMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_OtherMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OtherMessage proto.InternalMessageInfo
+
+func (m *OtherMessage) GetKey() int64 {
+	if m != nil && m.Key != nil {
+		return *m.Key
+	}
+	return 0
+}
+
+func (m *OtherMessage) GetValue() []byte {
+	if m != nil {
+		return m.Value
+	}
+	return nil
+}
+
+func (m *OtherMessage) GetWeight() float32 {
+	if m != nil && m.Weight != nil {
+		return *m.Weight
+	}
+	return 0
+}
+
+func (m *OtherMessage) GetInner() *InnerMessage {
+	if m != nil {
+		return m.Inner
+	}
+	return nil
+}
+
+type RequiredInnerMessage struct {
+	LeoFinallyWonAnOscar *InnerMessage `protobuf:"bytes,1,req,name=leo_finally_won_an_oscar,json=leoFinallyWonAnOscar" json:"leo_finally_won_an_oscar,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
+	XXX_unrecognized     []byte        `json:"-"`
+	XXX_sizecache        int32         `json:"-"`
+}
+
+func (m *RequiredInnerMessage) Reset()         { *m = RequiredInnerMessage{} }
+func (m *RequiredInnerMessage) String() string { return proto.CompactTextString(m) }
+func (*RequiredInnerMessage) ProtoMessage()    {}
+func (*RequiredInnerMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{12}
+}
+
+func (m *RequiredInnerMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_RequiredInnerMessage.Unmarshal(m, b)
+}
+func (m *RequiredInnerMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_RequiredInnerMessage.Marshal(b, m, deterministic)
+}
+func (m *RequiredInnerMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_RequiredInnerMessage.Merge(m, src)
+}
+func (m *RequiredInnerMessage) XXX_Size() int {
+	return xxx_messageInfo_RequiredInnerMessage.Size(m)
+}
+func (m *RequiredInnerMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_RequiredInnerMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RequiredInnerMessage proto.InternalMessageInfo
+
+func (m *RequiredInnerMessage) GetLeoFinallyWonAnOscar() *InnerMessage {
+	if m != nil {
+		return m.LeoFinallyWonAnOscar
+	}
+	return nil
+}
+
+type MyMessage struct {
+	Count          *int32                `protobuf:"varint,1,req,name=count" json:"count,omitempty"`
+	Name           *string               `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
+	Quote          *string               `protobuf:"bytes,3,opt,name=quote" json:"quote,omitempty"`
+	Pet            []string              `protobuf:"bytes,4,rep,name=pet" json:"pet,omitempty"`
+	Inner          *InnerMessage         `protobuf:"bytes,5,opt,name=inner" json:"inner,omitempty"`
+	Others         []*OtherMessage       `protobuf:"bytes,6,rep,name=others" json:"others,omitempty"`
+	WeMustGoDeeper *RequiredInnerMessage `protobuf:"bytes,13,opt,name=we_must_go_deeper,json=weMustGoDeeper" json:"we_must_go_deeper,omitempty"`
+	RepInner       []*InnerMessage       `protobuf:"bytes,12,rep,name=rep_inner,json=repInner" json:"rep_inner,omitempty"`
+	Bikeshed       *MyMessage_Color      `protobuf:"varint,7,opt,name=bikeshed,enum=test_proto.MyMessage_Color" json:"bikeshed,omitempty"`
+	Somegroup      *MyMessage_SomeGroup  `protobuf:"group,8,opt,name=SomeGroup,json=somegroup" json:"somegroup,omitempty"`
+	// This field becomes [][]byte in the generated code.
+	RepBytes                     [][]byte `protobuf:"bytes,10,rep,name=rep_bytes,json=repBytes" json:"rep_bytes,omitempty"`
+	Bigfloat                     *float64 `protobuf:"fixed64,11,opt,name=bigfloat" json:"bigfloat,omitempty"`
+	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
+	proto.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized             []byte `json:"-"`
+	XXX_sizecache                int32  `json:"-"`
+}
+
+func (m *MyMessage) Reset()         { *m = MyMessage{} }
+func (m *MyMessage) String() string { return proto.CompactTextString(m) }
+func (*MyMessage) ProtoMessage()    {}
+func (*MyMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{13}
+}
+
+var extRange_MyMessage = []proto.ExtensionRange{
+	{Start: 100, End: 536870911},
+}
+
+func (*MyMessage) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_MyMessage
+}
+
+func (m *MyMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MyMessage.Unmarshal(m, b)
+}
+func (m *MyMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MyMessage.Marshal(b, m, deterministic)
+}
+func (m *MyMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MyMessage.Merge(m, src)
+}
+func (m *MyMessage) XXX_Size() int {
+	return xxx_messageInfo_MyMessage.Size(m)
+}
+func (m *MyMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_MyMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MyMessage proto.InternalMessageInfo
+
+func (m *MyMessage) GetCount() int32 {
+	if m != nil && m.Count != nil {
+		return *m.Count
+	}
+	return 0
+}
+
+func (m *MyMessage) GetName() string {
+	if m != nil && m.Name != nil {
+		return *m.Name
+	}
+	return ""
+}
+
+func (m *MyMessage) GetQuote() string {
+	if m != nil && m.Quote != nil {
+		return *m.Quote
+	}
+	return ""
+}
+
+func (m *MyMessage) GetPet() []string {
+	if m != nil {
+		return m.Pet
+	}
+	return nil
+}
+
+func (m *MyMessage) GetInner() *InnerMessage {
+	if m != nil {
+		return m.Inner
+	}
+	return nil
+}
+
+func (m *MyMessage) GetOthers() []*OtherMessage {
+	if m != nil {
+		return m.Others
+	}
+	return nil
+}
+
+func (m *MyMessage) GetWeMustGoDeeper() *RequiredInnerMessage {
+	if m != nil {
+		return m.WeMustGoDeeper
+	}
+	return nil
+}
+
+func (m *MyMessage) GetRepInner() []*InnerMessage {
+	if m != nil {
+		return m.RepInner
+	}
+	return nil
+}
+
+func (m *MyMessage) GetBikeshed() MyMessage_Color {
+	if m != nil && m.Bikeshed != nil {
+		return *m.Bikeshed
+	}
+	return MyMessage_RED
+}
+
+func (m *MyMessage) GetSomegroup() *MyMessage_SomeGroup {
+	if m != nil {
+		return m.Somegroup
+	}
+	return nil
+}
+
+func (m *MyMessage) GetRepBytes() [][]byte {
+	if m != nil {
+		return m.RepBytes
+	}
+	return nil
+}
+
+func (m *MyMessage) GetBigfloat() float64 {
+	if m != nil && m.Bigfloat != nil {
+		return *m.Bigfloat
+	}
+	return 0
+}
+
+type MyMessage_SomeGroup struct {
+	GroupField           *int32   `protobuf:"varint,9,opt,name=group_field,json=groupField" json:"group_field,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *MyMessage_SomeGroup) Reset()         { *m = MyMessage_SomeGroup{} }
+func (m *MyMessage_SomeGroup) String() string { return proto.CompactTextString(m) }
+func (*MyMessage_SomeGroup) ProtoMessage()    {}
+func (*MyMessage_SomeGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{13, 0}
+}
+
+func (m *MyMessage_SomeGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MyMessage_SomeGroup.Unmarshal(m, b)
+}
+func (m *MyMessage_SomeGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MyMessage_SomeGroup.Marshal(b, m, deterministic)
+}
+func (m *MyMessage_SomeGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MyMessage_SomeGroup.Merge(m, src)
+}
+func (m *MyMessage_SomeGroup) XXX_Size() int {
+	return xxx_messageInfo_MyMessage_SomeGroup.Size(m)
+}
+func (m *MyMessage_SomeGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_MyMessage_SomeGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MyMessage_SomeGroup proto.InternalMessageInfo
+
+func (m *MyMessage_SomeGroup) GetGroupField() int32 {
+	if m != nil && m.GroupField != nil {
+		return *m.GroupField
+	}
+	return 0
+}
+
+type Ext struct {
+	Data                 *string         `protobuf:"bytes,1,opt,name=data" json:"data,omitempty"`
+	MapField             map[int32]int32 `protobuf:"bytes,2,rep,name=map_field,json=mapField" json:"map_field,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
+	XXX_unrecognized     []byte          `json:"-"`
+	XXX_sizecache        int32           `json:"-"`
+}
+
+func (m *Ext) Reset()         { *m = Ext{} }
+func (m *Ext) String() string { return proto.CompactTextString(m) }
+func (*Ext) ProtoMessage()    {}
+func (*Ext) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{14}
+}
+
+func (m *Ext) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Ext.Unmarshal(m, b)
+}
+func (m *Ext) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Ext.Marshal(b, m, deterministic)
+}
+func (m *Ext) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Ext.Merge(m, src)
+}
+func (m *Ext) XXX_Size() int {
+	return xxx_messageInfo_Ext.Size(m)
+}
+func (m *Ext) XXX_DiscardUnknown() {
+	xxx_messageInfo_Ext.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Ext proto.InternalMessageInfo
+
+func (m *Ext) GetData() string {
+	if m != nil && m.Data != nil {
+		return *m.Data
+	}
+	return ""
+}
+
+func (m *Ext) GetMapField() map[int32]int32 {
+	if m != nil {
+		return m.MapField
+	}
+	return nil
+}
+
+var E_Ext_More = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessage)(nil),
+	ExtensionType: (*Ext)(nil),
+	Field:         103,
+	Name:          "test_proto.Ext.more",
+	Tag:           "bytes,103,opt,name=more",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_Ext_Text = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessage)(nil),
+	ExtensionType: (*string)(nil),
+	Field:         104,
+	Name:          "test_proto.Ext.text",
+	Tag:           "bytes,104,opt,name=text",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_Ext_Number = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessage)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         105,
+	Name:          "test_proto.Ext.number",
+	Tag:           "varint,105,opt,name=number",
+	Filename:      "test_proto/test.proto",
+}
+
+type ComplexExtension struct {
+	First                *int32   `protobuf:"varint,1,opt,name=first" json:"first,omitempty"`
+	Second               *int32   `protobuf:"varint,2,opt,name=second" json:"second,omitempty"`
+	Third                []int32  `protobuf:"varint,3,rep,name=third" json:"third,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ComplexExtension) Reset()         { *m = ComplexExtension{} }
+func (m *ComplexExtension) String() string { return proto.CompactTextString(m) }
+func (*ComplexExtension) ProtoMessage()    {}
+func (*ComplexExtension) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{15}
+}
+
+func (m *ComplexExtension) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ComplexExtension.Unmarshal(m, b)
+}
+func (m *ComplexExtension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ComplexExtension.Marshal(b, m, deterministic)
+}
+func (m *ComplexExtension) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ComplexExtension.Merge(m, src)
+}
+func (m *ComplexExtension) XXX_Size() int {
+	return xxx_messageInfo_ComplexExtension.Size(m)
+}
+func (m *ComplexExtension) XXX_DiscardUnknown() {
+	xxx_messageInfo_ComplexExtension.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ComplexExtension proto.InternalMessageInfo
+
+func (m *ComplexExtension) GetFirst() int32 {
+	if m != nil && m.First != nil {
+		return *m.First
+	}
+	return 0
+}
+
+func (m *ComplexExtension) GetSecond() int32 {
+	if m != nil && m.Second != nil {
+		return *m.Second
+	}
+	return 0
+}
+
+func (m *ComplexExtension) GetThird() []int32 {
+	if m != nil {
+		return m.Third
+	}
+	return nil
+}
+
+type DefaultsMessage struct {
+	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
+	proto.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized             []byte `json:"-"`
+	XXX_sizecache                int32  `json:"-"`
+}
+
+func (m *DefaultsMessage) Reset()         { *m = DefaultsMessage{} }
+func (m *DefaultsMessage) String() string { return proto.CompactTextString(m) }
+func (*DefaultsMessage) ProtoMessage()    {}
+func (*DefaultsMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{16}
+}
+
+var extRange_DefaultsMessage = []proto.ExtensionRange{
+	{Start: 100, End: 536870911},
+}
+
+func (*DefaultsMessage) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_DefaultsMessage
+}
+
+func (m *DefaultsMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DefaultsMessage.Unmarshal(m, b)
+}
+func (m *DefaultsMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DefaultsMessage.Marshal(b, m, deterministic)
+}
+func (m *DefaultsMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DefaultsMessage.Merge(m, src)
+}
+func (m *DefaultsMessage) XXX_Size() int {
+	return xxx_messageInfo_DefaultsMessage.Size(m)
+}
+func (m *DefaultsMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_DefaultsMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DefaultsMessage proto.InternalMessageInfo
+
+type MyMessageSet struct {
+	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
+	proto.XXX_InternalExtensions `protobuf_messageset:"1" json:"-"`
+	XXX_unrecognized             []byte `json:"-"`
+	XXX_sizecache                int32  `json:"-"`
+}
+
+func (m *MyMessageSet) Reset()         { *m = MyMessageSet{} }
+func (m *MyMessageSet) String() string { return proto.CompactTextString(m) }
+func (*MyMessageSet) ProtoMessage()    {}
+func (*MyMessageSet) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{17}
+}
+
+var extRange_MyMessageSet = []proto.ExtensionRange{
+	{Start: 100, End: 2147483646},
+}
+
+func (*MyMessageSet) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_MyMessageSet
+}
+
+func (m *MyMessageSet) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MyMessageSet.Unmarshal(m, b)
+}
+func (m *MyMessageSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MyMessageSet.Marshal(b, m, deterministic)
+}
+func (m *MyMessageSet) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MyMessageSet.Merge(m, src)
+}
+func (m *MyMessageSet) XXX_Size() int {
+	return xxx_messageInfo_MyMessageSet.Size(m)
+}
+func (m *MyMessageSet) XXX_DiscardUnknown() {
+	xxx_messageInfo_MyMessageSet.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MyMessageSet proto.InternalMessageInfo
+
+type Empty struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Empty) Reset()         { *m = Empty{} }
+func (m *Empty) String() string { return proto.CompactTextString(m) }
+func (*Empty) ProtoMessage()    {}
+func (*Empty) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{18}
+}
+
+func (m *Empty) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Empty.Unmarshal(m, b)
+}
+func (m *Empty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Empty.Marshal(b, m, deterministic)
+}
+func (m *Empty) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Empty.Merge(m, src)
+}
+func (m *Empty) XXX_Size() int {
+	return xxx_messageInfo_Empty.Size(m)
+}
+func (m *Empty) XXX_DiscardUnknown() {
+	xxx_messageInfo_Empty.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Empty proto.InternalMessageInfo
+
+type MessageList struct {
+	Message              []*MessageList_Message `protobuf:"group,1,rep,name=Message,json=message" json:"message,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
+	XXX_unrecognized     []byte                 `json:"-"`
+	XXX_sizecache        int32                  `json:"-"`
+}
+
+func (m *MessageList) Reset()         { *m = MessageList{} }
+func (m *MessageList) String() string { return proto.CompactTextString(m) }
+func (*MessageList) ProtoMessage()    {}
+func (*MessageList) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{19}
+}
+
+func (m *MessageList) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MessageList.Unmarshal(m, b)
+}
+func (m *MessageList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MessageList.Marshal(b, m, deterministic)
+}
+func (m *MessageList) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MessageList.Merge(m, src)
+}
+func (m *MessageList) XXX_Size() int {
+	return xxx_messageInfo_MessageList.Size(m)
+}
+func (m *MessageList) XXX_DiscardUnknown() {
+	xxx_messageInfo_MessageList.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MessageList proto.InternalMessageInfo
+
+func (m *MessageList) GetMessage() []*MessageList_Message {
+	if m != nil {
+		return m.Message
+	}
+	return nil
+}
+
+type MessageList_Message struct {
+	Name                 *string  `protobuf:"bytes,2,req,name=name" json:"name,omitempty"`
+	Count                *int32   `protobuf:"varint,3,req,name=count" json:"count,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *MessageList_Message) Reset()         { *m = MessageList_Message{} }
+func (m *MessageList_Message) String() string { return proto.CompactTextString(m) }
+func (*MessageList_Message) ProtoMessage()    {}
+func (*MessageList_Message) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{19, 0}
+}
+
+func (m *MessageList_Message) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MessageList_Message.Unmarshal(m, b)
+}
+func (m *MessageList_Message) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MessageList_Message.Marshal(b, m, deterministic)
+}
+func (m *MessageList_Message) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MessageList_Message.Merge(m, src)
+}
+func (m *MessageList_Message) XXX_Size() int {
+	return xxx_messageInfo_MessageList_Message.Size(m)
+}
+func (m *MessageList_Message) XXX_DiscardUnknown() {
+	xxx_messageInfo_MessageList_Message.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MessageList_Message proto.InternalMessageInfo
+
+func (m *MessageList_Message) GetName() string {
+	if m != nil && m.Name != nil {
+		return *m.Name
+	}
+	return ""
+}
+
+func (m *MessageList_Message) GetCount() int32 {
+	if m != nil && m.Count != nil {
+		return *m.Count
+	}
+	return 0
+}
+
+type Strings struct {
+	StringField          *string  `protobuf:"bytes,1,opt,name=string_field,json=stringField" json:"string_field,omitempty"`
+	BytesField           []byte   `protobuf:"bytes,2,opt,name=bytes_field,json=bytesField" json:"bytes_field,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Strings) Reset()         { *m = Strings{} }
+func (m *Strings) String() string { return proto.CompactTextString(m) }
+func (*Strings) ProtoMessage()    {}
+func (*Strings) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{20}
+}
+
+func (m *Strings) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Strings.Unmarshal(m, b)
+}
+func (m *Strings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Strings.Marshal(b, m, deterministic)
+}
+func (m *Strings) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Strings.Merge(m, src)
+}
+func (m *Strings) XXX_Size() int {
+	return xxx_messageInfo_Strings.Size(m)
+}
+func (m *Strings) XXX_DiscardUnknown() {
+	xxx_messageInfo_Strings.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Strings proto.InternalMessageInfo
+
+func (m *Strings) GetStringField() string {
+	if m != nil && m.StringField != nil {
+		return *m.StringField
+	}
+	return ""
+}
+
+func (m *Strings) GetBytesField() []byte {
+	if m != nil {
+		return m.BytesField
+	}
+	return nil
+}
+
+type Defaults struct {
+	// Default-valued fields of all basic types.
+	// Same as GoTest, but copied here to make testing easier.
+	F_Bool    *bool           `protobuf:"varint,1,opt,name=F_Bool,json=FBool,def=1" json:"F_Bool,omitempty"`
+	F_Int32   *int32          `protobuf:"varint,2,opt,name=F_Int32,json=FInt32,def=32" json:"F_Int32,omitempty"`
+	F_Int64   *int64          `protobuf:"varint,3,opt,name=F_Int64,json=FInt64,def=64" json:"F_Int64,omitempty"`
+	F_Fixed32 *uint32         `protobuf:"fixed32,4,opt,name=F_Fixed32,json=FFixed32,def=320" json:"F_Fixed32,omitempty"`
+	F_Fixed64 *uint64         `protobuf:"fixed64,5,opt,name=F_Fixed64,json=FFixed64,def=640" json:"F_Fixed64,omitempty"`
+	F_Uint32  *uint32         `protobuf:"varint,6,opt,name=F_Uint32,json=FUint32,def=3200" json:"F_Uint32,omitempty"`
+	F_Uint64  *uint64         `protobuf:"varint,7,opt,name=F_Uint64,json=FUint64,def=6400" json:"F_Uint64,omitempty"`
+	F_Float   *float32        `protobuf:"fixed32,8,opt,name=F_Float,json=FFloat,def=314159" json:"F_Float,omitempty"`
+	F_Double  *float64        `protobuf:"fixed64,9,opt,name=F_Double,json=FDouble,def=271828" json:"F_Double,omitempty"`
+	F_String  *string         `protobuf:"bytes,10,opt,name=F_String,json=FString,def=hello, \"world!\"\n" json:"F_String,omitempty"`
+	F_Bytes   []byte          `protobuf:"bytes,11,opt,name=F_Bytes,json=FBytes,def=Bignose" json:"F_Bytes,omitempty"`
+	F_Sint32  *int32          `protobuf:"zigzag32,12,opt,name=F_Sint32,json=FSint32,def=-32" json:"F_Sint32,omitempty"`
+	F_Sint64  *int64          `protobuf:"zigzag64,13,opt,name=F_Sint64,json=FSint64,def=-64" json:"F_Sint64,omitempty"`
+	F_Enum    *Defaults_Color `protobuf:"varint,14,opt,name=F_Enum,json=FEnum,enum=test_proto.Defaults_Color,def=1" json:"F_Enum,omitempty"`
+	// More fields with crazy defaults.
+	F_Pinf *float32 `protobuf:"fixed32,15,opt,name=F_Pinf,json=FPinf,def=inf" json:"F_Pinf,omitempty"`
+	F_Ninf *float32 `protobuf:"fixed32,16,opt,name=F_Ninf,json=FNinf,def=-inf" json:"F_Ninf,omitempty"`
+	F_Nan  *float32 `protobuf:"fixed32,17,opt,name=F_Nan,json=FNan,def=nan" json:"F_Nan,omitempty"`
+	// Sub-message.
+	Sub *SubDefaults `protobuf:"bytes,18,opt,name=sub" json:"sub,omitempty"`
+	// Redundant but explicit defaults.
+	StrZero              *string  `protobuf:"bytes,19,opt,name=str_zero,json=strZero,def=" json:"str_zero,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Defaults) Reset()         { *m = Defaults{} }
+func (m *Defaults) String() string { return proto.CompactTextString(m) }
+func (*Defaults) ProtoMessage()    {}
+func (*Defaults) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{21}
+}
+
+func (m *Defaults) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Defaults.Unmarshal(m, b)
+}
+func (m *Defaults) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Defaults.Marshal(b, m, deterministic)
+}
+func (m *Defaults) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Defaults.Merge(m, src)
+}
+func (m *Defaults) XXX_Size() int {
+	return xxx_messageInfo_Defaults.Size(m)
+}
+func (m *Defaults) XXX_DiscardUnknown() {
+	xxx_messageInfo_Defaults.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Defaults proto.InternalMessageInfo
+
+const Default_Defaults_F_Bool bool = true
+const Default_Defaults_F_Int32 int32 = 32
+const Default_Defaults_F_Int64 int64 = 64
+const Default_Defaults_F_Fixed32 uint32 = 320
+const Default_Defaults_F_Fixed64 uint64 = 640
+const Default_Defaults_F_Uint32 uint32 = 3200
+const Default_Defaults_F_Uint64 uint64 = 6400
+const Default_Defaults_F_Float float32 = 314159
+const Default_Defaults_F_Double float64 = 271828
+const Default_Defaults_F_String string = "hello, \"world!\"\n"
+
+var Default_Defaults_F_Bytes []byte = []byte("Bignose")
+
+const Default_Defaults_F_Sint32 int32 = -32
+const Default_Defaults_F_Sint64 int64 = -64
+const Default_Defaults_F_Enum Defaults_Color = Defaults_GREEN
+
+var Default_Defaults_F_Pinf float32 = float32(math.Inf(1))
+var Default_Defaults_F_Ninf float32 = float32(math.Inf(-1))
+var Default_Defaults_F_Nan float32 = float32(math.NaN())
+
+func (m *Defaults) GetF_Bool() bool {
+	if m != nil && m.F_Bool != nil {
+		return *m.F_Bool
+	}
+	return Default_Defaults_F_Bool
+}
+
+func (m *Defaults) GetF_Int32() int32 {
+	if m != nil && m.F_Int32 != nil {
+		return *m.F_Int32
+	}
+	return Default_Defaults_F_Int32
+}
+
+func (m *Defaults) GetF_Int64() int64 {
+	if m != nil && m.F_Int64 != nil {
+		return *m.F_Int64
+	}
+	return Default_Defaults_F_Int64
+}
+
+func (m *Defaults) GetF_Fixed32() uint32 {
+	if m != nil && m.F_Fixed32 != nil {
+		return *m.F_Fixed32
+	}
+	return Default_Defaults_F_Fixed32
+}
+
+func (m *Defaults) GetF_Fixed64() uint64 {
+	if m != nil && m.F_Fixed64 != nil {
+		return *m.F_Fixed64
+	}
+	return Default_Defaults_F_Fixed64
+}
+
+func (m *Defaults) GetF_Uint32() uint32 {
+	if m != nil && m.F_Uint32 != nil {
+		return *m.F_Uint32
+	}
+	return Default_Defaults_F_Uint32
+}
+
+func (m *Defaults) GetF_Uint64() uint64 {
+	if m != nil && m.F_Uint64 != nil {
+		return *m.F_Uint64
+	}
+	return Default_Defaults_F_Uint64
+}
+
+func (m *Defaults) GetF_Float() float32 {
+	if m != nil && m.F_Float != nil {
+		return *m.F_Float
+	}
+	return Default_Defaults_F_Float
+}
+
+func (m *Defaults) GetF_Double() float64 {
+	if m != nil && m.F_Double != nil {
+		return *m.F_Double
+	}
+	return Default_Defaults_F_Double
+}
+
+func (m *Defaults) GetF_String() string {
+	if m != nil && m.F_String != nil {
+		return *m.F_String
+	}
+	return Default_Defaults_F_String
+}
+
+func (m *Defaults) GetF_Bytes() []byte {
+	if m != nil && m.F_Bytes != nil {
+		return m.F_Bytes
+	}
+	return append([]byte(nil), Default_Defaults_F_Bytes...)
+}
+
+func (m *Defaults) GetF_Sint32() int32 {
+	if m != nil && m.F_Sint32 != nil {
+		return *m.F_Sint32
+	}
+	return Default_Defaults_F_Sint32
+}
+
+func (m *Defaults) GetF_Sint64() int64 {
+	if m != nil && m.F_Sint64 != nil {
+		return *m.F_Sint64
+	}
+	return Default_Defaults_F_Sint64
+}
+
+func (m *Defaults) GetF_Enum() Defaults_Color {
+	if m != nil && m.F_Enum != nil {
+		return *m.F_Enum
+	}
+	return Default_Defaults_F_Enum
+}
+
+func (m *Defaults) GetF_Pinf() float32 {
+	if m != nil && m.F_Pinf != nil {
+		return *m.F_Pinf
+	}
+	return Default_Defaults_F_Pinf
+}
+
+func (m *Defaults) GetF_Ninf() float32 {
+	if m != nil && m.F_Ninf != nil {
+		return *m.F_Ninf
+	}
+	return Default_Defaults_F_Ninf
+}
+
+func (m *Defaults) GetF_Nan() float32 {
+	if m != nil && m.F_Nan != nil {
+		return *m.F_Nan
+	}
+	return Default_Defaults_F_Nan
+}
+
+func (m *Defaults) GetSub() *SubDefaults {
+	if m != nil {
+		return m.Sub
+	}
+	return nil
+}
+
+func (m *Defaults) GetStrZero() string {
+	if m != nil && m.StrZero != nil {
+		return *m.StrZero
+	}
+	return ""
+}
+
+type SubDefaults struct {
+	N                    *int64   `protobuf:"varint,1,opt,name=n,def=7" json:"n,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *SubDefaults) Reset()         { *m = SubDefaults{} }
+func (m *SubDefaults) String() string { return proto.CompactTextString(m) }
+func (*SubDefaults) ProtoMessage()    {}
+func (*SubDefaults) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{22}
+}
+
+func (m *SubDefaults) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SubDefaults.Unmarshal(m, b)
+}
+func (m *SubDefaults) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SubDefaults.Marshal(b, m, deterministic)
+}
+func (m *SubDefaults) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SubDefaults.Merge(m, src)
+}
+func (m *SubDefaults) XXX_Size() int {
+	return xxx_messageInfo_SubDefaults.Size(m)
+}
+func (m *SubDefaults) XXX_DiscardUnknown() {
+	xxx_messageInfo_SubDefaults.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SubDefaults proto.InternalMessageInfo
+
+const Default_SubDefaults_N int64 = 7
+
+func (m *SubDefaults) GetN() int64 {
+	if m != nil && m.N != nil {
+		return *m.N
+	}
+	return Default_SubDefaults_N
+}
+
+type RepeatedEnum struct {
+	Color                []RepeatedEnum_Color `protobuf:"varint,1,rep,name=color,enum=test_proto.RepeatedEnum_Color" json:"color,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *RepeatedEnum) Reset()         { *m = RepeatedEnum{} }
+func (m *RepeatedEnum) String() string { return proto.CompactTextString(m) }
+func (*RepeatedEnum) ProtoMessage()    {}
+func (*RepeatedEnum) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{23}
+}
+
+func (m *RepeatedEnum) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_RepeatedEnum.Unmarshal(m, b)
+}
+func (m *RepeatedEnum) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_RepeatedEnum.Marshal(b, m, deterministic)
+}
+func (m *RepeatedEnum) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_RepeatedEnum.Merge(m, src)
+}
+func (m *RepeatedEnum) XXX_Size() int {
+	return xxx_messageInfo_RepeatedEnum.Size(m)
+}
+func (m *RepeatedEnum) XXX_DiscardUnknown() {
+	xxx_messageInfo_RepeatedEnum.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RepeatedEnum proto.InternalMessageInfo
+
+func (m *RepeatedEnum) GetColor() []RepeatedEnum_Color {
+	if m != nil {
+		return m.Color
+	}
+	return nil
+}
+
+type MoreRepeated struct {
+	Bools                []bool   `protobuf:"varint,1,rep,name=bools" json:"bools,omitempty"`
+	BoolsPacked          []bool   `protobuf:"varint,2,rep,packed,name=bools_packed,json=boolsPacked" json:"bools_packed,omitempty"`
+	Ints                 []int32  `protobuf:"varint,3,rep,name=ints" json:"ints,omitempty"`
+	IntsPacked           []int32  `protobuf:"varint,4,rep,packed,name=ints_packed,json=intsPacked" json:"ints_packed,omitempty"`
+	Int64SPacked         []int64  `protobuf:"varint,7,rep,packed,name=int64s_packed,json=int64sPacked" json:"int64s_packed,omitempty"`
+	Strings              []string `protobuf:"bytes,5,rep,name=strings" json:"strings,omitempty"`
+	Fixeds               []uint32 `protobuf:"fixed32,6,rep,name=fixeds" json:"fixeds,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *MoreRepeated) Reset()         { *m = MoreRepeated{} }
+func (m *MoreRepeated) String() string { return proto.CompactTextString(m) }
+func (*MoreRepeated) ProtoMessage()    {}
+func (*MoreRepeated) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{24}
+}
+
+func (m *MoreRepeated) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MoreRepeated.Unmarshal(m, b)
+}
+func (m *MoreRepeated) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MoreRepeated.Marshal(b, m, deterministic)
+}
+func (m *MoreRepeated) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MoreRepeated.Merge(m, src)
+}
+func (m *MoreRepeated) XXX_Size() int {
+	return xxx_messageInfo_MoreRepeated.Size(m)
+}
+func (m *MoreRepeated) XXX_DiscardUnknown() {
+	xxx_messageInfo_MoreRepeated.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MoreRepeated proto.InternalMessageInfo
+
+func (m *MoreRepeated) GetBools() []bool {
+	if m != nil {
+		return m.Bools
+	}
+	return nil
+}
+
+func (m *MoreRepeated) GetBoolsPacked() []bool {
+	if m != nil {
+		return m.BoolsPacked
+	}
+	return nil
+}
+
+func (m *MoreRepeated) GetInts() []int32 {
+	if m != nil {
+		return m.Ints
+	}
+	return nil
+}
+
+func (m *MoreRepeated) GetIntsPacked() []int32 {
+	if m != nil {
+		return m.IntsPacked
+	}
+	return nil
+}
+
+func (m *MoreRepeated) GetInt64SPacked() []int64 {
+	if m != nil {
+		return m.Int64SPacked
+	}
+	return nil
+}
+
+func (m *MoreRepeated) GetStrings() []string {
+	if m != nil {
+		return m.Strings
+	}
+	return nil
+}
+
+func (m *MoreRepeated) GetFixeds() []uint32 {
+	if m != nil {
+		return m.Fixeds
+	}
+	return nil
+}
+
+type GroupOld struct {
+	G                    *GroupOld_G `protobuf:"group,101,opt,name=G,json=g" json:"g,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
+	XXX_unrecognized     []byte      `json:"-"`
+	XXX_sizecache        int32       `json:"-"`
+}
+
+func (m *GroupOld) Reset()         { *m = GroupOld{} }
+func (m *GroupOld) String() string { return proto.CompactTextString(m) }
+func (*GroupOld) ProtoMessage()    {}
+func (*GroupOld) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{25}
+}
+
+func (m *GroupOld) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GroupOld.Unmarshal(m, b)
+}
+func (m *GroupOld) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GroupOld.Marshal(b, m, deterministic)
+}
+func (m *GroupOld) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GroupOld.Merge(m, src)
+}
+func (m *GroupOld) XXX_Size() int {
+	return xxx_messageInfo_GroupOld.Size(m)
+}
+func (m *GroupOld) XXX_DiscardUnknown() {
+	xxx_messageInfo_GroupOld.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GroupOld proto.InternalMessageInfo
+
+func (m *GroupOld) GetG() *GroupOld_G {
+	if m != nil {
+		return m.G
+	}
+	return nil
+}
+
+type GroupOld_G struct {
+	X                    *int32   `protobuf:"varint,2,opt,name=x" json:"x,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GroupOld_G) Reset()         { *m = GroupOld_G{} }
+func (m *GroupOld_G) String() string { return proto.CompactTextString(m) }
+func (*GroupOld_G) ProtoMessage()    {}
+func (*GroupOld_G) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{25, 0}
+}
+
+func (m *GroupOld_G) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GroupOld_G.Unmarshal(m, b)
+}
+func (m *GroupOld_G) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GroupOld_G.Marshal(b, m, deterministic)
+}
+func (m *GroupOld_G) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GroupOld_G.Merge(m, src)
+}
+func (m *GroupOld_G) XXX_Size() int {
+	return xxx_messageInfo_GroupOld_G.Size(m)
+}
+func (m *GroupOld_G) XXX_DiscardUnknown() {
+	xxx_messageInfo_GroupOld_G.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GroupOld_G proto.InternalMessageInfo
+
+func (m *GroupOld_G) GetX() int32 {
+	if m != nil && m.X != nil {
+		return *m.X
+	}
+	return 0
+}
+
+type GroupNew struct {
+	G                    *GroupNew_G `protobuf:"group,101,opt,name=G,json=g" json:"g,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
+	XXX_unrecognized     []byte      `json:"-"`
+	XXX_sizecache        int32       `json:"-"`
+}
+
+func (m *GroupNew) Reset()         { *m = GroupNew{} }
+func (m *GroupNew) String() string { return proto.CompactTextString(m) }
+func (*GroupNew) ProtoMessage()    {}
+func (*GroupNew) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{26}
+}
+
+func (m *GroupNew) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GroupNew.Unmarshal(m, b)
+}
+func (m *GroupNew) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GroupNew.Marshal(b, m, deterministic)
+}
+func (m *GroupNew) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GroupNew.Merge(m, src)
+}
+func (m *GroupNew) XXX_Size() int {
+	return xxx_messageInfo_GroupNew.Size(m)
+}
+func (m *GroupNew) XXX_DiscardUnknown() {
+	xxx_messageInfo_GroupNew.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GroupNew proto.InternalMessageInfo
+
+func (m *GroupNew) GetG() *GroupNew_G {
+	if m != nil {
+		return m.G
+	}
+	return nil
+}
+
+type GroupNew_G struct {
+	X                    *int32   `protobuf:"varint,2,opt,name=x" json:"x,omitempty"`
+	Y                    *int32   `protobuf:"varint,3,opt,name=y" json:"y,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GroupNew_G) Reset()         { *m = GroupNew_G{} }
+func (m *GroupNew_G) String() string { return proto.CompactTextString(m) }
+func (*GroupNew_G) ProtoMessage()    {}
+func (*GroupNew_G) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{26, 0}
+}
+
+func (m *GroupNew_G) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GroupNew_G.Unmarshal(m, b)
+}
+func (m *GroupNew_G) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GroupNew_G.Marshal(b, m, deterministic)
+}
+func (m *GroupNew_G) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GroupNew_G.Merge(m, src)
+}
+func (m *GroupNew_G) XXX_Size() int {
+	return xxx_messageInfo_GroupNew_G.Size(m)
+}
+func (m *GroupNew_G) XXX_DiscardUnknown() {
+	xxx_messageInfo_GroupNew_G.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GroupNew_G proto.InternalMessageInfo
+
+func (m *GroupNew_G) GetX() int32 {
+	if m != nil && m.X != nil {
+		return *m.X
+	}
+	return 0
+}
+
+func (m *GroupNew_G) GetY() int32 {
+	if m != nil && m.Y != nil {
+		return *m.Y
+	}
+	return 0
+}
+
+type FloatingPoint struct {
+	F                    *float64 `protobuf:"fixed64,1,req,name=f" json:"f,omitempty"`
+	Exact                *bool    `protobuf:"varint,2,opt,name=exact" json:"exact,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *FloatingPoint) Reset()         { *m = FloatingPoint{} }
+func (m *FloatingPoint) String() string { return proto.CompactTextString(m) }
+func (*FloatingPoint) ProtoMessage()    {}
+func (*FloatingPoint) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{27}
+}
+
+func (m *FloatingPoint) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FloatingPoint.Unmarshal(m, b)
+}
+func (m *FloatingPoint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FloatingPoint.Marshal(b, m, deterministic)
+}
+func (m *FloatingPoint) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FloatingPoint.Merge(m, src)
+}
+func (m *FloatingPoint) XXX_Size() int {
+	return xxx_messageInfo_FloatingPoint.Size(m)
+}
+func (m *FloatingPoint) XXX_DiscardUnknown() {
+	xxx_messageInfo_FloatingPoint.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FloatingPoint proto.InternalMessageInfo
+
+func (m *FloatingPoint) GetF() float64 {
+	if m != nil && m.F != nil {
+		return *m.F
+	}
+	return 0
+}
+
+func (m *FloatingPoint) GetExact() bool {
+	if m != nil && m.Exact != nil {
+		return *m.Exact
+	}
+	return false
+}
+
+type MessageWithMap struct {
+	NameMapping          map[int32]string         `protobuf:"bytes,1,rep,name=name_mapping,json=nameMapping" json:"name_mapping,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	MsgMapping           map[int64]*FloatingPoint `protobuf:"bytes,2,rep,name=msg_mapping,json=msgMapping" json:"msg_mapping,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	ByteMapping          map[bool][]byte          `protobuf:"bytes,3,rep,name=byte_mapping,json=byteMapping" json:"byte_mapping,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	StrToStr             map[string]string        `protobuf:"bytes,4,rep,name=str_to_str,json=strToStr" json:"str_to_str,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
+	XXX_unrecognized     []byte                   `json:"-"`
+	XXX_sizecache        int32                    `json:"-"`
+}
+
+func (m *MessageWithMap) Reset()         { *m = MessageWithMap{} }
+func (m *MessageWithMap) String() string { return proto.CompactTextString(m) }
+func (*MessageWithMap) ProtoMessage()    {}
+func (*MessageWithMap) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{28}
+}
+
+func (m *MessageWithMap) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MessageWithMap.Unmarshal(m, b)
+}
+func (m *MessageWithMap) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MessageWithMap.Marshal(b, m, deterministic)
+}
+func (m *MessageWithMap) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MessageWithMap.Merge(m, src)
+}
+func (m *MessageWithMap) XXX_Size() int {
+	return xxx_messageInfo_MessageWithMap.Size(m)
+}
+func (m *MessageWithMap) XXX_DiscardUnknown() {
+	xxx_messageInfo_MessageWithMap.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MessageWithMap proto.InternalMessageInfo
+
+func (m *MessageWithMap) GetNameMapping() map[int32]string {
+	if m != nil {
+		return m.NameMapping
+	}
+	return nil
+}
+
+func (m *MessageWithMap) GetMsgMapping() map[int64]*FloatingPoint {
+	if m != nil {
+		return m.MsgMapping
+	}
+	return nil
+}
+
+func (m *MessageWithMap) GetByteMapping() map[bool][]byte {
+	if m != nil {
+		return m.ByteMapping
+	}
+	return nil
+}
+
+func (m *MessageWithMap) GetStrToStr() map[string]string {
+	if m != nil {
+		return m.StrToStr
+	}
+	return nil
+}
+
+type Oneof struct {
+	// Types that are valid to be assigned to Union:
+	//	*Oneof_F_Bool
+	//	*Oneof_F_Int32
+	//	*Oneof_F_Int64
+	//	*Oneof_F_Fixed32
+	//	*Oneof_F_Fixed64
+	//	*Oneof_F_Uint32
+	//	*Oneof_F_Uint64
+	//	*Oneof_F_Float
+	//	*Oneof_F_Double
+	//	*Oneof_F_String
+	//	*Oneof_F_Bytes
+	//	*Oneof_F_Sint32
+	//	*Oneof_F_Sint64
+	//	*Oneof_F_Enum
+	//	*Oneof_F_Message
+	//	*Oneof_FGroup
+	//	*Oneof_F_Largest_Tag
+	Union isOneof_Union `protobuf_oneof:"union"`
+	// Types that are valid to be assigned to Tormato:
+	//	*Oneof_Value
+	Tormato              isOneof_Tormato `protobuf_oneof:"tormato"`
+	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
+	XXX_unrecognized     []byte          `json:"-"`
+	XXX_sizecache        int32           `json:"-"`
+}
+
+func (m *Oneof) Reset()         { *m = Oneof{} }
+func (m *Oneof) String() string { return proto.CompactTextString(m) }
+func (*Oneof) ProtoMessage()    {}
+func (*Oneof) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{29}
+}
+
+func (m *Oneof) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Oneof.Unmarshal(m, b)
+}
+func (m *Oneof) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Oneof.Marshal(b, m, deterministic)
+}
+func (m *Oneof) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Oneof.Merge(m, src)
+}
+func (m *Oneof) XXX_Size() int {
+	return xxx_messageInfo_Oneof.Size(m)
+}
+func (m *Oneof) XXX_DiscardUnknown() {
+	xxx_messageInfo_Oneof.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Oneof proto.InternalMessageInfo
+
+type isOneof_Union interface {
+	isOneof_Union()
+}
+
+type Oneof_F_Bool struct {
+	F_Bool bool `protobuf:"varint,1,opt,name=F_Bool,json=FBool,oneof"`
+}
+
+type Oneof_F_Int32 struct {
+	F_Int32 int32 `protobuf:"varint,2,opt,name=F_Int32,json=FInt32,oneof"`
+}
+
+type Oneof_F_Int64 struct {
+	F_Int64 int64 `protobuf:"varint,3,opt,name=F_Int64,json=FInt64,oneof"`
+}
+
+type Oneof_F_Fixed32 struct {
+	F_Fixed32 uint32 `protobuf:"fixed32,4,opt,name=F_Fixed32,json=FFixed32,oneof"`
+}
+
+type Oneof_F_Fixed64 struct {
+	F_Fixed64 uint64 `protobuf:"fixed64,5,opt,name=F_Fixed64,json=FFixed64,oneof"`
+}
+
+type Oneof_F_Uint32 struct {
+	F_Uint32 uint32 `protobuf:"varint,6,opt,name=F_Uint32,json=FUint32,oneof"`
+}
+
+type Oneof_F_Uint64 struct {
+	F_Uint64 uint64 `protobuf:"varint,7,opt,name=F_Uint64,json=FUint64,oneof"`
+}
+
+type Oneof_F_Float struct {
+	F_Float float32 `protobuf:"fixed32,8,opt,name=F_Float,json=FFloat,oneof"`
+}
+
+type Oneof_F_Double struct {
+	F_Double float64 `protobuf:"fixed64,9,opt,name=F_Double,json=FDouble,oneof"`
+}
+
+type Oneof_F_String struct {
+	F_String string `protobuf:"bytes,10,opt,name=F_String,json=FString,oneof"`
+}
+
+type Oneof_F_Bytes struct {
+	F_Bytes []byte `protobuf:"bytes,11,opt,name=F_Bytes,json=FBytes,oneof"`
+}
+
+type Oneof_F_Sint32 struct {
+	F_Sint32 int32 `protobuf:"zigzag32,12,opt,name=F_Sint32,json=FSint32,oneof"`
+}
+
+type Oneof_F_Sint64 struct {
+	F_Sint64 int64 `protobuf:"zigzag64,13,opt,name=F_Sint64,json=FSint64,oneof"`
+}
+
+type Oneof_F_Enum struct {
+	F_Enum MyMessage_Color `protobuf:"varint,14,opt,name=F_Enum,json=FEnum,enum=test_proto.MyMessage_Color,oneof"`
+}
+
+type Oneof_F_Message struct {
+	F_Message *GoTestField `protobuf:"bytes,15,opt,name=F_Message,json=FMessage,oneof"`
+}
+
+type Oneof_FGroup struct {
+	FGroup *Oneof_F_Group `protobuf:"group,16,opt,name=F_Group,json=fGroup,oneof"`
+}
+
+type Oneof_F_Largest_Tag struct {
+	F_Largest_Tag int32 `protobuf:"varint,536870911,opt,name=F_Largest_Tag,json=FLargestTag,oneof"`
+}
+
+func (*Oneof_F_Bool) isOneof_Union() {}
+
+func (*Oneof_F_Int32) isOneof_Union() {}
+
+func (*Oneof_F_Int64) isOneof_Union() {}
+
+func (*Oneof_F_Fixed32) isOneof_Union() {}
+
+func (*Oneof_F_Fixed64) isOneof_Union() {}
+
+func (*Oneof_F_Uint32) isOneof_Union() {}
+
+func (*Oneof_F_Uint64) isOneof_Union() {}
+
+func (*Oneof_F_Float) isOneof_Union() {}
+
+func (*Oneof_F_Double) isOneof_Union() {}
+
+func (*Oneof_F_String) isOneof_Union() {}
+
+func (*Oneof_F_Bytes) isOneof_Union() {}
+
+func (*Oneof_F_Sint32) isOneof_Union() {}
+
+func (*Oneof_F_Sint64) isOneof_Union() {}
+
+func (*Oneof_F_Enum) isOneof_Union() {}
+
+func (*Oneof_F_Message) isOneof_Union() {}
+
+func (*Oneof_FGroup) isOneof_Union() {}
+
+func (*Oneof_F_Largest_Tag) isOneof_Union() {}
+
+func (m *Oneof) GetUnion() isOneof_Union {
+	if m != nil {
+		return m.Union
+	}
+	return nil
+}
+
+func (m *Oneof) GetF_Bool() bool {
+	if x, ok := m.GetUnion().(*Oneof_F_Bool); ok {
+		return x.F_Bool
+	}
+	return false
+}
+
+func (m *Oneof) GetF_Int32() int32 {
+	if x, ok := m.GetUnion().(*Oneof_F_Int32); ok {
+		return x.F_Int32
+	}
+	return 0
+}
+
+func (m *Oneof) GetF_Int64() int64 {
+	if x, ok := m.GetUnion().(*Oneof_F_Int64); ok {
+		return x.F_Int64
+	}
+	return 0
+}
+
+func (m *Oneof) GetF_Fixed32() uint32 {
+	if x, ok := m.GetUnion().(*Oneof_F_Fixed32); ok {
+		return x.F_Fixed32
+	}
+	return 0
+}
+
+func (m *Oneof) GetF_Fixed64() uint64 {
+	if x, ok := m.GetUnion().(*Oneof_F_Fixed64); ok {
+		return x.F_Fixed64
+	}
+	return 0
+}
+
+func (m *Oneof) GetF_Uint32() uint32 {
+	if x, ok := m.GetUnion().(*Oneof_F_Uint32); ok {
+		return x.F_Uint32
+	}
+	return 0
+}
+
+func (m *Oneof) GetF_Uint64() uint64 {
+	if x, ok := m.GetUnion().(*Oneof_F_Uint64); ok {
+		return x.F_Uint64
+	}
+	return 0
+}
+
+func (m *Oneof) GetF_Float() float32 {
+	if x, ok := m.GetUnion().(*Oneof_F_Float); ok {
+		return x.F_Float
+	}
+	return 0
+}
+
+func (m *Oneof) GetF_Double() float64 {
+	if x, ok := m.GetUnion().(*Oneof_F_Double); ok {
+		return x.F_Double
+	}
+	return 0
+}
+
+func (m *Oneof) GetF_String() string {
+	if x, ok := m.GetUnion().(*Oneof_F_String); ok {
+		return x.F_String
+	}
+	return ""
+}
+
+func (m *Oneof) GetF_Bytes() []byte {
+	if x, ok := m.GetUnion().(*Oneof_F_Bytes); ok {
+		return x.F_Bytes
+	}
+	return nil
+}
+
+func (m *Oneof) GetF_Sint32() int32 {
+	if x, ok := m.GetUnion().(*Oneof_F_Sint32); ok {
+		return x.F_Sint32
+	}
+	return 0
+}
+
+func (m *Oneof) GetF_Sint64() int64 {
+	if x, ok := m.GetUnion().(*Oneof_F_Sint64); ok {
+		return x.F_Sint64
+	}
+	return 0
+}
+
+func (m *Oneof) GetF_Enum() MyMessage_Color {
+	if x, ok := m.GetUnion().(*Oneof_F_Enum); ok {
+		return x.F_Enum
+	}
+	return MyMessage_RED
+}
+
+func (m *Oneof) GetF_Message() *GoTestField {
+	if x, ok := m.GetUnion().(*Oneof_F_Message); ok {
+		return x.F_Message
+	}
+	return nil
+}
+
+func (m *Oneof) GetFGroup() *Oneof_F_Group {
+	if x, ok := m.GetUnion().(*Oneof_FGroup); ok {
+		return x.FGroup
+	}
+	return nil
+}
+
+func (m *Oneof) GetF_Largest_Tag() int32 {
+	if x, ok := m.GetUnion().(*Oneof_F_Largest_Tag); ok {
+		return x.F_Largest_Tag
+	}
+	return 0
+}
+
+type isOneof_Tormato interface {
+	isOneof_Tormato()
+}
+
+type Oneof_Value struct {
+	Value int32 `protobuf:"varint,100,opt,name=value,oneof"`
+}
+
+func (*Oneof_Value) isOneof_Tormato() {}
+
+func (m *Oneof) GetTormato() isOneof_Tormato {
+	if m != nil {
+		return m.Tormato
+	}
+	return nil
+}
+
+func (m *Oneof) GetValue() int32 {
+	if x, ok := m.GetTormato().(*Oneof_Value); ok {
+		return x.Value
+	}
+	return 0
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Oneof) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*Oneof_F_Bool)(nil),
+		(*Oneof_F_Int32)(nil),
+		(*Oneof_F_Int64)(nil),
+		(*Oneof_F_Fixed32)(nil),
+		(*Oneof_F_Fixed64)(nil),
+		(*Oneof_F_Uint32)(nil),
+		(*Oneof_F_Uint64)(nil),
+		(*Oneof_F_Float)(nil),
+		(*Oneof_F_Double)(nil),
+		(*Oneof_F_String)(nil),
+		(*Oneof_F_Bytes)(nil),
+		(*Oneof_F_Sint32)(nil),
+		(*Oneof_F_Sint64)(nil),
+		(*Oneof_F_Enum)(nil),
+		(*Oneof_F_Message)(nil),
+		(*Oneof_FGroup)(nil),
+		(*Oneof_F_Largest_Tag)(nil),
+		(*Oneof_Value)(nil),
+	}
+}
+
+type Oneof_F_Group struct {
+	X                    *int32   `protobuf:"varint,17,opt,name=x" json:"x,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Oneof_F_Group) Reset()         { *m = Oneof_F_Group{} }
+func (m *Oneof_F_Group) String() string { return proto.CompactTextString(m) }
+func (*Oneof_F_Group) ProtoMessage()    {}
+func (*Oneof_F_Group) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{29, 0}
+}
+
+func (m *Oneof_F_Group) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Oneof_F_Group.Unmarshal(m, b)
+}
+func (m *Oneof_F_Group) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Oneof_F_Group.Marshal(b, m, deterministic)
+}
+func (m *Oneof_F_Group) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Oneof_F_Group.Merge(m, src)
+}
+func (m *Oneof_F_Group) XXX_Size() int {
+	return xxx_messageInfo_Oneof_F_Group.Size(m)
+}
+func (m *Oneof_F_Group) XXX_DiscardUnknown() {
+	xxx_messageInfo_Oneof_F_Group.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Oneof_F_Group proto.InternalMessageInfo
+
+func (m *Oneof_F_Group) GetX() int32 {
+	if m != nil && m.X != nil {
+		return *m.X
+	}
+	return 0
+}
+
+type Communique struct {
+	MakeMeCry *bool `protobuf:"varint,1,opt,name=make_me_cry,json=makeMeCry" json:"make_me_cry,omitempty"`
+	// This is a oneof, called "union".
+	//
+	// Types that are valid to be assigned to Union:
+	//	*Communique_Number
+	//	*Communique_Name
+	//	*Communique_Data
+	//	*Communique_TempC
+	//	*Communique_Col
+	//	*Communique_Msg
+	Union                isCommunique_Union `protobuf_oneof:"union"`
+	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
+	XXX_unrecognized     []byte             `json:"-"`
+	XXX_sizecache        int32              `json:"-"`
+}
+
+func (m *Communique) Reset()         { *m = Communique{} }
+func (m *Communique) String() string { return proto.CompactTextString(m) }
+func (*Communique) ProtoMessage()    {}
+func (*Communique) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{30}
+}
+
+func (m *Communique) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Communique.Unmarshal(m, b)
+}
+func (m *Communique) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Communique.Marshal(b, m, deterministic)
+}
+func (m *Communique) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Communique.Merge(m, src)
+}
+func (m *Communique) XXX_Size() int {
+	return xxx_messageInfo_Communique.Size(m)
+}
+func (m *Communique) XXX_DiscardUnknown() {
+	xxx_messageInfo_Communique.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Communique proto.InternalMessageInfo
+
+func (m *Communique) GetMakeMeCry() bool {
+	if m != nil && m.MakeMeCry != nil {
+		return *m.MakeMeCry
+	}
+	return false
+}
+
+type isCommunique_Union interface {
+	isCommunique_Union()
+}
+
+type Communique_Number struct {
+	Number int32 `protobuf:"varint,5,opt,name=number,oneof"`
+}
+
+type Communique_Name struct {
+	Name string `protobuf:"bytes,6,opt,name=name,oneof"`
+}
+
+type Communique_Data struct {
+	Data []byte `protobuf:"bytes,7,opt,name=data,oneof"`
+}
+
+type Communique_TempC struct {
+	TempC float64 `protobuf:"fixed64,8,opt,name=temp_c,json=tempC,oneof"`
+}
+
+type Communique_Col struct {
+	Col MyMessage_Color `protobuf:"varint,9,opt,name=col,enum=test_proto.MyMessage_Color,oneof"`
+}
+
+type Communique_Msg struct {
+	Msg *Strings `protobuf:"bytes,10,opt,name=msg,oneof"`
+}
+
+func (*Communique_Number) isCommunique_Union() {}
+
+func (*Communique_Name) isCommunique_Union() {}
+
+func (*Communique_Data) isCommunique_Union() {}
+
+func (*Communique_TempC) isCommunique_Union() {}
+
+func (*Communique_Col) isCommunique_Union() {}
+
+func (*Communique_Msg) isCommunique_Union() {}
+
+func (m *Communique) GetUnion() isCommunique_Union {
+	if m != nil {
+		return m.Union
+	}
+	return nil
+}
+
+func (m *Communique) GetNumber() int32 {
+	if x, ok := m.GetUnion().(*Communique_Number); ok {
+		return x.Number
+	}
+	return 0
+}
+
+func (m *Communique) GetName() string {
+	if x, ok := m.GetUnion().(*Communique_Name); ok {
+		return x.Name
+	}
+	return ""
+}
+
+func (m *Communique) GetData() []byte {
+	if x, ok := m.GetUnion().(*Communique_Data); ok {
+		return x.Data
+	}
+	return nil
+}
+
+func (m *Communique) GetTempC() float64 {
+	if x, ok := m.GetUnion().(*Communique_TempC); ok {
+		return x.TempC
+	}
+	return 0
+}
+
+func (m *Communique) GetCol() MyMessage_Color {
+	if x, ok := m.GetUnion().(*Communique_Col); ok {
+		return x.Col
+	}
+	return MyMessage_RED
+}
+
+func (m *Communique) GetMsg() *Strings {
+	if x, ok := m.GetUnion().(*Communique_Msg); ok {
+		return x.Msg
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Communique) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*Communique_Number)(nil),
+		(*Communique_Name)(nil),
+		(*Communique_Data)(nil),
+		(*Communique_TempC)(nil),
+		(*Communique_Col)(nil),
+		(*Communique_Msg)(nil),
+	}
+}
+
+type TestUTF8 struct {
+	Scalar *string  `protobuf:"bytes,1,opt,name=scalar" json:"scalar,omitempty"`
+	Vector []string `protobuf:"bytes,2,rep,name=vector" json:"vector,omitempty"`
+	// Types that are valid to be assigned to Oneof:
+	//	*TestUTF8_Field
+	Oneof                isTestUTF8_Oneof `protobuf_oneof:"oneof"`
+	MapKey               map[string]int64 `protobuf:"bytes,4,rep,name=map_key,json=mapKey" json:"map_key,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
+	MapValue             map[int64]string `protobuf:"bytes,5,rep,name=map_value,json=mapValue" json:"map_value,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
+	XXX_unrecognized     []byte           `json:"-"`
+	XXX_sizecache        int32            `json:"-"`
+}
+
+func (m *TestUTF8) Reset()         { *m = TestUTF8{} }
+func (m *TestUTF8) String() string { return proto.CompactTextString(m) }
+func (*TestUTF8) ProtoMessage()    {}
+func (*TestUTF8) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8ca34d01332f1402, []int{31}
+}
+
+func (m *TestUTF8) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TestUTF8.Unmarshal(m, b)
+}
+func (m *TestUTF8) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TestUTF8.Marshal(b, m, deterministic)
+}
+func (m *TestUTF8) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TestUTF8.Merge(m, src)
+}
+func (m *TestUTF8) XXX_Size() int {
+	return xxx_messageInfo_TestUTF8.Size(m)
+}
+func (m *TestUTF8) XXX_DiscardUnknown() {
+	xxx_messageInfo_TestUTF8.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TestUTF8 proto.InternalMessageInfo
+
+func (m *TestUTF8) GetScalar() string {
+	if m != nil && m.Scalar != nil {
+		return *m.Scalar
+	}
+	return ""
+}
+
+func (m *TestUTF8) GetVector() []string {
+	if m != nil {
+		return m.Vector
+	}
+	return nil
+}
+
+type isTestUTF8_Oneof interface {
+	isTestUTF8_Oneof()
+}
+
+type TestUTF8_Field struct {
+	Field string `protobuf:"bytes,3,opt,name=field,oneof"`
+}
+
+func (*TestUTF8_Field) isTestUTF8_Oneof() {}
+
+func (m *TestUTF8) GetOneof() isTestUTF8_Oneof {
+	if m != nil {
+		return m.Oneof
+	}
+	return nil
+}
+
+func (m *TestUTF8) GetField() string {
+	if x, ok := m.GetOneof().(*TestUTF8_Field); ok {
+		return x.Field
+	}
+	return ""
+}
+
+func (m *TestUTF8) GetMapKey() map[string]int64 {
+	if m != nil {
+		return m.MapKey
+	}
+	return nil
+}
+
+func (m *TestUTF8) GetMapValue() map[int64]string {
+	if m != nil {
+		return m.MapValue
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*TestUTF8) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*TestUTF8_Field)(nil),
+	}
+}
+
+var E_Greeting = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessage)(nil),
+	ExtensionType: ([]string)(nil),
+	Field:         106,
+	Name:          "test_proto.greeting",
+	Tag:           "bytes,106,rep,name=greeting",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_Complex = &proto.ExtensionDesc{
+	ExtendedType:  (*OtherMessage)(nil),
+	ExtensionType: (*ComplexExtension)(nil),
+	Field:         200,
+	Name:          "test_proto.complex",
+	Tag:           "bytes,200,opt,name=complex",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_RComplex = &proto.ExtensionDesc{
+	ExtendedType:  (*OtherMessage)(nil),
+	ExtensionType: ([]*ComplexExtension)(nil),
+	Field:         201,
+	Name:          "test_proto.r_complex",
+	Tag:           "bytes,201,rep,name=r_complex",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_NoDefaultDouble = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*float64)(nil),
+	Field:         101,
+	Name:          "test_proto.no_default_double",
+	Tag:           "fixed64,101,opt,name=no_default_double",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_NoDefaultFloat = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*float32)(nil),
+	Field:         102,
+	Name:          "test_proto.no_default_float",
+	Tag:           "fixed32,102,opt,name=no_default_float",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_NoDefaultInt32 = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         103,
+	Name:          "test_proto.no_default_int32",
+	Tag:           "varint,103,opt,name=no_default_int32",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_NoDefaultInt64 = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         104,
+	Name:          "test_proto.no_default_int64",
+	Tag:           "varint,104,opt,name=no_default_int64",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_NoDefaultUint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         105,
+	Name:          "test_proto.no_default_uint32",
+	Tag:           "varint,105,opt,name=no_default_uint32",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_NoDefaultUint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         106,
+	Name:          "test_proto.no_default_uint64",
+	Tag:           "varint,106,opt,name=no_default_uint64",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_NoDefaultSint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         107,
+	Name:          "test_proto.no_default_sint32",
+	Tag:           "zigzag32,107,opt,name=no_default_sint32",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_NoDefaultSint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         108,
+	Name:          "test_proto.no_default_sint64",
+	Tag:           "zigzag64,108,opt,name=no_default_sint64",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_NoDefaultFixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         109,
+	Name:          "test_proto.no_default_fixed32",
+	Tag:           "fixed32,109,opt,name=no_default_fixed32",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_NoDefaultFixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         110,
+	Name:          "test_proto.no_default_fixed64",
+	Tag:           "fixed64,110,opt,name=no_default_fixed64",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_NoDefaultSfixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         111,
+	Name:          "test_proto.no_default_sfixed32",
+	Tag:           "fixed32,111,opt,name=no_default_sfixed32",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_NoDefaultSfixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         112,
+	Name:          "test_proto.no_default_sfixed64",
+	Tag:           "fixed64,112,opt,name=no_default_sfixed64",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_NoDefaultBool = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*bool)(nil),
+	Field:         113,
+	Name:          "test_proto.no_default_bool",
+	Tag:           "varint,113,opt,name=no_default_bool",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_NoDefaultString = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*string)(nil),
+	Field:         114,
+	Name:          "test_proto.no_default_string",
+	Tag:           "bytes,114,opt,name=no_default_string",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_NoDefaultBytes = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: ([]byte)(nil),
+	Field:         115,
+	Name:          "test_proto.no_default_bytes",
+	Tag:           "bytes,115,opt,name=no_default_bytes",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_NoDefaultEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*DefaultsMessage_DefaultsEnum)(nil),
+	Field:         116,
+	Name:          "test_proto.no_default_enum",
+	Tag:           "varint,116,opt,name=no_default_enum,enum=test_proto.DefaultsMessage_DefaultsEnum",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_DefaultDouble = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*float64)(nil),
+	Field:         201,
+	Name:          "test_proto.default_double",
+	Tag:           "fixed64,201,opt,name=default_double,def=3.1415",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_DefaultFloat = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*float32)(nil),
+	Field:         202,
+	Name:          "test_proto.default_float",
+	Tag:           "fixed32,202,opt,name=default_float,def=3.14",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_DefaultInt32 = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         203,
+	Name:          "test_proto.default_int32",
+	Tag:           "varint,203,opt,name=default_int32,def=42",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_DefaultInt64 = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         204,
+	Name:          "test_proto.default_int64",
+	Tag:           "varint,204,opt,name=default_int64,def=43",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_DefaultUint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         205,
+	Name:          "test_proto.default_uint32",
+	Tag:           "varint,205,opt,name=default_uint32,def=44",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_DefaultUint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         206,
+	Name:          "test_proto.default_uint64",
+	Tag:           "varint,206,opt,name=default_uint64,def=45",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_DefaultSint32 = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         207,
+	Name:          "test_proto.default_sint32",
+	Tag:           "zigzag32,207,opt,name=default_sint32,def=46",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_DefaultSint64 = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         208,
+	Name:          "test_proto.default_sint64",
+	Tag:           "zigzag64,208,opt,name=default_sint64,def=47",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_DefaultFixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         209,
+	Name:          "test_proto.default_fixed32",
+	Tag:           "fixed32,209,opt,name=default_fixed32,def=48",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_DefaultFixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*uint64)(nil),
+	Field:         210,
+	Name:          "test_proto.default_fixed64",
+	Tag:           "fixed64,210,opt,name=default_fixed64,def=49",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_DefaultSfixed32 = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         211,
+	Name:          "test_proto.default_sfixed32",
+	Tag:           "fixed32,211,opt,name=default_sfixed32,def=50",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_DefaultSfixed64 = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         212,
+	Name:          "test_proto.default_sfixed64",
+	Tag:           "fixed64,212,opt,name=default_sfixed64,def=51",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_DefaultBool = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*bool)(nil),
+	Field:         213,
+	Name:          "test_proto.default_bool",
+	Tag:           "varint,213,opt,name=default_bool,def=1",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_DefaultString = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*string)(nil),
+	Field:         214,
+	Name:          "test_proto.default_string",
+	Tag:           "bytes,214,opt,name=default_string,def=Hello, string,def=foo",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_DefaultBytes = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: ([]byte)(nil),
+	Field:         215,
+	Name:          "test_proto.default_bytes",
+	Tag:           "bytes,215,opt,name=default_bytes,def=Hello, bytes",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_DefaultEnum = &proto.ExtensionDesc{
+	ExtendedType:  (*DefaultsMessage)(nil),
+	ExtensionType: (*DefaultsMessage_DefaultsEnum)(nil),
+	Field:         216,
+	Name:          "test_proto.default_enum",
+	Tag:           "varint,216,opt,name=default_enum,enum=test_proto.DefaultsMessage_DefaultsEnum,def=1",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X201 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         201,
+	Name:          "test_proto.x201",
+	Tag:           "bytes,201,opt,name=x201",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X202 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         202,
+	Name:          "test_proto.x202",
+	Tag:           "bytes,202,opt,name=x202",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X203 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         203,
+	Name:          "test_proto.x203",
+	Tag:           "bytes,203,opt,name=x203",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X204 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         204,
+	Name:          "test_proto.x204",
+	Tag:           "bytes,204,opt,name=x204",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X205 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         205,
+	Name:          "test_proto.x205",
+	Tag:           "bytes,205,opt,name=x205",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X206 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         206,
+	Name:          "test_proto.x206",
+	Tag:           "bytes,206,opt,name=x206",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X207 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         207,
+	Name:          "test_proto.x207",
+	Tag:           "bytes,207,opt,name=x207",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X208 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         208,
+	Name:          "test_proto.x208",
+	Tag:           "bytes,208,opt,name=x208",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X209 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         209,
+	Name:          "test_proto.x209",
+	Tag:           "bytes,209,opt,name=x209",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X210 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         210,
+	Name:          "test_proto.x210",
+	Tag:           "bytes,210,opt,name=x210",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X211 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         211,
+	Name:          "test_proto.x211",
+	Tag:           "bytes,211,opt,name=x211",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X212 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         212,
+	Name:          "test_proto.x212",
+	Tag:           "bytes,212,opt,name=x212",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X213 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         213,
+	Name:          "test_proto.x213",
+	Tag:           "bytes,213,opt,name=x213",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X214 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         214,
+	Name:          "test_proto.x214",
+	Tag:           "bytes,214,opt,name=x214",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X215 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         215,
+	Name:          "test_proto.x215",
+	Tag:           "bytes,215,opt,name=x215",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X216 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         216,
+	Name:          "test_proto.x216",
+	Tag:           "bytes,216,opt,name=x216",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X217 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         217,
+	Name:          "test_proto.x217",
+	Tag:           "bytes,217,opt,name=x217",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X218 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         218,
+	Name:          "test_proto.x218",
+	Tag:           "bytes,218,opt,name=x218",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X219 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         219,
+	Name:          "test_proto.x219",
+	Tag:           "bytes,219,opt,name=x219",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X220 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         220,
+	Name:          "test_proto.x220",
+	Tag:           "bytes,220,opt,name=x220",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X221 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         221,
+	Name:          "test_proto.x221",
+	Tag:           "bytes,221,opt,name=x221",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X222 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         222,
+	Name:          "test_proto.x222",
+	Tag:           "bytes,222,opt,name=x222",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X223 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         223,
+	Name:          "test_proto.x223",
+	Tag:           "bytes,223,opt,name=x223",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X224 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         224,
+	Name:          "test_proto.x224",
+	Tag:           "bytes,224,opt,name=x224",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X225 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         225,
+	Name:          "test_proto.x225",
+	Tag:           "bytes,225,opt,name=x225",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X226 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         226,
+	Name:          "test_proto.x226",
+	Tag:           "bytes,226,opt,name=x226",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X227 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         227,
+	Name:          "test_proto.x227",
+	Tag:           "bytes,227,opt,name=x227",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X228 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         228,
+	Name:          "test_proto.x228",
+	Tag:           "bytes,228,opt,name=x228",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X229 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         229,
+	Name:          "test_proto.x229",
+	Tag:           "bytes,229,opt,name=x229",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X230 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         230,
+	Name:          "test_proto.x230",
+	Tag:           "bytes,230,opt,name=x230",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X231 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         231,
+	Name:          "test_proto.x231",
+	Tag:           "bytes,231,opt,name=x231",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X232 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         232,
+	Name:          "test_proto.x232",
+	Tag:           "bytes,232,opt,name=x232",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X233 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         233,
+	Name:          "test_proto.x233",
+	Tag:           "bytes,233,opt,name=x233",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X234 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         234,
+	Name:          "test_proto.x234",
+	Tag:           "bytes,234,opt,name=x234",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X235 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         235,
+	Name:          "test_proto.x235",
+	Tag:           "bytes,235,opt,name=x235",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X236 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         236,
+	Name:          "test_proto.x236",
+	Tag:           "bytes,236,opt,name=x236",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X237 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         237,
+	Name:          "test_proto.x237",
+	Tag:           "bytes,237,opt,name=x237",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X238 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         238,
+	Name:          "test_proto.x238",
+	Tag:           "bytes,238,opt,name=x238",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X239 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         239,
+	Name:          "test_proto.x239",
+	Tag:           "bytes,239,opt,name=x239",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X240 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         240,
+	Name:          "test_proto.x240",
+	Tag:           "bytes,240,opt,name=x240",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X241 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         241,
+	Name:          "test_proto.x241",
+	Tag:           "bytes,241,opt,name=x241",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X242 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         242,
+	Name:          "test_proto.x242",
+	Tag:           "bytes,242,opt,name=x242",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X243 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         243,
+	Name:          "test_proto.x243",
+	Tag:           "bytes,243,opt,name=x243",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X244 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         244,
+	Name:          "test_proto.x244",
+	Tag:           "bytes,244,opt,name=x244",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X245 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         245,
+	Name:          "test_proto.x245",
+	Tag:           "bytes,245,opt,name=x245",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X246 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         246,
+	Name:          "test_proto.x246",
+	Tag:           "bytes,246,opt,name=x246",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X247 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         247,
+	Name:          "test_proto.x247",
+	Tag:           "bytes,247,opt,name=x247",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X248 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         248,
+	Name:          "test_proto.x248",
+	Tag:           "bytes,248,opt,name=x248",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X249 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         249,
+	Name:          "test_proto.x249",
+	Tag:           "bytes,249,opt,name=x249",
+	Filename:      "test_proto/test.proto",
+}
+
+var E_X250 = &proto.ExtensionDesc{
+	ExtendedType:  (*MyMessageSet)(nil),
+	ExtensionType: (*Empty)(nil),
+	Field:         250,
+	Name:          "test_proto.x250",
+	Tag:           "bytes,250,opt,name=x250",
+	Filename:      "test_proto/test.proto",
+}
+
+func init() {
+	proto.RegisterEnum("test_proto.FOO", FOO_name, FOO_value)
+	proto.RegisterEnum("test_proto.GoTest_KIND", GoTest_KIND_name, GoTest_KIND_value)
+	proto.RegisterEnum("test_proto.MyMessage_Color", MyMessage_Color_name, MyMessage_Color_value)
+	proto.RegisterEnum("test_proto.DefaultsMessage_DefaultsEnum", DefaultsMessage_DefaultsEnum_name, DefaultsMessage_DefaultsEnum_value)
+	proto.RegisterEnum("test_proto.Defaults_Color", Defaults_Color_name, Defaults_Color_value)
+	proto.RegisterEnum("test_proto.RepeatedEnum_Color", RepeatedEnum_Color_name, RepeatedEnum_Color_value)
+	proto.RegisterType((*GoEnum)(nil), "test_proto.GoEnum")
+	proto.RegisterType((*GoTestField)(nil), "test_proto.GoTestField")
+	proto.RegisterType((*GoTest)(nil), "test_proto.GoTest")
+	proto.RegisterType((*GoTest_RequiredGroup)(nil), "test_proto.GoTest.RequiredGroup")
+	proto.RegisterType((*GoTest_RepeatedGroup)(nil), "test_proto.GoTest.RepeatedGroup")
+	proto.RegisterType((*GoTest_OptionalGroup)(nil), "test_proto.GoTest.OptionalGroup")
+	proto.RegisterType((*GoTestRequiredGroupField)(nil), "test_proto.GoTestRequiredGroupField")
+	proto.RegisterType((*GoTestRequiredGroupField_Group)(nil), "test_proto.GoTestRequiredGroupField.Group")
+	proto.RegisterType((*GoSkipTest)(nil), "test_proto.GoSkipTest")
+	proto.RegisterType((*GoSkipTest_SkipGroup)(nil), "test_proto.GoSkipTest.SkipGroup")
+	proto.RegisterType((*NonPackedTest)(nil), "test_proto.NonPackedTest")
+	proto.RegisterType((*PackedTest)(nil), "test_proto.PackedTest")
+	proto.RegisterType((*MaxTag)(nil), "test_proto.MaxTag")
+	proto.RegisterType((*OldMessage)(nil), "test_proto.OldMessage")
+	proto.RegisterType((*OldMessage_Nested)(nil), "test_proto.OldMessage.Nested")
+	proto.RegisterType((*NewMessage)(nil), "test_proto.NewMessage")
+	proto.RegisterType((*NewMessage_Nested)(nil), "test_proto.NewMessage.Nested")
+	proto.RegisterType((*InnerMessage)(nil), "test_proto.InnerMessage")
+	proto.RegisterType((*OtherMessage)(nil), "test_proto.OtherMessage")
+	proto.RegisterType((*RequiredInnerMessage)(nil), "test_proto.RequiredInnerMessage")
+	proto.RegisterType((*MyMessage)(nil), "test_proto.MyMessage")
+	proto.RegisterType((*MyMessage_SomeGroup)(nil), "test_proto.MyMessage.SomeGroup")
+	proto.RegisterExtension(E_Ext_More)
+	proto.RegisterExtension(E_Ext_Text)
+	proto.RegisterExtension(E_Ext_Number)
+	proto.RegisterType((*Ext)(nil), "test_proto.Ext")
+	proto.RegisterMapType((map[int32]int32)(nil), "test_proto.Ext.MapFieldEntry")
+	proto.RegisterType((*ComplexExtension)(nil), "test_proto.ComplexExtension")
+	proto.RegisterType((*DefaultsMessage)(nil), "test_proto.DefaultsMessage")
+	proto.RegisterType((*MyMessageSet)(nil), "test_proto.MyMessageSet")
+	proto.RegisterType((*Empty)(nil), "test_proto.Empty")
+	proto.RegisterType((*MessageList)(nil), "test_proto.MessageList")
+	proto.RegisterType((*MessageList_Message)(nil), "test_proto.MessageList.Message")
+	proto.RegisterType((*Strings)(nil), "test_proto.Strings")
+	proto.RegisterType((*Defaults)(nil), "test_proto.Defaults")
+	proto.RegisterType((*SubDefaults)(nil), "test_proto.SubDefaults")
+	proto.RegisterType((*RepeatedEnum)(nil), "test_proto.RepeatedEnum")
+	proto.RegisterType((*MoreRepeated)(nil), "test_proto.MoreRepeated")
+	proto.RegisterType((*GroupOld)(nil), "test_proto.GroupOld")
+	proto.RegisterType((*GroupOld_G)(nil), "test_proto.GroupOld.G")
+	proto.RegisterType((*GroupNew)(nil), "test_proto.GroupNew")
+	proto.RegisterType((*GroupNew_G)(nil), "test_proto.GroupNew.G")
+	proto.RegisterType((*FloatingPoint)(nil), "test_proto.FloatingPoint")
+	proto.RegisterType((*MessageWithMap)(nil), "test_proto.MessageWithMap")
+	proto.RegisterMapType((map[bool][]byte)(nil), "test_proto.MessageWithMap.ByteMappingEntry")
+	proto.RegisterMapType((map[int64]*FloatingPoint)(nil), "test_proto.MessageWithMap.MsgMappingEntry")
+	proto.RegisterMapType((map[int32]string)(nil), "test_proto.MessageWithMap.NameMappingEntry")
+	proto.RegisterMapType((map[string]string)(nil), "test_proto.MessageWithMap.StrToStrEntry")
+	proto.RegisterType((*Oneof)(nil), "test_proto.Oneof")
+	proto.RegisterType((*Oneof_F_Group)(nil), "test_proto.Oneof.F_Group")
+	proto.RegisterType((*Communique)(nil), "test_proto.Communique")
+	proto.RegisterType((*TestUTF8)(nil), "test_proto.TestUTF8")
+	proto.RegisterMapType((map[string]int64)(nil), "test_proto.TestUTF8.MapKeyEntry")
+	proto.RegisterMapType((map[int64]string)(nil), "test_proto.TestUTF8.MapValueEntry")
+	proto.RegisterExtension(E_Greeting)
+	proto.RegisterExtension(E_Complex)
+	proto.RegisterExtension(E_RComplex)
+	proto.RegisterExtension(E_NoDefaultDouble)
+	proto.RegisterExtension(E_NoDefaultFloat)
+	proto.RegisterExtension(E_NoDefaultInt32)
+	proto.RegisterExtension(E_NoDefaultInt64)
+	proto.RegisterExtension(E_NoDefaultUint32)
+	proto.RegisterExtension(E_NoDefaultUint64)
+	proto.RegisterExtension(E_NoDefaultSint32)
+	proto.RegisterExtension(E_NoDefaultSint64)
+	proto.RegisterExtension(E_NoDefaultFixed32)
+	proto.RegisterExtension(E_NoDefaultFixed64)
+	proto.RegisterExtension(E_NoDefaultSfixed32)
+	proto.RegisterExtension(E_NoDefaultSfixed64)
+	proto.RegisterExtension(E_NoDefaultBool)
+	proto.RegisterExtension(E_NoDefaultString)
+	proto.RegisterExtension(E_NoDefaultBytes)
+	proto.RegisterExtension(E_NoDefaultEnum)
+	proto.RegisterExtension(E_DefaultDouble)
+	proto.RegisterExtension(E_DefaultFloat)
+	proto.RegisterExtension(E_DefaultInt32)
+	proto.RegisterExtension(E_DefaultInt64)
+	proto.RegisterExtension(E_DefaultUint32)
+	proto.RegisterExtension(E_DefaultUint64)
+	proto.RegisterExtension(E_DefaultSint32)
+	proto.RegisterExtension(E_DefaultSint64)
+	proto.RegisterExtension(E_DefaultFixed32)
+	proto.RegisterExtension(E_DefaultFixed64)
+	proto.RegisterExtension(E_DefaultSfixed32)
+	proto.RegisterExtension(E_DefaultSfixed64)
+	proto.RegisterExtension(E_DefaultBool)
+	proto.RegisterExtension(E_DefaultString)
+	proto.RegisterExtension(E_DefaultBytes)
+	proto.RegisterExtension(E_DefaultEnum)
+	proto.RegisterExtension(E_X201)
+	proto.RegisterExtension(E_X202)
+	proto.RegisterExtension(E_X203)
+	proto.RegisterExtension(E_X204)
+	proto.RegisterExtension(E_X205)
+	proto.RegisterExtension(E_X206)
+	proto.RegisterExtension(E_X207)
+	proto.RegisterExtension(E_X208)
+	proto.RegisterExtension(E_X209)
+	proto.RegisterExtension(E_X210)
+	proto.RegisterExtension(E_X211)
+	proto.RegisterExtension(E_X212)
+	proto.RegisterExtension(E_X213)
+	proto.RegisterExtension(E_X214)
+	proto.RegisterExtension(E_X215)
+	proto.RegisterExtension(E_X216)
+	proto.RegisterExtension(E_X217)
+	proto.RegisterExtension(E_X218)
+	proto.RegisterExtension(E_X219)
+	proto.RegisterExtension(E_X220)
+	proto.RegisterExtension(E_X221)
+	proto.RegisterExtension(E_X222)
+	proto.RegisterExtension(E_X223)
+	proto.RegisterExtension(E_X224)
+	proto.RegisterExtension(E_X225)
+	proto.RegisterExtension(E_X226)
+	proto.RegisterExtension(E_X227)
+	proto.RegisterExtension(E_X228)
+	proto.RegisterExtension(E_X229)
+	proto.RegisterExtension(E_X230)
+	proto.RegisterExtension(E_X231)
+	proto.RegisterExtension(E_X232)
+	proto.RegisterExtension(E_X233)
+	proto.RegisterExtension(E_X234)
+	proto.RegisterExtension(E_X235)
+	proto.RegisterExtension(E_X236)
+	proto.RegisterExtension(E_X237)
+	proto.RegisterExtension(E_X238)
+	proto.RegisterExtension(E_X239)
+	proto.RegisterExtension(E_X240)
+	proto.RegisterExtension(E_X241)
+	proto.RegisterExtension(E_X242)
+	proto.RegisterExtension(E_X243)
+	proto.RegisterExtension(E_X244)
+	proto.RegisterExtension(E_X245)
+	proto.RegisterExtension(E_X246)
+	proto.RegisterExtension(E_X247)
+	proto.RegisterExtension(E_X248)
+	proto.RegisterExtension(E_X249)
+	proto.RegisterExtension(E_X250)
+}
+
+func init() {
+	proto.RegisterFile("test_proto/test.proto", fileDescriptor_8ca34d01332f1402)
+}
+
+var fileDescriptor_8ca34d01332f1402 = []byte{
+	// 4795 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x5b, 0xd9, 0x73, 0x1b, 0x47,
+	0x7a, 0xd7, 0x0c, 0xee, 0x0f, 0x20, 0x31, 0x6c, 0xc9, 0x12, 0x44, 0x59, 0xd2, 0x08, 0x6b, 0xaf,
+	0x61, 0xc9, 0xa2, 0x48, 0x60, 0x08, 0x49, 0x70, 0xec, 0x58, 0x07, 0x41, 0xb3, 0x24, 0x12, 0xf2,
+	0x90, 0xb6, 0xb3, 0xca, 0x03, 0x0a, 0x24, 0x06, 0x20, 0x56, 0xc0, 0x0c, 0x0c, 0x0c, 0x56, 0x64,
+	0x52, 0xa9, 0xf2, 0x63, 0xaa, 0xf2, 0x94, 0x4d, 0x52, 0x95, 0xf7, 0xbc, 0xe4, 0x25, 0xd7, 0x43,
+	0xf2, 0x37, 0xc4, 0xd7, 0x7a, 0x77, 0xbd, 0x57, 0x92, 0x4d, 0x36, 0xf7, 0x9d, 0xcd, 0xbd, 0x47,
+	0x5e, 0x9c, 0xea, 0xaf, 0x7b, 0x66, 0x7a, 0x06, 0x50, 0x93, 0x7c, 0xe2, 0x74, 0xf7, 0xef, 0xfb,
+	0xf5, 0xf5, 0x9b, 0xef, 0xfb, 0xba, 0x31, 0x84, 0xe7, 0x5c, 0x6b, 0xec, 0x36, 0x87, 0x23, 0xc7,
+	0x75, 0x6e, 0xd0, 0xc7, 0x25, 0x7c, 0x24, 0x10, 0x54, 0x17, 0xaf, 0x41, 0x72, 0xdd, 0x59, 0xb3,
+	0x27, 0x03, 0x72, 0x05, 0x62, 0x1d, 0xc7, 0x29, 0x28, 0xba, 0x5a, 0x9a, 0x2f, 0xe7, 0x97, 0x02,
+	0xcc, 0x52, 0xbd, 0xd1, 0x30, 0x69, 0x5b, 0xf1, 0x26, 0x64, 0xd7, 0x9d, 0x1d, 0x6b, 0xec, 0xd6,
+	0x7b, 0x56, 0xbf, 0x4d, 0xce, 0x40, 0xe2, 0x61, 0x6b, 0xd7, 0xea, 0xa3, 0x4d, 0xc6, 0x64, 0x05,
+	0x42, 0x20, 0xbe, 0x73, 0x38, 0xb4, 0x0a, 0x2a, 0x56, 0xe2, 0x73, 0xf1, 0x0f, 0x8b, 0xb4, 0x1b,
+	0x6a, 0x49, 0xae, 0x41, 0xfc, 0x41, 0xcf, 0x6e, 0xf3, 0x7e, 0xce, 0x89, 0xfd, 0x30, 0xc4, 0xd2,
+	0x83, 0x8d, 0xad, 0xfb, 0x26, 0x82, 0x68, 0x0f, 0x3b, 0xad, 0xdd, 0x3e, 0x25, 0x53, 0x68, 0x0f,
+	0x58, 0xa0, 0xb5, 0x8f, 0x5a, 0xa3, 0xd6, 0xa0, 0x10, 0xd3, 0x95, 0x52, 0xc2, 0x64, 0x05, 0xf2,
+	0x1a, 0xcc, 0x99, 0xd6, 0x7b, 0x93, 0xde, 0xc8, 0x6a, 0xe3, 0xf0, 0x0a, 0x71, 0x5d, 0x2d, 0x65,
+	0x67, 0xf5, 0x80, 0xcd, 0x66, 0x18, 0xcd, 0xcc, 0x87, 0x56, 0xcb, 0xf5, 0xcc, 0x13, 0x7a, 0xec,
+	0x08, 0x73, 0x01, 0x4d, 0xcd, 0x1b, 0x43, 0xb7, 0xe7, 0xd8, 0xad, 0x3e, 0x33, 0x4f, 0xea, 0x8a,
+	0xd4, 0x3c, 0x84, 0x26, 0x5f, 0x84, 0x7c, 0xbd, 0x79, 0xd7, 0x71, 0xfa, 0xcd, 0x11, 0x1f, 0x55,
+	0x01, 0x74, 0xb5, 0x94, 0x36, 0xe7, 0xea, 0xb4, 0xd6, 0x1b, 0x2a, 0x29, 0x81, 0x56, 0x6f, 0x6e,
+	0xd8, 0x6e, 0xa5, 0x1c, 0x00, 0xb3, 0xba, 0x5a, 0x4a, 0x98, 0xf3, 0x75, 0xac, 0x9e, 0x42, 0x56,
+	0x8d, 0x00, 0x99, 0xd3, 0xd5, 0x52, 0x8c, 0x21, 0xab, 0x86, 0x8f, 0x7c, 0x05, 0x48, 0xbd, 0x59,
+	0xef, 0x1d, 0x58, 0x6d, 0x91, 0x75, 0x4e, 0x57, 0x4b, 0x29, 0x53, 0xab, 0xf3, 0x86, 0x19, 0x68,
+	0x91, 0x79, 0x5e, 0x57, 0x4b, 0x49, 0x0f, 0x2d, 0x70, 0x5f, 0x85, 0x85, 0x7a, 0xf3, 0xed, 0x5e,
+	0x78, 0xc0, 0x79, 0x5d, 0x2d, 0xcd, 0x99, 0xf9, 0x3a, 0xab, 0x9f, 0xc6, 0x8a, 0xc4, 0x9a, 0xae,
+	0x96, 0xe2, 0x1c, 0x2b, 0xf0, 0xe2, 0xec, 0xea, 0x7d, 0xa7, 0xe5, 0x06, 0xd0, 0x05, 0x5d, 0x2d,
+	0xa9, 0xe6, 0x7c, 0x1d, 0xab, 0xc3, 0xac, 0xf7, 0x9d, 0xc9, 0x6e, 0xdf, 0x0a, 0xa0, 0x44, 0x57,
+	0x4b, 0x8a, 0x99, 0xaf, 0xb3, 0xfa, 0x30, 0x76, 0xdb, 0x1d, 0xf5, 0xec, 0x6e, 0x80, 0x3d, 0x8d,
+	0x3a, 0xce, 0xd7, 0x59, 0x7d, 0x78, 0x04, 0x77, 0x0f, 0x5d, 0x6b, 0x1c, 0x40, 0x2d, 0x5d, 0x2d,
+	0xe5, 0xcc, 0xf9, 0x3a, 0x56, 0x47, 0x58, 0x23, 0x6b, 0xd0, 0xd1, 0xd5, 0xd2, 0x02, 0x65, 0x9d,
+	0xb1, 0x06, 0xdb, 0x91, 0x35, 0xe8, 0xea, 0x6a, 0x89, 0x70, 0xac, 0xb0, 0x06, 0x4b, 0x70, 0xba,
+	0xde, 0xdc, 0xee, 0x44, 0x37, 0x6e, 0x5f, 0x57, 0x4b, 0x79, 0x73, 0xa1, 0xee, 0xb5, 0xcc, 0xc2,
+	0x8b, 0xec, 0x3d, 0x5d, 0x2d, 0x69, 0x3e, 0x5e, 0xe0, 0x17, 0x35, 0xc9, 0xa4, 0x5e, 0x38, 0xa3,
+	0xc7, 0x04, 0x4d, 0xb2, 0xca, 0xb0, 0x26, 0x39, 0xf0, 0x39, 0x3d, 0x26, 0x6a, 0x32, 0x82, 0xc4,
+	0xee, 0x39, 0xf2, 0xac, 0x1e, 0x13, 0x35, 0xc9, 0x91, 0x11, 0x4d, 0x72, 0xec, 0x39, 0x3d, 0x16,
+	0xd6, 0xe4, 0x14, 0x5a, 0x64, 0x2e, 0xe8, 0xb1, 0xb0, 0x26, 0x39, 0x3a, 0xac, 0x49, 0x0e, 0x3e,
+	0xaf, 0xc7, 0x42, 0x9a, 0x8c, 0x62, 0x45, 0xe2, 0x45, 0x3d, 0x16, 0xd2, 0xa4, 0x38, 0x3b, 0x4f,
+	0x93, 0x1c, 0x7a, 0x41, 0x8f, 0x89, 0x9a, 0x14, 0x59, 0x7d, 0x4d, 0x72, 0xe8, 0xf3, 0x7a, 0x2c,
+	0xa4, 0x49, 0x11, 0xeb, 0x6b, 0x92, 0x63, 0x2f, 0xea, 0xb1, 0x90, 0x26, 0x39, 0xf6, 0x65, 0x51,
+	0x93, 0x1c, 0xfa, 0x81, 0xa2, 0xc7, 0x44, 0x51, 0x72, 0xe8, 0xb5, 0x90, 0x28, 0x39, 0xf6, 0x43,
+	0x8a, 0x15, 0x55, 0x19, 0x05, 0x8b, 0xab, 0xf0, 0x11, 0x05, 0x8b, 0xb2, 0xe4, 0xe0, 0x1b, 0x11,
+	0x59, 0x72, 0xf8, 0xc7, 0x14, 0x1e, 0xd6, 0xe5, 0xb4, 0x81, 0xc8, 0xff, 0x09, 0x35, 0x08, 0x0b,
+	0x93, 0x1b, 0x04, 0xc2, 0x74, 0xb8, 0x13, 0x2d, 0x5c, 0xd2, 0x15, 0x5f, 0x98, 0x9e, 0x67, 0x15,
+	0x85, 0xe9, 0x03, 0x2f, 0x63, 0xc8, 0xe0, 0xc2, 0x9c, 0x42, 0x56, 0x8d, 0x00, 0xa9, 0xeb, 0x4a,
+	0x20, 0x4c, 0x1f, 0x19, 0x12, 0xa6, 0x8f, 0xbd, 0xa2, 0x2b, 0xa2, 0x30, 0x67, 0xa0, 0x45, 0xe6,
+	0xa2, 0xae, 0x88, 0xc2, 0xf4, 0xd1, 0xa2, 0x30, 0x7d, 0xf0, 0x17, 0x74, 0x45, 0x10, 0xe6, 0x34,
+	0x56, 0x24, 0x7e, 0x41, 0x57, 0x04, 0x61, 0x86, 0x67, 0xc7, 0x84, 0xe9, 0x43, 0x5f, 0xd4, 0x95,
+	0x40, 0x98, 0x61, 0x56, 0x2e, 0x4c, 0x1f, 0xfa, 0x45, 0x5d, 0x11, 0x84, 0x19, 0xc6, 0x72, 0x61,
+	0xfa, 0xd8, 0x97, 0x30, 0x4e, 0x7b, 0xc2, 0xf4, 0xb1, 0x82, 0x30, 0x7d, 0xe8, 0xef, 0xd0, 0x98,
+	0xee, 0x0b, 0xd3, 0x87, 0x8a, 0xc2, 0xf4, 0xb1, 0xbf, 0x4b, 0xb1, 0x81, 0x30, 0xa7, 0xc1, 0xe2,
+	0x2a, 0xfc, 0x1e, 0x05, 0x07, 0xc2, 0xf4, 0xc1, 0x61, 0x61, 0xfa, 0xf0, 0xdf, 0xa7, 0x70, 0x51,
+	0x98, 0xb3, 0x0c, 0x44, 0xfe, 0x3f, 0xa0, 0x06, 0xa2, 0x30, 0x7d, 0x83, 0x25, 0x9c, 0x26, 0x15,
+	0x66, 0xdb, 0xea, 0xb4, 0x26, 0x7d, 0x2a, 0xe3, 0x12, 0x55, 0x66, 0x2d, 0xee, 0x8e, 0x26, 0x16,
+	0x9d, 0xab, 0xe3, 0xf4, 0xef, 0x7b, 0x6d, 0x64, 0x89, 0x0e, 0x9f, 0x09, 0x34, 0x30, 0x78, 0x99,
+	0x2a, 0xb4, 0xa6, 0x56, 0xca, 0x66, 0x9e, 0xa9, 0x74, 0x1a, 0x5f, 0x35, 0x04, 0xfc, 0x55, 0xaa,
+	0xd3, 0x9a, 0x5a, 0x35, 0x18, 0xbe, 0x6a, 0x04, 0xf8, 0x0a, 0x9d, 0x80, 0x27, 0xd6, 0xc0, 0xe2,
+	0x1a, 0x55, 0x6b, 0x2d, 0x56, 0x29, 0x2f, 0x9b, 0x0b, 0x9e, 0x64, 0x67, 0x19, 0x85, 0xba, 0x79,
+	0x85, 0x8a, 0xb6, 0x16, 0xab, 0x1a, 0xbe, 0x91, 0xd8, 0x53, 0x99, 0x0a, 0x9d, 0x4b, 0x37, 0xb0,
+	0xb9, 0x4e, 0xb5, 0x5b, 0x8b, 0x57, 0xca, 0xcb, 0xcb, 0xa6, 0xc6, 0x15, 0x3c, 0xc3, 0x26, 0xd4,
+	0xcf, 0x12, 0xd5, 0x70, 0x2d, 0x5e, 0x35, 0x7c, 0x9b, 0x70, 0x3f, 0x0b, 0x9e, 0x94, 0x03, 0x93,
+	0x1b, 0x54, 0xcb, 0xb5, 0x64, 0x65, 0xc5, 0x58, 0x59, 0xbd, 0x6d, 0xe6, 0x99, 0xa6, 0x03, 0x1b,
+	0x83, 0xf6, 0xc3, 0x45, 0x1d, 0x18, 0x2d, 0x53, 0x55, 0xd7, 0x92, 0xe5, 0x9b, 0x2b, 0xb7, 0xca,
+	0xb7, 0x4c, 0x8d, 0xab, 0x3b, 0xb0, 0x7a, 0x9d, 0x5a, 0x71, 0x79, 0x07, 0x56, 0x2b, 0x54, 0xdf,
+	0x35, 0x6d, 0xdf, 0xea, 0xf7, 0x9d, 0x57, 0xf4, 0xe2, 0x53, 0x67, 0xd4, 0x6f, 0x5f, 0x29, 0x82,
+	0xa9, 0x71, 0xc5, 0x8b, 0xbd, 0x2e, 0x78, 0x92, 0x0f, 0xcc, 0x7f, 0x95, 0x66, 0xac, 0xb9, 0x5a,
+	0xea, 0x6e, 0xaf, 0x6b, 0x3b, 0x63, 0xcb, 0xcc, 0x33, 0xf1, 0x47, 0xd6, 0x64, 0x3b, 0xba, 0x8e,
+	0x5f, 0xa5, 0x66, 0x0b, 0xb5, 0xd8, 0xf5, 0x4a, 0x99, 0xf6, 0x34, 0x6b, 0x1d, 0xb7, 0xa3, 0xeb,
+	0xf8, 0x6b, 0xd4, 0x86, 0xd4, 0x62, 0xd7, 0xab, 0x06, 0xb7, 0x11, 0xd7, 0xb1, 0x0a, 0x67, 0x84,
+	0x77, 0x21, 0xb0, 0xfa, 0x75, 0x6a, 0x95, 0x67, 0x3d, 0x11, 0xff, 0x8d, 0x98, 0x69, 0x17, 0xea,
+	0xed, 0x37, 0xa8, 0x9d, 0xc6, 0x7a, 0x23, 0xfe, 0x8b, 0x11, 0xd8, 0xdd, 0x84, 0xb3, 0x91, 0x5c,
+	0xa2, 0x39, 0x6c, 0xed, 0x3d, 0xb1, 0xda, 0x85, 0x32, 0x4d, 0x29, 0xee, 0xaa, 0x9a, 0x62, 0x9e,
+	0x0e, 0xa5, 0x15, 0x8f, 0xb0, 0x99, 0xdc, 0x86, 0x73, 0xd1, 0xe4, 0xc2, 0xb3, 0xac, 0xd0, 0x1c,
+	0x03, 0x2d, 0xcf, 0x84, 0xf3, 0x8c, 0x88, 0xa9, 0x10, 0x54, 0x3c, 0x53, 0x83, 0x26, 0x1d, 0x81,
+	0x69, 0x10, 0x5b, 0xb8, 0xe9, 0x6b, 0x70, 0x7e, 0x3a, 0xfd, 0xf0, 0x8c, 0x57, 0x69, 0x16, 0x82,
+	0xc6, 0x67, 0xa3, 0x99, 0xc8, 0x94, 0xf9, 0x8c, 0xbe, 0xab, 0x34, 0x2d, 0x11, 0xcd, 0xa7, 0x7a,
+	0x7f, 0x15, 0x0a, 0x53, 0x09, 0x8a, 0x67, 0x7d, 0x93, 0xe6, 0x29, 0x68, 0xfd, 0x5c, 0x24, 0x57,
+	0x89, 0x1a, 0xcf, 0xe8, 0xfa, 0x16, 0x4d, 0x5c, 0x04, 0xe3, 0xa9, 0x9e, 0x71, 0xc9, 0xc2, 0x29,
+	0x8c, 0x67, 0x7b, 0x9b, 0x66, 0x32, 0x7c, 0xc9, 0x42, 0xd9, 0x8c, 0xd8, 0x6f, 0x24, 0xa7, 0xf1,
+	0x6c, 0x6b, 0x34, 0xb5, 0xe1, 0xfd, 0x86, 0xd3, 0x1b, 0x6e, 0xfc, 0x33, 0xd4, 0x78, 0x7b, 0xf6,
+	0x8c, 0x7f, 0x14, 0xa3, 0x49, 0x09, 0xb7, 0xde, 0x9e, 0x35, 0x65, 0xdf, 0x7a, 0xc6, 0x94, 0x7f,
+	0x4c, 0xad, 0x89, 0x60, 0x3d, 0x35, 0xe7, 0x37, 0x60, 0x71, 0x46, 0xbe, 0xe2, 0xd9, 0xff, 0x84,
+	0xda, 0xe7, 0xd1, 0xfe, 0xdc, 0x54, 0xea, 0x32, 0xcd, 0x30, 0x63, 0x04, 0x3f, 0xa5, 0x0c, 0x5a,
+	0x88, 0x61, 0x6a, 0x0c, 0x75, 0x98, 0xf3, 0xf2, 0xf1, 0xee, 0xc8, 0x99, 0x0c, 0x0b, 0x75, 0x5d,
+	0x2d, 0x41, 0x59, 0x9f, 0x71, 0x3a, 0xf6, 0xd2, 0xf3, 0x75, 0x8a, 0x33, 0xc3, 0x66, 0x8c, 0x87,
+	0x31, 0x33, 0x9e, 0x47, 0x7a, 0xec, 0x99, 0x3c, 0x0c, 0xe7, 0xf3, 0x08, 0x66, 0x94, 0xc7, 0x0b,
+	0x77, 0x8c, 0xe7, 0xb1, 0xae, 0x3c, 0x83, 0xc7, 0x0b, 0x7e, 0x9c, 0x27, 0x64, 0xb6, 0xb8, 0x1a,
+	0x9c, 0xc9, 0xb1, 0x9d, 0xbc, 0x10, 0x3d, 0xa4, 0xaf, 0xe3, 0xe9, 0x2a, 0x5c, 0xc9, 0xcc, 0x84,
+	0xe1, 0x4d, 0x9b, 0xbd, 0xf5, 0x0c, 0xb3, 0xd0, 0x68, 0xa6, 0xcd, 0x7e, 0x7e, 0x86, 0x59, 0xf1,
+	0x37, 0x15, 0x88, 0x3f, 0xd8, 0xd8, 0xba, 0x4f, 0xd2, 0x10, 0x7f, 0xa7, 0xb1, 0x71, 0x5f, 0x3b,
+	0x45, 0x9f, 0xee, 0x36, 0x1a, 0x0f, 0x35, 0x85, 0x64, 0x20, 0x71, 0xf7, 0x4b, 0x3b, 0x6b, 0xdb,
+	0x9a, 0x4a, 0xf2, 0x90, 0xad, 0x6f, 0x6c, 0xad, 0xaf, 0x99, 0x8f, 0xcc, 0x8d, 0xad, 0x1d, 0x2d,
+	0x46, 0xdb, 0xea, 0x0f, 0x1b, 0x77, 0x76, 0xb4, 0x38, 0x49, 0x41, 0x8c, 0xd6, 0x25, 0x08, 0x40,
+	0x72, 0x7b, 0xc7, 0xdc, 0xd8, 0x5a, 0xd7, 0x92, 0x94, 0x65, 0x67, 0x63, 0x73, 0x4d, 0x4b, 0x51,
+	0xe4, 0xce, 0xdb, 0x8f, 0x1e, 0xae, 0x69, 0x69, 0xfa, 0x78, 0xc7, 0x34, 0xef, 0x7c, 0x49, 0xcb,
+	0x50, 0xa3, 0xcd, 0x3b, 0x8f, 0x34, 0xc0, 0xe6, 0x3b, 0x77, 0x1f, 0xae, 0x69, 0x59, 0x92, 0x83,
+	0x74, 0xfd, 0xed, 0xad, 0x7b, 0x3b, 0x1b, 0x8d, 0x2d, 0x2d, 0x57, 0xfc, 0x45, 0x28, 0xb0, 0x65,
+	0x0e, 0xad, 0x22, 0xbb, 0x32, 0x78, 0x03, 0x12, 0x6c, 0x6f, 0x14, 0xd4, 0xca, 0xd5, 0xe9, 0xbd,
+	0x99, 0x36, 0x5a, 0x62, 0xbb, 0xc4, 0x0c, 0x17, 0x2f, 0x42, 0x82, 0xad, 0xd3, 0x19, 0x48, 0xb0,
+	0xf5, 0x51, 0xf1, 0x2a, 0x81, 0x15, 0x8a, 0xbf, 0xa5, 0x02, 0xac, 0x3b, 0xdb, 0x4f, 0x7a, 0x43,
+	0xbc, 0xb8, 0xb9, 0x08, 0x30, 0x7e, 0xd2, 0x1b, 0x36, 0xf1, 0x0d, 0xe4, 0x97, 0x0e, 0x19, 0x5a,
+	0x83, 0xbe, 0x97, 0x5c, 0x81, 0x1c, 0x36, 0xf3, 0x57, 0x04, 0xef, 0x1a, 0x52, 0x66, 0x96, 0xd6,
+	0x71, 0x27, 0x19, 0x86, 0x54, 0x0d, 0xbc, 0x62, 0x48, 0x0a, 0x90, 0xaa, 0x41, 0x2e, 0x03, 0x16,
+	0x9b, 0x63, 0x8c, 0xa6, 0x78, 0xad, 0x90, 0x31, 0xb1, 0x5f, 0x16, 0x5f, 0xc9, 0xeb, 0x80, 0x7d,
+	0xb2, 0x99, 0xe7, 0x67, 0xbd, 0x25, 0xde, 0x80, 0x97, 0xe8, 0x03, 0x9b, 0x6f, 0x60, 0xb2, 0xd8,
+	0x80, 0x8c, 0x5f, 0x4f, 0x7b, 0xc3, 0x5a, 0x3e, 0x27, 0x0d, 0xe7, 0x04, 0x58, 0xe5, 0x4f, 0x8a,
+	0x01, 0xf8, 0x78, 0x16, 0x70, 0x3c, 0xcc, 0x88, 0x0d, 0xa8, 0x78, 0x11, 0xe6, 0xb6, 0x1c, 0x9b,
+	0xbd, 0xc7, 0xb8, 0x4e, 0x39, 0x50, 0x5a, 0x05, 0x05, 0xcf, 0xbf, 0x4a, 0xab, 0x78, 0x09, 0x40,
+	0x68, 0xd3, 0x40, 0xd9, 0x65, 0x6d, 0xe8, 0x0f, 0x94, 0xdd, 0xe2, 0x35, 0x48, 0x6e, 0xb6, 0x0e,
+	0x76, 0x5a, 0x5d, 0x72, 0x05, 0xa0, 0xdf, 0x1a, 0xbb, 0xcd, 0x0e, 0xee, 0xc4, 0xe7, 0x9f, 0x7f,
+	0xfe, 0xb9, 0x82, 0xc9, 0x74, 0x86, 0xd6, 0xb2, 0x1d, 0x19, 0x03, 0x34, 0xfa, 0xed, 0x4d, 0x6b,
+	0x3c, 0x6e, 0x75, 0x2d, 0xb2, 0x0a, 0x49, 0xdb, 0x1a, 0xd3, 0xe8, 0xab, 0xe0, 0x5d, 0xd3, 0x45,
+	0x71, 0x1d, 0x02, 0xdc, 0xd2, 0x16, 0x82, 0x4c, 0x0e, 0x26, 0x1a, 0xc4, 0xec, 0xc9, 0x00, 0x6f,
+	0xd4, 0x12, 0x26, 0x7d, 0x5c, 0x7c, 0x1e, 0x92, 0x0c, 0x43, 0x08, 0xc4, 0xed, 0xd6, 0xc0, 0x2a,
+	0xb0, 0x9e, 0xf1, 0xb9, 0xf8, 0x55, 0x05, 0x60, 0xcb, 0x7a, 0x7a, 0xac, 0x5e, 0x03, 0x9c, 0xa4,
+	0xd7, 0x18, 0xeb, 0xf5, 0x55, 0x59, 0xaf, 0x54, 0x6d, 0x1d, 0xc7, 0x69, 0x37, 0xd9, 0x46, 0xb3,
+	0xeb, 0xbf, 0x0c, 0xad, 0xc1, 0x9d, 0x2b, 0x3e, 0x86, 0xdc, 0x86, 0x6d, 0x5b, 0x23, 0x6f, 0x54,
+	0x04, 0xe2, 0xfb, 0xce, 0xd8, 0xe5, 0x37, 0x91, 0xf8, 0x4c, 0x0a, 0x10, 0x1f, 0x3a, 0x23, 0x97,
+	0xcd, 0xb4, 0x16, 0x37, 0x96, 0x97, 0x97, 0x4d, 0xac, 0x21, 0xcf, 0x43, 0x66, 0xcf, 0xb1, 0x6d,
+	0x6b, 0x8f, 0x4e, 0x23, 0x86, 0x47, 0xc7, 0xa0, 0xa2, 0xf8, 0xcb, 0x0a, 0xe4, 0x1a, 0xee, 0x7e,
+	0x40, 0xae, 0x41, 0xec, 0x89, 0x75, 0x88, 0xc3, 0x8b, 0x99, 0xf4, 0x91, 0xbe, 0x30, 0x5f, 0x69,
+	0xf5, 0x27, 0xec, 0x5e, 0x32, 0x67, 0xb2, 0x02, 0x39, 0x0b, 0xc9, 0xa7, 0x56, 0xaf, 0xbb, 0xef,
+	0x22, 0xa7, 0x6a, 0xf2, 0x12, 0x59, 0x82, 0x44, 0x8f, 0x0e, 0xb6, 0x10, 0xc7, 0x15, 0x2b, 0x88,
+	0x2b, 0x26, 0xce, 0xc2, 0x64, 0xb0, 0xab, 0xe9, 0x74, 0x5b, 0x7b, 0xff, 0xfd, 0xf7, 0xdf, 0x57,
+	0x8b, 0xfb, 0x70, 0xc6, 0x7b, 0x89, 0x43, 0xd3, 0x7d, 0x04, 0x85, 0xbe, 0xe5, 0x34, 0x3b, 0x3d,
+	0xbb, 0xd5, 0xef, 0x1f, 0x36, 0x9f, 0x3a, 0x76, 0xb3, 0x65, 0x37, 0x9d, 0xf1, 0x5e, 0x6b, 0x84,
+	0x4b, 0x20, 0xeb, 0xe4, 0x4c, 0xdf, 0x72, 0xea, 0xcc, 0xf0, 0x5d, 0xc7, 0xbe, 0x63, 0x37, 0xa8,
+	0x55, 0xf1, 0xb3, 0x38, 0x64, 0x36, 0x0f, 0x3d, 0xfe, 0x33, 0x90, 0xd8, 0x73, 0x26, 0x36, 0x5b,
+	0xcf, 0x84, 0xc9, 0x0a, 0xfe, 0x3e, 0xa9, 0xc2, 0x3e, 0x9d, 0x81, 0xc4, 0x7b, 0x13, 0xc7, 0xb5,
+	0x70, 0xca, 0x19, 0x93, 0x15, 0xe8, 0x8a, 0x0d, 0x2d, 0xb7, 0x10, 0xc7, 0x6b, 0x0a, 0xfa, 0x18,
+	0xac, 0x41, 0xe2, 0x58, 0x6b, 0x40, 0x96, 0x21, 0xe9, 0xd0, 0x3d, 0x18, 0x17, 0x92, 0x78, 0x0f,
+	0x1b, 0x32, 0x10, 0x77, 0xc7, 0xe4, 0x38, 0xf2, 0x00, 0x16, 0x9e, 0x5a, 0xcd, 0xc1, 0x64, 0xec,
+	0x36, 0xbb, 0x4e, 0xb3, 0x6d, 0x59, 0x43, 0x6b, 0x54, 0x98, 0xc3, 0xde, 0x42, 0x1e, 0x62, 0xd6,
+	0x82, 0x9a, 0xf3, 0x4f, 0xad, 0xcd, 0xc9, 0xd8, 0x5d, 0x77, 0xee, 0xa3, 0x1d, 0x59, 0x85, 0xcc,
+	0xc8, 0xa2, 0x7e, 0x81, 0x0e, 0x39, 0x37, 0x3d, 0x82, 0x90, 0x71, 0x7a, 0x64, 0x0d, 0xb1, 0x82,
+	0xdc, 0x84, 0xf4, 0x6e, 0xef, 0x89, 0x35, 0xde, 0xb7, 0xda, 0x85, 0x94, 0xae, 0x94, 0xe6, 0xcb,
+	0x17, 0x44, 0x2b, 0x7f, 0x81, 0x97, 0xee, 0x39, 0x7d, 0x67, 0x64, 0xfa, 0x60, 0xf2, 0x1a, 0x64,
+	0xc6, 0xce, 0xc0, 0x62, 0x6a, 0x4f, 0x63, 0xb0, 0xbd, 0x3c, 0xdb, 0x72, 0xdb, 0x19, 0x58, 0x9e,
+	0x57, 0xf3, 0x2c, 0xc8, 0x05, 0x36, 0xdc, 0x5d, 0x7a, 0x98, 0x28, 0x00, 0x5e, 0xf8, 0xd0, 0x41,
+	0xe1, 0xe1, 0x82, 0x2c, 0xd2, 0x41, 0x75, 0x3b, 0x34, 0x67, 0x2b, 0x64, 0xf1, 0x2c, 0xef, 0x97,
+	0x17, 0x5f, 0x81, 0x8c, 0x4f, 0x18, 0xb8, 0x43, 0xe6, 0x82, 0x32, 0xe8, 0x21, 0x98, 0x3b, 0x64,
+	0xfe, 0xe7, 0x45, 0x48, 0xe0, 0xc0, 0x69, 0xe4, 0x32, 0xd7, 0x68, 0xa0, 0xcc, 0x40, 0x62, 0xdd,
+	0x5c, 0x5b, 0xdb, 0xd2, 0x14, 0x8c, 0x99, 0x0f, 0xdf, 0x5e, 0xd3, 0x54, 0x41, 0xbf, 0xbf, 0xad,
+	0x42, 0x6c, 0xed, 0x00, 0x95, 0xd3, 0x6e, 0xb9, 0x2d, 0xef, 0x0d, 0xa7, 0xcf, 0xa4, 0x06, 0x99,
+	0x41, 0xcb, 0xeb, 0x4b, 0xc5, 0x25, 0x0e, 0xf9, 0x92, 0xb5, 0x03, 0x77, 0x69, 0xb3, 0xc5, 0x7a,
+	0x5e, 0xb3, 0xdd, 0xd1, 0xa1, 0x99, 0x1e, 0xf0, 0xe2, 0xe2, 0xab, 0x30, 0x17, 0x6a, 0x12, 0x5f,
+	0xd1, 0xc4, 0x8c, 0x57, 0x34, 0xc1, 0x5f, 0xd1, 0x9a, 0x7a, 0x4b, 0x29, 0xd7, 0x20, 0x3e, 0x70,
+	0x46, 0x16, 0x79, 0x6e, 0xe6, 0x02, 0x17, 0xba, 0x28, 0x99, 0x7c, 0x64, 0x28, 0x26, 0xda, 0x94,
+	0x5f, 0x86, 0xb8, 0x6b, 0x1d, 0xb8, 0xcf, 0xb2, 0xdd, 0x67, 0xf3, 0xa3, 0x90, 0xf2, 0x75, 0x48,
+	0xda, 0x93, 0xc1, 0xae, 0x35, 0x7a, 0x16, 0xb8, 0x87, 0x03, 0xe3, 0xa0, 0xe2, 0x3b, 0xa0, 0xdd,
+	0x73, 0x06, 0xc3, 0xbe, 0x75, 0xb0, 0x76, 0xe0, 0x5a, 0xf6, 0xb8, 0xe7, 0xd8, 0x74, 0x0e, 0x9d,
+	0xde, 0x08, 0xdd, 0x1a, 0xce, 0x01, 0x0b, 0xd4, 0xcd, 0x8c, 0xad, 0x3d, 0xc7, 0x6e, 0xf3, 0xa9,
+	0xf1, 0x12, 0x45, 0xbb, 0xfb, 0xbd, 0x11, 0xf5, 0x68, 0x34, 0xf8, 0xb0, 0x42, 0x71, 0x1d, 0xf2,
+	0xfc, 0x18, 0x36, 0xe6, 0x1d, 0x17, 0xaf, 0x42, 0xce, 0xab, 0xc2, 0x5f, 0x7e, 0xd2, 0x10, 0x7f,
+	0xbc, 0x66, 0x36, 0xb4, 0x53, 0x74, 0x5f, 0x1b, 0x5b, 0x6b, 0x9a, 0x42, 0x1f, 0x76, 0xde, 0x6d,
+	0x84, 0xf6, 0xf2, 0x79, 0xc8, 0xf9, 0x63, 0xdf, 0xb6, 0x5c, 0x6c, 0xa1, 0x51, 0x2a, 0x55, 0x53,
+	0xd3, 0x4a, 0x31, 0x05, 0x89, 0xb5, 0xc1, 0xd0, 0x3d, 0x2c, 0xfe, 0x12, 0x64, 0x39, 0xe8, 0x61,
+	0x6f, 0xec, 0x92, 0xdb, 0x90, 0x1a, 0xf0, 0xf9, 0x2a, 0x98, 0x8b, 0x86, 0x65, 0x1d, 0x20, 0xbd,
+	0x67, 0xd3, 0xc3, 0x2f, 0x56, 0x20, 0x25, 0xb8, 0x77, 0xee, 0x79, 0x54, 0xd1, 0xf3, 0x30, 0x1f,
+	0x15, 0x13, 0x7c, 0x54, 0x71, 0x13, 0x52, 0x2c, 0x30, 0x8f, 0x31, 0xdd, 0x60, 0xe7, 0x77, 0xa6,
+	0x31, 0x26, 0xbe, 0x2c, 0xab, 0x63, 0x39, 0xd4, 0x65, 0xc8, 0xe2, 0x3b, 0xe3, 0xab, 0x90, 0x7a,
+	0x73, 0xc0, 0x2a, 0xa6, 0xf8, 0x3f, 0x4a, 0x40, 0xda, 0x5b, 0x2b, 0x72, 0x01, 0x92, 0xec, 0x10,
+	0x8b, 0x54, 0xde, 0xa5, 0x4e, 0x02, 0x8f, 0xad, 0xe4, 0x02, 0xa4, 0xf8, 0x41, 0x95, 0x07, 0x1c,
+	0xb5, 0x52, 0x36, 0x93, 0xec, 0x60, 0xea, 0x37, 0x56, 0x0d, 0xf4, 0x93, 0xec, 0xba, 0x26, 0xc9,
+	0x8e, 0x9e, 0x44, 0x87, 0x8c, 0x7f, 0xd8, 0xc4, 0x10, 0xc1, 0xef, 0x66, 0xd2, 0xde, 0xe9, 0x52,
+	0x40, 0x54, 0x0d, 0x74, 0xa0, 0xfc, 0x22, 0x26, 0x5d, 0x0f, 0xf2, 0xa6, 0xb4, 0x77, 0x64, 0xc4,
+	0x5f, 0x9e, 0xbc, 0x5b, 0x97, 0x14, 0x3f, 0x24, 0x06, 0x80, 0xaa, 0x81, 0x9e, 0xc9, 0xbb, 0x62,
+	0x49, 0xf1, 0x83, 0x20, 0xb9, 0x4c, 0x87, 0x88, 0x07, 0x3b, 0xf4, 0x3f, 0xc1, 0x7d, 0x4a, 0x92,
+	0x1d, 0xf7, 0xc8, 0x15, 0xca, 0xc0, 0x4e, 0x6f, 0xe8, 0x1a, 0x82, 0xcb, 0x93, 0x14, 0x3f, 0xd4,
+	0x91, 0x6b, 0x14, 0xc2, 0x96, 0xbf, 0x00, 0xcf, 0xb8, 0x29, 0x49, 0xf1, 0x9b, 0x12, 0xa2, 0xd3,
+	0x0e, 0xd1, 0x43, 0xa1, 0x57, 0x12, 0x6e, 0x45, 0x92, 0xec, 0x56, 0x84, 0x5c, 0x42, 0x3a, 0x36,
+	0xa9, 0x5c, 0x70, 0x03, 0x92, 0xe2, 0xa7, 0xc0, 0xa0, 0x1d, 0x73, 0x49, 0xff, 0xb6, 0x23, 0xc5,
+	0xcf, 0x79, 0xe4, 0x16, 0xdd, 0x2f, 0xaa, 0xf0, 0xc2, 0x3c, 0xfa, 0xe2, 0x45, 0x51, 0x7a, 0xde,
+	0xae, 0x32, 0x57, 0x5c, 0x63, 0x6e, 0xcc, 0x4c, 0xd4, 0xf1, 0x8d, 0x58, 0xa4, 0x96, 0x8f, 0x7a,
+	0x76, 0xa7, 0x90, 0xc7, 0xb5, 0x88, 0xf5, 0xec, 0x8e, 0x99, 0xa8, 0xd3, 0x1a, 0xa6, 0x82, 0x2d,
+	0xda, 0xa6, 0x61, 0x5b, 0xfc, 0x3a, 0x6b, 0xa4, 0x55, 0xa4, 0x00, 0x89, 0x7a, 0x73, 0xab, 0x65,
+	0x17, 0x16, 0x98, 0x9d, 0xdd, 0xb2, 0xcd, 0x78, 0x7d, 0xab, 0x65, 0x93, 0x97, 0x21, 0x36, 0x9e,
+	0xec, 0x16, 0xc8, 0xf4, 0xcf, 0x82, 0xdb, 0x93, 0x5d, 0x6f, 0x30, 0x26, 0xc5, 0x90, 0x0b, 0x90,
+	0x1e, 0xbb, 0xa3, 0xe6, 0x2f, 0x58, 0x23, 0xa7, 0x70, 0x1a, 0x97, 0xf1, 0x94, 0x99, 0x1a, 0xbb,
+	0xa3, 0xc7, 0xd6, 0xc8, 0x39, 0xa6, 0x0f, 0x2e, 0x5e, 0x82, 0xac, 0xc0, 0x4b, 0xf2, 0xa0, 0xd8,
+	0x2c, 0x81, 0xa9, 0x29, 0x37, 0x4d, 0xc5, 0x2e, 0xbe, 0x03, 0x39, 0xef, 0x88, 0x85, 0x33, 0x36,
+	0xe8, 0xdb, 0xd4, 0x77, 0x46, 0xf8, 0x96, 0xce, 0x97, 0x2f, 0x85, 0x23, 0x66, 0x00, 0xe4, 0x91,
+	0x8b, 0x81, 0x8b, 0x5a, 0x64, 0x30, 0x4a, 0xf1, 0x07, 0x0a, 0xe4, 0x36, 0x9d, 0x51, 0xf0, 0xfb,
+	0xc5, 0x19, 0x48, 0xec, 0x3a, 0x4e, 0x7f, 0x8c, 0xc4, 0x69, 0x93, 0x15, 0xc8, 0x8b, 0x90, 0xc3,
+	0x07, 0xef, 0x90, 0xac, 0xfa, 0xb7, 0x40, 0x59, 0xac, 0xe7, 0xe7, 0x62, 0x02, 0xf1, 0x9e, 0xed,
+	0x8e, 0xb9, 0x47, 0xc3, 0x67, 0xf2, 0x05, 0xc8, 0xd2, 0xbf, 0x9e, 0x65, 0xdc, 0xcf, 0xa6, 0x81,
+	0x56, 0x73, 0xc3, 0x97, 0x60, 0x0e, 0x35, 0xe0, 0xc3, 0x52, 0xfe, 0x8d, 0x4f, 0x8e, 0x35, 0x70,
+	0x60, 0x01, 0x52, 0xcc, 0x21, 0x8c, 0xf1, 0x07, 0xdf, 0x8c, 0xe9, 0x15, 0xa9, 0x9b, 0xc5, 0x83,
+	0x0a, 0xcb, 0x40, 0x52, 0x26, 0x2f, 0x15, 0xef, 0x41, 0x1a, 0xc3, 0x65, 0xa3, 0xdf, 0x26, 0x2f,
+	0x80, 0xd2, 0x2d, 0x58, 0x18, 0xae, 0xcf, 0x86, 0x4e, 0x21, 0x1c, 0xb0, 0xb4, 0x6e, 0x2a, 0xdd,
+	0xc5, 0x05, 0x50, 0xd6, 0xe9, 0xb1, 0xe0, 0x80, 0x3b, 0x6c, 0xe5, 0xa0, 0xf8, 0x16, 0x27, 0xd9,
+	0xb2, 0x9e, 0xca, 0x49, 0xb6, 0xac, 0xa7, 0x8c, 0xe4, 0xf2, 0x14, 0x09, 0x2d, 0x1d, 0xf2, 0xdf,
+	0xc0, 0x95, 0xc3, 0x62, 0x05, 0xe6, 0xf0, 0x45, 0xed, 0xd9, 0xdd, 0x47, 0x4e, 0xcf, 0xc6, 0x83,
+	0x48, 0x07, 0x13, 0x38, 0xc5, 0x54, 0x3a, 0x74, 0x1f, 0xac, 0x83, 0xd6, 0x1e, 0x4b, 0x87, 0xd3,
+	0x26, 0x2b, 0x14, 0xbf, 0x1f, 0x87, 0x79, 0xee, 0x64, 0xdf, 0xed, 0xb9, 0xfb, 0x9b, 0xad, 0x21,
+	0xd9, 0x82, 0x1c, 0xf5, 0xaf, 0xcd, 0x41, 0x6b, 0x38, 0xa4, 0x2f, 0xb2, 0x82, 0xa1, 0xf9, 0xda,
+	0x0c, 0xb7, 0xcd, 0x2d, 0x96, 0xb6, 0x5a, 0x03, 0x6b, 0x93, 0xa1, 0x59, 0xa0, 0xce, 0xda, 0x41,
+	0x0d, 0x79, 0x00, 0xd9, 0xc1, 0xb8, 0xeb, 0xd3, 0xb1, 0x48, 0x7f, 0x55, 0x42, 0xb7, 0x39, 0xee,
+	0x86, 0xd8, 0x60, 0xe0, 0x57, 0xd0, 0xc1, 0x51, 0xef, 0xec, 0xb3, 0xc5, 0x8e, 0x1c, 0x1c, 0x75,
+	0x25, 0xe1, 0xc1, 0xed, 0x06, 0x35, 0xa4, 0x0e, 0x40, 0x5f, 0x35, 0xd7, 0xa1, 0x27, 0x3c, 0xd4,
+	0x52, 0xb6, 0x5c, 0x92, 0xb0, 0x6d, 0xbb, 0xa3, 0x1d, 0x67, 0xdb, 0x1d, 0xf1, 0x84, 0x64, 0xcc,
+	0x8b, 0x8b, 0xaf, 0x83, 0x16, 0x5d, 0x85, 0xa3, 0x72, 0x92, 0x8c, 0x90, 0x93, 0x2c, 0xfe, 0x1c,
+	0xe4, 0x23, 0xd3, 0x16, 0xcd, 0x09, 0x33, 0xbf, 0x21, 0x9a, 0x67, 0xcb, 0xe7, 0x43, 0xdf, 0x68,
+	0x88, 0x5b, 0x2f, 0x32, 0xbf, 0x0e, 0x5a, 0x74, 0x09, 0x44, 0xea, 0xb4, 0xe4, 0x40, 0x83, 0xf6,
+	0xaf, 0xc2, 0x5c, 0x68, 0xd2, 0xa2, 0x71, 0xe6, 0x88, 0x69, 0x15, 0x7f, 0x25, 0x01, 0x89, 0x86,
+	0x6d, 0x39, 0x1d, 0x72, 0x2e, 0x1c, 0x3b, 0xdf, 0x3c, 0xe5, 0xc5, 0xcd, 0xf3, 0x91, 0xb8, 0xf9,
+	0xe6, 0x29, 0x3f, 0x6a, 0x9e, 0x8f, 0x44, 0x4d, 0xaf, 0xa9, 0x6a, 0x90, 0x8b, 0x53, 0x31, 0xf3,
+	0xcd, 0x53, 0x42, 0xc0, 0xbc, 0x38, 0x15, 0x30, 0x83, 0xe6, 0xaa, 0x41, 0x1d, 0x6c, 0x38, 0x5a,
+	0xbe, 0x79, 0x2a, 0x88, 0x94, 0x17, 0xa2, 0x91, 0xd2, 0x6f, 0xac, 0x1a, 0x6c, 0x48, 0x42, 0x94,
+	0xc4, 0x21, 0xb1, 0xf8, 0x78, 0x21, 0x1a, 0x1f, 0xd1, 0x8e, 0x47, 0xc6, 0x0b, 0xd1, 0xc8, 0x88,
+	0x8d, 0x3c, 0x12, 0x9e, 0x8f, 0x44, 0x42, 0x24, 0x65, 0x21, 0xf0, 0x42, 0x34, 0x04, 0x32, 0x3b,
+	0x61, 0xa4, 0x62, 0xfc, 0xf3, 0x1b, 0xab, 0x06, 0x31, 0x22, 0xc1, 0x4f, 0x76, 0x10, 0xc1, 0xdd,
+	0xc0, 0x30, 0x50, 0xa5, 0x0b, 0xe7, 0x25, 0xa8, 0x79, 0xe9, 0x27, 0x2c, 0xb8, 0xa2, 0x5e, 0x82,
+	0x66, 0x40, 0xaa, 0xc3, 0xcf, 0xea, 0x1a, 0x7a, 0xb2, 0x90, 0x38, 0x51, 0x02, 0x4b, 0xf5, 0x26,
+	0x7a, 0x34, 0x3a, 0xbb, 0x0e, 0x3b, 0x70, 0x94, 0x60, 0xae, 0xde, 0x7c, 0xd8, 0x1a, 0x75, 0x29,
+	0x74, 0xa7, 0xd5, 0xf5, 0x6f, 0x3d, 0xa8, 0x0a, 0xb2, 0x75, 0xde, 0xb2, 0xd3, 0xea, 0x92, 0xb3,
+	0x9e, 0xc4, 0xda, 0xd8, 0xaa, 0x70, 0x91, 0x2d, 0x9e, 0xa3, 0x4b, 0xc7, 0xc8, 0xd0, 0x37, 0x2e,
+	0x70, 0xdf, 0x78, 0x37, 0x05, 0x89, 0x89, 0xdd, 0x73, 0xec, 0xbb, 0x19, 0x48, 0xb9, 0xce, 0x68,
+	0xd0, 0x72, 0x9d, 0xe2, 0x0f, 0x15, 0x80, 0x7b, 0xce, 0x60, 0x30, 0xb1, 0x7b, 0xef, 0x4d, 0x2c,
+	0x72, 0x09, 0xb2, 0x83, 0xd6, 0x13, 0xab, 0x39, 0xb0, 0x9a, 0x7b, 0x23, 0xef, 0x6d, 0xc8, 0xd0,
+	0xaa, 0x4d, 0xeb, 0xde, 0xe8, 0x90, 0x14, 0xbc, 0x04, 0x1e, 0x15, 0x84, 0xc2, 0xe4, 0x09, 0xfd,
+	0x19, 0x9e, 0x8e, 0x26, 0xf9, 0x4e, 0x7a, 0x09, 0x29, 0x3b, 0xe4, 0xa4, 0xf8, 0x1e, 0xb2, 0x63,
+	0xce, 0x39, 0x48, 0xba, 0xd6, 0x60, 0xd8, 0xdc, 0x43, 0xc1, 0x50, 0x51, 0x24, 0x68, 0xf9, 0x1e,
+	0xb9, 0x01, 0xb1, 0x3d, 0xa7, 0x8f, 0x52, 0x39, 0x72, 0x77, 0x28, 0x92, 0xbc, 0x04, 0xb1, 0xc1,
+	0x98, 0xc9, 0x27, 0x5b, 0x3e, 0x1d, 0xca, 0x20, 0x58, 0xc8, 0xa2, 0xc0, 0xc1, 0xb8, 0xeb, 0xcf,
+	0xbd, 0xf8, 0xa9, 0x0a, 0x69, 0xba, 0x5f, 0x6f, 0xef, 0xd4, 0x6f, 0xe1, 0xb1, 0x61, 0xaf, 0xd5,
+	0xc7, 0x1b, 0x02, 0xfa, 0x9a, 0xf2, 0x12, 0xad, 0xff, 0x8a, 0xb5, 0xe7, 0x3a, 0x23, 0x74, 0xcd,
+	0x19, 0x93, 0x97, 0xe8, 0x92, 0xb3, 0xac, 0x38, 0xc6, 0x67, 0xc9, 0x8a, 0x98, 0xd1, 0xb7, 0x86,
+	0x4d, 0xea, 0x03, 0x98, 0xbf, 0x0c, 0x9d, 0xae, 0xbd, 0xee, 0xe8, 0xd1, 0xed, 0x81, 0x75, 0xc8,
+	0xfc, 0x64, 0x72, 0x80, 0x05, 0xf2, 0xb3, 0xec, 0xc8, 0xc7, 0x76, 0x92, 0x7d, 0x5f, 0x55, 0x7c,
+	0x96, 0xf1, 0x3b, 0x14, 0x14, 0x9c, 0xfb, 0xb0, 0xb8, 0x78, 0x1b, 0xb2, 0x02, 0xef, 0x51, 0xae,
+	0x28, 0x16, 0xf1, 0x63, 0x21, 0xd6, 0xa3, 0x6e, 0x75, 0x44, 0x3f, 0x46, 0x57, 0xd4, 0xa1, 0x1a,
+	0xbe, 0x9a, 0x87, 0x58, 0xbd, 0xd1, 0xa0, 0x79, 0x56, 0xbd, 0xd1, 0x58, 0xd1, 0x94, 0xda, 0x0a,
+	0xa4, 0xbb, 0x23, 0xcb, 0xa2, 0xae, 0xf7, 0x59, 0xe7, 0xbc, 0x2f, 0xe3, 0xb2, 0xfa, 0xb0, 0xda,
+	0x5b, 0x90, 0xda, 0x63, 0x27, 0x3d, 0xf2, 0xcc, 0x5b, 0x8d, 0xc2, 0x1f, 0xb3, 0xdb, 0xb5, 0xe7,
+	0x45, 0x40, 0xf4, 0x7c, 0x68, 0x7a, 0x3c, 0xb5, 0x1d, 0xc8, 0x8c, 0x9a, 0x47, 0x93, 0x7e, 0xc0,
+	0x62, 0xb9, 0x9c, 0x34, 0x3d, 0xe2, 0x55, 0xb5, 0x75, 0x58, 0xb0, 0x1d, 0xef, 0x47, 0xbe, 0x66,
+	0x9b, 0x7b, 0xb2, 0x59, 0x49, 0xb4, 0xd7, 0x81, 0xc5, 0x3e, 0x15, 0xb0, 0x1d, 0xde, 0xc0, 0xbc,
+	0x5f, 0x6d, 0x0d, 0x34, 0x81, 0xa8, 0xc3, 0xdc, 0xa5, 0x8c, 0xa7, 0xc3, 0xbe, 0x4e, 0xf0, 0x79,
+	0xd0, 0xc3, 0x46, 0x68, 0xb8, 0x0f, 0x94, 0xd1, 0x74, 0xd9, 0xc7, 0x1e, 0x3e, 0x0d, 0x86, 0x95,
+	0x69, 0x1a, 0x1a, 0x11, 0x64, 0x34, 0xfb, 0xec, 0x4b, 0x10, 0x91, 0xa6, 0x6a, 0x44, 0x56, 0x67,
+	0x72, 0x8c, 0xe1, 0xf4, 0xd8, 0xa7, 0x1c, 0x3e, 0x0f, 0x0b, 0x38, 0x33, 0x88, 0x8e, 0x1a, 0xd0,
+	0x97, 0xd9, 0x77, 0x1e, 0x21, 0xa2, 0xa9, 0x11, 0x8d, 0x8f, 0x31, 0xa2, 0x27, 0xec, 0xb3, 0x0a,
+	0x9f, 0x68, 0x7b, 0xd6, 0x88, 0xc6, 0xc7, 0x18, 0x51, 0x9f, 0x7d, 0x72, 0x11, 0x22, 0xaa, 0x1a,
+	0xb5, 0x0d, 0x20, 0xe2, 0xc6, 0xf3, 0xe8, 0x2c, 0x65, 0x1a, 0xb0, 0x4f, 0x69, 0x82, 0xad, 0x67,
+	0x46, 0xb3, 0xa8, 0x8e, 0x1a, 0x94, 0xcd, 0xbe, 0xb3, 0x09, 0x53, 0x55, 0x8d, 0xda, 0x03, 0x38,
+	0x2d, 0x4e, 0xef, 0x58, 0xc3, 0x72, 0xd8, 0x47, 0x22, 0xc1, 0x04, 0xb9, 0xd5, 0x4c, 0xb2, 0xa3,
+	0x06, 0x36, 0x64, 0x1f, 0x90, 0x44, 0xc8, 0xaa, 0x46, 0xed, 0x1e, 0xe4, 0x05, 0xb2, 0x5d, 0xbc,
+	0x57, 0x90, 0x11, 0xbd, 0xc7, 0x3e, 0x7b, 0xf2, 0x89, 0x68, 0x46, 0x15, 0xdd, 0x3d, 0x96, 0x63,
+	0x48, 0x69, 0x46, 0xec, 0xab, 0x9d, 0x60, 0x3c, 0x68, 0x13, 0x79, 0x51, 0x76, 0x59, 0x42, 0x22,
+	0xe3, 0x19, 0xb3, 0x2f, 0x7a, 0x82, 0xe1, 0x50, 0x93, 0xda, 0x20, 0x34, 0x29, 0x8b, 0xa6, 0x19,
+	0x52, 0x16, 0x17, 0x23, 0x62, 0x49, 0x02, 0x59, 0x12, 0xaf, 0xaf, 0x84, 0xe9, 0xd3, 0x62, 0xed,
+	0x01, 0xcc, 0x9f, 0xc4, 0x65, 0x7d, 0xa0, 0xb0, 0xbb, 0x8c, 0xca, 0xd2, 0x8a, 0xb1, 0xb2, 0x6a,
+	0xce, 0xb5, 0x43, 0x9e, 0x6b, 0x1d, 0xe6, 0x4e, 0xe0, 0xb6, 0x3e, 0x54, 0xd8, 0x8d, 0x00, 0xe5,
+	0x32, 0x73, 0xed, 0xb0, 0xef, 0x9a, 0x3b, 0x81, 0xe3, 0xfa, 0x48, 0x61, 0x57, 0x48, 0x46, 0xd9,
+	0xa7, 0xf1, 0x7c, 0xd7, 0xdc, 0x09, 0x1c, 0xd7, 0xc7, 0xec, 0xc4, 0xaf, 0x1a, 0x15, 0x91, 0x06,
+	0x3d, 0xc5, 0xfc, 0x49, 0x1c, 0xd7, 0x27, 0x0a, 0x5e, 0x29, 0xa9, 0x86, 0xe1, 0xaf, 0x8f, 0xef,
+	0xbb, 0xe6, 0x4f, 0xe2, 0xb8, 0xbe, 0xa6, 0xe0, 0xd5, 0x93, 0x6a, 0xac, 0x86, 0x88, 0xc2, 0x23,
+	0x3a, 0x8e, 0xe3, 0xfa, 0x54, 0xc1, 0xfb, 0x20, 0xd5, 0xa8, 0xfa, 0x44, 0xdb, 0x53, 0x23, 0x3a,
+	0x8e, 0xe3, 0xfa, 0x3a, 0x9e, 0xaf, 0x6a, 0xaa, 0x71, 0x33, 0x44, 0x84, 0xbe, 0x2b, 0x7f, 0x22,
+	0xc7, 0xf5, 0x0d, 0x05, 0xaf, 0xee, 0x54, 0xe3, 0x96, 0xe9, 0x8d, 0x20, 0xf0, 0x5d, 0xf9, 0x13,
+	0x39, 0xae, 0x6f, 0x2a, 0x78, 0xc7, 0xa7, 0x1a, 0xb7, 0xc3, 0x54, 0xe8, 0xbb, 0xb4, 0x93, 0x39,
+	0xae, 0xcf, 0x14, 0xfc, 0xa2, 0x47, 0x5d, 0x5d, 0x36, 0xbd, 0x41, 0x08, 0xbe, 0x4b, 0x3b, 0x99,
+	0xe3, 0xfa, 0x96, 0x82, 0x9f, 0xf9, 0xa8, 0xab, 0x2b, 0x11, 0xb2, 0xaa, 0x51, 0x5b, 0x83, 0xdc,
+	0xf1, 0x1d, 0xd7, 0xb7, 0xc5, 0x1b, 0xd4, 0x6c, 0x5b, 0xf0, 0x5e, 0x8f, 0x85, 0xfd, 0x3b, 0x86,
+	0xeb, 0xfa, 0x0e, 0x26, 0x7f, 0xb5, 0xe7, 0xde, 0x64, 0xf7, 0x8c, 0xcc, 0xe4, 0x95, 0xb6, 0xd5,
+	0x79, 0xad, 0xe3, 0x38, 0xc1, 0x96, 0x32, 0x87, 0xd6, 0x08, 0xde, 0x9e, 0x63, 0x78, 0xb3, 0xef,
+	0x2a, 0x78, 0x2d, 0x99, 0xe3, 0xd4, 0x68, 0xe1, 0xbf, 0x47, 0xcc, 0xb5, 0xd9, 0xc1, 0x9c, 0x8f,
+	0xf6, 0x6b, 0xdf, 0x53, 0x4e, 0xe6, 0xd8, 0x6a, 0xb1, 0xc6, 0xd6, 0x9a, 0xbf, 0x38, 0x58, 0xf3,
+	0x06, 0xc4, 0x0f, 0xca, 0xcb, 0x2b, 0xe1, 0x14, 0x4f, 0xbc, 0x95, 0x67, 0xee, 0x2c, 0x5b, 0x5e,
+	0x08, 0xfd, 0x7c, 0x31, 0x18, 0xba, 0x87, 0x26, 0x5a, 0x72, 0x86, 0xb2, 0x84, 0xe1, 0x43, 0x29,
+	0x43, 0x99, 0x33, 0x54, 0x24, 0x0c, 0x1f, 0x49, 0x19, 0x2a, 0x9c, 0xc1, 0x90, 0x30, 0x7c, 0x2c,
+	0x65, 0x30, 0x38, 0xc3, 0xaa, 0x84, 0xe1, 0x13, 0x29, 0xc3, 0x2a, 0x67, 0xa8, 0x4a, 0x18, 0xbe,
+	0x26, 0x65, 0xa8, 0x72, 0x86, 0x9b, 0x12, 0x86, 0x4f, 0xa5, 0x0c, 0x37, 0x39, 0xc3, 0x2d, 0x09,
+	0xc3, 0xd7, 0xa5, 0x0c, 0xb7, 0x38, 0xc3, 0x6d, 0x09, 0xc3, 0x37, 0xa4, 0x0c, 0xb7, 0x19, 0xc3,
+	0xca, 0xb2, 0x84, 0xe1, 0x9b, 0x32, 0x86, 0x95, 0x65, 0xce, 0x20, 0xd3, 0xe4, 0x67, 0x52, 0x06,
+	0xae, 0xc9, 0x15, 0x99, 0x26, 0xbf, 0x25, 0x65, 0xe0, 0x9a, 0x5c, 0x91, 0x69, 0xf2, 0xdb, 0x52,
+	0x06, 0xae, 0xc9, 0x15, 0x99, 0x26, 0xbf, 0x23, 0x65, 0xe0, 0x9a, 0x5c, 0x91, 0x69, 0xf2, 0xbb,
+	0x52, 0x06, 0xae, 0xc9, 0x15, 0x99, 0x26, 0xbf, 0x27, 0x65, 0xe0, 0x9a, 0x5c, 0x91, 0x69, 0xf2,
+	0x4f, 0xa4, 0x0c, 0x5c, 0x93, 0x2b, 0x32, 0x4d, 0xfe, 0xa9, 0x94, 0x81, 0x6b, 0x72, 0x45, 0xa6,
+	0xc9, 0x3f, 0x93, 0x32, 0x70, 0x4d, 0x96, 0x65, 0x9a, 0xfc, 0xbe, 0x8c, 0xa1, 0xcc, 0x35, 0x59,
+	0x96, 0x69, 0xf2, 0xcf, 0xa5, 0x0c, 0x5c, 0x93, 0x65, 0x99, 0x26, 0xff, 0x42, 0xca, 0xc0, 0x35,
+	0x59, 0x96, 0x69, 0xf2, 0x07, 0x52, 0x06, 0xae, 0xc9, 0xb2, 0x4c, 0x93, 0x7f, 0x29, 0x65, 0xe0,
+	0x9a, 0x2c, 0xcb, 0x34, 0xf9, 0x57, 0x52, 0x06, 0xae, 0xc9, 0xb2, 0x4c, 0x93, 0x7f, 0x2d, 0x65,
+	0xe0, 0x9a, 0x2c, 0xcb, 0x34, 0xf9, 0x37, 0x52, 0x06, 0xae, 0xc9, 0xb2, 0x4c, 0x93, 0x7f, 0x2b,
+	0x65, 0xe0, 0x9a, 0x2c, 0xcb, 0x34, 0xf9, 0x77, 0x52, 0x06, 0xae, 0xc9, 0x8a, 0x4c, 0x93, 0x7f,
+	0x2f, 0x63, 0xa8, 0x70, 0x4d, 0x56, 0x64, 0x9a, 0xfc, 0x07, 0x29, 0x03, 0xd7, 0x64, 0x45, 0xa6,
+	0xc9, 0x7f, 0x94, 0x32, 0x70, 0x4d, 0x56, 0x64, 0x9a, 0xfc, 0x27, 0x29, 0x03, 0xd7, 0x64, 0x45,
+	0xa6, 0xc9, 0x7f, 0x96, 0x32, 0x70, 0x4d, 0x56, 0x64, 0x9a, 0xfc, 0x17, 0x29, 0x03, 0xd7, 0x64,
+	0x45, 0xa6, 0xc9, 0x7f, 0x95, 0x32, 0x70, 0x4d, 0x56, 0x64, 0x9a, 0xfc, 0x37, 0x29, 0x03, 0xd7,
+	0x64, 0x45, 0xa6, 0xc9, 0x1f, 0x4a, 0x19, 0xb8, 0x26, 0x2b, 0x32, 0x4d, 0xfe, 0xbb, 0x94, 0x81,
+	0x6b, 0xd2, 0x90, 0x69, 0xf2, 0x3f, 0x64, 0x0c, 0x06, 0xd7, 0xa4, 0x21, 0xd3, 0xe4, 0x7f, 0x4a,
+	0x19, 0xb8, 0x26, 0x0d, 0x99, 0x26, 0xff, 0x4b, 0xca, 0xc0, 0x35, 0x69, 0xc8, 0x34, 0xf9, 0xdf,
+	0x52, 0x06, 0xae, 0x49, 0x43, 0xa6, 0xc9, 0xff, 0x91, 0x32, 0x70, 0x4d, 0x1a, 0x32, 0x4d, 0xfe,
+	0xaf, 0x94, 0x81, 0x6b, 0xd2, 0x90, 0x69, 0xf2, 0x47, 0x52, 0x06, 0xae, 0x49, 0x43, 0xa6, 0xc9,
+	0x1f, 0x4b, 0x19, 0xb8, 0x26, 0x0d, 0x99, 0x26, 0x7f, 0x22, 0x65, 0xe0, 0x9a, 0x34, 0x64, 0x9a,
+	0xfc, 0xa9, 0x94, 0x81, 0x6b, 0x72, 0x55, 0xa6, 0xc9, 0xff, 0x93, 0x31, 0xac, 0x2e, 0xdf, 0xbd,
+	0xfe, 0xf8, 0x5a, 0xb7, 0xe7, 0xee, 0x4f, 0x76, 0x97, 0xf6, 0x9c, 0xc1, 0x8d, 0xae, 0xd3, 0x6f,
+	0xd9, 0xdd, 0x1b, 0x08, 0xdb, 0x9d, 0x74, 0x6e, 0x04, 0xff, 0xcc, 0xce, 0x4c, 0xff, 0x3f, 0x00,
+	0x00, 0xff, 0xff, 0x8e, 0xb4, 0x0c, 0xbd, 0xe4, 0x3e, 0x00, 0x00,
+}
diff --git a/proto/test_proto/test.proto b/proto/test_proto/test.proto
new file mode 100644
index 0000000..f339e05
--- /dev/null
+++ b/proto/test_proto/test.proto
@@ -0,0 +1,570 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// A feature-rich test file for the protocol compiler and libraries.
+
+syntax = "proto2";
+
+option go_package = "github.com/golang/protobuf/proto/test_proto";
+
+package test_proto;
+
+enum FOO { FOO1 = 1; };
+
+message GoEnum {
+  required FOO foo = 1;
+}
+
+message GoTestField {
+  required string Label = 1;
+  required string Type = 2;
+}
+
+message GoTest {
+  // An enum, for completeness.
+  enum KIND {
+    VOID = 0;
+
+    // Basic types
+    BOOL = 1;
+    BYTES = 2;
+    FINGERPRINT = 3;
+    FLOAT = 4;
+    INT = 5;
+    STRING = 6;
+    TIME = 7;
+
+    // Groupings
+    TUPLE = 8;
+    ARRAY = 9;
+    MAP = 10;
+
+    // Table types
+    TABLE = 11;
+
+    // Functions
+    FUNCTION = 12;  // last tag
+  };
+
+  // Some typical parameters
+  required KIND Kind = 1;
+  optional string Table = 2;
+  optional int32 Param = 3;
+
+  // Required, repeated and optional foreign fields.
+  required GoTestField RequiredField = 4;
+  repeated GoTestField RepeatedField = 5;
+  optional GoTestField OptionalField = 6;
+
+  // Required fields of all basic types
+  required bool F_Bool_required = 10;
+  required int32 F_Int32_required = 11;
+  required int64 F_Int64_required = 12;
+  required fixed32 F_Fixed32_required = 13;
+  required fixed64 F_Fixed64_required = 14;
+  required uint32 F_Uint32_required = 15;
+  required uint64 F_Uint64_required = 16;
+  required float F_Float_required = 17;
+  required double F_Double_required = 18;
+  required string F_String_required = 19;
+  required bytes F_Bytes_required = 101;
+  required sint32 F_Sint32_required = 102;
+  required sint64 F_Sint64_required = 103;
+  required sfixed32 F_Sfixed32_required = 104;
+  required sfixed64 F_Sfixed64_required = 105;
+
+  // Repeated fields of all basic types
+  repeated bool F_Bool_repeated = 20;
+  repeated int32 F_Int32_repeated = 21;
+  repeated int64 F_Int64_repeated = 22;
+  repeated fixed32 F_Fixed32_repeated = 23;
+  repeated fixed64 F_Fixed64_repeated = 24;
+  repeated uint32 F_Uint32_repeated = 25;
+  repeated uint64 F_Uint64_repeated = 26;
+  repeated float F_Float_repeated = 27;
+  repeated double F_Double_repeated = 28;
+  repeated string F_String_repeated = 29;
+  repeated bytes F_Bytes_repeated = 201;
+  repeated sint32 F_Sint32_repeated = 202;
+  repeated sint64 F_Sint64_repeated = 203;
+  repeated sfixed32 F_Sfixed32_repeated = 204;
+  repeated sfixed64 F_Sfixed64_repeated = 205;
+
+  // Optional fields of all basic types
+  optional bool F_Bool_optional = 30;
+  optional int32 F_Int32_optional = 31;
+  optional int64 F_Int64_optional = 32;
+  optional fixed32 F_Fixed32_optional = 33;
+  optional fixed64 F_Fixed64_optional = 34;
+  optional uint32 F_Uint32_optional = 35;
+  optional uint64 F_Uint64_optional = 36;
+  optional float F_Float_optional = 37;
+  optional double F_Double_optional = 38;
+  optional string F_String_optional = 39;
+  optional bytes F_Bytes_optional = 301;
+  optional sint32 F_Sint32_optional = 302;
+  optional sint64 F_Sint64_optional = 303;
+  optional sfixed32 F_Sfixed32_optional = 304;
+  optional sfixed64 F_Sfixed64_optional = 305;
+
+  // Default-valued fields of all basic types
+  optional bool F_Bool_defaulted = 40 [default=true];
+  optional int32 F_Int32_defaulted = 41 [default=32];
+  optional int64 F_Int64_defaulted = 42 [default=64];
+  optional fixed32 F_Fixed32_defaulted = 43 [default=320];
+  optional fixed64 F_Fixed64_defaulted = 44 [default=640];
+  optional uint32 F_Uint32_defaulted = 45 [default=3200];
+  optional uint64 F_Uint64_defaulted = 46 [default=6400];
+  optional float F_Float_defaulted = 47 [default=314159.];
+  optional double F_Double_defaulted = 48 [default=271828.];
+  optional string F_String_defaulted = 49 [default="hello, \"world!\"\n"];
+  optional bytes F_Bytes_defaulted = 401 [default="Bignose"];
+  optional sint32 F_Sint32_defaulted = 402 [default = -32];
+  optional sint64 F_Sint64_defaulted = 403 [default = -64];
+  optional sfixed32 F_Sfixed32_defaulted = 404 [default = -32];
+  optional sfixed64 F_Sfixed64_defaulted = 405 [default = -64];
+
+  // Packed repeated fields (no string or bytes).
+  repeated bool F_Bool_repeated_packed = 50 [packed=true];
+  repeated int32 F_Int32_repeated_packed = 51 [packed=true];
+  repeated int64 F_Int64_repeated_packed = 52 [packed=true];
+  repeated fixed32 F_Fixed32_repeated_packed = 53 [packed=true];
+  repeated fixed64 F_Fixed64_repeated_packed = 54 [packed=true];
+  repeated uint32 F_Uint32_repeated_packed = 55 [packed=true];
+  repeated uint64 F_Uint64_repeated_packed = 56 [packed=true];
+  repeated float F_Float_repeated_packed = 57 [packed=true];
+  repeated double F_Double_repeated_packed = 58 [packed=true];
+  repeated sint32 F_Sint32_repeated_packed = 502 [packed=true];
+  repeated sint64 F_Sint64_repeated_packed = 503 [packed=true];
+  repeated sfixed32 F_Sfixed32_repeated_packed = 504 [packed=true];
+  repeated sfixed64 F_Sfixed64_repeated_packed = 505 [packed=true];
+
+  // Required, repeated, and optional groups.
+  required group RequiredGroup = 70 {
+    required string RequiredField = 71;
+  };
+
+  repeated group RepeatedGroup = 80 {
+    required string RequiredField = 81;
+  };
+
+  optional group OptionalGroup = 90 {
+    required string RequiredField = 91;
+  };
+}
+
+// For testing a group containing a required field.
+message GoTestRequiredGroupField {
+  required group Group = 1 {
+    required int32 Field = 2;
+  };
+}
+
+// For testing skipping of unrecognized fields.
+// Numbers are all big, larger than tag numbers in GoTestField,
+// the message used in the corresponding test.
+message GoSkipTest {
+  required int32 skip_int32 = 11;
+  required fixed32 skip_fixed32 = 12;
+  required fixed64 skip_fixed64 = 13;
+  required string skip_string = 14;
+  required group SkipGroup = 15 {
+    required int32 group_int32 = 16;
+    required string group_string = 17;
+  }
+}
+
+// For testing packed/non-packed decoder switching.
+// A serialized instance of one should be deserializable as the other.
+message NonPackedTest {
+  repeated int32 a = 1;
+}
+
+message PackedTest {
+  repeated int32 b = 1 [packed=true];
+}
+
+message MaxTag {
+  // Maximum possible tag number.
+  optional string last_field = 536870911;
+}
+
+message OldMessage {
+  message Nested {
+    optional string name = 1;
+  }
+  optional Nested nested = 1;
+
+  optional int32 num = 2;
+}
+
+// NewMessage is wire compatible with OldMessage;
+// imagine it as a future version.
+message NewMessage {
+  message Nested {
+    optional string name = 1;
+    optional string food_group = 2;
+  }
+  optional Nested nested = 1;
+
+  // This is an int32 in OldMessage.
+  optional int64 num = 2;
+}
+
+// Smaller tests for ASCII formatting.
+
+message InnerMessage {
+  required string host = 1;
+  optional int32 port = 2 [default=4000];
+  optional bool connected = 3;
+}
+
+message OtherMessage {
+  optional int64 key = 1;
+  optional bytes value = 2;
+  optional float weight = 3;
+  optional InnerMessage inner = 4;
+
+  extensions 100 to max;
+}
+
+message RequiredInnerMessage {
+  required InnerMessage leo_finally_won_an_oscar = 1;
+}
+
+message MyMessage {
+  required int32 count = 1;
+  optional string name = 2;
+  optional string quote = 3;
+  repeated string pet = 4;
+  optional InnerMessage inner = 5;
+  repeated OtherMessage others = 6;
+  optional RequiredInnerMessage we_must_go_deeper = 13;
+  repeated InnerMessage rep_inner = 12;
+
+  enum Color {
+    RED = 0;
+    GREEN = 1;
+    BLUE = 2;
+  };
+  optional Color bikeshed = 7;
+
+  optional group SomeGroup = 8 {
+    optional int32 group_field = 9;
+  }
+
+  // This field becomes [][]byte in the generated code.
+  repeated bytes rep_bytes = 10;
+
+  optional double bigfloat = 11;
+
+  extensions 100 to max;
+}
+
+message Ext {
+  extend MyMessage {
+    optional Ext more = 103;
+    optional string text = 104;
+    optional int32 number = 105;
+  }
+
+  optional string data = 1;
+  map<int32, int32> map_field = 2;
+}
+
+extend MyMessage {
+  repeated string greeting = 106;
+  // leave field 200 unregistered for testing
+}
+
+message ComplexExtension {
+  optional int32 first = 1;
+  optional int32 second = 2;
+  repeated int32 third = 3;
+}
+
+extend OtherMessage {
+  optional ComplexExtension complex = 200;
+  repeated ComplexExtension r_complex = 201;
+}
+
+message DefaultsMessage {
+  enum DefaultsEnum {
+    ZERO = 0;
+    ONE = 1;
+    TWO = 2;
+  };
+  extensions 100 to max;
+}
+
+extend DefaultsMessage {
+  optional double no_default_double = 101;
+  optional float no_default_float = 102;
+  optional int32 no_default_int32 = 103;
+  optional int64 no_default_int64 = 104;
+  optional uint32 no_default_uint32 = 105;
+  optional uint64 no_default_uint64 = 106;
+  optional sint32 no_default_sint32 = 107;
+  optional sint64 no_default_sint64 = 108;
+  optional fixed32 no_default_fixed32 = 109;
+  optional fixed64 no_default_fixed64 = 110;
+  optional sfixed32 no_default_sfixed32 = 111;
+  optional sfixed64 no_default_sfixed64 = 112;
+  optional bool no_default_bool = 113;
+  optional string no_default_string = 114;
+  optional bytes no_default_bytes = 115;
+  optional DefaultsMessage.DefaultsEnum no_default_enum = 116;
+
+  optional double default_double = 201 [default = 3.1415];
+  optional float default_float = 202 [default = 3.14];
+  optional int32 default_int32 = 203 [default = 42];
+  optional int64 default_int64 = 204 [default = 43];
+  optional uint32 default_uint32 = 205 [default = 44];
+  optional uint64 default_uint64 = 206 [default = 45];
+  optional sint32 default_sint32 = 207 [default = 46];
+  optional sint64 default_sint64 = 208 [default = 47];
+  optional fixed32 default_fixed32 = 209 [default = 48];
+  optional fixed64 default_fixed64 = 210 [default = 49];
+  optional sfixed32 default_sfixed32 = 211 [default = 50];
+  optional sfixed64 default_sfixed64 = 212 [default = 51];
+  optional bool default_bool = 213 [default = true];
+  optional string default_string = 214 [default = "Hello, string,def=foo"];
+  optional bytes default_bytes = 215 [default = "Hello, bytes"];
+  optional DefaultsMessage.DefaultsEnum default_enum = 216 [default = ONE];
+}
+
+message MyMessageSet {
+  option message_set_wire_format = true;
+  extensions 100 to max;
+}
+
+message Empty {
+}
+
+extend MyMessageSet {
+    optional Empty x201 = 201;
+    optional Empty x202 = 202;
+    optional Empty x203 = 203;
+    optional Empty x204 = 204;
+    optional Empty x205 = 205;
+    optional Empty x206 = 206;
+    optional Empty x207 = 207;
+    optional Empty x208 = 208;
+    optional Empty x209 = 209;
+    optional Empty x210 = 210;
+    optional Empty x211 = 211;
+    optional Empty x212 = 212;
+    optional Empty x213 = 213;
+    optional Empty x214 = 214;
+    optional Empty x215 = 215;
+    optional Empty x216 = 216;
+    optional Empty x217 = 217;
+    optional Empty x218 = 218;
+    optional Empty x219 = 219;
+    optional Empty x220 = 220;
+    optional Empty x221 = 221;
+    optional Empty x222 = 222;
+    optional Empty x223 = 223;
+    optional Empty x224 = 224;
+    optional Empty x225 = 225;
+    optional Empty x226 = 226;
+    optional Empty x227 = 227;
+    optional Empty x228 = 228;
+    optional Empty x229 = 229;
+    optional Empty x230 = 230;
+    optional Empty x231 = 231;
+    optional Empty x232 = 232;
+    optional Empty x233 = 233;
+    optional Empty x234 = 234;
+    optional Empty x235 = 235;
+    optional Empty x236 = 236;
+    optional Empty x237 = 237;
+    optional Empty x238 = 238;
+    optional Empty x239 = 239;
+    optional Empty x240 = 240;
+    optional Empty x241 = 241;
+    optional Empty x242 = 242;
+    optional Empty x243 = 243;
+    optional Empty x244 = 244;
+    optional Empty x245 = 245;
+    optional Empty x246 = 246;
+    optional Empty x247 = 247;
+    optional Empty x248 = 248;
+    optional Empty x249 = 249;
+    optional Empty x250 = 250;
+}
+
+message MessageList {
+  repeated group Message = 1 {
+    required string name = 2;
+    required int32 count = 3;
+  }
+}
+
+message Strings {
+  optional string string_field = 1;
+  optional bytes bytes_field = 2;
+}
+
+message Defaults {
+  enum Color {
+    RED = 0;
+    GREEN = 1;
+    BLUE = 2;
+  }
+
+  // Default-valued fields of all basic types.
+  // Same as GoTest, but copied here to make testing easier.
+  optional bool F_Bool = 1 [default=true];
+  optional int32 F_Int32 = 2 [default=32];
+  optional int64 F_Int64 = 3 [default=64];
+  optional fixed32 F_Fixed32 = 4 [default=320];
+  optional fixed64 F_Fixed64 = 5 [default=640];
+  optional uint32 F_Uint32 = 6 [default=3200];
+  optional uint64 F_Uint64 = 7 [default=6400];
+  optional float F_Float = 8 [default=314159.];
+  optional double F_Double = 9 [default=271828.];
+  optional string F_String = 10 [default="hello, \"world!\"\n"];
+  optional bytes F_Bytes = 11 [default="Bignose"];
+  optional sint32 F_Sint32 = 12 [default=-32];
+  optional sint64 F_Sint64 = 13 [default=-64];
+  optional Color F_Enum = 14 [default=GREEN];
+
+  // More fields with crazy defaults.
+  optional float F_Pinf = 15 [default=inf];
+  optional float F_Ninf = 16 [default=-inf];
+  optional float F_Nan = 17 [default=nan];
+
+  // Sub-message.
+  optional SubDefaults sub = 18;
+
+  // Redundant but explicit defaults.
+  optional string str_zero = 19 [default=""];
+}
+
+message SubDefaults {
+  optional int64 n = 1 [default=7];
+}
+
+message RepeatedEnum {
+  enum Color {
+    RED = 1;
+  }
+  repeated Color color = 1;
+}
+
+message MoreRepeated {
+  repeated bool bools = 1;
+  repeated bool bools_packed = 2 [packed=true];
+  repeated int32 ints = 3;
+  repeated int32 ints_packed = 4 [packed=true];
+  repeated int64 int64s_packed = 7 [packed=true];
+  repeated string strings = 5;
+  repeated fixed32 fixeds = 6;
+}
+
+// GroupOld and GroupNew have the same wire format.
+// GroupNew has a new field inside a group.
+
+message GroupOld {
+  optional group G = 101 {
+    optional int32 x = 2;
+  }
+}
+
+message GroupNew {
+  optional group G = 101 {
+    optional int32 x = 2;
+    optional int32 y = 3;
+  }
+}
+
+message FloatingPoint {
+  required double f = 1;
+  optional bool exact = 2;
+}
+
+message MessageWithMap {
+  map<int32, string> name_mapping = 1;
+  map<sint64, FloatingPoint> msg_mapping = 2;
+  map<bool, bytes> byte_mapping = 3;
+  map<string, string> str_to_str = 4;
+}
+
+message Oneof {
+  oneof union {
+    bool F_Bool = 1;
+    int32 F_Int32 = 2;
+    int64 F_Int64 = 3;
+    fixed32 F_Fixed32 = 4;
+    fixed64 F_Fixed64 = 5;
+    uint32 F_Uint32 = 6;
+    uint64 F_Uint64 = 7;
+    float F_Float = 8;
+    double F_Double = 9;
+    string F_String = 10;
+    bytes F_Bytes = 11;
+    sint32 F_Sint32 = 12;
+    sint64 F_Sint64 = 13;
+    MyMessage.Color F_Enum = 14;
+    GoTestField F_Message = 15;
+    group F_Group = 16 {
+      optional int32 x = 17;
+    }
+    int32 F_Largest_Tag = 536870911;
+  }
+
+  oneof tormato {
+    int32 value = 100;
+  }
+}
+
+message Communique {
+  optional bool make_me_cry = 1;
+
+  // This is a oneof, called "union".
+  oneof union {
+    int32 number = 5;
+    string name = 6;
+    bytes data = 7;
+    double temp_c = 8;
+    MyMessage.Color col = 9;
+    Strings msg = 10;
+  }
+}
+
+message TestUTF8 {
+  optional string scalar = 1;
+  repeated string vector = 2;
+  oneof oneof { string field = 3; }
+  map<string, int64> map_key = 4;
+  map<int64, string> map_value = 5;
+}
diff --git a/proto/testmessages_test.go b/proto/testmessages_test.go
deleted file mode 100644
index a021b3f..0000000
--- a/proto/testmessages_test.go
+++ /dev/null
@@ -1,2025 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package proto_test
-
-import (
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/impl"
-	"google.golang.org/protobuf/internal/protobuild"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/reflect/protoregistry"
-	"google.golang.org/protobuf/testing/protopack"
-
-	legacypb "google.golang.org/protobuf/internal/testprotos/legacy"
-	requiredpb "google.golang.org/protobuf/internal/testprotos/required"
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-	test3pb "google.golang.org/protobuf/internal/testprotos/test3"
-)
-
-type testProto struct {
-	desc             string
-	decodeTo         []proto.Message
-	wire             []byte
-	partial          bool
-	noEncode         bool
-	checkFastInit    bool
-	unmarshalOptions proto.UnmarshalOptions
-	validationStatus impl.ValidationStatus
-	nocheckValidInit bool
-}
-
-func makeMessages(in protobuild.Message, messages ...proto.Message) []proto.Message {
-	if len(messages) == 0 {
-		messages = []proto.Message{
-			&testpb.TestAllTypes{},
-			&test3pb.TestAllTypes{},
-			&testpb.TestAllExtensions{},
-		}
-	}
-	for _, m := range messages {
-		in.Build(m.ProtoReflect())
-	}
-	return messages
-}
-
-func templateMessages(messages ...proto.Message) []protoreflect.MessageType {
-	if len(messages) == 0 {
-		messages = []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*test3pb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		}
-	}
-	var out []protoreflect.MessageType
-	for _, m := range messages {
-		out = append(out, m.ProtoReflect().Type())
-	}
-	return out
-
-}
-
-var testValidMessages = []testProto{
-	{
-		desc:          "basic scalar types",
-		checkFastInit: true,
-		decodeTo: makeMessages(protobuild.Message{
-			"optional_int32":       1001,
-			"optional_int64":       1002,
-			"optional_uint32":      1003,
-			"optional_uint64":      1004,
-			"optional_sint32":      1005,
-			"optional_sint64":      1006,
-			"optional_fixed32":     1007,
-			"optional_fixed64":     1008,
-			"optional_sfixed32":    1009,
-			"optional_sfixed64":    1010,
-			"optional_float":       1011.5,
-			"optional_double":      1012.5,
-			"optional_bool":        true,
-			"optional_string":      "string",
-			"optional_bytes":       []byte("bytes"),
-			"optional_nested_enum": "BAR",
-		}),
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.VarintType}, protopack.Varint(1001),
-			protopack.Tag{2, protopack.VarintType}, protopack.Varint(1002),
-			protopack.Tag{3, protopack.VarintType}, protopack.Uvarint(1003),
-			protopack.Tag{4, protopack.VarintType}, protopack.Uvarint(1004),
-			protopack.Tag{5, protopack.VarintType}, protopack.Svarint(1005),
-			protopack.Tag{6, protopack.VarintType}, protopack.Svarint(1006),
-			protopack.Tag{7, protopack.Fixed32Type}, protopack.Uint32(1007),
-			protopack.Tag{8, protopack.Fixed64Type}, protopack.Uint64(1008),
-			protopack.Tag{9, protopack.Fixed32Type}, protopack.Int32(1009),
-			protopack.Tag{10, protopack.Fixed64Type}, protopack.Int64(1010),
-			protopack.Tag{11, protopack.Fixed32Type}, protopack.Float32(1011.5),
-			protopack.Tag{12, protopack.Fixed64Type}, protopack.Float64(1012.5),
-			protopack.Tag{13, protopack.VarintType}, protopack.Bool(true),
-			protopack.Tag{14, protopack.BytesType}, protopack.String("string"),
-			protopack.Tag{15, protopack.BytesType}, protopack.Bytes([]byte("bytes")),
-			protopack.Tag{21, protopack.VarintType}, protopack.Varint(int(testpb.TestAllTypes_BAR)),
-		}.Marshal(),
-	},
-	{
-		desc: "zero values",
-		decodeTo: makeMessages(protobuild.Message{
-			"optional_int32":    0,
-			"optional_int64":    0,
-			"optional_uint32":   0,
-			"optional_uint64":   0,
-			"optional_sint32":   0,
-			"optional_sint64":   0,
-			"optional_fixed32":  0,
-			"optional_fixed64":  0,
-			"optional_sfixed32": 0,
-			"optional_sfixed64": 0,
-			"optional_float":    0,
-			"optional_double":   0,
-			"optional_bool":     false,
-			"optional_string":   "",
-			"optional_bytes":    []byte{},
-		}),
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.VarintType}, protopack.Varint(0),
-			protopack.Tag{2, protopack.VarintType}, protopack.Varint(0),
-			protopack.Tag{3, protopack.VarintType}, protopack.Uvarint(0),
-			protopack.Tag{4, protopack.VarintType}, protopack.Uvarint(0),
-			protopack.Tag{5, protopack.VarintType}, protopack.Svarint(0),
-			protopack.Tag{6, protopack.VarintType}, protopack.Svarint(0),
-			protopack.Tag{7, protopack.Fixed32Type}, protopack.Uint32(0),
-			protopack.Tag{8, protopack.Fixed64Type}, protopack.Uint64(0),
-			protopack.Tag{9, protopack.Fixed32Type}, protopack.Int32(0),
-			protopack.Tag{10, protopack.Fixed64Type}, protopack.Int64(0),
-			protopack.Tag{11, protopack.Fixed32Type}, protopack.Float32(0),
-			protopack.Tag{12, protopack.Fixed64Type}, protopack.Float64(0),
-			protopack.Tag{13, protopack.VarintType}, protopack.Bool(false),
-			protopack.Tag{14, protopack.BytesType}, protopack.String(""),
-			protopack.Tag{15, protopack.BytesType}, protopack.Bytes(nil),
-		}.Marshal(),
-	},
-	{
-		desc: "proto3 zero values",
-		decodeTo: makeMessages(protobuild.Message{
-			"singular_int32":    0,
-			"singular_int64":    0,
-			"singular_uint32":   0,
-			"singular_uint64":   0,
-			"singular_sint32":   0,
-			"singular_sint64":   0,
-			"singular_fixed32":  0,
-			"singular_fixed64":  0,
-			"singular_sfixed32": 0,
-			"singular_sfixed64": 0,
-			"singular_float":    0,
-			"singular_double":   0,
-			"singular_bool":     false,
-			"singular_string":   "",
-			"singular_bytes":    []byte{},
-		}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{
-			protopack.Tag{81, protopack.VarintType}, protopack.Varint(0),
-			protopack.Tag{82, protopack.VarintType}, protopack.Varint(0),
-			protopack.Tag{83, protopack.VarintType}, protopack.Uvarint(0),
-			protopack.Tag{84, protopack.VarintType}, protopack.Uvarint(0),
-			protopack.Tag{85, protopack.VarintType}, protopack.Svarint(0),
-			protopack.Tag{86, protopack.VarintType}, protopack.Svarint(0),
-			protopack.Tag{87, protopack.Fixed32Type}, protopack.Uint32(0),
-			protopack.Tag{88, protopack.Fixed64Type}, protopack.Uint64(0),
-			protopack.Tag{89, protopack.Fixed32Type}, protopack.Int32(0),
-			protopack.Tag{90, protopack.Fixed64Type}, protopack.Int64(0),
-			protopack.Tag{91, protopack.Fixed32Type}, protopack.Float32(0),
-			protopack.Tag{92, protopack.Fixed64Type}, protopack.Float64(0),
-			protopack.Tag{93, protopack.VarintType}, protopack.Bool(false),
-			protopack.Tag{94, protopack.BytesType}, protopack.String(""),
-			protopack.Tag{95, protopack.BytesType}, protopack.Bytes(nil),
-		}.Marshal(),
-	},
-	{
-		desc: "groups",
-		decodeTo: makeMessages(protobuild.Message{
-			"optionalgroup": protobuild.Message{
-				"a":                 1017,
-				"same_field_number": 1016,
-			},
-		}, &testpb.TestAllTypes{}, &testpb.TestAllExtensions{}),
-		wire: protopack.Message{
-			protopack.Tag{16, protopack.StartGroupType},
-			protopack.Tag{17, protopack.VarintType}, protopack.Varint(1017),
-			protopack.Tag{16, protopack.VarintType}, protopack.Varint(1016),
-			protopack.Tag{16, protopack.EndGroupType},
-		}.Marshal(),
-	},
-	{
-		desc: "groups (field overridden)",
-		decodeTo: makeMessages(protobuild.Message{
-			"optionalgroup": protobuild.Message{
-				"a": 2,
-			},
-		}, &testpb.TestAllTypes{}, &testpb.TestAllExtensions{}),
-		wire: protopack.Message{
-			protopack.Tag{16, protopack.StartGroupType},
-			protopack.Tag{17, protopack.VarintType}, protopack.Varint(1),
-			protopack.Tag{16, protopack.EndGroupType},
-			protopack.Tag{16, protopack.StartGroupType},
-			protopack.Tag{17, protopack.VarintType}, protopack.Varint(2),
-			protopack.Tag{16, protopack.EndGroupType},
-		}.Marshal(),
-	},
-	{
-		desc: "messages",
-		decodeTo: makeMessages(protobuild.Message{
-			"optional_nested_message": protobuild.Message{
-				"a": 42,
-				"corecursive": protobuild.Message{
-					"optional_int32": 43,
-				},
-			},
-		}),
-		wire: protopack.Message{
-			protopack.Tag{18, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(42),
-				protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-					protopack.Tag{1, protopack.VarintType}, protopack.Varint(43),
-				}),
-			}),
-		}.Marshal(),
-	},
-	{
-		desc: "messages (split across multiple tags)",
-		decodeTo: makeMessages(protobuild.Message{
-			"optional_nested_message": protobuild.Message{
-				"a": 42,
-				"corecursive": protobuild.Message{
-					"optional_int32": 43,
-				},
-			},
-		}),
-		wire: protopack.Message{
-			protopack.Tag{18, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(42),
-			}),
-			protopack.Tag{18, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-					protopack.Tag{1, protopack.VarintType}, protopack.Varint(43),
-				}),
-			}),
-		}.Marshal(),
-	},
-	{
-		desc: "messages (field overridden)",
-		decodeTo: makeMessages(protobuild.Message{
-			"optional_nested_message": protobuild.Message{
-				"a": 2,
-			},
-		}),
-		wire: protopack.Message{
-			protopack.Tag{18, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(1),
-			}),
-			protopack.Tag{18, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(2),
-			}),
-		}.Marshal(),
-	},
-	{
-		desc: "basic repeated types",
-		decodeTo: makeMessages(protobuild.Message{
-			"repeated_int32":       []int32{1001, 2001},
-			"repeated_int64":       []int64{1002, 2002},
-			"repeated_uint32":      []uint32{1003, 2003},
-			"repeated_uint64":      []uint64{1004, 2004},
-			"repeated_sint32":      []int32{1005, 2005},
-			"repeated_sint64":      []int64{1006, 2006},
-			"repeated_fixed32":     []uint32{1007, 2007},
-			"repeated_fixed64":     []uint64{1008, 2008},
-			"repeated_sfixed32":    []int32{1009, 2009},
-			"repeated_sfixed64":    []int64{1010, 2010},
-			"repeated_float":       []float32{1011.5, 2011.5},
-			"repeated_double":      []float64{1012.5, 2012.5},
-			"repeated_bool":        []bool{true, false},
-			"repeated_string":      []string{"foo", "bar"},
-			"repeated_bytes":       []string{"FOO", "BAR"},
-			"repeated_nested_enum": []string{"FOO", "BAR"},
-		}),
-		wire: protopack.Message{
-			protopack.Tag{31, protopack.VarintType}, protopack.Varint(1001),
-			protopack.Tag{31, protopack.VarintType}, protopack.Varint(2001),
-			protopack.Tag{32, protopack.VarintType}, protopack.Varint(1002),
-			protopack.Tag{32, protopack.VarintType}, protopack.Varint(2002),
-			protopack.Tag{33, protopack.VarintType}, protopack.Uvarint(1003),
-			protopack.Tag{33, protopack.VarintType}, protopack.Uvarint(2003),
-			protopack.Tag{34, protopack.VarintType}, protopack.Uvarint(1004),
-			protopack.Tag{34, protopack.VarintType}, protopack.Uvarint(2004),
-			protopack.Tag{35, protopack.VarintType}, protopack.Svarint(1005),
-			protopack.Tag{35, protopack.VarintType}, protopack.Svarint(2005),
-			protopack.Tag{36, protopack.VarintType}, protopack.Svarint(1006),
-			protopack.Tag{36, protopack.VarintType}, protopack.Svarint(2006),
-			protopack.Tag{37, protopack.Fixed32Type}, protopack.Uint32(1007),
-			protopack.Tag{37, protopack.Fixed32Type}, protopack.Uint32(2007),
-			protopack.Tag{38, protopack.Fixed64Type}, protopack.Uint64(1008),
-			protopack.Tag{38, protopack.Fixed64Type}, protopack.Uint64(2008),
-			protopack.Tag{39, protopack.Fixed32Type}, protopack.Int32(1009),
-			protopack.Tag{39, protopack.Fixed32Type}, protopack.Int32(2009),
-			protopack.Tag{40, protopack.Fixed64Type}, protopack.Int64(1010),
-			protopack.Tag{40, protopack.Fixed64Type}, protopack.Int64(2010),
-			protopack.Tag{41, protopack.Fixed32Type}, protopack.Float32(1011.5),
-			protopack.Tag{41, protopack.Fixed32Type}, protopack.Float32(2011.5),
-			protopack.Tag{42, protopack.Fixed64Type}, protopack.Float64(1012.5),
-			protopack.Tag{42, protopack.Fixed64Type}, protopack.Float64(2012.5),
-			protopack.Tag{43, protopack.VarintType}, protopack.Bool(true),
-			protopack.Tag{43, protopack.VarintType}, protopack.Bool(false),
-			protopack.Tag{44, protopack.BytesType}, protopack.String("foo"),
-			protopack.Tag{44, protopack.BytesType}, protopack.String("bar"),
-			protopack.Tag{45, protopack.BytesType}, protopack.Bytes([]byte("FOO")),
-			protopack.Tag{45, protopack.BytesType}, protopack.Bytes([]byte("BAR")),
-			protopack.Tag{51, protopack.VarintType}, protopack.Varint(int(testpb.TestAllTypes_FOO)),
-			protopack.Tag{51, protopack.VarintType}, protopack.Varint(int(testpb.TestAllTypes_BAR)),
-		}.Marshal(),
-	},
-	{
-		desc: "basic repeated types (packed encoding)",
-		decodeTo: makeMessages(protobuild.Message{
-			"repeated_int32":       []int32{1001, 2001},
-			"repeated_int64":       []int64{1002, 2002},
-			"repeated_uint32":      []uint32{1003, 2003},
-			"repeated_uint64":      []uint64{1004, 2004},
-			"repeated_sint32":      []int32{1005, 2005},
-			"repeated_sint64":      []int64{1006, 2006},
-			"repeated_fixed32":     []uint32{1007, 2007},
-			"repeated_fixed64":     []uint64{1008, 2008},
-			"repeated_sfixed32":    []int32{1009, 2009},
-			"repeated_sfixed64":    []int64{1010, 2010},
-			"repeated_float":       []float32{1011.5, 2011.5},
-			"repeated_double":      []float64{1012.5, 2012.5},
-			"repeated_bool":        []bool{true, false},
-			"repeated_nested_enum": []string{"FOO", "BAR"},
-		}),
-		wire: protopack.Message{
-			protopack.Tag{31, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Varint(1001), protopack.Varint(2001),
-			},
-			protopack.Tag{32, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Varint(1002), protopack.Varint(2002),
-			},
-			protopack.Tag{33, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Uvarint(1003), protopack.Uvarint(2003),
-			},
-			protopack.Tag{34, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Uvarint(1004), protopack.Uvarint(2004),
-			},
-			protopack.Tag{35, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Svarint(1005), protopack.Svarint(2005),
-			},
-			protopack.Tag{36, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Svarint(1006), protopack.Svarint(2006),
-			},
-			protopack.Tag{37, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Uint32(1007), protopack.Uint32(2007),
-			},
-			protopack.Tag{38, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Uint64(1008), protopack.Uint64(2008),
-			},
-			protopack.Tag{39, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Int32(1009), protopack.Int32(2009),
-			},
-			protopack.Tag{40, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Int64(1010), protopack.Int64(2010),
-			},
-			protopack.Tag{41, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Float32(1011.5), protopack.Float32(2011.5),
-			},
-			protopack.Tag{42, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Float64(1012.5), protopack.Float64(2012.5),
-			},
-			protopack.Tag{43, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Bool(true), protopack.Bool(false),
-			},
-			protopack.Tag{51, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Varint(int(testpb.TestAllTypes_FOO)),
-				protopack.Varint(int(testpb.TestAllTypes_BAR)),
-			},
-		}.Marshal(),
-	},
-	{
-		desc: "basic repeated types (zero-length packed encoding)",
-		decodeTo: makeMessages(protobuild.Message{
-			"repeated_int32":       []int32{},
-			"repeated_int64":       []int64{},
-			"repeated_uint32":      []uint32{},
-			"repeated_uint64":      []uint64{},
-			"repeated_sint32":      []int32{},
-			"repeated_sint64":      []int64{},
-			"repeated_fixed32":     []uint32{},
-			"repeated_fixed64":     []uint64{},
-			"repeated_sfixed32":    []int32{},
-			"repeated_sfixed64":    []int64{},
-			"repeated_float":       []float32{},
-			"repeated_double":      []float64{},
-			"repeated_bool":        []bool{},
-			"repeated_nested_enum": []string{},
-		}),
-		wire: protopack.Message{
-			protopack.Tag{31, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{32, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{33, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{34, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{35, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{36, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{37, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{38, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{39, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{40, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{41, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{42, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{43, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{51, protopack.BytesType}, protopack.LengthPrefix{},
-		}.Marshal(),
-	},
-	{
-		desc: "packed repeated types",
-		decodeTo: makeMessages(protobuild.Message{
-			"packed_int32":    []int32{1001, 2001},
-			"packed_int64":    []int64{1002, 2002},
-			"packed_uint32":   []uint32{1003, 2003},
-			"packed_uint64":   []uint64{1004, 2004},
-			"packed_sint32":   []int32{1005, 2005},
-			"packed_sint64":   []int64{1006, 2006},
-			"packed_fixed32":  []uint32{1007, 2007},
-			"packed_fixed64":  []uint64{1008, 2008},
-			"packed_sfixed32": []int32{1009, 2009},
-			"packed_sfixed64": []int64{1010, 2010},
-			"packed_float":    []float32{1011.5, 2011.5},
-			"packed_double":   []float64{1012.5, 2012.5},
-			"packed_bool":     []bool{true, false},
-			"packed_enum":     []string{"FOREIGN_FOO", "FOREIGN_BAR"},
-		}, &testpb.TestPackedTypes{}, &testpb.TestPackedExtensions{}),
-		wire: protopack.Message{
-			protopack.Tag{90, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Varint(1001), protopack.Varint(2001),
-			},
-			protopack.Tag{91, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Varint(1002), protopack.Varint(2002),
-			},
-			protopack.Tag{92, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Uvarint(1003), protopack.Uvarint(2003),
-			},
-			protopack.Tag{93, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Uvarint(1004), protopack.Uvarint(2004),
-			},
-			protopack.Tag{94, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Svarint(1005), protopack.Svarint(2005),
-			},
-			protopack.Tag{95, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Svarint(1006), protopack.Svarint(2006),
-			},
-			protopack.Tag{96, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Uint32(1007), protopack.Uint32(2007),
-			},
-			protopack.Tag{97, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Uint64(1008), protopack.Uint64(2008),
-			},
-			protopack.Tag{98, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Int32(1009), protopack.Int32(2009),
-			},
-			protopack.Tag{99, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Int64(1010), protopack.Int64(2010),
-			},
-			protopack.Tag{100, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Float32(1011.5), protopack.Float32(2011.5),
-			},
-			protopack.Tag{101, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Float64(1012.5), protopack.Float64(2012.5),
-			},
-			protopack.Tag{102, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Bool(true), protopack.Bool(false),
-			},
-			protopack.Tag{103, protopack.BytesType}, protopack.LengthPrefix{
-				protopack.Varint(int(testpb.ForeignEnum_FOREIGN_FOO)),
-				protopack.Varint(int(testpb.ForeignEnum_FOREIGN_BAR)),
-			},
-		}.Marshal(),
-	},
-	{
-		desc: "packed repeated types (zero length)",
-		decodeTo: makeMessages(protobuild.Message{
-			"packed_int32":    []int32{},
-			"packed_int64":    []int64{},
-			"packed_uint32":   []uint32{},
-			"packed_uint64":   []uint64{},
-			"packed_sint32":   []int32{},
-			"packed_sint64":   []int64{},
-			"packed_fixed32":  []uint32{},
-			"packed_fixed64":  []uint64{},
-			"packed_sfixed32": []int32{},
-			"packed_sfixed64": []int64{},
-			"packed_float":    []float32{},
-			"packed_double":   []float64{},
-			"packed_bool":     []bool{},
-			"packed_enum":     []string{},
-		}, &testpb.TestPackedTypes{}, &testpb.TestPackedExtensions{}),
-		wire: protopack.Message{
-			protopack.Tag{90, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{91, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{92, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{93, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{94, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{95, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{96, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{97, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{98, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{99, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{100, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{101, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{102, protopack.BytesType}, protopack.LengthPrefix{},
-			protopack.Tag{103, protopack.BytesType}, protopack.LengthPrefix{},
-		}.Marshal(),
-	},
-	{
-		desc: "repeated messages",
-		decodeTo: makeMessages(protobuild.Message{
-			"repeated_nested_message": []protobuild.Message{
-				{"a": 1},
-				{},
-				{"a": 2},
-			},
-		}),
-		wire: protopack.Message{
-			protopack.Tag{48, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(1),
-			}),
-			protopack.Tag{48, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{}),
-			protopack.Tag{48, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(2),
-			}),
-		}.Marshal(),
-	},
-	{
-		desc: "repeated nil messages",
-		decodeTo: []proto.Message{&testpb.TestAllTypes{
-			RepeatedNestedMessage: []*testpb.TestAllTypes_NestedMessage{
-				{A: proto.Int32(1)},
-				nil,
-				{A: proto.Int32(2)},
-			},
-		}, &test3pb.TestAllTypes{
-			RepeatedNestedMessage: []*test3pb.TestAllTypes_NestedMessage{
-				{A: 1},
-				nil,
-				{A: 2},
-			},
-		}, build(
-			&testpb.TestAllExtensions{},
-			extend(testpb.E_RepeatedNestedMessage, []*testpb.TestAllExtensions_NestedMessage{
-				{A: proto.Int32(1)},
-				nil,
-				{A: proto.Int32(2)},
-			}),
-		)},
-		wire: protopack.Message{
-			protopack.Tag{48, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(1),
-			}),
-			protopack.Tag{48, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{}),
-			protopack.Tag{48, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(2),
-			}),
-		}.Marshal(),
-	},
-	{
-		desc: "repeated groups",
-		decodeTo: makeMessages(protobuild.Message{
-			"repeatedgroup": []protobuild.Message{
-				{"a": 1017},
-				{},
-				{"a": 2017},
-			},
-		}, &testpb.TestAllTypes{}, &testpb.TestAllExtensions{}),
-		wire: protopack.Message{
-			protopack.Tag{46, protopack.StartGroupType},
-			protopack.Tag{47, protopack.VarintType}, protopack.Varint(1017),
-			protopack.Tag{46, protopack.EndGroupType},
-			protopack.Tag{46, protopack.StartGroupType},
-			protopack.Tag{46, protopack.EndGroupType},
-			protopack.Tag{46, protopack.StartGroupType},
-			protopack.Tag{47, protopack.VarintType}, protopack.Varint(2017),
-			protopack.Tag{46, protopack.EndGroupType},
-		}.Marshal(),
-	},
-	{
-		desc: "repeated nil groups",
-		decodeTo: []proto.Message{&testpb.TestAllTypes{
-			Repeatedgroup: []*testpb.TestAllTypes_RepeatedGroup{
-				{A: proto.Int32(1017)},
-				nil,
-				{A: proto.Int32(2017)},
-			},
-		}, build(
-			&testpb.TestAllExtensions{},
-			extend(testpb.E_Repeatedgroup, []*testpb.RepeatedGroup{
-				{A: proto.Int32(1017)},
-				nil,
-				{A: proto.Int32(2017)},
-			}),
-		)},
-		wire: protopack.Message{
-			protopack.Tag{46, protopack.StartGroupType},
-			protopack.Tag{47, protopack.VarintType}, protopack.Varint(1017),
-			protopack.Tag{46, protopack.EndGroupType},
-			protopack.Tag{46, protopack.StartGroupType},
-			protopack.Tag{46, protopack.EndGroupType},
-			protopack.Tag{46, protopack.StartGroupType},
-			protopack.Tag{47, protopack.VarintType}, protopack.Varint(2017),
-			protopack.Tag{46, protopack.EndGroupType},
-		}.Marshal(),
-	},
-	{
-		desc: "maps",
-		decodeTo: makeMessages(protobuild.Message{
-			"map_int32_int32":       map[int32]int32{1056: 1156, 2056: 2156},
-			"map_int64_int64":       map[int64]int64{1057: 1157, 2057: 2157},
-			"map_uint32_uint32":     map[uint32]uint32{1058: 1158, 2058: 2158},
-			"map_uint64_uint64":     map[uint64]uint64{1059: 1159, 2059: 2159},
-			"map_sint32_sint32":     map[int32]int32{1060: 1160, 2060: 2160},
-			"map_sint64_sint64":     map[int64]int64{1061: 1161, 2061: 2161},
-			"map_fixed32_fixed32":   map[uint32]uint32{1062: 1162, 2062: 2162},
-			"map_fixed64_fixed64":   map[uint64]uint64{1063: 1163, 2063: 2163},
-			"map_sfixed32_sfixed32": map[int32]int32{1064: 1164, 2064: 2164},
-			"map_sfixed64_sfixed64": map[int64]int64{1065: 1165, 2065: 2165},
-			"map_int32_float":       map[int32]float32{1066: 1166.5, 2066: 2166.5},
-			"map_int32_double":      map[int32]float64{1067: 1167.5, 2067: 2167.5},
-			"map_bool_bool":         map[bool]bool{true: false, false: true},
-			"map_string_string":     map[string]string{"69.1.key": "69.1.val", "69.2.key": "69.2.val"},
-			"map_string_bytes":      map[string][]byte{"70.1.key": []byte("70.1.val"), "70.2.key": []byte("70.2.val")},
-			"map_string_nested_message": map[string]protobuild.Message{
-				"71.1.key": {"a": 1171},
-				"71.2.key": {"a": 2171},
-			},
-			"map_string_nested_enum": map[string]string{"73.1.key": "FOO", "73.2.key": "BAR"},
-		}, &testpb.TestAllTypes{}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{
-			protopack.Tag{56, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(1056),
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(1156),
-			}),
-			protopack.Tag{56, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(2056),
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(2156),
-			}),
-			protopack.Tag{57, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(1057),
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(1157),
-			}),
-			protopack.Tag{57, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(2057),
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(2157),
-			}),
-			protopack.Tag{58, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(1058),
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(1158),
-			}),
-			protopack.Tag{58, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(2058),
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(2158),
-			}),
-			protopack.Tag{59, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(1059),
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(1159),
-			}),
-			protopack.Tag{59, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(2059),
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(2159),
-			}),
-			protopack.Tag{60, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Svarint(1060),
-				protopack.Tag{2, protopack.VarintType}, protopack.Svarint(1160),
-			}),
-			protopack.Tag{60, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Svarint(2060),
-				protopack.Tag{2, protopack.VarintType}, protopack.Svarint(2160),
-			}),
-			protopack.Tag{61, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Svarint(1061),
-				protopack.Tag{2, protopack.VarintType}, protopack.Svarint(1161),
-			}),
-			protopack.Tag{61, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Svarint(2061),
-				protopack.Tag{2, protopack.VarintType}, protopack.Svarint(2161),
-			}),
-			protopack.Tag{62, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.Fixed32Type}, protopack.Int32(1062),
-				protopack.Tag{2, protopack.Fixed32Type}, protopack.Int32(1162),
-			}),
-			protopack.Tag{62, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.Fixed32Type}, protopack.Int32(2062),
-				protopack.Tag{2, protopack.Fixed32Type}, protopack.Int32(2162),
-			}),
-			protopack.Tag{63, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.Fixed64Type}, protopack.Int64(1063),
-				protopack.Tag{2, protopack.Fixed64Type}, protopack.Int64(1163),
-			}),
-			protopack.Tag{63, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.Fixed64Type}, protopack.Int64(2063),
-				protopack.Tag{2, protopack.Fixed64Type}, protopack.Int64(2163),
-			}),
-			protopack.Tag{64, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.Fixed32Type}, protopack.Int32(1064),
-				protopack.Tag{2, protopack.Fixed32Type}, protopack.Int32(1164),
-			}),
-			protopack.Tag{64, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.Fixed32Type}, protopack.Int32(2064),
-				protopack.Tag{2, protopack.Fixed32Type}, protopack.Int32(2164),
-			}),
-			protopack.Tag{65, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.Fixed64Type}, protopack.Int64(1065),
-				protopack.Tag{2, protopack.Fixed64Type}, protopack.Int64(1165),
-			}),
-			protopack.Tag{65, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.Fixed64Type}, protopack.Int64(2065),
-				protopack.Tag{2, protopack.Fixed64Type}, protopack.Int64(2165),
-			}),
-			protopack.Tag{66, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(1066),
-				protopack.Tag{2, protopack.Fixed32Type}, protopack.Float32(1166.5),
-			}),
-			protopack.Tag{66, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(2066),
-				protopack.Tag{2, protopack.Fixed32Type}, protopack.Float32(2166.5),
-			}),
-			protopack.Tag{67, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(1067),
-				protopack.Tag{2, protopack.Fixed64Type}, protopack.Float64(1167.5),
-			}),
-			protopack.Tag{67, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(2067),
-				protopack.Tag{2, protopack.Fixed64Type}, protopack.Float64(2167.5),
-			}),
-			protopack.Tag{68, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Bool(true),
-				protopack.Tag{2, protopack.VarintType}, protopack.Bool(false),
-			}),
-			protopack.Tag{68, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Bool(false),
-				protopack.Tag{2, protopack.VarintType}, protopack.Bool(true),
-			}),
-			protopack.Tag{69, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.BytesType}, protopack.String("69.1.key"),
-				protopack.Tag{2, protopack.BytesType}, protopack.String("69.1.val"),
-			}),
-			protopack.Tag{69, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.BytesType}, protopack.String("69.2.key"),
-				protopack.Tag{2, protopack.BytesType}, protopack.String("69.2.val"),
-			}),
-			protopack.Tag{70, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.BytesType}, protopack.String("70.1.key"),
-				protopack.Tag{2, protopack.BytesType}, protopack.String("70.1.val"),
-			}),
-			protopack.Tag{70, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.BytesType}, protopack.String("70.2.key"),
-				protopack.Tag{2, protopack.BytesType}, protopack.String("70.2.val"),
-			}),
-			protopack.Tag{71, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.BytesType}, protopack.String("71.1.key"),
-				protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-					protopack.Tag{1, protopack.VarintType}, protopack.Varint(1171),
-				}),
-			}),
-			protopack.Tag{71, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.BytesType}, protopack.String("71.2.key"),
-				protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-					protopack.Tag{1, protopack.VarintType}, protopack.Varint(2171),
-				}),
-			}),
-			protopack.Tag{73, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.BytesType}, protopack.String("73.1.key"),
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(int(testpb.TestAllTypes_FOO)),
-			}),
-			protopack.Tag{73, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.BytesType}, protopack.String("73.2.key"),
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(int(testpb.TestAllTypes_BAR)),
-			}),
-		}.Marshal(),
-	},
-	{
-		desc: "map with value before key",
-		decodeTo: makeMessages(protobuild.Message{
-			"map_int32_int32": map[int32]int32{1056: 1156},
-			"map_string_nested_message": map[string]protobuild.Message{
-				"71.1.key": {"a": 1171},
-			},
-		}, &testpb.TestAllTypes{}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{
-			protopack.Tag{56, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(1156),
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(1056),
-			}),
-			protopack.Tag{71, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-					protopack.Tag{1, protopack.VarintType}, protopack.Varint(1171),
-				}),
-				protopack.Tag{1, protopack.BytesType}, protopack.String("71.1.key"),
-			}),
-		}.Marshal(),
-	},
-	{
-		desc: "map with repeated key and value",
-		decodeTo: makeMessages(protobuild.Message{
-			"map_int32_int32": map[int32]int32{1056: 1156},
-			"map_string_nested_message": map[string]protobuild.Message{
-				"71.1.key": {"a": 1171},
-			},
-		}, &testpb.TestAllTypes{}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{
-			protopack.Tag{56, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(0),
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(0),
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(1056),
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(1156),
-			}),
-			protopack.Tag{71, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.BytesType}, protopack.String(""),
-				protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{}),
-				protopack.Tag{1, protopack.BytesType}, protopack.String("71.1.key"),
-				protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-					protopack.Tag{1, protopack.VarintType}, protopack.Varint(1171),
-				}),
-			}),
-		}.Marshal(),
-	},
-	{
-		desc: "oneof (uint32)",
-		decodeTo: makeMessages(protobuild.Message{
-			"oneof_uint32": 1111,
-		}, &testpb.TestAllTypes{}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{protopack.Tag{111, protopack.VarintType}, protopack.Varint(1111)}.Marshal(),
-	},
-	{
-		desc: "oneof (message)",
-		decodeTo: makeMessages(protobuild.Message{
-			"oneof_nested_message": protobuild.Message{
-				"a": 1112,
-			},
-		}, &testpb.TestAllTypes{}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{protopack.Tag{112, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-			protopack.Message{protopack.Tag{1, protopack.VarintType}, protopack.Varint(1112)},
-		})}.Marshal(),
-	},
-	{
-		desc: "oneof (empty message)",
-		decodeTo: makeMessages(protobuild.Message{
-			"oneof_nested_message": protobuild.Message{},
-		}, &testpb.TestAllTypes{}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{protopack.Tag{112, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{})}.Marshal(),
-	},
-	{
-		desc: "oneof (merged message)",
-		decodeTo: makeMessages(protobuild.Message{
-			"oneof_nested_message": protobuild.Message{
-				"a": 1,
-				"corecursive": protobuild.Message{
-					"optional_int32": 43,
-				},
-			},
-		}, &testpb.TestAllTypes{}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{
-			protopack.Tag{112, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Message{protopack.Tag{1, protopack.VarintType}, protopack.Varint(1)},
-			}),
-			protopack.Tag{112, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-					protopack.Tag{1, protopack.VarintType}, protopack.Varint(43),
-				}),
-			}),
-		}.Marshal(),
-	},
-	{
-		desc: "oneof (group)",
-		decodeTo: makeMessages(protobuild.Message{
-			"oneofgroup": protobuild.Message{
-				"a": 1,
-			},
-		}, &testpb.TestAllTypes{}),
-		wire: protopack.Message{
-			protopack.Tag{121, protopack.StartGroupType},
-			protopack.Tag{1, protopack.VarintType}, protopack.Varint(1),
-			protopack.Tag{121, protopack.EndGroupType},
-		}.Marshal(),
-	},
-	{
-		desc: "oneof (empty group)",
-		decodeTo: makeMessages(protobuild.Message{
-			"oneofgroup": protobuild.Message{},
-		}, &testpb.TestAllTypes{}),
-		wire: protopack.Message{
-			protopack.Tag{121, protopack.StartGroupType},
-			protopack.Tag{121, protopack.EndGroupType},
-		}.Marshal(),
-	},
-	{
-		desc: "oneof (merged group)",
-		decodeTo: makeMessages(protobuild.Message{
-			"oneofgroup": protobuild.Message{
-				"a": 1,
-				"b": 2,
-			},
-		}, &testpb.TestAllTypes{}),
-		wire: protopack.Message{
-			protopack.Tag{121, protopack.StartGroupType},
-			protopack.Tag{1, protopack.VarintType}, protopack.Varint(1),
-			protopack.Tag{121, protopack.EndGroupType},
-			protopack.Tag{121, protopack.StartGroupType},
-			protopack.Tag{2, protopack.VarintType}, protopack.Varint(2),
-			protopack.Tag{121, protopack.EndGroupType},
-		}.Marshal(),
-	},
-	{
-		desc: "oneof (string)",
-		decodeTo: makeMessages(protobuild.Message{
-			"oneof_string": "1113",
-		}, &testpb.TestAllTypes{}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{protopack.Tag{113, protopack.BytesType}, protopack.String("1113")}.Marshal(),
-	},
-	{
-		desc: "oneof (bytes)",
-		decodeTo: makeMessages(protobuild.Message{
-			"oneof_bytes": "1114",
-		}, &testpb.TestAllTypes{}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{protopack.Tag{114, protopack.BytesType}, protopack.String("1114")}.Marshal(),
-	},
-	{
-		desc: "oneof (bool)",
-		decodeTo: makeMessages(protobuild.Message{
-			"oneof_bool": true,
-		}, &testpb.TestAllTypes{}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{protopack.Tag{115, protopack.VarintType}, protopack.Bool(true)}.Marshal(),
-	},
-	{
-		desc: "oneof (uint64)",
-		decodeTo: makeMessages(protobuild.Message{
-			"oneof_uint64": 116,
-		}, &testpb.TestAllTypes{}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{protopack.Tag{116, protopack.VarintType}, protopack.Varint(116)}.Marshal(),
-	},
-	{
-		desc: "oneof (float)",
-		decodeTo: makeMessages(protobuild.Message{
-			"oneof_float": 117.5,
-		}, &testpb.TestAllTypes{}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{protopack.Tag{117, protopack.Fixed32Type}, protopack.Float32(117.5)}.Marshal(),
-	},
-	{
-		desc: "oneof (double)",
-		decodeTo: makeMessages(protobuild.Message{
-			"oneof_double": 118.5,
-		}, &testpb.TestAllTypes{}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{protopack.Tag{118, protopack.Fixed64Type}, protopack.Float64(118.5)}.Marshal(),
-	},
-	{
-		desc: "oneof (enum)",
-		decodeTo: makeMessages(protobuild.Message{
-			"oneof_enum": "BAR",
-		}, &testpb.TestAllTypes{}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{protopack.Tag{119, protopack.VarintType}, protopack.Varint(int(testpb.TestAllTypes_BAR))}.Marshal(),
-	},
-	{
-		desc: "oneof (zero)",
-		decodeTo: makeMessages(protobuild.Message{
-			"oneof_uint64": 0,
-		}, &testpb.TestAllTypes{}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{protopack.Tag{116, protopack.VarintType}, protopack.Varint(0)}.Marshal(),
-	},
-	{
-		desc: "oneof (overridden value)",
-		decodeTo: makeMessages(protobuild.Message{
-			"oneof_uint64": 2,
-		}, &testpb.TestAllTypes{}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{
-			protopack.Tag{111, protopack.VarintType}, protopack.Varint(1),
-			protopack.Tag{116, protopack.VarintType}, protopack.Varint(2),
-		}.Marshal(),
-	},
-	// TODO: More unknown field tests for ordering, repeated fields, etc.
-	//
-	// It is currently impossible to produce results that the v1 Equal
-	// considers equivalent to those of the v1 decoder. Figure out if
-	// that's a problem or not.
-	{
-		desc:          "unknown fields",
-		checkFastInit: true,
-		decodeTo: makeMessages(protobuild.Message{
-			protobuild.Unknown: protopack.Message{
-				protopack.Tag{100000, protopack.VarintType}, protopack.Varint(1),
-			}.Marshal(),
-		}),
-		wire: protopack.Message{
-			protopack.Tag{100000, protopack.VarintType}, protopack.Varint(1),
-		}.Marshal(),
-	},
-	{
-		desc: "discarded unknown fields",
-		unmarshalOptions: proto.UnmarshalOptions{
-			DiscardUnknown: true,
-		},
-		decodeTo: makeMessages(protobuild.Message{}),
-		wire: protopack.Message{
-			protopack.Tag{100000, protopack.VarintType}, protopack.Varint(1),
-		}.Marshal(),
-	},
-	{
-		desc: "field type mismatch",
-		decodeTo: makeMessages(protobuild.Message{
-			protobuild.Unknown: protopack.Message{
-				protopack.Tag{1, protopack.BytesType}, protopack.String("string"),
-			}.Marshal(),
-		}),
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.BytesType}, protopack.String("string"),
-		}.Marshal(),
-	},
-	{
-		desc: "map field element mismatch",
-		decodeTo: makeMessages(protobuild.Message{
-			"map_int32_int32": map[int32]int32{1: 0},
-		}, &testpb.TestAllTypes{}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{
-			protopack.Tag{56, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(1),
-				protopack.Tag{2, protopack.BytesType}, protopack.String("string"),
-			}),
-		}.Marshal(),
-	},
-	{
-		desc:          "required field in nil message unset",
-		checkFastInit: true,
-		partial:       true,
-		decodeTo:      []proto.Message{(*testpb.TestRequired)(nil)},
-	},
-	{
-		desc:          "required int32 unset",
-		checkFastInit: true,
-		partial:       true,
-		decodeTo:      makeMessages(protobuild.Message{}, &requiredpb.Int32{}),
-	},
-	{
-		desc:          "required int32 set",
-		checkFastInit: true,
-		decodeTo: makeMessages(protobuild.Message{
-			"v": 1,
-		}, &requiredpb.Int32{}),
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.VarintType}, protopack.Varint(1),
-		}.Marshal(),
-	},
-	{
-		desc:          "required fixed32 unset",
-		checkFastInit: true,
-		partial:       true,
-		decodeTo:      makeMessages(protobuild.Message{}, &requiredpb.Fixed32{}),
-	},
-	{
-		desc:          "required fixed32 set",
-		checkFastInit: true,
-		decodeTo: makeMessages(protobuild.Message{
-			"v": 1,
-		}, &requiredpb.Fixed32{}),
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.Fixed32Type}, protopack.Int32(1),
-		}.Marshal(),
-	},
-	{
-		desc:          "required fixed64 unset",
-		checkFastInit: true,
-		partial:       true,
-		decodeTo:      makeMessages(protobuild.Message{}, &requiredpb.Fixed64{}),
-	},
-	{
-		desc:          "required fixed64 set",
-		checkFastInit: true,
-		decodeTo: makeMessages(protobuild.Message{
-			"v": 1,
-		}, &requiredpb.Fixed64{}),
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.Fixed64Type}, protopack.Int64(1),
-		}.Marshal(),
-	},
-	{
-		desc:          "required bytes unset",
-		checkFastInit: true,
-		partial:       true,
-		decodeTo:      makeMessages(protobuild.Message{}, &requiredpb.Bytes{}),
-	},
-	{
-		desc:          "required bytes set",
-		checkFastInit: true,
-		decodeTo: makeMessages(protobuild.Message{
-			"v": "",
-		}, &requiredpb.Bytes{}),
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.BytesType}, protopack.Bytes(nil),
-		}.Marshal(),
-	},
-	{
-		desc:          "required message unset",
-		checkFastInit: true,
-		partial:       true,
-		decodeTo:      makeMessages(protobuild.Message{}, &requiredpb.Message{}),
-	},
-	{
-		desc:          "required message set",
-		checkFastInit: true,
-		decodeTo: makeMessages(protobuild.Message{
-			"v": protobuild.Message{},
-		}, &requiredpb.Message{}),
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{}),
-		}.Marshal(),
-	},
-	{
-		desc:          "required group unset",
-		checkFastInit: true,
-		partial:       true,
-		decodeTo:      makeMessages(protobuild.Message{}, &requiredpb.Group{}),
-	},
-	{
-		desc:          "required group set",
-		checkFastInit: true,
-		decodeTo: makeMessages(protobuild.Message{
-			"group": protobuild.Message{},
-		}, &requiredpb.Group{}),
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.StartGroupType},
-			protopack.Tag{1, protopack.EndGroupType},
-		}.Marshal(),
-	},
-	{
-		desc:          "required field with incompatible wire type",
-		checkFastInit: true,
-		partial:       true,
-		decodeTo: []proto.Message{build(
-			&testpb.TestRequired{},
-			unknown(protopack.Message{
-				protopack.Tag{1, protopack.Fixed32Type}, protopack.Int32(2),
-			}.Marshal()),
-		)},
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.Fixed32Type}, protopack.Int32(2),
-		}.Marshal(),
-	},
-	{
-		desc:          "required field in optional message unset",
-		checkFastInit: true,
-		partial:       true,
-		decodeTo: makeMessages(protobuild.Message{
-			"optional_message": protobuild.Message{},
-		}, &testpb.TestRequiredForeign{}),
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{}),
-		}.Marshal(),
-	},
-	{
-		desc:          "required field in optional message set",
-		checkFastInit: true,
-		decodeTo: makeMessages(protobuild.Message{
-			"optional_message": protobuild.Message{
-				"required_field": 1,
-			},
-		}, &testpb.TestRequiredForeign{}),
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(1),
-			}),
-		}.Marshal(),
-	},
-	{
-		desc:             "required field in optional message set (split across multiple tags)",
-		checkFastInit:    false, // fast init checks don't handle split messages
-		nocheckValidInit: true,  // validation doesn't either
-		decodeTo: makeMessages(protobuild.Message{
-			"optional_message": protobuild.Message{
-				"required_field": 1,
-			},
-		}, &testpb.TestRequiredForeign{}),
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{}),
-			protopack.Tag{1, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(1),
-			}),
-		}.Marshal(),
-	},
-	{
-		desc:          "required field in repeated message unset",
-		checkFastInit: true,
-		partial:       true,
-		decodeTo: makeMessages(protobuild.Message{
-			"repeated_message": []protobuild.Message{
-				{"required_field": 1},
-				{},
-			},
-		}, &testpb.TestRequiredForeign{}),
-		wire: protopack.Message{
-			protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(1),
-			}),
-			protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{}),
-		}.Marshal(),
-	},
-	{
-		desc:          "required field in repeated message set",
-		checkFastInit: true,
-		decodeTo: makeMessages(protobuild.Message{
-			"repeated_message": []protobuild.Message{
-				{"required_field": 1},
-				{"required_field": 2},
-			},
-		}, &testpb.TestRequiredForeign{}),
-		wire: protopack.Message{
-			protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(1),
-			}),
-			protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(2),
-			}),
-		}.Marshal(),
-	},
-	{
-		desc:          "required field in map message unset",
-		checkFastInit: true,
-		partial:       true,
-		decodeTo: makeMessages(protobuild.Message{
-			"map_message": map[int32]protobuild.Message{
-				1: {"required_field": 1},
-				2: {},
-			},
-		}, &testpb.TestRequiredForeign{}),
-		wire: protopack.Message{
-			protopack.Tag{3, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(1),
-				protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-					protopack.Tag{1, protopack.VarintType}, protopack.Varint(1),
-				}),
-			}),
-			protopack.Tag{3, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(2),
-				protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{}),
-			}),
-		}.Marshal(),
-	},
-	{
-		desc:          "required field in absent map message value",
-		checkFastInit: true,
-		partial:       true,
-		decodeTo: makeMessages(protobuild.Message{
-			"map_message": map[int32]protobuild.Message{
-				2: {},
-			},
-		}, &testpb.TestRequiredForeign{}),
-		wire: protopack.Message{
-			protopack.Tag{3, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(2),
-			}),
-		}.Marshal(),
-	},
-	{
-		desc:          "required field in map message set",
-		checkFastInit: true,
-		decodeTo: makeMessages(protobuild.Message{
-			"map_message": map[int32]protobuild.Message{
-				1: {"required_field": 1},
-				2: {"required_field": 2},
-			},
-		}, &testpb.TestRequiredForeign{}),
-		wire: protopack.Message{
-			protopack.Tag{3, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(1),
-				protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-					protopack.Tag{1, protopack.VarintType}, protopack.Varint(1),
-				}),
-			}),
-			protopack.Tag{3, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(2),
-				protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-					protopack.Tag{1, protopack.VarintType}, protopack.Varint(2),
-				}),
-			}),
-		}.Marshal(),
-	},
-	{
-		desc:          "required field in optional group unset",
-		checkFastInit: true,
-		partial:       true,
-		decodeTo: makeMessages(protobuild.Message{
-			"optionalgroup": protobuild.Message{},
-		}, &testpb.TestRequiredGroupFields{}),
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.StartGroupType},
-			protopack.Tag{1, protopack.EndGroupType},
-		}.Marshal(),
-	},
-	{
-		desc:          "required field in optional group set",
-		checkFastInit: true,
-		decodeTo: makeMessages(protobuild.Message{
-			"optionalgroup": protobuild.Message{
-				"a": 1,
-			},
-		}, &testpb.TestRequiredGroupFields{}),
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.StartGroupType},
-			protopack.Tag{2, protopack.VarintType}, protopack.Varint(1),
-			protopack.Tag{1, protopack.EndGroupType},
-		}.Marshal(),
-	},
-	{
-		desc:          "required field in repeated group unset",
-		checkFastInit: true,
-		partial:       true,
-		decodeTo: makeMessages(protobuild.Message{
-			"repeatedgroup": []protobuild.Message{
-				{"a": 1},
-				{},
-			},
-		}, &testpb.TestRequiredGroupFields{}),
-		wire: protopack.Message{
-			protopack.Tag{3, protopack.StartGroupType},
-			protopack.Tag{4, protopack.VarintType}, protopack.Varint(1),
-			protopack.Tag{3, protopack.EndGroupType},
-			protopack.Tag{3, protopack.StartGroupType},
-			protopack.Tag{3, protopack.EndGroupType},
-		}.Marshal(),
-	},
-	{
-		desc:          "required field in repeated group set",
-		checkFastInit: true,
-		decodeTo: makeMessages(protobuild.Message{
-			"repeatedgroup": []protobuild.Message{
-				{"a": 1},
-				{"a": 2},
-			},
-		}, &testpb.TestRequiredGroupFields{}),
-		wire: protopack.Message{
-			protopack.Tag{3, protopack.StartGroupType},
-			protopack.Tag{4, protopack.VarintType}, protopack.Varint(1),
-			protopack.Tag{3, protopack.EndGroupType},
-			protopack.Tag{3, protopack.StartGroupType},
-			protopack.Tag{4, protopack.VarintType}, protopack.Varint(2),
-			protopack.Tag{3, protopack.EndGroupType},
-		}.Marshal(),
-	},
-	{
-		desc:          "required field in oneof message unset",
-		checkFastInit: true,
-		partial:       true,
-		decodeTo: makeMessages(protobuild.Message{
-			"oneof_message": protobuild.Message{},
-		}, &testpb.TestRequiredForeign{}),
-		wire: protopack.Message{protopack.Tag{4, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{})}.Marshal(),
-	},
-	{
-		desc:          "required field in oneof message set",
-		checkFastInit: true,
-		decodeTo: makeMessages(protobuild.Message{
-			"oneof_message": protobuild.Message{
-				"required_field": 1,
-			},
-		}, &testpb.TestRequiredForeign{}),
-		wire: protopack.Message{protopack.Tag{4, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-			protopack.Tag{1, protopack.VarintType}, protopack.Varint(1),
-		})}.Marshal(),
-	},
-	{
-		desc:          "required field in extension message unset",
-		checkFastInit: true,
-		partial:       true,
-		decodeTo: makeMessages(protobuild.Message{
-			"single": protobuild.Message{},
-		}, &testpb.TestAllExtensions{}),
-		wire: protopack.Message{
-			protopack.Tag{1000, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{}),
-		}.Marshal(),
-	},
-	{
-		desc:          "required field in extension message set",
-		checkFastInit: true,
-		decodeTo: makeMessages(protobuild.Message{
-			"single": protobuild.Message{
-				"required_field": 1,
-			},
-		}, &testpb.TestAllExtensions{}),
-		wire: protopack.Message{
-			protopack.Tag{1000, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(1),
-			}),
-		}.Marshal(),
-	},
-	{
-		desc:          "required field in repeated extension message unset",
-		checkFastInit: true,
-		partial:       true,
-		decodeTo: makeMessages(protobuild.Message{
-			"multi": []protobuild.Message{
-				{"required_field": 1},
-				{},
-			},
-		}, &testpb.TestAllExtensions{}),
-		wire: protopack.Message{
-			protopack.Tag{1001, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(1),
-			}),
-			protopack.Tag{1001, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{}),
-		}.Marshal(),
-	},
-	{
-		desc:          "required field in repeated extension message set",
-		checkFastInit: true,
-		decodeTo: makeMessages(protobuild.Message{
-			"multi": []protobuild.Message{
-				{"required_field": 1},
-				{"required_field": 2},
-			},
-		}, &testpb.TestAllExtensions{}),
-		wire: protopack.Message{
-			protopack.Tag{1001, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(1),
-			}),
-			protopack.Tag{1001, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(2),
-			}),
-		}.Marshal(),
-	},
-	{
-		desc: "nil messages",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*test3pb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-	},
-	{
-		desc:    "legacy",
-		partial: true,
-		decodeTo: makeMessages(protobuild.Message{
-			"f1": protobuild.Message{
-				"optional_int32":      1,
-				"optional_child_enum": "ALPHA",
-				"optional_child_message": protobuild.Message{
-					"f1": "x",
-				},
-				"optionalgroup": protobuild.Message{
-					"f1": "x",
-				},
-				"repeated_child_message": []protobuild.Message{
-					{"f1": "x"},
-				},
-				"repeatedgroup": []protobuild.Message{
-					{"f1": "x"},
-				},
-				"map_bool_child_message": map[bool]protobuild.Message{
-					true: {"f1": "x"},
-				},
-				"oneof_child_message": protobuild.Message{
-					"f1": "x",
-				},
-			},
-		}, &legacypb.Legacy{}),
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{101, protopack.VarintType}, protopack.Varint(1),
-				protopack.Tag{115, protopack.VarintType}, protopack.Varint(0),
-				protopack.Tag{116, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-					protopack.Tag{1, protopack.BytesType}, protopack.String("x"),
-				}),
-				protopack.Tag{120, protopack.StartGroupType},
-				protopack.Tag{1, protopack.BytesType}, protopack.String("x"),
-				protopack.Tag{120, protopack.EndGroupType},
-				protopack.Tag{516, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-					protopack.Tag{1, protopack.BytesType}, protopack.String("x"),
-				}),
-				protopack.Tag{520, protopack.StartGroupType},
-				protopack.Tag{1, protopack.BytesType}, protopack.String("x"),
-				protopack.Tag{520, protopack.EndGroupType},
-				protopack.Tag{616, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-					protopack.Tag{1, protopack.VarintType}, protopack.Varint(1),
-					protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-						protopack.Tag{1, protopack.BytesType}, protopack.String("x"),
-					}),
-				}),
-				protopack.Tag{716, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-					protopack.Tag{1, protopack.BytesType}, protopack.String("x"),
-				}),
-			}),
-		}.Marshal(),
-		validationStatus: impl.ValidationUnknown,
-	},
-	{
-		desc: "first reserved field number",
-		decodeTo: makeMessages(protobuild.Message{
-			protobuild.Unknown: protopack.Message{
-				protopack.Tag{protopack.FirstReservedNumber, protopack.VarintType}, protopack.Varint(1004),
-			}.Marshal(),
-		}),
-		wire: protopack.Message{
-			protopack.Tag{protopack.FirstReservedNumber, protopack.VarintType}, protopack.Varint(1004),
-		}.Marshal(),
-	},
-	{
-		desc: "last reserved field number",
-		decodeTo: makeMessages(protobuild.Message{
-			protobuild.Unknown: protopack.Message{
-				protopack.Tag{protopack.LastReservedNumber, protopack.VarintType}, protopack.Varint(1005),
-			}.Marshal(),
-		}),
-		wire: protopack.Message{
-			protopack.Tag{protopack.LastReservedNumber, protopack.VarintType}, protopack.Varint(1005),
-		}.Marshal(),
-	},
-	{
-		desc: "nested unknown extension",
-		unmarshalOptions: proto.UnmarshalOptions{
-			DiscardUnknown: true,
-			Resolver: filterResolver{
-				filter: func(name protoreflect.FullName) bool {
-					switch name.Name() {
-					case "optional_nested_message",
-						"optional_int32":
-						return true
-					}
-					return false
-				},
-				resolver: protoregistry.GlobalTypes,
-			},
-		},
-		decodeTo: makeMessages(protobuild.Message{
-			"optional_nested_message": protobuild.Message{
-				"corecursive": protobuild.Message{
-					"optional_nested_message": protobuild.Message{
-						"corecursive": protobuild.Message{
-							"optional_int32": 42,
-						},
-					},
-				},
-			},
-		}, &testpb.TestAllExtensions{}),
-		wire: protopack.Message{
-			protopack.Tag{18, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-					protopack.Tag{18, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-						protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-							protopack.Tag{1, protopack.VarintType}, protopack.Varint(42),
-							protopack.Tag{2, protopack.VarintType}, protopack.Varint(43),
-						}),
-					}),
-				}),
-			}),
-		}.Marshal(),
-	},
-}
-
-var testInvalidMessages = []testProto{
-	{
-		desc: "invalid UTF-8 in optional string field",
-		decodeTo: makeMessages(protobuild.Message{
-			"optional_string": "abc\xff",
-		}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{
-			protopack.Tag{14, protopack.BytesType}, protopack.String("abc\xff"),
-		}.Marshal(),
-	},
-	{
-		desc: "invalid UTF-8 in singular string field",
-		decodeTo: makeMessages(protobuild.Message{
-			"singular_string": "abc\xff",
-		}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{
-			protopack.Tag{94, protopack.BytesType}, protopack.String("abc\xff"),
-		}.Marshal(),
-	},
-	{
-		desc: "invalid UTF-8 in repeated string field",
-		decodeTo: makeMessages(protobuild.Message{
-			"repeated_string": []string{"foo", "abc\xff"},
-		}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{
-			protopack.Tag{44, protopack.BytesType}, protopack.String("foo"),
-			protopack.Tag{44, protopack.BytesType}, protopack.String("abc\xff"),
-		}.Marshal(),
-	},
-	{
-		desc: "invalid UTF-8 in nested message",
-		decodeTo: makeMessages(protobuild.Message{
-			"optional_nested_message": protobuild.Message{
-				"corecursive": protobuild.Message{
-					"singular_string": "abc\xff",
-				},
-			},
-		}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{
-			protopack.Tag{18, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-					protopack.Tag{94, protopack.BytesType}, protopack.String("abc\xff"),
-				}),
-			}),
-		}.Marshal(),
-	},
-	{
-		desc: "invalid UTF-8 in oneof field",
-		decodeTo: makeMessages(protobuild.Message{
-			"oneof_string": "abc\xff",
-		}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{protopack.Tag{113, protopack.BytesType}, protopack.String("abc\xff")}.Marshal(),
-	},
-	{
-		desc: "invalid UTF-8 in map key",
-		decodeTo: makeMessages(protobuild.Message{
-			"map_string_string": map[string]string{"key\xff": "val"},
-		}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{
-			protopack.Tag{69, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.BytesType}, protopack.String("key\xff"),
-				protopack.Tag{2, protopack.BytesType}, protopack.String("val"),
-			}),
-		}.Marshal(),
-	},
-	{
-		desc: "invalid UTF-8 in map value",
-		decodeTo: makeMessages(protobuild.Message{
-			"map_string_string": map[string]string{"key": "val\xff"},
-		}, &test3pb.TestAllTypes{}),
-		wire: protopack.Message{
-			protopack.Tag{69, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.BytesType}, protopack.String("key"),
-				protopack.Tag{2, protopack.BytesType}, protopack.String("val\xff"),
-			}),
-		}.Marshal(),
-	},
-	{
-		desc: "invalid field number zero",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{protopack.MinValidNumber - 1, protopack.VarintType}, protopack.Varint(1001),
-		}.Marshal(),
-	},
-	{
-		desc: "invalid field numbers zero and one",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{protopack.MinValidNumber - 1, protopack.VarintType}, protopack.Varint(1002),
-			protopack.Tag{protopack.MinValidNumber, protopack.VarintType}, protopack.Varint(1003),
-		}.Marshal(),
-	},
-	{
-		desc: "invalid field numbers max and max+1",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{protopack.MaxValidNumber, protopack.VarintType}, protopack.Varint(1006),
-			protopack.Tag{protopack.MaxValidNumber + 1, protopack.VarintType}, protopack.Varint(1007),
-		}.Marshal(),
-	},
-	{
-		desc: "invalid field number max+1",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{protopack.MaxValidNumber + 1, protopack.VarintType}, protopack.Varint(1008),
-		}.Marshal(),
-	},
-	{
-		desc: "invalid field number wraps int32",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Varint(2234993595104), protopack.Varint(0),
-		}.Marshal(),
-	},
-	{
-		desc:     "invalid field number in map",
-		decodeTo: []proto.Message{(*testpb.TestAllTypes)(nil)},
-		wire: protopack.Message{
-			protopack.Tag{56, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(1056),
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(1156),
-				protopack.Tag{protopack.MaxValidNumber + 1, protopack.VarintType}, protopack.Varint(0),
-			}),
-		}.Marshal(),
-	},
-	{
-		desc: "invalid tag varint",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: []byte{0xff},
-	},
-	{
-		desc: "field number too small",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{0, protopack.VarintType}, protopack.Varint(0),
-		}.Marshal(),
-	},
-	{
-		desc: "field number too large",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{protowire.MaxValidNumber + 1, protopack.VarintType}, protopack.Varint(0),
-		}.Marshal(),
-	},
-	{
-		desc: "invalid tag varint in message field",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{18, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Raw{0xff},
-			}),
-		}.Marshal(),
-	},
-	{
-		desc: "invalid tag varint in repeated message field",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{48, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Raw{0xff},
-			}),
-		}.Marshal(),
-	},
-	{
-		desc: "invalid varint in group field",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{16, protopack.StartGroupType},
-			protopack.Tag{1000, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Raw{0xff},
-			}),
-			protopack.Tag{16, protopack.EndGroupType},
-		}.Marshal(),
-	},
-	{
-		desc: "invalid varint in repeated group field",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{46, protopack.StartGroupType},
-			protopack.Tag{1001, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Raw{0xff},
-			}),
-			protopack.Tag{46, protopack.EndGroupType},
-		}.Marshal(),
-	},
-	{
-		desc: "unterminated repeated group field",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{46, protopack.StartGroupType},
-		}.Marshal(),
-	},
-	{
-		desc: "invalid tag varint in map item",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{56, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(0),
-				protopack.Tag{2, protopack.VarintType}, protopack.Varint(0),
-				protopack.Raw{0xff},
-			}),
-		}.Marshal(),
-	},
-	{
-		desc: "invalid tag varint in map message value",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{71, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(0),
-				protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-					protopack.Raw{0xff},
-				}),
-			}),
-		}.Marshal(),
-	},
-	{
-		desc: "invalid packed int32 field",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{31, protopack.BytesType}, protopack.Bytes{0xff},
-		}.Marshal(),
-	},
-	{
-		desc: "invalid packed int64 field",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{32, protopack.BytesType}, protopack.Bytes{0xff},
-		}.Marshal(),
-	},
-	{
-		desc: "invalid packed uint32 field",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{33, protopack.BytesType}, protopack.Bytes{0xff},
-		}.Marshal(),
-	},
-	{
-		desc: "invalid packed uint64 field",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{34, protopack.BytesType}, protopack.Bytes{0xff},
-		}.Marshal(),
-	},
-	{
-		desc: "invalid packed sint32 field",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{35, protopack.BytesType}, protopack.Bytes{0xff},
-		}.Marshal(),
-	},
-	{
-		desc: "invalid packed sint64 field",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{36, protopack.BytesType}, protopack.Bytes{0xff},
-		}.Marshal(),
-	},
-	{
-		desc: "invalid packed fixed32 field",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{37, protopack.BytesType}, protopack.Bytes{0x00},
-		}.Marshal(),
-	},
-	{
-		desc: "invalid packed fixed64 field",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{38, protopack.BytesType}, protopack.Bytes{0x00},
-		}.Marshal(),
-	},
-	{
-		desc: "invalid packed sfixed32 field",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{39, protopack.BytesType}, protopack.Bytes{0x00},
-		}.Marshal(),
-	},
-	{
-		desc: "invalid packed sfixed64 field",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{40, protopack.BytesType}, protopack.Bytes{0x00},
-		}.Marshal(),
-	},
-	{
-		desc: "invalid packed float field",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{41, protopack.BytesType}, protopack.Bytes{0x00},
-		}.Marshal(),
-	},
-	{
-		desc: "invalid packed double field",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{42, protopack.BytesType}, protopack.Bytes{0x00},
-		}.Marshal(),
-	},
-	{
-		desc: "invalid packed bool field",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{43, protopack.BytesType}, protopack.Bytes{0xff},
-		}.Marshal(),
-	},
-	{
-		desc: "bytes field overruns message",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{18, protopack.BytesType}, protopack.LengthPrefix{protopack.Message{
-				protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix{protopack.Message{
-					protopack.Tag{15, protopack.BytesType}, protopack.Varint(2),
-				}},
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(0),
-			}},
-		}.Marshal(),
-	},
-	{
-		desc: "varint field overruns message",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.VarintType},
-		}.Marshal(),
-	},
-	{
-		desc: "bytes field lacks size",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{18, protopack.BytesType},
-		}.Marshal(),
-	},
-	{
-		desc: "varint overflow",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.VarintType},
-			protopack.Raw("\xff\xff\xff\xff\xff\xff\xff\xff\xff\x02"),
-		}.Marshal(),
-	},
-	{
-		desc: "varint length overrun",
-		decodeTo: []proto.Message{
-			(*testpb.TestAllTypes)(nil),
-			(*testpb.TestAllExtensions)(nil),
-		},
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.VarintType},
-			protopack.Raw("\xff\xff\xff\xff\xff\xff\xff\xff\xff"),
-		}.Marshal(),
-	},
-}
-
-type filterResolver struct {
-	filter   func(name protoreflect.FullName) bool
-	resolver protoregistry.ExtensionTypeResolver
-}
-
-func (f filterResolver) FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) {
-	if !f.filter(field) {
-		return nil, protoregistry.NotFound
-	}
-	return f.resolver.FindExtensionByName(field)
-}
-
-func (f filterResolver) FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) {
-	xt, err := f.resolver.FindExtensionByNumber(message, field)
-	if err != nil {
-		return nil, err
-	}
-	if !f.filter(xt.TypeDescriptor().FullName()) {
-		return nil, protoregistry.NotFound
-	}
-	return xt, nil
-}
diff --git a/proto/text.go b/proto/text.go
new file mode 100644
index 0000000..d97f9b3
--- /dev/null
+++ b/proto/text.go
@@ -0,0 +1,845 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto
+
+// Functions for writing the text protocol buffer format.
+
+import (
+	"bufio"
+	"bytes"
+	"encoding"
+	"errors"
+	"fmt"
+	"io"
+	"log"
+	"math"
+	"reflect"
+	"sort"
+	"strings"
+)
+
+var (
+	newline         = []byte("\n")
+	spaces          = []byte("                                        ")
+	endBraceNewline = []byte("}\n")
+	backslashN      = []byte{'\\', 'n'}
+	backslashR      = []byte{'\\', 'r'}
+	backslashT      = []byte{'\\', 't'}
+	backslashDQ     = []byte{'\\', '"'}
+	backslashBS     = []byte{'\\', '\\'}
+	posInf          = []byte("inf")
+	negInf          = []byte("-inf")
+	nan             = []byte("nan")
+)
+
+type writer interface {
+	io.Writer
+	WriteByte(byte) error
+}
+
+// textWriter is an io.Writer that tracks its indentation level.
+type textWriter struct {
+	ind      int
+	complete bool // if the current position is a complete line
+	compact  bool // whether to write out as a one-liner
+	w        writer
+}
+
+func (w *textWriter) WriteString(s string) (n int, err error) {
+	if !strings.Contains(s, "\n") {
+		if !w.compact && w.complete {
+			w.writeIndent()
+		}
+		w.complete = false
+		return io.WriteString(w.w, s)
+	}
+	// WriteString is typically called without newlines, so this
+	// codepath and its copy are rare.  We copy to avoid
+	// duplicating all of Write's logic here.
+	return w.Write([]byte(s))
+}
+
+func (w *textWriter) Write(p []byte) (n int, err error) {
+	newlines := bytes.Count(p, newline)
+	if newlines == 0 {
+		if !w.compact && w.complete {
+			w.writeIndent()
+		}
+		n, err = w.w.Write(p)
+		w.complete = false
+		return n, err
+	}
+
+	frags := bytes.SplitN(p, newline, newlines+1)
+	if w.compact {
+		for i, frag := range frags {
+			if i > 0 {
+				if err := w.w.WriteByte(' '); err != nil {
+					return n, err
+				}
+				n++
+			}
+			nn, err := w.w.Write(frag)
+			n += nn
+			if err != nil {
+				return n, err
+			}
+		}
+		return n, nil
+	}
+
+	for i, frag := range frags {
+		if w.complete {
+			w.writeIndent()
+		}
+		nn, err := w.w.Write(frag)
+		n += nn
+		if err != nil {
+			return n, err
+		}
+		if i+1 < len(frags) {
+			if err := w.w.WriteByte('\n'); err != nil {
+				return n, err
+			}
+			n++
+		}
+	}
+	w.complete = len(frags[len(frags)-1]) == 0
+	return n, nil
+}
+
+func (w *textWriter) WriteByte(c byte) error {
+	if w.compact && c == '\n' {
+		c = ' '
+	}
+	if !w.compact && w.complete {
+		w.writeIndent()
+	}
+	err := w.w.WriteByte(c)
+	w.complete = c == '\n'
+	return err
+}
+
+func (w *textWriter) indent() { w.ind++ }
+
+func (w *textWriter) unindent() {
+	if w.ind == 0 {
+		log.Print("proto: textWriter unindented too far")
+		return
+	}
+	w.ind--
+}
+
+func writeName(w *textWriter, props *Properties) error {
+	if _, err := w.WriteString(props.OrigName); err != nil {
+		return err
+	}
+	if props.Wire != "group" {
+		return w.WriteByte(':')
+	}
+	return nil
+}
+
+func requiresQuotes(u string) bool {
+	// When type URL contains any characters except [0-9A-Za-z./\-]*, it must be quoted.
+	for _, ch := range u {
+		switch {
+		case ch == '.' || ch == '/' || ch == '_':
+			continue
+		case '0' <= ch && ch <= '9':
+			continue
+		case 'A' <= ch && ch <= 'Z':
+			continue
+		case 'a' <= ch && ch <= 'z':
+			continue
+		default:
+			return true
+		}
+	}
+	return false
+}
+
+// isAny reports whether sv is a google.protobuf.Any message
+func isAny(sv reflect.Value) bool {
+	type wkt interface {
+		XXX_WellKnownType() string
+	}
+	t, ok := sv.Addr().Interface().(wkt)
+	return ok && t.XXX_WellKnownType() == "Any"
+}
+
+// writeProto3Any writes an expanded google.protobuf.Any message.
+//
+// It returns (false, nil) if sv value can't be unmarshaled (e.g. because
+// required messages are not linked in).
+//
+// It returns (true, error) when sv was written in expanded format or an error
+// was encountered.
+func (tm *TextMarshaler) writeProto3Any(w *textWriter, sv reflect.Value) (bool, error) {
+	turl := sv.FieldByName("TypeUrl")
+	val := sv.FieldByName("Value")
+	if !turl.IsValid() || !val.IsValid() {
+		return true, errors.New("proto: invalid google.protobuf.Any message")
+	}
+
+	b, ok := val.Interface().([]byte)
+	if !ok {
+		return true, errors.New("proto: invalid google.protobuf.Any message")
+	}
+
+	parts := strings.Split(turl.String(), "/")
+	mt := MessageType(parts[len(parts)-1])
+	if mt == nil {
+		return false, nil
+	}
+	m := reflect.New(mt.Elem())
+	if err := Unmarshal(b, m.Interface().(Message)); err != nil {
+		return false, nil
+	}
+	w.Write([]byte("["))
+	u := turl.String()
+	if requiresQuotes(u) {
+		writeString(w, u)
+	} else {
+		w.Write([]byte(u))
+	}
+	if w.compact {
+		w.Write([]byte("]:<"))
+	} else {
+		w.Write([]byte("]: <\n"))
+		w.ind++
+	}
+	if err := tm.writeStruct(w, m.Elem()); err != nil {
+		return true, err
+	}
+	if w.compact {
+		w.Write([]byte("> "))
+	} else {
+		w.ind--
+		w.Write([]byte(">\n"))
+	}
+	return true, nil
+}
+
+func (tm *TextMarshaler) writeStruct(w *textWriter, sv reflect.Value) error {
+	if tm.ExpandAny && isAny(sv) {
+		if canExpand, err := tm.writeProto3Any(w, sv); canExpand {
+			return err
+		}
+	}
+	st := sv.Type()
+	sprops := GetProperties(st)
+	for i := 0; i < sv.NumField(); i++ {
+		fv := sv.Field(i)
+		props := sprops.Prop[i]
+		name := st.Field(i).Name
+
+		if name == "XXX_NoUnkeyedLiteral" {
+			continue
+		}
+
+		if strings.HasPrefix(name, "XXX_") {
+			// There are two XXX_ fields:
+			//   XXX_unrecognized []byte
+			//   XXX_extensions   map[int32]proto.Extension
+			// The first is handled here;
+			// the second is handled at the bottom of this function.
+			if name == "XXX_unrecognized" && !fv.IsNil() {
+				if err := writeUnknownStruct(w, fv.Interface().([]byte)); err != nil {
+					return err
+				}
+			}
+			continue
+		}
+		if fv.Kind() == reflect.Ptr && fv.IsNil() {
+			// Field not filled in. This could be an optional field or
+			// a required field that wasn't filled in. Either way, there
+			// isn't anything we can show for it.
+			continue
+		}
+		if fv.Kind() == reflect.Slice && fv.IsNil() {
+			// Repeated field that is empty, or a bytes field that is unused.
+			continue
+		}
+
+		if props.Repeated && fv.Kind() == reflect.Slice {
+			// Repeated field.
+			for j := 0; j < fv.Len(); j++ {
+				if err := writeName(w, props); err != nil {
+					return err
+				}
+				if !w.compact {
+					if err := w.WriteByte(' '); err != nil {
+						return err
+					}
+				}
+				v := fv.Index(j)
+				if v.Kind() == reflect.Ptr && v.IsNil() {
+					// A nil message in a repeated field is not valid,
+					// but we can handle that more gracefully than panicking.
+					if _, err := w.Write([]byte("<nil>\n")); err != nil {
+						return err
+					}
+					continue
+				}
+				if err := tm.writeAny(w, v, props); err != nil {
+					return err
+				}
+				if err := w.WriteByte('\n'); err != nil {
+					return err
+				}
+			}
+			continue
+		}
+		if fv.Kind() == reflect.Map {
+			// Map fields are rendered as a repeated struct with key/value fields.
+			keys := fv.MapKeys()
+			sort.Sort(mapKeys(keys))
+			for _, key := range keys {
+				val := fv.MapIndex(key)
+				if err := writeName(w, props); err != nil {
+					return err
+				}
+				if !w.compact {
+					if err := w.WriteByte(' '); err != nil {
+						return err
+					}
+				}
+				// open struct
+				if err := w.WriteByte('<'); err != nil {
+					return err
+				}
+				if !w.compact {
+					if err := w.WriteByte('\n'); err != nil {
+						return err
+					}
+				}
+				w.indent()
+				// key
+				if _, err := w.WriteString("key:"); err != nil {
+					return err
+				}
+				if !w.compact {
+					if err := w.WriteByte(' '); err != nil {
+						return err
+					}
+				}
+				if err := tm.writeAny(w, key, props.MapKeyProp); err != nil {
+					return err
+				}
+				if err := w.WriteByte('\n'); err != nil {
+					return err
+				}
+				// nil values aren't legal, but we can avoid panicking because of them.
+				if val.Kind() != reflect.Ptr || !val.IsNil() {
+					// value
+					if _, err := w.WriteString("value:"); err != nil {
+						return err
+					}
+					if !w.compact {
+						if err := w.WriteByte(' '); err != nil {
+							return err
+						}
+					}
+					if err := tm.writeAny(w, val, props.MapValProp); err != nil {
+						return err
+					}
+					if err := w.WriteByte('\n'); err != nil {
+						return err
+					}
+				}
+				// close struct
+				w.unindent()
+				if err := w.WriteByte('>'); err != nil {
+					return err
+				}
+				if err := w.WriteByte('\n'); err != nil {
+					return err
+				}
+			}
+			continue
+		}
+		if props.proto3 && fv.Kind() == reflect.Slice && fv.Len() == 0 {
+			// empty bytes field
+			continue
+		}
+		if fv.Kind() != reflect.Ptr && fv.Kind() != reflect.Slice {
+			// proto3 non-repeated scalar field; skip if zero value
+			if isProto3Zero(fv) {
+				continue
+			}
+		}
+
+		if fv.Kind() == reflect.Interface {
+			// Check if it is a oneof.
+			if st.Field(i).Tag.Get("protobuf_oneof") != "" {
+				// fv is nil, or holds a pointer to generated struct.
+				// That generated struct has exactly one field,
+				// which has a protobuf struct tag.
+				if fv.IsNil() {
+					continue
+				}
+				inner := fv.Elem().Elem() // interface -> *T -> T
+				tag := inner.Type().Field(0).Tag.Get("protobuf")
+				props = new(Properties) // Overwrite the outer props var, but not its pointee.
+				props.Parse(tag)
+				// Write the value in the oneof, not the oneof itself.
+				fv = inner.Field(0)
+
+				// Special case to cope with malformed messages gracefully:
+				// If the value in the oneof is a nil pointer, don't panic
+				// in writeAny.
+				if fv.Kind() == reflect.Ptr && fv.IsNil() {
+					// Use errors.New so writeAny won't render quotes.
+					msg := errors.New("/* nil */")
+					fv = reflect.ValueOf(&msg).Elem()
+				}
+			}
+		}
+
+		if err := writeName(w, props); err != nil {
+			return err
+		}
+		if !w.compact {
+			if err := w.WriteByte(' '); err != nil {
+				return err
+			}
+		}
+
+		// Enums have a String method, so writeAny will work fine.
+		if err := tm.writeAny(w, fv, props); err != nil {
+			return err
+		}
+
+		if err := w.WriteByte('\n'); err != nil {
+			return err
+		}
+	}
+
+	// Extensions (the XXX_extensions field).
+	pv := sv.Addr()
+	if _, err := extendable(pv.Interface()); err == nil {
+		if err := tm.writeExtensions(w, pv); err != nil {
+			return err
+		}
+	}
+
+	return nil
+}
+
+var textMarshalerType = reflect.TypeOf((*encoding.TextMarshaler)(nil)).Elem()
+
+// writeAny writes an arbitrary field.
+func (tm *TextMarshaler) writeAny(w *textWriter, v reflect.Value, props *Properties) error {
+	v = reflect.Indirect(v)
+
+	// Floats have special cases.
+	if v.Kind() == reflect.Float32 || v.Kind() == reflect.Float64 {
+		x := v.Float()
+		var b []byte
+		switch {
+		case math.IsInf(x, 1):
+			b = posInf
+		case math.IsInf(x, -1):
+			b = negInf
+		case math.IsNaN(x):
+			b = nan
+		}
+		if b != nil {
+			_, err := w.Write(b)
+			return err
+		}
+		// Other values are handled below.
+	}
+
+	// We don't attempt to serialise every possible value type; only those
+	// that can occur in protocol buffers.
+	switch v.Kind() {
+	case reflect.Slice:
+		// Should only be a []byte; repeated fields are handled in writeStruct.
+		if err := writeString(w, string(v.Bytes())); err != nil {
+			return err
+		}
+	case reflect.String:
+		if err := writeString(w, v.String()); err != nil {
+			return err
+		}
+	case reflect.Struct:
+		// Required/optional group/message.
+		var bra, ket byte = '<', '>'
+		if props != nil && props.Wire == "group" {
+			bra, ket = '{', '}'
+		}
+		if err := w.WriteByte(bra); err != nil {
+			return err
+		}
+		if !w.compact {
+			if err := w.WriteByte('\n'); err != nil {
+				return err
+			}
+		}
+		w.indent()
+		if v.CanAddr() {
+			// Calling v.Interface on a struct causes the reflect package to
+			// copy the entire struct. This is racy with the new Marshaler
+			// since we atomically update the XXX_sizecache.
+			//
+			// Thus, we retrieve a pointer to the struct if possible to avoid
+			// a race since v.Interface on the pointer doesn't copy the struct.
+			//
+			// If v is not addressable, then we are not worried about a race
+			// since it implies that the binary Marshaler cannot possibly be
+			// mutating this value.
+			v = v.Addr()
+		}
+		if v.Type().Implements(textMarshalerType) {
+			text, err := v.Interface().(encoding.TextMarshaler).MarshalText()
+			if err != nil {
+				return err
+			}
+			if _, err = w.Write(text); err != nil {
+				return err
+			}
+		} else {
+			if v.Kind() == reflect.Ptr {
+				v = v.Elem()
+			}
+			if err := tm.writeStruct(w, v); err != nil {
+				return err
+			}
+		}
+		w.unindent()
+		if err := w.WriteByte(ket); err != nil {
+			return err
+		}
+	default:
+		_, err := fmt.Fprint(w, v.Interface())
+		return err
+	}
+	return nil
+}
+
+// equivalent to C's isprint.
+func isprint(c byte) bool {
+	return c >= 0x20 && c < 0x7f
+}
+
+// writeString writes a string in the protocol buffer text format.
+// It is similar to strconv.Quote except we don't use Go escape sequences,
+// we treat the string as a byte sequence, and we use octal escapes.
+// These differences are to maintain interoperability with the other
+// languages' implementations of the text format.
+func writeString(w *textWriter, s string) error {
+	// use WriteByte here to get any needed indent
+	if err := w.WriteByte('"'); err != nil {
+		return err
+	}
+	// Loop over the bytes, not the runes.
+	for i := 0; i < len(s); i++ {
+		var err error
+		// Divergence from C++: we don't escape apostrophes.
+		// There's no need to escape them, and the C++ parser
+		// copes with a naked apostrophe.
+		switch c := s[i]; c {
+		case '\n':
+			_, err = w.w.Write(backslashN)
+		case '\r':
+			_, err = w.w.Write(backslashR)
+		case '\t':
+			_, err = w.w.Write(backslashT)
+		case '"':
+			_, err = w.w.Write(backslashDQ)
+		case '\\':
+			_, err = w.w.Write(backslashBS)
+		default:
+			if isprint(c) {
+				err = w.w.WriteByte(c)
+			} else {
+				_, err = fmt.Fprintf(w.w, "\\%03o", c)
+			}
+		}
+		if err != nil {
+			return err
+		}
+	}
+	return w.WriteByte('"')
+}
+
+func writeUnknownStruct(w *textWriter, data []byte) (err error) {
+	if !w.compact {
+		if _, err := fmt.Fprintf(w, "/* %d unknown bytes */\n", len(data)); err != nil {
+			return err
+		}
+	}
+	b := NewBuffer(data)
+	for b.index < len(b.buf) {
+		x, err := b.DecodeVarint()
+		if err != nil {
+			_, err := fmt.Fprintf(w, "/* %v */\n", err)
+			return err
+		}
+		wire, tag := x&7, x>>3
+		if wire == WireEndGroup {
+			w.unindent()
+			if _, err := w.Write(endBraceNewline); err != nil {
+				return err
+			}
+			continue
+		}
+		if _, err := fmt.Fprint(w, tag); err != nil {
+			return err
+		}
+		if wire != WireStartGroup {
+			if err := w.WriteByte(':'); err != nil {
+				return err
+			}
+		}
+		if !w.compact || wire == WireStartGroup {
+			if err := w.WriteByte(' '); err != nil {
+				return err
+			}
+		}
+		switch wire {
+		case WireBytes:
+			buf, e := b.DecodeRawBytes(false)
+			if e == nil {
+				_, err = fmt.Fprintf(w, "%q", buf)
+			} else {
+				_, err = fmt.Fprintf(w, "/* %v */", e)
+			}
+		case WireFixed32:
+			x, err = b.DecodeFixed32()
+			err = writeUnknownInt(w, x, err)
+		case WireFixed64:
+			x, err = b.DecodeFixed64()
+			err = writeUnknownInt(w, x, err)
+		case WireStartGroup:
+			err = w.WriteByte('{')
+			w.indent()
+		case WireVarint:
+			x, err = b.DecodeVarint()
+			err = writeUnknownInt(w, x, err)
+		default:
+			_, err = fmt.Fprintf(w, "/* unknown wire type %d */", wire)
+		}
+		if err != nil {
+			return err
+		}
+		if err = w.WriteByte('\n'); err != nil {
+			return err
+		}
+	}
+	return nil
+}
+
+func writeUnknownInt(w *textWriter, x uint64, err error) error {
+	if err == nil {
+		_, err = fmt.Fprint(w, x)
+	} else {
+		_, err = fmt.Fprintf(w, "/* %v */", err)
+	}
+	return err
+}
+
+type int32Slice []int32
+
+func (s int32Slice) Len() int           { return len(s) }
+func (s int32Slice) Less(i, j int) bool { return s[i] < s[j] }
+func (s int32Slice) Swap(i, j int)      { s[i], s[j] = s[j], s[i] }
+
+// writeExtensions writes all the extensions in pv.
+// pv is assumed to be a pointer to a protocol message struct that is extendable.
+func (tm *TextMarshaler) writeExtensions(w *textWriter, pv reflect.Value) error {
+	emap := extensionMaps[pv.Type().Elem()]
+	ep, _ := extendable(pv.Interface())
+
+	// Order the extensions by ID.
+	// This isn't strictly necessary, but it will give us
+	// canonical output, which will also make testing easier.
+	m, mu := ep.extensionsRead()
+	if m == nil {
+		return nil
+	}
+	mu.Lock()
+	ids := make([]int32, 0, len(m))
+	for id := range m {
+		ids = append(ids, id)
+	}
+	sort.Sort(int32Slice(ids))
+	mu.Unlock()
+
+	for _, extNum := range ids {
+		ext := m[extNum]
+		var desc *ExtensionDesc
+		if emap != nil {
+			desc = emap[extNum]
+		}
+		if desc == nil {
+			// Unknown extension.
+			if err := writeUnknownStruct(w, ext.enc); err != nil {
+				return err
+			}
+			continue
+		}
+
+		pb, err := GetExtension(ep, desc)
+		if err != nil {
+			return fmt.Errorf("failed getting extension: %v", err)
+		}
+
+		// Repeated extensions will appear as a slice.
+		if !desc.repeated() {
+			if err := tm.writeExtension(w, desc.Name, pb); err != nil {
+				return err
+			}
+		} else {
+			v := reflect.ValueOf(pb)
+			for i := 0; i < v.Len(); i++ {
+				if err := tm.writeExtension(w, desc.Name, v.Index(i).Interface()); err != nil {
+					return err
+				}
+			}
+		}
+	}
+	return nil
+}
+
+func (tm *TextMarshaler) writeExtension(w *textWriter, name string, pb interface{}) error {
+	if _, err := fmt.Fprintf(w, "[%s]:", name); err != nil {
+		return err
+	}
+	if !w.compact {
+		if err := w.WriteByte(' '); err != nil {
+			return err
+		}
+	}
+	if err := tm.writeAny(w, reflect.ValueOf(pb), nil); err != nil {
+		return err
+	}
+	if err := w.WriteByte('\n'); err != nil {
+		return err
+	}
+	return nil
+}
+
+func (w *textWriter) writeIndent() {
+	if !w.complete {
+		return
+	}
+	remain := w.ind * 2
+	for remain > 0 {
+		n := remain
+		if n > len(spaces) {
+			n = len(spaces)
+		}
+		w.w.Write(spaces[:n])
+		remain -= n
+	}
+	w.complete = false
+}
+
+// TextMarshaler is a configurable text format marshaler.
+type TextMarshaler struct {
+	Compact   bool // use compact text format (one line).
+	ExpandAny bool // expand google.protobuf.Any messages of known types
+}
+
+// Marshal writes a given protocol buffer in text format.
+// The only errors returned are from w.
+func (tm *TextMarshaler) Marshal(w io.Writer, pb Message) error {
+	val := reflect.ValueOf(pb)
+	if pb == nil || val.IsNil() {
+		w.Write([]byte("<nil>"))
+		return nil
+	}
+	var bw *bufio.Writer
+	ww, ok := w.(writer)
+	if !ok {
+		bw = bufio.NewWriter(w)
+		ww = bw
+	}
+	aw := &textWriter{
+		w:        ww,
+		complete: true,
+		compact:  tm.Compact,
+	}
+
+	if etm, ok := pb.(encoding.TextMarshaler); ok {
+		text, err := etm.MarshalText()
+		if err != nil {
+			return err
+		}
+		if _, err = aw.Write(text); err != nil {
+			return err
+		}
+		if bw != nil {
+			return bw.Flush()
+		}
+		return nil
+	}
+	// Dereference the received pointer so we don't have outer < and >.
+	v := reflect.Indirect(val)
+	if err := tm.writeStruct(aw, v); err != nil {
+		return err
+	}
+	if bw != nil {
+		return bw.Flush()
+	}
+	return nil
+}
+
+// Text is the same as Marshal, but returns the string directly.
+func (tm *TextMarshaler) Text(pb Message) string {
+	var buf bytes.Buffer
+	tm.Marshal(&buf, pb)
+	return buf.String()
+}
+
+var (
+	defaultTextMarshaler = TextMarshaler{}
+	compactTextMarshaler = TextMarshaler{Compact: true}
+)
+
+// TODO: consider removing some of the Marshal functions below.
+
+// MarshalText writes a given protocol buffer in text format.
+// The only errors returned are from w.
+func MarshalText(w io.Writer, pb Message) error { return defaultTextMarshaler.Marshal(w, pb) }
+
+// MarshalTextString is the same as MarshalText, but returns the string directly.
+func MarshalTextString(pb Message) string { return defaultTextMarshaler.Text(pb) }
+
+// CompactText writes a given protocol buffer in compact text format (one line).
+func CompactText(w io.Writer, pb Message) error { return compactTextMarshaler.Marshal(w, pb) }
+
+// CompactTextString is the same as CompactText, but returns the string directly.
+func CompactTextString(pb Message) string { return compactTextMarshaler.Text(pb) }
diff --git a/proto/text_parser.go b/proto/text_parser.go
new file mode 100644
index 0000000..bb55a3a
--- /dev/null
+++ b/proto/text_parser.go
@@ -0,0 +1,880 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto
+
+// Functions for parsing the Text protocol buffer format.
+// TODO: message sets.
+
+import (
+	"encoding"
+	"errors"
+	"fmt"
+	"reflect"
+	"strconv"
+	"strings"
+	"unicode/utf8"
+)
+
+// Error string emitted when deserializing Any and fields are already set
+const anyRepeatedlyUnpacked = "Any message unpacked multiple times, or %q already set"
+
+type ParseError struct {
+	Message string
+	Line    int // 1-based line number
+	Offset  int // 0-based byte offset from start of input
+}
+
+func (p *ParseError) Error() string {
+	if p.Line == 1 {
+		// show offset only for first line
+		return fmt.Sprintf("line 1.%d: %v", p.Offset, p.Message)
+	}
+	return fmt.Sprintf("line %d: %v", p.Line, p.Message)
+}
+
+type token struct {
+	value    string
+	err      *ParseError
+	line     int    // line number
+	offset   int    // byte number from start of input, not start of line
+	unquoted string // the unquoted version of value, if it was a quoted string
+}
+
+func (t *token) String() string {
+	if t.err == nil {
+		return fmt.Sprintf("%q (line=%d, offset=%d)", t.value, t.line, t.offset)
+	}
+	return fmt.Sprintf("parse error: %v", t.err)
+}
+
+type textParser struct {
+	s            string // remaining input
+	done         bool   // whether the parsing is finished (success or error)
+	backed       bool   // whether back() was called
+	offset, line int
+	cur          token
+}
+
+func newTextParser(s string) *textParser {
+	p := new(textParser)
+	p.s = s
+	p.line = 1
+	p.cur.line = 1
+	return p
+}
+
+func (p *textParser) errorf(format string, a ...interface{}) *ParseError {
+	pe := &ParseError{fmt.Sprintf(format, a...), p.cur.line, p.cur.offset}
+	p.cur.err = pe
+	p.done = true
+	return pe
+}
+
+// Numbers and identifiers are matched by [-+._A-Za-z0-9]
+func isIdentOrNumberChar(c byte) bool {
+	switch {
+	case 'A' <= c && c <= 'Z', 'a' <= c && c <= 'z':
+		return true
+	case '0' <= c && c <= '9':
+		return true
+	}
+	switch c {
+	case '-', '+', '.', '_':
+		return true
+	}
+	return false
+}
+
+func isWhitespace(c byte) bool {
+	switch c {
+	case ' ', '\t', '\n', '\r':
+		return true
+	}
+	return false
+}
+
+func isQuote(c byte) bool {
+	switch c {
+	case '"', '\'':
+		return true
+	}
+	return false
+}
+
+func (p *textParser) skipWhitespace() {
+	i := 0
+	for i < len(p.s) && (isWhitespace(p.s[i]) || p.s[i] == '#') {
+		if p.s[i] == '#' {
+			// comment; skip to end of line or input
+			for i < len(p.s) && p.s[i] != '\n' {
+				i++
+			}
+			if i == len(p.s) {
+				break
+			}
+		}
+		if p.s[i] == '\n' {
+			p.line++
+		}
+		i++
+	}
+	p.offset += i
+	p.s = p.s[i:len(p.s)]
+	if len(p.s) == 0 {
+		p.done = true
+	}
+}
+
+func (p *textParser) advance() {
+	// Skip whitespace
+	p.skipWhitespace()
+	if p.done {
+		return
+	}
+
+	// Start of non-whitespace
+	p.cur.err = nil
+	p.cur.offset, p.cur.line = p.offset, p.line
+	p.cur.unquoted = ""
+	switch p.s[0] {
+	case '<', '>', '{', '}', ':', '[', ']', ';', ',', '/':
+		// Single symbol
+		p.cur.value, p.s = p.s[0:1], p.s[1:len(p.s)]
+	case '"', '\'':
+		// Quoted string
+		i := 1
+		for i < len(p.s) && p.s[i] != p.s[0] && p.s[i] != '\n' {
+			if p.s[i] == '\\' && i+1 < len(p.s) {
+				// skip escaped char
+				i++
+			}
+			i++
+		}
+		if i >= len(p.s) || p.s[i] != p.s[0] {
+			p.errorf("unmatched quote")
+			return
+		}
+		unq, err := unquoteC(p.s[1:i], rune(p.s[0]))
+		if err != nil {
+			p.errorf("invalid quoted string %s: %v", p.s[0:i+1], err)
+			return
+		}
+		p.cur.value, p.s = p.s[0:i+1], p.s[i+1:len(p.s)]
+		p.cur.unquoted = unq
+	default:
+		i := 0
+		for i < len(p.s) && isIdentOrNumberChar(p.s[i]) {
+			i++
+		}
+		if i == 0 {
+			p.errorf("unexpected byte %#x", p.s[0])
+			return
+		}
+		p.cur.value, p.s = p.s[0:i], p.s[i:len(p.s)]
+	}
+	p.offset += len(p.cur.value)
+}
+
+var (
+	errBadUTF8 = errors.New("proto: bad UTF-8")
+)
+
+func unquoteC(s string, quote rune) (string, error) {
+	// This is based on C++'s tokenizer.cc.
+	// Despite its name, this is *not* parsing C syntax.
+	// For instance, "\0" is an invalid quoted string.
+
+	// Avoid allocation in trivial cases.
+	simple := true
+	for _, r := range s {
+		if r == '\\' || r == quote {
+			simple = false
+			break
+		}
+	}
+	if simple {
+		return s, nil
+	}
+
+	buf := make([]byte, 0, 3*len(s)/2)
+	for len(s) > 0 {
+		r, n := utf8.DecodeRuneInString(s)
+		if r == utf8.RuneError && n == 1 {
+			return "", errBadUTF8
+		}
+		s = s[n:]
+		if r != '\\' {
+			if r < utf8.RuneSelf {
+				buf = append(buf, byte(r))
+			} else {
+				buf = append(buf, string(r)...)
+			}
+			continue
+		}
+
+		ch, tail, err := unescape(s)
+		if err != nil {
+			return "", err
+		}
+		buf = append(buf, ch...)
+		s = tail
+	}
+	return string(buf), nil
+}
+
+func unescape(s string) (ch string, tail string, err error) {
+	r, n := utf8.DecodeRuneInString(s)
+	if r == utf8.RuneError && n == 1 {
+		return "", "", errBadUTF8
+	}
+	s = s[n:]
+	switch r {
+	case 'a':
+		return "\a", s, nil
+	case 'b':
+		return "\b", s, nil
+	case 'f':
+		return "\f", s, nil
+	case 'n':
+		return "\n", s, nil
+	case 'r':
+		return "\r", s, nil
+	case 't':
+		return "\t", s, nil
+	case 'v':
+		return "\v", s, nil
+	case '?':
+		return "?", s, nil // trigraph workaround
+	case '\'', '"', '\\':
+		return string(r), s, nil
+	case '0', '1', '2', '3', '4', '5', '6', '7':
+		if len(s) < 2 {
+			return "", "", fmt.Errorf(`\%c requires 2 following digits`, r)
+		}
+		ss := string(r) + s[:2]
+		s = s[2:]
+		i, err := strconv.ParseUint(ss, 8, 8)
+		if err != nil {
+			return "", "", fmt.Errorf(`\%s contains non-octal digits`, ss)
+		}
+		return string([]byte{byte(i)}), s, nil
+	case 'x', 'X', 'u', 'U':
+		var n int
+		switch r {
+		case 'x', 'X':
+			n = 2
+		case 'u':
+			n = 4
+		case 'U':
+			n = 8
+		}
+		if len(s) < n {
+			return "", "", fmt.Errorf(`\%c requires %d following digits`, r, n)
+		}
+		ss := s[:n]
+		s = s[n:]
+		i, err := strconv.ParseUint(ss, 16, 64)
+		if err != nil {
+			return "", "", fmt.Errorf(`\%c%s contains non-hexadecimal digits`, r, ss)
+		}
+		if r == 'x' || r == 'X' {
+			return string([]byte{byte(i)}), s, nil
+		}
+		if i > utf8.MaxRune {
+			return "", "", fmt.Errorf(`\%c%s is not a valid Unicode code point`, r, ss)
+		}
+		return string(i), s, nil
+	}
+	return "", "", fmt.Errorf(`unknown escape \%c`, r)
+}
+
+// Back off the parser by one token. Can only be done between calls to next().
+// It makes the next advance() a no-op.
+func (p *textParser) back() { p.backed = true }
+
+// Advances the parser and returns the new current token.
+func (p *textParser) next() *token {
+	if p.backed || p.done {
+		p.backed = false
+		return &p.cur
+	}
+	p.advance()
+	if p.done {
+		p.cur.value = ""
+	} else if len(p.cur.value) > 0 && isQuote(p.cur.value[0]) {
+		// Look for multiple quoted strings separated by whitespace,
+		// and concatenate them.
+		cat := p.cur
+		for {
+			p.skipWhitespace()
+			if p.done || !isQuote(p.s[0]) {
+				break
+			}
+			p.advance()
+			if p.cur.err != nil {
+				return &p.cur
+			}
+			cat.value += " " + p.cur.value
+			cat.unquoted += p.cur.unquoted
+		}
+		p.done = false // parser may have seen EOF, but we want to return cat
+		p.cur = cat
+	}
+	return &p.cur
+}
+
+func (p *textParser) consumeToken(s string) error {
+	tok := p.next()
+	if tok.err != nil {
+		return tok.err
+	}
+	if tok.value != s {
+		p.back()
+		return p.errorf("expected %q, found %q", s, tok.value)
+	}
+	return nil
+}
+
+// Return a RequiredNotSetError indicating which required field was not set.
+func (p *textParser) missingRequiredFieldError(sv reflect.Value) *RequiredNotSetError {
+	st := sv.Type()
+	sprops := GetProperties(st)
+	for i := 0; i < st.NumField(); i++ {
+		if !isNil(sv.Field(i)) {
+			continue
+		}
+
+		props := sprops.Prop[i]
+		if props.Required {
+			return &RequiredNotSetError{fmt.Sprintf("%v.%v", st, props.OrigName)}
+		}
+	}
+	return &RequiredNotSetError{fmt.Sprintf("%v.<unknown field name>", st)} // should not happen
+}
+
+// Returns the index in the struct for the named field, as well as the parsed tag properties.
+func structFieldByName(sprops *StructProperties, name string) (int, *Properties, bool) {
+	i, ok := sprops.decoderOrigNames[name]
+	if ok {
+		return i, sprops.Prop[i], true
+	}
+	return -1, nil, false
+}
+
+// Consume a ':' from the input stream (if the next token is a colon),
+// returning an error if a colon is needed but not present.
+func (p *textParser) checkForColon(props *Properties, typ reflect.Type) *ParseError {
+	tok := p.next()
+	if tok.err != nil {
+		return tok.err
+	}
+	if tok.value != ":" {
+		// Colon is optional when the field is a group or message.
+		needColon := true
+		switch props.Wire {
+		case "group":
+			needColon = false
+		case "bytes":
+			// A "bytes" field is either a message, a string, or a repeated field;
+			// those three become *T, *string and []T respectively, so we can check for
+			// this field being a pointer to a non-string.
+			if typ.Kind() == reflect.Ptr {
+				// *T or *string
+				if typ.Elem().Kind() == reflect.String {
+					break
+				}
+			} else if typ.Kind() == reflect.Slice {
+				// []T or []*T
+				if typ.Elem().Kind() != reflect.Ptr {
+					break
+				}
+			} else if typ.Kind() == reflect.String {
+				// The proto3 exception is for a string field,
+				// which requires a colon.
+				break
+			}
+			needColon = false
+		}
+		if needColon {
+			return p.errorf("expected ':', found %q", tok.value)
+		}
+		p.back()
+	}
+	return nil
+}
+
+func (p *textParser) readStruct(sv reflect.Value, terminator string) error {
+	st := sv.Type()
+	sprops := GetProperties(st)
+	reqCount := sprops.reqCount
+	var reqFieldErr error
+	fieldSet := make(map[string]bool)
+	// A struct is a sequence of "name: value", terminated by one of
+	// '>' or '}', or the end of the input.  A name may also be
+	// "[extension]" or "[type/url]".
+	//
+	// The whole struct can also be an expanded Any message, like:
+	// [type/url] < ... struct contents ... >
+	for {
+		tok := p.next()
+		if tok.err != nil {
+			return tok.err
+		}
+		if tok.value == terminator {
+			break
+		}
+		if tok.value == "[" {
+			// Looks like an extension or an Any.
+			//
+			// TODO: Check whether we need to handle
+			// namespace rooted names (e.g. ".something.Foo").
+			extName, err := p.consumeExtName()
+			if err != nil {
+				return err
+			}
+
+			if s := strings.LastIndex(extName, "/"); s >= 0 {
+				// If it contains a slash, it's an Any type URL.
+				messageName := extName[s+1:]
+				mt := MessageType(messageName)
+				if mt == nil {
+					return p.errorf("unrecognized message %q in google.protobuf.Any", messageName)
+				}
+				tok = p.next()
+				if tok.err != nil {
+					return tok.err
+				}
+				// consume an optional colon
+				if tok.value == ":" {
+					tok = p.next()
+					if tok.err != nil {
+						return tok.err
+					}
+				}
+				var terminator string
+				switch tok.value {
+				case "<":
+					terminator = ">"
+				case "{":
+					terminator = "}"
+				default:
+					return p.errorf("expected '{' or '<', found %q", tok.value)
+				}
+				v := reflect.New(mt.Elem())
+				if pe := p.readStruct(v.Elem(), terminator); pe != nil {
+					return pe
+				}
+				b, err := Marshal(v.Interface().(Message))
+				if err != nil {
+					return p.errorf("failed to marshal message of type %q: %v", messageName, err)
+				}
+				if fieldSet["type_url"] {
+					return p.errorf(anyRepeatedlyUnpacked, "type_url")
+				}
+				if fieldSet["value"] {
+					return p.errorf(anyRepeatedlyUnpacked, "value")
+				}
+				sv.FieldByName("TypeUrl").SetString(extName)
+				sv.FieldByName("Value").SetBytes(b)
+				fieldSet["type_url"] = true
+				fieldSet["value"] = true
+				continue
+			}
+
+			var desc *ExtensionDesc
+			// This could be faster, but it's functional.
+			// TODO: Do something smarter than a linear scan.
+			for _, d := range RegisteredExtensions(reflect.New(st).Interface().(Message)) {
+				if d.Name == extName {
+					desc = d
+					break
+				}
+			}
+			if desc == nil {
+				return p.errorf("unrecognized extension %q", extName)
+			}
+
+			props := &Properties{}
+			props.Parse(desc.Tag)
+
+			typ := reflect.TypeOf(desc.ExtensionType)
+			if err := p.checkForColon(props, typ); err != nil {
+				return err
+			}
+
+			rep := desc.repeated()
+
+			// Read the extension structure, and set it in
+			// the value we're constructing.
+			var ext reflect.Value
+			if !rep {
+				ext = reflect.New(typ).Elem()
+			} else {
+				ext = reflect.New(typ.Elem()).Elem()
+			}
+			if err := p.readAny(ext, props); err != nil {
+				if _, ok := err.(*RequiredNotSetError); !ok {
+					return err
+				}
+				reqFieldErr = err
+			}
+			ep := sv.Addr().Interface().(Message)
+			if !rep {
+				SetExtension(ep, desc, ext.Interface())
+			} else {
+				old, err := GetExtension(ep, desc)
+				var sl reflect.Value
+				if err == nil {
+					sl = reflect.ValueOf(old) // existing slice
+				} else {
+					sl = reflect.MakeSlice(typ, 0, 1)
+				}
+				sl = reflect.Append(sl, ext)
+				SetExtension(ep, desc, sl.Interface())
+			}
+			if err := p.consumeOptionalSeparator(); err != nil {
+				return err
+			}
+			continue
+		}
+
+		// This is a normal, non-extension field.
+		name := tok.value
+		var dst reflect.Value
+		fi, props, ok := structFieldByName(sprops, name)
+		if ok {
+			dst = sv.Field(fi)
+		} else if oop, ok := sprops.OneofTypes[name]; ok {
+			// It is a oneof.
+			props = oop.Prop
+			nv := reflect.New(oop.Type.Elem())
+			dst = nv.Elem().Field(0)
+			field := sv.Field(oop.Field)
+			if !field.IsNil() {
+				return p.errorf("field '%s' would overwrite already parsed oneof '%s'", name, sv.Type().Field(oop.Field).Name)
+			}
+			field.Set(nv)
+		}
+		if !dst.IsValid() {
+			return p.errorf("unknown field name %q in %v", name, st)
+		}
+
+		if dst.Kind() == reflect.Map {
+			// Consume any colon.
+			if err := p.checkForColon(props, dst.Type()); err != nil {
+				return err
+			}
+
+			// Construct the map if it doesn't already exist.
+			if dst.IsNil() {
+				dst.Set(reflect.MakeMap(dst.Type()))
+			}
+			key := reflect.New(dst.Type().Key()).Elem()
+			val := reflect.New(dst.Type().Elem()).Elem()
+
+			// The map entry should be this sequence of tokens:
+			//	< key : KEY value : VALUE >
+			// However, implementations may omit key or value, and technically
+			// we should support them in any order.  See b/28924776 for a time
+			// this went wrong.
+
+			tok := p.next()
+			var terminator string
+			switch tok.value {
+			case "<":
+				terminator = ">"
+			case "{":
+				terminator = "}"
+			default:
+				return p.errorf("expected '{' or '<', found %q", tok.value)
+			}
+			for {
+				tok := p.next()
+				if tok.err != nil {
+					return tok.err
+				}
+				if tok.value == terminator {
+					break
+				}
+				switch tok.value {
+				case "key":
+					if err := p.consumeToken(":"); err != nil {
+						return err
+					}
+					if err := p.readAny(key, props.MapKeyProp); err != nil {
+						return err
+					}
+					if err := p.consumeOptionalSeparator(); err != nil {
+						return err
+					}
+				case "value":
+					if err := p.checkForColon(props.MapValProp, dst.Type().Elem()); err != nil {
+						return err
+					}
+					if err := p.readAny(val, props.MapValProp); err != nil {
+						return err
+					}
+					if err := p.consumeOptionalSeparator(); err != nil {
+						return err
+					}
+				default:
+					p.back()
+					return p.errorf(`expected "key", "value", or %q, found %q`, terminator, tok.value)
+				}
+			}
+
+			dst.SetMapIndex(key, val)
+			continue
+		}
+
+		// Check that it's not already set if it's not a repeated field.
+		if !props.Repeated && fieldSet[name] {
+			return p.errorf("non-repeated field %q was repeated", name)
+		}
+
+		if err := p.checkForColon(props, dst.Type()); err != nil {
+			return err
+		}
+
+		// Parse into the field.
+		fieldSet[name] = true
+		if err := p.readAny(dst, props); err != nil {
+			if _, ok := err.(*RequiredNotSetError); !ok {
+				return err
+			}
+			reqFieldErr = err
+		}
+		if props.Required {
+			reqCount--
+		}
+
+		if err := p.consumeOptionalSeparator(); err != nil {
+			return err
+		}
+
+	}
+
+	if reqCount > 0 {
+		return p.missingRequiredFieldError(sv)
+	}
+	return reqFieldErr
+}
+
+// consumeExtName consumes extension name or expanded Any type URL and the
+// following ']'. It returns the name or URL consumed.
+func (p *textParser) consumeExtName() (string, error) {
+	tok := p.next()
+	if tok.err != nil {
+		return "", tok.err
+	}
+
+	// If extension name or type url is quoted, it's a single token.
+	if len(tok.value) > 2 && isQuote(tok.value[0]) && tok.value[len(tok.value)-1] == tok.value[0] {
+		name, err := unquoteC(tok.value[1:len(tok.value)-1], rune(tok.value[0]))
+		if err != nil {
+			return "", err
+		}
+		return name, p.consumeToken("]")
+	}
+
+	// Consume everything up to "]"
+	var parts []string
+	for tok.value != "]" {
+		parts = append(parts, tok.value)
+		tok = p.next()
+		if tok.err != nil {
+			return "", p.errorf("unrecognized type_url or extension name: %s", tok.err)
+		}
+		if p.done && tok.value != "]" {
+			return "", p.errorf("unclosed type_url or extension name")
+		}
+	}
+	return strings.Join(parts, ""), nil
+}
+
+// consumeOptionalSeparator consumes an optional semicolon or comma.
+// It is used in readStruct to provide backward compatibility.
+func (p *textParser) consumeOptionalSeparator() error {
+	tok := p.next()
+	if tok.err != nil {
+		return tok.err
+	}
+	if tok.value != ";" && tok.value != "," {
+		p.back()
+	}
+	return nil
+}
+
+func (p *textParser) readAny(v reflect.Value, props *Properties) error {
+	tok := p.next()
+	if tok.err != nil {
+		return tok.err
+	}
+	if tok.value == "" {
+		return p.errorf("unexpected EOF")
+	}
+
+	switch fv := v; fv.Kind() {
+	case reflect.Slice:
+		at := v.Type()
+		if at.Elem().Kind() == reflect.Uint8 {
+			// Special case for []byte
+			if tok.value[0] != '"' && tok.value[0] != '\'' {
+				// Deliberately written out here, as the error after
+				// this switch statement would write "invalid []byte: ...",
+				// which is not as user-friendly.
+				return p.errorf("invalid string: %v", tok.value)
+			}
+			bytes := []byte(tok.unquoted)
+			fv.Set(reflect.ValueOf(bytes))
+			return nil
+		}
+		// Repeated field.
+		if tok.value == "[" {
+			// Repeated field with list notation, like [1,2,3].
+			for {
+				fv.Set(reflect.Append(fv, reflect.New(at.Elem()).Elem()))
+				err := p.readAny(fv.Index(fv.Len()-1), props)
+				if err != nil {
+					return err
+				}
+				tok := p.next()
+				if tok.err != nil {
+					return tok.err
+				}
+				if tok.value == "]" {
+					break
+				}
+				if tok.value != "," {
+					return p.errorf("Expected ']' or ',' found %q", tok.value)
+				}
+			}
+			return nil
+		}
+		// One value of the repeated field.
+		p.back()
+		fv.Set(reflect.Append(fv, reflect.New(at.Elem()).Elem()))
+		return p.readAny(fv.Index(fv.Len()-1), props)
+	case reflect.Bool:
+		// true/1/t/True or false/f/0/False.
+		switch tok.value {
+		case "true", "1", "t", "True":
+			fv.SetBool(true)
+			return nil
+		case "false", "0", "f", "False":
+			fv.SetBool(false)
+			return nil
+		}
+	case reflect.Float32, reflect.Float64:
+		v := tok.value
+		// Ignore 'f' for compatibility with output generated by C++, but don't
+		// remove 'f' when the value is "-inf" or "inf".
+		if strings.HasSuffix(v, "f") && tok.value != "-inf" && tok.value != "inf" {
+			v = v[:len(v)-1]
+		}
+		if f, err := strconv.ParseFloat(v, fv.Type().Bits()); err == nil {
+			fv.SetFloat(f)
+			return nil
+		}
+	case reflect.Int32:
+		if x, err := strconv.ParseInt(tok.value, 0, 32); err == nil {
+			fv.SetInt(x)
+			return nil
+		}
+
+		if len(props.Enum) == 0 {
+			break
+		}
+		m, ok := enumValueMaps[props.Enum]
+		if !ok {
+			break
+		}
+		x, ok := m[tok.value]
+		if !ok {
+			break
+		}
+		fv.SetInt(int64(x))
+		return nil
+	case reflect.Int64:
+		if x, err := strconv.ParseInt(tok.value, 0, 64); err == nil {
+			fv.SetInt(x)
+			return nil
+		}
+
+	case reflect.Ptr:
+		// A basic field (indirected through pointer), or a repeated message/group
+		p.back()
+		fv.Set(reflect.New(fv.Type().Elem()))
+		return p.readAny(fv.Elem(), props)
+	case reflect.String:
+		if tok.value[0] == '"' || tok.value[0] == '\'' {
+			fv.SetString(tok.unquoted)
+			return nil
+		}
+	case reflect.Struct:
+		var terminator string
+		switch tok.value {
+		case "{":
+			terminator = "}"
+		case "<":
+			terminator = ">"
+		default:
+			return p.errorf("expected '{' or '<', found %q", tok.value)
+		}
+		// TODO: Handle nested messages which implement encoding.TextUnmarshaler.
+		return p.readStruct(fv, terminator)
+	case reflect.Uint32:
+		if x, err := strconv.ParseUint(tok.value, 0, 32); err == nil {
+			fv.SetUint(uint64(x))
+			return nil
+		}
+	case reflect.Uint64:
+		if x, err := strconv.ParseUint(tok.value, 0, 64); err == nil {
+			fv.SetUint(x)
+			return nil
+		}
+	}
+	return p.errorf("invalid %v: %v", v.Type(), tok.value)
+}
+
+// UnmarshalText reads a protocol buffer in Text format. UnmarshalText resets pb
+// before starting to unmarshal, so any existing data in pb is always removed.
+// If a required field is not set and no other error occurs,
+// UnmarshalText returns *RequiredNotSetError.
+func UnmarshalText(s string, pb Message) error {
+	if um, ok := pb.(encoding.TextUnmarshaler); ok {
+		return um.UnmarshalText([]byte(s))
+	}
+	pb.Reset()
+	v := reflect.ValueOf(pb)
+	return newTextParser(s).readStruct(v.Elem(), "")
+}
diff --git a/proto/text_parser_test.go b/proto/text_parser_test.go
new file mode 100644
index 0000000..a819808
--- /dev/null
+++ b/proto/text_parser_test.go
@@ -0,0 +1,706 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto_test
+
+import (
+	"fmt"
+	"math"
+	"testing"
+
+	. "github.com/golang/protobuf/proto"
+	proto3pb "github.com/golang/protobuf/proto/proto3_proto"
+	. "github.com/golang/protobuf/proto/test_proto"
+)
+
+type UnmarshalTextTest struct {
+	in  string
+	err string // if "", no error expected
+	out *MyMessage
+}
+
+func buildExtStructTest(text string) UnmarshalTextTest {
+	msg := &MyMessage{
+		Count: Int32(42),
+	}
+	SetExtension(msg, E_Ext_More, &Ext{
+		Data: String("Hello, world!"),
+	})
+	return UnmarshalTextTest{in: text, out: msg}
+}
+
+func buildExtDataTest(text string) UnmarshalTextTest {
+	msg := &MyMessage{
+		Count: Int32(42),
+	}
+	SetExtension(msg, E_Ext_Text, String("Hello, world!"))
+	SetExtension(msg, E_Ext_Number, Int32(1729))
+	return UnmarshalTextTest{in: text, out: msg}
+}
+
+func buildExtRepStringTest(text string) UnmarshalTextTest {
+	msg := &MyMessage{
+		Count: Int32(42),
+	}
+	if err := SetExtension(msg, E_Greeting, []string{"bula", "hola"}); err != nil {
+		panic(err)
+	}
+	return UnmarshalTextTest{in: text, out: msg}
+}
+
+var unMarshalTextTests = []UnmarshalTextTest{
+	// Basic
+	{
+		in: " count:42\n  name:\"Dave\" ",
+		out: &MyMessage{
+			Count: Int32(42),
+			Name:  String("Dave"),
+		},
+	},
+
+	// Empty quoted string
+	{
+		in: `count:42 name:""`,
+		out: &MyMessage{
+			Count: Int32(42),
+			Name:  String(""),
+		},
+	},
+
+	// Quoted string concatenation with double quotes
+	{
+		in: `count:42 name: "My name is "` + "\n" + `"elsewhere"`,
+		out: &MyMessage{
+			Count: Int32(42),
+			Name:  String("My name is elsewhere"),
+		},
+	},
+
+	// Quoted string concatenation with single quotes
+	{
+		in: "count:42 name: 'My name is '\n'elsewhere'",
+		out: &MyMessage{
+			Count: Int32(42),
+			Name:  String("My name is elsewhere"),
+		},
+	},
+
+	// Quoted string concatenations with mixed quotes
+	{
+		in: "count:42 name: 'My name is '\n\"elsewhere\"",
+		out: &MyMessage{
+			Count: Int32(42),
+			Name:  String("My name is elsewhere"),
+		},
+	},
+	{
+		in: "count:42 name: \"My name is \"\n'elsewhere'",
+		out: &MyMessage{
+			Count: Int32(42),
+			Name:  String("My name is elsewhere"),
+		},
+	},
+
+	// Quoted string with escaped apostrophe
+	{
+		in: `count:42 name: "HOLIDAY - New Year\'s Day"`,
+		out: &MyMessage{
+			Count: Int32(42),
+			Name:  String("HOLIDAY - New Year's Day"),
+		},
+	},
+
+	// Quoted string with single quote
+	{
+		in: `count:42 name: 'Roger "The Ramster" Ramjet'`,
+		out: &MyMessage{
+			Count: Int32(42),
+			Name:  String(`Roger "The Ramster" Ramjet`),
+		},
+	},
+
+	// Quoted string with all the accepted special characters from the C++ test
+	{
+		in: `count:42 name: ` + "\"\\\"A string with \\' characters \\n and \\r newlines and \\t tabs and \\001 slashes \\\\ and  multiple   spaces\"",
+		out: &MyMessage{
+			Count: Int32(42),
+			Name:  String("\"A string with ' characters \n and \r newlines and \t tabs and \001 slashes \\ and  multiple   spaces"),
+		},
+	},
+
+	// Quoted string with quoted backslash
+	{
+		in: `count:42 name: "\\'xyz"`,
+		out: &MyMessage{
+			Count: Int32(42),
+			Name:  String(`\'xyz`),
+		},
+	},
+
+	// Quoted string with UTF-8 bytes.
+	{
+		in: "count:42 name: '\303\277\302\201\x00\xAB\xCD\xEF'",
+		out: &MyMessage{
+			Count: Int32(42),
+			Name:  String("\303\277\302\201\x00\xAB\xCD\xEF"),
+		},
+	},
+
+	// Quoted string with unicode escapes.
+	{
+		in: `count: 42 name: "\u0047\U00000047\uffff\U0010ffff"`,
+		out: &MyMessage{
+			Count: Int32(42),
+			Name:  String("GG\uffff\U0010ffff"),
+		},
+	},
+
+	// Bad quoted string
+	{
+		in:  `inner: < host: "\0" >` + "\n",
+		err: `line 1.15: invalid quoted string "\0": \0 requires 2 following digits`,
+	},
+
+	// Bad \u escape
+	{
+		in:  `count: 42 name: "\u000"`,
+		err: `line 1.16: invalid quoted string "\u000": \u requires 4 following digits`,
+	},
+
+	// Bad \U escape
+	{
+		in:  `count: 42 name: "\U0000000"`,
+		err: `line 1.16: invalid quoted string "\U0000000": \U requires 8 following digits`,
+	},
+
+	// Bad \U escape
+	{
+		in:  `count: 42 name: "\xxx"`,
+		err: `line 1.16: invalid quoted string "\xxx": \xxx contains non-hexadecimal digits`,
+	},
+
+	// Number too large for int64
+	{
+		in:  "count: 1 others { key: 123456789012345678901 }",
+		err: "line 1.23: invalid int64: 123456789012345678901",
+	},
+
+	// Number too large for int32
+	{
+		in:  "count: 1234567890123",
+		err: "line 1.7: invalid int32: 1234567890123",
+	},
+
+	// Number in hexadecimal
+	{
+		in: "count: 0x2beef",
+		out: &MyMessage{
+			Count: Int32(0x2beef),
+		},
+	},
+
+	// Number in octal
+	{
+		in: "count: 024601",
+		out: &MyMessage{
+			Count: Int32(024601),
+		},
+	},
+
+	// Floating point number with "f" suffix
+	{
+		in: "count: 4 others:< weight: 17.0f >",
+		out: &MyMessage{
+			Count: Int32(4),
+			Others: []*OtherMessage{
+				{
+					Weight: Float32(17),
+				},
+			},
+		},
+	},
+
+	// Floating point positive infinity
+	{
+		in: "count: 4 bigfloat: inf",
+		out: &MyMessage{
+			Count:    Int32(4),
+			Bigfloat: Float64(math.Inf(1)),
+		},
+	},
+
+	// Floating point negative infinity
+	{
+		in: "count: 4 bigfloat: -inf",
+		out: &MyMessage{
+			Count:    Int32(4),
+			Bigfloat: Float64(math.Inf(-1)),
+		},
+	},
+
+	// Number too large for float32
+	{
+		in:  "others:< weight: 12345678901234567890123456789012345678901234567890 >",
+		err: "line 1.17: invalid float32: 12345678901234567890123456789012345678901234567890",
+	},
+
+	// Number posing as a quoted string
+	{
+		in:  `inner: < host: 12 >` + "\n",
+		err: `line 1.15: invalid string: 12`,
+	},
+
+	// Quoted string posing as int32
+	{
+		in:  `count: "12"`,
+		err: `line 1.7: invalid int32: "12"`,
+	},
+
+	// Quoted string posing a float32
+	{
+		in:  `others:< weight: "17.4" >`,
+		err: `line 1.17: invalid float32: "17.4"`,
+	},
+
+	// unclosed bracket doesn't cause infinite loop
+	{
+		in:  `[`,
+		err: `line 1.0: unclosed type_url or extension name`,
+	},
+
+	// Enum
+	{
+		in: `count:42 bikeshed: BLUE`,
+		out: &MyMessage{
+			Count:    Int32(42),
+			Bikeshed: MyMessage_BLUE.Enum(),
+		},
+	},
+
+	// Repeated field
+	{
+		in: `count:42 pet: "horsey" pet:"bunny"`,
+		out: &MyMessage{
+			Count: Int32(42),
+			Pet:   []string{"horsey", "bunny"},
+		},
+	},
+
+	// Repeated field with list notation
+	{
+		in: `count:42 pet: ["horsey", "bunny"]`,
+		out: &MyMessage{
+			Count: Int32(42),
+			Pet:   []string{"horsey", "bunny"},
+		},
+	},
+
+	// Repeated message with/without colon and <>/{}
+	{
+		in: `count:42 others:{} others{} others:<> others:{}`,
+		out: &MyMessage{
+			Count: Int32(42),
+			Others: []*OtherMessage{
+				{},
+				{},
+				{},
+				{},
+			},
+		},
+	},
+
+	// Missing colon for inner message
+	{
+		in: `count:42 inner < host: "cauchy.syd" >`,
+		out: &MyMessage{
+			Count: Int32(42),
+			Inner: &InnerMessage{
+				Host: String("cauchy.syd"),
+			},
+		},
+	},
+
+	// Missing colon for string field
+	{
+		in:  `name "Dave"`,
+		err: `line 1.5: expected ':', found "\"Dave\""`,
+	},
+
+	// Missing colon for int32 field
+	{
+		in:  `count 42`,
+		err: `line 1.6: expected ':', found "42"`,
+	},
+
+	// Missing required field
+	{
+		in:  `name: "Pawel"`,
+		err: fmt.Sprintf(`proto: required field "%T.count" not set`, MyMessage{}),
+		out: &MyMessage{
+			Name: String("Pawel"),
+		},
+	},
+
+	// Missing required field in a required submessage
+	{
+		in:  `count: 42 we_must_go_deeper < leo_finally_won_an_oscar <> >`,
+		err: fmt.Sprintf(`proto: required field "%T.host" not set`, InnerMessage{}),
+		out: &MyMessage{
+			Count:          Int32(42),
+			WeMustGoDeeper: &RequiredInnerMessage{LeoFinallyWonAnOscar: &InnerMessage{}},
+		},
+	},
+
+	// Repeated non-repeated field
+	{
+		in:  `name: "Rob" name: "Russ"`,
+		err: `line 1.12: non-repeated field "name" was repeated`,
+	},
+
+	// Group
+	{
+		in: `count: 17 SomeGroup { group_field: 12 }`,
+		out: &MyMessage{
+			Count: Int32(17),
+			Somegroup: &MyMessage_SomeGroup{
+				GroupField: Int32(12),
+			},
+		},
+	},
+
+	// Semicolon between fields
+	{
+		in: `count:3;name:"Calvin"`,
+		out: &MyMessage{
+			Count: Int32(3),
+			Name:  String("Calvin"),
+		},
+	},
+	// Comma between fields
+	{
+		in: `count:4,name:"Ezekiel"`,
+		out: &MyMessage{
+			Count: Int32(4),
+			Name:  String("Ezekiel"),
+		},
+	},
+
+	// Boolean false
+	{
+		in: `count:42 inner { host: "example.com" connected: false }`,
+		out: &MyMessage{
+			Count: Int32(42),
+			Inner: &InnerMessage{
+				Host:      String("example.com"),
+				Connected: Bool(false),
+			},
+		},
+	},
+	// Boolean true
+	{
+		in: `count:42 inner { host: "example.com" connected: true }`,
+		out: &MyMessage{
+			Count: Int32(42),
+			Inner: &InnerMessage{
+				Host:      String("example.com"),
+				Connected: Bool(true),
+			},
+		},
+	},
+	// Boolean 0
+	{
+		in: `count:42 inner { host: "example.com" connected: 0 }`,
+		out: &MyMessage{
+			Count: Int32(42),
+			Inner: &InnerMessage{
+				Host:      String("example.com"),
+				Connected: Bool(false),
+			},
+		},
+	},
+	// Boolean 1
+	{
+		in: `count:42 inner { host: "example.com" connected: 1 }`,
+		out: &MyMessage{
+			Count: Int32(42),
+			Inner: &InnerMessage{
+				Host:      String("example.com"),
+				Connected: Bool(true),
+			},
+		},
+	},
+	// Boolean f
+	{
+		in: `count:42 inner { host: "example.com" connected: f }`,
+		out: &MyMessage{
+			Count: Int32(42),
+			Inner: &InnerMessage{
+				Host:      String("example.com"),
+				Connected: Bool(false),
+			},
+		},
+	},
+	// Boolean t
+	{
+		in: `count:42 inner { host: "example.com" connected: t }`,
+		out: &MyMessage{
+			Count: Int32(42),
+			Inner: &InnerMessage{
+				Host:      String("example.com"),
+				Connected: Bool(true),
+			},
+		},
+	},
+	// Boolean False
+	{
+		in: `count:42 inner { host: "example.com" connected: False }`,
+		out: &MyMessage{
+			Count: Int32(42),
+			Inner: &InnerMessage{
+				Host:      String("example.com"),
+				Connected: Bool(false),
+			},
+		},
+	},
+	// Boolean True
+	{
+		in: `count:42 inner { host: "example.com" connected: True }`,
+		out: &MyMessage{
+			Count: Int32(42),
+			Inner: &InnerMessage{
+				Host:      String("example.com"),
+				Connected: Bool(true),
+			},
+		},
+	},
+
+	// Extension
+	buildExtStructTest(`count: 42 [test_proto.Ext.more]:<data:"Hello, world!" >`),
+	buildExtStructTest(`count: 42 [test_proto.Ext.more] {data:"Hello, world!"}`),
+	buildExtDataTest(`count: 42 [test_proto.Ext.text]:"Hello, world!" [test_proto.Ext.number]:1729`),
+	buildExtRepStringTest(`count: 42 [test_proto.greeting]:"bula" [test_proto.greeting]:"hola"`),
+
+	// Big all-in-one
+	{
+		in: "count:42  # Meaning\n" +
+			`name:"Dave" ` +
+			`quote:"\"I didn't want to go.\"" ` +
+			`pet:"bunny" ` +
+			`pet:"kitty" ` +
+			`pet:"horsey" ` +
+			`inner:<` +
+			`  host:"footrest.syd" ` +
+			`  port:7001 ` +
+			`  connected:true ` +
+			`> ` +
+			`others:<` +
+			`  key:3735928559 ` +
+			`  value:"\x01A\a\f" ` +
+			`> ` +
+			`others:<` +
+			"  weight:58.9  # Atomic weight of Co\n" +
+			`  inner:<` +
+			`    host:"lesha.mtv" ` +
+			`    port:8002 ` +
+			`  >` +
+			`>`,
+		out: &MyMessage{
+			Count: Int32(42),
+			Name:  String("Dave"),
+			Quote: String(`"I didn't want to go."`),
+			Pet:   []string{"bunny", "kitty", "horsey"},
+			Inner: &InnerMessage{
+				Host:      String("footrest.syd"),
+				Port:      Int32(7001),
+				Connected: Bool(true),
+			},
+			Others: []*OtherMessage{
+				{
+					Key:   Int64(3735928559),
+					Value: []byte{0x1, 'A', '\a', '\f'},
+				},
+				{
+					Weight: Float32(58.9),
+					Inner: &InnerMessage{
+						Host: String("lesha.mtv"),
+						Port: Int32(8002),
+					},
+				},
+			},
+		},
+	},
+}
+
+func TestUnmarshalText(t *testing.T) {
+	for i, test := range unMarshalTextTests {
+		pb := new(MyMessage)
+		err := UnmarshalText(test.in, pb)
+		if test.err == "" {
+			// We don't expect failure.
+			if err != nil {
+				t.Errorf("Test %d: Unexpected error: %v", i, err)
+			} else if !Equal(pb, test.out) {
+				t.Errorf("Test %d: Incorrect populated \nHave: %v\nWant: %v",
+					i, pb, test.out)
+			}
+		} else {
+			// We do expect failure.
+			if err == nil {
+				t.Errorf("Test %d: Didn't get expected error: %v", i, test.err)
+			} else if err.Error() != test.err {
+				t.Errorf("Test %d: Incorrect error.\nHave: %v\nWant: %v",
+					i, err.Error(), test.err)
+			} else if _, ok := err.(*RequiredNotSetError); ok && test.out != nil && !Equal(pb, test.out) {
+				t.Errorf("Test %d: Incorrect populated \nHave: %v\nWant: %v",
+					i, pb, test.out)
+			}
+		}
+	}
+}
+
+func TestUnmarshalTextCustomMessage(t *testing.T) {
+	msg := &textMessage{}
+	if err := UnmarshalText("custom", msg); err != nil {
+		t.Errorf("Unexpected error from custom unmarshal: %v", err)
+	}
+	if UnmarshalText("not custom", msg) == nil {
+		t.Errorf("Didn't get expected error from custom unmarshal")
+	}
+}
+
+// Regression test; this caused a panic.
+func TestRepeatedEnum(t *testing.T) {
+	pb := new(RepeatedEnum)
+	if err := UnmarshalText("color: RED", pb); err != nil {
+		t.Fatal(err)
+	}
+	exp := &RepeatedEnum{
+		Color: []RepeatedEnum_Color{RepeatedEnum_RED},
+	}
+	if !Equal(pb, exp) {
+		t.Errorf("Incorrect populated \nHave: %v\nWant: %v", pb, exp)
+	}
+}
+
+func TestProto3TextParsing(t *testing.T) {
+	m := new(proto3pb.Message)
+	const in = `name: "Wallace" true_scotsman: true`
+	want := &proto3pb.Message{
+		Name:         "Wallace",
+		TrueScotsman: true,
+	}
+	if err := UnmarshalText(in, m); err != nil {
+		t.Fatal(err)
+	}
+	if !Equal(m, want) {
+		t.Errorf("\n got %v\nwant %v", m, want)
+	}
+}
+
+func TestMapParsing(t *testing.T) {
+	m := new(MessageWithMap)
+	const in = `name_mapping:<key:1234 value:"Feist"> name_mapping:<key:1 value:"Beatles">` +
+		`msg_mapping:<key:-4, value:<f: 2.0>,>` + // separating commas are okay
+		`msg_mapping<key:-2 value<f: 4.0>>` + // no colon after "value"
+		`msg_mapping:<value:<f: 5.0>>` + // omitted key
+		`msg_mapping:<key:1>` + // omitted value
+		`byte_mapping:<key:true value:"so be it">` +
+		`byte_mapping:<>` // omitted key and value
+	want := &MessageWithMap{
+		NameMapping: map[int32]string{
+			1:    "Beatles",
+			1234: "Feist",
+		},
+		MsgMapping: map[int64]*FloatingPoint{
+			-4: {F: Float64(2.0)},
+			-2: {F: Float64(4.0)},
+			0:  {F: Float64(5.0)},
+			1:  nil,
+		},
+		ByteMapping: map[bool][]byte{
+			false: nil,
+			true:  []byte("so be it"),
+		},
+	}
+	if err := UnmarshalText(in, m); err != nil {
+		t.Fatal(err)
+	}
+	if !Equal(m, want) {
+		t.Errorf("\n got %v\nwant %v", m, want)
+	}
+}
+
+func TestOneofParsing(t *testing.T) {
+	const in = `name:"Shrek"`
+	m := new(Communique)
+	want := &Communique{Union: &Communique_Name{"Shrek"}}
+	if err := UnmarshalText(in, m); err != nil {
+		t.Fatal(err)
+	}
+	if !Equal(m, want) {
+		t.Errorf("\n got %v\nwant %v", m, want)
+	}
+
+	const inOverwrite = `name:"Shrek" number:42`
+	m = new(Communique)
+	testErr := "line 1.13: field 'number' would overwrite already parsed oneof 'Union'"
+	if err := UnmarshalText(inOverwrite, m); err == nil {
+		t.Errorf("TestOneofParsing: Didn't get expected error: %v", testErr)
+	} else if err.Error() != testErr {
+		t.Errorf("TestOneofParsing: Incorrect error.\nHave: %v\nWant: %v",
+			err.Error(), testErr)
+	}
+
+}
+
+var benchInput string
+
+func init() {
+	benchInput = "count: 4\n"
+	for i := 0; i < 1000; i++ {
+		benchInput += "pet: \"fido\"\n"
+	}
+
+	// Check it is valid input.
+	pb := new(MyMessage)
+	err := UnmarshalText(benchInput, pb)
+	if err != nil {
+		panic("Bad benchmark input: " + err.Error())
+	}
+}
+
+func BenchmarkUnmarshalText(b *testing.B) {
+	pb := new(MyMessage)
+	for i := 0; i < b.N; i++ {
+		UnmarshalText(benchInput, pb)
+	}
+	b.SetBytes(int64(len(benchInput)))
+}
diff --git a/proto/text_test.go b/proto/text_test.go
new file mode 100644
index 0000000..3c8b033
--- /dev/null
+++ b/proto/text_test.go
@@ -0,0 +1,518 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package proto_test
+
+import (
+	"bytes"
+	"errors"
+	"io/ioutil"
+	"math"
+	"strings"
+	"sync"
+	"testing"
+
+	"github.com/golang/protobuf/proto"
+
+	proto3pb "github.com/golang/protobuf/proto/proto3_proto"
+	pb "github.com/golang/protobuf/proto/test_proto"
+	anypb "github.com/golang/protobuf/ptypes/any"
+)
+
+// textMessage implements the methods that allow it to marshal and unmarshal
+// itself as text.
+type textMessage struct {
+}
+
+func (*textMessage) MarshalText() ([]byte, error) {
+	return []byte("custom"), nil
+}
+
+func (*textMessage) UnmarshalText(bytes []byte) error {
+	if string(bytes) != "custom" {
+		return errors.New("expected 'custom'")
+	}
+	return nil
+}
+
+func (*textMessage) Reset()         {}
+func (*textMessage) String() string { return "" }
+func (*textMessage) ProtoMessage()  {}
+
+func newTestMessage() *pb.MyMessage {
+	msg := &pb.MyMessage{
+		Count: proto.Int32(42),
+		Name:  proto.String("Dave"),
+		Quote: proto.String(`"I didn't want to go."`),
+		Pet:   []string{"bunny", "kitty", "horsey"},
+		Inner: &pb.InnerMessage{
+			Host:      proto.String("footrest.syd"),
+			Port:      proto.Int32(7001),
+			Connected: proto.Bool(true),
+		},
+		Others: []*pb.OtherMessage{
+			{
+				Key:   proto.Int64(0xdeadbeef),
+				Value: []byte{1, 65, 7, 12},
+			},
+			{
+				Weight: proto.Float32(6.022),
+				Inner: &pb.InnerMessage{
+					Host: proto.String("lesha.mtv"),
+					Port: proto.Int32(8002),
+				},
+			},
+		},
+		Bikeshed: pb.MyMessage_BLUE.Enum(),
+		Somegroup: &pb.MyMessage_SomeGroup{
+			GroupField: proto.Int32(8),
+		},
+		// One normally wouldn't do this.
+		// This is an undeclared tag 13, as a varint (wire type 0) with value 4.
+		XXX_unrecognized: []byte{13<<3 | 0, 4},
+	}
+	ext := &pb.Ext{
+		Data: proto.String("Big gobs for big rats"),
+	}
+	if err := proto.SetExtension(msg, pb.E_Ext_More, ext); err != nil {
+		panic(err)
+	}
+	greetings := []string{"adg", "easy", "cow"}
+	if err := proto.SetExtension(msg, pb.E_Greeting, greetings); err != nil {
+		panic(err)
+	}
+
+	// Add an unknown extension. We marshal a pb.Ext, and fake the ID.
+	b, err := proto.Marshal(&pb.Ext{Data: proto.String("3G skiing")})
+	if err != nil {
+		panic(err)
+	}
+	b = append(proto.EncodeVarint(201<<3|proto.WireBytes), b...)
+	proto.SetRawExtension(msg, 201, b)
+
+	// Extensions can be plain fields, too, so let's test that.
+	b = append(proto.EncodeVarint(202<<3|proto.WireVarint), 19)
+	proto.SetRawExtension(msg, 202, b)
+
+	return msg
+}
+
+const text = `count: 42
+name: "Dave"
+quote: "\"I didn't want to go.\""
+pet: "bunny"
+pet: "kitty"
+pet: "horsey"
+inner: <
+  host: "footrest.syd"
+  port: 7001
+  connected: true
+>
+others: <
+  key: 3735928559
+  value: "\001A\007\014"
+>
+others: <
+  weight: 6.022
+  inner: <
+    host: "lesha.mtv"
+    port: 8002
+  >
+>
+bikeshed: BLUE
+SomeGroup {
+  group_field: 8
+}
+/* 2 unknown bytes */
+13: 4
+[test_proto.Ext.more]: <
+  data: "Big gobs for big rats"
+>
+[test_proto.greeting]: "adg"
+[test_proto.greeting]: "easy"
+[test_proto.greeting]: "cow"
+/* 13 unknown bytes */
+201: "\t3G skiing"
+/* 3 unknown bytes */
+202: 19
+`
+
+func TestMarshalText(t *testing.T) {
+	buf := new(bytes.Buffer)
+	if err := proto.MarshalText(buf, newTestMessage()); err != nil {
+		t.Fatalf("proto.MarshalText: %v", err)
+	}
+	s := buf.String()
+	if s != text {
+		t.Errorf("Got:\n===\n%v===\nExpected:\n===\n%v===\n", s, text)
+	}
+}
+
+func TestMarshalTextCustomMessage(t *testing.T) {
+	buf := new(bytes.Buffer)
+	if err := proto.MarshalText(buf, &textMessage{}); err != nil {
+		t.Fatalf("proto.MarshalText: %v", err)
+	}
+	s := buf.String()
+	if s != "custom" {
+		t.Errorf("Got %q, expected %q", s, "custom")
+	}
+}
+func TestMarshalTextNil(t *testing.T) {
+	want := "<nil>"
+	tests := []proto.Message{nil, (*pb.MyMessage)(nil)}
+	for i, test := range tests {
+		buf := new(bytes.Buffer)
+		if err := proto.MarshalText(buf, test); err != nil {
+			t.Fatal(err)
+		}
+		if got := buf.String(); got != want {
+			t.Errorf("%d: got %q want %q", i, got, want)
+		}
+	}
+}
+
+func TestMarshalTextUnknownEnum(t *testing.T) {
+	// The Color enum only specifies values 0-2.
+	m := &pb.MyMessage{Bikeshed: pb.MyMessage_Color(3).Enum()}
+	got := m.String()
+	const want = `bikeshed:3 `
+	if got != want {
+		t.Errorf("\n got %q\nwant %q", got, want)
+	}
+}
+
+func TestTextOneof(t *testing.T) {
+	tests := []struct {
+		m    proto.Message
+		want string
+	}{
+		// zero message
+		{&pb.Communique{}, ``},
+		// scalar field
+		{&pb.Communique{Union: &pb.Communique_Number{4}}, `number:4`},
+		// message field
+		{&pb.Communique{Union: &pb.Communique_Msg{
+			&pb.Strings{StringField: proto.String("why hello!")},
+		}}, `msg:<string_field:"why hello!" >`},
+		// bad oneof (should not panic)
+		{&pb.Communique{Union: &pb.Communique_Msg{nil}}, `msg:/* nil */`},
+	}
+	for _, test := range tests {
+		got := strings.TrimSpace(test.m.String())
+		if got != test.want {
+			t.Errorf("\n got %s\nwant %s", got, test.want)
+		}
+	}
+}
+
+func BenchmarkMarshalTextBuffered(b *testing.B) {
+	buf := new(bytes.Buffer)
+	m := newTestMessage()
+	for i := 0; i < b.N; i++ {
+		buf.Reset()
+		proto.MarshalText(buf, m)
+	}
+}
+
+func BenchmarkMarshalTextUnbuffered(b *testing.B) {
+	w := ioutil.Discard
+	m := newTestMessage()
+	for i := 0; i < b.N; i++ {
+		proto.MarshalText(w, m)
+	}
+}
+
+func compact(src string) string {
+	// s/[ \n]+/ /g; s/ $//;
+	dst := make([]byte, len(src))
+	space, comment := false, false
+	j := 0
+	for i := 0; i < len(src); i++ {
+		if strings.HasPrefix(src[i:], "/*") {
+			comment = true
+			i++
+			continue
+		}
+		if comment && strings.HasPrefix(src[i:], "*/") {
+			comment = false
+			i++
+			continue
+		}
+		if comment {
+			continue
+		}
+		c := src[i]
+		if c == ' ' || c == '\n' {
+			space = true
+			continue
+		}
+		if j > 0 && (dst[j-1] == ':' || dst[j-1] == '<' || dst[j-1] == '{') {
+			space = false
+		}
+		if c == '{' {
+			space = false
+		}
+		if space {
+			dst[j] = ' '
+			j++
+			space = false
+		}
+		dst[j] = c
+		j++
+	}
+	if space {
+		dst[j] = ' '
+		j++
+	}
+	return string(dst[0:j])
+}
+
+var compactText = compact(text)
+
+func TestCompactText(t *testing.T) {
+	s := proto.CompactTextString(newTestMessage())
+	if s != compactText {
+		t.Errorf("Got:\n===\n%v===\nExpected:\n===\n%v\n===\n", s, compactText)
+	}
+}
+
+func TestStringEscaping(t *testing.T) {
+	testCases := []struct {
+		in  *pb.Strings
+		out string
+	}{
+		{
+			// Test data from C++ test (TextFormatTest.StringEscape).
+			// Single divergence: we don't escape apostrophes.
+			&pb.Strings{StringField: proto.String("\"A string with ' characters \n and \r newlines and \t tabs and \001 slashes \\ and  multiple   spaces")},
+			"string_field: \"\\\"A string with ' characters \\n and \\r newlines and \\t tabs and \\001 slashes \\\\ and  multiple   spaces\"\n",
+		},
+		{
+			// Test data from the same C++ test.
+			&pb.Strings{StringField: proto.String("\350\260\267\346\255\214")},
+			"string_field: \"\\350\\260\\267\\346\\255\\214\"\n",
+		},
+		{
+			// Some UTF-8.
+			&pb.Strings{StringField: proto.String("\x00\x01\xff\x81")},
+			`string_field: "\000\001\377\201"` + "\n",
+		},
+	}
+
+	for i, tc := range testCases {
+		var buf bytes.Buffer
+		if err := proto.MarshalText(&buf, tc.in); err != nil {
+			t.Errorf("proto.MarsalText: %v", err)
+			continue
+		}
+		s := buf.String()
+		if s != tc.out {
+			t.Errorf("#%d: Got:\n%s\nExpected:\n%s\n", i, s, tc.out)
+			continue
+		}
+
+		// Check round-trip.
+		pb := new(pb.Strings)
+		if err := proto.UnmarshalText(s, pb); err != nil {
+			t.Errorf("#%d: UnmarshalText: %v", i, err)
+			continue
+		}
+		if !proto.Equal(pb, tc.in) {
+			t.Errorf("#%d: Round-trip failed:\nstart: %v\n  end: %v", i, tc.in, pb)
+		}
+	}
+}
+
+// A limitedWriter accepts some output before it fails.
+// This is a proxy for something like a nearly-full or imminently-failing disk,
+// or a network connection that is about to die.
+type limitedWriter struct {
+	b     bytes.Buffer
+	limit int
+}
+
+var outOfSpace = errors.New("proto: insufficient space")
+
+func (w *limitedWriter) Write(p []byte) (n int, err error) {
+	var avail = w.limit - w.b.Len()
+	if avail <= 0 {
+		return 0, outOfSpace
+	}
+	if len(p) <= avail {
+		return w.b.Write(p)
+	}
+	n, _ = w.b.Write(p[:avail])
+	return n, outOfSpace
+}
+
+func TestMarshalTextFailing(t *testing.T) {
+	// Try lots of different sizes to exercise more error code-paths.
+	for lim := 0; lim < len(text); lim++ {
+		buf := new(limitedWriter)
+		buf.limit = lim
+		err := proto.MarshalText(buf, newTestMessage())
+		// We expect a certain error, but also some partial results in the buffer.
+		if err != outOfSpace {
+			t.Errorf("Got:\n===\n%v===\nExpected:\n===\n%v===\n", err, outOfSpace)
+		}
+		s := buf.b.String()
+		x := text[:buf.limit]
+		if s != x {
+			t.Errorf("Got:\n===\n%v===\nExpected:\n===\n%v===\n", s, x)
+		}
+	}
+}
+
+func TestFloats(t *testing.T) {
+	tests := []struct {
+		f    float64
+		want string
+	}{
+		{0, "0"},
+		{4.7, "4.7"},
+		{math.Inf(1), "inf"},
+		{math.Inf(-1), "-inf"},
+		{math.NaN(), "nan"},
+	}
+	for _, test := range tests {
+		msg := &pb.FloatingPoint{F: &test.f}
+		got := strings.TrimSpace(msg.String())
+		want := `f:` + test.want
+		if got != want {
+			t.Errorf("f=%f: got %q, want %q", test.f, got, want)
+		}
+	}
+}
+
+func TestRepeatedNilText(t *testing.T) {
+	m := &pb.MessageList{
+		Message: []*pb.MessageList_Message{
+			nil,
+			&pb.MessageList_Message{
+				Name: proto.String("Horse"),
+			},
+			nil,
+		},
+	}
+	want := `Message <nil>
+Message {
+  name: "Horse"
+}
+Message <nil>
+`
+	if s := proto.MarshalTextString(m); s != want {
+		t.Errorf(" got: %s\nwant: %s", s, want)
+	}
+}
+
+func TestProto3Text(t *testing.T) {
+	tests := []struct {
+		m    proto.Message
+		want string
+	}{
+		// zero message
+		{&proto3pb.Message{}, ``},
+		// zero message except for an empty byte slice
+		{&proto3pb.Message{Data: []byte{}}, ``},
+		// trivial case
+		{&proto3pb.Message{Name: "Rob", HeightInCm: 175}, `name:"Rob" height_in_cm:175`},
+		// empty map
+		{&pb.MessageWithMap{}, ``},
+		// non-empty map; map format is the same as a repeated struct,
+		// and they are sorted by key (numerically for numeric keys).
+		{
+			&pb.MessageWithMap{NameMapping: map[int32]string{
+				-1:      "Negatory",
+				7:       "Lucky",
+				1234:    "Feist",
+				6345789: "Otis",
+			}},
+			`name_mapping:<key:-1 value:"Negatory" > ` +
+				`name_mapping:<key:7 value:"Lucky" > ` +
+				`name_mapping:<key:1234 value:"Feist" > ` +
+				`name_mapping:<key:6345789 value:"Otis" >`,
+		},
+		// map with nil value; not well-defined, but we shouldn't crash
+		{
+			&pb.MessageWithMap{MsgMapping: map[int64]*pb.FloatingPoint{7: nil}},
+			`msg_mapping:<key:7 >`,
+		},
+	}
+	for _, test := range tests {
+		got := strings.TrimSpace(test.m.String())
+		if got != test.want {
+			t.Errorf("\n got %s\nwant %s", got, test.want)
+		}
+	}
+}
+
+func TestRacyMarshal(t *testing.T) {
+	// This test should be run with the race detector.
+
+	any := &pb.MyMessage{Count: proto.Int32(47), Name: proto.String("David")}
+	proto.SetExtension(any, pb.E_Ext_Text, proto.String("bar"))
+	b, err := proto.Marshal(any)
+	if err != nil {
+		panic(err)
+	}
+	m := &proto3pb.Message{
+		Name:        "David",
+		ResultCount: 47,
+		Anything:    &anypb.Any{TypeUrl: "type.googleapis.com/" + proto.MessageName(any), Value: b},
+	}
+
+	wantText := proto.MarshalTextString(m)
+	wantBytes, err := proto.Marshal(m)
+	if err != nil {
+		t.Fatalf("proto.Marshal error: %v", err)
+	}
+
+	var wg sync.WaitGroup
+	defer wg.Wait()
+	wg.Add(20)
+	for i := 0; i < 10; i++ {
+		go func() {
+			defer wg.Done()
+			got := proto.MarshalTextString(m)
+			if got != wantText {
+				t.Errorf("proto.MarshalTextString = %q, want %q", got, wantText)
+			}
+		}()
+		go func() {
+			defer wg.Done()
+			got, err := proto.Marshal(m)
+			if !bytes.Equal(got, wantBytes) || err != nil {
+				t.Errorf("proto.Marshal = (%x, %v), want (%x, nil)", got, err, wantBytes)
+			}
+		}()
+	}
+}
diff --git a/proto/validate_test.go b/proto/validate_test.go
deleted file mode 100644
index e806998..0000000
--- a/proto/validate_test.go
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package proto_test
-
-import (
-	"fmt"
-	"testing"
-
-	"google.golang.org/protobuf/internal/impl"
-	piface "google.golang.org/protobuf/runtime/protoiface"
-)
-
-// TestValidate tests the internal message validator.
-//
-// Despite being more properly associated with the internal/impl package,
-// it is located here to take advantage of the test wire encoder/decoder inputs.
-
-func TestValidateValid(t *testing.T) {
-	for _, test := range testValidMessages {
-		for _, m := range test.decodeTo {
-			t.Run(fmt.Sprintf("%s (%T)", test.desc, m), func(t *testing.T) {
-				mt := m.ProtoReflect().Type()
-				want := impl.ValidationValid
-				if test.validationStatus != 0 {
-					want = test.validationStatus
-				}
-				out, status := impl.Validate(mt, piface.UnmarshalInput{
-					Buf: test.wire,
-				})
-				if status != want {
-					t.Errorf("Validate(%x) = %v, want %v", test.wire, status, want)
-				}
-				if got, want := (out.Flags&piface.UnmarshalInitialized != 0), !test.partial; got != want && !test.nocheckValidInit && status == impl.ValidationValid {
-					t.Errorf("Validate(%x): initialized = %v, want %v", test.wire, got, want)
-				}
-			})
-		}
-	}
-}
-
-func TestValidateInvalid(t *testing.T) {
-	for _, test := range testInvalidMessages {
-		for _, m := range test.decodeTo {
-			t.Run(fmt.Sprintf("%s (%T)", test.desc, m), func(t *testing.T) {
-				mt := m.ProtoReflect().Type()
-				_, got := impl.Validate(mt, piface.UnmarshalInput{
-					Buf: test.wire,
-				})
-				want := impl.ValidationInvalid
-				if got != want {
-					t.Errorf("Validate(%x) = %v, want %v", test.wire, got, want)
-				}
-			})
-		}
-	}
-}
diff --git a/proto/weak_test.go b/proto/weak_test.go
deleted file mode 100644
index 79340e3..0000000
--- a/proto/weak_test.go
+++ /dev/null
@@ -1,125 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package proto_test
-
-import (
-	"testing"
-
-	"google.golang.org/protobuf/internal/flags"
-	"google.golang.org/protobuf/internal/protobuild"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/testing/protopack"
-
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-	weakpb "google.golang.org/protobuf/internal/testprotos/test/weak1"
-)
-
-func init() {
-	if flags.ProtoLegacy {
-		testValidMessages = append(testValidMessages, testWeakValidMessages...)
-		testInvalidMessages = append(testInvalidMessages, testWeakInvalidMessages...)
-		testMerges = append(testMerges, testWeakMerges...)
-	}
-}
-
-var testWeakValidMessages = []testProto{
-	{
-		desc: "weak message",
-		decodeTo: []proto.Message{
-			func() proto.Message {
-				if !flags.ProtoLegacy {
-					return nil
-				}
-				m := &testpb.TestWeak{}
-				m.SetWeakMessage1(&weakpb.WeakImportMessage1{
-					A: proto.Int32(1000),
-				})
-				m.ProtoReflect().SetUnknown(protopack.Message{
-					protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-						protopack.Tag{1, protopack.VarintType}, protopack.Varint(2000),
-					}),
-				}.Marshal())
-				return m
-			}(),
-		},
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(1000),
-			}),
-			protopack.Tag{2, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{1, protopack.VarintType}, protopack.Varint(2000),
-			}),
-		}.Marshal(),
-	},
-}
-
-var testWeakInvalidMessages = []testProto{
-	{
-		desc:     "invalid field number 0 in weak message",
-		decodeTo: []proto.Message{(*testpb.TestWeak)(nil)},
-		wire: protopack.Message{
-			protopack.Tag{1, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-				protopack.Tag{0, protopack.VarintType}, protopack.Varint(1000),
-			}),
-		}.Marshal(),
-	},
-}
-
-var testWeakMerges = []testMerge{
-	{
-		desc: "clone weak message",
-		src: protobuild.Message{
-			"weak_message1": protobuild.Message{
-				"a": 1,
-			},
-		},
-		types: []proto.Message{&testpb.TestWeak{}},
-	}, {
-		desc: "merge weak message",
-		dst: protobuild.Message{
-			"weak_message1": protobuild.Message{
-				"a": 1,
-			},
-		},
-		src: protobuild.Message{
-			"weak_message1": protobuild.Message{
-				"a": 2,
-			},
-		},
-		want: protobuild.Message{
-			"weak_message1": protobuild.Message{
-				"a": 2,
-			},
-		},
-		types: []proto.Message{&testpb.TestWeak{}},
-	},
-}
-
-func TestWeakNil(t *testing.T) {
-	if !flags.ProtoLegacy {
-		t.SkipNow()
-	}
-
-	m := new(testpb.TestWeak)
-	if v, ok := m.GetWeakMessage1().(*weakpb.WeakImportMessage1); !ok || v != nil {
-		t.Errorf("m.GetWeakMessage1() = type %[1]T(%[1]v), want (*weakpb.WeakImportMessage1)", v)
-	}
-}
-
-func TestWeakMarshalNil(t *testing.T) {
-	if !flags.ProtoLegacy {
-		t.SkipNow()
-	}
-
-	m := new(testpb.TestWeak)
-	m.SetWeakMessage1(nil)
-	if b, err := proto.Marshal(m); err != nil || len(b) != 0 {
-		t.Errorf("Marshal(weak field set to nil) = [%x], %v; want [], nil", b, err)
-	}
-	m.SetWeakMessage1((*weakpb.WeakImportMessage1)(nil))
-	if b, err := proto.Marshal(m); err != nil || len(b) != 0 {
-		t.Errorf("Marshal(weak field set to typed nil) = [%x], %v; want [], nil", b, err)
-	}
-}
diff --git a/proto/wrappers.go b/proto/wrappers.go
deleted file mode 100644
index 653b12c..0000000
--- a/proto/wrappers.go
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package proto
-
-// Bool stores v in a new bool value and returns a pointer to it.
-func Bool(v bool) *bool { return &v }
-
-// Int32 stores v in a new int32 value and returns a pointer to it.
-func Int32(v int32) *int32 { return &v }
-
-// Int64 stores v in a new int64 value and returns a pointer to it.
-func Int64(v int64) *int64 { return &v }
-
-// Float32 stores v in a new float32 value and returns a pointer to it.
-func Float32(v float32) *float32 { return &v }
-
-// Float64 stores v in a new float64 value and returns a pointer to it.
-func Float64(v float64) *float64 { return &v }
-
-// Uint32 stores v in a new uint32 value and returns a pointer to it.
-func Uint32(v uint32) *uint32 { return &v }
-
-// Uint64 stores v in a new uint64 value and returns a pointer to it.
-func Uint64(v uint64) *uint64 { return &v }
-
-// String stores v in a new string value and returns a pointer to it.
-func String(v string) *string { return &v }
diff --git a/protoc-gen-go/descriptor/descriptor.pb.go b/protoc-gen-go/descriptor/descriptor.pb.go
new file mode 100644
index 0000000..d371d56
--- /dev/null
+++ b/protoc-gen-go/descriptor/descriptor.pb.go
@@ -0,0 +1,2889 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/protobuf/descriptor.proto
+
+package descriptor
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+type FieldDescriptorProto_Type int32
+
+const (
+	// 0 is reserved for errors.
+	// Order is weird for historical reasons.
+	FieldDescriptorProto_TYPE_DOUBLE FieldDescriptorProto_Type = 1
+	FieldDescriptorProto_TYPE_FLOAT  FieldDescriptorProto_Type = 2
+	// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
+	// negative values are likely.
+	FieldDescriptorProto_TYPE_INT64  FieldDescriptorProto_Type = 3
+	FieldDescriptorProto_TYPE_UINT64 FieldDescriptorProto_Type = 4
+	// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
+	// negative values are likely.
+	FieldDescriptorProto_TYPE_INT32   FieldDescriptorProto_Type = 5
+	FieldDescriptorProto_TYPE_FIXED64 FieldDescriptorProto_Type = 6
+	FieldDescriptorProto_TYPE_FIXED32 FieldDescriptorProto_Type = 7
+	FieldDescriptorProto_TYPE_BOOL    FieldDescriptorProto_Type = 8
+	FieldDescriptorProto_TYPE_STRING  FieldDescriptorProto_Type = 9
+	// Tag-delimited aggregate.
+	// Group type is deprecated and not supported in proto3. However, Proto3
+	// implementations should still be able to parse the group wire format and
+	// treat group fields as unknown fields.
+	FieldDescriptorProto_TYPE_GROUP   FieldDescriptorProto_Type = 10
+	FieldDescriptorProto_TYPE_MESSAGE FieldDescriptorProto_Type = 11
+	// New in version 2.
+	FieldDescriptorProto_TYPE_BYTES    FieldDescriptorProto_Type = 12
+	FieldDescriptorProto_TYPE_UINT32   FieldDescriptorProto_Type = 13
+	FieldDescriptorProto_TYPE_ENUM     FieldDescriptorProto_Type = 14
+	FieldDescriptorProto_TYPE_SFIXED32 FieldDescriptorProto_Type = 15
+	FieldDescriptorProto_TYPE_SFIXED64 FieldDescriptorProto_Type = 16
+	FieldDescriptorProto_TYPE_SINT32   FieldDescriptorProto_Type = 17
+	FieldDescriptorProto_TYPE_SINT64   FieldDescriptorProto_Type = 18
+)
+
+var FieldDescriptorProto_Type_name = map[int32]string{
+	1:  "TYPE_DOUBLE",
+	2:  "TYPE_FLOAT",
+	3:  "TYPE_INT64",
+	4:  "TYPE_UINT64",
+	5:  "TYPE_INT32",
+	6:  "TYPE_FIXED64",
+	7:  "TYPE_FIXED32",
+	8:  "TYPE_BOOL",
+	9:  "TYPE_STRING",
+	10: "TYPE_GROUP",
+	11: "TYPE_MESSAGE",
+	12: "TYPE_BYTES",
+	13: "TYPE_UINT32",
+	14: "TYPE_ENUM",
+	15: "TYPE_SFIXED32",
+	16: "TYPE_SFIXED64",
+	17: "TYPE_SINT32",
+	18: "TYPE_SINT64",
+}
+
+var FieldDescriptorProto_Type_value = map[string]int32{
+	"TYPE_DOUBLE":   1,
+	"TYPE_FLOAT":    2,
+	"TYPE_INT64":    3,
+	"TYPE_UINT64":   4,
+	"TYPE_INT32":    5,
+	"TYPE_FIXED64":  6,
+	"TYPE_FIXED32":  7,
+	"TYPE_BOOL":     8,
+	"TYPE_STRING":   9,
+	"TYPE_GROUP":    10,
+	"TYPE_MESSAGE":  11,
+	"TYPE_BYTES":    12,
+	"TYPE_UINT32":   13,
+	"TYPE_ENUM":     14,
+	"TYPE_SFIXED32": 15,
+	"TYPE_SFIXED64": 16,
+	"TYPE_SINT32":   17,
+	"TYPE_SINT64":   18,
+}
+
+func (x FieldDescriptorProto_Type) Enum() *FieldDescriptorProto_Type {
+	p := new(FieldDescriptorProto_Type)
+	*p = x
+	return p
+}
+
+func (x FieldDescriptorProto_Type) String() string {
+	return proto.EnumName(FieldDescriptorProto_Type_name, int32(x))
+}
+
+func (x *FieldDescriptorProto_Type) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(FieldDescriptorProto_Type_value, data, "FieldDescriptorProto_Type")
+	if err != nil {
+		return err
+	}
+	*x = FieldDescriptorProto_Type(value)
+	return nil
+}
+
+func (FieldDescriptorProto_Type) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{4, 0}
+}
+
+type FieldDescriptorProto_Label int32
+
+const (
+	// 0 is reserved for errors
+	FieldDescriptorProto_LABEL_OPTIONAL FieldDescriptorProto_Label = 1
+	FieldDescriptorProto_LABEL_REQUIRED FieldDescriptorProto_Label = 2
+	FieldDescriptorProto_LABEL_REPEATED FieldDescriptorProto_Label = 3
+)
+
+var FieldDescriptorProto_Label_name = map[int32]string{
+	1: "LABEL_OPTIONAL",
+	2: "LABEL_REQUIRED",
+	3: "LABEL_REPEATED",
+}
+
+var FieldDescriptorProto_Label_value = map[string]int32{
+	"LABEL_OPTIONAL": 1,
+	"LABEL_REQUIRED": 2,
+	"LABEL_REPEATED": 3,
+}
+
+func (x FieldDescriptorProto_Label) Enum() *FieldDescriptorProto_Label {
+	p := new(FieldDescriptorProto_Label)
+	*p = x
+	return p
+}
+
+func (x FieldDescriptorProto_Label) String() string {
+	return proto.EnumName(FieldDescriptorProto_Label_name, int32(x))
+}
+
+func (x *FieldDescriptorProto_Label) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(FieldDescriptorProto_Label_value, data, "FieldDescriptorProto_Label")
+	if err != nil {
+		return err
+	}
+	*x = FieldDescriptorProto_Label(value)
+	return nil
+}
+
+func (FieldDescriptorProto_Label) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{4, 1}
+}
+
+// Generated classes can be optimized for speed or code size.
+type FileOptions_OptimizeMode int32
+
+const (
+	FileOptions_SPEED FileOptions_OptimizeMode = 1
+	// etc.
+	FileOptions_CODE_SIZE    FileOptions_OptimizeMode = 2
+	FileOptions_LITE_RUNTIME FileOptions_OptimizeMode = 3
+)
+
+var FileOptions_OptimizeMode_name = map[int32]string{
+	1: "SPEED",
+	2: "CODE_SIZE",
+	3: "LITE_RUNTIME",
+}
+
+var FileOptions_OptimizeMode_value = map[string]int32{
+	"SPEED":        1,
+	"CODE_SIZE":    2,
+	"LITE_RUNTIME": 3,
+}
+
+func (x FileOptions_OptimizeMode) Enum() *FileOptions_OptimizeMode {
+	p := new(FileOptions_OptimizeMode)
+	*p = x
+	return p
+}
+
+func (x FileOptions_OptimizeMode) String() string {
+	return proto.EnumName(FileOptions_OptimizeMode_name, int32(x))
+}
+
+func (x *FileOptions_OptimizeMode) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(FileOptions_OptimizeMode_value, data, "FileOptions_OptimizeMode")
+	if err != nil {
+		return err
+	}
+	*x = FileOptions_OptimizeMode(value)
+	return nil
+}
+
+func (FileOptions_OptimizeMode) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{10, 0}
+}
+
+type FieldOptions_CType int32
+
+const (
+	// Default mode.
+	FieldOptions_STRING       FieldOptions_CType = 0
+	FieldOptions_CORD         FieldOptions_CType = 1
+	FieldOptions_STRING_PIECE FieldOptions_CType = 2
+)
+
+var FieldOptions_CType_name = map[int32]string{
+	0: "STRING",
+	1: "CORD",
+	2: "STRING_PIECE",
+}
+
+var FieldOptions_CType_value = map[string]int32{
+	"STRING":       0,
+	"CORD":         1,
+	"STRING_PIECE": 2,
+}
+
+func (x FieldOptions_CType) Enum() *FieldOptions_CType {
+	p := new(FieldOptions_CType)
+	*p = x
+	return p
+}
+
+func (x FieldOptions_CType) String() string {
+	return proto.EnumName(FieldOptions_CType_name, int32(x))
+}
+
+func (x *FieldOptions_CType) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(FieldOptions_CType_value, data, "FieldOptions_CType")
+	if err != nil {
+		return err
+	}
+	*x = FieldOptions_CType(value)
+	return nil
+}
+
+func (FieldOptions_CType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{12, 0}
+}
+
+type FieldOptions_JSType int32
+
+const (
+	// Use the default type.
+	FieldOptions_JS_NORMAL FieldOptions_JSType = 0
+	// Use JavaScript strings.
+	FieldOptions_JS_STRING FieldOptions_JSType = 1
+	// Use JavaScript numbers.
+	FieldOptions_JS_NUMBER FieldOptions_JSType = 2
+)
+
+var FieldOptions_JSType_name = map[int32]string{
+	0: "JS_NORMAL",
+	1: "JS_STRING",
+	2: "JS_NUMBER",
+}
+
+var FieldOptions_JSType_value = map[string]int32{
+	"JS_NORMAL": 0,
+	"JS_STRING": 1,
+	"JS_NUMBER": 2,
+}
+
+func (x FieldOptions_JSType) Enum() *FieldOptions_JSType {
+	p := new(FieldOptions_JSType)
+	*p = x
+	return p
+}
+
+func (x FieldOptions_JSType) String() string {
+	return proto.EnumName(FieldOptions_JSType_name, int32(x))
+}
+
+func (x *FieldOptions_JSType) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(FieldOptions_JSType_value, data, "FieldOptions_JSType")
+	if err != nil {
+		return err
+	}
+	*x = FieldOptions_JSType(value)
+	return nil
+}
+
+func (FieldOptions_JSType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{12, 1}
+}
+
+// Is this method side-effect-free (or safe in HTTP parlance), or idempotent,
+// or neither? HTTP based RPC implementation may choose GET verb for safe
+// methods, and PUT verb for idempotent methods instead of the default POST.
+type MethodOptions_IdempotencyLevel int32
+
+const (
+	MethodOptions_IDEMPOTENCY_UNKNOWN MethodOptions_IdempotencyLevel = 0
+	MethodOptions_NO_SIDE_EFFECTS     MethodOptions_IdempotencyLevel = 1
+	MethodOptions_IDEMPOTENT          MethodOptions_IdempotencyLevel = 2
+)
+
+var MethodOptions_IdempotencyLevel_name = map[int32]string{
+	0: "IDEMPOTENCY_UNKNOWN",
+	1: "NO_SIDE_EFFECTS",
+	2: "IDEMPOTENT",
+}
+
+var MethodOptions_IdempotencyLevel_value = map[string]int32{
+	"IDEMPOTENCY_UNKNOWN": 0,
+	"NO_SIDE_EFFECTS":     1,
+	"IDEMPOTENT":          2,
+}
+
+func (x MethodOptions_IdempotencyLevel) Enum() *MethodOptions_IdempotencyLevel {
+	p := new(MethodOptions_IdempotencyLevel)
+	*p = x
+	return p
+}
+
+func (x MethodOptions_IdempotencyLevel) String() string {
+	return proto.EnumName(MethodOptions_IdempotencyLevel_name, int32(x))
+}
+
+func (x *MethodOptions_IdempotencyLevel) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(MethodOptions_IdempotencyLevel_value, data, "MethodOptions_IdempotencyLevel")
+	if err != nil {
+		return err
+	}
+	*x = MethodOptions_IdempotencyLevel(value)
+	return nil
+}
+
+func (MethodOptions_IdempotencyLevel) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{17, 0}
+}
+
+// The protocol compiler can output a FileDescriptorSet containing the .proto
+// files it parses.
+type FileDescriptorSet struct {
+	File                 []*FileDescriptorProto `protobuf:"bytes,1,rep,name=file" json:"file,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
+	XXX_unrecognized     []byte                 `json:"-"`
+	XXX_sizecache        int32                  `json:"-"`
+}
+
+func (m *FileDescriptorSet) Reset()         { *m = FileDescriptorSet{} }
+func (m *FileDescriptorSet) String() string { return proto.CompactTextString(m) }
+func (*FileDescriptorSet) ProtoMessage()    {}
+func (*FileDescriptorSet) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{0}
+}
+
+func (m *FileDescriptorSet) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FileDescriptorSet.Unmarshal(m, b)
+}
+func (m *FileDescriptorSet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FileDescriptorSet.Marshal(b, m, deterministic)
+}
+func (m *FileDescriptorSet) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileDescriptorSet.Merge(m, src)
+}
+func (m *FileDescriptorSet) XXX_Size() int {
+	return xxx_messageInfo_FileDescriptorSet.Size(m)
+}
+func (m *FileDescriptorSet) XXX_DiscardUnknown() {
+	xxx_messageInfo_FileDescriptorSet.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FileDescriptorSet proto.InternalMessageInfo
+
+func (m *FileDescriptorSet) GetFile() []*FileDescriptorProto {
+	if m != nil {
+		return m.File
+	}
+	return nil
+}
+
+// Describes a complete .proto file.
+type FileDescriptorProto struct {
+	Name    *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	Package *string `protobuf:"bytes,2,opt,name=package" json:"package,omitempty"`
+	// Names of files imported by this file.
+	Dependency []string `protobuf:"bytes,3,rep,name=dependency" json:"dependency,omitempty"`
+	// Indexes of the public imported files in the dependency list above.
+	PublicDependency []int32 `protobuf:"varint,10,rep,name=public_dependency,json=publicDependency" json:"public_dependency,omitempty"`
+	// Indexes of the weak imported files in the dependency list.
+	// For Google-internal migration only. Do not use.
+	WeakDependency []int32 `protobuf:"varint,11,rep,name=weak_dependency,json=weakDependency" json:"weak_dependency,omitempty"`
+	// All top-level definitions in this file.
+	MessageType []*DescriptorProto        `protobuf:"bytes,4,rep,name=message_type,json=messageType" json:"message_type,omitempty"`
+	EnumType    []*EnumDescriptorProto    `protobuf:"bytes,5,rep,name=enum_type,json=enumType" json:"enum_type,omitempty"`
+	Service     []*ServiceDescriptorProto `protobuf:"bytes,6,rep,name=service" json:"service,omitempty"`
+	Extension   []*FieldDescriptorProto   `protobuf:"bytes,7,rep,name=extension" json:"extension,omitempty"`
+	Options     *FileOptions              `protobuf:"bytes,8,opt,name=options" json:"options,omitempty"`
+	// This field contains optional information about the original source code.
+	// You may safely remove this entire field without harming runtime
+	// functionality of the descriptors -- the information is needed only by
+	// development tools.
+	SourceCodeInfo *SourceCodeInfo `protobuf:"bytes,9,opt,name=source_code_info,json=sourceCodeInfo" json:"source_code_info,omitempty"`
+	// The syntax of the proto file.
+	// The supported values are "proto2" and "proto3".
+	Syntax               *string  `protobuf:"bytes,12,opt,name=syntax" json:"syntax,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *FileDescriptorProto) Reset()         { *m = FileDescriptorProto{} }
+func (m *FileDescriptorProto) String() string { return proto.CompactTextString(m) }
+func (*FileDescriptorProto) ProtoMessage()    {}
+func (*FileDescriptorProto) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{1}
+}
+
+func (m *FileDescriptorProto) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FileDescriptorProto.Unmarshal(m, b)
+}
+func (m *FileDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FileDescriptorProto.Marshal(b, m, deterministic)
+}
+func (m *FileDescriptorProto) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileDescriptorProto.Merge(m, src)
+}
+func (m *FileDescriptorProto) XXX_Size() int {
+	return xxx_messageInfo_FileDescriptorProto.Size(m)
+}
+func (m *FileDescriptorProto) XXX_DiscardUnknown() {
+	xxx_messageInfo_FileDescriptorProto.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FileDescriptorProto proto.InternalMessageInfo
+
+func (m *FileDescriptorProto) GetName() string {
+	if m != nil && m.Name != nil {
+		return *m.Name
+	}
+	return ""
+}
+
+func (m *FileDescriptorProto) GetPackage() string {
+	if m != nil && m.Package != nil {
+		return *m.Package
+	}
+	return ""
+}
+
+func (m *FileDescriptorProto) GetDependency() []string {
+	if m != nil {
+		return m.Dependency
+	}
+	return nil
+}
+
+func (m *FileDescriptorProto) GetPublicDependency() []int32 {
+	if m != nil {
+		return m.PublicDependency
+	}
+	return nil
+}
+
+func (m *FileDescriptorProto) GetWeakDependency() []int32 {
+	if m != nil {
+		return m.WeakDependency
+	}
+	return nil
+}
+
+func (m *FileDescriptorProto) GetMessageType() []*DescriptorProto {
+	if m != nil {
+		return m.MessageType
+	}
+	return nil
+}
+
+func (m *FileDescriptorProto) GetEnumType() []*EnumDescriptorProto {
+	if m != nil {
+		return m.EnumType
+	}
+	return nil
+}
+
+func (m *FileDescriptorProto) GetService() []*ServiceDescriptorProto {
+	if m != nil {
+		return m.Service
+	}
+	return nil
+}
+
+func (m *FileDescriptorProto) GetExtension() []*FieldDescriptorProto {
+	if m != nil {
+		return m.Extension
+	}
+	return nil
+}
+
+func (m *FileDescriptorProto) GetOptions() *FileOptions {
+	if m != nil {
+		return m.Options
+	}
+	return nil
+}
+
+func (m *FileDescriptorProto) GetSourceCodeInfo() *SourceCodeInfo {
+	if m != nil {
+		return m.SourceCodeInfo
+	}
+	return nil
+}
+
+func (m *FileDescriptorProto) GetSyntax() string {
+	if m != nil && m.Syntax != nil {
+		return *m.Syntax
+	}
+	return ""
+}
+
+// Describes a message type.
+type DescriptorProto struct {
+	Name           *string                           `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	Field          []*FieldDescriptorProto           `protobuf:"bytes,2,rep,name=field" json:"field,omitempty"`
+	Extension      []*FieldDescriptorProto           `protobuf:"bytes,6,rep,name=extension" json:"extension,omitempty"`
+	NestedType     []*DescriptorProto                `protobuf:"bytes,3,rep,name=nested_type,json=nestedType" json:"nested_type,omitempty"`
+	EnumType       []*EnumDescriptorProto            `protobuf:"bytes,4,rep,name=enum_type,json=enumType" json:"enum_type,omitempty"`
+	ExtensionRange []*DescriptorProto_ExtensionRange `protobuf:"bytes,5,rep,name=extension_range,json=extensionRange" json:"extension_range,omitempty"`
+	OneofDecl      []*OneofDescriptorProto           `protobuf:"bytes,8,rep,name=oneof_decl,json=oneofDecl" json:"oneof_decl,omitempty"`
+	Options        *MessageOptions                   `protobuf:"bytes,7,opt,name=options" json:"options,omitempty"`
+	ReservedRange  []*DescriptorProto_ReservedRange  `protobuf:"bytes,9,rep,name=reserved_range,json=reservedRange" json:"reserved_range,omitempty"`
+	// Reserved field names, which may not be used by fields in the same message.
+	// A given name may only be reserved once.
+	ReservedName         []string `protobuf:"bytes,10,rep,name=reserved_name,json=reservedName" json:"reserved_name,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *DescriptorProto) Reset()         { *m = DescriptorProto{} }
+func (m *DescriptorProto) String() string { return proto.CompactTextString(m) }
+func (*DescriptorProto) ProtoMessage()    {}
+func (*DescriptorProto) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{2}
+}
+
+func (m *DescriptorProto) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DescriptorProto.Unmarshal(m, b)
+}
+func (m *DescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DescriptorProto.Marshal(b, m, deterministic)
+}
+func (m *DescriptorProto) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DescriptorProto.Merge(m, src)
+}
+func (m *DescriptorProto) XXX_Size() int {
+	return xxx_messageInfo_DescriptorProto.Size(m)
+}
+func (m *DescriptorProto) XXX_DiscardUnknown() {
+	xxx_messageInfo_DescriptorProto.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DescriptorProto proto.InternalMessageInfo
+
+func (m *DescriptorProto) GetName() string {
+	if m != nil && m.Name != nil {
+		return *m.Name
+	}
+	return ""
+}
+
+func (m *DescriptorProto) GetField() []*FieldDescriptorProto {
+	if m != nil {
+		return m.Field
+	}
+	return nil
+}
+
+func (m *DescriptorProto) GetExtension() []*FieldDescriptorProto {
+	if m != nil {
+		return m.Extension
+	}
+	return nil
+}
+
+func (m *DescriptorProto) GetNestedType() []*DescriptorProto {
+	if m != nil {
+		return m.NestedType
+	}
+	return nil
+}
+
+func (m *DescriptorProto) GetEnumType() []*EnumDescriptorProto {
+	if m != nil {
+		return m.EnumType
+	}
+	return nil
+}
+
+func (m *DescriptorProto) GetExtensionRange() []*DescriptorProto_ExtensionRange {
+	if m != nil {
+		return m.ExtensionRange
+	}
+	return nil
+}
+
+func (m *DescriptorProto) GetOneofDecl() []*OneofDescriptorProto {
+	if m != nil {
+		return m.OneofDecl
+	}
+	return nil
+}
+
+func (m *DescriptorProto) GetOptions() *MessageOptions {
+	if m != nil {
+		return m.Options
+	}
+	return nil
+}
+
+func (m *DescriptorProto) GetReservedRange() []*DescriptorProto_ReservedRange {
+	if m != nil {
+		return m.ReservedRange
+	}
+	return nil
+}
+
+func (m *DescriptorProto) GetReservedName() []string {
+	if m != nil {
+		return m.ReservedName
+	}
+	return nil
+}
+
+type DescriptorProto_ExtensionRange struct {
+	Start                *int32                 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"`
+	End                  *int32                 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"`
+	Options              *ExtensionRangeOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}               `json:"-"`
+	XXX_unrecognized     []byte                 `json:"-"`
+	XXX_sizecache        int32                  `json:"-"`
+}
+
+func (m *DescriptorProto_ExtensionRange) Reset()         { *m = DescriptorProto_ExtensionRange{} }
+func (m *DescriptorProto_ExtensionRange) String() string { return proto.CompactTextString(m) }
+func (*DescriptorProto_ExtensionRange) ProtoMessage()    {}
+func (*DescriptorProto_ExtensionRange) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{2, 0}
+}
+
+func (m *DescriptorProto_ExtensionRange) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DescriptorProto_ExtensionRange.Unmarshal(m, b)
+}
+func (m *DescriptorProto_ExtensionRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DescriptorProto_ExtensionRange.Marshal(b, m, deterministic)
+}
+func (m *DescriptorProto_ExtensionRange) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DescriptorProto_ExtensionRange.Merge(m, src)
+}
+func (m *DescriptorProto_ExtensionRange) XXX_Size() int {
+	return xxx_messageInfo_DescriptorProto_ExtensionRange.Size(m)
+}
+func (m *DescriptorProto_ExtensionRange) XXX_DiscardUnknown() {
+	xxx_messageInfo_DescriptorProto_ExtensionRange.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DescriptorProto_ExtensionRange proto.InternalMessageInfo
+
+func (m *DescriptorProto_ExtensionRange) GetStart() int32 {
+	if m != nil && m.Start != nil {
+		return *m.Start
+	}
+	return 0
+}
+
+func (m *DescriptorProto_ExtensionRange) GetEnd() int32 {
+	if m != nil && m.End != nil {
+		return *m.End
+	}
+	return 0
+}
+
+func (m *DescriptorProto_ExtensionRange) GetOptions() *ExtensionRangeOptions {
+	if m != nil {
+		return m.Options
+	}
+	return nil
+}
+
+// Range of reserved tag numbers. Reserved tag numbers may not be used by
+// fields or extension ranges in the same message. Reserved ranges may
+// not overlap.
+type DescriptorProto_ReservedRange struct {
+	Start                *int32   `protobuf:"varint,1,opt,name=start" json:"start,omitempty"`
+	End                  *int32   `protobuf:"varint,2,opt,name=end" json:"end,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *DescriptorProto_ReservedRange) Reset()         { *m = DescriptorProto_ReservedRange{} }
+func (m *DescriptorProto_ReservedRange) String() string { return proto.CompactTextString(m) }
+func (*DescriptorProto_ReservedRange) ProtoMessage()    {}
+func (*DescriptorProto_ReservedRange) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{2, 1}
+}
+
+func (m *DescriptorProto_ReservedRange) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DescriptorProto_ReservedRange.Unmarshal(m, b)
+}
+func (m *DescriptorProto_ReservedRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DescriptorProto_ReservedRange.Marshal(b, m, deterministic)
+}
+func (m *DescriptorProto_ReservedRange) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DescriptorProto_ReservedRange.Merge(m, src)
+}
+func (m *DescriptorProto_ReservedRange) XXX_Size() int {
+	return xxx_messageInfo_DescriptorProto_ReservedRange.Size(m)
+}
+func (m *DescriptorProto_ReservedRange) XXX_DiscardUnknown() {
+	xxx_messageInfo_DescriptorProto_ReservedRange.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DescriptorProto_ReservedRange proto.InternalMessageInfo
+
+func (m *DescriptorProto_ReservedRange) GetStart() int32 {
+	if m != nil && m.Start != nil {
+		return *m.Start
+	}
+	return 0
+}
+
+func (m *DescriptorProto_ReservedRange) GetEnd() int32 {
+	if m != nil && m.End != nil {
+		return *m.End
+	}
+	return 0
+}
+
+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:"-"`
+}
+
+func (m *ExtensionRangeOptions) Reset()         { *m = ExtensionRangeOptions{} }
+func (m *ExtensionRangeOptions) String() string { return proto.CompactTextString(m) }
+func (*ExtensionRangeOptions) ProtoMessage()    {}
+func (*ExtensionRangeOptions) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{3}
+}
+
+var extRange_ExtensionRangeOptions = []proto.ExtensionRange{
+	{Start: 1000, End: 536870911},
+}
+
+func (*ExtensionRangeOptions) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_ExtensionRangeOptions
+}
+
+func (m *ExtensionRangeOptions) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ExtensionRangeOptions.Unmarshal(m, b)
+}
+func (m *ExtensionRangeOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ExtensionRangeOptions.Marshal(b, m, deterministic)
+}
+func (m *ExtensionRangeOptions) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExtensionRangeOptions.Merge(m, src)
+}
+func (m *ExtensionRangeOptions) XXX_Size() int {
+	return xxx_messageInfo_ExtensionRangeOptions.Size(m)
+}
+func (m *ExtensionRangeOptions) XXX_DiscardUnknown() {
+	xxx_messageInfo_ExtensionRangeOptions.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ExtensionRangeOptions proto.InternalMessageInfo
+
+func (m *ExtensionRangeOptions) GetUninterpretedOption() []*UninterpretedOption {
+	if m != nil {
+		return m.UninterpretedOption
+	}
+	return nil
+}
+
+// Describes a field within a message.
+type FieldDescriptorProto struct {
+	Name   *string                     `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	Number *int32                      `protobuf:"varint,3,opt,name=number" json:"number,omitempty"`
+	Label  *FieldDescriptorProto_Label `protobuf:"varint,4,opt,name=label,enum=google.protobuf.FieldDescriptorProto_Label" json:"label,omitempty"`
+	// If type_name is set, this need not be set.  If both this and type_name
+	// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
+	Type *FieldDescriptorProto_Type `protobuf:"varint,5,opt,name=type,enum=google.protobuf.FieldDescriptorProto_Type" json:"type,omitempty"`
+	// For message and enum types, this is the name of the type.  If the name
+	// starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
+	// rules are used to find the type (i.e. first the nested types within this
+	// message are searched, then within the parent, on up to the root
+	// namespace).
+	TypeName *string `protobuf:"bytes,6,opt,name=type_name,json=typeName" json:"type_name,omitempty"`
+	// For extensions, this is the name of the type being extended.  It is
+	// resolved in the same manner as type_name.
+	Extendee *string `protobuf:"bytes,2,opt,name=extendee" json:"extendee,omitempty"`
+	// For numeric types, contains the original text representation of the value.
+	// For booleans, "true" or "false".
+	// For strings, contains the default text contents (not escaped in any way).
+	// For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
+	// TODO(kenton):  Base-64 encode?
+	DefaultValue *string `protobuf:"bytes,7,opt,name=default_value,json=defaultValue" json:"default_value,omitempty"`
+	// If set, gives the index of a oneof in the containing type's oneof_decl
+	// list.  This field is a member of that oneof.
+	OneofIndex *int32 `protobuf:"varint,9,opt,name=oneof_index,json=oneofIndex" json:"oneof_index,omitempty"`
+	// JSON name of this field. The value is set by protocol compiler. If the
+	// user has set a "json_name" option on this field, that option's value
+	// will be used. Otherwise, it's deduced from the field's name by converting
+	// it to camelCase.
+	JsonName             *string       `protobuf:"bytes,10,opt,name=json_name,json=jsonName" json:"json_name,omitempty"`
+	Options              *FieldOptions `protobuf:"bytes,8,opt,name=options" json:"options,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
+	XXX_unrecognized     []byte        `json:"-"`
+	XXX_sizecache        int32         `json:"-"`
+}
+
+func (m *FieldDescriptorProto) Reset()         { *m = FieldDescriptorProto{} }
+func (m *FieldDescriptorProto) String() string { return proto.CompactTextString(m) }
+func (*FieldDescriptorProto) ProtoMessage()    {}
+func (*FieldDescriptorProto) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{4}
+}
+
+func (m *FieldDescriptorProto) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FieldDescriptorProto.Unmarshal(m, b)
+}
+func (m *FieldDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FieldDescriptorProto.Marshal(b, m, deterministic)
+}
+func (m *FieldDescriptorProto) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FieldDescriptorProto.Merge(m, src)
+}
+func (m *FieldDescriptorProto) XXX_Size() int {
+	return xxx_messageInfo_FieldDescriptorProto.Size(m)
+}
+func (m *FieldDescriptorProto) XXX_DiscardUnknown() {
+	xxx_messageInfo_FieldDescriptorProto.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FieldDescriptorProto proto.InternalMessageInfo
+
+func (m *FieldDescriptorProto) GetName() string {
+	if m != nil && m.Name != nil {
+		return *m.Name
+	}
+	return ""
+}
+
+func (m *FieldDescriptorProto) GetNumber() int32 {
+	if m != nil && m.Number != nil {
+		return *m.Number
+	}
+	return 0
+}
+
+func (m *FieldDescriptorProto) GetLabel() FieldDescriptorProto_Label {
+	if m != nil && m.Label != nil {
+		return *m.Label
+	}
+	return FieldDescriptorProto_LABEL_OPTIONAL
+}
+
+func (m *FieldDescriptorProto) GetType() FieldDescriptorProto_Type {
+	if m != nil && m.Type != nil {
+		return *m.Type
+	}
+	return FieldDescriptorProto_TYPE_DOUBLE
+}
+
+func (m *FieldDescriptorProto) GetTypeName() string {
+	if m != nil && m.TypeName != nil {
+		return *m.TypeName
+	}
+	return ""
+}
+
+func (m *FieldDescriptorProto) GetExtendee() string {
+	if m != nil && m.Extendee != nil {
+		return *m.Extendee
+	}
+	return ""
+}
+
+func (m *FieldDescriptorProto) GetDefaultValue() string {
+	if m != nil && m.DefaultValue != nil {
+		return *m.DefaultValue
+	}
+	return ""
+}
+
+func (m *FieldDescriptorProto) GetOneofIndex() int32 {
+	if m != nil && m.OneofIndex != nil {
+		return *m.OneofIndex
+	}
+	return 0
+}
+
+func (m *FieldDescriptorProto) GetJsonName() string {
+	if m != nil && m.JsonName != nil {
+		return *m.JsonName
+	}
+	return ""
+}
+
+func (m *FieldDescriptorProto) GetOptions() *FieldOptions {
+	if m != nil {
+		return m.Options
+	}
+	return nil
+}
+
+// Describes a oneof.
+type OneofDescriptorProto struct {
+	Name                 *string       `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	Options              *OneofOptions `protobuf:"bytes,2,opt,name=options" json:"options,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
+	XXX_unrecognized     []byte        `json:"-"`
+	XXX_sizecache        int32         `json:"-"`
+}
+
+func (m *OneofDescriptorProto) Reset()         { *m = OneofDescriptorProto{} }
+func (m *OneofDescriptorProto) String() string { return proto.CompactTextString(m) }
+func (*OneofDescriptorProto) ProtoMessage()    {}
+func (*OneofDescriptorProto) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{5}
+}
+
+func (m *OneofDescriptorProto) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OneofDescriptorProto.Unmarshal(m, b)
+}
+func (m *OneofDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OneofDescriptorProto.Marshal(b, m, deterministic)
+}
+func (m *OneofDescriptorProto) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OneofDescriptorProto.Merge(m, src)
+}
+func (m *OneofDescriptorProto) XXX_Size() int {
+	return xxx_messageInfo_OneofDescriptorProto.Size(m)
+}
+func (m *OneofDescriptorProto) XXX_DiscardUnknown() {
+	xxx_messageInfo_OneofDescriptorProto.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OneofDescriptorProto proto.InternalMessageInfo
+
+func (m *OneofDescriptorProto) GetName() string {
+	if m != nil && m.Name != nil {
+		return *m.Name
+	}
+	return ""
+}
+
+func (m *OneofDescriptorProto) GetOptions() *OneofOptions {
+	if m != nil {
+		return m.Options
+	}
+	return nil
+}
+
+// Describes an enum type.
+type EnumDescriptorProto struct {
+	Name    *string                     `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	Value   []*EnumValueDescriptorProto `protobuf:"bytes,2,rep,name=value" json:"value,omitempty"`
+	Options *EnumOptions                `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
+	// Range of reserved numeric values. Reserved numeric values may not be used
+	// by enum values in the same enum declaration. Reserved ranges may not
+	// overlap.
+	ReservedRange []*EnumDescriptorProto_EnumReservedRange `protobuf:"bytes,4,rep,name=reserved_range,json=reservedRange" json:"reserved_range,omitempty"`
+	// Reserved enum value names, which may not be reused. A given name may only
+	// be reserved once.
+	ReservedName         []string `protobuf:"bytes,5,rep,name=reserved_name,json=reservedName" json:"reserved_name,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *EnumDescriptorProto) Reset()         { *m = EnumDescriptorProto{} }
+func (m *EnumDescriptorProto) String() string { return proto.CompactTextString(m) }
+func (*EnumDescriptorProto) ProtoMessage()    {}
+func (*EnumDescriptorProto) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{6}
+}
+
+func (m *EnumDescriptorProto) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_EnumDescriptorProto.Unmarshal(m, b)
+}
+func (m *EnumDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_EnumDescriptorProto.Marshal(b, m, deterministic)
+}
+func (m *EnumDescriptorProto) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EnumDescriptorProto.Merge(m, src)
+}
+func (m *EnumDescriptorProto) XXX_Size() int {
+	return xxx_messageInfo_EnumDescriptorProto.Size(m)
+}
+func (m *EnumDescriptorProto) XXX_DiscardUnknown() {
+	xxx_messageInfo_EnumDescriptorProto.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_EnumDescriptorProto proto.InternalMessageInfo
+
+func (m *EnumDescriptorProto) GetName() string {
+	if m != nil && m.Name != nil {
+		return *m.Name
+	}
+	return ""
+}
+
+func (m *EnumDescriptorProto) GetValue() []*EnumValueDescriptorProto {
+	if m != nil {
+		return m.Value
+	}
+	return nil
+}
+
+func (m *EnumDescriptorProto) GetOptions() *EnumOptions {
+	if m != nil {
+		return m.Options
+	}
+	return nil
+}
+
+func (m *EnumDescriptorProto) GetReservedRange() []*EnumDescriptorProto_EnumReservedRange {
+	if m != nil {
+		return m.ReservedRange
+	}
+	return nil
+}
+
+func (m *EnumDescriptorProto) GetReservedName() []string {
+	if m != nil {
+		return m.ReservedName
+	}
+	return nil
+}
+
+// Range of reserved numeric values. Reserved values may not be used by
+// entries in the same enum. Reserved ranges may not overlap.
+//
+// Note that this is distinct from DescriptorProto.ReservedRange in that it
+// is inclusive such that it can appropriately represent the entire int32
+// domain.
+type EnumDescriptorProto_EnumReservedRange struct {
+	Start                *int32   `protobuf:"varint,1,opt,name=start" json:"start,omitempty"`
+	End                  *int32   `protobuf:"varint,2,opt,name=end" json:"end,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *EnumDescriptorProto_EnumReservedRange) Reset()         { *m = EnumDescriptorProto_EnumReservedRange{} }
+func (m *EnumDescriptorProto_EnumReservedRange) String() string { return proto.CompactTextString(m) }
+func (*EnumDescriptorProto_EnumReservedRange) ProtoMessage()    {}
+func (*EnumDescriptorProto_EnumReservedRange) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{6, 0}
+}
+
+func (m *EnumDescriptorProto_EnumReservedRange) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_EnumDescriptorProto_EnumReservedRange.Unmarshal(m, b)
+}
+func (m *EnumDescriptorProto_EnumReservedRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_EnumDescriptorProto_EnumReservedRange.Marshal(b, m, deterministic)
+}
+func (m *EnumDescriptorProto_EnumReservedRange) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EnumDescriptorProto_EnumReservedRange.Merge(m, src)
+}
+func (m *EnumDescriptorProto_EnumReservedRange) XXX_Size() int {
+	return xxx_messageInfo_EnumDescriptorProto_EnumReservedRange.Size(m)
+}
+func (m *EnumDescriptorProto_EnumReservedRange) XXX_DiscardUnknown() {
+	xxx_messageInfo_EnumDescriptorProto_EnumReservedRange.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_EnumDescriptorProto_EnumReservedRange proto.InternalMessageInfo
+
+func (m *EnumDescriptorProto_EnumReservedRange) GetStart() int32 {
+	if m != nil && m.Start != nil {
+		return *m.Start
+	}
+	return 0
+}
+
+func (m *EnumDescriptorProto_EnumReservedRange) GetEnd() int32 {
+	if m != nil && m.End != nil {
+		return *m.End
+	}
+	return 0
+}
+
+// Describes a value within an enum.
+type EnumValueDescriptorProto struct {
+	Name                 *string           `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	Number               *int32            `protobuf:"varint,2,opt,name=number" json:"number,omitempty"`
+	Options              *EnumValueOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
+	XXX_unrecognized     []byte            `json:"-"`
+	XXX_sizecache        int32             `json:"-"`
+}
+
+func (m *EnumValueDescriptorProto) Reset()         { *m = EnumValueDescriptorProto{} }
+func (m *EnumValueDescriptorProto) String() string { return proto.CompactTextString(m) }
+func (*EnumValueDescriptorProto) ProtoMessage()    {}
+func (*EnumValueDescriptorProto) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{7}
+}
+
+func (m *EnumValueDescriptorProto) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_EnumValueDescriptorProto.Unmarshal(m, b)
+}
+func (m *EnumValueDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_EnumValueDescriptorProto.Marshal(b, m, deterministic)
+}
+func (m *EnumValueDescriptorProto) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EnumValueDescriptorProto.Merge(m, src)
+}
+func (m *EnumValueDescriptorProto) XXX_Size() int {
+	return xxx_messageInfo_EnumValueDescriptorProto.Size(m)
+}
+func (m *EnumValueDescriptorProto) XXX_DiscardUnknown() {
+	xxx_messageInfo_EnumValueDescriptorProto.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_EnumValueDescriptorProto proto.InternalMessageInfo
+
+func (m *EnumValueDescriptorProto) GetName() string {
+	if m != nil && m.Name != nil {
+		return *m.Name
+	}
+	return ""
+}
+
+func (m *EnumValueDescriptorProto) GetNumber() int32 {
+	if m != nil && m.Number != nil {
+		return *m.Number
+	}
+	return 0
+}
+
+func (m *EnumValueDescriptorProto) GetOptions() *EnumValueOptions {
+	if m != nil {
+		return m.Options
+	}
+	return nil
+}
+
+// Describes a service.
+type ServiceDescriptorProto struct {
+	Name                 *string                  `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	Method               []*MethodDescriptorProto `protobuf:"bytes,2,rep,name=method" json:"method,omitempty"`
+	Options              *ServiceOptions          `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                 `json:"-"`
+	XXX_unrecognized     []byte                   `json:"-"`
+	XXX_sizecache        int32                    `json:"-"`
+}
+
+func (m *ServiceDescriptorProto) Reset()         { *m = ServiceDescriptorProto{} }
+func (m *ServiceDescriptorProto) String() string { return proto.CompactTextString(m) }
+func (*ServiceDescriptorProto) ProtoMessage()    {}
+func (*ServiceDescriptorProto) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{8}
+}
+
+func (m *ServiceDescriptorProto) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ServiceDescriptorProto.Unmarshal(m, b)
+}
+func (m *ServiceDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ServiceDescriptorProto.Marshal(b, m, deterministic)
+}
+func (m *ServiceDescriptorProto) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ServiceDescriptorProto.Merge(m, src)
+}
+func (m *ServiceDescriptorProto) XXX_Size() int {
+	return xxx_messageInfo_ServiceDescriptorProto.Size(m)
+}
+func (m *ServiceDescriptorProto) XXX_DiscardUnknown() {
+	xxx_messageInfo_ServiceDescriptorProto.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ServiceDescriptorProto proto.InternalMessageInfo
+
+func (m *ServiceDescriptorProto) GetName() string {
+	if m != nil && m.Name != nil {
+		return *m.Name
+	}
+	return ""
+}
+
+func (m *ServiceDescriptorProto) GetMethod() []*MethodDescriptorProto {
+	if m != nil {
+		return m.Method
+	}
+	return nil
+}
+
+func (m *ServiceDescriptorProto) GetOptions() *ServiceOptions {
+	if m != nil {
+		return m.Options
+	}
+	return nil
+}
+
+// Describes a method of a service.
+type MethodDescriptorProto struct {
+	Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	// Input and output type names.  These are resolved in the same way as
+	// FieldDescriptorProto.type_name, but must refer to a message type.
+	InputType  *string        `protobuf:"bytes,2,opt,name=input_type,json=inputType" json:"input_type,omitempty"`
+	OutputType *string        `protobuf:"bytes,3,opt,name=output_type,json=outputType" json:"output_type,omitempty"`
+	Options    *MethodOptions `protobuf:"bytes,4,opt,name=options" json:"options,omitempty"`
+	// Identifies if client streams multiple client messages
+	ClientStreaming *bool `protobuf:"varint,5,opt,name=client_streaming,json=clientStreaming,def=0" json:"client_streaming,omitempty"`
+	// Identifies if server streams multiple server messages
+	ServerStreaming      *bool    `protobuf:"varint,6,opt,name=server_streaming,json=serverStreaming,def=0" json:"server_streaming,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *MethodDescriptorProto) Reset()         { *m = MethodDescriptorProto{} }
+func (m *MethodDescriptorProto) String() string { return proto.CompactTextString(m) }
+func (*MethodDescriptorProto) ProtoMessage()    {}
+func (*MethodDescriptorProto) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{9}
+}
+
+func (m *MethodDescriptorProto) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MethodDescriptorProto.Unmarshal(m, b)
+}
+func (m *MethodDescriptorProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MethodDescriptorProto.Marshal(b, m, deterministic)
+}
+func (m *MethodDescriptorProto) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MethodDescriptorProto.Merge(m, src)
+}
+func (m *MethodDescriptorProto) XXX_Size() int {
+	return xxx_messageInfo_MethodDescriptorProto.Size(m)
+}
+func (m *MethodDescriptorProto) XXX_DiscardUnknown() {
+	xxx_messageInfo_MethodDescriptorProto.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MethodDescriptorProto proto.InternalMessageInfo
+
+const Default_MethodDescriptorProto_ClientStreaming bool = false
+const Default_MethodDescriptorProto_ServerStreaming bool = false
+
+func (m *MethodDescriptorProto) GetName() string {
+	if m != nil && m.Name != nil {
+		return *m.Name
+	}
+	return ""
+}
+
+func (m *MethodDescriptorProto) GetInputType() string {
+	if m != nil && m.InputType != nil {
+		return *m.InputType
+	}
+	return ""
+}
+
+func (m *MethodDescriptorProto) GetOutputType() string {
+	if m != nil && m.OutputType != nil {
+		return *m.OutputType
+	}
+	return ""
+}
+
+func (m *MethodDescriptorProto) GetOptions() *MethodOptions {
+	if m != nil {
+		return m.Options
+	}
+	return nil
+}
+
+func (m *MethodDescriptorProto) GetClientStreaming() bool {
+	if m != nil && m.ClientStreaming != nil {
+		return *m.ClientStreaming
+	}
+	return Default_MethodDescriptorProto_ClientStreaming
+}
+
+func (m *MethodDescriptorProto) GetServerStreaming() bool {
+	if m != nil && m.ServerStreaming != nil {
+		return *m.ServerStreaming
+	}
+	return Default_MethodDescriptorProto_ServerStreaming
+}
+
+type FileOptions struct {
+	// Sets the Java package where classes generated from this .proto will be
+	// placed.  By default, the proto package is used, but this is often
+	// inappropriate because proto packages do not normally start with backwards
+	// domain names.
+	JavaPackage *string `protobuf:"bytes,1,opt,name=java_package,json=javaPackage" json:"java_package,omitempty"`
+	// If set, all the classes from the .proto file are wrapped in a single
+	// outer class with the given name.  This applies to both Proto1
+	// (equivalent to the old "--one_java_file" option) and Proto2 (where
+	// a .proto always translates to a single class, but you may want to
+	// explicitly choose the class name).
+	JavaOuterClassname *string `protobuf:"bytes,8,opt,name=java_outer_classname,json=javaOuterClassname" json:"java_outer_classname,omitempty"`
+	// If set true, then the Java code generator will generate a separate .java
+	// file for each top-level message, enum, and service defined in the .proto
+	// file.  Thus, these types will *not* be nested inside the outer class
+	// named by java_outer_classname.  However, the outer class will still be
+	// generated to contain the file's getDescriptor() method as well as any
+	// top-level extensions defined in the file.
+	JavaMultipleFiles *bool `protobuf:"varint,10,opt,name=java_multiple_files,json=javaMultipleFiles,def=0" json:"java_multiple_files,omitempty"`
+	// This option does nothing.
+	JavaGenerateEqualsAndHash *bool `protobuf:"varint,20,opt,name=java_generate_equals_and_hash,json=javaGenerateEqualsAndHash" json:"java_generate_equals_and_hash,omitempty"` // Deprecated: Do not use.
+	// If set true, then the Java2 code generator will generate code that
+	// throws an exception whenever an attempt is made to assign a non-UTF-8
+	// byte sequence to a string field.
+	// Message reflection will do the same.
+	// However, an extension field still accepts non-UTF-8 byte sequences.
+	// This option has no effect on when used with the lite runtime.
+	JavaStringCheckUtf8 *bool                     `protobuf:"varint,27,opt,name=java_string_check_utf8,json=javaStringCheckUtf8,def=0" json:"java_string_check_utf8,omitempty"`
+	OptimizeFor         *FileOptions_OptimizeMode `protobuf:"varint,9,opt,name=optimize_for,json=optimizeFor,enum=google.protobuf.FileOptions_OptimizeMode,def=1" json:"optimize_for,omitempty"`
+	// Sets the Go package where structs generated from this .proto will be
+	// placed. If omitted, the Go package will be derived from the following:
+	//   - The basename of the package import path, if provided.
+	//   - Otherwise, the package statement in the .proto file, if present.
+	//   - Otherwise, the basename of the .proto file, without extension.
+	GoPackage *string `protobuf:"bytes,11,opt,name=go_package,json=goPackage" json:"go_package,omitempty"`
+	// Should generic services be generated in each language?  "Generic" services
+	// are not specific to any particular RPC system.  They are generated by the
+	// main code generators in each language (without additional plugins).
+	// Generic services were the only kind of service generation supported by
+	// early versions of google.protobuf.
+	//
+	// Generic services are now considered deprecated in favor of using plugins
+	// that generate code specific to your particular RPC system.  Therefore,
+	// these default to false.  Old code which depends on generic services should
+	// explicitly set them to true.
+	CcGenericServices   *bool `protobuf:"varint,16,opt,name=cc_generic_services,json=ccGenericServices,def=0" json:"cc_generic_services,omitempty"`
+	JavaGenericServices *bool `protobuf:"varint,17,opt,name=java_generic_services,json=javaGenericServices,def=0" json:"java_generic_services,omitempty"`
+	PyGenericServices   *bool `protobuf:"varint,18,opt,name=py_generic_services,json=pyGenericServices,def=0" json:"py_generic_services,omitempty"`
+	PhpGenericServices  *bool `protobuf:"varint,42,opt,name=php_generic_services,json=phpGenericServices,def=0" json:"php_generic_services,omitempty"`
+	// Is this file deprecated?
+	// Depending on the target platform, this can emit Deprecated annotations
+	// for everything in the file, or it will be completely ignored; in the very
+	// least, this is a formalization for deprecating files.
+	Deprecated *bool `protobuf:"varint,23,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
+	// Enables the use of arenas for the proto messages in this file. This applies
+	// only to generated classes for C++.
+	CcEnableArenas *bool `protobuf:"varint,31,opt,name=cc_enable_arenas,json=ccEnableArenas,def=0" json:"cc_enable_arenas,omitempty"`
+	// Sets the objective c class prefix which is prepended to all objective c
+	// generated classes from this .proto. There is no default.
+	ObjcClassPrefix *string `protobuf:"bytes,36,opt,name=objc_class_prefix,json=objcClassPrefix" json:"objc_class_prefix,omitempty"`
+	// Namespace for generated classes; defaults to the package.
+	CsharpNamespace *string `protobuf:"bytes,37,opt,name=csharp_namespace,json=csharpNamespace" json:"csharp_namespace,omitempty"`
+	// By default Swift generators will take the proto package and CamelCase it
+	// replacing '.' with underscore and use that to prefix the types/symbols
+	// defined. When this options is provided, they will use this value instead
+	// to prefix the types/symbols defined.
+	SwiftPrefix *string `protobuf:"bytes,39,opt,name=swift_prefix,json=swiftPrefix" json:"swift_prefix,omitempty"`
+	// Sets the php class prefix which is prepended to all php generated classes
+	// from this .proto. Default is empty.
+	PhpClassPrefix *string `protobuf:"bytes,40,opt,name=php_class_prefix,json=phpClassPrefix" json:"php_class_prefix,omitempty"`
+	// Use this option to change the namespace of php generated classes. Default
+	// is empty. When this option is empty, the package name will be used for
+	// determining the namespace.
+	PhpNamespace *string `protobuf:"bytes,41,opt,name=php_namespace,json=phpNamespace" json:"php_namespace,omitempty"`
+	// Use this option to change the namespace of php generated metadata classes.
+	// Default is empty. When this option is empty, the proto file name will be
+	// used for determining the namespace.
+	PhpMetadataNamespace *string `protobuf:"bytes,44,opt,name=php_metadata_namespace,json=phpMetadataNamespace" json:"php_metadata_namespace,omitempty"`
+	// Use this option to change the package of ruby generated classes. Default
+	// is empty. When this option is not set, the package name will be used for
+	// determining the ruby package.
+	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:"-"`
+}
+
+func (m *FileOptions) Reset()         { *m = FileOptions{} }
+func (m *FileOptions) String() string { return proto.CompactTextString(m) }
+func (*FileOptions) ProtoMessage()    {}
+func (*FileOptions) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{10}
+}
+
+var extRange_FileOptions = []proto.ExtensionRange{
+	{Start: 1000, End: 536870911},
+}
+
+func (*FileOptions) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_FileOptions
+}
+
+func (m *FileOptions) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FileOptions.Unmarshal(m, b)
+}
+func (m *FileOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FileOptions.Marshal(b, m, deterministic)
+}
+func (m *FileOptions) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FileOptions.Merge(m, src)
+}
+func (m *FileOptions) XXX_Size() int {
+	return xxx_messageInfo_FileOptions.Size(m)
+}
+func (m *FileOptions) XXX_DiscardUnknown() {
+	xxx_messageInfo_FileOptions.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FileOptions proto.InternalMessageInfo
+
+const Default_FileOptions_JavaMultipleFiles bool = false
+const Default_FileOptions_JavaStringCheckUtf8 bool = false
+const Default_FileOptions_OptimizeFor FileOptions_OptimizeMode = FileOptions_SPEED
+const Default_FileOptions_CcGenericServices bool = false
+const Default_FileOptions_JavaGenericServices bool = false
+const Default_FileOptions_PyGenericServices bool = false
+const Default_FileOptions_PhpGenericServices bool = false
+const Default_FileOptions_Deprecated bool = false
+const Default_FileOptions_CcEnableArenas bool = false
+
+func (m *FileOptions) GetJavaPackage() string {
+	if m != nil && m.JavaPackage != nil {
+		return *m.JavaPackage
+	}
+	return ""
+}
+
+func (m *FileOptions) GetJavaOuterClassname() string {
+	if m != nil && m.JavaOuterClassname != nil {
+		return *m.JavaOuterClassname
+	}
+	return ""
+}
+
+func (m *FileOptions) GetJavaMultipleFiles() bool {
+	if m != nil && m.JavaMultipleFiles != nil {
+		return *m.JavaMultipleFiles
+	}
+	return Default_FileOptions_JavaMultipleFiles
+}
+
+// Deprecated: Do not use.
+func (m *FileOptions) GetJavaGenerateEqualsAndHash() bool {
+	if m != nil && m.JavaGenerateEqualsAndHash != nil {
+		return *m.JavaGenerateEqualsAndHash
+	}
+	return false
+}
+
+func (m *FileOptions) GetJavaStringCheckUtf8() bool {
+	if m != nil && m.JavaStringCheckUtf8 != nil {
+		return *m.JavaStringCheckUtf8
+	}
+	return Default_FileOptions_JavaStringCheckUtf8
+}
+
+func (m *FileOptions) GetOptimizeFor() FileOptions_OptimizeMode {
+	if m != nil && m.OptimizeFor != nil {
+		return *m.OptimizeFor
+	}
+	return Default_FileOptions_OptimizeFor
+}
+
+func (m *FileOptions) GetGoPackage() string {
+	if m != nil && m.GoPackage != nil {
+		return *m.GoPackage
+	}
+	return ""
+}
+
+func (m *FileOptions) GetCcGenericServices() bool {
+	if m != nil && m.CcGenericServices != nil {
+		return *m.CcGenericServices
+	}
+	return Default_FileOptions_CcGenericServices
+}
+
+func (m *FileOptions) GetJavaGenericServices() bool {
+	if m != nil && m.JavaGenericServices != nil {
+		return *m.JavaGenericServices
+	}
+	return Default_FileOptions_JavaGenericServices
+}
+
+func (m *FileOptions) GetPyGenericServices() bool {
+	if m != nil && m.PyGenericServices != nil {
+		return *m.PyGenericServices
+	}
+	return Default_FileOptions_PyGenericServices
+}
+
+func (m *FileOptions) GetPhpGenericServices() bool {
+	if m != nil && m.PhpGenericServices != nil {
+		return *m.PhpGenericServices
+	}
+	return Default_FileOptions_PhpGenericServices
+}
+
+func (m *FileOptions) GetDeprecated() bool {
+	if m != nil && m.Deprecated != nil {
+		return *m.Deprecated
+	}
+	return Default_FileOptions_Deprecated
+}
+
+func (m *FileOptions) GetCcEnableArenas() bool {
+	if m != nil && m.CcEnableArenas != nil {
+		return *m.CcEnableArenas
+	}
+	return Default_FileOptions_CcEnableArenas
+}
+
+func (m *FileOptions) GetObjcClassPrefix() string {
+	if m != nil && m.ObjcClassPrefix != nil {
+		return *m.ObjcClassPrefix
+	}
+	return ""
+}
+
+func (m *FileOptions) GetCsharpNamespace() string {
+	if m != nil && m.CsharpNamespace != nil {
+		return *m.CsharpNamespace
+	}
+	return ""
+}
+
+func (m *FileOptions) GetSwiftPrefix() string {
+	if m != nil && m.SwiftPrefix != nil {
+		return *m.SwiftPrefix
+	}
+	return ""
+}
+
+func (m *FileOptions) GetPhpClassPrefix() string {
+	if m != nil && m.PhpClassPrefix != nil {
+		return *m.PhpClassPrefix
+	}
+	return ""
+}
+
+func (m *FileOptions) GetPhpNamespace() string {
+	if m != nil && m.PhpNamespace != nil {
+		return *m.PhpNamespace
+	}
+	return ""
+}
+
+func (m *FileOptions) GetPhpMetadataNamespace() string {
+	if m != nil && m.PhpMetadataNamespace != nil {
+		return *m.PhpMetadataNamespace
+	}
+	return ""
+}
+
+func (m *FileOptions) GetRubyPackage() string {
+	if m != nil && m.RubyPackage != nil {
+		return *m.RubyPackage
+	}
+	return ""
+}
+
+func (m *FileOptions) GetUninterpretedOption() []*UninterpretedOption {
+	if m != nil {
+		return m.UninterpretedOption
+	}
+	return nil
+}
+
+type MessageOptions struct {
+	// Set true to use the old proto1 MessageSet wire format for extensions.
+	// This is provided for backwards-compatibility with the MessageSet wire
+	// format.  You should not use this for any other reason:  It's less
+	// efficient, has fewer features, and is more complicated.
+	//
+	// The message must be defined exactly as follows:
+	//   message Foo {
+	//     option message_set_wire_format = true;
+	//     extensions 4 to max;
+	//   }
+	// Note that the message cannot have any defined fields; MessageSets only
+	// have extensions.
+	//
+	// All extensions of your type must be singular messages; e.g. they cannot
+	// be int32s, enums, or repeated messages.
+	//
+	// Because this is an option, the above two restrictions are not enforced by
+	// the protocol compiler.
+	MessageSetWireFormat *bool `protobuf:"varint,1,opt,name=message_set_wire_format,json=messageSetWireFormat,def=0" json:"message_set_wire_format,omitempty"`
+	// Disables the generation of the standard "descriptor()" accessor, which can
+	// conflict with a field of the same name.  This is meant to make migration
+	// from proto1 easier; new code should avoid fields named "descriptor".
+	NoStandardDescriptorAccessor *bool `protobuf:"varint,2,opt,name=no_standard_descriptor_accessor,json=noStandardDescriptorAccessor,def=0" json:"no_standard_descriptor_accessor,omitempty"`
+	// Is this message deprecated?
+	// Depending on the target platform, this can emit Deprecated annotations
+	// for the message, or it will be completely ignored; in the very least,
+	// this is a formalization for deprecating messages.
+	Deprecated *bool `protobuf:"varint,3,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
+	// Whether the message is an automatically generated map entry type for the
+	// maps field.
+	//
+	// For maps fields:
+	//     map<KeyType, ValueType> map_field = 1;
+	// The parsed descriptor looks like:
+	//     message MapFieldEntry {
+	//         option map_entry = true;
+	//         optional KeyType key = 1;
+	//         optional ValueType value = 2;
+	//     }
+	//     repeated MapFieldEntry map_field = 1;
+	//
+	// Implementations may choose not to generate the map_entry=true message, but
+	// use a native map in the target language to hold the keys and values.
+	// The reflection APIs in such implementations still need to work as
+	// if the field is a repeated message field.
+	//
+	// NOTE: Do not set the option in .proto files. Always use the maps syntax
+	// instead. The option should only be implicitly set by the proto compiler
+	// 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:"-"`
+}
+
+func (m *MessageOptions) Reset()         { *m = MessageOptions{} }
+func (m *MessageOptions) String() string { return proto.CompactTextString(m) }
+func (*MessageOptions) ProtoMessage()    {}
+func (*MessageOptions) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{11}
+}
+
+var extRange_MessageOptions = []proto.ExtensionRange{
+	{Start: 1000, End: 536870911},
+}
+
+func (*MessageOptions) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_MessageOptions
+}
+
+func (m *MessageOptions) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MessageOptions.Unmarshal(m, b)
+}
+func (m *MessageOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MessageOptions.Marshal(b, m, deterministic)
+}
+func (m *MessageOptions) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MessageOptions.Merge(m, src)
+}
+func (m *MessageOptions) XXX_Size() int {
+	return xxx_messageInfo_MessageOptions.Size(m)
+}
+func (m *MessageOptions) XXX_DiscardUnknown() {
+	xxx_messageInfo_MessageOptions.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MessageOptions proto.InternalMessageInfo
+
+const Default_MessageOptions_MessageSetWireFormat bool = false
+const Default_MessageOptions_NoStandardDescriptorAccessor bool = false
+const Default_MessageOptions_Deprecated bool = false
+
+func (m *MessageOptions) GetMessageSetWireFormat() bool {
+	if m != nil && m.MessageSetWireFormat != nil {
+		return *m.MessageSetWireFormat
+	}
+	return Default_MessageOptions_MessageSetWireFormat
+}
+
+func (m *MessageOptions) GetNoStandardDescriptorAccessor() bool {
+	if m != nil && m.NoStandardDescriptorAccessor != nil {
+		return *m.NoStandardDescriptorAccessor
+	}
+	return Default_MessageOptions_NoStandardDescriptorAccessor
+}
+
+func (m *MessageOptions) GetDeprecated() bool {
+	if m != nil && m.Deprecated != nil {
+		return *m.Deprecated
+	}
+	return Default_MessageOptions_Deprecated
+}
+
+func (m *MessageOptions) GetMapEntry() bool {
+	if m != nil && m.MapEntry != nil {
+		return *m.MapEntry
+	}
+	return false
+}
+
+func (m *MessageOptions) GetUninterpretedOption() []*UninterpretedOption {
+	if m != nil {
+		return m.UninterpretedOption
+	}
+	return nil
+}
+
+type FieldOptions struct {
+	// The ctype option instructs the C++ code generator to use a different
+	// representation of the field than it normally would.  See the specific
+	// options below.  This option is not yet implemented in the open source
+	// release -- sorry, we'll try to include it in a future version!
+	Ctype *FieldOptions_CType `protobuf:"varint,1,opt,name=ctype,enum=google.protobuf.FieldOptions_CType,def=0" json:"ctype,omitempty"`
+	// The packed option can be enabled for repeated primitive fields to enable
+	// a more efficient representation on the wire. Rather than repeatedly
+	// writing the tag and type for each element, the entire array is encoded as
+	// a single length-delimited blob. In proto3, only explicit setting it to
+	// false will avoid using packed encoding.
+	Packed *bool `protobuf:"varint,2,opt,name=packed" json:"packed,omitempty"`
+	// The jstype option determines the JavaScript type used for values of the
+	// field.  The option is permitted only for 64 bit integral and fixed types
+	// (int64, uint64, sint64, fixed64, sfixed64).  A field with jstype JS_STRING
+	// is represented as JavaScript string, which avoids loss of precision that
+	// can happen when a large value is converted to a floating point JavaScript.
+	// Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
+	// use the JavaScript "number" type.  The behavior of the default option
+	// JS_NORMAL is implementation dependent.
+	//
+	// This option is an enum to permit additional types to be added, e.g.
+	// goog.math.Integer.
+	Jstype *FieldOptions_JSType `protobuf:"varint,6,opt,name=jstype,enum=google.protobuf.FieldOptions_JSType,def=0" json:"jstype,omitempty"`
+	// Should this field be parsed lazily?  Lazy applies only to message-type
+	// fields.  It means that when the outer message is initially parsed, the
+	// inner message's contents will not be parsed but instead stored in encoded
+	// form.  The inner message will actually be parsed when it is first accessed.
+	//
+	// This is only a hint.  Implementations are free to choose whether to use
+	// eager or lazy parsing regardless of the value of this option.  However,
+	// setting this option true suggests that the protocol author believes that
+	// using lazy parsing on this field is worth the additional bookkeeping
+	// overhead typically needed to implement it.
+	//
+	// This option does not affect the public interface of any generated code;
+	// all method signatures remain the same.  Furthermore, thread-safety of the
+	// interface is not affected by this option; const methods remain safe to
+	// call from multiple threads concurrently, while non-const methods continue
+	// to require exclusive access.
+	//
+	//
+	// Note that implementations may choose not to check required fields within
+	// a lazy sub-message.  That is, calling IsInitialized() on the outer message
+	// may return true even if the inner message has missing required fields.
+	// This is necessary because otherwise the inner message would have to be
+	// parsed in order to perform the check, defeating the purpose of lazy
+	// parsing.  An implementation which chooses not to check required fields
+	// must be consistent about it.  That is, for any particular sub-message, the
+	// implementation must either *always* check its required fields, or *never*
+	// check its required fields, regardless of whether or not the message has
+	// been parsed.
+	Lazy *bool `protobuf:"varint,5,opt,name=lazy,def=0" json:"lazy,omitempty"`
+	// Is this field deprecated?
+	// Depending on the target platform, this can emit Deprecated annotations
+	// for accessors, or it will be completely ignored; in the very least, this
+	// is a formalization for deprecating fields.
+	Deprecated *bool `protobuf:"varint,3,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
+	// 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:"-"`
+}
+
+func (m *FieldOptions) Reset()         { *m = FieldOptions{} }
+func (m *FieldOptions) String() string { return proto.CompactTextString(m) }
+func (*FieldOptions) ProtoMessage()    {}
+func (*FieldOptions) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{12}
+}
+
+var extRange_FieldOptions = []proto.ExtensionRange{
+	{Start: 1000, End: 536870911},
+}
+
+func (*FieldOptions) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_FieldOptions
+}
+
+func (m *FieldOptions) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FieldOptions.Unmarshal(m, b)
+}
+func (m *FieldOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FieldOptions.Marshal(b, m, deterministic)
+}
+func (m *FieldOptions) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FieldOptions.Merge(m, src)
+}
+func (m *FieldOptions) XXX_Size() int {
+	return xxx_messageInfo_FieldOptions.Size(m)
+}
+func (m *FieldOptions) XXX_DiscardUnknown() {
+	xxx_messageInfo_FieldOptions.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FieldOptions proto.InternalMessageInfo
+
+const Default_FieldOptions_Ctype FieldOptions_CType = FieldOptions_STRING
+const Default_FieldOptions_Jstype FieldOptions_JSType = FieldOptions_JS_NORMAL
+const Default_FieldOptions_Lazy bool = false
+const Default_FieldOptions_Deprecated bool = false
+const Default_FieldOptions_Weak bool = false
+
+func (m *FieldOptions) GetCtype() FieldOptions_CType {
+	if m != nil && m.Ctype != nil {
+		return *m.Ctype
+	}
+	return Default_FieldOptions_Ctype
+}
+
+func (m *FieldOptions) GetPacked() bool {
+	if m != nil && m.Packed != nil {
+		return *m.Packed
+	}
+	return false
+}
+
+func (m *FieldOptions) GetJstype() FieldOptions_JSType {
+	if m != nil && m.Jstype != nil {
+		return *m.Jstype
+	}
+	return Default_FieldOptions_Jstype
+}
+
+func (m *FieldOptions) GetLazy() bool {
+	if m != nil && m.Lazy != nil {
+		return *m.Lazy
+	}
+	return Default_FieldOptions_Lazy
+}
+
+func (m *FieldOptions) GetDeprecated() bool {
+	if m != nil && m.Deprecated != nil {
+		return *m.Deprecated
+	}
+	return Default_FieldOptions_Deprecated
+}
+
+func (m *FieldOptions) GetWeak() bool {
+	if m != nil && m.Weak != nil {
+		return *m.Weak
+	}
+	return Default_FieldOptions_Weak
+}
+
+func (m *FieldOptions) GetUninterpretedOption() []*UninterpretedOption {
+	if m != nil {
+		return m.UninterpretedOption
+	}
+	return nil
+}
+
+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:"-"`
+}
+
+func (m *OneofOptions) Reset()         { *m = OneofOptions{} }
+func (m *OneofOptions) String() string { return proto.CompactTextString(m) }
+func (*OneofOptions) ProtoMessage()    {}
+func (*OneofOptions) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{13}
+}
+
+var extRange_OneofOptions = []proto.ExtensionRange{
+	{Start: 1000, End: 536870911},
+}
+
+func (*OneofOptions) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_OneofOptions
+}
+
+func (m *OneofOptions) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OneofOptions.Unmarshal(m, b)
+}
+func (m *OneofOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OneofOptions.Marshal(b, m, deterministic)
+}
+func (m *OneofOptions) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OneofOptions.Merge(m, src)
+}
+func (m *OneofOptions) XXX_Size() int {
+	return xxx_messageInfo_OneofOptions.Size(m)
+}
+func (m *OneofOptions) XXX_DiscardUnknown() {
+	xxx_messageInfo_OneofOptions.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OneofOptions proto.InternalMessageInfo
+
+func (m *OneofOptions) GetUninterpretedOption() []*UninterpretedOption {
+	if m != nil {
+		return m.UninterpretedOption
+	}
+	return nil
+}
+
+type EnumOptions struct {
+	// Set this option to true to allow mapping different tag names to the same
+	// value.
+	AllowAlias *bool `protobuf:"varint,2,opt,name=allow_alias,json=allowAlias" json:"allow_alias,omitempty"`
+	// Is this enum deprecated?
+	// Depending on the target platform, this can emit Deprecated annotations
+	// for the enum, or it will be completely ignored; in the very least, this
+	// 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:"-"`
+}
+
+func (m *EnumOptions) Reset()         { *m = EnumOptions{} }
+func (m *EnumOptions) String() string { return proto.CompactTextString(m) }
+func (*EnumOptions) ProtoMessage()    {}
+func (*EnumOptions) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{14}
+}
+
+var extRange_EnumOptions = []proto.ExtensionRange{
+	{Start: 1000, End: 536870911},
+}
+
+func (*EnumOptions) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_EnumOptions
+}
+
+func (m *EnumOptions) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_EnumOptions.Unmarshal(m, b)
+}
+func (m *EnumOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_EnumOptions.Marshal(b, m, deterministic)
+}
+func (m *EnumOptions) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EnumOptions.Merge(m, src)
+}
+func (m *EnumOptions) XXX_Size() int {
+	return xxx_messageInfo_EnumOptions.Size(m)
+}
+func (m *EnumOptions) XXX_DiscardUnknown() {
+	xxx_messageInfo_EnumOptions.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_EnumOptions proto.InternalMessageInfo
+
+const Default_EnumOptions_Deprecated bool = false
+
+func (m *EnumOptions) GetAllowAlias() bool {
+	if m != nil && m.AllowAlias != nil {
+		return *m.AllowAlias
+	}
+	return false
+}
+
+func (m *EnumOptions) GetDeprecated() bool {
+	if m != nil && m.Deprecated != nil {
+		return *m.Deprecated
+	}
+	return Default_EnumOptions_Deprecated
+}
+
+func (m *EnumOptions) GetUninterpretedOption() []*UninterpretedOption {
+	if m != nil {
+		return m.UninterpretedOption
+	}
+	return nil
+}
+
+type EnumValueOptions struct {
+	// Is this enum value deprecated?
+	// Depending on the target platform, this can emit Deprecated annotations
+	// for the enum value, or it will be completely ignored; in the very least,
+	// 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:"-"`
+}
+
+func (m *EnumValueOptions) Reset()         { *m = EnumValueOptions{} }
+func (m *EnumValueOptions) String() string { return proto.CompactTextString(m) }
+func (*EnumValueOptions) ProtoMessage()    {}
+func (*EnumValueOptions) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{15}
+}
+
+var extRange_EnumValueOptions = []proto.ExtensionRange{
+	{Start: 1000, End: 536870911},
+}
+
+func (*EnumValueOptions) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_EnumValueOptions
+}
+
+func (m *EnumValueOptions) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_EnumValueOptions.Unmarshal(m, b)
+}
+func (m *EnumValueOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_EnumValueOptions.Marshal(b, m, deterministic)
+}
+func (m *EnumValueOptions) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_EnumValueOptions.Merge(m, src)
+}
+func (m *EnumValueOptions) XXX_Size() int {
+	return xxx_messageInfo_EnumValueOptions.Size(m)
+}
+func (m *EnumValueOptions) XXX_DiscardUnknown() {
+	xxx_messageInfo_EnumValueOptions.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_EnumValueOptions proto.InternalMessageInfo
+
+const Default_EnumValueOptions_Deprecated bool = false
+
+func (m *EnumValueOptions) GetDeprecated() bool {
+	if m != nil && m.Deprecated != nil {
+		return *m.Deprecated
+	}
+	return Default_EnumValueOptions_Deprecated
+}
+
+func (m *EnumValueOptions) GetUninterpretedOption() []*UninterpretedOption {
+	if m != nil {
+		return m.UninterpretedOption
+	}
+	return nil
+}
+
+type ServiceOptions struct {
+	// Is this service deprecated?
+	// Depending on the target platform, this can emit Deprecated annotations
+	// for the service, or it will be completely ignored; in the very least,
+	// 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:"-"`
+}
+
+func (m *ServiceOptions) Reset()         { *m = ServiceOptions{} }
+func (m *ServiceOptions) String() string { return proto.CompactTextString(m) }
+func (*ServiceOptions) ProtoMessage()    {}
+func (*ServiceOptions) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{16}
+}
+
+var extRange_ServiceOptions = []proto.ExtensionRange{
+	{Start: 1000, End: 536870911},
+}
+
+func (*ServiceOptions) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_ServiceOptions
+}
+
+func (m *ServiceOptions) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ServiceOptions.Unmarshal(m, b)
+}
+func (m *ServiceOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ServiceOptions.Marshal(b, m, deterministic)
+}
+func (m *ServiceOptions) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ServiceOptions.Merge(m, src)
+}
+func (m *ServiceOptions) XXX_Size() int {
+	return xxx_messageInfo_ServiceOptions.Size(m)
+}
+func (m *ServiceOptions) XXX_DiscardUnknown() {
+	xxx_messageInfo_ServiceOptions.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ServiceOptions proto.InternalMessageInfo
+
+const Default_ServiceOptions_Deprecated bool = false
+
+func (m *ServiceOptions) GetDeprecated() bool {
+	if m != nil && m.Deprecated != nil {
+		return *m.Deprecated
+	}
+	return Default_ServiceOptions_Deprecated
+}
+
+func (m *ServiceOptions) GetUninterpretedOption() []*UninterpretedOption {
+	if m != nil {
+		return m.UninterpretedOption
+	}
+	return nil
+}
+
+type MethodOptions struct {
+	// Is this method deprecated?
+	// Depending on the target platform, this can emit Deprecated annotations
+	// for the method, or it will be completely ignored; in the very least,
+	// this is a formalization for deprecating methods.
+	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:"-"`
+}
+
+func (m *MethodOptions) Reset()         { *m = MethodOptions{} }
+func (m *MethodOptions) String() string { return proto.CompactTextString(m) }
+func (*MethodOptions) ProtoMessage()    {}
+func (*MethodOptions) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{17}
+}
+
+var extRange_MethodOptions = []proto.ExtensionRange{
+	{Start: 1000, End: 536870911},
+}
+
+func (*MethodOptions) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_MethodOptions
+}
+
+func (m *MethodOptions) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_MethodOptions.Unmarshal(m, b)
+}
+func (m *MethodOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_MethodOptions.Marshal(b, m, deterministic)
+}
+func (m *MethodOptions) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MethodOptions.Merge(m, src)
+}
+func (m *MethodOptions) XXX_Size() int {
+	return xxx_messageInfo_MethodOptions.Size(m)
+}
+func (m *MethodOptions) XXX_DiscardUnknown() {
+	xxx_messageInfo_MethodOptions.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_MethodOptions proto.InternalMessageInfo
+
+const Default_MethodOptions_Deprecated bool = false
+const Default_MethodOptions_IdempotencyLevel MethodOptions_IdempotencyLevel = MethodOptions_IDEMPOTENCY_UNKNOWN
+
+func (m *MethodOptions) GetDeprecated() bool {
+	if m != nil && m.Deprecated != nil {
+		return *m.Deprecated
+	}
+	return Default_MethodOptions_Deprecated
+}
+
+func (m *MethodOptions) GetIdempotencyLevel() MethodOptions_IdempotencyLevel {
+	if m != nil && m.IdempotencyLevel != nil {
+		return *m.IdempotencyLevel
+	}
+	return Default_MethodOptions_IdempotencyLevel
+}
+
+func (m *MethodOptions) GetUninterpretedOption() []*UninterpretedOption {
+	if m != nil {
+		return m.UninterpretedOption
+	}
+	return nil
+}
+
+// A message representing a option the parser does not recognize. This only
+// appears in options protos created by the compiler::Parser class.
+// DescriptorPool resolves these when building Descriptor objects. Therefore,
+// options protos in descriptor objects (e.g. returned by Descriptor::options(),
+// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
+// in them.
+type UninterpretedOption struct {
+	Name []*UninterpretedOption_NamePart `protobuf:"bytes,2,rep,name=name" json:"name,omitempty"`
+	// The value of the uninterpreted option, in whatever type the tokenizer
+	// identified it as during parsing. Exactly one of these should be set.
+	IdentifierValue      *string  `protobuf:"bytes,3,opt,name=identifier_value,json=identifierValue" json:"identifier_value,omitempty"`
+	PositiveIntValue     *uint64  `protobuf:"varint,4,opt,name=positive_int_value,json=positiveIntValue" json:"positive_int_value,omitempty"`
+	NegativeIntValue     *int64   `protobuf:"varint,5,opt,name=negative_int_value,json=negativeIntValue" json:"negative_int_value,omitempty"`
+	DoubleValue          *float64 `protobuf:"fixed64,6,opt,name=double_value,json=doubleValue" json:"double_value,omitempty"`
+	StringValue          []byte   `protobuf:"bytes,7,opt,name=string_value,json=stringValue" json:"string_value,omitempty"`
+	AggregateValue       *string  `protobuf:"bytes,8,opt,name=aggregate_value,json=aggregateValue" json:"aggregate_value,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *UninterpretedOption) Reset()         { *m = UninterpretedOption{} }
+func (m *UninterpretedOption) String() string { return proto.CompactTextString(m) }
+func (*UninterpretedOption) ProtoMessage()    {}
+func (*UninterpretedOption) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{18}
+}
+
+func (m *UninterpretedOption) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UninterpretedOption.Unmarshal(m, b)
+}
+func (m *UninterpretedOption) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UninterpretedOption.Marshal(b, m, deterministic)
+}
+func (m *UninterpretedOption) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UninterpretedOption.Merge(m, src)
+}
+func (m *UninterpretedOption) XXX_Size() int {
+	return xxx_messageInfo_UninterpretedOption.Size(m)
+}
+func (m *UninterpretedOption) XXX_DiscardUnknown() {
+	xxx_messageInfo_UninterpretedOption.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UninterpretedOption proto.InternalMessageInfo
+
+func (m *UninterpretedOption) GetName() []*UninterpretedOption_NamePart {
+	if m != nil {
+		return m.Name
+	}
+	return nil
+}
+
+func (m *UninterpretedOption) GetIdentifierValue() string {
+	if m != nil && m.IdentifierValue != nil {
+		return *m.IdentifierValue
+	}
+	return ""
+}
+
+func (m *UninterpretedOption) GetPositiveIntValue() uint64 {
+	if m != nil && m.PositiveIntValue != nil {
+		return *m.PositiveIntValue
+	}
+	return 0
+}
+
+func (m *UninterpretedOption) GetNegativeIntValue() int64 {
+	if m != nil && m.NegativeIntValue != nil {
+		return *m.NegativeIntValue
+	}
+	return 0
+}
+
+func (m *UninterpretedOption) GetDoubleValue() float64 {
+	if m != nil && m.DoubleValue != nil {
+		return *m.DoubleValue
+	}
+	return 0
+}
+
+func (m *UninterpretedOption) GetStringValue() []byte {
+	if m != nil {
+		return m.StringValue
+	}
+	return nil
+}
+
+func (m *UninterpretedOption) GetAggregateValue() string {
+	if m != nil && m.AggregateValue != nil {
+		return *m.AggregateValue
+	}
+	return ""
+}
+
+// The name of the uninterpreted option.  Each string represents a segment in
+// a dot-separated name.  is_extension is true iff a segment represents an
+// extension (denoted with parentheses in options specs in .proto files).
+// E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents
+// "foo.(bar.baz).qux".
+type UninterpretedOption_NamePart struct {
+	NamePart             *string  `protobuf:"bytes,1,req,name=name_part,json=namePart" json:"name_part,omitempty"`
+	IsExtension          *bool    `protobuf:"varint,2,req,name=is_extension,json=isExtension" json:"is_extension,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *UninterpretedOption_NamePart) Reset()         { *m = UninterpretedOption_NamePart{} }
+func (m *UninterpretedOption_NamePart) String() string { return proto.CompactTextString(m) }
+func (*UninterpretedOption_NamePart) ProtoMessage()    {}
+func (*UninterpretedOption_NamePart) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{18, 0}
+}
+
+func (m *UninterpretedOption_NamePart) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UninterpretedOption_NamePart.Unmarshal(m, b)
+}
+func (m *UninterpretedOption_NamePart) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UninterpretedOption_NamePart.Marshal(b, m, deterministic)
+}
+func (m *UninterpretedOption_NamePart) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UninterpretedOption_NamePart.Merge(m, src)
+}
+func (m *UninterpretedOption_NamePart) XXX_Size() int {
+	return xxx_messageInfo_UninterpretedOption_NamePart.Size(m)
+}
+func (m *UninterpretedOption_NamePart) XXX_DiscardUnknown() {
+	xxx_messageInfo_UninterpretedOption_NamePart.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UninterpretedOption_NamePart proto.InternalMessageInfo
+
+func (m *UninterpretedOption_NamePart) GetNamePart() string {
+	if m != nil && m.NamePart != nil {
+		return *m.NamePart
+	}
+	return ""
+}
+
+func (m *UninterpretedOption_NamePart) GetIsExtension() bool {
+	if m != nil && m.IsExtension != nil {
+		return *m.IsExtension
+	}
+	return false
+}
+
+// Encapsulates information about the original source file from which a
+// FileDescriptorProto was generated.
+type SourceCodeInfo struct {
+	// A Location identifies a piece of source code in a .proto file which
+	// corresponds to a particular definition.  This information is intended
+	// to be useful to IDEs, code indexers, documentation generators, and similar
+	// tools.
+	//
+	// For example, say we have a file like:
+	//   message Foo {
+	//     optional string foo = 1;
+	//   }
+	// Let's look at just the field definition:
+	//   optional string foo = 1;
+	//   ^       ^^     ^^  ^  ^^^
+	//   a       bc     de  f  ghi
+	// We have the following locations:
+	//   span   path               represents
+	//   [a,i)  [ 4, 0, 2, 0 ]     The whole field definition.
+	//   [a,b)  [ 4, 0, 2, 0, 4 ]  The label (optional).
+	//   [c,d)  [ 4, 0, 2, 0, 5 ]  The type (string).
+	//   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
+	//   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
+	//
+	// Notes:
+	// - A location may refer to a repeated field itself (i.e. not to any
+	//   particular index within it).  This is used whenever a set of elements are
+	//   logically enclosed in a single code segment.  For example, an entire
+	//   extend block (possibly containing multiple extension definitions) will
+	//   have an outer location whose path refers to the "extensions" repeated
+	//   field without an index.
+	// - Multiple locations may have the same path.  This happens when a single
+	//   logical declaration is spread out across multiple places.  The most
+	//   obvious example is the "extend" block again -- there may be multiple
+	//   extend blocks in the same scope, each of which will have the same path.
+	// - A location's span is not always a subset of its parent's span.  For
+	//   example, the "extendee" of an extension declaration appears at the
+	//   beginning of the "extend" block and is shared by all extensions within
+	//   the block.
+	// - Just because a location's span is a subset of some other location's span
+	//   does not mean that it is a descendant.  For example, a "group" defines
+	//   both a type and a field in a single declaration.  Thus, the locations
+	//   corresponding to the type and field and their components will overlap.
+	// - Code which tries to interpret locations should probably be designed to
+	//   ignore those that it doesn't understand, as more types of locations could
+	//   be recorded in the future.
+	Location             []*SourceCodeInfo_Location `protobuf:"bytes,1,rep,name=location" json:"location,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                   `json:"-"`
+	XXX_unrecognized     []byte                     `json:"-"`
+	XXX_sizecache        int32                      `json:"-"`
+}
+
+func (m *SourceCodeInfo) Reset()         { *m = SourceCodeInfo{} }
+func (m *SourceCodeInfo) String() string { return proto.CompactTextString(m) }
+func (*SourceCodeInfo) ProtoMessage()    {}
+func (*SourceCodeInfo) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{19}
+}
+
+func (m *SourceCodeInfo) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SourceCodeInfo.Unmarshal(m, b)
+}
+func (m *SourceCodeInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SourceCodeInfo.Marshal(b, m, deterministic)
+}
+func (m *SourceCodeInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SourceCodeInfo.Merge(m, src)
+}
+func (m *SourceCodeInfo) XXX_Size() int {
+	return xxx_messageInfo_SourceCodeInfo.Size(m)
+}
+func (m *SourceCodeInfo) XXX_DiscardUnknown() {
+	xxx_messageInfo_SourceCodeInfo.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SourceCodeInfo proto.InternalMessageInfo
+
+func (m *SourceCodeInfo) GetLocation() []*SourceCodeInfo_Location {
+	if m != nil {
+		return m.Location
+	}
+	return nil
+}
+
+type SourceCodeInfo_Location struct {
+	// Identifies which part of the FileDescriptorProto was defined at this
+	// location.
+	//
+	// Each element is a field number or an index.  They form a path from
+	// the root FileDescriptorProto to the place where the definition.  For
+	// example, this path:
+	//   [ 4, 3, 2, 7, 1 ]
+	// refers to:
+	//   file.message_type(3)  // 4, 3
+	//       .field(7)         // 2, 7
+	//       .name()           // 1
+	// This is because FileDescriptorProto.message_type has field number 4:
+	//   repeated DescriptorProto message_type = 4;
+	// and DescriptorProto.field has field number 2:
+	//   repeated FieldDescriptorProto field = 2;
+	// and FieldDescriptorProto.name has field number 1:
+	//   optional string name = 1;
+	//
+	// Thus, the above path gives the location of a field name.  If we removed
+	// the last element:
+	//   [ 4, 3, 2, 7 ]
+	// this path refers to the whole field declaration (from the beginning
+	// of the label to the terminating semicolon).
+	Path []int32 `protobuf:"varint,1,rep,packed,name=path" json:"path,omitempty"`
+	// Always has exactly three or four elements: start line, start column,
+	// end line (optional, otherwise assumed same as start line), end column.
+	// These are packed into a single field for efficiency.  Note that line
+	// and column numbers are zero-based -- typically you will want to add
+	// 1 to each before displaying to a user.
+	Span []int32 `protobuf:"varint,2,rep,packed,name=span" json:"span,omitempty"`
+	// If this SourceCodeInfo represents a complete declaration, these are any
+	// comments appearing before and after the declaration which appear to be
+	// attached to the declaration.
+	//
+	// A series of line comments appearing on consecutive lines, with no other
+	// tokens appearing on those lines, will be treated as a single comment.
+	//
+	// leading_detached_comments will keep paragraphs of comments that appear
+	// before (but not connected to) the current element. Each paragraph,
+	// separated by empty lines, will be one comment element in the repeated
+	// field.
+	//
+	// Only the comment content is provided; comment markers (e.g. //) are
+	// stripped out.  For block comments, leading whitespace and an asterisk
+	// will be stripped from the beginning of each line other than the first.
+	// Newlines are included in the output.
+	//
+	// Examples:
+	//
+	//   optional int32 foo = 1;  // Comment attached to foo.
+	//   // Comment attached to bar.
+	//   optional int32 bar = 2;
+	//
+	//   optional string baz = 3;
+	//   // Comment attached to baz.
+	//   // Another line attached to baz.
+	//
+	//   // Comment attached to qux.
+	//   //
+	//   // Another line attached to qux.
+	//   optional double qux = 4;
+	//
+	//   // Detached comment for corge. This is not leading or trailing comments
+	//   // to qux or corge because there are blank lines separating it from
+	//   // both.
+	//
+	//   // Detached comment for corge paragraph 2.
+	//
+	//   optional string corge = 5;
+	//   /* Block comment attached
+	//    * to corge.  Leading asterisks
+	//    * will be removed. */
+	//   /* Block comment attached to
+	//    * grault. */
+	//   optional int32 grault = 6;
+	//
+	//   // ignored detached comments.
+	LeadingComments         *string  `protobuf:"bytes,3,opt,name=leading_comments,json=leadingComments" json:"leading_comments,omitempty"`
+	TrailingComments        *string  `protobuf:"bytes,4,opt,name=trailing_comments,json=trailingComments" json:"trailing_comments,omitempty"`
+	LeadingDetachedComments []string `protobuf:"bytes,6,rep,name=leading_detached_comments,json=leadingDetachedComments" json:"leading_detached_comments,omitempty"`
+	XXX_NoUnkeyedLiteral    struct{} `json:"-"`
+	XXX_unrecognized        []byte   `json:"-"`
+	XXX_sizecache           int32    `json:"-"`
+}
+
+func (m *SourceCodeInfo_Location) Reset()         { *m = SourceCodeInfo_Location{} }
+func (m *SourceCodeInfo_Location) String() string { return proto.CompactTextString(m) }
+func (*SourceCodeInfo_Location) ProtoMessage()    {}
+func (*SourceCodeInfo_Location) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{19, 0}
+}
+
+func (m *SourceCodeInfo_Location) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SourceCodeInfo_Location.Unmarshal(m, b)
+}
+func (m *SourceCodeInfo_Location) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SourceCodeInfo_Location.Marshal(b, m, deterministic)
+}
+func (m *SourceCodeInfo_Location) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SourceCodeInfo_Location.Merge(m, src)
+}
+func (m *SourceCodeInfo_Location) XXX_Size() int {
+	return xxx_messageInfo_SourceCodeInfo_Location.Size(m)
+}
+func (m *SourceCodeInfo_Location) XXX_DiscardUnknown() {
+	xxx_messageInfo_SourceCodeInfo_Location.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SourceCodeInfo_Location proto.InternalMessageInfo
+
+func (m *SourceCodeInfo_Location) GetPath() []int32 {
+	if m != nil {
+		return m.Path
+	}
+	return nil
+}
+
+func (m *SourceCodeInfo_Location) GetSpan() []int32 {
+	if m != nil {
+		return m.Span
+	}
+	return nil
+}
+
+func (m *SourceCodeInfo_Location) GetLeadingComments() string {
+	if m != nil && m.LeadingComments != nil {
+		return *m.LeadingComments
+	}
+	return ""
+}
+
+func (m *SourceCodeInfo_Location) GetTrailingComments() string {
+	if m != nil && m.TrailingComments != nil {
+		return *m.TrailingComments
+	}
+	return ""
+}
+
+func (m *SourceCodeInfo_Location) GetLeadingDetachedComments() []string {
+	if m != nil {
+		return m.LeadingDetachedComments
+	}
+	return nil
+}
+
+// Describes the relationship between generated code and its original source
+// file. A GeneratedCodeInfo message is associated with only one generated
+// source file, but may contain references to different source .proto files.
+type GeneratedCodeInfo struct {
+	// An Annotation connects some span of text in generated code to an element
+	// of its generating .proto file.
+	Annotation           []*GeneratedCodeInfo_Annotation `protobuf:"bytes,1,rep,name=annotation" json:"annotation,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                        `json:"-"`
+	XXX_unrecognized     []byte                          `json:"-"`
+	XXX_sizecache        int32                           `json:"-"`
+}
+
+func (m *GeneratedCodeInfo) Reset()         { *m = GeneratedCodeInfo{} }
+func (m *GeneratedCodeInfo) String() string { return proto.CompactTextString(m) }
+func (*GeneratedCodeInfo) ProtoMessage()    {}
+func (*GeneratedCodeInfo) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{20}
+}
+
+func (m *GeneratedCodeInfo) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GeneratedCodeInfo.Unmarshal(m, b)
+}
+func (m *GeneratedCodeInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GeneratedCodeInfo.Marshal(b, m, deterministic)
+}
+func (m *GeneratedCodeInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GeneratedCodeInfo.Merge(m, src)
+}
+func (m *GeneratedCodeInfo) XXX_Size() int {
+	return xxx_messageInfo_GeneratedCodeInfo.Size(m)
+}
+func (m *GeneratedCodeInfo) XXX_DiscardUnknown() {
+	xxx_messageInfo_GeneratedCodeInfo.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GeneratedCodeInfo proto.InternalMessageInfo
+
+func (m *GeneratedCodeInfo) GetAnnotation() []*GeneratedCodeInfo_Annotation {
+	if m != nil {
+		return m.Annotation
+	}
+	return nil
+}
+
+type GeneratedCodeInfo_Annotation struct {
+	// Identifies the element in the original source .proto file. This field
+	// is formatted the same as SourceCodeInfo.Location.path.
+	Path []int32 `protobuf:"varint,1,rep,packed,name=path" json:"path,omitempty"`
+	// Identifies the filesystem path to the original source .proto.
+	SourceFile *string `protobuf:"bytes,2,opt,name=source_file,json=sourceFile" json:"source_file,omitempty"`
+	// Identifies the starting offset in bytes in the generated code
+	// that relates to the identified object.
+	Begin *int32 `protobuf:"varint,3,opt,name=begin" json:"begin,omitempty"`
+	// Identifies the ending offset in bytes in the generated code that
+	// relates to the identified offset. The end offset should be one past
+	// the last relevant byte (so the length of the text = end - begin).
+	End                  *int32   `protobuf:"varint,4,opt,name=end" json:"end,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GeneratedCodeInfo_Annotation) Reset()         { *m = GeneratedCodeInfo_Annotation{} }
+func (m *GeneratedCodeInfo_Annotation) String() string { return proto.CompactTextString(m) }
+func (*GeneratedCodeInfo_Annotation) ProtoMessage()    {}
+func (*GeneratedCodeInfo_Annotation) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e5baabe45344a177, []int{20, 0}
+}
+
+func (m *GeneratedCodeInfo_Annotation) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GeneratedCodeInfo_Annotation.Unmarshal(m, b)
+}
+func (m *GeneratedCodeInfo_Annotation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GeneratedCodeInfo_Annotation.Marshal(b, m, deterministic)
+}
+func (m *GeneratedCodeInfo_Annotation) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GeneratedCodeInfo_Annotation.Merge(m, src)
+}
+func (m *GeneratedCodeInfo_Annotation) XXX_Size() int {
+	return xxx_messageInfo_GeneratedCodeInfo_Annotation.Size(m)
+}
+func (m *GeneratedCodeInfo_Annotation) XXX_DiscardUnknown() {
+	xxx_messageInfo_GeneratedCodeInfo_Annotation.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GeneratedCodeInfo_Annotation proto.InternalMessageInfo
+
+func (m *GeneratedCodeInfo_Annotation) GetPath() []int32 {
+	if m != nil {
+		return m.Path
+	}
+	return nil
+}
+
+func (m *GeneratedCodeInfo_Annotation) GetSourceFile() string {
+	if m != nil && m.SourceFile != nil {
+		return *m.SourceFile
+	}
+	return ""
+}
+
+func (m *GeneratedCodeInfo_Annotation) GetBegin() int32 {
+	if m != nil && m.Begin != nil {
+		return *m.Begin
+	}
+	return 0
+}
+
+func (m *GeneratedCodeInfo_Annotation) GetEnd() int32 {
+	if m != nil && m.End != nil {
+		return *m.End
+	}
+	return 0
+}
+
+func init() {
+	proto.RegisterEnum("google.protobuf.FieldDescriptorProto_Type", FieldDescriptorProto_Type_name, FieldDescriptorProto_Type_value)
+	proto.RegisterEnum("google.protobuf.FieldDescriptorProto_Label", FieldDescriptorProto_Label_name, FieldDescriptorProto_Label_value)
+	proto.RegisterEnum("google.protobuf.FileOptions_OptimizeMode", FileOptions_OptimizeMode_name, FileOptions_OptimizeMode_value)
+	proto.RegisterEnum("google.protobuf.FieldOptions_CType", FieldOptions_CType_name, FieldOptions_CType_value)
+	proto.RegisterEnum("google.protobuf.FieldOptions_JSType", FieldOptions_JSType_name, FieldOptions_JSType_value)
+	proto.RegisterEnum("google.protobuf.MethodOptions_IdempotencyLevel", MethodOptions_IdempotencyLevel_name, MethodOptions_IdempotencyLevel_value)
+	proto.RegisterType((*FileDescriptorSet)(nil), "google.protobuf.FileDescriptorSet")
+	proto.RegisterType((*FileDescriptorProto)(nil), "google.protobuf.FileDescriptorProto")
+	proto.RegisterType((*DescriptorProto)(nil), "google.protobuf.DescriptorProto")
+	proto.RegisterType((*DescriptorProto_ExtensionRange)(nil), "google.protobuf.DescriptorProto.ExtensionRange")
+	proto.RegisterType((*DescriptorProto_ReservedRange)(nil), "google.protobuf.DescriptorProto.ReservedRange")
+	proto.RegisterType((*ExtensionRangeOptions)(nil), "google.protobuf.ExtensionRangeOptions")
+	proto.RegisterType((*FieldDescriptorProto)(nil), "google.protobuf.FieldDescriptorProto")
+	proto.RegisterType((*OneofDescriptorProto)(nil), "google.protobuf.OneofDescriptorProto")
+	proto.RegisterType((*EnumDescriptorProto)(nil), "google.protobuf.EnumDescriptorProto")
+	proto.RegisterType((*EnumDescriptorProto_EnumReservedRange)(nil), "google.protobuf.EnumDescriptorProto.EnumReservedRange")
+	proto.RegisterType((*EnumValueDescriptorProto)(nil), "google.protobuf.EnumValueDescriptorProto")
+	proto.RegisterType((*ServiceDescriptorProto)(nil), "google.protobuf.ServiceDescriptorProto")
+	proto.RegisterType((*MethodDescriptorProto)(nil), "google.protobuf.MethodDescriptorProto")
+	proto.RegisterType((*FileOptions)(nil), "google.protobuf.FileOptions")
+	proto.RegisterType((*MessageOptions)(nil), "google.protobuf.MessageOptions")
+	proto.RegisterType((*FieldOptions)(nil), "google.protobuf.FieldOptions")
+	proto.RegisterType((*OneofOptions)(nil), "google.protobuf.OneofOptions")
+	proto.RegisterType((*EnumOptions)(nil), "google.protobuf.EnumOptions")
+	proto.RegisterType((*EnumValueOptions)(nil), "google.protobuf.EnumValueOptions")
+	proto.RegisterType((*ServiceOptions)(nil), "google.protobuf.ServiceOptions")
+	proto.RegisterType((*MethodOptions)(nil), "google.protobuf.MethodOptions")
+	proto.RegisterType((*UninterpretedOption)(nil), "google.protobuf.UninterpretedOption")
+	proto.RegisterType((*UninterpretedOption_NamePart)(nil), "google.protobuf.UninterpretedOption.NamePart")
+	proto.RegisterType((*SourceCodeInfo)(nil), "google.protobuf.SourceCodeInfo")
+	proto.RegisterType((*SourceCodeInfo_Location)(nil), "google.protobuf.SourceCodeInfo.Location")
+	proto.RegisterType((*GeneratedCodeInfo)(nil), "google.protobuf.GeneratedCodeInfo")
+	proto.RegisterType((*GeneratedCodeInfo_Annotation)(nil), "google.protobuf.GeneratedCodeInfo.Annotation")
+}
+
+func init() {
+	proto.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,
+}
diff --git a/protoc-gen-go/descriptor/descriptor.proto b/protoc-gen-go/descriptor/descriptor.proto
new file mode 100644
index 0000000..a2102d7
--- /dev/null
+++ b/protoc-gen-go/descriptor/descriptor.proto
@@ -0,0 +1,885 @@
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc.  All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: kenton@google.com (Kenton Varda)
+//  Based on original Protocol Buffers design by
+//  Sanjay Ghemawat, Jeff Dean, and others.
+//
+// The messages in this file describe the definitions found in .proto files.
+// A valid .proto file can be translated directly to a FileDescriptorProto
+// without any other information (e.g. without reading its imports).
+
+
+syntax = "proto2";
+
+package google.protobuf;
+
+option go_package = "github.com/golang/protobuf/protoc-gen-go/descriptor;descriptor";
+option java_package = "com.google.protobuf";
+option java_outer_classname = "DescriptorProtos";
+option csharp_namespace = "Google.Protobuf.Reflection";
+option objc_class_prefix = "GPB";
+option cc_enable_arenas = true;
+
+// descriptor.proto must be optimized for speed because reflection-based
+// algorithms don't work during bootstrapping.
+option optimize_for = SPEED;
+
+// The protocol compiler can output a FileDescriptorSet containing the .proto
+// files it parses.
+message FileDescriptorSet {
+  repeated FileDescriptorProto file = 1;
+}
+
+// Describes a complete .proto file.
+message FileDescriptorProto {
+  optional string name = 1;     // file name, relative to root of source tree
+  optional string package = 2;  // e.g. "foo", "foo.bar", etc.
+
+  // Names of files imported by this file.
+  repeated string dependency = 3;
+  // Indexes of the public imported files in the dependency list above.
+  repeated int32 public_dependency = 10;
+  // Indexes of the weak imported files in the dependency list.
+  // For Google-internal migration only. Do not use.
+  repeated int32 weak_dependency = 11;
+
+  // All top-level definitions in this file.
+  repeated DescriptorProto message_type = 4;
+  repeated EnumDescriptorProto enum_type = 5;
+  repeated ServiceDescriptorProto service = 6;
+  repeated FieldDescriptorProto extension = 7;
+
+  optional FileOptions options = 8;
+
+  // This field contains optional information about the original source code.
+  // You may safely remove this entire field without harming runtime
+  // functionality of the descriptors -- the information is needed only by
+  // development tools.
+  optional SourceCodeInfo source_code_info = 9;
+
+  // The syntax of the proto file.
+  // The supported values are "proto2" and "proto3".
+  optional string syntax = 12;
+}
+
+// Describes a message type.
+message DescriptorProto {
+  optional string name = 1;
+
+  repeated FieldDescriptorProto field = 2;
+  repeated FieldDescriptorProto extension = 6;
+
+  repeated DescriptorProto nested_type = 3;
+  repeated EnumDescriptorProto enum_type = 4;
+
+  message ExtensionRange {
+    optional int32 start = 1;  // Inclusive.
+    optional int32 end = 2;    // Exclusive.
+
+    optional ExtensionRangeOptions options = 3;
+  }
+  repeated ExtensionRange extension_range = 5;
+
+  repeated OneofDescriptorProto oneof_decl = 8;
+
+  optional MessageOptions options = 7;
+
+  // Range of reserved tag numbers. Reserved tag numbers may not be used by
+  // fields or extension ranges in the same message. Reserved ranges may
+  // not overlap.
+  message ReservedRange {
+    optional int32 start = 1;  // Inclusive.
+    optional int32 end = 2;    // Exclusive.
+  }
+  repeated ReservedRange reserved_range = 9;
+  // Reserved field names, which may not be used by fields in the same message.
+  // A given name may only be reserved once.
+  repeated string reserved_name = 10;
+}
+
+message ExtensionRangeOptions {
+  // The parser stores options it doesn't recognize here. See above.
+  repeated UninterpretedOption uninterpreted_option = 999;
+
+  // Clients can define custom options in extensions of this message. See above.
+  extensions 1000 to max;
+}
+
+// Describes a field within a message.
+message FieldDescriptorProto {
+  enum Type {
+    // 0 is reserved for errors.
+    // Order is weird for historical reasons.
+    TYPE_DOUBLE = 1;
+    TYPE_FLOAT = 2;
+    // Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
+    // negative values are likely.
+    TYPE_INT64 = 3;
+    TYPE_UINT64 = 4;
+    // Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
+    // negative values are likely.
+    TYPE_INT32 = 5;
+    TYPE_FIXED64 = 6;
+    TYPE_FIXED32 = 7;
+    TYPE_BOOL = 8;
+    TYPE_STRING = 9;
+    // Tag-delimited aggregate.
+    // Group type is deprecated and not supported in proto3. However, Proto3
+    // implementations should still be able to parse the group wire format and
+    // treat group fields as unknown fields.
+    TYPE_GROUP = 10;
+    TYPE_MESSAGE = 11;  // Length-delimited aggregate.
+
+    // New in version 2.
+    TYPE_BYTES = 12;
+    TYPE_UINT32 = 13;
+    TYPE_ENUM = 14;
+    TYPE_SFIXED32 = 15;
+    TYPE_SFIXED64 = 16;
+    TYPE_SINT32 = 17;  // Uses ZigZag encoding.
+    TYPE_SINT64 = 18;  // Uses ZigZag encoding.
+  }
+
+  enum Label {
+    // 0 is reserved for errors
+    LABEL_OPTIONAL = 1;
+    LABEL_REQUIRED = 2;
+    LABEL_REPEATED = 3;
+  }
+
+  optional string name = 1;
+  optional int32 number = 3;
+  optional Label label = 4;
+
+  // If type_name is set, this need not be set.  If both this and type_name
+  // are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
+  optional Type type = 5;
+
+  // For message and enum types, this is the name of the type.  If the name
+  // starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
+  // rules are used to find the type (i.e. first the nested types within this
+  // message are searched, then within the parent, on up to the root
+  // namespace).
+  optional string type_name = 6;
+
+  // For extensions, this is the name of the type being extended.  It is
+  // resolved in the same manner as type_name.
+  optional string extendee = 2;
+
+  // For numeric types, contains the original text representation of the value.
+  // For booleans, "true" or "false".
+  // For strings, contains the default text contents (not escaped in any way).
+  // For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
+  // TODO(kenton):  Base-64 encode?
+  optional string default_value = 7;
+
+  // If set, gives the index of a oneof in the containing type's oneof_decl
+  // list.  This field is a member of that oneof.
+  optional int32 oneof_index = 9;
+
+  // JSON name of this field. The value is set by protocol compiler. If the
+  // user has set a "json_name" option on this field, that option's value
+  // will be used. Otherwise, it's deduced from the field's name by converting
+  // it to camelCase.
+  optional string json_name = 10;
+
+  optional FieldOptions options = 8;
+}
+
+// Describes a oneof.
+message OneofDescriptorProto {
+  optional string name = 1;
+  optional OneofOptions options = 2;
+}
+
+// Describes an enum type.
+message EnumDescriptorProto {
+  optional string name = 1;
+
+  repeated EnumValueDescriptorProto value = 2;
+
+  optional EnumOptions options = 3;
+
+  // Range of reserved numeric values. Reserved values may not be used by
+  // entries in the same enum. Reserved ranges may not overlap.
+  //
+  // Note that this is distinct from DescriptorProto.ReservedRange in that it
+  // is inclusive such that it can appropriately represent the entire int32
+  // domain.
+  message EnumReservedRange {
+    optional int32 start = 1;  // Inclusive.
+    optional int32 end = 2;    // Inclusive.
+  }
+
+  // Range of reserved numeric values. Reserved numeric values may not be used
+  // by enum values in the same enum declaration. Reserved ranges may not
+  // overlap.
+  repeated EnumReservedRange reserved_range = 4;
+
+  // Reserved enum value names, which may not be reused. A given name may only
+  // be reserved once.
+  repeated string reserved_name = 5;
+}
+
+// Describes a value within an enum.
+message EnumValueDescriptorProto {
+  optional string name = 1;
+  optional int32 number = 2;
+
+  optional EnumValueOptions options = 3;
+}
+
+// Describes a service.
+message ServiceDescriptorProto {
+  optional string name = 1;
+  repeated MethodDescriptorProto method = 2;
+
+  optional ServiceOptions options = 3;
+}
+
+// Describes a method of a service.
+message MethodDescriptorProto {
+  optional string name = 1;
+
+  // Input and output type names.  These are resolved in the same way as
+  // FieldDescriptorProto.type_name, but must refer to a message type.
+  optional string input_type = 2;
+  optional string output_type = 3;
+
+  optional MethodOptions options = 4;
+
+  // Identifies if client streams multiple client messages
+  optional bool client_streaming = 5 [default = false];
+  // Identifies if server streams multiple server messages
+  optional bool server_streaming = 6 [default = false];
+}
+
+
+// ===================================================================
+// Options
+
+// Each of the definitions above may have "options" attached.  These are
+// just annotations which may cause code to be generated slightly differently
+// or may contain hints for code that manipulates protocol messages.
+//
+// Clients may define custom options as extensions of the *Options messages.
+// These extensions may not yet be known at parsing time, so the parser cannot
+// store the values in them.  Instead it stores them in a field in the *Options
+// message called uninterpreted_option. This field must have the same name
+// across all *Options messages. We then use this field to populate the
+// extensions when we build a descriptor, at which point all protos have been
+// parsed and so all extensions are known.
+//
+// Extension numbers for custom options may be chosen as follows:
+// * For options which will only be used within a single application or
+//   organization, or for experimental options, use field numbers 50000
+//   through 99999.  It is up to you to ensure that you do not use the
+//   same number for multiple options.
+// * For options which will be published and used publicly by multiple
+//   independent entities, e-mail protobuf-global-extension-registry@google.com
+//   to reserve extension numbers. Simply provide your project name (e.g.
+//   Objective-C plugin) and your project website (if available) -- there's no
+//   need to explain how you intend to use them. Usually you only need one
+//   extension number. You can declare multiple options with only one extension
+//   number by putting them in a sub-message. See the Custom Options section of
+//   the docs for examples:
+//   https://developers.google.com/protocol-buffers/docs/proto#options
+//   If this turns out to be popular, a web service will be set up
+//   to automatically assign option numbers.
+
+message FileOptions {
+
+  // Sets the Java package where classes generated from this .proto will be
+  // placed.  By default, the proto package is used, but this is often
+  // inappropriate because proto packages do not normally start with backwards
+  // domain names.
+  optional string java_package = 1;
+
+
+  // If set, all the classes from the .proto file are wrapped in a single
+  // outer class with the given name.  This applies to both Proto1
+  // (equivalent to the old "--one_java_file" option) and Proto2 (where
+  // a .proto always translates to a single class, but you may want to
+  // explicitly choose the class name).
+  optional string java_outer_classname = 8;
+
+  // If set true, then the Java code generator will generate a separate .java
+  // file for each top-level message, enum, and service defined in the .proto
+  // file.  Thus, these types will *not* be nested inside the outer class
+  // named by java_outer_classname.  However, the outer class will still be
+  // generated to contain the file's getDescriptor() method as well as any
+  // top-level extensions defined in the file.
+  optional bool java_multiple_files = 10 [default = false];
+
+  // This option does nothing.
+  optional bool java_generate_equals_and_hash = 20 [deprecated=true];
+
+  // If set true, then the Java2 code generator will generate code that
+  // throws an exception whenever an attempt is made to assign a non-UTF-8
+  // byte sequence to a string field.
+  // Message reflection will do the same.
+  // However, an extension field still accepts non-UTF-8 byte sequences.
+  // This option has no effect on when used with the lite runtime.
+  optional bool java_string_check_utf8 = 27 [default = false];
+
+
+  // Generated classes can be optimized for speed or code size.
+  enum OptimizeMode {
+    SPEED = 1;         // Generate complete code for parsing, serialization,
+                       // etc.
+    CODE_SIZE = 2;     // Use ReflectionOps to implement these methods.
+    LITE_RUNTIME = 3;  // Generate code using MessageLite and the lite runtime.
+  }
+  optional OptimizeMode optimize_for = 9 [default = SPEED];
+
+  // Sets the Go package where structs generated from this .proto will be
+  // placed. If omitted, the Go package will be derived from the following:
+  //   - The basename of the package import path, if provided.
+  //   - Otherwise, the package statement in the .proto file, if present.
+  //   - Otherwise, the basename of the .proto file, without extension.
+  optional string go_package = 11;
+
+
+
+
+  // Should generic services be generated in each language?  "Generic" services
+  // are not specific to any particular RPC system.  They are generated by the
+  // main code generators in each language (without additional plugins).
+  // Generic services were the only kind of service generation supported by
+  // early versions of google.protobuf.
+  //
+  // Generic services are now considered deprecated in favor of using plugins
+  // that generate code specific to your particular RPC system.  Therefore,
+  // these default to false.  Old code which depends on generic services should
+  // explicitly set them to true.
+  optional bool cc_generic_services = 16 [default = false];
+  optional bool java_generic_services = 17 [default = false];
+  optional bool py_generic_services = 18 [default = false];
+  optional bool php_generic_services = 42 [default = false];
+
+  // Is this file deprecated?
+  // Depending on the target platform, this can emit Deprecated annotations
+  // for everything in the file, or it will be completely ignored; in the very
+  // least, this is a formalization for deprecating files.
+  optional bool deprecated = 23 [default = false];
+
+  // Enables the use of arenas for the proto messages in this file. This applies
+  // only to generated classes for C++.
+  optional bool cc_enable_arenas = 31 [default = false];
+
+
+  // Sets the objective c class prefix which is prepended to all objective c
+  // generated classes from this .proto. There is no default.
+  optional string objc_class_prefix = 36;
+
+  // Namespace for generated classes; defaults to the package.
+  optional string csharp_namespace = 37;
+
+  // By default Swift generators will take the proto package and CamelCase it
+  // replacing '.' with underscore and use that to prefix the types/symbols
+  // defined. When this options is provided, they will use this value instead
+  // to prefix the types/symbols defined.
+  optional string swift_prefix = 39;
+
+  // Sets the php class prefix which is prepended to all php generated classes
+  // from this .proto. Default is empty.
+  optional string php_class_prefix = 40;
+
+  // Use this option to change the namespace of php generated classes. Default
+  // is empty. When this option is empty, the package name will be used for
+  // determining the namespace.
+  optional string php_namespace = 41;
+
+  // Use this option to change the namespace of php generated metadata classes.
+  // Default is empty. When this option is empty, the proto file name will be
+  // used for determining the namespace.
+  optional string php_metadata_namespace = 44;
+
+  // Use this option to change the package of ruby generated classes. Default
+  // is empty. When this option is not set, the package name will be used for
+  // determining the ruby package.
+  optional string ruby_package = 45;
+
+
+  // The parser stores options it doesn't recognize here.
+  // See the documentation for the "Options" section above.
+  repeated UninterpretedOption uninterpreted_option = 999;
+
+  // Clients can define custom options in extensions of this message.
+  // See the documentation for the "Options" section above.
+  extensions 1000 to max;
+
+  reserved 38;
+}
+
+message MessageOptions {
+  // Set true to use the old proto1 MessageSet wire format for extensions.
+  // This is provided for backwards-compatibility with the MessageSet wire
+  // format.  You should not use this for any other reason:  It's less
+  // efficient, has fewer features, and is more complicated.
+  //
+  // The message must be defined exactly as follows:
+  //   message Foo {
+  //     option message_set_wire_format = true;
+  //     extensions 4 to max;
+  //   }
+  // Note that the message cannot have any defined fields; MessageSets only
+  // have extensions.
+  //
+  // All extensions of your type must be singular messages; e.g. they cannot
+  // be int32s, enums, or repeated messages.
+  //
+  // Because this is an option, the above two restrictions are not enforced by
+  // the protocol compiler.
+  optional bool message_set_wire_format = 1 [default = false];
+
+  // Disables the generation of the standard "descriptor()" accessor, which can
+  // conflict with a field of the same name.  This is meant to make migration
+  // from proto1 easier; new code should avoid fields named "descriptor".
+  optional bool no_standard_descriptor_accessor = 2 [default = false];
+
+  // Is this message deprecated?
+  // Depending on the target platform, this can emit Deprecated annotations
+  // for the message, or it will be completely ignored; in the very least,
+  // this is a formalization for deprecating messages.
+  optional bool deprecated = 3 [default = false];
+
+  // Whether the message is an automatically generated map entry type for the
+  // maps field.
+  //
+  // For maps fields:
+  //     map<KeyType, ValueType> map_field = 1;
+  // The parsed descriptor looks like:
+  //     message MapFieldEntry {
+  //         option map_entry = true;
+  //         optional KeyType key = 1;
+  //         optional ValueType value = 2;
+  //     }
+  //     repeated MapFieldEntry map_field = 1;
+  //
+  // Implementations may choose not to generate the map_entry=true message, but
+  // use a native map in the target language to hold the keys and values.
+  // The reflection APIs in such implementations still need to work as
+  // if the field is a repeated message field.
+  //
+  // NOTE: Do not set the option in .proto files. Always use the maps syntax
+  // instead. The option should only be implicitly set by the proto compiler
+  // parser.
+  optional bool map_entry = 7;
+
+  reserved 8;  // javalite_serializable
+  reserved 9;  // javanano_as_lite
+
+
+  // The parser stores options it doesn't recognize here. See above.
+  repeated UninterpretedOption uninterpreted_option = 999;
+
+  // Clients can define custom options in extensions of this message. See above.
+  extensions 1000 to max;
+}
+
+message FieldOptions {
+  // The ctype option instructs the C++ code generator to use a different
+  // representation of the field than it normally would.  See the specific
+  // options below.  This option is not yet implemented in the open source
+  // release -- sorry, we'll try to include it in a future version!
+  optional CType ctype = 1 [default = STRING];
+  enum CType {
+    // Default mode.
+    STRING = 0;
+
+    CORD = 1;
+
+    STRING_PIECE = 2;
+  }
+  // The packed option can be enabled for repeated primitive fields to enable
+  // a more efficient representation on the wire. Rather than repeatedly
+  // writing the tag and type for each element, the entire array is encoded as
+  // a single length-delimited blob. In proto3, only explicit setting it to
+  // false will avoid using packed encoding.
+  optional bool packed = 2;
+
+  // The jstype option determines the JavaScript type used for values of the
+  // field.  The option is permitted only for 64 bit integral and fixed types
+  // (int64, uint64, sint64, fixed64, sfixed64).  A field with jstype JS_STRING
+  // is represented as JavaScript string, which avoids loss of precision that
+  // can happen when a large value is converted to a floating point JavaScript.
+  // Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
+  // use the JavaScript "number" type.  The behavior of the default option
+  // JS_NORMAL is implementation dependent.
+  //
+  // This option is an enum to permit additional types to be added, e.g.
+  // goog.math.Integer.
+  optional JSType jstype = 6 [default = JS_NORMAL];
+  enum JSType {
+    // Use the default type.
+    JS_NORMAL = 0;
+
+    // Use JavaScript strings.
+    JS_STRING = 1;
+
+    // Use JavaScript numbers.
+    JS_NUMBER = 2;
+  }
+
+  // Should this field be parsed lazily?  Lazy applies only to message-type
+  // fields.  It means that when the outer message is initially parsed, the
+  // inner message's contents will not be parsed but instead stored in encoded
+  // form.  The inner message will actually be parsed when it is first accessed.
+  //
+  // This is only a hint.  Implementations are free to choose whether to use
+  // eager or lazy parsing regardless of the value of this option.  However,
+  // setting this option true suggests that the protocol author believes that
+  // using lazy parsing on this field is worth the additional bookkeeping
+  // overhead typically needed to implement it.
+  //
+  // This option does not affect the public interface of any generated code;
+  // all method signatures remain the same.  Furthermore, thread-safety of the
+  // interface is not affected by this option; const methods remain safe to
+  // call from multiple threads concurrently, while non-const methods continue
+  // to require exclusive access.
+  //
+  //
+  // Note that implementations may choose not to check required fields within
+  // a lazy sub-message.  That is, calling IsInitialized() on the outer message
+  // may return true even if the inner message has missing required fields.
+  // This is necessary because otherwise the inner message would have to be
+  // parsed in order to perform the check, defeating the purpose of lazy
+  // parsing.  An implementation which chooses not to check required fields
+  // must be consistent about it.  That is, for any particular sub-message, the
+  // implementation must either *always* check its required fields, or *never*
+  // check its required fields, regardless of whether or not the message has
+  // been parsed.
+  optional bool lazy = 5 [default = false];
+
+  // Is this field deprecated?
+  // Depending on the target platform, this can emit Deprecated annotations
+  // for accessors, or it will be completely ignored; in the very least, this
+  // is a formalization for deprecating fields.
+  optional bool deprecated = 3 [default = false];
+
+  // For Google-internal migration only. Do not use.
+  optional bool weak = 10 [default = false];
+
+
+  // The parser stores options it doesn't recognize here. See above.
+  repeated UninterpretedOption uninterpreted_option = 999;
+
+  // Clients can define custom options in extensions of this message. See above.
+  extensions 1000 to max;
+
+  reserved 4;  // removed jtype
+}
+
+message OneofOptions {
+  // The parser stores options it doesn't recognize here. See above.
+  repeated UninterpretedOption uninterpreted_option = 999;
+
+  // Clients can define custom options in extensions of this message. See above.
+  extensions 1000 to max;
+}
+
+message EnumOptions {
+
+  // Set this option to true to allow mapping different tag names to the same
+  // value.
+  optional bool allow_alias = 2;
+
+  // Is this enum deprecated?
+  // Depending on the target platform, this can emit Deprecated annotations
+  // for the enum, or it will be completely ignored; in the very least, this
+  // is a formalization for deprecating enums.
+  optional bool deprecated = 3 [default = false];
+
+  reserved 5;  // javanano_as_lite
+
+  // The parser stores options it doesn't recognize here. See above.
+  repeated UninterpretedOption uninterpreted_option = 999;
+
+  // Clients can define custom options in extensions of this message. See above.
+  extensions 1000 to max;
+}
+
+message EnumValueOptions {
+  // Is this enum value deprecated?
+  // Depending on the target platform, this can emit Deprecated annotations
+  // for the enum value, or it will be completely ignored; in the very least,
+  // this is a formalization for deprecating enum values.
+  optional bool deprecated = 1 [default = false];
+
+  // The parser stores options it doesn't recognize here. See above.
+  repeated UninterpretedOption uninterpreted_option = 999;
+
+  // Clients can define custom options in extensions of this message. See above.
+  extensions 1000 to max;
+}
+
+message ServiceOptions {
+
+  // Note:  Field numbers 1 through 32 are reserved for Google's internal RPC
+  //   framework.  We apologize for hoarding these numbers to ourselves, but
+  //   we were already using them long before we decided to release Protocol
+  //   Buffers.
+
+  // Is this service deprecated?
+  // Depending on the target platform, this can emit Deprecated annotations
+  // for the service, or it will be completely ignored; in the very least,
+  // this is a formalization for deprecating services.
+  optional bool deprecated = 33 [default = false];
+
+  // The parser stores options it doesn't recognize here. See above.
+  repeated UninterpretedOption uninterpreted_option = 999;
+
+  // Clients can define custom options in extensions of this message. See above.
+  extensions 1000 to max;
+}
+
+message MethodOptions {
+
+  // Note:  Field numbers 1 through 32 are reserved for Google's internal RPC
+  //   framework.  We apologize for hoarding these numbers to ourselves, but
+  //   we were already using them long before we decided to release Protocol
+  //   Buffers.
+
+  // Is this method deprecated?
+  // Depending on the target platform, this can emit Deprecated annotations
+  // for the method, or it will be completely ignored; in the very least,
+  // this is a formalization for deprecating methods.
+  optional bool deprecated = 33 [default = false];
+
+  // Is this method side-effect-free (or safe in HTTP parlance), or idempotent,
+  // or neither? HTTP based RPC implementation may choose GET verb for safe
+  // methods, and PUT verb for idempotent methods instead of the default POST.
+  enum IdempotencyLevel {
+    IDEMPOTENCY_UNKNOWN = 0;
+    NO_SIDE_EFFECTS = 1;  // implies idempotent
+    IDEMPOTENT = 2;       // idempotent, but may have side effects
+  }
+  optional IdempotencyLevel idempotency_level = 34
+      [default = IDEMPOTENCY_UNKNOWN];
+
+  // The parser stores options it doesn't recognize here. See above.
+  repeated UninterpretedOption uninterpreted_option = 999;
+
+  // Clients can define custom options in extensions of this message. See above.
+  extensions 1000 to max;
+}
+
+
+// A message representing a option the parser does not recognize. This only
+// appears in options protos created by the compiler::Parser class.
+// DescriptorPool resolves these when building Descriptor objects. Therefore,
+// options protos in descriptor objects (e.g. returned by Descriptor::options(),
+// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
+// in them.
+message UninterpretedOption {
+  // The name of the uninterpreted option.  Each string represents a segment in
+  // a dot-separated name.  is_extension is true iff a segment represents an
+  // extension (denoted with parentheses in options specs in .proto files).
+  // E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents
+  // "foo.(bar.baz).qux".
+  message NamePart {
+    required string name_part = 1;
+    required bool is_extension = 2;
+  }
+  repeated NamePart name = 2;
+
+  // The value of the uninterpreted option, in whatever type the tokenizer
+  // identified it as during parsing. Exactly one of these should be set.
+  optional string identifier_value = 3;
+  optional uint64 positive_int_value = 4;
+  optional int64 negative_int_value = 5;
+  optional double double_value = 6;
+  optional bytes string_value = 7;
+  optional string aggregate_value = 8;
+}
+
+// ===================================================================
+// Optional source code info
+
+// Encapsulates information about the original source file from which a
+// FileDescriptorProto was generated.
+message SourceCodeInfo {
+  // A Location identifies a piece of source code in a .proto file which
+  // corresponds to a particular definition.  This information is intended
+  // to be useful to IDEs, code indexers, documentation generators, and similar
+  // tools.
+  //
+  // For example, say we have a file like:
+  //   message Foo {
+  //     optional string foo = 1;
+  //   }
+  // Let's look at just the field definition:
+  //   optional string foo = 1;
+  //   ^       ^^     ^^  ^  ^^^
+  //   a       bc     de  f  ghi
+  // We have the following locations:
+  //   span   path               represents
+  //   [a,i)  [ 4, 0, 2, 0 ]     The whole field definition.
+  //   [a,b)  [ 4, 0, 2, 0, 4 ]  The label (optional).
+  //   [c,d)  [ 4, 0, 2, 0, 5 ]  The type (string).
+  //   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
+  //   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
+  //
+  // Notes:
+  // - A location may refer to a repeated field itself (i.e. not to any
+  //   particular index within it).  This is used whenever a set of elements are
+  //   logically enclosed in a single code segment.  For example, an entire
+  //   extend block (possibly containing multiple extension definitions) will
+  //   have an outer location whose path refers to the "extensions" repeated
+  //   field without an index.
+  // - Multiple locations may have the same path.  This happens when a single
+  //   logical declaration is spread out across multiple places.  The most
+  //   obvious example is the "extend" block again -- there may be multiple
+  //   extend blocks in the same scope, each of which will have the same path.
+  // - A location's span is not always a subset of its parent's span.  For
+  //   example, the "extendee" of an extension declaration appears at the
+  //   beginning of the "extend" block and is shared by all extensions within
+  //   the block.
+  // - Just because a location's span is a subset of some other location's span
+  //   does not mean that it is a descendant.  For example, a "group" defines
+  //   both a type and a field in a single declaration.  Thus, the locations
+  //   corresponding to the type and field and their components will overlap.
+  // - Code which tries to interpret locations should probably be designed to
+  //   ignore those that it doesn't understand, as more types of locations could
+  //   be recorded in the future.
+  repeated Location location = 1;
+  message Location {
+    // Identifies which part of the FileDescriptorProto was defined at this
+    // location.
+    //
+    // Each element is a field number or an index.  They form a path from
+    // the root FileDescriptorProto to the place where the definition.  For
+    // example, this path:
+    //   [ 4, 3, 2, 7, 1 ]
+    // refers to:
+    //   file.message_type(3)  // 4, 3
+    //       .field(7)         // 2, 7
+    //       .name()           // 1
+    // This is because FileDescriptorProto.message_type has field number 4:
+    //   repeated DescriptorProto message_type = 4;
+    // and DescriptorProto.field has field number 2:
+    //   repeated FieldDescriptorProto field = 2;
+    // and FieldDescriptorProto.name has field number 1:
+    //   optional string name = 1;
+    //
+    // Thus, the above path gives the location of a field name.  If we removed
+    // the last element:
+    //   [ 4, 3, 2, 7 ]
+    // this path refers to the whole field declaration (from the beginning
+    // of the label to the terminating semicolon).
+    repeated int32 path = 1 [packed = true];
+
+    // Always has exactly three or four elements: start line, start column,
+    // end line (optional, otherwise assumed same as start line), end column.
+    // These are packed into a single field for efficiency.  Note that line
+    // and column numbers are zero-based -- typically you will want to add
+    // 1 to each before displaying to a user.
+    repeated int32 span = 2 [packed = true];
+
+    // If this SourceCodeInfo represents a complete declaration, these are any
+    // comments appearing before and after the declaration which appear to be
+    // attached to the declaration.
+    //
+    // A series of line comments appearing on consecutive lines, with no other
+    // tokens appearing on those lines, will be treated as a single comment.
+    //
+    // leading_detached_comments will keep paragraphs of comments that appear
+    // before (but not connected to) the current element. Each paragraph,
+    // separated by empty lines, will be one comment element in the repeated
+    // field.
+    //
+    // Only the comment content is provided; comment markers (e.g. //) are
+    // stripped out.  For block comments, leading whitespace and an asterisk
+    // will be stripped from the beginning of each line other than the first.
+    // Newlines are included in the output.
+    //
+    // Examples:
+    //
+    //   optional int32 foo = 1;  // Comment attached to foo.
+    //   // Comment attached to bar.
+    //   optional int32 bar = 2;
+    //
+    //   optional string baz = 3;
+    //   // Comment attached to baz.
+    //   // Another line attached to baz.
+    //
+    //   // Comment attached to qux.
+    //   //
+    //   // Another line attached to qux.
+    //   optional double qux = 4;
+    //
+    //   // Detached comment for corge. This is not leading or trailing comments
+    //   // to qux or corge because there are blank lines separating it from
+    //   // both.
+    //
+    //   // Detached comment for corge paragraph 2.
+    //
+    //   optional string corge = 5;
+    //   /* Block comment attached
+    //    * to corge.  Leading asterisks
+    //    * will be removed. */
+    //   /* Block comment attached to
+    //    * grault. */
+    //   optional int32 grault = 6;
+    //
+    //   // ignored detached comments.
+    optional string leading_comments = 3;
+    optional string trailing_comments = 4;
+    repeated string leading_detached_comments = 6;
+  }
+}
+
+// Describes the relationship between generated code and its original source
+// file. A GeneratedCodeInfo message is associated with only one generated
+// source file, but may contain references to different source .proto files.
+message GeneratedCodeInfo {
+  // An Annotation connects some span of text in generated code to an element
+  // of its generating .proto file.
+  repeated Annotation annotation = 1;
+  message Annotation {
+    // Identifies the element in the original source .proto file. This field
+    // is formatted the same as SourceCodeInfo.Location.path.
+    repeated int32 path = 1 [packed = true];
+
+    // Identifies the filesystem path to the original source .proto.
+    optional string source_file = 2;
+
+    // Identifies the starting offset in bytes in the generated code
+    // that relates to the identified object.
+    optional int32 begin = 3;
+
+    // Identifies the ending offset in bytes in the generated code that
+    // relates to the identified offset. The end offset should be one past
+    // the last relevant byte (so the length of the text = end - begin).
+    optional int32 end = 4;
+  }
+}
diff --git a/protoc-gen-go/doc.go b/protoc-gen-go/doc.go
new file mode 100644
index 0000000..0d6055d
--- /dev/null
+++ b/protoc-gen-go/doc.go
@@ -0,0 +1,51 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/*
+	A plugin for the Google protocol buffer compiler to generate Go code.
+	Run it by building this program and putting it in your path with the name
+		protoc-gen-go
+	That word 'go' at the end becomes part of the option string set for the
+	protocol compiler, so once the protocol compiler (protoc) is installed
+	you can run
+		protoc --go_out=output_directory input_directory/file.proto
+	to generate Go bindings for the protocol defined by file.proto.
+	With that input, the output will be written to
+		output_directory/file.pb.go
+
+	The generated code is documented in the package comment for
+	the library.
+
+	See the README and documentation for protocol buffers to learn more:
+		https://developers.google.com/protocol-buffers/
+
+*/
+package documentation
diff --git a/protoc-gen-go/generator/generator.go b/protoc-gen-go/generator/generator.go
new file mode 100644
index 0000000..63b8ca0
--- /dev/null
+++ b/protoc-gen-go/generator/generator.go
@@ -0,0 +1,2808 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/*
+	The code generator for the plugin for the Google protocol buffer compiler.
+	It generates Go code from the protocol buffer description files read by the
+	main routine.
+*/
+package generator
+
+import (
+	"bufio"
+	"bytes"
+	"compress/gzip"
+	"crypto/sha256"
+	"encoding/hex"
+	"fmt"
+	"go/ast"
+	"go/build"
+	"go/parser"
+	"go/printer"
+	"go/token"
+	"log"
+	"os"
+	"path"
+	"sort"
+	"strconv"
+	"strings"
+	"unicode"
+	"unicode/utf8"
+
+	"github.com/golang/protobuf/proto"
+	"github.com/golang/protobuf/protoc-gen-go/generator/internal/remap"
+
+	"github.com/golang/protobuf/protoc-gen-go/descriptor"
+	plugin "github.com/golang/protobuf/protoc-gen-go/plugin"
+)
+
+// generatedCodeVersion indicates a version of the generated code.
+// It is incremented whenever an incompatibility between the generated code and
+// proto package is introduced; the generated code references
+// a constant, proto.ProtoPackageIsVersionN (where N is generatedCodeVersion).
+const generatedCodeVersion = 3
+
+// A Plugin provides functionality to add to the output during Go code generation,
+// such as to produce RPC stubs.
+type Plugin interface {
+	// Name identifies the plugin.
+	Name() string
+	// Init is called once after data structures are built but before
+	// code generation begins.
+	Init(g *Generator)
+	// Generate produces the code generated by the plugin for this file,
+	// except for the imports, by calling the generator's methods P, In, and Out.
+	Generate(file *FileDescriptor)
+	// GenerateImports produces the import declarations for this file.
+	// It is called after Generate.
+	GenerateImports(file *FileDescriptor)
+}
+
+var plugins []Plugin
+
+// RegisterPlugin installs a (second-order) plugin to be run when the Go output is generated.
+// It is typically called during initialization.
+func RegisterPlugin(p Plugin) {
+	plugins = append(plugins, p)
+}
+
+// A GoImportPath is the import path of a Go package. e.g., "google.golang.org/genproto/protobuf".
+type GoImportPath string
+
+func (p GoImportPath) String() string { return strconv.Quote(string(p)) }
+
+// A GoPackageName is the name of a Go package. e.g., "protobuf".
+type GoPackageName string
+
+// Each type we import as a protocol buffer (other than FileDescriptorProto) needs
+// a pointer to the FileDescriptorProto that represents it.  These types achieve that
+// wrapping by placing each Proto inside a struct with the pointer to its File. The
+// structs have the same names as their contents, with "Proto" removed.
+// FileDescriptor is used to store the things that it points to.
+
+// The file and package name method are common to messages and enums.
+type common struct {
+	file *FileDescriptor // File this object comes from.
+}
+
+// GoImportPath is the import path of the Go package containing the type.
+func (c *common) GoImportPath() GoImportPath {
+	return c.file.importPath
+}
+
+func (c *common) File() *FileDescriptor { return c.file }
+
+func fileIsProto3(file *descriptor.FileDescriptorProto) bool {
+	return file.GetSyntax() == "proto3"
+}
+
+func (c *common) proto3() bool { return fileIsProto3(c.file.FileDescriptorProto) }
+
+// Descriptor represents a protocol buffer message.
+type Descriptor struct {
+	common
+	*descriptor.DescriptorProto
+	parent   *Descriptor            // The containing message, if any.
+	nested   []*Descriptor          // Inner messages, if any.
+	enums    []*EnumDescriptor      // Inner enums, if any.
+	ext      []*ExtensionDescriptor // Extensions, if any.
+	typename []string               // Cached typename vector.
+	index    int                    // The index into the container, whether the file or another message.
+	path     string                 // The SourceCodeInfo path as comma-separated integers.
+	group    bool
+}
+
+// TypeName returns the elements of the dotted type name.
+// The package name is not part of this name.
+func (d *Descriptor) TypeName() []string {
+	if d.typename != nil {
+		return d.typename
+	}
+	n := 0
+	for parent := d; parent != nil; parent = parent.parent {
+		n++
+	}
+	s := make([]string, n)
+	for parent := d; parent != nil; parent = parent.parent {
+		n--
+		s[n] = parent.GetName()
+	}
+	d.typename = s
+	return s
+}
+
+// EnumDescriptor describes an enum. If it's at top level, its parent will be nil.
+// Otherwise it will be the descriptor of the message in which it is defined.
+type EnumDescriptor struct {
+	common
+	*descriptor.EnumDescriptorProto
+	parent   *Descriptor // The containing message, if any.
+	typename []string    // Cached typename vector.
+	index    int         // The index into the container, whether the file or a message.
+	path     string      // The SourceCodeInfo path as comma-separated integers.
+}
+
+// TypeName returns the elements of the dotted type name.
+// The package name is not part of this name.
+func (e *EnumDescriptor) TypeName() (s []string) {
+	if e.typename != nil {
+		return e.typename
+	}
+	name := e.GetName()
+	if e.parent == nil {
+		s = make([]string, 1)
+	} else {
+		pname := e.parent.TypeName()
+		s = make([]string, len(pname)+1)
+		copy(s, pname)
+	}
+	s[len(s)-1] = name
+	e.typename = s
+	return s
+}
+
+// Everything but the last element of the full type name, CamelCased.
+// The values of type Foo.Bar are call Foo_value1... not Foo_Bar_value1... .
+func (e *EnumDescriptor) prefix() string {
+	if e.parent == nil {
+		// If the enum is not part of a message, the prefix is just the type name.
+		return CamelCase(*e.Name) + "_"
+	}
+	typeName := e.TypeName()
+	return CamelCaseSlice(typeName[0:len(typeName)-1]) + "_"
+}
+
+// The integer value of the named constant in this enumerated type.
+func (e *EnumDescriptor) integerValueAsString(name string) string {
+	for _, c := range e.Value {
+		if c.GetName() == name {
+			return fmt.Sprint(c.GetNumber())
+		}
+	}
+	log.Fatal("cannot find value for enum constant")
+	return ""
+}
+
+// ExtensionDescriptor describes an extension. If it's at top level, its parent will be nil.
+// Otherwise it will be the descriptor of the message in which it is defined.
+type ExtensionDescriptor struct {
+	common
+	*descriptor.FieldDescriptorProto
+	parent *Descriptor // The containing message, if any.
+}
+
+// TypeName returns the elements of the dotted type name.
+// The package name is not part of this name.
+func (e *ExtensionDescriptor) TypeName() (s []string) {
+	name := e.GetName()
+	if e.parent == nil {
+		// top-level extension
+		s = make([]string, 1)
+	} else {
+		pname := e.parent.TypeName()
+		s = make([]string, len(pname)+1)
+		copy(s, pname)
+	}
+	s[len(s)-1] = name
+	return s
+}
+
+// DescName returns the variable name used for the generated descriptor.
+func (e *ExtensionDescriptor) DescName() string {
+	// The full type name.
+	typeName := e.TypeName()
+	// Each scope of the extension is individually CamelCased, and all are joined with "_" with an "E_" prefix.
+	for i, s := range typeName {
+		typeName[i] = CamelCase(s)
+	}
+	return "E_" + strings.Join(typeName, "_")
+}
+
+// ImportedDescriptor describes a type that has been publicly imported from another file.
+type ImportedDescriptor struct {
+	common
+	o Object
+}
+
+func (id *ImportedDescriptor) TypeName() []string { return id.o.TypeName() }
+
+// FileDescriptor describes an protocol buffer descriptor file (.proto).
+// It includes slices of all the messages and enums defined within it.
+// Those slices are constructed by WrapTypes.
+type FileDescriptor struct {
+	*descriptor.FileDescriptorProto
+	desc []*Descriptor          // All the messages defined in this file.
+	enum []*EnumDescriptor      // All the enums defined in this file.
+	ext  []*ExtensionDescriptor // All the top-level extensions defined in this file.
+	imp  []*ImportedDescriptor  // All types defined in files publicly imported by this file.
+
+	// Comments, stored as a map of path (comma-separated integers) to the comment.
+	comments map[string]*descriptor.SourceCodeInfo_Location
+
+	// The full list of symbols that are exported,
+	// as a map from the exported object to its symbols.
+	// This is used for supporting public imports.
+	exported map[Object][]symbol
+
+	importPath  GoImportPath  // Import path of this file's package.
+	packageName GoPackageName // Name of this file's Go package.
+
+	proto3 bool // whether to generate proto3 code for this file
+}
+
+// VarName is the variable name we'll use in the generated code to refer
+// to the compressed bytes of this descriptor. It is not exported, so
+// it is only valid inside the generated package.
+func (d *FileDescriptor) VarName() string {
+	h := sha256.Sum256([]byte(d.GetName()))
+	return fmt.Sprintf("fileDescriptor_%s", hex.EncodeToString(h[:8]))
+}
+
+// goPackageOption interprets the file's go_package option.
+// If there is no go_package, it returns ("", "", false).
+// If there's a simple name, it returns ("", pkg, true).
+// If the option implies an import path, it returns (impPath, pkg, true).
+func (d *FileDescriptor) goPackageOption() (impPath GoImportPath, pkg GoPackageName, ok bool) {
+	opt := d.GetOptions().GetGoPackage()
+	if opt == "" {
+		return "", "", false
+	}
+	// A semicolon-delimited suffix delimits the import path and package name.
+	sc := strings.Index(opt, ";")
+	if sc >= 0 {
+		return GoImportPath(opt[:sc]), cleanPackageName(opt[sc+1:]), true
+	}
+	// The presence of a slash implies there's an import path.
+	slash := strings.LastIndex(opt, "/")
+	if slash >= 0 {
+		return GoImportPath(opt), cleanPackageName(opt[slash+1:]), true
+	}
+	return "", cleanPackageName(opt), true
+}
+
+// goFileName returns the output name for the generated Go file.
+func (d *FileDescriptor) goFileName(pathType pathType) string {
+	name := *d.Name
+	if ext := path.Ext(name); ext == ".proto" || ext == ".protodevel" {
+		name = name[:len(name)-len(ext)]
+	}
+	name += ".pb.go"
+
+	if pathType == pathTypeSourceRelative {
+		return name
+	}
+
+	// Does the file have a "go_package" option?
+	// If it does, it may override the filename.
+	if impPath, _, ok := d.goPackageOption(); ok && impPath != "" {
+		// Replace the existing dirname with the declared import path.
+		_, name = path.Split(name)
+		name = path.Join(string(impPath), name)
+		return name
+	}
+
+	return name
+}
+
+func (d *FileDescriptor) addExport(obj Object, sym symbol) {
+	d.exported[obj] = append(d.exported[obj], sym)
+}
+
+// symbol is an interface representing an exported Go symbol.
+type symbol interface {
+	// GenerateAlias should generate an appropriate alias
+	// for the symbol from the named package.
+	GenerateAlias(g *Generator, filename string, pkg GoPackageName)
+}
+
+type messageSymbol struct {
+	sym                         string
+	hasExtensions, isMessageSet bool
+	oneofTypes                  []string
+}
+
+type getterSymbol struct {
+	name     string
+	typ      string
+	typeName string // canonical name in proto world; empty for proto.Message and similar
+	genType  bool   // whether typ contains a generated type (message/group/enum)
+}
+
+func (ms *messageSymbol) GenerateAlias(g *Generator, filename string, pkg GoPackageName) {
+	g.P("// ", ms.sym, " from public import ", filename)
+	g.P("type ", ms.sym, " = ", pkg, ".", ms.sym)
+	for _, name := range ms.oneofTypes {
+		g.P("type ", name, " = ", pkg, ".", name)
+	}
+}
+
+type enumSymbol struct {
+	name   string
+	proto3 bool // Whether this came from a proto3 file.
+}
+
+func (es enumSymbol) GenerateAlias(g *Generator, filename string, pkg GoPackageName) {
+	s := es.name
+	g.P("// ", s, " from public import ", filename)
+	g.P("type ", s, " = ", pkg, ".", s)
+	g.P("var ", s, "_name = ", pkg, ".", s, "_name")
+	g.P("var ", s, "_value = ", pkg, ".", s, "_value")
+}
+
+type constOrVarSymbol struct {
+	sym  string
+	typ  string // either "const" or "var"
+	cast string // if non-empty, a type cast is required (used for enums)
+}
+
+func (cs constOrVarSymbol) GenerateAlias(g *Generator, filename string, pkg GoPackageName) {
+	v := string(pkg) + "." + cs.sym
+	if cs.cast != "" {
+		v = cs.cast + "(" + v + ")"
+	}
+	g.P(cs.typ, " ", cs.sym, " = ", v)
+}
+
+// Object is an interface abstracting the abilities shared by enums, messages, extensions and imported objects.
+type Object interface {
+	GoImportPath() GoImportPath
+	TypeName() []string
+	File() *FileDescriptor
+}
+
+// Generator is the type whose methods generate the output, stored in the associated response structure.
+type Generator struct {
+	*bytes.Buffer
+
+	Request  *plugin.CodeGeneratorRequest  // The input.
+	Response *plugin.CodeGeneratorResponse // The output.
+
+	Param             map[string]string // Command-line parameters.
+	PackageImportPath string            // Go import path of the package we're generating code for
+	ImportPrefix      string            // String to prefix to imported package file names.
+	ImportMap         map[string]string // Mapping from .proto file name to import path
+
+	Pkg map[string]string // The names under which we import support packages
+
+	outputImportPath GoImportPath                   // Package we're generating code for.
+	allFiles         []*FileDescriptor              // All files in the tree
+	allFilesByName   map[string]*FileDescriptor     // All files by filename.
+	genFiles         []*FileDescriptor              // Those files we will generate output for.
+	file             *FileDescriptor                // The file we are compiling now.
+	packageNames     map[GoImportPath]GoPackageName // Imported package names in the current file.
+	usedPackages     map[GoImportPath]bool          // Packages used in current file.
+	usedPackageNames map[GoPackageName]bool         // Package names used in the current file.
+	addedImports     map[GoImportPath]bool          // Additional imports to emit.
+	typeNameToObject map[string]Object              // Key is a fully-qualified name in input syntax.
+	init             []string                       // Lines to emit in the init function.
+	indent           string
+	pathType         pathType // How to generate output filenames.
+	writeOutput      bool
+	annotateCode     bool                                       // whether to store annotations
+	annotations      []*descriptor.GeneratedCodeInfo_Annotation // annotations to store
+}
+
+type pathType int
+
+const (
+	pathTypeImport pathType = iota
+	pathTypeSourceRelative
+)
+
+// New creates a new generator and allocates the request and response protobufs.
+func New() *Generator {
+	g := new(Generator)
+	g.Buffer = new(bytes.Buffer)
+	g.Request = new(plugin.CodeGeneratorRequest)
+	g.Response = new(plugin.CodeGeneratorResponse)
+	return g
+}
+
+// Error reports a problem, including an error, and exits the program.
+func (g *Generator) Error(err error, msgs ...string) {
+	s := strings.Join(msgs, " ") + ":" + err.Error()
+	log.Print("protoc-gen-go: error:", s)
+	os.Exit(1)
+}
+
+// Fail reports a problem and exits the program.
+func (g *Generator) Fail(msgs ...string) {
+	s := strings.Join(msgs, " ")
+	log.Print("protoc-gen-go: error:", s)
+	os.Exit(1)
+}
+
+// CommandLineParameters breaks the comma-separated list of key=value pairs
+// in the parameter (a member of the request protobuf) into a key/value map.
+// It then sets file name mappings defined by those entries.
+func (g *Generator) CommandLineParameters(parameter string) {
+	g.Param = make(map[string]string)
+	for _, p := range strings.Split(parameter, ",") {
+		if i := strings.Index(p, "="); i < 0 {
+			g.Param[p] = ""
+		} else {
+			g.Param[p[0:i]] = p[i+1:]
+		}
+	}
+
+	g.ImportMap = make(map[string]string)
+	pluginList := "none" // Default list of plugin names to enable (empty means all).
+	for k, v := range g.Param {
+		switch k {
+		case "import_prefix":
+			g.ImportPrefix = v
+		case "import_path":
+			g.PackageImportPath = v
+		case "paths":
+			switch v {
+			case "import":
+				g.pathType = pathTypeImport
+			case "source_relative":
+				g.pathType = pathTypeSourceRelative
+			default:
+				g.Fail(fmt.Sprintf(`Unknown path type %q: want "import" or "source_relative".`, v))
+			}
+		case "plugins":
+			pluginList = v
+		case "annotate_code":
+			if v == "true" {
+				g.annotateCode = true
+			}
+		default:
+			if len(k) > 0 && k[0] == 'M' {
+				g.ImportMap[k[1:]] = v
+			}
+		}
+	}
+	if pluginList != "" {
+		// Amend the set of plugins.
+		enabled := make(map[string]bool)
+		for _, name := range strings.Split(pluginList, "+") {
+			enabled[name] = true
+		}
+		var nplugins []Plugin
+		for _, p := range plugins {
+			if enabled[p.Name()] {
+				nplugins = append(nplugins, p)
+			}
+		}
+		plugins = nplugins
+	}
+}
+
+// DefaultPackageName returns the package name printed for the object.
+// If its file is in a different package, it returns the package name we're using for this file, plus ".".
+// Otherwise it returns the empty string.
+func (g *Generator) DefaultPackageName(obj Object) string {
+	importPath := obj.GoImportPath()
+	if importPath == g.outputImportPath {
+		return ""
+	}
+	return string(g.GoPackageName(importPath)) + "."
+}
+
+// GoPackageName returns the name used for a package.
+func (g *Generator) GoPackageName(importPath GoImportPath) GoPackageName {
+	if name, ok := g.packageNames[importPath]; ok {
+		return name
+	}
+	name := cleanPackageName(baseName(string(importPath)))
+	for i, orig := 1, name; g.usedPackageNames[name] || isGoPredeclaredIdentifier[string(name)]; i++ {
+		name = orig + GoPackageName(strconv.Itoa(i))
+	}
+	g.packageNames[importPath] = name
+	g.usedPackageNames[name] = true
+	return name
+}
+
+// AddImport adds a package to the generated file's import section.
+// It returns the name used for the package.
+func (g *Generator) AddImport(importPath GoImportPath) GoPackageName {
+	g.addedImports[importPath] = true
+	return g.GoPackageName(importPath)
+}
+
+var globalPackageNames = map[GoPackageName]bool{
+	"fmt":   true,
+	"math":  true,
+	"proto": true,
+}
+
+// Create and remember a guaranteed unique package name. Pkg is the candidate name.
+// The FileDescriptor parameter is unused.
+func RegisterUniquePackageName(pkg string, f *FileDescriptor) string {
+	name := cleanPackageName(pkg)
+	for i, orig := 1, name; globalPackageNames[name]; i++ {
+		name = orig + GoPackageName(strconv.Itoa(i))
+	}
+	globalPackageNames[name] = true
+	return string(name)
+}
+
+var isGoKeyword = map[string]bool{
+	"break":       true,
+	"case":        true,
+	"chan":        true,
+	"const":       true,
+	"continue":    true,
+	"default":     true,
+	"else":        true,
+	"defer":       true,
+	"fallthrough": true,
+	"for":         true,
+	"func":        true,
+	"go":          true,
+	"goto":        true,
+	"if":          true,
+	"import":      true,
+	"interface":   true,
+	"map":         true,
+	"package":     true,
+	"range":       true,
+	"return":      true,
+	"select":      true,
+	"struct":      true,
+	"switch":      true,
+	"type":        true,
+	"var":         true,
+}
+
+var isGoPredeclaredIdentifier = map[string]bool{
+	"append":     true,
+	"bool":       true,
+	"byte":       true,
+	"cap":        true,
+	"close":      true,
+	"complex":    true,
+	"complex128": true,
+	"complex64":  true,
+	"copy":       true,
+	"delete":     true,
+	"error":      true,
+	"false":      true,
+	"float32":    true,
+	"float64":    true,
+	"imag":       true,
+	"int":        true,
+	"int16":      true,
+	"int32":      true,
+	"int64":      true,
+	"int8":       true,
+	"iota":       true,
+	"len":        true,
+	"make":       true,
+	"new":        true,
+	"nil":        true,
+	"panic":      true,
+	"print":      true,
+	"println":    true,
+	"real":       true,
+	"recover":    true,
+	"rune":       true,
+	"string":     true,
+	"true":       true,
+	"uint":       true,
+	"uint16":     true,
+	"uint32":     true,
+	"uint64":     true,
+	"uint8":      true,
+	"uintptr":    true,
+}
+
+func cleanPackageName(name string) GoPackageName {
+	name = strings.Map(badToUnderscore, name)
+	// Identifier must not be keyword or predeclared identifier: insert _.
+	if isGoKeyword[name] {
+		name = "_" + name
+	}
+	// Identifier must not begin with digit: insert _.
+	if r, _ := utf8.DecodeRuneInString(name); unicode.IsDigit(r) {
+		name = "_" + name
+	}
+	return GoPackageName(name)
+}
+
+// defaultGoPackage returns the package name to use,
+// derived from the import path of the package we're building code for.
+func (g *Generator) defaultGoPackage() GoPackageName {
+	p := g.PackageImportPath
+	if i := strings.LastIndex(p, "/"); i >= 0 {
+		p = p[i+1:]
+	}
+	return cleanPackageName(p)
+}
+
+// SetPackageNames sets the package name for this run.
+// The package name must agree across all files being generated.
+// It also defines unique package names for all imported files.
+func (g *Generator) SetPackageNames() {
+	g.outputImportPath = g.genFiles[0].importPath
+
+	defaultPackageNames := make(map[GoImportPath]GoPackageName)
+	for _, f := range g.genFiles {
+		if _, p, ok := f.goPackageOption(); ok {
+			defaultPackageNames[f.importPath] = p
+		}
+	}
+	for _, f := range g.genFiles {
+		if _, p, ok := f.goPackageOption(); ok {
+			// Source file: option go_package = "quux/bar";
+			f.packageName = p
+		} else if p, ok := defaultPackageNames[f.importPath]; ok {
+			// A go_package option in another file in the same package.
+			//
+			// This is a poor choice in general, since every source file should
+			// contain a go_package option. Supported mainly for historical
+			// compatibility.
+			f.packageName = p
+		} else if p := g.defaultGoPackage(); p != "" {
+			// Command-line: import_path=quux/bar.
+			//
+			// The import_path flag sets a package name for files which don't
+			// contain a go_package option.
+			f.packageName = p
+		} else if p := f.GetPackage(); p != "" {
+			// Source file: package quux.bar;
+			f.packageName = cleanPackageName(p)
+		} else {
+			// Source filename.
+			f.packageName = cleanPackageName(baseName(f.GetName()))
+		}
+	}
+
+	// Check that all files have a consistent package name and import path.
+	for _, f := range g.genFiles[1:] {
+		if a, b := g.genFiles[0].importPath, f.importPath; a != b {
+			g.Fail(fmt.Sprintf("inconsistent package import paths: %v, %v", a, b))
+		}
+		if a, b := g.genFiles[0].packageName, f.packageName; a != b {
+			g.Fail(fmt.Sprintf("inconsistent package names: %v, %v", a, b))
+		}
+	}
+
+	// Names of support packages. These never vary (if there are conflicts,
+	// we rename the conflicting package), so this could be removed someday.
+	g.Pkg = map[string]string{
+		"fmt":   "fmt",
+		"math":  "math",
+		"proto": "proto",
+	}
+}
+
+// WrapTypes walks the incoming data, wrapping DescriptorProtos, EnumDescriptorProtos
+// and FileDescriptorProtos into file-referenced objects within the Generator.
+// It also creates the list of files to generate and so should be called before GenerateAllFiles.
+func (g *Generator) WrapTypes() {
+	g.allFiles = make([]*FileDescriptor, 0, len(g.Request.ProtoFile))
+	g.allFilesByName = make(map[string]*FileDescriptor, len(g.allFiles))
+	genFileNames := make(map[string]bool)
+	for _, n := range g.Request.FileToGenerate {
+		genFileNames[n] = true
+	}
+	for _, f := range g.Request.ProtoFile {
+		fd := &FileDescriptor{
+			FileDescriptorProto: f,
+			exported:            make(map[Object][]symbol),
+			proto3:              fileIsProto3(f),
+		}
+		// The import path may be set in a number of ways.
+		if substitution, ok := g.ImportMap[f.GetName()]; ok {
+			// Command-line: M=foo.proto=quux/bar.
+			//
+			// Explicit mapping of source file to import path.
+			fd.importPath = GoImportPath(substitution)
+		} else if genFileNames[f.GetName()] && g.PackageImportPath != "" {
+			// Command-line: import_path=quux/bar.
+			//
+			// The import_path flag sets the import path for every file that
+			// we generate code for.
+			fd.importPath = GoImportPath(g.PackageImportPath)
+		} else if p, _, _ := fd.goPackageOption(); p != "" {
+			// Source file: option go_package = "quux/bar";
+			//
+			// The go_package option sets the import path. Most users should use this.
+			fd.importPath = p
+		} else {
+			// Source filename.
+			//
+			// Last resort when nothing else is available.
+			fd.importPath = GoImportPath(path.Dir(f.GetName()))
+		}
+		// We must wrap the descriptors before we wrap the enums
+		fd.desc = wrapDescriptors(fd)
+		g.buildNestedDescriptors(fd.desc)
+		fd.enum = wrapEnumDescriptors(fd, fd.desc)
+		g.buildNestedEnums(fd.desc, fd.enum)
+		fd.ext = wrapExtensions(fd)
+		extractComments(fd)
+		g.allFiles = append(g.allFiles, fd)
+		g.allFilesByName[f.GetName()] = fd
+	}
+	for _, fd := range g.allFiles {
+		fd.imp = wrapImported(fd, g)
+	}
+
+	g.genFiles = make([]*FileDescriptor, 0, len(g.Request.FileToGenerate))
+	for _, fileName := range g.Request.FileToGenerate {
+		fd := g.allFilesByName[fileName]
+		if fd == nil {
+			g.Fail("could not find file named", fileName)
+		}
+		g.genFiles = append(g.genFiles, fd)
+	}
+}
+
+// Scan the descriptors in this file.  For each one, build the slice of nested descriptors
+func (g *Generator) buildNestedDescriptors(descs []*Descriptor) {
+	for _, desc := range descs {
+		if len(desc.NestedType) != 0 {
+			for _, nest := range descs {
+				if nest.parent == desc {
+					desc.nested = append(desc.nested, nest)
+				}
+			}
+			if len(desc.nested) != len(desc.NestedType) {
+				g.Fail("internal error: nesting failure for", desc.GetName())
+			}
+		}
+	}
+}
+
+func (g *Generator) buildNestedEnums(descs []*Descriptor, enums []*EnumDescriptor) {
+	for _, desc := range descs {
+		if len(desc.EnumType) != 0 {
+			for _, enum := range enums {
+				if enum.parent == desc {
+					desc.enums = append(desc.enums, enum)
+				}
+			}
+			if len(desc.enums) != len(desc.EnumType) {
+				g.Fail("internal error: enum nesting failure for", desc.GetName())
+			}
+		}
+	}
+}
+
+// Construct the Descriptor
+func newDescriptor(desc *descriptor.DescriptorProto, parent *Descriptor, file *FileDescriptor, index int) *Descriptor {
+	d := &Descriptor{
+		common:          common{file},
+		DescriptorProto: desc,
+		parent:          parent,
+		index:           index,
+	}
+	if parent == nil {
+		d.path = fmt.Sprintf("%d,%d", messagePath, index)
+	} else {
+		d.path = fmt.Sprintf("%s,%d,%d", parent.path, messageMessagePath, index)
+	}
+
+	// The only way to distinguish a group from a message is whether
+	// the containing message has a TYPE_GROUP field that matches.
+	if parent != nil {
+		parts := d.TypeName()
+		if file.Package != nil {
+			parts = append([]string{*file.Package}, parts...)
+		}
+		exp := "." + strings.Join(parts, ".")
+		for _, field := range parent.Field {
+			if field.GetType() == descriptor.FieldDescriptorProto_TYPE_GROUP && field.GetTypeName() == exp {
+				d.group = true
+				break
+			}
+		}
+	}
+
+	for _, field := range desc.Extension {
+		d.ext = append(d.ext, &ExtensionDescriptor{common{file}, field, d})
+	}
+
+	return d
+}
+
+// Return a slice of all the Descriptors defined within this file
+func wrapDescriptors(file *FileDescriptor) []*Descriptor {
+	sl := make([]*Descriptor, 0, len(file.MessageType)+10)
+	for i, desc := range file.MessageType {
+		sl = wrapThisDescriptor(sl, desc, nil, file, i)
+	}
+	return sl
+}
+
+// Wrap this Descriptor, recursively
+func wrapThisDescriptor(sl []*Descriptor, desc *descriptor.DescriptorProto, parent *Descriptor, file *FileDescriptor, index int) []*Descriptor {
+	sl = append(sl, newDescriptor(desc, parent, file, index))
+	me := sl[len(sl)-1]
+	for i, nested := range desc.NestedType {
+		sl = wrapThisDescriptor(sl, nested, me, file, i)
+	}
+	return sl
+}
+
+// Construct the EnumDescriptor
+func newEnumDescriptor(desc *descriptor.EnumDescriptorProto, parent *Descriptor, file *FileDescriptor, index int) *EnumDescriptor {
+	ed := &EnumDescriptor{
+		common:              common{file},
+		EnumDescriptorProto: desc,
+		parent:              parent,
+		index:               index,
+	}
+	if parent == nil {
+		ed.path = fmt.Sprintf("%d,%d", enumPath, index)
+	} else {
+		ed.path = fmt.Sprintf("%s,%d,%d", parent.path, messageEnumPath, index)
+	}
+	return ed
+}
+
+// Return a slice of all the EnumDescriptors defined within this file
+func wrapEnumDescriptors(file *FileDescriptor, descs []*Descriptor) []*EnumDescriptor {
+	sl := make([]*EnumDescriptor, 0, len(file.EnumType)+10)
+	// Top-level enums.
+	for i, enum := range file.EnumType {
+		sl = append(sl, newEnumDescriptor(enum, nil, file, i))
+	}
+	// Enums within messages. Enums within embedded messages appear in the outer-most message.
+	for _, nested := range descs {
+		for i, enum := range nested.EnumType {
+			sl = append(sl, newEnumDescriptor(enum, nested, file, i))
+		}
+	}
+	return sl
+}
+
+// Return a slice of all the top-level ExtensionDescriptors defined within this file.
+func wrapExtensions(file *FileDescriptor) []*ExtensionDescriptor {
+	var sl []*ExtensionDescriptor
+	for _, field := range file.Extension {
+		sl = append(sl, &ExtensionDescriptor{common{file}, field, nil})
+	}
+	return sl
+}
+
+// Return a slice of all the types that are publicly imported into this file.
+func wrapImported(file *FileDescriptor, g *Generator) (sl []*ImportedDescriptor) {
+	for _, index := range file.PublicDependency {
+		df := g.fileByName(file.Dependency[index])
+		for _, d := range df.desc {
+			if d.GetOptions().GetMapEntry() {
+				continue
+			}
+			sl = append(sl, &ImportedDescriptor{common{file}, d})
+		}
+		for _, e := range df.enum {
+			sl = append(sl, &ImportedDescriptor{common{file}, e})
+		}
+		for _, ext := range df.ext {
+			sl = append(sl, &ImportedDescriptor{common{file}, ext})
+		}
+	}
+	return
+}
+
+func extractComments(file *FileDescriptor) {
+	file.comments = make(map[string]*descriptor.SourceCodeInfo_Location)
+	for _, loc := range file.GetSourceCodeInfo().GetLocation() {
+		if loc.LeadingComments == nil {
+			continue
+		}
+		var p []string
+		for _, n := range loc.Path {
+			p = append(p, strconv.Itoa(int(n)))
+		}
+		file.comments[strings.Join(p, ",")] = loc
+	}
+}
+
+// BuildTypeNameMap builds the map from fully qualified type names to objects.
+// The key names for the map come from the input data, which puts a period at the beginning.
+// It should be called after SetPackageNames and before GenerateAllFiles.
+func (g *Generator) BuildTypeNameMap() {
+	g.typeNameToObject = make(map[string]Object)
+	for _, f := range g.allFiles {
+		// The names in this loop are defined by the proto world, not us, so the
+		// package name may be empty.  If so, the dotted package name of X will
+		// be ".X"; otherwise it will be ".pkg.X".
+		dottedPkg := "." + f.GetPackage()
+		if dottedPkg != "." {
+			dottedPkg += "."
+		}
+		for _, enum := range f.enum {
+			name := dottedPkg + dottedSlice(enum.TypeName())
+			g.typeNameToObject[name] = enum
+		}
+		for _, desc := range f.desc {
+			name := dottedPkg + dottedSlice(desc.TypeName())
+			g.typeNameToObject[name] = desc
+		}
+	}
+}
+
+// ObjectNamed, given a fully-qualified input type name as it appears in the input data,
+// returns the descriptor for the message or enum with that name.
+func (g *Generator) ObjectNamed(typeName string) Object {
+	o, ok := g.typeNameToObject[typeName]
+	if !ok {
+		g.Fail("can't find object with type", typeName)
+	}
+	return o
+}
+
+// AnnotatedAtoms is a list of atoms (as consumed by P) that records the file name and proto AST path from which they originated.
+type AnnotatedAtoms struct {
+	source string
+	path   string
+	atoms  []interface{}
+}
+
+// Annotate records the file name and proto AST path of a list of atoms
+// so that a later call to P can emit a link from each atom to its origin.
+func Annotate(file *FileDescriptor, path string, atoms ...interface{}) *AnnotatedAtoms {
+	return &AnnotatedAtoms{source: *file.Name, path: path, atoms: atoms}
+}
+
+// printAtom prints the (atomic, non-annotation) argument to the generated output.
+func (g *Generator) printAtom(v interface{}) {
+	switch v := v.(type) {
+	case string:
+		g.WriteString(v)
+	case *string:
+		g.WriteString(*v)
+	case bool:
+		fmt.Fprint(g, v)
+	case *bool:
+		fmt.Fprint(g, *v)
+	case int:
+		fmt.Fprint(g, v)
+	case *int32:
+		fmt.Fprint(g, *v)
+	case *int64:
+		fmt.Fprint(g, *v)
+	case float64:
+		fmt.Fprint(g, v)
+	case *float64:
+		fmt.Fprint(g, *v)
+	case GoPackageName:
+		g.WriteString(string(v))
+	case GoImportPath:
+		g.WriteString(strconv.Quote(string(v)))
+	default:
+		g.Fail(fmt.Sprintf("unknown type in printer: %T", v))
+	}
+}
+
+// P prints the arguments to the generated output.  It handles strings and int32s, plus
+// handling indirections because they may be *string, etc.  Any inputs of type AnnotatedAtoms may emit
+// annotations in a .meta file in addition to outputting the atoms themselves (if g.annotateCode
+// is true).
+func (g *Generator) P(str ...interface{}) {
+	if !g.writeOutput {
+		return
+	}
+	g.WriteString(g.indent)
+	for _, v := range str {
+		switch v := v.(type) {
+		case *AnnotatedAtoms:
+			begin := int32(g.Len())
+			for _, v := range v.atoms {
+				g.printAtom(v)
+			}
+			if g.annotateCode {
+				end := int32(g.Len())
+				var path []int32
+				for _, token := range strings.Split(v.path, ",") {
+					val, err := strconv.ParseInt(token, 10, 32)
+					if err != nil {
+						g.Fail("could not parse proto AST path: ", err.Error())
+					}
+					path = append(path, int32(val))
+				}
+				g.annotations = append(g.annotations, &descriptor.GeneratedCodeInfo_Annotation{
+					Path:       path,
+					SourceFile: &v.source,
+					Begin:      &begin,
+					End:        &end,
+				})
+			}
+		default:
+			g.printAtom(v)
+		}
+	}
+	g.WriteByte('\n')
+}
+
+// addInitf stores the given statement to be printed inside the file's init function.
+// The statement is given as a format specifier and arguments.
+func (g *Generator) addInitf(stmt string, a ...interface{}) {
+	g.init = append(g.init, fmt.Sprintf(stmt, a...))
+}
+
+// In Indents the output one tab stop.
+func (g *Generator) In() { g.indent += "\t" }
+
+// Out unindents the output one tab stop.
+func (g *Generator) Out() {
+	if len(g.indent) > 0 {
+		g.indent = g.indent[1:]
+	}
+}
+
+// GenerateAllFiles generates the output for all the files we're outputting.
+func (g *Generator) GenerateAllFiles() {
+	// Initialize the plugins
+	for _, p := range plugins {
+		p.Init(g)
+	}
+	// Generate the output. The generator runs for every file, even the files
+	// that we don't generate output for, so that we can collate the full list
+	// of exported symbols to support public imports.
+	genFileMap := make(map[*FileDescriptor]bool, len(g.genFiles))
+	for _, file := range g.genFiles {
+		genFileMap[file] = true
+	}
+	for _, file := range g.allFiles {
+		g.Reset()
+		g.annotations = nil
+		g.writeOutput = genFileMap[file]
+		g.generate(file)
+		if !g.writeOutput {
+			continue
+		}
+		fname := file.goFileName(g.pathType)
+		g.Response.File = append(g.Response.File, &plugin.CodeGeneratorResponse_File{
+			Name:    proto.String(fname),
+			Content: proto.String(g.String()),
+		})
+		if g.annotateCode {
+			// Store the generated code annotations in text, as the protoc plugin protocol requires that
+			// strings contain valid UTF-8.
+			g.Response.File = append(g.Response.File, &plugin.CodeGeneratorResponse_File{
+				Name:    proto.String(file.goFileName(g.pathType) + ".meta"),
+				Content: proto.String(proto.CompactTextString(&descriptor.GeneratedCodeInfo{Annotation: g.annotations})),
+			})
+		}
+	}
+}
+
+// Run all the plugins associated with the file.
+func (g *Generator) runPlugins(file *FileDescriptor) {
+	for _, p := range plugins {
+		p.Generate(file)
+	}
+}
+
+// Fill the response protocol buffer with the generated output for all the files we're
+// supposed to generate.
+func (g *Generator) generate(file *FileDescriptor) {
+	g.file = file
+	g.usedPackages = make(map[GoImportPath]bool)
+	g.packageNames = make(map[GoImportPath]GoPackageName)
+	g.usedPackageNames = make(map[GoPackageName]bool)
+	g.addedImports = make(map[GoImportPath]bool)
+	for name := range globalPackageNames {
+		g.usedPackageNames[name] = true
+	}
+
+	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 _ = ", g.Pkg["proto"], ".ProtoPackageIsVersion", generatedCodeVersion, " // please upgrade the proto package")
+	g.P()
+
+	for _, td := range g.file.imp {
+		g.generateImported(td)
+	}
+	for _, enum := range g.file.enum {
+		g.generateEnum(enum)
+	}
+	for _, desc := range g.file.desc {
+		// Don't generate virtual messages for maps.
+		if desc.GetOptions().GetMapEntry() {
+			continue
+		}
+		g.generateMessage(desc)
+	}
+	for _, ext := range g.file.ext {
+		g.generateExtension(ext)
+	}
+	g.generateInitFunction()
+	g.generateFileDescriptor(file)
+
+	// Run the plugins before the imports so we know which imports are necessary.
+	g.runPlugins(file)
+
+	// Generate header and imports last, though they appear first in the output.
+	rem := g.Buffer
+	remAnno := g.annotations
+	g.Buffer = new(bytes.Buffer)
+	g.annotations = nil
+	g.generateHeader()
+	g.generateImports()
+	if !g.writeOutput {
+		return
+	}
+	// Adjust the offsets for annotations displaced by the header and imports.
+	for _, anno := range remAnno {
+		*anno.Begin += int32(g.Len())
+		*anno.End += int32(g.Len())
+		g.annotations = append(g.annotations, anno)
+	}
+	g.Write(rem.Bytes())
+
+	// Reformat generated code and patch annotation locations.
+	fset := token.NewFileSet()
+	original := g.Bytes()
+	if g.annotateCode {
+		// make a copy independent of g; we'll need it after Reset.
+		original = append([]byte(nil), original...)
+	}
+	fileAST, err := parser.ParseFile(fset, "", original, parser.ParseComments)
+	if err != nil {
+		// Print out the bad code with line numbers.
+		// This should never happen in practice, but it can while changing generated code,
+		// so consider this a debugging aid.
+		var src bytes.Buffer
+		s := bufio.NewScanner(bytes.NewReader(original))
+		for line := 1; s.Scan(); line++ {
+			fmt.Fprintf(&src, "%5d\t%s\n", line, s.Bytes())
+		}
+		g.Fail("bad Go source code was generated:", err.Error(), "\n"+src.String())
+	}
+	ast.SortImports(fset, fileAST)
+	g.Reset()
+	err = (&printer.Config{Mode: printer.TabIndent | printer.UseSpaces, Tabwidth: 8}).Fprint(g, fset, fileAST)
+	if err != nil {
+		g.Fail("generated Go source code could not be reformatted:", err.Error())
+	}
+	if g.annotateCode {
+		m, err := remap.Compute(original, g.Bytes())
+		if err != nil {
+			g.Fail("formatted generated Go source code could not be mapped back to the original code:", err.Error())
+		}
+		for _, anno := range g.annotations {
+			new, ok := m.Find(int(*anno.Begin), int(*anno.End))
+			if !ok {
+				g.Fail("span in formatted generated Go source code could not be mapped back to the original code")
+			}
+			*anno.Begin = int32(new.Pos)
+			*anno.End = int32(new.End)
+		}
+	}
+}
+
+// Generate the header, including package definition
+func (g *Generator) generateHeader() {
+	g.P("// Code generated by protoc-gen-go. DO NOT EDIT.")
+	if g.file.GetOptions().GetDeprecated() {
+		g.P("// ", g.file.Name, " is a deprecated file.")
+	} else {
+		g.P("// source: ", g.file.Name)
+	}
+	g.P()
+	g.PrintComments(strconv.Itoa(packagePath))
+	g.P()
+	g.P("package ", g.file.packageName)
+	g.P()
+}
+
+// deprecationComment is the standard comment added to deprecated
+// messages, fields, enums, and enum values.
+var deprecationComment = "// Deprecated: Do not use."
+
+// PrintComments prints any comments from the source .proto file.
+// The path is a comma-separated list of integers.
+// It returns an indication of whether any comments were printed.
+// See descriptor.proto for its format.
+func (g *Generator) PrintComments(path string) bool {
+	if !g.writeOutput {
+		return false
+	}
+	if c, ok := g.makeComments(path); ok {
+		g.P(c)
+		return true
+	}
+	return false
+}
+
+// makeComments generates the comment string for the field, no "\n" at the end
+func (g *Generator) makeComments(path string) (string, bool) {
+	loc, ok := g.file.comments[path]
+	if !ok {
+		return "", false
+	}
+	w := new(bytes.Buffer)
+	nl := ""
+	for _, line := range strings.Split(strings.TrimSuffix(loc.GetLeadingComments(), "\n"), "\n") {
+		fmt.Fprintf(w, "%s//%s", nl, line)
+		nl = "\n"
+	}
+	return w.String(), true
+}
+
+func (g *Generator) fileByName(filename string) *FileDescriptor {
+	return g.allFilesByName[filename]
+}
+
+// weak returns whether the ith import of the current file is a weak import.
+func (g *Generator) weak(i int32) bool {
+	for _, j := range g.file.WeakDependency {
+		if j == i {
+			return true
+		}
+	}
+	return false
+}
+
+// Generate the imports
+func (g *Generator) generateImports() {
+	imports := make(map[GoImportPath]GoPackageName)
+	for i, s := range g.file.Dependency {
+		fd := g.fileByName(s)
+		importPath := fd.importPath
+		// Do not import our own package.
+		if importPath == g.file.importPath {
+			continue
+		}
+		// Do not import weak imports.
+		if g.weak(int32(i)) {
+			continue
+		}
+		// Do not import a package twice.
+		if _, ok := imports[importPath]; ok {
+			continue
+		}
+		// We need to import all the dependencies, even if we don't reference them,
+		// because other code and tools depend on having the full transitive closure
+		// of protocol buffer types in the binary.
+		packageName := g.GoPackageName(importPath)
+		if _, ok := g.usedPackages[importPath]; !ok {
+			packageName = "_"
+		}
+		imports[importPath] = packageName
+	}
+	for importPath := range g.addedImports {
+		imports[importPath] = g.GoPackageName(importPath)
+	}
+	// We almost always need a proto import.  Rather than computing when we
+	// do, which is tricky when there's a plugin, just import it and
+	// reference it later. The same argument applies to the fmt and math packages.
+	g.P("import (")
+	g.P(g.Pkg["fmt"] + ` "fmt"`)
+	g.P(g.Pkg["math"] + ` "math"`)
+	g.P(g.Pkg["proto"]+" ", GoImportPath(g.ImportPrefix)+"github.com/golang/protobuf/proto")
+	for importPath, packageName := range imports {
+		g.P(packageName, " ", GoImportPath(g.ImportPrefix)+importPath)
+	}
+	g.P(")")
+	g.P()
+	// TODO: may need to worry about uniqueness across plugins
+	for _, p := range plugins {
+		p.GenerateImports(g.file)
+		g.P()
+	}
+	g.P("// Reference imports to suppress errors if they are not otherwise used.")
+	g.P("var _ = ", g.Pkg["proto"], ".Marshal")
+	g.P("var _ = ", g.Pkg["fmt"], ".Errorf")
+	g.P("var _ = ", g.Pkg["math"], ".Inf")
+	g.P()
+}
+
+func (g *Generator) generateImported(id *ImportedDescriptor) {
+	df := id.o.File()
+	filename := *df.Name
+	if df.importPath == g.file.importPath {
+		// Don't generate type aliases for files in the same Go package as this one.
+		return
+	}
+	if !supportTypeAliases {
+		g.Fail(fmt.Sprintf("%s: public imports require at least go1.9", filename))
+	}
+	g.usedPackages[df.importPath] = true
+
+	for _, sym := range df.exported[id.o] {
+		sym.GenerateAlias(g, filename, g.GoPackageName(df.importPath))
+	}
+
+	g.P()
+}
+
+// Generate the enum definitions for this EnumDescriptor.
+func (g *Generator) generateEnum(enum *EnumDescriptor) {
+	// The full type name
+	typeName := enum.TypeName()
+	// The full type name, CamelCased.
+	ccTypeName := CamelCaseSlice(typeName)
+	ccPrefix := enum.prefix()
+
+	deprecatedEnum := ""
+	if enum.GetOptions().GetDeprecated() {
+		deprecatedEnum = deprecationComment
+	}
+	g.PrintComments(enum.path)
+	g.P("type ", Annotate(enum.file, enum.path, ccTypeName), " int32", deprecatedEnum)
+	g.file.addExport(enum, enumSymbol{ccTypeName, enum.proto3()})
+	g.P("const (")
+	for i, e := range enum.Value {
+		etorPath := fmt.Sprintf("%s,%d,%d", enum.path, enumValuePath, i)
+		g.PrintComments(etorPath)
+
+		deprecatedValue := ""
+		if e.GetOptions().GetDeprecated() {
+			deprecatedValue = deprecationComment
+		}
+
+		name := ccPrefix + *e.Name
+		g.P(Annotate(enum.file, etorPath, name), " ", ccTypeName, " = ", e.Number, " ", deprecatedValue)
+		g.file.addExport(enum, constOrVarSymbol{name, "const", ccTypeName})
+	}
+	g.P(")")
+	g.P()
+	g.P("var ", ccTypeName, "_name = map[int32]string{")
+	generated := make(map[int32]bool) // avoid duplicate values
+	for _, e := range enum.Value {
+		duplicate := ""
+		if _, present := generated[*e.Number]; present {
+			duplicate = "// Duplicate value: "
+		}
+		g.P(duplicate, e.Number, ": ", strconv.Quote(*e.Name), ",")
+		generated[*e.Number] = true
+	}
+	g.P("}")
+	g.P()
+	g.P("var ", ccTypeName, "_value = map[string]int32{")
+	for _, e := range enum.Value {
+		g.P(strconv.Quote(*e.Name), ": ", e.Number, ",")
+	}
+	g.P("}")
+	g.P()
+
+	if !enum.proto3() {
+		g.P("func (x ", ccTypeName, ") Enum() *", ccTypeName, " {")
+		g.P("p := new(", ccTypeName, ")")
+		g.P("*p = x")
+		g.P("return p")
+		g.P("}")
+		g.P()
+	}
+
+	g.P("func (x ", ccTypeName, ") String() string {")
+	g.P("return ", g.Pkg["proto"], ".EnumName(", ccTypeName, "_name, int32(x))")
+	g.P("}")
+	g.P()
+
+	if !enum.proto3() {
+		g.P("func (x *", ccTypeName, ") UnmarshalJSON(data []byte) error {")
+		g.P("value, err := ", g.Pkg["proto"], ".UnmarshalJSONEnum(", ccTypeName, `_value, data, "`, ccTypeName, `")`)
+		g.P("if err != nil {")
+		g.P("return err")
+		g.P("}")
+		g.P("*x = ", ccTypeName, "(value)")
+		g.P("return nil")
+		g.P("}")
+		g.P()
+	}
+
+	var indexes []string
+	for m := enum.parent; m != nil; m = m.parent {
+		// XXX: skip groups?
+		indexes = append([]string{strconv.Itoa(m.index)}, indexes...)
+	}
+	indexes = append(indexes, strconv.Itoa(enum.index))
+	g.P("func (", ccTypeName, ") EnumDescriptor() ([]byte, []int) {")
+	g.P("return ", g.file.VarName(), ", []int{", strings.Join(indexes, ", "), "}")
+	g.P("}")
+	g.P()
+	if enum.file.GetPackage() == "google.protobuf" && enum.GetName() == "NullValue" {
+		g.P("func (", ccTypeName, `) XXX_WellKnownType() string { return "`, enum.GetName(), `" }`)
+		g.P()
+	}
+
+	g.generateEnumRegistration(enum)
+}
+
+// The tag is a string like "varint,2,opt,name=fieldname,def=7" that
+// identifies details of the field for the protocol buffer marshaling and unmarshaling
+// code.  The fields are:
+//	wire encoding
+//	protocol tag number
+//	opt,req,rep for optional, required, or repeated
+//	packed whether the encoding is "packed" (optional; repeated primitives only)
+//	name= the original declared name
+//	enum= the name of the enum type if it is an enum-typed field.
+//	proto3 if this field is in a proto3 message
+//	def= string representation of the default value, if any.
+// The default value must be in a representation that can be used at run-time
+// to generate the default value. Thus bools become 0 and 1, for instance.
+func (g *Generator) goTag(message *Descriptor, field *descriptor.FieldDescriptorProto, wiretype string) string {
+	optrepreq := ""
+	switch {
+	case isOptional(field):
+		optrepreq = "opt"
+	case isRequired(field):
+		optrepreq = "req"
+	case isRepeated(field):
+		optrepreq = "rep"
+	}
+	var defaultValue string
+	if dv := field.DefaultValue; dv != nil { // set means an explicit default
+		defaultValue = *dv
+		// Some types need tweaking.
+		switch *field.Type {
+		case descriptor.FieldDescriptorProto_TYPE_BOOL:
+			if defaultValue == "true" {
+				defaultValue = "1"
+			} else {
+				defaultValue = "0"
+			}
+		case descriptor.FieldDescriptorProto_TYPE_STRING,
+			descriptor.FieldDescriptorProto_TYPE_BYTES:
+			// Nothing to do. Quoting is done for the whole tag.
+		case descriptor.FieldDescriptorProto_TYPE_ENUM:
+			// For enums we need to provide the integer constant.
+			obj := g.ObjectNamed(field.GetTypeName())
+			if id, ok := obj.(*ImportedDescriptor); ok {
+				// It is an enum that was publicly imported.
+				// We need the underlying type.
+				obj = id.o
+			}
+			enum, ok := obj.(*EnumDescriptor)
+			if !ok {
+				log.Printf("obj is a %T", obj)
+				if id, ok := obj.(*ImportedDescriptor); ok {
+					log.Printf("id.o is a %T", id.o)
+				}
+				g.Fail("unknown enum type", CamelCaseSlice(obj.TypeName()))
+			}
+			defaultValue = enum.integerValueAsString(defaultValue)
+		case descriptor.FieldDescriptorProto_TYPE_FLOAT:
+			if def := defaultValue; def != "inf" && def != "-inf" && def != "nan" {
+				if f, err := strconv.ParseFloat(defaultValue, 32); err == nil {
+					defaultValue = fmt.Sprint(float32(f))
+				}
+			}
+		case descriptor.FieldDescriptorProto_TYPE_DOUBLE:
+			if def := defaultValue; def != "inf" && def != "-inf" && def != "nan" {
+				if f, err := strconv.ParseFloat(defaultValue, 64); err == nil {
+					defaultValue = fmt.Sprint(f)
+				}
+			}
+		}
+		defaultValue = ",def=" + defaultValue
+	}
+	enum := ""
+	if *field.Type == descriptor.FieldDescriptorProto_TYPE_ENUM {
+		// We avoid using obj.GoPackageName(), because we want to use the
+		// original (proto-world) package name.
+		obj := g.ObjectNamed(field.GetTypeName())
+		if id, ok := obj.(*ImportedDescriptor); ok {
+			obj = id.o
+		}
+		enum = ",enum="
+		if pkg := obj.File().GetPackage(); pkg != "" {
+			enum += pkg + "."
+		}
+		enum += CamelCaseSlice(obj.TypeName())
+	}
+	packed := ""
+	if (field.Options != nil && field.Options.GetPacked()) ||
+		// Per https://developers.google.com/protocol-buffers/docs/proto3#simple:
+		// "In proto3, repeated fields of scalar numeric types use packed encoding by default."
+		(message.proto3() && (field.Options == nil || field.Options.Packed == nil) &&
+			isRepeated(field) && isScalar(field)) {
+		packed = ",packed"
+	}
+	fieldName := field.GetName()
+	name := fieldName
+	if *field.Type == descriptor.FieldDescriptorProto_TYPE_GROUP {
+		// We must use the type name for groups instead of
+		// the field name to preserve capitalization.
+		// type_name in FieldDescriptorProto is fully-qualified,
+		// but we only want the local part.
+		name = *field.TypeName
+		if i := strings.LastIndex(name, "."); i >= 0 {
+			name = name[i+1:]
+		}
+	}
+	if json := field.GetJsonName(); field.Extendee == nil && json != "" && json != name {
+		// TODO: escaping might be needed, in which case
+		// perhaps this should be in its own "json" tag.
+		name += ",json=" + json
+	}
+	name = ",name=" + name
+	if message.proto3() {
+		name += ",proto3"
+	}
+	oneof := ""
+	if field.OneofIndex != nil {
+		oneof = ",oneof"
+	}
+	return strconv.Quote(fmt.Sprintf("%s,%d,%s%s%s%s%s%s",
+		wiretype,
+		field.GetNumber(),
+		optrepreq,
+		packed,
+		name,
+		enum,
+		oneof,
+		defaultValue))
+}
+
+func needsStar(typ descriptor.FieldDescriptorProto_Type) bool {
+	switch typ {
+	case descriptor.FieldDescriptorProto_TYPE_GROUP:
+		return false
+	case descriptor.FieldDescriptorProto_TYPE_MESSAGE:
+		return false
+	case descriptor.FieldDescriptorProto_TYPE_BYTES:
+		return false
+	}
+	return true
+}
+
+// TypeName is the printed name appropriate for an item. If the object is in the current file,
+// TypeName drops the package name and underscores the rest.
+// Otherwise the object is from another package; and the result is the underscored
+// package name followed by the item name.
+// The result always has an initial capital.
+func (g *Generator) TypeName(obj Object) string {
+	return g.DefaultPackageName(obj) + CamelCaseSlice(obj.TypeName())
+}
+
+// GoType returns a string representing the type name, and the wire type
+func (g *Generator) GoType(message *Descriptor, field *descriptor.FieldDescriptorProto) (typ string, wire string) {
+	// TODO: Options.
+	switch *field.Type {
+	case descriptor.FieldDescriptorProto_TYPE_DOUBLE:
+		typ, wire = "float64", "fixed64"
+	case descriptor.FieldDescriptorProto_TYPE_FLOAT:
+		typ, wire = "float32", "fixed32"
+	case descriptor.FieldDescriptorProto_TYPE_INT64:
+		typ, wire = "int64", "varint"
+	case descriptor.FieldDescriptorProto_TYPE_UINT64:
+		typ, wire = "uint64", "varint"
+	case descriptor.FieldDescriptorProto_TYPE_INT32:
+		typ, wire = "int32", "varint"
+	case descriptor.FieldDescriptorProto_TYPE_UINT32:
+		typ, wire = "uint32", "varint"
+	case descriptor.FieldDescriptorProto_TYPE_FIXED64:
+		typ, wire = "uint64", "fixed64"
+	case descriptor.FieldDescriptorProto_TYPE_FIXED32:
+		typ, wire = "uint32", "fixed32"
+	case descriptor.FieldDescriptorProto_TYPE_BOOL:
+		typ, wire = "bool", "varint"
+	case descriptor.FieldDescriptorProto_TYPE_STRING:
+		typ, wire = "string", "bytes"
+	case descriptor.FieldDescriptorProto_TYPE_GROUP:
+		desc := g.ObjectNamed(field.GetTypeName())
+		typ, wire = "*"+g.TypeName(desc), "group"
+	case descriptor.FieldDescriptorProto_TYPE_MESSAGE:
+		desc := g.ObjectNamed(field.GetTypeName())
+		typ, wire = "*"+g.TypeName(desc), "bytes"
+	case descriptor.FieldDescriptorProto_TYPE_BYTES:
+		typ, wire = "[]byte", "bytes"
+	case descriptor.FieldDescriptorProto_TYPE_ENUM:
+		desc := g.ObjectNamed(field.GetTypeName())
+		typ, wire = g.TypeName(desc), "varint"
+	case descriptor.FieldDescriptorProto_TYPE_SFIXED32:
+		typ, wire = "int32", "fixed32"
+	case descriptor.FieldDescriptorProto_TYPE_SFIXED64:
+		typ, wire = "int64", "fixed64"
+	case descriptor.FieldDescriptorProto_TYPE_SINT32:
+		typ, wire = "int32", "zigzag32"
+	case descriptor.FieldDescriptorProto_TYPE_SINT64:
+		typ, wire = "int64", "zigzag64"
+	default:
+		g.Fail("unknown type for", field.GetName())
+	}
+	if isRepeated(field) {
+		typ = "[]" + typ
+	} else if message != nil && message.proto3() {
+		return
+	} else if field.OneofIndex != nil && message != nil {
+		return
+	} else if needsStar(*field.Type) {
+		typ = "*" + typ
+	}
+	return
+}
+
+func (g *Generator) RecordTypeUse(t string) {
+	if _, ok := g.typeNameToObject[t]; !ok {
+		return
+	}
+	importPath := g.ObjectNamed(t).GoImportPath()
+	if importPath == g.outputImportPath {
+		// Don't record use of objects in our package.
+		return
+	}
+	g.AddImport(importPath)
+	g.usedPackages[importPath] = true
+}
+
+// Method names that may be generated.  Fields with these names get an
+// underscore appended. Any change to this set is a potential incompatible
+// API change because it changes generated field names.
+var methodNames = [...]string{
+	"Reset",
+	"String",
+	"ProtoMessage",
+	"Marshal",
+	"Unmarshal",
+	"ExtensionRangeArray",
+	"ExtensionMap",
+	"Descriptor",
+}
+
+// Names of messages in the `google.protobuf` package for which
+// we will generate XXX_WellKnownType methods.
+var wellKnownTypes = map[string]bool{
+	"Any":       true,
+	"Duration":  true,
+	"Empty":     true,
+	"Struct":    true,
+	"Timestamp": true,
+
+	"Value":       true,
+	"ListValue":   true,
+	"DoubleValue": true,
+	"FloatValue":  true,
+	"Int64Value":  true,
+	"UInt64Value": true,
+	"Int32Value":  true,
+	"UInt32Value": true,
+	"BoolValue":   true,
+	"StringValue": true,
+	"BytesValue":  true,
+}
+
+// getterDefault finds the default value for the field to return from a getter,
+// regardless of if it's a built in default or explicit from the source. Returns e.g. "nil", `""`, "Default_MessageType_FieldName"
+func (g *Generator) getterDefault(field *descriptor.FieldDescriptorProto, goMessageType string) string {
+	if isRepeated(field) {
+		return "nil"
+	}
+	if def := field.GetDefaultValue(); def != "" {
+		defaultConstant := g.defaultConstantName(goMessageType, field.GetName())
+		if *field.Type != descriptor.FieldDescriptorProto_TYPE_BYTES {
+			return defaultConstant
+		}
+		return "append([]byte(nil), " + defaultConstant + "...)"
+	}
+	switch *field.Type {
+	case descriptor.FieldDescriptorProto_TYPE_BOOL:
+		return "false"
+	case descriptor.FieldDescriptorProto_TYPE_STRING:
+		return `""`
+	case descriptor.FieldDescriptorProto_TYPE_GROUP, descriptor.FieldDescriptorProto_TYPE_MESSAGE, descriptor.FieldDescriptorProto_TYPE_BYTES:
+		return "nil"
+	case descriptor.FieldDescriptorProto_TYPE_ENUM:
+		obj := g.ObjectNamed(field.GetTypeName())
+		var enum *EnumDescriptor
+		if id, ok := obj.(*ImportedDescriptor); ok {
+			// The enum type has been publicly imported.
+			enum, _ = id.o.(*EnumDescriptor)
+		} else {
+			enum, _ = obj.(*EnumDescriptor)
+		}
+		if enum == nil {
+			log.Printf("don't know how to generate getter for %s", field.GetName())
+			return "nil"
+		}
+		if len(enum.Value) == 0 {
+			return "0 // empty enum"
+		}
+		first := enum.Value[0].GetName()
+		return g.DefaultPackageName(obj) + enum.prefix() + first
+	default:
+		return "0"
+	}
+}
+
+// defaultConstantName builds the name of the default constant from the message
+// type name and the untouched field name, e.g. "Default_MessageType_FieldName"
+func (g *Generator) defaultConstantName(goMessageType, protoFieldName string) string {
+	return "Default_" + goMessageType + "_" + CamelCase(protoFieldName)
+}
+
+// The different types of fields in a message and how to actually print them
+// Most of the logic for generateMessage is in the methods of these types.
+//
+// Note that the content of the field is irrelevant, a simpleField can contain
+// anything from a scalar to a group (which is just a message).
+//
+// Extension fields (and message sets) are however handled separately.
+//
+// simpleField - a field that is neiter weak nor oneof, possibly repeated
+// oneofField - field containing list of subfields:
+// - oneofSubField - a field within the oneof
+
+// msgCtx contains the context for the generator functions.
+type msgCtx struct {
+	goName  string      // Go struct name of the message, e.g. MessageName
+	message *Descriptor // The descriptor for the message
+}
+
+// fieldCommon contains data common to all types of fields.
+type fieldCommon struct {
+	goName     string // Go name of field, e.g. "FieldName" or "Descriptor_"
+	protoName  string // Name of field in proto language, e.g. "field_name" or "descriptor"
+	getterName string // Name of the getter, e.g. "GetFieldName" or "GetDescriptor_"
+	goType     string // The Go type as a string, e.g. "*int32" or "*OtherMessage"
+	tags       string // The tag string/annotation for the type, e.g. `protobuf:"varint,8,opt,name=region_id,json=regionId"`
+	fullPath   string // The full path of the field as used by Annotate etc, e.g. "4,0,2,0"
+}
+
+// getProtoName gets the proto name of a field, e.g. "field_name" or "descriptor".
+func (f *fieldCommon) getProtoName() string {
+	return f.protoName
+}
+
+// getGoType returns the go type of the field  as a string, e.g. "*int32".
+func (f *fieldCommon) getGoType() string {
+	return f.goType
+}
+
+// simpleField is not weak, not a oneof, not an extension. Can be required, optional or repeated.
+type simpleField struct {
+	fieldCommon
+	protoTypeName string                               // Proto type name, empty if primitive, e.g. ".google.protobuf.Duration"
+	protoType     descriptor.FieldDescriptorProto_Type // Actual type enum value, e.g. descriptor.FieldDescriptorProto_TYPE_FIXED64
+	deprecated    string                               // Deprecation comment, if any, e.g. "// Deprecated: Do not use."
+	getterDef     string                               // Default for getters, e.g. "nil", `""` or "Default_MessageType_FieldName"
+	protoDef      string                               // Default value as defined in the proto file, e.g "yoshi" or "5"
+	comment       string                               // The full comment for the field, e.g. "// Useful information"
+}
+
+// decl prints the declaration of the field in the struct (if any).
+func (f *simpleField) decl(g *Generator, mc *msgCtx) {
+	g.P(f.comment, Annotate(mc.message.file, f.fullPath, f.goName), "\t", f.goType, "\t`", f.tags, "`", f.deprecated)
+}
+
+// getter prints the getter for the field.
+func (f *simpleField) getter(g *Generator, mc *msgCtx) {
+	star := ""
+	tname := f.goType
+	if needsStar(f.protoType) && tname[0] == '*' {
+		tname = tname[1:]
+		star = "*"
+	}
+	if f.deprecated != "" {
+		g.P(f.deprecated)
+	}
+	g.P("func (m *", mc.goName, ") ", Annotate(mc.message.file, f.fullPath, f.getterName), "() "+tname+" {")
+	if f.getterDef == "nil" { // Simpler getter
+		g.P("if m != nil {")
+		g.P("return m." + f.goName)
+		g.P("}")
+		g.P("return nil")
+		g.P("}")
+		g.P()
+		return
+	}
+	if mc.message.proto3() {
+		g.P("if m != nil {")
+	} else {
+		g.P("if m != nil && m." + f.goName + " != nil {")
+	}
+	g.P("return " + star + "m." + f.goName)
+	g.P("}")
+	g.P("return ", f.getterDef)
+	g.P("}")
+	g.P()
+}
+
+// setter prints the setter method of the field.
+func (f *simpleField) setter(g *Generator, mc *msgCtx) {
+	// No setter for regular fields yet
+}
+
+// getProtoDef returns the default value explicitly stated in the proto file, e.g "yoshi" or "5".
+func (f *simpleField) getProtoDef() string {
+	return f.protoDef
+}
+
+// getProtoTypeName returns the protobuf type name for the field as returned by field.GetTypeName(), e.g. ".google.protobuf.Duration".
+func (f *simpleField) getProtoTypeName() string {
+	return f.protoTypeName
+}
+
+// getProtoType returns the *field.Type value, e.g. descriptor.FieldDescriptorProto_TYPE_FIXED64.
+func (f *simpleField) getProtoType() descriptor.FieldDescriptorProto_Type {
+	return f.protoType
+}
+
+// oneofSubFields are kept slize held by each oneofField. They do not appear in the top level slize of fields for the message.
+type oneofSubField struct {
+	fieldCommon
+	protoTypeName string                               // Proto type name, empty if primitive, e.g. ".google.protobuf.Duration"
+	protoType     descriptor.FieldDescriptorProto_Type // Actual type enum value, e.g. descriptor.FieldDescriptorProto_TYPE_FIXED64
+	oneofTypeName string                               // Type name of the enclosing struct, e.g. "MessageName_FieldName"
+	fieldNumber   int                                  // Actual field number, as defined in proto, e.g. 12
+	getterDef     string                               // Default for getters, e.g. "nil", `""` or "Default_MessageType_FieldName"
+	protoDef      string                               // Default value as defined in the proto file, e.g "yoshi" or "5"
+	deprecated    string                               // Deprecation comment, if any.
+}
+
+// typedNil prints a nil casted to the pointer to this field.
+// - for XXX_OneofWrappers
+func (f *oneofSubField) typedNil(g *Generator) {
+	g.P("(*", f.oneofTypeName, ")(nil),")
+}
+
+// getProtoDef returns the default value explicitly stated in the proto file, e.g "yoshi" or "5".
+func (f *oneofSubField) getProtoDef() string {
+	return f.protoDef
+}
+
+// getProtoTypeName returns the protobuf type name for the field as returned by field.GetTypeName(), e.g. ".google.protobuf.Duration".
+func (f *oneofSubField) getProtoTypeName() string {
+	return f.protoTypeName
+}
+
+// getProtoType returns the *field.Type value, e.g. descriptor.FieldDescriptorProto_TYPE_FIXED64.
+func (f *oneofSubField) getProtoType() descriptor.FieldDescriptorProto_Type {
+	return f.protoType
+}
+
+// oneofField represents the oneof on top level.
+// The alternative fields within the oneof are represented by oneofSubField.
+type oneofField struct {
+	fieldCommon
+	subFields []*oneofSubField // All the possible oneof fields
+	comment   string           // The full comment for the field, e.g. "// Types that are valid to be assigned to MyOneof:\n\\"
+}
+
+// decl prints the declaration of the field in the struct (if any).
+func (f *oneofField) decl(g *Generator, mc *msgCtx) {
+	comment := f.comment
+	for _, sf := range f.subFields {
+		comment += "//\t*" + sf.oneofTypeName + "\n"
+	}
+	g.P(comment, Annotate(mc.message.file, f.fullPath, f.goName), " ", f.goType, " `", f.tags, "`")
+}
+
+// getter for a oneof field will print additional discriminators and interfaces for the oneof,
+// also it prints all the getters for the sub fields.
+func (f *oneofField) getter(g *Generator, mc *msgCtx) {
+	// The discriminator type
+	g.P("type ", f.goType, " interface {")
+	g.P(f.goType, "()")
+	g.P("}")
+	g.P()
+	// The subField types, fulfilling the discriminator type contract
+	for _, sf := range f.subFields {
+		g.P("type ", Annotate(mc.message.file, sf.fullPath, sf.oneofTypeName), " struct {")
+		g.P(Annotate(mc.message.file, sf.fullPath, sf.goName), " ", sf.goType, " `", sf.tags, "`")
+		g.P("}")
+		g.P()
+	}
+	for _, sf := range f.subFields {
+		g.P("func (*", sf.oneofTypeName, ") ", f.goType, "() {}")
+		g.P()
+	}
+	// Getter for the oneof field
+	g.P("func (m *", mc.goName, ") ", Annotate(mc.message.file, f.fullPath, f.getterName), "() ", f.goType, " {")
+	g.P("if m != nil { return m.", f.goName, " }")
+	g.P("return nil")
+	g.P("}")
+	g.P()
+	// Getters for each oneof
+	for _, sf := range f.subFields {
+		if sf.deprecated != "" {
+			g.P(sf.deprecated)
+		}
+		g.P("func (m *", mc.goName, ") ", Annotate(mc.message.file, sf.fullPath, sf.getterName), "() "+sf.goType+" {")
+		g.P("if x, ok := m.", f.getterName, "().(*", sf.oneofTypeName, "); ok {")
+		g.P("return x.", sf.goName)
+		g.P("}")
+		g.P("return ", sf.getterDef)
+		g.P("}")
+		g.P()
+	}
+}
+
+// setter prints the setter method of the field.
+func (f *oneofField) setter(g *Generator, mc *msgCtx) {
+	// No setters for oneof yet
+}
+
+// topLevelField interface implemented by all types of fields on the top level (not oneofSubField).
+type topLevelField interface {
+	decl(g *Generator, mc *msgCtx)   // print declaration within the struct
+	getter(g *Generator, mc *msgCtx) // print getter
+	setter(g *Generator, mc *msgCtx) // print setter if applicable
+}
+
+// defField interface implemented by all types of fields that can have defaults (not oneofField, but instead oneofSubField).
+type defField interface {
+	getProtoDef() string                                // default value explicitly stated in the proto file, e.g "yoshi" or "5"
+	getProtoName() string                               // proto name of a field, e.g. "field_name" or "descriptor"
+	getGoType() string                                  // go type of the field  as a string, e.g. "*int32"
+	getProtoTypeName() string                           // protobuf type name for the field, e.g. ".google.protobuf.Duration"
+	getProtoType() descriptor.FieldDescriptorProto_Type // *field.Type value, e.g. descriptor.FieldDescriptorProto_TYPE_FIXED64
+}
+
+// generateDefaultConstants adds constants for default values if needed, which is only if the default value is.
+// explicit in the proto.
+func (g *Generator) generateDefaultConstants(mc *msgCtx, topLevelFields []topLevelField) {
+	// Collect fields that can have defaults
+	dFields := []defField{}
+	for _, pf := range topLevelFields {
+		if f, ok := pf.(*oneofField); ok {
+			for _, osf := range f.subFields {
+				dFields = append(dFields, osf)
+			}
+			continue
+		}
+		dFields = append(dFields, pf.(defField))
+	}
+	for _, df := range dFields {
+		def := df.getProtoDef()
+		if def == "" {
+			continue
+		}
+		fieldname := g.defaultConstantName(mc.goName, df.getProtoName())
+		typename := df.getGoType()
+		if typename[0] == '*' {
+			typename = typename[1:]
+		}
+		kind := "const "
+		switch {
+		case typename == "bool":
+		case typename == "string":
+			def = strconv.Quote(def)
+		case typename == "[]byte":
+			def = "[]byte(" + strconv.Quote(unescape(def)) + ")"
+			kind = "var "
+		case def == "inf", def == "-inf", def == "nan":
+			// These names are known to, and defined by, the protocol language.
+			switch def {
+			case "inf":
+				def = "math.Inf(1)"
+			case "-inf":
+				def = "math.Inf(-1)"
+			case "nan":
+				def = "math.NaN()"
+			}
+			if df.getProtoType() == descriptor.FieldDescriptorProto_TYPE_FLOAT {
+				def = "float32(" + def + ")"
+			}
+			kind = "var "
+		case df.getProtoType() == descriptor.FieldDescriptorProto_TYPE_FLOAT:
+			if f, err := strconv.ParseFloat(def, 32); err == nil {
+				def = fmt.Sprint(float32(f))
+			}
+		case df.getProtoType() == descriptor.FieldDescriptorProto_TYPE_DOUBLE:
+			if f, err := strconv.ParseFloat(def, 64); err == nil {
+				def = fmt.Sprint(f)
+			}
+		case df.getProtoType() == descriptor.FieldDescriptorProto_TYPE_ENUM:
+			// Must be an enum.  Need to construct the prefixed name.
+			obj := g.ObjectNamed(df.getProtoTypeName())
+			var enum *EnumDescriptor
+			if id, ok := obj.(*ImportedDescriptor); ok {
+				// The enum type has been publicly imported.
+				enum, _ = id.o.(*EnumDescriptor)
+			} else {
+				enum, _ = obj.(*EnumDescriptor)
+			}
+			if enum == nil {
+				log.Printf("don't know how to generate constant for %s", fieldname)
+				continue
+			}
+			def = g.DefaultPackageName(obj) + enum.prefix() + def
+		}
+		g.P(kind, fieldname, " ", typename, " = ", def)
+		g.file.addExport(mc.message, constOrVarSymbol{fieldname, kind, ""})
+	}
+	g.P()
+}
+
+// generateInternalStructFields just adds the XXX_<something> fields to the message struct.
+func (g *Generator) generateInternalStructFields(mc *msgCtx, topLevelFields []topLevelField) {
+	g.P("XXX_NoUnkeyedLiteral\tstruct{} `json:\"-\"`") // prevent unkeyed struct literals
+	if len(mc.message.ExtensionRange) > 0 {
+		messageset := ""
+		if opts := mc.message.Options; opts != nil && opts.GetMessageSetWireFormat() {
+			messageset = "protobuf_messageset:\"1\" "
+		}
+		g.P(g.Pkg["proto"], ".XXX_InternalExtensions `", messageset, "json:\"-\"`")
+	}
+	g.P("XXX_unrecognized\t[]byte `json:\"-\"`")
+	g.P("XXX_sizecache\tint32 `json:\"-\"`")
+
+}
+
+// generateOneofFuncs adds all the utility functions for oneof, including marshaling, unmarshaling and sizer.
+func (g *Generator) generateOneofFuncs(mc *msgCtx, topLevelFields []topLevelField) {
+	ofields := []*oneofField{}
+	for _, f := range topLevelFields {
+		if o, ok := f.(*oneofField); ok {
+			ofields = append(ofields, o)
+		}
+	}
+	if len(ofields) == 0 {
+		return
+	}
+
+	// OneofFuncs
+	g.P("// XXX_OneofWrappers is for the internal use of the proto package.")
+	g.P("func (*", mc.goName, ") XXX_OneofWrappers() []interface{} {")
+	g.P("return []interface{}{")
+	for _, of := range ofields {
+		for _, sf := range of.subFields {
+			sf.typedNil(g)
+		}
+	}
+	g.P("}")
+	g.P("}")
+	g.P()
+}
+
+// generateMessageStruct adds the actual struct with it's members (but not methods) to the output.
+func (g *Generator) generateMessageStruct(mc *msgCtx, topLevelFields []topLevelField) {
+	comments := g.PrintComments(mc.message.path)
+
+	// Guarantee deprecation comments appear after user-provided comments.
+	if mc.message.GetOptions().GetDeprecated() {
+		if comments {
+			// Convention: Separate deprecation comments from original
+			// comments with an empty line.
+			g.P("//")
+		}
+		g.P(deprecationComment)
+	}
+
+	g.P("type ", Annotate(mc.message.file, mc.message.path, mc.goName), " struct {")
+	for _, pf := range topLevelFields {
+		pf.decl(g, mc)
+	}
+	g.generateInternalStructFields(mc, topLevelFields)
+	g.P("}")
+}
+
+// generateGetters adds getters for all fields, including oneofs and weak fields when applicable.
+func (g *Generator) generateGetters(mc *msgCtx, topLevelFields []topLevelField) {
+	for _, pf := range topLevelFields {
+		pf.getter(g, mc)
+	}
+}
+
+// generateSetters add setters for all fields, including oneofs and weak fields when applicable.
+func (g *Generator) generateSetters(mc *msgCtx, topLevelFields []topLevelField) {
+	for _, pf := range topLevelFields {
+		pf.setter(g, mc)
+	}
+}
+
+// generateCommonMethods adds methods to the message that are not on a per field basis.
+func (g *Generator) generateCommonMethods(mc *msgCtx) {
+	// Reset, String and ProtoMessage methods.
+	g.P("func (m *", mc.goName, ") Reset() { *m = ", mc.goName, "{} }")
+	g.P("func (m *", mc.goName, ") String() string { return ", g.Pkg["proto"], ".CompactTextString(m) }")
+	g.P("func (*", mc.goName, ") ProtoMessage() {}")
+	var indexes []string
+	for m := mc.message; m != nil; m = m.parent {
+		indexes = append([]string{strconv.Itoa(m.index)}, indexes...)
+	}
+	g.P("func (*", mc.goName, ") Descriptor() ([]byte, []int) {")
+	g.P("return ", g.file.VarName(), ", []int{", strings.Join(indexes, ", "), "}")
+	g.P("}")
+	g.P()
+	// TODO: Revisit the decision to use a XXX_WellKnownType method
+	// if we change proto.MessageName to work with multiple equivalents.
+	if mc.message.file.GetPackage() == "google.protobuf" && wellKnownTypes[mc.message.GetName()] {
+		g.P("func (*", mc.goName, `) XXX_WellKnownType() string { return "`, mc.message.GetName(), `" }`)
+		g.P()
+	}
+
+	// Extension support methods
+	if len(mc.message.ExtensionRange) > 0 {
+		g.P()
+		g.P("var extRange_", mc.goName, " = []", g.Pkg["proto"], ".ExtensionRange{")
+		for _, r := range mc.message.ExtensionRange {
+			end := fmt.Sprint(*r.End - 1) // make range inclusive on both ends
+			g.P("{Start: ", r.Start, ", End: ", end, "},")
+		}
+		g.P("}")
+		g.P("func (*", mc.goName, ") ExtensionRangeArray() []", g.Pkg["proto"], ".ExtensionRange {")
+		g.P("return extRange_", mc.goName)
+		g.P("}")
+		g.P()
+	}
+
+	// TODO: It does not scale to keep adding another method for every
+	// operation on protos that we want to switch over to using the
+	// 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.
+
+	// Wrapper for table-driven marshaling and unmarshaling.
+	g.P("func (m *", mc.goName, ") XXX_Unmarshal(b []byte) error {")
+	g.P("return xxx_messageInfo_", mc.goName, ".Unmarshal(m, b)")
+	g.P("}")
+
+	g.P("func (m *", mc.goName, ") XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {")
+	g.P("return xxx_messageInfo_", mc.goName, ".Marshal(b, m, deterministic)")
+	g.P("}")
+
+	g.P("func (m *", mc.goName, ") XXX_Merge(src ", g.Pkg["proto"], ".Message) {")
+	g.P("xxx_messageInfo_", mc.goName, ".Merge(m, src)")
+	g.P("}")
+
+	g.P("func (m *", mc.goName, ") XXX_Size() int {") // avoid name clash with "Size" field in some message
+	g.P("return xxx_messageInfo_", mc.goName, ".Size(m)")
+	g.P("}")
+
+	g.P("func (m *", mc.goName, ") XXX_DiscardUnknown() {")
+	g.P("xxx_messageInfo_", mc.goName, ".DiscardUnknown(m)")
+	g.P("}")
+
+	g.P("var xxx_messageInfo_", mc.goName, " ", g.Pkg["proto"], ".InternalMessageInfo")
+	g.P()
+}
+
+// Generate the type, methods and default constant definitions for this Descriptor.
+func (g *Generator) generateMessage(message *Descriptor) {
+	topLevelFields := []topLevelField{}
+	oFields := make(map[int32]*oneofField)
+	// The full type name
+	typeName := message.TypeName()
+	// The full type name, CamelCased.
+	goTypeName := CamelCaseSlice(typeName)
+
+	usedNames := make(map[string]bool)
+	for _, n := range methodNames {
+		usedNames[n] = true
+	}
+
+	// allocNames finds a conflict-free variation of the given strings,
+	// consistently mutating their suffixes.
+	// It returns the same number of strings.
+	allocNames := func(ns ...string) []string {
+	Loop:
+		for {
+			for _, n := range ns {
+				if usedNames[n] {
+					for i := range ns {
+						ns[i] += "_"
+					}
+					continue Loop
+				}
+			}
+			for _, n := range ns {
+				usedNames[n] = true
+			}
+			return ns
+		}
+	}
+
+	mapFieldTypes := make(map[*descriptor.FieldDescriptorProto]string) // keep track of the map fields to be added later
+
+	// Build a structure more suitable for generating the text in one pass
+	for i, field := range message.Field {
+		// Allocate the getter and the field at the same time so name
+		// collisions create field/method consistent names.
+		// TODO: This allocation occurs based on the order of the fields
+		// in the proto file, meaning that a change in the field
+		// ordering can change generated Method/Field names.
+		base := CamelCase(*field.Name)
+		ns := allocNames(base, "Get"+base)
+		fieldName, fieldGetterName := ns[0], ns[1]
+		typename, wiretype := g.GoType(message, field)
+		jsonName := *field.Name
+		tag := fmt.Sprintf("protobuf:%s json:%q", g.goTag(message, field, wiretype), jsonName+",omitempty")
+
+		oneof := field.OneofIndex != nil
+		if oneof && oFields[*field.OneofIndex] == nil {
+			odp := message.OneofDecl[int(*field.OneofIndex)]
+			base := CamelCase(odp.GetName())
+			fname := allocNames(base)[0]
+
+			// This is the first field of a oneof we haven't seen before.
+			// Generate the union field.
+			oneofFullPath := fmt.Sprintf("%s,%d,%d", message.path, messageOneofPath, *field.OneofIndex)
+			c, ok := g.makeComments(oneofFullPath)
+			if ok {
+				c += "\n//\n"
+			}
+			c += "// Types that are valid to be assigned to " + fname + ":\n"
+			// Generate the rest of this comment later,
+			// when we've computed any disambiguation.
+
+			dname := "is" + goTypeName + "_" + fname
+			tag := `protobuf_oneof:"` + odp.GetName() + `"`
+			of := oneofField{
+				fieldCommon: fieldCommon{
+					goName:     fname,
+					getterName: "Get" + fname,
+					goType:     dname,
+					tags:       tag,
+					protoName:  odp.GetName(),
+					fullPath:   oneofFullPath,
+				},
+				comment: c,
+			}
+			topLevelFields = append(topLevelFields, &of)
+			oFields[*field.OneofIndex] = &of
+		}
+
+		if *field.Type == descriptor.FieldDescriptorProto_TYPE_MESSAGE {
+			desc := g.ObjectNamed(field.GetTypeName())
+			if d, ok := desc.(*Descriptor); ok && d.GetOptions().GetMapEntry() {
+				// Figure out the Go types and tags for the key and value types.
+				keyField, valField := d.Field[0], d.Field[1]
+				keyType, keyWire := g.GoType(d, keyField)
+				valType, valWire := g.GoType(d, valField)
+				keyTag, valTag := g.goTag(d, keyField, keyWire), g.goTag(d, valField, valWire)
+
+				// We don't use stars, except for message-typed values.
+				// Message and enum types are the only two possibly foreign types used in maps,
+				// so record their use. They are not permitted as map keys.
+				keyType = strings.TrimPrefix(keyType, "*")
+				switch *valField.Type {
+				case descriptor.FieldDescriptorProto_TYPE_ENUM:
+					valType = strings.TrimPrefix(valType, "*")
+					g.RecordTypeUse(valField.GetTypeName())
+				case descriptor.FieldDescriptorProto_TYPE_MESSAGE:
+					g.RecordTypeUse(valField.GetTypeName())
+				default:
+					valType = strings.TrimPrefix(valType, "*")
+				}
+
+				typename = fmt.Sprintf("map[%s]%s", keyType, valType)
+				mapFieldTypes[field] = typename // record for the getter generation
+
+				tag += fmt.Sprintf(" protobuf_key:%s protobuf_val:%s", keyTag, valTag)
+			}
+		}
+
+		fieldDeprecated := ""
+		if field.GetOptions().GetDeprecated() {
+			fieldDeprecated = deprecationComment
+		}
+
+		dvalue := g.getterDefault(field, goTypeName)
+		if oneof {
+			tname := goTypeName + "_" + fieldName
+			// It is possible for this to collide with a message or enum
+			// nested in this message. Check for collisions.
+			for {
+				ok := true
+				for _, desc := range message.nested {
+					if CamelCaseSlice(desc.TypeName()) == tname {
+						ok = false
+						break
+					}
+				}
+				for _, enum := range message.enums {
+					if CamelCaseSlice(enum.TypeName()) == tname {
+						ok = false
+						break
+					}
+				}
+				if !ok {
+					tname += "_"
+					continue
+				}
+				break
+			}
+
+			oneofField := oFields[*field.OneofIndex]
+			tag := "protobuf:" + g.goTag(message, field, wiretype)
+			sf := oneofSubField{
+				fieldCommon: fieldCommon{
+					goName:     fieldName,
+					getterName: fieldGetterName,
+					goType:     typename,
+					tags:       tag,
+					protoName:  field.GetName(),
+					fullPath:   fmt.Sprintf("%s,%d,%d", message.path, messageFieldPath, i),
+				},
+				protoTypeName: field.GetTypeName(),
+				fieldNumber:   int(*field.Number),
+				protoType:     *field.Type,
+				getterDef:     dvalue,
+				protoDef:      field.GetDefaultValue(),
+				oneofTypeName: tname,
+				deprecated:    fieldDeprecated,
+			}
+			oneofField.subFields = append(oneofField.subFields, &sf)
+			g.RecordTypeUse(field.GetTypeName())
+			continue
+		}
+
+		fieldFullPath := fmt.Sprintf("%s,%d,%d", message.path, messageFieldPath, i)
+		c, ok := g.makeComments(fieldFullPath)
+		if ok {
+			c += "\n"
+		}
+		rf := simpleField{
+			fieldCommon: fieldCommon{
+				goName:     fieldName,
+				getterName: fieldGetterName,
+				goType:     typename,
+				tags:       tag,
+				protoName:  field.GetName(),
+				fullPath:   fieldFullPath,
+			},
+			protoTypeName: field.GetTypeName(),
+			protoType:     *field.Type,
+			deprecated:    fieldDeprecated,
+			getterDef:     dvalue,
+			protoDef:      field.GetDefaultValue(),
+			comment:       c,
+		}
+		var pf topLevelField = &rf
+
+		topLevelFields = append(topLevelFields, pf)
+		g.RecordTypeUse(field.GetTypeName())
+	}
+
+	mc := &msgCtx{
+		goName:  goTypeName,
+		message: message,
+	}
+
+	g.generateMessageStruct(mc, topLevelFields)
+	g.P()
+	g.generateCommonMethods(mc)
+	g.P()
+	g.generateDefaultConstants(mc, topLevelFields)
+	g.P()
+	g.generateGetters(mc, topLevelFields)
+	g.P()
+	g.generateSetters(mc, topLevelFields)
+	g.P()
+	g.generateOneofFuncs(mc, topLevelFields)
+	g.P()
+
+	var oneofTypes []string
+	for _, f := range topLevelFields {
+		if of, ok := f.(*oneofField); ok {
+			for _, osf := range of.subFields {
+				oneofTypes = append(oneofTypes, osf.oneofTypeName)
+			}
+		}
+	}
+
+	opts := message.Options
+	ms := &messageSymbol{
+		sym:           goTypeName,
+		hasExtensions: len(message.ExtensionRange) > 0,
+		isMessageSet:  opts != nil && opts.GetMessageSetWireFormat(),
+		oneofTypes:    oneofTypes,
+	}
+	g.file.addExport(message, ms)
+
+	for _, ext := range message.ext {
+		g.generateExtension(ext)
+	}
+
+	fullName := strings.Join(message.TypeName(), ".")
+	if g.file.Package != nil {
+		fullName = *g.file.Package + "." + fullName
+	}
+
+	g.addInitf("%s.RegisterType((*%s)(nil), %q)", g.Pkg["proto"], goTypeName, fullName)
+	// Register types for native map types.
+	for _, k := range mapFieldKeys(mapFieldTypes) {
+		fullName := strings.TrimPrefix(*k.TypeName, ".")
+		g.addInitf("%s.RegisterMapType((%s)(nil), %q)", g.Pkg["proto"], mapFieldTypes[k], fullName)
+	}
+
+}
+
+type byTypeName []*descriptor.FieldDescriptorProto
+
+func (a byTypeName) Len() int           { return len(a) }
+func (a byTypeName) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }
+func (a byTypeName) Less(i, j int) bool { return *a[i].TypeName < *a[j].TypeName }
+
+// mapFieldKeys returns the keys of m in a consistent order.
+func mapFieldKeys(m map[*descriptor.FieldDescriptorProto]string) []*descriptor.FieldDescriptorProto {
+	keys := make([]*descriptor.FieldDescriptorProto, 0, len(m))
+	for k := range m {
+		keys = append(keys, k)
+	}
+	sort.Sort(byTypeName(keys))
+	return keys
+}
+
+var escapeChars = [256]byte{
+	'a': '\a', 'b': '\b', 'f': '\f', 'n': '\n', 'r': '\r', 't': '\t', 'v': '\v', '\\': '\\', '"': '"', '\'': '\'', '?': '?',
+}
+
+// unescape reverses the "C" escaping that protoc does for default values of bytes fields.
+// It is best effort in that it effectively ignores malformed input. Seemingly invalid escape
+// sequences are conveyed, unmodified, into the decoded result.
+func unescape(s string) string {
+	// NB: Sadly, we can't use strconv.Unquote because protoc will escape both
+	// single and double quotes, but strconv.Unquote only allows one or the
+	// other (based on actual surrounding quotes of its input argument).
+
+	var out []byte
+	for len(s) > 0 {
+		// regular character, or too short to be valid escape
+		if s[0] != '\\' || len(s) < 2 {
+			out = append(out, s[0])
+			s = s[1:]
+		} else if c := escapeChars[s[1]]; c != 0 {
+			// escape sequence
+			out = append(out, c)
+			s = s[2:]
+		} else if s[1] == 'x' || s[1] == 'X' {
+			// hex escape, e.g. "\x80
+			if len(s) < 4 {
+				// too short to be valid
+				out = append(out, s[:2]...)
+				s = s[2:]
+				continue
+			}
+			v, err := strconv.ParseUint(s[2:4], 16, 8)
+			if err != nil {
+				out = append(out, s[:4]...)
+			} else {
+				out = append(out, byte(v))
+			}
+			s = s[4:]
+		} else if '0' <= s[1] && s[1] <= '7' {
+			// octal escape, can vary from 1 to 3 octal digits; e.g., "\0" "\40" or "\164"
+			// so consume up to 2 more bytes or up to end-of-string
+			n := len(s[1:]) - len(strings.TrimLeft(s[1:], "01234567"))
+			if n > 3 {
+				n = 3
+			}
+			v, err := strconv.ParseUint(s[1:1+n], 8, 8)
+			if err != nil {
+				out = append(out, s[:1+n]...)
+			} else {
+				out = append(out, byte(v))
+			}
+			s = s[1+n:]
+		} else {
+			// bad escape, just propagate the slash as-is
+			out = append(out, s[0])
+			s = s[1:]
+		}
+	}
+
+	return string(out)
+}
+
+func (g *Generator) generateExtension(ext *ExtensionDescriptor) {
+	ccTypeName := ext.DescName()
+
+	extObj := g.ObjectNamed(*ext.Extendee)
+	var extDesc *Descriptor
+	if id, ok := extObj.(*ImportedDescriptor); ok {
+		// This is extending a publicly imported message.
+		// We need the underlying type for goTag.
+		extDesc = id.o.(*Descriptor)
+	} else {
+		extDesc = extObj.(*Descriptor)
+	}
+	extendedType := "*" + g.TypeName(extObj) // always use the original
+	field := ext.FieldDescriptorProto
+	fieldType, wireType := g.GoType(ext.parent, field)
+	tag := g.goTag(extDesc, field, wireType)
+	g.RecordTypeUse(*ext.Extendee)
+	if n := ext.FieldDescriptorProto.TypeName; n != nil {
+		// foreign extension type
+		g.RecordTypeUse(*n)
+	}
+
+	typeName := ext.TypeName()
+
+	// Special case for proto2 message sets: If this extension is extending
+	// proto2.bridge.MessageSet, and its final name component is "message_set_extension",
+	// then drop that last component.
+	//
+	// TODO: This should be implemented in the text formatter rather than the generator.
+	// In addition, the situation for when to apply this special case is implemented
+	// differently in other languages:
+	// https://github.com/google/protobuf/blob/aff10976/src/google/protobuf/text_format.cc#L1560
+	if extDesc.GetOptions().GetMessageSetWireFormat() && typeName[len(typeName)-1] == "message_set_extension" {
+		typeName = typeName[:len(typeName)-1]
+	}
+
+	// For text formatting, the package must be exactly what the .proto file declares,
+	// ignoring overrides such as the go_package option, and with no dot/underscore mapping.
+	extName := strings.Join(typeName, ".")
+	if g.file.Package != nil {
+		extName = *g.file.Package + "." + extName
+	}
+
+	g.P("var ", ccTypeName, " = &", g.Pkg["proto"], ".ExtensionDesc{")
+	g.P("ExtendedType: (", extendedType, ")(nil),")
+	g.P("ExtensionType: (", fieldType, ")(nil),")
+	g.P("Field: ", field.Number, ",")
+	g.P(`Name: "`, extName, `",`)
+	g.P("Tag: ", tag, ",")
+	g.P(`Filename: "`, g.file.GetName(), `",`)
+
+	g.P("}")
+	g.P()
+
+	g.addInitf("%s.RegisterExtension(%s)", g.Pkg["proto"], ext.DescName())
+
+	g.file.addExport(ext, constOrVarSymbol{ccTypeName, "var", ""})
+}
+
+func (g *Generator) generateInitFunction() {
+	if len(g.init) == 0 {
+		return
+	}
+	g.P("func init() {")
+	for _, l := range g.init {
+		g.P(l)
+	}
+	g.P("}")
+	g.init = nil
+}
+
+func (g *Generator) generateFileDescriptor(file *FileDescriptor) {
+	// Make a copy and trim source_code_info data.
+	// TODO: Trim this more when we know exactly what we need.
+	pb := proto.Clone(file.FileDescriptorProto).(*descriptor.FileDescriptorProto)
+	pb.SourceCodeInfo = nil
+
+	b, err := proto.Marshal(pb)
+	if err != nil {
+		g.Fail(err.Error())
+	}
+
+	var buf bytes.Buffer
+	w, _ := gzip.NewWriterLevel(&buf, gzip.BestCompression)
+	w.Write(b)
+	w.Close()
+	b = buf.Bytes()
+
+	v := file.VarName()
+	g.P()
+	g.P("func init() {")
+	g.P(g.Pkg["proto"], ".RegisterFile(", strconv.Quote(*file.Name), ", ", v, ")")
+	g.P("}")
+	g.P("var ", v, " = []byte{")
+	g.P("// ", len(b), " bytes of a gzipped FileDescriptorProto")
+	for len(b) > 0 {
+		n := 16
+		if n > len(b) {
+			n = len(b)
+		}
+
+		s := ""
+		for _, c := range b[:n] {
+			s += fmt.Sprintf("0x%02x,", c)
+		}
+		g.P(s)
+
+		b = b[n:]
+	}
+	g.P("}")
+}
+
+func (g *Generator) generateEnumRegistration(enum *EnumDescriptor) {
+	// // We always print the full (proto-world) package name here.
+	pkg := enum.File().GetPackage()
+	if pkg != "" {
+		pkg += "."
+	}
+	// The full type name
+	typeName := enum.TypeName()
+	// The full type name, CamelCased.
+	ccTypeName := CamelCaseSlice(typeName)
+	g.addInitf("%s.RegisterEnum(%q, %[3]s_name, %[3]s_value)", g.Pkg["proto"], pkg+ccTypeName, ccTypeName)
+}
+
+// And now lots of helper functions.
+
+// Is c an ASCII lower-case letter?
+func isASCIILower(c byte) bool {
+	return 'a' <= c && c <= 'z'
+}
+
+// Is c an ASCII digit?
+func isASCIIDigit(c byte) bool {
+	return '0' <= c && c <= '9'
+}
+
+// CamelCase returns the CamelCased name.
+// If there is an interior underscore followed by a lower case letter,
+// drop the underscore and convert the letter to upper case.
+// There is a remote possibility of this rewrite causing a name collision,
+// but it's so remote we're prepared to pretend it's nonexistent - since the
+// C++ generator lowercases names, it's extremely unlikely to have two fields
+// with different capitalizations.
+// In short, _my_field_name_2 becomes XMyFieldName_2.
+func CamelCase(s string) string {
+	if s == "" {
+		return ""
+	}
+	t := make([]byte, 0, 32)
+	i := 0
+	if s[0] == '_' {
+		// Need a capital letter; drop the '_'.
+		t = append(t, 'X')
+		i++
+	}
+	// Invariant: if the next letter is lower case, it must be converted
+	// to upper case.
+	// That is, we process a word at a time, where words are marked by _ or
+	// upper case letter. Digits are treated as words.
+	for ; i < len(s); i++ {
+		c := s[i]
+		if c == '_' && i+1 < len(s) && isASCIILower(s[i+1]) {
+			continue // Skip the underscore in s.
+		}
+		if isASCIIDigit(c) {
+			t = append(t, c)
+			continue
+		}
+		// Assume we have a letter now - if not, it's a bogus identifier.
+		// The next word is a sequence of characters that must start upper case.
+		if isASCIILower(c) {
+			c ^= ' ' // Make it a capital letter.
+		}
+		t = append(t, c) // Guaranteed not lower case.
+		// Accept lower case sequence that follows.
+		for i+1 < len(s) && isASCIILower(s[i+1]) {
+			i++
+			t = append(t, s[i])
+		}
+	}
+	return string(t)
+}
+
+// CamelCaseSlice is like CamelCase, but the argument is a slice of strings to
+// be joined with "_".
+func CamelCaseSlice(elem []string) string { return CamelCase(strings.Join(elem, "_")) }
+
+// dottedSlice turns a sliced name into a dotted name.
+func dottedSlice(elem []string) string { return strings.Join(elem, ".") }
+
+// Is this field optional?
+func isOptional(field *descriptor.FieldDescriptorProto) bool {
+	return field.Label != nil && *field.Label == descriptor.FieldDescriptorProto_LABEL_OPTIONAL
+}
+
+// Is this field required?
+func isRequired(field *descriptor.FieldDescriptorProto) bool {
+	return field.Label != nil && *field.Label == descriptor.FieldDescriptorProto_LABEL_REQUIRED
+}
+
+// Is this field repeated?
+func isRepeated(field *descriptor.FieldDescriptorProto) bool {
+	return field.Label != nil && *field.Label == descriptor.FieldDescriptorProto_LABEL_REPEATED
+}
+
+// Is this field a scalar numeric type?
+func isScalar(field *descriptor.FieldDescriptorProto) bool {
+	if field.Type == nil {
+		return false
+	}
+	switch *field.Type {
+	case descriptor.FieldDescriptorProto_TYPE_DOUBLE,
+		descriptor.FieldDescriptorProto_TYPE_FLOAT,
+		descriptor.FieldDescriptorProto_TYPE_INT64,
+		descriptor.FieldDescriptorProto_TYPE_UINT64,
+		descriptor.FieldDescriptorProto_TYPE_INT32,
+		descriptor.FieldDescriptorProto_TYPE_FIXED64,
+		descriptor.FieldDescriptorProto_TYPE_FIXED32,
+		descriptor.FieldDescriptorProto_TYPE_BOOL,
+		descriptor.FieldDescriptorProto_TYPE_UINT32,
+		descriptor.FieldDescriptorProto_TYPE_ENUM,
+		descriptor.FieldDescriptorProto_TYPE_SFIXED32,
+		descriptor.FieldDescriptorProto_TYPE_SFIXED64,
+		descriptor.FieldDescriptorProto_TYPE_SINT32,
+		descriptor.FieldDescriptorProto_TYPE_SINT64:
+		return true
+	default:
+		return false
+	}
+}
+
+// badToUnderscore is the mapping function used to generate Go names from package names,
+// which can be dotted in the input .proto file.  It replaces non-identifier characters such as
+// dot or dash with underscore.
+func badToUnderscore(r rune) rune {
+	if unicode.IsLetter(r) || unicode.IsDigit(r) || r == '_' {
+		return r
+	}
+	return '_'
+}
+
+// baseName returns the last path element of the name, with the last dotted suffix removed.
+func baseName(name string) string {
+	// First, find the last element
+	if i := strings.LastIndex(name, "/"); i >= 0 {
+		name = name[i+1:]
+	}
+	// Now drop the suffix
+	if i := strings.LastIndex(name, "."); i >= 0 {
+		name = name[0:i]
+	}
+	return name
+}
+
+// The SourceCodeInfo message describes the location of elements of a parsed
+// .proto file by way of a "path", which is a sequence of integers that
+// describe the route from a FileDescriptorProto to the relevant submessage.
+// The path alternates between a field number of a repeated field, and an index
+// into that repeated field. The constants below define the field numbers that
+// are used.
+//
+// See descriptor.proto for more information about this.
+const (
+	// tag numbers in FileDescriptorProto
+	packagePath = 2 // package
+	messagePath = 4 // message_type
+	enumPath    = 5 // enum_type
+	// tag numbers in DescriptorProto
+	messageFieldPath   = 2 // field
+	messageMessagePath = 3 // nested_type
+	messageEnumPath    = 4 // enum_type
+	messageOneofPath   = 8 // oneof_decl
+	// tag numbers in EnumDescriptorProto
+	enumValuePath = 2 // value
+)
+
+var supportTypeAliases bool
+
+func init() {
+	for _, tag := range build.Default.ReleaseTags {
+		if tag == "go1.9" {
+			supportTypeAliases = true
+			return
+		}
+	}
+}
diff --git a/protoc-gen-go/generator/internal/remap/remap.go b/protoc-gen-go/generator/internal/remap/remap.go
new file mode 100644
index 0000000..39968eb
--- /dev/null
+++ b/protoc-gen-go/generator/internal/remap/remap.go
@@ -0,0 +1,117 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2017 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/*
+Package remap handles tracking the locations of Go tokens in a source text
+across a rewrite by the Go formatter.
+*/
+package remap
+
+import (
+	"fmt"
+	"go/scanner"
+	"go/token"
+)
+
+// A Location represents a span of byte offsets in the source text.
+type Location struct {
+	Pos, End int // End is exclusive
+}
+
+// A Map represents a mapping between token locations in an input source text
+// and locations in the corresponding output text.
+type Map map[Location]Location
+
+// Find reports whether the specified span is recorded by m, and if so returns
+// the new location it was mapped to. If the input span was not found, the
+// returned location is the same as the input.
+func (m Map) Find(pos, end int) (Location, bool) {
+	key := Location{
+		Pos: pos,
+		End: end,
+	}
+	if loc, ok := m[key]; ok {
+		return loc, true
+	}
+	return key, false
+}
+
+func (m Map) add(opos, oend, npos, nend int) {
+	m[Location{Pos: opos, End: oend}] = Location{Pos: npos, End: nend}
+}
+
+// Compute constructs a location mapping from input to output.  An error is
+// reported if any of the tokens of output cannot be mapped.
+func Compute(input, output []byte) (Map, error) {
+	itok := tokenize(input)
+	otok := tokenize(output)
+	if len(itok) != len(otok) {
+		return nil, fmt.Errorf("wrong number of tokens, %d ≠ %d", len(itok), len(otok))
+	}
+	m := make(Map)
+	for i, ti := range itok {
+		to := otok[i]
+		if ti.Token != to.Token {
+			return nil, fmt.Errorf("token %d type mismatch: %s ≠ %s", i+1, ti, to)
+		}
+		m.add(ti.pos, ti.end, to.pos, to.end)
+	}
+	return m, nil
+}
+
+// tokinfo records the span and type of a source token.
+type tokinfo struct {
+	pos, end int
+	token.Token
+}
+
+func tokenize(src []byte) []tokinfo {
+	fs := token.NewFileSet()
+	var s scanner.Scanner
+	s.Init(fs.AddFile("src", fs.Base(), len(src)), src, nil, scanner.ScanComments)
+	var info []tokinfo
+	for {
+		pos, next, lit := s.Scan()
+		switch next {
+		case token.SEMICOLON:
+			continue
+		}
+		info = append(info, tokinfo{
+			pos:   int(pos - 1),
+			end:   int(pos + token.Pos(len(lit)) - 1),
+			Token: next,
+		})
+		if next == token.EOF {
+			break
+		}
+	}
+	return info
+}
diff --git a/protoc-gen-go/generator/internal/remap/remap_test.go b/protoc-gen-go/generator/internal/remap/remap_test.go
new file mode 100644
index 0000000..ccc7fca
--- /dev/null
+++ b/protoc-gen-go/generator/internal/remap/remap_test.go
@@ -0,0 +1,82 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2017 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package remap
+
+import (
+	"go/format"
+	"testing"
+)
+
+func TestErrors(t *testing.T) {
+	tests := []struct {
+		in, out string
+	}{
+		{"", "x"},
+		{"x", ""},
+		{"var x int = 5\n", "var x = 5\n"},
+		{"these are \"one\" thing", "those are 'another' thing"},
+	}
+	for _, test := range tests {
+		m, err := Compute([]byte(test.in), []byte(test.out))
+		if err != nil {
+			t.Logf("Got expected error: %v", err)
+			continue
+		}
+		t.Errorf("Compute(%q, %q): got %+v, wanted error", test.in, test.out, m)
+	}
+}
+
+func TestMatching(t *testing.T) {
+	// The input is a source text that will be rearranged by the formatter.
+	const input = `package foo
+var s int
+func main(){}
+`
+
+	output, err := format.Source([]byte(input))
+	if err != nil {
+		t.Fatalf("Formatting failed: %v", err)
+	}
+	m, err := Compute([]byte(input), output)
+	if err != nil {
+		t.Fatalf("Unexpected error: %v", err)
+	}
+
+	// Verify that the mapped locations have the same text.
+	for key, val := range m {
+		want := input[key.Pos:key.End]
+		got := string(output[val.Pos:val.End])
+		if got != want {
+			t.Errorf("Token at %d:%d: got %q, want %q", key.Pos, key.End, got, want)
+		}
+	}
+}
diff --git a/protoc-gen-go/generator/name_test.go b/protoc-gen-go/generator/name_test.go
new file mode 100644
index 0000000..e4a119d
--- /dev/null
+++ b/protoc-gen-go/generator/name_test.go
@@ -0,0 +1,135 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2013 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package generator
+
+import (
+	"testing"
+
+	"github.com/golang/protobuf/protoc-gen-go/descriptor"
+)
+
+func TestCamelCase(t *testing.T) {
+	tests := []struct {
+		in, want string
+	}{
+		{"one", "One"},
+		{"one_two", "OneTwo"},
+		{"_my_field_name_2", "XMyFieldName_2"},
+		{"Something_Capped", "Something_Capped"},
+		{"my_Name", "My_Name"},
+		{"OneTwo", "OneTwo"},
+		{"_", "X"},
+		{"_a_", "XA_"},
+	}
+	for _, tc := range tests {
+		if got := CamelCase(tc.in); got != tc.want {
+			t.Errorf("CamelCase(%q) = %q, want %q", tc.in, got, tc.want)
+		}
+	}
+}
+
+func TestGoPackageOption(t *testing.T) {
+	tests := []struct {
+		in      string
+		impPath GoImportPath
+		pkg     GoPackageName
+		ok      bool
+	}{
+		{"", "", "", false},
+		{"foo", "", "foo", true},
+		{"github.com/golang/bar", "github.com/golang/bar", "bar", true},
+		{"github.com/golang/bar;baz", "github.com/golang/bar", "baz", true},
+		{"github.com/golang/string", "github.com/golang/string", "string", true},
+	}
+	for _, tc := range tests {
+		d := &FileDescriptor{
+			FileDescriptorProto: &descriptor.FileDescriptorProto{
+				Options: &descriptor.FileOptions{
+					GoPackage: &tc.in,
+				},
+			},
+		}
+		impPath, pkg, ok := d.goPackageOption()
+		if impPath != tc.impPath || pkg != tc.pkg || ok != tc.ok {
+			t.Errorf("go_package = %q => (%q, %q, %t), want (%q, %q, %t)", tc.in,
+				impPath, pkg, ok, tc.impPath, tc.pkg, tc.ok)
+		}
+	}
+}
+
+func TestPackageNames(t *testing.T) {
+	g := New()
+	g.packageNames = make(map[GoImportPath]GoPackageName)
+	g.usedPackageNames = make(map[GoPackageName]bool)
+	for _, test := range []struct {
+		importPath GoImportPath
+		want       GoPackageName
+	}{
+		{"github.com/golang/foo", "foo"},
+		{"github.com/golang/second/package/named/foo", "foo1"},
+		{"github.com/golang/third/package/named/foo", "foo2"},
+		{"github.com/golang/conflicts/with/predeclared/ident/string", "string1"},
+	} {
+		if got := g.GoPackageName(test.importPath); got != test.want {
+			t.Errorf("GoPackageName(%v) = %v, want %v", test.importPath, got, test.want)
+		}
+	}
+}
+
+func TestUnescape(t *testing.T) {
+	tests := []struct {
+		in  string
+		out string
+	}{
+		// successful cases, including all kinds of escapes
+		{"", ""},
+		{"foo bar baz frob nitz", "foo bar baz frob nitz"},
+		{`\000\001\002\003\004\005\006\007`, string([]byte{0, 1, 2, 3, 4, 5, 6, 7})},
+		{`\a\b\f\n\r\t\v\\\?\'\"`, string([]byte{'\a', '\b', '\f', '\n', '\r', '\t', '\v', '\\', '?', '\'', '"'})},
+		{`\x10\x20\x30\x40\x50\x60\x70\x80`, string([]byte{16, 32, 48, 64, 80, 96, 112, 128})},
+		// variable length octal escapes
+		{`\0\018\222\377\3\04\005\6\07`, string([]byte{0, 1, '8', 0222, 255, 3, 4, 5, 6, 7})},
+		// malformed escape sequences left as is
+		{"foo \\g bar", "foo \\g bar"},
+		{"foo \\xg0 bar", "foo \\xg0 bar"},
+		{"\\", "\\"},
+		{"\\x", "\\x"},
+		{"\\xf", "\\xf"},
+		{"\\777", "\\777"}, // overflows byte
+	}
+	for _, tc := range tests {
+		s := unescape(tc.in)
+		if s != tc.out {
+			t.Errorf("doUnescape(%q) = %q; should have been %q", tc.in, s, tc.out)
+		}
+	}
+}
diff --git a/protoc-gen-go/golden_test.go b/protoc-gen-go/golden_test.go
new file mode 100644
index 0000000..2950eac
--- /dev/null
+++ b/protoc-gen-go/golden_test.go
@@ -0,0 +1,363 @@
+package main
+
+import (
+	"bytes"
+	"flag"
+	"go/build"
+	"go/parser"
+	"go/token"
+	"io/ioutil"
+	"os"
+	"os/exec"
+	"path/filepath"
+	"regexp"
+	"runtime"
+	"strings"
+	"testing"
+)
+
+// Set --regenerate to regenerate the golden files.
+var regenerate = flag.Bool("regenerate", false, "regenerate golden files")
+
+// When the environment variable RUN_AS_PROTOC_GEN_GO is set, we skip running
+// tests and instead act as protoc-gen-go. This allows the test binary to
+// pass itself to protoc.
+func init() {
+	if os.Getenv("RUN_AS_PROTOC_GEN_GO") != "" {
+		main()
+		os.Exit(0)
+	}
+}
+
+func TestGolden(t *testing.T) {
+	workdir, err := ioutil.TempDir("", "proto-test")
+	if err != nil {
+		t.Fatal(err)
+	}
+	defer os.RemoveAll(workdir)
+
+	// Find all the proto files we need to compile. We assume that each directory
+	// contains the files for a single package.
+	supportTypeAliases := hasReleaseTag("go1.9")
+	packages := map[string][]string{}
+	err = filepath.Walk("testdata", func(path string, info os.FileInfo, err error) error {
+		if filepath.Base(path) == "import_public" && !supportTypeAliases {
+			// Public imports require type alias support.
+			return filepath.SkipDir
+		}
+		if !strings.HasSuffix(path, ".proto") {
+			return nil
+		}
+		dir := filepath.Dir(path)
+		packages[dir] = append(packages[dir], path)
+		return nil
+	})
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	// Compile each package, using this binary as protoc-gen-go.
+	for _, sources := range packages {
+		args := []string{"-Itestdata", "--go_out=plugins=grpc,paths=source_relative:" + workdir}
+		args = append(args, sources...)
+		protoc(t, args)
+	}
+
+	// Compare each generated file to the golden version.
+	filepath.Walk(workdir, func(genPath string, info os.FileInfo, _ error) error {
+		if info.IsDir() {
+			return nil
+		}
+
+		// For each generated file, figure out the path to the corresponding
+		// golden file in the testdata directory.
+		relPath, err := filepath.Rel(workdir, genPath)
+		if err != nil {
+			t.Errorf("filepath.Rel(%q, %q): %v", workdir, genPath, err)
+			return nil
+		}
+		if filepath.SplitList(relPath)[0] == ".." {
+			t.Errorf("generated file %q is not relative to %q", genPath, workdir)
+		}
+		goldenPath := filepath.Join("testdata", relPath)
+
+		got, err := ioutil.ReadFile(genPath)
+		if err != nil {
+			t.Error(err)
+			return nil
+		}
+		if *regenerate {
+			// If --regenerate set, just rewrite the golden files.
+			err := ioutil.WriteFile(goldenPath, got, 0666)
+			if err != nil {
+				t.Error(err)
+			}
+			return nil
+		}
+
+		want, err := ioutil.ReadFile(goldenPath)
+		if err != nil {
+			t.Error(err)
+			return nil
+		}
+
+		want = fdescRE.ReplaceAll(want, nil)
+		got = fdescRE.ReplaceAll(got, nil)
+		if bytes.Equal(got, want) {
+			return nil
+		}
+
+		cmd := exec.Command("diff", "-u", goldenPath, genPath)
+		out, _ := cmd.CombinedOutput()
+		t.Errorf("golden file differs: %v\n%v", relPath, string(out))
+		return nil
+	})
+}
+
+var fdescRE = regexp.MustCompile(`(?ms)^var fileDescriptor.*}`)
+
+// Source files used by TestParameters.
+const (
+	aProto = `
+syntax = "proto3";
+package test.alpha;
+option go_package = "package/alpha";
+import "beta/b.proto";
+message M { test.beta.M field = 1; }`
+
+	bProto = `
+syntax = "proto3";
+package test.beta;
+// no go_package option
+message M {}`
+)
+
+func TestParameters(t *testing.T) {
+	for _, test := range []struct {
+		parameters   string
+		wantFiles    map[string]bool
+		wantImportsA map[string]bool
+		wantPackageA string
+		wantPackageB string
+	}{{
+		parameters: "",
+		wantFiles: map[string]bool{
+			"package/alpha/a.pb.go": true,
+			"beta/b.pb.go":          true,
+		},
+		wantPackageA: "alpha",
+		wantPackageB: "test_beta",
+		wantImportsA: map[string]bool{
+			"github.com/golang/protobuf/proto": true,
+			"beta":                             true,
+		},
+	}, {
+		parameters: "import_prefix=prefix",
+		wantFiles: map[string]bool{
+			"package/alpha/a.pb.go": true,
+			"beta/b.pb.go":          true,
+		},
+		wantPackageA: "alpha",
+		wantPackageB: "test_beta",
+		wantImportsA: map[string]bool{
+			// This really doesn't seem like useful behavior.
+			"prefixgithub.com/golang/protobuf/proto": true,
+			"prefixbeta":                             true,
+		},
+	}, {
+		// import_path only affects the 'package' line.
+		parameters:   "import_path=import/path/of/pkg",
+		wantPackageA: "alpha",
+		wantPackageB: "pkg",
+		wantFiles: map[string]bool{
+			"package/alpha/a.pb.go": true,
+			"beta/b.pb.go":          true,
+		},
+	}, {
+		parameters: "Mbeta/b.proto=package/gamma",
+		wantFiles: map[string]bool{
+			"package/alpha/a.pb.go": true,
+			"beta/b.pb.go":          true,
+		},
+		wantPackageA: "alpha",
+		wantPackageB: "test_beta",
+		wantImportsA: map[string]bool{
+			"github.com/golang/protobuf/proto": true,
+			// Rewritten by the M parameter.
+			"package/gamma": true,
+		},
+	}, {
+		parameters: "import_prefix=prefix,Mbeta/b.proto=package/gamma",
+		wantFiles: map[string]bool{
+			"package/alpha/a.pb.go": true,
+			"beta/b.pb.go":          true,
+		},
+		wantPackageA: "alpha",
+		wantPackageB: "test_beta",
+		wantImportsA: map[string]bool{
+			// import_prefix applies after M.
+			"prefixpackage/gamma": true,
+		},
+	}, {
+		parameters: "paths=source_relative",
+		wantFiles: map[string]bool{
+			"alpha/a.pb.go": true,
+			"beta/b.pb.go":  true,
+		},
+		wantPackageA: "alpha",
+		wantPackageB: "test_beta",
+	}, {
+		parameters: "paths=source_relative,import_prefix=prefix",
+		wantFiles: map[string]bool{
+			// import_prefix doesn't affect filenames.
+			"alpha/a.pb.go": true,
+			"beta/b.pb.go":  true,
+		},
+		wantPackageA: "alpha",
+		wantPackageB: "test_beta",
+	}} {
+		name := test.parameters
+		if name == "" {
+			name = "defaults"
+		}
+		// TODO: Switch to t.Run when we no longer support Go 1.6.
+		t.Logf("TEST: %v", name)
+		workdir, err := ioutil.TempDir("", "proto-test")
+		if err != nil {
+			t.Fatal(err)
+		}
+		defer os.RemoveAll(workdir)
+
+		for _, dir := range []string{"alpha", "beta", "out"} {
+			if err := os.MkdirAll(filepath.Join(workdir, dir), 0777); err != nil {
+				t.Fatal(err)
+			}
+		}
+
+		if err := ioutil.WriteFile(filepath.Join(workdir, "alpha", "a.proto"), []byte(aProto), 0666); err != nil {
+			t.Fatal(err)
+		}
+
+		if err := ioutil.WriteFile(filepath.Join(workdir, "beta", "b.proto"), []byte(bProto), 0666); err != nil {
+			t.Fatal(err)
+		}
+
+		protoc(t, []string{
+			"-I" + workdir,
+			"--go_out=" + test.parameters + ":" + filepath.Join(workdir, "out"),
+			filepath.Join(workdir, "alpha", "a.proto"),
+		})
+		protoc(t, []string{
+			"-I" + workdir,
+			"--go_out=" + test.parameters + ":" + filepath.Join(workdir, "out"),
+			filepath.Join(workdir, "beta", "b.proto"),
+		})
+
+		contents := make(map[string]string)
+		gotFiles := make(map[string]bool)
+		outdir := filepath.Join(workdir, "out")
+		filepath.Walk(outdir, func(p string, info os.FileInfo, _ error) error {
+			if info.IsDir() {
+				return nil
+			}
+			base := filepath.Base(p)
+			if base == "a.pb.go" || base == "b.pb.go" {
+				b, err := ioutil.ReadFile(p)
+				if err != nil {
+					t.Fatal(err)
+				}
+				contents[base] = string(b)
+			}
+			relPath, _ := filepath.Rel(outdir, p)
+			gotFiles[relPath] = true
+			return nil
+		})
+		for got := range gotFiles {
+			if runtime.GOOS == "windows" {
+				got = filepath.ToSlash(got)
+			}
+			if !test.wantFiles[got] {
+				t.Errorf("unexpected output file: %v", got)
+			}
+		}
+		for want := range test.wantFiles {
+			if runtime.GOOS == "windows" {
+				want = filepath.FromSlash(want)
+			}
+			if !gotFiles[want] {
+				t.Errorf("missing output file:    %v", want)
+			}
+		}
+		gotPackageA, gotImports, err := parseFile(contents["a.pb.go"])
+		if err != nil {
+			t.Fatal(err)
+		}
+		gotPackageB, _, err := parseFile(contents["b.pb.go"])
+		if err != nil {
+			t.Fatal(err)
+		}
+		if got, want := gotPackageA, test.wantPackageA; want != got {
+			t.Errorf("output file a.pb.go is package %q, want %q", got, want)
+		}
+		if got, want := gotPackageB, test.wantPackageB; want != got {
+			t.Errorf("output file b.pb.go is package %q, want %q", got, want)
+		}
+		missingImport := false
+	WantImport:
+		for want := range test.wantImportsA {
+			for _, imp := range gotImports {
+				if `"`+want+`"` == imp {
+					continue WantImport
+				}
+			}
+			t.Errorf("output file a.pb.go does not contain expected import %q", want)
+			missingImport = true
+		}
+		if missingImport {
+			t.Error("got imports:")
+			for _, imp := range gotImports {
+				t.Errorf("  %v", imp)
+			}
+		}
+	}
+}
+
+// parseFile returns a file's package name and a list of all packages it imports.
+func parseFile(source string) (packageName string, imports []string, err error) {
+	fset := token.NewFileSet()
+	f, err := parser.ParseFile(fset, "<source>", source, parser.ImportsOnly)
+	if err != nil {
+		return "", nil, err
+	}
+	for _, imp := range f.Imports {
+		imports = append(imports, imp.Path.Value)
+	}
+	return f.Name.Name, imports, nil
+}
+
+func protoc(t *testing.T, args []string) {
+	cmd := exec.Command("protoc", "--plugin=protoc-gen-go="+os.Args[0])
+	cmd.Args = append(cmd.Args, args...)
+	// We set the RUN_AS_PROTOC_GEN_GO 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_GEN_GO=1")
+	out, err := cmd.CombinedOutput()
+	if len(out) > 0 || err != nil {
+		t.Log("RUNNING: ", strings.Join(cmd.Args, " "))
+	}
+	if len(out) > 0 {
+		t.Log(string(out))
+	}
+	if err != nil {
+		t.Fatalf("protoc: %v", err)
+	}
+}
+
+func hasReleaseTag(want string) bool {
+	for _, tag := range build.Default.ReleaseTags {
+		if tag == want {
+			return true
+		}
+	}
+	return false
+}
diff --git a/protoc-gen-go/grpc/grpc.go b/protoc-gen-go/grpc/grpc.go
new file mode 100644
index 0000000..957c3f2
--- /dev/null
+++ b/protoc-gen-go/grpc/grpc.go
@@ -0,0 +1,545 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2015 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Package grpc outputs gRPC service descriptions in Go code.
+// It runs as a plugin for the Go protocol buffer compiler plugin.
+// It is linked in to protoc-gen-go.
+package grpc
+
+import (
+	"fmt"
+	"strconv"
+	"strings"
+
+	pb "github.com/golang/protobuf/protoc-gen-go/descriptor"
+	"github.com/golang/protobuf/protoc-gen-go/generator"
+)
+
+// generatedCodeVersion indicates a version of the generated code.
+// It is incremented whenever an incompatibility between the generated code and
+// the grpc package is introduced; the generated code references
+// a constant, grpc.SupportPackageIsVersionN (where N is generatedCodeVersion).
+const generatedCodeVersion = 6
+
+// Paths for packages used by code generated in this file,
+// relative to the import_prefix of the generator.Generator.
+const (
+	contextPkgPath = "context"
+	grpcPkgPath    = "google.golang.org/grpc"
+	codePkgPath    = "google.golang.org/grpc/codes"
+	statusPkgPath  = "google.golang.org/grpc/status"
+)
+
+func init() {
+	generator.RegisterPlugin(new(grpc))
+}
+
+// grpc is an implementation of the Go protocol buffer compiler's
+// plugin architecture.  It generates bindings for gRPC support.
+type grpc struct {
+	gen *generator.Generator
+}
+
+// Name returns the name of this plugin, "grpc".
+func (g *grpc) Name() string {
+	return "grpc"
+}
+
+// The names for packages imported in the generated code.
+// They may vary from the final path component of the import path
+// if the name is used by other packages.
+var (
+	contextPkg string
+	grpcPkg    string
+)
+
+// Init initializes the plugin.
+func (g *grpc) Init(gen *generator.Generator) {
+	g.gen = gen
+}
+
+// Given a type name defined in a .proto, return its object.
+// Also record that we're using it, to guarantee the associated import.
+func (g *grpc) objectNamed(name string) generator.Object {
+	g.gen.RecordTypeUse(name)
+	return g.gen.ObjectNamed(name)
+}
+
+// Given a type name defined in a .proto, return its name as we will print it.
+func (g *grpc) typeName(str string) string {
+	return g.gen.TypeName(g.objectNamed(str))
+}
+
+// P forwards to g.gen.P.
+func (g *grpc) P(args ...interface{}) { g.gen.P(args...) }
+
+// Generate generates code for the services in the given file.
+func (g *grpc) Generate(file *generator.FileDescriptor) {
+	if len(file.FileDescriptorProto.Service) == 0 {
+		return
+	}
+
+	contextPkg = string(g.gen.AddImport(contextPkgPath))
+	grpcPkg = string(g.gen.AddImport(grpcPkgPath))
+
+	g.P("// Reference imports to suppress errors if they are not otherwise used.")
+	g.P("var _ ", contextPkg, ".Context")
+	g.P("var _ ", grpcPkg, ".ClientConnInterface")
+	g.P()
+
+	// Assert version compatibility.
+	g.P("// This is a compile-time assertion to ensure that this generated file")
+	g.P("// is compatible with the grpc package it is being compiled against.")
+	g.P("const _ = ", grpcPkg, ".SupportPackageIsVersion", generatedCodeVersion)
+	g.P()
+
+	for i, service := range file.FileDescriptorProto.Service {
+		g.generateService(file, service, i)
+	}
+}
+
+// GenerateImports generates the import declaration for this file.
+func (g *grpc) GenerateImports(file *generator.FileDescriptor) {
+}
+
+// reservedClientName records whether a client name is reserved on the client side.
+var reservedClientName = map[string]bool{
+	// TODO: do we need any in gRPC?
+}
+
+func unexport(s string) string { return strings.ToLower(s[:1]) + s[1:] }
+
+// deprecationComment is the standard comment added to deprecated
+// messages, fields, enums, and enum values.
+var deprecationComment = "// Deprecated: Do not use."
+
+// generateService generates all the code for the named service.
+func (g *grpc) generateService(file *generator.FileDescriptor, service *pb.ServiceDescriptorProto, index int) {
+	path := fmt.Sprintf("6,%d", index) // 6 means service.
+
+	origServName := service.GetName()
+	fullServName := origServName
+	if pkg := file.GetPackage(); pkg != "" {
+		fullServName = pkg + "." + fullServName
+	}
+	servName := generator.CamelCase(origServName)
+	deprecated := service.GetOptions().GetDeprecated()
+
+	g.P()
+	g.P(fmt.Sprintf(`// %sClient is the client API for %s service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.`, servName, servName))
+
+	// Client interface.
+	if deprecated {
+		g.P("//")
+		g.P(deprecationComment)
+	}
+	g.P("type ", servName, "Client interface {")
+	for i, method := range service.Method {
+		g.gen.PrintComments(fmt.Sprintf("%s,2,%d", path, i)) // 2 means method in a service.
+		if method.GetOptions().GetDeprecated() {
+			g.P("//")
+			g.P(deprecationComment)
+		}
+		g.P(g.generateClientSignature(servName, method))
+	}
+	g.P("}")
+	g.P()
+
+	// Client structure.
+	g.P("type ", unexport(servName), "Client struct {")
+	g.P("cc ", grpcPkg, ".ClientConnInterface")
+	g.P("}")
+	g.P()
+
+	// NewClient factory.
+	if deprecated {
+		g.P(deprecationComment)
+	}
+	g.P("func New", servName, "Client (cc ", grpcPkg, ".ClientConnInterface) ", servName, "Client {")
+	g.P("return &", unexport(servName), "Client{cc}")
+	g.P("}")
+	g.P()
+
+	var methodIndex, streamIndex int
+	serviceDescVar := "_" + servName + "_serviceDesc"
+	// Client method implementations.
+	for _, method := range service.Method {
+		var descExpr string
+		if !method.GetServerStreaming() && !method.GetClientStreaming() {
+			// Unary RPC method
+			descExpr = fmt.Sprintf("&%s.Methods[%d]", serviceDescVar, methodIndex)
+			methodIndex++
+		} else {
+			// Streaming RPC method
+			descExpr = fmt.Sprintf("&%s.Streams[%d]", serviceDescVar, streamIndex)
+			streamIndex++
+		}
+		g.generateClientMethod(servName, fullServName, serviceDescVar, method, descExpr)
+	}
+
+	// Server interface.
+	serverType := servName + "Server"
+	g.P("// ", serverType, " is the server API for ", servName, " service.")
+	if deprecated {
+		g.P("//")
+		g.P(deprecationComment)
+	}
+	g.P("type ", serverType, " interface {")
+	for i, method := range service.Method {
+		g.gen.PrintComments(fmt.Sprintf("%s,2,%d", path, i)) // 2 means method in a service.
+		if method.GetOptions().GetDeprecated() {
+			g.P("//")
+			g.P(deprecationComment)
+		}
+		g.P(g.generateServerSignature(servName, method))
+	}
+	g.P("}")
+	g.P()
+
+	// Server Unimplemented struct for forward compatibility.
+	if deprecated {
+		g.P(deprecationComment)
+	}
+	g.generateUnimplementedServer(servName, service)
+
+	// Server registration.
+	if deprecated {
+		g.P(deprecationComment)
+	}
+	g.P("func Register", servName, "Server(s *", grpcPkg, ".Server, srv ", serverType, ") {")
+	g.P("s.RegisterService(&", serviceDescVar, `, srv)`)
+	g.P("}")
+	g.P()
+
+	// Server handler implementations.
+	var handlerNames []string
+	for _, method := range service.Method {
+		hname := g.generateServerMethod(servName, fullServName, method)
+		handlerNames = append(handlerNames, hname)
+	}
+
+	// Service descriptor.
+	g.P("var ", serviceDescVar, " = ", grpcPkg, ".ServiceDesc {")
+	g.P("ServiceName: ", strconv.Quote(fullServName), ",")
+	g.P("HandlerType: (*", serverType, ")(nil),")
+	g.P("Methods: []", grpcPkg, ".MethodDesc{")
+	for i, method := range service.Method {
+		if method.GetServerStreaming() || method.GetClientStreaming() {
+			continue
+		}
+		g.P("{")
+		g.P("MethodName: ", strconv.Quote(method.GetName()), ",")
+		g.P("Handler: ", handlerNames[i], ",")
+		g.P("},")
+	}
+	g.P("},")
+	g.P("Streams: []", grpcPkg, ".StreamDesc{")
+	for i, method := range service.Method {
+		if !method.GetServerStreaming() && !method.GetClientStreaming() {
+			continue
+		}
+		g.P("{")
+		g.P("StreamName: ", strconv.Quote(method.GetName()), ",")
+		g.P("Handler: ", handlerNames[i], ",")
+		if method.GetServerStreaming() {
+			g.P("ServerStreams: true,")
+		}
+		if method.GetClientStreaming() {
+			g.P("ClientStreams: true,")
+		}
+		g.P("},")
+	}
+	g.P("},")
+	g.P("Metadata: \"", file.GetName(), "\",")
+	g.P("}")
+	g.P()
+}
+
+// generateUnimplementedServer creates the unimplemented server struct
+func (g *grpc) generateUnimplementedServer(servName string, service *pb.ServiceDescriptorProto) {
+	serverType := servName + "Server"
+	g.P("// Unimplemented", serverType, " can be embedded to have forward compatible implementations.")
+	g.P("type Unimplemented", serverType, " struct {")
+	g.P("}")
+	g.P()
+	// Unimplemented<service_name>Server's concrete methods
+	for _, method := range service.Method {
+		g.generateServerMethodConcrete(servName, method)
+	}
+	g.P()
+}
+
+// generateServerMethodConcrete returns unimplemented methods which ensure forward compatibility
+func (g *grpc) generateServerMethodConcrete(servName string, method *pb.MethodDescriptorProto) {
+	header := g.generateServerSignatureWithParamNames(servName, method)
+	g.P("func (*Unimplemented", servName, "Server) ", header, " {")
+	var nilArg string
+	if !method.GetServerStreaming() && !method.GetClientStreaming() {
+		nilArg = "nil, "
+	}
+	methName := generator.CamelCase(method.GetName())
+	statusPkg := string(g.gen.AddImport(statusPkgPath))
+	codePkg := string(g.gen.AddImport(codePkgPath))
+	g.P("return ", nilArg, statusPkg, `.Errorf(`, codePkg, `.Unimplemented, "method `, methName, ` not implemented")`)
+	g.P("}")
+}
+
+// generateClientSignature returns the client-side signature for a method.
+func (g *grpc) generateClientSignature(servName string, method *pb.MethodDescriptorProto) string {
+	origMethName := method.GetName()
+	methName := generator.CamelCase(origMethName)
+	if reservedClientName[methName] {
+		methName += "_"
+	}
+	reqArg := ", in *" + g.typeName(method.GetInputType())
+	if method.GetClientStreaming() {
+		reqArg = ""
+	}
+	respName := "*" + g.typeName(method.GetOutputType())
+	if method.GetServerStreaming() || method.GetClientStreaming() {
+		respName = servName + "_" + generator.CamelCase(origMethName) + "Client"
+	}
+	return fmt.Sprintf("%s(ctx %s.Context%s, opts ...%s.CallOption) (%s, error)", methName, contextPkg, reqArg, grpcPkg, respName)
+}
+
+func (g *grpc) generateClientMethod(servName, fullServName, serviceDescVar string, method *pb.MethodDescriptorProto, descExpr string) {
+	sname := fmt.Sprintf("/%s/%s", fullServName, method.GetName())
+	methName := generator.CamelCase(method.GetName())
+	inType := g.typeName(method.GetInputType())
+	outType := g.typeName(method.GetOutputType())
+
+	if method.GetOptions().GetDeprecated() {
+		g.P(deprecationComment)
+	}
+	g.P("func (c *", unexport(servName), "Client) ", g.generateClientSignature(servName, method), "{")
+	if !method.GetServerStreaming() && !method.GetClientStreaming() {
+		g.P("out := new(", outType, ")")
+		// TODO: Pass descExpr to Invoke.
+		g.P(`err := c.cc.Invoke(ctx, "`, sname, `", in, out, opts...)`)
+		g.P("if err != nil { return nil, err }")
+		g.P("return out, nil")
+		g.P("}")
+		g.P()
+		return
+	}
+	streamType := unexport(servName) + methName + "Client"
+	g.P("stream, err := c.cc.NewStream(ctx, ", descExpr, `, "`, sname, `", opts...)`)
+	g.P("if err != nil { return nil, err }")
+	g.P("x := &", streamType, "{stream}")
+	if !method.GetClientStreaming() {
+		g.P("if err := x.ClientStream.SendMsg(in); err != nil { return nil, err }")
+		g.P("if err := x.ClientStream.CloseSend(); err != nil { return nil, err }")
+	}
+	g.P("return x, nil")
+	g.P("}")
+	g.P()
+
+	genSend := method.GetClientStreaming()
+	genRecv := method.GetServerStreaming()
+	genCloseAndRecv := !method.GetServerStreaming()
+
+	// Stream auxiliary types and methods.
+	g.P("type ", servName, "_", methName, "Client interface {")
+	if genSend {
+		g.P("Send(*", inType, ") error")
+	}
+	if genRecv {
+		g.P("Recv() (*", outType, ", error)")
+	}
+	if genCloseAndRecv {
+		g.P("CloseAndRecv() (*", outType, ", error)")
+	}
+	g.P(grpcPkg, ".ClientStream")
+	g.P("}")
+	g.P()
+
+	g.P("type ", streamType, " struct {")
+	g.P(grpcPkg, ".ClientStream")
+	g.P("}")
+	g.P()
+
+	if genSend {
+		g.P("func (x *", streamType, ") Send(m *", inType, ") error {")
+		g.P("return x.ClientStream.SendMsg(m)")
+		g.P("}")
+		g.P()
+	}
+	if genRecv {
+		g.P("func (x *", streamType, ") Recv() (*", outType, ", error) {")
+		g.P("m := new(", outType, ")")
+		g.P("if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err }")
+		g.P("return m, nil")
+		g.P("}")
+		g.P()
+	}
+	if genCloseAndRecv {
+		g.P("func (x *", streamType, ") CloseAndRecv() (*", outType, ", error) {")
+		g.P("if err := x.ClientStream.CloseSend(); err != nil { return nil, err }")
+		g.P("m := new(", outType, ")")
+		g.P("if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err }")
+		g.P("return m, nil")
+		g.P("}")
+		g.P()
+	}
+}
+
+// generateServerSignatureWithParamNames returns the server-side signature for a method with parameter names.
+func (g *grpc) generateServerSignatureWithParamNames(servName string, method *pb.MethodDescriptorProto) string {
+	origMethName := method.GetName()
+	methName := generator.CamelCase(origMethName)
+	if reservedClientName[methName] {
+		methName += "_"
+	}
+
+	var reqArgs []string
+	ret := "error"
+	if !method.GetServerStreaming() && !method.GetClientStreaming() {
+		reqArgs = append(reqArgs, "ctx "+contextPkg+".Context")
+		ret = "(*" + g.typeName(method.GetOutputType()) + ", error)"
+	}
+	if !method.GetClientStreaming() {
+		reqArgs = append(reqArgs, "req *"+g.typeName(method.GetInputType()))
+	}
+	if method.GetServerStreaming() || method.GetClientStreaming() {
+		reqArgs = append(reqArgs, "srv "+servName+"_"+generator.CamelCase(origMethName)+"Server")
+	}
+
+	return methName + "(" + strings.Join(reqArgs, ", ") + ") " + ret
+}
+
+// generateServerSignature returns the server-side signature for a method.
+func (g *grpc) generateServerSignature(servName string, method *pb.MethodDescriptorProto) string {
+	origMethName := method.GetName()
+	methName := generator.CamelCase(origMethName)
+	if reservedClientName[methName] {
+		methName += "_"
+	}
+
+	var reqArgs []string
+	ret := "error"
+	if !method.GetServerStreaming() && !method.GetClientStreaming() {
+		reqArgs = append(reqArgs, contextPkg+".Context")
+		ret = "(*" + g.typeName(method.GetOutputType()) + ", error)"
+	}
+	if !method.GetClientStreaming() {
+		reqArgs = append(reqArgs, "*"+g.typeName(method.GetInputType()))
+	}
+	if method.GetServerStreaming() || method.GetClientStreaming() {
+		reqArgs = append(reqArgs, servName+"_"+generator.CamelCase(origMethName)+"Server")
+	}
+
+	return methName + "(" + strings.Join(reqArgs, ", ") + ") " + ret
+}
+
+func (g *grpc) generateServerMethod(servName, fullServName string, method *pb.MethodDescriptorProto) string {
+	methName := generator.CamelCase(method.GetName())
+	hname := fmt.Sprintf("_%s_%s_Handler", servName, methName)
+	inType := g.typeName(method.GetInputType())
+	outType := g.typeName(method.GetOutputType())
+
+	if !method.GetServerStreaming() && !method.GetClientStreaming() {
+		g.P("func ", hname, "(srv interface{}, ctx ", contextPkg, ".Context, dec func(interface{}) error, interceptor ", grpcPkg, ".UnaryServerInterceptor) (interface{}, error) {")
+		g.P("in := new(", inType, ")")
+		g.P("if err := dec(in); err != nil { return nil, err }")
+		g.P("if interceptor == nil { return srv.(", servName, "Server).", methName, "(ctx, in) }")
+		g.P("info := &", grpcPkg, ".UnaryServerInfo{")
+		g.P("Server: srv,")
+		g.P("FullMethod: ", strconv.Quote(fmt.Sprintf("/%s/%s", fullServName, methName)), ",")
+		g.P("}")
+		g.P("handler := func(ctx ", contextPkg, ".Context, req interface{}) (interface{}, error) {")
+		g.P("return srv.(", servName, "Server).", methName, "(ctx, req.(*", inType, "))")
+		g.P("}")
+		g.P("return interceptor(ctx, in, info, handler)")
+		g.P("}")
+		g.P()
+		return hname
+	}
+	streamType := unexport(servName) + methName + "Server"
+	g.P("func ", hname, "(srv interface{}, stream ", grpcPkg, ".ServerStream) error {")
+	if !method.GetClientStreaming() {
+		g.P("m := new(", inType, ")")
+		g.P("if err := stream.RecvMsg(m); err != nil { return err }")
+		g.P("return srv.(", servName, "Server).", methName, "(m, &", streamType, "{stream})")
+	} else {
+		g.P("return srv.(", servName, "Server).", methName, "(&", streamType, "{stream})")
+	}
+	g.P("}")
+	g.P()
+
+	genSend := method.GetServerStreaming()
+	genSendAndClose := !method.GetServerStreaming()
+	genRecv := method.GetClientStreaming()
+
+	// Stream auxiliary types and methods.
+	g.P("type ", servName, "_", methName, "Server interface {")
+	if genSend {
+		g.P("Send(*", outType, ") error")
+	}
+	if genSendAndClose {
+		g.P("SendAndClose(*", outType, ") error")
+	}
+	if genRecv {
+		g.P("Recv() (*", inType, ", error)")
+	}
+	g.P(grpcPkg, ".ServerStream")
+	g.P("}")
+	g.P()
+
+	g.P("type ", streamType, " struct {")
+	g.P(grpcPkg, ".ServerStream")
+	g.P("}")
+	g.P()
+
+	if genSend {
+		g.P("func (x *", streamType, ") Send(m *", outType, ") error {")
+		g.P("return x.ServerStream.SendMsg(m)")
+		g.P("}")
+		g.P()
+	}
+	if genSendAndClose {
+		g.P("func (x *", streamType, ") SendAndClose(m *", outType, ") error {")
+		g.P("return x.ServerStream.SendMsg(m)")
+		g.P("}")
+		g.P()
+	}
+	if genRecv {
+		g.P("func (x *", streamType, ") Recv() (*", inType, ", error) {")
+		g.P("m := new(", inType, ")")
+		g.P("if err := x.ServerStream.RecvMsg(m); err != nil { return nil, err }")
+		g.P("return m, nil")
+		g.P("}")
+		g.P()
+	}
+
+	return hname
+}
diff --git a/protoc-gen-go/link_grpc.go b/protoc-gen-go/link_grpc.go
new file mode 100644
index 0000000..532a550
--- /dev/null
+++ b/protoc-gen-go/link_grpc.go
@@ -0,0 +1,34 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2015 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package main
+
+import _ "github.com/golang/protobuf/protoc-gen-go/grpc"
diff --git a/protoc-gen-go/main.go b/protoc-gen-go/main.go
new file mode 100644
index 0000000..8e2486d
--- /dev/null
+++ b/protoc-gen-go/main.go
@@ -0,0 +1,98 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// protoc-gen-go is a plugin for the Google protocol buffer compiler to generate
+// Go code.  Run it by building this program and putting it in your path with
+// the name
+// 	protoc-gen-go
+// That word 'go' at the end becomes part of the option string set for the
+// protocol compiler, so once the protocol compiler (protoc) is installed
+// you can run
+// 	protoc --go_out=output_directory input_directory/file.proto
+// to generate Go bindings for the protocol defined by file.proto.
+// With that input, the output will be written to
+// 	output_directory/file.pb.go
+//
+// The generated code is documented in the package comment for
+// the library.
+//
+// See the README and documentation for protocol buffers to learn more:
+// 	https://developers.google.com/protocol-buffers/
+package main
+
+import (
+	"io/ioutil"
+	"os"
+
+	"github.com/golang/protobuf/proto"
+	"github.com/golang/protobuf/protoc-gen-go/generator"
+)
+
+func main() {
+	// Begin by allocating a generator. The request and response structures are stored there
+	// so we can do error handling easily - the response structure contains the field to
+	// report failure.
+	g := generator.New()
+
+	data, err := ioutil.ReadAll(os.Stdin)
+	if err != nil {
+		g.Error(err, "reading input")
+	}
+
+	if err := proto.Unmarshal(data, g.Request); err != nil {
+		g.Error(err, "parsing input proto")
+	}
+
+	if len(g.Request.FileToGenerate) == 0 {
+		g.Fail("no files to generate")
+	}
+
+	g.CommandLineParameters(g.Request.GetParameter())
+
+	// Create a wrapped version of the Descriptors and EnumDescriptors that
+	// point to the file that defines them.
+	g.WrapTypes()
+
+	g.SetPackageNames()
+	g.BuildTypeNameMap()
+
+	g.GenerateAllFiles()
+
+	// Send back the results.
+	data, err = proto.Marshal(g.Response)
+	if err != nil {
+		g.Error(err, "failed to marshal output proto")
+	}
+	_, err = os.Stdout.Write(data)
+	if err != nil {
+		g.Error(err, "failed to write output proto")
+	}
+}
diff --git a/protoc-gen-go/plugin/plugin.pb.go b/protoc-gen-go/plugin/plugin.pb.go
new file mode 100644
index 0000000..61bfc10
--- /dev/null
+++ b/protoc-gen-go/plugin/plugin.pb.go
@@ -0,0 +1,369 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/protobuf/compiler/plugin.proto
+
+/*
+Package plugin_go is a generated protocol buffer package.
+
+It is generated from these files:
+	google/protobuf/compiler/plugin.proto
+
+It has these top-level messages:
+	Version
+	CodeGeneratorRequest
+	CodeGeneratorResponse
+*/
+package plugin_go
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+import google_protobuf "github.com/golang/protobuf/protoc-gen-go/descriptor"
+
+// 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.ProtoPackageIsVersion2 // 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"`
+	Minor *int32 `protobuf:"varint,2,opt,name=minor" json:"minor,omitempty"`
+	Patch *int32 `protobuf:"varint,3,opt,name=patch" json:"patch,omitempty"`
+	// A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should
+	// be empty for mainline stable releases.
+	Suffix               *string  `protobuf:"bytes,4,opt,name=suffix" json:"suffix,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Version) Reset()                    { *m = Version{} }
+func (m *Version) String() string            { return proto.CompactTextString(m) }
+func (*Version) ProtoMessage()               {}
+func (*Version) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+func (m *Version) Unmarshal(b []byte) error {
+	return xxx_messageInfo_Version.Unmarshal(m, b)
+}
+func (m *Version) Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Version.Marshal(b, m, deterministic)
+}
+func (dst *Version) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Version.Merge(dst, 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
+	}
+	return 0
+}
+
+func (m *Version) GetMinor() int32 {
+	if m != nil && m.Minor != nil {
+		return *m.Minor
+	}
+	return 0
+}
+
+func (m *Version) GetPatch() int32 {
+	if m != nil && m.Patch != nil {
+		return *m.Patch
+	}
+	return 0
+}
+
+func (m *Version) GetSuffix() string {
+	if m != nil && m.Suffix != nil {
+		return *m.Suffix
+	}
+	return ""
+}
+
+// An encoded CodeGeneratorRequest is written to the plugin's stdin.
+type CodeGeneratorRequest struct {
+	// The .proto files that were explicitly listed on the command-line.  The
+	// code generator should generate code only for these files.  Each file's
+	// descriptor will be included in proto_file, below.
+	FileToGenerate []string `protobuf:"bytes,1,rep,name=file_to_generate,json=fileToGenerate" json:"file_to_generate,omitempty"`
+	// The generator parameter passed on the command-line.
+	Parameter *string `protobuf:"bytes,2,opt,name=parameter" json:"parameter,omitempty"`
+	// FileDescriptorProtos for all files in files_to_generate and everything
+	// they import.  The files will appear in topological order, so each file
+	// appears before any file that imports it.
+	//
+	// protoc guarantees that all proto_files will be written after
+	// the fields above, even though this is not technically guaranteed by the
+	// protobuf wire format.  This theoretically could allow a plugin to stream
+	// in the FileDescriptorProtos and handle them one by one rather than read
+	// the entire set into memory at once.  However, as of this writing, this
+	// is not similarly optimized on protoc's end -- it will store all fields in
+	// memory at once before sending them to the plugin.
+	//
+	// Type names of fields and extensions in the FileDescriptorProto are always
+	// fully qualified.
+	ProtoFile []*google_protobuf.FileDescriptorProto `protobuf:"bytes,15,rep,name=proto_file,json=protoFile" json:"proto_file,omitempty"`
+	// The version number of protocol compiler.
+	CompilerVersion      *Version `protobuf:"bytes,3,opt,name=compiler_version,json=compilerVersion" json:"compiler_version,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *CodeGeneratorRequest) Reset()                    { *m = CodeGeneratorRequest{} }
+func (m *CodeGeneratorRequest) String() string            { return proto.CompactTextString(m) }
+func (*CodeGeneratorRequest) ProtoMessage()               {}
+func (*CodeGeneratorRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+func (m *CodeGeneratorRequest) Unmarshal(b []byte) error {
+	return xxx_messageInfo_CodeGeneratorRequest.Unmarshal(m, b)
+}
+func (m *CodeGeneratorRequest) Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CodeGeneratorRequest.Marshal(b, m, deterministic)
+}
+func (dst *CodeGeneratorRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CodeGeneratorRequest.Merge(dst, 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
+	}
+	return nil
+}
+
+func (m *CodeGeneratorRequest) GetParameter() string {
+	if m != nil && m.Parameter != nil {
+		return *m.Parameter
+	}
+	return ""
+}
+
+func (m *CodeGeneratorRequest) GetProtoFile() []*google_protobuf.FileDescriptorProto {
+	if m != nil {
+		return m.ProtoFile
+	}
+	return nil
+}
+
+func (m *CodeGeneratorRequest) GetCompilerVersion() *Version {
+	if m != nil {
+		return m.CompilerVersion
+	}
+	return nil
+}
+
+// The plugin writes an encoded CodeGeneratorResponse to stdout.
+type CodeGeneratorResponse struct {
+	// Error message.  If non-empty, code generation failed.  The plugin process
+	// should exit with status code zero even if it reports an error in this way.
+	//
+	// This should be used to indicate errors in .proto files which prevent the
+	// code generator from generating correct code.  Errors which indicate a
+	// problem in protoc itself -- such as the input CodeGeneratorRequest being
+	// unparseable -- should be reported by writing a message to stderr and
+	// exiting with a non-zero status code.
+	Error                *string                       `protobuf:"bytes,1,opt,name=error" json:"error,omitempty"`
+	File                 []*CodeGeneratorResponse_File `protobuf:"bytes,15,rep,name=file" json:"file,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                      `json:"-"`
+	XXX_unrecognized     []byte                        `json:"-"`
+	XXX_sizecache        int32                         `json:"-"`
+}
+
+func (m *CodeGeneratorResponse) Reset()                    { *m = CodeGeneratorResponse{} }
+func (m *CodeGeneratorResponse) String() string            { return proto.CompactTextString(m) }
+func (*CodeGeneratorResponse) ProtoMessage()               {}
+func (*CodeGeneratorResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+func (m *CodeGeneratorResponse) Unmarshal(b []byte) error {
+	return xxx_messageInfo_CodeGeneratorResponse.Unmarshal(m, b)
+}
+func (m *CodeGeneratorResponse) Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CodeGeneratorResponse.Marshal(b, m, deterministic)
+}
+func (dst *CodeGeneratorResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CodeGeneratorResponse.Merge(dst, 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
+	}
+	return ""
+}
+
+func (m *CodeGeneratorResponse) GetFile() []*CodeGeneratorResponse_File {
+	if m != nil {
+		return m.File
+	}
+	return nil
+}
+
+// Represents a single generated file.
+type CodeGeneratorResponse_File struct {
+	// The file name, relative to the output directory.  The name must not
+	// contain "." or ".." components and must be relative, not be absolute (so,
+	// the file cannot lie outside the output directory).  "/" must be used as
+	// the path separator, not "\".
+	//
+	// If the name is omitted, the content will be appended to the previous
+	// file.  This allows the generator to break large files into small chunks,
+	// and allows the generated text to be streamed back to protoc so that large
+	// files need not reside completely in memory at one time.  Note that as of
+	// this writing protoc does not optimize for this -- it will read the entire
+	// CodeGeneratorResponse before writing files to disk.
+	Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	// If non-empty, indicates that the named file should already exist, and the
+	// content here is to be inserted into that file at a defined insertion
+	// point.  This feature allows a code generator to extend the output
+	// produced by another code generator.  The original generator may provide
+	// insertion points by placing special annotations in the file that look
+	// like:
+	//   @@protoc_insertion_point(NAME)
+	// The annotation can have arbitrary text before and after it on the line,
+	// which allows it to be placed in a comment.  NAME should be replaced with
+	// an identifier naming the point -- this is what other generators will use
+	// as the insertion_point.  Code inserted at this point will be placed
+	// immediately above the line containing the insertion point (thus multiple
+	// insertions to the same point will come out in the order they were added).
+	// The double-@ is intended to make it unlikely that the generated code
+	// could contain things that look like insertion points by accident.
+	//
+	// For example, the C++ code generator places the following line in the
+	// .pb.h files that it generates:
+	//   // @@protoc_insertion_point(namespace_scope)
+	// This line appears within the scope of the file's package namespace, but
+	// outside of any particular class.  Another plugin can then specify the
+	// insertion_point "namespace_scope" to generate additional classes or
+	// other declarations that should be placed in this scope.
+	//
+	// Note that if the line containing the insertion point begins with
+	// whitespace, the same whitespace will be added to every line of the
+	// inserted text.  This is useful for languages like Python, where
+	// indentation matters.  In these languages, the insertion point comment
+	// should be indented the same amount as any inserted code will need to be
+	// in order to work correctly in that context.
+	//
+	// The code generator that generates the initial file and the one which
+	// inserts into it must both run as part of a single invocation of protoc.
+	// Code generators are executed in the order in which they appear on the
+	// command line.
+	//
+	// If |insertion_point| is present, |name| must also be present.
+	InsertionPoint *string `protobuf:"bytes,2,opt,name=insertion_point,json=insertionPoint" json:"insertion_point,omitempty"`
+	// The file contents.
+	Content              *string  `protobuf:"bytes,15,opt,name=content" json:"content,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *CodeGeneratorResponse_File) Reset()                    { *m = CodeGeneratorResponse_File{} }
+func (m *CodeGeneratorResponse_File) String() string            { return proto.CompactTextString(m) }
+func (*CodeGeneratorResponse_File) ProtoMessage()               {}
+func (*CodeGeneratorResponse_File) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} }
+func (m *CodeGeneratorResponse_File) Unmarshal(b []byte) error {
+	return xxx_messageInfo_CodeGeneratorResponse_File.Unmarshal(m, b)
+}
+func (m *CodeGeneratorResponse_File) Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_CodeGeneratorResponse_File.Marshal(b, m, deterministic)
+}
+func (dst *CodeGeneratorResponse_File) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_CodeGeneratorResponse_File.Merge(dst, 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
+	}
+	return ""
+}
+
+func (m *CodeGeneratorResponse_File) GetInsertionPoint() string {
+	if m != nil && m.InsertionPoint != nil {
+		return *m.InsertionPoint
+	}
+	return ""
+}
+
+func (m *CodeGeneratorResponse_File) GetContent() string {
+	if m != nil && m.Content != nil {
+		return *m.Content
+	}
+	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", fileDescriptor0) }
+
+var fileDescriptor0 = []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,
+}
diff --git a/protoc-gen-go/plugin/plugin.pb.golden b/protoc-gen-go/plugin/plugin.pb.golden
new file mode 100644
index 0000000..8953d0f
--- /dev/null
+++ b/protoc-gen-go/plugin/plugin.pb.golden
@@ -0,0 +1,83 @@
+// Code generated by protoc-gen-go.
+// source: google/protobuf/compiler/plugin.proto
+// DO NOT EDIT!
+
+package google_protobuf_compiler
+
+import proto "github.com/golang/protobuf/proto"
+import "math"
+import google_protobuf "github.com/golang/protobuf/protoc-gen-go/descriptor"
+
+// Reference proto and math imports to suppress error if they are not otherwise used.
+var _ = proto.GetString
+var _ = math.Inf
+
+type CodeGeneratorRequest struct {
+	FileToGenerate   []string                               `protobuf:"bytes,1,rep,name=file_to_generate" json:"file_to_generate,omitempty"`
+	Parameter        *string                                `protobuf:"bytes,2,opt,name=parameter" json:"parameter,omitempty"`
+	ProtoFile        []*google_protobuf.FileDescriptorProto `protobuf:"bytes,15,rep,name=proto_file" json:"proto_file,omitempty"`
+	XXX_unrecognized []byte                                 `json:"-"`
+}
+
+func (this *CodeGeneratorRequest) Reset()         { *this = CodeGeneratorRequest{} }
+func (this *CodeGeneratorRequest) String() string { return proto.CompactTextString(this) }
+func (*CodeGeneratorRequest) ProtoMessage()       {}
+
+func (this *CodeGeneratorRequest) GetParameter() string {
+	if this != nil && this.Parameter != nil {
+		return *this.Parameter
+	}
+	return ""
+}
+
+type CodeGeneratorResponse struct {
+	Error            *string                       `protobuf:"bytes,1,opt,name=error" json:"error,omitempty"`
+	File             []*CodeGeneratorResponse_File `protobuf:"bytes,15,rep,name=file" json:"file,omitempty"`
+	XXX_unrecognized []byte                        `json:"-"`
+}
+
+func (this *CodeGeneratorResponse) Reset()         { *this = CodeGeneratorResponse{} }
+func (this *CodeGeneratorResponse) String() string { return proto.CompactTextString(this) }
+func (*CodeGeneratorResponse) ProtoMessage()       {}
+
+func (this *CodeGeneratorResponse) GetError() string {
+	if this != nil && this.Error != nil {
+		return *this.Error
+	}
+	return ""
+}
+
+type CodeGeneratorResponse_File struct {
+	Name             *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	InsertionPoint   *string `protobuf:"bytes,2,opt,name=insertion_point" json:"insertion_point,omitempty"`
+	Content          *string `protobuf:"bytes,15,opt,name=content" json:"content,omitempty"`
+	XXX_unrecognized []byte  `json:"-"`
+}
+
+func (this *CodeGeneratorResponse_File) Reset()         { *this = CodeGeneratorResponse_File{} }
+func (this *CodeGeneratorResponse_File) String() string { return proto.CompactTextString(this) }
+func (*CodeGeneratorResponse_File) ProtoMessage()       {}
+
+func (this *CodeGeneratorResponse_File) GetName() string {
+	if this != nil && this.Name != nil {
+		return *this.Name
+	}
+	return ""
+}
+
+func (this *CodeGeneratorResponse_File) GetInsertionPoint() string {
+	if this != nil && this.InsertionPoint != nil {
+		return *this.InsertionPoint
+	}
+	return ""
+}
+
+func (this *CodeGeneratorResponse_File) GetContent() string {
+	if this != nil && this.Content != nil {
+		return *this.Content
+	}
+	return ""
+}
+
+func init() {
+}
diff --git a/protoc-gen-go/plugin/plugin.proto b/protoc-gen-go/plugin/plugin.proto
new file mode 100644
index 0000000..5b55745
--- /dev/null
+++ b/protoc-gen-go/plugin/plugin.proto
@@ -0,0 +1,167 @@
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc.  All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: kenton@google.com (Kenton Varda)
+//
+// WARNING:  The plugin interface is currently EXPERIMENTAL and is subject to
+//   change.
+//
+// protoc (aka the Protocol Compiler) can be extended via plugins.  A plugin is
+// just a program that reads a CodeGeneratorRequest from stdin and writes a
+// CodeGeneratorResponse to stdout.
+//
+// Plugins written using C++ can use google/protobuf/compiler/plugin.h instead
+// of dealing with the raw protocol defined here.
+//
+// A plugin executable needs only to be placed somewhere in the path.  The
+// plugin should be named "protoc-gen-$NAME", and will then be used when the
+// flag "--${NAME}_out" is passed to protoc.
+
+syntax = "proto2";
+package google.protobuf.compiler;
+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";
+
+import "google/protobuf/descriptor.proto";
+
+// The version number of protocol compiler.
+message Version {
+  optional int32 major = 1;
+  optional int32 minor = 2;
+  optional int32 patch = 3;
+  // A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should
+  // be empty for mainline stable releases.
+  optional string suffix = 4;
+}
+
+// An encoded CodeGeneratorRequest is written to the plugin's stdin.
+message CodeGeneratorRequest {
+  // The .proto files that were explicitly listed on the command-line.  The
+  // code generator should generate code only for these files.  Each file's
+  // descriptor will be included in proto_file, below.
+  repeated string file_to_generate = 1;
+
+  // The generator parameter passed on the command-line.
+  optional string parameter = 2;
+
+  // FileDescriptorProtos for all files in files_to_generate and everything
+  // they import.  The files will appear in topological order, so each file
+  // appears before any file that imports it.
+  //
+  // protoc guarantees that all proto_files will be written after
+  // the fields above, even though this is not technically guaranteed by the
+  // protobuf wire format.  This theoretically could allow a plugin to stream
+  // in the FileDescriptorProtos and handle them one by one rather than read
+  // the entire set into memory at once.  However, as of this writing, this
+  // is not similarly optimized on protoc's end -- it will store all fields in
+  // memory at once before sending them to the plugin.
+  //
+  // Type names of fields and extensions in the FileDescriptorProto are always
+  // fully qualified.
+  repeated FileDescriptorProto proto_file = 15;
+
+  // The version number of protocol compiler.
+  optional Version compiler_version = 3;
+
+}
+
+// The plugin writes an encoded CodeGeneratorResponse to stdout.
+message CodeGeneratorResponse {
+  // Error message.  If non-empty, code generation failed.  The plugin process
+  // should exit with status code zero even if it reports an error in this way.
+  //
+  // This should be used to indicate errors in .proto files which prevent the
+  // code generator from generating correct code.  Errors which indicate a
+  // problem in protoc itself -- such as the input CodeGeneratorRequest being
+  // unparseable -- should be reported by writing a message to stderr and
+  // exiting with a non-zero status code.
+  optional string error = 1;
+
+  // Represents a single generated file.
+  message File {
+    // The file name, relative to the output directory.  The name must not
+    // contain "." or ".." components and must be relative, not be absolute (so,
+    // the file cannot lie outside the output directory).  "/" must be used as
+    // the path separator, not "\".
+    //
+    // If the name is omitted, the content will be appended to the previous
+    // file.  This allows the generator to break large files into small chunks,
+    // and allows the generated text to be streamed back to protoc so that large
+    // files need not reside completely in memory at one time.  Note that as of
+    // this writing protoc does not optimize for this -- it will read the entire
+    // CodeGeneratorResponse before writing files to disk.
+    optional string name = 1;
+
+    // If non-empty, indicates that the named file should already exist, and the
+    // content here is to be inserted into that file at a defined insertion
+    // point.  This feature allows a code generator to extend the output
+    // produced by another code generator.  The original generator may provide
+    // insertion points by placing special annotations in the file that look
+    // like:
+    //   @@protoc_insertion_point(NAME)
+    // The annotation can have arbitrary text before and after it on the line,
+    // which allows it to be placed in a comment.  NAME should be replaced with
+    // an identifier naming the point -- this is what other generators will use
+    // as the insertion_point.  Code inserted at this point will be placed
+    // immediately above the line containing the insertion point (thus multiple
+    // insertions to the same point will come out in the order they were added).
+    // The double-@ is intended to make it unlikely that the generated code
+    // could contain things that look like insertion points by accident.
+    //
+    // For example, the C++ code generator places the following line in the
+    // .pb.h files that it generates:
+    //   // @@protoc_insertion_point(namespace_scope)
+    // This line appears within the scope of the file's package namespace, but
+    // outside of any particular class.  Another plugin can then specify the
+    // insertion_point "namespace_scope" to generate additional classes or
+    // other declarations that should be placed in this scope.
+    //
+    // Note that if the line containing the insertion point begins with
+    // whitespace, the same whitespace will be added to every line of the
+    // inserted text.  This is useful for languages like Python, where
+    // indentation matters.  In these languages, the insertion point comment
+    // should be indented the same amount as any inserted code will need to be
+    // in order to work correctly in that context.
+    //
+    // The code generator that generates the initial file and the one which
+    // inserts into it must both run as part of a single invocation of protoc.
+    // Code generators are executed in the order in which they appear on the
+    // command line.
+    //
+    // If |insertion_point| is present, |name| must also be present.
+    optional string insertion_point = 2;
+
+    // The file contents.
+    optional string content = 15;
+  }
+  repeated File file = 15;
+}
diff --git a/protoc-gen-go/testdata/deprecated/deprecated.pb.go b/protoc-gen-go/testdata/deprecated/deprecated.pb.go
new file mode 100644
index 0000000..eb7ee89
--- /dev/null
+++ b/protoc-gen-go/testdata/deprecated/deprecated.pb.go
@@ -0,0 +1,289 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// deprecated/deprecated.proto is a deprecated file.
+
+// package deprecated contains only deprecated messages and services.
+
+package deprecated
+
+import (
+	context "context"
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+	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
+
+// DeprecatedEnum contains deprecated values.
+type DeprecatedEnum int32 // Deprecated: Do not use.
+const (
+	// DEPRECATED is the iota value of this enum.
+	DeprecatedEnum_DEPRECATED DeprecatedEnum = 0 // Deprecated: Do not use.
+)
+
+var DeprecatedEnum_name = map[int32]string{
+	0: "DEPRECATED",
+}
+
+var DeprecatedEnum_value = map[string]int32{
+	"DEPRECATED": 0,
+}
+
+func (x DeprecatedEnum) String() string {
+	return proto.EnumName(DeprecatedEnum_name, int32(x))
+}
+
+func (DeprecatedEnum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_f64ba265cd7eae3f, []int{0}
+}
+
+// DeprecatedRequest is a request to DeprecatedCall.
+//
+// Deprecated: Do not use.
+type DeprecatedRequest struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *DeprecatedRequest) Reset()         { *m = DeprecatedRequest{} }
+func (m *DeprecatedRequest) String() string { return proto.CompactTextString(m) }
+func (*DeprecatedRequest) ProtoMessage()    {}
+func (*DeprecatedRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_f64ba265cd7eae3f, []int{0}
+}
+
+func (m *DeprecatedRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DeprecatedRequest.Unmarshal(m, b)
+}
+func (m *DeprecatedRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DeprecatedRequest.Marshal(b, m, deterministic)
+}
+func (m *DeprecatedRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DeprecatedRequest.Merge(m, src)
+}
+func (m *DeprecatedRequest) XXX_Size() int {
+	return xxx_messageInfo_DeprecatedRequest.Size(m)
+}
+func (m *DeprecatedRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_DeprecatedRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeprecatedRequest proto.InternalMessageInfo
+
+// Deprecated: Do not use.
+type DeprecatedResponse struct {
+	// DeprecatedField contains a DeprecatedEnum.
+	DeprecatedField DeprecatedEnum `protobuf:"varint,1,opt,name=deprecated_field,json=deprecatedField,proto3,enum=deprecated.DeprecatedEnum" json:"deprecated_field,omitempty"` // Deprecated: Do not use.
+	// DeprecatedOneof contains a deprecated field.
+	//
+	// Types that are valid to be assigned to DeprecatedOneof:
+	//	*DeprecatedResponse_DeprecatedOneofField
+	DeprecatedOneof      isDeprecatedResponse_DeprecatedOneof `protobuf_oneof:"deprecated_oneof"`
+	XXX_NoUnkeyedLiteral struct{}                             `json:"-"`
+	XXX_unrecognized     []byte                               `json:"-"`
+	XXX_sizecache        int32                                `json:"-"`
+}
+
+func (m *DeprecatedResponse) Reset()         { *m = DeprecatedResponse{} }
+func (m *DeprecatedResponse) String() string { return proto.CompactTextString(m) }
+func (*DeprecatedResponse) ProtoMessage()    {}
+func (*DeprecatedResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_f64ba265cd7eae3f, []int{1}
+}
+
+func (m *DeprecatedResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DeprecatedResponse.Unmarshal(m, b)
+}
+func (m *DeprecatedResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DeprecatedResponse.Marshal(b, m, deterministic)
+}
+func (m *DeprecatedResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DeprecatedResponse.Merge(m, src)
+}
+func (m *DeprecatedResponse) XXX_Size() int {
+	return xxx_messageInfo_DeprecatedResponse.Size(m)
+}
+func (m *DeprecatedResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_DeprecatedResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeprecatedResponse proto.InternalMessageInfo
+
+// Deprecated: Do not use.
+func (m *DeprecatedResponse) GetDeprecatedField() DeprecatedEnum {
+	if m != nil {
+		return m.DeprecatedField
+	}
+	return DeprecatedEnum_DEPRECATED
+}
+
+type isDeprecatedResponse_DeprecatedOneof interface {
+	isDeprecatedResponse_DeprecatedOneof()
+}
+
+type DeprecatedResponse_DeprecatedOneofField struct {
+	DeprecatedOneofField string `protobuf:"bytes,2,opt,name=deprecated_oneof_field,json=deprecatedOneofField,proto3,oneof"`
+}
+
+func (*DeprecatedResponse_DeprecatedOneofField) isDeprecatedResponse_DeprecatedOneof() {}
+
+func (m *DeprecatedResponse) GetDeprecatedOneof() isDeprecatedResponse_DeprecatedOneof {
+	if m != nil {
+		return m.DeprecatedOneof
+	}
+	return nil
+}
+
+// Deprecated: Do not use.
+func (m *DeprecatedResponse) GetDeprecatedOneofField() string {
+	if x, ok := m.GetDeprecatedOneof().(*DeprecatedResponse_DeprecatedOneofField); ok {
+		return x.DeprecatedOneofField
+	}
+	return ""
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*DeprecatedResponse) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*DeprecatedResponse_DeprecatedOneofField)(nil),
+	}
+}
+
+func init() {
+	proto.RegisterEnum("deprecated.DeprecatedEnum", DeprecatedEnum_name, DeprecatedEnum_value)
+	proto.RegisterType((*DeprecatedRequest)(nil), "deprecated.DeprecatedRequest")
+	proto.RegisterType((*DeprecatedResponse)(nil), "deprecated.DeprecatedResponse")
+}
+
+func init() {
+	proto.RegisterFile("deprecated/deprecated.proto", fileDescriptor_f64ba265cd7eae3f)
+}
+
+var fileDescriptor_f64ba265cd7eae3f = []byte{
+	// 287 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x91, 0xcd, 0x4a, 0xf3, 0x40,
+	0x14, 0x86, 0x7b, 0xe6, 0x83, 0x0f, 0x9d, 0x45, 0xad, 0x83, 0x68, 0x88, 0x28, 0x25, 0xab, 0x20,
+	0x34, 0x81, 0xba, 0x2b, 0x6e, 0x9a, 0x26, 0xa2, 0x2b, 0x25, 0x76, 0xe5, 0x46, 0xf2, 0x73, 0x12,
+	0x03, 0xe9, 0x4c, 0x4c, 0x26, 0x5e, 0x83, 0xf7, 0xe3, 0xc6, 0xcb, 0x93, 0x49, 0x8b, 0x33, 0x05,
+	0xdd, 0x84, 0x93, 0x79, 0xdf, 0xe7, 0xfc, 0xd2, 0xf3, 0x1c, 0x9b, 0x16, 0xb3, 0x44, 0x62, 0xee,
+	0xeb, 0xd0, 0x6b, 0x5a, 0x21, 0x05, 0xa3, 0xfa, 0xc5, 0x39, 0xa3, 0xc7, 0xe1, 0xcf, 0x5f, 0x8c,
+	0x6f, 0x3d, 0x76, 0x72, 0x41, 0x2c, 0x70, 0x3e, 0x81, 0x32, 0x53, 0xe9, 0x1a, 0xc1, 0x3b, 0x64,
+	0xf7, 0x74, 0xa2, 0xe9, 0x97, 0xa2, 0xc2, 0x3a, 0xb7, 0x60, 0x0a, 0xee, 0x78, 0x6e, 0x7b, 0x46,
+	0x21, 0x4d, 0x46, 0xbc, 0xdf, 0x04, 0xc4, 0x82, 0xf8, 0x48, 0xcb, 0xb7, 0x0a, 0x63, 0x0b, 0x7a,
+	0x6a, 0xa4, 0x12, 0x1c, 0x45, 0xb1, 0x4b, 0x48, 0xa6, 0xe0, 0x1e, 0x2a, 0xe8, 0x6e, 0x14, 0x9f,
+	0x68, 0xcf, 0x83, 0xb2, 0x0c, 0xac, 0xea, 0x30, 0x60, 0x7b, 0xad, 0x0c, 0xfc, 0x95, 0x4b, 0xc7,
+	0xfb, 0xa5, 0x19, 0xa3, 0x34, 0x8c, 0x1e, 0xe3, 0x68, 0xb5, 0x5c, 0x47, 0xe1, 0x64, 0x64, 0x93,
+	0x03, 0xb0, 0x89, 0x05, 0x73, 0x6e, 0x0e, 0xfe, 0x84, 0xed, 0x7b, 0x95, 0x21, 0x5b, 0x9b, 0xf8,
+	0x2a, 0xa9, 0x6b, 0x76, 0xf1, 0xfb, 0x54, 0xbb, 0x4d, 0xd9, 0x97, 0x7f, 0xc9, 0xdb, 0x75, 0x39,
+	0xff, 0x3e, 0x08, 0xd8, 0xea, 0x13, 0x2c, 0x9f, 0x6f, 0xca, 0x4a, 0xbe, 0xf6, 0xa9, 0x97, 0x89,
+	0x8d, 0x5f, 0x8a, 0x3a, 0xe1, 0xa5, 0x3f, 0xdc, 0x23, 0xed, 0x8b, 0x6d, 0x90, 0xcd, 0x4a, 0xe4,
+	0xb3, 0x52, 0xf8, 0x12, 0x3b, 0x99, 0x27, 0x32, 0x31, 0x4e, 0xf7, 0x05, 0x90, 0xfe, 0x1f, 0x5c,
+	0xd7, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x08, 0xd5, 0xa0, 0x89, 0xdd, 0x01, 0x00, 0x00,
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConnInterface
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion6
+
+// DeprecatedServiceClient is the client API for DeprecatedService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
+//
+// Deprecated: Do not use.
+type DeprecatedServiceClient interface {
+	// DeprecatedCall takes a DeprecatedRequest and returns a DeprecatedResponse.
+	//
+	// Deprecated: Do not use.
+	DeprecatedCall(ctx context.Context, in *DeprecatedRequest, opts ...grpc.CallOption) (*DeprecatedResponse, error)
+}
+
+type deprecatedServiceClient struct {
+	cc grpc.ClientConnInterface
+}
+
+// Deprecated: Do not use.
+func NewDeprecatedServiceClient(cc grpc.ClientConnInterface) DeprecatedServiceClient {
+	return &deprecatedServiceClient{cc}
+}
+
+// Deprecated: Do not use.
+func (c *deprecatedServiceClient) DeprecatedCall(ctx context.Context, in *DeprecatedRequest, opts ...grpc.CallOption) (*DeprecatedResponse, error) {
+	out := new(DeprecatedResponse)
+	err := c.cc.Invoke(ctx, "/deprecated.DeprecatedService/DeprecatedCall", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+// DeprecatedServiceServer is the server API for DeprecatedService service.
+//
+// Deprecated: Do not use.
+type DeprecatedServiceServer interface {
+	// DeprecatedCall takes a DeprecatedRequest and returns a DeprecatedResponse.
+	//
+	// Deprecated: Do not use.
+	DeprecatedCall(context.Context, *DeprecatedRequest) (*DeprecatedResponse, error)
+}
+
+// Deprecated: Do not use.
+// UnimplementedDeprecatedServiceServer can be embedded to have forward compatible implementations.
+type UnimplementedDeprecatedServiceServer struct {
+}
+
+func (*UnimplementedDeprecatedServiceServer) DeprecatedCall(ctx context.Context, req *DeprecatedRequest) (*DeprecatedResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method DeprecatedCall not implemented")
+}
+
+// Deprecated: Do not use.
+func RegisterDeprecatedServiceServer(s *grpc.Server, srv DeprecatedServiceServer) {
+	s.RegisterService(&_DeprecatedService_serviceDesc, srv)
+}
+
+func _DeprecatedService_DeprecatedCall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(DeprecatedRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(DeprecatedServiceServer).DeprecatedCall(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/deprecated.DeprecatedService/DeprecatedCall",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(DeprecatedServiceServer).DeprecatedCall(ctx, req.(*DeprecatedRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+var _DeprecatedService_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "deprecated.DeprecatedService",
+	HandlerType: (*DeprecatedServiceServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "DeprecatedCall",
+			Handler:    _DeprecatedService_DeprecatedCall_Handler,
+		},
+	},
+	Streams:  []grpc.StreamDesc{},
+	Metadata: "deprecated/deprecated.proto",
+}
diff --git a/protoc-gen-go/testdata/deprecated/deprecated.proto b/protoc-gen-go/testdata/deprecated/deprecated.proto
new file mode 100644
index 0000000..192b158
--- /dev/null
+++ b/protoc-gen-go/testdata/deprecated/deprecated.proto
@@ -0,0 +1,74 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2018 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+// package deprecated contains only deprecated messages and services.
+package deprecated;
+
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/deprecated";
+
+option deprecated = true; // file-level deprecation
+
+// DeprecatedRequest is a request to DeprecatedCall.
+message DeprecatedRequest {
+  option deprecated = true;
+}
+
+message DeprecatedResponse {
+  // comment for DeprecatedResponse is omitted to guarantee deprecation
+  // message doesn't append unnecessary comments.
+  option deprecated = true;
+  // DeprecatedField contains a DeprecatedEnum.
+  DeprecatedEnum deprecated_field = 1 [deprecated=true];
+  // DeprecatedOneof contains a deprecated field.
+  oneof deprecated_oneof {
+    // DeprecatedOneofField is a deprecated field.
+    string deprecated_oneof_field = 2 [deprecated=true];
+  }
+}
+
+// DeprecatedEnum contains deprecated values.
+enum DeprecatedEnum {
+  option deprecated = true;
+  // DEPRECATED is the iota value of this enum.
+  DEPRECATED = 0 [deprecated=true];
+}
+
+// DeprecatedService is for making DeprecatedCalls
+service DeprecatedService {
+  option deprecated = true;
+
+  // DeprecatedCall takes a DeprecatedRequest and returns a DeprecatedResponse.
+  rpc DeprecatedCall(DeprecatedRequest) returns (DeprecatedResponse) {
+    option deprecated = true;
+  }
+}
diff --git a/protoc-gen-go/testdata/extension_base/extension_base.pb.go b/protoc-gen-go/testdata/extension_base/extension_base.pb.go
new file mode 100644
index 0000000..b5d4aa6
--- /dev/null
+++ b/protoc-gen-go/testdata/extension_base/extension_base.pb.go
@@ -0,0 +1,136 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: extension_base/extension_base.proto
+
+package extension_base
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+type BaseMessage struct {
+	Height                       *int32   `protobuf:"varint,1,opt,name=height" json:"height,omitempty"`
+	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
+	proto.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized             []byte `json:"-"`
+	XXX_sizecache                int32  `json:"-"`
+}
+
+func (m *BaseMessage) Reset()         { *m = BaseMessage{} }
+func (m *BaseMessage) String() string { return proto.CompactTextString(m) }
+func (*BaseMessage) ProtoMessage()    {}
+func (*BaseMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_2fbd53bac0b7ca8a, []int{0}
+}
+
+var extRange_BaseMessage = []proto.ExtensionRange{
+	{Start: 4, End: 9},
+	{Start: 16, End: 536870911},
+}
+
+func (*BaseMessage) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_BaseMessage
+}
+
+func (m *BaseMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BaseMessage.Unmarshal(m, b)
+}
+func (m *BaseMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BaseMessage.Marshal(b, m, deterministic)
+}
+func (m *BaseMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BaseMessage.Merge(m, src)
+}
+func (m *BaseMessage) XXX_Size() int {
+	return xxx_messageInfo_BaseMessage.Size(m)
+}
+func (m *BaseMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_BaseMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BaseMessage proto.InternalMessageInfo
+
+func (m *BaseMessage) GetHeight() int32 {
+	if m != nil && m.Height != nil {
+		return *m.Height
+	}
+	return 0
+}
+
+// Another message that may be extended, using message_set_wire_format.
+type OldStyleMessage struct {
+	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
+	proto.XXX_InternalExtensions `protobuf_messageset:"1" json:"-"`
+	XXX_unrecognized             []byte `json:"-"`
+	XXX_sizecache                int32  `json:"-"`
+}
+
+func (m *OldStyleMessage) Reset()         { *m = OldStyleMessage{} }
+func (m *OldStyleMessage) String() string { return proto.CompactTextString(m) }
+func (*OldStyleMessage) ProtoMessage()    {}
+func (*OldStyleMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_2fbd53bac0b7ca8a, []int{1}
+}
+
+var extRange_OldStyleMessage = []proto.ExtensionRange{
+	{Start: 100, End: 2147483646},
+}
+
+func (*OldStyleMessage) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_OldStyleMessage
+}
+
+func (m *OldStyleMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OldStyleMessage.Unmarshal(m, b)
+}
+func (m *OldStyleMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OldStyleMessage.Marshal(b, m, deterministic)
+}
+func (m *OldStyleMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OldStyleMessage.Merge(m, src)
+}
+func (m *OldStyleMessage) XXX_Size() int {
+	return xxx_messageInfo_OldStyleMessage.Size(m)
+}
+func (m *OldStyleMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_OldStyleMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OldStyleMessage proto.InternalMessageInfo
+
+func init() {
+	proto.RegisterType((*BaseMessage)(nil), "extension_base.BaseMessage")
+	proto.RegisterType((*OldStyleMessage)(nil), "extension_base.OldStyleMessage")
+}
+
+func init() {
+	proto.RegisterFile("extension_base/extension_base.proto", fileDescriptor_2fbd53bac0b7ca8a)
+}
+
+var fileDescriptor_2fbd53bac0b7ca8a = []byte{
+	// 179 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x4e, 0xad, 0x28, 0x49,
+	0xcd, 0x2b, 0xce, 0xcc, 0xcf, 0x8b, 0x4f, 0x4a, 0x2c, 0x4e, 0xd5, 0x47, 0xe5, 0xea, 0x15, 0x14,
+	0xe5, 0x97, 0xe4, 0x0b, 0xf1, 0xa1, 0x8a, 0x2a, 0x99, 0x72, 0x71, 0x3b, 0x25, 0x16, 0xa7, 0xfa,
+	0xa6, 0x16, 0x17, 0x27, 0xa6, 0xa7, 0x0a, 0x89, 0x71, 0xb1, 0x65, 0xa4, 0x66, 0xa6, 0x67, 0x94,
+	0x48, 0x30, 0x2a, 0x30, 0x6a, 0xb0, 0x06, 0x41, 0x79, 0x5a, 0x2c, 0x1c, 0x2c, 0x02, 0x5c, 0x5a,
+	0x1c, 0x1c, 0x02, 0x02, 0x0d, 0x0d, 0x0d, 0x0d, 0x4c, 0x4a, 0xf2, 0x5c, 0xfc, 0xfe, 0x39, 0x29,
+	0xc1, 0x25, 0x95, 0x39, 0x30, 0xad, 0x5a, 0x1c, 0x1c, 0x29, 0x02, 0xff, 0xff, 0xff, 0xff, 0xcf,
+	0x6e, 0xc5, 0xc4, 0xc1, 0xe8, 0xe4, 0x14, 0xe5, 0x90, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97,
+	0x9c, 0x9f, 0xab, 0x9f, 0x9e, 0x9f, 0x93, 0x98, 0x97, 0xae, 0x0f, 0x76, 0x42, 0x52, 0x69, 0x1a,
+	0x84, 0x91, 0xac, 0x9b, 0x9e, 0x9a, 0xa7, 0x9b, 0x9e, 0xaf, 0x5f, 0x92, 0x5a, 0x5c, 0x92, 0x92,
+	0x58, 0x92, 0x88, 0xe6, 0x62, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x7a, 0x7f, 0xb7, 0x2a, 0xd1,
+	0x00, 0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/extension_base/extension_base.proto b/protoc-gen-go/testdata/extension_base/extension_base.proto
new file mode 100644
index 0000000..0ba74de
--- /dev/null
+++ b/protoc-gen-go/testdata/extension_base/extension_base.proto
@@ -0,0 +1,48 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto2";
+
+package extension_base;
+
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/extension_base";
+
+message BaseMessage {
+  optional int32 height = 1;
+  extensions 4 to 9;
+  extensions 16 to max;
+}
+
+// Another message that may be extended, using message_set_wire_format.
+message OldStyleMessage {
+  option message_set_wire_format = true;
+  extensions 100 to max;
+}
diff --git a/protoc-gen-go/testdata/extension_extra/extension_extra.pb.go b/protoc-gen-go/testdata/extension_extra/extension_extra.pb.go
new file mode 100644
index 0000000..fd82a25
--- /dev/null
+++ b/protoc-gen-go/testdata/extension_extra/extension_extra.pb.go
@@ -0,0 +1,81 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: extension_extra/extension_extra.proto
+
+package extension_extra
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+type ExtraMessage struct {
+	Width                *int32   `protobuf:"varint,1,opt,name=width" json:"width,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ExtraMessage) Reset()         { *m = ExtraMessage{} }
+func (m *ExtraMessage) String() string { return proto.CompactTextString(m) }
+func (*ExtraMessage) ProtoMessage()    {}
+func (*ExtraMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fce75f5a63502cd5, []int{0}
+}
+
+func (m *ExtraMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ExtraMessage.Unmarshal(m, b)
+}
+func (m *ExtraMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ExtraMessage.Marshal(b, m, deterministic)
+}
+func (m *ExtraMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ExtraMessage.Merge(m, src)
+}
+func (m *ExtraMessage) XXX_Size() int {
+	return xxx_messageInfo_ExtraMessage.Size(m)
+}
+func (m *ExtraMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_ExtraMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ExtraMessage proto.InternalMessageInfo
+
+func (m *ExtraMessage) GetWidth() int32 {
+	if m != nil && m.Width != nil {
+		return *m.Width
+	}
+	return 0
+}
+
+func init() {
+	proto.RegisterType((*ExtraMessage)(nil), "extension_extra.ExtraMessage")
+}
+
+func init() {
+	proto.RegisterFile("extension_extra/extension_extra.proto", fileDescriptor_fce75f5a63502cd5)
+}
+
+var fileDescriptor_fce75f5a63502cd5 = []byte{
+	// 133 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x4d, 0xad, 0x28, 0x49,
+	0xcd, 0x2b, 0xce, 0xcc, 0xcf, 0x8b, 0x4f, 0xad, 0x28, 0x29, 0x4a, 0xd4, 0x47, 0xe3, 0xeb, 0x15,
+	0x14, 0xe5, 0x97, 0xe4, 0x0b, 0xf1, 0xa3, 0x09, 0x2b, 0xa9, 0x70, 0xf1, 0xb8, 0x82, 0x18, 0xbe,
+	0xa9, 0xc5, 0xc5, 0x89, 0xe9, 0xa9, 0x42, 0x22, 0x5c, 0xac, 0xe5, 0x99, 0x29, 0x25, 0x19, 0x12,
+	0x8c, 0x0a, 0x8c, 0x1a, 0xac, 0x41, 0x10, 0x8e, 0x93, 0x73, 0x94, 0x63, 0x7a, 0x66, 0x49, 0x46,
+	0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x7a, 0x7e, 0x4e, 0x62, 0x5e, 0xba, 0x3e, 0xd8, 0xc4,
+	0xa4, 0xd2, 0x34, 0x08, 0x23, 0x59, 0x37, 0x3d, 0x35, 0x4f, 0x37, 0x3d, 0x5f, 0xbf, 0x24, 0xb5,
+	0xb8, 0x24, 0x25, 0xb1, 0x04, 0xc3, 0x05, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf1, 0xec, 0xe3,
+	0xb7, 0xa3, 0x00, 0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/extension_extra/extension_extra.proto b/protoc-gen-go/testdata/extension_extra/extension_extra.proto
new file mode 100644
index 0000000..1dd03e7
--- /dev/null
+++ b/protoc-gen-go/testdata/extension_extra/extension_extra.proto
@@ -0,0 +1,40 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2011 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto2";
+
+package extension_extra;
+
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/extension_extra";
+
+message ExtraMessage {
+  optional int32 width = 1;
+}
diff --git a/protoc-gen-go/testdata/extension_test.go b/protoc-gen-go/testdata/extension_test.go
new file mode 100644
index 0000000..0524729
--- /dev/null
+++ b/protoc-gen-go/testdata/extension_test.go
@@ -0,0 +1,206 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Test that we can use protocol buffers that use extensions.
+
+package testdata
+
+import (
+	"bytes"
+	"regexp"
+	"testing"
+
+	"github.com/golang/protobuf/proto"
+	base "github.com/golang/protobuf/protoc-gen-go/testdata/extension_base"
+	user "github.com/golang/protobuf/protoc-gen-go/testdata/extension_user"
+)
+
+func TestSingleFieldExtension(t *testing.T) {
+	bm := &base.BaseMessage{
+		Height: proto.Int32(178),
+	}
+
+	// Use extension within scope of another type.
+	vol := proto.Uint32(11)
+	err := proto.SetExtension(bm, user.E_LoudMessage_Volume, vol)
+	if err != nil {
+		t.Fatal("Failed setting extension:", err)
+	}
+	buf, err := proto.Marshal(bm)
+	if err != nil {
+		t.Fatal("Failed encoding message with extension:", err)
+	}
+	bm_new := new(base.BaseMessage)
+	if err := proto.Unmarshal(buf, bm_new); err != nil {
+		t.Fatal("Failed decoding message with extension:", err)
+	}
+	if !proto.HasExtension(bm_new, user.E_LoudMessage_Volume) {
+		t.Fatal("Decoded message didn't contain extension.")
+	}
+	vol_out, err := proto.GetExtension(bm_new, user.E_LoudMessage_Volume)
+	if err != nil {
+		t.Fatal("Failed getting extension:", err)
+	}
+	if v := vol_out.(*uint32); *v != *vol {
+		t.Errorf("vol_out = %v, expected %v", *v, *vol)
+	}
+	proto.ClearExtension(bm_new, user.E_LoudMessage_Volume)
+	if proto.HasExtension(bm_new, user.E_LoudMessage_Volume) {
+		t.Fatal("Failed clearing extension.")
+	}
+}
+
+func TestMessageExtension(t *testing.T) {
+	bm := &base.BaseMessage{
+		Height: proto.Int32(179),
+	}
+
+	// Use extension that is itself a message.
+	um := &user.UserMessage{
+		Name: proto.String("Dave"),
+		Rank: proto.String("Major"),
+	}
+	err := proto.SetExtension(bm, user.E_LoginMessage_UserMessage, um)
+	if err != nil {
+		t.Fatal("Failed setting extension:", err)
+	}
+	buf, err := proto.Marshal(bm)
+	if err != nil {
+		t.Fatal("Failed encoding message with extension:", err)
+	}
+	bm_new := new(base.BaseMessage)
+	if err := proto.Unmarshal(buf, bm_new); err != nil {
+		t.Fatal("Failed decoding message with extension:", err)
+	}
+	if !proto.HasExtension(bm_new, user.E_LoginMessage_UserMessage) {
+		t.Fatal("Decoded message didn't contain extension.")
+	}
+	um_out, err := proto.GetExtension(bm_new, user.E_LoginMessage_UserMessage)
+	if err != nil {
+		t.Fatal("Failed getting extension:", err)
+	}
+	if n := um_out.(*user.UserMessage).Name; *n != *um.Name {
+		t.Errorf("um_out.Name = %q, expected %q", *n, *um.Name)
+	}
+	if r := um_out.(*user.UserMessage).Rank; *r != *um.Rank {
+		t.Errorf("um_out.Rank = %q, expected %q", *r, *um.Rank)
+	}
+	proto.ClearExtension(bm_new, user.E_LoginMessage_UserMessage)
+	if proto.HasExtension(bm_new, user.E_LoginMessage_UserMessage) {
+		t.Fatal("Failed clearing extension.")
+	}
+}
+
+func TestTopLevelExtension(t *testing.T) {
+	bm := &base.BaseMessage{
+		Height: proto.Int32(179),
+	}
+
+	width := proto.Int32(17)
+	err := proto.SetExtension(bm, user.E_Width, width)
+	if err != nil {
+		t.Fatal("Failed setting extension:", err)
+	}
+	buf, err := proto.Marshal(bm)
+	if err != nil {
+		t.Fatal("Failed encoding message with extension:", err)
+	}
+	bm_new := new(base.BaseMessage)
+	if err := proto.Unmarshal(buf, bm_new); err != nil {
+		t.Fatal("Failed decoding message with extension:", err)
+	}
+	if !proto.HasExtension(bm_new, user.E_Width) {
+		t.Fatal("Decoded message didn't contain extension.")
+	}
+	width_out, err := proto.GetExtension(bm_new, user.E_Width)
+	if err != nil {
+		t.Fatal("Failed getting extension:", err)
+	}
+	if w := width_out.(*int32); *w != *width {
+		t.Errorf("width_out = %v, expected %v", *w, *width)
+	}
+	proto.ClearExtension(bm_new, user.E_Width)
+	if proto.HasExtension(bm_new, user.E_Width) {
+		t.Fatal("Failed clearing extension.")
+	}
+}
+
+func TestMessageSetWireFormat(t *testing.T) {
+	osm := new(base.OldStyleMessage)
+	osp := &user.OldStyleParcel{
+		Name:   proto.String("Dave"),
+		Height: proto.Int32(178),
+	}
+
+	err := proto.SetExtension(osm, user.E_OldStyleParcel_MessageSetExtension, osp)
+	if err != nil {
+		t.Fatal("Failed setting extension:", err)
+	}
+
+	buf, err := proto.Marshal(osm)
+	if err != nil {
+		t.Fatal("Failed encoding message:", err)
+	}
+
+	// Data generated from Python implementation.
+	expected := []byte{
+		11, 16, 209, 15, 26, 9, 10, 4, 68, 97, 118, 101, 16, 178, 1, 12,
+	}
+
+	if !bytes.Equal(expected, buf) {
+		t.Errorf("Encoding mismatch.\nwant %+v\n got %+v", expected, buf)
+	}
+
+	// Check that it is restored correctly.
+	osm = new(base.OldStyleMessage)
+	if err := proto.Unmarshal(buf, osm); err != nil {
+		t.Fatal("Failed decoding message:", err)
+	}
+	osp_out, err := proto.GetExtension(osm, user.E_OldStyleParcel_MessageSetExtension)
+	if err != nil {
+		t.Fatal("Failed getting extension:", err)
+	}
+	osp = osp_out.(*user.OldStyleParcel)
+	if *osp.Name != "Dave" || *osp.Height != 178 {
+		t.Errorf("Retrieved extension from decoded message is not correct: %+v", osp)
+	}
+}
+
+func main() {
+	// simpler than rigging up gotest
+	testing.Main(regexp.MatchString, []testing.InternalTest{
+		{"TestSingleFieldExtension", TestSingleFieldExtension},
+		{"TestMessageExtension", TestMessageExtension},
+		{"TestTopLevelExtension", TestTopLevelExtension},
+	},
+		[]testing.InternalBenchmark{},
+		[]testing.InternalExample{})
+}
diff --git a/protoc-gen-go/testdata/extension_user/extension_user.pb.go b/protoc-gen-go/testdata/extension_user/extension_user.pb.go
new file mode 100644
index 0000000..d7849be
--- /dev/null
+++ b/protoc-gen-go/testdata/extension_user/extension_user.pb.go
@@ -0,0 +1,408 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: extension_user/extension_user.proto
+
+package extension_user
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	extension_base "github.com/golang/protobuf/protoc-gen-go/testdata/extension_base"
+	extension_extra "github.com/golang/protobuf/protoc-gen-go/testdata/extension_extra"
+	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
+
+type UserMessage struct {
+	Name                 *string  `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	Rank                 *string  `protobuf:"bytes,2,opt,name=rank" json:"rank,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *UserMessage) Reset()         { *m = UserMessage{} }
+func (m *UserMessage) String() string { return proto.CompactTextString(m) }
+func (*UserMessage) ProtoMessage()    {}
+func (*UserMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_359ba8abf543ca10, []int{0}
+}
+
+func (m *UserMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UserMessage.Unmarshal(m, b)
+}
+func (m *UserMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UserMessage.Marshal(b, m, deterministic)
+}
+func (m *UserMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UserMessage.Merge(m, src)
+}
+func (m *UserMessage) XXX_Size() int {
+	return xxx_messageInfo_UserMessage.Size(m)
+}
+func (m *UserMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_UserMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UserMessage proto.InternalMessageInfo
+
+func (m *UserMessage) GetName() string {
+	if m != nil && m.Name != nil {
+		return *m.Name
+	}
+	return ""
+}
+
+func (m *UserMessage) GetRank() string {
+	if m != nil && m.Rank != nil {
+		return *m.Rank
+	}
+	return ""
+}
+
+// Extend inside the scope of another type
+type LoudMessage struct {
+	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
+	proto.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized             []byte `json:"-"`
+	XXX_sizecache                int32  `json:"-"`
+}
+
+func (m *LoudMessage) Reset()         { *m = LoudMessage{} }
+func (m *LoudMessage) String() string { return proto.CompactTextString(m) }
+func (*LoudMessage) ProtoMessage()    {}
+func (*LoudMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_359ba8abf543ca10, []int{1}
+}
+
+var extRange_LoudMessage = []proto.ExtensionRange{
+	{Start: 100, End: 536870911},
+}
+
+func (*LoudMessage) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_LoudMessage
+}
+
+func (m *LoudMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_LoudMessage.Unmarshal(m, b)
+}
+func (m *LoudMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_LoudMessage.Marshal(b, m, deterministic)
+}
+func (m *LoudMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_LoudMessage.Merge(m, src)
+}
+func (m *LoudMessage) XXX_Size() int {
+	return xxx_messageInfo_LoudMessage.Size(m)
+}
+func (m *LoudMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_LoudMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_LoudMessage proto.InternalMessageInfo
+
+var E_LoudMessage_Volume = &proto.ExtensionDesc{
+	ExtendedType:  (*extension_base.BaseMessage)(nil),
+	ExtensionType: (*uint32)(nil),
+	Field:         8,
+	Name:          "extension_user.LoudMessage.volume",
+	Tag:           "varint,8,opt,name=volume",
+	Filename:      "extension_user/extension_user.proto",
+}
+
+// Extend inside the scope of another type, using a message.
+type LoginMessage struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *LoginMessage) Reset()         { *m = LoginMessage{} }
+func (m *LoginMessage) String() string { return proto.CompactTextString(m) }
+func (*LoginMessage) ProtoMessage()    {}
+func (*LoginMessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_359ba8abf543ca10, []int{2}
+}
+
+func (m *LoginMessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_LoginMessage.Unmarshal(m, b)
+}
+func (m *LoginMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_LoginMessage.Marshal(b, m, deterministic)
+}
+func (m *LoginMessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_LoginMessage.Merge(m, src)
+}
+func (m *LoginMessage) XXX_Size() int {
+	return xxx_messageInfo_LoginMessage.Size(m)
+}
+func (m *LoginMessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_LoginMessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_LoginMessage proto.InternalMessageInfo
+
+var E_LoginMessage_UserMessage = &proto.ExtensionDesc{
+	ExtendedType:  (*extension_base.BaseMessage)(nil),
+	ExtensionType: (*UserMessage)(nil),
+	Field:         16,
+	Name:          "extension_user.LoginMessage.user_message",
+	Tag:           "bytes,16,opt,name=user_message",
+	Filename:      "extension_user/extension_user.proto",
+}
+
+type Detail struct {
+	Color                *string  `protobuf:"bytes,1,opt,name=color" json:"color,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Detail) Reset()         { *m = Detail{} }
+func (m *Detail) String() string { return proto.CompactTextString(m) }
+func (*Detail) ProtoMessage()    {}
+func (*Detail) Descriptor() ([]byte, []int) {
+	return fileDescriptor_359ba8abf543ca10, []int{3}
+}
+
+func (m *Detail) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Detail.Unmarshal(m, b)
+}
+func (m *Detail) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Detail.Marshal(b, m, deterministic)
+}
+func (m *Detail) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Detail.Merge(m, src)
+}
+func (m *Detail) XXX_Size() int {
+	return xxx_messageInfo_Detail.Size(m)
+}
+func (m *Detail) XXX_DiscardUnknown() {
+	xxx_messageInfo_Detail.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Detail proto.InternalMessageInfo
+
+func (m *Detail) GetColor() string {
+	if m != nil && m.Color != nil {
+		return *m.Color
+	}
+	return ""
+}
+
+// An extension of an extension
+type Announcement struct {
+	Words                *string  `protobuf:"bytes,1,opt,name=words" json:"words,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Announcement) Reset()         { *m = Announcement{} }
+func (m *Announcement) String() string { return proto.CompactTextString(m) }
+func (*Announcement) ProtoMessage()    {}
+func (*Announcement) Descriptor() ([]byte, []int) {
+	return fileDescriptor_359ba8abf543ca10, []int{4}
+}
+
+func (m *Announcement) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Announcement.Unmarshal(m, b)
+}
+func (m *Announcement) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Announcement.Marshal(b, m, deterministic)
+}
+func (m *Announcement) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Announcement.Merge(m, src)
+}
+func (m *Announcement) XXX_Size() int {
+	return xxx_messageInfo_Announcement.Size(m)
+}
+func (m *Announcement) XXX_DiscardUnknown() {
+	xxx_messageInfo_Announcement.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Announcement proto.InternalMessageInfo
+
+func (m *Announcement) GetWords() string {
+	if m != nil && m.Words != nil {
+		return *m.Words
+	}
+	return ""
+}
+
+var E_Announcement_LoudExt = &proto.ExtensionDesc{
+	ExtendedType:  (*LoudMessage)(nil),
+	ExtensionType: (*Announcement)(nil),
+	Field:         100,
+	Name:          "extension_user.Announcement.loud_ext",
+	Tag:           "bytes,100,opt,name=loud_ext",
+	Filename:      "extension_user/extension_user.proto",
+}
+
+// Something that can be put in a message set.
+type OldStyleParcel struct {
+	Name                 *string  `protobuf:"bytes,1,req,name=name" json:"name,omitempty"`
+	Height               *int32   `protobuf:"varint,2,opt,name=height" json:"height,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OldStyleParcel) Reset()         { *m = OldStyleParcel{} }
+func (m *OldStyleParcel) String() string { return proto.CompactTextString(m) }
+func (*OldStyleParcel) ProtoMessage()    {}
+func (*OldStyleParcel) Descriptor() ([]byte, []int) {
+	return fileDescriptor_359ba8abf543ca10, []int{5}
+}
+
+func (m *OldStyleParcel) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OldStyleParcel.Unmarshal(m, b)
+}
+func (m *OldStyleParcel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OldStyleParcel.Marshal(b, m, deterministic)
+}
+func (m *OldStyleParcel) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OldStyleParcel.Merge(m, src)
+}
+func (m *OldStyleParcel) XXX_Size() int {
+	return xxx_messageInfo_OldStyleParcel.Size(m)
+}
+func (m *OldStyleParcel) XXX_DiscardUnknown() {
+	xxx_messageInfo_OldStyleParcel.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OldStyleParcel proto.InternalMessageInfo
+
+func (m *OldStyleParcel) GetName() string {
+	if m != nil && m.Name != nil {
+		return *m.Name
+	}
+	return ""
+}
+
+func (m *OldStyleParcel) GetHeight() int32 {
+	if m != nil && m.Height != nil {
+		return *m.Height
+	}
+	return 0
+}
+
+var E_OldStyleParcel_MessageSetExtension = &proto.ExtensionDesc{
+	ExtendedType:  (*extension_base.OldStyleMessage)(nil),
+	ExtensionType: (*OldStyleParcel)(nil),
+	Field:         2001,
+	Name:          "extension_user.OldStyleParcel",
+	Tag:           "bytes,2001,opt,name=message_set_extension",
+	Filename:      "extension_user/extension_user.proto",
+}
+
+var E_UserMessage = &proto.ExtensionDesc{
+	ExtendedType:  (*extension_base.BaseMessage)(nil),
+	ExtensionType: (*UserMessage)(nil),
+	Field:         5,
+	Name:          "extension_user.user_message",
+	Tag:           "bytes,5,opt,name=user_message",
+	Filename:      "extension_user/extension_user.proto",
+}
+
+var E_ExtraMessage = &proto.ExtensionDesc{
+	ExtendedType:  (*extension_base.BaseMessage)(nil),
+	ExtensionType: (*extension_extra.ExtraMessage)(nil),
+	Field:         9,
+	Name:          "extension_user.extra_message",
+	Tag:           "bytes,9,opt,name=extra_message",
+	Filename:      "extension_user/extension_user.proto",
+}
+
+var E_Width = &proto.ExtensionDesc{
+	ExtendedType:  (*extension_base.BaseMessage)(nil),
+	ExtensionType: (*int32)(nil),
+	Field:         6,
+	Name:          "extension_user.width",
+	Tag:           "varint,6,opt,name=width",
+	Filename:      "extension_user/extension_user.proto",
+}
+
+var E_Area = &proto.ExtensionDesc{
+	ExtendedType:  (*extension_base.BaseMessage)(nil),
+	ExtensionType: (*int64)(nil),
+	Field:         7,
+	Name:          "extension_user.area",
+	Tag:           "varint,7,opt,name=area",
+	Filename:      "extension_user/extension_user.proto",
+}
+
+var E_Detail = &proto.ExtensionDesc{
+	ExtendedType:  (*extension_base.BaseMessage)(nil),
+	ExtensionType: ([]*Detail)(nil),
+	Field:         17,
+	Name:          "extension_user.detail",
+	Tag:           "bytes,17,rep,name=detail",
+	Filename:      "extension_user/extension_user.proto",
+}
+
+func init() {
+	proto.RegisterType((*UserMessage)(nil), "extension_user.UserMessage")
+	proto.RegisterExtension(E_LoudMessage_Volume)
+	proto.RegisterType((*LoudMessage)(nil), "extension_user.LoudMessage")
+	proto.RegisterExtension(E_LoginMessage_UserMessage)
+	proto.RegisterType((*LoginMessage)(nil), "extension_user.LoginMessage")
+	proto.RegisterType((*Detail)(nil), "extension_user.Detail")
+	proto.RegisterExtension(E_Announcement_LoudExt)
+	proto.RegisterType((*Announcement)(nil), "extension_user.Announcement")
+	proto.RegisterExtension(E_OldStyleParcel_MessageSetExtension)
+	proto.RegisterType((*OldStyleParcel)(nil), "extension_user.OldStyleParcel")
+	proto.RegisterExtension(E_UserMessage)
+	proto.RegisterExtension(E_ExtraMessage)
+	proto.RegisterExtension(E_Width)
+	proto.RegisterExtension(E_Area)
+	proto.RegisterExtension(E_Detail)
+}
+
+func init() {
+	proto.RegisterFile("extension_user/extension_user.proto", fileDescriptor_359ba8abf543ca10)
+}
+
+var fileDescriptor_359ba8abf543ca10 = []byte{
+	// 492 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0x51, 0x6f, 0x94, 0x40,
+	0x10, 0x0e, 0x6d, 0x8f, 0x5e, 0x87, 0x6b, 0xad, 0xa8, 0xcd, 0xa5, 0x6a, 0x25, 0x18, 0x13, 0x62,
+	0xd2, 0x23, 0x62, 0x7c, 0xe1, 0x49, 0x2f, 0xde, 0x93, 0x67, 0x34, 0x54, 0x5f, 0xf4, 0x81, 0xec,
+	0xc1, 0xc8, 0x91, 0xc2, 0xae, 0xd9, 0x5d, 0xec, 0xe9, 0xd3, 0xfd, 0x26, 0xff, 0x89, 0xff, 0xc8,
+	0xb0, 0x2c, 0x2d, 0x87, 0xc9, 0xc5, 0xbe, 0x90, 0xfd, 0x86, 0x6f, 0xbe, 0x99, 0xfd, 0x66, 0x00,
+	0x9e, 0xe2, 0x4a, 0x22, 0x15, 0x39, 0xa3, 0x71, 0x25, 0x90, 0xfb, 0x9b, 0x70, 0xf2, 0x9d, 0x33,
+	0xc9, 0xec, 0xa3, 0xcd, 0xe8, 0x69, 0x27, 0x69, 0x41, 0x04, 0xfa, 0x9b, 0xb0, 0x49, 0x3a, 0x7d,
+	0x76, 0x13, 0xc5, 0x95, 0xe4, 0xc4, 0xef, 0xe1, 0x86, 0xe6, 0xbe, 0x02, 0xeb, 0xb3, 0x40, 0xfe,
+	0x1e, 0x85, 0x20, 0x19, 0xda, 0x36, 0xec, 0x51, 0x52, 0xe2, 0xd8, 0x70, 0x0c, 0xef, 0x20, 0x52,
+	0xe7, 0x3a, 0xc6, 0x09, 0xbd, 0x1c, 0xef, 0x34, 0xb1, 0xfa, 0xec, 0xce, 0xc1, 0x9a, 0xb3, 0x2a,
+	0xd5, 0x69, 0xcf, 0x87, 0xc3, 0xf4, 0x78, 0xbd, 0x5e, 0xaf, 0x77, 0x82, 0x97, 0x60, 0xfe, 0x60,
+	0x45, 0x55, 0xa2, 0xfd, 0x70, 0xd2, 0xeb, 0x6b, 0x4a, 0x04, 0xea, 0x84, 0xf1, 0xd0, 0x31, 0xbc,
+	0xc3, 0x48, 0x53, 0xdd, 0x4b, 0x18, 0xcd, 0x59, 0x96, 0x53, 0xfd, 0x36, 0xf8, 0x0a, 0xa3, 0xfa,
+	0xa2, 0x71, 0xa9, 0xbb, 0xda, 0x2a, 0x75, 0xec, 0x18, 0x9e, 0x15, 0x74, 0x29, 0xca, 0xba, 0xce,
+	0xad, 0x22, 0xab, 0xba, 0x01, 0xee, 0x19, 0x98, 0x6f, 0x51, 0x92, 0xbc, 0xb0, 0xef, 0xc3, 0x20,
+	0x61, 0x05, 0xe3, 0xfa, 0xb6, 0x0d, 0x70, 0x7f, 0xc1, 0xe8, 0x0d, 0xa5, 0xac, 0xa2, 0x09, 0x96,
+	0x48, 0x65, 0xcd, 0xba, 0x62, 0x3c, 0x15, 0x2d, 0x4b, 0x81, 0xe0, 0x13, 0x0c, 0x0b, 0x56, 0xa5,
+	0xb5, 0x97, 0xf6, 0x3f, 0xb5, 0x3b, 0xd6, 0x8c, 0x53, 0xd5, 0xde, 0xa3, 0x3e, 0xa5, 0x5b, 0x22,
+	0xda, 0xaf, 0xa5, 0x66, 0x2b, 0xe9, 0xfe, 0x36, 0xe0, 0xe8, 0x43, 0x91, 0x5e, 0xc8, 0x9f, 0x05,
+	0x7e, 0x24, 0x3c, 0xc1, 0xa2, 0x33, 0x91, 0x9d, 0xeb, 0x89, 0x9c, 0x80, 0xb9, 0xc4, 0x3c, 0x5b,
+	0x4a, 0x35, 0x93, 0x41, 0xa4, 0x51, 0x20, 0xe1, 0x81, 0xb6, 0x2c, 0x16, 0x28, 0xe3, 0xeb, 0x92,
+	0xf6, 0x93, 0xbe, 0x81, 0x6d, 0x91, 0xb6, 0xcb, 0x3f, 0x77, 0x54, 0x9b, 0x67, 0xfd, 0x36, 0x37,
+	0x9b, 0x89, 0xee, 0x69, 0xf9, 0x0b, 0x94, 0xb3, 0x96, 0x18, 0xde, 0x6a, 0x5a, 0x83, 0xdb, 0x4d,
+	0x2b, 0x8c, 0xe1, 0x50, 0xad, 0xeb, 0xff, 0xa9, 0x1f, 0x28, 0xf5, 0xc7, 0x93, 0xfe, 0xae, 0xcf,
+	0xea, 0x67, 0xab, 0x3f, 0xc2, 0x0e, 0x0a, 0x5f, 0xc0, 0xe0, 0x2a, 0x4f, 0xe5, 0x72, 0xbb, 0xb0,
+	0xa9, 0x7c, 0x6e, 0x98, 0xa1, 0x0f, 0x7b, 0x84, 0x23, 0xd9, 0x9e, 0xb1, 0xef, 0x18, 0xde, 0x6e,
+	0xa4, 0x88, 0xe1, 0x3b, 0x30, 0xd3, 0x66, 0xe5, 0xb6, 0xa6, 0xdc, 0x75, 0x76, 0x3d, 0x2b, 0x38,
+	0xe9, 0x7b, 0xd3, 0x6c, 0x6b, 0xa4, 0x25, 0xa6, 0xd3, 0x2f, 0xaf, 0xb3, 0x5c, 0x2e, 0xab, 0xc5,
+	0x24, 0x61, 0xa5, 0x9f, 0xb1, 0x82, 0xd0, 0xcc, 0x57, 0x1f, 0xf3, 0xa2, 0xfa, 0xd6, 0x1c, 0x92,
+	0xf3, 0x0c, 0xe9, 0x79, 0xc6, 0x7c, 0x89, 0x42, 0xa6, 0x44, 0x92, 0xde, 0x7f, 0xe5, 0x6f, 0x00,
+	0x00, 0x00, 0xff, 0xff, 0xdf, 0x18, 0x64, 0x15, 0x77, 0x04, 0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/extension_user/extension_user.proto b/protoc-gen-go/testdata/extension_user/extension_user.proto
new file mode 100644
index 0000000..033c186
--- /dev/null
+++ b/protoc-gen-go/testdata/extension_user/extension_user.proto
@@ -0,0 +1,102 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto2";
+
+import "extension_base/extension_base.proto";
+import "extension_extra/extension_extra.proto";
+
+package extension_user;
+
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/extension_user";
+
+message UserMessage {
+  optional string name = 1;
+  optional string rank = 2;
+}
+
+// Extend with a message
+extend extension_base.BaseMessage {
+  optional UserMessage user_message = 5;
+}
+
+// Extend with a foreign message
+extend extension_base.BaseMessage {
+  optional extension_extra.ExtraMessage extra_message = 9;
+}
+
+// Extend with some primitive types
+extend extension_base.BaseMessage {
+  optional int32 width = 6;
+  optional int64 area = 7;
+}
+
+// Extend inside the scope of another type
+message LoudMessage {
+  extend extension_base.BaseMessage {
+    optional uint32 volume = 8;
+  }
+  extensions 100 to max;
+}
+
+// Extend inside the scope of another type, using a message.
+message LoginMessage {
+  extend extension_base.BaseMessage {
+    optional UserMessage user_message = 16;
+  }
+}
+
+// Extend with a repeated field
+extend extension_base.BaseMessage {
+  repeated Detail detail = 17;
+}
+
+message Detail {
+  optional string color = 1;
+}
+
+// An extension of an extension
+message Announcement {
+  optional string words = 1;
+  extend LoudMessage {
+    optional Announcement loud_ext = 100;
+  }
+}
+
+// Something that can be put in a message set.
+message OldStyleParcel {
+  extend extension_base.OldStyleMessage {
+    optional OldStyleParcel message_set_extension = 2001;
+  }
+
+  required string name = 1;
+  optional int32 height = 2;
+}
diff --git a/protoc-gen-go/testdata/grpc/go.mod b/protoc-gen-go/testdata/grpc/go.mod
new file mode 100644
index 0000000..19a8a29
--- /dev/null
+++ b/protoc-gen-go/testdata/grpc/go.mod
@@ -0,0 +1,10 @@
+module github.com/golang/protobuf/protoc-gen-go/testdata/grpc
+
+go 1.9
+
+require (
+	github.com/golang/protobuf v1.3.2
+	google.golang.org/grpc v1.27.0-pre.0.20200124224931-7afcfdd66b12
+)
+
+replace github.com/golang/protobuf => ../../..
diff --git a/protoc-gen-go/testdata/grpc/go.sum b/protoc-gen-go/testdata/grpc/go.sum
new file mode 100644
index 0000000..f5b6857
--- /dev/null
+++ b/protoc-gen-go/testdata/grpc/go.sum
@@ -0,0 +1,46 @@
+cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
+github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
+github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
+github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
+github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
+github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ=
+github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
+github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
+golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
+golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
+golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
+google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
+google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2ElGhA4+qG2zF97qiUzTM+rQ0klBOcE=
+google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
+google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.27.0-pre.0.20200124224931-7afcfdd66b12 h1:Xr+lKA5ySDBoca3aMs7eOexQcsEkNin70xNPcILZITc=
+google.golang.org/grpc v1.27.0-pre.0.20200124224931-7afcfdd66b12/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
diff --git a/protoc-gen-go/testdata/grpc/grpc.pb.go b/protoc-gen-go/testdata/grpc/grpc.pb.go
new file mode 100644
index 0000000..35c505b
--- /dev/null
+++ b/protoc-gen-go/testdata/grpc/grpc.pb.go
@@ -0,0 +1,468 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: grpc/grpc.proto
+
+package testing
+
+import (
+	context "context"
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	grpc "google.golang.org/grpc"
+	codes "google.golang.org/grpc/codes"
+	status "google.golang.org/grpc/status"
+	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
+
+type SimpleRequest struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *SimpleRequest) Reset()         { *m = SimpleRequest{} }
+func (m *SimpleRequest) String() string { return proto.CompactTextString(m) }
+func (*SimpleRequest) ProtoMessage()    {}
+func (*SimpleRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_81ea47a3f88c2082, []int{0}
+}
+
+func (m *SimpleRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SimpleRequest.Unmarshal(m, b)
+}
+func (m *SimpleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SimpleRequest.Marshal(b, m, deterministic)
+}
+func (m *SimpleRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SimpleRequest.Merge(m, src)
+}
+func (m *SimpleRequest) XXX_Size() int {
+	return xxx_messageInfo_SimpleRequest.Size(m)
+}
+func (m *SimpleRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_SimpleRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SimpleRequest proto.InternalMessageInfo
+
+type SimpleResponse struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *SimpleResponse) Reset()         { *m = SimpleResponse{} }
+func (m *SimpleResponse) String() string { return proto.CompactTextString(m) }
+func (*SimpleResponse) ProtoMessage()    {}
+func (*SimpleResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_81ea47a3f88c2082, []int{1}
+}
+
+func (m *SimpleResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SimpleResponse.Unmarshal(m, b)
+}
+func (m *SimpleResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SimpleResponse.Marshal(b, m, deterministic)
+}
+func (m *SimpleResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SimpleResponse.Merge(m, src)
+}
+func (m *SimpleResponse) XXX_Size() int {
+	return xxx_messageInfo_SimpleResponse.Size(m)
+}
+func (m *SimpleResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_SimpleResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SimpleResponse proto.InternalMessageInfo
+
+type StreamMsg struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *StreamMsg) Reset()         { *m = StreamMsg{} }
+func (m *StreamMsg) String() string { return proto.CompactTextString(m) }
+func (*StreamMsg) ProtoMessage()    {}
+func (*StreamMsg) Descriptor() ([]byte, []int) {
+	return fileDescriptor_81ea47a3f88c2082, []int{2}
+}
+
+func (m *StreamMsg) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StreamMsg.Unmarshal(m, b)
+}
+func (m *StreamMsg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StreamMsg.Marshal(b, m, deterministic)
+}
+func (m *StreamMsg) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StreamMsg.Merge(m, src)
+}
+func (m *StreamMsg) XXX_Size() int {
+	return xxx_messageInfo_StreamMsg.Size(m)
+}
+func (m *StreamMsg) XXX_DiscardUnknown() {
+	xxx_messageInfo_StreamMsg.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_StreamMsg proto.InternalMessageInfo
+
+type StreamMsg2 struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *StreamMsg2) Reset()         { *m = StreamMsg2{} }
+func (m *StreamMsg2) String() string { return proto.CompactTextString(m) }
+func (*StreamMsg2) ProtoMessage()    {}
+func (*StreamMsg2) Descriptor() ([]byte, []int) {
+	return fileDescriptor_81ea47a3f88c2082, []int{3}
+}
+
+func (m *StreamMsg2) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StreamMsg2.Unmarshal(m, b)
+}
+func (m *StreamMsg2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StreamMsg2.Marshal(b, m, deterministic)
+}
+func (m *StreamMsg2) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StreamMsg2.Merge(m, src)
+}
+func (m *StreamMsg2) XXX_Size() int {
+	return xxx_messageInfo_StreamMsg2.Size(m)
+}
+func (m *StreamMsg2) XXX_DiscardUnknown() {
+	xxx_messageInfo_StreamMsg2.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_StreamMsg2 proto.InternalMessageInfo
+
+func init() {
+	proto.RegisterType((*SimpleRequest)(nil), "grpc.testing.SimpleRequest")
+	proto.RegisterType((*SimpleResponse)(nil), "grpc.testing.SimpleResponse")
+	proto.RegisterType((*StreamMsg)(nil), "grpc.testing.StreamMsg")
+	proto.RegisterType((*StreamMsg2)(nil), "grpc.testing.StreamMsg2")
+}
+
+func init() {
+	proto.RegisterFile("grpc/grpc.proto", fileDescriptor_81ea47a3f88c2082)
+}
+
+var fileDescriptor_81ea47a3f88c2082 = []byte{
+	// 244 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x4f, 0x2f, 0x2a, 0x48,
+	0xd6, 0x07, 0x11, 0x7a, 0x05, 0x45, 0xf9, 0x25, 0xf9, 0x42, 0x3c, 0x60, 0x76, 0x49, 0x6a, 0x71,
+	0x49, 0x66, 0x5e, 0xba, 0x12, 0x3f, 0x17, 0x6f, 0x70, 0x66, 0x6e, 0x41, 0x4e, 0x6a, 0x50, 0x6a,
+	0x61, 0x69, 0x6a, 0x71, 0x89, 0x92, 0x00, 0x17, 0x1f, 0x4c, 0xa0, 0xb8, 0x20, 0x3f, 0xaf, 0x38,
+	0x55, 0x89, 0x9b, 0x8b, 0x33, 0xb8, 0xa4, 0x28, 0x35, 0x31, 0xd7, 0xb7, 0x38, 0x5d, 0x89, 0x87,
+	0x8b, 0x0b, 0xce, 0x31, 0x32, 0x9a, 0xc1, 0xc4, 0xc5, 0x12, 0x92, 0x5a, 0x5c, 0x22, 0xe4, 0xc6,
+	0xc5, 0x19, 0x9a, 0x97, 0x58, 0x54, 0xe9, 0x9c, 0x98, 0x93, 0x23, 0x24, 0xad, 0x87, 0x6c, 0x85,
+	0x1e, 0x8a, 0xf9, 0x52, 0x32, 0xd8, 0x25, 0x21, 0x76, 0x09, 0xb9, 0x70, 0x71, 0xb9, 0xe4, 0x97,
+	0xe7, 0x15, 0x83, 0xad, 0xc0, 0x6f, 0x90, 0x38, 0x9a, 0x24, 0xcc, 0x55, 0x06, 0x8c, 0x42, 0xce,
+	0x5c, 0x1c, 0xa1, 0x05, 0x50, 0x33, 0x70, 0x29, 0xc3, 0xef, 0x10, 0x0d, 0x46, 0x21, 0x5b, 0x2e,
+	0x16, 0xa7, 0xcc, 0x94, 0x4c, 0xdc, 0x06, 0x48, 0xe0, 0x90, 0x30, 0xd2, 0x60, 0x34, 0x60, 0x74,
+	0x72, 0x88, 0xb2, 0x4b, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf,
+	0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x07, 0xc7, 0x40, 0x52, 0x69, 0x1a, 0x84, 0x91, 0xac, 0x9b, 0x9e,
+	0x9a, 0xa7, 0x9b, 0x9e, 0xaf, 0x0f, 0x32, 0x22, 0x25, 0xb1, 0x24, 0x11, 0x1c, 0x4d, 0xd6, 0x50,
+	0x03, 0x93, 0xd8, 0xc0, 0x8a, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x90, 0xb9, 0x95, 0x42,
+	0xc2, 0x01, 0x00, 0x00,
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConnInterface
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion6
+
+// TestClient is the client API for Test service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
+type TestClient interface {
+	UnaryCall(ctx context.Context, in *SimpleRequest, opts ...grpc.CallOption) (*SimpleResponse, error)
+	// This RPC streams from the server only.
+	Downstream(ctx context.Context, in *SimpleRequest, opts ...grpc.CallOption) (Test_DownstreamClient, error)
+	// This RPC streams from the client.
+	Upstream(ctx context.Context, opts ...grpc.CallOption) (Test_UpstreamClient, error)
+	// This one streams in both directions.
+	Bidi(ctx context.Context, opts ...grpc.CallOption) (Test_BidiClient, error)
+}
+
+type testClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewTestClient(cc grpc.ClientConnInterface) TestClient {
+	return &testClient{cc}
+}
+
+func (c *testClient) UnaryCall(ctx context.Context, in *SimpleRequest, opts ...grpc.CallOption) (*SimpleResponse, error) {
+	out := new(SimpleResponse)
+	err := c.cc.Invoke(ctx, "/grpc.testing.Test/UnaryCall", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *testClient) Downstream(ctx context.Context, in *SimpleRequest, opts ...grpc.CallOption) (Test_DownstreamClient, error) {
+	stream, err := c.cc.NewStream(ctx, &_Test_serviceDesc.Streams[0], "/grpc.testing.Test/Downstream", opts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &testDownstreamClient{stream}
+	if err := x.ClientStream.SendMsg(in); err != nil {
+		return nil, err
+	}
+	if err := x.ClientStream.CloseSend(); err != nil {
+		return nil, err
+	}
+	return x, nil
+}
+
+type Test_DownstreamClient interface {
+	Recv() (*StreamMsg, error)
+	grpc.ClientStream
+}
+
+type testDownstreamClient struct {
+	grpc.ClientStream
+}
+
+func (x *testDownstreamClient) Recv() (*StreamMsg, error) {
+	m := new(StreamMsg)
+	if err := x.ClientStream.RecvMsg(m); err != nil {
+		return nil, err
+	}
+	return m, nil
+}
+
+func (c *testClient) Upstream(ctx context.Context, opts ...grpc.CallOption) (Test_UpstreamClient, error) {
+	stream, err := c.cc.NewStream(ctx, &_Test_serviceDesc.Streams[1], "/grpc.testing.Test/Upstream", opts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &testUpstreamClient{stream}
+	return x, nil
+}
+
+type Test_UpstreamClient interface {
+	Send(*StreamMsg) error
+	CloseAndRecv() (*SimpleResponse, error)
+	grpc.ClientStream
+}
+
+type testUpstreamClient struct {
+	grpc.ClientStream
+}
+
+func (x *testUpstreamClient) Send(m *StreamMsg) error {
+	return x.ClientStream.SendMsg(m)
+}
+
+func (x *testUpstreamClient) CloseAndRecv() (*SimpleResponse, error) {
+	if err := x.ClientStream.CloseSend(); err != nil {
+		return nil, err
+	}
+	m := new(SimpleResponse)
+	if err := x.ClientStream.RecvMsg(m); err != nil {
+		return nil, err
+	}
+	return m, nil
+}
+
+func (c *testClient) Bidi(ctx context.Context, opts ...grpc.CallOption) (Test_BidiClient, error) {
+	stream, err := c.cc.NewStream(ctx, &_Test_serviceDesc.Streams[2], "/grpc.testing.Test/Bidi", opts...)
+	if err != nil {
+		return nil, err
+	}
+	x := &testBidiClient{stream}
+	return x, nil
+}
+
+type Test_BidiClient interface {
+	Send(*StreamMsg) error
+	Recv() (*StreamMsg2, error)
+	grpc.ClientStream
+}
+
+type testBidiClient struct {
+	grpc.ClientStream
+}
+
+func (x *testBidiClient) Send(m *StreamMsg) error {
+	return x.ClientStream.SendMsg(m)
+}
+
+func (x *testBidiClient) Recv() (*StreamMsg2, error) {
+	m := new(StreamMsg2)
+	if err := x.ClientStream.RecvMsg(m); err != nil {
+		return nil, err
+	}
+	return m, nil
+}
+
+// TestServer is the server API for Test service.
+type TestServer interface {
+	UnaryCall(context.Context, *SimpleRequest) (*SimpleResponse, error)
+	// This RPC streams from the server only.
+	Downstream(*SimpleRequest, Test_DownstreamServer) error
+	// This RPC streams from the client.
+	Upstream(Test_UpstreamServer) error
+	// This one streams in both directions.
+	Bidi(Test_BidiServer) error
+}
+
+// UnimplementedTestServer can be embedded to have forward compatible implementations.
+type UnimplementedTestServer struct {
+}
+
+func (*UnimplementedTestServer) UnaryCall(ctx context.Context, req *SimpleRequest) (*SimpleResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method UnaryCall not implemented")
+}
+func (*UnimplementedTestServer) Downstream(req *SimpleRequest, srv Test_DownstreamServer) error {
+	return status.Errorf(codes.Unimplemented, "method Downstream not implemented")
+}
+func (*UnimplementedTestServer) Upstream(srv Test_UpstreamServer) error {
+	return status.Errorf(codes.Unimplemented, "method Upstream not implemented")
+}
+func (*UnimplementedTestServer) Bidi(srv Test_BidiServer) error {
+	return status.Errorf(codes.Unimplemented, "method Bidi not implemented")
+}
+
+func RegisterTestServer(s *grpc.Server, srv TestServer) {
+	s.RegisterService(&_Test_serviceDesc, srv)
+}
+
+func _Test_UnaryCall_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(SimpleRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(TestServer).UnaryCall(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/grpc.testing.Test/UnaryCall",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(TestServer).UnaryCall(ctx, req.(*SimpleRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _Test_Downstream_Handler(srv interface{}, stream grpc.ServerStream) error {
+	m := new(SimpleRequest)
+	if err := stream.RecvMsg(m); err != nil {
+		return err
+	}
+	return srv.(TestServer).Downstream(m, &testDownstreamServer{stream})
+}
+
+type Test_DownstreamServer interface {
+	Send(*StreamMsg) error
+	grpc.ServerStream
+}
+
+type testDownstreamServer struct {
+	grpc.ServerStream
+}
+
+func (x *testDownstreamServer) Send(m *StreamMsg) error {
+	return x.ServerStream.SendMsg(m)
+}
+
+func _Test_Upstream_Handler(srv interface{}, stream grpc.ServerStream) error {
+	return srv.(TestServer).Upstream(&testUpstreamServer{stream})
+}
+
+type Test_UpstreamServer interface {
+	SendAndClose(*SimpleResponse) error
+	Recv() (*StreamMsg, error)
+	grpc.ServerStream
+}
+
+type testUpstreamServer struct {
+	grpc.ServerStream
+}
+
+func (x *testUpstreamServer) SendAndClose(m *SimpleResponse) error {
+	return x.ServerStream.SendMsg(m)
+}
+
+func (x *testUpstreamServer) Recv() (*StreamMsg, error) {
+	m := new(StreamMsg)
+	if err := x.ServerStream.RecvMsg(m); err != nil {
+		return nil, err
+	}
+	return m, nil
+}
+
+func _Test_Bidi_Handler(srv interface{}, stream grpc.ServerStream) error {
+	return srv.(TestServer).Bidi(&testBidiServer{stream})
+}
+
+type Test_BidiServer interface {
+	Send(*StreamMsg2) error
+	Recv() (*StreamMsg, error)
+	grpc.ServerStream
+}
+
+type testBidiServer struct {
+	grpc.ServerStream
+}
+
+func (x *testBidiServer) Send(m *StreamMsg2) error {
+	return x.ServerStream.SendMsg(m)
+}
+
+func (x *testBidiServer) Recv() (*StreamMsg, error) {
+	m := new(StreamMsg)
+	if err := x.ServerStream.RecvMsg(m); err != nil {
+		return nil, err
+	}
+	return m, nil
+}
+
+var _Test_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "grpc.testing.Test",
+	HandlerType: (*TestServer)(nil),
+	Methods: []grpc.MethodDesc{
+		{
+			MethodName: "UnaryCall",
+			Handler:    _Test_UnaryCall_Handler,
+		},
+	},
+	Streams: []grpc.StreamDesc{
+		{
+			StreamName:    "Downstream",
+			Handler:       _Test_Downstream_Handler,
+			ServerStreams: true,
+		},
+		{
+			StreamName:    "Upstream",
+			Handler:       _Test_Upstream_Handler,
+			ClientStreams: true,
+		},
+		{
+			StreamName:    "Bidi",
+			Handler:       _Test_Bidi_Handler,
+			ServerStreams: true,
+			ClientStreams: true,
+		},
+	},
+	Metadata: "grpc/grpc.proto",
+}
diff --git a/protoc-gen-go/testdata/grpc/grpc.proto b/protoc-gen-go/testdata/grpc/grpc.proto
new file mode 100644
index 0000000..0e5c64a
--- /dev/null
+++ b/protoc-gen-go/testdata/grpc/grpc.proto
@@ -0,0 +1,61 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2015 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+package grpc.testing;
+
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/grpc;testing";
+
+message SimpleRequest {
+}
+
+message SimpleResponse {
+}
+
+message StreamMsg {
+}
+
+message StreamMsg2 {
+}
+
+service Test {
+  rpc UnaryCall(SimpleRequest) returns (SimpleResponse);
+
+  // This RPC streams from the server only.
+  rpc Downstream(SimpleRequest) returns (stream StreamMsg);
+
+  // This RPC streams from the client.
+  rpc Upstream(stream StreamMsg) returns (SimpleResponse);
+
+  // This one streams in both directions.
+  rpc Bidi(stream StreamMsg) returns (stream StreamMsg2);
+}
diff --git a/protoc-gen-go/testdata/grpc/grpc_empty.pb.go b/protoc-gen-go/testdata/grpc/grpc_empty.pb.go
new file mode 100644
index 0000000..9a2ab47
--- /dev/null
+++ b/protoc-gen-go/testdata/grpc/grpc_empty.pb.go
@@ -0,0 +1,81 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: grpc/grpc_empty.proto
+
+package testing
+
+import (
+	context "context"
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	grpc "google.golang.org/grpc"
+	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
+
+func init() {
+	proto.RegisterFile("grpc/grpc_empty.proto", fileDescriptor_c580a37f1c90e9b1)
+}
+
+var fileDescriptor_c580a37f1c90e9b1 = []byte{
+	// 125 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4d, 0x2f, 0x2a, 0x48,
+	0xd6, 0x07, 0x11, 0xf1, 0xa9, 0xb9, 0x05, 0x25, 0x95, 0x7a, 0x05, 0x45, 0xf9, 0x25, 0xf9, 0x42,
+	0x3c, 0x20, 0x11, 0xbd, 0x92, 0xd4, 0xe2, 0x92, 0xcc, 0xbc, 0x74, 0x23, 0x3e, 0x2e, 0x1e, 0x57,
+	0x90, 0x64, 0x70, 0x6a, 0x51, 0x59, 0x66, 0x72, 0xaa, 0x93, 0x43, 0x94, 0x5d, 0x7a, 0x66, 0x49,
+	0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x7a, 0x7e, 0x4e, 0x62, 0x5e, 0xba, 0x3e, 0x58,
+	0x63, 0x52, 0x69, 0x1a, 0x84, 0x91, 0xac, 0x9b, 0x9e, 0x9a, 0xa7, 0x9b, 0x9e, 0xaf, 0x0f, 0x32,
+	0x23, 0x25, 0xb1, 0x24, 0x11, 0x6c, 0x87, 0x35, 0xd4, 0xc4, 0x24, 0x36, 0xb0, 0x22, 0x63, 0x40,
+	0x00, 0x00, 0x00, 0xff, 0xff, 0x93, 0x1d, 0xf2, 0x47, 0x7f, 0x00, 0x00, 0x00,
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConnInterface
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion6
+
+// EmptyServiceClient is the client API for EmptyService service.
+//
+// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
+type EmptyServiceClient interface {
+}
+
+type emptyServiceClient struct {
+	cc grpc.ClientConnInterface
+}
+
+func NewEmptyServiceClient(cc grpc.ClientConnInterface) EmptyServiceClient {
+	return &emptyServiceClient{cc}
+}
+
+// EmptyServiceServer is the server API for EmptyService service.
+type EmptyServiceServer interface {
+}
+
+// UnimplementedEmptyServiceServer can be embedded to have forward compatible implementations.
+type UnimplementedEmptyServiceServer struct {
+}
+
+func RegisterEmptyServiceServer(s *grpc.Server, srv EmptyServiceServer) {
+	s.RegisterService(&_EmptyService_serviceDesc, srv)
+}
+
+var _EmptyService_serviceDesc = grpc.ServiceDesc{
+	ServiceName: "grpc.testing.EmptyService",
+	HandlerType: (*EmptyServiceServer)(nil),
+	Methods:     []grpc.MethodDesc{},
+	Streams:     []grpc.StreamDesc{},
+	Metadata:    "grpc/grpc_empty.proto",
+}
diff --git a/protoc-gen-go/testdata/grpc/grpc_empty.proto b/protoc-gen-go/testdata/grpc/grpc_empty.proto
new file mode 100644
index 0000000..ae07b81
--- /dev/null
+++ b/protoc-gen-go/testdata/grpc/grpc_empty.proto
@@ -0,0 +1,38 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2019 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+package grpc.testing;
+
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/grpc;testing";
+
+service EmptyService {}
diff --git a/protoc-gen-go/testdata/import_public/a.pb.go b/protoc-gen-go/testdata/import_public/a.pb.go
new file mode 100644
index 0000000..e1e6d4b
--- /dev/null
+++ b/protoc-gen-go/testdata/import_public/a.pb.go
@@ -0,0 +1,143 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: import_public/a.proto
+
+package import_public
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	sub "github.com/golang/protobuf/protoc-gen-go/testdata/import_public/sub"
+	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
+
+const Default_M_DefaultField = sub.Default_M_DefaultField
+
+// M from public import import_public/sub/a.proto
+type M = sub.M
+type M_OneofInt32 = sub.M_OneofInt32
+type M_OneofInt64 = sub.M_OneofInt64
+
+// M_Grouping from public import import_public/sub/a.proto
+type M_Grouping = sub.M_Grouping
+
+// M_Submessage from public import import_public/sub/a.proto
+type M_Submessage = sub.M_Submessage
+type M_Submessage_SubmessageOneofInt32 = sub.M_Submessage_SubmessageOneofInt32
+type M_Submessage_SubmessageOneofInt64 = sub.M_Submessage_SubmessageOneofInt64
+
+// E from public import import_public/sub/a.proto
+type E = sub.E
+
+var E_name = sub.E_name
+var E_value = sub.E_value
+
+const E_ZERO = E(sub.E_ZERO)
+
+// M_Subenum from public import import_public/sub/a.proto
+type M_Subenum = sub.M_Subenum
+
+var M_Subenum_name = sub.M_Subenum_name
+var M_Subenum_value = sub.M_Subenum_value
+
+const M_M_ZERO = M_Subenum(sub.M_M_ZERO)
+
+// M_Submessage_Submessage_Subenum from public import import_public/sub/a.proto
+type M_Submessage_Submessage_Subenum = sub.M_Submessage_Submessage_Subenum
+
+var M_Submessage_Submessage_Subenum_name = sub.M_Submessage_Submessage_Subenum_name
+var M_Submessage_Submessage_Subenum_value = sub.M_Submessage_Submessage_Subenum_value
+
+const M_Submessage_M_SUBMESSAGE_ZERO = M_Submessage_Submessage_Subenum(sub.M_Submessage_M_SUBMESSAGE_ZERO)
+
+var E_ExtensionField = sub.E_ExtensionField
+
+type Public struct {
+	M                    *sub.M   `protobuf:"bytes,1,opt,name=m" json:"m,omitempty"`
+	E                    *sub.E   `protobuf:"varint,2,opt,name=e,enum=goproto.test.import_public.sub.E" json:"e,omitempty"`
+	Local                *Local   `protobuf:"bytes,3,opt,name=local" json:"local,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Public) Reset()         { *m = Public{} }
+func (m *Public) String() string { return proto.CompactTextString(m) }
+func (*Public) ProtoMessage()    {}
+func (*Public) Descriptor() ([]byte, []int) {
+	return fileDescriptor_73b7577c95fa6b70, []int{0}
+}
+
+func (m *Public) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Public.Unmarshal(m, b)
+}
+func (m *Public) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Public.Marshal(b, m, deterministic)
+}
+func (m *Public) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Public.Merge(m, src)
+}
+func (m *Public) XXX_Size() int {
+	return xxx_messageInfo_Public.Size(m)
+}
+func (m *Public) XXX_DiscardUnknown() {
+	xxx_messageInfo_Public.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Public proto.InternalMessageInfo
+
+func (m *Public) GetM() *sub.M {
+	if m != nil {
+		return m.M
+	}
+	return nil
+}
+
+func (m *Public) GetE() sub.E {
+	if m != nil && m.E != nil {
+		return *m.E
+	}
+	return sub.E_ZERO
+}
+
+func (m *Public) GetLocal() *Local {
+	if m != nil {
+		return m.Local
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*Public)(nil), "goproto.test.import_public.Public")
+}
+
+func init() {
+	proto.RegisterFile("import_public/a.proto", fileDescriptor_73b7577c95fa6b70)
+}
+
+var fileDescriptor_73b7577c95fa6b70 = []byte{
+	// 195 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0xcd, 0xcc, 0x2d, 0xc8,
+	0x2f, 0x2a, 0x89, 0x2f, 0x28, 0x4d, 0xca, 0xc9, 0x4c, 0xd6, 0x4f, 0xd4, 0x2b, 0x28, 0xca, 0x2f,
+	0xc9, 0x17, 0x92, 0x4a, 0xcf, 0x07, 0x33, 0xf4, 0x4a, 0x52, 0x8b, 0x4b, 0xf4, 0x50, 0xd4, 0x48,
+	0x49, 0xa2, 0x6a, 0x29, 0x2e, 0x4d, 0x82, 0x69, 0x93, 0x42, 0x33, 0x2d, 0x09, 0x22, 0xac, 0xb4,
+	0x98, 0x91, 0x8b, 0x2d, 0x00, 0x2c, 0x24, 0xa4, 0xcf, 0xc5, 0x98, 0x2b, 0xc1, 0xa8, 0xc0, 0xa8,
+	0xc1, 0x6d, 0xa4, 0xa8, 0x87, 0xdb, 0x12, 0xbd, 0xe2, 0xd2, 0x24, 0x3d, 0xdf, 0x20, 0xc6, 0x5c,
+	0x90, 0x86, 0x54, 0x09, 0x26, 0x05, 0x46, 0x0d, 0x3e, 0xc2, 0x1a, 0x5c, 0x83, 0x18, 0x53, 0x85,
+	0xcc, 0xb9, 0x58, 0x73, 0xf2, 0x93, 0x13, 0x73, 0x24, 0x98, 0x09, 0xdb, 0xe2, 0x03, 0x52, 0x18,
+	0x04, 0x51, 0xef, 0xe4, 0x18, 0x65, 0x9f, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f,
+	0xab, 0x9f, 0x9e, 0x9f, 0x93, 0x98, 0x97, 0xae, 0x0f, 0xd6, 0x9a, 0x54, 0x9a, 0x06, 0x61, 0x24,
+	0xeb, 0xa6, 0xa7, 0xe6, 0xe9, 0xa6, 0xe7, 0xeb, 0x83, 0xcc, 0x4a, 0x49, 0x2c, 0x49, 0xd4, 0x47,
+	0x31, 0x2f, 0x80, 0x21, 0x80, 0x11, 0x10, 0x00, 0x00, 0xff, 0xff, 0x17, 0x83, 0x2d, 0xd4, 0x52,
+	0x01, 0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/import_public/a.proto b/protoc-gen-go/testdata/import_public/a.proto
new file mode 100644
index 0000000..9a4e7c0
--- /dev/null
+++ b/protoc-gen-go/testdata/import_public/a.proto
@@ -0,0 +1,45 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2018 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto2";
+
+package goproto.test.import_public;
+
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/import_public";
+
+import public "import_public/sub/a.proto"; // Different Go package.
+import public "import_public/b.proto";     // Same Go package.
+
+message Public {
+  optional goproto.test.import_public.sub.M m = 1;
+  optional goproto.test.import_public.sub.E e = 2;
+  optional Local local = 3;
+}
diff --git a/protoc-gen-go/testdata/import_public/b.pb.go b/protoc-gen-go/testdata/import_public/b.pb.go
new file mode 100644
index 0000000..79ce831
--- /dev/null
+++ b/protoc-gen-go/testdata/import_public/b.pb.go
@@ -0,0 +1,92 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: import_public/b.proto
+
+package import_public
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	sub "github.com/golang/protobuf/protoc-gen-go/testdata/import_public/sub"
+	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
+
+type Local struct {
+	M                    *sub.M   `protobuf:"bytes,1,opt,name=m" json:"m,omitempty"`
+	E                    *sub.E   `protobuf:"varint,2,opt,name=e,enum=goproto.test.import_public.sub.E" json:"e,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Local) Reset()         { *m = Local{} }
+func (m *Local) String() string { return proto.CompactTextString(m) }
+func (*Local) ProtoMessage()    {}
+func (*Local) Descriptor() ([]byte, []int) {
+	return fileDescriptor_84995586b3d09710, []int{0}
+}
+
+func (m *Local) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Local.Unmarshal(m, b)
+}
+func (m *Local) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Local.Marshal(b, m, deterministic)
+}
+func (m *Local) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Local.Merge(m, src)
+}
+func (m *Local) XXX_Size() int {
+	return xxx_messageInfo_Local.Size(m)
+}
+func (m *Local) XXX_DiscardUnknown() {
+	xxx_messageInfo_Local.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Local proto.InternalMessageInfo
+
+func (m *Local) GetM() *sub.M {
+	if m != nil {
+		return m.M
+	}
+	return nil
+}
+
+func (m *Local) GetE() sub.E {
+	if m != nil && m.E != nil {
+		return *m.E
+	}
+	return sub.E_ZERO
+}
+
+func init() {
+	proto.RegisterType((*Local)(nil), "goproto.test.import_public.Local")
+}
+
+func init() {
+	proto.RegisterFile("import_public/b.proto", fileDescriptor_84995586b3d09710)
+}
+
+var fileDescriptor_84995586b3d09710 = []byte{
+	// 169 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0xcd, 0xcc, 0x2d, 0xc8,
+	0x2f, 0x2a, 0x89, 0x2f, 0x28, 0x4d, 0xca, 0xc9, 0x4c, 0xd6, 0x4f, 0xd2, 0x2b, 0x28, 0xca, 0x2f,
+	0xc9, 0x17, 0x92, 0x4a, 0xcf, 0x07, 0x33, 0xf4, 0x4a, 0x52, 0x8b, 0x4b, 0xf4, 0x50, 0xd4, 0x48,
+	0x49, 0xa2, 0x6a, 0x29, 0x2e, 0x4d, 0xd2, 0x4f, 0x84, 0x68, 0x53, 0xca, 0xe4, 0x62, 0xf5, 0xc9,
+	0x4f, 0x4e, 0xcc, 0x11, 0xd2, 0xe7, 0x62, 0xcc, 0x95, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x36, 0x52,
+	0xd4, 0xc3, 0x6d, 0x96, 0x5e, 0x71, 0x69, 0x92, 0x9e, 0x6f, 0x10, 0x63, 0x2e, 0x48, 0x43, 0xaa,
+	0x04, 0x93, 0x02, 0xa3, 0x06, 0x1f, 0x61, 0x0d, 0xae, 0x41, 0x8c, 0xa9, 0x4e, 0x8e, 0x51, 0xf6,
+	0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa, 0xe9, 0xf9, 0x39, 0x89, 0x79,
+	0xe9, 0xfa, 0x60, 0x6d, 0x49, 0xa5, 0x69, 0x10, 0x46, 0xb2, 0x6e, 0x7a, 0x6a, 0x9e, 0x6e, 0x7a,
+	0xbe, 0x3e, 0xc8, 0x9c, 0x94, 0xc4, 0x92, 0x44, 0x7d, 0x14, 0xb3, 0x00, 0x01, 0x00, 0x00, 0xff,
+	0xff, 0x35, 0x0e, 0x6a, 0x82, 0xfc, 0x00, 0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/import_public/b.proto b/protoc-gen-go/testdata/import_public/b.proto
new file mode 100644
index 0000000..424306e
--- /dev/null
+++ b/protoc-gen-go/testdata/import_public/b.proto
@@ -0,0 +1,43 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2018 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto2";
+
+package goproto.test.import_public;
+
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/import_public";
+
+import "import_public/sub/a.proto";
+
+message Local {
+  optional goproto.test.import_public.sub.M m = 1;
+  optional goproto.test.import_public.sub.E e = 2;
+}
diff --git a/protoc-gen-go/testdata/import_public/importing/importing.pb.go b/protoc-gen-go/testdata/import_public/importing/importing.pb.go
new file mode 100644
index 0000000..3f0f37e
--- /dev/null
+++ b/protoc-gen-go/testdata/import_public/importing/importing.pb.go
@@ -0,0 +1,85 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: import_public/importing/importing.proto
+
+package importing
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	_ "github.com/golang/protobuf/protoc-gen-go/testdata/import_public"
+	sub "github.com/golang/protobuf/protoc-gen-go/testdata/import_public/sub"
+	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
+
+type M struct {
+	// Message type defined in a file publicly imported by a file we import.
+	M                    *sub.M   `protobuf:"bytes,1,opt,name=m" json:"m,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *M) Reset()         { *m = M{} }
+func (m *M) String() string { return proto.CompactTextString(m) }
+func (*M) ProtoMessage()    {}
+func (*M) Descriptor() ([]byte, []int) {
+	return fileDescriptor_36b835b3b8f6171a, []int{0}
+}
+
+func (m *M) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_M.Unmarshal(m, b)
+}
+func (m *M) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_M.Marshal(b, m, deterministic)
+}
+func (m *M) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_M.Merge(m, src)
+}
+func (m *M) XXX_Size() int {
+	return xxx_messageInfo_M.Size(m)
+}
+func (m *M) XXX_DiscardUnknown() {
+	xxx_messageInfo_M.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_M proto.InternalMessageInfo
+
+func (m *M) GetM() *sub.M {
+	if m != nil {
+		return m.M
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*M)(nil), "goproto.test.import_public.importing.M")
+}
+
+func init() {
+	proto.RegisterFile("import_public/importing/importing.proto", fileDescriptor_36b835b3b8f6171a)
+}
+
+var fileDescriptor_36b835b3b8f6171a = []byte{
+	// 153 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0xcf, 0xcc, 0x2d, 0xc8,
+	0x2f, 0x2a, 0x89, 0x2f, 0x28, 0x4d, 0xca, 0xc9, 0x4c, 0xd6, 0x87, 0xf0, 0x32, 0xf3, 0xd2, 0x11,
+	0x2c, 0xbd, 0x82, 0xa2, 0xfc, 0x92, 0x7c, 0x21, 0x95, 0xf4, 0x7c, 0x30, 0x43, 0xaf, 0x24, 0xb5,
+	0xb8, 0x44, 0x0f, 0x45, 0x97, 0x1e, 0x5c, 0xad, 0x94, 0x28, 0xaa, 0x71, 0x89, 0x10, 0xcd, 0x4a,
+	0x26, 0x5c, 0x8c, 0xbe, 0x42, 0xfa, 0x5c, 0x8c, 0xb9, 0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0xdc, 0x46,
+	0x8a, 0x7a, 0x78, 0x4c, 0x2b, 0x2e, 0x4d, 0xd2, 0xf3, 0x0d, 0x62, 0xcc, 0x75, 0xf2, 0x8e, 0xf2,
+	0x4c, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc,
+	0x4b, 0xd7, 0x07, 0x6b, 0x4b, 0x2a, 0x4d, 0x83, 0x30, 0x92, 0x75, 0xd3, 0x53, 0xf3, 0x74, 0xd3,
+	0xf3, 0xf5, 0x41, 0xe6, 0xa4, 0x24, 0x96, 0x24, 0xea, 0xe3, 0xf0, 0x0f, 0x20, 0x00, 0x00, 0xff,
+	0xff, 0xd8, 0x7e, 0x58, 0x1c, 0xe9, 0x00, 0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/import_public/importing/importing.proto b/protoc-gen-go/testdata/import_public/importing/importing.proto
new file mode 100644
index 0000000..fc78f5f
--- /dev/null
+++ b/protoc-gen-go/testdata/import_public/importing/importing.proto
@@ -0,0 +1,43 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2018 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto2";
+
+package goproto.test.import_public.importing;
+
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/import_public/importing";
+
+import "import_public/a.proto";
+
+message M {
+  // Message type defined in a file publicly imported by a file we import.
+  optional goproto.test.import_public.sub.M m = 1;
+}
diff --git a/protoc-gen-go/testdata/import_public/sub/a.pb.go b/protoc-gen-go/testdata/import_public/sub/a.pb.go
new file mode 100644
index 0000000..da9acbd
--- /dev/null
+++ b/protoc-gen-go/testdata/import_public/sub/a.pb.go
@@ -0,0 +1,411 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: import_public/sub/a.proto
+
+package sub
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+type E int32
+
+const (
+	E_ZERO E = 0
+)
+
+var E_name = map[int32]string{
+	0: "ZERO",
+}
+
+var E_value = map[string]int32{
+	"ZERO": 0,
+}
+
+func (x E) Enum() *E {
+	p := new(E)
+	*p = x
+	return p
+}
+
+func (x E) String() string {
+	return proto.EnumName(E_name, int32(x))
+}
+
+func (x *E) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(E_value, data, "E")
+	if err != nil {
+		return err
+	}
+	*x = E(value)
+	return nil
+}
+
+func (E) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_382f7805394b5c4e, []int{0}
+}
+
+type M_Subenum int32
+
+const (
+	M_M_ZERO M_Subenum = 0
+)
+
+var M_Subenum_name = map[int32]string{
+	0: "M_ZERO",
+}
+
+var M_Subenum_value = map[string]int32{
+	"M_ZERO": 0,
+}
+
+func (x M_Subenum) Enum() *M_Subenum {
+	p := new(M_Subenum)
+	*p = x
+	return p
+}
+
+func (x M_Subenum) String() string {
+	return proto.EnumName(M_Subenum_name, int32(x))
+}
+
+func (x *M_Subenum) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(M_Subenum_value, data, "M_Subenum")
+	if err != nil {
+		return err
+	}
+	*x = M_Subenum(value)
+	return nil
+}
+
+func (M_Subenum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_382f7805394b5c4e, []int{0, 0}
+}
+
+type M_Submessage_Submessage_Subenum int32
+
+const (
+	M_Submessage_M_SUBMESSAGE_ZERO M_Submessage_Submessage_Subenum = 0
+)
+
+var M_Submessage_Submessage_Subenum_name = map[int32]string{
+	0: "M_SUBMESSAGE_ZERO",
+}
+
+var M_Submessage_Submessage_Subenum_value = map[string]int32{
+	"M_SUBMESSAGE_ZERO": 0,
+}
+
+func (x M_Submessage_Submessage_Subenum) Enum() *M_Submessage_Submessage_Subenum {
+	p := new(M_Submessage_Submessage_Subenum)
+	*p = x
+	return p
+}
+
+func (x M_Submessage_Submessage_Subenum) String() string {
+	return proto.EnumName(M_Submessage_Submessage_Subenum_name, int32(x))
+}
+
+func (x *M_Submessage_Submessage_Subenum) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(M_Submessage_Submessage_Subenum_value, data, "M_Submessage_Submessage_Subenum")
+	if err != nil {
+		return err
+	}
+	*x = M_Submessage_Submessage_Subenum(value)
+	return nil
+}
+
+func (M_Submessage_Submessage_Subenum) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_382f7805394b5c4e, []int{0, 1, 0}
+}
+
+type M struct {
+	// Field using a type in the same Go package, but a different source file.
+	M2 *M2 `protobuf:"bytes,1,opt,name=m2" json:"m2,omitempty"`
+	// Types that are valid to be assigned to OneofField:
+	//	*M_OneofInt32
+	//	*M_OneofInt64
+	OneofField           isM_OneofField `protobuf_oneof:"oneof_field"`
+	Grouping             *M_Grouping    `protobuf:"group,4,opt,name=Grouping,json=grouping" json:"grouping,omitempty"`
+	DefaultField         *string        `protobuf:"bytes,6,opt,name=default_field,json=defaultField,def=def" json:"default_field,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
+	XXX_unrecognized     []byte         `json:"-"`
+	XXX_sizecache        int32          `json:"-"`
+}
+
+func (m *M) Reset()         { *m = M{} }
+func (m *M) String() string { return proto.CompactTextString(m) }
+func (*M) ProtoMessage()    {}
+func (*M) Descriptor() ([]byte, []int) {
+	return fileDescriptor_382f7805394b5c4e, []int{0}
+}
+
+func (m *M) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_M.Unmarshal(m, b)
+}
+func (m *M) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_M.Marshal(b, m, deterministic)
+}
+func (m *M) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_M.Merge(m, src)
+}
+func (m *M) XXX_Size() int {
+	return xxx_messageInfo_M.Size(m)
+}
+func (m *M) XXX_DiscardUnknown() {
+	xxx_messageInfo_M.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_M proto.InternalMessageInfo
+
+const Default_M_DefaultField string = "def"
+
+func (m *M) GetM2() *M2 {
+	if m != nil {
+		return m.M2
+	}
+	return nil
+}
+
+type isM_OneofField interface {
+	isM_OneofField()
+}
+
+type M_OneofInt32 struct {
+	OneofInt32 int32 `protobuf:"varint,2,opt,name=oneof_int32,json=oneofInt32,oneof"`
+}
+
+type M_OneofInt64 struct {
+	OneofInt64 int64 `protobuf:"varint,3,opt,name=oneof_int64,json=oneofInt64,oneof"`
+}
+
+func (*M_OneofInt32) isM_OneofField() {}
+
+func (*M_OneofInt64) isM_OneofField() {}
+
+func (m *M) GetOneofField() isM_OneofField {
+	if m != nil {
+		return m.OneofField
+	}
+	return nil
+}
+
+func (m *M) GetOneofInt32() int32 {
+	if x, ok := m.GetOneofField().(*M_OneofInt32); ok {
+		return x.OneofInt32
+	}
+	return 0
+}
+
+func (m *M) GetOneofInt64() int64 {
+	if x, ok := m.GetOneofField().(*M_OneofInt64); ok {
+		return x.OneofInt64
+	}
+	return 0
+}
+
+func (m *M) GetGrouping() *M_Grouping {
+	if m != nil {
+		return m.Grouping
+	}
+	return nil
+}
+
+func (m *M) GetDefaultField() string {
+	if m != nil && m.DefaultField != nil {
+		return *m.DefaultField
+	}
+	return Default_M_DefaultField
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*M) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*M_OneofInt32)(nil),
+		(*M_OneofInt64)(nil),
+	}
+}
+
+type M_Grouping struct {
+	GroupField           *string  `protobuf:"bytes,5,opt,name=group_field,json=groupField" json:"group_field,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *M_Grouping) Reset()         { *m = M_Grouping{} }
+func (m *M_Grouping) String() string { return proto.CompactTextString(m) }
+func (*M_Grouping) ProtoMessage()    {}
+func (*M_Grouping) Descriptor() ([]byte, []int) {
+	return fileDescriptor_382f7805394b5c4e, []int{0, 0}
+}
+
+func (m *M_Grouping) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_M_Grouping.Unmarshal(m, b)
+}
+func (m *M_Grouping) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_M_Grouping.Marshal(b, m, deterministic)
+}
+func (m *M_Grouping) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_M_Grouping.Merge(m, src)
+}
+func (m *M_Grouping) XXX_Size() int {
+	return xxx_messageInfo_M_Grouping.Size(m)
+}
+func (m *M_Grouping) XXX_DiscardUnknown() {
+	xxx_messageInfo_M_Grouping.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_M_Grouping proto.InternalMessageInfo
+
+func (m *M_Grouping) GetGroupField() string {
+	if m != nil && m.GroupField != nil {
+		return *m.GroupField
+	}
+	return ""
+}
+
+type M_Submessage struct {
+	// Types that are valid to be assigned to SubmessageOneofField:
+	//	*M_Submessage_SubmessageOneofInt32
+	//	*M_Submessage_SubmessageOneofInt64
+	SubmessageOneofField isM_Submessage_SubmessageOneofField `protobuf_oneof:"submessage_oneof_field"`
+	XXX_NoUnkeyedLiteral struct{}                            `json:"-"`
+	XXX_unrecognized     []byte                              `json:"-"`
+	XXX_sizecache        int32                               `json:"-"`
+}
+
+func (m *M_Submessage) Reset()         { *m = M_Submessage{} }
+func (m *M_Submessage) String() string { return proto.CompactTextString(m) }
+func (*M_Submessage) ProtoMessage()    {}
+func (*M_Submessage) Descriptor() ([]byte, []int) {
+	return fileDescriptor_382f7805394b5c4e, []int{0, 1}
+}
+
+func (m *M_Submessage) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_M_Submessage.Unmarshal(m, b)
+}
+func (m *M_Submessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_M_Submessage.Marshal(b, m, deterministic)
+}
+func (m *M_Submessage) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_M_Submessage.Merge(m, src)
+}
+func (m *M_Submessage) XXX_Size() int {
+	return xxx_messageInfo_M_Submessage.Size(m)
+}
+func (m *M_Submessage) XXX_DiscardUnknown() {
+	xxx_messageInfo_M_Submessage.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_M_Submessage proto.InternalMessageInfo
+
+type isM_Submessage_SubmessageOneofField interface {
+	isM_Submessage_SubmessageOneofField()
+}
+
+type M_Submessage_SubmessageOneofInt32 struct {
+	SubmessageOneofInt32 int32 `protobuf:"varint,1,opt,name=submessage_oneof_int32,json=submessageOneofInt32,oneof"`
+}
+
+type M_Submessage_SubmessageOneofInt64 struct {
+	SubmessageOneofInt64 int64 `protobuf:"varint,2,opt,name=submessage_oneof_int64,json=submessageOneofInt64,oneof"`
+}
+
+func (*M_Submessage_SubmessageOneofInt32) isM_Submessage_SubmessageOneofField() {}
+
+func (*M_Submessage_SubmessageOneofInt64) isM_Submessage_SubmessageOneofField() {}
+
+func (m *M_Submessage) GetSubmessageOneofField() isM_Submessage_SubmessageOneofField {
+	if m != nil {
+		return m.SubmessageOneofField
+	}
+	return nil
+}
+
+func (m *M_Submessage) GetSubmessageOneofInt32() int32 {
+	if x, ok := m.GetSubmessageOneofField().(*M_Submessage_SubmessageOneofInt32); ok {
+		return x.SubmessageOneofInt32
+	}
+	return 0
+}
+
+func (m *M_Submessage) GetSubmessageOneofInt64() int64 {
+	if x, ok := m.GetSubmessageOneofField().(*M_Submessage_SubmessageOneofInt64); ok {
+		return x.SubmessageOneofInt64
+	}
+	return 0
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*M_Submessage) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*M_Submessage_SubmessageOneofInt32)(nil),
+		(*M_Submessage_SubmessageOneofInt64)(nil),
+	}
+}
+
+var E_ExtensionField = &proto.ExtensionDesc{
+	ExtendedType:  (*M2)(nil),
+	ExtensionType: (*string)(nil),
+	Field:         1,
+	Name:          "goproto.test.import_public.sub.extension_field",
+	Tag:           "bytes,1,opt,name=extension_field",
+	Filename:      "import_public/sub/a.proto",
+}
+
+func init() {
+	proto.RegisterEnum("goproto.test.import_public.sub.E", E_name, E_value)
+	proto.RegisterEnum("goproto.test.import_public.sub.M_Subenum", M_Subenum_name, M_Subenum_value)
+	proto.RegisterEnum("goproto.test.import_public.sub.M_Submessage_Submessage_Subenum", M_Submessage_Submessage_Subenum_name, M_Submessage_Submessage_Subenum_value)
+	proto.RegisterType((*M)(nil), "goproto.test.import_public.sub.M")
+	proto.RegisterType((*M_Grouping)(nil), "goproto.test.import_public.sub.M.Grouping")
+	proto.RegisterType((*M_Submessage)(nil), "goproto.test.import_public.sub.M.Submessage")
+	proto.RegisterExtension(E_ExtensionField)
+}
+
+func init() {
+	proto.RegisterFile("import_public/sub/a.proto", fileDescriptor_382f7805394b5c4e)
+}
+
+var fileDescriptor_382f7805394b5c4e = []byte{
+	// 410 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0xcf, 0x6e, 0xd3, 0x40,
+	0x10, 0xc6, 0xbb, 0x49, 0x5a, 0xd2, 0x09, 0xe1, 0xcf, 0x8a, 0x22, 0xd3, 0x03, 0x98, 0x9c, 0xac,
+	0x56, 0x5d, 0x4b, 0x26, 0xf2, 0xa1, 0x37, 0x82, 0xdc, 0x82, 0x90, 0x55, 0xc9, 0x16, 0x97, 0x5e,
+	0x2c, 0x6f, 0xbc, 0x5e, 0x2c, 0xd9, 0xbb, 0x56, 0xbc, 0x2b, 0xf1, 0x08, 0xbc, 0x17, 0x2f, 0x86,
+	0xbc, 0xb6, 0x93, 0x46, 0x04, 0xe8, 0x6d, 0x3d, 0xf3, 0xfd, 0xbe, 0xd1, 0x7c, 0x1e, 0x78, 0x53,
+	0x54, 0xb5, 0xdc, 0xa8, 0xa4, 0xd6, 0xb4, 0x2c, 0xd6, 0x6e, 0xa3, 0xa9, 0x9b, 0x92, 0x7a, 0x23,
+	0x95, 0xc4, 0x6f, 0xb9, 0x34, 0x0f, 0xa2, 0x58, 0xa3, 0xc8, 0x9e, 0x8e, 0x34, 0x9a, 0x9e, 0x1f,
+	0x40, 0x69, 0x87, 0x2e, 0x7e, 0x4e, 0x00, 0x85, 0xd8, 0x83, 0x51, 0xe5, 0x59, 0xc8, 0x46, 0xce,
+	0xcc, 0x5b, 0x90, 0x7f, 0xbb, 0x91, 0xd0, 0x8b, 0x46, 0x95, 0x87, 0xdf, 0xc3, 0x4c, 0x0a, 0x26,
+	0xf3, 0xa4, 0x10, 0xea, 0x83, 0x67, 0x8d, 0x6c, 0xe4, 0x1c, 0x7f, 0x3e, 0x8a, 0xc0, 0x14, 0xbf,
+	0xb4, 0xb5, 0x3d, 0x89, 0xbf, 0xb4, 0xc6, 0x36, 0x72, 0xc6, 0x0f, 0x25, 0xfe, 0x12, 0xdf, 0xc0,
+	0x94, 0x6f, 0xa4, 0xae, 0x0b, 0xc1, 0xad, 0x89, 0x8d, 0x1c, 0xf0, 0x2e, 0xfe, 0x3b, 0x9f, 0xdc,
+	0xf6, 0x44, 0xb4, 0x65, 0xb1, 0x03, 0xf3, 0x8c, 0xe5, 0xa9, 0x2e, 0x55, 0x92, 0x17, 0xac, 0xcc,
+	0xac, 0x13, 0x1b, 0x39, 0xa7, 0xd7, 0xe3, 0x8c, 0xe5, 0xd1, 0xd3, 0xbe, 0x73, 0xd3, 0x36, 0xce,
+	0x2f, 0x61, 0x3a, 0xf0, 0xf8, 0x1d, 0xcc, 0x8c, 0x43, 0xcf, 0x1c, 0xb7, 0x4c, 0x04, 0xa6, 0xd4,
+	0x89, 0x7f, 0x21, 0x80, 0x58, 0xd3, 0x8a, 0x35, 0x4d, 0xca, 0x19, 0xf6, 0xe1, 0x75, 0xb3, 0xfd,
+	0x4a, 0x1e, 0xae, 0x8f, 0xfa, 0xf5, 0x5f, 0xed, 0xfa, 0x77, 0xbb, 0x20, 0xfe, 0xc2, 0xf9, 0x4b,
+	0x13, 0xdb, 0xf8, 0x30, 0xe7, 0x2f, 0x17, 0x97, 0x80, 0x77, 0xd3, 0x93, 0x58, 0x53, 0x26, 0x74,
+	0x85, 0xcf, 0xe0, 0x65, 0x98, 0xc4, 0xdf, 0x56, 0x61, 0x10, 0xc7, 0x1f, 0x6f, 0x83, 0xe4, 0x3e,
+	0x88, 0xee, 0x5e, 0x1c, 0xad, 0xac, 0x03, 0x43, 0xcc, 0x5e, 0x8b, 0x33, 0x78, 0x32, 0xb0, 0x00,
+	0x27, 0xe1, 0x00, 0xcc, 0x87, 0xdf, 0x63, 0x54, 0x17, 0x73, 0x40, 0x01, 0x9e, 0xc2, 0xa4, 0xeb,
+	0x5e, 0x7f, 0x85, 0xe7, 0xec, 0x87, 0x62, 0xa2, 0x29, 0xa4, 0xe8, 0x14, 0xf8, 0x11, 0xa7, 0x61,
+	0x82, 0x38, 0x8d, 0x9e, 0x6d, 0x51, 0x93, 0xe3, 0x2a, 0xb8, 0xff, 0xc4, 0x0b, 0xf5, 0x5d, 0x53,
+	0xb2, 0x96, 0x95, 0xcb, 0x65, 0x99, 0x0a, 0xee, 0x1a, 0x2b, 0xaa, 0xf3, 0xee, 0xb1, 0xbe, 0xe2,
+	0x4c, 0x5c, 0x71, 0xe9, 0xb6, 0xde, 0x59, 0xaa, 0x52, 0xf7, 0x8f, 0xab, 0xfd, 0x1d, 0x00, 0x00,
+	0xff, 0xff, 0x13, 0x4f, 0x31, 0x07, 0x04, 0x03, 0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/import_public/sub/a.proto b/protoc-gen-go/testdata/import_public/sub/a.proto
new file mode 100644
index 0000000..8f8895b
--- /dev/null
+++ b/protoc-gen-go/testdata/import_public/sub/a.proto
@@ -0,0 +1,77 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2018 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto2";
+
+package goproto.test.import_public.sub;
+
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/import_public/sub";
+
+import "import_public/sub/b.proto";
+
+message M {
+  // Field using a type in the same Go package, but a different source file.
+  optional M2 m2 = 1;
+
+  oneof oneof_field {
+    int32 oneof_int32 = 2;
+    int64 oneof_int64 = 3;
+  }
+
+  optional group Grouping = 4  {
+    optional string group_field = 5;
+  }
+
+  optional string default_field = 6 [default="def"];
+
+  message Submessage {
+    enum Submessage_Subenum {
+      M_SUBMESSAGE_ZERO = 0;
+    }
+
+    oneof submessage_oneof_field {
+      int32 submessage_oneof_int32 = 1;
+      int64 submessage_oneof_int64 = 2;
+    }
+  }
+
+  enum Subenum {
+    M_ZERO = 0;
+  }
+}
+
+enum E {
+  ZERO = 0;
+}
+
+extend M2 {
+  optional string extension_field = 1;
+}
diff --git a/protoc-gen-go/testdata/import_public/sub/b.pb.go b/protoc-gen-go/testdata/import_public/sub/b.pb.go
new file mode 100644
index 0000000..704e391
--- /dev/null
+++ b/protoc-gen-go/testdata/import_public/sub/b.pb.go
@@ -0,0 +1,82 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: import_public/sub/b.proto
+
+package sub
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+type M2 struct {
+	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
+	proto.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized             []byte `json:"-"`
+	XXX_sizecache                int32  `json:"-"`
+}
+
+func (m *M2) Reset()         { *m = M2{} }
+func (m *M2) String() string { return proto.CompactTextString(m) }
+func (*M2) ProtoMessage()    {}
+func (*M2) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fc66afda3d7c2232, []int{0}
+}
+
+var extRange_M2 = []proto.ExtensionRange{
+	{Start: 1, End: 536870911},
+}
+
+func (*M2) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_M2
+}
+
+func (m *M2) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_M2.Unmarshal(m, b)
+}
+func (m *M2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_M2.Marshal(b, m, deterministic)
+}
+func (m *M2) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_M2.Merge(m, src)
+}
+func (m *M2) XXX_Size() int {
+	return xxx_messageInfo_M2.Size(m)
+}
+func (m *M2) XXX_DiscardUnknown() {
+	xxx_messageInfo_M2.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_M2 proto.InternalMessageInfo
+
+func init() {
+	proto.RegisterType((*M2)(nil), "goproto.test.import_public.sub.M2")
+}
+
+func init() {
+	proto.RegisterFile("import_public/sub/b.proto", fileDescriptor_fc66afda3d7c2232)
+}
+
+var fileDescriptor_fc66afda3d7c2232 = []byte{
+	// 132 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xcc, 0xcc, 0x2d, 0xc8,
+	0x2f, 0x2a, 0x89, 0x2f, 0x28, 0x4d, 0xca, 0xc9, 0x4c, 0xd6, 0x2f, 0x2e, 0x4d, 0xd2, 0x4f, 0xd2,
+	0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x92, 0x4b, 0xcf, 0x07, 0x33, 0xf4, 0x4a, 0x52, 0x8b, 0x4b,
+	0xf4, 0x50, 0xd4, 0xe9, 0x15, 0x97, 0x26, 0x29, 0xf1, 0x71, 0x31, 0xf9, 0x1a, 0x69, 0x71, 0x70,
+	0x30, 0x0a, 0x34, 0x34, 0x34, 0x34, 0x30, 0x39, 0xb9, 0x46, 0x39, 0xa7, 0x67, 0x96, 0x64, 0x94,
+	0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0xa7, 0xe7, 0xe7, 0x24, 0xe6, 0xa5, 0xeb, 0x83, 0x4d, 0x48,
+	0x2a, 0x4d, 0x83, 0x30, 0x92, 0x75, 0xd3, 0x53, 0xf3, 0x74, 0xd3, 0xf3, 0xf5, 0x41, 0x46, 0xa6,
+	0x24, 0x96, 0x24, 0xea, 0x63, 0x58, 0x0f, 0x08, 0x00, 0x00, 0xff, 0xff, 0x87, 0x44, 0x22, 0x2d,
+	0x92, 0x00, 0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/import_public/sub/b.proto b/protoc-gen-go/testdata/import_public/sub/b.proto
new file mode 100644
index 0000000..0b1b27c
--- /dev/null
+++ b/protoc-gen-go/testdata/import_public/sub/b.proto
@@ -0,0 +1,40 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2018 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto2";
+
+package goproto.test.import_public.sub;
+
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/import_public/sub";
+
+message M2 {
+  extensions 1 to max;
+}
diff --git a/protoc-gen-go/testdata/import_public_test.go b/protoc-gen-go/testdata/import_public_test.go
new file mode 100644
index 0000000..a293461
--- /dev/null
+++ b/protoc-gen-go/testdata/import_public_test.go
@@ -0,0 +1,66 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// +build go1.9
+
+package testdata
+
+import (
+	"testing"
+
+	mainpb "github.com/golang/protobuf/protoc-gen-go/testdata/import_public"
+	subpb "github.com/golang/protobuf/protoc-gen-go/testdata/import_public/sub"
+)
+
+func TestImportPublicLink(t *testing.T) {
+	// mainpb.[ME] should be interchangeable with subpb.[ME].
+	var _ mainpb.M = subpb.M{}
+	var _ mainpb.E = subpb.E(0)
+	_ = &mainpb.Public{
+		M: &mainpb.M{},
+		E: mainpb.E_ZERO.Enum(),
+		Local: &mainpb.Local{
+			M: &mainpb.M{},
+			E: mainpb.E_ZERO.Enum(),
+		},
+	}
+	_ = &mainpb.Public{
+		M: &subpb.M{},
+		E: subpb.E_ZERO.Enum(),
+		Local: &mainpb.Local{
+			M: &subpb.M{},
+			E: subpb.E_ZERO.Enum(),
+		},
+	}
+	_ = &mainpb.M{
+		M2: &subpb.M2{},
+	}
+}
diff --git a/protoc-gen-go/testdata/imports/fmt/m.pb.go b/protoc-gen-go/testdata/imports/fmt/m.pb.go
new file mode 100644
index 0000000..4ce907b
--- /dev/null
+++ b/protoc-gen-go/testdata/imports/fmt/m.pb.go
@@ -0,0 +1,71 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: imports/fmt/m.proto
+
+package fmt
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+type M struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *M) Reset()         { *m = M{} }
+func (m *M) String() string { return proto.CompactTextString(m) }
+func (*M) ProtoMessage()    {}
+func (*M) Descriptor() ([]byte, []int) {
+	return fileDescriptor_72c126fcd452e392, []int{0}
+}
+
+func (m *M) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_M.Unmarshal(m, b)
+}
+func (m *M) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_M.Marshal(b, m, deterministic)
+}
+func (m *M) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_M.Merge(m, src)
+}
+func (m *M) XXX_Size() int {
+	return xxx_messageInfo_M.Size(m)
+}
+func (m *M) XXX_DiscardUnknown() {
+	xxx_messageInfo_M.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_M proto.InternalMessageInfo
+
+func init() {
+	proto.RegisterType((*M)(nil), "fmt.M")
+}
+
+func init() {
+	proto.RegisterFile("imports/fmt/m.proto", fileDescriptor_72c126fcd452e392)
+}
+
+var fileDescriptor_72c126fcd452e392 = []byte{
+	// 109 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0xce, 0xcc, 0x2d, 0xc8,
+	0x2f, 0x2a, 0x29, 0xd6, 0x4f, 0xcb, 0x2d, 0xd1, 0xcf, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17,
+	0x62, 0x4e, 0xcb, 0x2d, 0x51, 0x62, 0xe6, 0x62, 0xf4, 0x75, 0xb2, 0x8f, 0xb2, 0x4d, 0xcf, 0x2c,
+	0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x07,
+	0x2b, 0x4a, 0x2a, 0x4d, 0x83, 0x30, 0x92, 0x75, 0xd3, 0x53, 0xf3, 0x74, 0xd3, 0xf3, 0xf5, 0x4b,
+	0x52, 0x8b, 0x4b, 0x52, 0x12, 0x4b, 0x12, 0xf5, 0x91, 0x8c, 0x4c, 0x62, 0x03, 0xab, 0x31, 0x06,
+	0x04, 0x00, 0x00, 0xff, 0xff, 0xc4, 0xc9, 0xee, 0xbe, 0x68, 0x00, 0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/imports/fmt/m.proto b/protoc-gen-go/testdata/imports/fmt/m.proto
new file mode 100644
index 0000000..142d8cf
--- /dev/null
+++ b/protoc-gen-go/testdata/imports/fmt/m.proto
@@ -0,0 +1,35 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2018 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+package fmt;
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/imports/fmt";
+message M {}
diff --git a/protoc-gen-go/testdata/imports/test_a_1/m1.pb.go b/protoc-gen-go/testdata/imports/test_a_1/m1.pb.go
new file mode 100644
index 0000000..10185e2
--- /dev/null
+++ b/protoc-gen-go/testdata/imports/test_a_1/m1.pb.go
@@ -0,0 +1,138 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: imports/test_a_1/m1.proto
+
+package test_a_1
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+type E1 int32
+
+const (
+	E1_E1_ZERO E1 = 0
+)
+
+var E1_name = map[int32]string{
+	0: "E1_ZERO",
+}
+
+var E1_value = map[string]int32{
+	"E1_ZERO": 0,
+}
+
+func (x E1) String() string {
+	return proto.EnumName(E1_name, int32(x))
+}
+
+func (E1) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_c1091de3fa870a14, []int{0}
+}
+
+type M1 struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *M1) Reset()         { *m = M1{} }
+func (m *M1) String() string { return proto.CompactTextString(m) }
+func (*M1) ProtoMessage()    {}
+func (*M1) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c1091de3fa870a14, []int{0}
+}
+
+func (m *M1) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_M1.Unmarshal(m, b)
+}
+func (m *M1) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_M1.Marshal(b, m, deterministic)
+}
+func (m *M1) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_M1.Merge(m, src)
+}
+func (m *M1) XXX_Size() int {
+	return xxx_messageInfo_M1.Size(m)
+}
+func (m *M1) XXX_DiscardUnknown() {
+	xxx_messageInfo_M1.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_M1 proto.InternalMessageInfo
+
+type M1_1 struct {
+	M1                   *M1      `protobuf:"bytes,1,opt,name=m1,proto3" json:"m1,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *M1_1) Reset()         { *m = M1_1{} }
+func (m *M1_1) String() string { return proto.CompactTextString(m) }
+func (*M1_1) ProtoMessage()    {}
+func (*M1_1) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c1091de3fa870a14, []int{1}
+}
+
+func (m *M1_1) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_M1_1.Unmarshal(m, b)
+}
+func (m *M1_1) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_M1_1.Marshal(b, m, deterministic)
+}
+func (m *M1_1) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_M1_1.Merge(m, src)
+}
+func (m *M1_1) XXX_Size() int {
+	return xxx_messageInfo_M1_1.Size(m)
+}
+func (m *M1_1) XXX_DiscardUnknown() {
+	xxx_messageInfo_M1_1.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_M1_1 proto.InternalMessageInfo
+
+func (m *M1_1) GetM1() *M1 {
+	if m != nil {
+		return m.M1
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterEnum("test.a.E1", E1_name, E1_value)
+	proto.RegisterType((*M1)(nil), "test.a.M1")
+	proto.RegisterType((*M1_1)(nil), "test.a.M1_1")
+}
+
+func init() {
+	proto.RegisterFile("imports/test_a_1/m1.proto", fileDescriptor_c1091de3fa870a14)
+}
+
+var fileDescriptor_c1091de3fa870a14 = []byte{
+	// 165 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xcc, 0xcc, 0x2d, 0xc8,
+	0x2f, 0x2a, 0x29, 0xd6, 0x2f, 0x49, 0x2d, 0x2e, 0x89, 0x4f, 0x8c, 0x37, 0xd4, 0xcf, 0x35, 0xd4,
+	0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x03, 0x09, 0xe9, 0x25, 0x2a, 0xb1, 0x70, 0x31, 0xf9,
+	0x1a, 0x2a, 0x29, 0x71, 0xb1, 0xf8, 0x1a, 0xc6, 0x1b, 0x0a, 0x49, 0x71, 0x31, 0xe5, 0x1a, 0x4a,
+	0x30, 0x2a, 0x30, 0x6a, 0x70, 0x1b, 0x71, 0xe9, 0x41, 0x94, 0xe8, 0xf9, 0x1a, 0x06, 0x31, 0xe5,
+	0x1a, 0x6a, 0x09, 0x72, 0x31, 0xb9, 0x1a, 0x0a, 0x71, 0x73, 0xb1, 0xbb, 0x1a, 0xc6, 0x47, 0xb9,
+	0x06, 0xf9, 0x0b, 0x30, 0x38, 0xb9, 0x44, 0x39, 0xa5, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25,
+	0xe7, 0xe7, 0xea, 0xa7, 0xe7, 0xe7, 0x24, 0xe6, 0xa5, 0xeb, 0x83, 0xcd, 0x4f, 0x2a, 0x4d, 0x83,
+	0x30, 0x92, 0x75, 0xd3, 0x53, 0xf3, 0x74, 0xd3, 0xf3, 0xc1, 0x4e, 0x48, 0x49, 0x2c, 0x49, 0xd4,
+	0x47, 0x77, 0x53, 0x12, 0x1b, 0x58, 0xa1, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0xcc, 0xae, 0xc9,
+	0xcd, 0xae, 0x00, 0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/imports/test_a_1/m1.proto b/protoc-gen-go/testdata/imports/test_a_1/m1.proto
new file mode 100644
index 0000000..da54c1e
--- /dev/null
+++ b/protoc-gen-go/testdata/imports/test_a_1/m1.proto
@@ -0,0 +1,44 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2018 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+package test.a;
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/imports/test_a_1";
+
+message M1 {}
+
+message M1_1 {
+  M1 m1 = 1;
+}
+
+enum E1 {
+  E1_ZERO = 0;
+}
diff --git a/protoc-gen-go/testdata/imports/test_a_1/m2.pb.go b/protoc-gen-go/testdata/imports/test_a_1/m2.pb.go
new file mode 100644
index 0000000..21b474d
--- /dev/null
+++ b/protoc-gen-go/testdata/imports/test_a_1/m2.pb.go
@@ -0,0 +1,72 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: imports/test_a_1/m2.proto
+
+package test_a_1
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+type M2 struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *M2) Reset()         { *m = M2{} }
+func (m *M2) String() string { return proto.CompactTextString(m) }
+func (*M2) ProtoMessage()    {}
+func (*M2) Descriptor() ([]byte, []int) {
+	return fileDescriptor_20cf27515c0d621c, []int{0}
+}
+
+func (m *M2) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_M2.Unmarshal(m, b)
+}
+func (m *M2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_M2.Marshal(b, m, deterministic)
+}
+func (m *M2) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_M2.Merge(m, src)
+}
+func (m *M2) XXX_Size() int {
+	return xxx_messageInfo_M2.Size(m)
+}
+func (m *M2) XXX_DiscardUnknown() {
+	xxx_messageInfo_M2.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_M2 proto.InternalMessageInfo
+
+func init() {
+	proto.RegisterType((*M2)(nil), "test.a.M2")
+}
+
+func init() {
+	proto.RegisterFile("imports/test_a_1/m2.proto", fileDescriptor_20cf27515c0d621c)
+}
+
+var fileDescriptor_20cf27515c0d621c = []byte{
+	// 114 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xcc, 0xcc, 0x2d, 0xc8,
+	0x2f, 0x2a, 0x29, 0xd6, 0x2f, 0x49, 0x2d, 0x2e, 0x89, 0x4f, 0x8c, 0x37, 0xd4, 0xcf, 0x35, 0xd2,
+	0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x03, 0x09, 0xe9, 0x25, 0x2a, 0xb1, 0x70, 0x31, 0xf9,
+	0x1a, 0x39, 0xb9, 0x44, 0x39, 0xa5, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea,
+	0xa7, 0xe7, 0xe7, 0x24, 0xe6, 0xa5, 0xeb, 0x83, 0x15, 0x26, 0x95, 0xa6, 0x41, 0x18, 0xc9, 0xba,
+	0xe9, 0xa9, 0x79, 0xba, 0xe9, 0xf9, 0x60, 0xb3, 0x52, 0x12, 0x4b, 0x12, 0xf5, 0xd1, 0x0d, 0x4f,
+	0x62, 0x03, 0x2b, 0x34, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0xe3, 0xe0, 0x7e, 0xc0, 0x77, 0x00,
+	0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/imports/test_a_1/m2.proto b/protoc-gen-go/testdata/imports/test_a_1/m2.proto
new file mode 100644
index 0000000..49499dc
--- /dev/null
+++ b/protoc-gen-go/testdata/imports/test_a_1/m2.proto
@@ -0,0 +1,35 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2018 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+package test.a;
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/imports/test_a_1";
+message M2 {}
diff --git a/protoc-gen-go/testdata/imports/test_a_2/m3.pb.go b/protoc-gen-go/testdata/imports/test_a_2/m3.pb.go
new file mode 100644
index 0000000..ec0d205
--- /dev/null
+++ b/protoc-gen-go/testdata/imports/test_a_2/m3.pb.go
@@ -0,0 +1,72 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: imports/test_a_2/m3.proto
+
+package test_a_2
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+type M3 struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *M3) Reset()         { *m = M3{} }
+func (m *M3) String() string { return proto.CompactTextString(m) }
+func (*M3) ProtoMessage()    {}
+func (*M3) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ff9d8f834875c9c5, []int{0}
+}
+
+func (m *M3) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_M3.Unmarshal(m, b)
+}
+func (m *M3) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_M3.Marshal(b, m, deterministic)
+}
+func (m *M3) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_M3.Merge(m, src)
+}
+func (m *M3) XXX_Size() int {
+	return xxx_messageInfo_M3.Size(m)
+}
+func (m *M3) XXX_DiscardUnknown() {
+	xxx_messageInfo_M3.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_M3 proto.InternalMessageInfo
+
+func init() {
+	proto.RegisterType((*M3)(nil), "test.a.M3")
+}
+
+func init() {
+	proto.RegisterFile("imports/test_a_2/m3.proto", fileDescriptor_ff9d8f834875c9c5)
+}
+
+var fileDescriptor_ff9d8f834875c9c5 = []byte{
+	// 114 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xcc, 0xcc, 0x2d, 0xc8,
+	0x2f, 0x2a, 0x29, 0xd6, 0x2f, 0x49, 0x2d, 0x2e, 0x89, 0x4f, 0x8c, 0x37, 0xd2, 0xcf, 0x35, 0xd6,
+	0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x03, 0x09, 0xe9, 0x25, 0x2a, 0xb1, 0x70, 0x31, 0xf9,
+	0x1a, 0x3b, 0xb9, 0x44, 0x39, 0xa5, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea,
+	0xa7, 0xe7, 0xe7, 0x24, 0xe6, 0xa5, 0xeb, 0x83, 0x15, 0x26, 0x95, 0xa6, 0x41, 0x18, 0xc9, 0xba,
+	0xe9, 0xa9, 0x79, 0xba, 0xe9, 0xf9, 0x60, 0xb3, 0x52, 0x12, 0x4b, 0x12, 0xf5, 0xd1, 0x0d, 0x4f,
+	0x62, 0x03, 0x2b, 0x34, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x23, 0x86, 0x27, 0x47, 0x77, 0x00,
+	0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/imports/test_a_2/m3.proto b/protoc-gen-go/testdata/imports/test_a_2/m3.proto
new file mode 100644
index 0000000..5e811ef
--- /dev/null
+++ b/protoc-gen-go/testdata/imports/test_a_2/m3.proto
@@ -0,0 +1,35 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2018 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+package test.a;
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/imports/test_a_2";
+message M3 {}
diff --git a/protoc-gen-go/testdata/imports/test_a_2/m4.pb.go b/protoc-gen-go/testdata/imports/test_a_2/m4.pb.go
new file mode 100644
index 0000000..7dab0f3
--- /dev/null
+++ b/protoc-gen-go/testdata/imports/test_a_2/m4.pb.go
@@ -0,0 +1,72 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: imports/test_a_2/m4.proto
+
+package test_a_2
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+type M4 struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *M4) Reset()         { *m = M4{} }
+func (m *M4) String() string { return proto.CompactTextString(m) }
+func (*M4) ProtoMessage()    {}
+func (*M4) Descriptor() ([]byte, []int) {
+	return fileDescriptor_fdd24f82f6c5a786, []int{0}
+}
+
+func (m *M4) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_M4.Unmarshal(m, b)
+}
+func (m *M4) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_M4.Marshal(b, m, deterministic)
+}
+func (m *M4) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_M4.Merge(m, src)
+}
+func (m *M4) XXX_Size() int {
+	return xxx_messageInfo_M4.Size(m)
+}
+func (m *M4) XXX_DiscardUnknown() {
+	xxx_messageInfo_M4.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_M4 proto.InternalMessageInfo
+
+func init() {
+	proto.RegisterType((*M4)(nil), "test.a.M4")
+}
+
+func init() {
+	proto.RegisterFile("imports/test_a_2/m4.proto", fileDescriptor_fdd24f82f6c5a786)
+}
+
+var fileDescriptor_fdd24f82f6c5a786 = []byte{
+	// 114 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xcc, 0xcc, 0x2d, 0xc8,
+	0x2f, 0x2a, 0x29, 0xd6, 0x2f, 0x49, 0x2d, 0x2e, 0x89, 0x4f, 0x8c, 0x37, 0xd2, 0xcf, 0x35, 0xd1,
+	0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x03, 0x09, 0xe9, 0x25, 0x2a, 0xb1, 0x70, 0x31, 0xf9,
+	0x9a, 0x38, 0xb9, 0x44, 0x39, 0xa5, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea,
+	0xa7, 0xe7, 0xe7, 0x24, 0xe6, 0xa5, 0xeb, 0x83, 0x15, 0x26, 0x95, 0xa6, 0x41, 0x18, 0xc9, 0xba,
+	0xe9, 0xa9, 0x79, 0xba, 0xe9, 0xf9, 0x60, 0xb3, 0x52, 0x12, 0x4b, 0x12, 0xf5, 0xd1, 0x0d, 0x4f,
+	0x62, 0x03, 0x2b, 0x34, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x58, 0xcb, 0x10, 0xc8, 0x77, 0x00,
+	0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/imports/test_a_2/m4.proto b/protoc-gen-go/testdata/imports/test_a_2/m4.proto
new file mode 100644
index 0000000..8f8fe3e
--- /dev/null
+++ b/protoc-gen-go/testdata/imports/test_a_2/m4.proto
@@ -0,0 +1,35 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2018 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+package test.a;
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/imports/test_a_2";
+message M4 {}
diff --git a/protoc-gen-go/testdata/imports/test_b_1/m1.pb.go b/protoc-gen-go/testdata/imports/test_b_1/m1.pb.go
new file mode 100644
index 0000000..0136078
--- /dev/null
+++ b/protoc-gen-go/testdata/imports/test_b_1/m1.pb.go
@@ -0,0 +1,72 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: imports/test_b_1/m1.proto
+
+package beta
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+type M1 struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *M1) Reset()         { *m = M1{} }
+func (m *M1) String() string { return proto.CompactTextString(m) }
+func (*M1) ProtoMessage()    {}
+func (*M1) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7f49573d035512a8, []int{0}
+}
+
+func (m *M1) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_M1.Unmarshal(m, b)
+}
+func (m *M1) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_M1.Marshal(b, m, deterministic)
+}
+func (m *M1) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_M1.Merge(m, src)
+}
+func (m *M1) XXX_Size() int {
+	return xxx_messageInfo_M1.Size(m)
+}
+func (m *M1) XXX_DiscardUnknown() {
+	xxx_messageInfo_M1.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_M1 proto.InternalMessageInfo
+
+func init() {
+	proto.RegisterType((*M1)(nil), "test.b.part1.M1")
+}
+
+func init() {
+	proto.RegisterFile("imports/test_b_1/m1.proto", fileDescriptor_7f49573d035512a8)
+}
+
+var fileDescriptor_7f49573d035512a8 = []byte{
+	// 125 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xcc, 0xcc, 0x2d, 0xc8,
+	0x2f, 0x2a, 0x29, 0xd6, 0x2f, 0x49, 0x2d, 0x2e, 0x89, 0x4f, 0x8a, 0x37, 0xd4, 0xcf, 0x35, 0xd4,
+	0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x01, 0x09, 0xe9, 0x25, 0xe9, 0x15, 0x24, 0x16, 0x95,
+	0x18, 0x2a, 0xb1, 0x70, 0x31, 0xf9, 0x1a, 0x3a, 0x79, 0x46, 0xb9, 0xa7, 0x67, 0x96, 0x64, 0x94,
+	0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0xa7, 0xe7, 0xe7, 0x24, 0xe6, 0xa5, 0xeb, 0x83, 0x95, 0x27,
+	0x95, 0xa6, 0x41, 0x18, 0xc9, 0xba, 0xe9, 0xa9, 0x79, 0xba, 0xe9, 0xf9, 0x60, 0x13, 0x53, 0x12,
+	0x4b, 0x12, 0xf5, 0xd1, 0xad, 0xb0, 0x4e, 0x4a, 0x2d, 0x49, 0x4c, 0x62, 0x03, 0xab, 0x36, 0x06,
+	0x04, 0x00, 0x00, 0xff, 0xff, 0x4a, 0xf1, 0x3b, 0x7f, 0x82, 0x00, 0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/imports/test_b_1/m1.proto b/protoc-gen-go/testdata/imports/test_b_1/m1.proto
new file mode 100644
index 0000000..2c35ec4
--- /dev/null
+++ b/protoc-gen-go/testdata/imports/test_b_1/m1.proto
@@ -0,0 +1,35 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2018 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+package test.b.part1;
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/imports/test_b_1;beta";
+message M1 {}
diff --git a/protoc-gen-go/testdata/imports/test_b_1/m2.pb.go b/protoc-gen-go/testdata/imports/test_b_1/m2.pb.go
new file mode 100644
index 0000000..3075509
--- /dev/null
+++ b/protoc-gen-go/testdata/imports/test_b_1/m2.pb.go
@@ -0,0 +1,72 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: imports/test_b_1/m2.proto
+
+package beta
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+type M2 struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *M2) Reset()         { *m = M2{} }
+func (m *M2) String() string { return proto.CompactTextString(m) }
+func (*M2) ProtoMessage()    {}
+func (*M2) Descriptor() ([]byte, []int) {
+	return fileDescriptor_a1becddceeb586f2, []int{0}
+}
+
+func (m *M2) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_M2.Unmarshal(m, b)
+}
+func (m *M2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_M2.Marshal(b, m, deterministic)
+}
+func (m *M2) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_M2.Merge(m, src)
+}
+func (m *M2) XXX_Size() int {
+	return xxx_messageInfo_M2.Size(m)
+}
+func (m *M2) XXX_DiscardUnknown() {
+	xxx_messageInfo_M2.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_M2 proto.InternalMessageInfo
+
+func init() {
+	proto.RegisterType((*M2)(nil), "test.b.part2.M2")
+}
+
+func init() {
+	proto.RegisterFile("imports/test_b_1/m2.proto", fileDescriptor_a1becddceeb586f2)
+}
+
+var fileDescriptor_a1becddceeb586f2 = []byte{
+	// 125 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xcc, 0xcc, 0x2d, 0xc8,
+	0x2f, 0x2a, 0x29, 0xd6, 0x2f, 0x49, 0x2d, 0x2e, 0x89, 0x4f, 0x8a, 0x37, 0xd4, 0xcf, 0x35, 0xd2,
+	0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x01, 0x09, 0xe9, 0x25, 0xe9, 0x15, 0x24, 0x16, 0x95,
+	0x18, 0x29, 0xb1, 0x70, 0x31, 0xf9, 0x1a, 0x39, 0x79, 0x46, 0xb9, 0xa7, 0x67, 0x96, 0x64, 0x94,
+	0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0xa7, 0xe7, 0xe7, 0x24, 0xe6, 0xa5, 0xeb, 0x83, 0x95, 0x27,
+	0x95, 0xa6, 0x41, 0x18, 0xc9, 0xba, 0xe9, 0xa9, 0x79, 0xba, 0xe9, 0xf9, 0x60, 0x13, 0x53, 0x12,
+	0x4b, 0x12, 0xf5, 0xd1, 0xad, 0xb0, 0x4e, 0x4a, 0x2d, 0x49, 0x4c, 0x62, 0x03, 0xab, 0x36, 0x06,
+	0x04, 0x00, 0x00, 0xff, 0xff, 0x44, 0x29, 0xbe, 0x6d, 0x82, 0x00, 0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/imports/test_b_1/m2.proto b/protoc-gen-go/testdata/imports/test_b_1/m2.proto
new file mode 100644
index 0000000..13723be
--- /dev/null
+++ b/protoc-gen-go/testdata/imports/test_b_1/m2.proto
@@ -0,0 +1,35 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2018 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+package test.b.part2;
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/imports/test_b_1;beta";
+message M2 {}
diff --git a/protoc-gen-go/testdata/imports/test_import_a1m1.pb.go b/protoc-gen-go/testdata/imports/test_import_a1m1.pb.go
new file mode 100644
index 0000000..70245a4
--- /dev/null
+++ b/protoc-gen-go/testdata/imports/test_import_a1m1.pb.go
@@ -0,0 +1,83 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: imports/test_import_a1m1.proto
+
+package imports
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	test_a_1 "github.com/golang/protobuf/protoc-gen-go/testdata/imports/test_a_1"
+	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
+
+type A1M1 struct {
+	F                    *test_a_1.M1 `protobuf:"bytes,1,opt,name=f,proto3" json:"f,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *A1M1) Reset()         { *m = A1M1{} }
+func (m *A1M1) String() string { return proto.CompactTextString(m) }
+func (*A1M1) ProtoMessage()    {}
+func (*A1M1) Descriptor() ([]byte, []int) {
+	return fileDescriptor_3b904a47327455f3, []int{0}
+}
+
+func (m *A1M1) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_A1M1.Unmarshal(m, b)
+}
+func (m *A1M1) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_A1M1.Marshal(b, m, deterministic)
+}
+func (m *A1M1) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_A1M1.Merge(m, src)
+}
+func (m *A1M1) XXX_Size() int {
+	return xxx_messageInfo_A1M1.Size(m)
+}
+func (m *A1M1) XXX_DiscardUnknown() {
+	xxx_messageInfo_A1M1.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_A1M1 proto.InternalMessageInfo
+
+func (m *A1M1) GetF() *test_a_1.M1 {
+	if m != nil {
+		return m.F
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*A1M1)(nil), "test.A1M1")
+}
+
+func init() {
+	proto.RegisterFile("imports/test_import_a1m1.proto", fileDescriptor_3b904a47327455f3)
+}
+
+var fileDescriptor_3b904a47327455f3 = []byte{
+	// 149 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xcb, 0xcc, 0x2d, 0xc8,
+	0x2f, 0x2a, 0x29, 0xd6, 0x2f, 0x49, 0x2d, 0x2e, 0x89, 0x87, 0x70, 0xe2, 0x13, 0x0d, 0x73, 0x0d,
+	0xf5, 0x0a, 0x8a, 0xf2, 0x4b, 0xf2, 0x85, 0x58, 0x40, 0xe2, 0x52, 0x92, 0x28, 0xaa, 0x12, 0xe3,
+	0x0d, 0xf5, 0x61, 0x0a, 0x94, 0x14, 0xb8, 0x58, 0x1c, 0x0d, 0x7d, 0x0d, 0x85, 0x24, 0xb8, 0x18,
+	0xd3, 0x24, 0x18, 0x15, 0x18, 0x35, 0xb8, 0x8d, 0xb8, 0xf4, 0x40, 0xca, 0xf4, 0x12, 0xf5, 0x7c,
+	0x0d, 0x83, 0x18, 0xd3, 0x9c, 0xac, 0xa3, 0x2c, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92,
+	0xf3, 0x73, 0xf5, 0xd3, 0xf3, 0x73, 0x12, 0xf3, 0xd2, 0xf5, 0xc1, 0x9a, 0x93, 0x4a, 0xd3, 0x20,
+	0x8c, 0x64, 0xdd, 0xf4, 0xd4, 0x3c, 0xdd, 0xf4, 0x7c, 0xb0, 0xf9, 0x29, 0x89, 0x25, 0x89, 0xfa,
+	0x50, 0x0b, 0x93, 0xd8, 0xc0, 0xf2, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x84, 0x2f, 0x18,
+	0x23, 0xa8, 0x00, 0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/imports/test_import_a1m1.proto b/protoc-gen-go/testdata/imports/test_import_a1m1.proto
new file mode 100644
index 0000000..abf07f2
--- /dev/null
+++ b/protoc-gen-go/testdata/imports/test_import_a1m1.proto
@@ -0,0 +1,42 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2018 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+package test;
+
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/imports";
+
+import "imports/test_a_1/m1.proto";
+
+message A1M1 {
+  test.a.M1 f = 1;
+}
diff --git a/protoc-gen-go/testdata/imports/test_import_a1m2.pb.go b/protoc-gen-go/testdata/imports/test_import_a1m2.pb.go
new file mode 100644
index 0000000..49e2058
--- /dev/null
+++ b/protoc-gen-go/testdata/imports/test_import_a1m2.pb.go
@@ -0,0 +1,83 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: imports/test_import_a1m2.proto
+
+package imports
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	test_a_1 "github.com/golang/protobuf/protoc-gen-go/testdata/imports/test_a_1"
+	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
+
+type A1M2 struct {
+	F                    *test_a_1.M2 `protobuf:"bytes,1,opt,name=f,proto3" json:"f,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *A1M2) Reset()         { *m = A1M2{} }
+func (m *A1M2) String() string { return proto.CompactTextString(m) }
+func (*A1M2) ProtoMessage()    {}
+func (*A1M2) Descriptor() ([]byte, []int) {
+	return fileDescriptor_bdb27b114687957d, []int{0}
+}
+
+func (m *A1M2) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_A1M2.Unmarshal(m, b)
+}
+func (m *A1M2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_A1M2.Marshal(b, m, deterministic)
+}
+func (m *A1M2) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_A1M2.Merge(m, src)
+}
+func (m *A1M2) XXX_Size() int {
+	return xxx_messageInfo_A1M2.Size(m)
+}
+func (m *A1M2) XXX_DiscardUnknown() {
+	xxx_messageInfo_A1M2.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_A1M2 proto.InternalMessageInfo
+
+func (m *A1M2) GetF() *test_a_1.M2 {
+	if m != nil {
+		return m.F
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*A1M2)(nil), "test.A1M2")
+}
+
+func init() {
+	proto.RegisterFile("imports/test_import_a1m2.proto", fileDescriptor_bdb27b114687957d)
+}
+
+var fileDescriptor_bdb27b114687957d = []byte{
+	// 149 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0xcb, 0xcc, 0x2d, 0xc8,
+	0x2f, 0x2a, 0x29, 0xd6, 0x2f, 0x49, 0x2d, 0x2e, 0x89, 0x87, 0x70, 0xe2, 0x13, 0x0d, 0x73, 0x8d,
+	0xf4, 0x0a, 0x8a, 0xf2, 0x4b, 0xf2, 0x85, 0x58, 0x40, 0xe2, 0x52, 0x92, 0x28, 0xaa, 0x12, 0xe3,
+	0x0d, 0xf5, 0x61, 0x0a, 0x94, 0x14, 0xb8, 0x58, 0x1c, 0x0d, 0x7d, 0x8d, 0x84, 0x24, 0xb8, 0x18,
+	0xd3, 0x24, 0x18, 0x15, 0x18, 0x35, 0xb8, 0x8d, 0xb8, 0xf4, 0x40, 0xca, 0xf4, 0x12, 0xf5, 0x7c,
+	0x8d, 0x82, 0x18, 0xd3, 0x9c, 0xac, 0xa3, 0x2c, 0xd3, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92,
+	0xf3, 0x73, 0xf5, 0xd3, 0xf3, 0x73, 0x12, 0xf3, 0xd2, 0xf5, 0xc1, 0x9a, 0x93, 0x4a, 0xd3, 0x20,
+	0x8c, 0x64, 0xdd, 0xf4, 0xd4, 0x3c, 0xdd, 0xf4, 0x7c, 0xb0, 0xf9, 0x29, 0x89, 0x25, 0x89, 0xfa,
+	0x50, 0x0b, 0x93, 0xd8, 0xc0, 0xf2, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x88, 0xfb,
+	0xea, 0xa8, 0x00, 0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/imports/test_import_a1m2.proto b/protoc-gen-go/testdata/imports/test_import_a1m2.proto
new file mode 100644
index 0000000..5c53950
--- /dev/null
+++ b/protoc-gen-go/testdata/imports/test_import_a1m2.proto
@@ -0,0 +1,42 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2018 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+package test;
+
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/imports";
+
+import "imports/test_a_1/m2.proto";
+
+message A1M2 {
+  test.a.M2 f = 1;
+}
diff --git a/protoc-gen-go/testdata/imports/test_import_all.pb.go b/protoc-gen-go/testdata/imports/test_import_all.pb.go
new file mode 100644
index 0000000..867da8f
--- /dev/null
+++ b/protoc-gen-go/testdata/imports/test_import_all.pb.go
@@ -0,0 +1,141 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: imports/test_import_all.proto
+
+package imports
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	fmt1 "github.com/golang/protobuf/protoc-gen-go/testdata/imports/fmt"
+	test_a_1 "github.com/golang/protobuf/protoc-gen-go/testdata/imports/test_a_1"
+	test_a_2 "github.com/golang/protobuf/protoc-gen-go/testdata/imports/test_a_2"
+	test_b_1 "github.com/golang/protobuf/protoc-gen-go/testdata/imports/test_b_1"
+	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
+
+type All struct {
+	Am1                  *test_a_1.M1 `protobuf:"bytes,1,opt,name=am1,proto3" json:"am1,omitempty"`
+	Am2                  *test_a_1.M2 `protobuf:"bytes,2,opt,name=am2,proto3" json:"am2,omitempty"`
+	Am3                  *test_a_2.M3 `protobuf:"bytes,3,opt,name=am3,proto3" json:"am3,omitempty"`
+	Am4                  *test_a_2.M4 `protobuf:"bytes,4,opt,name=am4,proto3" json:"am4,omitempty"`
+	Bm1                  *test_b_1.M1 `protobuf:"bytes,5,opt,name=bm1,proto3" json:"bm1,omitempty"`
+	Bm2                  *test_b_1.M2 `protobuf:"bytes,6,opt,name=bm2,proto3" json:"bm2,omitempty"`
+	Fmt                  *fmt1.M      `protobuf:"bytes,7,opt,name=fmt,proto3" json:"fmt,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *All) Reset()         { *m = All{} }
+func (m *All) String() string { return proto.CompactTextString(m) }
+func (*All) ProtoMessage()    {}
+func (*All) Descriptor() ([]byte, []int) {
+	return fileDescriptor_324466f0afc16f77, []int{0}
+}
+
+func (m *All) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_All.Unmarshal(m, b)
+}
+func (m *All) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_All.Marshal(b, m, deterministic)
+}
+func (m *All) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_All.Merge(m, src)
+}
+func (m *All) XXX_Size() int {
+	return xxx_messageInfo_All.Size(m)
+}
+func (m *All) XXX_DiscardUnknown() {
+	xxx_messageInfo_All.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_All proto.InternalMessageInfo
+
+func (m *All) GetAm1() *test_a_1.M1 {
+	if m != nil {
+		return m.Am1
+	}
+	return nil
+}
+
+func (m *All) GetAm2() *test_a_1.M2 {
+	if m != nil {
+		return m.Am2
+	}
+	return nil
+}
+
+func (m *All) GetAm3() *test_a_2.M3 {
+	if m != nil {
+		return m.Am3
+	}
+	return nil
+}
+
+func (m *All) GetAm4() *test_a_2.M4 {
+	if m != nil {
+		return m.Am4
+	}
+	return nil
+}
+
+func (m *All) GetBm1() *test_b_1.M1 {
+	if m != nil {
+		return m.Bm1
+	}
+	return nil
+}
+
+func (m *All) GetBm2() *test_b_1.M2 {
+	if m != nil {
+		return m.Bm2
+	}
+	return nil
+}
+
+func (m *All) GetFmt() *fmt1.M {
+	if m != nil {
+		return m.Fmt
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*All)(nil), "test.All")
+}
+
+func init() {
+	proto.RegisterFile("imports/test_import_all.proto", fileDescriptor_324466f0afc16f77)
+}
+
+var fileDescriptor_324466f0afc16f77 = []byte{
+	// 258 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0xd0, 0xb1, 0x4e, 0xc3, 0x30,
+	0x10, 0x06, 0x60, 0x15, 0x97, 0x20, 0x99, 0x05, 0x85, 0xc5, 0x20, 0x90, 0x50, 0x27, 0x96, 0xda,
+	0xb2, 0x9d, 0x05, 0x31, 0xc1, 0xde, 0xa5, 0x23, 0x4b, 0x64, 0x97, 0xc6, 0x54, 0xf2, 0xd5, 0x51,
+	0x7a, 0x7d, 0x5e, 0x5e, 0x05, 0xd9, 0x07, 0x12, 0x84, 0x66, 0x4b, 0xfe, 0xef, 0xb7, 0xce, 0x3e,
+	0x7e, 0xbf, 0x83, 0x3e, 0x0d, 0x78, 0x50, 0xb8, 0x3d, 0x60, 0x4b, 0x3f, 0xad, 0x8b, 0x51, 0xf6,
+	0x43, 0xc2, 0x54, 0xcf, 0x73, 0x7c, 0x7b, 0xf3, 0xa7, 0xe4, 0x5a, 0xad, 0x40, 0x53, 0xe1, 0x14,
+	0x99, 0x09, 0x32, 0x0a, 0xec, 0x34, 0x35, 0x27, 0xc9, 0x4f, 0xcf, 0xf2, 0xbf, 0x67, 0x5d, 0xff,
+	0x50, 0x07, 0xa8, 0x80, 0xc2, 0xc5, 0xe7, 0x8c, 0xb3, 0x97, 0x18, 0xeb, 0x3b, 0xce, 0x1c, 0x68,
+	0x31, 0x7b, 0x98, 0x3d, 0x5e, 0x1a, 0x2e, 0xf3, 0x69, 0xe9, 0xe4, 0x4a, 0xaf, 0x73, 0x4c, 0x6a,
+	0xc4, 0xd9, 0x48, 0x4d, 0x56, 0x43, 0x6a, 0x05, 0x1b, 0xa9, 0xcd, 0x6a, 0x49, 0x1b, 0x31, 0x1f,
+	0x69, 0x93, 0xb5, 0xa9, 0x17, 0x9c, 0x79, 0xd0, 0xe2, 0xbc, 0xe8, 0x15, 0xa9, 0x97, 0xbd, 0x1b,
+	0x50, 0x97, 0xe9, 0x1e, 0x34, 0x75, 0x8c, 0xa8, 0xfe, 0x77, 0x4c, 0xb9, 0x83, 0x07, 0x53, 0x0b,
+	0xce, 0x3a, 0x40, 0x71, 0x51, 0x3a, 0x95, 0xec, 0x00, 0xe5, 0x6a, 0x9d, 0xa3, 0xd7, 0xe7, 0xb7,
+	0xa7, 0xb0, 0xc3, 0x8f, 0xa3, 0x97, 0x9b, 0x04, 0x2a, 0xa4, 0xe8, 0xf6, 0x41, 0x95, 0xc7, 0xfb,
+	0x63, 0x47, 0x1f, 0x9b, 0x65, 0xd8, 0xee, 0x97, 0x21, 0x95, 0xa5, 0xbd, 0x3b, 0x74, 0xea, 0x7b,
+	0x55, 0xbe, 0x2a, 0x6e, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0x95, 0x39, 0xa3, 0x82, 0x03, 0x02,
+	0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/imports/test_import_all.proto b/protoc-gen-go/testdata/imports/test_import_all.proto
new file mode 100644
index 0000000..582d722
--- /dev/null
+++ b/protoc-gen-go/testdata/imports/test_import_all.proto
@@ -0,0 +1,58 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2018 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+package test;
+
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/imports";
+
+// test_a_1/m*.proto are in the same Go package and proto package.
+// test_a_*/*.proto are in different Go packages, but the same proto package.
+// test_b_1/*.proto are in the same Go package, but different proto packages.
+// fmt/m.proto has a package name which conflicts with "fmt".
+import "imports/test_a_1/m1.proto";
+import "imports/test_a_1/m2.proto";
+import "imports/test_a_2/m3.proto";
+import "imports/test_a_2/m4.proto";
+import "imports/test_b_1/m1.proto";
+import "imports/test_b_1/m2.proto";
+import "imports/fmt/m.proto";
+
+message All {
+  test.a.M1 am1 = 1;
+  test.a.M2 am2 = 2;
+  test.a.M3 am3 = 3;
+  test.a.M4 am4 = 4;
+  test.b.part1.M1 bm1 = 5;
+  test.b.part2.M2 bm2 = 6;
+  fmt.M fmt = 7;
+}
diff --git a/protoc-gen-go/testdata/issue780_oneof_conflict/test.pb.go b/protoc-gen-go/testdata/issue780_oneof_conflict/test.pb.go
new file mode 100644
index 0000000..e2f742a
--- /dev/null
+++ b/protoc-gen-go/testdata/issue780_oneof_conflict/test.pb.go
@@ -0,0 +1,105 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: issue780_oneof_conflict/test.proto
+
+package oneoftest
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+type Foo struct {
+	// Types that are valid to be assigned to Bar:
+	//	*Foo_GetBar
+	Bar                  isFoo_Bar `protobuf_oneof:"bar"`
+	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
+	XXX_unrecognized     []byte    `json:"-"`
+	XXX_sizecache        int32     `json:"-"`
+}
+
+func (m *Foo) Reset()         { *m = Foo{} }
+func (m *Foo) String() string { return proto.CompactTextString(m) }
+func (*Foo) ProtoMessage()    {}
+func (*Foo) Descriptor() ([]byte, []int) {
+	return fileDescriptor_48462cafc802a68e, []int{0}
+}
+
+func (m *Foo) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Foo.Unmarshal(m, b)
+}
+func (m *Foo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Foo.Marshal(b, m, deterministic)
+}
+func (m *Foo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Foo.Merge(m, src)
+}
+func (m *Foo) XXX_Size() int {
+	return xxx_messageInfo_Foo.Size(m)
+}
+func (m *Foo) XXX_DiscardUnknown() {
+	xxx_messageInfo_Foo.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Foo proto.InternalMessageInfo
+
+type isFoo_Bar interface {
+	isFoo_Bar()
+}
+
+type Foo_GetBar struct {
+	GetBar string `protobuf:"bytes,1,opt,name=get_bar,json=getBar,oneof"`
+}
+
+func (*Foo_GetBar) isFoo_Bar() {}
+
+func (m *Foo) GetBar() isFoo_Bar {
+	if m != nil {
+		return m.Bar
+	}
+	return nil
+}
+
+func (m *Foo) GetGetBar() string {
+	if x, ok := m.GetBar().(*Foo_GetBar); ok {
+		return x.GetBar
+	}
+	return ""
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Foo) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*Foo_GetBar)(nil),
+	}
+}
+
+func init() {
+	proto.RegisterType((*Foo)(nil), "oneoftest.Foo")
+}
+
+func init() {
+	proto.RegisterFile("issue780_oneof_conflict/test.proto", fileDescriptor_48462cafc802a68e)
+}
+
+var fileDescriptor_48462cafc802a68e = []byte{
+	// 107 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0xca, 0x2c, 0x2e, 0x2e,
+	0x4d, 0x35, 0xb7, 0x30, 0x88, 0xcf, 0xcf, 0x4b, 0xcd, 0x4f, 0x8b, 0x4f, 0xce, 0xcf, 0x4b, 0xcb,
+	0xc9, 0x4c, 0x2e, 0xd1, 0x2f, 0x49, 0x2d, 0x2e, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2,
+	0x04, 0x4b, 0x81, 0x04, 0x94, 0xd4, 0xb9, 0x98, 0xdd, 0xf2, 0xf3, 0x85, 0x24, 0xb9, 0xd8, 0xd3,
+	0x53, 0x4b, 0xe2, 0x93, 0x12, 0x8b, 0x24, 0x18, 0x15, 0x18, 0x35, 0x38, 0x3d, 0x18, 0x82, 0xd8,
+	0xd2, 0x53, 0x4b, 0x9c, 0x12, 0x8b, 0x9c, 0x58, 0xb9, 0x98, 0x93, 0x12, 0x8b, 0x00, 0x01, 0x00,
+	0x00, 0xff, 0xff, 0x12, 0x66, 0x0c, 0x02, 0x58, 0x00, 0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/issue780_oneof_conflict/test.proto b/protoc-gen-go/testdata/issue780_oneof_conflict/test.proto
new file mode 100644
index 0000000..07879c9
--- /dev/null
+++ b/protoc-gen-go/testdata/issue780_oneof_conflict/test.proto
@@ -0,0 +1,9 @@
+syntax = "proto2";
+
+package oneoftest;
+
+message Foo {
+	oneof bar {
+		string get_bar = 1;
+	}
+}
diff --git a/protoc-gen-go/testdata/main_test.go b/protoc-gen-go/testdata/main_test.go
new file mode 100644
index 0000000..7ec1f2d
--- /dev/null
+++ b/protoc-gen-go/testdata/main_test.go
@@ -0,0 +1,48 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// A simple binary to link together the protocol buffers in this test.
+
+package testdata
+
+import (
+	"testing"
+
+	importspb "github.com/golang/protobuf/protoc-gen-go/testdata/imports"
+	multipb "github.com/golang/protobuf/protoc-gen-go/testdata/multi"
+	mytestpb "github.com/golang/protobuf/protoc-gen-go/testdata/my_test"
+)
+
+func TestLink(t *testing.T) {
+	_ = &multipb.Multi1{}
+	_ = &mytestpb.Request{}
+	_ = &importspb.All{}
+}
diff --git a/protoc-gen-go/testdata/multi/multi1.pb.go b/protoc-gen-go/testdata/multi/multi1.pb.go
new file mode 100644
index 0000000..5676399
--- /dev/null
+++ b/protoc-gen-go/testdata/multi/multi1.pb.go
@@ -0,0 +1,101 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: multi/multi1.proto
+
+package multitest
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+type Multi1 struct {
+	Multi2               *Multi2         `protobuf:"bytes,1,req,name=multi2" json:"multi2,omitempty"`
+	Color                *Multi2_Color   `protobuf:"varint,2,opt,name=color,enum=multitest.Multi2_Color" json:"color,omitempty"`
+	HatType              *Multi3_HatType `protobuf:"varint,3,opt,name=hat_type,json=hatType,enum=multitest.Multi3_HatType" json:"hat_type,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
+	XXX_unrecognized     []byte          `json:"-"`
+	XXX_sizecache        int32           `json:"-"`
+}
+
+func (m *Multi1) Reset()         { *m = Multi1{} }
+func (m *Multi1) String() string { return proto.CompactTextString(m) }
+func (*Multi1) ProtoMessage()    {}
+func (*Multi1) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e0bffc140cd1b1d9, []int{0}
+}
+
+func (m *Multi1) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Multi1.Unmarshal(m, b)
+}
+func (m *Multi1) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Multi1.Marshal(b, m, deterministic)
+}
+func (m *Multi1) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Multi1.Merge(m, src)
+}
+func (m *Multi1) XXX_Size() int {
+	return xxx_messageInfo_Multi1.Size(m)
+}
+func (m *Multi1) XXX_DiscardUnknown() {
+	xxx_messageInfo_Multi1.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Multi1 proto.InternalMessageInfo
+
+func (m *Multi1) GetMulti2() *Multi2 {
+	if m != nil {
+		return m.Multi2
+	}
+	return nil
+}
+
+func (m *Multi1) GetColor() Multi2_Color {
+	if m != nil && m.Color != nil {
+		return *m.Color
+	}
+	return Multi2_BLUE
+}
+
+func (m *Multi1) GetHatType() Multi3_HatType {
+	if m != nil && m.HatType != nil {
+		return *m.HatType
+	}
+	return Multi3_FEDORA
+}
+
+func init() {
+	proto.RegisterType((*Multi1)(nil), "multitest.Multi1")
+}
+
+func init() {
+	proto.RegisterFile("multi/multi1.proto", fileDescriptor_e0bffc140cd1b1d9)
+}
+
+var fileDescriptor_e0bffc140cd1b1d9 = []byte{
+	// 200 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0xca, 0x2d, 0xcd, 0x29,
+	0xc9, 0xd4, 0x07, 0x93, 0x86, 0x7a, 0x05, 0x45, 0xf9, 0x25, 0xf9, 0x42, 0x9c, 0x60, 0x5e, 0x49,
+	0x6a, 0x71, 0x89, 0x14, 0xb2, 0xb4, 0x11, 0x44, 0x1a, 0x45, 0xcc, 0x18, 0x22, 0xa6, 0x34, 0x83,
+	0x91, 0x8b, 0xcd, 0x17, 0x6c, 0x86, 0x90, 0x26, 0x17, 0x1b, 0x44, 0xb9, 0x04, 0xa3, 0x02, 0x93,
+	0x06, 0xb7, 0x91, 0xa0, 0x1e, 0xdc, 0x38, 0x3d, 0xb0, 0x12, 0xa3, 0x20, 0xa8, 0x02, 0x21, 0x5d,
+	0x2e, 0xd6, 0xe4, 0xfc, 0x9c, 0xfc, 0x22, 0x09, 0x26, 0x05, 0x46, 0x0d, 0x3e, 0x23, 0x71, 0x0c,
+	0x95, 0x7a, 0xce, 0x20, 0xe9, 0x20, 0x88, 0x2a, 0x21, 0x13, 0x2e, 0x8e, 0x8c, 0xc4, 0x92, 0xf8,
+	0x92, 0xca, 0x82, 0x54, 0x09, 0x66, 0xb0, 0x0e, 0x49, 0x74, 0x1d, 0xc6, 0x7a, 0x1e, 0x89, 0x25,
+	0x21, 0x95, 0x05, 0xa9, 0x41, 0xec, 0x19, 0x10, 0x86, 0x93, 0x73, 0x94, 0x63, 0x7a, 0x66, 0x49,
+	0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x7a, 0x7e, 0x4e, 0x62, 0x5e, 0xba, 0x3e, 0xd8,
+	0xd5, 0x49, 0xa5, 0x69, 0x10, 0x46, 0xb2, 0x6e, 0x7a, 0x6a, 0x9e, 0x6e, 0x7a, 0xbe, 0x3e, 0xc8,
+	0xa0, 0x94, 0xc4, 0x92, 0x44, 0x88, 0xe7, 0xac, 0xe1, 0x86, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff,
+	0x60, 0x7d, 0xfc, 0x9f, 0x27, 0x01, 0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/multi/multi1.proto b/protoc-gen-go/testdata/multi/multi1.proto
new file mode 100644
index 0000000..d3a3204
--- /dev/null
+++ b/protoc-gen-go/testdata/multi/multi1.proto
@@ -0,0 +1,46 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto2";
+
+import "multi/multi2.proto";
+import "multi/multi3.proto";
+
+package multitest;
+
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/multi;multitest";
+
+message Multi1 {
+  required Multi2 multi2 = 1;
+  optional Multi2.Color color = 2;
+  optional Multi3.HatType hat_type = 3;
+}
+
diff --git a/protoc-gen-go/testdata/multi/multi2.pb.go b/protoc-gen-go/testdata/multi/multi2.pb.go
new file mode 100644
index 0000000..eef4615
--- /dev/null
+++ b/protoc-gen-go/testdata/multi/multi2.pb.go
@@ -0,0 +1,137 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: multi/multi2.proto
+
+package multitest
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+type Multi2_Color int32
+
+const (
+	Multi2_BLUE  Multi2_Color = 1
+	Multi2_GREEN Multi2_Color = 2
+	Multi2_RED   Multi2_Color = 3
+)
+
+var Multi2_Color_name = map[int32]string{
+	1: "BLUE",
+	2: "GREEN",
+	3: "RED",
+}
+
+var Multi2_Color_value = map[string]int32{
+	"BLUE":  1,
+	"GREEN": 2,
+	"RED":   3,
+}
+
+func (x Multi2_Color) Enum() *Multi2_Color {
+	p := new(Multi2_Color)
+	*p = x
+	return p
+}
+
+func (x Multi2_Color) String() string {
+	return proto.EnumName(Multi2_Color_name, int32(x))
+}
+
+func (x *Multi2_Color) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(Multi2_Color_value, data, "Multi2_Color")
+	if err != nil {
+		return err
+	}
+	*x = Multi2_Color(value)
+	return nil
+}
+
+func (Multi2_Color) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_a2aebe588a0b2853, []int{0, 0}
+}
+
+type Multi2 struct {
+	RequiredValue        *int32        `protobuf:"varint,1,req,name=required_value,json=requiredValue" json:"required_value,omitempty"`
+	Color                *Multi2_Color `protobuf:"varint,2,opt,name=color,enum=multitest.Multi2_Color" json:"color,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
+	XXX_unrecognized     []byte        `json:"-"`
+	XXX_sizecache        int32         `json:"-"`
+}
+
+func (m *Multi2) Reset()         { *m = Multi2{} }
+func (m *Multi2) String() string { return proto.CompactTextString(m) }
+func (*Multi2) ProtoMessage()    {}
+func (*Multi2) Descriptor() ([]byte, []int) {
+	return fileDescriptor_a2aebe588a0b2853, []int{0}
+}
+
+func (m *Multi2) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Multi2.Unmarshal(m, b)
+}
+func (m *Multi2) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Multi2.Marshal(b, m, deterministic)
+}
+func (m *Multi2) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Multi2.Merge(m, src)
+}
+func (m *Multi2) XXX_Size() int {
+	return xxx_messageInfo_Multi2.Size(m)
+}
+func (m *Multi2) XXX_DiscardUnknown() {
+	xxx_messageInfo_Multi2.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Multi2 proto.InternalMessageInfo
+
+func (m *Multi2) GetRequiredValue() int32 {
+	if m != nil && m.RequiredValue != nil {
+		return *m.RequiredValue
+	}
+	return 0
+}
+
+func (m *Multi2) GetColor() Multi2_Color {
+	if m != nil && m.Color != nil {
+		return *m.Color
+	}
+	return Multi2_BLUE
+}
+
+func init() {
+	proto.RegisterEnum("multitest.Multi2_Color", Multi2_Color_name, Multi2_Color_value)
+	proto.RegisterType((*Multi2)(nil), "multitest.Multi2")
+}
+
+func init() {
+	proto.RegisterFile("multi/multi2.proto", fileDescriptor_a2aebe588a0b2853)
+}
+
+var fileDescriptor_a2aebe588a0b2853 = []byte{
+	// 202 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0xca, 0x2d, 0xcd, 0x29,
+	0xc9, 0xd4, 0x07, 0x93, 0x46, 0x7a, 0x05, 0x45, 0xf9, 0x25, 0xf9, 0x42, 0x9c, 0x60, 0x5e, 0x49,
+	0x6a, 0x71, 0x89, 0x52, 0x2b, 0x23, 0x17, 0x9b, 0x2f, 0x58, 0x4e, 0x48, 0x95, 0x8b, 0xaf, 0x28,
+	0xb5, 0xb0, 0x34, 0xb3, 0x28, 0x35, 0x25, 0xbe, 0x2c, 0x31, 0xa7, 0x34, 0x55, 0x82, 0x51, 0x81,
+	0x49, 0x83, 0x35, 0x88, 0x17, 0x26, 0x1a, 0x06, 0x12, 0x14, 0xd2, 0xe5, 0x62, 0x4d, 0xce, 0xcf,
+	0xc9, 0x2f, 0x92, 0x60, 0x52, 0x60, 0xd4, 0xe0, 0x33, 0x12, 0xd7, 0x83, 0x1b, 0xa6, 0x07, 0x31,
+	0x48, 0xcf, 0x19, 0x24, 0x1d, 0x04, 0x51, 0xa5, 0xa4, 0xca, 0xc5, 0x0a, 0xe6, 0x0b, 0x71, 0x70,
+	0xb1, 0x38, 0xf9, 0x84, 0xba, 0x0a, 0x30, 0x0a, 0x71, 0x72, 0xb1, 0xba, 0x07, 0xb9, 0xba, 0xfa,
+	0x09, 0x30, 0x09, 0xb1, 0x73, 0x31, 0x07, 0xb9, 0xba, 0x08, 0x30, 0x3b, 0x39, 0x47, 0x39, 0xa6,
+	0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0xa7, 0xe7, 0xe7, 0x24, 0xe6, 0xa5,
+	0xeb, 0x83, 0x5d, 0x9b, 0x54, 0x9a, 0x06, 0x61, 0x24, 0xeb, 0xa6, 0xa7, 0xe6, 0xe9, 0xa6, 0xe7,
+	0xeb, 0x83, 0xec, 0x4a, 0x49, 0x2c, 0x49, 0x84, 0x78, 0xca, 0x1a, 0x6e, 0x3f, 0x20, 0x00, 0x00,
+	0xff, 0xff, 0x49, 0x3b, 0x52, 0x44, 0xec, 0x00, 0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/multi/multi2.proto b/protoc-gen-go/testdata/multi/multi2.proto
new file mode 100644
index 0000000..ec5b431
--- /dev/null
+++ b/protoc-gen-go/testdata/multi/multi2.proto
@@ -0,0 +1,48 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto2";
+
+package multitest;
+
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/multi;multitest";
+
+message Multi2 {
+  required int32 required_value = 1;
+
+  enum Color {
+    BLUE = 1;
+    GREEN = 2;
+    RED = 3;
+  };
+  optional Color color = 2;
+}
+
diff --git a/protoc-gen-go/testdata/multi/multi3.pb.go b/protoc-gen-go/testdata/multi/multi3.pb.go
new file mode 100644
index 0000000..28ba1a9
--- /dev/null
+++ b/protoc-gen-go/testdata/multi/multi3.pb.go
@@ -0,0 +1,124 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: multi/multi3.proto
+
+package multitest
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+type Multi3_HatType int32
+
+const (
+	Multi3_FEDORA Multi3_HatType = 1
+	Multi3_FEZ    Multi3_HatType = 2
+)
+
+var Multi3_HatType_name = map[int32]string{
+	1: "FEDORA",
+	2: "FEZ",
+}
+
+var Multi3_HatType_value = map[string]int32{
+	"FEDORA": 1,
+	"FEZ":    2,
+}
+
+func (x Multi3_HatType) Enum() *Multi3_HatType {
+	p := new(Multi3_HatType)
+	*p = x
+	return p
+}
+
+func (x Multi3_HatType) String() string {
+	return proto.EnumName(Multi3_HatType_name, int32(x))
+}
+
+func (x *Multi3_HatType) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(Multi3_HatType_value, data, "Multi3_HatType")
+	if err != nil {
+		return err
+	}
+	*x = Multi3_HatType(value)
+	return nil
+}
+
+func (Multi3_HatType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_580398fc0bbeeaa7, []int{0, 0}
+}
+
+type Multi3 struct {
+	HatType              *Multi3_HatType `protobuf:"varint,1,opt,name=hat_type,json=hatType,enum=multitest.Multi3_HatType" json:"hat_type,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
+	XXX_unrecognized     []byte          `json:"-"`
+	XXX_sizecache        int32           `json:"-"`
+}
+
+func (m *Multi3) Reset()         { *m = Multi3{} }
+func (m *Multi3) String() string { return proto.CompactTextString(m) }
+func (*Multi3) ProtoMessage()    {}
+func (*Multi3) Descriptor() ([]byte, []int) {
+	return fileDescriptor_580398fc0bbeeaa7, []int{0}
+}
+
+func (m *Multi3) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Multi3.Unmarshal(m, b)
+}
+func (m *Multi3) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Multi3.Marshal(b, m, deterministic)
+}
+func (m *Multi3) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Multi3.Merge(m, src)
+}
+func (m *Multi3) XXX_Size() int {
+	return xxx_messageInfo_Multi3.Size(m)
+}
+func (m *Multi3) XXX_DiscardUnknown() {
+	xxx_messageInfo_Multi3.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Multi3 proto.InternalMessageInfo
+
+func (m *Multi3) GetHatType() Multi3_HatType {
+	if m != nil && m.HatType != nil {
+		return *m.HatType
+	}
+	return Multi3_FEDORA
+}
+
+func init() {
+	proto.RegisterEnum("multitest.Multi3_HatType", Multi3_HatType_name, Multi3_HatType_value)
+	proto.RegisterType((*Multi3)(nil), "multitest.Multi3")
+}
+
+func init() {
+	proto.RegisterFile("multi/multi3.proto", fileDescriptor_580398fc0bbeeaa7)
+}
+
+var fileDescriptor_580398fc0bbeeaa7 = []byte{
+	// 170 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0xca, 0x2d, 0xcd, 0x29,
+	0xc9, 0xd4, 0x07, 0x93, 0xc6, 0x7a, 0x05, 0x45, 0xf9, 0x25, 0xf9, 0x42, 0x9c, 0x60, 0x5e, 0x49,
+	0x6a, 0x71, 0x89, 0x52, 0x1c, 0x17, 0x9b, 0x2f, 0x58, 0x4a, 0xc8, 0x84, 0x8b, 0x23, 0x23, 0xb1,
+	0x24, 0xbe, 0xa4, 0xb2, 0x20, 0x55, 0x82, 0x51, 0x81, 0x51, 0x83, 0xcf, 0x48, 0x52, 0x0f, 0xae,
+	0x4e, 0x0f, 0xa2, 0x48, 0xcf, 0x23, 0xb1, 0x24, 0xa4, 0xb2, 0x20, 0x35, 0x88, 0x3d, 0x03, 0xc2,
+	0x50, 0x92, 0xe3, 0x62, 0x87, 0x8a, 0x09, 0x71, 0x71, 0xb1, 0xb9, 0xb9, 0xba, 0xf8, 0x07, 0x39,
+	0x0a, 0x30, 0x0a, 0xb1, 0x73, 0x31, 0xbb, 0xb9, 0x46, 0x09, 0x30, 0x39, 0x39, 0x47, 0x39, 0xa6,
+	0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0xa7, 0xe7, 0xe7, 0x24, 0xe6, 0xa5,
+	0xeb, 0x83, 0x5d, 0x91, 0x54, 0x9a, 0x06, 0x61, 0x24, 0xeb, 0xa6, 0xa7, 0xe6, 0xe9, 0xa6, 0xe7,
+	0xeb, 0x83, 0x2c, 0x4a, 0x49, 0x2c, 0x49, 0x84, 0x38, 0xd6, 0x1a, 0x6e, 0x39, 0x20, 0x00, 0x00,
+	0xff, 0xff, 0xd5, 0xa4, 0x1a, 0x0e, 0xc4, 0x00, 0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/multi/multi3.proto b/protoc-gen-go/testdata/multi/multi3.proto
new file mode 100644
index 0000000..8690b88
--- /dev/null
+++ b/protoc-gen-go/testdata/multi/multi3.proto
@@ -0,0 +1,45 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto2";
+
+package multitest;
+
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/multi;multitest";
+
+message Multi3 {
+  enum HatType {
+    FEDORA = 1;
+    FEZ = 2;
+  };
+  optional HatType hat_type = 1;
+}
+
diff --git a/protoc-gen-go/testdata/my_test/test.pb.go b/protoc-gen-go/testdata/my_test/test.pb.go
new file mode 100644
index 0000000..7b49db0
--- /dev/null
+++ b/protoc-gen-go/testdata/my_test/test.pb.go
@@ -0,0 +1,1102 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: my_test/test.proto
+
+// This package holds interesting messages.
+
+package test
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	_ "github.com/golang/protobuf/protoc-gen-go/testdata/multi"
+	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
+
+type HatType int32
+
+const (
+	// deliberately skipping 0
+	HatType_FEDORA HatType = 1
+	HatType_FEZ    HatType = 2
+)
+
+var HatType_name = map[int32]string{
+	1: "FEDORA",
+	2: "FEZ",
+}
+
+var HatType_value = map[string]int32{
+	"FEDORA": 1,
+	"FEZ":    2,
+}
+
+func (x HatType) Enum() *HatType {
+	p := new(HatType)
+	*p = x
+	return p
+}
+
+func (x HatType) String() string {
+	return proto.EnumName(HatType_name, int32(x))
+}
+
+func (x *HatType) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(HatType_value, data, "HatType")
+	if err != nil {
+		return err
+	}
+	*x = HatType(value)
+	return nil
+}
+
+func (HatType) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_2c9b60a40d5131b9, []int{0}
+}
+
+// This enum represents days of the week.
+type Days int32
+
+const (
+	Days_MONDAY  Days = 1
+	Days_TUESDAY Days = 2
+	Days_LUNDI   Days = 1
+)
+
+var Days_name = map[int32]string{
+	1: "MONDAY",
+	2: "TUESDAY",
+	// Duplicate value: 1: "LUNDI",
+}
+
+var Days_value = map[string]int32{
+	"MONDAY":  1,
+	"TUESDAY": 2,
+	"LUNDI":   1,
+}
+
+func (x Days) Enum() *Days {
+	p := new(Days)
+	*p = x
+	return p
+}
+
+func (x Days) String() string {
+	return proto.EnumName(Days_name, int32(x))
+}
+
+func (x *Days) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(Days_value, data, "Days")
+	if err != nil {
+		return err
+	}
+	*x = Days(value)
+	return nil
+}
+
+func (Days) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_2c9b60a40d5131b9, []int{1}
+}
+
+type Request_Color int32
+
+const (
+	Request_RED   Request_Color = 0
+	Request_GREEN Request_Color = 1
+	Request_BLUE  Request_Color = 2
+)
+
+var Request_Color_name = map[int32]string{
+	0: "RED",
+	1: "GREEN",
+	2: "BLUE",
+}
+
+var Request_Color_value = map[string]int32{
+	"RED":   0,
+	"GREEN": 1,
+	"BLUE":  2,
+}
+
+func (x Request_Color) Enum() *Request_Color {
+	p := new(Request_Color)
+	*p = x
+	return p
+}
+
+func (x Request_Color) String() string {
+	return proto.EnumName(Request_Color_name, int32(x))
+}
+
+func (x *Request_Color) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(Request_Color_value, data, "Request_Color")
+	if err != nil {
+		return err
+	}
+	*x = Request_Color(value)
+	return nil
+}
+
+func (Request_Color) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_2c9b60a40d5131b9, []int{0, 0}
+}
+
+type Reply_Entry_Game int32
+
+const (
+	Reply_Entry_FOOTBALL Reply_Entry_Game = 1
+	Reply_Entry_TENNIS   Reply_Entry_Game = 2
+)
+
+var Reply_Entry_Game_name = map[int32]string{
+	1: "FOOTBALL",
+	2: "TENNIS",
+}
+
+var Reply_Entry_Game_value = map[string]int32{
+	"FOOTBALL": 1,
+	"TENNIS":   2,
+}
+
+func (x Reply_Entry_Game) Enum() *Reply_Entry_Game {
+	p := new(Reply_Entry_Game)
+	*p = x
+	return p
+}
+
+func (x Reply_Entry_Game) String() string {
+	return proto.EnumName(Reply_Entry_Game_name, int32(x))
+}
+
+func (x *Reply_Entry_Game) UnmarshalJSON(data []byte) error {
+	value, err := proto.UnmarshalJSONEnum(Reply_Entry_Game_value, data, "Reply_Entry_Game")
+	if err != nil {
+		return err
+	}
+	*x = Reply_Entry_Game(value)
+	return nil
+}
+
+func (Reply_Entry_Game) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_2c9b60a40d5131b9, []int{1, 0, 0}
+}
+
+// This is a message that might be sent somewhere.
+type Request struct {
+	Key []int64 `protobuf:"varint,1,rep,name=key" json:"key,omitempty"`
+	//  optional imp.ImportedMessage imported_message = 2;
+	Hue *Request_Color `protobuf:"varint,3,opt,name=hue,enum=my.test.Request_Color" json:"hue,omitempty"`
+	Hat *HatType       `protobuf:"varint,4,opt,name=hat,enum=my.test.HatType,def=1" json:"hat,omitempty"`
+	//  optional imp.ImportedMessage.Owner owner = 6;
+	Deadline  *float32           `protobuf:"fixed32,7,opt,name=deadline,def=inf" json:"deadline,omitempty"`
+	Somegroup *Request_SomeGroup `protobuf:"group,8,opt,name=SomeGroup,json=somegroup" json:"somegroup,omitempty"`
+	// This is a map field. It will generate map[int32]string.
+	NameMapping map[int32]string `protobuf:"bytes,14,rep,name=name_mapping,json=nameMapping" json:"name_mapping,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	// This is a map field whose value type is a message.
+	MsgMapping map[int64]*Reply `protobuf:"bytes,15,rep,name=msg_mapping,json=msgMapping" json:"msg_mapping,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+	Reset_     *int32           `protobuf:"varint,12,opt,name=reset" json:"reset,omitempty"`
+	// This field should not conflict with any getters.
+	GetKey_              *string  `protobuf:"bytes,16,opt,name=get_key,json=getKey" json:"get_key,omitempty"`
+	FloatNinf            *float32 `protobuf:"fixed32,20,opt,name=float_ninf,json=floatNinf,def=-inf" json:"float_ninf,omitempty"`
+	FloatPinf            *float32 `protobuf:"fixed32,21,opt,name=float_pinf,json=floatPinf,def=inf" json:"float_pinf,omitempty"`
+	FloatExp             *float32 `protobuf:"fixed32,22,opt,name=float_exp,json=floatExp,def=1e+09" json:"float_exp,omitempty"`
+	DoubleNinf           *float64 `protobuf:"fixed64,23,opt,name=double_ninf,json=doubleNinf,def=-inf" json:"double_ninf,omitempty"`
+	DoublePinf           *float64 `protobuf:"fixed64,24,opt,name=double_pinf,json=doublePinf,def=inf" json:"double_pinf,omitempty"`
+	DoubleExp            *float64 `protobuf:"fixed64,25,opt,name=double_exp,json=doubleExp,def=1e+09" json:"double_exp,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Request) Reset()         { *m = Request{} }
+func (m *Request) String() string { return proto.CompactTextString(m) }
+func (*Request) ProtoMessage()    {}
+func (*Request) Descriptor() ([]byte, []int) {
+	return fileDescriptor_2c9b60a40d5131b9, []int{0}
+}
+
+func (m *Request) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Request.Unmarshal(m, b)
+}
+func (m *Request) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Request.Marshal(b, m, deterministic)
+}
+func (m *Request) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Request.Merge(m, src)
+}
+func (m *Request) XXX_Size() int {
+	return xxx_messageInfo_Request.Size(m)
+}
+func (m *Request) XXX_DiscardUnknown() {
+	xxx_messageInfo_Request.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Request proto.InternalMessageInfo
+
+const Default_Request_Hat HatType = HatType_FEDORA
+
+var Default_Request_Deadline float32 = float32(math.Inf(1))
+var Default_Request_FloatNinf float32 = float32(math.Inf(-1))
+var Default_Request_FloatPinf float32 = float32(math.Inf(1))
+
+const Default_Request_FloatExp float32 = 1e+09
+
+var Default_Request_DoubleNinf float64 = math.Inf(-1)
+var Default_Request_DoublePinf float64 = math.Inf(1)
+
+const Default_Request_DoubleExp float64 = 1e+09
+
+func (m *Request) GetKey() []int64 {
+	if m != nil {
+		return m.Key
+	}
+	return nil
+}
+
+func (m *Request) GetHue() Request_Color {
+	if m != nil && m.Hue != nil {
+		return *m.Hue
+	}
+	return Request_RED
+}
+
+func (m *Request) GetHat() HatType {
+	if m != nil && m.Hat != nil {
+		return *m.Hat
+	}
+	return Default_Request_Hat
+}
+
+func (m *Request) GetDeadline() float32 {
+	if m != nil && m.Deadline != nil {
+		return *m.Deadline
+	}
+	return Default_Request_Deadline
+}
+
+func (m *Request) GetSomegroup() *Request_SomeGroup {
+	if m != nil {
+		return m.Somegroup
+	}
+	return nil
+}
+
+func (m *Request) GetNameMapping() map[int32]string {
+	if m != nil {
+		return m.NameMapping
+	}
+	return nil
+}
+
+func (m *Request) GetMsgMapping() map[int64]*Reply {
+	if m != nil {
+		return m.MsgMapping
+	}
+	return nil
+}
+
+func (m *Request) GetReset_() int32 {
+	if m != nil && m.Reset_ != nil {
+		return *m.Reset_
+	}
+	return 0
+}
+
+func (m *Request) GetGetKey_() string {
+	if m != nil && m.GetKey_ != nil {
+		return *m.GetKey_
+	}
+	return ""
+}
+
+func (m *Request) GetFloatNinf() float32 {
+	if m != nil && m.FloatNinf != nil {
+		return *m.FloatNinf
+	}
+	return Default_Request_FloatNinf
+}
+
+func (m *Request) GetFloatPinf() float32 {
+	if m != nil && m.FloatPinf != nil {
+		return *m.FloatPinf
+	}
+	return Default_Request_FloatPinf
+}
+
+func (m *Request) GetFloatExp() float32 {
+	if m != nil && m.FloatExp != nil {
+		return *m.FloatExp
+	}
+	return Default_Request_FloatExp
+}
+
+func (m *Request) GetDoubleNinf() float64 {
+	if m != nil && m.DoubleNinf != nil {
+		return *m.DoubleNinf
+	}
+	return Default_Request_DoubleNinf
+}
+
+func (m *Request) GetDoublePinf() float64 {
+	if m != nil && m.DoublePinf != nil {
+		return *m.DoublePinf
+	}
+	return Default_Request_DoublePinf
+}
+
+func (m *Request) GetDoubleExp() float64 {
+	if m != nil && m.DoubleExp != nil {
+		return *m.DoubleExp
+	}
+	return Default_Request_DoubleExp
+}
+
+type Request_SomeGroup struct {
+	GroupField           *int32   `protobuf:"varint,9,opt,name=group_field,json=groupField" json:"group_field,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Request_SomeGroup) Reset()         { *m = Request_SomeGroup{} }
+func (m *Request_SomeGroup) String() string { return proto.CompactTextString(m) }
+func (*Request_SomeGroup) ProtoMessage()    {}
+func (*Request_SomeGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_2c9b60a40d5131b9, []int{0, 0}
+}
+
+func (m *Request_SomeGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Request_SomeGroup.Unmarshal(m, b)
+}
+func (m *Request_SomeGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Request_SomeGroup.Marshal(b, m, deterministic)
+}
+func (m *Request_SomeGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Request_SomeGroup.Merge(m, src)
+}
+func (m *Request_SomeGroup) XXX_Size() int {
+	return xxx_messageInfo_Request_SomeGroup.Size(m)
+}
+func (m *Request_SomeGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_Request_SomeGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Request_SomeGroup proto.InternalMessageInfo
+
+func (m *Request_SomeGroup) GetGroupField() int32 {
+	if m != nil && m.GroupField != nil {
+		return *m.GroupField
+	}
+	return 0
+}
+
+type Reply struct {
+	Found                        []*Reply_Entry `protobuf:"bytes,1,rep,name=found" json:"found,omitempty"`
+	CompactKeys                  []int32        `protobuf:"varint,2,rep,packed,name=compact_keys,json=compactKeys" json:"compact_keys,omitempty"`
+	XXX_NoUnkeyedLiteral         struct{}       `json:"-"`
+	proto.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized             []byte `json:"-"`
+	XXX_sizecache                int32  `json:"-"`
+}
+
+func (m *Reply) Reset()         { *m = Reply{} }
+func (m *Reply) String() string { return proto.CompactTextString(m) }
+func (*Reply) ProtoMessage()    {}
+func (*Reply) Descriptor() ([]byte, []int) {
+	return fileDescriptor_2c9b60a40d5131b9, []int{1}
+}
+
+var extRange_Reply = []proto.ExtensionRange{
+	{Start: 100, End: 536870911},
+}
+
+func (*Reply) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_Reply
+}
+
+func (m *Reply) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Reply.Unmarshal(m, b)
+}
+func (m *Reply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Reply.Marshal(b, m, deterministic)
+}
+func (m *Reply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Reply.Merge(m, src)
+}
+func (m *Reply) XXX_Size() int {
+	return xxx_messageInfo_Reply.Size(m)
+}
+func (m *Reply) XXX_DiscardUnknown() {
+	xxx_messageInfo_Reply.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Reply proto.InternalMessageInfo
+
+func (m *Reply) GetFound() []*Reply_Entry {
+	if m != nil {
+		return m.Found
+	}
+	return nil
+}
+
+func (m *Reply) GetCompactKeys() []int32 {
+	if m != nil {
+		return m.CompactKeys
+	}
+	return nil
+}
+
+type Reply_Entry struct {
+	KeyThatNeeds_1234Camel_CasIng *int64   `protobuf:"varint,1,req,name=key_that_needs_1234camel_CasIng,json=keyThatNeeds1234camelCasIng" json:"key_that_needs_1234camel_CasIng,omitempty"`
+	Value                         *int64   `protobuf:"varint,2,opt,name=value,def=7" json:"value,omitempty"`
+	XMyFieldName_2                *int64   `protobuf:"varint,3,opt,name=_my_field_name_2,json=MyFieldName2" json:"_my_field_name_2,omitempty"`
+	XXX_NoUnkeyedLiteral          struct{} `json:"-"`
+	XXX_unrecognized              []byte   `json:"-"`
+	XXX_sizecache                 int32    `json:"-"`
+}
+
+func (m *Reply_Entry) Reset()         { *m = Reply_Entry{} }
+func (m *Reply_Entry) String() string { return proto.CompactTextString(m) }
+func (*Reply_Entry) ProtoMessage()    {}
+func (*Reply_Entry) Descriptor() ([]byte, []int) {
+	return fileDescriptor_2c9b60a40d5131b9, []int{1, 0}
+}
+
+func (m *Reply_Entry) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Reply_Entry.Unmarshal(m, b)
+}
+func (m *Reply_Entry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Reply_Entry.Marshal(b, m, deterministic)
+}
+func (m *Reply_Entry) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Reply_Entry.Merge(m, src)
+}
+func (m *Reply_Entry) XXX_Size() int {
+	return xxx_messageInfo_Reply_Entry.Size(m)
+}
+func (m *Reply_Entry) XXX_DiscardUnknown() {
+	xxx_messageInfo_Reply_Entry.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Reply_Entry proto.InternalMessageInfo
+
+const Default_Reply_Entry_Value int64 = 7
+
+func (m *Reply_Entry) GetKeyThatNeeds_1234Camel_CasIng() int64 {
+	if m != nil && m.KeyThatNeeds_1234Camel_CasIng != nil {
+		return *m.KeyThatNeeds_1234Camel_CasIng
+	}
+	return 0
+}
+
+func (m *Reply_Entry) GetValue() int64 {
+	if m != nil && m.Value != nil {
+		return *m.Value
+	}
+	return Default_Reply_Entry_Value
+}
+
+func (m *Reply_Entry) GetXMyFieldName_2() int64 {
+	if m != nil && m.XMyFieldName_2 != nil {
+		return *m.XMyFieldName_2
+	}
+	return 0
+}
+
+type OtherBase struct {
+	Name                         *string  `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
+	proto.XXX_InternalExtensions `json:"-"`
+	XXX_unrecognized             []byte `json:"-"`
+	XXX_sizecache                int32  `json:"-"`
+}
+
+func (m *OtherBase) Reset()         { *m = OtherBase{} }
+func (m *OtherBase) String() string { return proto.CompactTextString(m) }
+func (*OtherBase) ProtoMessage()    {}
+func (*OtherBase) Descriptor() ([]byte, []int) {
+	return fileDescriptor_2c9b60a40d5131b9, []int{2}
+}
+
+var extRange_OtherBase = []proto.ExtensionRange{
+	{Start: 100, End: 536870911},
+}
+
+func (*OtherBase) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_OtherBase
+}
+
+func (m *OtherBase) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OtherBase.Unmarshal(m, b)
+}
+func (m *OtherBase) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OtherBase.Marshal(b, m, deterministic)
+}
+func (m *OtherBase) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OtherBase.Merge(m, src)
+}
+func (m *OtherBase) XXX_Size() int {
+	return xxx_messageInfo_OtherBase.Size(m)
+}
+func (m *OtherBase) XXX_DiscardUnknown() {
+	xxx_messageInfo_OtherBase.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OtherBase proto.InternalMessageInfo
+
+func (m *OtherBase) GetName() string {
+	if m != nil && m.Name != nil {
+		return *m.Name
+	}
+	return ""
+}
+
+type ReplyExtensions struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ReplyExtensions) Reset()         { *m = ReplyExtensions{} }
+func (m *ReplyExtensions) String() string { return proto.CompactTextString(m) }
+func (*ReplyExtensions) ProtoMessage()    {}
+func (*ReplyExtensions) Descriptor() ([]byte, []int) {
+	return fileDescriptor_2c9b60a40d5131b9, []int{3}
+}
+
+func (m *ReplyExtensions) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ReplyExtensions.Unmarshal(m, b)
+}
+func (m *ReplyExtensions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ReplyExtensions.Marshal(b, m, deterministic)
+}
+func (m *ReplyExtensions) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ReplyExtensions.Merge(m, src)
+}
+func (m *ReplyExtensions) XXX_Size() int {
+	return xxx_messageInfo_ReplyExtensions.Size(m)
+}
+func (m *ReplyExtensions) XXX_DiscardUnknown() {
+	xxx_messageInfo_ReplyExtensions.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ReplyExtensions proto.InternalMessageInfo
+
+var E_ReplyExtensions_Time = &proto.ExtensionDesc{
+	ExtendedType:  (*Reply)(nil),
+	ExtensionType: (*float64)(nil),
+	Field:         101,
+	Name:          "my.test.ReplyExtensions.time",
+	Tag:           "fixed64,101,opt,name=time",
+	Filename:      "my_test/test.proto",
+}
+
+var E_ReplyExtensions_Carrot = &proto.ExtensionDesc{
+	ExtendedType:  (*Reply)(nil),
+	ExtensionType: (*ReplyExtensions)(nil),
+	Field:         105,
+	Name:          "my.test.ReplyExtensions.carrot",
+	Tag:           "bytes,105,opt,name=carrot",
+	Filename:      "my_test/test.proto",
+}
+
+var E_ReplyExtensions_Donut = &proto.ExtensionDesc{
+	ExtendedType:  (*OtherBase)(nil),
+	ExtensionType: (*ReplyExtensions)(nil),
+	Field:         101,
+	Name:          "my.test.ReplyExtensions.donut",
+	Tag:           "bytes,101,opt,name=donut",
+	Filename:      "my_test/test.proto",
+}
+
+type OtherReplyExtensions struct {
+	Key                  *int32   `protobuf:"varint,1,opt,name=key" json:"key,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OtherReplyExtensions) Reset()         { *m = OtherReplyExtensions{} }
+func (m *OtherReplyExtensions) String() string { return proto.CompactTextString(m) }
+func (*OtherReplyExtensions) ProtoMessage()    {}
+func (*OtherReplyExtensions) Descriptor() ([]byte, []int) {
+	return fileDescriptor_2c9b60a40d5131b9, []int{4}
+}
+
+func (m *OtherReplyExtensions) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OtherReplyExtensions.Unmarshal(m, b)
+}
+func (m *OtherReplyExtensions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OtherReplyExtensions.Marshal(b, m, deterministic)
+}
+func (m *OtherReplyExtensions) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OtherReplyExtensions.Merge(m, src)
+}
+func (m *OtherReplyExtensions) XXX_Size() int {
+	return xxx_messageInfo_OtherReplyExtensions.Size(m)
+}
+func (m *OtherReplyExtensions) XXX_DiscardUnknown() {
+	xxx_messageInfo_OtherReplyExtensions.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OtherReplyExtensions proto.InternalMessageInfo
+
+func (m *OtherReplyExtensions) GetKey() int32 {
+	if m != nil && m.Key != nil {
+		return *m.Key
+	}
+	return 0
+}
+
+type OldReply struct {
+	XXX_NoUnkeyedLiteral         struct{} `json:"-"`
+	proto.XXX_InternalExtensions `protobuf_messageset:"1" json:"-"`
+	XXX_unrecognized             []byte `json:"-"`
+	XXX_sizecache                int32  `json:"-"`
+}
+
+func (m *OldReply) Reset()         { *m = OldReply{} }
+func (m *OldReply) String() string { return proto.CompactTextString(m) }
+func (*OldReply) ProtoMessage()    {}
+func (*OldReply) Descriptor() ([]byte, []int) {
+	return fileDescriptor_2c9b60a40d5131b9, []int{5}
+}
+
+var extRange_OldReply = []proto.ExtensionRange{
+	{Start: 100, End: 2147483646},
+}
+
+func (*OldReply) ExtensionRangeArray() []proto.ExtensionRange {
+	return extRange_OldReply
+}
+
+func (m *OldReply) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OldReply.Unmarshal(m, b)
+}
+func (m *OldReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OldReply.Marshal(b, m, deterministic)
+}
+func (m *OldReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OldReply.Merge(m, src)
+}
+func (m *OldReply) XXX_Size() int {
+	return xxx_messageInfo_OldReply.Size(m)
+}
+func (m *OldReply) XXX_DiscardUnknown() {
+	xxx_messageInfo_OldReply.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OldReply proto.InternalMessageInfo
+
+type Communique struct {
+	MakeMeCry *bool `protobuf:"varint,1,opt,name=make_me_cry,json=makeMeCry" json:"make_me_cry,omitempty"`
+	// This is a oneof, called "union".
+	//
+	// Types that are valid to be assigned to Union:
+	//	*Communique_Number
+	//	*Communique_Name
+	//	*Communique_Data
+	//	*Communique_TempC
+	//	*Communique_Height
+	//	*Communique_Today
+	//	*Communique_Maybe
+	//	*Communique_Delta_
+	//	*Communique_Msg
+	//	*Communique_Somegroup
+	Union                isCommunique_Union `protobuf_oneof:"union"`
+	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
+	XXX_unrecognized     []byte             `json:"-"`
+	XXX_sizecache        int32              `json:"-"`
+}
+
+func (m *Communique) Reset()         { *m = Communique{} }
+func (m *Communique) String() string { return proto.CompactTextString(m) }
+func (*Communique) ProtoMessage()    {}
+func (*Communique) Descriptor() ([]byte, []int) {
+	return fileDescriptor_2c9b60a40d5131b9, []int{6}
+}
+
+func (m *Communique) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Communique.Unmarshal(m, b)
+}
+func (m *Communique) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Communique.Marshal(b, m, deterministic)
+}
+func (m *Communique) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Communique.Merge(m, src)
+}
+func (m *Communique) XXX_Size() int {
+	return xxx_messageInfo_Communique.Size(m)
+}
+func (m *Communique) XXX_DiscardUnknown() {
+	xxx_messageInfo_Communique.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Communique proto.InternalMessageInfo
+
+func (m *Communique) GetMakeMeCry() bool {
+	if m != nil && m.MakeMeCry != nil {
+		return *m.MakeMeCry
+	}
+	return false
+}
+
+type isCommunique_Union interface {
+	isCommunique_Union()
+}
+
+type Communique_Number struct {
+	Number int32 `protobuf:"varint,5,opt,name=number,oneof"`
+}
+
+type Communique_Name struct {
+	Name string `protobuf:"bytes,6,opt,name=name,oneof"`
+}
+
+type Communique_Data struct {
+	Data []byte `protobuf:"bytes,7,opt,name=data,oneof"`
+}
+
+type Communique_TempC struct {
+	TempC float64 `protobuf:"fixed64,8,opt,name=temp_c,json=tempC,oneof"`
+}
+
+type Communique_Height struct {
+	Height float32 `protobuf:"fixed32,9,opt,name=height,oneof"`
+}
+
+type Communique_Today struct {
+	Today Days `protobuf:"varint,10,opt,name=today,enum=my.test.Days,oneof"`
+}
+
+type Communique_Maybe struct {
+	Maybe bool `protobuf:"varint,11,opt,name=maybe,oneof"`
+}
+
+type Communique_Delta_ struct {
+	Delta int32 `protobuf:"zigzag32,12,opt,name=delta,oneof"`
+}
+
+type Communique_Msg struct {
+	Msg *Reply `protobuf:"bytes,16,opt,name=msg,oneof"`
+}
+
+type Communique_Somegroup struct {
+	Somegroup *Communique_SomeGroup `protobuf:"group,14,opt,name=SomeGroup,json=somegroup,oneof"`
+}
+
+func (*Communique_Number) isCommunique_Union() {}
+
+func (*Communique_Name) isCommunique_Union() {}
+
+func (*Communique_Data) isCommunique_Union() {}
+
+func (*Communique_TempC) isCommunique_Union() {}
+
+func (*Communique_Height) isCommunique_Union() {}
+
+func (*Communique_Today) isCommunique_Union() {}
+
+func (*Communique_Maybe) isCommunique_Union() {}
+
+func (*Communique_Delta_) isCommunique_Union() {}
+
+func (*Communique_Msg) isCommunique_Union() {}
+
+func (*Communique_Somegroup) isCommunique_Union() {}
+
+func (m *Communique) GetUnion() isCommunique_Union {
+	if m != nil {
+		return m.Union
+	}
+	return nil
+}
+
+func (m *Communique) GetNumber() int32 {
+	if x, ok := m.GetUnion().(*Communique_Number); ok {
+		return x.Number
+	}
+	return 0
+}
+
+func (m *Communique) GetName() string {
+	if x, ok := m.GetUnion().(*Communique_Name); ok {
+		return x.Name
+	}
+	return ""
+}
+
+func (m *Communique) GetData() []byte {
+	if x, ok := m.GetUnion().(*Communique_Data); ok {
+		return x.Data
+	}
+	return nil
+}
+
+func (m *Communique) GetTempC() float64 {
+	if x, ok := m.GetUnion().(*Communique_TempC); ok {
+		return x.TempC
+	}
+	return 0
+}
+
+func (m *Communique) GetHeight() float32 {
+	if x, ok := m.GetUnion().(*Communique_Height); ok {
+		return x.Height
+	}
+	return 0
+}
+
+func (m *Communique) GetToday() Days {
+	if x, ok := m.GetUnion().(*Communique_Today); ok {
+		return x.Today
+	}
+	return Days_MONDAY
+}
+
+func (m *Communique) GetMaybe() bool {
+	if x, ok := m.GetUnion().(*Communique_Maybe); ok {
+		return x.Maybe
+	}
+	return false
+}
+
+func (m *Communique) GetDelta() int32 {
+	if x, ok := m.GetUnion().(*Communique_Delta_); ok {
+		return x.Delta
+	}
+	return 0
+}
+
+func (m *Communique) GetMsg() *Reply {
+	if x, ok := m.GetUnion().(*Communique_Msg); ok {
+		return x.Msg
+	}
+	return nil
+}
+
+func (m *Communique) GetSomegroup() *Communique_SomeGroup {
+	if x, ok := m.GetUnion().(*Communique_Somegroup); ok {
+		return x.Somegroup
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Communique) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*Communique_Number)(nil),
+		(*Communique_Name)(nil),
+		(*Communique_Data)(nil),
+		(*Communique_TempC)(nil),
+		(*Communique_Height)(nil),
+		(*Communique_Today)(nil),
+		(*Communique_Maybe)(nil),
+		(*Communique_Delta_)(nil),
+		(*Communique_Msg)(nil),
+		(*Communique_Somegroup)(nil),
+	}
+}
+
+type Communique_SomeGroup struct {
+	Member               *string  `protobuf:"bytes,15,opt,name=member" json:"member,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Communique_SomeGroup) Reset()         { *m = Communique_SomeGroup{} }
+func (m *Communique_SomeGroup) String() string { return proto.CompactTextString(m) }
+func (*Communique_SomeGroup) ProtoMessage()    {}
+func (*Communique_SomeGroup) Descriptor() ([]byte, []int) {
+	return fileDescriptor_2c9b60a40d5131b9, []int{6, 0}
+}
+
+func (m *Communique_SomeGroup) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Communique_SomeGroup.Unmarshal(m, b)
+}
+func (m *Communique_SomeGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Communique_SomeGroup.Marshal(b, m, deterministic)
+}
+func (m *Communique_SomeGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Communique_SomeGroup.Merge(m, src)
+}
+func (m *Communique_SomeGroup) XXX_Size() int {
+	return xxx_messageInfo_Communique_SomeGroup.Size(m)
+}
+func (m *Communique_SomeGroup) XXX_DiscardUnknown() {
+	xxx_messageInfo_Communique_SomeGroup.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Communique_SomeGroup proto.InternalMessageInfo
+
+func (m *Communique_SomeGroup) GetMember() string {
+	if m != nil && m.Member != nil {
+		return *m.Member
+	}
+	return ""
+}
+
+type Communique_Delta struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Communique_Delta) Reset()         { *m = Communique_Delta{} }
+func (m *Communique_Delta) String() string { return proto.CompactTextString(m) }
+func (*Communique_Delta) ProtoMessage()    {}
+func (*Communique_Delta) Descriptor() ([]byte, []int) {
+	return fileDescriptor_2c9b60a40d5131b9, []int{6, 1}
+}
+
+func (m *Communique_Delta) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Communique_Delta.Unmarshal(m, b)
+}
+func (m *Communique_Delta) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Communique_Delta.Marshal(b, m, deterministic)
+}
+func (m *Communique_Delta) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Communique_Delta.Merge(m, src)
+}
+func (m *Communique_Delta) XXX_Size() int {
+	return xxx_messageInfo_Communique_Delta.Size(m)
+}
+func (m *Communique_Delta) XXX_DiscardUnknown() {
+	xxx_messageInfo_Communique_Delta.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Communique_Delta proto.InternalMessageInfo
+
+var E_Tag = &proto.ExtensionDesc{
+	ExtendedType:  (*Reply)(nil),
+	ExtensionType: (*string)(nil),
+	Field:         103,
+	Name:          "my.test.tag",
+	Tag:           "bytes,103,opt,name=tag",
+	Filename:      "my_test/test.proto",
+}
+
+var E_Donut = &proto.ExtensionDesc{
+	ExtendedType:  (*Reply)(nil),
+	ExtensionType: (*OtherReplyExtensions)(nil),
+	Field:         106,
+	Name:          "my.test.donut",
+	Tag:           "bytes,106,opt,name=donut",
+	Filename:      "my_test/test.proto",
+}
+
+func init() {
+	proto.RegisterEnum("my.test.HatType", HatType_name, HatType_value)
+	proto.RegisterEnum("my.test.Days", Days_name, Days_value)
+	proto.RegisterEnum("my.test.Request_Color", Request_Color_name, Request_Color_value)
+	proto.RegisterEnum("my.test.Reply_Entry_Game", Reply_Entry_Game_name, Reply_Entry_Game_value)
+	proto.RegisterType((*Request)(nil), "my.test.Request")
+	proto.RegisterMapType((map[int64]*Reply)(nil), "my.test.Request.MsgMappingEntry")
+	proto.RegisterMapType((map[int32]string)(nil), "my.test.Request.NameMappingEntry")
+	proto.RegisterType((*Request_SomeGroup)(nil), "my.test.Request.SomeGroup")
+	proto.RegisterType((*Reply)(nil), "my.test.Reply")
+	proto.RegisterType((*Reply_Entry)(nil), "my.test.Reply.Entry")
+	proto.RegisterType((*OtherBase)(nil), "my.test.OtherBase")
+	proto.RegisterExtension(E_ReplyExtensions_Time)
+	proto.RegisterExtension(E_ReplyExtensions_Carrot)
+	proto.RegisterExtension(E_ReplyExtensions_Donut)
+	proto.RegisterType((*ReplyExtensions)(nil), "my.test.ReplyExtensions")
+	proto.RegisterType((*OtherReplyExtensions)(nil), "my.test.OtherReplyExtensions")
+	proto.RegisterType((*OldReply)(nil), "my.test.OldReply")
+	proto.RegisterType((*Communique)(nil), "my.test.Communique")
+	proto.RegisterType((*Communique_SomeGroup)(nil), "my.test.Communique.SomeGroup")
+	proto.RegisterType((*Communique_Delta)(nil), "my.test.Communique.Delta")
+	proto.RegisterExtension(E_Tag)
+	proto.RegisterExtension(E_Donut)
+}
+
+func init() {
+	proto.RegisterFile("my_test/test.proto", fileDescriptor_2c9b60a40d5131b9)
+}
+
+var fileDescriptor_2c9b60a40d5131b9 = []byte{
+	// 1148 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x56, 0xcf, 0x6e, 0xdb, 0x46,
+	0x13, 0x37, 0x49, 0x51, 0x7f, 0x46, 0xfe, 0x6c, 0x7e, 0x0b, 0xd7, 0x66, 0x55, 0x24, 0x61, 0x95,
+	0xb8, 0x50, 0xdc, 0x46, 0x8e, 0xd5, 0x02, 0x4d, 0x55, 0x34, 0x88, 0x65, 0xc9, 0x71, 0x10, 0x5b,
+	0x2e, 0x36, 0xce, 0xa1, 0xb9, 0x10, 0x6b, 0x69, 0x45, 0xb1, 0xd6, 0x92, 0x8c, 0xb8, 0x2c, 0xcc,
+	0x9b, 0x9f, 0xa2, 0x7d, 0x8d, 0xde, 0xfb, 0x0c, 0x7d, 0x26, 0x17, 0x3b, 0xab, 0x48, 0xb2, 0x55,
+	0x94, 0x07, 0x82, 0x33, 0xf3, 0x9b, 0xdf, 0xec, 0xce, 0xcc, 0xce, 0x12, 0x88, 0xc8, 0x7d, 0xc9,
+	0x53, 0xb9, 0xaf, 0x5e, 0xcd, 0x64, 0x1a, 0xcb, 0x98, 0x94, 0x44, 0xde, 0x54, 0x62, 0x8d, 0x88,
+	0x6c, 0x22, 0xc3, 0x7d, 0x7c, 0x1f, 0x68, 0x63, 0xfd, 0xef, 0x22, 0x94, 0x28, 0xff, 0x98, 0xf1,
+	0x54, 0x12, 0x07, 0xac, 0x2b, 0x9e, 0xbb, 0x86, 0x67, 0x35, 0x2c, 0xaa, 0x3e, 0x49, 0x03, 0xac,
+	0x71, 0xc6, 0x5d, 0xcb, 0x33, 0x1a, 0x1b, 0xad, 0xed, 0xe6, 0x8c, 0xa8, 0x39, 0x73, 0x68, 0x1e,
+	0xc5, 0x93, 0x78, 0x4a, 0x15, 0x84, 0xec, 0x81, 0x35, 0x66, 0xd2, 0x2d, 0x20, 0xd2, 0x99, 0x23,
+	0x4f, 0x98, 0xbc, 0xc8, 0x13, 0xde, 0x2e, 0x1e, 0xf7, 0xba, 0xe7, 0xf4, 0x90, 0x2a, 0x10, 0x79,
+	0x04, 0xe5, 0x21, 0x67, 0xc3, 0x49, 0x18, 0x71, 0xb7, 0xe4, 0x19, 0x0d, 0xb3, 0x6d, 0x85, 0xd1,
+	0x88, 0xce, 0x95, 0xe4, 0x05, 0x54, 0xd2, 0x58, 0xf0, 0x60, 0x1a, 0x67, 0x89, 0x5b, 0xf6, 0x8c,
+	0x06, 0xb4, 0x6a, 0x2b, 0xc1, 0xdf, 0xc5, 0x82, 0xbf, 0x56, 0x08, 0xba, 0x00, 0x93, 0x2e, 0xac,
+	0x47, 0x4c, 0x70, 0x5f, 0xb0, 0x24, 0x09, 0xa3, 0xc0, 0xdd, 0xf0, 0xac, 0x46, 0xb5, 0xf5, 0xe5,
+	0x8a, 0x73, 0x9f, 0x09, 0x7e, 0xa6, 0x31, 0xbd, 0x48, 0x4e, 0x73, 0x5a, 0x8d, 0x16, 0x1a, 0x72,
+	0x08, 0x55, 0x91, 0x06, 0x73, 0x92, 0x4d, 0x24, 0xf1, 0x56, 0x48, 0xce, 0xd2, 0xe0, 0x0e, 0x07,
+	0x88, 0xb9, 0x82, 0x6c, 0x81, 0x3d, 0xe5, 0x29, 0x97, 0xee, 0xba, 0x67, 0x34, 0x6c, 0xaa, 0x05,
+	0xb2, 0x03, 0xa5, 0x80, 0x4b, 0x5f, 0x65, 0xd9, 0xf1, 0x8c, 0x46, 0x85, 0x16, 0x03, 0x2e, 0xdf,
+	0xf2, 0x9c, 0x3c, 0x06, 0x18, 0x4d, 0x62, 0x26, 0xfd, 0x28, 0x8c, 0x46, 0xee, 0x16, 0x26, 0xa5,
+	0xf0, 0x4c, 0x65, 0xa5, 0x82, 0xfa, 0x7e, 0x18, 0x8d, 0x48, 0xfd, 0x13, 0x28, 0x51, 0xa0, 0xcf,
+	0x16, 0x99, 0xd3, 0x98, 0x9f, 0x35, 0x46, 0x0b, 0x3e, 0xbf, 0x4e, 0xdc, 0x6d, 0x84, 0xd8, 0x07,
+	0xfc, 0xeb, 0xe7, 0x3f, 0xd0, 0x32, 0xea, 0x7b, 0xd7, 0x09, 0xd9, 0x85, 0xea, 0x30, 0xce, 0x2e,
+	0x27, 0x5c, 0x47, 0xdb, 0xf1, 0x8c, 0x86, 0x31, 0x8b, 0x06, 0xda, 0x80, 0xe1, 0x9e, 0xcc, 0x61,
+	0x18, 0xcf, 0x45, 0x98, 0xb5, 0x84, 0xc2, 0x80, 0x4f, 0x61, 0x26, 0x61, 0xc4, 0xcf, 0x11, 0x04,
+	0x07, 0xcf, 0x3f, 0x3d, 0xb4, 0xa2, 0xad, 0xbd, 0xeb, 0xa4, 0xf6, 0x0d, 0x54, 0xe6, 0x45, 0x23,
+	0x8f, 0xa0, 0x8a, 0x25, 0xf3, 0x47, 0x21, 0x9f, 0x0c, 0xdd, 0x0a, 0xa6, 0x09, 0x50, 0x75, 0xac,
+	0x34, 0xb5, 0x97, 0xe0, 0xdc, 0xaf, 0xd2, 0xa2, 0x43, 0x15, 0x18, 0x3b, 0x74, 0x0b, 0xec, 0xdf,
+	0xd8, 0x24, 0xe3, 0xae, 0x89, 0xf9, 0xd4, 0x42, 0xdb, 0x7c, 0x61, 0xd4, 0xce, 0x60, 0xf3, 0x5e,
+	0x81, 0x96, 0xdd, 0x89, 0x76, 0x7f, 0xb2, 0xec, 0x5e, 0x6d, 0x6d, 0x2c, 0xd5, 0x38, 0x99, 0xe4,
+	0x4b, 0x74, 0xf5, 0x5d, 0xb0, 0xb1, 0xdd, 0x49, 0x09, 0x2c, 0xda, 0xeb, 0x3a, 0x6b, 0xa4, 0x02,
+	0xf6, 0x6b, 0xda, 0xeb, 0xf5, 0x1d, 0x83, 0x94, 0xa1, 0xd0, 0x39, 0x7d, 0xdf, 0x73, 0xcc, 0xfa,
+	0x1f, 0x26, 0xd8, 0xe8, 0x4b, 0xf6, 0xc0, 0x1e, 0xc5, 0x59, 0x34, 0xc4, 0xf3, 0x54, 0x6d, 0x6d,
+	0xdd, 0xa5, 0x6e, 0xea, 0x96, 0xd1, 0x10, 0xb2, 0x0b, 0xeb, 0x83, 0x58, 0x24, 0x6c, 0x80, 0xbd,
+	0x91, 0xba, 0xa6, 0x67, 0x35, 0xec, 0x8e, 0xe9, 0x18, 0xb4, 0x3a, 0xd3, 0xbf, 0xe5, 0x79, 0x5a,
+	0xfb, 0xd3, 0x00, 0x5b, 0xef, 0xa4, 0x0b, 0x8f, 0xae, 0x78, 0xee, 0xcb, 0xb1, 0x6a, 0x19, 0xce,
+	0x87, 0xa9, 0x7f, 0xd0, 0xfa, 0xf6, 0xbb, 0x01, 0x13, 0x7c, 0xe2, 0x1f, 0xb1, 0xf4, 0x4d, 0x14,
+	0xb8, 0x86, 0x67, 0x36, 0x2c, 0xfa, 0xc5, 0x15, 0xcf, 0x2f, 0xc6, 0x4c, 0xf6, 0x15, 0x68, 0x8e,
+	0xd1, 0x10, 0xb2, 0xb3, 0xbc, 0x7b, 0xab, 0x6d, 0x7c, 0x3f, 0xdb, 0x30, 0xf9, 0x0a, 0x1c, 0x5f,
+	0xe4, 0xba, 0x34, 0x3e, 0x1e, 0xa8, 0x16, 0x0e, 0x01, 0x8b, 0xae, 0x9f, 0xe5, 0x58, 0x1e, 0x55,
+	0x9a, 0x56, 0xdd, 0x83, 0xc2, 0x6b, 0x26, 0x38, 0x59, 0x87, 0xf2, 0xf1, 0xf9, 0xf9, 0x45, 0xe7,
+	0xf0, 0xf4, 0xd4, 0x31, 0x08, 0x40, 0xf1, 0xa2, 0xd7, 0xef, 0xbf, 0x79, 0xe7, 0x98, 0x7b, 0xe5,
+	0xf2, 0xd0, 0xb9, 0xb9, 0xb9, 0xb9, 0x31, 0xeb, 0x4f, 0xa1, 0x72, 0x2e, 0xc7, 0x7c, 0xda, 0x61,
+	0x29, 0x27, 0x04, 0x0a, 0x8a, 0x16, 0x4b, 0x51, 0xa1, 0xf8, 0xbd, 0x04, 0xfd, 0xcb, 0x80, 0x4d,
+	0xcc, 0x52, 0xef, 0x5a, 0xf2, 0x28, 0x0d, 0xe3, 0x28, 0x6d, 0xd5, 0xa1, 0x20, 0x43, 0xc1, 0xc9,
+	0xbd, 0x12, 0xb9, 0x5c, 0x75, 0x1c, 0x45, 0x5b, 0xeb, 0x15, 0x14, 0x07, 0x6c, 0x3a, 0x8d, 0xe5,
+	0x0a, 0x2a, 0xc4, 0xf2, 0xba, 0x77, 0xb5, 0x0b, 0x76, 0x3a, 0xf3, 0x6b, 0x75, 0xc0, 0x1e, 0xc6,
+	0x51, 0x26, 0x09, 0x99, 0x43, 0xe7, 0x8b, 0xc6, 0x50, 0xff, 0x45, 0xa2, 0x5d, 0xeb, 0x0d, 0xd8,
+	0x42, 0x9f, 0x7b, 0xe6, 0xd5, 0xe6, 0xad, 0xbb, 0x50, 0x3e, 0x9f, 0x0c, 0x11, 0x87, 0xbb, 0xbf,
+	0xbd, 0xbd, 0xbd, 0x2d, 0xb5, 0xcd, 0xb2, 0x51, 0xff, 0xdd, 0x02, 0x38, 0x8a, 0x85, 0xc8, 0xa2,
+	0xf0, 0x63, 0xc6, 0xc9, 0x43, 0xa8, 0x0a, 0x76, 0xc5, 0x7d, 0xc1, 0xfd, 0xc1, 0x54, 0x53, 0x94,
+	0x69, 0x45, 0xa9, 0xce, 0xf8, 0xd1, 0x34, 0x27, 0x2e, 0x14, 0xa3, 0x4c, 0x5c, 0xf2, 0xa9, 0x6b,
+	0x2b, 0xf6, 0x93, 0x35, 0x3a, 0x93, 0xc9, 0xd6, 0x2c, 0xd1, 0x45, 0x95, 0xe8, 0x93, 0x35, 0x9d,
+	0x6a, 0xa5, 0x1d, 0x32, 0xc9, 0x70, 0xfa, 0xae, 0x2b, 0xad, 0x92, 0xc8, 0x0e, 0x14, 0x25, 0x17,
+	0x89, 0x3f, 0xc0, 0x99, 0x6b, 0x9c, 0xac, 0x51, 0x5b, 0xc9, 0x47, 0x8a, 0x7e, 0xcc, 0xc3, 0x60,
+	0x2c, 0xf1, 0x98, 0x9a, 0x8a, 0x5e, 0xcb, 0x64, 0x17, 0x6c, 0x19, 0x0f, 0x59, 0xee, 0x02, 0x0e,
+	0xfe, 0xff, 0xcd, 0x73, 0xd3, 0x65, 0x79, 0x8a, 0x04, 0xca, 0x4a, 0xb6, 0xc1, 0x16, 0x2c, 0xbf,
+	0xe4, 0x6e, 0x55, 0xad, 0x5c, 0xe9, 0x51, 0x54, 0xfa, 0x21, 0x9f, 0x48, 0x86, 0x53, 0xf2, 0xff,
+	0x4a, 0x8f, 0x22, 0xa9, 0x83, 0x25, 0xd2, 0x00, 0x67, 0xe4, 0xca, 0xa1, 0x3c, 0x59, 0xa3, 0xca,
+	0x48, 0x7e, 0x5a, 0xbe, 0x24, 0x36, 0xf0, 0x92, 0x78, 0x30, 0x47, 0x2e, 0x72, 0xb7, 0xb8, 0x27,
+	0x4e, 0xd6, 0x96, 0x6e, 0x8a, 0xda, 0xe3, 0xe5, 0x61, 0xb4, 0x0d, 0x45, 0xc1, 0x31, 0x7f, 0x9b,
+	0x7a, 0x2c, 0x6b, 0xa9, 0x56, 0x02, 0xbb, 0xab, 0x16, 0xd4, 0x29, 0x81, 0x9d, 0x45, 0x61, 0x1c,
+	0xed, 0x3d, 0x84, 0xd2, 0xec, 0x4e, 0x53, 0x6d, 0xae, 0x6f, 0x35, 0xc7, 0x50, 0x43, 0xe1, 0xb8,
+	0xf7, 0xc1, 0x31, 0xf7, 0x9a, 0x50, 0x50, 0x5b, 0x57, 0xc6, 0xb3, 0xf3, 0x7e, 0xf7, 0xf0, 0x17,
+	0xc7, 0x20, 0x55, 0x28, 0x5d, 0xbc, 0xef, 0xbd, 0x53, 0x82, 0xa9, 0xa6, 0xc6, 0xe9, 0xfb, 0x7e,
+	0xf7, 0x8d, 0x63, 0xd4, 0x4c, 0xc7, 0x68, 0x7b, 0x60, 0x49, 0x16, 0xac, 0xf4, 0x6b, 0x80, 0xcb,
+	0x50, 0xa6, 0xf6, 0xd1, 0xa7, 0x96, 0xbc, 0x8f, 0xf9, 0x15, 0xb3, 0xf3, 0xe0, 0x6e, 0xa3, 0xfe,
+	0x7b, 0x4f, 0x76, 0x5e, 0x7d, 0x78, 0x19, 0x84, 0x72, 0x9c, 0x5d, 0x36, 0x07, 0xb1, 0xd8, 0x0f,
+	0xe2, 0x09, 0x8b, 0x82, 0x7d, 0xfc, 0x03, 0xb8, 0xcc, 0x46, 0xfa, 0x63, 0xf0, 0x2c, 0xe0, 0xd1,
+	0xb3, 0x20, 0xc6, 0x5f, 0x07, 0xd5, 0x0f, 0xfb, 0xb3, 0x7f, 0x89, 0x1f, 0xd5, 0xeb, 0x9f, 0x00,
+	0x00, 0x00, 0xff, 0xff, 0x31, 0xff, 0x4e, 0x30, 0x5a, 0x08, 0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/my_test/test.proto b/protoc-gen-go/testdata/my_test/test.proto
new file mode 100644
index 0000000..64fcdca
--- /dev/null
+++ b/protoc-gen-go/testdata/my_test/test.proto
@@ -0,0 +1,165 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2010 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto2";
+
+// This package holds interesting messages.
+package my.test;  // dotted package name
+
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/my_test;test";
+
+//import "imp.proto";
+import "multi/multi1.proto";  // unused import
+
+enum HatType {
+  // deliberately skipping 0
+  FEDORA = 1;
+  FEZ = 2;
+}
+
+// This enum represents days of the week.
+enum Days {
+  option allow_alias = true;
+
+  MONDAY = 1;
+  TUESDAY = 2;
+  LUNDI = 1;  // same value as MONDAY
+}
+
+// This is a message that might be sent somewhere.
+message Request {
+  enum Color {
+    RED = 0;
+    GREEN = 1;
+    BLUE = 2;
+  }
+  repeated int64 key = 1;
+//  optional imp.ImportedMessage imported_message = 2;
+  optional Color hue = 3; // no default
+  optional HatType hat = 4 [default=FEDORA];
+//  optional imp.ImportedMessage.Owner owner = 6;
+  optional float deadline = 7 [default=inf];
+  optional group SomeGroup = 8 {
+    optional int32 group_field = 9;
+  }
+
+  // These foreign types are in imp2.proto,
+  // which is publicly imported by imp.proto.
+//  optional imp.PubliclyImportedMessage pub = 10;
+//  optional imp.PubliclyImportedEnum pub_enum = 13 [default=HAIR];
+
+
+  // This is a map field. It will generate map[int32]string.
+  map<int32, string> name_mapping = 14;
+  // This is a map field whose value type is a message.
+  map<sint64, Reply> msg_mapping = 15;
+
+  optional int32 reset = 12;
+  // This field should not conflict with any getters.
+  optional string get_key = 16;
+
+  optional float float_ninf = 20 [default=-inf];
+  optional float float_pinf = 21 [default=inf];
+  optional float float_exp = 22 [default=1e9];
+  optional double double_ninf = 23 [default=-inf];
+  optional double double_pinf = 24 [default=inf];
+  optional double double_exp = 25 [default=1e9];
+}
+
+message Reply {
+  message Entry {
+    required int64 key_that_needs_1234camel_CasIng = 1;
+    optional int64 value = 2 [default=7];
+    optional int64 _my_field_name_2 = 3;
+    enum Game {
+      FOOTBALL = 1;
+      TENNIS = 2;
+    }
+  }
+  repeated Entry found = 1;
+  repeated int32 compact_keys = 2 [packed=true];
+  extensions 100 to max;
+}
+
+message OtherBase {
+  optional string name = 1;
+  extensions 100 to max;
+}
+
+message ReplyExtensions {
+  extend Reply {
+    optional double time = 101;
+    optional ReplyExtensions carrot = 105;
+  }
+  extend OtherBase {
+    optional ReplyExtensions donut = 101;
+  }
+}
+
+message OtherReplyExtensions {
+  optional int32 key = 1;
+}
+
+// top-level extension
+extend Reply {
+  optional string tag = 103;
+  optional OtherReplyExtensions donut = 106;
+//  optional imp.ImportedMessage elephant = 107;  // extend with message from another file.
+}
+
+message OldReply {
+  // Extensions will be encoded in MessageSet wire format.
+  option message_set_wire_format = true;
+  extensions 100 to max;
+}
+
+message Communique {
+  optional bool make_me_cry = 1;
+
+  // This is a oneof, called "union".
+  oneof union {
+    int32 number = 5;
+    string name = 6;
+    bytes data = 7;
+    double temp_c = 8;
+    float height = 9;
+    Days today = 10;
+    bool maybe = 11;
+    sint32 delta = 12;  // name will conflict with Delta below
+    Reply msg = 16;  // requires two bytes to encode field tag
+    group SomeGroup = 14 {
+      optional string member = 15;
+    }
+  }
+
+  message Delta {}
+}
+
diff --git a/protoc-gen-go/testdata/proto3/proto3.pb.go b/protoc-gen-go/testdata/proto3/proto3.pb.go
new file mode 100644
index 0000000..6539838
--- /dev/null
+++ b/protoc-gen-go/testdata/proto3/proto3.pb.go
@@ -0,0 +1,204 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: proto3/proto3.proto
+
+package proto3
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+type Request_Flavour int32
+
+const (
+	Request_SWEET         Request_Flavour = 0
+	Request_SOUR          Request_Flavour = 1
+	Request_UMAMI         Request_Flavour = 2
+	Request_GOPHERLICIOUS Request_Flavour = 3
+)
+
+var Request_Flavour_name = map[int32]string{
+	0: "SWEET",
+	1: "SOUR",
+	2: "UMAMI",
+	3: "GOPHERLICIOUS",
+}
+
+var Request_Flavour_value = map[string]int32{
+	"SWEET":         0,
+	"SOUR":          1,
+	"UMAMI":         2,
+	"GOPHERLICIOUS": 3,
+}
+
+func (x Request_Flavour) String() string {
+	return proto.EnumName(Request_Flavour_name, int32(x))
+}
+
+func (Request_Flavour) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_ab04eb4084a521db, []int{0, 0}
+}
+
+type Request struct {
+	Name                 string          `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	Key                  []int64         `protobuf:"varint,2,rep,packed,name=key,proto3" json:"key,omitempty"`
+	Taste                Request_Flavour `protobuf:"varint,3,opt,name=taste,proto3,enum=proto3.Request_Flavour" json:"taste,omitempty"`
+	Book                 *Book           `protobuf:"bytes,4,opt,name=book,proto3" json:"book,omitempty"`
+	Unpacked             []int64         `protobuf:"varint,5,rep,name=unpacked,proto3" json:"unpacked,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
+	XXX_unrecognized     []byte          `json:"-"`
+	XXX_sizecache        int32           `json:"-"`
+}
+
+func (m *Request) Reset()         { *m = Request{} }
+func (m *Request) String() string { return proto.CompactTextString(m) }
+func (*Request) ProtoMessage()    {}
+func (*Request) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ab04eb4084a521db, []int{0}
+}
+
+func (m *Request) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Request.Unmarshal(m, b)
+}
+func (m *Request) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Request.Marshal(b, m, deterministic)
+}
+func (m *Request) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Request.Merge(m, src)
+}
+func (m *Request) XXX_Size() int {
+	return xxx_messageInfo_Request.Size(m)
+}
+func (m *Request) XXX_DiscardUnknown() {
+	xxx_messageInfo_Request.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Request proto.InternalMessageInfo
+
+func (m *Request) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *Request) GetKey() []int64 {
+	if m != nil {
+		return m.Key
+	}
+	return nil
+}
+
+func (m *Request) GetTaste() Request_Flavour {
+	if m != nil {
+		return m.Taste
+	}
+	return Request_SWEET
+}
+
+func (m *Request) GetBook() *Book {
+	if m != nil {
+		return m.Book
+	}
+	return nil
+}
+
+func (m *Request) GetUnpacked() []int64 {
+	if m != nil {
+		return m.Unpacked
+	}
+	return nil
+}
+
+type Book struct {
+	Title                string   `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"`
+	RawData              []byte   `protobuf:"bytes,2,opt,name=raw_data,json=rawData,proto3" json:"raw_data,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Book) Reset()         { *m = Book{} }
+func (m *Book) String() string { return proto.CompactTextString(m) }
+func (*Book) ProtoMessage()    {}
+func (*Book) Descriptor() ([]byte, []int) {
+	return fileDescriptor_ab04eb4084a521db, []int{1}
+}
+
+func (m *Book) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Book.Unmarshal(m, b)
+}
+func (m *Book) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Book.Marshal(b, m, deterministic)
+}
+func (m *Book) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Book.Merge(m, src)
+}
+func (m *Book) XXX_Size() int {
+	return xxx_messageInfo_Book.Size(m)
+}
+func (m *Book) XXX_DiscardUnknown() {
+	xxx_messageInfo_Book.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Book proto.InternalMessageInfo
+
+func (m *Book) GetTitle() string {
+	if m != nil {
+		return m.Title
+	}
+	return ""
+}
+
+func (m *Book) GetRawData() []byte {
+	if m != nil {
+		return m.RawData
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterEnum("proto3.Request_Flavour", Request_Flavour_name, Request_Flavour_value)
+	proto.RegisterType((*Request)(nil), "proto3.Request")
+	proto.RegisterType((*Book)(nil), "proto3.Book")
+}
+
+func init() {
+	proto.RegisterFile("proto3/proto3.proto", fileDescriptor_ab04eb4084a521db)
+}
+
+var fileDescriptor_ab04eb4084a521db = []byte{
+	// 306 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x3c, 0x90, 0xcf, 0x4e, 0xf2, 0x40,
+	0x14, 0xc5, 0x99, 0xfe, 0xf9, 0x80, 0xfb, 0xa1, 0x19, 0xaf, 0x26, 0x8e, 0x1b, 0x33, 0x61, 0xd5,
+	0x0d, 0x25, 0xc1, 0x85, 0xc6, 0xb8, 0x11, 0x45, 0x25, 0x91, 0x60, 0x06, 0x89, 0x89, 0x1b, 0x33,
+	0x85, 0xb1, 0x92, 0x42, 0x07, 0xcb, 0x54, 0xe2, 0xcb, 0xfa, 0x2c, 0xa6, 0x9d, 0xe2, 0xea, 0x9e,
+	0x7b, 0xe7, 0xe4, 0x77, 0x32, 0x07, 0x0e, 0xd7, 0x99, 0x36, 0xfa, 0xac, 0x6b, 0x47, 0x58, 0x0e,
+	0xfc, 0x67, 0xb7, 0xf6, 0x0f, 0x81, 0xba, 0x50, 0x9f, 0xb9, 0xda, 0x18, 0x44, 0xf0, 0x52, 0xb9,
+	0x52, 0x8c, 0x70, 0x12, 0x34, 0x45, 0xa9, 0x91, 0x82, 0x9b, 0xa8, 0x6f, 0xe6, 0x70, 0x37, 0x70,
+	0x45, 0x21, 0xb1, 0x03, 0xbe, 0x91, 0x1b, 0xa3, 0x98, 0xcb, 0x49, 0xb0, 0xdf, 0x3b, 0x0e, 0x2b,
+	0x6e, 0x45, 0x09, 0xef, 0x96, 0xf2, 0x4b, 0xe7, 0x99, 0xb0, 0x2e, 0xe4, 0xe0, 0x45, 0x5a, 0x27,
+	0xcc, 0xe3, 0x24, 0xf8, 0xdf, 0x6b, 0xed, 0xdc, 0x7d, 0xad, 0x13, 0x51, 0xbe, 0xe0, 0x29, 0x34,
+	0xf2, 0x74, 0x2d, 0x67, 0x89, 0x9a, 0x33, 0xbf, 0xc8, 0xe9, 0x3b, 0xb4, 0x26, 0xfe, 0x6e, 0xed,
+	0x2b, 0xa8, 0x57, 0x4c, 0x6c, 0x82, 0x3f, 0x79, 0x19, 0x0c, 0x9e, 0x69, 0x0d, 0x1b, 0xe0, 0x4d,
+	0xc6, 0x53, 0x41, 0x49, 0x71, 0x9c, 0x8e, 0xae, 0x47, 0x43, 0xea, 0xe0, 0x01, 0xec, 0xdd, 0x8f,
+	0x9f, 0x1e, 0x06, 0xe2, 0x71, 0x78, 0x33, 0x1c, 0x4f, 0x27, 0xd4, 0x6d, 0x9f, 0x83, 0x57, 0x64,
+	0xe1, 0x11, 0xf8, 0x66, 0x61, 0x96, 0xbb, 0xdf, 0xd9, 0x05, 0x4f, 0xa0, 0x91, 0xc9, 0xed, 0xdb,
+	0x5c, 0x1a, 0xc9, 0x1c, 0x4e, 0x82, 0x96, 0xa8, 0x67, 0x72, 0x7b, 0x2b, 0x8d, 0xec, 0x5f, 0xbe,
+	0x5e, 0xc4, 0x0b, 0xf3, 0x91, 0x47, 0xe1, 0x4c, 0xaf, 0xba, 0xb1, 0x5e, 0xca, 0x34, 0xb6, 0x1d,
+	0x46, 0xf9, 0xbb, 0x15, 0xb3, 0x4e, 0xac, 0xd2, 0x4e, 0xac, 0xbb, 0x46, 0x6d, 0x4c, 0xc1, 0xa8,
+	0x3a, 0x8e, 0xaa, 0x76, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xec, 0x71, 0xee, 0xdb, 0x7b, 0x01,
+	0x00, 0x00,
+}
diff --git a/protoc-gen-go/testdata/proto3/proto3.proto b/protoc-gen-go/testdata/proto3/proto3.proto
new file mode 100644
index 0000000..79954e4
--- /dev/null
+++ b/protoc-gen-go/testdata/proto3/proto3.proto
@@ -0,0 +1,55 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2014 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+package proto3;
+
+option go_package = "github.com/golang/protobuf/protoc-gen-go/testdata/proto3";
+
+message Request {
+  enum Flavour {
+    SWEET = 0;
+    SOUR = 1;
+    UMAMI = 2;
+    GOPHERLICIOUS = 3;
+  }
+  string name = 1;
+  repeated int64 key = 2;
+  Flavour taste = 3;
+  Book book = 4;
+  repeated int64 unpacked = 5 [packed=false];
+}
+
+message Book {
+  string title = 1;
+  bytes raw_data = 2;
+}
diff --git a/ptypes/any.go b/ptypes/any.go
new file mode 100644
index 0000000..70276e8
--- /dev/null
+++ b/ptypes/any.go
@@ -0,0 +1,141 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2016 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package ptypes
+
+// This file implements functions to marshal proto.Message to/from
+// google.protobuf.Any message.
+
+import (
+	"fmt"
+	"reflect"
+	"strings"
+
+	"github.com/golang/protobuf/proto"
+	"github.com/golang/protobuf/ptypes/any"
+)
+
+const googleApis = "type.googleapis.com/"
+
+// AnyMessageName returns the name of the message contained in a google.protobuf.Any message.
+//
+// Note that regular type assertions should be done using the Is
+// function. AnyMessageName is provided for less common use cases like filtering a
+// sequence of Any messages based on a set of allowed message type names.
+func AnyMessageName(any *any.Any) (string, error) {
+	if any == nil {
+		return "", fmt.Errorf("message is nil")
+	}
+	slash := strings.LastIndex(any.TypeUrl, "/")
+	if slash < 0 {
+		return "", fmt.Errorf("message type url %q is invalid", any.TypeUrl)
+	}
+	return any.TypeUrl[slash+1:], nil
+}
+
+// MarshalAny takes the protocol buffer and encodes it into google.protobuf.Any.
+func MarshalAny(pb proto.Message) (*any.Any, error) {
+	value, err := proto.Marshal(pb)
+	if err != nil {
+		return nil, err
+	}
+	return &any.Any{TypeUrl: googleApis + proto.MessageName(pb), Value: value}, nil
+}
+
+// DynamicAny is a value that can be passed to UnmarshalAny to automatically
+// allocate a proto.Message for the type specified in a google.protobuf.Any
+// message. The allocated message is stored in the embedded proto.Message.
+//
+// Example:
+//
+//   var x ptypes.DynamicAny
+//   if err := ptypes.UnmarshalAny(a, &x); err != nil { ... }
+//   fmt.Printf("unmarshaled message: %v", x.Message)
+type DynamicAny struct {
+	proto.Message
+}
+
+// Empty returns a new proto.Message of the type specified in a
+// google.protobuf.Any message. It returns an error if corresponding message
+// type isn't linked in.
+func Empty(any *any.Any) (proto.Message, error) {
+	aname, err := AnyMessageName(any)
+	if err != nil {
+		return nil, err
+	}
+
+	t := proto.MessageType(aname)
+	if t == nil {
+		return nil, fmt.Errorf("any: message type %q isn't linked in", aname)
+	}
+	return reflect.New(t.Elem()).Interface().(proto.Message), nil
+}
+
+// UnmarshalAny parses the protocol buffer representation in a google.protobuf.Any
+// message and places the decoded result in pb. It returns an error if type of
+// contents of Any message does not match type of pb message.
+//
+// pb can be a proto.Message, or a *DynamicAny.
+func UnmarshalAny(any *any.Any, pb proto.Message) error {
+	if d, ok := pb.(*DynamicAny); ok {
+		if d.Message == nil {
+			var err error
+			d.Message, err = Empty(any)
+			if err != nil {
+				return err
+			}
+		}
+		return UnmarshalAny(any, d.Message)
+	}
+
+	aname, err := AnyMessageName(any)
+	if err != nil {
+		return err
+	}
+
+	mname := proto.MessageName(pb)
+	if aname != mname {
+		return fmt.Errorf("mismatched message type: got %q want %q", aname, mname)
+	}
+	return proto.Unmarshal(any.Value, pb)
+}
+
+// Is returns true if any value contains a given message type.
+func Is(any *any.Any, pb proto.Message) bool {
+	// The following is equivalent to AnyMessageName(any) == proto.MessageName(pb),
+	// but it avoids scanning TypeUrl for the slash.
+	if any == nil {
+		return false
+	}
+	name := proto.MessageName(pb)
+	prefix := len(any.TypeUrl) - len(name)
+	return prefix >= 1 && any.TypeUrl[prefix-1] == '/' && any.TypeUrl[prefix:] == name
+}
diff --git a/ptypes/any/any.pb.go b/ptypes/any/any.pb.go
new file mode 100644
index 0000000..7b0ad1a
--- /dev/null
+++ b/ptypes/any/any.pb.go
@@ -0,0 +1,203 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/protobuf/any.proto
+
+package any
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+// `Any` contains an arbitrary serialized protocol buffer message along with a
+// URL that describes the type of the serialized message.
+//
+// Protobuf library provides support to pack/unpack Any values in the form
+// of utility functions or additional generated methods of the Any type.
+//
+// Example 1: Pack and unpack a message in C++.
+//
+//     Foo foo = ...;
+//     Any any;
+//     any.PackFrom(foo);
+//     ...
+//     if (any.UnpackTo(&foo)) {
+//       ...
+//     }
+//
+// Example 2: Pack and unpack a message in Java.
+//
+//     Foo foo = ...;
+//     Any any = Any.pack(foo);
+//     ...
+//     if (any.is(Foo.class)) {
+//       foo = any.unpack(Foo.class);
+//     }
+//
+//  Example 3: Pack and unpack a message in Python.
+//
+//     foo = Foo(...)
+//     any = Any()
+//     any.Pack(foo)
+//     ...
+//     if any.Is(Foo.DESCRIPTOR):
+//       any.Unpack(foo)
+//       ...
+//
+//  Example 4: Pack and unpack a message in Go
+//
+//      foo := &pb.Foo{...}
+//      any, err := ptypes.MarshalAny(foo)
+//      ...
+//      foo := &pb.Foo{}
+//      if err := ptypes.UnmarshalAny(any, foo); err != nil {
+//        ...
+//      }
+//
+// The pack methods provided by protobuf library will by default use
+// 'type.googleapis.com/full.type.name' as the type URL and the unpack
+// methods only use the fully qualified type name after the last '/'
+// in the type URL, for example "foo.bar.com/x/y.z" will yield type
+// name "y.z".
+//
+//
+// JSON
+// ====
+// The JSON representation of an `Any` value uses the regular
+// representation of the deserialized, embedded message, with an
+// additional field `@type` which contains the type URL. Example:
+//
+//     package google.profile;
+//     message Person {
+//       string first_name = 1;
+//       string last_name = 2;
+//     }
+//
+//     {
+//       "@type": "type.googleapis.com/google.profile.Person",
+//       "firstName": <string>,
+//       "lastName": <string>
+//     }
+//
+// If the embedded message type is well-known and has a custom JSON
+// representation, that representation will be embedded adding a field
+// `value` which holds the custom JSON in addition to the `@type`
+// field. Example (for message [google.protobuf.Duration][]):
+//
+//     {
+//       "@type": "type.googleapis.com/google.protobuf.Duration",
+//       "value": "1.212s"
+//     }
+//
+type Any struct {
+	// A URL/resource name that uniquely identifies the type of the serialized
+	// protocol buffer message. This string must contain at least
+	// one "/" character. The last segment of the URL's path must represent
+	// the fully qualified name of the type (as in
+	// `path/google.protobuf.Duration`). The name should be in a canonical form
+	// (e.g., leading "." is not accepted).
+	//
+	// In practice, teams usually precompile into the binary all types that they
+	// expect it to use in the context of Any. However, for URLs which use the
+	// scheme `http`, `https`, or no scheme, one can optionally set up a type
+	// server that maps type URLs to message definitions as follows:
+	//
+	// * If no scheme is provided, `https` is assumed.
+	// * An HTTP GET on the URL must yield a [google.protobuf.Type][]
+	//   value in binary format, or produce an error.
+	// * Applications are allowed to cache lookup results based on the
+	//   URL, or have them precompiled into a binary to avoid any
+	//   lookup. Therefore, binary compatibility needs to be preserved
+	//   on changes to types. (Use versioned type names to manage
+	//   breaking changes.)
+	//
+	// Note: this functionality is not currently available in the official
+	// protobuf release, and it is not used for type URLs beginning with
+	// type.googleapis.com.
+	//
+	// Schemes other than `http`, `https` (or the empty scheme) might be
+	// used with implementation specific semantics.
+	//
+	TypeUrl string `protobuf:"bytes,1,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"`
+	// Must be a valid serialized protocol buffer of the above specified type.
+	Value                []byte   `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Any) Reset()         { *m = Any{} }
+func (m *Any) String() string { return proto.CompactTextString(m) }
+func (*Any) ProtoMessage()    {}
+func (*Any) Descriptor() ([]byte, []int) {
+	return fileDescriptor_b53526c13ae22eb4, []int{0}
+}
+
+func (*Any) XXX_WellKnownType() string { return "Any" }
+
+func (m *Any) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Any.Unmarshal(m, b)
+}
+func (m *Any) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Any.Marshal(b, m, deterministic)
+}
+func (m *Any) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Any.Merge(m, src)
+}
+func (m *Any) XXX_Size() int {
+	return xxx_messageInfo_Any.Size(m)
+}
+func (m *Any) XXX_DiscardUnknown() {
+	xxx_messageInfo_Any.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Any proto.InternalMessageInfo
+
+func (m *Any) GetTypeUrl() string {
+	if m != nil {
+		return m.TypeUrl
+	}
+	return ""
+}
+
+func (m *Any) GetValue() []byte {
+	if m != nil {
+		return m.Value
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*Any)(nil), "google.protobuf.Any")
+}
+
+func init() {
+	proto.RegisterFile("google/protobuf/any.proto", fileDescriptor_b53526c13ae22eb4)
+}
+
+var fileDescriptor_b53526c13ae22eb4 = []byte{
+	// 185 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4c, 0xcf, 0xcf, 0x4f,
+	0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x4f, 0xcc, 0xab, 0xd4,
+	0x03, 0x73, 0x84, 0xf8, 0x21, 0x52, 0x7a, 0x30, 0x29, 0x25, 0x33, 0x2e, 0x66, 0xc7, 0xbc, 0x4a,
+	0x21, 0x49, 0x2e, 0x8e, 0x92, 0xca, 0x82, 0xd4, 0xf8, 0xd2, 0xa2, 0x1c, 0x09, 0x46, 0x05, 0x46,
+	0x0d, 0xce, 0x20, 0x76, 0x10, 0x3f, 0xb4, 0x28, 0x47, 0x48, 0x84, 0x8b, 0xb5, 0x2c, 0x31, 0xa7,
+	0x34, 0x55, 0x82, 0x49, 0x81, 0x51, 0x83, 0x27, 0x08, 0xc2, 0x71, 0xca, 0xe7, 0x12, 0x4e, 0xce,
+	0xcf, 0xd5, 0x43, 0x33, 0xce, 0x89, 0xc3, 0x31, 0xaf, 0x32, 0x00, 0xc4, 0x09, 0x60, 0x8c, 0x52,
+	0x4d, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc,
+	0x4b, 0x47, 0xb8, 0xa8, 0x00, 0x64, 0x7a, 0x31, 0xc8, 0x61, 0x8b, 0x98, 0x98, 0xdd, 0x03, 0x9c,
+	0x56, 0x31, 0xc9, 0xb9, 0x43, 0x8c, 0x0a, 0x80, 0x2a, 0xd1, 0x0b, 0x4f, 0xcd, 0xc9, 0xf1, 0xce,
+	0xcb, 0x2f, 0xcf, 0x0b, 0x01, 0x29, 0x4d, 0x62, 0x03, 0xeb, 0x35, 0x06, 0x04, 0x00, 0x00, 0xff,
+	0xff, 0x13, 0xf8, 0xe8, 0x42, 0xdd, 0x00, 0x00, 0x00,
+}
diff --git a/ptypes/any/any.proto b/ptypes/any/any.proto
new file mode 100644
index 0000000..c9be854
--- /dev/null
+++ b/ptypes/any/any.proto
@@ -0,0 +1,155 @@
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc.  All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+package google.protobuf;
+
+option csharp_namespace = "Google.Protobuf.WellKnownTypes";
+option go_package = "github.com/golang/protobuf/ptypes/any";
+option java_package = "com.google.protobuf";
+option java_outer_classname = "AnyProto";
+option java_multiple_files = true;
+option objc_class_prefix = "GPB";
+
+// `Any` contains an arbitrary serialized protocol buffer message along with a
+// URL that describes the type of the serialized message.
+//
+// Protobuf library provides support to pack/unpack Any values in the form
+// of utility functions or additional generated methods of the Any type.
+//
+// Example 1: Pack and unpack a message in C++.
+//
+//     Foo foo = ...;
+//     Any any;
+//     any.PackFrom(foo);
+//     ...
+//     if (any.UnpackTo(&foo)) {
+//       ...
+//     }
+//
+// Example 2: Pack and unpack a message in Java.
+//
+//     Foo foo = ...;
+//     Any any = Any.pack(foo);
+//     ...
+//     if (any.is(Foo.class)) {
+//       foo = any.unpack(Foo.class);
+//     }
+//
+//  Example 3: Pack and unpack a message in Python.
+//
+//     foo = Foo(...)
+//     any = Any()
+//     any.Pack(foo)
+//     ...
+//     if any.Is(Foo.DESCRIPTOR):
+//       any.Unpack(foo)
+//       ...
+//
+//  Example 4: Pack and unpack a message in Go
+//
+//      foo := &pb.Foo{...}
+//      any, err := ptypes.MarshalAny(foo)
+//      ...
+//      foo := &pb.Foo{}
+//      if err := ptypes.UnmarshalAny(any, foo); err != nil {
+//        ...
+//      }
+//
+// The pack methods provided by protobuf library will by default use
+// 'type.googleapis.com/full.type.name' as the type URL and the unpack
+// methods only use the fully qualified type name after the last '/'
+// in the type URL, for example "foo.bar.com/x/y.z" will yield type
+// name "y.z".
+//
+//
+// JSON
+// ====
+// The JSON representation of an `Any` value uses the regular
+// representation of the deserialized, embedded message, with an
+// additional field `@type` which contains the type URL. Example:
+//
+//     package google.profile;
+//     message Person {
+//       string first_name = 1;
+//       string last_name = 2;
+//     }
+//
+//     {
+//       "@type": "type.googleapis.com/google.profile.Person",
+//       "firstName": <string>,
+//       "lastName": <string>
+//     }
+//
+// If the embedded message type is well-known and has a custom JSON
+// representation, that representation will be embedded adding a field
+// `value` which holds the custom JSON in addition to the `@type`
+// field. Example (for message [google.protobuf.Duration][]):
+//
+//     {
+//       "@type": "type.googleapis.com/google.protobuf.Duration",
+//       "value": "1.212s"
+//     }
+//
+message Any {
+  // A URL/resource name that uniquely identifies the type of the serialized
+  // protocol buffer message. This string must contain at least
+  // one "/" character. The last segment of the URL's path must represent
+  // the fully qualified name of the type (as in
+  // `path/google.protobuf.Duration`). The name should be in a canonical form
+  // (e.g., leading "." is not accepted).
+  //
+  // In practice, teams usually precompile into the binary all types that they
+  // expect it to use in the context of Any. However, for URLs which use the
+  // scheme `http`, `https`, or no scheme, one can optionally set up a type
+  // server that maps type URLs to message definitions as follows:
+  //
+  // * If no scheme is provided, `https` is assumed.
+  // * An HTTP GET on the URL must yield a [google.protobuf.Type][]
+  //   value in binary format, or produce an error.
+  // * Applications are allowed to cache lookup results based on the
+  //   URL, or have them precompiled into a binary to avoid any
+  //   lookup. Therefore, binary compatibility needs to be preserved
+  //   on changes to types. (Use versioned type names to manage
+  //   breaking changes.)
+  //
+  // Note: this functionality is not currently available in the official
+  // protobuf release, and it is not used for type URLs beginning with
+  // type.googleapis.com.
+  //
+  // Schemes other than `http`, `https` (or the empty scheme) might be
+  // used with implementation specific semantics.
+  //
+  string type_url = 1;
+
+  // Must be a valid serialized protocol buffer of the above specified type.
+  bytes value = 2;
+}
diff --git a/ptypes/any_test.go b/ptypes/any_test.go
new file mode 100644
index 0000000..871c6de
--- /dev/null
+++ b/ptypes/any_test.go
@@ -0,0 +1,154 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2016 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package ptypes
+
+import (
+	"testing"
+
+	"github.com/golang/protobuf/proto"
+	pb "github.com/golang/protobuf/protoc-gen-go/descriptor"
+	"github.com/golang/protobuf/ptypes/any"
+)
+
+func TestMarshalUnmarshal(t *testing.T) {
+	orig := &any.Any{Value: []byte("test")}
+
+	packed, err := MarshalAny(orig)
+	if err != nil {
+		t.Errorf("MarshalAny(%+v): got: _, %v exp: _, nil", orig, err)
+	}
+
+	unpacked := &any.Any{}
+	err = UnmarshalAny(packed, unpacked)
+	if err != nil || !proto.Equal(unpacked, orig) {
+		t.Errorf("got: %v, %+v; want nil, %+v", err, unpacked, orig)
+	}
+}
+
+func TestIs(t *testing.T) {
+	a, err := MarshalAny(&pb.FileDescriptorProto{})
+	if err != nil {
+		t.Fatal(err)
+	}
+	if Is(a, &pb.DescriptorProto{}) {
+		// No spurious match for message names of different length.
+		t.Error("FileDescriptorProto is not a DescriptorProto, but Is says it is")
+	}
+	if Is(a, &pb.EnumDescriptorProto{}) {
+		// No spurious match for message names of equal length.
+		t.Error("FileDescriptorProto is not an EnumDescriptorProto, but Is says it is")
+	}
+	if !Is(a, &pb.FileDescriptorProto{}) {
+		t.Error("FileDescriptorProto is indeed a FileDescriptorProto, but Is says it is not")
+	}
+}
+
+func TestIsDifferentUrlPrefixes(t *testing.T) {
+	m := &pb.FileDescriptorProto{}
+	a := &any.Any{TypeUrl: "foo/bar/" + proto.MessageName(m)}
+	if !Is(a, m) {
+		t.Errorf("message with type url %q didn't satisfy Is for type %q", a.TypeUrl, proto.MessageName(m))
+	}
+}
+
+func TestIsCornerCases(t *testing.T) {
+	m := &pb.FileDescriptorProto{}
+	if Is(nil, m) {
+		t.Errorf("message with nil type url incorrectly claimed to be %q", proto.MessageName(m))
+	}
+	noPrefix := &any.Any{TypeUrl: proto.MessageName(m)}
+	if Is(noPrefix, m) {
+		t.Errorf("message with type url %q incorrectly claimed to be %q", noPrefix.TypeUrl, proto.MessageName(m))
+	}
+	shortPrefix := &any.Any{TypeUrl: "/" + proto.MessageName(m)}
+	if !Is(shortPrefix, m) {
+		t.Errorf("message with type url %q didn't satisfy Is for type %q", shortPrefix.TypeUrl, proto.MessageName(m))
+	}
+}
+
+func TestUnmarshalDynamic(t *testing.T) {
+	want := &pb.FileDescriptorProto{Name: proto.String("foo")}
+	a, err := MarshalAny(want)
+	if err != nil {
+		t.Fatal(err)
+	}
+	var got DynamicAny
+	if err := UnmarshalAny(a, &got); err != nil {
+		t.Fatal(err)
+	}
+	if !proto.Equal(got.Message, want) {
+		t.Errorf("invalid result from UnmarshalAny, got %q want %q", got.Message, want)
+	}
+}
+
+func TestEmpty(t *testing.T) {
+	want := &pb.FileDescriptorProto{}
+	a, err := MarshalAny(want)
+	if err != nil {
+		t.Fatal(err)
+	}
+	got, err := Empty(a)
+	if err != nil {
+		t.Fatal(err)
+	}
+	if !proto.Equal(got, want) {
+		t.Errorf("unequal empty message, got %q, want %q", got, want)
+	}
+
+	// that's a valid type_url for a message which shouldn't be linked into this
+	// test binary. We want an error.
+	a.TypeUrl = "type.googleapis.com/google.protobuf.FieldMask"
+	if _, err := Empty(a); err == nil {
+		t.Errorf("got no error for an attempt to create a message of type %q, which shouldn't be linked in", a.TypeUrl)
+	}
+}
+
+func TestEmptyCornerCases(t *testing.T) {
+	_, err := Empty(nil)
+	if err == nil {
+		t.Error("expected Empty for nil to fail")
+	}
+	want := &pb.FileDescriptorProto{}
+	noPrefix := &any.Any{TypeUrl: proto.MessageName(want)}
+	_, err = Empty(noPrefix)
+	if err == nil {
+		t.Errorf("expected Empty for any type %q to fail", noPrefix.TypeUrl)
+	}
+	shortPrefix := &any.Any{TypeUrl: "/" + proto.MessageName(want)}
+	got, err := Empty(shortPrefix)
+	if err != nil {
+		t.Errorf("Empty for any type %q failed: %s", shortPrefix.TypeUrl, err)
+	}
+	if !proto.Equal(got, want) {
+		t.Errorf("Empty for any type %q differs, got %q, want %q", shortPrefix.TypeUrl, got, want)
+	}
+}
diff --git a/ptypes/doc.go b/ptypes/doc.go
new file mode 100644
index 0000000..c0d595d
--- /dev/null
+++ b/ptypes/doc.go
@@ -0,0 +1,35 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2016 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/*
+Package ptypes contains code for interacting with well-known types.
+*/
+package ptypes
diff --git a/ptypes/duration.go b/ptypes/duration.go
new file mode 100644
index 0000000..26d1ca2
--- /dev/null
+++ b/ptypes/duration.go
@@ -0,0 +1,102 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2016 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package ptypes
+
+// This file implements conversions between google.protobuf.Duration
+// and time.Duration.
+
+import (
+	"errors"
+	"fmt"
+	"time"
+
+	durpb "github.com/golang/protobuf/ptypes/duration"
+)
+
+const (
+	// Range of a durpb.Duration in seconds, as specified in
+	// google/protobuf/duration.proto. This is about 10,000 years in seconds.
+	maxSeconds = int64(10000 * 365.25 * 24 * 60 * 60)
+	minSeconds = -maxSeconds
+)
+
+// validateDuration determines whether the durpb.Duration is valid according to the
+// definition in google/protobuf/duration.proto. A valid durpb.Duration
+// may still be too large to fit into a time.Duration (the range of durpb.Duration
+// is about 10,000 years, and the range of time.Duration is about 290).
+func validateDuration(d *durpb.Duration) error {
+	if d == nil {
+		return errors.New("duration: nil Duration")
+	}
+	if d.Seconds < minSeconds || d.Seconds > maxSeconds {
+		return fmt.Errorf("duration: %v: seconds out of range", d)
+	}
+	if d.Nanos <= -1e9 || d.Nanos >= 1e9 {
+		return fmt.Errorf("duration: %v: nanos out of range", d)
+	}
+	// Seconds and Nanos must have the same sign, unless d.Nanos is zero.
+	if (d.Seconds < 0 && d.Nanos > 0) || (d.Seconds > 0 && d.Nanos < 0) {
+		return fmt.Errorf("duration: %v: seconds and nanos have different signs", d)
+	}
+	return nil
+}
+
+// Duration converts a durpb.Duration to a time.Duration. Duration
+// returns an error if the durpb.Duration is invalid or is too large to be
+// represented in a time.Duration.
+func Duration(p *durpb.Duration) (time.Duration, error) {
+	if err := validateDuration(p); err != nil {
+		return 0, err
+	}
+	d := time.Duration(p.Seconds) * time.Second
+	if int64(d/time.Second) != p.Seconds {
+		return 0, fmt.Errorf("duration: %v is out of range for time.Duration", p)
+	}
+	if p.Nanos != 0 {
+		d += time.Duration(p.Nanos) * time.Nanosecond
+		if (d < 0) != (p.Nanos < 0) {
+			return 0, fmt.Errorf("duration: %v is out of range for time.Duration", p)
+		}
+	}
+	return d, nil
+}
+
+// DurationProto converts a time.Duration to a durpb.Duration.
+func DurationProto(d time.Duration) *durpb.Duration {
+	nanos := d.Nanoseconds()
+	secs := nanos / 1e9
+	nanos -= secs * 1e9
+	return &durpb.Duration{
+		Seconds: secs,
+		Nanos:   int32(nanos),
+	}
+}
diff --git a/ptypes/duration/duration.pb.go b/ptypes/duration/duration.pb.go
new file mode 100644
index 0000000..58b0786
--- /dev/null
+++ b/ptypes/duration/duration.pb.go
@@ -0,0 +1,163 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/protobuf/duration.proto
+
+package duration
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+// A Duration represents a signed, fixed-length span of time represented
+// as a count of seconds and fractions of seconds at nanosecond
+// resolution. It is independent of any calendar and concepts like "day"
+// or "month". It is related to Timestamp in that the difference between
+// two Timestamp values is a Duration and it can be added or subtracted
+// from a Timestamp. Range is approximately +-10,000 years.
+//
+// # Examples
+//
+// Example 1: Compute Duration from two Timestamps in pseudo code.
+//
+//     Timestamp start = ...;
+//     Timestamp end = ...;
+//     Duration duration = ...;
+//
+//     duration.seconds = end.seconds - start.seconds;
+//     duration.nanos = end.nanos - start.nanos;
+//
+//     if (duration.seconds < 0 && duration.nanos > 0) {
+//       duration.seconds += 1;
+//       duration.nanos -= 1000000000;
+//     } else if (duration.seconds > 0 && duration.nanos < 0) {
+//       duration.seconds -= 1;
+//       duration.nanos += 1000000000;
+//     }
+//
+// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
+//
+//     Timestamp start = ...;
+//     Duration duration = ...;
+//     Timestamp end = ...;
+//
+//     end.seconds = start.seconds + duration.seconds;
+//     end.nanos = start.nanos + duration.nanos;
+//
+//     if (end.nanos < 0) {
+//       end.seconds -= 1;
+//       end.nanos += 1000000000;
+//     } else if (end.nanos >= 1000000000) {
+//       end.seconds += 1;
+//       end.nanos -= 1000000000;
+//     }
+//
+// Example 3: Compute Duration from datetime.timedelta in Python.
+//
+//     td = datetime.timedelta(days=3, minutes=10)
+//     duration = Duration()
+//     duration.FromTimedelta(td)
+//
+// # JSON Mapping
+//
+// In JSON format, the Duration type is encoded as a string rather than an
+// object, where the string ends in the suffix "s" (indicating seconds) and
+// is preceded by the number of seconds, with nanoseconds expressed as
+// fractional seconds. For example, 3 seconds with 0 nanoseconds should be
+// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should
+// be expressed in JSON format as "3.000000001s", and 3 seconds and 1
+// microsecond should be expressed in JSON format as "3.000001s".
+//
+//
+type Duration struct {
+	// Signed seconds of the span of time. Must be from -315,576,000,000
+	// to +315,576,000,000 inclusive. Note: these bounds are computed from:
+	// 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+	Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"`
+	// Signed fractions of a second at nanosecond resolution of the span
+	// of time. Durations less than one second are represented with a 0
+	// `seconds` field and a positive or negative `nanos` field. For durations
+	// of one second or more, a non-zero value for the `nanos` field must be
+	// of the same sign as the `seconds` field. Must be from -999,999,999
+	// to +999,999,999 inclusive.
+	Nanos                int32    `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Duration) Reset()         { *m = Duration{} }
+func (m *Duration) String() string { return proto.CompactTextString(m) }
+func (*Duration) ProtoMessage()    {}
+func (*Duration) Descriptor() ([]byte, []int) {
+	return fileDescriptor_23597b2ebd7ac6c5, []int{0}
+}
+
+func (*Duration) XXX_WellKnownType() string { return "Duration" }
+
+func (m *Duration) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Duration.Unmarshal(m, b)
+}
+func (m *Duration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Duration.Marshal(b, m, deterministic)
+}
+func (m *Duration) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Duration.Merge(m, src)
+}
+func (m *Duration) XXX_Size() int {
+	return xxx_messageInfo_Duration.Size(m)
+}
+func (m *Duration) XXX_DiscardUnknown() {
+	xxx_messageInfo_Duration.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Duration proto.InternalMessageInfo
+
+func (m *Duration) GetSeconds() int64 {
+	if m != nil {
+		return m.Seconds
+	}
+	return 0
+}
+
+func (m *Duration) GetNanos() int32 {
+	if m != nil {
+		return m.Nanos
+	}
+	return 0
+}
+
+func init() {
+	proto.RegisterType((*Duration)(nil), "google.protobuf.Duration")
+}
+
+func init() {
+	proto.RegisterFile("google/protobuf/duration.proto", fileDescriptor_23597b2ebd7ac6c5)
+}
+
+var fileDescriptor_23597b2ebd7ac6c5 = []byte{
+	// 190 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4b, 0xcf, 0xcf, 0x4f,
+	0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x4f, 0x29, 0x2d, 0x4a,
+	0x2c, 0xc9, 0xcc, 0xcf, 0xd3, 0x03, 0x8b, 0x08, 0xf1, 0x43, 0xe4, 0xf5, 0x60, 0xf2, 0x4a, 0x56,
+	0x5c, 0x1c, 0x2e, 0x50, 0x25, 0x42, 0x12, 0x5c, 0xec, 0xc5, 0xa9, 0xc9, 0xf9, 0x79, 0x29, 0xc5,
+	0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0xcc, 0x41, 0x30, 0xae, 0x90, 0x08, 0x17, 0x6b, 0x5e, 0x62, 0x5e,
+	0x7e, 0xb1, 0x04, 0x93, 0x02, 0xa3, 0x06, 0x6b, 0x10, 0x84, 0xe3, 0x54, 0xc3, 0x25, 0x9c, 0x9c,
+	0x9f, 0xab, 0x87, 0x66, 0xa4, 0x13, 0x2f, 0xcc, 0xc0, 0x00, 0x90, 0x48, 0x00, 0x63, 0x94, 0x56,
+	0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x7a, 0x7e, 0x4e, 0x62, 0x5e,
+	0x3a, 0xc2, 0x7d, 0x05, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x70, 0x67, 0xfe, 0x60, 0x64, 0x5c, 0xc4,
+	0xc4, 0xec, 0x1e, 0xe0, 0xb4, 0x8a, 0x49, 0xce, 0x1d, 0x62, 0x6e, 0x00, 0x54, 0xa9, 0x5e, 0x78,
+	0x6a, 0x4e, 0x8e, 0x77, 0x5e, 0x7e, 0x79, 0x5e, 0x08, 0x48, 0x4b, 0x12, 0x1b, 0xd8, 0x0c, 0x63,
+	0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0xdc, 0x84, 0x30, 0xff, 0xf3, 0x00, 0x00, 0x00,
+}
diff --git a/ptypes/duration/duration.proto b/ptypes/duration/duration.proto
new file mode 100644
index 0000000..99cb102
--- /dev/null
+++ b/ptypes/duration/duration.proto
@@ -0,0 +1,116 @@
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc.  All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+package google.protobuf;
+
+option csharp_namespace = "Google.Protobuf.WellKnownTypes";
+option cc_enable_arenas = true;
+option go_package = "github.com/golang/protobuf/ptypes/duration";
+option java_package = "com.google.protobuf";
+option java_outer_classname = "DurationProto";
+option java_multiple_files = true;
+option objc_class_prefix = "GPB";
+
+// A Duration represents a signed, fixed-length span of time represented
+// as a count of seconds and fractions of seconds at nanosecond
+// resolution. It is independent of any calendar and concepts like "day"
+// or "month". It is related to Timestamp in that the difference between
+// two Timestamp values is a Duration and it can be added or subtracted
+// from a Timestamp. Range is approximately +-10,000 years.
+//
+// # Examples
+//
+// Example 1: Compute Duration from two Timestamps in pseudo code.
+//
+//     Timestamp start = ...;
+//     Timestamp end = ...;
+//     Duration duration = ...;
+//
+//     duration.seconds = end.seconds - start.seconds;
+//     duration.nanos = end.nanos - start.nanos;
+//
+//     if (duration.seconds < 0 && duration.nanos > 0) {
+//       duration.seconds += 1;
+//       duration.nanos -= 1000000000;
+//     } else if (duration.seconds > 0 && duration.nanos < 0) {
+//       duration.seconds -= 1;
+//       duration.nanos += 1000000000;
+//     }
+//
+// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
+//
+//     Timestamp start = ...;
+//     Duration duration = ...;
+//     Timestamp end = ...;
+//
+//     end.seconds = start.seconds + duration.seconds;
+//     end.nanos = start.nanos + duration.nanos;
+//
+//     if (end.nanos < 0) {
+//       end.seconds -= 1;
+//       end.nanos += 1000000000;
+//     } else if (end.nanos >= 1000000000) {
+//       end.seconds += 1;
+//       end.nanos -= 1000000000;
+//     }
+//
+// Example 3: Compute Duration from datetime.timedelta in Python.
+//
+//     td = datetime.timedelta(days=3, minutes=10)
+//     duration = Duration()
+//     duration.FromTimedelta(td)
+//
+// # JSON Mapping
+//
+// In JSON format, the Duration type is encoded as a string rather than an
+// object, where the string ends in the suffix "s" (indicating seconds) and
+// is preceded by the number of seconds, with nanoseconds expressed as
+// fractional seconds. For example, 3 seconds with 0 nanoseconds should be
+// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should
+// be expressed in JSON format as "3.000000001s", and 3 seconds and 1
+// microsecond should be expressed in JSON format as "3.000001s".
+//
+//
+message Duration {
+  // Signed seconds of the span of time. Must be from -315,576,000,000
+  // to +315,576,000,000 inclusive. Note: these bounds are computed from:
+  // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
+  int64 seconds = 1;
+
+  // Signed fractions of a second at nanosecond resolution of the span
+  // of time. Durations less than one second are represented with a 0
+  // `seconds` field and a positive or negative `nanos` field. For durations
+  // of one second or more, a non-zero value for the `nanos` field must be
+  // of the same sign as the `seconds` field. Must be from -999,999,999
+  // to +999,999,999 inclusive.
+  int32 nanos = 2;
+}
diff --git a/ptypes/duration_test.go b/ptypes/duration_test.go
new file mode 100644
index 0000000..e00491a
--- /dev/null
+++ b/ptypes/duration_test.go
@@ -0,0 +1,121 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2016 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package ptypes
+
+import (
+	"math"
+	"testing"
+	"time"
+
+	"github.com/golang/protobuf/proto"
+	durpb "github.com/golang/protobuf/ptypes/duration"
+)
+
+const (
+	minGoSeconds = math.MinInt64 / int64(1e9)
+	maxGoSeconds = math.MaxInt64 / int64(1e9)
+)
+
+var durationTests = []struct {
+	proto   *durpb.Duration
+	isValid bool
+	inRange bool
+	dur     time.Duration
+}{
+	// The zero duration.
+	{&durpb.Duration{Seconds: 0, Nanos: 0}, true, true, 0},
+	// Some ordinary non-zero durations.
+	{&durpb.Duration{Seconds: 100, Nanos: 0}, true, true, 100 * time.Second},
+	{&durpb.Duration{Seconds: -100, Nanos: 0}, true, true, -100 * time.Second},
+	{&durpb.Duration{Seconds: 100, Nanos: 987}, true, true, 100*time.Second + 987},
+	{&durpb.Duration{Seconds: -100, Nanos: -987}, true, true, -(100*time.Second + 987)},
+	// The largest duration representable in Go.
+	{&durpb.Duration{Seconds: maxGoSeconds, Nanos: int32(math.MaxInt64 - 1e9*maxGoSeconds)}, true, true, math.MaxInt64},
+	// The smallest duration representable in Go.
+	{&durpb.Duration{Seconds: minGoSeconds, Nanos: int32(math.MinInt64 - 1e9*minGoSeconds)}, true, true, math.MinInt64},
+	{nil, false, false, 0},
+	{&durpb.Duration{Seconds: -100, Nanos: 987}, false, false, 0},
+	{&durpb.Duration{Seconds: 100, Nanos: -987}, false, false, 0},
+	{&durpb.Duration{Seconds: math.MinInt64, Nanos: 0}, false, false, 0},
+	{&durpb.Duration{Seconds: math.MaxInt64, Nanos: 0}, false, false, 0},
+	// The largest valid duration.
+	{&durpb.Duration{Seconds: maxSeconds, Nanos: 1e9 - 1}, true, false, 0},
+	// The smallest valid duration.
+	{&durpb.Duration{Seconds: minSeconds, Nanos: -(1e9 - 1)}, true, false, 0},
+	// The smallest invalid duration above the valid range.
+	{&durpb.Duration{Seconds: maxSeconds + 1, Nanos: 0}, false, false, 0},
+	// The largest invalid duration below the valid range.
+	{&durpb.Duration{Seconds: minSeconds - 1, Nanos: -(1e9 - 1)}, false, false, 0},
+	// One nanosecond past the largest duration representable in Go.
+	{&durpb.Duration{Seconds: maxGoSeconds, Nanos: int32(math.MaxInt64-1e9*maxGoSeconds) + 1}, true, false, 0},
+	// One nanosecond past the smallest duration representable in Go.
+	{&durpb.Duration{Seconds: minGoSeconds, Nanos: int32(math.MinInt64-1e9*minGoSeconds) - 1}, true, false, 0},
+	// One second past the largest duration representable in Go.
+	{&durpb.Duration{Seconds: maxGoSeconds + 1, Nanos: int32(math.MaxInt64 - 1e9*maxGoSeconds)}, true, false, 0},
+	// One second past the smallest duration representable in Go.
+	{&durpb.Duration{Seconds: minGoSeconds - 1, Nanos: int32(math.MinInt64 - 1e9*minGoSeconds)}, true, false, 0},
+}
+
+func TestValidateDuration(t *testing.T) {
+	for _, test := range durationTests {
+		err := validateDuration(test.proto)
+		gotValid := (err == nil)
+		if gotValid != test.isValid {
+			t.Errorf("validateDuration(%v) = %t, want %t", test.proto, gotValid, test.isValid)
+		}
+	}
+}
+
+func TestDuration(t *testing.T) {
+	for _, test := range durationTests {
+		got, err := Duration(test.proto)
+		gotOK := (err == nil)
+		wantOK := test.isValid && test.inRange
+		if gotOK != wantOK {
+			t.Errorf("Duration(%v) ok = %t, want %t", test.proto, gotOK, wantOK)
+		}
+		if err == nil && got != test.dur {
+			t.Errorf("Duration(%v) = %v, want %v", test.proto, got, test.dur)
+		}
+	}
+}
+
+func TestDurationProto(t *testing.T) {
+	for _, test := range durationTests {
+		if test.isValid && test.inRange {
+			got := DurationProto(test.dur)
+			if !proto.Equal(got, test.proto) {
+				t.Errorf("DurationProto(%v) = %v, want %v", test.dur, got, test.proto)
+			}
+		}
+	}
+}
diff --git a/ptypes/empty/empty.pb.go b/ptypes/empty/empty.pb.go
new file mode 100644
index 0000000..6bd9f67
--- /dev/null
+++ b/ptypes/empty/empty.pb.go
@@ -0,0 +1,85 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/protobuf/empty.proto
+
+package empty
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+// A generic empty message that you can re-use to avoid defining duplicated
+// empty messages in your APIs. A typical example is to use it as the request
+// or the response type of an API method. For instance:
+//
+//     service Foo {
+//       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
+//     }
+//
+// The JSON representation for `Empty` is empty JSON object `{}`.
+type Empty struct {
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Empty) Reset()         { *m = Empty{} }
+func (m *Empty) String() string { return proto.CompactTextString(m) }
+func (*Empty) ProtoMessage()    {}
+func (*Empty) Descriptor() ([]byte, []int) {
+	return fileDescriptor_900544acb223d5b8, []int{0}
+}
+
+func (*Empty) XXX_WellKnownType() string { return "Empty" }
+
+func (m *Empty) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Empty.Unmarshal(m, b)
+}
+func (m *Empty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Empty.Marshal(b, m, deterministic)
+}
+func (m *Empty) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Empty.Merge(m, src)
+}
+func (m *Empty) XXX_Size() int {
+	return xxx_messageInfo_Empty.Size(m)
+}
+func (m *Empty) XXX_DiscardUnknown() {
+	xxx_messageInfo_Empty.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Empty proto.InternalMessageInfo
+
+func init() {
+	proto.RegisterType((*Empty)(nil), "google.protobuf.Empty")
+}
+
+func init() {
+	proto.RegisterFile("google/protobuf/empty.proto", fileDescriptor_900544acb223d5b8)
+}
+
+var fileDescriptor_900544acb223d5b8 = []byte{
+	// 148 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4e, 0xcf, 0xcf, 0x4f,
+	0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x4f, 0xcd, 0x2d, 0x28,
+	0xa9, 0xd4, 0x03, 0x73, 0x85, 0xf8, 0x21, 0x92, 0x7a, 0x30, 0x49, 0x25, 0x76, 0x2e, 0x56, 0x57,
+	0x90, 0xbc, 0x53, 0x19, 0x97, 0x70, 0x72, 0x7e, 0xae, 0x1e, 0x9a, 0xbc, 0x13, 0x17, 0x58, 0x36,
+	0x00, 0xc4, 0x0d, 0x60, 0x8c, 0x52, 0x4f, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf,
+	0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0x47, 0x58, 0x53, 0x50, 0x52, 0x59, 0x90, 0x5a, 0x0c,
+	0xb1, 0xed, 0x07, 0x23, 0xe3, 0x22, 0x26, 0x66, 0xf7, 0x00, 0xa7, 0x55, 0x4c, 0x72, 0xee, 0x10,
+	0x13, 0x03, 0xa0, 0xea, 0xf4, 0xc2, 0x53, 0x73, 0x72, 0xbc, 0xf3, 0xf2, 0xcb, 0xf3, 0x42, 0x40,
+	0xea, 0x93, 0xd8, 0xc0, 0x06, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x64, 0xd4, 0xb3, 0xa6,
+	0xb7, 0x00, 0x00, 0x00,
+}
diff --git a/ptypes/empty/empty.proto b/ptypes/empty/empty.proto
new file mode 100644
index 0000000..03cacd2
--- /dev/null
+++ b/ptypes/empty/empty.proto
@@ -0,0 +1,52 @@
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc.  All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+package google.protobuf;
+
+option csharp_namespace = "Google.Protobuf.WellKnownTypes";
+option go_package = "github.com/golang/protobuf/ptypes/empty";
+option java_package = "com.google.protobuf";
+option java_outer_classname = "EmptyProto";
+option java_multiple_files = true;
+option objc_class_prefix = "GPB";
+option cc_enable_arenas = true;
+
+// A generic empty message that you can re-use to avoid defining duplicated
+// empty messages in your APIs. A typical example is to use it as the request
+// or the response type of an API method. For instance:
+//
+//     service Foo {
+//       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
+//     }
+//
+// The JSON representation for `Empty` is empty JSON object `{}`.
+message Empty {}
diff --git a/ptypes/struct/struct.pb.go b/ptypes/struct/struct.pb.go
new file mode 100644
index 0000000..d82d617
--- /dev/null
+++ b/ptypes/struct/struct.pb.go
@@ -0,0 +1,338 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/protobuf/struct.proto
+
+package structpb
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+// `NullValue` is a singleton enumeration to represent the null value for the
+// `Value` type union.
+//
+//  The JSON representation for `NullValue` is JSON `null`.
+type NullValue int32
+
+const (
+	// Null value.
+	NullValue_NULL_VALUE NullValue = 0
+)
+
+var NullValue_name = map[int32]string{
+	0: "NULL_VALUE",
+}
+
+var NullValue_value = map[string]int32{
+	"NULL_VALUE": 0,
+}
+
+func (x NullValue) String() string {
+	return proto.EnumName(NullValue_name, int32(x))
+}
+
+func (NullValue) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_df322afd6c9fb402, []int{0}
+}
+
+func (NullValue) XXX_WellKnownType() string { return "NullValue" }
+
+// `Struct` represents a structured data value, consisting of fields
+// which map to dynamically typed values. In some languages, `Struct`
+// might be supported by a native representation. For example, in
+// scripting languages like JS a struct is represented as an
+// object. The details of that representation are described together
+// with the proto support for the language.
+//
+// The JSON representation for `Struct` is JSON object.
+type Struct struct {
+	// Unordered map of dynamically typed values.
+	Fields               map[string]*Value `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
+	XXX_unrecognized     []byte            `json:"-"`
+	XXX_sizecache        int32             `json:"-"`
+}
+
+func (m *Struct) Reset()         { *m = Struct{} }
+func (m *Struct) String() string { return proto.CompactTextString(m) }
+func (*Struct) ProtoMessage()    {}
+func (*Struct) Descriptor() ([]byte, []int) {
+	return fileDescriptor_df322afd6c9fb402, []int{0}
+}
+
+func (*Struct) XXX_WellKnownType() string { return "Struct" }
+
+func (m *Struct) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Struct.Unmarshal(m, b)
+}
+func (m *Struct) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Struct.Marshal(b, m, deterministic)
+}
+func (m *Struct) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Struct.Merge(m, src)
+}
+func (m *Struct) XXX_Size() int {
+	return xxx_messageInfo_Struct.Size(m)
+}
+func (m *Struct) XXX_DiscardUnknown() {
+	xxx_messageInfo_Struct.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Struct proto.InternalMessageInfo
+
+func (m *Struct) GetFields() map[string]*Value {
+	if m != nil {
+		return m.Fields
+	}
+	return nil
+}
+
+// `Value` represents a dynamically typed value which can be either
+// null, a number, a string, a boolean, a recursive struct value, or a
+// list of values. A producer of value is expected to set one of that
+// variants, absence of any variant indicates an error.
+//
+// The JSON representation for `Value` is JSON value.
+type Value struct {
+	// The kind of value.
+	//
+	// Types that are valid to be assigned to Kind:
+	//	*Value_NullValue
+	//	*Value_NumberValue
+	//	*Value_StringValue
+	//	*Value_BoolValue
+	//	*Value_StructValue
+	//	*Value_ListValue
+	Kind                 isValue_Kind `protobuf_oneof:"kind"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *Value) Reset()         { *m = Value{} }
+func (m *Value) String() string { return proto.CompactTextString(m) }
+func (*Value) ProtoMessage()    {}
+func (*Value) Descriptor() ([]byte, []int) {
+	return fileDescriptor_df322afd6c9fb402, []int{1}
+}
+
+func (*Value) XXX_WellKnownType() string { return "Value" }
+
+func (m *Value) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Value.Unmarshal(m, b)
+}
+func (m *Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Value.Marshal(b, m, deterministic)
+}
+func (m *Value) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Value.Merge(m, src)
+}
+func (m *Value) XXX_Size() int {
+	return xxx_messageInfo_Value.Size(m)
+}
+func (m *Value) XXX_DiscardUnknown() {
+	xxx_messageInfo_Value.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Value proto.InternalMessageInfo
+
+type isValue_Kind interface {
+	isValue_Kind()
+}
+
+type Value_NullValue struct {
+	NullValue NullValue `protobuf:"varint,1,opt,name=null_value,json=nullValue,proto3,enum=google.protobuf.NullValue,oneof"`
+}
+
+type Value_NumberValue struct {
+	NumberValue float64 `protobuf:"fixed64,2,opt,name=number_value,json=numberValue,proto3,oneof"`
+}
+
+type Value_StringValue struct {
+	StringValue string `protobuf:"bytes,3,opt,name=string_value,json=stringValue,proto3,oneof"`
+}
+
+type Value_BoolValue struct {
+	BoolValue bool `protobuf:"varint,4,opt,name=bool_value,json=boolValue,proto3,oneof"`
+}
+
+type Value_StructValue struct {
+	StructValue *Struct `protobuf:"bytes,5,opt,name=struct_value,json=structValue,proto3,oneof"`
+}
+
+type Value_ListValue struct {
+	ListValue *ListValue `protobuf:"bytes,6,opt,name=list_value,json=listValue,proto3,oneof"`
+}
+
+func (*Value_NullValue) isValue_Kind() {}
+
+func (*Value_NumberValue) isValue_Kind() {}
+
+func (*Value_StringValue) isValue_Kind() {}
+
+func (*Value_BoolValue) isValue_Kind() {}
+
+func (*Value_StructValue) isValue_Kind() {}
+
+func (*Value_ListValue) isValue_Kind() {}
+
+func (m *Value) GetKind() isValue_Kind {
+	if m != nil {
+		return m.Kind
+	}
+	return nil
+}
+
+func (m *Value) GetNullValue() NullValue {
+	if x, ok := m.GetKind().(*Value_NullValue); ok {
+		return x.NullValue
+	}
+	return NullValue_NULL_VALUE
+}
+
+func (m *Value) GetNumberValue() float64 {
+	if x, ok := m.GetKind().(*Value_NumberValue); ok {
+		return x.NumberValue
+	}
+	return 0
+}
+
+func (m *Value) GetStringValue() string {
+	if x, ok := m.GetKind().(*Value_StringValue); ok {
+		return x.StringValue
+	}
+	return ""
+}
+
+func (m *Value) GetBoolValue() bool {
+	if x, ok := m.GetKind().(*Value_BoolValue); ok {
+		return x.BoolValue
+	}
+	return false
+}
+
+func (m *Value) GetStructValue() *Struct {
+	if x, ok := m.GetKind().(*Value_StructValue); ok {
+		return x.StructValue
+	}
+	return nil
+}
+
+func (m *Value) GetListValue() *ListValue {
+	if x, ok := m.GetKind().(*Value_ListValue); ok {
+		return x.ListValue
+	}
+	return nil
+}
+
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*Value) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
+		(*Value_NullValue)(nil),
+		(*Value_NumberValue)(nil),
+		(*Value_StringValue)(nil),
+		(*Value_BoolValue)(nil),
+		(*Value_StructValue)(nil),
+		(*Value_ListValue)(nil),
+	}
+}
+
+// `ListValue` is a wrapper around a repeated field of values.
+//
+// The JSON representation for `ListValue` is JSON array.
+type ListValue struct {
+	// Repeated field of dynamically typed values.
+	Values               []*Value `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *ListValue) Reset()         { *m = ListValue{} }
+func (m *ListValue) String() string { return proto.CompactTextString(m) }
+func (*ListValue) ProtoMessage()    {}
+func (*ListValue) Descriptor() ([]byte, []int) {
+	return fileDescriptor_df322afd6c9fb402, []int{2}
+}
+
+func (*ListValue) XXX_WellKnownType() string { return "ListValue" }
+
+func (m *ListValue) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_ListValue.Unmarshal(m, b)
+}
+func (m *ListValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_ListValue.Marshal(b, m, deterministic)
+}
+func (m *ListValue) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ListValue.Merge(m, src)
+}
+func (m *ListValue) XXX_Size() int {
+	return xxx_messageInfo_ListValue.Size(m)
+}
+func (m *ListValue) XXX_DiscardUnknown() {
+	xxx_messageInfo_ListValue.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ListValue proto.InternalMessageInfo
+
+func (m *ListValue) GetValues() []*Value {
+	if m != nil {
+		return m.Values
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterEnum("google.protobuf.NullValue", NullValue_name, NullValue_value)
+	proto.RegisterType((*Struct)(nil), "google.protobuf.Struct")
+	proto.RegisterMapType((map[string]*Value)(nil), "google.protobuf.Struct.FieldsEntry")
+	proto.RegisterType((*Value)(nil), "google.protobuf.Value")
+	proto.RegisterType((*ListValue)(nil), "google.protobuf.ListValue")
+}
+
+func init() {
+	proto.RegisterFile("google/protobuf/struct.proto", fileDescriptor_df322afd6c9fb402)
+}
+
+var fileDescriptor_df322afd6c9fb402 = []byte{
+	// 417 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0x41, 0x8b, 0xd3, 0x40,
+	0x14, 0xc7, 0x3b, 0xc9, 0x36, 0x98, 0x17, 0x59, 0x97, 0x11, 0xb4, 0xac, 0xa2, 0xa1, 0x7b, 0x09,
+	0x22, 0x29, 0xd6, 0x8b, 0x18, 0x2f, 0x06, 0xd6, 0x5d, 0x30, 0x2c, 0x31, 0xba, 0x15, 0xbc, 0x94,
+	0x26, 0x4d, 0x63, 0xe8, 0x74, 0x26, 0x24, 0x33, 0x4a, 0x8f, 0x7e, 0x0b, 0xcf, 0x1e, 0x3d, 0xfa,
+	0xe9, 0x3c, 0xca, 0xcc, 0x24, 0xa9, 0xb4, 0xf4, 0x94, 0xbc, 0xf7, 0x7e, 0xef, 0x3f, 0xef, 0xff,
+	0x66, 0xe0, 0x71, 0xc1, 0x58, 0x41, 0xf2, 0x49, 0x55, 0x33, 0xce, 0x52, 0xb1, 0x9a, 0x34, 0xbc,
+	0x16, 0x19, 0xf7, 0x55, 0x8c, 0xef, 0xe9, 0xaa, 0xdf, 0x55, 0xc7, 0x3f, 0x11, 0x58, 0x1f, 0x15,
+	0x81, 0x03, 0xb0, 0x56, 0x65, 0x4e, 0x96, 0xcd, 0x08, 0xb9, 0xa6, 0xe7, 0x4c, 0x2f, 0xfc, 0x3d,
+	0xd8, 0xd7, 0xa0, 0xff, 0x4e, 0x51, 0x97, 0x94, 0xd7, 0xdb, 0xa4, 0x6d, 0x39, 0xff, 0x00, 0xce,
+	0x7f, 0x69, 0x7c, 0x06, 0xe6, 0x3a, 0xdf, 0x8e, 0x90, 0x8b, 0x3c, 0x3b, 0x91, 0xbf, 0xf8, 0x39,
+	0x0c, 0xbf, 0x2d, 0x88, 0xc8, 0x47, 0x86, 0x8b, 0x3c, 0x67, 0xfa, 0xe0, 0x40, 0x7c, 0x26, 0xab,
+	0x89, 0x86, 0x5e, 0x1b, 0xaf, 0xd0, 0xf8, 0x8f, 0x01, 0x43, 0x95, 0xc4, 0x01, 0x00, 0x15, 0x84,
+	0xcc, 0xb5, 0x80, 0x14, 0x3d, 0x9d, 0x9e, 0x1f, 0x08, 0xdc, 0x08, 0x42, 0x14, 0x7f, 0x3d, 0x48,
+	0x6c, 0xda, 0x05, 0xf8, 0x02, 0xee, 0x52, 0xb1, 0x49, 0xf3, 0x7a, 0xbe, 0x3b, 0x1f, 0x5d, 0x0f,
+	0x12, 0x47, 0x67, 0x7b, 0xa8, 0xe1, 0x75, 0x49, 0x8b, 0x16, 0x32, 0xe5, 0xe0, 0x12, 0xd2, 0x59,
+	0x0d, 0x3d, 0x05, 0x48, 0x19, 0xeb, 0xc6, 0x38, 0x71, 0x91, 0x77, 0x47, 0x1e, 0x25, 0x73, 0x1a,
+	0x78, 0xa3, 0x54, 0x44, 0xc6, 0x5b, 0x64, 0xa8, 0xac, 0x3e, 0x3c, 0xb2, 0xc7, 0x56, 0x5e, 0x64,
+	0xbc, 0x77, 0x49, 0xca, 0xa6, 0xeb, 0xb5, 0x54, 0xef, 0xa1, 0xcb, 0xa8, 0x6c, 0x78, 0xef, 0x92,
+	0x74, 0x41, 0x68, 0xc1, 0xc9, 0xba, 0xa4, 0xcb, 0x71, 0x00, 0x76, 0x4f, 0x60, 0x1f, 0x2c, 0x25,
+	0xd6, 0xdd, 0xe8, 0xb1, 0xa5, 0xb7, 0xd4, 0xb3, 0x47, 0x60, 0xf7, 0x4b, 0xc4, 0xa7, 0x00, 0x37,
+	0xb7, 0x51, 0x34, 0x9f, 0xbd, 0x8d, 0x6e, 0x2f, 0xcf, 0x06, 0xe1, 0x0f, 0x04, 0xf7, 0x33, 0xb6,
+	0xd9, 0x97, 0x08, 0x1d, 0xed, 0x26, 0x96, 0x71, 0x8c, 0xbe, 0xbc, 0x28, 0x4a, 0xfe, 0x55, 0xa4,
+	0x7e, 0xc6, 0x36, 0x93, 0x82, 0x91, 0x05, 0x2d, 0x76, 0x4f, 0xb1, 0xe2, 0xdb, 0x2a, 0x6f, 0xda,
+	0x17, 0x19, 0xe8, 0x4f, 0x95, 0xfe, 0x45, 0xe8, 0x97, 0x61, 0x5e, 0xc5, 0xe1, 0x6f, 0xe3, 0xc9,
+	0x95, 0x16, 0x8f, 0xbb, 0xf9, 0x3e, 0xe7, 0x84, 0xbc, 0xa7, 0xec, 0x3b, 0xfd, 0x24, 0x3b, 0x53,
+	0x4b, 0x49, 0xbd, 0xfc, 0x17, 0x00, 0x00, 0xff, 0xff, 0xe8, 0x1b, 0x59, 0xf8, 0xe5, 0x02, 0x00,
+	0x00,
+}
diff --git a/ptypes/struct/struct.proto b/ptypes/struct/struct.proto
new file mode 100644
index 0000000..ed990e3
--- /dev/null
+++ b/ptypes/struct/struct.proto
@@ -0,0 +1,95 @@
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc.  All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+package google.protobuf;
+
+option csharp_namespace = "Google.Protobuf.WellKnownTypes";
+option cc_enable_arenas = true;
+option go_package = "github.com/golang/protobuf/ptypes/struct;structpb";
+option java_package = "com.google.protobuf";
+option java_outer_classname = "StructProto";
+option java_multiple_files = true;
+option objc_class_prefix = "GPB";
+
+// `Struct` represents a structured data value, consisting of fields
+// which map to dynamically typed values. In some languages, `Struct`
+// might be supported by a native representation. For example, in
+// scripting languages like JS a struct is represented as an
+// object. The details of that representation are described together
+// with the proto support for the language.
+//
+// The JSON representation for `Struct` is JSON object.
+message Struct {
+  // Unordered map of dynamically typed values.
+  map<string, Value> fields = 1;
+}
+
+// `Value` represents a dynamically typed value which can be either
+// null, a number, a string, a boolean, a recursive struct value, or a
+// list of values. A producer of value is expected to set one of that
+// variants, absence of any variant indicates an error.
+//
+// The JSON representation for `Value` is JSON value.
+message Value {
+  // The kind of value.
+  oneof kind {
+    // Represents a null value.
+    NullValue null_value = 1;
+    // Represents a double value.
+    double number_value = 2;
+    // Represents a string value.
+    string string_value = 3;
+    // Represents a boolean value.
+    bool bool_value = 4;
+    // Represents a structured value.
+    Struct struct_value = 5;
+    // Represents a repeated `Value`.
+    ListValue list_value = 6;
+  }
+}
+
+// `NullValue` is a singleton enumeration to represent the null value for the
+// `Value` type union.
+//
+//  The JSON representation for `NullValue` is JSON `null`.
+enum NullValue {
+  // Null value.
+  NULL_VALUE = 0;
+}
+
+// `ListValue` is a wrapper around a repeated field of values.
+//
+// The JSON representation for `ListValue` is JSON array.
+message ListValue {
+  // Repeated field of dynamically typed values.
+  repeated Value values = 1;
+}
diff --git a/ptypes/timestamp.go b/ptypes/timestamp.go
new file mode 100644
index 0000000..8da0df0
--- /dev/null
+++ b/ptypes/timestamp.go
@@ -0,0 +1,132 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2016 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package ptypes
+
+// This file implements operations on google.protobuf.Timestamp.
+
+import (
+	"errors"
+	"fmt"
+	"time"
+
+	tspb "github.com/golang/protobuf/ptypes/timestamp"
+)
+
+const (
+	// Seconds field of the earliest valid Timestamp.
+	// This is time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC).Unix().
+	minValidSeconds = -62135596800
+	// Seconds field just after the latest valid Timestamp.
+	// This is time.Date(10000, 1, 1, 0, 0, 0, 0, time.UTC).Unix().
+	maxValidSeconds = 253402300800
+)
+
+// validateTimestamp determines whether a Timestamp is valid.
+// A valid timestamp represents a time in the range
+// [0001-01-01, 10000-01-01) and has a Nanos field
+// in the range [0, 1e9).
+//
+// If the Timestamp is valid, validateTimestamp returns nil.
+// Otherwise, it returns an error that describes
+// the problem.
+//
+// Every valid Timestamp can be represented by a time.Time, but the converse is not true.
+func validateTimestamp(ts *tspb.Timestamp) error {
+	if ts == nil {
+		return errors.New("timestamp: nil Timestamp")
+	}
+	if ts.Seconds < minValidSeconds {
+		return fmt.Errorf("timestamp: %v before 0001-01-01", ts)
+	}
+	if ts.Seconds >= maxValidSeconds {
+		return fmt.Errorf("timestamp: %v after 10000-01-01", ts)
+	}
+	if ts.Nanos < 0 || ts.Nanos >= 1e9 {
+		return fmt.Errorf("timestamp: %v: nanos not in range [0, 1e9)", ts)
+	}
+	return nil
+}
+
+// Timestamp converts a google.protobuf.Timestamp proto to a time.Time.
+// It returns an error if the argument is invalid.
+//
+// Unlike most Go functions, if Timestamp returns an error, the first return value
+// is not the zero time.Time. Instead, it is the value obtained from the
+// time.Unix function when passed the contents of the Timestamp, in the UTC
+// locale. This may or may not be a meaningful time; many invalid Timestamps
+// do map to valid time.Times.
+//
+// A nil Timestamp returns an error. The first return value in that case is
+// undefined.
+func Timestamp(ts *tspb.Timestamp) (time.Time, error) {
+	// Don't return the zero value on error, because corresponds to a valid
+	// timestamp. Instead return whatever time.Unix gives us.
+	var t time.Time
+	if ts == nil {
+		t = time.Unix(0, 0).UTC() // treat nil like the empty Timestamp
+	} else {
+		t = time.Unix(ts.Seconds, int64(ts.Nanos)).UTC()
+	}
+	return t, validateTimestamp(ts)
+}
+
+// TimestampNow returns a google.protobuf.Timestamp for the current time.
+func TimestampNow() *tspb.Timestamp {
+	ts, err := TimestampProto(time.Now())
+	if err != nil {
+		panic("ptypes: time.Now() out of Timestamp range")
+	}
+	return ts
+}
+
+// TimestampProto converts the time.Time to a google.protobuf.Timestamp proto.
+// It returns an error if the resulting Timestamp is invalid.
+func TimestampProto(t time.Time) (*tspb.Timestamp, error) {
+	ts := &tspb.Timestamp{
+		Seconds: t.Unix(),
+		Nanos:   int32(t.Nanosecond()),
+	}
+	if err := validateTimestamp(ts); err != nil {
+		return nil, err
+	}
+	return ts, nil
+}
+
+// TimestampString returns the RFC 3339 string for valid Timestamps. For invalid
+// Timestamps, it returns an error message in parentheses.
+func TimestampString(ts *tspb.Timestamp) string {
+	t, err := Timestamp(ts)
+	if err != nil {
+		return fmt.Sprintf("(%v)", err)
+	}
+	return t.Format(time.RFC3339Nano)
+}
diff --git a/ptypes/timestamp/timestamp.pb.go b/ptypes/timestamp/timestamp.pb.go
new file mode 100644
index 0000000..7a3b1e4
--- /dev/null
+++ b/ptypes/timestamp/timestamp.pb.go
@@ -0,0 +1,185 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/protobuf/timestamp.proto
+
+package timestamp
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+// A Timestamp represents a point in time independent of any time zone or local
+// calendar, encoded as a count of seconds and fractions of seconds at
+// nanosecond resolution. The count is relative to an epoch at UTC midnight on
+// January 1, 1970, in the proleptic Gregorian calendar which extends the
+// Gregorian calendar backwards to year one.
+//
+// All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap
+// second table is needed for interpretation, using a [24-hour linear
+// smear](https://developers.google.com/time/smear).
+//
+// The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
+// restricting to that range, we ensure that we can convert to and from [RFC
+// 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
+//
+// # Examples
+//
+// Example 1: Compute Timestamp from POSIX `time()`.
+//
+//     Timestamp timestamp;
+//     timestamp.set_seconds(time(NULL));
+//     timestamp.set_nanos(0);
+//
+// Example 2: Compute Timestamp from POSIX `gettimeofday()`.
+//
+//     struct timeval tv;
+//     gettimeofday(&tv, NULL);
+//
+//     Timestamp timestamp;
+//     timestamp.set_seconds(tv.tv_sec);
+//     timestamp.set_nanos(tv.tv_usec * 1000);
+//
+// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
+//
+//     FILETIME ft;
+//     GetSystemTimeAsFileTime(&ft);
+//     UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
+//
+//     // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
+//     // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
+//     Timestamp timestamp;
+//     timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
+//     timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
+//
+// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
+//
+//     long millis = System.currentTimeMillis();
+//
+//     Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
+//         .setNanos((int) ((millis % 1000) * 1000000)).build();
+//
+//
+// Example 5: Compute Timestamp from current time in Python.
+//
+//     timestamp = Timestamp()
+//     timestamp.GetCurrentTime()
+//
+// # JSON Mapping
+//
+// In JSON format, the Timestamp type is encoded as a string in the
+// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the
+// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
+// where {year} is always expressed using four digits while {month}, {day},
+// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
+// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
+// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
+// is required. A proto3 JSON serializer should always use UTC (as indicated by
+// "Z") when printing the Timestamp type and a proto3 JSON parser should be
+// able to accept both UTC and other timezones (as indicated by an offset).
+//
+// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
+// 01:30 UTC on January 15, 2017.
+//
+// In JavaScript, one can convert a Date object to this format using the
+// standard
+// [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)
+// method. In Python, a standard `datetime.datetime` object can be converted
+// to this format using
+// [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with
+// the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use
+// the Joda Time's [`ISODateTimeFormat.dateTime()`](
+// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D
+// ) to obtain a formatter capable of generating timestamps in this format.
+//
+//
+type Timestamp struct {
+	// Represents seconds of UTC time since Unix epoch
+	// 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
+	// 9999-12-31T23:59:59Z inclusive.
+	Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"`
+	// Non-negative fractions of a second at nanosecond resolution. Negative
+	// second values with fractions must still have non-negative nanos values
+	// that count forward in time. Must be from 0 to 999,999,999
+	// inclusive.
+	Nanos                int32    `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Timestamp) Reset()         { *m = Timestamp{} }
+func (m *Timestamp) String() string { return proto.CompactTextString(m) }
+func (*Timestamp) ProtoMessage()    {}
+func (*Timestamp) Descriptor() ([]byte, []int) {
+	return fileDescriptor_292007bbfe81227e, []int{0}
+}
+
+func (*Timestamp) XXX_WellKnownType() string { return "Timestamp" }
+
+func (m *Timestamp) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Timestamp.Unmarshal(m, b)
+}
+func (m *Timestamp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Timestamp.Marshal(b, m, deterministic)
+}
+func (m *Timestamp) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Timestamp.Merge(m, src)
+}
+func (m *Timestamp) XXX_Size() int {
+	return xxx_messageInfo_Timestamp.Size(m)
+}
+func (m *Timestamp) XXX_DiscardUnknown() {
+	xxx_messageInfo_Timestamp.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Timestamp proto.InternalMessageInfo
+
+func (m *Timestamp) GetSeconds() int64 {
+	if m != nil {
+		return m.Seconds
+	}
+	return 0
+}
+
+func (m *Timestamp) GetNanos() int32 {
+	if m != nil {
+		return m.Nanos
+	}
+	return 0
+}
+
+func init() {
+	proto.RegisterType((*Timestamp)(nil), "google.protobuf.Timestamp")
+}
+
+func init() {
+	proto.RegisterFile("google/protobuf/timestamp.proto", fileDescriptor_292007bbfe81227e)
+}
+
+var fileDescriptor_292007bbfe81227e = []byte{
+	// 191 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4f, 0xcf, 0xcf, 0x4f,
+	0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0xc9, 0xcc, 0x4d,
+	0x2d, 0x2e, 0x49, 0xcc, 0x2d, 0xd0, 0x03, 0x0b, 0x09, 0xf1, 0x43, 0x14, 0xe8, 0xc1, 0x14, 0x28,
+	0x59, 0x73, 0x71, 0x86, 0xc0, 0xd4, 0x08, 0x49, 0x70, 0xb1, 0x17, 0xa7, 0x26, 0xe7, 0xe7, 0xa5,
+	0x14, 0x4b, 0x30, 0x2a, 0x30, 0x6a, 0x30, 0x07, 0xc1, 0xb8, 0x42, 0x22, 0x5c, 0xac, 0x79, 0x89,
+	0x79, 0xf9, 0xc5, 0x12, 0x4c, 0x0a, 0x8c, 0x1a, 0xac, 0x41, 0x10, 0x8e, 0x53, 0x1d, 0x97, 0x70,
+	0x72, 0x7e, 0xae, 0x1e, 0x9a, 0x99, 0x4e, 0x7c, 0x70, 0x13, 0x03, 0x40, 0x42, 0x01, 0x8c, 0x51,
+	0xda, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x7a, 0xc9, 0xf9, 0xb9, 0xfa, 0xe9, 0xf9, 0x39, 0x89,
+	0x79, 0xe9, 0x08, 0x27, 0x16, 0x94, 0x54, 0x16, 0xa4, 0x16, 0x23, 0x5c, 0xfa, 0x83, 0x91, 0x71,
+	0x11, 0x13, 0xb3, 0x7b, 0x80, 0xd3, 0x2a, 0x26, 0x39, 0x77, 0x88, 0xc9, 0x01, 0x50, 0xb5, 0x7a,
+	0xe1, 0xa9, 0x39, 0x39, 0xde, 0x79, 0xf9, 0xe5, 0x79, 0x21, 0x20, 0x3d, 0x49, 0x6c, 0x60, 0x43,
+	0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xbc, 0x77, 0x4a, 0x07, 0xf7, 0x00, 0x00, 0x00,
+}
diff --git a/ptypes/timestamp/timestamp.proto b/ptypes/timestamp/timestamp.proto
new file mode 100644
index 0000000..cd35786
--- /dev/null
+++ b/ptypes/timestamp/timestamp.proto
@@ -0,0 +1,138 @@
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc.  All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+syntax = "proto3";
+
+package google.protobuf;
+
+option csharp_namespace = "Google.Protobuf.WellKnownTypes";
+option cc_enable_arenas = true;
+option go_package = "github.com/golang/protobuf/ptypes/timestamp";
+option java_package = "com.google.protobuf";
+option java_outer_classname = "TimestampProto";
+option java_multiple_files = true;
+option objc_class_prefix = "GPB";
+
+// A Timestamp represents a point in time independent of any time zone or local
+// calendar, encoded as a count of seconds and fractions of seconds at
+// nanosecond resolution. The count is relative to an epoch at UTC midnight on
+// January 1, 1970, in the proleptic Gregorian calendar which extends the
+// Gregorian calendar backwards to year one.
+//
+// All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap
+// second table is needed for interpretation, using a [24-hour linear
+// smear](https://developers.google.com/time/smear).
+//
+// The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
+// restricting to that range, we ensure that we can convert to and from [RFC
+// 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
+//
+// # Examples
+//
+// Example 1: Compute Timestamp from POSIX `time()`.
+//
+//     Timestamp timestamp;
+//     timestamp.set_seconds(time(NULL));
+//     timestamp.set_nanos(0);
+//
+// Example 2: Compute Timestamp from POSIX `gettimeofday()`.
+//
+//     struct timeval tv;
+//     gettimeofday(&tv, NULL);
+//
+//     Timestamp timestamp;
+//     timestamp.set_seconds(tv.tv_sec);
+//     timestamp.set_nanos(tv.tv_usec * 1000);
+//
+// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
+//
+//     FILETIME ft;
+//     GetSystemTimeAsFileTime(&ft);
+//     UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
+//
+//     // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
+//     // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
+//     Timestamp timestamp;
+//     timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
+//     timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
+//
+// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
+//
+//     long millis = System.currentTimeMillis();
+//
+//     Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
+//         .setNanos((int) ((millis % 1000) * 1000000)).build();
+//
+//
+// Example 5: Compute Timestamp from current time in Python.
+//
+//     timestamp = Timestamp()
+//     timestamp.GetCurrentTime()
+//
+// # JSON Mapping
+//
+// In JSON format, the Timestamp type is encoded as a string in the
+// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the
+// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
+// where {year} is always expressed using four digits while {month}, {day},
+// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
+// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
+// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
+// is required. A proto3 JSON serializer should always use UTC (as indicated by
+// "Z") when printing the Timestamp type and a proto3 JSON parser should be
+// able to accept both UTC and other timezones (as indicated by an offset).
+//
+// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
+// 01:30 UTC on January 15, 2017.
+//
+// In JavaScript, one can convert a Date object to this format using the
+// standard
+// [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)
+// method. In Python, a standard `datetime.datetime` object can be converted
+// to this format using
+// [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with
+// the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use
+// the Joda Time's [`ISODateTimeFormat.dateTime()`](
+// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D
+// ) to obtain a formatter capable of generating timestamps in this format.
+//
+//
+message Timestamp {
+  // Represents seconds of UTC time since Unix epoch
+  // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
+  // 9999-12-31T23:59:59Z inclusive.
+  int64 seconds = 1;
+
+  // Non-negative fractions of a second at nanosecond resolution. Negative
+  // second values with fractions must still have non-negative nanos values
+  // that count forward in time. Must be from 0 to 999,999,999
+  // inclusive.
+  int32 nanos = 2;
+}
diff --git a/ptypes/timestamp_test.go b/ptypes/timestamp_test.go
new file mode 100644
index 0000000..6e3c969
--- /dev/null
+++ b/ptypes/timestamp_test.go
@@ -0,0 +1,153 @@
+// Go support for Protocol Buffers - Google's data interchange format
+//
+// Copyright 2016 The Go Authors.  All rights reserved.
+// https://github.com/golang/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+package ptypes
+
+import (
+	"math"
+	"testing"
+	"time"
+
+	"github.com/golang/protobuf/proto"
+	tspb "github.com/golang/protobuf/ptypes/timestamp"
+)
+
+var tests = []struct {
+	ts    *tspb.Timestamp
+	valid bool
+	t     time.Time
+}{
+	// The timestamp representing the Unix epoch date.
+	{&tspb.Timestamp{Seconds: 0, Nanos: 0}, true, utcDate(1970, 1, 1)},
+	// The smallest representable timestamp.
+	{&tspb.Timestamp{Seconds: math.MinInt64, Nanos: math.MinInt32}, false,
+		time.Unix(math.MinInt64, math.MinInt32).UTC()},
+	// The smallest representable timestamp with non-negative nanos.
+	{&tspb.Timestamp{Seconds: math.MinInt64, Nanos: 0}, false, time.Unix(math.MinInt64, 0).UTC()},
+	// The earliest valid timestamp.
+	{&tspb.Timestamp{Seconds: minValidSeconds, Nanos: 0}, true, utcDate(1, 1, 1)},
+	//"0001-01-01T00:00:00Z"},
+	// The largest representable timestamp.
+	{&tspb.Timestamp{Seconds: math.MaxInt64, Nanos: math.MaxInt32}, false,
+		time.Unix(math.MaxInt64, math.MaxInt32).UTC()},
+	// The largest representable timestamp with nanos in range.
+	{&tspb.Timestamp{Seconds: math.MaxInt64, Nanos: 1e9 - 1}, false,
+		time.Unix(math.MaxInt64, 1e9-1).UTC()},
+	// The largest valid timestamp.
+	{&tspb.Timestamp{Seconds: maxValidSeconds - 1, Nanos: 1e9 - 1}, true,
+		time.Date(9999, 12, 31, 23, 59, 59, 1e9-1, time.UTC)},
+	// The smallest invalid timestamp that is larger than the valid range.
+	{&tspb.Timestamp{Seconds: maxValidSeconds, Nanos: 0}, false, time.Unix(maxValidSeconds, 0).UTC()},
+	// A date before the epoch.
+	{&tspb.Timestamp{Seconds: -281836800, Nanos: 0}, true, utcDate(1961, 1, 26)},
+	// A date after the epoch.
+	{&tspb.Timestamp{Seconds: 1296000000, Nanos: 0}, true, utcDate(2011, 1, 26)},
+	// A date after the epoch, in the middle of the day.
+	{&tspb.Timestamp{Seconds: 1296012345, Nanos: 940483}, true,
+		time.Date(2011, 1, 26, 3, 25, 45, 940483, time.UTC)},
+}
+
+func TestValidateTimestamp(t *testing.T) {
+	for _, s := range tests {
+		got := validateTimestamp(s.ts)
+		if (got == nil) != s.valid {
+			t.Errorf("validateTimestamp(%v) = %v, want %v", s.ts, got, s.valid)
+		}
+	}
+}
+
+func TestTimestamp(t *testing.T) {
+	for _, s := range tests {
+		got, err := Timestamp(s.ts)
+		if (err == nil) != s.valid {
+			t.Errorf("Timestamp(%v) error = %v, but valid = %t", s.ts, err, s.valid)
+		} else if s.valid && got != s.t {
+			t.Errorf("Timestamp(%v) = %v, want %v", s.ts, got, s.t)
+		}
+	}
+	// Special case: a nil Timestamp is an error, but returns the 0 Unix time.
+	got, err := Timestamp(nil)
+	want := time.Unix(0, 0).UTC()
+	if got != want {
+		t.Errorf("Timestamp(nil) = %v, want %v", got, want)
+	}
+	if err == nil {
+		t.Errorf("Timestamp(nil) error = nil, expected error")
+	}
+}
+
+func TestTimestampProto(t *testing.T) {
+	for _, s := range tests {
+		got, err := TimestampProto(s.t)
+		if (err == nil) != s.valid {
+			t.Errorf("TimestampProto(%v) error = %v, but valid = %t", s.t, err, s.valid)
+		} else if s.valid && !proto.Equal(got, s.ts) {
+			t.Errorf("TimestampProto(%v) = %v, want %v", s.t, got, s.ts)
+		}
+	}
+	// No corresponding special case here: no time.Time results in a nil Timestamp.
+}
+
+func TestTimestampString(t *testing.T) {
+	for _, test := range []struct {
+		ts   *tspb.Timestamp
+		want string
+	}{
+		// Not much testing needed because presumably time.Format is
+		// well-tested.
+		{&tspb.Timestamp{Seconds: 0, Nanos: 0}, "1970-01-01T00:00:00Z"},
+		{&tspb.Timestamp{Seconds: minValidSeconds - 1, Nanos: 0}, "(timestamp: seconds:-62135596801  before 0001-01-01)"},
+	} {
+		got := TimestampString(test.ts)
+		if got != test.want {
+			t.Errorf("TimestampString(%v) = %q, want %q", test.ts, got, test.want)
+		}
+	}
+}
+
+func utcDate(year, month, day int) time.Time {
+	return time.Date(year, time.Month(month), day, 0, 0, 0, 0, time.UTC)
+}
+
+func TestTimestampNow(t *testing.T) {
+	// Bracket the expected time.
+	before := time.Now()
+	ts := TimestampNow()
+	after := time.Now()
+
+	tm, err := Timestamp(ts)
+	if err != nil {
+		t.Errorf("between %v and %v\nTimestampNow() = %v\nwhich is invalid (%v)", before, after, ts, err)
+	}
+	if tm.Before(before) || tm.After(after) {
+		t.Errorf("between %v and %v\nTimestamp(TimestampNow()) = %v", before, after, tm)
+	}
+}
diff --git a/ptypes/wrappers/wrappers.pb.go b/ptypes/wrappers/wrappers.pb.go
new file mode 100644
index 0000000..968ff31
--- /dev/null
+++ b/ptypes/wrappers/wrappers.pb.go
@@ -0,0 +1,463 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/protobuf/wrappers.proto
+
+package wrappers
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	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
+
+// Wrapper message for `double`.
+//
+// The JSON representation for `DoubleValue` is JSON number.
+type DoubleValue struct {
+	// The double value.
+	Value                float64  `protobuf:"fixed64,1,opt,name=value,proto3" json:"value,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *DoubleValue) Reset()         { *m = DoubleValue{} }
+func (m *DoubleValue) String() string { return proto.CompactTextString(m) }
+func (*DoubleValue) ProtoMessage()    {}
+func (*DoubleValue) Descriptor() ([]byte, []int) {
+	return fileDescriptor_5377b62bda767935, []int{0}
+}
+
+func (*DoubleValue) XXX_WellKnownType() string { return "DoubleValue" }
+
+func (m *DoubleValue) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DoubleValue.Unmarshal(m, b)
+}
+func (m *DoubleValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DoubleValue.Marshal(b, m, deterministic)
+}
+func (m *DoubleValue) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DoubleValue.Merge(m, src)
+}
+func (m *DoubleValue) XXX_Size() int {
+	return xxx_messageInfo_DoubleValue.Size(m)
+}
+func (m *DoubleValue) XXX_DiscardUnknown() {
+	xxx_messageInfo_DoubleValue.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DoubleValue proto.InternalMessageInfo
+
+func (m *DoubleValue) GetValue() float64 {
+	if m != nil {
+		return m.Value
+	}
+	return 0
+}
+
+// Wrapper message for `float`.
+//
+// The JSON representation for `FloatValue` is JSON number.
+type FloatValue struct {
+	// The float value.
+	Value                float32  `protobuf:"fixed32,1,opt,name=value,proto3" json:"value,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *FloatValue) Reset()         { *m = FloatValue{} }
+func (m *FloatValue) String() string { return proto.CompactTextString(m) }
+func (*FloatValue) ProtoMessage()    {}
+func (*FloatValue) Descriptor() ([]byte, []int) {
+	return fileDescriptor_5377b62bda767935, []int{1}
+}
+
+func (*FloatValue) XXX_WellKnownType() string { return "FloatValue" }
+
+func (m *FloatValue) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_FloatValue.Unmarshal(m, b)
+}
+func (m *FloatValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_FloatValue.Marshal(b, m, deterministic)
+}
+func (m *FloatValue) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FloatValue.Merge(m, src)
+}
+func (m *FloatValue) XXX_Size() int {
+	return xxx_messageInfo_FloatValue.Size(m)
+}
+func (m *FloatValue) XXX_DiscardUnknown() {
+	xxx_messageInfo_FloatValue.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FloatValue proto.InternalMessageInfo
+
+func (m *FloatValue) GetValue() float32 {
+	if m != nil {
+		return m.Value
+	}
+	return 0
+}
+
+// Wrapper message for `int64`.
+//
+// The JSON representation for `Int64Value` is JSON string.
+type Int64Value struct {
+	// The int64 value.
+	Value                int64    `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Int64Value) Reset()         { *m = Int64Value{} }
+func (m *Int64Value) String() string { return proto.CompactTextString(m) }
+func (*Int64Value) ProtoMessage()    {}
+func (*Int64Value) Descriptor() ([]byte, []int) {
+	return fileDescriptor_5377b62bda767935, []int{2}
+}
+
+func (*Int64Value) XXX_WellKnownType() string { return "Int64Value" }
+
+func (m *Int64Value) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Int64Value.Unmarshal(m, b)
+}
+func (m *Int64Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Int64Value.Marshal(b, m, deterministic)
+}
+func (m *Int64Value) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Int64Value.Merge(m, src)
+}
+func (m *Int64Value) XXX_Size() int {
+	return xxx_messageInfo_Int64Value.Size(m)
+}
+func (m *Int64Value) XXX_DiscardUnknown() {
+	xxx_messageInfo_Int64Value.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Int64Value proto.InternalMessageInfo
+
+func (m *Int64Value) GetValue() int64 {
+	if m != nil {
+		return m.Value
+	}
+	return 0
+}
+
+// Wrapper message for `uint64`.
+//
+// The JSON representation for `UInt64Value` is JSON string.
+type UInt64Value struct {
+	// The uint64 value.
+	Value                uint64   `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *UInt64Value) Reset()         { *m = UInt64Value{} }
+func (m *UInt64Value) String() string { return proto.CompactTextString(m) }
+func (*UInt64Value) ProtoMessage()    {}
+func (*UInt64Value) Descriptor() ([]byte, []int) {
+	return fileDescriptor_5377b62bda767935, []int{3}
+}
+
+func (*UInt64Value) XXX_WellKnownType() string { return "UInt64Value" }
+
+func (m *UInt64Value) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UInt64Value.Unmarshal(m, b)
+}
+func (m *UInt64Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UInt64Value.Marshal(b, m, deterministic)
+}
+func (m *UInt64Value) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UInt64Value.Merge(m, src)
+}
+func (m *UInt64Value) XXX_Size() int {
+	return xxx_messageInfo_UInt64Value.Size(m)
+}
+func (m *UInt64Value) XXX_DiscardUnknown() {
+	xxx_messageInfo_UInt64Value.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UInt64Value proto.InternalMessageInfo
+
+func (m *UInt64Value) GetValue() uint64 {
+	if m != nil {
+		return m.Value
+	}
+	return 0
+}
+
+// Wrapper message for `int32`.
+//
+// The JSON representation for `Int32Value` is JSON number.
+type Int32Value struct {
+	// The int32 value.
+	Value                int32    `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Int32Value) Reset()         { *m = Int32Value{} }
+func (m *Int32Value) String() string { return proto.CompactTextString(m) }
+func (*Int32Value) ProtoMessage()    {}
+func (*Int32Value) Descriptor() ([]byte, []int) {
+	return fileDescriptor_5377b62bda767935, []int{4}
+}
+
+func (*Int32Value) XXX_WellKnownType() string { return "Int32Value" }
+
+func (m *Int32Value) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Int32Value.Unmarshal(m, b)
+}
+func (m *Int32Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Int32Value.Marshal(b, m, deterministic)
+}
+func (m *Int32Value) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Int32Value.Merge(m, src)
+}
+func (m *Int32Value) XXX_Size() int {
+	return xxx_messageInfo_Int32Value.Size(m)
+}
+func (m *Int32Value) XXX_DiscardUnknown() {
+	xxx_messageInfo_Int32Value.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Int32Value proto.InternalMessageInfo
+
+func (m *Int32Value) GetValue() int32 {
+	if m != nil {
+		return m.Value
+	}
+	return 0
+}
+
+// Wrapper message for `uint32`.
+//
+// The JSON representation for `UInt32Value` is JSON number.
+type UInt32Value struct {
+	// The uint32 value.
+	Value                uint32   `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *UInt32Value) Reset()         { *m = UInt32Value{} }
+func (m *UInt32Value) String() string { return proto.CompactTextString(m) }
+func (*UInt32Value) ProtoMessage()    {}
+func (*UInt32Value) Descriptor() ([]byte, []int) {
+	return fileDescriptor_5377b62bda767935, []int{5}
+}
+
+func (*UInt32Value) XXX_WellKnownType() string { return "UInt32Value" }
+
+func (m *UInt32Value) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UInt32Value.Unmarshal(m, b)
+}
+func (m *UInt32Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UInt32Value.Marshal(b, m, deterministic)
+}
+func (m *UInt32Value) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UInt32Value.Merge(m, src)
+}
+func (m *UInt32Value) XXX_Size() int {
+	return xxx_messageInfo_UInt32Value.Size(m)
+}
+func (m *UInt32Value) XXX_DiscardUnknown() {
+	xxx_messageInfo_UInt32Value.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UInt32Value proto.InternalMessageInfo
+
+func (m *UInt32Value) GetValue() uint32 {
+	if m != nil {
+		return m.Value
+	}
+	return 0
+}
+
+// Wrapper message for `bool`.
+//
+// The JSON representation for `BoolValue` is JSON `true` and `false`.
+type BoolValue struct {
+	// The bool value.
+	Value                bool     `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *BoolValue) Reset()         { *m = BoolValue{} }
+func (m *BoolValue) String() string { return proto.CompactTextString(m) }
+func (*BoolValue) ProtoMessage()    {}
+func (*BoolValue) Descriptor() ([]byte, []int) {
+	return fileDescriptor_5377b62bda767935, []int{6}
+}
+
+func (*BoolValue) XXX_WellKnownType() string { return "BoolValue" }
+
+func (m *BoolValue) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BoolValue.Unmarshal(m, b)
+}
+func (m *BoolValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BoolValue.Marshal(b, m, deterministic)
+}
+func (m *BoolValue) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BoolValue.Merge(m, src)
+}
+func (m *BoolValue) XXX_Size() int {
+	return xxx_messageInfo_BoolValue.Size(m)
+}
+func (m *BoolValue) XXX_DiscardUnknown() {
+	xxx_messageInfo_BoolValue.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BoolValue proto.InternalMessageInfo
+
+func (m *BoolValue) GetValue() bool {
+	if m != nil {
+		return m.Value
+	}
+	return false
+}
+
+// Wrapper message for `string`.
+//
+// The JSON representation for `StringValue` is JSON string.
+type StringValue struct {
+	// The string value.
+	Value                string   `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *StringValue) Reset()         { *m = StringValue{} }
+func (m *StringValue) String() string { return proto.CompactTextString(m) }
+func (*StringValue) ProtoMessage()    {}
+func (*StringValue) Descriptor() ([]byte, []int) {
+	return fileDescriptor_5377b62bda767935, []int{7}
+}
+
+func (*StringValue) XXX_WellKnownType() string { return "StringValue" }
+
+func (m *StringValue) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StringValue.Unmarshal(m, b)
+}
+func (m *StringValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StringValue.Marshal(b, m, deterministic)
+}
+func (m *StringValue) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StringValue.Merge(m, src)
+}
+func (m *StringValue) XXX_Size() int {
+	return xxx_messageInfo_StringValue.Size(m)
+}
+func (m *StringValue) XXX_DiscardUnknown() {
+	xxx_messageInfo_StringValue.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_StringValue proto.InternalMessageInfo
+
+func (m *StringValue) GetValue() string {
+	if m != nil {
+		return m.Value
+	}
+	return ""
+}
+
+// Wrapper message for `bytes`.
+//
+// The JSON representation for `BytesValue` is JSON string.
+type BytesValue struct {
+	// The bytes value.
+	Value                []byte   `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *BytesValue) Reset()         { *m = BytesValue{} }
+func (m *BytesValue) String() string { return proto.CompactTextString(m) }
+func (*BytesValue) ProtoMessage()    {}
+func (*BytesValue) Descriptor() ([]byte, []int) {
+	return fileDescriptor_5377b62bda767935, []int{8}
+}
+
+func (*BytesValue) XXX_WellKnownType() string { return "BytesValue" }
+
+func (m *BytesValue) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BytesValue.Unmarshal(m, b)
+}
+func (m *BytesValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BytesValue.Marshal(b, m, deterministic)
+}
+func (m *BytesValue) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BytesValue.Merge(m, src)
+}
+func (m *BytesValue) XXX_Size() int {
+	return xxx_messageInfo_BytesValue.Size(m)
+}
+func (m *BytesValue) XXX_DiscardUnknown() {
+	xxx_messageInfo_BytesValue.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BytesValue proto.InternalMessageInfo
+
+func (m *BytesValue) GetValue() []byte {
+	if m != nil {
+		return m.Value
+	}
+	return nil
+}
+
+func init() {
+	proto.RegisterType((*DoubleValue)(nil), "google.protobuf.DoubleValue")
+	proto.RegisterType((*FloatValue)(nil), "google.protobuf.FloatValue")
+	proto.RegisterType((*Int64Value)(nil), "google.protobuf.Int64Value")
+	proto.RegisterType((*UInt64Value)(nil), "google.protobuf.UInt64Value")
+	proto.RegisterType((*Int32Value)(nil), "google.protobuf.Int32Value")
+	proto.RegisterType((*UInt32Value)(nil), "google.protobuf.UInt32Value")
+	proto.RegisterType((*BoolValue)(nil), "google.protobuf.BoolValue")
+	proto.RegisterType((*StringValue)(nil), "google.protobuf.StringValue")
+	proto.RegisterType((*BytesValue)(nil), "google.protobuf.BytesValue")
+}
+
+func init() {
+	proto.RegisterFile("google/protobuf/wrappers.proto", fileDescriptor_5377b62bda767935)
+}
+
+var fileDescriptor_5377b62bda767935 = []byte{
+	// 259 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4b, 0xcf, 0xcf, 0x4f,
+	0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x2f, 0x4a, 0x2c,
+	0x28, 0x48, 0x2d, 0x2a, 0xd6, 0x03, 0x8b, 0x08, 0xf1, 0x43, 0xe4, 0xf5, 0x60, 0xf2, 0x4a, 0xca,
+	0x5c, 0xdc, 0x2e, 0xf9, 0xa5, 0x49, 0x39, 0xa9, 0x61, 0x89, 0x39, 0xa5, 0xa9, 0x42, 0x22, 0x5c,
+	0xac, 0x65, 0x20, 0x86, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0x63, 0x10, 0x84, 0xa3, 0xa4, 0xc4, 0xc5,
+	0xe5, 0x96, 0x93, 0x9f, 0x58, 0x82, 0x45, 0x0d, 0x13, 0x92, 0x1a, 0xcf, 0xbc, 0x12, 0x33, 0x13,
+	0x2c, 0x6a, 0x98, 0x61, 0x6a, 0x94, 0xb9, 0xb8, 0x43, 0x71, 0x29, 0x62, 0x41, 0x35, 0xc8, 0xd8,
+	0x08, 0x8b, 0x1a, 0x56, 0x34, 0x83, 0xb0, 0x2a, 0xe2, 0x85, 0x29, 0x52, 0xe4, 0xe2, 0x74, 0xca,
+	0xcf, 0xcf, 0xc1, 0xa2, 0x84, 0x03, 0xc9, 0x9c, 0xe0, 0x92, 0xa2, 0xcc, 0xbc, 0x74, 0x2c, 0x8a,
+	0x38, 0x91, 0x1c, 0xe4, 0x54, 0x59, 0x92, 0x5a, 0x8c, 0x45, 0x0d, 0x0f, 0x54, 0x8d, 0x53, 0x0d,
+	0x97, 0x70, 0x72, 0x7e, 0xae, 0x1e, 0x5a, 0xe8, 0x3a, 0xf1, 0x86, 0x43, 0x83, 0x3f, 0x00, 0x24,
+	0x12, 0xc0, 0x18, 0xa5, 0x95, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x9f,
+	0x9e, 0x9f, 0x93, 0x98, 0x97, 0x8e, 0x88, 0xaa, 0x82, 0x92, 0xca, 0x82, 0xd4, 0x62, 0x78, 0x8c,
+	0xfd, 0x60, 0x64, 0x5c, 0xc4, 0xc4, 0xec, 0x1e, 0xe0, 0xb4, 0x8a, 0x49, 0xce, 0x1d, 0x62, 0x6e,
+	0x00, 0x54, 0xa9, 0x5e, 0x78, 0x6a, 0x4e, 0x8e, 0x77, 0x5e, 0x7e, 0x79, 0x5e, 0x08, 0x48, 0x4b,
+	0x12, 0x1b, 0xd8, 0x0c, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x19, 0x6c, 0xb9, 0xb8, 0xfe,
+	0x01, 0x00, 0x00,
+}
diff --git a/ptypes/wrappers/wrappers.proto b/ptypes/wrappers/wrappers.proto
new file mode 100644
index 0000000..9ee41e3
--- /dev/null
+++ b/ptypes/wrappers/wrappers.proto
@@ -0,0 +1,123 @@
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc.  All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Wrappers for primitive (non-message) types. These types are useful
+// for embedding primitives in the `google.protobuf.Any` type and for places
+// where we need to distinguish between the absence of a primitive
+// typed field and its default value.
+//
+// These wrappers have no meaningful use within repeated fields as they lack
+// the ability to detect presence on individual elements.
+// These wrappers have no meaningful use within a map or a oneof since
+// individual entries of a map or fields of a oneof can already detect presence.
+
+syntax = "proto3";
+
+package google.protobuf;
+
+option csharp_namespace = "Google.Protobuf.WellKnownTypes";
+option cc_enable_arenas = true;
+option go_package = "github.com/golang/protobuf/ptypes/wrappers";
+option java_package = "com.google.protobuf";
+option java_outer_classname = "WrappersProto";
+option java_multiple_files = true;
+option objc_class_prefix = "GPB";
+
+// Wrapper message for `double`.
+//
+// The JSON representation for `DoubleValue` is JSON number.
+message DoubleValue {
+  // The double value.
+  double value = 1;
+}
+
+// Wrapper message for `float`.
+//
+// The JSON representation for `FloatValue` is JSON number.
+message FloatValue {
+  // The float value.
+  float value = 1;
+}
+
+// Wrapper message for `int64`.
+//
+// The JSON representation for `Int64Value` is JSON string.
+message Int64Value {
+  // The int64 value.
+  int64 value = 1;
+}
+
+// Wrapper message for `uint64`.
+//
+// The JSON representation for `UInt64Value` is JSON string.
+message UInt64Value {
+  // The uint64 value.
+  uint64 value = 1;
+}
+
+// Wrapper message for `int32`.
+//
+// The JSON representation for `Int32Value` is JSON number.
+message Int32Value {
+  // The int32 value.
+  int32 value = 1;
+}
+
+// Wrapper message for `uint32`.
+//
+// The JSON representation for `UInt32Value` is JSON number.
+message UInt32Value {
+  // The uint32 value.
+  uint32 value = 1;
+}
+
+// Wrapper message for `bool`.
+//
+// The JSON representation for `BoolValue` is JSON `true` and `false`.
+message BoolValue {
+  // The bool value.
+  bool value = 1;
+}
+
+// Wrapper message for `string`.
+//
+// The JSON representation for `StringValue` is JSON string.
+message StringValue {
+  // The string value.
+  string value = 1;
+}
+
+// Wrapper message for `bytes`.
+//
+// The JSON representation for `BytesValue` is JSON string.
+message BytesValue {
+  // The bytes value.
+  bytes value = 1;
+}
diff --git a/reflect/protodesc/desc.go b/reflect/protodesc/desc.go
deleted file mode 100644
index e4dfb12..0000000
--- a/reflect/protodesc/desc.go
+++ /dev/null
@@ -1,276 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package protodesc provides functionality for converting
-// FileDescriptorProto messages to/from protoreflect.FileDescriptor values.
-//
-// The google.protobuf.FileDescriptorProto is a protobuf message that describes
-// the type information for a .proto file in a form that is easily serializable.
-// The protoreflect.FileDescriptor is a more structured representation of
-// the FileDescriptorProto message where references and remote dependencies
-// can be directly followed.
-package protodesc
-
-import (
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/internal/filedesc"
-	"google.golang.org/protobuf/internal/pragma"
-	"google.golang.org/protobuf/internal/strs"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/reflect/protoregistry"
-
-	"google.golang.org/protobuf/types/descriptorpb"
-)
-
-// Resolver is the resolver used by NewFile to resolve dependencies.
-// The enums and messages provided must belong to some parent file,
-// which is also registered.
-//
-// It is implemented by protoregistry.Files.
-type Resolver interface {
-	FindFileByPath(string) (protoreflect.FileDescriptor, error)
-	FindDescriptorByName(protoreflect.FullName) (protoreflect.Descriptor, error)
-}
-
-// FileOptions configures the construction of file descriptors.
-type FileOptions struct {
-	pragma.NoUnkeyedLiterals
-
-	// AllowUnresolvable configures New to permissively allow unresolvable
-	// file, enum, or message dependencies. Unresolved dependencies are replaced
-	// by placeholder equivalents.
-	//
-	// The following dependencies may be left unresolved:
-	//	• Resolving an imported file.
-	//	• Resolving the type for a message field or extension field.
-	//	If the kind of the field is unknown, then a placeholder is used for both
-	//	the Enum and Message accessors on the protoreflect.FieldDescriptor.
-	//	• Resolving an enum value set as the default for an optional enum field.
-	//	If unresolvable, the protoreflect.FieldDescriptor.Default is set to the
-	//	first value in the associated enum (or zero if the also enum dependency
-	//	is also unresolvable). The protoreflect.FieldDescriptor.DefaultEnumValue
-	//	is populated with a placeholder.
-	//	• Resolving the extended message type for an extension field.
-	//	• Resolving the input or output message type for a service method.
-	//
-	// If the unresolved dependency uses a relative name,
-	// then the placeholder will contain an invalid FullName with a "*." prefix,
-	// indicating that the starting prefix of the full name is unknown.
-	AllowUnresolvable bool
-}
-
-// NewFile creates a new protoreflect.FileDescriptor from the provided
-// file descriptor message. See FileOptions.New for more information.
-func NewFile(fd *descriptorpb.FileDescriptorProto, r Resolver) (protoreflect.FileDescriptor, error) {
-	return FileOptions{}.New(fd, r)
-}
-
-// NewFiles creates a new protoregistry.Files from the provided
-// FileDescriptorSet message. See FileOptions.NewFiles for more information.
-func NewFiles(fd *descriptorpb.FileDescriptorSet) (*protoregistry.Files, error) {
-	return FileOptions{}.NewFiles(fd)
-}
-
-// New creates a new protoreflect.FileDescriptor from the provided
-// file descriptor message. The file must represent a valid proto file according
-// to protobuf semantics. The returned descriptor is a deep copy of the input.
-//
-// Any imported files, enum types, or message types referenced in the file are
-// resolved using the provided registry. When looking up an import file path,
-// the path must be unique. The newly created file descriptor is not registered
-// back into the provided file registry.
-func (o FileOptions) New(fd *descriptorpb.FileDescriptorProto, r Resolver) (protoreflect.FileDescriptor, error) {
-	if r == nil {
-		r = (*protoregistry.Files)(nil) // empty resolver
-	}
-
-	// Handle the file descriptor content.
-	f := &filedesc.File{L2: &filedesc.FileL2{}}
-	switch fd.GetSyntax() {
-	case "proto2", "":
-		f.L1.Syntax = protoreflect.Proto2
-	case "proto3":
-		f.L1.Syntax = protoreflect.Proto3
-	default:
-		return nil, errors.New("invalid syntax: %q", fd.GetSyntax())
-	}
-	f.L1.Path = fd.GetName()
-	if f.L1.Path == "" {
-		return nil, errors.New("file path must be populated")
-	}
-	f.L1.Package = protoreflect.FullName(fd.GetPackage())
-	if !f.L1.Package.IsValid() && f.L1.Package != "" {
-		return nil, errors.New("invalid package: %q", f.L1.Package)
-	}
-	if opts := fd.GetOptions(); opts != nil {
-		opts = proto.Clone(opts).(*descriptorpb.FileOptions)
-		f.L2.Options = func() protoreflect.ProtoMessage { return opts }
-	}
-
-	f.L2.Imports = make(filedesc.FileImports, len(fd.GetDependency()))
-	for _, i := range fd.GetPublicDependency() {
-		if !(0 <= i && int(i) < len(f.L2.Imports)) || f.L2.Imports[i].IsPublic {
-			return nil, errors.New("invalid or duplicate public import index: %d", i)
-		}
-		f.L2.Imports[i].IsPublic = true
-	}
-	for _, i := range fd.GetWeakDependency() {
-		if !(0 <= i && int(i) < len(f.L2.Imports)) || f.L2.Imports[i].IsWeak {
-			return nil, errors.New("invalid or duplicate weak import index: %d", i)
-		}
-		f.L2.Imports[i].IsWeak = true
-	}
-	imps := importSet{f.Path(): true}
-	for i, path := range fd.GetDependency() {
-		imp := &f.L2.Imports[i]
-		f, err := r.FindFileByPath(path)
-		if err == protoregistry.NotFound && (o.AllowUnresolvable || imp.IsWeak) {
-			f = filedesc.PlaceholderFile(path)
-		} else if err != nil {
-			return nil, errors.New("could not resolve import %q: %v", path, err)
-		}
-		imp.FileDescriptor = f
-
-		if imps[imp.Path()] {
-			return nil, errors.New("already imported %q", path)
-		}
-		imps[imp.Path()] = true
-	}
-	for i := range fd.GetDependency() {
-		imp := &f.L2.Imports[i]
-		imps.importPublic(imp.Imports())
-	}
-
-	// Handle source locations.
-	f.L2.Locations.File = f
-	for _, loc := range fd.GetSourceCodeInfo().GetLocation() {
-		var l protoreflect.SourceLocation
-		// TODO: Validate that the path points to an actual declaration?
-		l.Path = protoreflect.SourcePath(loc.GetPath())
-		s := loc.GetSpan()
-		switch len(s) {
-		case 3:
-			l.StartLine, l.StartColumn, l.EndLine, l.EndColumn = int(s[0]), int(s[1]), int(s[0]), int(s[2])
-		case 4:
-			l.StartLine, l.StartColumn, l.EndLine, l.EndColumn = int(s[0]), int(s[1]), int(s[2]), int(s[3])
-		default:
-			return nil, errors.New("invalid span: %v", s)
-		}
-		// TODO: Validate that the span information is sensible?
-		// See https://github.com/protocolbuffers/protobuf/issues/6378.
-		if false && (l.EndLine < l.StartLine || l.StartLine < 0 || l.StartColumn < 0 || l.EndColumn < 0 ||
-			(l.StartLine == l.EndLine && l.EndColumn <= l.StartColumn)) {
-			return nil, errors.New("invalid span: %v", s)
-		}
-		l.LeadingDetachedComments = loc.GetLeadingDetachedComments()
-		l.LeadingComments = loc.GetLeadingComments()
-		l.TrailingComments = loc.GetTrailingComments()
-		f.L2.Locations.List = append(f.L2.Locations.List, l)
-	}
-
-	// Step 1: Allocate and derive the names for all declarations.
-	// This copies all fields from the descriptor proto except:
-	//	google.protobuf.FieldDescriptorProto.type_name
-	//	google.protobuf.FieldDescriptorProto.default_value
-	//	google.protobuf.FieldDescriptorProto.oneof_index
-	//	google.protobuf.FieldDescriptorProto.extendee
-	//	google.protobuf.MethodDescriptorProto.input
-	//	google.protobuf.MethodDescriptorProto.output
-	var err error
-	sb := new(strs.Builder)
-	r1 := make(descsByName)
-	if f.L1.Enums.List, err = r1.initEnumDeclarations(fd.GetEnumType(), f, sb); err != nil {
-		return nil, err
-	}
-	if f.L1.Messages.List, err = r1.initMessagesDeclarations(fd.GetMessageType(), f, sb); err != nil {
-		return nil, err
-	}
-	if f.L1.Extensions.List, err = r1.initExtensionDeclarations(fd.GetExtension(), f, sb); err != nil {
-		return nil, err
-	}
-	if f.L1.Services.List, err = r1.initServiceDeclarations(fd.GetService(), f, sb); err != nil {
-		return nil, err
-	}
-
-	// Step 2: Resolve every dependency reference not handled by step 1.
-	r2 := &resolver{local: r1, remote: r, imports: imps, allowUnresolvable: o.AllowUnresolvable}
-	if err := r2.resolveMessageDependencies(f.L1.Messages.List, fd.GetMessageType()); err != nil {
-		return nil, err
-	}
-	if err := r2.resolveExtensionDependencies(f.L1.Extensions.List, fd.GetExtension()); err != nil {
-		return nil, err
-	}
-	if err := r2.resolveServiceDependencies(f.L1.Services.List, fd.GetService()); err != nil {
-		return nil, err
-	}
-
-	// Step 3: Validate every enum, message, and extension declaration.
-	if err := validateEnumDeclarations(f.L1.Enums.List, fd.GetEnumType()); err != nil {
-		return nil, err
-	}
-	if err := validateMessageDeclarations(f.L1.Messages.List, fd.GetMessageType()); err != nil {
-		return nil, err
-	}
-	if err := validateExtensionDeclarations(f.L1.Extensions.List, fd.GetExtension()); err != nil {
-		return nil, err
-	}
-
-	return f, nil
-}
-
-type importSet map[string]bool
-
-func (is importSet) importPublic(imps protoreflect.FileImports) {
-	for i := 0; i < imps.Len(); i++ {
-		if imp := imps.Get(i); imp.IsPublic {
-			is[imp.Path()] = true
-			is.importPublic(imp.Imports())
-		}
-	}
-}
-
-// NewFiles creates a new protoregistry.Files from the provided
-// FileDescriptorSet message. The descriptor set must include only
-// valid files according to protobuf semantics. The returned descriptors
-// are a deep copy of the input.
-func (o FileOptions) NewFiles(fds *descriptorpb.FileDescriptorSet) (*protoregistry.Files, error) {
-	files := make(map[string]*descriptorpb.FileDescriptorProto)
-	for _, fd := range fds.File {
-		if _, ok := files[fd.GetName()]; ok {
-			return nil, errors.New("file appears multiple times: %q", fd.GetName())
-		}
-		files[fd.GetName()] = fd
-	}
-	r := &protoregistry.Files{}
-	for _, fd := range files {
-		if err := o.addFileDeps(r, fd, files); err != nil {
-			return nil, err
-		}
-	}
-	return r, nil
-}
-func (o FileOptions) addFileDeps(r *protoregistry.Files, fd *descriptorpb.FileDescriptorProto, files map[string]*descriptorpb.FileDescriptorProto) error {
-	// Set the entry to nil while descending into a file's dependencies to detect cycles.
-	files[fd.GetName()] = nil
-	for _, dep := range fd.Dependency {
-		depfd, ok := files[dep]
-		if depfd == nil {
-			if ok {
-				return errors.New("import cycle in file: %q", dep)
-			}
-			continue
-		}
-		if err := o.addFileDeps(r, depfd, files); err != nil {
-			return err
-		}
-	}
-	// Delete the entry once dependencies are processed.
-	delete(files, fd.GetName())
-	f, err := o.New(fd, r)
-	if err != nil {
-		return err
-	}
-	return r.RegisterFile(f)
-}
diff --git a/reflect/protodesc/desc_init.go b/reflect/protodesc/desc_init.go
deleted file mode 100644
index 37efda1..0000000
--- a/reflect/protodesc/desc_init.go
+++ /dev/null
@@ -1,248 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protodesc
-
-import (
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/internal/filedesc"
-	"google.golang.org/protobuf/internal/strs"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoreflect"
-
-	"google.golang.org/protobuf/types/descriptorpb"
-)
-
-type descsByName map[protoreflect.FullName]protoreflect.Descriptor
-
-func (r descsByName) initEnumDeclarations(eds []*descriptorpb.EnumDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (es []filedesc.Enum, err error) {
-	es = make([]filedesc.Enum, len(eds)) // allocate up-front to ensure stable pointers
-	for i, ed := range eds {
-		e := &es[i]
-		e.L2 = new(filedesc.EnumL2)
-		if e.L0, err = r.makeBase(e, parent, ed.GetName(), i, sb); err != nil {
-			return nil, err
-		}
-		if opts := ed.GetOptions(); opts != nil {
-			opts = proto.Clone(opts).(*descriptorpb.EnumOptions)
-			e.L2.Options = func() protoreflect.ProtoMessage { return opts }
-		}
-		for _, s := range ed.GetReservedName() {
-			e.L2.ReservedNames.List = append(e.L2.ReservedNames.List, protoreflect.Name(s))
-		}
-		for _, rr := range ed.GetReservedRange() {
-			e.L2.ReservedRanges.List = append(e.L2.ReservedRanges.List, [2]protoreflect.EnumNumber{
-				protoreflect.EnumNumber(rr.GetStart()),
-				protoreflect.EnumNumber(rr.GetEnd()),
-			})
-		}
-		if e.L2.Values.List, err = r.initEnumValuesFromDescriptorProto(ed.GetValue(), e, sb); err != nil {
-			return nil, err
-		}
-	}
-	return es, nil
-}
-
-func (r descsByName) initEnumValuesFromDescriptorProto(vds []*descriptorpb.EnumValueDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (vs []filedesc.EnumValue, err error) {
-	vs = make([]filedesc.EnumValue, len(vds)) // allocate up-front to ensure stable pointers
-	for i, vd := range vds {
-		v := &vs[i]
-		if v.L0, err = r.makeBase(v, parent, vd.GetName(), i, sb); err != nil {
-			return nil, err
-		}
-		if opts := vd.GetOptions(); opts != nil {
-			opts = proto.Clone(opts).(*descriptorpb.EnumValueOptions)
-			v.L1.Options = func() protoreflect.ProtoMessage { return opts }
-		}
-		v.L1.Number = protoreflect.EnumNumber(vd.GetNumber())
-	}
-	return vs, nil
-}
-
-func (r descsByName) initMessagesDeclarations(mds []*descriptorpb.DescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (ms []filedesc.Message, err error) {
-	ms = make([]filedesc.Message, len(mds)) // allocate up-front to ensure stable pointers
-	for i, md := range mds {
-		m := &ms[i]
-		m.L2 = new(filedesc.MessageL2)
-		if m.L0, err = r.makeBase(m, parent, md.GetName(), i, sb); err != nil {
-			return nil, err
-		}
-		if opts := md.GetOptions(); opts != nil {
-			opts = proto.Clone(opts).(*descriptorpb.MessageOptions)
-			m.L2.Options = func() protoreflect.ProtoMessage { return opts }
-			m.L1.IsMapEntry = opts.GetMapEntry()
-			m.L1.IsMessageSet = opts.GetMessageSetWireFormat()
-		}
-		for _, s := range md.GetReservedName() {
-			m.L2.ReservedNames.List = append(m.L2.ReservedNames.List, protoreflect.Name(s))
-		}
-		for _, rr := range md.GetReservedRange() {
-			m.L2.ReservedRanges.List = append(m.L2.ReservedRanges.List, [2]protoreflect.FieldNumber{
-				protoreflect.FieldNumber(rr.GetStart()),
-				protoreflect.FieldNumber(rr.GetEnd()),
-			})
-		}
-		for _, xr := range md.GetExtensionRange() {
-			m.L2.ExtensionRanges.List = append(m.L2.ExtensionRanges.List, [2]protoreflect.FieldNumber{
-				protoreflect.FieldNumber(xr.GetStart()),
-				protoreflect.FieldNumber(xr.GetEnd()),
-			})
-			var optsFunc func() protoreflect.ProtoMessage
-			if opts := xr.GetOptions(); opts != nil {
-				opts = proto.Clone(opts).(*descriptorpb.ExtensionRangeOptions)
-				optsFunc = func() protoreflect.ProtoMessage { return opts }
-			}
-			m.L2.ExtensionRangeOptions = append(m.L2.ExtensionRangeOptions, optsFunc)
-		}
-		if m.L2.Fields.List, err = r.initFieldsFromDescriptorProto(md.GetField(), m, sb); err != nil {
-			return nil, err
-		}
-		if m.L2.Oneofs.List, err = r.initOneofsFromDescriptorProto(md.GetOneofDecl(), m, sb); err != nil {
-			return nil, err
-		}
-		if m.L1.Enums.List, err = r.initEnumDeclarations(md.GetEnumType(), m, sb); err != nil {
-			return nil, err
-		}
-		if m.L1.Messages.List, err = r.initMessagesDeclarations(md.GetNestedType(), m, sb); err != nil {
-			return nil, err
-		}
-		if m.L1.Extensions.List, err = r.initExtensionDeclarations(md.GetExtension(), m, sb); err != nil {
-			return nil, err
-		}
-	}
-	return ms, nil
-}
-
-func (r descsByName) initFieldsFromDescriptorProto(fds []*descriptorpb.FieldDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (fs []filedesc.Field, err error) {
-	fs = make([]filedesc.Field, len(fds)) // allocate up-front to ensure stable pointers
-	for i, fd := range fds {
-		f := &fs[i]
-		if f.L0, err = r.makeBase(f, parent, fd.GetName(), i, sb); err != nil {
-			return nil, err
-		}
-		f.L1.IsProto3Optional = fd.GetProto3Optional()
-		if opts := fd.GetOptions(); opts != nil {
-			opts = proto.Clone(opts).(*descriptorpb.FieldOptions)
-			f.L1.Options = func() protoreflect.ProtoMessage { return opts }
-			f.L1.IsWeak = opts.GetWeak()
-			f.L1.HasPacked = opts.Packed != nil
-			f.L1.IsPacked = opts.GetPacked()
-		}
-		f.L1.Number = protoreflect.FieldNumber(fd.GetNumber())
-		f.L1.Cardinality = protoreflect.Cardinality(fd.GetLabel())
-		if fd.Type != nil {
-			f.L1.Kind = protoreflect.Kind(fd.GetType())
-		}
-		if fd.JsonName != nil {
-			f.L1.StringName.InitJSON(fd.GetJsonName())
-		}
-	}
-	return fs, nil
-}
-
-func (r descsByName) initOneofsFromDescriptorProto(ods []*descriptorpb.OneofDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (os []filedesc.Oneof, err error) {
-	os = make([]filedesc.Oneof, len(ods)) // allocate up-front to ensure stable pointers
-	for i, od := range ods {
-		o := &os[i]
-		if o.L0, err = r.makeBase(o, parent, od.GetName(), i, sb); err != nil {
-			return nil, err
-		}
-		if opts := od.GetOptions(); opts != nil {
-			opts = proto.Clone(opts).(*descriptorpb.OneofOptions)
-			o.L1.Options = func() protoreflect.ProtoMessage { return opts }
-		}
-	}
-	return os, nil
-}
-
-func (r descsByName) initExtensionDeclarations(xds []*descriptorpb.FieldDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (xs []filedesc.Extension, err error) {
-	xs = make([]filedesc.Extension, len(xds)) // allocate up-front to ensure stable pointers
-	for i, xd := range xds {
-		x := &xs[i]
-		x.L2 = new(filedesc.ExtensionL2)
-		if x.L0, err = r.makeBase(x, parent, xd.GetName(), i, sb); err != nil {
-			return nil, err
-		}
-		if opts := xd.GetOptions(); opts != nil {
-			opts = proto.Clone(opts).(*descriptorpb.FieldOptions)
-			x.L2.Options = func() protoreflect.ProtoMessage { return opts }
-			x.L2.IsPacked = opts.GetPacked()
-		}
-		x.L1.Number = protoreflect.FieldNumber(xd.GetNumber())
-		x.L1.Cardinality = protoreflect.Cardinality(xd.GetLabel())
-		if xd.Type != nil {
-			x.L1.Kind = protoreflect.Kind(xd.GetType())
-		}
-		if xd.JsonName != nil {
-			x.L2.StringName.InitJSON(xd.GetJsonName())
-		}
-	}
-	return xs, nil
-}
-
-func (r descsByName) initServiceDeclarations(sds []*descriptorpb.ServiceDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (ss []filedesc.Service, err error) {
-	ss = make([]filedesc.Service, len(sds)) // allocate up-front to ensure stable pointers
-	for i, sd := range sds {
-		s := &ss[i]
-		s.L2 = new(filedesc.ServiceL2)
-		if s.L0, err = r.makeBase(s, parent, sd.GetName(), i, sb); err != nil {
-			return nil, err
-		}
-		if opts := sd.GetOptions(); opts != nil {
-			opts = proto.Clone(opts).(*descriptorpb.ServiceOptions)
-			s.L2.Options = func() protoreflect.ProtoMessage { return opts }
-		}
-		if s.L2.Methods.List, err = r.initMethodsFromDescriptorProto(sd.GetMethod(), s, sb); err != nil {
-			return nil, err
-		}
-	}
-	return ss, nil
-}
-
-func (r descsByName) initMethodsFromDescriptorProto(mds []*descriptorpb.MethodDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (ms []filedesc.Method, err error) {
-	ms = make([]filedesc.Method, len(mds)) // allocate up-front to ensure stable pointers
-	for i, md := range mds {
-		m := &ms[i]
-		if m.L0, err = r.makeBase(m, parent, md.GetName(), i, sb); err != nil {
-			return nil, err
-		}
-		if opts := md.GetOptions(); opts != nil {
-			opts = proto.Clone(opts).(*descriptorpb.MethodOptions)
-			m.L1.Options = func() protoreflect.ProtoMessage { return opts }
-		}
-		m.L1.IsStreamingClient = md.GetClientStreaming()
-		m.L1.IsStreamingServer = md.GetServerStreaming()
-	}
-	return ms, nil
-}
-
-func (r descsByName) makeBase(child, parent protoreflect.Descriptor, name string, idx int, sb *strs.Builder) (filedesc.BaseL0, error) {
-	if !protoreflect.Name(name).IsValid() {
-		return filedesc.BaseL0{}, errors.New("descriptor %q has an invalid nested name: %q", parent.FullName(), name)
-	}
-
-	// Derive the full name of the child.
-	// Note that enum values are a sibling to the enum parent in the namespace.
-	var fullName protoreflect.FullName
-	if _, ok := parent.(protoreflect.EnumDescriptor); ok {
-		fullName = sb.AppendFullName(parent.FullName().Parent(), protoreflect.Name(name))
-	} else {
-		fullName = sb.AppendFullName(parent.FullName(), protoreflect.Name(name))
-	}
-	if _, ok := r[fullName]; ok {
-		return filedesc.BaseL0{}, errors.New("descriptor %q already declared", fullName)
-	}
-	r[fullName] = child
-
-	// TODO: Verify that the full name does not already exist in the resolver?
-	// This is not as critical since most usages of NewFile will register
-	// the created file back into the registry, which will perform this check.
-
-	return filedesc.BaseL0{
-		FullName:   fullName,
-		ParentFile: parent.ParentFile().(*filedesc.File),
-		Parent:     parent,
-		Index:      idx,
-	}, nil
-}
diff --git a/reflect/protodesc/desc_resolve.go b/reflect/protodesc/desc_resolve.go
deleted file mode 100644
index cebb36c..0000000
--- a/reflect/protodesc/desc_resolve.go
+++ /dev/null
@@ -1,286 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protodesc
-
-import (
-	"google.golang.org/protobuf/internal/encoding/defval"
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/internal/filedesc"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/reflect/protoregistry"
-
-	"google.golang.org/protobuf/types/descriptorpb"
-)
-
-// resolver is a wrapper around a local registry of declarations within the file
-// and the remote resolver. The remote resolver is restricted to only return
-// descriptors that have been imported.
-type resolver struct {
-	local   descsByName
-	remote  Resolver
-	imports importSet
-
-	allowUnresolvable bool
-}
-
-func (r *resolver) resolveMessageDependencies(ms []filedesc.Message, mds []*descriptorpb.DescriptorProto) (err error) {
-	for i, md := range mds {
-		m := &ms[i]
-		for j, fd := range md.GetField() {
-			f := &m.L2.Fields.List[j]
-			if f.L1.Cardinality == protoreflect.Required {
-				m.L2.RequiredNumbers.List = append(m.L2.RequiredNumbers.List, f.L1.Number)
-			}
-			if fd.OneofIndex != nil {
-				k := int(fd.GetOneofIndex())
-				if !(0 <= k && k < len(md.GetOneofDecl())) {
-					return errors.New("message field %q has an invalid oneof index: %d", f.FullName(), k)
-				}
-				o := &m.L2.Oneofs.List[k]
-				f.L1.ContainingOneof = o
-				o.L1.Fields.List = append(o.L1.Fields.List, f)
-			}
-
-			if f.L1.Kind, f.L1.Enum, f.L1.Message, err = r.findTarget(f.Kind(), f.Parent().FullName(), partialName(fd.GetTypeName()), f.IsWeak()); err != nil {
-				return errors.New("message field %q cannot resolve type: %v", f.FullName(), err)
-			}
-			if fd.DefaultValue != nil {
-				v, ev, err := unmarshalDefault(fd.GetDefaultValue(), f, r.allowUnresolvable)
-				if err != nil {
-					return errors.New("message field %q has invalid default: %v", f.FullName(), err)
-				}
-				f.L1.Default = filedesc.DefaultValue(v, ev)
-			}
-		}
-
-		if err := r.resolveMessageDependencies(m.L1.Messages.List, md.GetNestedType()); err != nil {
-			return err
-		}
-		if err := r.resolveExtensionDependencies(m.L1.Extensions.List, md.GetExtension()); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func (r *resolver) resolveExtensionDependencies(xs []filedesc.Extension, xds []*descriptorpb.FieldDescriptorProto) (err error) {
-	for i, xd := range xds {
-		x := &xs[i]
-		if x.L1.Extendee, err = r.findMessageDescriptor(x.Parent().FullName(), partialName(xd.GetExtendee()), false); err != nil {
-			return errors.New("extension field %q cannot resolve extendee: %v", x.FullName(), err)
-		}
-		if x.L1.Kind, x.L2.Enum, x.L2.Message, err = r.findTarget(x.Kind(), x.Parent().FullName(), partialName(xd.GetTypeName()), false); err != nil {
-			return errors.New("extension field %q cannot resolve type: %v", x.FullName(), err)
-		}
-		if xd.DefaultValue != nil {
-			v, ev, err := unmarshalDefault(xd.GetDefaultValue(), x, r.allowUnresolvable)
-			if err != nil {
-				return errors.New("extension field %q has invalid default: %v", x.FullName(), err)
-			}
-			x.L2.Default = filedesc.DefaultValue(v, ev)
-		}
-	}
-	return nil
-}
-
-func (r *resolver) resolveServiceDependencies(ss []filedesc.Service, sds []*descriptorpb.ServiceDescriptorProto) (err error) {
-	for i, sd := range sds {
-		s := &ss[i]
-		for j, md := range sd.GetMethod() {
-			m := &s.L2.Methods.List[j]
-			m.L1.Input, err = r.findMessageDescriptor(m.Parent().FullName(), partialName(md.GetInputType()), false)
-			if err != nil {
-				return errors.New("service method %q cannot resolve input: %v", m.FullName(), err)
-			}
-			m.L1.Output, err = r.findMessageDescriptor(s.FullName(), partialName(md.GetOutputType()), false)
-			if err != nil {
-				return errors.New("service method %q cannot resolve output: %v", m.FullName(), err)
-			}
-		}
-	}
-	return nil
-}
-
-// findTarget finds an enum or message descriptor if k is an enum, message,
-// group, or unknown. If unknown, and the name could be resolved, the kind
-// returned kind is set based on the type of the resolved descriptor.
-func (r *resolver) findTarget(k protoreflect.Kind, scope protoreflect.FullName, ref partialName, isWeak bool) (protoreflect.Kind, protoreflect.EnumDescriptor, protoreflect.MessageDescriptor, error) {
-	switch k {
-	case protoreflect.EnumKind:
-		ed, err := r.findEnumDescriptor(scope, ref, isWeak)
-		if err != nil {
-			return 0, nil, nil, err
-		}
-		return k, ed, nil, nil
-	case protoreflect.MessageKind, protoreflect.GroupKind:
-		md, err := r.findMessageDescriptor(scope, ref, isWeak)
-		if err != nil {
-			return 0, nil, nil, err
-		}
-		return k, nil, md, nil
-	case 0:
-		// Handle unspecified kinds (possible with parsers that operate
-		// on a per-file basis without knowledge of dependencies).
-		d, err := r.findDescriptor(scope, ref)
-		if err == protoregistry.NotFound && (r.allowUnresolvable || isWeak) {
-			return k, filedesc.PlaceholderEnum(ref.FullName()), filedesc.PlaceholderMessage(ref.FullName()), nil
-		} else if err == protoregistry.NotFound {
-			return 0, nil, nil, errors.New("%q not found", ref.FullName())
-		} else if err != nil {
-			return 0, nil, nil, err
-		}
-		switch d := d.(type) {
-		case protoreflect.EnumDescriptor:
-			return protoreflect.EnumKind, d, nil, nil
-		case protoreflect.MessageDescriptor:
-			return protoreflect.MessageKind, nil, d, nil
-		default:
-			return 0, nil, nil, errors.New("unknown kind")
-		}
-	default:
-		if ref != "" {
-			return 0, nil, nil, errors.New("target name cannot be specified for %v", k)
-		}
-		if !k.IsValid() {
-			return 0, nil, nil, errors.New("invalid kind: %d", k)
-		}
-		return k, nil, nil, nil
-	}
-}
-
-// findDescriptor finds the descriptor by name,
-// which may be a relative name within some scope.
-//
-// Suppose the scope was "fizz.buzz" and the reference was "Foo.Bar",
-// then the following full names are searched:
-//	* fizz.buzz.Foo.Bar
-//	* fizz.Foo.Bar
-//	* Foo.Bar
-func (r *resolver) findDescriptor(scope protoreflect.FullName, ref partialName) (protoreflect.Descriptor, error) {
-	if !ref.IsValid() {
-		return nil, errors.New("invalid name reference: %q", ref)
-	}
-	if ref.IsFull() {
-		scope, ref = "", ref[1:]
-	}
-	var foundButNotImported protoreflect.Descriptor
-	for {
-		// Derive the full name to search.
-		s := protoreflect.FullName(ref)
-		if scope != "" {
-			s = scope + "." + s
-		}
-
-		// Check the current file for the descriptor.
-		if d, ok := r.local[s]; ok {
-			return d, nil
-		}
-
-		// Check the remote registry for the descriptor.
-		d, err := r.remote.FindDescriptorByName(s)
-		if err == nil {
-			// Only allow descriptors covered by one of the imports.
-			if r.imports[d.ParentFile().Path()] {
-				return d, nil
-			}
-			foundButNotImported = d
-		} else if err != protoregistry.NotFound {
-			return nil, errors.Wrap(err, "%q", s)
-		}
-
-		// Continue on at a higher level of scoping.
-		if scope == "" {
-			if d := foundButNotImported; d != nil {
-				return nil, errors.New("resolved %q, but %q is not imported", d.FullName(), d.ParentFile().Path())
-			}
-			return nil, protoregistry.NotFound
-		}
-		scope = scope.Parent()
-	}
-}
-
-func (r *resolver) findEnumDescriptor(scope protoreflect.FullName, ref partialName, isWeak bool) (protoreflect.EnumDescriptor, error) {
-	d, err := r.findDescriptor(scope, ref)
-	if err == protoregistry.NotFound && (r.allowUnresolvable || isWeak) {
-		return filedesc.PlaceholderEnum(ref.FullName()), nil
-	} else if err == protoregistry.NotFound {
-		return nil, errors.New("%q not found", ref.FullName())
-	} else if err != nil {
-		return nil, err
-	}
-	ed, ok := d.(protoreflect.EnumDescriptor)
-	if !ok {
-		return nil, errors.New("resolved %q, but it is not an enum", d.FullName())
-	}
-	return ed, nil
-}
-
-func (r *resolver) findMessageDescriptor(scope protoreflect.FullName, ref partialName, isWeak bool) (protoreflect.MessageDescriptor, error) {
-	d, err := r.findDescriptor(scope, ref)
-	if err == protoregistry.NotFound && (r.allowUnresolvable || isWeak) {
-		return filedesc.PlaceholderMessage(ref.FullName()), nil
-	} else if err == protoregistry.NotFound {
-		return nil, errors.New("%q not found", ref.FullName())
-	} else if err != nil {
-		return nil, err
-	}
-	md, ok := d.(protoreflect.MessageDescriptor)
-	if !ok {
-		return nil, errors.New("resolved %q, but it is not an message", d.FullName())
-	}
-	return md, nil
-}
-
-// partialName is the partial name. A leading dot means that the name is full,
-// otherwise the name is relative to some current scope.
-// See google.protobuf.FieldDescriptorProto.type_name.
-type partialName string
-
-func (s partialName) IsFull() bool {
-	return len(s) > 0 && s[0] == '.'
-}
-
-func (s partialName) IsValid() bool {
-	if s.IsFull() {
-		return protoreflect.FullName(s[1:]).IsValid()
-	}
-	return protoreflect.FullName(s).IsValid()
-}
-
-const unknownPrefix = "*."
-
-// FullName converts the partial name to a full name on a best-effort basis.
-// If relative, it creates an invalid full name, using a "*." prefix
-// to indicate that the start of the full name is unknown.
-func (s partialName) FullName() protoreflect.FullName {
-	if s.IsFull() {
-		return protoreflect.FullName(s[1:])
-	}
-	return protoreflect.FullName(unknownPrefix + s)
-}
-
-func unmarshalDefault(s string, fd protoreflect.FieldDescriptor, allowUnresolvable bool) (protoreflect.Value, protoreflect.EnumValueDescriptor, error) {
-	var evs protoreflect.EnumValueDescriptors
-	if fd.Enum() != nil {
-		evs = fd.Enum().Values()
-	}
-	v, ev, err := defval.Unmarshal(s, fd.Kind(), evs, defval.Descriptor)
-	if err != nil && allowUnresolvable && evs != nil && protoreflect.Name(s).IsValid() {
-		v = protoreflect.ValueOfEnum(0)
-		if evs.Len() > 0 {
-			v = protoreflect.ValueOfEnum(evs.Get(0).Number())
-		}
-		ev = filedesc.PlaceholderEnumValue(fd.Enum().FullName().Parent().Append(protoreflect.Name(s)))
-	} else if err != nil {
-		return v, ev, err
-	}
-	if fd.Syntax() == protoreflect.Proto3 {
-		return v, ev, errors.New("cannot be specified under proto3 semantics")
-	}
-	if fd.Kind() == protoreflect.MessageKind || fd.Kind() == protoreflect.GroupKind || fd.Cardinality() == protoreflect.Repeated {
-		return v, ev, errors.New("cannot be specified on composite types")
-	}
-	return v, ev, nil
-}
diff --git a/reflect/protodesc/desc_validate.go b/reflect/protodesc/desc_validate.go
deleted file mode 100644
index 9af1d56..0000000
--- a/reflect/protodesc/desc_validate.go
+++ /dev/null
@@ -1,374 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protodesc
-
-import (
-	"strings"
-	"unicode"
-
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/internal/filedesc"
-	"google.golang.org/protobuf/internal/flags"
-	"google.golang.org/protobuf/internal/genid"
-	"google.golang.org/protobuf/internal/strs"
-	"google.golang.org/protobuf/reflect/protoreflect"
-
-	"google.golang.org/protobuf/types/descriptorpb"
-)
-
-func validateEnumDeclarations(es []filedesc.Enum, eds []*descriptorpb.EnumDescriptorProto) error {
-	for i, ed := range eds {
-		e := &es[i]
-		if err := e.L2.ReservedNames.CheckValid(); err != nil {
-			return errors.New("enum %q reserved names has %v", e.FullName(), err)
-		}
-		if err := e.L2.ReservedRanges.CheckValid(); err != nil {
-			return errors.New("enum %q reserved ranges has %v", e.FullName(), err)
-		}
-		if len(ed.GetValue()) == 0 {
-			return errors.New("enum %q must contain at least one value declaration", e.FullName())
-		}
-		allowAlias := ed.GetOptions().GetAllowAlias()
-		foundAlias := false
-		for i := 0; i < e.Values().Len(); i++ {
-			v1 := e.Values().Get(i)
-			if v2 := e.Values().ByNumber(v1.Number()); v1 != v2 {
-				foundAlias = true
-				if !allowAlias {
-					return errors.New("enum %q has conflicting non-aliased values on number %d: %q with %q", e.FullName(), v1.Number(), v1.Name(), v2.Name())
-				}
-			}
-		}
-		if allowAlias && !foundAlias {
-			return errors.New("enum %q allows aliases, but none were found", e.FullName())
-		}
-		if e.Syntax() == protoreflect.Proto3 {
-			if v := e.Values().Get(0); v.Number() != 0 {
-				return errors.New("enum %q using proto3 semantics must have zero number for the first value", v.FullName())
-			}
-			// Verify that value names in proto3 do not conflict if the
-			// case-insensitive prefix is removed.
-			// See protoc v3.8.0: src/google/protobuf/descriptor.cc:4991-5055
-			names := map[string]protoreflect.EnumValueDescriptor{}
-			prefix := strings.Replace(strings.ToLower(string(e.Name())), "_", "", -1)
-			for i := 0; i < e.Values().Len(); i++ {
-				v1 := e.Values().Get(i)
-				s := strs.EnumValueName(strs.TrimEnumPrefix(string(v1.Name()), prefix))
-				if v2, ok := names[s]; ok && v1.Number() != v2.Number() {
-					return errors.New("enum %q using proto3 semantics has conflict: %q with %q", e.FullName(), v1.Name(), v2.Name())
-				}
-				names[s] = v1
-			}
-		}
-
-		for j, vd := range ed.GetValue() {
-			v := &e.L2.Values.List[j]
-			if vd.Number == nil {
-				return errors.New("enum value %q must have a specified number", v.FullName())
-			}
-			if e.L2.ReservedNames.Has(v.Name()) {
-				return errors.New("enum value %q must not use reserved name", v.FullName())
-			}
-			if e.L2.ReservedRanges.Has(v.Number()) {
-				return errors.New("enum value %q must not use reserved number %d", v.FullName(), v.Number())
-			}
-		}
-	}
-	return nil
-}
-
-func validateMessageDeclarations(ms []filedesc.Message, mds []*descriptorpb.DescriptorProto) error {
-	for i, md := range mds {
-		m := &ms[i]
-
-		// Handle the message descriptor itself.
-		isMessageSet := md.GetOptions().GetMessageSetWireFormat()
-		if err := m.L2.ReservedNames.CheckValid(); err != nil {
-			return errors.New("message %q reserved names has %v", m.FullName(), err)
-		}
-		if err := m.L2.ReservedRanges.CheckValid(isMessageSet); err != nil {
-			return errors.New("message %q reserved ranges has %v", m.FullName(), err)
-		}
-		if err := m.L2.ExtensionRanges.CheckValid(isMessageSet); err != nil {
-			return errors.New("message %q extension ranges has %v", m.FullName(), err)
-		}
-		if err := (*filedesc.FieldRanges).CheckOverlap(&m.L2.ReservedRanges, &m.L2.ExtensionRanges); err != nil {
-			return errors.New("message %q reserved and extension ranges has %v", m.FullName(), err)
-		}
-		for i := 0; i < m.Fields().Len(); i++ {
-			f1 := m.Fields().Get(i)
-			if f2 := m.Fields().ByNumber(f1.Number()); f1 != f2 {
-				return errors.New("message %q has conflicting fields: %q with %q", m.FullName(), f1.Name(), f2.Name())
-			}
-		}
-		if isMessageSet && !flags.ProtoLegacy {
-			return errors.New("message %q is a MessageSet, which is a legacy proto1 feature that is no longer supported", m.FullName())
-		}
-		if isMessageSet && (m.Syntax() != protoreflect.Proto2 || m.Fields().Len() > 0 || m.ExtensionRanges().Len() == 0) {
-			return errors.New("message %q is an invalid proto1 MessageSet", m.FullName())
-		}
-		if m.Syntax() == protoreflect.Proto3 {
-			if m.ExtensionRanges().Len() > 0 {
-				return errors.New("message %q using proto3 semantics cannot have extension ranges", m.FullName())
-			}
-			// Verify that field names in proto3 do not conflict if lowercased
-			// with all underscores removed.
-			// See protoc v3.8.0: src/google/protobuf/descriptor.cc:5830-5847
-			names := map[string]protoreflect.FieldDescriptor{}
-			for i := 0; i < m.Fields().Len(); i++ {
-				f1 := m.Fields().Get(i)
-				s := strings.Replace(strings.ToLower(string(f1.Name())), "_", "", -1)
-				if f2, ok := names[s]; ok {
-					return errors.New("message %q using proto3 semantics has conflict: %q with %q", m.FullName(), f1.Name(), f2.Name())
-				}
-				names[s] = f1
-			}
-		}
-
-		for j, fd := range md.GetField() {
-			f := &m.L2.Fields.List[j]
-			if m.L2.ReservedNames.Has(f.Name()) {
-				return errors.New("message field %q must not use reserved name", f.FullName())
-			}
-			if !f.Number().IsValid() {
-				return errors.New("message field %q has an invalid number: %d", f.FullName(), f.Number())
-			}
-			if !f.Cardinality().IsValid() {
-				return errors.New("message field %q has an invalid cardinality: %d", f.FullName(), f.Cardinality())
-			}
-			if m.L2.ReservedRanges.Has(f.Number()) {
-				return errors.New("message field %q must not use reserved number %d", f.FullName(), f.Number())
-			}
-			if m.L2.ExtensionRanges.Has(f.Number()) {
-				return errors.New("message field %q with number %d in extension range", f.FullName(), f.Number())
-			}
-			if fd.Extendee != nil {
-				return errors.New("message field %q may not have extendee: %q", f.FullName(), fd.GetExtendee())
-			}
-			if f.L1.IsProto3Optional {
-				if f.Syntax() != protoreflect.Proto3 {
-					return errors.New("message field %q under proto3 optional semantics must be specified in the proto3 syntax", f.FullName())
-				}
-				if f.Cardinality() != protoreflect.Optional {
-					return errors.New("message field %q under proto3 optional semantics must have optional cardinality", f.FullName())
-				}
-				if f.ContainingOneof() != nil && f.ContainingOneof().Fields().Len() != 1 {
-					return errors.New("message field %q under proto3 optional semantics must be within a single element oneof", f.FullName())
-				}
-			}
-			if f.IsWeak() && !flags.ProtoLegacy {
-				return errors.New("message field %q is a weak field, which is a legacy proto1 feature that is no longer supported", f.FullName())
-			}
-			if f.IsWeak() && (f.Syntax() != protoreflect.Proto2 || !isOptionalMessage(f) || f.ContainingOneof() != nil) {
-				return errors.New("message field %q may only be weak for an optional message", f.FullName())
-			}
-			if f.IsPacked() && !isPackable(f) {
-				return errors.New("message field %q is not packable", f.FullName())
-			}
-			if err := checkValidGroup(f); err != nil {
-				return errors.New("message field %q is an invalid group: %v", f.FullName(), err)
-			}
-			if err := checkValidMap(f); err != nil {
-				return errors.New("message field %q is an invalid map: %v", f.FullName(), err)
-			}
-			if f.Syntax() == protoreflect.Proto3 {
-				if f.Cardinality() == protoreflect.Required {
-					return errors.New("message field %q using proto3 semantics cannot be required", f.FullName())
-				}
-				if f.Enum() != nil && !f.Enum().IsPlaceholder() && f.Enum().Syntax() != protoreflect.Proto3 {
-					return errors.New("message field %q using proto3 semantics may only depend on a proto3 enum", f.FullName())
-				}
-			}
-		}
-		seenSynthetic := false // synthetic oneofs for proto3 optional must come after real oneofs
-		for j := range md.GetOneofDecl() {
-			o := &m.L2.Oneofs.List[j]
-			if o.Fields().Len() == 0 {
-				return errors.New("message oneof %q must contain at least one field declaration", o.FullName())
-			}
-			if n := o.Fields().Len(); n-1 != (o.Fields().Get(n-1).Index() - o.Fields().Get(0).Index()) {
-				return errors.New("message oneof %q must have consecutively declared fields", o.FullName())
-			}
-
-			if o.IsSynthetic() {
-				seenSynthetic = true
-				continue
-			}
-			if !o.IsSynthetic() && seenSynthetic {
-				return errors.New("message oneof %q must be declared before synthetic oneofs", o.FullName())
-			}
-
-			for i := 0; i < o.Fields().Len(); i++ {
-				f := o.Fields().Get(i)
-				if f.Cardinality() != protoreflect.Optional {
-					return errors.New("message field %q belongs in a oneof and must be optional", f.FullName())
-				}
-				if f.IsWeak() {
-					return errors.New("message field %q belongs in a oneof and must not be a weak reference", f.FullName())
-				}
-			}
-		}
-
-		if err := validateEnumDeclarations(m.L1.Enums.List, md.GetEnumType()); err != nil {
-			return err
-		}
-		if err := validateMessageDeclarations(m.L1.Messages.List, md.GetNestedType()); err != nil {
-			return err
-		}
-		if err := validateExtensionDeclarations(m.L1.Extensions.List, md.GetExtension()); err != nil {
-			return err
-		}
-	}
-	return nil
-}
-
-func validateExtensionDeclarations(xs []filedesc.Extension, xds []*descriptorpb.FieldDescriptorProto) error {
-	for i, xd := range xds {
-		x := &xs[i]
-		// NOTE: Avoid using the IsValid method since extensions to MessageSet
-		// may have a field number higher than normal. This check only verifies
-		// that the number is not negative or reserved. We check again later
-		// if we know that the extendee is definitely not a MessageSet.
-		if n := x.Number(); n < 0 || (protowire.FirstReservedNumber <= n && n <= protowire.LastReservedNumber) {
-			return errors.New("extension field %q has an invalid number: %d", x.FullName(), x.Number())
-		}
-		if !x.Cardinality().IsValid() || x.Cardinality() == protoreflect.Required {
-			return errors.New("extension field %q has an invalid cardinality: %d", x.FullName(), x.Cardinality())
-		}
-		if xd.JsonName != nil {
-			// A bug in older versions of protoc would always populate the
-			// "json_name" option for extensions when it is meaningless.
-			// When it did so, it would always use the camel-cased field name.
-			if xd.GetJsonName() != strs.JSONCamelCase(string(x.Name())) {
-				return errors.New("extension field %q may not have an explicitly set JSON name: %q", x.FullName(), xd.GetJsonName())
-			}
-		}
-		if xd.OneofIndex != nil {
-			return errors.New("extension field %q may not be part of a oneof", x.FullName())
-		}
-		if md := x.ContainingMessage(); !md.IsPlaceholder() {
-			if !md.ExtensionRanges().Has(x.Number()) {
-				return errors.New("extension field %q extends %q with non-extension field number: %d", x.FullName(), md.FullName(), x.Number())
-			}
-			isMessageSet := md.Options().(*descriptorpb.MessageOptions).GetMessageSetWireFormat()
-			if isMessageSet && !isOptionalMessage(x) {
-				return errors.New("extension field %q extends MessageSet and must be an optional message", x.FullName())
-			}
-			if !isMessageSet && !x.Number().IsValid() {
-				return errors.New("extension field %q has an invalid number: %d", x.FullName(), x.Number())
-			}
-		}
-		if xd.GetOptions().GetWeak() {
-			return errors.New("extension field %q cannot be a weak reference", x.FullName())
-		}
-		if x.IsPacked() && !isPackable(x) {
-			return errors.New("extension field %q is not packable", x.FullName())
-		}
-		if err := checkValidGroup(x); err != nil {
-			return errors.New("extension field %q is an invalid group: %v", x.FullName(), err)
-		}
-		if md := x.Message(); md != nil && md.IsMapEntry() {
-			return errors.New("extension field %q cannot be a map entry", x.FullName())
-		}
-		if x.Syntax() == protoreflect.Proto3 {
-			switch x.ContainingMessage().FullName() {
-			case (*descriptorpb.FileOptions)(nil).ProtoReflect().Descriptor().FullName():
-			case (*descriptorpb.EnumOptions)(nil).ProtoReflect().Descriptor().FullName():
-			case (*descriptorpb.EnumValueOptions)(nil).ProtoReflect().Descriptor().FullName():
-			case (*descriptorpb.MessageOptions)(nil).ProtoReflect().Descriptor().FullName():
-			case (*descriptorpb.FieldOptions)(nil).ProtoReflect().Descriptor().FullName():
-			case (*descriptorpb.OneofOptions)(nil).ProtoReflect().Descriptor().FullName():
-			case (*descriptorpb.ExtensionRangeOptions)(nil).ProtoReflect().Descriptor().FullName():
-			case (*descriptorpb.ServiceOptions)(nil).ProtoReflect().Descriptor().FullName():
-			case (*descriptorpb.MethodOptions)(nil).ProtoReflect().Descriptor().FullName():
-			default:
-				return errors.New("extension field %q cannot be declared in proto3 unless extended descriptor options", x.FullName())
-			}
-		}
-	}
-	return nil
-}
-
-// isOptionalMessage reports whether this is an optional message.
-// If the kind is unknown, it is assumed to be a message.
-func isOptionalMessage(fd protoreflect.FieldDescriptor) bool {
-	return (fd.Kind() == 0 || fd.Kind() == protoreflect.MessageKind) && fd.Cardinality() == protoreflect.Optional
-}
-
-// isPackable checks whether the pack option can be specified.
-func isPackable(fd protoreflect.FieldDescriptor) bool {
-	switch fd.Kind() {
-	case protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind:
-		return false
-	}
-	return fd.IsList()
-}
-
-// checkValidGroup reports whether fd is a valid group according to the same
-// rules that protoc imposes.
-func checkValidGroup(fd protoreflect.FieldDescriptor) error {
-	md := fd.Message()
-	switch {
-	case fd.Kind() != protoreflect.GroupKind:
-		return nil
-	case fd.Syntax() != protoreflect.Proto2:
-		return errors.New("invalid under proto2 semantics")
-	case md == nil || md.IsPlaceholder():
-		return errors.New("message must be resolvable")
-	case fd.FullName().Parent() != md.FullName().Parent():
-		return errors.New("message and field must be declared in the same scope")
-	case !unicode.IsUpper(rune(md.Name()[0])):
-		return errors.New("message name must start with an uppercase")
-	case fd.Name() != protoreflect.Name(strings.ToLower(string(md.Name()))):
-		return errors.New("field name must be lowercased form of the message name")
-	}
-	return nil
-}
-
-// checkValidMap checks whether the field is a valid map according to the same
-// rules that protoc imposes.
-// See protoc v3.8.0: src/google/protobuf/descriptor.cc:6045-6115
-func checkValidMap(fd protoreflect.FieldDescriptor) error {
-	md := fd.Message()
-	switch {
-	case md == nil || !md.IsMapEntry():
-		return nil
-	case fd.FullName().Parent() != md.FullName().Parent():
-		return errors.New("message and field must be declared in the same scope")
-	case md.Name() != protoreflect.Name(strs.MapEntryName(string(fd.Name()))):
-		return errors.New("incorrect implicit map entry name")
-	case fd.Cardinality() != protoreflect.Repeated:
-		return errors.New("field must be repeated")
-	case md.Fields().Len() != 2:
-		return errors.New("message must have exactly two fields")
-	case md.ExtensionRanges().Len() > 0:
-		return errors.New("message must not have any extension ranges")
-	case md.Enums().Len()+md.Messages().Len()+md.Extensions().Len() > 0:
-		return errors.New("message must not have any nested declarations")
-	}
-	kf := md.Fields().Get(0)
-	vf := md.Fields().Get(1)
-	switch {
-	case kf.Name() != genid.MapEntry_Key_field_name || kf.Number() != genid.MapEntry_Key_field_number || kf.Cardinality() != protoreflect.Optional || kf.ContainingOneof() != nil || kf.HasDefault():
-		return errors.New("invalid key field")
-	case vf.Name() != genid.MapEntry_Value_field_name || vf.Number() != genid.MapEntry_Value_field_number || vf.Cardinality() != protoreflect.Optional || vf.ContainingOneof() != nil || vf.HasDefault():
-		return errors.New("invalid value field")
-	}
-	switch kf.Kind() {
-	case protoreflect.BoolKind: // bool
-	case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind: // int32
-	case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind: // int64
-	case protoreflect.Uint32Kind, protoreflect.Fixed32Kind: // uint32
-	case protoreflect.Uint64Kind, protoreflect.Fixed64Kind: // uint64
-	case protoreflect.StringKind: // string
-	default:
-		return errors.New("invalid key kind: %v", kf.Kind())
-	}
-	if e := vf.Enum(); e != nil && e.Values().Len() > 0 && e.Values().Get(0).Number() != 0 {
-		return errors.New("map enum value must have zero number for the first value")
-	}
-	return nil
-}
diff --git a/reflect/protodesc/file_test.go b/reflect/protodesc/file_test.go
deleted file mode 100644
index 29b4fa7..0000000
--- a/reflect/protodesc/file_test.go
+++ /dev/null
@@ -1,1182 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protodesc
-
-import (
-	"fmt"
-	"strings"
-	"testing"
-
-	"google.golang.org/protobuf/encoding/prototext"
-	"google.golang.org/protobuf/internal/flags"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/reflect/protoregistry"
-
-	"google.golang.org/protobuf/types/descriptorpb"
-)
-
-func mustParseFile(s string) *descriptorpb.FileDescriptorProto {
-	pb := new(descriptorpb.FileDescriptorProto)
-	if err := prototext.Unmarshal([]byte(s), pb); err != nil {
-		panic(err)
-	}
-	return pb
-}
-
-func cloneFile(in *descriptorpb.FileDescriptorProto) *descriptorpb.FileDescriptorProto {
-	return proto.Clone(in).(*descriptorpb.FileDescriptorProto)
-}
-
-var (
-	proto2Enum = mustParseFile(`
-		syntax:    "proto2"
-		name:      "proto2_enum.proto"
-		package:   "test.proto2"
-		enum_type: [{name:"Enum" value:[{name:"ONE" number:1}]}]
-	`)
-	proto3Message = mustParseFile(`
-		syntax:    "proto3"
-		name:      "proto3_message.proto"
-		package:   "test.proto3"
-		message_type: [{
-			name:  "Message"
-			field: [
-				{name:"foo" number:1 label:LABEL_OPTIONAL type:TYPE_STRING},
-				{name:"bar" number:2 label:LABEL_OPTIONAL type:TYPE_STRING}
-			]
-		}]
-	`)
-	extendableMessage = mustParseFile(`
-		syntax:       "proto2"
-		name:         "extendable_message.proto"
-		package:      "test.proto2"
-		message_type: [{name:"Message" extension_range:[{start:1 end:1000}]}]
-	`)
-	importPublicFile1 = mustParseFile(`
-		syntax:            "proto3"
-		name:              "import_public1.proto"
-		dependency:        ["proto2_enum.proto", "proto3_message.proto", "extendable_message.proto"]
-		message_type:      [{name:"Public1"}]
-	`)
-	importPublicFile2 = mustParseFile(`
-		syntax:            "proto3"
-		name:              "import_public2.proto"
-		dependency:        ["import_public1.proto"]
-		public_dependency: [0]
-		message_type:      [{name:"Public2"}]
-	`)
-	importPublicFile3 = mustParseFile(`
-		syntax:            "proto3"
-		name:              "import_public3.proto"
-		dependency:        ["import_public2.proto", "extendable_message.proto"]
-		public_dependency: [0]
-		message_type:      [{name:"Public3"}]
-	`)
-	importPublicFile4 = mustParseFile(`
-		syntax:            "proto3"
-		name:              "import_public4.proto"
-		dependency:        ["import_public2.proto", "import_public3.proto", "proto2_enum.proto"]
-		public_dependency: [0, 1]
-		message_type:      [{name:"Public4"}]
-	`)
-)
-
-func TestNewFile(t *testing.T) {
-	tests := []struct {
-		label    string
-		inDeps   []*descriptorpb.FileDescriptorProto
-		inDesc   *descriptorpb.FileDescriptorProto
-		inOpts   FileOptions
-		wantDesc *descriptorpb.FileDescriptorProto
-		wantErr  string
-	}{{
-		label:   "empty path",
-		inDesc:  mustParseFile(``),
-		wantErr: `path must be populated`,
-	}, {
-		label:  "empty package and syntax",
-		inDesc: mustParseFile(`name:"weird"`),
-	}, {
-		label:   "invalid syntax",
-		inDesc:  mustParseFile(`name:"weird" syntax:"proto9"`),
-		wantErr: `invalid syntax: "proto9"`,
-	}, {
-		label:   "bad package",
-		inDesc:  mustParseFile(`name:"weird" package:"$"`),
-		wantErr: `invalid package: "$"`,
-	}, {
-		label: "unresolvable import",
-		inDesc: mustParseFile(`
-			name:       "test.proto"
-			dependency: "dep.proto"
-		`),
-		wantErr: `could not resolve import "dep.proto": not found`,
-	}, {
-		label: "unresolvable import but allowed",
-		inDesc: mustParseFile(`
-			name:       "test.proto"
-			dependency: "dep.proto"
-		`),
-		inOpts: FileOptions{AllowUnresolvable: true},
-	}, {
-		label: "duplicate import",
-		inDesc: mustParseFile(`
-			name:       "test.proto"
-			dependency: ["dep.proto", "dep.proto"]
-		`),
-		inOpts:  FileOptions{AllowUnresolvable: true},
-		wantErr: `already imported "dep.proto"`,
-	}, {
-		label: "invalid weak import",
-		inDesc: mustParseFile(`
-			name:            "test.proto"
-			dependency:      "dep.proto"
-			weak_dependency: [-23]
-		`),
-		inOpts:  FileOptions{AllowUnresolvable: true},
-		wantErr: `invalid or duplicate weak import index: -23`,
-	}, {
-		label: "normal weak and public import",
-		inDesc: mustParseFile(`
-			name:              "test.proto"
-			dependency:        "dep.proto"
-			weak_dependency:   [0]
-			public_dependency: [0]
-		`),
-		inOpts: FileOptions{AllowUnresolvable: true},
-	}, {
-		label: "import public indirect dependency duplicate",
-		inDeps: []*descriptorpb.FileDescriptorProto{
-			mustParseFile(`name:"leaf.proto"`),
-			mustParseFile(`name:"public.proto" dependency:"leaf.proto" public_dependency:0`),
-		},
-		inDesc: mustParseFile(`
-			name: "test.proto"
-			dependency: ["public.proto", "leaf.proto"]
-		`),
-	}, {
-		label: "import public graph",
-		inDeps: []*descriptorpb.FileDescriptorProto{
-			cloneFile(proto2Enum),
-			cloneFile(proto3Message),
-			cloneFile(extendableMessage),
-			cloneFile(importPublicFile1),
-			cloneFile(importPublicFile2),
-			cloneFile(importPublicFile3),
-			cloneFile(importPublicFile4),
-		},
-		inDesc: mustParseFile(`
-			name:       "test.proto"
-			package:    "test.graph"
-			dependency: ["import_public4.proto"],
-		`),
-		// TODO: Test import public
-	}, {
-		label: "preserve source code locations",
-		inDesc: mustParseFile(`
-			name: "test.proto"
-			package: "fizz.buzz"
-			source_code_info: {location: [{
-				span: [39,0,882,1]
-			}, {
-				path: [12]
-				span: [39,0,18]
-				leading_detached_comments: [" foo\n"," bar\n"]
-			}, {
-				path: [8,9]
-				span: [51,0,28]
-				leading_comments: " Comment\n"
-			}]}
-		`),
-	}, {
-		label: "invalid source code span",
-		inDesc: mustParseFile(`
-			name: "test.proto"
-			package: "fizz.buzz"
-			source_code_info: {location: [{
-				span: [39]
-			}]}
-		`),
-		wantErr: `invalid span: [39]`,
-	}, {
-		label: "resolve relative reference",
-		inDesc: mustParseFile(`
-			name: "test.proto"
-			package: "fizz.buzz"
-			message_type: [{
-				name: "A"
-				field: [{name:"F" number:1 label:LABEL_OPTIONAL type:TYPE_MESSAGE type_name:"B.C"}]
-				nested_type: [{name: "B"}]
-			}, {
-				name: "B"
-				nested_type: [{name: "C"}]
-			}]
-		`),
-		wantDesc: mustParseFile(`
-			name: "test.proto"
-			package: "fizz.buzz"
-			message_type: [{
-				name: "A"
-				field: [{name:"F" number:1 label:LABEL_OPTIONAL type:TYPE_MESSAGE type_name:".fizz.buzz.B.C"}]
-				nested_type: [{name: "B"}]
-			}, {
-				name: "B"
-				nested_type: [{name: "C"}]
-			}]
-		`),
-	}, {
-		label: "resolve the wrong type",
-		inDesc: mustParseFile(`
-			name: "test.proto"
-			message_type: [{
-				name: "M"
-				field: [{name:"F" number:1 label:LABEL_OPTIONAL type:TYPE_MESSAGE type_name:"E"}]
-				enum_type: [{name: "E" value: [{name:"V0" number:0}, {name:"V1" number:1}]}]
-			}]
-		`),
-		wantErr: `message field "M.F" cannot resolve type: resolved "M.E", but it is not an message`,
-	}, {
-		label: "auto-resolve unknown kind",
-		inDesc: mustParseFile(`
-			name: "test.proto"
-			message_type: [{
-				name: "M"
-				field: [{name:"F" number:1 label:LABEL_OPTIONAL type_name:"E"}]
-				enum_type: [{name: "E" value: [{name:"V0" number:0}, {name:"V1" number:1}]}]
-			}]
-		`),
-		wantDesc: mustParseFile(`
-			name: "test.proto"
-			message_type: [{
-				name: "M"
-				field: [{name:"F" number:1 label:LABEL_OPTIONAL type:TYPE_ENUM type_name:".M.E"}]
-				enum_type: [{name: "E" value: [{name:"V0" number:0}, {name:"V1" number:1}]}]
-			}]
-		`),
-	}, {
-		label: "unresolved import",
-		inDesc: mustParseFile(`
-			name: "test.proto"
-			package: "fizz.buzz"
-			dependency: "remote.proto"
-		`),
-		wantErr: `could not resolve import "remote.proto": not found`,
-	}, {
-		label: "unresolved message field",
-		inDesc: mustParseFile(`
-			name: "test.proto"
-			package: "fizz.buzz"
-			message_type: [{
-				name: "M"
-				field: [{name:"F1" number:1 label:LABEL_OPTIONAL type:TYPE_ENUM type_name:"some.other.enum" default_value:"UNKNOWN"}]
-			}]
-		`),
-		wantErr: `message field "fizz.buzz.M.F1" cannot resolve type: "*.some.other.enum" not found`,
-	}, {
-		label: "unresolved default enum value",
-		inDesc: mustParseFile(`
-			name: "test.proto"
-			package: "fizz.buzz"
-			message_type: [{
-				name: "M"
-				field: [{name:"F1" number:1 label:LABEL_OPTIONAL type:TYPE_ENUM type_name:"E" default_value:"UNKNOWN"}]
-				enum_type: [{name:"E" value:[{name:"V0" number:0}]}]
-			}]
-		`),
-		wantErr: `message field "fizz.buzz.M.F1" has invalid default: could not parse value for enum: "UNKNOWN"`,
-	}, {
-		label: "allowed unresolved default enum value",
-		inDesc: mustParseFile(`
-			name: "test.proto"
-			package: "fizz.buzz"
-			message_type: [{
-				name: "M"
-				field: [{name:"F1" number:1 label:LABEL_OPTIONAL type:TYPE_ENUM type_name:".fizz.buzz.M.E" default_value:"UNKNOWN"}]
-				enum_type: [{name:"E" value:[{name:"V0" number:0}]}]
-			}]
-		`),
-		inOpts: FileOptions{AllowUnresolvable: true},
-	}, {
-		label: "unresolved extendee",
-		inDesc: mustParseFile(`
-			name: "test.proto"
-			package: "fizz.buzz"
-			extension: [{name:"X" number:1 label:LABEL_OPTIONAL extendee:"some.extended.message" type:TYPE_MESSAGE type_name:"some.other.message"}]
-		`),
-		wantErr: `extension field "fizz.buzz.X" cannot resolve extendee: "*.some.extended.message" not found`,
-	}, {
-		label: "unresolved method input",
-		inDesc: mustParseFile(`
-			name: "test.proto"
-			package: "fizz.buzz"
-			service: [{
-				name: "S"
-				method: [{name:"M" input_type:"foo.bar.input" output_type:".absolute.foo.bar.output"}]
-			}]
-		`),
-		wantErr: `service method "fizz.buzz.S.M" cannot resolve input: "*.foo.bar.input" not found`,
-	}, {
-		label: "allowed unresolved references",
-		inDesc: mustParseFile(`
-			name: "test.proto"
-			package: "fizz.buzz"
-			dependency: "remote.proto"
-			message_type: [{
-				name: "M"
-				field: [{name:"F1" number:1 label:LABEL_OPTIONAL type_name:"some.other.enum" default_value:"UNKNOWN"}]
-			}]
-			extension: [{name:"X" number:1 label:LABEL_OPTIONAL extendee:"some.extended.message" type:TYPE_MESSAGE type_name:"some.other.message"}]
-			service: [{
-				name: "S"
-				method: [{name:"M" input_type:"foo.bar.input" output_type:".absolute.foo.bar.output"}]
-			}]
-		`),
-		inOpts: FileOptions{AllowUnresolvable: true},
-	}, {
-		label: "resolved but not imported",
-		inDeps: []*descriptorpb.FileDescriptorProto{mustParseFile(`
-			name: "dep.proto"
-			package: "fizz"
-			message_type: [{name:"M" nested_type:[{name:"M"}]}]
-		`)},
-		inDesc: mustParseFile(`
-			name: "test.proto"
-			package: "fizz.buzz"
-			message_type: [{
-				name: "M"
-				field: [{name:"F" number:1 label:LABEL_OPTIONAL type:TYPE_MESSAGE type_name:"M.M"}]
-			}]
-		`),
-		wantErr: `message field "fizz.buzz.M.F" cannot resolve type: resolved "fizz.M.M", but "dep.proto" is not imported`,
-	}, {
-		label: "resolved from remote import",
-		inDeps: []*descriptorpb.FileDescriptorProto{mustParseFile(`
-			name: "dep.proto"
-			package: "fizz"
-			message_type: [{name:"M" nested_type:[{name:"M"}]}]
-		`)},
-		inDesc: mustParseFile(`
-			name: "test.proto"
-			package: "fizz.buzz"
-			dependency: "dep.proto"
-			message_type: [{
-				name: "M"
-				field: [{name:"F" number:1 label:LABEL_OPTIONAL type:TYPE_MESSAGE type_name:"M.M"}]
-			}]
-		`),
-		wantDesc: mustParseFile(`
-			name: "test.proto"
-			package: "fizz.buzz"
-			dependency: "dep.proto"
-			message_type: [{
-				name: "M"
-				field: [{name:"F" number:1 label:LABEL_OPTIONAL type:TYPE_MESSAGE type_name:".fizz.M.M"}]
-			}]
-		`),
-	}, {
-		label: "namespace conflict on enum value",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			enum_type: [{
-				name: "foo"
-				value: [{name:"foo" number:0}]
-			}]
-		`),
-		wantErr: `descriptor "foo" already declared`,
-	}, {
-		label: "no namespace conflict on message field",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{
-				name: "foo"
-				field: [{name:"foo" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}]
-			}]
-		`),
-	}, {
-		label: "invalid name",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name: "$"}]
-		`),
-		wantErr: `descriptor "" has an invalid nested name: "$"`,
-	}, {
-		label: "invalid empty enum",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" enum_type:[{name:"E"}]}]
-		`),
-		wantErr: `enum "M.E" must contain at least one value declaration`,
-	}, {
-		label: "invalid enum value without number",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" enum_type:[{name:"E" value:[{name:"one"}]}]}]
-		`),
-		wantErr: `enum value "M.one" must have a specified number`,
-	}, {
-		label: "valid enum",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" enum_type:[{name:"E" value:[{name:"one" number:1}]}]}]
-		`),
-	}, {
-		label: "invalid enum reserved names",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" enum_type:[{
-				name:          "E"
-				reserved_name: [""]
-				value: [{name:"V" number:0}]
-			}]}]
-		`),
-		// NOTE: In theory this should be an error.
-		// See https://github.com/protocolbuffers/protobuf/issues/6335.
-		/*wantErr: `enum "M.E" reserved names has invalid name: ""`,*/
-	}, {
-		label: "duplicate enum reserved names",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" enum_type:[{
-				name:          "E"
-				reserved_name: ["foo", "foo"]
-			}]}]
-		`),
-		wantErr: `enum "M.E" reserved names has duplicate name: "foo"`,
-	}, {
-		label: "valid enum reserved names",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" enum_type:[{
-				name:          "E"
-				reserved_name: ["foo", "bar"]
-				value:         [{name:"baz" number:1}]
-			}]}]
-		`),
-	}, {
-		label: "use of enum reserved names",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" enum_type:[{
-				name:          "E"
-				reserved_name: ["foo", "bar"]
-				value:         [{name:"foo" number:1}]
-			}]}]
-		`),
-		wantErr: `enum value "M.foo" must not use reserved name`,
-	}, {
-		label: "invalid enum reserved ranges",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" enum_type:[{
-				name:           "E"
-				reserved_range: [{start:5 end:4}]
-			}]}]
-		`),
-		wantErr: `enum "M.E" reserved ranges has invalid range: 5 to 4`,
-	}, {
-		label: "overlapping enum reserved ranges",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" enum_type:[{
-				name:           "E"
-				reserved_range: [{start:1 end:1000}, {start:10 end:100}]
-			}]}]
-		`),
-		wantErr: `enum "M.E" reserved ranges has overlapping ranges: 1 to 1000 with 10 to 100`,
-	}, {
-		label: "valid enum reserved names",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" enum_type:[{
-				name:           "E"
-				reserved_range: [{start:1 end:10}, {start:100 end:1000}]
-				value:          [{name:"baz" number:50}]
-			}]}]
-		`),
-	}, {
-		label: "use of enum reserved range",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" enum_type:[{
-				name:           "E"
-				reserved_range: [{start:1 end:10}, {start:100 end:1000}]
-				value:          [{name:"baz" number:500}]
-			}]}]
-		`),
-		wantErr: `enum value "M.baz" must not use reserved number 500`,
-	}, {
-		label: "unused enum alias feature",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" enum_type:[{
-				name:    "E"
-				value:   [{name:"baz" number:500}]
-				options: {allow_alias:true}
-			}]}]
-		`),
-		wantErr: `enum "M.E" allows aliases, but none were found`,
-	}, {
-		label: "enum number conflicts",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" enum_type:[{
-				name:  "E"
-				value: [{name:"foo" number:0}, {name:"bar" number:1}, {name:"baz" number:1}]
-			}]}]
-		`),
-		wantErr: `enum "M.E" has conflicting non-aliased values on number 1: "baz" with "bar"`,
-	}, {
-		label: "aliased enum numbers",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" enum_type:[{
-				name:    "E"
-				value:   [{name:"foo" number:0}, {name:"bar" number:1}, {name:"baz" number:1}]
-				options: {allow_alias:true}
-			}]}]
-		`),
-	}, {
-		label: "invalid proto3 enum",
-		inDesc: mustParseFile(`
-			syntax:  "proto3"
-			name:    "test.proto"
-			message_type: [{name:"M" enum_type:[{
-				name:  "E"
-				value: [{name:"baz" number:500}]
-			}]}]
-		`),
-		wantErr: `enum "M.baz" using proto3 semantics must have zero number for the first value`,
-	}, {
-		label: "valid proto3 enum",
-		inDesc: mustParseFile(`
-			syntax:  "proto3"
-			name:    "test.proto"
-			message_type: [{name:"M" enum_type:[{
-				name:  "E"
-				value: [{name:"baz" number:0}]
-			}]}]
-		`),
-	}, {
-		label: "proto3 enum name prefix conflict",
-		inDesc: mustParseFile(`
-			syntax:  "proto3"
-			name:    "test.proto"
-			message_type: [{name:"M" enum_type:[{
-				name:  "E"
-				value: [{name:"e_Foo" number:0}, {name:"fOo" number:1}]
-			}]}]
-		`),
-		wantErr: `enum "M.E" using proto3 semantics has conflict: "fOo" with "e_Foo"`,
-	}, {
-		label: "proto2 enum has name prefix check",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" enum_type:[{
-				name:  "E"
-				value: [{name:"e_Foo" number:0}, {name:"fOo" number:1}]
-			}]}]
-		`),
-	}, {
-		label: "proto3 enum same name prefix with number conflict",
-		inDesc: mustParseFile(`
-			syntax:  "proto3"
-			name:    "test.proto"
-			message_type: [{name:"M" enum_type:[{
-				name:  "E"
-				value: [{name:"e_Foo" number:0}, {name:"fOo" number:0}]
-			}]}]
-		`),
-		wantErr: `enum "M.E" has conflicting non-aliased values on number 0: "fOo" with "e_Foo"`,
-	}, {
-		label: "proto3 enum same name prefix with alias numbers",
-		inDesc: mustParseFile(`
-			syntax:  "proto3"
-			name:    "test.proto"
-			message_type: [{name:"M" enum_type:[{
-				name:    "E"
-				value:   [{name:"e_Foo" number:0}, {name:"fOo" number:0}]
-				options: {allow_alias: true}
-			}]}]
-		`),
-	}, {
-		label: "invalid message reserved names",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" nested_type:[{
-				name:          "M"
-				reserved_name: ["$"]
-			}]}]
-		`),
-		// NOTE: In theory this should be an error.
-		// See https://github.com/protocolbuffers/protobuf/issues/6335.
-		/*wantErr: `message "M.M" reserved names has invalid name: "$"`,*/
-	}, {
-		label: "valid message reserved names",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" nested_type:[{
-				name:          "M"
-				reserved_name: ["foo", "bar"]
-				field:         [{name:"foo" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}]
-			}]}]
-		`),
-		wantErr: `message field "M.M.foo" must not use reserved name`,
-	}, {
-		label: "valid message reserved names",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" nested_type:[{
-				name:          "M"
-				reserved_name: ["foo", "bar"]
-				field:         [{name:"baz" number:1 label:LABEL_OPTIONAL type:TYPE_STRING oneof_index:0}]
-				oneof_decl:    [{name:"foo"}] # not affected by reserved_name
-			}]}]
-		`),
-	}, {
-		label: "invalid reserved number",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" nested_type:[{
-				name:           "M"
-				reserved_range: [{start:1 end:1}]
-				field:          [{name:"baz" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}]
-			}]}]
-		`),
-		wantErr: `message "M.M" reserved ranges has invalid field number: 0`,
-	}, {
-		label: "invalid reserved ranges",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" nested_type:[{
-				name:           "M"
-				reserved_range: [{start:2 end:2}]
-				field:          [{name:"baz" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}]
-			}]}]
-		`),
-		wantErr: `message "M.M" reserved ranges has invalid range: 2 to 1`,
-	}, {
-		label: "overlapping reserved ranges",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" nested_type:[{
-				name:           "M"
-				reserved_range: [{start:1 end:10}, {start:2 end:9}]
-				field:          [{name:"baz" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}]
-			}]}]
-		`),
-		wantErr: `message "M.M" reserved ranges has overlapping ranges: 1 to 9 with 2 to 8`,
-	}, {
-		label: "use of reserved message field number",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" nested_type:[{
-				name:           "M"
-				reserved_range: [{start:10 end:20}, {start:20 end:30}, {start:30 end:31}]
-				field:          [{name:"baz" number:30 label:LABEL_OPTIONAL type:TYPE_STRING}]
-			}]}]
-		`),
-		wantErr: `message field "M.M.baz" must not use reserved number 30`,
-	}, {
-		label: "invalid extension ranges",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" nested_type:[{
-				name:            "M"
-				extension_range: [{start:-500 end:2}]
-				field:           [{name:"baz" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}]
-			}]}]
-		`),
-		wantErr: `message "M.M" extension ranges has invalid field number: -500`,
-	}, {
-		label: "overlapping reserved and extension ranges",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" nested_type:[{
-				name:            "M"
-				reserved_range:  [{start:15 end:20}, {start:1 end:3}, {start:7 end:10}]
-				extension_range: [{start:8 end:9}, {start:3 end:5}]
-			}]}]
-		`),
-		wantErr: `message "M.M" reserved and extension ranges has overlapping ranges: 7 to 9 with 8`,
-	}, {
-		label: "message field conflicting number",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" nested_type:[{
-				name:            "M"
-				field: [
-					{name:"one" number:1 label:LABEL_OPTIONAL type:TYPE_STRING},
-					{name:"One" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}
-				]
-			}]}]
-		`),
-		wantErr: `message "M.M" has conflicting fields: "One" with "one"`,
-	}, {
-		label: "invalid MessageSet",
-		inDesc: mustParseFile(`
-			syntax:  "proto3"
-			name:    "test.proto"
-			message_type: [{name:"M" nested_type:[{
-				name:    "M"
-				options: {message_set_wire_format:true}
-			}]}]
-		`),
-		wantErr: func() string {
-			if flags.ProtoLegacy {
-				return `message "M.M" is an invalid proto1 MessageSet`
-			} else {
-				return `message "M.M" is a MessageSet, which is a legacy proto1 feature that is no longer supported`
-			}
-		}(),
-	}, {
-		label: "valid MessageSet",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" nested_type:[{
-				name:            "M"
-				extension_range: [{start:1 end:100000}]
-				options:         {message_set_wire_format:true}
-			}]}]
-		`),
-		wantErr: func() string {
-			if flags.ProtoLegacy {
-				return ""
-			} else {
-				return `message "M.M" is a MessageSet, which is a legacy proto1 feature that is no longer supported`
-			}
-		}(),
-	}, {
-		label: "invalid extension ranges in proto3",
-		inDesc: mustParseFile(`
-			syntax:  "proto3"
-			name:    "test.proto"
-			message_type: [{name:"M" nested_type:[{
-				name:            "M"
-				extension_range: [{start:1 end:100000}]
-			}]}]
-		`),
-		wantErr: `message "M.M" using proto3 semantics cannot have extension ranges`,
-	}, {
-		label: "proto3 message fields conflict",
-		inDesc: mustParseFile(`
-			syntax:  "proto3"
-			name:    "test.proto"
-			message_type: [{name:"M" nested_type:[{
-				name: "M"
-				field: [
-					{name:"_b_a_z_" number:1 label:LABEL_OPTIONAL type:TYPE_STRING},
-					{name:"baz" number:2 label:LABEL_OPTIONAL type:TYPE_STRING}
-				]
-			}]}]
-		`),
-		wantErr: `message "M.M" using proto3 semantics has conflict: "baz" with "_b_a_z_"`,
-	}, {
-		label: "proto3 message fields",
-		inDesc: mustParseFile(`
-			syntax:  "proto3"
-			name:    "test.proto"
-			message_type: [{name:"M" nested_type:[{
-				name:       "M"
-				field:      [{name:"_b_a_z_" number:1 label:LABEL_OPTIONAL type:TYPE_STRING oneof_index:0}]
-				oneof_decl: [{name:"baz"}] # proto3 name conflict logic does not include oneof
-			}]}]
-		`),
-	}, {
-		label: "proto2 message fields with no conflict",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			message_type: [{name:"M" nested_type:[{
-				name: "M"
-				field: [
-					{name:"_b_a_z_" number:1 label:LABEL_OPTIONAL type:TYPE_STRING},
-					{name:"baz" number:2 label:LABEL_OPTIONAL type:TYPE_STRING}
-				]
-			}]}]
-		`),
-	}, {
-		label: "proto3 message with unresolved enum",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			syntax:  "proto3"
-			message_type: [{
-				name: "M"
-				field: [
-					{name:"enum" number:1 label:LABEL_OPTIONAL type:TYPE_ENUM type_name:".fizz.buzz.Enum"}
-				]
-			}]
-		`),
-		inOpts: FileOptions{AllowUnresolvable: true},
-		// TODO: Test field and oneof handling in validateMessageDeclarations
-		// TODO: Test unmarshalDefault
-		// TODO: Test validateExtensionDeclarations
-		// TODO: Test checkValidGroup
-		// TODO: Test checkValidMap
-	}, {
-		label: "empty service",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			service: [{name:"service"}]
-		`),
-	}, {
-		label: "service with method with unresolved",
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			service: [{
-				name: "service"
-				method: [{
-					name:"method"
-					input_type:"foo"
-					output_type:".foo.bar.baz"
-				}]
-			}]
-		`),
-		inOpts: FileOptions{AllowUnresolvable: true},
-	}, {
-		label: "service with wrong reference type",
-		inDeps: []*descriptorpb.FileDescriptorProto{
-			cloneFile(proto3Message),
-			cloneFile(proto2Enum),
-		},
-		inDesc: mustParseFile(`
-			name:    "test.proto"
-			dependency: ["proto2_enum.proto", "proto3_message.proto"]
-			service: [{
-				name: "service"
-				method: [{
-					name:        "method"
-					input_type:  ".test.proto2.Enum",
-					output_type: ".test.proto3.Message"
-				}]
-			}]
-		`),
-		wantErr: `service method "service.method" cannot resolve input: resolved "test.proto2.Enum", but it is not an message`,
-	}}
-
-	for _, tt := range tests {
-		t.Run(tt.label, func(t *testing.T) {
-			r := new(protoregistry.Files)
-			for i, dep := range tt.inDeps {
-				f, err := tt.inOpts.New(dep, r)
-				if err != nil {
-					t.Fatalf("dependency %d: unexpected NewFile() error: %v", i, err)
-				}
-				if err := r.RegisterFile(f); err != nil {
-					t.Fatalf("dependency %d: unexpected Register() error: %v", i, err)
-				}
-			}
-			var gotDesc *descriptorpb.FileDescriptorProto
-			if tt.wantErr == "" && tt.wantDesc == nil {
-				tt.wantDesc = cloneFile(tt.inDesc)
-			}
-			gotFile, err := tt.inOpts.New(tt.inDesc, r)
-			if gotFile != nil {
-				gotDesc = ToFileDescriptorProto(gotFile)
-			}
-			if !proto.Equal(gotDesc, tt.wantDesc) {
-				t.Errorf("NewFile() mismatch:\ngot  %v\nwant %v", gotDesc, tt.wantDesc)
-			}
-			if ((err == nil) != (tt.wantErr == "")) || !strings.Contains(fmt.Sprint(err), tt.wantErr) {
-				t.Errorf("NewFile() error:\ngot:  %v\nwant: %v", err, tt.wantErr)
-			}
-		})
-	}
-}
-
-func TestNewFiles(t *testing.T) {
-	fdset := &descriptorpb.FileDescriptorSet{
-		File: []*descriptorpb.FileDescriptorProto{
-			mustParseFile(`
-				name: "test.proto"
-				package: "fizz"
-				dependency: "dep.proto"
-				message_type: [{
-					name: "M2"
-					field: [{name:"F" number:1 label:LABEL_OPTIONAL type:TYPE_MESSAGE type_name:"M1"}]
-				}]
-			`),
-			// Inputs deliberately out of order.
-			mustParseFile(`
-				name: "dep.proto"
-				package: "fizz"
-				message_type: [{name:"M1"}]
-			`),
-		},
-	}
-	f, err := NewFiles(fdset)
-	if err != nil {
-		t.Fatal(err)
-	}
-	m1, err := f.FindDescriptorByName("fizz.M1")
-	if err != nil {
-		t.Fatalf(`f.FindDescriptorByName("fizz.M1") = %v`, err)
-	}
-	m2, err := f.FindDescriptorByName("fizz.M2")
-	if err != nil {
-		t.Fatalf(`f.FindDescriptorByName("fizz.M2") = %v`, err)
-	}
-	if m2.(protoreflect.MessageDescriptor).Fields().ByName("F").Message() != m1 {
-		t.Fatalf(`m1.Fields().ByName("F").Message() != m2`)
-	}
-}
-
-func TestNewFilesImportCycle(t *testing.T) {
-	fdset := &descriptorpb.FileDescriptorSet{
-		File: []*descriptorpb.FileDescriptorProto{
-			mustParseFile(`
-				name: "test.proto"
-				package: "fizz"
-				dependency: "dep.proto"
-			`),
-			mustParseFile(`
-				name: "dep.proto"
-				package: "fizz"
-				dependency: "test.proto"
-			`),
-		},
-	}
-	_, err := NewFiles(fdset)
-	if err == nil {
-		t.Fatal("NewFiles with import cycle: success, want error")
-	}
-}
-
-func TestSourceLocations(t *testing.T) {
-	fd := mustParseFile(`
-		name: "comments.proto"
-		message_type: [{
-			name: "Message1"
-			field: [
-				{name:"field1" number:1 label:LABEL_OPTIONAL type:TYPE_STRING},
-				{name:"field2" number:2 label:LABEL_OPTIONAL type:TYPE_STRING},
-				{name:"field3" number:3 label:LABEL_OPTIONAL type:TYPE_STRING oneof_index:0},
-				{name:"field4" number:4 label:LABEL_OPTIONAL type:TYPE_STRING oneof_index:0},
-				{name:"field5" number:5 label:LABEL_OPTIONAL type:TYPE_STRING oneof_index:1},
-				{name:"field6" number:6 label:LABEL_OPTIONAL type:TYPE_STRING oneof_index:1}
-			]
-			extension: [
-				{name:"extension1" number:100 label:LABEL_OPTIONAL type:TYPE_STRING extendee:".Message1"},
-				{name:"extension2" number:101 label:LABEL_OPTIONAL type:TYPE_STRING extendee:".Message1"}
-			]
-			nested_type: [{name:"Message1"}, {name:"Message2"}]
-			extension_range: {start:100 end:536870912}
-			oneof_decl: [{name:"oneof1"}, {name:"oneof2"}]
-		}, {
-			name: "Message2"
-			enum_type: {
-				name: "Enum1"
-				value: [
-					{name: "FOO", number: 0},
-					{name: "BAR", number: 1}
-				]
-			}
-		}]
-		enum_type: {
-			name: "Enum1"
-			value: [
-				{name: "FOO", number: 0},
-				{name: "BAR", number: 1}
-			]
-		}
-		service: {
-			name: "Service1"
-			method: [
-				{name:"Method1" input_type:".Message1" output_type:".Message1"},
-				{name:"Method2" input_type:".Message2" output_type:".Message2"}
-			]
-		}
-		extension: [
-			{name:"extension1" number:102 label:LABEL_OPTIONAL type:TYPE_STRING extendee:".Message1"},
-			{name:"extension2" number:103 label:LABEL_OPTIONAL type:TYPE_STRING extendee:".Message1"}
-		]
-		source_code_info: {
-			location: [
-				{span:[0,0,69,1]},
-				{path:[12] span:[0,0,18]},
-				{path:[5,0] span:[3,0,8,1] leading_comments:" Enum1\r\n"},
-				{path:[5,0,1] span:[3,5,10]},
-				{path:[5,0,2,0] span:[5,2,10] leading_comments:" FOO\r\n"},
-				{path:[5,0,2,0,1] span:[5,2,5]},
-				{path:[5,0,2,0,2] span:[5,8,9]},
-				{path:[5,0,2,1] span:[7,2,10] leading_comments:" BAR\r\n"},
-				{path:[5,0,2,1,1] span:[7,2,5]},
-				{path:[5,0,2,1,2] span:[7,8,9]},
-				{path:[4,0] span:[11,0,43,1] leading_comments:" Message1\r\n"},
-				{path:[4,0,1] span:[11,8,16]},
-				{path:[4,0,3,0] span:[13,2,21] leading_comments:" Message1.Message1\r\n"},
-				{path:[4,0,3,0,1] span:[13,10,18]},
-				{path:[4,0,3,1] span:[15,2,21] leading_comments:" Message1.Message2\r\n"},
-				{path:[4,0,3,1,1] span:[15,10,18]},
-				{path:[4,0,2,0] span:[18,2,29] leading_comments:" Message1.field1\r\n"},
-				{path:[4,0,2,0,4] span:[18,2,10]},
-				{path:[4,0,2,0,5] span:[18,11,17]},
-				{path:[4,0,2,0,1] span:[18,18,24]},
-				{path:[4,0,2,0,3] span:[18,27,28]},
-				{path:[4,0,2,1] span:[20,2,29] leading_comments:" Message1.field2\r\n"},
-				{path:[4,0,2,1,4] span:[20,2,10]},
-				{path:[4,0,2,1,5] span:[20,11,17]},
-				{path:[4,0,2,1,1] span:[20,18,24]},
-				{path:[4,0,2,1,3] span:[20,27,28]},
-				{path:[4,0,8,0] span:[22,2,27,3] leading_comments:" Message1.oneof1\r\n"},
-				{path:[4,0,8,0,1] span:[22,8,14]},
-				{path:[4,0,2,2] span:[24,4,22] leading_comments:" Message1.field3\r\n"},
-				{path:[4,0,2,2,5] span:[24,4,10]},
-				{path:[4,0,2,2,1] span:[24,11,17]},
-				{path:[4,0,2,2,3] span:[24,20,21]},
-				{path:[4,0,2,3] span:[26,4,22] leading_comments:" Message1.field4\r\n"},
-				{path:[4,0,2,3,5] span:[26,4,10]},
-				{path:[4,0,2,3,1] span:[26,11,17]},
-				{path:[4,0,2,3,3] span:[26,20,21]},
-				{path:[4,0,8,1] span:[29,2,34,3] leading_comments:" Message1.oneof2\r\n"},
-				{path:[4,0,8,1,1] span:[29,8,14]},
-				{path:[4,0,2,4] span:[31,4,22] leading_comments:" Message1.field5\r\n"},
-				{path:[4,0,2,4,5] span:[31,4,10]},
-				{path:[4,0,2,4,1] span:[31,11,17]},
-				{path:[4,0,2,4,3] span:[31,20,21]},
-				{path:[4,0,2,5] span:[33,4,22] leading_comments:" Message1.field6\r\n"},
-				{path:[4,0,2,5,5] span:[33,4,10]},
-				{path:[4,0,2,5,1] span:[33,11,17]},
-				{path:[4,0,2,5,3] span:[33,20,21]},
-				{path:[4,0,5] span:[36,2,24]},
-				{path:[4,0,5,0] span:[36,13,23]},
-				{path:[4,0,5,0,1] span:[36,13,16]},
-				{path:[4,0,5,0,2] span:[36,20,23]},
-				{path:[4,0,6] span:[37,2,42,3]},
-				{path:[4,0,6,0] span:[39,4,37] leading_comments:" Message1.extension1\r\n"},
-				{path:[4,0,6,0,2] span:[37,9,18]},
-				{path:[4,0,6,0,4] span:[39,4,12]},
-				{path:[4,0,6,0,5] span:[39,13,19]},
-				{path:[4,0,6,0,1] span:[39,20,30]},
-				{path:[4,0,6,0,3] span:[39,33,36]},
-				{path:[4,0,6,1] span:[41,4,37] leading_comments:" Message1.extension2\r\n"},
-				{path:[4,0,6,1,2] span:[37,9,18]},
-				{path:[4,0,6,1,4] span:[41,4,12]},
-				{path:[4,0,6,1,5] span:[41,13,19]},
-				{path:[4,0,6,1,1] span:[41,20,30]},
-				{path:[4,0,6,1,3] span:[41,33,36]},
-				{path:[7] span:[45,0,50,1]},
-				{path:[7,0] span:[47,2,35] leading_comments:" extension1\r\n"},
-				{path:[7,0,2] span:[45,7,15]},
-				{path:[7,0,4] span:[47,2,10]},
-				{path:[7,0,5] span:[47,11,17]},
-				{path:[7,0,1] span:[47,18,28]},
-				{path:[7,0,3] span:[47,31,34]},
-				{path:[7,1] span:[49,2,35] leading_comments:" extension2\r\n"},
-				{path:[7,1,2] span:[45,7,15]},
-				{path:[7,1,4] span:[49,2,10]},
-				{path:[7,1,5] span:[49,11,17]},
-				{path:[7,1,1] span:[49,18,28]},
-				{path:[7,1,3] span:[49,31,34]},
-				{path:[4,1] span:[53,0,61,1] leading_comments:" Message2\r\n"},
-				{path:[4,1,1] span:[53,8,16]},
-				{path:[4,1,4,0] span:[55,2,60,3] leading_comments:" Message2.Enum1\r\n"},
-				{path:[4,1,4,0,1] span:[55,7,12]},
-				{path:[4,1,4,0,2,0] span:[57,4,12] leading_comments:" Message2.FOO\r\n"},
-				{path:[4,1,4,0,2,0,1] span:[57,4,7]},
-				{path:[4,1,4,0,2,0,2] span:[57,10,11]},
-				{path:[4,1,4,0,2,1] span:[59,4,12] leading_comments:" Message2.BAR\r\n"},
-				{path:[4,1,4,0,2,1,1] span:[59,4,7]},
-				{path:[4,1,4,0,2,1,2] span:[59,10,11]},
-				{path:[6,0] span:[64,0,69,1] leading_comments:" Service1\r\n"},
-				{path:[6,0,1] span:[64,8,16]},
-				{path:[6,0,2,0] span:[66,2,43] leading_comments:" Service1.Method1\r\n"},
-				{path:[6,0,2,0,1] span:[66,6,13]},
-				{path:[6,0,2,0,2] span:[66,14,22]},
-				{path:[6,0,2,0,3] span:[66,33,41]},
-				{path:[6,0,2,1] span:[68,2,43] leading_comments:" Service1.Method2\r\n"},
-				{path:[6,0,2,1,1] span:[68,6,13]},
-				{path:[6,0,2,1,2] span:[68,14,22]},
-				{path:[6,0,2,1,3] span:[68,33,41]}
-			]
-		}
-	`)
-	fileDesc, err := NewFile(fd, nil)
-	if err != nil {
-		t.Fatalf("NewFile error: %v", err)
-	}
-
-	var walkDescs func(protoreflect.Descriptor, func(protoreflect.Descriptor))
-	walkDescs = func(d protoreflect.Descriptor, f func(protoreflect.Descriptor)) {
-		f(d)
-		if d, ok := d.(interface {
-			Enums() protoreflect.EnumDescriptors
-		}); ok {
-			eds := d.Enums()
-			for i := 0; i < eds.Len(); i++ {
-				walkDescs(eds.Get(i), f)
-			}
-		}
-		if d, ok := d.(interface {
-			Values() protoreflect.EnumValueDescriptors
-		}); ok {
-			vds := d.Values()
-			for i := 0; i < vds.Len(); i++ {
-				walkDescs(vds.Get(i), f)
-			}
-		}
-		if d, ok := d.(interface {
-			Messages() protoreflect.MessageDescriptors
-		}); ok {
-			mds := d.Messages()
-			for i := 0; i < mds.Len(); i++ {
-				walkDescs(mds.Get(i), f)
-			}
-		}
-		if d, ok := d.(interface {
-			Fields() protoreflect.FieldDescriptors
-		}); ok {
-			fds := d.Fields()
-			for i := 0; i < fds.Len(); i++ {
-				walkDescs(fds.Get(i), f)
-			}
-		}
-		if d, ok := d.(interface {
-			Oneofs() protoreflect.OneofDescriptors
-		}); ok {
-			ods := d.Oneofs()
-			for i := 0; i < ods.Len(); i++ {
-				walkDescs(ods.Get(i), f)
-			}
-		}
-		if d, ok := d.(interface {
-			Extensions() protoreflect.ExtensionDescriptors
-		}); ok {
-			xds := d.Extensions()
-			for i := 0; i < xds.Len(); i++ {
-				walkDescs(xds.Get(i), f)
-			}
-		}
-		if d, ok := d.(interface {
-			Services() protoreflect.ServiceDescriptors
-		}); ok {
-			sds := d.Services()
-			for i := 0; i < sds.Len(); i++ {
-				walkDescs(sds.Get(i), f)
-			}
-		}
-		if d, ok := d.(interface {
-			Methods() protoreflect.MethodDescriptors
-		}); ok {
-			mds := d.Methods()
-			for i := 0; i < mds.Len(); i++ {
-				walkDescs(mds.Get(i), f)
-			}
-		}
-	}
-
-	var numDescs int
-	walkDescs(fileDesc, func(d protoreflect.Descriptor) {
-		// The comment for every descriptor should be the full name itself.
-		got := strings.TrimSpace(fileDesc.SourceLocations().ByDescriptor(d).LeadingComments)
-		want := string(d.FullName())
-		if got != want {
-			t.Errorf("comment mismatch: got %v, want %v", got, want)
-		}
-		numDescs++
-	})
-	if numDescs != 30 {
-		t.Errorf("visited %d descriptor, expected 30", numDescs)
-	}
-}
diff --git a/reflect/protodesc/proto.go b/reflect/protodesc/proto.go
deleted file mode 100644
index a7c5cef..0000000
--- a/reflect/protodesc/proto.go
+++ /dev/null
@@ -1,252 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protodesc
-
-import (
-	"fmt"
-	"strings"
-
-	"google.golang.org/protobuf/internal/encoding/defval"
-	"google.golang.org/protobuf/internal/strs"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoreflect"
-
-	"google.golang.org/protobuf/types/descriptorpb"
-)
-
-// ToFileDescriptorProto copies a protoreflect.FileDescriptor into a
-// google.protobuf.FileDescriptorProto message.
-func ToFileDescriptorProto(file protoreflect.FileDescriptor) *descriptorpb.FileDescriptorProto {
-	p := &descriptorpb.FileDescriptorProto{
-		Name:    proto.String(file.Path()),
-		Options: proto.Clone(file.Options()).(*descriptorpb.FileOptions),
-	}
-	if file.Package() != "" {
-		p.Package = proto.String(string(file.Package()))
-	}
-	for i, imports := 0, file.Imports(); i < imports.Len(); i++ {
-		imp := imports.Get(i)
-		p.Dependency = append(p.Dependency, imp.Path())
-		if imp.IsPublic {
-			p.PublicDependency = append(p.PublicDependency, int32(i))
-		}
-		if imp.IsWeak {
-			p.WeakDependency = append(p.WeakDependency, int32(i))
-		}
-	}
-	for i, locs := 0, file.SourceLocations(); i < locs.Len(); i++ {
-		loc := locs.Get(i)
-		l := &descriptorpb.SourceCodeInfo_Location{}
-		l.Path = append(l.Path, loc.Path...)
-		if loc.StartLine == loc.EndLine {
-			l.Span = []int32{int32(loc.StartLine), int32(loc.StartColumn), int32(loc.EndColumn)}
-		} else {
-			l.Span = []int32{int32(loc.StartLine), int32(loc.StartColumn), int32(loc.EndLine), int32(loc.EndColumn)}
-		}
-		l.LeadingDetachedComments = append([]string(nil), loc.LeadingDetachedComments...)
-		if loc.LeadingComments != "" {
-			l.LeadingComments = proto.String(loc.LeadingComments)
-		}
-		if loc.TrailingComments != "" {
-			l.TrailingComments = proto.String(loc.TrailingComments)
-		}
-		if p.SourceCodeInfo == nil {
-			p.SourceCodeInfo = &descriptorpb.SourceCodeInfo{}
-		}
-		p.SourceCodeInfo.Location = append(p.SourceCodeInfo.Location, l)
-
-	}
-	for i, messages := 0, file.Messages(); i < messages.Len(); i++ {
-		p.MessageType = append(p.MessageType, ToDescriptorProto(messages.Get(i)))
-	}
-	for i, enums := 0, file.Enums(); i < enums.Len(); i++ {
-		p.EnumType = append(p.EnumType, ToEnumDescriptorProto(enums.Get(i)))
-	}
-	for i, services := 0, file.Services(); i < services.Len(); i++ {
-		p.Service = append(p.Service, ToServiceDescriptorProto(services.Get(i)))
-	}
-	for i, exts := 0, file.Extensions(); i < exts.Len(); i++ {
-		p.Extension = append(p.Extension, ToFieldDescriptorProto(exts.Get(i)))
-	}
-	if syntax := file.Syntax(); syntax != protoreflect.Proto2 {
-		p.Syntax = proto.String(file.Syntax().String())
-	}
-	return p
-}
-
-// ToDescriptorProto copies a protoreflect.MessageDescriptor into a
-// google.protobuf.DescriptorProto message.
-func ToDescriptorProto(message protoreflect.MessageDescriptor) *descriptorpb.DescriptorProto {
-	p := &descriptorpb.DescriptorProto{
-		Name:    proto.String(string(message.Name())),
-		Options: proto.Clone(message.Options()).(*descriptorpb.MessageOptions),
-	}
-	for i, fields := 0, message.Fields(); i < fields.Len(); i++ {
-		p.Field = append(p.Field, ToFieldDescriptorProto(fields.Get(i)))
-	}
-	for i, exts := 0, message.Extensions(); i < exts.Len(); i++ {
-		p.Extension = append(p.Extension, ToFieldDescriptorProto(exts.Get(i)))
-	}
-	for i, messages := 0, message.Messages(); i < messages.Len(); i++ {
-		p.NestedType = append(p.NestedType, ToDescriptorProto(messages.Get(i)))
-	}
-	for i, enums := 0, message.Enums(); i < enums.Len(); i++ {
-		p.EnumType = append(p.EnumType, ToEnumDescriptorProto(enums.Get(i)))
-	}
-	for i, xranges := 0, message.ExtensionRanges(); i < xranges.Len(); i++ {
-		xrange := xranges.Get(i)
-		p.ExtensionRange = append(p.ExtensionRange, &descriptorpb.DescriptorProto_ExtensionRange{
-			Start:   proto.Int32(int32(xrange[0])),
-			End:     proto.Int32(int32(xrange[1])),
-			Options: proto.Clone(message.ExtensionRangeOptions(i)).(*descriptorpb.ExtensionRangeOptions),
-		})
-	}
-	for i, oneofs := 0, message.Oneofs(); i < oneofs.Len(); i++ {
-		p.OneofDecl = append(p.OneofDecl, ToOneofDescriptorProto(oneofs.Get(i)))
-	}
-	for i, ranges := 0, message.ReservedRanges(); i < ranges.Len(); i++ {
-		rrange := ranges.Get(i)
-		p.ReservedRange = append(p.ReservedRange, &descriptorpb.DescriptorProto_ReservedRange{
-			Start: proto.Int32(int32(rrange[0])),
-			End:   proto.Int32(int32(rrange[1])),
-		})
-	}
-	for i, names := 0, message.ReservedNames(); i < names.Len(); i++ {
-		p.ReservedName = append(p.ReservedName, string(names.Get(i)))
-	}
-	return p
-}
-
-// ToFieldDescriptorProto copies a protoreflect.FieldDescriptor into a
-// google.protobuf.FieldDescriptorProto message.
-func ToFieldDescriptorProto(field protoreflect.FieldDescriptor) *descriptorpb.FieldDescriptorProto {
-	p := &descriptorpb.FieldDescriptorProto{
-		Name:    proto.String(string(field.Name())),
-		Number:  proto.Int32(int32(field.Number())),
-		Label:   descriptorpb.FieldDescriptorProto_Label(field.Cardinality()).Enum(),
-		Options: proto.Clone(field.Options()).(*descriptorpb.FieldOptions),
-	}
-	if field.IsExtension() {
-		p.Extendee = fullNameOf(field.ContainingMessage())
-	}
-	if field.Kind().IsValid() {
-		p.Type = descriptorpb.FieldDescriptorProto_Type(field.Kind()).Enum()
-	}
-	if field.Enum() != nil {
-		p.TypeName = fullNameOf(field.Enum())
-	}
-	if field.Message() != nil {
-		p.TypeName = fullNameOf(field.Message())
-	}
-	if field.HasJSONName() {
-		// A bug in older versions of protoc would always populate the
-		// "json_name" option for extensions when it is meaningless.
-		// When it did so, it would always use the camel-cased field name.
-		if field.IsExtension() {
-			p.JsonName = proto.String(strs.JSONCamelCase(string(field.Name())))
-		} else {
-			p.JsonName = proto.String(field.JSONName())
-		}
-	}
-	if field.Syntax() == protoreflect.Proto3 && field.HasOptionalKeyword() {
-		p.Proto3Optional = proto.Bool(true)
-	}
-	if field.HasDefault() {
-		def, err := defval.Marshal(field.Default(), field.DefaultEnumValue(), field.Kind(), defval.Descriptor)
-		if err != nil && field.DefaultEnumValue() != nil {
-			def = string(field.DefaultEnumValue().Name()) // occurs for unresolved enum values
-		} else if err != nil {
-			panic(fmt.Sprintf("%v: %v", field.FullName(), err))
-		}
-		p.DefaultValue = proto.String(def)
-	}
-	if oneof := field.ContainingOneof(); oneof != nil {
-		p.OneofIndex = proto.Int32(int32(oneof.Index()))
-	}
-	return p
-}
-
-// ToOneofDescriptorProto copies a protoreflect.OneofDescriptor into a
-// google.protobuf.OneofDescriptorProto message.
-func ToOneofDescriptorProto(oneof protoreflect.OneofDescriptor) *descriptorpb.OneofDescriptorProto {
-	return &descriptorpb.OneofDescriptorProto{
-		Name:    proto.String(string(oneof.Name())),
-		Options: proto.Clone(oneof.Options()).(*descriptorpb.OneofOptions),
-	}
-}
-
-// ToEnumDescriptorProto copies a protoreflect.EnumDescriptor into a
-// google.protobuf.EnumDescriptorProto message.
-func ToEnumDescriptorProto(enum protoreflect.EnumDescriptor) *descriptorpb.EnumDescriptorProto {
-	p := &descriptorpb.EnumDescriptorProto{
-		Name:    proto.String(string(enum.Name())),
-		Options: proto.Clone(enum.Options()).(*descriptorpb.EnumOptions),
-	}
-	for i, values := 0, enum.Values(); i < values.Len(); i++ {
-		p.Value = append(p.Value, ToEnumValueDescriptorProto(values.Get(i)))
-	}
-	for i, ranges := 0, enum.ReservedRanges(); i < ranges.Len(); i++ {
-		rrange := ranges.Get(i)
-		p.ReservedRange = append(p.ReservedRange, &descriptorpb.EnumDescriptorProto_EnumReservedRange{
-			Start: proto.Int32(int32(rrange[0])),
-			End:   proto.Int32(int32(rrange[1])),
-		})
-	}
-	for i, names := 0, enum.ReservedNames(); i < names.Len(); i++ {
-		p.ReservedName = append(p.ReservedName, string(names.Get(i)))
-	}
-	return p
-}
-
-// ToEnumValueDescriptorProto copies a protoreflect.EnumValueDescriptor into a
-// google.protobuf.EnumValueDescriptorProto message.
-func ToEnumValueDescriptorProto(value protoreflect.EnumValueDescriptor) *descriptorpb.EnumValueDescriptorProto {
-	return &descriptorpb.EnumValueDescriptorProto{
-		Name:    proto.String(string(value.Name())),
-		Number:  proto.Int32(int32(value.Number())),
-		Options: proto.Clone(value.Options()).(*descriptorpb.EnumValueOptions),
-	}
-}
-
-// ToServiceDescriptorProto copies a protoreflect.ServiceDescriptor into a
-// google.protobuf.ServiceDescriptorProto message.
-func ToServiceDescriptorProto(service protoreflect.ServiceDescriptor) *descriptorpb.ServiceDescriptorProto {
-	p := &descriptorpb.ServiceDescriptorProto{
-		Name:    proto.String(string(service.Name())),
-		Options: proto.Clone(service.Options()).(*descriptorpb.ServiceOptions),
-	}
-	for i, methods := 0, service.Methods(); i < methods.Len(); i++ {
-		p.Method = append(p.Method, ToMethodDescriptorProto(methods.Get(i)))
-	}
-	return p
-}
-
-// ToMethodDescriptorProto copies a protoreflect.MethodDescriptor into a
-// google.protobuf.MethodDescriptorProto message.
-func ToMethodDescriptorProto(method protoreflect.MethodDescriptor) *descriptorpb.MethodDescriptorProto {
-	p := &descriptorpb.MethodDescriptorProto{
-		Name:       proto.String(string(method.Name())),
-		InputType:  fullNameOf(method.Input()),
-		OutputType: fullNameOf(method.Output()),
-		Options:    proto.Clone(method.Options()).(*descriptorpb.MethodOptions),
-	}
-	if method.IsStreamingClient() {
-		p.ClientStreaming = proto.Bool(true)
-	}
-	if method.IsStreamingServer() {
-		p.ServerStreaming = proto.Bool(true)
-	}
-	return p
-}
-
-func fullNameOf(d protoreflect.Descriptor) *string {
-	if d == nil {
-		return nil
-	}
-	if strings.HasPrefix(string(d.FullName()), unknownPrefix) {
-		return proto.String(string(d.FullName()[len(unknownPrefix):]))
-	}
-	return proto.String("." + string(d.FullName()))
-}
diff --git a/reflect/protopath/path.go b/reflect/protopath/path.go
deleted file mode 100644
index 07f839d..0000000
--- a/reflect/protopath/path.go
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package protopath provides functionality for
-// representing a sequence of protobuf reflection operations on a message.
-package protopath
-
-import (
-	"fmt"
-
-	"google.golang.org/protobuf/internal/msgfmt"
-	"google.golang.org/protobuf/reflect/protoreflect"
-)
-
-// NOTE: The Path and Values are separate types here since there are use cases
-// where you would like to "address" some value in a message with just the path
-// and don't have the value information available.
-//
-// This is different from how "github.com/google/go-cmp/cmp".Path operates,
-// which combines both path and value information together.
-// Since the cmp package itself is the only one ever constructing a cmp.Path,
-// it will always have the value available.
-
-// Path is a sequence of protobuf reflection steps applied to some root
-// protobuf message value to arrive at the current value.
-// The first step must be a Root step.
-type Path []Step
-
-// TODO: Provide a Parse function that parses something similar to or
-// perhaps identical to the output of Path.String.
-
-// Index returns the ith step in the path and supports negative indexing.
-// A negative index starts counting from the tail of the Path such that -1
-// refers to the last step, -2 refers to the second-to-last step, and so on.
-// It returns a zero Step value if the index is out-of-bounds.
-func (p Path) Index(i int) Step {
-	if i < 0 {
-		i = len(p) + i
-	}
-	if i < 0 || i >= len(p) {
-		return Step{}
-	}
-	return p[i]
-}
-
-// String returns a structured representation of the path
-// by concatenating the string representation of every path step.
-func (p Path) String() string {
-	var b []byte
-	for _, s := range p {
-		b = s.appendString(b)
-	}
-	return string(b)
-}
-
-// Values is a Path paired with a sequence of values at each step.
-// The lengths of Path and Values must be identical.
-// The first step must be a Root step and
-// the first value must be a concrete message value.
-type Values struct {
-	Path   Path
-	Values []protoreflect.Value
-}
-
-// Len reports the length of the path and values.
-// If the path and values have differing length, it returns the minimum length.
-func (p Values) Len() int {
-	n := len(p.Path)
-	if n > len(p.Values) {
-		n = len(p.Values)
-	}
-	return n
-}
-
-// Index returns the ith step and value and supports negative indexing.
-// A negative index starts counting from the tail of the Values such that -1
-// refers to the last pair, -2 refers to the second-to-last pair, and so on.
-func (p Values) Index(i int) (out struct {
-	Step  Step
-	Value protoreflect.Value
-}) {
-	// NOTE: This returns a single struct instead of two return values so that
-	// callers can make use of the the value in an expression:
-	//	vs.Index(i).Value.Interface()
-	n := p.Len()
-	if i < 0 {
-		i = n + i
-	}
-	if i < 0 || i >= n {
-		return out
-	}
-	out.Step = p.Path[i]
-	out.Value = p.Values[i]
-	return out
-}
-
-// String returns a humanly readable representation of the path and last value.
-// Do not depend on the output being stable.
-//
-// For example:
-//	(path.to.MyMessage).list_field[5].map_field["hello"] = {hello: "world"}
-func (p Values) String() string {
-	n := p.Len()
-	if n == 0 {
-		return ""
-	}
-
-	// Determine the field descriptor associated with the last step.
-	var fd protoreflect.FieldDescriptor
-	last := p.Index(-1)
-	switch last.Step.kind {
-	case FieldAccessStep:
-		fd = last.Step.FieldDescriptor()
-	case MapIndexStep, ListIndexStep:
-		fd = p.Index(-2).Step.FieldDescriptor()
-	}
-
-	// Format the full path with the last value.
-	return fmt.Sprintf("%v = %v", p.Path[:n], msgfmt.FormatValue(last.Value, fd))
-}
diff --git a/reflect/protopath/step.go b/reflect/protopath/step.go
deleted file mode 100644
index 95ae85c..0000000
--- a/reflect/protopath/step.go
+++ /dev/null
@@ -1,241 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protopath
-
-import (
-	"fmt"
-	"strconv"
-	"strings"
-
-	"google.golang.org/protobuf/internal/encoding/text"
-	"google.golang.org/protobuf/reflect/protoreflect"
-)
-
-// StepKind identifies the kind of step operation.
-// Each kind of step corresponds with some protobuf reflection operation.
-type StepKind int
-
-const (
-	invalidStep StepKind = iota
-	// RootStep identifies a step as the Root step operation.
-	RootStep
-	// FieldAccessStep identifies a step as the FieldAccess step operation.
-	FieldAccessStep
-	// UnknownAccessStep identifies a step as the UnknownAccess step operation.
-	UnknownAccessStep
-	// ListIndexStep identifies a step as the ListIndex step operation.
-	ListIndexStep
-	// MapIndexStep identifies a step as the MapIndex step operation.
-	MapIndexStep
-	// AnyExpandStep identifies a step as the AnyExpand step operation.
-	AnyExpandStep
-)
-
-func (k StepKind) String() string {
-	switch k {
-	case invalidStep:
-		return "<invalid>"
-	case RootStep:
-		return "Root"
-	case FieldAccessStep:
-		return "FieldAccess"
-	case UnknownAccessStep:
-		return "UnknownAccess"
-	case ListIndexStep:
-		return "ListIndex"
-	case MapIndexStep:
-		return "MapIndex"
-	case AnyExpandStep:
-		return "AnyExpand"
-	default:
-		return fmt.Sprintf("<unknown:%d>", k)
-	}
-}
-
-// Step is a union where only one step operation may be specified at a time.
-// The different kinds of steps are specified by the constants defined for
-// the StepKind type.
-type Step struct {
-	kind StepKind
-	desc protoreflect.Descriptor
-	key  protoreflect.Value
-}
-
-// Root indicates the root message that a path is relative to.
-// It should always (and only ever) be the first step in a path.
-func Root(md protoreflect.MessageDescriptor) Step {
-	if md == nil {
-		panic("nil message descriptor")
-	}
-	return Step{kind: RootStep, desc: md}
-}
-
-// FieldAccess describes access of a field within a message.
-// Extension field accesses are also represented using a FieldAccess and
-// must be provided with a protoreflect.FieldDescriptor
-//
-// Within the context of Values,
-// the type of the previous step value is always a message, and
-// the type of the current step value is determined by the field descriptor.
-func FieldAccess(fd protoreflect.FieldDescriptor) Step {
-	if fd == nil {
-		panic("nil field descriptor")
-	} else if _, ok := fd.(protoreflect.ExtensionTypeDescriptor); !ok && fd.IsExtension() {
-		panic(fmt.Sprintf("extension field %q must implement protoreflect.ExtensionTypeDescriptor", fd.FullName()))
-	}
-	return Step{kind: FieldAccessStep, desc: fd}
-}
-
-// UnknownAccess describes access to the unknown fields within a message.
-//
-// Within the context of Values,
-// the type of the previous step value is always a message, and
-// the type of the current step value is always a bytes type.
-func UnknownAccess() Step {
-	return Step{kind: UnknownAccessStep}
-}
-
-// ListIndex describes index of an element within a list.
-//
-// Within the context of Values,
-// the type of the previous, previous step value is always a message,
-// the type of the previous step value is always a list, and
-// the type of the current step value is determined by the field descriptor.
-func ListIndex(i int) Step {
-	if i < 0 {
-		panic(fmt.Sprintf("invalid list index: %v", i))
-	}
-	return Step{kind: ListIndexStep, key: protoreflect.ValueOfInt64(int64(i))}
-}
-
-// MapIndex describes index of an entry within a map.
-// The key type is determined by field descriptor that the map belongs to.
-//
-// Within the context of Values,
-// the type of the previous previous step value is always a message,
-// the type of the previous step value is always a map, and
-// the type of the current step value is determined by the field descriptor.
-func MapIndex(k protoreflect.MapKey) Step {
-	if !k.IsValid() {
-		panic("invalid map index")
-	}
-	return Step{kind: MapIndexStep, key: k.Value()}
-}
-
-// AnyExpand describes expansion of a google.protobuf.Any message into
-// a structured representation of the underlying message.
-//
-// Within the context of Values,
-// the type of the previous step value is always a google.protobuf.Any message, and
-// the type of the current step value is always a message.
-func AnyExpand(md protoreflect.MessageDescriptor) Step {
-	if md == nil {
-		panic("nil message descriptor")
-	}
-	return Step{kind: AnyExpandStep, desc: md}
-}
-
-// MessageDescriptor returns the message descriptor for Root or AnyExpand steps,
-// otherwise it returns nil.
-func (s Step) MessageDescriptor() protoreflect.MessageDescriptor {
-	switch s.kind {
-	case RootStep, AnyExpandStep:
-		return s.desc.(protoreflect.MessageDescriptor)
-	default:
-		return nil
-	}
-}
-
-// FieldDescriptor returns the field descriptor for FieldAccess steps,
-// otherwise it returns nil.
-func (s Step) FieldDescriptor() protoreflect.FieldDescriptor {
-	switch s.kind {
-	case FieldAccessStep:
-		return s.desc.(protoreflect.FieldDescriptor)
-	default:
-		return nil
-	}
-}
-
-// ListIndex returns the list index for ListIndex steps,
-// otherwise it returns 0.
-func (s Step) ListIndex() int {
-	switch s.kind {
-	case ListIndexStep:
-		return int(s.key.Int())
-	default:
-		return 0
-	}
-}
-
-// MapIndex returns the map key for MapIndex steps,
-// otherwise it returns an invalid map key.
-func (s Step) MapIndex() protoreflect.MapKey {
-	switch s.kind {
-	case MapIndexStep:
-		return s.key.MapKey()
-	default:
-		return protoreflect.MapKey{}
-	}
-}
-
-// Kind reports which kind of step this is.
-func (s Step) Kind() StepKind {
-	return s.kind
-}
-
-func (s Step) String() string {
-	return string(s.appendString(nil))
-}
-
-func (s Step) appendString(b []byte) []byte {
-	switch s.kind {
-	case RootStep:
-		b = append(b, '(')
-		b = append(b, s.desc.FullName()...)
-		b = append(b, ')')
-	case FieldAccessStep:
-		b = append(b, '.')
-		if fd := s.desc.(protoreflect.FieldDescriptor); fd.IsExtension() {
-			b = append(b, '(')
-			b = append(b, strings.Trim(fd.TextName(), "[]")...)
-			b = append(b, ')')
-		} else {
-			b = append(b, fd.TextName()...)
-		}
-	case UnknownAccessStep:
-		b = append(b, '.')
-		b = append(b, '?')
-	case ListIndexStep:
-		b = append(b, '[')
-		b = strconv.AppendInt(b, s.key.Int(), 10)
-		b = append(b, ']')
-	case MapIndexStep:
-		b = append(b, '[')
-		switch k := s.key.Interface().(type) {
-		case bool:
-			b = strconv.AppendBool(b, bool(k)) // e.g., "true" or "false"
-		case int32:
-			b = strconv.AppendInt(b, int64(k), 10) // e.g., "-32"
-		case int64:
-			b = strconv.AppendInt(b, int64(k), 10) // e.g., "-64"
-		case uint32:
-			b = strconv.AppendUint(b, uint64(k), 10) // e.g., "32"
-		case uint64:
-			b = strconv.AppendUint(b, uint64(k), 10) // e.g., "64"
-		case string:
-			b = text.AppendString(b, k) // e.g., `"hello, world"`
-		}
-		b = append(b, ']')
-	case AnyExpandStep:
-		b = append(b, '.')
-		b = append(b, '(')
-		b = append(b, s.desc.FullName()...)
-		b = append(b, ')')
-	default:
-		b = append(b, "<invalid>"...)
-	}
-	return b
-}
diff --git a/reflect/protorange/example_test.go b/reflect/protorange/example_test.go
deleted file mode 100644
index 90ceec6..0000000
--- a/reflect/protorange/example_test.go
+++ /dev/null
@@ -1,307 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protorange_test
-
-import (
-	"fmt"
-	"strings"
-	"time"
-
-	"google.golang.org/protobuf/encoding/protojson"
-	"google.golang.org/protobuf/internal/detrand"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protopath"
-	"google.golang.org/protobuf/reflect/protorange"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/testing/protopack"
-	"google.golang.org/protobuf/types/known/anypb"
-	"google.golang.org/protobuf/types/known/timestamppb"
-
-	newspb "google.golang.org/protobuf/internal/testprotos/news"
-)
-
-func init() {
-	detrand.Disable()
-}
-
-func mustMarshal(m proto.Message) []byte {
-	b, err := proto.Marshal(m)
-	if err != nil {
-		panic(err)
-	}
-	return b
-}
-
-// Range through every message and clear the unknown fields.
-func Example_discardUnknown() {
-	// Populate the article with unknown fields.
-	m := &newspb.Article{}
-	m.ProtoReflect().SetUnknown(protopack.Message{
-		protopack.Tag{1000, protopack.BytesType}, protopack.String("Hello, world!"),
-	}.Marshal())
-	fmt.Println("has unknown fields?", len(m.ProtoReflect().GetUnknown()) > 0)
-
-	// Range through the message and clear all unknown fields.
-	fmt.Println("clear unknown fields")
-	protorange.Range(m.ProtoReflect(), func(proto protopath.Values) error {
-		m, ok := proto.Index(-1).Value.Interface().(protoreflect.Message)
-		if ok && len(m.GetUnknown()) > 0 {
-			m.SetUnknown(nil)
-		}
-		return nil
-	})
-	fmt.Println("has unknown fields?", len(m.ProtoReflect().GetUnknown()) > 0)
-
-	// Output:
-	// has unknown fields? true
-	// clear unknown fields
-	// has unknown fields? false
-}
-
-// Print the relative paths as Range iterates through a message
-// in a depth-first order.
-func Example_printPaths() {
-	m := &newspb.Article{
-		Author:  "Russ Cox",
-		Date:    timestamppb.New(time.Date(2019, time.November, 8, 0, 0, 0, 0, time.UTC)),
-		Title:   "Go Turns 10",
-		Content: "Happy birthday, Go! This weekend we celebrate the 10th anniversary of the Go release...",
-		Status:  newspb.Article_PUBLISHED,
-		Tags:    []string{"community", "birthday"},
-		Attachments: []*anypb.Any{{
-			TypeUrl: "google.golang.org.BinaryAttachment",
-			Value: mustMarshal(&newspb.BinaryAttachment{
-				Name: "gopher-birthday.png",
-				Data: []byte("<binary data>"),
-			}),
-		}},
-	}
-
-	// Traverse over all reachable values and print the path.
-	protorange.Range(m.ProtoReflect(), func(p protopath.Values) error {
-		fmt.Println(p.Path[1:])
-		return nil
-	})
-
-	// Output:
-	// .author
-	// .date
-	// .date.seconds
-	// .title
-	// .content
-	// .status
-	// .tags
-	// .tags[0]
-	// .tags[1]
-	// .attachments
-	// .attachments[0]
-	// .attachments[0].(google.golang.org.BinaryAttachment)
-	// .attachments[0].(google.golang.org.BinaryAttachment).name
-	// .attachments[0].(google.golang.org.BinaryAttachment).data
-}
-
-// Implement a basic text formatter by ranging through all populated values
-// in a message in depth-first order.
-func Example_formatText() {
-	m := &newspb.Article{
-		Author:  "Brad Fitzpatrick",
-		Date:    timestamppb.New(time.Date(2018, time.February, 16, 0, 0, 0, 0, time.UTC)),
-		Title:   "Go 1.10 is released",
-		Content: "Happy Friday, happy weekend! Today the Go team is happy to announce the release of Go 1.10...",
-		Status:  newspb.Article_PUBLISHED,
-		Tags:    []string{"go1.10", "release"},
-		Attachments: []*anypb.Any{{
-			TypeUrl: "google.golang.org.KeyValueAttachment",
-			Value: mustMarshal(&newspb.KeyValueAttachment{
-				Name: "checksums.txt",
-				Data: map[string]string{
-					"go1.10.src.tar.gz":         "07cbb9d0091b846c6aea40bf5bc0cea7",
-					"go1.10.darwin-amd64.pkg":   "cbb38bb6ff6ea86279e01745984445bf",
-					"go1.10.linux-amd64.tar.gz": "6b3d0e4a5c77352cf4275573817f7566",
-					"go1.10.windows-amd64.msi":  "57bda02030f58f5d2bf71943e1390123",
-				},
-			}),
-		}},
-	}
-
-	// Print a message in a humanly readable format.
-	var indent []byte
-	protorange.Options{
-		Stable: true,
-	}.Range(m.ProtoReflect(),
-		func(p protopath.Values) error {
-			// Print the key.
-			var fd protoreflect.FieldDescriptor
-			last := p.Index(-1)
-			beforeLast := p.Index(-2)
-			switch last.Step.Kind() {
-			case protopath.FieldAccessStep:
-				fd = last.Step.FieldDescriptor()
-				fmt.Printf("%s%s: ", indent, fd.Name())
-			case protopath.ListIndexStep:
-				fd = beforeLast.Step.FieldDescriptor() // lists always appear in the context of a repeated field
-				fmt.Printf("%s%d: ", indent, last.Step.ListIndex())
-			case protopath.MapIndexStep:
-				fd = beforeLast.Step.FieldDescriptor() // maps always appear in the context of a repeated field
-				fmt.Printf("%s%v: ", indent, last.Step.MapIndex().Interface())
-			case protopath.AnyExpandStep:
-				fmt.Printf("%s[%v]: ", indent, last.Value.Message().Descriptor().FullName())
-			case protopath.UnknownAccessStep:
-				fmt.Printf("%s?: ", indent)
-			}
-
-			// Starting printing the value.
-			switch v := last.Value.Interface().(type) {
-			case protoreflect.Message:
-				fmt.Printf("{\n")
-				indent = append(indent, '\t')
-			case protoreflect.List:
-				fmt.Printf("[\n")
-				indent = append(indent, '\t')
-			case protoreflect.Map:
-				fmt.Printf("{\n")
-				indent = append(indent, '\t')
-			case protoreflect.EnumNumber:
-				var ev protoreflect.EnumValueDescriptor
-				if fd != nil {
-					ev = fd.Enum().Values().ByNumber(v)
-				}
-				if ev != nil {
-					fmt.Printf("%v\n", ev.Name())
-				} else {
-					fmt.Printf("%v\n", v)
-				}
-			case string, []byte:
-				fmt.Printf("%q\n", v)
-			default:
-				fmt.Printf("%v\n", v)
-			}
-			return nil
-		},
-		func(p protopath.Values) error {
-			// Finish printing the value.
-			last := p.Index(-1)
-			switch last.Value.Interface().(type) {
-			case protoreflect.Message:
-				indent = indent[:len(indent)-1]
-				fmt.Printf("%s}\n", indent)
-			case protoreflect.List:
-				indent = indent[:len(indent)-1]
-				fmt.Printf("%s]\n", indent)
-			case protoreflect.Map:
-				indent = indent[:len(indent)-1]
-				fmt.Printf("%s}\n", indent)
-			}
-			return nil
-		},
-	)
-
-	// Output:
-	// {
-	// 	author: "Brad Fitzpatrick"
-	// 	date: {
-	// 		seconds: 1518739200
-	// 	}
-	// 	title: "Go 1.10 is released"
-	// 	content: "Happy Friday, happy weekend! Today the Go team is happy to announce the release of Go 1.10..."
-	// 	attachments: [
-	// 		0: {
-	// 			[google.golang.org.KeyValueAttachment]: {
-	// 				name: "checksums.txt"
-	// 				data: {
-	//					go1.10.darwin-amd64.pkg: "cbb38bb6ff6ea86279e01745984445bf"
-	//					go1.10.linux-amd64.tar.gz: "6b3d0e4a5c77352cf4275573817f7566"
-	//					go1.10.src.tar.gz: "07cbb9d0091b846c6aea40bf5bc0cea7"
-	//					go1.10.windows-amd64.msi: "57bda02030f58f5d2bf71943e1390123"
-	// 				}
-	// 			}
-	// 		}
-	// 	]
-	// 	tags: [
-	// 		0: "go1.10"
-	// 		1: "release"
-	// 	]
-	// 	status: PUBLISHED
-	// }
-}
-
-// Scan all protobuf string values for a sensitive word and replace it with
-// a suitable alternative.
-func Example_sanitizeStrings() {
-	m := &newspb.Article{
-		Author:  "Hermione Granger",
-		Date:    timestamppb.New(time.Date(1998, time.May, 2, 0, 0, 0, 0, time.UTC)),
-		Title:   "Harry Potter vanquishes Voldemort once and for all!",
-		Content: "In a final duel between Harry Potter and Lord Voldemort earlier this evening...",
-		Tags:    []string{"HarryPotter", "LordVoldemort"},
-		Attachments: []*anypb.Any{{
-			TypeUrl: "google.golang.org.KeyValueAttachment",
-			Value: mustMarshal(&newspb.KeyValueAttachment{
-				Name: "aliases.txt",
-				Data: map[string]string{
-					"Harry Potter": "The Boy Who Lived",
-					"Tom Riddle":   "Lord Voldemort",
-				},
-			}),
-		}},
-	}
-
-	protorange.Range(m.ProtoReflect(), func(p protopath.Values) error {
-		const (
-			sensitive   = "Voldemort"
-			alternative = "[He-Who-Must-Not-Be-Named]"
-		)
-
-		// Check if there is a sensitive word to redact.
-		last := p.Index(-1)
-		s, ok := last.Value.Interface().(string)
-		if !ok || !strings.Contains(s, sensitive) {
-			return nil
-		}
-		s = strings.Replace(s, sensitive, alternative, -1)
-
-		// Store the redacted string back into the message.
-		beforeLast := p.Index(-2)
-		switch last.Step.Kind() {
-		case protopath.FieldAccessStep:
-			m := beforeLast.Value.Message()
-			fd := last.Step.FieldDescriptor()
-			m.Set(fd, protoreflect.ValueOfString(s))
-		case protopath.ListIndexStep:
-			ls := beforeLast.Value.List()
-			i := last.Step.ListIndex()
-			ls.Set(i, protoreflect.ValueOfString(s))
-		case protopath.MapIndexStep:
-			ms := beforeLast.Value.Map()
-			k := last.Step.MapIndex()
-			ms.Set(k, protoreflect.ValueOfString(s))
-		}
-		return nil
-	})
-
-	fmt.Println(protojson.Format(m))
-
-	// Output:
-	// {
-	//   "author": "Hermione Granger",
-	//   "date": "1998-05-02T00:00:00Z",
-	//   "title": "Harry Potter vanquishes [He-Who-Must-Not-Be-Named] once and for all!",
-	//   "content": "In a final duel between Harry Potter and Lord [He-Who-Must-Not-Be-Named] earlier this evening...",
-	//   "tags": [
-	//     "HarryPotter",
-	//     "Lord[He-Who-Must-Not-Be-Named]"
-	//   ],
-	//   "attachments": [
-	//     {
-	//       "@type": "google.golang.org.KeyValueAttachment",
-	//       "name": "aliases.txt",
-	//       "data": {
-	//         "Harry Potter": "The Boy Who Lived",
-	//         "Tom Riddle": "Lord [He-Who-Must-Not-Be-Named]"
-	//       }
-	//     }
-	//   ]
-	// }
-}
diff --git a/reflect/protorange/range.go b/reflect/protorange/range.go
deleted file mode 100644
index 24794cd..0000000
--- a/reflect/protorange/range.go
+++ /dev/null
@@ -1,315 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package protorange provides functionality to traverse a message value.
-package protorange
-
-import (
-	"bytes"
-	"errors"
-
-	"google.golang.org/protobuf/internal/genid"
-	"google.golang.org/protobuf/internal/order"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protopath"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/reflect/protoregistry"
-)
-
-var (
-	// Break breaks traversal of children in the current value.
-	// It has no effect when traversing values that are not composite types
-	// (e.g., messages, lists, and maps).
-	Break = errors.New("break traversal of children in current value")
-
-	// Terminate terminates the entire range operation.
-	// All necessary Pop operations continue to be called.
-	Terminate = errors.New("terminate range operation")
-)
-
-// Range performs a depth-first traversal over reachable values in a message.
-//
-// See Options.Range for details.
-func Range(m protoreflect.Message, f func(protopath.Values) error) error {
-	return Options{}.Range(m, f, nil)
-}
-
-// Options configures traversal of a message value tree.
-type Options struct {
-	// Stable specifies whether to visit message fields and map entries
-	// in a stable ordering. If false, then the ordering is undefined and
-	// may be non-deterministic.
-	//
-	// Message fields are visited in ascending order by field number.
-	// Map entries are visited in ascending order, where
-	// boolean keys are ordered such that false sorts before true,
-	// numeric keys are ordered based on the numeric value, and
-	// string keys are lexicographically ordered by Unicode codepoints.
-	Stable bool
-
-	// Resolver is used for looking up types when expanding google.protobuf.Any
-	// messages. If nil, this defaults to using protoregistry.GlobalTypes.
-	// To prevent expansion of Any messages, pass an empty protoregistry.Types:
-	//
-	//	Options{Resolver: (*protoregistry.Types)(nil)}
-	//
-	Resolver interface {
-		protoregistry.ExtensionTypeResolver
-		protoregistry.MessageTypeResolver
-	}
-}
-
-// Range performs a depth-first traversal over reachable values in a message.
-// The first push and the last pop are to push/pop a protopath.Root step.
-// If push or pop return any non-nil error (other than Break or Terminate),
-// it terminates the traversal and is returned by Range.
-//
-// The rules for traversing a message is as follows:
-//
-// • For messages, iterate over every populated known and extension field.
-// Each field is preceded by a push of a protopath.FieldAccess step,
-// followed by recursive application of the rules on the field value,
-// and succeeded by a pop of that step.
-// If the message has unknown fields, then push an protopath.UnknownAccess step
-// followed immediately by pop of that step.
-//
-// • As an exception to the above rule, if the current message is a
-// google.protobuf.Any message, expand the underlying message (if resolvable).
-// The expanded message is preceded by a push of a protopath.AnyExpand step,
-// followed by recursive application of the rules on the underlying message,
-// and succeeded by a pop of that step. Mutations to the expanded message
-// are written back to the Any message when popping back out.
-//
-// • For lists, iterate over every element. Each element is preceded by a push
-// of a protopath.ListIndex step, followed by recursive application of the rules
-// on the list element, and succeeded by a pop of that step.
-//
-// • For maps, iterate over every entry. Each entry is preceded by a push
-// of a protopath.MapIndex step, followed by recursive application of the rules
-// on the map entry value, and succeeded by a pop of that step.
-//
-// Mutations should only be made to the last value, otherwise the effects on
-// traversal will be undefined. If the mutation is made to the last value
-// during to a push, then the effects of the mutation will affect traversal.
-// For example, if the last value is currently a message, and the push function
-// populates a few fields in that message, then the newly modified fields
-// will be traversed.
-//
-// The protopath.Values provided to push functions is only valid until the
-// corresponding pop call and the values provided to a pop call is only valid
-// for the duration of the pop call itself.
-func (o Options) Range(m protoreflect.Message, push, pop func(protopath.Values) error) error {
-	var err error
-	p := new(protopath.Values)
-	if o.Resolver == nil {
-		o.Resolver = protoregistry.GlobalTypes
-	}
-
-	pushStep(p, protopath.Root(m.Descriptor()), protoreflect.ValueOfMessage(m))
-	if push != nil {
-		err = amendError(err, push(*p))
-	}
-	if err == nil {
-		err = o.rangeMessage(p, m, push, pop)
-	}
-	if pop != nil {
-		err = amendError(err, pop(*p))
-	}
-	popStep(p)
-
-	if err == Break || err == Terminate {
-		err = nil
-	}
-	return err
-}
-
-func (o Options) rangeMessage(p *protopath.Values, m protoreflect.Message, push, pop func(protopath.Values) error) (err error) {
-	if ok, err := o.rangeAnyMessage(p, m, push, pop); ok {
-		return err
-	}
-
-	fieldOrder := order.AnyFieldOrder
-	if o.Stable {
-		fieldOrder = order.NumberFieldOrder
-	}
-	order.RangeFields(m, fieldOrder, func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {
-		pushStep(p, protopath.FieldAccess(fd), v)
-		if push != nil {
-			err = amendError(err, push(*p))
-		}
-		if err == nil {
-			switch {
-			case fd.IsMap():
-				err = o.rangeMap(p, fd, v.Map(), push, pop)
-			case fd.IsList():
-				err = o.rangeList(p, fd, v.List(), push, pop)
-			case fd.Message() != nil:
-				err = o.rangeMessage(p, v.Message(), push, pop)
-			}
-		}
-		if pop != nil {
-			err = amendError(err, pop(*p))
-		}
-		popStep(p)
-		return err == nil
-	})
-
-	if b := m.GetUnknown(); len(b) > 0 && err == nil {
-		pushStep(p, protopath.UnknownAccess(), protoreflect.ValueOfBytes(b))
-		if push != nil {
-			err = amendError(err, push(*p))
-		}
-		if pop != nil {
-			err = amendError(err, pop(*p))
-		}
-		popStep(p)
-	}
-
-	if err == Break {
-		err = nil
-	}
-	return err
-}
-
-func (o Options) rangeAnyMessage(p *protopath.Values, m protoreflect.Message, push, pop func(protopath.Values) error) (ok bool, err error) {
-	md := m.Descriptor()
-	if md.FullName() != "google.protobuf.Any" {
-		return false, nil
-	}
-
-	fds := md.Fields()
-	url := m.Get(fds.ByNumber(genid.Any_TypeUrl_field_number)).String()
-	val := m.Get(fds.ByNumber(genid.Any_Value_field_number)).Bytes()
-	mt, errFind := o.Resolver.FindMessageByURL(url)
-	if errFind != nil {
-		return false, nil
-	}
-
-	// Unmarshal the raw encoded message value into a structured message value.
-	m2 := mt.New()
-	errUnmarshal := proto.UnmarshalOptions{
-		Merge:        true,
-		AllowPartial: true,
-		Resolver:     o.Resolver,
-	}.Unmarshal(val, m2.Interface())
-	if errUnmarshal != nil {
-		// If the the underlying message cannot be unmarshaled,
-		// then just treat this as an normal message type.
-		return false, nil
-	}
-
-	// Marshal Any before ranging to detect possible mutations.
-	b1, errMarshal := proto.MarshalOptions{
-		AllowPartial:  true,
-		Deterministic: true,
-	}.Marshal(m2.Interface())
-	if errMarshal != nil {
-		return true, errMarshal
-	}
-
-	pushStep(p, protopath.AnyExpand(m2.Descriptor()), protoreflect.ValueOfMessage(m2))
-	if push != nil {
-		err = amendError(err, push(*p))
-	}
-	if err == nil {
-		err = o.rangeMessage(p, m2, push, pop)
-	}
-	if pop != nil {
-		err = amendError(err, pop(*p))
-	}
-	popStep(p)
-
-	// Marshal Any after ranging to detect possible mutations.
-	b2, errMarshal := proto.MarshalOptions{
-		AllowPartial:  true,
-		Deterministic: true,
-	}.Marshal(m2.Interface())
-	if errMarshal != nil {
-		return true, errMarshal
-	}
-
-	// Mutations detected, write the new sequence of bytes to the Any message.
-	if !bytes.Equal(b1, b2) {
-		m.Set(fds.ByNumber(genid.Any_Value_field_number), protoreflect.ValueOfBytes(b2))
-	}
-
-	if err == Break {
-		err = nil
-	}
-	return true, err
-}
-
-func (o Options) rangeList(p *protopath.Values, fd protoreflect.FieldDescriptor, ls protoreflect.List, push, pop func(protopath.Values) error) (err error) {
-	for i := 0; i < ls.Len() && err == nil; i++ {
-		v := ls.Get(i)
-		pushStep(p, protopath.ListIndex(i), v)
-		if push != nil {
-			err = amendError(err, push(*p))
-		}
-		if err == nil && fd.Message() != nil {
-			err = o.rangeMessage(p, v.Message(), push, pop)
-		}
-		if pop != nil {
-			err = amendError(err, pop(*p))
-		}
-		popStep(p)
-	}
-
-	if err == Break {
-		err = nil
-	}
-	return err
-}
-
-func (o Options) rangeMap(p *protopath.Values, fd protoreflect.FieldDescriptor, ms protoreflect.Map, push, pop func(protopath.Values) error) (err error) {
-	keyOrder := order.AnyKeyOrder
-	if o.Stable {
-		keyOrder = order.GenericKeyOrder
-	}
-	order.RangeEntries(ms, keyOrder, func(k protoreflect.MapKey, v protoreflect.Value) bool {
-		pushStep(p, protopath.MapIndex(k), v)
-		if push != nil {
-			err = amendError(err, push(*p))
-		}
-		if err == nil && fd.MapValue().Message() != nil {
-			err = o.rangeMessage(p, v.Message(), push, pop)
-		}
-		if pop != nil {
-			err = amendError(err, pop(*p))
-		}
-		popStep(p)
-		return err == nil
-	})
-
-	if err == Break {
-		err = nil
-	}
-	return err
-}
-
-func pushStep(p *protopath.Values, s protopath.Step, v protoreflect.Value) {
-	p.Path = append(p.Path, s)
-	p.Values = append(p.Values, v)
-}
-
-func popStep(p *protopath.Values) {
-	p.Path = p.Path[:len(p.Path)-1]
-	p.Values = p.Values[:len(p.Values)-1]
-}
-
-// amendError amends the previous error with the current error if it is
-// considered more serious. The precedence order for errors is:
-//	nil < Break < Terminate < previous non-nil < current non-nil
-func amendError(prev, curr error) error {
-	switch {
-	case curr == nil:
-		return prev
-	case curr == Break && prev != nil:
-		return prev
-	case curr == Terminate && prev != nil && prev != Break:
-		return prev
-	default:
-		return curr
-	}
-}
diff --git a/reflect/protorange/range_test.go b/reflect/protorange/range_test.go
deleted file mode 100644
index a8ca6a0..0000000
--- a/reflect/protorange/range_test.go
+++ /dev/null
@@ -1,253 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protorange
-
-import (
-	"testing"
-	"time"
-
-	"github.com/google/go-cmp/cmp"
-	"github.com/google/go-cmp/cmp/cmpopts"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protopath"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/reflect/protoregistry"
-	"google.golang.org/protobuf/testing/protocmp"
-
-	newspb "google.golang.org/protobuf/internal/testprotos/news"
-	anypb "google.golang.org/protobuf/types/known/anypb"
-	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
-)
-
-func mustMarshal(m proto.Message) []byte {
-	b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-	if err != nil {
-		panic(err)
-	}
-	return b
-}
-
-var transformReflectValue = cmp.Transformer("", func(v protoreflect.Value) interface{} {
-	switch v := v.Interface().(type) {
-	case protoreflect.Message:
-		return v.Interface()
-	case protoreflect.Map:
-		ms := map[interface{}]protoreflect.Value{}
-		v.Range(func(k protoreflect.MapKey, v protoreflect.Value) bool {
-			ms[k.Interface()] = v
-			return true
-		})
-		return ms
-	case protoreflect.List:
-		ls := []protoreflect.Value{}
-		for i := 0; i < v.Len(); i++ {
-			ls = append(ls, v.Get(i))
-		}
-		return ls
-	default:
-		return v
-	}
-})
-
-func TestRange(t *testing.T) {
-	m2 := (&newspb.KeyValueAttachment{
-		Name: "checksums.txt",
-		Data: map[string]string{
-			"go1.10.src.tar.gz":         "07cbb9d0091b846c6aea40bf5bc0cea7",
-			"go1.10.darwin-amd64.pkg":   "cbb38bb6ff6ea86279e01745984445bf",
-			"go1.10.linux-amd64.tar.gz": "6b3d0e4a5c77352cf4275573817f7566",
-			"go1.10.windows-amd64.msi":  "57bda02030f58f5d2bf71943e1390123",
-		},
-	}).ProtoReflect()
-	m := (&newspb.Article{
-		Author:  "Brad Fitzpatrick",
-		Date:    timestamppb.New(time.Date(2018, time.February, 16, 0, 0, 0, 0, time.UTC)),
-		Title:   "Go 1.10 is released",
-		Content: "Happy Friday, happy weekend! Today the Go team is happy to announce the release of Go 1.10...",
-		Status:  newspb.Article_PUBLISHED,
-		Tags:    []string{"go1.10", "release"},
-		Attachments: []*anypb.Any{{
-			TypeUrl: "google.golang.org.KeyValueAttachment",
-			Value:   mustMarshal(m2.Interface()),
-		}},
-	}).ProtoReflect()
-
-	// Nil push and pop functions should not panic.
-	noop := func(protopath.Values) error { return nil }
-	Options{}.Range(m, nil, nil)
-	Options{}.Range(m, noop, nil)
-	Options{}.Range(m, nil, noop)
-
-	getByName := func(m protoreflect.Message, s protoreflect.Name) protoreflect.Value {
-		fds := m.Descriptor().Fields()
-		return m.Get(fds.ByName(s))
-	}
-
-	wantPaths := []string{
-		``,
-		`.author`,
-		`.date`,
-		`.date.seconds`,
-		`.title`,
-		`.content`,
-		`.attachments`,
-		`.attachments[0]`,
-		`.attachments[0].(google.golang.org.KeyValueAttachment)`,
-		`.attachments[0].(google.golang.org.KeyValueAttachment).name`,
-		`.attachments[0].(google.golang.org.KeyValueAttachment).data`,
-		`.attachments[0].(google.golang.org.KeyValueAttachment).data["go1.10.darwin-amd64.pkg"]`,
-		`.attachments[0].(google.golang.org.KeyValueAttachment).data["go1.10.linux-amd64.tar.gz"]`,
-		`.attachments[0].(google.golang.org.KeyValueAttachment).data["go1.10.src.tar.gz"]`,
-		`.attachments[0].(google.golang.org.KeyValueAttachment).data["go1.10.windows-amd64.msi"]`,
-		`.tags`,
-		`.tags[0]`,
-		`.tags[1]`,
-		`.status`,
-	}
-	wantValues := []protoreflect.Value{
-		protoreflect.ValueOfMessage(m),
-		getByName(m, "author"),
-		getByName(m, "date"),
-		getByName(getByName(m, "date").Message(), "seconds"),
-		getByName(m, `title`),
-		getByName(m, `content`),
-		getByName(m, `attachments`),
-		getByName(m, `attachments`).List().Get(0),
-		protoreflect.ValueOfMessage(m2),
-		getByName(m2, `name`),
-		getByName(m2, `data`),
-		getByName(m2, `data`).Map().Get(protoreflect.ValueOfString("go1.10.darwin-amd64.pkg").MapKey()),
-		getByName(m2, `data`).Map().Get(protoreflect.ValueOfString("go1.10.linux-amd64.tar.gz").MapKey()),
-		getByName(m2, `data`).Map().Get(protoreflect.ValueOfString("go1.10.src.tar.gz").MapKey()),
-		getByName(m2, `data`).Map().Get(protoreflect.ValueOfString("go1.10.windows-amd64.msi").MapKey()),
-		getByName(m, `tags`),
-		getByName(m, `tags`).List().Get(0),
-		getByName(m, `tags`).List().Get(1),
-		getByName(m, `status`),
-	}
-
-	tests := []struct {
-		resolver interface {
-			protoregistry.ExtensionTypeResolver
-			protoregistry.MessageTypeResolver
-		}
-
-		errorAt     int
-		breakAt     int
-		terminateAt int
-
-		wantPaths  []string
-		wantValues []protoreflect.Value
-		wantError  error
-	}{{
-		wantPaths:  wantPaths,
-		wantValues: wantValues,
-	}, {
-		resolver: (*protoregistry.Types)(nil),
-		wantPaths: append(append(wantPaths[:8:8],
-			`.attachments[0].type_url`,
-			`.attachments[0].value`,
-		), wantPaths[15:]...),
-		wantValues: append(append(wantValues[:8:8],
-			protoreflect.ValueOfString("google.golang.org.KeyValueAttachment"),
-			protoreflect.ValueOfBytes(mustMarshal(m2.Interface())),
-		), wantValues[15:]...),
-	}, {
-		errorAt:    5, // return error within newspb.Article
-		wantPaths:  wantPaths[:5],
-		wantValues: wantValues[:5],
-		wantError:  cmpopts.AnyError,
-	}, {
-		terminateAt: 11, // terminate within newspb.KeyValueAttachment
-		wantPaths:   wantPaths[:11],
-		wantValues:  wantValues[:11],
-	}, {
-		breakAt:    11, // break within newspb.KeyValueAttachment
-		wantPaths:  append(wantPaths[:11:11], wantPaths[15:]...),
-		wantValues: append(wantValues[:11:11], wantValues[15:]...),
-	}, {
-		errorAt:    17, // return error within newspb.Article.Tags
-		wantPaths:  wantPaths[:17],
-		wantValues: wantValues[:17],
-		wantError:  cmpopts.AnyError,
-	}, {
-		breakAt:    17, // break within newspb.Article.Tags
-		wantPaths:  append(wantPaths[:17:17], wantPaths[18:]...),
-		wantValues: append(wantValues[:17:17], wantValues[18:]...),
-	}, {
-		terminateAt: 17, // terminate within newspb.Article.Tags
-		wantPaths:   wantPaths[:17],
-		wantValues:  wantValues[:17],
-	}, {
-		errorAt:    13, // return error within newspb.KeyValueAttachment.Data
-		wantPaths:  wantPaths[:13],
-		wantValues: wantValues[:13],
-		wantError:  cmpopts.AnyError,
-	}, {
-		breakAt:    13, // break within newspb.KeyValueAttachment.Data
-		wantPaths:  append(wantPaths[:13:13], wantPaths[15:]...),
-		wantValues: append(wantValues[:13:13], wantValues[15:]...),
-	}, {
-		terminateAt: 13, // terminate within newspb.KeyValueAttachment.Data
-		wantPaths:   wantPaths[:13],
-		wantValues:  wantValues[:13],
-	}}
-	for _, tt := range tests {
-		t.Run("", func(t *testing.T) {
-			var gotPaths []string
-			var gotValues []protoreflect.Value
-			var stackPaths []string
-			var stackValues []protoreflect.Value
-			gotError := Options{
-				Stable:   true,
-				Resolver: tt.resolver,
-			}.Range(m,
-				func(p protopath.Values) error {
-					gotPaths = append(gotPaths, p.Path[1:].String())
-					stackPaths = append(stackPaths, p.Path[1:].String())
-					gotValues = append(gotValues, p.Index(-1).Value)
-					stackValues = append(stackValues, p.Index(-1).Value)
-					switch {
-					case tt.errorAt > 0 && tt.errorAt == len(gotPaths):
-						return cmpopts.AnyError
-					case tt.breakAt > 0 && tt.breakAt == len(gotPaths):
-						return Break
-					case tt.terminateAt > 0 && tt.terminateAt == len(gotPaths):
-						return Terminate
-					default:
-						return nil
-					}
-				},
-				func(p protopath.Values) error {
-					gotPath := p.Path[1:].String()
-					wantPath := stackPaths[len(stackPaths)-1]
-					if wantPath != gotPath {
-						t.Errorf("%d: pop path mismatch: got %v, want %v", len(gotPaths), gotPath, wantPath)
-					}
-					gotValue := p.Index(-1).Value
-					wantValue := stackValues[len(stackValues)-1]
-					if diff := cmp.Diff(wantValue, gotValue, transformReflectValue, protocmp.Transform()); diff != "" {
-						t.Errorf("%d: pop value mismatch (-want +got):\n%v", len(gotValues), diff)
-					}
-					stackPaths = stackPaths[:len(stackPaths)-1]
-					stackValues = stackValues[:len(stackValues)-1]
-					return nil
-				},
-			)
-			if n := len(stackPaths) + len(stackValues); n > 0 {
-				t.Errorf("stack mismatch: got %d unpopped items", n)
-			}
-			if diff := cmp.Diff(tt.wantPaths, gotPaths); diff != "" {
-				t.Errorf("paths mismatch (-want +got):\n%s", diff)
-			}
-			if diff := cmp.Diff(tt.wantValues, gotValues, transformReflectValue, protocmp.Transform()); diff != "" {
-				t.Errorf("values mismatch (-want +got):\n%s", diff)
-			}
-			if !cmp.Equal(gotError, tt.wantError, cmpopts.EquateErrors()) {
-				t.Errorf("error mismatch: got %v, want %v", gotError, tt.wantError)
-			}
-		})
-	}
-}
diff --git a/reflect/protoreflect/methods.go b/reflect/protoreflect/methods.go
deleted file mode 100644
index d5d5af6..0000000
--- a/reflect/protoreflect/methods.go
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protoreflect
-
-import (
-	"google.golang.org/protobuf/internal/pragma"
-)
-
-// The following types are used by the fast-path Message.ProtoMethods method.
-//
-// To avoid polluting the public protoreflect API with types used only by
-// low-level implementations, the canonical definitions of these types are
-// in the runtime/protoiface package. The definitions here and in protoiface
-// must be kept in sync.
-type (
-	methods = struct {
-		pragma.NoUnkeyedLiterals
-		Flags            supportFlags
-		Size             func(sizeInput) sizeOutput
-		Marshal          func(marshalInput) (marshalOutput, error)
-		Unmarshal        func(unmarshalInput) (unmarshalOutput, error)
-		Merge            func(mergeInput) mergeOutput
-		CheckInitialized func(checkInitializedInput) (checkInitializedOutput, error)
-	}
-	supportFlags = uint64
-	sizeInput    = struct {
-		pragma.NoUnkeyedLiterals
-		Message Message
-		Flags   uint8
-	}
-	sizeOutput = struct {
-		pragma.NoUnkeyedLiterals
-		Size int
-	}
-	marshalInput = struct {
-		pragma.NoUnkeyedLiterals
-		Message Message
-		Buf     []byte
-		Flags   uint8
-	}
-	marshalOutput = struct {
-		pragma.NoUnkeyedLiterals
-		Buf []byte
-	}
-	unmarshalInput = struct {
-		pragma.NoUnkeyedLiterals
-		Message  Message
-		Buf      []byte
-		Flags    uint8
-		Resolver interface {
-			FindExtensionByName(field FullName) (ExtensionType, error)
-			FindExtensionByNumber(message FullName, field FieldNumber) (ExtensionType, error)
-		}
-		Depth int
-	}
-	unmarshalOutput = struct {
-		pragma.NoUnkeyedLiterals
-		Flags uint8
-	}
-	mergeInput = struct {
-		pragma.NoUnkeyedLiterals
-		Source      Message
-		Destination Message
-	}
-	mergeOutput = struct {
-		pragma.NoUnkeyedLiterals
-		Flags uint8
-	}
-	checkInitializedInput = struct {
-		pragma.NoUnkeyedLiterals
-		Message Message
-	}
-	checkInitializedOutput = struct {
-		pragma.NoUnkeyedLiterals
-	}
-)
diff --git a/reflect/protoreflect/proto.go b/reflect/protoreflect/proto.go
deleted file mode 100644
index dd85915..0000000
--- a/reflect/protoreflect/proto.go
+++ /dev/null
@@ -1,504 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package protoreflect provides interfaces to dynamically manipulate messages.
-//
-// This package includes type descriptors which describe the structure of types
-// defined in proto source files and value interfaces which provide the
-// ability to examine and manipulate the contents of messages.
-//
-//
-// Protocol Buffer Descriptors
-//
-// Protobuf descriptors (e.g., EnumDescriptor or MessageDescriptor)
-// are immutable objects that represent protobuf type information.
-// They are wrappers around the messages declared in descriptor.proto.
-// Protobuf descriptors alone lack any information regarding Go types.
-//
-// Enums and messages generated by this module implement Enum and ProtoMessage,
-// where the Descriptor and ProtoReflect.Descriptor accessors respectively
-// return the protobuf descriptor for the values.
-//
-// The protobuf descriptor interfaces are not meant to be implemented by
-// user code since they might need to be extended in the future to support
-// additions to the protobuf language.
-// The "google.golang.org/protobuf/reflect/protodesc" package converts between
-// google.protobuf.DescriptorProto messages and protobuf descriptors.
-//
-//
-// Go Type Descriptors
-//
-// A type descriptor (e.g., EnumType or MessageType) is a constructor for
-// a concrete Go type that represents the associated protobuf descriptor.
-// There is commonly a one-to-one relationship between protobuf descriptors and
-// Go type descriptors, but it can potentially be a one-to-many relationship.
-//
-// Enums and messages generated by this module implement Enum and ProtoMessage,
-// where the Type and ProtoReflect.Type accessors respectively
-// return the protobuf descriptor for the values.
-//
-// The "google.golang.org/protobuf/types/dynamicpb" package can be used to
-// create Go type descriptors from protobuf descriptors.
-//
-//
-// Value Interfaces
-//
-// The Enum and Message interfaces provide a reflective view over an
-// enum or message instance. For enums, it provides the ability to retrieve
-// the enum value number for any concrete enum type. For messages, it provides
-// the ability to access or manipulate fields of the message.
-//
-// To convert a proto.Message to a protoreflect.Message, use the
-// former's ProtoReflect method. Since the ProtoReflect method is new to the
-// v2 message interface, it may not be present on older message implementations.
-// The "github.com/golang/protobuf/proto".MessageReflect function can be used
-// to obtain a reflective view on older messages.
-//
-//
-// Relationships
-//
-// The following diagrams demonstrate the relationships between
-// various types declared in this package.
-//
-//
-//	                       ┌───────────────────────────────────┐
-//	                       V                                   │
-//	   ┌────────────── New(n) ─────────────┐                   │
-//	   │                                   │                   │
-//	   │      ┌──── Descriptor() ──┐       │  ┌── Number() ──┐ │
-//	   │      │                    V       V  │              V │
-//	╔════════════╗  ╔════════════════╗  ╔════════╗  ╔════════════╗
-//	║  EnumType  ║  ║ EnumDescriptor ║  ║  Enum  ║  ║ EnumNumber ║
-//	╚════════════╝  ╚════════════════╝  ╚════════╝  ╚════════════╝
-//	      Λ           Λ                   │ │
-//	      │           └─── Descriptor() ──┘ │
-//	      │                                 │
-//	      └────────────────── Type() ───────┘
-//
-// • An EnumType describes a concrete Go enum type.
-// It has an EnumDescriptor and can construct an Enum instance.
-//
-// • An EnumDescriptor describes an abstract protobuf enum type.
-//
-// • An Enum is a concrete enum instance. Generated enums implement Enum.
-//
-//
-//	  ┌──────────────── New() ─────────────────┐
-//	  │                                        │
-//	  │         ┌─── Descriptor() ─────┐       │   ┌── Interface() ───┐
-//	  │         │                      V       V   │                  V
-//	╔═════════════╗  ╔═══════════════════╗  ╔═════════╗  ╔══════════════╗
-//	║ MessageType ║  ║ MessageDescriptor ║  ║ Message ║  ║ ProtoMessage ║
-//	╚═════════════╝  ╚═══════════════════╝  ╚═════════╝  ╚══════════════╝
-//	       Λ           Λ                      │ │  Λ                  │
-//	       │           └──── Descriptor() ────┘ │  └─ ProtoReflect() ─┘
-//	       │                                    │
-//	       └─────────────────── Type() ─────────┘
-//
-// • A MessageType describes a concrete Go message type.
-// It has a MessageDescriptor and can construct a Message instance.
-//
-// • A MessageDescriptor describes an abstract protobuf message type.
-//
-// • A Message is a concrete message instance. Generated messages implement
-// ProtoMessage, which can convert to/from a Message.
-//
-//
-//	      ┌── TypeDescriptor() ──┐    ┌───── Descriptor() ─────┐
-//	      │                      V    │                        V
-//	╔═══════════════╗  ╔═════════════════════════╗  ╔═════════════════════╗
-//	║ ExtensionType ║  ║ ExtensionTypeDescriptor ║  ║ ExtensionDescriptor ║
-//	╚═══════════════╝  ╚═════════════════════════╝  ╚═════════════════════╝
-//	      Λ                      │   │ Λ                      │ Λ
-//	      └─────── Type() ───────┘   │ └─── may implement ────┘ │
-//	                                 │                          │
-//	                                 └────── implements ────────┘
-//
-// • An ExtensionType describes a concrete Go implementation of an extension.
-// It has an ExtensionTypeDescriptor and can convert to/from
-// abstract Values and Go values.
-//
-// • An ExtensionTypeDescriptor is an ExtensionDescriptor
-// which also has an ExtensionType.
-//
-// • An ExtensionDescriptor describes an abstract protobuf extension field and
-// may not always be an ExtensionTypeDescriptor.
-package protoreflect
-
-import (
-	"fmt"
-	"strings"
-
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/pragma"
-)
-
-type doNotImplement pragma.DoNotImplement
-
-// ProtoMessage is the top-level interface that all proto messages implement.
-// This is declared in the protoreflect package to avoid a cyclic dependency;
-// use the proto.Message type instead, which aliases this type.
-type ProtoMessage interface{ ProtoReflect() Message }
-
-// Syntax is the language version of the proto file.
-type Syntax syntax
-
-type syntax int8 // keep exact type opaque as the int type may change
-
-const (
-	Proto2 Syntax = 2
-	Proto3 Syntax = 3
-)
-
-// IsValid reports whether the syntax is valid.
-func (s Syntax) IsValid() bool {
-	switch s {
-	case Proto2, Proto3:
-		return true
-	default:
-		return false
-	}
-}
-
-// String returns s as a proto source identifier (e.g., "proto2").
-func (s Syntax) String() string {
-	switch s {
-	case Proto2:
-		return "proto2"
-	case Proto3:
-		return "proto3"
-	default:
-		return fmt.Sprintf("<unknown:%d>", s)
-	}
-}
-
-// GoString returns s as a Go source identifier (e.g., "Proto2").
-func (s Syntax) GoString() string {
-	switch s {
-	case Proto2:
-		return "Proto2"
-	case Proto3:
-		return "Proto3"
-	default:
-		return fmt.Sprintf("Syntax(%d)", s)
-	}
-}
-
-// Cardinality determines whether a field is optional, required, or repeated.
-type Cardinality cardinality
-
-type cardinality int8 // keep exact type opaque as the int type may change
-
-// Constants as defined by the google.protobuf.Cardinality enumeration.
-const (
-	Optional Cardinality = 1 // appears zero or one times
-	Required Cardinality = 2 // appears exactly one time; invalid with Proto3
-	Repeated Cardinality = 3 // appears zero or more times
-)
-
-// IsValid reports whether the cardinality is valid.
-func (c Cardinality) IsValid() bool {
-	switch c {
-	case Optional, Required, Repeated:
-		return true
-	default:
-		return false
-	}
-}
-
-// String returns c as a proto source identifier (e.g., "optional").
-func (c Cardinality) String() string {
-	switch c {
-	case Optional:
-		return "optional"
-	case Required:
-		return "required"
-	case Repeated:
-		return "repeated"
-	default:
-		return fmt.Sprintf("<unknown:%d>", c)
-	}
-}
-
-// GoString returns c as a Go source identifier (e.g., "Optional").
-func (c Cardinality) GoString() string {
-	switch c {
-	case Optional:
-		return "Optional"
-	case Required:
-		return "Required"
-	case Repeated:
-		return "Repeated"
-	default:
-		return fmt.Sprintf("Cardinality(%d)", c)
-	}
-}
-
-// Kind indicates the basic proto kind of a field.
-type Kind kind
-
-type kind int8 // keep exact type opaque as the int type may change
-
-// Constants as defined by the google.protobuf.Field.Kind enumeration.
-const (
-	BoolKind     Kind = 8
-	EnumKind     Kind = 14
-	Int32Kind    Kind = 5
-	Sint32Kind   Kind = 17
-	Uint32Kind   Kind = 13
-	Int64Kind    Kind = 3
-	Sint64Kind   Kind = 18
-	Uint64Kind   Kind = 4
-	Sfixed32Kind Kind = 15
-	Fixed32Kind  Kind = 7
-	FloatKind    Kind = 2
-	Sfixed64Kind Kind = 16
-	Fixed64Kind  Kind = 6
-	DoubleKind   Kind = 1
-	StringKind   Kind = 9
-	BytesKind    Kind = 12
-	MessageKind  Kind = 11
-	GroupKind    Kind = 10
-)
-
-// IsValid reports whether the kind is valid.
-func (k Kind) IsValid() bool {
-	switch k {
-	case BoolKind, EnumKind,
-		Int32Kind, Sint32Kind, Uint32Kind,
-		Int64Kind, Sint64Kind, Uint64Kind,
-		Sfixed32Kind, Fixed32Kind, FloatKind,
-		Sfixed64Kind, Fixed64Kind, DoubleKind,
-		StringKind, BytesKind, MessageKind, GroupKind:
-		return true
-	default:
-		return false
-	}
-}
-
-// String returns k as a proto source identifier (e.g., "bool").
-func (k Kind) String() string {
-	switch k {
-	case BoolKind:
-		return "bool"
-	case EnumKind:
-		return "enum"
-	case Int32Kind:
-		return "int32"
-	case Sint32Kind:
-		return "sint32"
-	case Uint32Kind:
-		return "uint32"
-	case Int64Kind:
-		return "int64"
-	case Sint64Kind:
-		return "sint64"
-	case Uint64Kind:
-		return "uint64"
-	case Sfixed32Kind:
-		return "sfixed32"
-	case Fixed32Kind:
-		return "fixed32"
-	case FloatKind:
-		return "float"
-	case Sfixed64Kind:
-		return "sfixed64"
-	case Fixed64Kind:
-		return "fixed64"
-	case DoubleKind:
-		return "double"
-	case StringKind:
-		return "string"
-	case BytesKind:
-		return "bytes"
-	case MessageKind:
-		return "message"
-	case GroupKind:
-		return "group"
-	default:
-		return fmt.Sprintf("<unknown:%d>", k)
-	}
-}
-
-// GoString returns k as a Go source identifier (e.g., "BoolKind").
-func (k Kind) GoString() string {
-	switch k {
-	case BoolKind:
-		return "BoolKind"
-	case EnumKind:
-		return "EnumKind"
-	case Int32Kind:
-		return "Int32Kind"
-	case Sint32Kind:
-		return "Sint32Kind"
-	case Uint32Kind:
-		return "Uint32Kind"
-	case Int64Kind:
-		return "Int64Kind"
-	case Sint64Kind:
-		return "Sint64Kind"
-	case Uint64Kind:
-		return "Uint64Kind"
-	case Sfixed32Kind:
-		return "Sfixed32Kind"
-	case Fixed32Kind:
-		return "Fixed32Kind"
-	case FloatKind:
-		return "FloatKind"
-	case Sfixed64Kind:
-		return "Sfixed64Kind"
-	case Fixed64Kind:
-		return "Fixed64Kind"
-	case DoubleKind:
-		return "DoubleKind"
-	case StringKind:
-		return "StringKind"
-	case BytesKind:
-		return "BytesKind"
-	case MessageKind:
-		return "MessageKind"
-	case GroupKind:
-		return "GroupKind"
-	default:
-		return fmt.Sprintf("Kind(%d)", k)
-	}
-}
-
-// FieldNumber is the field number in a message.
-type FieldNumber = protowire.Number
-
-// FieldNumbers represent a list of field numbers.
-type FieldNumbers interface {
-	// Len reports the number of fields in the list.
-	Len() int
-	// Get returns the ith field number. It panics if out of bounds.
-	Get(i int) FieldNumber
-	// Has reports whether n is within the list of fields.
-	Has(n FieldNumber) bool
-
-	doNotImplement
-}
-
-// FieldRanges represent a list of field number ranges.
-type FieldRanges interface {
-	// Len reports the number of ranges in the list.
-	Len() int
-	// Get returns the ith range. It panics if out of bounds.
-	Get(i int) [2]FieldNumber // start inclusive; end exclusive
-	// Has reports whether n is within any of the ranges.
-	Has(n FieldNumber) bool
-
-	doNotImplement
-}
-
-// EnumNumber is the numeric value for an enum.
-type EnumNumber int32
-
-// EnumRanges represent a list of enum number ranges.
-type EnumRanges interface {
-	// Len reports the number of ranges in the list.
-	Len() int
-	// Get returns the ith range. It panics if out of bounds.
-	Get(i int) [2]EnumNumber // start inclusive; end inclusive
-	// Has reports whether n is within any of the ranges.
-	Has(n EnumNumber) bool
-
-	doNotImplement
-}
-
-// Name is the short name for a proto declaration. This is not the name
-// as used in Go source code, which might not be identical to the proto name.
-type Name string // e.g., "Kind"
-
-// IsValid reports whether s is a syntactically valid name.
-// An empty name is invalid.
-func (s Name) IsValid() bool {
-	return consumeIdent(string(s)) == len(s)
-}
-
-// Names represent a list of names.
-type Names interface {
-	// Len reports the number of names in the list.
-	Len() int
-	// Get returns the ith name. It panics if out of bounds.
-	Get(i int) Name
-	// Has reports whether s matches any names in the list.
-	Has(s Name) bool
-
-	doNotImplement
-}
-
-// FullName is a qualified name that uniquely identifies a proto declaration.
-// A qualified name is the concatenation of the proto package along with the
-// fully-declared name (i.e., name of parent preceding the name of the child),
-// with a '.' delimiter placed between each Name.
-//
-// This should not have any leading or trailing dots.
-type FullName string // e.g., "google.protobuf.Field.Kind"
-
-// IsValid reports whether s is a syntactically valid full name.
-// An empty full name is invalid.
-func (s FullName) IsValid() bool {
-	i := consumeIdent(string(s))
-	if i < 0 {
-		return false
-	}
-	for len(s) > i {
-		if s[i] != '.' {
-			return false
-		}
-		i++
-		n := consumeIdent(string(s[i:]))
-		if n < 0 {
-			return false
-		}
-		i += n
-	}
-	return true
-}
-
-func consumeIdent(s string) (i int) {
-	if len(s) == 0 || !isLetter(s[i]) {
-		return -1
-	}
-	i++
-	for len(s) > i && isLetterDigit(s[i]) {
-		i++
-	}
-	return i
-}
-func isLetter(c byte) bool {
-	return c == '_' || ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z')
-}
-func isLetterDigit(c byte) bool {
-	return isLetter(c) || ('0' <= c && c <= '9')
-}
-
-// Name returns the short name, which is the last identifier segment.
-// A single segment FullName is the Name itself.
-func (n FullName) Name() Name {
-	if i := strings.LastIndexByte(string(n), '.'); i >= 0 {
-		return Name(n[i+1:])
-	}
-	return Name(n)
-}
-
-// Parent returns the full name with the trailing identifier removed.
-// A single segment FullName has no parent.
-func (n FullName) Parent() FullName {
-	if i := strings.LastIndexByte(string(n), '.'); i >= 0 {
-		return n[:i]
-	}
-	return ""
-}
-
-// Append returns the qualified name appended with the provided short name.
-//
-// Invariant: n == n.Parent().Append(n.Name()) // assuming n is valid
-func (n FullName) Append(s Name) FullName {
-	if n == "" {
-		return FullName(s)
-	}
-	return n + "." + FullName(s)
-}
diff --git a/reflect/protoreflect/proto_test.go b/reflect/protoreflect/proto_test.go
deleted file mode 100644
index 97e55cc..0000000
--- a/reflect/protoreflect/proto_test.go
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protoreflect
-
-import "testing"
-
-func TestNameIsValid(t *testing.T) {
-	tests := []struct {
-		in   Name
-		want bool
-	}{
-		{"", false},
-		{"a", true},
-		{".", false},
-		{"_", true}, // odd, but permitted by protoc
-		{".foo", false},
-		{"foo.", false},
-		{"foo", true},
-		{"one1_two2_three3", true},
-		{"1one", false},
-	}
-
-	for _, tt := range tests {
-		if got := tt.in.IsValid(); got != tt.want {
-			t.Errorf("Name(%q).IsValid() = %v, want %v", tt.in, got, tt.want)
-		}
-	}
-}
-
-func TestFullNameIsValid(t *testing.T) {
-	tests := []struct {
-		in   FullName
-		want bool
-	}{
-		{"", false},
-		{"a", true},
-		{"a.b", true},
-		{"a.b.c", true},
-		{".", false},
-		{"_._._", true}, // odd, but permitted by protoc
-		{".foo", false},
-		{"foo.", false},
-		{"foo", true},
-		{"one1_two2_three3", true},
-		{"one1.two2.three3", true},
-		{".one1.two2.three3", false},
-		{"one1.two2.three3.", false},
-		{"foo.1one", false},
-	}
-
-	for _, tt := range tests {
-		if got := tt.in.IsValid(); got != tt.want {
-			t.Errorf("Name(%q).IsValid() = %v, want %v", tt.in, got, tt.want)
-		}
-	}
-}
-
-func TestNameAppend(t *testing.T) {
-	tests := []FullName{
-		"",
-		"a",
-		"a.b",
-		"a.b.c",
-		"one1.two2.three3",
-	}
-
-	for _, tt := range tests {
-		if got := tt.Parent().Append(tt.Name()); got != tt {
-			t.Errorf("FullName.Parent().Append(FullName.Name()) = %q, want %q", got, tt)
-		}
-	}
-}
-
-var sink bool
-
-func BenchmarkFullNameIsValid(b *testing.B) {
-	for i := 0; i < b.N; i++ {
-		sink = FullName("google.protobuf.Any").IsValid()
-	}
-}
diff --git a/reflect/protoreflect/source.go b/reflect/protoreflect/source.go
deleted file mode 100644
index 121ba3a..0000000
--- a/reflect/protoreflect/source.go
+++ /dev/null
@@ -1,128 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protoreflect
-
-import (
-	"strconv"
-)
-
-// SourceLocations is a list of source locations.
-type SourceLocations interface {
-	// Len reports the number of source locations in the proto file.
-	Len() int
-	// Get returns the ith SourceLocation. It panics if out of bounds.
-	Get(int) SourceLocation
-
-	// ByPath returns the SourceLocation for the given path,
-	// returning the first location if multiple exist for the same path.
-	// If multiple locations exist for the same path,
-	// then SourceLocation.Next index can be used to identify the
-	// index of the next SourceLocation.
-	// If no location exists for this path, it returns the zero value.
-	ByPath(path SourcePath) SourceLocation
-
-	// ByDescriptor returns the SourceLocation for the given descriptor,
-	// returning the first location if multiple exist for the same path.
-	// If no location exists for this descriptor, it returns the zero value.
-	ByDescriptor(desc Descriptor) SourceLocation
-
-	doNotImplement
-}
-
-// SourceLocation describes a source location and
-// corresponds with the google.protobuf.SourceCodeInfo.Location message.
-type SourceLocation struct {
-	// Path is the path to the declaration from the root file descriptor.
-	// The contents of this slice must not be mutated.
-	Path SourcePath
-
-	// StartLine and StartColumn are the zero-indexed starting location
-	// in the source file for the declaration.
-	StartLine, StartColumn int
-	// EndLine and EndColumn are the zero-indexed ending location
-	// in the source file for the declaration.
-	// In the descriptor.proto, the end line may be omitted if it is identical
-	// to the start line. Here, it is always populated.
-	EndLine, EndColumn int
-
-	// LeadingDetachedComments are the leading detached comments
-	// for the declaration. The contents of this slice must not be mutated.
-	LeadingDetachedComments []string
-	// LeadingComments is the leading attached comment for the declaration.
-	LeadingComments string
-	// TrailingComments is the trailing attached comment for the declaration.
-	TrailingComments string
-
-	// Next is an index into SourceLocations for the next source location that
-	// has the same Path. It is zero if there is no next location.
-	Next int
-}
-
-// SourcePath identifies part of a file descriptor for a source location.
-// The SourcePath is a sequence of either field numbers or indexes into
-// a repeated field that form a path starting from the root file descriptor.
-//
-// See google.protobuf.SourceCodeInfo.Location.path.
-type SourcePath []int32
-
-// Equal reports whether p1 equals p2.
-func (p1 SourcePath) Equal(p2 SourcePath) bool {
-	if len(p1) != len(p2) {
-		return false
-	}
-	for i := range p1 {
-		if p1[i] != p2[i] {
-			return false
-		}
-	}
-	return true
-}
-
-// String formats the path in a humanly readable manner.
-// The output is guaranteed to be deterministic,
-// making it suitable for use as a key into a Go map.
-// It is not guaranteed to be stable as the exact output could change
-// in a future version of this module.
-//
-// Example output:
-//	.message_type[6].nested_type[15].field[3]
-func (p SourcePath) String() string {
-	b := p.appendFileDescriptorProto(nil)
-	for _, i := range p {
-		b = append(b, '.')
-		b = strconv.AppendInt(b, int64(i), 10)
-	}
-	return string(b)
-}
-
-type appendFunc func(*SourcePath, []byte) []byte
-
-func (p *SourcePath) appendSingularField(b []byte, name string, f appendFunc) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	b = append(b, '.')
-	b = append(b, name...)
-	*p = (*p)[1:]
-	if f != nil {
-		b = f(p, b)
-	}
-	return b
-}
-
-func (p *SourcePath) appendRepeatedField(b []byte, name string, f appendFunc) []byte {
-	b = p.appendSingularField(b, name, nil)
-	if len(*p) == 0 || (*p)[0] < 0 {
-		return b
-	}
-	b = append(b, '[')
-	b = strconv.AppendUint(b, uint64((*p)[0]), 10)
-	b = append(b, ']')
-	*p = (*p)[1:]
-	if f != nil {
-		b = f(p, b)
-	}
-	return b
-}
diff --git a/reflect/protoreflect/source_gen.go b/reflect/protoreflect/source_gen.go
deleted file mode 100644
index b03c122..0000000
--- a/reflect/protoreflect/source_gen.go
+++ /dev/null
@@ -1,461 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Code generated by generate-protos. DO NOT EDIT.
-
-package protoreflect
-
-func (p *SourcePath) appendFileDescriptorProto(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 1:
-		b = p.appendSingularField(b, "name", nil)
-	case 2:
-		b = p.appendSingularField(b, "package", nil)
-	case 3:
-		b = p.appendRepeatedField(b, "dependency", nil)
-	case 10:
-		b = p.appendRepeatedField(b, "public_dependency", nil)
-	case 11:
-		b = p.appendRepeatedField(b, "weak_dependency", nil)
-	case 4:
-		b = p.appendRepeatedField(b, "message_type", (*SourcePath).appendDescriptorProto)
-	case 5:
-		b = p.appendRepeatedField(b, "enum_type", (*SourcePath).appendEnumDescriptorProto)
-	case 6:
-		b = p.appendRepeatedField(b, "service", (*SourcePath).appendServiceDescriptorProto)
-	case 7:
-		b = p.appendRepeatedField(b, "extension", (*SourcePath).appendFieldDescriptorProto)
-	case 8:
-		b = p.appendSingularField(b, "options", (*SourcePath).appendFileOptions)
-	case 9:
-		b = p.appendSingularField(b, "source_code_info", (*SourcePath).appendSourceCodeInfo)
-	case 12:
-		b = p.appendSingularField(b, "syntax", nil)
-	}
-	return b
-}
-
-func (p *SourcePath) appendDescriptorProto(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 1:
-		b = p.appendSingularField(b, "name", nil)
-	case 2:
-		b = p.appendRepeatedField(b, "field", (*SourcePath).appendFieldDescriptorProto)
-	case 6:
-		b = p.appendRepeatedField(b, "extension", (*SourcePath).appendFieldDescriptorProto)
-	case 3:
-		b = p.appendRepeatedField(b, "nested_type", (*SourcePath).appendDescriptorProto)
-	case 4:
-		b = p.appendRepeatedField(b, "enum_type", (*SourcePath).appendEnumDescriptorProto)
-	case 5:
-		b = p.appendRepeatedField(b, "extension_range", (*SourcePath).appendDescriptorProto_ExtensionRange)
-	case 8:
-		b = p.appendRepeatedField(b, "oneof_decl", (*SourcePath).appendOneofDescriptorProto)
-	case 7:
-		b = p.appendSingularField(b, "options", (*SourcePath).appendMessageOptions)
-	case 9:
-		b = p.appendRepeatedField(b, "reserved_range", (*SourcePath).appendDescriptorProto_ReservedRange)
-	case 10:
-		b = p.appendRepeatedField(b, "reserved_name", nil)
-	}
-	return b
-}
-
-func (p *SourcePath) appendEnumDescriptorProto(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 1:
-		b = p.appendSingularField(b, "name", nil)
-	case 2:
-		b = p.appendRepeatedField(b, "value", (*SourcePath).appendEnumValueDescriptorProto)
-	case 3:
-		b = p.appendSingularField(b, "options", (*SourcePath).appendEnumOptions)
-	case 4:
-		b = p.appendRepeatedField(b, "reserved_range", (*SourcePath).appendEnumDescriptorProto_EnumReservedRange)
-	case 5:
-		b = p.appendRepeatedField(b, "reserved_name", nil)
-	}
-	return b
-}
-
-func (p *SourcePath) appendServiceDescriptorProto(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 1:
-		b = p.appendSingularField(b, "name", nil)
-	case 2:
-		b = p.appendRepeatedField(b, "method", (*SourcePath).appendMethodDescriptorProto)
-	case 3:
-		b = p.appendSingularField(b, "options", (*SourcePath).appendServiceOptions)
-	}
-	return b
-}
-
-func (p *SourcePath) appendFieldDescriptorProto(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 1:
-		b = p.appendSingularField(b, "name", nil)
-	case 3:
-		b = p.appendSingularField(b, "number", nil)
-	case 4:
-		b = p.appendSingularField(b, "label", nil)
-	case 5:
-		b = p.appendSingularField(b, "type", nil)
-	case 6:
-		b = p.appendSingularField(b, "type_name", nil)
-	case 2:
-		b = p.appendSingularField(b, "extendee", nil)
-	case 7:
-		b = p.appendSingularField(b, "default_value", nil)
-	case 9:
-		b = p.appendSingularField(b, "oneof_index", nil)
-	case 10:
-		b = p.appendSingularField(b, "json_name", nil)
-	case 8:
-		b = p.appendSingularField(b, "options", (*SourcePath).appendFieldOptions)
-	case 17:
-		b = p.appendSingularField(b, "proto3_optional", nil)
-	}
-	return b
-}
-
-func (p *SourcePath) appendFileOptions(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 1:
-		b = p.appendSingularField(b, "java_package", nil)
-	case 8:
-		b = p.appendSingularField(b, "java_outer_classname", nil)
-	case 10:
-		b = p.appendSingularField(b, "java_multiple_files", nil)
-	case 20:
-		b = p.appendSingularField(b, "java_generate_equals_and_hash", nil)
-	case 27:
-		b = p.appendSingularField(b, "java_string_check_utf8", nil)
-	case 9:
-		b = p.appendSingularField(b, "optimize_for", nil)
-	case 11:
-		b = p.appendSingularField(b, "go_package", nil)
-	case 16:
-		b = p.appendSingularField(b, "cc_generic_services", nil)
-	case 17:
-		b = p.appendSingularField(b, "java_generic_services", nil)
-	case 18:
-		b = p.appendSingularField(b, "py_generic_services", nil)
-	case 42:
-		b = p.appendSingularField(b, "php_generic_services", nil)
-	case 23:
-		b = p.appendSingularField(b, "deprecated", nil)
-	case 31:
-		b = p.appendSingularField(b, "cc_enable_arenas", nil)
-	case 36:
-		b = p.appendSingularField(b, "objc_class_prefix", nil)
-	case 37:
-		b = p.appendSingularField(b, "csharp_namespace", nil)
-	case 39:
-		b = p.appendSingularField(b, "swift_prefix", nil)
-	case 40:
-		b = p.appendSingularField(b, "php_class_prefix", nil)
-	case 41:
-		b = p.appendSingularField(b, "php_namespace", nil)
-	case 44:
-		b = p.appendSingularField(b, "php_metadata_namespace", nil)
-	case 45:
-		b = p.appendSingularField(b, "ruby_package", nil)
-	case 999:
-		b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption)
-	}
-	return b
-}
-
-func (p *SourcePath) appendSourceCodeInfo(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 1:
-		b = p.appendRepeatedField(b, "location", (*SourcePath).appendSourceCodeInfo_Location)
-	}
-	return b
-}
-
-func (p *SourcePath) appendDescriptorProto_ExtensionRange(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 1:
-		b = p.appendSingularField(b, "start", nil)
-	case 2:
-		b = p.appendSingularField(b, "end", nil)
-	case 3:
-		b = p.appendSingularField(b, "options", (*SourcePath).appendExtensionRangeOptions)
-	}
-	return b
-}
-
-func (p *SourcePath) appendOneofDescriptorProto(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 1:
-		b = p.appendSingularField(b, "name", nil)
-	case 2:
-		b = p.appendSingularField(b, "options", (*SourcePath).appendOneofOptions)
-	}
-	return b
-}
-
-func (p *SourcePath) appendMessageOptions(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 1:
-		b = p.appendSingularField(b, "message_set_wire_format", nil)
-	case 2:
-		b = p.appendSingularField(b, "no_standard_descriptor_accessor", nil)
-	case 3:
-		b = p.appendSingularField(b, "deprecated", nil)
-	case 7:
-		b = p.appendSingularField(b, "map_entry", nil)
-	case 999:
-		b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption)
-	}
-	return b
-}
-
-func (p *SourcePath) appendDescriptorProto_ReservedRange(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 1:
-		b = p.appendSingularField(b, "start", nil)
-	case 2:
-		b = p.appendSingularField(b, "end", nil)
-	}
-	return b
-}
-
-func (p *SourcePath) appendEnumValueDescriptorProto(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 1:
-		b = p.appendSingularField(b, "name", nil)
-	case 2:
-		b = p.appendSingularField(b, "number", nil)
-	case 3:
-		b = p.appendSingularField(b, "options", (*SourcePath).appendEnumValueOptions)
-	}
-	return b
-}
-
-func (p *SourcePath) appendEnumOptions(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 2:
-		b = p.appendSingularField(b, "allow_alias", nil)
-	case 3:
-		b = p.appendSingularField(b, "deprecated", nil)
-	case 999:
-		b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption)
-	}
-	return b
-}
-
-func (p *SourcePath) appendEnumDescriptorProto_EnumReservedRange(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 1:
-		b = p.appendSingularField(b, "start", nil)
-	case 2:
-		b = p.appendSingularField(b, "end", nil)
-	}
-	return b
-}
-
-func (p *SourcePath) appendMethodDescriptorProto(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 1:
-		b = p.appendSingularField(b, "name", nil)
-	case 2:
-		b = p.appendSingularField(b, "input_type", nil)
-	case 3:
-		b = p.appendSingularField(b, "output_type", nil)
-	case 4:
-		b = p.appendSingularField(b, "options", (*SourcePath).appendMethodOptions)
-	case 5:
-		b = p.appendSingularField(b, "client_streaming", nil)
-	case 6:
-		b = p.appendSingularField(b, "server_streaming", nil)
-	}
-	return b
-}
-
-func (p *SourcePath) appendServiceOptions(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 33:
-		b = p.appendSingularField(b, "deprecated", nil)
-	case 999:
-		b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption)
-	}
-	return b
-}
-
-func (p *SourcePath) appendFieldOptions(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 1:
-		b = p.appendSingularField(b, "ctype", nil)
-	case 2:
-		b = p.appendSingularField(b, "packed", nil)
-	case 6:
-		b = p.appendSingularField(b, "jstype", nil)
-	case 5:
-		b = p.appendSingularField(b, "lazy", nil)
-	case 3:
-		b = p.appendSingularField(b, "deprecated", nil)
-	case 10:
-		b = p.appendSingularField(b, "weak", nil)
-	case 999:
-		b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption)
-	}
-	return b
-}
-
-func (p *SourcePath) appendUninterpretedOption(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 2:
-		b = p.appendRepeatedField(b, "name", (*SourcePath).appendUninterpretedOption_NamePart)
-	case 3:
-		b = p.appendSingularField(b, "identifier_value", nil)
-	case 4:
-		b = p.appendSingularField(b, "positive_int_value", nil)
-	case 5:
-		b = p.appendSingularField(b, "negative_int_value", nil)
-	case 6:
-		b = p.appendSingularField(b, "double_value", nil)
-	case 7:
-		b = p.appendSingularField(b, "string_value", nil)
-	case 8:
-		b = p.appendSingularField(b, "aggregate_value", nil)
-	}
-	return b
-}
-
-func (p *SourcePath) appendSourceCodeInfo_Location(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 1:
-		b = p.appendRepeatedField(b, "path", nil)
-	case 2:
-		b = p.appendRepeatedField(b, "span", nil)
-	case 3:
-		b = p.appendSingularField(b, "leading_comments", nil)
-	case 4:
-		b = p.appendSingularField(b, "trailing_comments", nil)
-	case 6:
-		b = p.appendRepeatedField(b, "leading_detached_comments", nil)
-	}
-	return b
-}
-
-func (p *SourcePath) appendExtensionRangeOptions(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 999:
-		b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption)
-	}
-	return b
-}
-
-func (p *SourcePath) appendOneofOptions(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 999:
-		b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption)
-	}
-	return b
-}
-
-func (p *SourcePath) appendEnumValueOptions(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 1:
-		b = p.appendSingularField(b, "deprecated", nil)
-	case 999:
-		b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption)
-	}
-	return b
-}
-
-func (p *SourcePath) appendMethodOptions(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 33:
-		b = p.appendSingularField(b, "deprecated", nil)
-	case 34:
-		b = p.appendSingularField(b, "idempotency_level", nil)
-	case 999:
-		b = p.appendRepeatedField(b, "uninterpreted_option", (*SourcePath).appendUninterpretedOption)
-	}
-	return b
-}
-
-func (p *SourcePath) appendUninterpretedOption_NamePart(b []byte) []byte {
-	if len(*p) == 0 {
-		return b
-	}
-	switch (*p)[0] {
-	case 1:
-		b = p.appendSingularField(b, "name_part", nil)
-	case 2:
-		b = p.appendSingularField(b, "is_extension", nil)
-	}
-	return b
-}
diff --git a/reflect/protoreflect/source_test.go b/reflect/protoreflect/source_test.go
deleted file mode 100644
index 877ede5..0000000
--- a/reflect/protoreflect/source_test.go
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protoreflect
-
-import "testing"
-
-func TestSourcePathString(t *testing.T) {
-	tests := []struct {
-		in   SourcePath
-		want string
-	}{
-		{nil, ""},
-		{SourcePath{}, ""},
-		{SourcePath{0}, ".0"},
-		{SourcePath{1}, ".name"},
-		{SourcePath{1, 1}, ".name.1"},
-		{SourcePath{1, 1, -2, 3}, ".name.1.-2.3"},
-		{SourcePath{3}, ".dependency"},
-		{SourcePath{3, 0}, ".dependency[0]"},
-		{SourcePath{3, -1}, ".dependency.-1"},
-		{SourcePath{3, 1, 2}, ".dependency[1].2"},
-		{SourcePath{4}, ".message_type"},
-		{SourcePath{4, 0}, ".message_type[0]"},
-		{SourcePath{4, -1}, ".message_type.-1"},
-		{SourcePath{4, 1, 0}, ".message_type[1].0"},
-		{SourcePath{4, 1, 1}, ".message_type[1].name"},
-	}
-	for _, tt := range tests {
-		if got := tt.in.String(); got != tt.want {
-			t.Errorf("SourcePath(%d).String() = %v, want %v", tt.in, got, tt.want)
-		}
-	}
-}
diff --git a/reflect/protoreflect/type.go b/reflect/protoreflect/type.go
deleted file mode 100644
index 8e53c44..0000000
--- a/reflect/protoreflect/type.go
+++ /dev/null
@@ -1,665 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protoreflect
-
-// Descriptor provides a set of accessors that are common to every descriptor.
-// Each descriptor type wraps the equivalent google.protobuf.XXXDescriptorProto,
-// but provides efficient lookup and immutability.
-//
-// Each descriptor is comparable. Equality implies that the two types are
-// exactly identical. However, it is possible for the same semantically
-// identical proto type to be represented by multiple type descriptors.
-//
-// For example, suppose we have t1 and t2 which are both MessageDescriptors.
-// If t1 == t2, then the types are definitely equal and all accessors return
-// the same information. However, if t1 != t2, then it is still possible that
-// they still represent the same proto type (e.g., t1.FullName == t2.FullName).
-// This can occur if a descriptor type is created dynamically, or multiple
-// versions of the same proto type are accidentally linked into the Go binary.
-type Descriptor interface {
-	// ParentFile returns the parent file descriptor that this descriptor
-	// is declared within. The parent file for the file descriptor is itself.
-	//
-	// Support for this functionality is optional and may return nil.
-	ParentFile() FileDescriptor
-
-	// Parent returns the parent containing this descriptor declaration.
-	// The following shows the mapping from child type to possible parent types:
-	//
-	//	╔═════════════════════╤═══════════════════════════════════╗
-	//	║ Child type          │ Possible parent types             ║
-	//	╠═════════════════════╪═══════════════════════════════════╣
-	//	║ FileDescriptor      │ nil                               ║
-	//	║ MessageDescriptor   │ FileDescriptor, MessageDescriptor ║
-	//	║ FieldDescriptor     │ FileDescriptor, MessageDescriptor ║
-	//	║ OneofDescriptor     │ MessageDescriptor                 ║
-	//	║ EnumDescriptor      │ FileDescriptor, MessageDescriptor ║
-	//	║ EnumValueDescriptor │ EnumDescriptor                    ║
-	//	║ ServiceDescriptor   │ FileDescriptor                    ║
-	//	║ MethodDescriptor    │ ServiceDescriptor                 ║
-	//	╚═════════════════════╧═══════════════════════════════════╝
-	//
-	// Support for this functionality is optional and may return nil.
-	Parent() Descriptor
-
-	// Index returns the index of this descriptor within its parent.
-	// It returns 0 if the descriptor does not have a parent or if the parent
-	// is unknown.
-	Index() int
-
-	// Syntax is the protobuf syntax.
-	Syntax() Syntax // e.g., Proto2 or Proto3
-
-	// Name is the short name of the declaration (i.e., FullName.Name).
-	Name() Name // e.g., "Any"
-
-	// FullName is the fully-qualified name of the declaration.
-	//
-	// The FullName is a concatenation of the full name of the type that this
-	// type is declared within and the declaration name. For example,
-	// field "foo_field" in message "proto.package.MyMessage" is
-	// uniquely identified as "proto.package.MyMessage.foo_field".
-	// Enum values are an exception to the rule (see EnumValueDescriptor).
-	FullName() FullName // e.g., "google.protobuf.Any"
-
-	// IsPlaceholder reports whether type information is missing since a
-	// dependency is not resolved, in which case only name information is known.
-	//
-	// Placeholder types may only be returned by the following accessors
-	// as a result of unresolved dependencies or weak imports:
-	//
-	//	╔═══════════════════════════════════╤═════════════════════╗
-	//	║ Accessor                          │ Descriptor          ║
-	//	╠═══════════════════════════════════╪═════════════════════╣
-	//	║ FileImports.FileDescriptor        │ FileDescriptor      ║
-	//	║ FieldDescriptor.Enum              │ EnumDescriptor      ║
-	//	║ FieldDescriptor.Message           │ MessageDescriptor   ║
-	//	║ FieldDescriptor.DefaultEnumValue  │ EnumValueDescriptor ║
-	//	║ FieldDescriptor.ContainingMessage │ MessageDescriptor   ║
-	//	║ MethodDescriptor.Input            │ MessageDescriptor   ║
-	//	║ MethodDescriptor.Output           │ MessageDescriptor   ║
-	//	╚═══════════════════════════════════╧═════════════════════╝
-	//
-	// If true, only Name and FullName are valid.
-	// For FileDescriptor, the Path is also valid.
-	IsPlaceholder() bool
-
-	// Options returns the descriptor options. The caller must not modify
-	// the returned value.
-	//
-	// To avoid a dependency cycle, this function returns a proto.Message value.
-	// The proto message type returned for each descriptor type is as follows:
-	//	╔═════════════════════╤══════════════════════════════════════════╗
-	//	║ Go type             │ Protobuf message type                    ║
-	//	╠═════════════════════╪══════════════════════════════════════════╣
-	//	║ FileDescriptor      │ google.protobuf.FileOptions              ║
-	//	║ EnumDescriptor      │ google.protobuf.EnumOptions              ║
-	//	║ EnumValueDescriptor │ google.protobuf.EnumValueOptions         ║
-	//	║ MessageDescriptor   │ google.protobuf.MessageOptions           ║
-	//	║ FieldDescriptor     │ google.protobuf.FieldOptions             ║
-	//	║ OneofDescriptor     │ google.protobuf.OneofOptions             ║
-	//	║ ServiceDescriptor   │ google.protobuf.ServiceOptions           ║
-	//	║ MethodDescriptor    │ google.protobuf.MethodOptions            ║
-	//	╚═════════════════════╧══════════════════════════════════════════╝
-	//
-	// This method returns a typed nil-pointer if no options are present.
-	// The caller must import the descriptorpb package to use this.
-	Options() ProtoMessage
-
-	doNotImplement
-}
-
-// FileDescriptor describes the types in a complete proto file and
-// corresponds with the google.protobuf.FileDescriptorProto message.
-//
-// Top-level declarations:
-// EnumDescriptor, MessageDescriptor, FieldDescriptor, and/or ServiceDescriptor.
-type FileDescriptor interface {
-	Descriptor // Descriptor.FullName is identical to Package
-
-	// Path returns the file name, relative to the source tree root.
-	Path() string // e.g., "path/to/file.proto"
-	// Package returns the protobuf package namespace.
-	Package() FullName // e.g., "google.protobuf"
-
-	// Imports is a list of imported proto files.
-	Imports() FileImports
-
-	// Enums is a list of the top-level enum declarations.
-	Enums() EnumDescriptors
-	// Messages is a list of the top-level message declarations.
-	Messages() MessageDescriptors
-	// Extensions is a list of the top-level extension declarations.
-	Extensions() ExtensionDescriptors
-	// Services is a list of the top-level service declarations.
-	Services() ServiceDescriptors
-
-	// SourceLocations is a list of source locations.
-	SourceLocations() SourceLocations
-
-	isFileDescriptor
-}
-type isFileDescriptor interface{ ProtoType(FileDescriptor) }
-
-// FileImports is a list of file imports.
-type FileImports interface {
-	// Len reports the number of files imported by this proto file.
-	Len() int
-	// Get returns the ith FileImport. It panics if out of bounds.
-	Get(i int) FileImport
-
-	doNotImplement
-}
-
-// FileImport is the declaration for a proto file import.
-type FileImport struct {
-	// FileDescriptor is the file type for the given import.
-	// It is a placeholder descriptor if IsWeak is set or if a dependency has
-	// not been regenerated to implement the new reflection APIs.
-	FileDescriptor
-
-	// IsPublic reports whether this is a public import, which causes this file
-	// to alias declarations within the imported file. The intended use cases
-	// for this feature is the ability to move proto files without breaking
-	// existing dependencies.
-	//
-	// The current file and the imported file must be within proto package.
-	IsPublic bool
-
-	// IsWeak reports whether this is a weak import, which does not impose
-	// a direct dependency on the target file.
-	//
-	// Weak imports are a legacy proto1 feature. Equivalent behavior is
-	// achieved using proto2 extension fields or proto3 Any messages.
-	IsWeak bool
-}
-
-// MessageDescriptor describes a message and
-// corresponds with the google.protobuf.DescriptorProto message.
-//
-// Nested declarations:
-// FieldDescriptor, OneofDescriptor, FieldDescriptor, EnumDescriptor,
-// and/or MessageDescriptor.
-type MessageDescriptor interface {
-	Descriptor
-
-	// IsMapEntry indicates that this is an auto-generated message type to
-	// represent the entry type for a map field.
-	//
-	// Map entry messages have only two fields:
-	//	• a "key" field with a field number of 1
-	//	• a "value" field with a field number of 2
-	// The key and value types are determined by these two fields.
-	//
-	// If IsMapEntry is true, it implies that FieldDescriptor.IsMap is true
-	// for some field with this message type.
-	IsMapEntry() bool
-
-	// Fields is a list of nested field declarations.
-	Fields() FieldDescriptors
-	// Oneofs is a list of nested oneof declarations.
-	Oneofs() OneofDescriptors
-
-	// ReservedNames is a list of reserved field names.
-	ReservedNames() Names
-	// ReservedRanges is a list of reserved ranges of field numbers.
-	ReservedRanges() FieldRanges
-	// RequiredNumbers is a list of required field numbers.
-	// In Proto3, it is always an empty list.
-	RequiredNumbers() FieldNumbers
-	// ExtensionRanges is the field ranges used for extension fields.
-	// In Proto3, it is always an empty ranges.
-	ExtensionRanges() FieldRanges
-	// ExtensionRangeOptions returns the ith extension range options.
-	//
-	// To avoid a dependency cycle, this method returns a proto.Message value,
-	// which always contains a google.protobuf.ExtensionRangeOptions message.
-	// This method returns a typed nil-pointer if no options are present.
-	// The caller must import the descriptorpb package to use this.
-	ExtensionRangeOptions(i int) ProtoMessage
-
-	// Enums is a list of nested enum declarations.
-	Enums() EnumDescriptors
-	// Messages is a list of nested message declarations.
-	Messages() MessageDescriptors
-	// Extensions is a list of nested extension declarations.
-	Extensions() ExtensionDescriptors
-
-	isMessageDescriptor
-}
-type isMessageDescriptor interface{ ProtoType(MessageDescriptor) }
-
-// MessageType encapsulates a MessageDescriptor with a concrete Go implementation.
-// It is recommended that implementations of this interface also implement the
-// MessageFieldTypes interface.
-type MessageType interface {
-	// New returns a newly allocated empty message.
-	// It may return nil for synthetic messages representing a map entry.
-	New() Message
-
-	// Zero returns an empty, read-only message.
-	// It may return nil for synthetic messages representing a map entry.
-	Zero() Message
-
-	// Descriptor returns the message descriptor.
-	//
-	// Invariant: t.Descriptor() == t.New().Descriptor()
-	Descriptor() MessageDescriptor
-}
-
-// MessageFieldTypes extends a MessageType by providing type information
-// regarding enums and messages referenced by the message fields.
-type MessageFieldTypes interface {
-	MessageType
-
-	// Enum returns the EnumType for the ith field in Descriptor.Fields.
-	// It returns nil if the ith field is not an enum kind.
-	// It panics if out of bounds.
-	//
-	// Invariant: mt.Enum(i).Descriptor() == mt.Descriptor().Fields(i).Enum()
-	Enum(i int) EnumType
-
-	// Message returns the MessageType for the ith field in Descriptor.Fields.
-	// It returns nil if the ith field is not a message or group kind.
-	// It panics if out of bounds.
-	//
-	// Invariant: mt.Message(i).Descriptor() == mt.Descriptor().Fields(i).Message()
-	Message(i int) MessageType
-}
-
-// MessageDescriptors is a list of message declarations.
-type MessageDescriptors interface {
-	// Len reports the number of messages.
-	Len() int
-	// Get returns the ith MessageDescriptor. It panics if out of bounds.
-	Get(i int) MessageDescriptor
-	// ByName returns the MessageDescriptor for a message named s.
-	// It returns nil if not found.
-	ByName(s Name) MessageDescriptor
-
-	doNotImplement
-}
-
-// FieldDescriptor describes a field within a message and
-// corresponds with the google.protobuf.FieldDescriptorProto message.
-//
-// It is used for both normal fields defined within the parent message
-// (e.g., MessageDescriptor.Fields) and fields that extend some remote message
-// (e.g., FileDescriptor.Extensions or MessageDescriptor.Extensions).
-type FieldDescriptor interface {
-	Descriptor
-
-	// Number reports the unique number for this field.
-	Number() FieldNumber
-	// Cardinality reports the cardinality for this field.
-	Cardinality() Cardinality
-	// Kind reports the basic kind for this field.
-	Kind() Kind
-
-	// HasJSONName reports whether this field has an explicitly set JSON name.
-	HasJSONName() bool
-
-	// JSONName reports the name used for JSON serialization.
-	// It is usually the camel-cased form of the field name.
-	// Extension fields are represented by the full name surrounded by brackets.
-	JSONName() string
-
-	// TextName reports the name used for text serialization.
-	// It is usually the name of the field, except that groups use the name
-	// of the inlined message, and extension fields are represented by the
-	// full name surrounded by brackets.
-	TextName() string
-
-	// HasPresence reports whether the field distinguishes between unpopulated
-	// and default values.
-	HasPresence() bool
-
-	// IsExtension reports whether this is an extension field. If false,
-	// then Parent and ContainingMessage refer to the same message.
-	// Otherwise, ContainingMessage and Parent likely differ.
-	IsExtension() bool
-
-	// HasOptionalKeyword reports whether the "optional" keyword was explicitly
-	// specified in the source .proto file.
-	HasOptionalKeyword() bool
-
-	// IsWeak reports whether this is a weak field, which does not impose a
-	// direct dependency on the target type.
-	// If true, then Message returns a placeholder type.
-	IsWeak() bool
-
-	// IsPacked reports whether repeated primitive numeric kinds should be
-	// serialized using a packed encoding.
-	// If true, then it implies Cardinality is Repeated.
-	IsPacked() bool
-
-	// IsList reports whether this field represents a list,
-	// where the value type for the associated field is a List.
-	// It is equivalent to checking whether Cardinality is Repeated and
-	// that IsMap reports false.
-	IsList() bool
-
-	// IsMap reports whether this field represents a map,
-	// where the value type for the associated field is a Map.
-	// It is equivalent to checking whether Cardinality is Repeated,
-	// that the Kind is MessageKind, and that Message.IsMapEntry reports true.
-	IsMap() bool
-
-	// MapKey returns the field descriptor for the key in the map entry.
-	// It returns nil if IsMap reports false.
-	MapKey() FieldDescriptor
-
-	// MapValue returns the field descriptor for the value in the map entry.
-	// It returns nil if IsMap reports false.
-	MapValue() FieldDescriptor
-
-	// HasDefault reports whether this field has a default value.
-	HasDefault() bool
-
-	// Default returns the default value for scalar fields.
-	// For proto2, it is the default value as specified in the proto file,
-	// or the zero value if unspecified.
-	// For proto3, it is always the zero value of the scalar.
-	// The Value type is determined by the Kind.
-	Default() Value
-
-	// DefaultEnumValue returns the enum value descriptor for the default value
-	// of an enum field, and is nil for any other kind of field.
-	DefaultEnumValue() EnumValueDescriptor
-
-	// ContainingOneof is the containing oneof that this field belongs to,
-	// and is nil if this field is not part of a oneof.
-	ContainingOneof() OneofDescriptor
-
-	// ContainingMessage is the containing message that this field belongs to.
-	// For extension fields, this may not necessarily be the parent message
-	// that the field is declared within.
-	ContainingMessage() MessageDescriptor
-
-	// Enum is the enum descriptor if Kind is EnumKind.
-	// It returns nil for any other Kind.
-	Enum() EnumDescriptor
-
-	// Message is the message descriptor if Kind is
-	// MessageKind or GroupKind. It returns nil for any other Kind.
-	Message() MessageDescriptor
-
-	isFieldDescriptor
-}
-type isFieldDescriptor interface{ ProtoType(FieldDescriptor) }
-
-// FieldDescriptors is a list of field declarations.
-type FieldDescriptors interface {
-	// Len reports the number of fields.
-	Len() int
-	// Get returns the ith FieldDescriptor. It panics if out of bounds.
-	Get(i int) FieldDescriptor
-	// ByName returns the FieldDescriptor for a field named s.
-	// It returns nil if not found.
-	ByName(s Name) FieldDescriptor
-	// ByJSONName returns the FieldDescriptor for a field with s as the JSON name.
-	// It returns nil if not found.
-	ByJSONName(s string) FieldDescriptor
-	// ByTextName returns the FieldDescriptor for a field with s as the text name.
-	// It returns nil if not found.
-	ByTextName(s string) FieldDescriptor
-	// ByNumber returns the FieldDescriptor for a field numbered n.
-	// It returns nil if not found.
-	ByNumber(n FieldNumber) FieldDescriptor
-
-	doNotImplement
-}
-
-// OneofDescriptor describes a oneof field set within a given message and
-// corresponds with the google.protobuf.OneofDescriptorProto message.
-type OneofDescriptor interface {
-	Descriptor
-
-	// IsSynthetic reports whether this is a synthetic oneof created to support
-	// proto3 optional semantics. If true, Fields contains exactly one field
-	// with HasOptionalKeyword specified.
-	IsSynthetic() bool
-
-	// Fields is a list of fields belonging to this oneof.
-	Fields() FieldDescriptors
-
-	isOneofDescriptor
-}
-type isOneofDescriptor interface{ ProtoType(OneofDescriptor) }
-
-// OneofDescriptors is a list of oneof declarations.
-type OneofDescriptors interface {
-	// Len reports the number of oneof fields.
-	Len() int
-	// Get returns the ith OneofDescriptor. It panics if out of bounds.
-	Get(i int) OneofDescriptor
-	// ByName returns the OneofDescriptor for a oneof named s.
-	// It returns nil if not found.
-	ByName(s Name) OneofDescriptor
-
-	doNotImplement
-}
-
-// ExtensionDescriptor is an alias of FieldDescriptor for documentation.
-type ExtensionDescriptor = FieldDescriptor
-
-// ExtensionTypeDescriptor is an ExtensionDescriptor with an associated ExtensionType.
-type ExtensionTypeDescriptor interface {
-	ExtensionDescriptor
-
-	// Type returns the associated ExtensionType.
-	Type() ExtensionType
-
-	// Descriptor returns the plain ExtensionDescriptor without the
-	// associated ExtensionType.
-	Descriptor() ExtensionDescriptor
-}
-
-// ExtensionDescriptors is a list of field declarations.
-type ExtensionDescriptors interface {
-	// Len reports the number of fields.
-	Len() int
-	// Get returns the ith ExtensionDescriptor. It panics if out of bounds.
-	Get(i int) ExtensionDescriptor
-	// ByName returns the ExtensionDescriptor for a field named s.
-	// It returns nil if not found.
-	ByName(s Name) ExtensionDescriptor
-
-	doNotImplement
-}
-
-// ExtensionType encapsulates an ExtensionDescriptor with a concrete
-// Go implementation. The nested field descriptor must be for a extension field.
-//
-// While a normal field is a member of the parent message that it is declared
-// within (see Descriptor.Parent), an extension field is a member of some other
-// target message (see ExtensionDescriptor.Extendee) and may have no
-// relationship with the parent. However, the full name of an extension field is
-// relative to the parent that it is declared within.
-//
-// For example:
-//	syntax = "proto2";
-//	package example;
-//	message FooMessage {
-//		extensions 100 to max;
-//	}
-//	message BarMessage {
-//		extends FooMessage { optional BarMessage bar_field = 100; }
-//	}
-//
-// Field "bar_field" is an extension of FooMessage, but its full name is
-// "example.BarMessage.bar_field" instead of "example.FooMessage.bar_field".
-type ExtensionType interface {
-	// New returns a new value for the field.
-	// For scalars, this returns the default value in native Go form.
-	New() Value
-
-	// Zero returns a new value for the field.
-	// For scalars, this returns the default value in native Go form.
-	// For composite types, this returns an empty, read-only message, list, or map.
-	Zero() Value
-
-	// TypeDescriptor returns the extension type descriptor.
-	TypeDescriptor() ExtensionTypeDescriptor
-
-	// ValueOf wraps the input and returns it as a Value.
-	// ValueOf panics if the input value is invalid or not the appropriate type.
-	//
-	// ValueOf is more extensive than protoreflect.ValueOf for a given field's
-	// value as it has more type information available.
-	ValueOf(interface{}) Value
-
-	// InterfaceOf completely unwraps the Value to the underlying Go type.
-	// InterfaceOf panics if the input is nil or does not represent the
-	// appropriate underlying Go type. For composite types, it panics if the
-	// value is not mutable.
-	//
-	// InterfaceOf is able to unwrap the Value further than Value.Interface
-	// as it has more type information available.
-	InterfaceOf(Value) interface{}
-
-	// IsValidValue reports whether the Value is valid to assign to the field.
-	IsValidValue(Value) bool
-
-	// IsValidInterface reports whether the input is valid to assign to the field.
-	IsValidInterface(interface{}) bool
-}
-
-// EnumDescriptor describes an enum and
-// corresponds with the google.protobuf.EnumDescriptorProto message.
-//
-// Nested declarations:
-// EnumValueDescriptor.
-type EnumDescriptor interface {
-	Descriptor
-
-	// Values is a list of nested enum value declarations.
-	Values() EnumValueDescriptors
-
-	// ReservedNames is a list of reserved enum names.
-	ReservedNames() Names
-	// ReservedRanges is a list of reserved ranges of enum numbers.
-	ReservedRanges() EnumRanges
-
-	isEnumDescriptor
-}
-type isEnumDescriptor interface{ ProtoType(EnumDescriptor) }
-
-// EnumType encapsulates an EnumDescriptor with a concrete Go implementation.
-type EnumType interface {
-	// New returns an instance of this enum type with its value set to n.
-	New(n EnumNumber) Enum
-
-	// Descriptor returns the enum descriptor.
-	//
-	// Invariant: t.Descriptor() == t.New(0).Descriptor()
-	Descriptor() EnumDescriptor
-}
-
-// EnumDescriptors is a list of enum declarations.
-type EnumDescriptors interface {
-	// Len reports the number of enum types.
-	Len() int
-	// Get returns the ith EnumDescriptor. It panics if out of bounds.
-	Get(i int) EnumDescriptor
-	// ByName returns the EnumDescriptor for an enum named s.
-	// It returns nil if not found.
-	ByName(s Name) EnumDescriptor
-
-	doNotImplement
-}
-
-// EnumValueDescriptor describes an enum value and
-// corresponds with the google.protobuf.EnumValueDescriptorProto message.
-//
-// All other proto declarations are in the namespace of the parent.
-// However, enum values do not follow this rule and are within the namespace
-// of the parent's parent (i.e., they are a sibling of the containing enum).
-// Thus, a value named "FOO_VALUE" declared within an enum uniquely identified
-// as "proto.package.MyEnum" has a full name of "proto.package.FOO_VALUE".
-type EnumValueDescriptor interface {
-	Descriptor
-
-	// Number returns the enum value as an integer.
-	Number() EnumNumber
-
-	isEnumValueDescriptor
-}
-type isEnumValueDescriptor interface{ ProtoType(EnumValueDescriptor) }
-
-// EnumValueDescriptors is a list of enum value declarations.
-type EnumValueDescriptors interface {
-	// Len reports the number of enum values.
-	Len() int
-	// Get returns the ith EnumValueDescriptor. It panics if out of bounds.
-	Get(i int) EnumValueDescriptor
-	// ByName returns the EnumValueDescriptor for the enum value named s.
-	// It returns nil if not found.
-	ByName(s Name) EnumValueDescriptor
-	// ByNumber returns the EnumValueDescriptor for the enum value numbered n.
-	// If multiple have the same number, the first one defined is returned
-	// It returns nil if not found.
-	ByNumber(n EnumNumber) EnumValueDescriptor
-
-	doNotImplement
-}
-
-// ServiceDescriptor describes a service and
-// corresponds with the google.protobuf.ServiceDescriptorProto message.
-//
-// Nested declarations: MethodDescriptor.
-type ServiceDescriptor interface {
-	Descriptor
-
-	// Methods is a list of nested message declarations.
-	Methods() MethodDescriptors
-
-	isServiceDescriptor
-}
-type isServiceDescriptor interface{ ProtoType(ServiceDescriptor) }
-
-// ServiceDescriptors is a list of service declarations.
-type ServiceDescriptors interface {
-	// Len reports the number of services.
-	Len() int
-	// Get returns the ith ServiceDescriptor. It panics if out of bounds.
-	Get(i int) ServiceDescriptor
-	// ByName returns the ServiceDescriptor for a service named s.
-	// It returns nil if not found.
-	ByName(s Name) ServiceDescriptor
-
-	doNotImplement
-}
-
-// MethodDescriptor describes a method and
-// corresponds with the google.protobuf.MethodDescriptorProto message.
-type MethodDescriptor interface {
-	Descriptor
-
-	// Input is the input message descriptor.
-	Input() MessageDescriptor
-	// Output is the output message descriptor.
-	Output() MessageDescriptor
-	// IsStreamingClient reports whether the client streams multiple messages.
-	IsStreamingClient() bool
-	// IsStreamingServer reports whether the server streams multiple messages.
-	IsStreamingServer() bool
-
-	isMethodDescriptor
-}
-type isMethodDescriptor interface{ ProtoType(MethodDescriptor) }
-
-// MethodDescriptors is a list of method declarations.
-type MethodDescriptors interface {
-	// Len reports the number of methods.
-	Len() int
-	// Get returns the ith MethodDescriptor. It panics if out of bounds.
-	Get(i int) MethodDescriptor
-	// ByName returns the MethodDescriptor for a service method named s.
-	// It returns nil if not found.
-	ByName(s Name) MethodDescriptor
-
-	doNotImplement
-}
diff --git a/reflect/protoreflect/value.go b/reflect/protoreflect/value.go
deleted file mode 100644
index f319810..0000000
--- a/reflect/protoreflect/value.go
+++ /dev/null
@@ -1,285 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protoreflect
-
-import "google.golang.org/protobuf/encoding/protowire"
-
-// Enum is a reflection interface for a concrete enum value,
-// which provides type information and a getter for the enum number.
-// Enum does not provide a mutable API since enums are commonly backed by
-// Go constants, which are not addressable.
-type Enum interface {
-	// Descriptor returns enum descriptor, which contains only the protobuf
-	// type information for the enum.
-	Descriptor() EnumDescriptor
-
-	// Type returns the enum type, which encapsulates both Go and protobuf
-	// type information. If the Go type information is not needed,
-	// it is recommended that the enum descriptor be used instead.
-	Type() EnumType
-
-	// Number returns the enum value as an integer.
-	Number() EnumNumber
-}
-
-// Message is a reflective interface for a concrete message value,
-// encapsulating both type and value information for the message.
-//
-// Accessor/mutators for individual fields are keyed by FieldDescriptor.
-// For non-extension fields, the descriptor must exactly match the
-// field known by the parent message.
-// For extension fields, the descriptor must implement ExtensionTypeDescriptor,
-// extend the parent message (i.e., have the same message FullName), and
-// be within the parent's extension range.
-//
-// Each field Value can be a scalar or a composite type (Message, List, or Map).
-// See Value for the Go types associated with a FieldDescriptor.
-// Providing a Value that is invalid or of an incorrect type panics.
-type Message interface {
-	// Descriptor returns message descriptor, which contains only the protobuf
-	// type information for the message.
-	Descriptor() MessageDescriptor
-
-	// Type returns the message type, which encapsulates both Go and protobuf
-	// type information. If the Go type information is not needed,
-	// it is recommended that the message descriptor be used instead.
-	Type() MessageType
-
-	// New returns a newly allocated and mutable empty message.
-	New() Message
-
-	// Interface unwraps the message reflection interface and
-	// returns the underlying ProtoMessage interface.
-	Interface() ProtoMessage
-
-	// Range iterates over every populated field in an undefined order,
-	// calling f for each field descriptor and value encountered.
-	// Range returns immediately if f returns false.
-	// While iterating, mutating operations may only be performed
-	// on the current field descriptor.
-	Range(f func(FieldDescriptor, Value) bool)
-
-	// Has reports whether a field is populated.
-	//
-	// Some fields have the property of nullability where it is possible to
-	// distinguish between the default value of a field and whether the field
-	// was explicitly populated with the default value. Singular message fields,
-	// member fields of a oneof, and proto2 scalar fields are nullable. Such
-	// fields are populated only if explicitly set.
-	//
-	// In other cases (aside from the nullable cases above),
-	// a proto3 scalar field is populated if it contains a non-zero value, and
-	// a repeated field is populated if it is non-empty.
-	Has(FieldDescriptor) bool
-
-	// Clear clears the field such that a subsequent Has call reports false.
-	//
-	// Clearing an extension field clears both the extension type and value
-	// associated with the given field number.
-	//
-	// Clear is a mutating operation and unsafe for concurrent use.
-	Clear(FieldDescriptor)
-
-	// Get retrieves the value for a field.
-	//
-	// For unpopulated scalars, it returns the default value, where
-	// the default value of a bytes scalar is guaranteed to be a copy.
-	// For unpopulated composite types, it returns an empty, read-only view
-	// of the value; to obtain a mutable reference, use Mutable.
-	Get(FieldDescriptor) Value
-
-	// Set stores the value for a field.
-	//
-	// For a field belonging to a oneof, it implicitly clears any other field
-	// that may be currently set within the same oneof.
-	// For extension fields, it implicitly stores the provided ExtensionType.
-	// When setting a composite type, it is unspecified whether the stored value
-	// aliases the source's memory in any way. If the composite value is an
-	// empty, read-only value, then it panics.
-	//
-	// Set is a mutating operation and unsafe for concurrent use.
-	Set(FieldDescriptor, Value)
-
-	// Mutable returns a mutable reference to a composite type.
-	//
-	// If the field is unpopulated, it may allocate a composite value.
-	// For a field belonging to a oneof, it implicitly clears any other field
-	// that may be currently set within the same oneof.
-	// For extension fields, it implicitly stores the provided ExtensionType
-	// if not already stored.
-	// It panics if the field does not contain a composite type.
-	//
-	// Mutable is a mutating operation and unsafe for concurrent use.
-	Mutable(FieldDescriptor) Value
-
-	// NewField returns a new value that is assignable to the field
-	// for the given descriptor. For scalars, this returns the default value.
-	// For lists, maps, and messages, this returns a new, empty, mutable value.
-	NewField(FieldDescriptor) Value
-
-	// WhichOneof reports which field within the oneof is populated,
-	// returning nil if none are populated.
-	// It panics if the oneof descriptor does not belong to this message.
-	WhichOneof(OneofDescriptor) FieldDescriptor
-
-	// GetUnknown retrieves the entire list of unknown fields.
-	// The caller may only mutate the contents of the RawFields
-	// if the mutated bytes are stored back into the message with SetUnknown.
-	GetUnknown() RawFields
-
-	// SetUnknown stores an entire list of unknown fields.
-	// The raw fields must be syntactically valid according to the wire format.
-	// An implementation may panic if this is not the case.
-	// Once stored, the caller must not mutate the content of the RawFields.
-	// An empty RawFields may be passed to clear the fields.
-	//
-	// SetUnknown is a mutating operation and unsafe for concurrent use.
-	SetUnknown(RawFields)
-
-	// IsValid reports whether the message is valid.
-	//
-	// An invalid message is an empty, read-only value.
-	//
-	// An invalid message often corresponds to a nil pointer of the concrete
-	// message type, but the details are implementation dependent.
-	// Validity is not part of the protobuf data model, and may not
-	// be preserved in marshaling or other operations.
-	IsValid() bool
-
-	// ProtoMethods returns optional fast-path implementions of various operations.
-	// This method may return nil.
-	//
-	// The returned methods type is identical to
-	// "google.golang.org/protobuf/runtime/protoiface".Methods.
-	// Consult the protoiface package documentation for details.
-	ProtoMethods() *methods
-}
-
-// RawFields is the raw bytes for an ordered sequence of fields.
-// Each field contains both the tag (representing field number and wire type),
-// and also the wire data itself.
-type RawFields []byte
-
-// IsValid reports whether b is syntactically correct wire format.
-func (b RawFields) IsValid() bool {
-	for len(b) > 0 {
-		_, _, n := protowire.ConsumeField(b)
-		if n < 0 {
-			return false
-		}
-		b = b[n:]
-	}
-	return true
-}
-
-// List is a zero-indexed, ordered list.
-// The element Value type is determined by FieldDescriptor.Kind.
-// Providing a Value that is invalid or of an incorrect type panics.
-type List interface {
-	// Len reports the number of entries in the List.
-	// Get, Set, and Truncate panic with out of bound indexes.
-	Len() int
-
-	// Get retrieves the value at the given index.
-	// It never returns an invalid value.
-	Get(int) Value
-
-	// Set stores a value for the given index.
-	// When setting a composite type, it is unspecified whether the set
-	// value aliases the source's memory in any way.
-	//
-	// Set is a mutating operation and unsafe for concurrent use.
-	Set(int, Value)
-
-	// Append appends the provided value to the end of the list.
-	// When appending a composite type, it is unspecified whether the appended
-	// value aliases the source's memory in any way.
-	//
-	// Append is a mutating operation and unsafe for concurrent use.
-	Append(Value)
-
-	// AppendMutable appends a new, empty, mutable message value to the end
-	// of the list and returns it.
-	// It panics if the list does not contain a message type.
-	AppendMutable() Value
-
-	// Truncate truncates the list to a smaller length.
-	//
-	// Truncate is a mutating operation and unsafe for concurrent use.
-	Truncate(int)
-
-	// NewElement returns a new value for a list element.
-	// For enums, this returns the first enum value.
-	// For other scalars, this returns the zero value.
-	// For messages, this returns a new, empty, mutable value.
-	NewElement() Value
-
-	// IsValid reports whether the list is valid.
-	//
-	// An invalid list is an empty, read-only value.
-	//
-	// Validity is not part of the protobuf data model, and may not
-	// be preserved in marshaling or other operations.
-	IsValid() bool
-}
-
-// Map is an unordered, associative map.
-// The entry MapKey type is determined by FieldDescriptor.MapKey.Kind.
-// The entry Value type is determined by FieldDescriptor.MapValue.Kind.
-// Providing a MapKey or Value that is invalid or of an incorrect type panics.
-type Map interface {
-	// Len reports the number of elements in the map.
-	Len() int
-
-	// Range iterates over every map entry in an undefined order,
-	// calling f for each key and value encountered.
-	// Range calls f Len times unless f returns false, which stops iteration.
-	// While iterating, mutating operations may only be performed
-	// on the current map key.
-	Range(f func(MapKey, Value) bool)
-
-	// Has reports whether an entry with the given key is in the map.
-	Has(MapKey) bool
-
-	// Clear clears the entry associated with they given key.
-	// The operation does nothing if there is no entry associated with the key.
-	//
-	// Clear is a mutating operation and unsafe for concurrent use.
-	Clear(MapKey)
-
-	// Get retrieves the value for an entry with the given key.
-	// It returns an invalid value for non-existent entries.
-	Get(MapKey) Value
-
-	// Set stores the value for an entry with the given key.
-	// It panics when given a key or value that is invalid or the wrong type.
-	// When setting a composite type, it is unspecified whether the set
-	// value aliases the source's memory in any way.
-	//
-	// Set is a mutating operation and unsafe for concurrent use.
-	Set(MapKey, Value)
-
-	// Mutable retrieves a mutable reference to the entry for the given key.
-	// If no entry exists for the key, it creates a new, empty, mutable value
-	// and stores it as the entry for the key.
-	// It panics if the map value is not a message.
-	Mutable(MapKey) Value
-
-	// NewValue returns a new value assignable as a map value.
-	// For enums, this returns the first enum value.
-	// For other scalars, this returns the zero value.
-	// For messages, this returns a new, empty, mutable value.
-	NewValue() Value
-
-	// IsValid reports whether the map is valid.
-	//
-	// An invalid map is an empty, read-only value.
-	//
-	// An invalid message often corresponds to a nil Go map value,
-	// but the details are implementation dependent.
-	// Validity is not part of the protobuf data model, and may not
-	// be preserved in marshaling or other operations.
-	IsValid() bool
-}
diff --git a/reflect/protoreflect/value_pure.go b/reflect/protoreflect/value_pure.go
deleted file mode 100644
index 7ced876..0000000
--- a/reflect/protoreflect/value_pure.go
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:build purego || appengine
-// +build purego appengine
-
-package protoreflect
-
-import "google.golang.org/protobuf/internal/pragma"
-
-type valueType int
-
-const (
-	nilType valueType = iota
-	boolType
-	int32Type
-	int64Type
-	uint32Type
-	uint64Type
-	float32Type
-	float64Type
-	stringType
-	bytesType
-	enumType
-	ifaceType
-)
-
-// value is a union where only one type can be represented at a time.
-// This uses a distinct field for each type. This is type safe in Go, but
-// occupies more memory than necessary (72B).
-type value struct {
-	pragma.DoNotCompare // 0B
-
-	typ   valueType   // 8B
-	num   uint64      // 8B
-	str   string      // 16B
-	bin   []byte      // 24B
-	iface interface{} // 16B
-}
-
-func valueOfString(v string) Value {
-	return Value{typ: stringType, str: v}
-}
-func valueOfBytes(v []byte) Value {
-	return Value{typ: bytesType, bin: v}
-}
-func valueOfIface(v interface{}) Value {
-	return Value{typ: ifaceType, iface: v}
-}
-
-func (v Value) getString() string {
-	return v.str
-}
-func (v Value) getBytes() []byte {
-	return v.bin
-}
-func (v Value) getIface() interface{} {
-	return v.iface
-}
diff --git a/reflect/protoreflect/value_test.go b/reflect/protoreflect/value_test.go
deleted file mode 100644
index c6bbb58..0000000
--- a/reflect/protoreflect/value_test.go
+++ /dev/null
@@ -1,147 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protoreflect
-
-import (
-	"bytes"
-	"math"
-	"reflect"
-	"testing"
-)
-
-func TestValue(t *testing.T) {
-	fakeMessage := new(struct{ Message })
-	fakeList := new(struct{ List })
-	fakeMap := new(struct{ Map })
-
-	tests := []struct {
-		in   Value
-		want interface{}
-	}{
-		{in: Value{}},
-		{in: ValueOf(nil)},
-		{in: ValueOf(true), want: true},
-		{in: ValueOf(int32(math.MaxInt32)), want: int32(math.MaxInt32)},
-		{in: ValueOf(int64(math.MaxInt64)), want: int64(math.MaxInt64)},
-		{in: ValueOf(uint32(math.MaxUint32)), want: uint32(math.MaxUint32)},
-		{in: ValueOf(uint64(math.MaxUint64)), want: uint64(math.MaxUint64)},
-		{in: ValueOf(float32(math.MaxFloat32)), want: float32(math.MaxFloat32)},
-		{in: ValueOf(float64(math.MaxFloat64)), want: float64(math.MaxFloat64)},
-		{in: ValueOf(string("hello")), want: string("hello")},
-		{in: ValueOf([]byte("hello")), want: []byte("hello")},
-		{in: ValueOf(fakeMessage), want: fakeMessage},
-		{in: ValueOf(fakeList), want: fakeList},
-		{in: ValueOf(fakeMap), want: fakeMap},
-	}
-
-	for _, tt := range tests {
-		got := tt.in.Interface()
-		if !reflect.DeepEqual(got, tt.want) {
-			t.Errorf("Value(%v).Interface() = %v, want %v", tt.in, got, tt.want)
-		}
-
-		if got := tt.in.IsValid(); got != (tt.want != nil) {
-			t.Errorf("Value(%v).IsValid() = %v, want %v", tt.in, got, tt.want != nil)
-		}
-		switch want := tt.want.(type) {
-		case int32:
-			if got := tt.in.Int(); got != int64(want) {
-				t.Errorf("Value(%v).Int() = %v, want %v", tt.in, got, tt.want)
-			}
-		case int64:
-			if got := tt.in.Int(); got != int64(want) {
-				t.Errorf("Value(%v).Int() = %v, want %v", tt.in, got, tt.want)
-			}
-		case uint32:
-			if got := tt.in.Uint(); got != uint64(want) {
-				t.Errorf("Value(%v).Uint() = %v, want %v", tt.in, got, tt.want)
-			}
-		case uint64:
-			if got := tt.in.Uint(); got != uint64(want) {
-				t.Errorf("Value(%v).Uint() = %v, want %v", tt.in, got, tt.want)
-			}
-		case float32:
-			if got := tt.in.Float(); got != float64(want) {
-				t.Errorf("Value(%v).Float() = %v, want %v", tt.in, got, tt.want)
-			}
-		case float64:
-			if got := tt.in.Float(); got != float64(want) {
-				t.Errorf("Value(%v).Float() = %v, want %v", tt.in, got, tt.want)
-			}
-		case string:
-			if got := tt.in.String(); got != string(want) {
-				t.Errorf("Value(%v).String() = %v, want %v", tt.in, got, tt.want)
-			}
-		case []byte:
-			if got := tt.in.Bytes(); !bytes.Equal(got, want) {
-				t.Errorf("Value(%v).Bytes() = %v, want %v", tt.in, got, tt.want)
-			}
-		case EnumNumber:
-			if got := tt.in.Enum(); got != want {
-				t.Errorf("Value(%v).Enum() = %v, want %v", tt.in, got, tt.want)
-			}
-		case Message:
-			if got := tt.in.Message(); got != want {
-				t.Errorf("Value(%v).Message() = %v, want %v", tt.in, got, tt.want)
-			}
-		case List:
-			if got := tt.in.List(); got != want {
-				t.Errorf("Value(%v).List() = %v, want %v", tt.in, got, tt.want)
-			}
-		case Map:
-			if got := tt.in.Map(); got != want {
-				t.Errorf("Value(%v).Map() = %v, want %v", tt.in, got, tt.want)
-			}
-		}
-	}
-}
-
-func BenchmarkValue(b *testing.B) {
-	const testdata = "The quick brown fox jumped over the lazy dog."
-	var sink1 string
-	var sink2 Value
-	var sink3 interface{}
-
-	// Baseline measures the time to store a string into a native variable.
-	b.Run("Baseline", func(b *testing.B) {
-		b.ReportAllocs()
-		for i := 0; i < b.N; i++ {
-			sink1 = testdata[:len(testdata)%(i+1)]
-		}
-	})
-
-	// Inline measures the time to store a string into a Value,
-	// assuming that the compiler could inline the ValueOf function call.
-	b.Run("Inline", func(b *testing.B) {
-		b.ReportAllocs()
-		for i := 0; i < b.N; i++ {
-			sink2 = valueOfString(testdata[:len(testdata)%(i+1)])
-		}
-	})
-
-	// Value measures the time to store a string into a Value using the general
-	// ValueOf function call. This should be identical to Inline.
-	//
-	// NOTE: As of Go1.11, this is not as efficient as Inline due to the lack
-	// of some compiler optimizations:
-	//	https://golang.org/issue/22310
-	//	https://golang.org/issue/25189
-	b.Run("Value", func(b *testing.B) {
-		b.ReportAllocs()
-		for i := 0; i < b.N; i++ {
-			sink2 = ValueOf(string(testdata[:len(testdata)%(i+1)]))
-		}
-	})
-
-	// Interface measures the time to store a string into an interface.
-	b.Run("Interface", func(b *testing.B) {
-		b.ReportAllocs()
-		for i := 0; i < b.N; i++ {
-			sink3 = string(testdata[:len(testdata)%(i+1)])
-		}
-	})
-
-	_, _, _ = sink1, sink2, sink3
-}
diff --git a/reflect/protoreflect/value_union.go b/reflect/protoreflect/value_union.go
deleted file mode 100644
index eb7764c..0000000
--- a/reflect/protoreflect/value_union.go
+++ /dev/null
@@ -1,436 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protoreflect
-
-import (
-	"fmt"
-	"math"
-)
-
-// Value is a union where only one Go type may be set at a time.
-// The Value is used to represent all possible values a field may take.
-// The following shows which Go type is used to represent each proto Kind:
-//
-//	╔════════════╤═════════════════════════════════════╗
-//	║ Go type    │ Protobuf kind                       ║
-//	╠════════════╪═════════════════════════════════════╣
-//	║ bool       │ BoolKind                            ║
-//	║ int32      │ Int32Kind, Sint32Kind, Sfixed32Kind ║
-//	║ int64      │ Int64Kind, Sint64Kind, Sfixed64Kind ║
-//	║ uint32     │ Uint32Kind, Fixed32Kind             ║
-//	║ uint64     │ Uint64Kind, Fixed64Kind             ║
-//	║ float32    │ FloatKind                           ║
-//	║ float64    │ DoubleKind                          ║
-//	║ string     │ StringKind                          ║
-//	║ []byte     │ BytesKind                           ║
-//	║ EnumNumber │ EnumKind                            ║
-//	║ Message    │ MessageKind, GroupKind              ║
-//	╚════════════╧═════════════════════════════════════╝
-//
-// Multiple protobuf Kinds may be represented by a single Go type if the type
-// can losslessly represent the information for the proto kind. For example,
-// Int64Kind, Sint64Kind, and Sfixed64Kind are all represented by int64,
-// but use different integer encoding methods.
-//
-// The List or Map types are used if the field cardinality is repeated.
-// A field is a List if FieldDescriptor.IsList reports true.
-// A field is a Map if FieldDescriptor.IsMap reports true.
-//
-// Converting to/from a Value and a concrete Go value panics on type mismatch.
-// For example, ValueOf("hello").Int() panics because this attempts to
-// retrieve an int64 from a string.
-//
-// List, Map, and Message Values are called "composite" values.
-//
-// A composite Value may alias (reference) memory at some location,
-// such that changes to the Value updates the that location.
-// A composite value acquired with a Mutable method, such as Message.Mutable,
-// always references the source object.
-//
-// For example:
-//	// Append a 0 to a "repeated int32" field.
-//	// Since the Value returned by Mutable is guaranteed to alias
-//	// the source message, modifying the Value modifies the message.
-//	message.Mutable(fieldDesc).(List).Append(protoreflect.ValueOfInt32(0))
-//
-//	// Assign [0] to a "repeated int32" field by creating a new Value,
-//	// modifying it, and assigning it.
-//	list := message.NewField(fieldDesc).(List)
-//	list.Append(protoreflect.ValueOfInt32(0))
-//	message.Set(fieldDesc, list)
-//	// ERROR: Since it is not defined whether Set aliases the source,
-//	// appending to the List here may or may not modify the message.
-//	list.Append(protoreflect.ValueOfInt32(0))
-//
-// Some operations, such as Message.Get, may return an "empty, read-only"
-// composite Value. Modifying an empty, read-only value panics.
-type Value value
-
-// The protoreflect API uses a custom Value union type instead of interface{}
-// to keep the future open for performance optimizations. Using an interface{}
-// always incurs an allocation for primitives (e.g., int64) since it needs to
-// be boxed on the heap (as interfaces can only contain pointers natively).
-// Instead, we represent the Value union as a flat struct that internally keeps
-// track of which type is set. Using unsafe, the Value union can be reduced
-// down to 24B, which is identical in size to a slice.
-//
-// The latest compiler (Go1.11) currently suffers from some limitations:
-//	• With inlining, the compiler should be able to statically prove that
-//	only one of these switch cases are taken and inline one specific case.
-//	See https://golang.org/issue/22310.
-
-// ValueOf returns a Value initialized with the concrete value stored in v.
-// This panics if the type does not match one of the allowed types in the
-// Value union.
-func ValueOf(v interface{}) Value {
-	switch v := v.(type) {
-	case nil:
-		return Value{}
-	case bool:
-		return ValueOfBool(v)
-	case int32:
-		return ValueOfInt32(v)
-	case int64:
-		return ValueOfInt64(v)
-	case uint32:
-		return ValueOfUint32(v)
-	case uint64:
-		return ValueOfUint64(v)
-	case float32:
-		return ValueOfFloat32(v)
-	case float64:
-		return ValueOfFloat64(v)
-	case string:
-		return ValueOfString(v)
-	case []byte:
-		return ValueOfBytes(v)
-	case EnumNumber:
-		return ValueOfEnum(v)
-	case Message, List, Map:
-		return valueOfIface(v)
-	case ProtoMessage:
-		panic(fmt.Sprintf("invalid proto.Message(%T) type, expected a protoreflect.Message type", v))
-	default:
-		panic(fmt.Sprintf("invalid type: %T", v))
-	}
-}
-
-// ValueOfBool returns a new boolean value.
-func ValueOfBool(v bool) Value {
-	if v {
-		return Value{typ: boolType, num: 1}
-	} else {
-		return Value{typ: boolType, num: 0}
-	}
-}
-
-// ValueOfInt32 returns a new int32 value.
-func ValueOfInt32(v int32) Value {
-	return Value{typ: int32Type, num: uint64(v)}
-}
-
-// ValueOfInt64 returns a new int64 value.
-func ValueOfInt64(v int64) Value {
-	return Value{typ: int64Type, num: uint64(v)}
-}
-
-// ValueOfUint32 returns a new uint32 value.
-func ValueOfUint32(v uint32) Value {
-	return Value{typ: uint32Type, num: uint64(v)}
-}
-
-// ValueOfUint64 returns a new uint64 value.
-func ValueOfUint64(v uint64) Value {
-	return Value{typ: uint64Type, num: v}
-}
-
-// ValueOfFloat32 returns a new float32 value.
-func ValueOfFloat32(v float32) Value {
-	return Value{typ: float32Type, num: uint64(math.Float64bits(float64(v)))}
-}
-
-// ValueOfFloat64 returns a new float64 value.
-func ValueOfFloat64(v float64) Value {
-	return Value{typ: float64Type, num: uint64(math.Float64bits(float64(v)))}
-}
-
-// ValueOfString returns a new string value.
-func ValueOfString(v string) Value {
-	return valueOfString(v)
-}
-
-// ValueOfBytes returns a new bytes value.
-func ValueOfBytes(v []byte) Value {
-	return valueOfBytes(v[:len(v):len(v)])
-}
-
-// ValueOfEnum returns a new enum value.
-func ValueOfEnum(v EnumNumber) Value {
-	return Value{typ: enumType, num: uint64(v)}
-}
-
-// ValueOfMessage returns a new Message value.
-func ValueOfMessage(v Message) Value {
-	return valueOfIface(v)
-}
-
-// ValueOfList returns a new List value.
-func ValueOfList(v List) Value {
-	return valueOfIface(v)
-}
-
-// ValueOfMap returns a new Map value.
-func ValueOfMap(v Map) Value {
-	return valueOfIface(v)
-}
-
-// IsValid reports whether v is populated with a value.
-func (v Value) IsValid() bool {
-	return v.typ != nilType
-}
-
-// Interface returns v as an interface{}.
-//
-// Invariant: v == ValueOf(v).Interface()
-func (v Value) Interface() interface{} {
-	switch v.typ {
-	case nilType:
-		return nil
-	case boolType:
-		return v.Bool()
-	case int32Type:
-		return int32(v.Int())
-	case int64Type:
-		return int64(v.Int())
-	case uint32Type:
-		return uint32(v.Uint())
-	case uint64Type:
-		return uint64(v.Uint())
-	case float32Type:
-		return float32(v.Float())
-	case float64Type:
-		return float64(v.Float())
-	case stringType:
-		return v.String()
-	case bytesType:
-		return v.Bytes()
-	case enumType:
-		return v.Enum()
-	default:
-		return v.getIface()
-	}
-}
-
-func (v Value) typeName() string {
-	switch v.typ {
-	case nilType:
-		return "nil"
-	case boolType:
-		return "bool"
-	case int32Type:
-		return "int32"
-	case int64Type:
-		return "int64"
-	case uint32Type:
-		return "uint32"
-	case uint64Type:
-		return "uint64"
-	case float32Type:
-		return "float32"
-	case float64Type:
-		return "float64"
-	case stringType:
-		return "string"
-	case bytesType:
-		return "bytes"
-	case enumType:
-		return "enum"
-	default:
-		switch v := v.getIface().(type) {
-		case Message:
-			return "message"
-		case List:
-			return "list"
-		case Map:
-			return "map"
-		default:
-			return fmt.Sprintf("<unknown: %T>", v)
-		}
-	}
-}
-
-func (v Value) panicMessage(what string) string {
-	return fmt.Sprintf("type mismatch: cannot convert %v to %s", v.typeName(), what)
-}
-
-// Bool returns v as a bool and panics if the type is not a bool.
-func (v Value) Bool() bool {
-	switch v.typ {
-	case boolType:
-		return v.num > 0
-	default:
-		panic(v.panicMessage("bool"))
-	}
-}
-
-// Int returns v as a int64 and panics if the type is not a int32 or int64.
-func (v Value) Int() int64 {
-	switch v.typ {
-	case int32Type, int64Type:
-		return int64(v.num)
-	default:
-		panic(v.panicMessage("int"))
-	}
-}
-
-// Uint returns v as a uint64 and panics if the type is not a uint32 or uint64.
-func (v Value) Uint() uint64 {
-	switch v.typ {
-	case uint32Type, uint64Type:
-		return uint64(v.num)
-	default:
-		panic(v.panicMessage("uint"))
-	}
-}
-
-// Float returns v as a float64 and panics if the type is not a float32 or float64.
-func (v Value) Float() float64 {
-	switch v.typ {
-	case float32Type, float64Type:
-		return math.Float64frombits(uint64(v.num))
-	default:
-		panic(v.panicMessage("float"))
-	}
-}
-
-// String returns v as a string. Since this method implements fmt.Stringer,
-// this returns the formatted string value for any non-string type.
-func (v Value) String() string {
-	switch v.typ {
-	case stringType:
-		return v.getString()
-	default:
-		return fmt.Sprint(v.Interface())
-	}
-}
-
-// Bytes returns v as a []byte and panics if the type is not a []byte.
-func (v Value) Bytes() []byte {
-	switch v.typ {
-	case bytesType:
-		return v.getBytes()
-	default:
-		panic(v.panicMessage("bytes"))
-	}
-}
-
-// Enum returns v as a EnumNumber and panics if the type is not a EnumNumber.
-func (v Value) Enum() EnumNumber {
-	switch v.typ {
-	case enumType:
-		return EnumNumber(v.num)
-	default:
-		panic(v.panicMessage("enum"))
-	}
-}
-
-// Message returns v as a Message and panics if the type is not a Message.
-func (v Value) Message() Message {
-	switch vi := v.getIface().(type) {
-	case Message:
-		return vi
-	default:
-		panic(v.panicMessage("message"))
-	}
-}
-
-// List returns v as a List and panics if the type is not a List.
-func (v Value) List() List {
-	switch vi := v.getIface().(type) {
-	case List:
-		return vi
-	default:
-		panic(v.panicMessage("list"))
-	}
-}
-
-// Map returns v as a Map and panics if the type is not a Map.
-func (v Value) Map() Map {
-	switch vi := v.getIface().(type) {
-	case Map:
-		return vi
-	default:
-		panic(v.panicMessage("map"))
-	}
-}
-
-// MapKey returns v as a MapKey and panics for invalid MapKey types.
-func (v Value) MapKey() MapKey {
-	switch v.typ {
-	case boolType, int32Type, int64Type, uint32Type, uint64Type, stringType:
-		return MapKey(v)
-	default:
-		panic(v.panicMessage("map key"))
-	}
-}
-
-// MapKey is used to index maps, where the Go type of the MapKey must match
-// the specified key Kind (see MessageDescriptor.IsMapEntry).
-// The following shows what Go type is used to represent each proto Kind:
-//
-//	╔═════════╤═════════════════════════════════════╗
-//	║ Go type │ Protobuf kind                       ║
-//	╠═════════╪═════════════════════════════════════╣
-//	║ bool    │ BoolKind                            ║
-//	║ int32   │ Int32Kind, Sint32Kind, Sfixed32Kind ║
-//	║ int64   │ Int64Kind, Sint64Kind, Sfixed64Kind ║
-//	║ uint32  │ Uint32Kind, Fixed32Kind             ║
-//	║ uint64  │ Uint64Kind, Fixed64Kind             ║
-//	║ string  │ StringKind                          ║
-//	╚═════════╧═════════════════════════════════════╝
-//
-// A MapKey is constructed and accessed through a Value:
-//	k := ValueOf("hash").MapKey() // convert string to MapKey
-//	s := k.String()               // convert MapKey to string
-//
-// The MapKey is a strict subset of valid types used in Value;
-// converting a Value to a MapKey with an invalid type panics.
-type MapKey value
-
-// IsValid reports whether k is populated with a value.
-func (k MapKey) IsValid() bool {
-	return Value(k).IsValid()
-}
-
-// Interface returns k as an interface{}.
-func (k MapKey) Interface() interface{} {
-	return Value(k).Interface()
-}
-
-// Bool returns k as a bool and panics if the type is not a bool.
-func (k MapKey) Bool() bool {
-	return Value(k).Bool()
-}
-
-// Int returns k as a int64 and panics if the type is not a int32 or int64.
-func (k MapKey) Int() int64 {
-	return Value(k).Int()
-}
-
-// Uint returns k as a uint64 and panics if the type is not a uint32 or uint64.
-func (k MapKey) Uint() uint64 {
-	return Value(k).Uint()
-}
-
-// String returns k as a string. Since this method implements fmt.Stringer,
-// this returns the formatted string value for any non-string type.
-func (k MapKey) String() string {
-	return Value(k).String()
-}
-
-// Value returns k as a Value.
-func (k MapKey) Value() Value {
-	return Value(k)
-}
diff --git a/reflect/protoreflect/value_unsafe.go b/reflect/protoreflect/value_unsafe.go
deleted file mode 100644
index 702ddf2..0000000
--- a/reflect/protoreflect/value_unsafe.go
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:build !purego && !appengine
-// +build !purego,!appengine
-
-package protoreflect
-
-import (
-	"unsafe"
-
-	"google.golang.org/protobuf/internal/pragma"
-)
-
-type (
-	stringHeader struct {
-		Data unsafe.Pointer
-		Len  int
-	}
-	sliceHeader struct {
-		Data unsafe.Pointer
-		Len  int
-		Cap  int
-	}
-	ifaceHeader struct {
-		Type unsafe.Pointer
-		Data unsafe.Pointer
-	}
-)
-
-var (
-	nilType     = typeOf(nil)
-	boolType    = typeOf(*new(bool))
-	int32Type   = typeOf(*new(int32))
-	int64Type   = typeOf(*new(int64))
-	uint32Type  = typeOf(*new(uint32))
-	uint64Type  = typeOf(*new(uint64))
-	float32Type = typeOf(*new(float32))
-	float64Type = typeOf(*new(float64))
-	stringType  = typeOf(*new(string))
-	bytesType   = typeOf(*new([]byte))
-	enumType    = typeOf(*new(EnumNumber))
-)
-
-// typeOf returns a pointer to the Go type information.
-// The pointer is comparable and equal if and only if the types are identical.
-func typeOf(t interface{}) unsafe.Pointer {
-	return (*ifaceHeader)(unsafe.Pointer(&t)).Type
-}
-
-// value is a union where only one type can be represented at a time.
-// The struct is 24B large on 64-bit systems and requires the minimum storage
-// necessary to represent each possible type.
-//
-// The Go GC needs to be able to scan variables containing pointers.
-// As such, pointers and non-pointers cannot be intermixed.
-type value struct {
-	pragma.DoNotCompare // 0B
-
-	// typ stores the type of the value as a pointer to the Go type.
-	typ unsafe.Pointer // 8B
-
-	// ptr stores the data pointer for a String, Bytes, or interface value.
-	ptr unsafe.Pointer // 8B
-
-	// num stores a Bool, Int32, Int64, Uint32, Uint64, Float32, Float64, or
-	// Enum value as a raw uint64.
-	//
-	// It is also used to store the length of a String or Bytes value;
-	// the capacity is ignored.
-	num uint64 // 8B
-}
-
-func valueOfString(v string) Value {
-	p := (*stringHeader)(unsafe.Pointer(&v))
-	return Value{typ: stringType, ptr: p.Data, num: uint64(len(v))}
-}
-func valueOfBytes(v []byte) Value {
-	p := (*sliceHeader)(unsafe.Pointer(&v))
-	return Value{typ: bytesType, ptr: p.Data, num: uint64(len(v))}
-}
-func valueOfIface(v interface{}) Value {
-	p := (*ifaceHeader)(unsafe.Pointer(&v))
-	return Value{typ: p.Type, ptr: p.Data}
-}
-
-func (v Value) getString() (x string) {
-	*(*stringHeader)(unsafe.Pointer(&x)) = stringHeader{Data: v.ptr, Len: int(v.num)}
-	return x
-}
-func (v Value) getBytes() (x []byte) {
-	*(*sliceHeader)(unsafe.Pointer(&x)) = sliceHeader{Data: v.ptr, Len: int(v.num), Cap: int(v.num)}
-	return x
-}
-func (v Value) getIface() (x interface{}) {
-	*(*ifaceHeader)(unsafe.Pointer(&x)) = ifaceHeader{Type: v.typ, Data: v.ptr}
-	return x
-}
diff --git a/reflect/protoregistry/registry.go b/reflect/protoregistry/registry.go
deleted file mode 100644
index 59f024c..0000000
--- a/reflect/protoregistry/registry.go
+++ /dev/null
@@ -1,880 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package protoregistry provides data structures to register and lookup
-// protobuf descriptor types.
-//
-// The Files registry contains file descriptors and provides the ability
-// to iterate over the files or lookup a specific descriptor within the files.
-// Files only contains protobuf descriptors and has no understanding of Go
-// type information that may be associated with each descriptor.
-//
-// The Types registry contains descriptor types for which there is a known
-// Go type associated with that descriptor. It provides the ability to iterate
-// over the registered types or lookup a type by name.
-package protoregistry
-
-import (
-	"fmt"
-	"os"
-	"strings"
-	"sync"
-
-	"google.golang.org/protobuf/internal/encoding/messageset"
-	"google.golang.org/protobuf/internal/errors"
-	"google.golang.org/protobuf/internal/flags"
-	"google.golang.org/protobuf/reflect/protoreflect"
-)
-
-// conflictPolicy configures the policy for handling registration conflicts.
-//
-// It can be over-written at compile time with a linker-initialized variable:
-//	go build -ldflags "-X google.golang.org/protobuf/reflect/protoregistry.conflictPolicy=warn"
-//
-// It can be over-written at program execution with an environment variable:
-//	GOLANG_PROTOBUF_REGISTRATION_CONFLICT=warn ./main
-//
-// Neither of the above are covered by the compatibility promise and
-// may be removed in a future release of this module.
-var conflictPolicy = "panic" // "panic" | "warn" | "ignore"
-
-// ignoreConflict reports whether to ignore a registration conflict
-// given the descriptor being registered and the error.
-// It is a variable so that the behavior is easily overridden in another file.
-var ignoreConflict = func(d protoreflect.Descriptor, err error) bool {
-	const env = "GOLANG_PROTOBUF_REGISTRATION_CONFLICT"
-	const faq = "https://developers.google.com/protocol-buffers/docs/reference/go/faq#namespace-conflict"
-	policy := conflictPolicy
-	if v := os.Getenv(env); v != "" {
-		policy = v
-	}
-	switch policy {
-	case "panic":
-		panic(fmt.Sprintf("%v\nSee %v\n", err, faq))
-	case "warn":
-		fmt.Fprintf(os.Stderr, "WARNING: %v\nSee %v\n\n", err, faq)
-		return true
-	case "ignore":
-		return true
-	default:
-		panic("invalid " + env + " value: " + os.Getenv(env))
-	}
-}
-
-var globalMutex sync.RWMutex
-
-// GlobalFiles is a global registry of file descriptors.
-var GlobalFiles *Files = new(Files)
-
-// GlobalTypes is the registry used by default for type lookups
-// unless a local registry is provided by the user.
-var GlobalTypes *Types = new(Types)
-
-// NotFound is a sentinel error value to indicate that the type was not found.
-//
-// Since registry lookup can happen in the critical performance path, resolvers
-// must return this exact error value, not an error wrapping it.
-var NotFound = errors.New("not found")
-
-// Files is a registry for looking up or iterating over files and the
-// descriptors contained within them.
-// The Find and Range methods are safe for concurrent use.
-type Files struct {
-	// The map of descsByName contains:
-	//	EnumDescriptor
-	//	EnumValueDescriptor
-	//	MessageDescriptor
-	//	ExtensionDescriptor
-	//	ServiceDescriptor
-	//	*packageDescriptor
-	//
-	// Note that files are stored as a slice, since a package may contain
-	// multiple files. Only top-level declarations are registered.
-	// Note that enum values are in the top-level since that are in the same
-	// scope as the parent enum.
-	descsByName map[protoreflect.FullName]interface{}
-	filesByPath map[string][]protoreflect.FileDescriptor
-	numFiles    int
-}
-
-type packageDescriptor struct {
-	files []protoreflect.FileDescriptor
-}
-
-// RegisterFile registers the provided file descriptor.
-//
-// If any descriptor within the file conflicts with the descriptor of any
-// previously registered file (e.g., two enums with the same full name),
-// then the file is not registered and an error is returned.
-//
-// It is permitted for multiple files to have the same file path.
-func (r *Files) RegisterFile(file protoreflect.FileDescriptor) error {
-	if r == GlobalFiles {
-		globalMutex.Lock()
-		defer globalMutex.Unlock()
-	}
-	if r.descsByName == nil {
-		r.descsByName = map[protoreflect.FullName]interface{}{
-			"": &packageDescriptor{},
-		}
-		r.filesByPath = make(map[string][]protoreflect.FileDescriptor)
-	}
-	path := file.Path()
-	if prev := r.filesByPath[path]; len(prev) > 0 {
-		r.checkGenProtoConflict(path)
-		err := errors.New("file %q is already registered", file.Path())
-		err = amendErrorWithCaller(err, prev[0], file)
-		if !(r == GlobalFiles && ignoreConflict(file, err)) {
-			return err
-		}
-	}
-
-	for name := file.Package(); name != ""; name = name.Parent() {
-		switch prev := r.descsByName[name]; prev.(type) {
-		case nil, *packageDescriptor:
-		default:
-			err := errors.New("file %q has a package name conflict over %v", file.Path(), name)
-			err = amendErrorWithCaller(err, prev, file)
-			if r == GlobalFiles && ignoreConflict(file, err) {
-				err = nil
-			}
-			return err
-		}
-	}
-	var err error
-	var hasConflict bool
-	rangeTopLevelDescriptors(file, func(d protoreflect.Descriptor) {
-		if prev := r.descsByName[d.FullName()]; prev != nil {
-			hasConflict = true
-			err = errors.New("file %q has a name conflict over %v", file.Path(), d.FullName())
-			err = amendErrorWithCaller(err, prev, file)
-			if r == GlobalFiles && ignoreConflict(d, err) {
-				err = nil
-			}
-		}
-	})
-	if hasConflict {
-		return err
-	}
-
-	for name := file.Package(); name != ""; name = name.Parent() {
-		if r.descsByName[name] == nil {
-			r.descsByName[name] = &packageDescriptor{}
-		}
-	}
-	p := r.descsByName[file.Package()].(*packageDescriptor)
-	p.files = append(p.files, file)
-	rangeTopLevelDescriptors(file, func(d protoreflect.Descriptor) {
-		r.descsByName[d.FullName()] = d
-	})
-	r.filesByPath[path] = append(r.filesByPath[path], file)
-	r.numFiles++
-	return nil
-}
-
-// Several well-known types were hosted in the google.golang.org/genproto module
-// but were later moved to this module. To avoid a weak dependency on the
-// genproto module (and its relatively large set of transitive dependencies),
-// we rely on a registration conflict to determine whether the genproto version
-// is too old (i.e., does not contain aliases to the new type declarations).
-func (r *Files) checkGenProtoConflict(path string) {
-	if r != GlobalFiles {
-		return
-	}
-	var prevPath string
-	const prevModule = "google.golang.org/genproto"
-	const prevVersion = "cb27e3aa (May 26th, 2020)"
-	switch path {
-	case "google/protobuf/field_mask.proto":
-		prevPath = prevModule + "/protobuf/field_mask"
-	case "google/protobuf/api.proto":
-		prevPath = prevModule + "/protobuf/api"
-	case "google/protobuf/type.proto":
-		prevPath = prevModule + "/protobuf/ptype"
-	case "google/protobuf/source_context.proto":
-		prevPath = prevModule + "/protobuf/source_context"
-	default:
-		return
-	}
-	pkgName := strings.TrimSuffix(strings.TrimPrefix(path, "google/protobuf/"), ".proto")
-	pkgName = strings.Replace(pkgName, "_", "", -1) + "pb" // e.g., "field_mask" => "fieldmaskpb"
-	currPath := "google.golang.org/protobuf/types/known/" + pkgName
-	panic(fmt.Sprintf(""+
-		"duplicate registration of %q\n"+
-		"\n"+
-		"The generated definition for this file has moved:\n"+
-		"\tfrom: %q\n"+
-		"\tto:   %q\n"+
-		"A dependency on the %q module must\n"+
-		"be at version %v or higher.\n"+
-		"\n"+
-		"Upgrade the dependency by running:\n"+
-		"\tgo get -u %v\n",
-		path, prevPath, currPath, prevModule, prevVersion, prevPath))
-}
-
-// FindDescriptorByName looks up a descriptor by the full name.
-//
-// This returns (nil, NotFound) if not found.
-func (r *Files) FindDescriptorByName(name protoreflect.FullName) (protoreflect.Descriptor, error) {
-	if r == nil {
-		return nil, NotFound
-	}
-	if r == GlobalFiles {
-		globalMutex.RLock()
-		defer globalMutex.RUnlock()
-	}
-	prefix := name
-	suffix := nameSuffix("")
-	for prefix != "" {
-		if d, ok := r.descsByName[prefix]; ok {
-			switch d := d.(type) {
-			case protoreflect.EnumDescriptor:
-				if d.FullName() == name {
-					return d, nil
-				}
-			case protoreflect.EnumValueDescriptor:
-				if d.FullName() == name {
-					return d, nil
-				}
-			case protoreflect.MessageDescriptor:
-				if d.FullName() == name {
-					return d, nil
-				}
-				if d := findDescriptorInMessage(d, suffix); d != nil && d.FullName() == name {
-					return d, nil
-				}
-			case protoreflect.ExtensionDescriptor:
-				if d.FullName() == name {
-					return d, nil
-				}
-			case protoreflect.ServiceDescriptor:
-				if d.FullName() == name {
-					return d, nil
-				}
-				if d := d.Methods().ByName(suffix.Pop()); d != nil && d.FullName() == name {
-					return d, nil
-				}
-			}
-			return nil, NotFound
-		}
-		prefix = prefix.Parent()
-		suffix = nameSuffix(name[len(prefix)+len("."):])
-	}
-	return nil, NotFound
-}
-
-func findDescriptorInMessage(md protoreflect.MessageDescriptor, suffix nameSuffix) protoreflect.Descriptor {
-	name := suffix.Pop()
-	if suffix == "" {
-		if ed := md.Enums().ByName(name); ed != nil {
-			return ed
-		}
-		for i := md.Enums().Len() - 1; i >= 0; i-- {
-			if vd := md.Enums().Get(i).Values().ByName(name); vd != nil {
-				return vd
-			}
-		}
-		if xd := md.Extensions().ByName(name); xd != nil {
-			return xd
-		}
-		if fd := md.Fields().ByName(name); fd != nil {
-			return fd
-		}
-		if od := md.Oneofs().ByName(name); od != nil {
-			return od
-		}
-	}
-	if md := md.Messages().ByName(name); md != nil {
-		if suffix == "" {
-			return md
-		}
-		return findDescriptorInMessage(md, suffix)
-	}
-	return nil
-}
-
-type nameSuffix string
-
-func (s *nameSuffix) Pop() (name protoreflect.Name) {
-	if i := strings.IndexByte(string(*s), '.'); i >= 0 {
-		name, *s = protoreflect.Name((*s)[:i]), (*s)[i+1:]
-	} else {
-		name, *s = protoreflect.Name((*s)), ""
-	}
-	return name
-}
-
-// FindFileByPath looks up a file by the path.
-//
-// This returns (nil, NotFound) if not found.
-// This returns an error if multiple files have the same path.
-func (r *Files) FindFileByPath(path string) (protoreflect.FileDescriptor, error) {
-	if r == nil {
-		return nil, NotFound
-	}
-	if r == GlobalFiles {
-		globalMutex.RLock()
-		defer globalMutex.RUnlock()
-	}
-	fds := r.filesByPath[path]
-	switch len(fds) {
-	case 0:
-		return nil, NotFound
-	case 1:
-		return fds[0], nil
-	default:
-		return nil, errors.New("multiple files named %q", path)
-	}
-}
-
-// NumFiles reports the number of registered files,
-// including duplicate files with the same name.
-func (r *Files) NumFiles() int {
-	if r == nil {
-		return 0
-	}
-	if r == GlobalFiles {
-		globalMutex.RLock()
-		defer globalMutex.RUnlock()
-	}
-	return r.numFiles
-}
-
-// RangeFiles iterates over all registered files while f returns true.
-// If multiple files have the same name, RangeFiles iterates over all of them.
-// The iteration order is undefined.
-func (r *Files) RangeFiles(f func(protoreflect.FileDescriptor) bool) {
-	if r == nil {
-		return
-	}
-	if r == GlobalFiles {
-		globalMutex.RLock()
-		defer globalMutex.RUnlock()
-	}
-	for _, files := range r.filesByPath {
-		for _, file := range files {
-			if !f(file) {
-				return
-			}
-		}
-	}
-}
-
-// NumFilesByPackage reports the number of registered files in a proto package.
-func (r *Files) NumFilesByPackage(name protoreflect.FullName) int {
-	if r == nil {
-		return 0
-	}
-	if r == GlobalFiles {
-		globalMutex.RLock()
-		defer globalMutex.RUnlock()
-	}
-	p, ok := r.descsByName[name].(*packageDescriptor)
-	if !ok {
-		return 0
-	}
-	return len(p.files)
-}
-
-// RangeFilesByPackage iterates over all registered files in a given proto package
-// while f returns true. The iteration order is undefined.
-func (r *Files) RangeFilesByPackage(name protoreflect.FullName, f func(protoreflect.FileDescriptor) bool) {
-	if r == nil {
-		return
-	}
-	if r == GlobalFiles {
-		globalMutex.RLock()
-		defer globalMutex.RUnlock()
-	}
-	p, ok := r.descsByName[name].(*packageDescriptor)
-	if !ok {
-		return
-	}
-	for _, file := range p.files {
-		if !f(file) {
-			return
-		}
-	}
-}
-
-// rangeTopLevelDescriptors iterates over all top-level descriptors in a file
-// which will be directly entered into the registry.
-func rangeTopLevelDescriptors(fd protoreflect.FileDescriptor, f func(protoreflect.Descriptor)) {
-	eds := fd.Enums()
-	for i := eds.Len() - 1; i >= 0; i-- {
-		f(eds.Get(i))
-		vds := eds.Get(i).Values()
-		for i := vds.Len() - 1; i >= 0; i-- {
-			f(vds.Get(i))
-		}
-	}
-	mds := fd.Messages()
-	for i := mds.Len() - 1; i >= 0; i-- {
-		f(mds.Get(i))
-	}
-	xds := fd.Extensions()
-	for i := xds.Len() - 1; i >= 0; i-- {
-		f(xds.Get(i))
-	}
-	sds := fd.Services()
-	for i := sds.Len() - 1; i >= 0; i-- {
-		f(sds.Get(i))
-	}
-}
-
-// MessageTypeResolver is an interface for looking up messages.
-//
-// A compliant implementation must deterministically return the same type
-// if no error is encountered.
-//
-// The Types type implements this interface.
-type MessageTypeResolver interface {
-	// FindMessageByName looks up a message by its full name.
-	// E.g., "google.protobuf.Any"
-	//
-	// This return (nil, NotFound) if not found.
-	FindMessageByName(message protoreflect.FullName) (protoreflect.MessageType, error)
-
-	// FindMessageByURL looks up a message by a URL identifier.
-	// See documentation on google.protobuf.Any.type_url for the URL format.
-	//
-	// This returns (nil, NotFound) if not found.
-	FindMessageByURL(url string) (protoreflect.MessageType, error)
-}
-
-// ExtensionTypeResolver is an interface for looking up extensions.
-//
-// A compliant implementation must deterministically return the same type
-// if no error is encountered.
-//
-// The Types type implements this interface.
-type ExtensionTypeResolver interface {
-	// FindExtensionByName looks up a extension field by the field's full name.
-	// Note that this is the full name of the field as determined by
-	// where the extension is declared and is unrelated to the full name of the
-	// message being extended.
-	//
-	// This returns (nil, NotFound) if not found.
-	FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error)
-
-	// FindExtensionByNumber looks up a extension field by the field number
-	// within some parent message, identified by full name.
-	//
-	// This returns (nil, NotFound) if not found.
-	FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error)
-}
-
-var (
-	_ MessageTypeResolver   = (*Types)(nil)
-	_ ExtensionTypeResolver = (*Types)(nil)
-)
-
-// Types is a registry for looking up or iterating over descriptor types.
-// The Find and Range methods are safe for concurrent use.
-type Types struct {
-	typesByName         typesByName
-	extensionsByMessage extensionsByMessage
-
-	numEnums      int
-	numMessages   int
-	numExtensions int
-}
-
-type (
-	typesByName         map[protoreflect.FullName]interface{}
-	extensionsByMessage map[protoreflect.FullName]extensionsByNumber
-	extensionsByNumber  map[protoreflect.FieldNumber]protoreflect.ExtensionType
-)
-
-// RegisterMessage registers the provided message type.
-//
-// If a naming conflict occurs, the type is not registered and an error is returned.
-func (r *Types) RegisterMessage(mt protoreflect.MessageType) error {
-	// Under rare circumstances getting the descriptor might recursively
-	// examine the registry, so fetch it before locking.
-	md := mt.Descriptor()
-
-	if r == GlobalTypes {
-		globalMutex.Lock()
-		defer globalMutex.Unlock()
-	}
-
-	if err := r.register("message", md, mt); err != nil {
-		return err
-	}
-	r.numMessages++
-	return nil
-}
-
-// RegisterEnum registers the provided enum type.
-//
-// If a naming conflict occurs, the type is not registered and an error is returned.
-func (r *Types) RegisterEnum(et protoreflect.EnumType) error {
-	// Under rare circumstances getting the descriptor might recursively
-	// examine the registry, so fetch it before locking.
-	ed := et.Descriptor()
-
-	if r == GlobalTypes {
-		globalMutex.Lock()
-		defer globalMutex.Unlock()
-	}
-
-	if err := r.register("enum", ed, et); err != nil {
-		return err
-	}
-	r.numEnums++
-	return nil
-}
-
-// RegisterExtension registers the provided extension type.
-//
-// If a naming conflict occurs, the type is not registered and an error is returned.
-func (r *Types) RegisterExtension(xt protoreflect.ExtensionType) error {
-	// Under rare circumstances getting the descriptor might recursively
-	// examine the registry, so fetch it before locking.
-	//
-	// A known case where this can happen: Fetching the TypeDescriptor for a
-	// legacy ExtensionDesc can consult the global registry.
-	xd := xt.TypeDescriptor()
-
-	if r == GlobalTypes {
-		globalMutex.Lock()
-		defer globalMutex.Unlock()
-	}
-
-	field := xd.Number()
-	message := xd.ContainingMessage().FullName()
-	if prev := r.extensionsByMessage[message][field]; prev != nil {
-		err := errors.New("extension number %d is already registered on message %v", field, message)
-		err = amendErrorWithCaller(err, prev, xt)
-		if !(r == GlobalTypes && ignoreConflict(xd, err)) {
-			return err
-		}
-	}
-
-	if err := r.register("extension", xd, xt); err != nil {
-		return err
-	}
-	if r.extensionsByMessage == nil {
-		r.extensionsByMessage = make(extensionsByMessage)
-	}
-	if r.extensionsByMessage[message] == nil {
-		r.extensionsByMessage[message] = make(extensionsByNumber)
-	}
-	r.extensionsByMessage[message][field] = xt
-	r.numExtensions++
-	return nil
-}
-
-func (r *Types) register(kind string, desc protoreflect.Descriptor, typ interface{}) error {
-	name := desc.FullName()
-	prev := r.typesByName[name]
-	if prev != nil {
-		err := errors.New("%v %v is already registered", kind, name)
-		err = amendErrorWithCaller(err, prev, typ)
-		if !(r == GlobalTypes && ignoreConflict(desc, err)) {
-			return err
-		}
-	}
-	if r.typesByName == nil {
-		r.typesByName = make(typesByName)
-	}
-	r.typesByName[name] = typ
-	return nil
-}
-
-// FindEnumByName looks up an enum by its full name.
-// E.g., "google.protobuf.Field.Kind".
-//
-// This returns (nil, NotFound) if not found.
-func (r *Types) FindEnumByName(enum protoreflect.FullName) (protoreflect.EnumType, error) {
-	if r == nil {
-		return nil, NotFound
-	}
-	if r == GlobalTypes {
-		globalMutex.RLock()
-		defer globalMutex.RUnlock()
-	}
-	if v := r.typesByName[enum]; v != nil {
-		if et, _ := v.(protoreflect.EnumType); et != nil {
-			return et, nil
-		}
-		return nil, errors.New("found wrong type: got %v, want enum", typeName(v))
-	}
-	return nil, NotFound
-}
-
-// FindMessageByName looks up a message by its full name,
-// e.g. "google.protobuf.Any".
-//
-// This returns (nil, NotFound) if not found.
-func (r *Types) FindMessageByName(message protoreflect.FullName) (protoreflect.MessageType, error) {
-	if r == nil {
-		return nil, NotFound
-	}
-	if r == GlobalTypes {
-		globalMutex.RLock()
-		defer globalMutex.RUnlock()
-	}
-	if v := r.typesByName[message]; v != nil {
-		if mt, _ := v.(protoreflect.MessageType); mt != nil {
-			return mt, nil
-		}
-		return nil, errors.New("found wrong type: got %v, want message", typeName(v))
-	}
-	return nil, NotFound
-}
-
-// FindMessageByURL looks up a message by a URL identifier.
-// See documentation on google.protobuf.Any.type_url for the URL format.
-//
-// This returns (nil, NotFound) if not found.
-func (r *Types) FindMessageByURL(url string) (protoreflect.MessageType, error) {
-	// This function is similar to FindMessageByName but
-	// truncates anything before and including '/' in the URL.
-	if r == nil {
-		return nil, NotFound
-	}
-	if r == GlobalTypes {
-		globalMutex.RLock()
-		defer globalMutex.RUnlock()
-	}
-	message := protoreflect.FullName(url)
-	if i := strings.LastIndexByte(url, '/'); i >= 0 {
-		message = message[i+len("/"):]
-	}
-
-	if v := r.typesByName[message]; v != nil {
-		if mt, _ := v.(protoreflect.MessageType); mt != nil {
-			return mt, nil
-		}
-		return nil, errors.New("found wrong type: got %v, want message", typeName(v))
-	}
-	return nil, NotFound
-}
-
-// FindExtensionByName looks up a extension field by the field's full name.
-// Note that this is the full name of the field as determined by
-// where the extension is declared and is unrelated to the full name of the
-// message being extended.
-//
-// This returns (nil, NotFound) if not found.
-func (r *Types) FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) {
-	if r == nil {
-		return nil, NotFound
-	}
-	if r == GlobalTypes {
-		globalMutex.RLock()
-		defer globalMutex.RUnlock()
-	}
-	if v := r.typesByName[field]; v != nil {
-		if xt, _ := v.(protoreflect.ExtensionType); xt != nil {
-			return xt, nil
-		}
-
-		// MessageSet extensions are special in that the name of the extension
-		// is the name of the message type used to extend the MessageSet.
-		// This naming scheme is used by text and JSON serialization.
-		//
-		// This feature is protected by the ProtoLegacy flag since MessageSets
-		// are a proto1 feature that is long deprecated.
-		if flags.ProtoLegacy {
-			if _, ok := v.(protoreflect.MessageType); ok {
-				field := field.Append(messageset.ExtensionName)
-				if v := r.typesByName[field]; v != nil {
-					if xt, _ := v.(protoreflect.ExtensionType); xt != nil {
-						if messageset.IsMessageSetExtension(xt.TypeDescriptor()) {
-							return xt, nil
-						}
-					}
-				}
-			}
-		}
-
-		return nil, errors.New("found wrong type: got %v, want extension", typeName(v))
-	}
-	return nil, NotFound
-}
-
-// FindExtensionByNumber looks up a extension field by the field number
-// within some parent message, identified by full name.
-//
-// This returns (nil, NotFound) if not found.
-func (r *Types) FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) {
-	if r == nil {
-		return nil, NotFound
-	}
-	if r == GlobalTypes {
-		globalMutex.RLock()
-		defer globalMutex.RUnlock()
-	}
-	if xt, ok := r.extensionsByMessage[message][field]; ok {
-		return xt, nil
-	}
-	return nil, NotFound
-}
-
-// NumEnums reports the number of registered enums.
-func (r *Types) NumEnums() int {
-	if r == nil {
-		return 0
-	}
-	if r == GlobalTypes {
-		globalMutex.RLock()
-		defer globalMutex.RUnlock()
-	}
-	return r.numEnums
-}
-
-// RangeEnums iterates over all registered enums while f returns true.
-// Iteration order is undefined.
-func (r *Types) RangeEnums(f func(protoreflect.EnumType) bool) {
-	if r == nil {
-		return
-	}
-	if r == GlobalTypes {
-		globalMutex.RLock()
-		defer globalMutex.RUnlock()
-	}
-	for _, typ := range r.typesByName {
-		if et, ok := typ.(protoreflect.EnumType); ok {
-			if !f(et) {
-				return
-			}
-		}
-	}
-}
-
-// NumMessages reports the number of registered messages.
-func (r *Types) NumMessages() int {
-	if r == nil {
-		return 0
-	}
-	if r == GlobalTypes {
-		globalMutex.RLock()
-		defer globalMutex.RUnlock()
-	}
-	return r.numMessages
-}
-
-// RangeMessages iterates over all registered messages while f returns true.
-// Iteration order is undefined.
-func (r *Types) RangeMessages(f func(protoreflect.MessageType) bool) {
-	if r == nil {
-		return
-	}
-	if r == GlobalTypes {
-		globalMutex.RLock()
-		defer globalMutex.RUnlock()
-	}
-	for _, typ := range r.typesByName {
-		if mt, ok := typ.(protoreflect.MessageType); ok {
-			if !f(mt) {
-				return
-			}
-		}
-	}
-}
-
-// NumExtensions reports the number of registered extensions.
-func (r *Types) NumExtensions() int {
-	if r == nil {
-		return 0
-	}
-	if r == GlobalTypes {
-		globalMutex.RLock()
-		defer globalMutex.RUnlock()
-	}
-	return r.numExtensions
-}
-
-// RangeExtensions iterates over all registered extensions while f returns true.
-// Iteration order is undefined.
-func (r *Types) RangeExtensions(f func(protoreflect.ExtensionType) bool) {
-	if r == nil {
-		return
-	}
-	if r == GlobalTypes {
-		globalMutex.RLock()
-		defer globalMutex.RUnlock()
-	}
-	for _, typ := range r.typesByName {
-		if xt, ok := typ.(protoreflect.ExtensionType); ok {
-			if !f(xt) {
-				return
-			}
-		}
-	}
-}
-
-// NumExtensionsByMessage reports the number of registered extensions for
-// a given message type.
-func (r *Types) NumExtensionsByMessage(message protoreflect.FullName) int {
-	if r == nil {
-		return 0
-	}
-	if r == GlobalTypes {
-		globalMutex.RLock()
-		defer globalMutex.RUnlock()
-	}
-	return len(r.extensionsByMessage[message])
-}
-
-// RangeExtensionsByMessage iterates over all registered extensions filtered
-// by a given message type while f returns true. Iteration order is undefined.
-func (r *Types) RangeExtensionsByMessage(message protoreflect.FullName, f func(protoreflect.ExtensionType) bool) {
-	if r == nil {
-		return
-	}
-	if r == GlobalTypes {
-		globalMutex.RLock()
-		defer globalMutex.RUnlock()
-	}
-	for _, xt := range r.extensionsByMessage[message] {
-		if !f(xt) {
-			return
-		}
-	}
-}
-
-func typeName(t interface{}) string {
-	switch t.(type) {
-	case protoreflect.EnumType:
-		return "enum"
-	case protoreflect.MessageType:
-		return "message"
-	case protoreflect.ExtensionType:
-		return "extension"
-	default:
-		return fmt.Sprintf("%T", t)
-	}
-}
-
-func amendErrorWithCaller(err error, prev, curr interface{}) error {
-	prevPkg := goPackage(prev)
-	currPkg := goPackage(curr)
-	if prevPkg == "" || currPkg == "" || prevPkg == currPkg {
-		return err
-	}
-	return errors.New("%s\n\tpreviously from: %q\n\tcurrently from:  %q", err, prevPkg, currPkg)
-}
-
-func goPackage(v interface{}) string {
-	switch d := v.(type) {
-	case protoreflect.EnumType:
-		v = d.Descriptor()
-	case protoreflect.MessageType:
-		v = d.Descriptor()
-	case protoreflect.ExtensionType:
-		v = d.TypeDescriptor()
-	}
-	if d, ok := v.(protoreflect.Descriptor); ok {
-		v = d.ParentFile()
-	}
-	if d, ok := v.(interface{ GoPackagePath() string }); ok {
-		return d.GoPackagePath()
-	}
-	return ""
-}
diff --git a/reflect/protoregistry/registry_test.go b/reflect/protoregistry/registry_test.go
deleted file mode 100644
index d058c19..0000000
--- a/reflect/protoregistry/registry_test.go
+++ /dev/null
@@ -1,655 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protoregistry_test
-
-import (
-	"fmt"
-	"strings"
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-	"github.com/google/go-cmp/cmp/cmpopts"
-
-	"google.golang.org/protobuf/encoding/prototext"
-	pimpl "google.golang.org/protobuf/internal/impl"
-	pdesc "google.golang.org/protobuf/reflect/protodesc"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	preg "google.golang.org/protobuf/reflect/protoregistry"
-
-	testpb "google.golang.org/protobuf/internal/testprotos/registry"
-	"google.golang.org/protobuf/types/descriptorpb"
-)
-
-func mustMakeFile(s string) pref.FileDescriptor {
-	pb := new(descriptorpb.FileDescriptorProto)
-	if err := prototext.Unmarshal([]byte(s), pb); err != nil {
-		panic(err)
-	}
-	fd, err := pdesc.NewFile(pb, nil)
-	if err != nil {
-		panic(err)
-	}
-	return fd
-}
-
-func TestFiles(t *testing.T) {
-	type (
-		file struct {
-			Path string
-			Pkg  pref.FullName
-		}
-		testFile struct {
-			inFile  pref.FileDescriptor
-			wantErr string
-		}
-		testFindDesc struct {
-			inName    pref.FullName
-			wantFound bool
-		}
-		testRangePkg struct {
-			inPkg     pref.FullName
-			wantFiles []file
-		}
-		testFindPath struct {
-			inPath    string
-			wantFiles []file
-			wantErr   string
-		}
-	)
-
-	tests := []struct {
-		files     []testFile
-		findDescs []testFindDesc
-		rangePkgs []testRangePkg
-		findPaths []testFindPath
-	}{{
-		// Test that overlapping packages and files are permitted.
-		files: []testFile{
-			{inFile: mustMakeFile(`syntax:"proto2" name:"test1.proto" package:"foo.bar"`)},
-			{inFile: mustMakeFile(`syntax:"proto2" name:"foo/bar/test.proto" package:"my.test"`)},
-			{inFile: mustMakeFile(`syntax:"proto2" name:"foo/bar/test.proto" package:"foo.bar.baz"`), wantErr: "already registered"},
-			{inFile: mustMakeFile(`syntax:"proto2" name:"test2.proto" package:"my.test.package"`)},
-			{inFile: mustMakeFile(`syntax:"proto2" name:"weird" package:"foo.bar"`)},
-			{inFile: mustMakeFile(`syntax:"proto2" name:"foo/bar/baz/../test.proto" package:"my.test"`)},
-		},
-
-		rangePkgs: []testRangePkg{{
-			inPkg: "nothing",
-		}, {
-			inPkg: "",
-		}, {
-			inPkg: ".",
-		}, {
-			inPkg: "foo",
-		}, {
-			inPkg: "foo.",
-		}, {
-			inPkg: "foo..",
-		}, {
-			inPkg: "foo.bar",
-			wantFiles: []file{
-				{"test1.proto", "foo.bar"},
-				{"weird", "foo.bar"},
-			},
-		}, {
-			inPkg: "my.test",
-			wantFiles: []file{
-				{"foo/bar/baz/../test.proto", "my.test"},
-				{"foo/bar/test.proto", "my.test"},
-			},
-		}, {
-			inPkg: "fo",
-		}},
-
-		findPaths: []testFindPath{{
-			inPath:  "nothing",
-			wantErr: "not found",
-		}, {
-			inPath: "weird",
-			wantFiles: []file{
-				{"weird", "foo.bar"},
-			},
-		}, {
-			inPath: "foo/bar/test.proto",
-			wantFiles: []file{
-				{"foo/bar/test.proto", "my.test"},
-			},
-		}},
-	}, {
-		// Test when new enum conflicts with existing package.
-		files: []testFile{{
-			inFile: mustMakeFile(`syntax:"proto2" name:"test1a.proto" package:"foo.bar.baz"`),
-		}, {
-			inFile:  mustMakeFile(`syntax:"proto2" name:"test1b.proto" enum_type:[{name:"foo" value:[{name:"VALUE" number:0}]}]`),
-			wantErr: `file "test1b.proto" has a name conflict over foo`,
-		}},
-	}, {
-		// Test when new package conflicts with existing enum.
-		files: []testFile{{
-			inFile: mustMakeFile(`syntax:"proto2" name:"test2a.proto" enum_type:[{name:"foo" value:[{name:"VALUE" number:0}]}]`),
-		}, {
-			inFile:  mustMakeFile(`syntax:"proto2" name:"test2b.proto" package:"foo.bar.baz"`),
-			wantErr: `file "test2b.proto" has a package name conflict over foo`,
-		}},
-	}, {
-		// Test when new enum conflicts with existing enum in same package.
-		files: []testFile{{
-			inFile: mustMakeFile(`syntax:"proto2" name:"test3a.proto" package:"foo" enum_type:[{name:"BAR" value:[{name:"VALUE" number:0}]}]`),
-		}, {
-			inFile:  mustMakeFile(`syntax:"proto2" name:"test3b.proto" package:"foo" enum_type:[{name:"BAR" value:[{name:"VALUE2" number:0}]}]`),
-			wantErr: `file "test3b.proto" has a name conflict over foo.BAR`,
-		}},
-	}, {
-		files: []testFile{{
-			inFile: mustMakeFile(`
-				syntax:  "proto2"
-				name:    "test1.proto"
-				package: "fizz.buzz"
-				message_type: [{
-					name: "Message"
-					field: [
-						{name:"Field" number:1 label:LABEL_OPTIONAL type:TYPE_STRING oneof_index:0}
-					]
-					oneof_decl:      [{name:"Oneof"}]
-					extension_range: [{start:1000 end:2000}]
-
-					enum_type: [
-						{name:"Enum" value:[{name:"EnumValue" number:0}]}
-					]
-					nested_type: [
-						{name:"Message" field:[{name:"Field" number:1 label:LABEL_OPTIONAL type:TYPE_STRING}]}
-					]
-					extension: [
-						{name:"Extension" number:1001 label:LABEL_OPTIONAL type:TYPE_STRING extendee:".fizz.buzz.Message"}
-					]
-				}]
-				enum_type: [{
-					name:  "Enum"
-					value: [{name:"EnumValue" number:0}]
-				}]
-				extension: [
-					{name:"Extension" number:1000 label:LABEL_OPTIONAL type:TYPE_STRING extendee:".fizz.buzz.Message"}
-				]
-				service: [{
-					name: "Service"
-					method: [{
-						name:             "Method"
-						input_type:       ".fizz.buzz.Message"
-						output_type:      ".fizz.buzz.Message"
-						client_streaming: true
-						server_streaming: true
-					}]
-				}]
-			`),
-		}, {
-			inFile: mustMakeFile(`
-				syntax:  "proto2"
-				name:    "test2.proto"
-				package: "fizz.buzz.gazz"
-				enum_type: [{
-					name:  "Enum"
-					value: [{name:"EnumValue" number:0}]
-				}]
-			`),
-		}, {
-			inFile: mustMakeFile(`
-				syntax:  "proto2"
-				name:    "test3.proto"
-				package: "fizz.buzz"
-				enum_type: [{
-					name:  "Enum1"
-					value: [{name:"EnumValue1" number:0}]
-				}, {
-					name:  "Enum2"
-					value: [{name:"EnumValue2" number:0}]
-				}]
-			`),
-		}, {
-			// Make sure we can register without package name.
-			inFile: mustMakeFile(`
-				name:   "weird"
-				syntax: "proto2"
-				message_type: [{
-					name: "Message"
-					nested_type: [{
-						name: "Message"
-						nested_type: [{
-							name: "Message"
-						}]
-					}]
-				}]
-			`),
-		}},
-		findDescs: []testFindDesc{
-			{inName: "fizz.buzz.message", wantFound: false},
-			{inName: "fizz.buzz.Message", wantFound: true},
-			{inName: "fizz.buzz.Message.X", wantFound: false},
-			{inName: "fizz.buzz.Field", wantFound: false},
-			{inName: "fizz.buzz.Oneof", wantFound: false},
-			{inName: "fizz.buzz.Message.Field", wantFound: true},
-			{inName: "fizz.buzz.Message.Field.X", wantFound: false},
-			{inName: "fizz.buzz.Message.Oneof", wantFound: true},
-			{inName: "fizz.buzz.Message.Oneof.X", wantFound: false},
-			{inName: "fizz.buzz.Message.Message", wantFound: true},
-			{inName: "fizz.buzz.Message.Message.X", wantFound: false},
-			{inName: "fizz.buzz.Message.Enum", wantFound: true},
-			{inName: "fizz.buzz.Message.Enum.X", wantFound: false},
-			{inName: "fizz.buzz.Message.EnumValue", wantFound: true},
-			{inName: "fizz.buzz.Message.EnumValue.X", wantFound: false},
-			{inName: "fizz.buzz.Message.Extension", wantFound: true},
-			{inName: "fizz.buzz.Message.Extension.X", wantFound: false},
-			{inName: "fizz.buzz.enum", wantFound: false},
-			{inName: "fizz.buzz.Enum", wantFound: true},
-			{inName: "fizz.buzz.Enum.X", wantFound: false},
-			{inName: "fizz.buzz.EnumValue", wantFound: true},
-			{inName: "fizz.buzz.EnumValue.X", wantFound: false},
-			{inName: "fizz.buzz.Enum.EnumValue", wantFound: false},
-			{inName: "fizz.buzz.Extension", wantFound: true},
-			{inName: "fizz.buzz.Extension.X", wantFound: false},
-			{inName: "fizz.buzz.service", wantFound: false},
-			{inName: "fizz.buzz.Service", wantFound: true},
-			{inName: "fizz.buzz.Service.X", wantFound: false},
-			{inName: "fizz.buzz.Method", wantFound: false},
-			{inName: "fizz.buzz.Service.Method", wantFound: true},
-			{inName: "fizz.buzz.Service.Method.X", wantFound: false},
-
-			{inName: "fizz.buzz.gazz", wantFound: false},
-			{inName: "fizz.buzz.gazz.Enum", wantFound: true},
-			{inName: "fizz.buzz.gazz.EnumValue", wantFound: true},
-			{inName: "fizz.buzz.gazz.Enum.EnumValue", wantFound: false},
-
-			{inName: "fizz.buzz", wantFound: false},
-			{inName: "fizz.buzz.Enum1", wantFound: true},
-			{inName: "fizz.buzz.EnumValue1", wantFound: true},
-			{inName: "fizz.buzz.Enum1.EnumValue1", wantFound: false},
-			{inName: "fizz.buzz.Enum2", wantFound: true},
-			{inName: "fizz.buzz.EnumValue2", wantFound: true},
-			{inName: "fizz.buzz.Enum2.EnumValue2", wantFound: false},
-			{inName: "fizz.buzz.Enum3", wantFound: false},
-
-			{inName: "", wantFound: false},
-			{inName: "Message", wantFound: true},
-			{inName: "Message.Message", wantFound: true},
-			{inName: "Message.Message.Message", wantFound: true},
-			{inName: "Message.Message.Message.Message", wantFound: false},
-		},
-	}}
-
-	sortFiles := cmpopts.SortSlices(func(x, y file) bool {
-		return x.Path < y.Path || (x.Path == y.Path && x.Pkg < y.Pkg)
-	})
-	for _, tt := range tests {
-		t.Run("", func(t *testing.T) {
-			var files preg.Files
-			for i, tc := range tt.files {
-				gotErr := files.RegisterFile(tc.inFile)
-				if ((gotErr == nil) != (tc.wantErr == "")) || !strings.Contains(fmt.Sprint(gotErr), tc.wantErr) {
-					t.Errorf("file %d, Register() = %v, want %v", i, gotErr, tc.wantErr)
-				}
-			}
-
-			for _, tc := range tt.findDescs {
-				d, _ := files.FindDescriptorByName(tc.inName)
-				gotFound := d != nil
-				if gotFound != tc.wantFound {
-					t.Errorf("FindDescriptorByName(%v) find mismatch: got %v, want %v", tc.inName, gotFound, tc.wantFound)
-				}
-			}
-
-			for _, tc := range tt.rangePkgs {
-				var gotFiles []file
-				var gotCnt int
-				wantCnt := files.NumFilesByPackage(tc.inPkg)
-				files.RangeFilesByPackage(tc.inPkg, func(fd pref.FileDescriptor) bool {
-					gotFiles = append(gotFiles, file{fd.Path(), fd.Package()})
-					gotCnt++
-					return true
-				})
-				if gotCnt != wantCnt {
-					t.Errorf("NumFilesByPackage(%v) = %v, want %v", tc.inPkg, gotCnt, wantCnt)
-				}
-				if diff := cmp.Diff(tc.wantFiles, gotFiles, sortFiles); diff != "" {
-					t.Errorf("RangeFilesByPackage(%v) mismatch (-want +got):\n%v", tc.inPkg, diff)
-				}
-			}
-
-			for _, tc := range tt.findPaths {
-				var gotFiles []file
-				fd, gotErr := files.FindFileByPath(tc.inPath)
-				if gotErr == nil {
-					gotFiles = append(gotFiles, file{fd.Path(), fd.Package()})
-				}
-				if ((gotErr == nil) != (tc.wantErr == "")) || !strings.Contains(fmt.Sprint(gotErr), tc.wantErr) {
-					t.Errorf("FindFileByPath(%v) = %v, want %v", tc.inPath, gotErr, tc.wantErr)
-				}
-				if diff := cmp.Diff(tc.wantFiles, gotFiles, sortFiles); diff != "" {
-					t.Errorf("FindFileByPath(%v) mismatch (-want +got):\n%v", tc.inPath, diff)
-				}
-			}
-		})
-	}
-}
-
-func TestTypes(t *testing.T) {
-	mt1 := pimpl.Export{}.MessageTypeOf(&testpb.Message1{})
-	et1 := pimpl.Export{}.EnumTypeOf(testpb.Enum1_ONE)
-	xt1 := testpb.E_StringField
-	xt2 := testpb.E_Message4_MessageField
-	registry := new(preg.Types)
-	if err := registry.RegisterMessage(mt1); err != nil {
-		t.Fatalf("registry.RegisterMessage(%v) returns unexpected error: %v", mt1.Descriptor().FullName(), err)
-	}
-	if err := registry.RegisterEnum(et1); err != nil {
-		t.Fatalf("registry.RegisterEnum(%v) returns unexpected error: %v", et1.Descriptor().FullName(), err)
-	}
-	if err := registry.RegisterExtension(xt1); err != nil {
-		t.Fatalf("registry.RegisterExtension(%v) returns unexpected error: %v", xt1.TypeDescriptor().FullName(), err)
-	}
-	if err := registry.RegisterExtension(xt2); err != nil {
-		t.Fatalf("registry.RegisterExtension(%v) returns unexpected error: %v", xt2.TypeDescriptor().FullName(), err)
-	}
-
-	t.Run("FindMessageByName", func(t *testing.T) {
-		tests := []struct {
-			name         string
-			messageType  pref.MessageType
-			wantErr      bool
-			wantNotFound bool
-		}{{
-			name:        "testprotos.Message1",
-			messageType: mt1,
-		}, {
-			name:         "testprotos.NoSuchMessage",
-			wantErr:      true,
-			wantNotFound: true,
-		}, {
-			name:    "testprotos.Enum1",
-			wantErr: true,
-		}, {
-			name:    "testprotos.Enum2",
-			wantErr: true,
-		}, {
-			name:    "testprotos.Enum3",
-			wantErr: true,
-		}}
-		for _, tc := range tests {
-			got, err := registry.FindMessageByName(pref.FullName(tc.name))
-			gotErr := err != nil
-			if gotErr != tc.wantErr {
-				t.Errorf("FindMessageByName(%v) = (_, %v), want error? %t", tc.name, err, tc.wantErr)
-				continue
-			}
-			if tc.wantNotFound && err != preg.NotFound {
-				t.Errorf("FindMessageByName(%v) got error: %v, want NotFound error", tc.name, err)
-				continue
-			}
-			if got != tc.messageType {
-				t.Errorf("FindMessageByName(%v) got wrong value: %v", tc.name, got)
-			}
-		}
-	})
-
-	t.Run("FindMessageByURL", func(t *testing.T) {
-		tests := []struct {
-			name         string
-			messageType  pref.MessageType
-			wantErr      bool
-			wantNotFound bool
-		}{{
-			name:        "testprotos.Message1",
-			messageType: mt1,
-		}, {
-			name:         "type.googleapis.com/testprotos.Nada",
-			wantErr:      true,
-			wantNotFound: true,
-		}, {
-			name:    "testprotos.Enum1",
-			wantErr: true,
-		}}
-		for _, tc := range tests {
-			got, err := registry.FindMessageByURL(tc.name)
-			gotErr := err != nil
-			if gotErr != tc.wantErr {
-				t.Errorf("FindMessageByURL(%v) = (_, %v), want error? %t", tc.name, err, tc.wantErr)
-				continue
-			}
-			if tc.wantNotFound && err != preg.NotFound {
-				t.Errorf("FindMessageByURL(%v) got error: %v, want NotFound error", tc.name, err)
-				continue
-			}
-			if got != tc.messageType {
-				t.Errorf("FindMessageByURL(%v) got wrong value: %v", tc.name, got)
-			}
-		}
-	})
-
-	t.Run("FindEnumByName", func(t *testing.T) {
-		tests := []struct {
-			name         string
-			enumType     pref.EnumType
-			wantErr      bool
-			wantNotFound bool
-		}{{
-			name:     "testprotos.Enum1",
-			enumType: et1,
-		}, {
-			name:         "testprotos.None",
-			wantErr:      true,
-			wantNotFound: true,
-		}, {
-			name:    "testprotos.Message1",
-			wantErr: true,
-		}}
-		for _, tc := range tests {
-			got, err := registry.FindEnumByName(pref.FullName(tc.name))
-			gotErr := err != nil
-			if gotErr != tc.wantErr {
-				t.Errorf("FindEnumByName(%v) = (_, %v), want error? %t", tc.name, err, tc.wantErr)
-				continue
-			}
-			if tc.wantNotFound && err != preg.NotFound {
-				t.Errorf("FindEnumByName(%v) got error: %v, want NotFound error", tc.name, err)
-				continue
-			}
-			if got != tc.enumType {
-				t.Errorf("FindEnumByName(%v) got wrong value: %v", tc.name, got)
-			}
-		}
-	})
-
-	t.Run("FindExtensionByName", func(t *testing.T) {
-		tests := []struct {
-			name          string
-			extensionType pref.ExtensionType
-			wantErr       bool
-			wantNotFound  bool
-		}{{
-			name:          "testprotos.string_field",
-			extensionType: xt1,
-		}, {
-			name:          "testprotos.Message4.message_field",
-			extensionType: xt2,
-		}, {
-			name:         "testprotos.None",
-			wantErr:      true,
-			wantNotFound: true,
-		}, {
-			name:    "testprotos.Message1",
-			wantErr: true,
-		}}
-		for _, tc := range tests {
-			got, err := registry.FindExtensionByName(pref.FullName(tc.name))
-			gotErr := err != nil
-			if gotErr != tc.wantErr {
-				t.Errorf("FindExtensionByName(%v) = (_, %v), want error? %t", tc.name, err, tc.wantErr)
-				continue
-			}
-			if tc.wantNotFound && err != preg.NotFound {
-				t.Errorf("FindExtensionByName(%v) got error: %v, want NotFound error", tc.name, err)
-				continue
-			}
-			if got != tc.extensionType {
-				t.Errorf("FindExtensionByName(%v) got wrong value: %v", tc.name, got)
-			}
-		}
-	})
-
-	t.Run("FindExtensionByNumber", func(t *testing.T) {
-		tests := []struct {
-			parent        string
-			number        int32
-			extensionType pref.ExtensionType
-			wantErr       bool
-			wantNotFound  bool
-		}{{
-			parent:        "testprotos.Message1",
-			number:        11,
-			extensionType: xt1,
-		}, {
-			parent:       "testprotos.Message1",
-			number:       13,
-			wantErr:      true,
-			wantNotFound: true,
-		}, {
-			parent:        "testprotos.Message1",
-			number:        21,
-			extensionType: xt2,
-		}, {
-			parent:       "testprotos.Message1",
-			number:       23,
-			wantErr:      true,
-			wantNotFound: true,
-		}, {
-			parent:       "testprotos.NoSuchMessage",
-			number:       11,
-			wantErr:      true,
-			wantNotFound: true,
-		}, {
-			parent:       "testprotos.Message1",
-			number:       30,
-			wantErr:      true,
-			wantNotFound: true,
-		}, {
-			parent:       "testprotos.Message1",
-			number:       99,
-			wantErr:      true,
-			wantNotFound: true,
-		}}
-		for _, tc := range tests {
-			got, err := registry.FindExtensionByNumber(pref.FullName(tc.parent), pref.FieldNumber(tc.number))
-			gotErr := err != nil
-			if gotErr != tc.wantErr {
-				t.Errorf("FindExtensionByNumber(%v, %d) = (_, %v), want error? %t", tc.parent, tc.number, err, tc.wantErr)
-				continue
-			}
-			if tc.wantNotFound && err != preg.NotFound {
-				t.Errorf("FindExtensionByNumber(%v, %d) got error %v, want NotFound error", tc.parent, tc.number, err)
-				continue
-			}
-			if got != tc.extensionType {
-				t.Errorf("FindExtensionByNumber(%v, %d) got wrong value: %v", tc.parent, tc.number, got)
-			}
-		}
-	})
-
-	sortTypes := cmp.Options{
-		cmpopts.SortSlices(func(x, y pref.EnumType) bool {
-			return x.Descriptor().FullName() < y.Descriptor().FullName()
-		}),
-		cmpopts.SortSlices(func(x, y pref.MessageType) bool {
-			return x.Descriptor().FullName() < y.Descriptor().FullName()
-		}),
-		cmpopts.SortSlices(func(x, y pref.ExtensionType) bool {
-			return x.TypeDescriptor().FullName() < y.TypeDescriptor().FullName()
-		}),
-	}
-	compare := cmp.Options{
-		cmp.Comparer(func(x, y pref.EnumType) bool {
-			return x == y
-		}),
-		cmp.Comparer(func(x, y pref.ExtensionType) bool {
-			return x == y
-		}),
-		cmp.Comparer(func(x, y pref.MessageType) bool {
-			return x == y
-		}),
-	}
-
-	t.Run("RangeEnums", func(t *testing.T) {
-		want := []pref.EnumType{et1}
-		var got []pref.EnumType
-		var gotCnt int
-		wantCnt := registry.NumEnums()
-		registry.RangeEnums(func(et pref.EnumType) bool {
-			got = append(got, et)
-			gotCnt++
-			return true
-		})
-
-		if gotCnt != wantCnt {
-			t.Errorf("NumEnums() = %v, want %v", gotCnt, wantCnt)
-		}
-		if diff := cmp.Diff(want, got, sortTypes, compare); diff != "" {
-			t.Errorf("RangeEnums() mismatch (-want +got):\n%v", diff)
-		}
-	})
-
-	t.Run("RangeMessages", func(t *testing.T) {
-		want := []pref.MessageType{mt1}
-		var got []pref.MessageType
-		var gotCnt int
-		wantCnt := registry.NumMessages()
-		registry.RangeMessages(func(mt pref.MessageType) bool {
-			got = append(got, mt)
-			gotCnt++
-			return true
-		})
-
-		if gotCnt != wantCnt {
-			t.Errorf("NumMessages() = %v, want %v", gotCnt, wantCnt)
-		}
-		if diff := cmp.Diff(want, got, sortTypes, compare); diff != "" {
-			t.Errorf("RangeMessages() mismatch (-want +got):\n%v", diff)
-		}
-	})
-
-	t.Run("RangeExtensions", func(t *testing.T) {
-		want := []pref.ExtensionType{xt1, xt2}
-		var got []pref.ExtensionType
-		var gotCnt int
-		wantCnt := registry.NumExtensions()
-		registry.RangeExtensions(func(xt pref.ExtensionType) bool {
-			got = append(got, xt)
-			gotCnt++
-			return true
-		})
-
-		if gotCnt != wantCnt {
-			t.Errorf("NumExtensions() = %v, want %v", gotCnt, wantCnt)
-		}
-		if diff := cmp.Diff(want, got, sortTypes, compare); diff != "" {
-			t.Errorf("RangeExtensions() mismatch (-want +got):\n%v", diff)
-		}
-	})
-
-	t.Run("RangeExtensionsByMessage", func(t *testing.T) {
-		want := []pref.ExtensionType{xt1, xt2}
-		var got []pref.ExtensionType
-		var gotCnt int
-		wantCnt := registry.NumExtensionsByMessage("testprotos.Message1")
-		registry.RangeExtensionsByMessage("testprotos.Message1", func(xt pref.ExtensionType) bool {
-			got = append(got, xt)
-			gotCnt++
-			return true
-		})
-
-		if gotCnt != wantCnt {
-			t.Errorf("NumExtensionsByMessage() = %v, want %v", gotCnt, wantCnt)
-		}
-		if diff := cmp.Diff(want, got, sortTypes, compare); diff != "" {
-			t.Errorf("RangeExtensionsByMessage() mismatch (-want +got):\n%v", diff)
-		}
-	})
-}
diff --git a/regenerate.bash b/regenerate.bash
deleted file mode 100755
index 71f7cdd..0000000
--- a/regenerate.bash
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/bash
-# Copyright 2018 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-cd "$(git rev-parse --show-toplevel)"
-go test -v -mod=vendor -timeout=60m -count=1 integration_test.go "$@" -regenerate
-exit $?
diff --git a/regenerate.sh b/regenerate.sh
new file mode 100755
index 0000000..db0a0d6
--- /dev/null
+++ b/regenerate.sh
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+set -e
+
+# Install the working tree's protoc-gen-gen in a tempdir.
+tmpdir=$(mktemp -d -t regen-wkt.XXXXXX)
+trap 'rm -rf $tmpdir' EXIT
+mkdir -p $tmpdir/bin
+PATH=$tmpdir/bin:$PATH
+GOBIN=$tmpdir/bin go install ./protoc-gen-go
+
+# Public imports require at least Go 1.9.
+supportTypeAliases=""
+if go list -f '{{context.ReleaseTags}}' runtime | grep -q go1.9; then
+  supportTypeAliases=1
+fi
+
+# Generate various test protos.
+PROTO_DIRS=(
+  jsonpb/jsonpb_test_proto
+  proto
+  protoc-gen-go/testdata
+)
+for dir in ${PROTO_DIRS[@]}; do
+  for p in `find $dir -name "*.proto"`; do
+    if [[ $p == */import_public/* && ! $supportTypeAliases ]]; then
+      echo "# $p (skipped)"
+      continue;
+    fi
+    echo "# $p"
+    protoc -I$dir --go_out=plugins=grpc,paths=source_relative:$dir $p
+  done
+done
+
+# Deriving the location of the source protos from the path to the
+# protoc binary may be a bit odd, but this is what protoc itself does.
+PROTO_INCLUDE=$(dirname $(dirname $(which protoc)))/include
+
+# Well-known types.
+WKT_PROTOS=(any duration empty struct timestamp wrappers)
+for p in ${WKT_PROTOS[@]}; do
+  echo "# google/protobuf/$p.proto"
+  protoc --go_out=paths=source_relative:$tmpdir google/protobuf/$p.proto
+  cp $tmpdir/google/protobuf/$p.pb.go ptypes/$p
+  cp $PROTO_INCLUDE/google/protobuf/$p.proto ptypes/$p
+done
+
+# descriptor.proto.
+echo "# google/protobuf/descriptor.proto"
+protoc --go_out=paths=source_relative:$tmpdir google/protobuf/descriptor.proto
+cp $tmpdir/google/protobuf/descriptor.pb.go protoc-gen-go/descriptor
+cp $PROTO_INCLUDE/google/protobuf/descriptor.proto protoc-gen-go/descriptor
diff --git a/release.bash b/release.bash
deleted file mode 100755
index 427785d..0000000
--- a/release.bash
+++ /dev/null
@@ -1,98 +0,0 @@
-#!/bin/bash
-# Copyright 2019 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-cd "$(git rev-parse --show-toplevel)"
-
-read -p "What is the next release version (e.g., 'v1.26.0')?  " VERSION
-SEMVER_REGEX='^v\([0-9]*\)[.]\([0-9]*\)[.]\([0-9]*\)\([.a-zA-Z0-9A-Z-]*\)$'
-if ! [[ -z $(echo $VERSION | sed -e "s/$SEMVER_REGEX//") ]]; then
-	echo; echo "invalid: must be a semver string"; exit 1
-fi
-VERSION_MAJOR=$(echo $VERSION | sed -e "s/$SEMVER_REGEX/\1/")
-VERSION_MINOR=$(echo $VERSION | sed -e "s/$SEMVER_REGEX/\2/")
-VERSION_PATCH=$(echo $VERSION | sed -e "s/$SEMVER_REGEX/\3/")
-VERSION_PRERELEASE=$(echo $VERSION | sed -e "s/$SEMVER_REGEX/\4/")
-if ! [[ "$VERSION_MAJOR" =~ ^1$ ]]; then
-	echo; echo "invalid: major version must be 1"; exit 1
-fi
-if ! [[ -z $VERSION_PRERELEASE ]] && ! [[ "$VERSION_PRERELEASE" =~ ^-rc[.][0-9]+$ ]]; then
-	echo; echo "invalid: pre-release suffix must be empty or '-rc.X'"; exit 1
-fi
-VERSION_PRERELEASE=${VERSION_PRERELEASE#"-"} # trim possible leading dash
-
-function version_string() {
-	VERSION_STRING="v${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}"
-	if ! [[ -z $VERSION_PRERELEASE ]]; then
-		VERSION_STRING="${VERSION_STRING}-${VERSION_PRERELEASE}"
-	fi
-	echo $VERSION_STRING
-}
-
-read -p "Were there any changes to the generator that relies on new runtime functionality?  " YN
-case $YN in
-[Yy]* )
-	read -p "  What minor version of the runtime is required now?  " GEN_VERSION
-	if ! [[ "$GEN_VERSION" =~ ^[0-9]+$ ]]; then echo; echo "invalid: must be an integer"; exit 1; fi;;
-[Nn]* ) ;;
-* ) echo; echo "invalid: must be 'yes' or 'no'"; exit 1;;
-esac
-
-read -p "Were there any dropped functionality in the runtime for old generated code?  " YN
-case $YN in
-[Yy]* )
-	read -p "  What minor version of the runtime is required now?  " MIN_VERSION
-	if ! [[ "$MIN_VERSION" =~ ^[0-9]+$ ]]; then echo; echo "invalid: must be an integer"; exit 1; fi;;
-[Nn]* ) ;;
-* ) echo; echo "invalid: must be 'yes' or 'no'"; exit 1;;
-esac
-
-
-echo
-echo "Preparing changes to release $(version_string)."
-echo
-
-set -e
-
-# Create a new branch to contain the release changes.
-if [[ $(git branch --list release) ]]; then
-	echo "error: release branch already exists"; exit 1
-fi
-git change release
-git sync
-
-# Create commit for actual release.
-INPLACE='-i ""' # BSD version of sed expects argument after -i
-if [[ "$(sed --version)" == *"GNU"* ]]; then
-	INPLACE="-i" # GNU version of sed does not expect argument after -i
-fi
-sed $INPLACE -e "s/\(Minor *= *\)[0-9]*/\1$VERSION_MINOR/" internal/version/version.go
-sed $INPLACE -e "s/\(Patch *= *\)[0-9]*/\1$VERSION_PATCH/" internal/version/version.go
-sed $INPLACE -e "s/\(PreRelease *= *\)\"[^\"]*\"/\1\"$VERSION_PRERELEASE\"/" internal/version/version.go
-if ! [[ -z $GEN_VERSION ]]; then
-	sed $INPLACE -e "s/\(GenVersion *= *\)[0-9]*/\1$GEN_VERSION/" runtime/protoimpl/version.go
-fi
-if ! [[ -z $MIN_VERSION ]]; then
-	sed $INPLACE -e "s/\(MinVersion *= *\)[0-9]*/\1$MIN_VERSION/" runtime/protoimpl/version.go
-fi
-git commit -a -m "all: release $(version_string)"
-
-# Build release binaries.
-go test -mod=vendor -timeout=60m -count=1 integration_test.go "$@" -buildRelease
-
-# Create commit to start development after release.
-VERSION_PRERELEASE="${VERSION_PRERELEASE}.devel" # append ".devel"
-VERSION_PRERELEASE="${VERSION_PRERELEASE#"."}"   # trim possible leading "."
-sed $INPLACE -e "s/\(PreRelease *= *\)\"[^\"]*\"/\1\"$VERSION_PRERELEASE\"/" internal/version/version.go
-git commit -a -m "all: start $(version_string)"
-
-echo
-echo "Release changes prepared. Additional steps:"
-echo "  1) Submit the changes:"
-echo "    a. Mail out the changes: git mail HEAD"
-echo "    b. Request a review on the changes and merge them."
-echo "  2) Tag a new release on GitHub:"
-echo "    a. Write release notes highlighting notable changes."
-echo "    b. Attach pre-compiled binaries as assets to the release."
-echo
diff --git a/runtime/protoiface/legacy.go b/runtime/protoiface/legacy.go
deleted file mode 100644
index c587276..0000000
--- a/runtime/protoiface/legacy.go
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protoiface
-
-type MessageV1 interface {
-	Reset()
-	String() string
-	ProtoMessage()
-}
-
-type ExtensionRangeV1 struct {
-	Start, End int32 // both inclusive
-}
diff --git a/runtime/protoiface/methods.go b/runtime/protoiface/methods.go
deleted file mode 100644
index 44cf467..0000000
--- a/runtime/protoiface/methods.go
+++ /dev/null
@@ -1,168 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package protoiface contains types referenced or implemented by messages.
-//
-// WARNING: This package should only be imported by message implementations.
-// The functionality found in this package should be accessed through
-// higher-level abstractions provided by the proto package.
-package protoiface
-
-import (
-	"google.golang.org/protobuf/internal/pragma"
-	"google.golang.org/protobuf/reflect/protoreflect"
-)
-
-// Methods is a set of optional fast-path implementations of various operations.
-type Methods = struct {
-	pragma.NoUnkeyedLiterals
-
-	// Flags indicate support for optional features.
-	Flags SupportFlags
-
-	// Size returns the size in bytes of the wire-format encoding of a message.
-	// Marshal must be provided if a custom Size is provided.
-	Size func(SizeInput) SizeOutput
-
-	// Marshal formats a message in the wire-format encoding to the provided buffer.
-	// Size should be provided if a custom Marshal is provided.
-	// It must not return an error for a partial message.
-	Marshal func(MarshalInput) (MarshalOutput, error)
-
-	// Unmarshal parses the wire-format encoding and merges the result into a message.
-	// It must not reset the target message or return an error for a partial message.
-	Unmarshal func(UnmarshalInput) (UnmarshalOutput, error)
-
-	// Merge merges the contents of a source message into a destination message.
-	Merge func(MergeInput) MergeOutput
-
-	// CheckInitialized returns an error if any required fields in the message are not set.
-	CheckInitialized func(CheckInitializedInput) (CheckInitializedOutput, error)
-}
-
-// SupportFlags indicate support for optional features.
-type SupportFlags = uint64
-
-const (
-	// SupportMarshalDeterministic reports whether MarshalOptions.Deterministic is supported.
-	SupportMarshalDeterministic SupportFlags = 1 << iota
-
-	// SupportUnmarshalDiscardUnknown reports whether UnmarshalOptions.DiscardUnknown is supported.
-	SupportUnmarshalDiscardUnknown
-)
-
-// SizeInput is input to the Size method.
-type SizeInput = struct {
-	pragma.NoUnkeyedLiterals
-
-	Message protoreflect.Message
-	Flags   MarshalInputFlags
-}
-
-// SizeOutput is output from the Size method.
-type SizeOutput = struct {
-	pragma.NoUnkeyedLiterals
-
-	Size int
-}
-
-// MarshalInput is input to the Marshal method.
-type MarshalInput = struct {
-	pragma.NoUnkeyedLiterals
-
-	Message protoreflect.Message
-	Buf     []byte // output is appended to this buffer
-	Flags   MarshalInputFlags
-}
-
-// MarshalOutput is output from the Marshal method.
-type MarshalOutput = struct {
-	pragma.NoUnkeyedLiterals
-
-	Buf []byte // contains marshaled message
-}
-
-// MarshalInputFlags configure the marshaler.
-// Most flags correspond to fields in proto.MarshalOptions.
-type MarshalInputFlags = uint8
-
-const (
-	MarshalDeterministic MarshalInputFlags = 1 << iota
-	MarshalUseCachedSize
-)
-
-// UnmarshalInput is input to the Unmarshal method.
-type UnmarshalInput = struct {
-	pragma.NoUnkeyedLiterals
-
-	Message  protoreflect.Message
-	Buf      []byte // input buffer
-	Flags    UnmarshalInputFlags
-	Resolver interface {
-		FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error)
-		FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error)
-	}
-	Depth int
-}
-
-// UnmarshalOutput is output from the Unmarshal method.
-type UnmarshalOutput = struct {
-	pragma.NoUnkeyedLiterals
-
-	Flags UnmarshalOutputFlags
-}
-
-// UnmarshalInputFlags configure the unmarshaler.
-// Most flags correspond to fields in proto.UnmarshalOptions.
-type UnmarshalInputFlags = uint8
-
-const (
-	UnmarshalDiscardUnknown UnmarshalInputFlags = 1 << iota
-)
-
-// UnmarshalOutputFlags are output from the Unmarshal method.
-type UnmarshalOutputFlags = uint8
-
-const (
-	// UnmarshalInitialized may be set on return if all required fields are known to be set.
-	// If unset, then it does not necessarily indicate that the message is uninitialized,
-	// only that its status could not be confirmed.
-	UnmarshalInitialized UnmarshalOutputFlags = 1 << iota
-)
-
-// MergeInput is input to the Merge method.
-type MergeInput = struct {
-	pragma.NoUnkeyedLiterals
-
-	Source      protoreflect.Message
-	Destination protoreflect.Message
-}
-
-// MergeOutput is output from the Merge method.
-type MergeOutput = struct {
-	pragma.NoUnkeyedLiterals
-
-	Flags MergeOutputFlags
-}
-
-// MergeOutputFlags are output from the Merge method.
-type MergeOutputFlags = uint8
-
-const (
-	// MergeComplete reports whether the merge was performed.
-	// If unset, the merger must have made no changes to the destination.
-	MergeComplete MergeOutputFlags = 1 << iota
-)
-
-// CheckInitializedInput is input to the CheckInitialized method.
-type CheckInitializedInput = struct {
-	pragma.NoUnkeyedLiterals
-
-	Message protoreflect.Message
-}
-
-// CheckInitializedOutput is output from the CheckInitialized method.
-type CheckInitializedOutput = struct {
-	pragma.NoUnkeyedLiterals
-}
diff --git a/runtime/protoimpl/impl.go b/runtime/protoimpl/impl.go
deleted file mode 100644
index 4a1ab7f..0000000
--- a/runtime/protoimpl/impl.go
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package protoimpl contains the default implementation for messages
-// generated by protoc-gen-go.
-//
-// WARNING: This package should only ever be imported by generated messages.
-// The compatibility agreement covers nothing except for functionality needed
-// to keep existing generated messages operational. Breakages that occur due
-// to unauthorized usages of this package are not the author's responsibility.
-package protoimpl
-
-import (
-	"google.golang.org/protobuf/internal/filedesc"
-	"google.golang.org/protobuf/internal/filetype"
-	"google.golang.org/protobuf/internal/impl"
-)
-
-// UnsafeEnabled specifies whether package unsafe can be used.
-const UnsafeEnabled = impl.UnsafeEnabled
-
-type (
-	// Types used by generated code in init functions.
-	DescBuilder = filedesc.Builder
-	TypeBuilder = filetype.Builder
-
-	// Types used by generated code to implement EnumType, MessageType, and ExtensionType.
-	EnumInfo      = impl.EnumInfo
-	MessageInfo   = impl.MessageInfo
-	ExtensionInfo = impl.ExtensionInfo
-
-	// Types embedded in generated messages.
-	MessageState     = impl.MessageState
-	SizeCache        = impl.SizeCache
-	WeakFields       = impl.WeakFields
-	UnknownFields    = impl.UnknownFields
-	ExtensionFields  = impl.ExtensionFields
-	ExtensionFieldV1 = impl.ExtensionField
-
-	Pointer = impl.Pointer
-)
-
-var X impl.Export
diff --git a/runtime/protoimpl/version.go b/runtime/protoimpl/version.go
deleted file mode 100644
index ff094e1..0000000
--- a/runtime/protoimpl/version.go
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protoimpl
-
-import (
-	"google.golang.org/protobuf/internal/version"
-)
-
-const (
-	// MaxVersion is the maximum supported version for generated .pb.go files.
-	// It is always the current version of the module.
-	MaxVersion = version.Minor
-
-	// GenVersion is the runtime version required by generated .pb.go files.
-	// This is incremented when generated code relies on new functionality
-	// in the runtime.
-	GenVersion = 20
-
-	// MinVersion is the minimum supported version for generated .pb.go files.
-	// This is incremented when the runtime drops support for old code.
-	MinVersion = 0
-)
-
-// EnforceVersion is used by code generated by protoc-gen-go
-// to statically enforce minimum and maximum versions of this package.
-// A compilation failure implies either that:
-//	* the runtime package is too old and needs to be updated OR
-//	* the generated code is too old and needs to be regenerated.
-//
-// The runtime package can be upgraded by running:
-//	go get google.golang.org/protobuf
-//
-// The generated code can be regenerated by running:
-//	protoc --go_out=${PROTOC_GEN_GO_ARGS} ${PROTO_FILES}
-//
-// Example usage by generated code:
-//	const (
-//		// Verify that this generated code is sufficiently up-to-date.
-//		_ = protoimpl.EnforceVersion(genVersion - protoimpl.MinVersion)
-//		// Verify that runtime/protoimpl is sufficiently up-to-date.
-//		_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - genVersion)
-//	)
-//
-// The genVersion is the current minor version used to generated the code.
-// This compile-time check relies on negative integer overflow of a uint
-// being a compilation failure (guaranteed by the Go specification).
-type EnforceVersion uint
-
-// This enforces the following invariant:
-//	MinVersion ≤ GenVersion ≤ MaxVersion
-const (
-	_ = EnforceVersion(GenVersion - MinVersion)
-	_ = EnforceVersion(MaxVersion - GenVersion)
-)
diff --git a/test.bash b/test.bash
deleted file mode 100755
index 2db9621..0000000
--- a/test.bash
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/bash
-# Copyright 2018 The Go Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style
-# license that can be found in the LICENSE file.
-
-cd "$(git rev-parse --show-toplevel)"
-go test -v -mod=vendor -timeout=60m -count=1 integration_test.go -failfast "$@"
-exit $?
diff --git a/testing/protocmp/reflect.go b/testing/protocmp/reflect.go
deleted file mode 100644
index 0a5e474..0000000
--- a/testing/protocmp/reflect.go
+++ /dev/null
@@ -1,258 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protocmp
-
-import (
-	"reflect"
-	"sort"
-	"strconv"
-	"strings"
-
-	"google.golang.org/protobuf/internal/genid"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/runtime/protoiface"
-)
-
-func reflectValueOf(v interface{}) protoreflect.Value {
-	switch v := v.(type) {
-	case Enum:
-		return protoreflect.ValueOfEnum(v.Number())
-	case Message:
-		return protoreflect.ValueOfMessage(v.ProtoReflect())
-	case []byte:
-		return protoreflect.ValueOfBytes(v) // avoid overlap with reflect.Slice check below
-	default:
-		switch rv := reflect.ValueOf(v); {
-		case rv.Kind() == reflect.Slice:
-			return protoreflect.ValueOfList(reflectList{rv})
-		case rv.Kind() == reflect.Map:
-			return protoreflect.ValueOfMap(reflectMap{rv})
-		default:
-			return protoreflect.ValueOf(v)
-		}
-	}
-}
-
-type reflectMessage Message
-
-func (m reflectMessage) stringKey(fd protoreflect.FieldDescriptor) string {
-	if m.Descriptor() != fd.ContainingMessage() {
-		panic("mismatching containing message")
-	}
-	return fd.TextName()
-}
-
-func (m reflectMessage) Descriptor() protoreflect.MessageDescriptor {
-	return (Message)(m).Descriptor()
-}
-func (m reflectMessage) Type() protoreflect.MessageType {
-	return reflectMessageType{m.Descriptor()}
-}
-func (m reflectMessage) New() protoreflect.Message {
-	return m.Type().New()
-}
-func (m reflectMessage) Interface() protoreflect.ProtoMessage {
-	return Message(m)
-}
-func (m reflectMessage) Range(f func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool) {
-	// Range over populated known fields.
-	fds := m.Descriptor().Fields()
-	for i := 0; i < fds.Len(); i++ {
-		fd := fds.Get(i)
-		if m.Has(fd) && !f(fd, m.Get(fd)) {
-			return
-		}
-	}
-
-	// Range over populated extension fields.
-	for _, xd := range m[messageTypeKey].(messageMeta).xds {
-		if m.Has(xd) && !f(xd, m.Get(xd)) {
-			return
-		}
-	}
-}
-func (m reflectMessage) Has(fd protoreflect.FieldDescriptor) bool {
-	_, ok := m[m.stringKey(fd)]
-	return ok
-}
-func (m reflectMessage) Clear(protoreflect.FieldDescriptor) {
-	panic("invalid mutation of read-only message")
-}
-func (m reflectMessage) Get(fd protoreflect.FieldDescriptor) protoreflect.Value {
-	v, ok := m[m.stringKey(fd)]
-	if !ok {
-		switch {
-		case fd.IsList():
-			return protoreflect.ValueOfList(reflectList{})
-		case fd.IsMap():
-			return protoreflect.ValueOfMap(reflectMap{})
-		case fd.Message() != nil:
-			return protoreflect.ValueOfMessage(reflectMessage{
-				messageTypeKey: messageMeta{md: fd.Message()},
-			})
-		default:
-			return fd.Default()
-		}
-	}
-
-	// The transformation may leave Any messages in structured form.
-	// If so, convert them back to a raw-encoded form.
-	if fd.FullName() == genid.Any_Value_field_fullname {
-		if m, ok := v.(Message); ok {
-			b, err := proto.MarshalOptions{Deterministic: true}.Marshal(m)
-			if err != nil {
-				panic("BUG: " + err.Error())
-			}
-			return protoreflect.ValueOfBytes(b)
-		}
-	}
-
-	return reflectValueOf(v)
-}
-func (m reflectMessage) Set(protoreflect.FieldDescriptor, protoreflect.Value) {
-	panic("invalid mutation of read-only message")
-}
-func (m reflectMessage) Mutable(fd protoreflect.FieldDescriptor) protoreflect.Value {
-	panic("invalid mutation of read-only message")
-}
-func (m reflectMessage) NewField(protoreflect.FieldDescriptor) protoreflect.Value {
-	panic("not implemented")
-}
-func (m reflectMessage) WhichOneof(od protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
-	if m.Descriptor().Oneofs().ByName(od.Name()) != od {
-		panic("oneof descriptor does not belong to this message")
-	}
-	fds := od.Fields()
-	for i := 0; i < fds.Len(); i++ {
-		fd := fds.Get(i)
-		if _, ok := m[m.stringKey(fd)]; ok {
-			return fd
-		}
-	}
-	return nil
-}
-func (m reflectMessage) GetUnknown() protoreflect.RawFields {
-	var nums []protoreflect.FieldNumber
-	for k := range m {
-		if len(strings.Trim(k, "0123456789")) == 0 {
-			n, _ := strconv.ParseUint(k, 10, 32)
-			nums = append(nums, protoreflect.FieldNumber(n))
-		}
-	}
-	sort.Slice(nums, func(i, j int) bool { return nums[i] < nums[j] })
-
-	var raw protoreflect.RawFields
-	for _, num := range nums {
-		b, _ := m[strconv.FormatUint(uint64(num), 10)].(protoreflect.RawFields)
-		raw = append(raw, b...)
-	}
-	return raw
-}
-func (m reflectMessage) SetUnknown(protoreflect.RawFields) {
-	panic("invalid mutation of read-only message")
-}
-func (m reflectMessage) IsValid() bool {
-	invalid, _ := m[messageInvalidKey].(bool)
-	return !invalid
-}
-func (m reflectMessage) ProtoMethods() *protoiface.Methods {
-	return nil
-}
-
-type reflectMessageType struct{ protoreflect.MessageDescriptor }
-
-func (t reflectMessageType) New() protoreflect.Message {
-	panic("not implemented")
-}
-func (t reflectMessageType) Zero() protoreflect.Message {
-	panic("not implemented")
-}
-func (t reflectMessageType) Descriptor() protoreflect.MessageDescriptor {
-	return t.MessageDescriptor
-}
-
-type reflectList struct{ v reflect.Value }
-
-func (ls reflectList) Len() int {
-	if !ls.IsValid() {
-		return 0
-	}
-	return ls.v.Len()
-}
-func (ls reflectList) Get(i int) protoreflect.Value {
-	return reflectValueOf(ls.v.Index(i).Interface())
-}
-func (ls reflectList) Set(int, protoreflect.Value) {
-	panic("invalid mutation of read-only list")
-}
-func (ls reflectList) Append(protoreflect.Value) {
-	panic("invalid mutation of read-only list")
-}
-func (ls reflectList) AppendMutable() protoreflect.Value {
-	panic("invalid mutation of read-only list")
-}
-func (ls reflectList) Truncate(int) {
-	panic("invalid mutation of read-only list")
-}
-func (ls reflectList) NewElement() protoreflect.Value {
-	panic("not implemented")
-}
-func (ls reflectList) IsValid() bool {
-	return ls.v.IsValid()
-}
-
-type reflectMap struct{ v reflect.Value }
-
-func (ms reflectMap) Len() int {
-	if !ms.IsValid() {
-		return 0
-	}
-	return ms.v.Len()
-}
-func (ms reflectMap) Range(f func(protoreflect.MapKey, protoreflect.Value) bool) {
-	if !ms.IsValid() {
-		return
-	}
-	ks := ms.v.MapKeys()
-	for _, k := range ks {
-		pk := reflectValueOf(k.Interface()).MapKey()
-		pv := reflectValueOf(ms.v.MapIndex(k).Interface())
-		if !f(pk, pv) {
-			return
-		}
-	}
-}
-func (ms reflectMap) Has(k protoreflect.MapKey) bool {
-	if !ms.IsValid() {
-		return false
-	}
-	return ms.v.MapIndex(reflect.ValueOf(k.Interface())).IsValid()
-}
-func (ms reflectMap) Clear(protoreflect.MapKey) {
-	panic("invalid mutation of read-only list")
-}
-func (ms reflectMap) Get(k protoreflect.MapKey) protoreflect.Value {
-	if !ms.IsValid() {
-		return protoreflect.Value{}
-	}
-	v := ms.v.MapIndex(reflect.ValueOf(k.Interface()))
-	if !v.IsValid() {
-		return protoreflect.Value{}
-	}
-	return reflectValueOf(v.Interface())
-}
-func (ms reflectMap) Set(protoreflect.MapKey, protoreflect.Value) {
-	panic("invalid mutation of read-only list")
-}
-func (ms reflectMap) Mutable(k protoreflect.MapKey) protoreflect.Value {
-	panic("invalid mutation of read-only list")
-}
-func (ms reflectMap) NewValue() protoreflect.Value {
-	panic("not implemented")
-}
-func (ms reflectMap) IsValid() bool {
-	return ms.v.IsValid()
-}
diff --git a/testing/protocmp/reflect_test.go b/testing/protocmp/reflect_test.go
deleted file mode 100644
index 07489e9..0000000
--- a/testing/protocmp/reflect_test.go
+++ /dev/null
@@ -1,159 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protocmp
-
-import (
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-
-	"google.golang.org/protobuf/proto"
-
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-	textpb "google.golang.org/protobuf/internal/testprotos/textpb2"
-	anypb "google.golang.org/protobuf/types/known/anypb"
-	wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
-)
-
-func TestReflect(t *testing.T) {
-	optMsg := &testpb.TestAllTypes{
-		OptionalInt32:         proto.Int32(-32),
-		OptionalInt64:         proto.Int64(-64),
-		OptionalUint32:        proto.Uint32(32),
-		OptionalUint64:        proto.Uint64(64),
-		OptionalFloat:         proto.Float32(32.32),
-		OptionalDouble:        proto.Float64(64.64),
-		OptionalBool:          proto.Bool(true),
-		OptionalString:        proto.String("string"),
-		OptionalBytes:         []byte("bytes"),
-		OptionalNestedMessage: &testpb.TestAllTypes_NestedMessage{A: proto.Int32(-32)},
-		OptionalNestedEnum:    testpb.TestAllTypes_NEG.Enum(),
-	}
-	repMsg := &testpb.TestAllTypes{
-		RepeatedInt32:         []int32{-32, +32},
-		RepeatedInt64:         []int64{-64, +64},
-		RepeatedUint32:        []uint32{0, 32},
-		RepeatedUint64:        []uint64{0, 64},
-		RepeatedFloat:         []float32{-32.32, +32.32},
-		RepeatedDouble:        []float64{-64.64, +64.64},
-		RepeatedBool:          []bool{false, true},
-		RepeatedString:        []string{"hello", "goodbye"},
-		RepeatedBytes:         [][]byte{[]byte("hello"), []byte("goodbye")},
-		RepeatedNestedMessage: []*testpb.TestAllTypes_NestedMessage{{A: proto.Int32(-32)}, {A: proto.Int32(+32)}},
-		RepeatedNestedEnum:    []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_FOO, testpb.TestAllTypes_NEG},
-	}
-	mapMsg := &testpb.TestAllTypes{
-		MapInt32Int32:          map[int32]int32{-1: -32, +1: +32},
-		MapInt64Int64:          map[int64]int64{-1: -32, +1: +64},
-		MapUint32Uint32:        map[uint32]uint32{0: 0, 1: 32},
-		MapUint64Uint64:        map[uint64]uint64{0: 0, 1: 64},
-		MapInt32Float:          map[int32]float32{-1: -32.32, +1: +32.32},
-		MapInt32Double:         map[int32]float64{-1: -64.64, +1: +64.64},
-		MapBoolBool:            map[bool]bool{false: true, true: false},
-		MapStringString:        map[string]string{"k1": "v1", "k2": "v2"},
-		MapStringBytes:         map[string][]byte{"k1": []byte("v1"), "k2": []byte("v2")},
-		MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"k1": {A: proto.Int32(-32)}, "k2": {A: proto.Int32(+32)}},
-		MapStringNestedEnum:    map[string]testpb.TestAllTypes_NestedEnum{"k1": testpb.TestAllTypes_FOO, "k2": testpb.TestAllTypes_NEG},
-	}
-
-	tests := []proto.Message{
-		optMsg,
-		repMsg,
-		mapMsg,
-		&testpb.TestAllTypes{
-			OneofField: &testpb.TestAllTypes_OneofUint32{32},
-		},
-		&testpb.TestAllTypes{
-			OneofField: &testpb.TestAllTypes_OneofUint64{64},
-		},
-		&testpb.TestAllTypes{
-			OneofField: &testpb.TestAllTypes_OneofFloat{32.32},
-		},
-		&testpb.TestAllTypes{
-			OneofField: &testpb.TestAllTypes_OneofDouble{64.64},
-		},
-		&testpb.TestAllTypes{
-			OneofField: &testpb.TestAllTypes_OneofBool{true},
-		},
-		&testpb.TestAllTypes{
-			OneofField: &testpb.TestAllTypes_OneofString{"string"},
-		},
-		&testpb.TestAllTypes{
-			OneofField: &testpb.TestAllTypes_OneofBytes{[]byte("bytes")},
-		},
-		&testpb.TestAllTypes{
-			OneofField: &testpb.TestAllTypes_OneofNestedMessage{&testpb.TestAllTypes_NestedMessage{A: proto.Int32(-32)}},
-		},
-		&testpb.TestAllTypes{
-			OneofField: &testpb.TestAllTypes_OneofEnum{testpb.TestAllTypes_NEG},
-		},
-		func() proto.Message {
-			m := new(testpb.TestAllExtensions)
-			proto.SetExtension(m, testpb.E_OptionalInt32, int32(-32))
-			proto.SetExtension(m, testpb.E_OptionalInt64, int64(-64))
-			proto.SetExtension(m, testpb.E_OptionalUint32, uint32(32))
-			proto.SetExtension(m, testpb.E_OptionalUint64, uint64(64))
-			proto.SetExtension(m, testpb.E_OptionalFloat, float32(32.32))
-			proto.SetExtension(m, testpb.E_OptionalDouble, float64(64.64))
-			proto.SetExtension(m, testpb.E_OptionalBool, bool(true))
-			proto.SetExtension(m, testpb.E_OptionalString, string("string"))
-			proto.SetExtension(m, testpb.E_OptionalBytes, []byte("bytes"))
-			proto.SetExtension(m, testpb.E_OptionalNestedMessage, &testpb.TestAllExtensions_NestedMessage{A: proto.Int32(-32)})
-			proto.SetExtension(m, testpb.E_OptionalNestedEnum, testpb.TestAllTypes_NEG)
-			return m
-		}(),
-		func() proto.Message {
-			m := new(testpb.TestAllExtensions)
-			proto.SetExtension(m, testpb.E_RepeatedInt32, []int32{-32, +32})
-			proto.SetExtension(m, testpb.E_RepeatedInt64, []int64{-64, +64})
-			proto.SetExtension(m, testpb.E_RepeatedUint32, []uint32{0, 32})
-			proto.SetExtension(m, testpb.E_RepeatedUint64, []uint64{0, 64})
-			proto.SetExtension(m, testpb.E_RepeatedFloat, []float32{-32.32, +32.32})
-			proto.SetExtension(m, testpb.E_RepeatedDouble, []float64{-64.64, +64.64})
-			proto.SetExtension(m, testpb.E_RepeatedBool, []bool{false, true})
-			proto.SetExtension(m, testpb.E_RepeatedString, []string{"hello", "goodbye"})
-			proto.SetExtension(m, testpb.E_RepeatedBytes, [][]byte{[]byte("hello"), []byte("goodbye")})
-			proto.SetExtension(m, testpb.E_RepeatedNestedMessage, []*testpb.TestAllExtensions_NestedMessage{{A: proto.Int32(-32)}, {A: proto.Int32(+32)}})
-			proto.SetExtension(m, testpb.E_RepeatedNestedEnum, []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_FOO, testpb.TestAllTypes_NEG})
-			return m
-		}(),
-		&textpb.KnownTypes{
-			OptBool:   &wrapperspb.BoolValue{Value: true},
-			OptInt32:  &wrapperspb.Int32Value{Value: -32},
-			OptInt64:  &wrapperspb.Int64Value{Value: -64},
-			OptUint32: &wrapperspb.UInt32Value{Value: +32},
-			OptUint64: &wrapperspb.UInt64Value{Value: +64},
-			OptFloat:  &wrapperspb.FloatValue{Value: 32.32},
-			OptDouble: &wrapperspb.DoubleValue{Value: 64.64},
-			OptString: &wrapperspb.StringValue{Value: "string"},
-			OptBytes:  &wrapperspb.BytesValue{Value: []byte("bytes")},
-		},
-		&textpb.KnownTypes{
-			OptAny: &anypb.Any{
-				TypeUrl: "google.golang.org/goproto.proto.test.TestAllTypes",
-				Value: func() []byte {
-					b1, _ := proto.MarshalOptions{Deterministic: true}.Marshal(optMsg)
-					b2, _ := proto.MarshalOptions{Deterministic: true}.Marshal(repMsg)
-					b3, _ := proto.MarshalOptions{Deterministic: true}.Marshal(mapMsg)
-					return append(append(append([]byte(nil), b1...), b2...), b3...)
-				}(),
-			},
-		},
-		&textpb.KnownTypes{
-			OptAny: &anypb.Any{
-				TypeUrl: "unknown_type",
-				Value:   []byte("invalid_value"),
-			},
-		},
-	}
-
-	for _, src := range tests {
-		dst := src.ProtoReflect().Type().New().Interface()
-		proto.Merge(dst, transformMessage(src.ProtoReflect()))
-		if diff := cmp.Diff(src, dst, Transform()); diff != "" {
-			t.Errorf("Merge mismatch (-want +got):\n%s", diff)
-		}
-	}
-}
diff --git a/testing/protocmp/util.go b/testing/protocmp/util.go
deleted file mode 100644
index 79f3072..0000000
--- a/testing/protocmp/util.go
+++ /dev/null
@@ -1,684 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protocmp
-
-import (
-	"bytes"
-	"fmt"
-	"math"
-	"reflect"
-	"strings"
-
-	"github.com/google/go-cmp/cmp"
-	"github.com/google/go-cmp/cmp/cmpopts"
-
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoreflect"
-)
-
-var (
-	enumReflectType    = reflect.TypeOf(Enum{})
-	messageReflectType = reflect.TypeOf(Message{})
-)
-
-// FilterEnum filters opt to only be applicable on standalone Enums,
-// singular fields of enums, list fields of enums, or map fields of enum values,
-// where the enum is the same type as the specified enum.
-//
-// The Go type of the last path step may be an:
-//	• Enum for singular fields, elements of a repeated field,
-//	values of a map field, or standalone Enums
-//	• []Enum for list fields
-//	• map[K]Enum for map fields
-//	• interface{} for a Message map entry value
-//
-// This must be used in conjunction with Transform.
-func FilterEnum(enum protoreflect.Enum, opt cmp.Option) cmp.Option {
-	return FilterDescriptor(enum.Descriptor(), opt)
-}
-
-// FilterMessage filters opt to only be applicable on standalone Messages,
-// singular fields of messages, list fields of messages, or map fields of
-// message values, where the message is the same type as the specified message.
-//
-// The Go type of the last path step may be an:
-//	• Message for singular fields, elements of a repeated field,
-//	values of a map field, or standalone Messages
-//	• []Message for list fields
-//	• map[K]Message for map fields
-//	• interface{} for a Message map entry value
-//
-// This must be used in conjunction with Transform.
-func FilterMessage(message proto.Message, opt cmp.Option) cmp.Option {
-	return FilterDescriptor(message.ProtoReflect().Descriptor(), opt)
-}
-
-// FilterField filters opt to only be applicable on the specified field
-// in the message. It panics if a field of the given name does not exist.
-//
-// The Go type of the last path step may be an:
-//	• T for singular fields
-//	• []T for list fields
-//	• map[K]T for map fields
-//	• interface{} for a Message map entry value
-//
-// This must be used in conjunction with Transform.
-func FilterField(message proto.Message, name protoreflect.Name, opt cmp.Option) cmp.Option {
-	md := message.ProtoReflect().Descriptor()
-	return FilterDescriptor(mustFindFieldDescriptor(md, name), opt)
-}
-
-// FilterOneof filters opt to only be applicable on all fields within the
-// specified oneof in the message. It panics if a oneof of the given name
-// does not exist.
-//
-// The Go type of the last path step may be an:
-//	• T for singular fields
-//	• []T for list fields
-//	• map[K]T for map fields
-//	• interface{} for a Message map entry value
-//
-// This must be used in conjunction with Transform.
-func FilterOneof(message proto.Message, name protoreflect.Name, opt cmp.Option) cmp.Option {
-	md := message.ProtoReflect().Descriptor()
-	return FilterDescriptor(mustFindOneofDescriptor(md, name), opt)
-}
-
-// FilterDescriptor ignores the specified descriptor.
-//
-// The following descriptor types may be specified:
-//	• protoreflect.EnumDescriptor
-//	• protoreflect.MessageDescriptor
-//	• protoreflect.FieldDescriptor
-//	• protoreflect.OneofDescriptor
-//
-// For the behavior of each, see the corresponding filter function.
-// Since this filter accepts a protoreflect.FieldDescriptor, it can be used
-// to also filter for extension fields as a protoreflect.ExtensionDescriptor
-// is just an alias to protoreflect.FieldDescriptor.
-//
-// This must be used in conjunction with Transform.
-func FilterDescriptor(desc protoreflect.Descriptor, opt cmp.Option) cmp.Option {
-	f := newNameFilters(desc)
-	return cmp.FilterPath(f.Filter, opt)
-}
-
-// IgnoreEnums ignores all enums of the specified types.
-// It is equivalent to FilterEnum(enum, cmp.Ignore()) for each enum.
-//
-// This must be used in conjunction with Transform.
-func IgnoreEnums(enums ...protoreflect.Enum) cmp.Option {
-	var ds []protoreflect.Descriptor
-	for _, e := range enums {
-		ds = append(ds, e.Descriptor())
-	}
-	return IgnoreDescriptors(ds...)
-}
-
-// IgnoreMessages ignores all messages of the specified types.
-// It is equivalent to FilterMessage(message, cmp.Ignore()) for each message.
-//
-// This must be used in conjunction with Transform.
-func IgnoreMessages(messages ...proto.Message) cmp.Option {
-	var ds []protoreflect.Descriptor
-	for _, m := range messages {
-		ds = append(ds, m.ProtoReflect().Descriptor())
-	}
-	return IgnoreDescriptors(ds...)
-}
-
-// IgnoreFields ignores the specified fields in the specified message.
-// It is equivalent to FilterField(message, name, cmp.Ignore()) for each field
-// in the message.
-//
-// This must be used in conjunction with Transform.
-func IgnoreFields(message proto.Message, names ...protoreflect.Name) cmp.Option {
-	var ds []protoreflect.Descriptor
-	md := message.ProtoReflect().Descriptor()
-	for _, s := range names {
-		ds = append(ds, mustFindFieldDescriptor(md, s))
-	}
-	return IgnoreDescriptors(ds...)
-}
-
-// IgnoreOneofs ignores fields of the specified oneofs in the specified message.
-// It is equivalent to FilterOneof(message, name, cmp.Ignore()) for each oneof
-// in the message.
-//
-// This must be used in conjunction with Transform.
-func IgnoreOneofs(message proto.Message, names ...protoreflect.Name) cmp.Option {
-	var ds []protoreflect.Descriptor
-	md := message.ProtoReflect().Descriptor()
-	for _, s := range names {
-		ds = append(ds, mustFindOneofDescriptor(md, s))
-	}
-	return IgnoreDescriptors(ds...)
-}
-
-// IgnoreDescriptors ignores the specified set of descriptors.
-// It is equivalent to FilterDescriptor(desc, cmp.Ignore()) for each descriptor.
-//
-// This must be used in conjunction with Transform.
-func IgnoreDescriptors(descs ...protoreflect.Descriptor) cmp.Option {
-	return cmp.FilterPath(newNameFilters(descs...).Filter, cmp.Ignore())
-}
-
-func mustFindFieldDescriptor(md protoreflect.MessageDescriptor, s protoreflect.Name) protoreflect.FieldDescriptor {
-	d := findDescriptor(md, s)
-	if fd, ok := d.(protoreflect.FieldDescriptor); ok && fd.TextName() == string(s) {
-		return fd
-	}
-
-	var suggestion string
-	switch d := d.(type) {
-	case protoreflect.FieldDescriptor:
-		suggestion = fmt.Sprintf("; consider specifying field %q instead", d.TextName())
-	case protoreflect.OneofDescriptor:
-		suggestion = fmt.Sprintf("; consider specifying oneof %q with IgnoreOneofs instead", d.Name())
-	}
-	panic(fmt.Sprintf("message %q has no field %q%s", md.FullName(), s, suggestion))
-}
-
-func mustFindOneofDescriptor(md protoreflect.MessageDescriptor, s protoreflect.Name) protoreflect.OneofDescriptor {
-	d := findDescriptor(md, s)
-	if od, ok := d.(protoreflect.OneofDescriptor); ok && d.Name() == s {
-		return od
-	}
-
-	var suggestion string
-	switch d := d.(type) {
-	case protoreflect.OneofDescriptor:
-		suggestion = fmt.Sprintf("; consider specifying oneof %q instead", d.Name())
-	case protoreflect.FieldDescriptor:
-		suggestion = fmt.Sprintf("; consider specifying field %q with IgnoreFields instead", d.TextName())
-	}
-	panic(fmt.Sprintf("message %q has no oneof %q%s", md.FullName(), s, suggestion))
-}
-
-func findDescriptor(md protoreflect.MessageDescriptor, s protoreflect.Name) protoreflect.Descriptor {
-	// Exact match.
-	if fd := md.Fields().ByTextName(string(s)); fd != nil {
-		return fd
-	}
-	if od := md.Oneofs().ByName(s); od != nil && !od.IsSynthetic() {
-		return od
-	}
-
-	// Best-effort match.
-	//
-	// It's a common user mistake to use the CamelCased field name as it appears
-	// in the generated Go struct. Instead of complaining that it doesn't exist,
-	// suggest the real protobuf name that the user may have desired.
-	normalize := func(s protoreflect.Name) string {
-		return strings.Replace(strings.ToLower(string(s)), "_", "", -1)
-	}
-	for i := 0; i < md.Fields().Len(); i++ {
-		if fd := md.Fields().Get(i); normalize(fd.Name()) == normalize(s) {
-			return fd
-		}
-	}
-	for i := 0; i < md.Oneofs().Len(); i++ {
-		if od := md.Oneofs().Get(i); normalize(od.Name()) == normalize(s) {
-			return od
-		}
-	}
-	return nil
-}
-
-type nameFilters struct {
-	names map[protoreflect.FullName]bool
-}
-
-func newNameFilters(descs ...protoreflect.Descriptor) *nameFilters {
-	f := &nameFilters{names: make(map[protoreflect.FullName]bool)}
-	for _, d := range descs {
-		switch d := d.(type) {
-		case protoreflect.EnumDescriptor:
-			f.names[d.FullName()] = true
-		case protoreflect.MessageDescriptor:
-			f.names[d.FullName()] = true
-		case protoreflect.FieldDescriptor:
-			f.names[d.FullName()] = true
-		case protoreflect.OneofDescriptor:
-			for i := 0; i < d.Fields().Len(); i++ {
-				f.names[d.Fields().Get(i).FullName()] = true
-			}
-		default:
-			panic("invalid descriptor type")
-		}
-	}
-	return f
-}
-
-func (f *nameFilters) Filter(p cmp.Path) bool {
-	vx, vy := p.Last().Values()
-	return (f.filterValue(vx) && f.filterValue(vy)) || f.filterFields(p)
-}
-
-func (f *nameFilters) filterFields(p cmp.Path) bool {
-	// Trim off trailing type-assertions so that the filter can match on the
-	// concrete value held within an interface value.
-	if _, ok := p.Last().(cmp.TypeAssertion); ok {
-		p = p[:len(p)-1]
-	}
-
-	// Filter for Message maps.
-	mi, ok := p.Index(-1).(cmp.MapIndex)
-	if !ok {
-		return false
-	}
-	ps := p.Index(-2)
-	if ps.Type() != messageReflectType {
-		return false
-	}
-
-	// Check field name.
-	vx, vy := ps.Values()
-	mx := vx.Interface().(Message)
-	my := vy.Interface().(Message)
-	k := mi.Key().String()
-	if f.filterFieldName(mx, k) && f.filterFieldName(my, k) {
-		return true
-	}
-
-	// Check field value.
-	vx, vy = mi.Values()
-	if f.filterFieldValue(vx) && f.filterFieldValue(vy) {
-		return true
-	}
-
-	return false
-}
-
-func (f *nameFilters) filterFieldName(m Message, k string) bool {
-	if _, ok := m[k]; !ok {
-		return true // treat missing fields as already filtered
-	}
-	var fd protoreflect.FieldDescriptor
-	switch mm := m[messageTypeKey].(messageMeta); {
-	case protoreflect.Name(k).IsValid():
-		fd = mm.md.Fields().ByTextName(k)
-	default:
-		fd = mm.xds[k]
-	}
-	if fd != nil {
-		return f.names[fd.FullName()]
-	}
-	return false
-}
-
-func (f *nameFilters) filterFieldValue(v reflect.Value) bool {
-	if !v.IsValid() {
-		return true // implies missing slice element or map entry
-	}
-	v = v.Elem() // map entries are always populated values
-	switch t := v.Type(); {
-	case t == enumReflectType || t == messageReflectType:
-		// Check for singular message or enum field.
-		return f.filterValue(v)
-	case t.Kind() == reflect.Slice && (t.Elem() == enumReflectType || t.Elem() == messageReflectType):
-		// Check for list field of enum or message type.
-		return f.filterValue(v.Index(0))
-	case t.Kind() == reflect.Map && (t.Elem() == enumReflectType || t.Elem() == messageReflectType):
-		// Check for map field of enum or message type.
-		return f.filterValue(v.MapIndex(v.MapKeys()[0]))
-	}
-	return false
-}
-
-func (f *nameFilters) filterValue(v reflect.Value) bool {
-	if !v.IsValid() {
-		return true // implies missing slice element or map entry
-	}
-	if !v.CanInterface() {
-		return false // implies unexported struct field
-	}
-	switch v := v.Interface().(type) {
-	case Enum:
-		return v.Descriptor() != nil && f.names[v.Descriptor().FullName()]
-	case Message:
-		return v.Descriptor() != nil && f.names[v.Descriptor().FullName()]
-	}
-	return false
-}
-
-// IgnoreDefaultScalars ignores singular scalars that are unpopulated or
-// explicitly set to the default value.
-// This option does not effect elements in a list or entries in a map.
-//
-// This must be used in conjunction with Transform.
-func IgnoreDefaultScalars() cmp.Option {
-	return cmp.FilterPath(func(p cmp.Path) bool {
-		// Filter for Message maps.
-		mi, ok := p.Index(-1).(cmp.MapIndex)
-		if !ok {
-			return false
-		}
-		ps := p.Index(-2)
-		if ps.Type() != messageReflectType {
-			return false
-		}
-
-		// Check whether both fields are default or unpopulated scalars.
-		vx, vy := ps.Values()
-		mx := vx.Interface().(Message)
-		my := vy.Interface().(Message)
-		k := mi.Key().String()
-		return isDefaultScalar(mx, k) && isDefaultScalar(my, k)
-	}, cmp.Ignore())
-}
-
-func isDefaultScalar(m Message, k string) bool {
-	if _, ok := m[k]; !ok {
-		return true
-	}
-
-	var fd protoreflect.FieldDescriptor
-	switch mm := m[messageTypeKey].(messageMeta); {
-	case protoreflect.Name(k).IsValid():
-		fd = mm.md.Fields().ByTextName(k)
-	default:
-		fd = mm.xds[k]
-	}
-	if fd == nil || !fd.Default().IsValid() {
-		return false
-	}
-	switch fd.Kind() {
-	case protoreflect.BytesKind:
-		v, ok := m[k].([]byte)
-		return ok && bytes.Equal(fd.Default().Bytes(), v)
-	case protoreflect.FloatKind:
-		v, ok := m[k].(float32)
-		return ok && equalFloat64(fd.Default().Float(), float64(v))
-	case protoreflect.DoubleKind:
-		v, ok := m[k].(float64)
-		return ok && equalFloat64(fd.Default().Float(), float64(v))
-	case protoreflect.EnumKind:
-		v, ok := m[k].(Enum)
-		return ok && fd.Default().Enum() == v.Number()
-	default:
-		return reflect.DeepEqual(fd.Default().Interface(), m[k])
-	}
-}
-
-func equalFloat64(x, y float64) bool {
-	return x == y || (math.IsNaN(x) && math.IsNaN(y))
-}
-
-// IgnoreEmptyMessages ignores messages that are empty or unpopulated.
-// It applies to standalone Messages, singular message fields,
-// list fields of messages, and map fields of message values.
-//
-// This must be used in conjunction with Transform.
-func IgnoreEmptyMessages() cmp.Option {
-	return cmp.FilterPath(func(p cmp.Path) bool {
-		vx, vy := p.Last().Values()
-		return (isEmptyMessage(vx) && isEmptyMessage(vy)) || isEmptyMessageFields(p)
-	}, cmp.Ignore())
-}
-
-func isEmptyMessageFields(p cmp.Path) bool {
-	// Filter for Message maps.
-	mi, ok := p.Index(-1).(cmp.MapIndex)
-	if !ok {
-		return false
-	}
-	ps := p.Index(-2)
-	if ps.Type() != messageReflectType {
-		return false
-	}
-
-	// Check field value.
-	vx, vy := mi.Values()
-	if isEmptyMessageFieldValue(vx) && isEmptyMessageFieldValue(vy) {
-		return true
-	}
-
-	return false
-}
-
-func isEmptyMessageFieldValue(v reflect.Value) bool {
-	if !v.IsValid() {
-		return true // implies missing slice element or map entry
-	}
-	v = v.Elem() // map entries are always populated values
-	switch t := v.Type(); {
-	case t == messageReflectType:
-		// Check singular field for empty message.
-		if !isEmptyMessage(v) {
-			return false
-		}
-	case t.Kind() == reflect.Slice && t.Elem() == messageReflectType:
-		// Check list field for all empty message elements.
-		for i := 0; i < v.Len(); i++ {
-			if !isEmptyMessage(v.Index(i)) {
-				return false
-			}
-		}
-	case t.Kind() == reflect.Map && t.Elem() == messageReflectType:
-		// Check map field for all empty message values.
-		for _, k := range v.MapKeys() {
-			if !isEmptyMessage(v.MapIndex(k)) {
-				return false
-			}
-		}
-	default:
-		return false
-	}
-	return true
-}
-
-func isEmptyMessage(v reflect.Value) bool {
-	if !v.IsValid() {
-		return true // implies missing slice element or map entry
-	}
-	if !v.CanInterface() {
-		return false // implies unexported struct field
-	}
-	if m, ok := v.Interface().(Message); ok {
-		for k := range m {
-			if k != messageTypeKey && k != messageInvalidKey {
-				return false
-			}
-		}
-		return true
-	}
-	return false
-}
-
-// IgnoreUnknown ignores unknown fields in all messages.
-//
-// This must be used in conjunction with Transform.
-func IgnoreUnknown() cmp.Option {
-	return cmp.FilterPath(func(p cmp.Path) bool {
-		// Filter for Message maps.
-		mi, ok := p.Index(-1).(cmp.MapIndex)
-		if !ok {
-			return false
-		}
-		ps := p.Index(-2)
-		if ps.Type() != messageReflectType {
-			return false
-		}
-
-		// Filter for unknown fields (which always have a numeric map key).
-		return strings.Trim(mi.Key().String(), "0123456789") == ""
-	}, cmp.Ignore())
-}
-
-// SortRepeated sorts repeated fields of the specified element type.
-// The less function must be of the form "func(T, T) bool" where T is the
-// Go element type for the repeated field kind.
-//
-// The element type T can be one of the following:
-//	• Go type for a protobuf scalar kind except for an enum
-//	  (i.e., bool, int32, int64, uint32, uint64, float32, float64, string, and []byte)
-//	• E where E is a concrete enum type that implements protoreflect.Enum
-//	• M where M is a concrete message type that implement proto.Message
-//
-// This option only applies to repeated fields within a protobuf message.
-// It does not operate on higher-order Go types that seem like a repeated field.
-// For example, a []T outside the context of a protobuf message will not be
-// handled by this option. To sort Go slices that are not repeated fields,
-// consider using "github.com/google/go-cmp/cmp/cmpopts".SortSlices instead.
-//
-// This must be used in conjunction with Transform.
-func SortRepeated(lessFunc interface{}) cmp.Option {
-	t, ok := checkTTBFunc(lessFunc)
-	if !ok {
-		panic(fmt.Sprintf("invalid less function: %T", lessFunc))
-	}
-
-	var opt cmp.Option
-	var sliceType reflect.Type
-	switch vf := reflect.ValueOf(lessFunc); {
-	case t.Implements(enumV2Type):
-		et := reflect.Zero(t).Interface().(protoreflect.Enum).Type()
-		lessFunc = func(x, y Enum) bool {
-			vx := reflect.ValueOf(et.New(x.Number()))
-			vy := reflect.ValueOf(et.New(y.Number()))
-			return vf.Call([]reflect.Value{vx, vy})[0].Bool()
-		}
-		opt = FilterDescriptor(et.Descriptor(), cmpopts.SortSlices(lessFunc))
-		sliceType = reflect.SliceOf(enumReflectType)
-	case t.Implements(messageV2Type):
-		mt := reflect.Zero(t).Interface().(protoreflect.ProtoMessage).ProtoReflect().Type()
-		lessFunc = func(x, y Message) bool {
-			mx := mt.New().Interface()
-			my := mt.New().Interface()
-			proto.Merge(mx, x)
-			proto.Merge(my, y)
-			vx := reflect.ValueOf(mx)
-			vy := reflect.ValueOf(my)
-			return vf.Call([]reflect.Value{vx, vy})[0].Bool()
-		}
-		opt = FilterDescriptor(mt.Descriptor(), cmpopts.SortSlices(lessFunc))
-		sliceType = reflect.SliceOf(messageReflectType)
-	default:
-		switch t {
-		case reflect.TypeOf(bool(false)):
-		case reflect.TypeOf(int32(0)):
-		case reflect.TypeOf(int64(0)):
-		case reflect.TypeOf(uint32(0)):
-		case reflect.TypeOf(uint64(0)):
-		case reflect.TypeOf(float32(0)):
-		case reflect.TypeOf(float64(0)):
-		case reflect.TypeOf(string("")):
-		case reflect.TypeOf([]byte(nil)):
-		default:
-			panic(fmt.Sprintf("invalid element type: %v", t))
-		}
-		opt = cmpopts.SortSlices(lessFunc)
-		sliceType = reflect.SliceOf(t)
-	}
-
-	return cmp.FilterPath(func(p cmp.Path) bool {
-		// Filter to only apply to repeated fields within a message.
-		if t := p.Index(-1).Type(); t == nil || t != sliceType {
-			return false
-		}
-		if t := p.Index(-2).Type(); t == nil || t.Kind() != reflect.Interface {
-			return false
-		}
-		if t := p.Index(-3).Type(); t == nil || t != messageReflectType {
-			return false
-		}
-		return true
-	}, opt)
-}
-
-func checkTTBFunc(lessFunc interface{}) (reflect.Type, bool) {
-	switch t := reflect.TypeOf(lessFunc); {
-	case t == nil:
-		return nil, false
-	case t.NumIn() != 2 || t.In(0) != t.In(1) || t.IsVariadic():
-		return nil, false
-	case t.NumOut() != 1 || t.Out(0) != reflect.TypeOf(false):
-		return nil, false
-	default:
-		return t.In(0), true
-	}
-}
-
-// SortRepeatedFields sorts the specified repeated fields.
-// Sorting a repeated field is useful for treating the list as a multiset
-// (i.e., a set where each value can appear multiple times).
-// It panics if the field does not exist or is not a repeated field.
-//
-// The sort ordering is as follows:
-//	• Booleans are sorted where false is sorted before true.
-//	• Integers are sorted in ascending order.
-//	• Floating-point numbers are sorted in ascending order according to
-//	  the total ordering defined by IEEE-754 (section 5.10).
-//	• Strings and bytes are sorted lexicographically in ascending order.
-//	• Enums are sorted in ascending order based on its numeric value.
-//	• Messages are sorted according to some arbitrary ordering
-//	  which is undefined and may change in future implementations.
-//
-// The ordering chosen for repeated messages is unlikely to be aesthetically
-// preferred by humans. Consider using a custom sort function:
-//
-//	FilterField(m, "foo_field", SortRepeated(func(x, y *foopb.MyMessage) bool {
-//	    ... // user-provided definition for less
-//	}))
-//
-// This must be used in conjunction with Transform.
-func SortRepeatedFields(message proto.Message, names ...protoreflect.Name) cmp.Option {
-	var opts cmp.Options
-	md := message.ProtoReflect().Descriptor()
-	for _, name := range names {
-		fd := mustFindFieldDescriptor(md, name)
-		if !fd.IsList() {
-			panic(fmt.Sprintf("message field %q is not repeated", fd.FullName()))
-		}
-
-		var lessFunc interface{}
-		switch fd.Kind() {
-		case protoreflect.BoolKind:
-			lessFunc = func(x, y bool) bool { return !x && y }
-		case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:
-			lessFunc = func(x, y int32) bool { return x < y }
-		case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:
-			lessFunc = func(x, y int64) bool { return x < y }
-		case protoreflect.Uint32Kind, protoreflect.Fixed32Kind:
-			lessFunc = func(x, y uint32) bool { return x < y }
-		case protoreflect.Uint64Kind, protoreflect.Fixed64Kind:
-			lessFunc = func(x, y uint64) bool { return x < y }
-		case protoreflect.FloatKind:
-			lessFunc = lessF32
-		case protoreflect.DoubleKind:
-			lessFunc = lessF64
-		case protoreflect.StringKind:
-			lessFunc = func(x, y string) bool { return x < y }
-		case protoreflect.BytesKind:
-			lessFunc = func(x, y []byte) bool { return bytes.Compare(x, y) < 0 }
-		case protoreflect.EnumKind:
-			lessFunc = func(x, y Enum) bool { return x.Number() < y.Number() }
-		case protoreflect.MessageKind, protoreflect.GroupKind:
-			lessFunc = func(x, y Message) bool { return x.String() < y.String() }
-		default:
-			panic(fmt.Sprintf("invalid kind: %v", fd.Kind()))
-		}
-		opts = append(opts, FilterDescriptor(fd, cmpopts.SortSlices(lessFunc)))
-	}
-	return opts
-}
-
-func lessF32(x, y float32) bool {
-	// Bit-wise implementation of IEEE-754, section 5.10.
-	xi := int32(math.Float32bits(x))
-	yi := int32(math.Float32bits(y))
-	xi ^= int32(uint32(xi>>31) >> 1)
-	yi ^= int32(uint32(yi>>31) >> 1)
-	return xi < yi
-}
-func lessF64(x, y float64) bool {
-	// Bit-wise implementation of IEEE-754, section 5.10.
-	xi := int64(math.Float64bits(x))
-	yi := int64(math.Float64bits(y))
-	xi ^= int64(uint64(xi>>63) >> 1)
-	yi ^= int64(uint64(yi>>63) >> 1)
-	return xi < yi
-}
diff --git a/testing/protocmp/util_test.go b/testing/protocmp/util_test.go
deleted file mode 100644
index ed386e4..0000000
--- a/testing/protocmp/util_test.go
+++ /dev/null
@@ -1,1399 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protocmp
-
-import (
-	"math"
-	"math/rand"
-	"sort"
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/testing/protopack"
-	"google.golang.org/protobuf/types/dynamicpb"
-
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-)
-
-func TestEqual(t *testing.T) {
-	type test struct {
-		x, y interface{}
-		opts cmp.Options
-		want bool
-	}
-	var tests []test
-
-	allTypesDesc := (*testpb.TestAllTypes)(nil).ProtoReflect().Descriptor()
-
-	// Test nil and empty messages of differing types.
-	tests = append(tests, []test{{
-		x:    (*testpb.TestAllTypes)(nil),
-		y:    (*testpb.TestAllTypes)(nil),
-		opts: cmp.Options{Transform()},
-		want: true,
-	}, {
-		x:    (*testpb.TestAllTypes)(nil),
-		y:    (*testpb.TestAllExtensions)(nil),
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x:    (*testpb.TestAllTypes)(nil),
-		y:    new(testpb.TestAllTypes),
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x:    (*testpb.TestAllTypes)(nil),
-		y:    dynamicpb.NewMessage(allTypesDesc),
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x:    (*testpb.TestAllTypes)(nil),
-		y:    new(testpb.TestAllTypes),
-		opts: cmp.Options{Transform(), IgnoreEmptyMessages()},
-		want: true,
-	}, {
-		x:    (*testpb.TestAllTypes)(nil),
-		y:    dynamicpb.NewMessage(allTypesDesc),
-		opts: cmp.Options{Transform(), IgnoreEmptyMessages()},
-		want: true,
-	}, {
-		x:    new(testpb.TestAllTypes),
-		y:    new(testpb.TestAllTypes),
-		opts: cmp.Options{Transform()},
-		want: true,
-	}, {
-		x:    new(testpb.TestAllTypes),
-		y:    dynamicpb.NewMessage(allTypesDesc),
-		opts: cmp.Options{Transform()},
-		want: true,
-	}, {
-		x:    new(testpb.TestAllTypes),
-		y:    new(testpb.TestAllExtensions),
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x:    struct{ I interface{} }{(*testpb.TestAllTypes)(nil)},
-		y:    struct{ I interface{} }{(*testpb.TestAllTypes)(nil)},
-		opts: cmp.Options{Transform()},
-		want: true,
-	}, {
-		x:    struct{ I interface{} }{(*testpb.TestAllTypes)(nil)},
-		y:    struct{ I interface{} }{new(testpb.TestAllTypes)},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x:    struct{ I interface{} }{(*testpb.TestAllTypes)(nil)},
-		y:    struct{ I interface{} }{dynamicpb.NewMessage(allTypesDesc)},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x:    struct{ I interface{} }{(*testpb.TestAllTypes)(nil)},
-		y:    struct{ I interface{} }{new(testpb.TestAllTypes)},
-		opts: cmp.Options{Transform(), IgnoreEmptyMessages()},
-		want: true,
-	}, {
-		x:    struct{ I interface{} }{(*testpb.TestAllTypes)(nil)},
-		y:    struct{ I interface{} }{dynamicpb.NewMessage(allTypesDesc)},
-		opts: cmp.Options{Transform(), IgnoreEmptyMessages()},
-		want: true,
-	}, {
-		x:    struct{ I interface{} }{new(testpb.TestAllTypes)},
-		y:    struct{ I interface{} }{new(testpb.TestAllTypes)},
-		opts: cmp.Options{Transform()},
-		want: true,
-	}, {
-		x:    struct{ I interface{} }{new(testpb.TestAllTypes)},
-		y:    struct{ I interface{} }{dynamicpb.NewMessage(allTypesDesc)},
-		opts: cmp.Options{Transform()},
-		want: true,
-	}, {
-		x:    struct{ M proto.Message }{(*testpb.TestAllTypes)(nil)},
-		y:    struct{ M proto.Message }{(*testpb.TestAllTypes)(nil)},
-		opts: cmp.Options{Transform()},
-		want: true,
-	}, {
-		x:    struct{ M proto.Message }{(*testpb.TestAllTypes)(nil)},
-		y:    struct{ M proto.Message }{new(testpb.TestAllTypes)},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x:    struct{ M proto.Message }{(*testpb.TestAllTypes)(nil)},
-		y:    struct{ M proto.Message }{dynamicpb.NewMessage(allTypesDesc)},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x:    struct{ M proto.Message }{(*testpb.TestAllTypes)(nil)},
-		y:    struct{ M proto.Message }{new(testpb.TestAllTypes)},
-		opts: cmp.Options{Transform(), IgnoreEmptyMessages()},
-		want: true,
-	}, {
-		x:    struct{ M proto.Message }{(*testpb.TestAllTypes)(nil)},
-		y:    struct{ M proto.Message }{dynamicpb.NewMessage(allTypesDesc)},
-		opts: cmp.Options{Transform(), IgnoreEmptyMessages()},
-		want: true,
-	}, {
-		x:    struct{ M proto.Message }{new(testpb.TestAllTypes)},
-		y:    struct{ M proto.Message }{new(testpb.TestAllTypes)},
-		opts: cmp.Options{Transform()},
-		want: true,
-	}, {
-		x:    struct{ M proto.Message }{new(testpb.TestAllTypes)},
-		y:    struct{ M proto.Message }{dynamicpb.NewMessage(allTypesDesc)},
-		opts: cmp.Options{Transform()},
-		want: true,
-	}}...)
-
-	// Test message values.
-	tests = append(tests, []test{{
-		x:    testpb.TestAllTypes{OptionalSint64: proto.Int64(1)},
-		y:    testpb.TestAllTypes{OptionalSint64: proto.Int64(1)},
-		opts: cmp.Options{Transform()},
-		want: true,
-	}, {
-		x:    testpb.TestAllTypes{OptionalSint64: proto.Int64(1)},
-		y:    testpb.TestAllTypes{OptionalSint64: proto.Int64(2)},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x:    struct{ M testpb.TestAllTypes }{M: testpb.TestAllTypes{OptionalSint64: proto.Int64(1)}},
-		y:    struct{ M testpb.TestAllTypes }{M: testpb.TestAllTypes{OptionalSint64: proto.Int64(1)}},
-		opts: cmp.Options{Transform()},
-		want: true,
-	}, {
-		x:    struct{ M testpb.TestAllTypes }{M: testpb.TestAllTypes{OptionalSint64: proto.Int64(1)}},
-		y:    struct{ M testpb.TestAllTypes }{M: testpb.TestAllTypes{OptionalSint64: proto.Int64(2)}},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x:    struct{ M []testpb.TestAllTypes }{M: []testpb.TestAllTypes{{OptionalSint64: proto.Int64(1)}}},
-		y:    struct{ M []testpb.TestAllTypes }{M: []testpb.TestAllTypes{{OptionalSint64: proto.Int64(1)}}},
-		opts: cmp.Options{Transform()},
-		want: true,
-	}, {
-		x:    struct{ M []testpb.TestAllTypes }{M: []testpb.TestAllTypes{{OptionalSint64: proto.Int64(1)}}},
-		y:    struct{ M []testpb.TestAllTypes }{M: []testpb.TestAllTypes{{OptionalSint64: proto.Int64(2)}}},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: struct {
-			M map[string]testpb.TestAllTypes
-		}{
-			M: map[string]testpb.TestAllTypes{"k": {OptionalSint64: proto.Int64(1)}},
-		},
-		y: struct {
-			M map[string]testpb.TestAllTypes
-		}{
-			M: map[string]testpb.TestAllTypes{"k": {OptionalSint64: proto.Int64(1)}},
-		},
-		opts: cmp.Options{Transform()},
-		want: true,
-	}, {
-		x: struct {
-			M map[string]testpb.TestAllTypes
-		}{
-			M: map[string]testpb.TestAllTypes{"k": {OptionalSint64: proto.Int64(1)}},
-		},
-		y: struct {
-			M map[string]testpb.TestAllTypes
-		}{
-			M: map[string]testpb.TestAllTypes{"k": {OptionalSint64: proto.Int64(2)}},
-		},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}}...)
-
-	// Test IgnoreUnknown.
-	raw := protopack.Message{
-		protopack.Tag{1, protopack.BytesType}, protopack.String("Hello, goodbye!"),
-	}.Marshal()
-	tests = append(tests, []test{{
-		x:    apply(&testpb.TestAllTypes{OptionalSint64: proto.Int64(5)}, setUnknown{raw}),
-		y:    &testpb.TestAllTypes{OptionalSint64: proto.Int64(5)},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x:    apply(&testpb.TestAllTypes{OptionalSint64: proto.Int64(5)}, setUnknown{raw}),
-		y:    &testpb.TestAllTypes{OptionalSint64: proto.Int64(5)},
-		opts: cmp.Options{Transform(), IgnoreUnknown()},
-		want: true,
-	}, {
-		x:    apply(&testpb.TestAllTypes{OptionalSint64: proto.Int64(5)}, setUnknown{raw}),
-		y:    &testpb.TestAllTypes{OptionalSint64: proto.Int64(6)},
-		opts: cmp.Options{Transform(), IgnoreUnknown()},
-		want: false,
-	}, {
-		x:    apply(&testpb.TestAllTypes{OptionalSint64: proto.Int64(5)}, setUnknown{raw}),
-		y:    apply(dynamicpb.NewMessage(allTypesDesc), setField{6, int64(5)}),
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x:    apply(&testpb.TestAllTypes{OptionalSint64: proto.Int64(5)}, setUnknown{raw}),
-		y:    apply(dynamicpb.NewMessage(allTypesDesc), setField{6, int64(5)}),
-		opts: cmp.Options{Transform(), IgnoreUnknown()},
-		want: true,
-	}}...)
-
-	// Test IgnoreDefaultScalars.
-	tests = append(tests, []test{{
-		x: &testpb.TestAllTypes{
-			DefaultInt32:  proto.Int32(81),
-			DefaultUint32: proto.Uint32(83),
-			DefaultFloat:  proto.Float32(91.5),
-			DefaultBool:   proto.Bool(true),
-			DefaultBytes:  []byte("world"),
-		},
-		y: &testpb.TestAllTypes{
-			DefaultInt64:       proto.Int64(82),
-			DefaultUint64:      proto.Uint64(84),
-			DefaultDouble:      proto.Float64(92e3),
-			DefaultString:      proto.String("hello"),
-			DefaultForeignEnum: testpb.ForeignEnum_FOREIGN_BAR.Enum(),
-		},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: &testpb.TestAllTypes{
-			DefaultInt32:  proto.Int32(81),
-			DefaultUint32: proto.Uint32(83),
-			DefaultFloat:  proto.Float32(91.5),
-			DefaultBool:   proto.Bool(true),
-			DefaultBytes:  []byte("world"),
-		},
-		y: &testpb.TestAllTypes{
-			DefaultInt64:       proto.Int64(82),
-			DefaultUint64:      proto.Uint64(84),
-			DefaultDouble:      proto.Float64(92e3),
-			DefaultString:      proto.String("hello"),
-			DefaultForeignEnum: testpb.ForeignEnum_FOREIGN_BAR.Enum(),
-		},
-		opts: cmp.Options{Transform(), IgnoreDefaultScalars()},
-		want: true,
-	}, {
-		x: &testpb.TestAllTypes{
-			OptionalInt32:  proto.Int32(81),
-			OptionalUint32: proto.Uint32(83),
-			OptionalFloat:  proto.Float32(91.5),
-			OptionalBool:   proto.Bool(true),
-			OptionalBytes:  []byte("world"),
-		},
-		y: &testpb.TestAllTypes{
-			OptionalInt64:       proto.Int64(82),
-			OptionalUint64:      proto.Uint64(84),
-			OptionalDouble:      proto.Float64(92e3),
-			OptionalString:      proto.String("hello"),
-			OptionalForeignEnum: testpb.ForeignEnum_FOREIGN_BAR.Enum(),
-		},
-		opts: cmp.Options{Transform(), IgnoreDefaultScalars()},
-		want: false,
-	}, {
-		x: &testpb.TestAllTypes{
-			OptionalInt32:  proto.Int32(0),
-			OptionalUint32: proto.Uint32(0),
-			OptionalFloat:  proto.Float32(0),
-			OptionalBool:   proto.Bool(false),
-			OptionalBytes:  []byte(""),
-		},
-		y: &testpb.TestAllTypes{
-			OptionalInt64:       proto.Int64(0),
-			OptionalUint64:      proto.Uint64(0),
-			OptionalDouble:      proto.Float64(0),
-			OptionalString:      proto.String(""),
-			OptionalForeignEnum: testpb.ForeignEnum_FOREIGN_FOO.Enum(),
-		},
-		opts: cmp.Options{Transform(), IgnoreDefaultScalars()},
-		want: true,
-	}, {
-		x: apply(new(testpb.TestAllExtensions),
-			setExtension{testpb.E_DefaultInt32, int32(81)},
-			setExtension{testpb.E_DefaultUint32, uint32(83)},
-			setExtension{testpb.E_DefaultFloat, float32(91.5)},
-			setExtension{testpb.E_DefaultBool, bool(true)},
-			setExtension{testpb.E_DefaultBytes, []byte("world")}),
-		y: apply(new(testpb.TestAllExtensions),
-			setExtension{testpb.E_DefaultInt64, int64(82)},
-			setExtension{testpb.E_DefaultUint64, uint64(84)},
-			setExtension{testpb.E_DefaultDouble, float64(92e3)},
-			setExtension{testpb.E_DefaultString, string("hello")}),
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: apply(new(testpb.TestAllExtensions),
-			setExtension{testpb.E_DefaultInt32, int32(81)},
-			setExtension{testpb.E_DefaultUint32, uint32(83)},
-			setExtension{testpb.E_DefaultFloat, float32(91.5)},
-			setExtension{testpb.E_DefaultBool, bool(true)},
-			setExtension{testpb.E_DefaultBytes, []byte("world")}),
-		y: apply(new(testpb.TestAllExtensions),
-			setExtension{testpb.E_DefaultInt64, int64(82)},
-			setExtension{testpb.E_DefaultUint64, uint64(84)},
-			setExtension{testpb.E_DefaultDouble, float64(92e3)},
-			setExtension{testpb.E_DefaultString, string("hello")}),
-		opts: cmp.Options{Transform(), IgnoreDefaultScalars()},
-		want: true,
-	}, {
-		x: apply(new(testpb.TestAllExtensions),
-			setExtension{testpb.E_OptionalInt32, int32(0)},
-			setExtension{testpb.E_OptionalUint32, uint32(0)},
-			setExtension{testpb.E_OptionalFloat, float32(0)},
-			setExtension{testpb.E_OptionalBool, bool(false)},
-			setExtension{testpb.E_OptionalBytes, []byte("")}),
-		y: apply(new(testpb.TestAllExtensions),
-			setExtension{testpb.E_OptionalInt64, int64(0)},
-			setExtension{testpb.E_OptionalUint64, uint64(0)},
-			setExtension{testpb.E_OptionalDouble, float64(0)},
-			setExtension{testpb.E_OptionalString, string("")}),
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: apply(new(testpb.TestAllExtensions),
-			setExtension{testpb.E_OptionalInt32, int32(0)},
-			setExtension{testpb.E_OptionalUint32, uint32(0)},
-			setExtension{testpb.E_OptionalFloat, float32(0)},
-			setExtension{testpb.E_OptionalBool, bool(false)},
-			setExtension{testpb.E_OptionalBytes, []byte("")}),
-		y: apply(new(testpb.TestAllExtensions),
-			setExtension{testpb.E_OptionalInt64, int64(0)},
-			setExtension{testpb.E_OptionalUint64, uint64(0)},
-			setExtension{testpb.E_OptionalDouble, float64(0)},
-			setExtension{testpb.E_OptionalString, string("")}),
-		opts: cmp.Options{Transform(), IgnoreDefaultScalars()},
-		want: true,
-	}, {
-		x: &testpb.TestAllTypes{
-			DefaultFloat: proto.Float32(91.6),
-		},
-		y:    &testpb.TestAllTypes{},
-		opts: cmp.Options{Transform(), IgnoreDefaultScalars()},
-		want: false,
-	}, {
-		x: &testpb.TestAllTypes{
-			OptionalForeignMessage: &testpb.ForeignMessage{},
-		},
-		y:    &testpb.TestAllTypes{},
-		opts: cmp.Options{Transform(), IgnoreDefaultScalars()},
-		want: false,
-	}}...)
-
-	// Test IgnoreEmptyMessages.
-	tests = append(tests, []test{{
-		x:    []*testpb.TestAllTypes{nil, {}, {OptionalInt32: proto.Int32(5)}},
-		y:    []*testpb.TestAllTypes{nil, {}, {OptionalInt32: proto.Int32(5)}},
-		opts: cmp.Options{Transform()},
-		want: true,
-	}, {
-		x:    []*testpb.TestAllTypes{nil, {}, {OptionalInt32: proto.Int32(5)}},
-		y:    []*testpb.TestAllTypes{{OptionalInt32: proto.Int32(5)}},
-		opts: cmp.Options{Transform(), IgnoreEmptyMessages()},
-		want: false,
-	}, {
-		x:    &testpb.TestAllTypes{OptionalForeignMessage: &testpb.ForeignMessage{}},
-		y:    &testpb.TestAllTypes{OptionalForeignMessage: nil},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x:    &testpb.TestAllTypes{OptionalForeignMessage: &testpb.ForeignMessage{}},
-		y:    &testpb.TestAllTypes{OptionalForeignMessage: nil},
-		opts: cmp.Options{Transform(), IgnoreEmptyMessages()},
-		want: true,
-	}, {
-		x:    &testpb.TestAllTypes{OptionalForeignMessage: &testpb.ForeignMessage{C: proto.Int32(5)}},
-		y:    &testpb.TestAllTypes{OptionalForeignMessage: nil},
-		opts: cmp.Options{Transform(), IgnoreEmptyMessages()},
-		want: false,
-	}, {
-		x:    &testpb.TestAllTypes{RepeatedForeignMessage: []*testpb.ForeignMessage{}},
-		y:    &testpb.TestAllTypes{RepeatedForeignMessage: nil},
-		opts: cmp.Options{Transform()},
-		want: true,
-	}, {
-		x:    &testpb.TestAllTypes{RepeatedForeignMessage: []*testpb.ForeignMessage{nil, {}}},
-		y:    &testpb.TestAllTypes{RepeatedForeignMessage: nil},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x:    &testpb.TestAllTypes{RepeatedForeignMessage: []*testpb.ForeignMessage{nil, {}}},
-		y:    &testpb.TestAllTypes{RepeatedForeignMessage: nil},
-		opts: cmp.Options{Transform(), IgnoreEmptyMessages()},
-		want: true,
-	}, {
-		x:    &testpb.TestAllTypes{RepeatedForeignMessage: []*testpb.ForeignMessage{nil, {C: proto.Int32(5)}, {}}},
-		y:    &testpb.TestAllTypes{RepeatedForeignMessage: nil},
-		opts: cmp.Options{Transform(), IgnoreEmptyMessages()},
-		want: false,
-	}, {
-		x:    &testpb.TestAllTypes{RepeatedForeignMessage: []*testpb.ForeignMessage{nil, {C: proto.Int32(5)}, {}}},
-		y:    &testpb.TestAllTypes{RepeatedForeignMessage: []*testpb.ForeignMessage{{}, {}, nil, {}, {C: proto.Int32(5)}, {}}},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x:    &testpb.TestAllTypes{RepeatedForeignMessage: []*testpb.ForeignMessage{nil, {C: proto.Int32(5)}, {}}},
-		y:    &testpb.TestAllTypes{RepeatedForeignMessage: []*testpb.ForeignMessage{{}, {}, nil, {}, {C: proto.Int32(5)}, {}}},
-		opts: cmp.Options{Transform(), IgnoreEmptyMessages()},
-		want: true,
-	}, {
-		x:    &testpb.TestAllTypes{MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{}},
-		y:    &testpb.TestAllTypes{MapStringNestedMessage: nil},
-		opts: cmp.Options{Transform()},
-		want: true,
-	}, {
-		x:    &testpb.TestAllTypes{MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"1": nil, "2": {}}},
-		y:    &testpb.TestAllTypes{MapStringNestedMessage: nil},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x:    &testpb.TestAllTypes{MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"1": nil, "2": {}}},
-		y:    &testpb.TestAllTypes{MapStringNestedMessage: nil},
-		opts: cmp.Options{Transform(), IgnoreEmptyMessages()},
-		want: true,
-	}, {
-		x:    &testpb.TestAllTypes{MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"1": nil, "2": {A: proto.Int32(5)}, "3": {}}},
-		y:    &testpb.TestAllTypes{MapStringNestedMessage: nil},
-		opts: cmp.Options{Transform(), IgnoreEmptyMessages()},
-		want: false,
-	}, {
-		x:    &testpb.TestAllTypes{MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"1": nil, "2": {A: proto.Int32(5)}, "3": {}}},
-		y:    &testpb.TestAllTypes{MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"1": {}, "1a": {}, "1b": nil, "2": {A: proto.Int32(5)}, "4": {}}},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x:    &testpb.TestAllTypes{MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"1": nil, "2": {A: proto.Int32(5)}, "3": {}}},
-		y:    &testpb.TestAllTypes{MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"1": {}, "1a": {}, "1b": nil, "2": {A: proto.Int32(5)}, "4": {}}},
-		opts: cmp.Options{Transform(), IgnoreEmptyMessages()},
-		want: true,
-	}}...)
-
-	// Test IgnoreEnums and IgnoreMessages.
-	tests = append(tests, []test{{
-		x: &testpb.TestAllTypes{
-			OptionalNestedMessage:  &testpb.TestAllTypes_NestedMessage{A: proto.Int32(1)},
-			RepeatedNestedMessage:  []*testpb.TestAllTypes_NestedMessage{{A: proto.Int32(2)}},
-			MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"3": {A: proto.Int32(3)}},
-		},
-		y:    &testpb.TestAllTypes{},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: &testpb.TestAllTypes{
-			OptionalNestedMessage:  &testpb.TestAllTypes_NestedMessage{A: proto.Int32(1)},
-			RepeatedNestedMessage:  []*testpb.TestAllTypes_NestedMessage{{A: proto.Int32(2)}},
-			MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"3": {A: proto.Int32(3)}},
-		},
-		y:    &testpb.TestAllTypes{},
-		opts: cmp.Options{Transform(), IgnoreMessages(&testpb.TestAllTypes{})},
-		want: true,
-	}, {
-		x: &testpb.TestAllTypes{
-			OptionalNestedEnum:  testpb.TestAllTypes_FOO.Enum(),
-			RepeatedNestedEnum:  []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_BAR},
-			MapStringNestedEnum: map[string]testpb.TestAllTypes_NestedEnum{"baz": testpb.TestAllTypes_BAZ},
-		},
-		y:    &testpb.TestAllTypes{},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: &testpb.TestAllTypes{
-			OptionalNestedEnum:  testpb.TestAllTypes_FOO.Enum(),
-			RepeatedNestedEnum:  []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_BAR},
-			MapStringNestedEnum: map[string]testpb.TestAllTypes_NestedEnum{"baz": testpb.TestAllTypes_BAZ},
-		},
-		y:    &testpb.TestAllTypes{},
-		opts: cmp.Options{Transform(), IgnoreEnums(testpb.TestAllTypes_NestedEnum(0))},
-		want: true,
-	}, {
-		x: &testpb.TestAllTypes{
-			OptionalNestedEnum:  testpb.TestAllTypes_FOO.Enum(),
-			RepeatedNestedEnum:  []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_BAR},
-			MapStringNestedEnum: map[string]testpb.TestAllTypes_NestedEnum{"baz": testpb.TestAllTypes_BAZ},
-
-			OptionalNestedMessage:  &testpb.TestAllTypes_NestedMessage{A: proto.Int32(1)},
-			RepeatedNestedMessage:  []*testpb.TestAllTypes_NestedMessage{{A: proto.Int32(2)}},
-			MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"3": {A: proto.Int32(3)}},
-		},
-		y: &testpb.TestAllTypes{},
-		opts: cmp.Options{Transform(),
-			IgnoreMessages(&testpb.TestAllExtensions{}),
-			IgnoreEnums(testpb.ForeignEnum(0)),
-		},
-		want: false,
-	}}...)
-
-	// Test IgnoreFields and IgnoreOneofs.
-	tests = append(tests, []test{{
-		x:    &testpb.TestAllTypes{OptionalInt32: proto.Int32(5)},
-		y:    &testpb.TestAllTypes{OptionalInt32: proto.Int32(6)},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: &testpb.TestAllTypes{OptionalInt32: proto.Int32(5)},
-		y: &testpb.TestAllTypes{},
-		opts: cmp.Options{Transform(),
-			IgnoreFields(&testpb.TestAllTypes{}, "optional_int32")},
-		want: true,
-	}, {
-		x: &testpb.TestAllTypes{OptionalInt32: proto.Int32(5)},
-		y: &testpb.TestAllTypes{OptionalInt32: proto.Int32(6)},
-		opts: cmp.Options{Transform(),
-			IgnoreFields(&testpb.TestAllTypes{}, "optional_int32")},
-		want: true,
-	}, {
-		x: &testpb.TestAllTypes{OptionalInt32: proto.Int32(5)},
-		y: &testpb.TestAllTypes{OptionalInt32: proto.Int32(6)},
-		opts: cmp.Options{Transform(),
-			IgnoreFields(&testpb.TestAllTypes{}, "optional_int64")},
-		want: false,
-	}, {
-		x:    &testpb.TestAllTypes{OneofField: &testpb.TestAllTypes_OneofUint32{5}},
-		y:    &testpb.TestAllTypes{OneofField: &testpb.TestAllTypes_OneofString{"5"}},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: &testpb.TestAllTypes{OneofField: &testpb.TestAllTypes_OneofUint32{5}},
-		y: &testpb.TestAllTypes{OneofField: &testpb.TestAllTypes_OneofString{"5"}},
-		opts: cmp.Options{Transform(),
-			IgnoreFields(&testpb.TestAllTypes{}, "oneof_uint32"),
-			IgnoreFields(&testpb.TestAllTypes{}, "oneof_string")},
-		want: true,
-	}, {
-		x: &testpb.TestAllTypes{OneofField: &testpb.TestAllTypes_OneofUint32{5}},
-		y: &testpb.TestAllTypes{OneofField: &testpb.TestAllTypes_OneofString{"5"}},
-		opts: cmp.Options{Transform(),
-			IgnoreOneofs(&testpb.TestAllTypes{}, "oneof_field")},
-		want: true,
-	}, {
-		x: apply(new(testpb.TestAllExtensions),
-			setExtension{testpb.E_OptionalString, "hello"}),
-		y: apply(new(testpb.TestAllExtensions),
-			setExtension{testpb.E_OptionalString, "goodbye"}),
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: apply(new(testpb.TestAllExtensions),
-			setExtension{testpb.E_OptionalString, "hello"}),
-		y: new(testpb.TestAllExtensions),
-		opts: cmp.Options{Transform(),
-			IgnoreDescriptors(testpb.E_OptionalString.TypeDescriptor())},
-		want: true,
-	}, {
-		x: apply(new(testpb.TestAllExtensions),
-			setExtension{testpb.E_OptionalString, "hello"}),
-		y: apply(new(testpb.TestAllExtensions),
-			setExtension{testpb.E_OptionalString, "goodbye"}),
-		opts: cmp.Options{Transform(),
-			IgnoreDescriptors(testpb.E_OptionalString.TypeDescriptor())},
-		want: true,
-	}, {
-		x: apply(new(testpb.TestAllExtensions),
-			setExtension{testpb.E_OptionalString, "hello"}),
-		y: apply(new(testpb.TestAllExtensions),
-			setExtension{testpb.E_OptionalString, "goodbye"}),
-		opts: cmp.Options{Transform(),
-			IgnoreDescriptors(testpb.E_OptionalInt32.TypeDescriptor())},
-		want: false,
-	}}...)
-
-	// Test FilterEnum.
-	tests = append(tests, []test{{
-		x:    &testpb.TestAllTypes{OptionalNestedEnum: testpb.TestAllTypes_FOO.Enum()},
-		y:    &testpb.TestAllTypes{OptionalNestedEnum: testpb.TestAllTypes_BAR.Enum()},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: &testpb.TestAllTypes{OptionalNestedEnum: testpb.TestAllTypes_FOO.Enum()},
-		y: &testpb.TestAllTypes{OptionalNestedEnum: testpb.TestAllTypes_BAR.Enum()},
-		opts: cmp.Options{
-			Transform(),
-			FilterEnum(testpb.ForeignEnum(0), cmp.Comparer(func(x, y interface{}) bool { return true })),
-		},
-		want: false, // mismatching filter type
-	}, {
-		x: &testpb.TestAllTypes{OptionalNestedEnum: testpb.TestAllTypes_FOO.Enum()},
-		y: &testpb.TestAllTypes{OptionalNestedEnum: testpb.TestAllTypes_BAR.Enum()},
-		opts: cmp.Options{
-			Transform(),
-			FilterEnum(testpb.TestAllTypes_NestedEnum(0), cmp.Comparer(func(x, y int) bool { return true })),
-		},
-		want: false, // matching filter type, but mismatching comparer type
-	}, {
-		x: &testpb.TestAllTypes{OptionalNestedEnum: testpb.TestAllTypes_FOO.Enum()},
-		y: &testpb.TestAllTypes{OptionalNestedEnum: testpb.TestAllTypes_BAR.Enum()},
-		opts: cmp.Options{
-			Transform(),
-			FilterEnum(testpb.TestAllTypes_NestedEnum(0), cmp.Comparer(func(x, y testpb.TestAllTypes_NestedEnum) bool { return true })),
-		},
-		want: false, // matching filter type, but mismatching comparer type
-	}, {
-		x: &testpb.TestAllTypes{OptionalNestedEnum: testpb.TestAllTypes_FOO.Enum()},
-		y: &testpb.TestAllTypes{OptionalNestedEnum: testpb.TestAllTypes_BAR.Enum()},
-		opts: cmp.Options{
-			Transform(),
-			FilterEnum(testpb.TestAllTypes_NestedEnum(0), cmp.Comparer(func(x, y interface{}) bool { return true })),
-		},
-		want: true,
-	}, {
-		x: &testpb.TestAllTypes{OptionalNestedEnum: testpb.TestAllTypes_FOO.Enum()},
-		y: &testpb.TestAllTypes{OptionalNestedEnum: testpb.TestAllTypes_BAR.Enum()},
-		opts: cmp.Options{
-			Transform(),
-			FilterEnum(testpb.TestAllTypes_NestedEnum(0), cmp.Comparer(func(x, y Enum) bool { return true })),
-		},
-		want: true,
-	}, {
-		x:    &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_FOO}},
-		y:    &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_BAR}},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_FOO}},
-		y: &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_BAR}},
-		opts: cmp.Options{
-			Transform(),
-			FilterEnum(testpb.ForeignEnum(0), cmp.Comparer(func(x, y interface{}) bool { return true })),
-		},
-		want: false, // mismatching filter type
-	}, {
-		x: &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_FOO}},
-		y: &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_BAR}},
-		opts: cmp.Options{
-			Transform(),
-			FilterEnum(testpb.TestAllTypes_NestedEnum(0), cmp.Comparer(func(x, y int) bool { return true })),
-		},
-		want: false, // matching filter type, but mismatching comparer type
-	}, {
-		x: &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_FOO}},
-		y: &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_BAR}},
-		opts: cmp.Options{
-			Transform(),
-			FilterEnum(testpb.TestAllTypes_NestedEnum(0), cmp.Comparer(func(x, y []testpb.TestAllTypes_NestedEnum) bool { return true })),
-		},
-		want: false, // matching filter type, but mismatching comparer type
-	}, {
-		x: &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_FOO}},
-		y: &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_BAR}},
-		opts: cmp.Options{
-			Transform(),
-			FilterEnum(testpb.TestAllTypes_NestedEnum(0), cmp.Comparer(func(x, y interface{}) bool { return true })),
-		},
-		want: true,
-	}, {
-		x: &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_FOO}},
-		y: &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_BAR}},
-		opts: cmp.Options{
-			Transform(),
-			FilterEnum(testpb.TestAllTypes_NestedEnum(0), cmp.Comparer(func(x, y []Enum) bool { return true })),
-		},
-		want: true,
-	}, {
-		x:    &testpb.TestAllTypes{MapStringNestedEnum: map[string]testpb.TestAllTypes_NestedEnum{"k": testpb.TestAllTypes_FOO}},
-		y:    &testpb.TestAllTypes{MapStringNestedEnum: map[string]testpb.TestAllTypes_NestedEnum{"k": testpb.TestAllTypes_BAR}},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: &testpb.TestAllTypes{MapStringNestedEnum: map[string]testpb.TestAllTypes_NestedEnum{"k": testpb.TestAllTypes_FOO}},
-		y: &testpb.TestAllTypes{MapStringNestedEnum: map[string]testpb.TestAllTypes_NestedEnum{"k": testpb.TestAllTypes_BAR}},
-		opts: cmp.Options{
-			Transform(),
-			FilterEnum(testpb.ForeignEnum(0), cmp.Comparer(func(x, y interface{}) bool { return true })),
-		},
-		want: false, // mismatching filter type
-	}, {
-		x: &testpb.TestAllTypes{MapStringNestedEnum: map[string]testpb.TestAllTypes_NestedEnum{"k": testpb.TestAllTypes_FOO}},
-		y: &testpb.TestAllTypes{MapStringNestedEnum: map[string]testpb.TestAllTypes_NestedEnum{"k": testpb.TestAllTypes_BAR}},
-		opts: cmp.Options{
-			Transform(),
-			FilterEnum(testpb.TestAllTypes_NestedEnum(0), cmp.Comparer(func(x, y int) bool { return true })),
-		},
-		want: false, // matching filter type, but mismatching comparer type
-	}, {
-		x: &testpb.TestAllTypes{MapStringNestedEnum: map[string]testpb.TestAllTypes_NestedEnum{"k": testpb.TestAllTypes_FOO}},
-		y: &testpb.TestAllTypes{MapStringNestedEnum: map[string]testpb.TestAllTypes_NestedEnum{"k": testpb.TestAllTypes_BAR}},
-		opts: cmp.Options{
-			Transform(),
-			FilterEnum(testpb.TestAllTypes_NestedEnum(0), cmp.Comparer(func(x, y map[string]testpb.TestAllTypes_NestedEnum) bool { return true })),
-		},
-		want: false, // matching filter type, but mismatching comparer type
-	}, {
-		x: &testpb.TestAllTypes{MapStringNestedEnum: map[string]testpb.TestAllTypes_NestedEnum{"k": testpb.TestAllTypes_FOO}},
-		y: &testpb.TestAllTypes{MapStringNestedEnum: map[string]testpb.TestAllTypes_NestedEnum{"k": testpb.TestAllTypes_BAR}},
-		opts: cmp.Options{
-			Transform(),
-			FilterEnum(testpb.TestAllTypes_NestedEnum(0), cmp.Comparer(func(x, y interface{}) bool { return true })),
-		},
-		want: true,
-	}, {
-		x: &testpb.TestAllTypes{MapStringNestedEnum: map[string]testpb.TestAllTypes_NestedEnum{"k": testpb.TestAllTypes_FOO}},
-		y: &testpb.TestAllTypes{MapStringNestedEnum: map[string]testpb.TestAllTypes_NestedEnum{"k": testpb.TestAllTypes_BAR}},
-		opts: cmp.Options{
-			Transform(),
-			FilterEnum(testpb.TestAllTypes_NestedEnum(0), cmp.Comparer(func(x, y map[string]Enum) bool { return true })),
-		},
-		want: true,
-	}}...)
-
-	// Test FilterMessage.
-	tests = append(tests, []test{{
-		x:    &testpb.TestAllTypes{OptionalNestedMessage: &testpb.TestAllTypes_NestedMessage{A: proto.Int32(1)}},
-		y:    &testpb.TestAllTypes{OptionalNestedMessage: &testpb.TestAllTypes_NestedMessage{A: proto.Int32(2)}},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: &testpb.TestAllTypes{OptionalNestedMessage: &testpb.TestAllTypes_NestedMessage{A: proto.Int32(1)}},
-		y: &testpb.TestAllTypes{OptionalNestedMessage: &testpb.TestAllTypes_NestedMessage{A: proto.Int32(2)}},
-		opts: cmp.Options{
-			Transform(),
-			FilterMessage(new(testpb.TestAllExtensions), cmp.Comparer(func(x, y interface{}) bool { return true })),
-		},
-		want: false, // mismatching filter type
-	}, {
-		x: &testpb.TestAllTypes{OptionalNestedMessage: &testpb.TestAllTypes_NestedMessage{A: proto.Int32(1)}},
-		y: &testpb.TestAllTypes{OptionalNestedMessage: &testpb.TestAllTypes_NestedMessage{A: proto.Int32(2)}},
-		opts: cmp.Options{
-			Transform(),
-			FilterMessage(new(testpb.TestAllTypes_NestedMessage), cmp.Comparer(func(x, y int) bool { return true })),
-		},
-		want: false, // matching filter type, but mismatching comparer type
-	}, {
-		x: &testpb.TestAllTypes{OptionalNestedMessage: &testpb.TestAllTypes_NestedMessage{A: proto.Int32(1)}},
-		y: &testpb.TestAllTypes{OptionalNestedMessage: &testpb.TestAllTypes_NestedMessage{A: proto.Int32(2)}},
-		opts: cmp.Options{
-			Transform(),
-			FilterMessage(new(testpb.TestAllTypes_NestedMessage), cmp.Comparer(func(x, y *testpb.TestAllTypes_NestedMessage) bool { return true })),
-		},
-		want: false, // matching filter type, but mismatching comparer type
-	}, {
-		x: &testpb.TestAllTypes{OptionalNestedMessage: &testpb.TestAllTypes_NestedMessage{A: proto.Int32(1)}},
-		y: &testpb.TestAllTypes{OptionalNestedMessage: &testpb.TestAllTypes_NestedMessage{A: proto.Int32(2)}},
-		opts: cmp.Options{
-			Transform(),
-			FilterMessage(new(testpb.TestAllTypes_NestedMessage), cmp.Comparer(func(x, y interface{}) bool { return true })),
-		},
-		want: true,
-	}, {
-		x: &testpb.TestAllTypes{OptionalNestedMessage: &testpb.TestAllTypes_NestedMessage{A: proto.Int32(1)}},
-		y: &testpb.TestAllTypes{OptionalNestedMessage: &testpb.TestAllTypes_NestedMessage{A: proto.Int32(2)}},
-		opts: cmp.Options{
-			Transform(),
-			FilterMessage(new(testpb.TestAllTypes_NestedMessage), cmp.Comparer(func(x, y Message) bool { return true })),
-		},
-		want: true,
-	}, {
-		x:    &testpb.TestAllTypes{RepeatedNestedMessage: []*testpb.TestAllTypes_NestedMessage{{A: proto.Int32(1)}}},
-		y:    &testpb.TestAllTypes{RepeatedNestedMessage: []*testpb.TestAllTypes_NestedMessage{{A: proto.Int32(2)}}},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: &testpb.TestAllTypes{RepeatedNestedMessage: []*testpb.TestAllTypes_NestedMessage{{A: proto.Int32(1)}}},
-		y: &testpb.TestAllTypes{RepeatedNestedMessage: []*testpb.TestAllTypes_NestedMessage{{A: proto.Int32(2)}}},
-		opts: cmp.Options{
-			Transform(),
-			FilterMessage(new(testpb.TestAllExtensions), cmp.Comparer(func(x, y interface{}) bool { return true })),
-		},
-		want: false, // mismatching filter type
-	}, {
-		x: &testpb.TestAllTypes{RepeatedNestedMessage: []*testpb.TestAllTypes_NestedMessage{{A: proto.Int32(1)}}},
-		y: &testpb.TestAllTypes{RepeatedNestedMessage: []*testpb.TestAllTypes_NestedMessage{{A: proto.Int32(2)}}},
-		opts: cmp.Options{
-			Transform(),
-			FilterMessage(new(testpb.TestAllTypes_NestedMessage), cmp.Comparer(func(x, y int) bool { return true })),
-		},
-		want: false, // matching filter type, but mismatching comparer type
-	}, {
-		x: &testpb.TestAllTypes{RepeatedNestedMessage: []*testpb.TestAllTypes_NestedMessage{{A: proto.Int32(1)}}},
-		y: &testpb.TestAllTypes{RepeatedNestedMessage: []*testpb.TestAllTypes_NestedMessage{{A: proto.Int32(2)}}},
-		opts: cmp.Options{
-			Transform(),
-			FilterMessage(new(testpb.TestAllTypes_NestedMessage), cmp.Comparer(func(x, y []*testpb.TestAllTypes_NestedMessage) bool { return true })),
-		},
-		want: false, // matching filter type, but mismatching comparer type
-	}, {
-		x: &testpb.TestAllTypes{RepeatedNestedMessage: []*testpb.TestAllTypes_NestedMessage{{A: proto.Int32(1)}}},
-		y: &testpb.TestAllTypes{RepeatedNestedMessage: []*testpb.TestAllTypes_NestedMessage{{A: proto.Int32(2)}}},
-		opts: cmp.Options{
-			Transform(),
-			FilterMessage(new(testpb.TestAllTypes_NestedMessage), cmp.Comparer(func(x, y interface{}) bool { return true })),
-		},
-		want: true,
-	}, {
-		x: &testpb.TestAllTypes{RepeatedNestedMessage: []*testpb.TestAllTypes_NestedMessage{{A: proto.Int32(1)}}},
-		y: &testpb.TestAllTypes{RepeatedNestedMessage: []*testpb.TestAllTypes_NestedMessage{{A: proto.Int32(2)}}},
-		opts: cmp.Options{
-			Transform(),
-			FilterMessage(new(testpb.TestAllTypes_NestedMessage), cmp.Comparer(func(x, y []Message) bool { return true })),
-		},
-		want: true,
-	}, {
-		x:    &testpb.TestAllTypes{MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"k": {A: proto.Int32(1)}}},
-		y:    &testpb.TestAllTypes{MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"k": {A: proto.Int32(2)}}},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: &testpb.TestAllTypes{MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"k": {A: proto.Int32(1)}}},
-		y: &testpb.TestAllTypes{MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"k": {A: proto.Int32(2)}}},
-		opts: cmp.Options{
-			Transform(),
-			FilterMessage(new(testpb.TestAllExtensions), cmp.Comparer(func(x, y interface{}) bool { return true })),
-		},
-		want: false, // mismatching filter type
-	}, {
-		x: &testpb.TestAllTypes{MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"k": {A: proto.Int32(1)}}},
-		y: &testpb.TestAllTypes{MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"k": {A: proto.Int32(2)}}},
-		opts: cmp.Options{
-			Transform(),
-			FilterMessage(new(testpb.TestAllTypes_NestedMessage), cmp.Comparer(func(x, y int) bool { return true })),
-		},
-		want: false, // matching filter type, but mismatching comparer type
-	}, {
-		x: &testpb.TestAllTypes{MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"k": {A: proto.Int32(1)}}},
-		y: &testpb.TestAllTypes{MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"k": {A: proto.Int32(2)}}},
-		opts: cmp.Options{
-			Transform(),
-			FilterMessage(new(testpb.TestAllTypes_NestedMessage), cmp.Comparer(func(x, y map[string]*testpb.TestAllTypes_NestedMessage) bool { return true })),
-		},
-		want: false, // matching filter type, but mismatching comparer type
-	}, {
-		x: &testpb.TestAllTypes{MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"k": {A: proto.Int32(1)}}},
-		y: &testpb.TestAllTypes{MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"k": {A: proto.Int32(2)}}},
-		opts: cmp.Options{
-			Transform(),
-			FilterMessage(new(testpb.TestAllTypes_NestedMessage), cmp.Comparer(func(x, y interface{}) bool { return true })),
-		},
-		want: true,
-	}, {
-		x: &testpb.TestAllTypes{MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"k": {A: proto.Int32(1)}}},
-		y: &testpb.TestAllTypes{MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{"k": {A: proto.Int32(2)}}},
-		opts: cmp.Options{
-			Transform(),
-			FilterMessage(new(testpb.TestAllTypes_NestedMessage), cmp.Comparer(func(x, y map[string]Message) bool { return true })),
-		},
-		want: true,
-	}}...)
-
-	// Test FilterField.
-	tests = append(tests, []test{{
-		x:    &testpb.TestAllTypes{OptionalInt32: proto.Int32(1)},
-		y:    &testpb.TestAllTypes{OptionalInt32: proto.Int32(2)},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: &testpb.TestAllTypes{OptionalInt32: proto.Int32(1)},
-		y: &testpb.TestAllTypes{OptionalInt32: proto.Int32(2)},
-		opts: cmp.Options{
-			Transform(),
-			FilterField(new(testpb.TestAllTypes), "optional_int64", cmp.Comparer(func(x, y interface{}) bool { return true })),
-		},
-		want: false, // mismatching filter name
-	}, {
-		x: &testpb.TestAllTypes{OptionalInt32: proto.Int32(1)},
-		y: &testpb.TestAllTypes{OptionalInt32: proto.Int32(2)},
-		opts: cmp.Options{
-			Transform(),
-			FilterField(new(testpb.TestAllTypes), "optional_int32", cmp.Comparer(func(x, y int64) bool { return true })),
-		},
-		want: false, // matching filter name, but mismatching comparer type
-	}, {
-		x: &testpb.TestAllTypes{OptionalInt32: proto.Int32(1)},
-		y: &testpb.TestAllTypes{OptionalInt32: proto.Int32(2)},
-		opts: cmp.Options{
-			Transform(),
-			FilterField(new(testpb.TestAllTypes), "optional_int32", cmp.Comparer(func(x, y interface{}) bool { return true })),
-		},
-		want: true,
-	}, {
-		x: &testpb.TestAllTypes{OptionalInt32: proto.Int32(1)},
-		y: &testpb.TestAllTypes{OptionalInt32: proto.Int32(2)},
-		opts: cmp.Options{
-			Transform(),
-			FilterField(new(testpb.TestAllTypes), "optional_int32", cmp.Comparer(func(x, y int32) bool { return true })),
-		},
-		want: true,
-	}, {
-		x:    &testpb.TestAllTypes{RepeatedInt32: []int32{1}},
-		y:    &testpb.TestAllTypes{RepeatedInt32: []int32{2}},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: &testpb.TestAllTypes{RepeatedInt32: []int32{1}},
-		y: &testpb.TestAllTypes{RepeatedInt32: []int32{2}},
-		opts: cmp.Options{
-			Transform(),
-			FilterField(new(testpb.TestAllTypes), "repeated_int64", cmp.Comparer(func(x, y interface{}) bool { return true })),
-		},
-		want: false, // mismatching filter name
-	}, {
-		x: &testpb.TestAllTypes{RepeatedInt32: []int32{1}},
-		y: &testpb.TestAllTypes{RepeatedInt32: []int32{2}},
-		opts: cmp.Options{
-			Transform(),
-			FilterField(new(testpb.TestAllTypes), "repeated_int32", cmp.Comparer(func(x, y []int64) bool { return true })),
-		},
-		want: false, // matching filter name, but mismatching comparer type
-	}, {
-		x: &testpb.TestAllTypes{RepeatedInt32: []int32{1}},
-		y: &testpb.TestAllTypes{RepeatedInt32: []int32{2}},
-		opts: cmp.Options{
-			Transform(),
-			FilterField(new(testpb.TestAllTypes), "repeated_int32", cmp.Comparer(func(x, y interface{}) bool { return true })),
-		},
-		want: true,
-	}, {
-		x: &testpb.TestAllTypes{RepeatedInt32: []int32{1}},
-		y: &testpb.TestAllTypes{RepeatedInt32: []int32{2}},
-		opts: cmp.Options{
-			Transform(),
-			FilterField(new(testpb.TestAllTypes), "repeated_int32", cmp.Comparer(func(x, y []int32) bool { return true })),
-		},
-		want: true,
-	}, {
-		x:    &testpb.TestAllTypes{MapInt32Int32: map[int32]int32{1: 1}},
-		y:    &testpb.TestAllTypes{MapInt32Int32: map[int32]int32{2: 2}},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: &testpb.TestAllTypes{MapInt32Int32: map[int32]int32{1: 1}},
-		y: &testpb.TestAllTypes{MapInt32Int32: map[int32]int32{2: 2}},
-		opts: cmp.Options{
-			Transform(),
-			FilterField(new(testpb.TestAllTypes), "map_int64_int64", cmp.Comparer(func(x, y interface{}) bool { return true })),
-		},
-		want: false, // mismatching filter name
-	}, {
-		x: &testpb.TestAllTypes{MapInt32Int32: map[int32]int32{1: 1}},
-		y: &testpb.TestAllTypes{MapInt32Int32: map[int32]int32{2: 2}},
-		opts: cmp.Options{
-			Transform(),
-			FilterField(new(testpb.TestAllTypes), "map_int32_int32", cmp.Comparer(func(x, y map[int64]int64) bool { return true })),
-		},
-		want: false, // matching filter name, but mismatching comparer type
-	}, {
-		x: &testpb.TestAllTypes{MapInt32Int32: map[int32]int32{1: 1}},
-		y: &testpb.TestAllTypes{MapInt32Int32: map[int32]int32{2: 2}},
-		opts: cmp.Options{
-			Transform(),
-			FilterField(new(testpb.TestAllTypes), "map_int32_int32", cmp.Comparer(func(x, y interface{}) bool { return true })),
-		},
-		want: true,
-	}, {
-		x: &testpb.TestAllTypes{MapInt32Int32: map[int32]int32{1: 1}},
-		y: &testpb.TestAllTypes{MapInt32Int32: map[int32]int32{2: 2}},
-		opts: cmp.Options{
-			Transform(),
-			FilterField(new(testpb.TestAllTypes), "map_int32_int32", cmp.Comparer(func(x, y map[int32]int32) bool { return true })),
-		},
-		want: true,
-	}}...)
-
-	// Test FilterOneof
-	tests = append(tests, []test{{
-		x:    &testpb.TestAllTypes{OneofField: &testpb.TestAllTypes_OneofUint32{1}},
-		y:    &testpb.TestAllTypes{OneofField: &testpb.TestAllTypes_OneofUint32{2}},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: &testpb.TestAllTypes{OneofField: &testpb.TestAllTypes_OneofUint32{1}},
-		y: &testpb.TestAllTypes{OneofField: &testpb.TestAllTypes_OneofUint32{2}},
-		opts: cmp.Options{
-			Transform(),
-			FilterOneof(new(testpb.TestAllTypes), "oneof_optional", cmp.Comparer(func(x, y interface{}) bool { return true })),
-		},
-		want: false, // mismatching filter name
-	}, {
-		x: &testpb.TestAllTypes{OneofField: &testpb.TestAllTypes_OneofUint32{1}},
-		y: &testpb.TestAllTypes{OneofField: &testpb.TestAllTypes_OneofUint32{2}},
-		opts: cmp.Options{
-			Transform(),
-			FilterOneof(new(testpb.TestAllTypes), "oneof_field", cmp.Comparer(func(x, y string) bool { return true })),
-		},
-		want: false, // matching filter name, but mismatching comparer type
-	}, {
-		x: &testpb.TestAllTypes{OneofField: &testpb.TestAllTypes_OneofUint32{1}},
-		y: &testpb.TestAllTypes{OneofField: &testpb.TestAllTypes_OneofUint32{2}},
-		opts: cmp.Options{
-			Transform(),
-			FilterOneof(new(testpb.TestAllTypes), "oneof_field", cmp.Comparer(func(x, y uint32) bool { return true })),
-		},
-		want: true,
-	}, {
-		x: &testpb.TestAllTypes{OneofField: &testpb.TestAllTypes_OneofUint32{1}},
-		y: &testpb.TestAllTypes{OneofField: &testpb.TestAllTypes_OneofUint32{2}},
-		opts: cmp.Options{
-			Transform(),
-			FilterOneof(new(testpb.TestAllTypes), "oneof_field", cmp.Comparer(func(x, y interface{}) bool { return true })),
-		},
-		want: true,
-	}}...)
-
-	// Test SortRepeated.
-	type higherOrderType struct {
-		M    *testpb.TestAllTypes
-		I32s []int32
-		Es   []testpb.TestAllTypes_NestedEnum
-		Ms   []*testpb.ForeignMessage
-	}
-	tests = append(tests, []test{{
-		x:    &testpb.TestAllTypes{RepeatedInt32: []int32{3, 2, 1, 2, 3, 3}},
-		y:    &testpb.TestAllTypes{RepeatedInt32: []int32{2, 3, 3, 2, 1, 3}},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: &testpb.TestAllTypes{RepeatedInt32: []int32{3, 2, 1, 2, 3, 3}},
-		y: &testpb.TestAllTypes{RepeatedInt32: []int32{2, 3, 3, 2, 1, 3}},
-		opts: cmp.Options{
-			Transform(),
-			SortRepeated(func(x, y int32) bool { return x < y }),
-		},
-		want: true,
-	}, {
-		x: higherOrderType{
-			M:    &testpb.TestAllTypes{RepeatedInt32: []int32{3, 2, 1, 2, 3, 3}},
-			I32s: []int32{3, 2, 1, 2, 3, 3},
-		},
-		y: higherOrderType{
-			M:    &testpb.TestAllTypes{RepeatedInt32: []int32{2, 3, 3, 2, 1, 3}},
-			I32s: []int32{2, 3, 3, 2, 1, 3},
-		},
-		opts: cmp.Options{
-			Transform(),
-			SortRepeated(func(x, y int32) bool { return x < y }),
-		},
-		want: false, // sort does not apply to []int32 outside of a message
-	}, {
-		x: &testpb.TestAllTypes{RepeatedInt32: []int32{3, 2, 1, 2, 3, 3}},
-		y: &testpb.TestAllTypes{RepeatedInt32: []int32{2, 3, 3, 2, 1, 3}},
-		opts: cmp.Options{
-			Transform(),
-			SortRepeated(func(x, y int64) bool { return x < y }),
-		},
-		want: false, // wrong sort type: int32 != int64
-	}, {
-		x:    &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_FOO, testpb.TestAllTypes_BAR, testpb.TestAllTypes_BAZ}},
-		y:    &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_BAR, testpb.TestAllTypes_FOO, testpb.TestAllTypes_BAZ}},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_FOO, testpb.TestAllTypes_BAR, testpb.TestAllTypes_BAZ}},
-		y: &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_BAR, testpb.TestAllTypes_FOO, testpb.TestAllTypes_BAZ}},
-		opts: cmp.Options{
-			Transform(),
-			SortRepeated(func(x, y testpb.TestAllTypes_NestedEnum) bool { return x < y }),
-		},
-		want: true,
-	}, {
-		x: higherOrderType{
-			M:  &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_FOO, testpb.TestAllTypes_BAR, testpb.TestAllTypes_BAZ}},
-			Es: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_FOO, testpb.TestAllTypes_BAR, testpb.TestAllTypes_BAZ},
-		},
-		y: higherOrderType{
-			M:  &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_BAR, testpb.TestAllTypes_FOO, testpb.TestAllTypes_BAZ}},
-			Es: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_BAR, testpb.TestAllTypes_FOO, testpb.TestAllTypes_BAZ},
-		},
-		opts: cmp.Options{
-			Transform(),
-			SortRepeated(func(x, y testpb.TestAllTypes_NestedEnum) bool { return x < y }),
-		},
-		want: false, // sort does not apply to []testpb.TestAllTypes_NestedEnum outside of a message
-	}, {
-		x: &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_FOO, testpb.TestAllTypes_BAR, testpb.TestAllTypes_BAZ}},
-		y: &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_BAR, testpb.TestAllTypes_FOO, testpb.TestAllTypes_BAZ}},
-		opts: cmp.Options{
-			Transform(),
-			SortRepeated(func(x, y testpb.ForeignEnum) bool { return x < y }),
-		},
-		want: false, // wrong sort type: testpb.TestAllTypes_NestedEnum != testpb.ForeignEnum
-	}, {
-		x:    &testpb.TestAllTypes{RepeatedForeignMessage: []*testpb.ForeignMessage{{}, {C: proto.Int32(3)}, nil, {C: proto.Int32(3)}, {C: proto.Int32(5)}, {C: proto.Int32(4)}}},
-		y:    &testpb.TestAllTypes{RepeatedForeignMessage: []*testpb.ForeignMessage{nil, {C: proto.Int32(3)}, {}, {C: proto.Int32(4)}, {C: proto.Int32(3)}, {C: proto.Int32(5)}}},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: &testpb.TestAllTypes{RepeatedForeignMessage: []*testpb.ForeignMessage{{}, {C: proto.Int32(3)}, nil, {C: proto.Int32(3)}, {C: proto.Int32(5)}, {C: proto.Int32(4)}}},
-		y: &testpb.TestAllTypes{RepeatedForeignMessage: []*testpb.ForeignMessage{nil, {C: proto.Int32(3)}, {}, {C: proto.Int32(4)}, {C: proto.Int32(3)}, {C: proto.Int32(5)}}},
-		opts: cmp.Options{
-			Transform(),
-			SortRepeated(func(x, y *testpb.ForeignMessage) bool { return x.GetC() < y.GetC() }),
-		},
-		want: true,
-	}, {
-		x: higherOrderType{
-			M:  &testpb.TestAllTypes{RepeatedForeignMessage: []*testpb.ForeignMessage{{}, {C: proto.Int32(3)}, nil, {C: proto.Int32(3)}, {C: proto.Int32(5)}, {C: proto.Int32(4)}}},
-			Ms: []*testpb.ForeignMessage{{}, {C: proto.Int32(3)}, nil, {C: proto.Int32(3)}, {C: proto.Int32(5)}, {C: proto.Int32(4)}},
-		},
-		y: higherOrderType{
-			M:  &testpb.TestAllTypes{RepeatedForeignMessage: []*testpb.ForeignMessage{nil, {C: proto.Int32(3)}, {}, {C: proto.Int32(4)}, {C: proto.Int32(3)}, {C: proto.Int32(5)}}},
-			Ms: []*testpb.ForeignMessage{nil, {C: proto.Int32(3)}, {}, {C: proto.Int32(4)}, {C: proto.Int32(3)}, {C: proto.Int32(5)}},
-		},
-		opts: cmp.Options{
-			Transform(),
-			SortRepeated(func(x, y *testpb.ForeignMessage) bool { return x.GetC() < y.GetC() }),
-		},
-		want: false, // sort does not apply to []*testpb.ForeignMessage outside of a message
-	}, {
-		x: &testpb.TestAllTypes{RepeatedForeignMessage: []*testpb.ForeignMessage{{}, {C: proto.Int32(3)}, nil, {C: proto.Int32(3)}, {C: proto.Int32(5)}, {C: proto.Int32(4)}}},
-		y: &testpb.TestAllTypes{RepeatedForeignMessage: []*testpb.ForeignMessage{nil, {C: proto.Int32(3)}, {}, {C: proto.Int32(4)}, {C: proto.Int32(3)}, {C: proto.Int32(5)}}},
-		opts: cmp.Options{
-			Transform(),
-			SortRepeated(func(x, y *testpb.TestAllTypes_NestedMessage) bool { return x.GetA() < y.GetA() }),
-		},
-		want: false, // wrong sort type: *testpb.ForeignMessage != *testpb.TestAllTypes_NestedMessage
-	}, {
-		x: &testpb.TestAllTypes{
-			RepeatedInt32:    []int32{-32, +32},
-			RepeatedSint32:   []int32{-32, +32},
-			RepeatedSfixed32: []int32{-32, +32},
-			RepeatedInt64:    []int64{-64, +64},
-			RepeatedSint64:   []int64{-64, +64},
-			RepeatedSfixed64: []int64{-64, +64},
-			RepeatedUint32:   []uint32{0, 32},
-			RepeatedFixed32:  []uint32{0, 32},
-			RepeatedUint64:   []uint64{0, 64},
-			RepeatedFixed64:  []uint64{0, 64},
-		},
-		y: &testpb.TestAllTypes{
-			RepeatedInt32:    []int32{+32, -32},
-			RepeatedSint32:   []int32{+32, -32},
-			RepeatedSfixed32: []int32{+32, -32},
-			RepeatedInt64:    []int64{+64, -64},
-			RepeatedSint64:   []int64{+64, -64},
-			RepeatedSfixed64: []int64{+64, -64},
-			RepeatedUint32:   []uint32{32, 0},
-			RepeatedFixed32:  []uint32{32, 0},
-			RepeatedUint64:   []uint64{64, 0},
-			RepeatedFixed64:  []uint64{64, 0},
-		},
-		opts: cmp.Options{
-			Transform(),
-			SortRepeated(func(x, y int32) bool { return x < y }),
-			SortRepeated(func(x, y int64) bool { return x < y }),
-			SortRepeated(func(x, y uint32) bool { return x < y }),
-			SortRepeated(func(x, y uint64) bool { return x < y }),
-		},
-		want: true,
-	}}...)
-
-	// Test SortRepeatedFields.
-	tests = append(tests, []test{{
-		x:    &testpb.TestAllTypes{RepeatedInt32: []int32{3, 2, 1, 2, 3, 3}},
-		y:    &testpb.TestAllTypes{RepeatedInt32: []int32{2, 3, 3, 2, 1, 3}},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: &testpb.TestAllTypes{RepeatedInt32: []int32{3, 2, 1, 2, 3, 3}},
-		y: &testpb.TestAllTypes{RepeatedInt32: []int32{2, 3, 3, 2, 1, 3}},
-		opts: cmp.Options{
-			Transform(),
-			SortRepeatedFields(new(testpb.TestAllTypes), "repeated_int32"),
-		},
-		want: true,
-	}, {
-		x: &testpb.TestAllTypes{RepeatedInt32: []int32{3, 2, 1, 2, 3, 3}},
-		y: &testpb.TestAllTypes{RepeatedInt32: []int32{2, 3, 3, 2, 1, 3}},
-		opts: cmp.Options{
-			Transform(),
-			SortRepeatedFields(new(testpb.TestAllTypes), "repeated_int64"),
-		},
-		want: false, // wrong field: repeated_int32 != repeated_int64
-	}, {
-		x:    &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_FOO, testpb.TestAllTypes_BAR, testpb.TestAllTypes_BAZ}},
-		y:    &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_BAR, testpb.TestAllTypes_FOO, testpb.TestAllTypes_BAZ}},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_FOO, testpb.TestAllTypes_BAR, testpb.TestAllTypes_BAZ}},
-		y: &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_BAR, testpb.TestAllTypes_FOO, testpb.TestAllTypes_BAZ}},
-		opts: cmp.Options{
-			Transform(),
-			SortRepeatedFields(new(testpb.TestAllTypes), "repeated_nested_enum"),
-		},
-		want: true,
-	}, {
-		x: &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_FOO, testpb.TestAllTypes_BAR, testpb.TestAllTypes_BAZ}},
-		y: &testpb.TestAllTypes{RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{testpb.TestAllTypes_BAR, testpb.TestAllTypes_FOO, testpb.TestAllTypes_BAZ}},
-		opts: cmp.Options{
-			Transform(),
-			SortRepeatedFields(new(testpb.TestAllTypes), "repeated_foreign_enum"),
-		},
-		want: false, // wrong field: repeated_nested_enum != repeated_foreign_enum
-	}, {
-		x:    &testpb.TestAllTypes{RepeatedForeignMessage: []*testpb.ForeignMessage{{}, {C: proto.Int32(3)}, nil, {C: proto.Int32(3)}, {C: proto.Int32(5)}, {C: proto.Int32(4)}}},
-		y:    &testpb.TestAllTypes{RepeatedForeignMessage: []*testpb.ForeignMessage{nil, {C: proto.Int32(3)}, {}, {C: proto.Int32(4)}, {C: proto.Int32(3)}, {C: proto.Int32(5)}}},
-		opts: cmp.Options{Transform()},
-		want: false,
-	}, {
-		x: &testpb.TestAllTypes{RepeatedForeignMessage: []*testpb.ForeignMessage{{}, {C: proto.Int32(3)}, nil, {C: proto.Int32(3)}, {C: proto.Int32(5)}, {C: proto.Int32(4)}}},
-		y: &testpb.TestAllTypes{RepeatedForeignMessage: []*testpb.ForeignMessage{nil, {C: proto.Int32(3)}, {}, {C: proto.Int32(4)}, {C: proto.Int32(3)}, {C: proto.Int32(5)}}},
-		opts: cmp.Options{
-			Transform(),
-			SortRepeatedFields(new(testpb.TestAllTypes), "repeated_foreign_message"),
-		},
-		want: true,
-	}, {
-		x: &testpb.TestAllTypes{RepeatedForeignMessage: []*testpb.ForeignMessage{{}, {C: proto.Int32(3)}, nil, {C: proto.Int32(3)}, {C: proto.Int32(5)}, {C: proto.Int32(4)}}},
-		y: &testpb.TestAllTypes{RepeatedForeignMessage: []*testpb.ForeignMessage{nil, {C: proto.Int32(3)}, {}, {C: proto.Int32(4)}, {C: proto.Int32(3)}, {C: proto.Int32(5)}}},
-		opts: cmp.Options{
-			Transform(),
-			SortRepeatedFields(new(testpb.TestAllTypes), "repeated_nested_message"),
-		},
-		want: false, // wrong field: repeated_foreign_message != repeated_nested_message
-	}, {
-		x: &testpb.TestAllTypes{
-			RepeatedBool:           []bool{false, true},
-			RepeatedInt32:          []int32{-32, +32},
-			RepeatedInt64:          []int64{-64, +64},
-			RepeatedUint32:         []uint32{0, 32},
-			RepeatedUint64:         []uint64{0, 64},
-			RepeatedFloat:          []float32{-32.32, +32.32},
-			RepeatedDouble:         []float64{-64.64, +64.64},
-			RepeatedString:         []string{"hello", "world"},
-			RepeatedBytes:          [][]byte{[]byte("hello"), []byte("world")},
-			RepeatedForeignEnum:    []testpb.ForeignEnum{testpb.ForeignEnum_FOREIGN_FOO, testpb.ForeignEnum_FOREIGN_BAR},
-			RepeatedForeignMessage: []*testpb.ForeignMessage{{C: proto.Int32(-1)}, {C: proto.Int32(+1)}},
-		},
-		y: &testpb.TestAllTypes{
-			RepeatedBool:           []bool{true, false},
-			RepeatedInt32:          []int32{+32, -32},
-			RepeatedInt64:          []int64{+64, -64},
-			RepeatedUint32:         []uint32{32, 0},
-			RepeatedUint64:         []uint64{64, 0},
-			RepeatedFloat:          []float32{+32.32, -32.32},
-			RepeatedDouble:         []float64{+64.64, -64.64},
-			RepeatedString:         []string{"world", "hello"},
-			RepeatedBytes:          [][]byte{[]byte("world"), []byte("hello")},
-			RepeatedForeignEnum:    []testpb.ForeignEnum{testpb.ForeignEnum_FOREIGN_BAR, testpb.ForeignEnum_FOREIGN_FOO},
-			RepeatedForeignMessage: []*testpb.ForeignMessage{{C: proto.Int32(+1)}, {C: proto.Int32(-1)}},
-		},
-		opts: cmp.Options{
-			Transform(),
-			SortRepeatedFields(new(testpb.TestAllTypes),
-				"repeated_bool",
-				"repeated_int32",
-				"repeated_int64",
-				"repeated_uint32",
-				"repeated_uint64",
-				"repeated_float",
-				"repeated_double",
-				"repeated_string",
-				"repeated_bytes",
-				"repeated_foreign_enum",
-				"repeated_foreign_message",
-			),
-		},
-		want: true,
-	}}...)
-
-	for _, tt := range tests {
-		t.Run("", func(t *testing.T) {
-			got := cmp.Equal(tt.x, tt.y, tt.opts)
-			if got != tt.want {
-				if !got {
-					t.Errorf("cmp.Equal = false, want true; diff:\n%v", cmp.Diff(tt.x, tt.y, tt.opts))
-				} else {
-					t.Errorf("cmp.Equal = true, want false")
-				}
-			}
-		})
-	}
-}
-
-type setField struct {
-	num protoreflect.FieldNumber
-	val interface{}
-}
-type setUnknown struct {
-	raw protoreflect.RawFields
-}
-type setExtension struct {
-	typ protoreflect.ExtensionType
-	val interface{}
-}
-
-// apply applies a sequence of mutating operations to m.
-func apply(m proto.Message, ops ...interface{}) proto.Message {
-	mr := m.ProtoReflect()
-	md := mr.Descriptor()
-	for _, op := range ops {
-		switch op := op.(type) {
-		case setField:
-			fd := md.Fields().ByNumber(op.num)
-			mr.Set(fd, protoreflect.ValueOf(op.val))
-		case setUnknown:
-			mr.SetUnknown(op.raw)
-		case setExtension:
-			mr.Set(op.typ.TypeDescriptor(), protoreflect.ValueOf(op.val))
-		}
-	}
-	return m
-}
-
-func TestSort(t *testing.T) {
-	t.Run("F32", func(t *testing.T) {
-		want := []float32{
-			float32(math.Float32frombits(0xffc00000)), // -NaN
-			float32(math.Inf(-1)),
-			float32(-math.MaxFloat32),
-			float32(-123.456),
-			float32(-math.SmallestNonzeroFloat32),
-			float32(math.Copysign(0, -1)),
-			float32(math.Copysign(0, +1)),
-			float32(+math.SmallestNonzeroFloat32),
-			float32(+123.456),
-			float32(+math.MaxFloat32),
-			float32(math.Inf(+1)),
-			float32(math.Float32frombits(0x7fc00000)), // +NaN
-		}
-		for i := 0; i < 10; i++ {
-			t.Run("", func(t *testing.T) {
-				got := append([]float32(nil), want...)
-				rn := rand.New(rand.NewSource(int64(i)))
-				for i, j := range rn.Perm(len(got)) {
-					got[i], got[j] = got[j], got[i]
-				}
-				sort.Slice(got, func(i, j int) bool {
-					return lessF32(got[i], got[j])
-				})
-				cmpF32s := cmp.Comparer(func(x, y float32) bool {
-					return math.Float32bits(x) == math.Float32bits(y)
-				})
-				if diff := cmp.Diff(want, got, cmpF32s); diff != "" {
-					t.Errorf("Sort mismatch (-want +got):\n%s", diff)
-				}
-			})
-		}
-	})
-	t.Run("F64", func(t *testing.T) {
-		want := []float64{
-			float64(math.Float64frombits(0xfff8000000000001)), // -NaN
-			float64(math.Inf(-1)),
-			float64(-math.MaxFloat64),
-			float64(-123.456),
-			float64(-math.SmallestNonzeroFloat64),
-			float64(math.Copysign(0, -1)),
-			float64(math.Copysign(0, +1)),
-			float64(+math.SmallestNonzeroFloat64),
-			float64(+123.456),
-			float64(+math.MaxFloat64),
-			float64(math.Inf(+1)),
-			float64(math.Float64frombits(0x7ff8000000000001)), // +NaN
-		}
-		for i := 0; i < 10; i++ {
-			t.Run("", func(t *testing.T) {
-				got := append([]float64(nil), want...)
-				rn := rand.New(rand.NewSource(int64(i)))
-				for i, j := range rn.Perm(len(got)) {
-					got[i], got[j] = got[j], got[i]
-				}
-				sort.Slice(got, func(i, j int) bool {
-					return lessF64(got[i], got[j])
-				})
-				cmpF64s := cmp.Comparer(func(x, y float64) bool {
-					return math.Float64bits(x) == math.Float64bits(y)
-				})
-				if diff := cmp.Diff(want, got, cmpF64s); diff != "" {
-					t.Errorf("Sort mismatch (-want +got):\n%s", diff)
-				}
-			})
-		}
-	})
-}
diff --git a/testing/protocmp/xform.go b/testing/protocmp/xform.go
deleted file mode 100644
index 7a32e2d..0000000
--- a/testing/protocmp/xform.go
+++ /dev/null
@@ -1,354 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package protocmp provides protobuf specific options for the
-// "github.com/google/go-cmp/cmp" package.
-//
-// The primary feature is the Transform option, which transform proto.Message
-// types into a Message map that is suitable for cmp to introspect upon.
-// All other options in this package must be used in conjunction with Transform.
-package protocmp
-
-import (
-	"reflect"
-	"strconv"
-
-	"github.com/google/go-cmp/cmp"
-
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/internal/genid"
-	"google.golang.org/protobuf/internal/msgfmt"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/reflect/protoregistry"
-	"google.golang.org/protobuf/runtime/protoiface"
-	"google.golang.org/protobuf/runtime/protoimpl"
-)
-
-var (
-	enumV2Type    = reflect.TypeOf((*protoreflect.Enum)(nil)).Elem()
-	messageV1Type = reflect.TypeOf((*protoiface.MessageV1)(nil)).Elem()
-	messageV2Type = reflect.TypeOf((*proto.Message)(nil)).Elem()
-)
-
-// Enum is a dynamic representation of a protocol buffer enum that is
-// suitable for cmp.Equal and cmp.Diff to compare upon.
-type Enum struct {
-	num protoreflect.EnumNumber
-	ed  protoreflect.EnumDescriptor
-}
-
-// Descriptor returns the enum descriptor.
-// It returns nil for a zero Enum value.
-func (e Enum) Descriptor() protoreflect.EnumDescriptor {
-	return e.ed
-}
-
-// Number returns the enum value as an integer.
-func (e Enum) Number() protoreflect.EnumNumber {
-	return e.num
-}
-
-// Equal reports whether e1 and e2 represent the same enum value.
-func (e1 Enum) Equal(e2 Enum) bool {
-	if e1.ed.FullName() != e2.ed.FullName() {
-		return false
-	}
-	return e1.num == e2.num
-}
-
-// String returns the name of the enum value if known (e.g., "ENUM_VALUE"),
-// otherwise it returns the formatted decimal enum number (e.g., "14").
-func (e Enum) String() string {
-	if ev := e.ed.Values().ByNumber(e.num); ev != nil {
-		return string(ev.Name())
-	}
-	return strconv.Itoa(int(e.num))
-}
-
-const (
-	// messageTypeKey indicates the protobuf message type.
-	// The value type is always messageMeta.
-	// From the public API, it presents itself as only the type, but the
-	// underlying data structure holds arbitrary metadata about the message.
-	messageTypeKey = "@type"
-
-	// messageInvalidKey indicates that the message is invalid.
-	// The value is always the boolean "true".
-	messageInvalidKey = "@invalid"
-)
-
-type messageMeta struct {
-	m   proto.Message
-	md  protoreflect.MessageDescriptor
-	xds map[string]protoreflect.ExtensionDescriptor
-}
-
-func (t messageMeta) String() string {
-	return string(t.md.FullName())
-}
-
-func (t1 messageMeta) Equal(t2 messageMeta) bool {
-	return t1.md.FullName() == t2.md.FullName()
-}
-
-// Message is a dynamic representation of a protocol buffer message that is
-// suitable for cmp.Equal and cmp.Diff to directly operate upon.
-//
-// Every populated known field (excluding extension fields) is stored in the map
-// with the key being the short name of the field (e.g., "field_name") and
-// the value determined by the kind and cardinality of the field.
-//
-// Singular scalars are represented by the same Go type as protoreflect.Value,
-// singular messages are represented by the Message type,
-// singular enums are represented by the Enum type,
-// list fields are represented as a Go slice, and
-// map fields are represented as a Go map.
-//
-// Every populated extension field is stored in the map with the key being the
-// full name of the field surrounded by brackets (e.g., "[extension.full.name]")
-// and the value determined according to the same rules as known fields.
-//
-// Every unknown field is stored in the map with the key being the field number
-// encoded as a decimal string (e.g., "132") and the value being the raw bytes
-// of the encoded field (as the protoreflect.RawFields type).
-//
-// Message values must not be created by or mutated by users.
-type Message map[string]interface{}
-
-// Unwrap returns the original message value.
-// It returns nil if this Message was not constructed from another message.
-func (m Message) Unwrap() proto.Message {
-	mm, _ := m[messageTypeKey].(messageMeta)
-	return mm.m
-}
-
-// Descriptor return the message descriptor.
-// It returns nil for a zero Message value.
-func (m Message) Descriptor() protoreflect.MessageDescriptor {
-	mm, _ := m[messageTypeKey].(messageMeta)
-	return mm.md
-}
-
-// ProtoReflect returns a reflective view of m.
-// It only implements the read-only operations of protoreflect.Message.
-// Calling any mutating operations on m panics.
-func (m Message) ProtoReflect() protoreflect.Message {
-	return (reflectMessage)(m)
-}
-
-// ProtoMessage is a marker method from the legacy message interface.
-func (m Message) ProtoMessage() {}
-
-// Reset is the required Reset method from the legacy message interface.
-func (m Message) Reset() {
-	panic("invalid mutation of a read-only message")
-}
-
-// String returns a formatted string for the message.
-// It is intended for human debugging and has no guarantees about its
-// exact format or the stability of its output.
-func (m Message) String() string {
-	switch {
-	case m == nil:
-		return "<nil>"
-	case !m.ProtoReflect().IsValid():
-		return "<invalid>"
-	default:
-		return msgfmt.Format(m)
-	}
-}
-
-type option struct{}
-
-// Transform returns a cmp.Option that converts each proto.Message to a Message.
-// The transformation does not mutate nor alias any converted messages.
-//
-// The google.protobuf.Any message is automatically unmarshaled such that the
-// "value" field is a Message representing the underlying message value
-// assuming it could be resolved and properly unmarshaled.
-//
-// This does not directly transform higher-order composite Go types.
-// For example, []*foopb.Message is not transformed into []Message,
-// but rather the individual message elements of the slice are transformed.
-//
-// Note that there are currently no custom options for Transform,
-// but the use of an unexported type keeps the future open.
-func Transform(...option) cmp.Option {
-	// addrType returns a pointer to t if t isn't a pointer or interface.
-	addrType := func(t reflect.Type) reflect.Type {
-		if k := t.Kind(); k == reflect.Interface || k == reflect.Ptr {
-			return t
-		}
-		return reflect.PtrTo(t)
-	}
-
-	// TODO: Should this transform protoreflect.Enum types to Enum as well?
-	return cmp.FilterPath(func(p cmp.Path) bool {
-		ps := p.Last()
-		if isMessageType(addrType(ps.Type())) {
-			return true
-		}
-
-		// Check whether the concrete values of an interface both satisfy
-		// the Message interface.
-		if ps.Type().Kind() == reflect.Interface {
-			vx, vy := ps.Values()
-			if !vx.IsValid() || vx.IsNil() || !vy.IsValid() || vy.IsNil() {
-				return false
-			}
-			return isMessageType(addrType(vx.Elem().Type())) && isMessageType(addrType(vy.Elem().Type()))
-		}
-
-		return false
-	}, cmp.Transformer("protocmp.Transform", func(v interface{}) Message {
-		// For user convenience, shallow copy the message value if necessary
-		// in order for it to implement the message interface.
-		if rv := reflect.ValueOf(v); rv.IsValid() && rv.Kind() != reflect.Ptr && !isMessageType(rv.Type()) {
-			pv := reflect.New(rv.Type())
-			pv.Elem().Set(rv)
-			v = pv.Interface()
-		}
-
-		m := protoimpl.X.MessageOf(v)
-		switch {
-		case m == nil:
-			return nil
-		case !m.IsValid():
-			return Message{messageTypeKey: messageMeta{m: m.Interface(), md: m.Descriptor()}, messageInvalidKey: true}
-		default:
-			return transformMessage(m)
-		}
-	}))
-}
-
-func isMessageType(t reflect.Type) bool {
-	// Avoid tranforming the Message itself.
-	if t == reflect.TypeOf(Message(nil)) || t == reflect.TypeOf((*Message)(nil)) {
-		return false
-	}
-	return t.Implements(messageV1Type) || t.Implements(messageV2Type)
-}
-
-func transformMessage(m protoreflect.Message) Message {
-	mx := Message{}
-	mt := messageMeta{m: m.Interface(), md: m.Descriptor(), xds: make(map[string]protoreflect.FieldDescriptor)}
-
-	// Handle known and extension fields.
-	m.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {
-		s := fd.TextName()
-		if fd.IsExtension() {
-			mt.xds[s] = fd
-		}
-		switch {
-		case fd.IsList():
-			mx[s] = transformList(fd, v.List())
-		case fd.IsMap():
-			mx[s] = transformMap(fd, v.Map())
-		default:
-			mx[s] = transformSingular(fd, v)
-		}
-		return true
-	})
-
-	// Handle unknown fields.
-	for b := m.GetUnknown(); len(b) > 0; {
-		num, _, n := protowire.ConsumeField(b)
-		s := strconv.Itoa(int(num))
-		b2, _ := mx[s].(protoreflect.RawFields)
-		mx[s] = append(b2, b[:n]...)
-		b = b[n:]
-	}
-
-	// Expand Any messages.
-	if mt.md.FullName() == genid.Any_message_fullname {
-		// TODO: Expose Transform option to specify a custom resolver?
-		s, _ := mx[string(genid.Any_TypeUrl_field_name)].(string)
-		b, _ := mx[string(genid.Any_Value_field_name)].([]byte)
-		mt, err := protoregistry.GlobalTypes.FindMessageByURL(s)
-		if mt != nil && err == nil {
-			m2 := mt.New()
-			err := proto.UnmarshalOptions{AllowPartial: true}.Unmarshal(b, m2.Interface())
-			if err == nil {
-				mx[string(genid.Any_Value_field_name)] = transformMessage(m2)
-			}
-		}
-	}
-
-	mx[messageTypeKey] = mt
-	return mx
-}
-
-func transformList(fd protoreflect.FieldDescriptor, lv protoreflect.List) interface{} {
-	t := protoKindToGoType(fd.Kind())
-	rv := reflect.MakeSlice(reflect.SliceOf(t), lv.Len(), lv.Len())
-	for i := 0; i < lv.Len(); i++ {
-		v := reflect.ValueOf(transformSingular(fd, lv.Get(i)))
-		rv.Index(i).Set(v)
-	}
-	return rv.Interface()
-}
-
-func transformMap(fd protoreflect.FieldDescriptor, mv protoreflect.Map) interface{} {
-	kfd := fd.MapKey()
-	vfd := fd.MapValue()
-	kt := protoKindToGoType(kfd.Kind())
-	vt := protoKindToGoType(vfd.Kind())
-	rv := reflect.MakeMapWithSize(reflect.MapOf(kt, vt), mv.Len())
-	mv.Range(func(k protoreflect.MapKey, v protoreflect.Value) bool {
-		kv := reflect.ValueOf(transformSingular(kfd, k.Value()))
-		vv := reflect.ValueOf(transformSingular(vfd, v))
-		rv.SetMapIndex(kv, vv)
-		return true
-	})
-	return rv.Interface()
-}
-
-func transformSingular(fd protoreflect.FieldDescriptor, v protoreflect.Value) interface{} {
-	switch fd.Kind() {
-	case protoreflect.EnumKind:
-		return Enum{num: v.Enum(), ed: fd.Enum()}
-	case protoreflect.MessageKind, protoreflect.GroupKind:
-		return transformMessage(v.Message())
-	case protoreflect.BytesKind:
-		// The protoreflect API does not specify whether an empty bytes is
-		// guaranteed to be nil or not. Always return non-nil bytes to avoid
-		// leaking information about the concrete proto.Message implementation.
-		if len(v.Bytes()) == 0 {
-			return []byte{}
-		}
-		return v.Bytes()
-	default:
-		return v.Interface()
-	}
-}
-
-func protoKindToGoType(k protoreflect.Kind) reflect.Type {
-	switch k {
-	case protoreflect.BoolKind:
-		return reflect.TypeOf(bool(false))
-	case protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Sfixed32Kind:
-		return reflect.TypeOf(int32(0))
-	case protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Sfixed64Kind:
-		return reflect.TypeOf(int64(0))
-	case protoreflect.Uint32Kind, protoreflect.Fixed32Kind:
-		return reflect.TypeOf(uint32(0))
-	case protoreflect.Uint64Kind, protoreflect.Fixed64Kind:
-		return reflect.TypeOf(uint64(0))
-	case protoreflect.FloatKind:
-		return reflect.TypeOf(float32(0))
-	case protoreflect.DoubleKind:
-		return reflect.TypeOf(float64(0))
-	case protoreflect.StringKind:
-		return reflect.TypeOf(string(""))
-	case protoreflect.BytesKind:
-		return reflect.TypeOf([]byte(nil))
-	case protoreflect.EnumKind:
-		return reflect.TypeOf(Enum{})
-	case protoreflect.MessageKind, protoreflect.GroupKind:
-		return reflect.TypeOf(Message{})
-	default:
-		panic("invalid kind")
-	}
-}
diff --git a/testing/protocmp/xform_test.go b/testing/protocmp/xform_test.go
deleted file mode 100644
index a0f7e24..0000000
--- a/testing/protocmp/xform_test.go
+++ /dev/null
@@ -1,274 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protocmp
-
-import (
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-
-	"google.golang.org/protobuf/internal/detrand"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/testing/protopack"
-
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-)
-
-func init() {
-	detrand.Disable()
-}
-
-func TestTransform(t *testing.T) {
-	tests := []struct {
-		in   proto.Message
-		want Message
-	}{{
-		in: &testpb.TestAllTypes{
-			OptionalBool:          proto.Bool(false),
-			OptionalInt32:         proto.Int32(-32),
-			OptionalInt64:         proto.Int64(-64),
-			OptionalUint32:        proto.Uint32(32),
-			OptionalUint64:        proto.Uint64(64),
-			OptionalFloat:         proto.Float32(32.32),
-			OptionalDouble:        proto.Float64(64.64),
-			OptionalString:        proto.String("string"),
-			OptionalBytes:         []byte("bytes"),
-			OptionalNestedEnum:    testpb.TestAllTypes_NEG.Enum(),
-			OptionalNestedMessage: &testpb.TestAllTypes_NestedMessage{A: proto.Int32(5)},
-		},
-		want: Message{
-			messageTypeKey:            messageMetaOf(&testpb.TestAllTypes{}),
-			"optional_bool":           bool(false),
-			"optional_int32":          int32(-32),
-			"optional_int64":          int64(-64),
-			"optional_uint32":         uint32(32),
-			"optional_uint64":         uint64(64),
-			"optional_float":          float32(32.32),
-			"optional_double":         float64(64.64),
-			"optional_string":         string("string"),
-			"optional_bytes":          []byte("bytes"),
-			"optional_nested_enum":    enumOf(testpb.TestAllTypes_NEG),
-			"optional_nested_message": Message{messageTypeKey: messageMetaOf(&testpb.TestAllTypes_NestedMessage{}), "a": int32(5)},
-		},
-	}, {
-		in: &testpb.TestAllTypes{
-			RepeatedBool:   []bool{false, true},
-			RepeatedInt32:  []int32{32, -32},
-			RepeatedInt64:  []int64{64, -64},
-			RepeatedUint32: []uint32{0, 32},
-			RepeatedUint64: []uint64{0, 64},
-			RepeatedFloat:  []float32{0, 32.32},
-			RepeatedDouble: []float64{0, 64.64},
-			RepeatedString: []string{"s1", "s2"},
-			RepeatedBytes:  [][]byte{{1}, {2}},
-			RepeatedNestedEnum: []testpb.TestAllTypes_NestedEnum{
-				testpb.TestAllTypes_FOO,
-				testpb.TestAllTypes_BAR,
-			},
-			RepeatedNestedMessage: []*testpb.TestAllTypes_NestedMessage{
-				{A: proto.Int32(5)},
-				{A: proto.Int32(-5)},
-			},
-		},
-		want: Message{
-			messageTypeKey:    messageMetaOf(&testpb.TestAllTypes{}),
-			"repeated_bool":   []bool{false, true},
-			"repeated_int32":  []int32{32, -32},
-			"repeated_int64":  []int64{64, -64},
-			"repeated_uint32": []uint32{0, 32},
-			"repeated_uint64": []uint64{0, 64},
-			"repeated_float":  []float32{0, 32.32},
-			"repeated_double": []float64{0, 64.64},
-			"repeated_string": []string{"s1", "s2"},
-			"repeated_bytes":  [][]byte{{1}, {2}},
-			"repeated_nested_enum": []Enum{
-				enumOf(testpb.TestAllTypes_FOO),
-				enumOf(testpb.TestAllTypes_BAR),
-			},
-			"repeated_nested_message": []Message{
-				{messageTypeKey: messageMetaOf(&testpb.TestAllTypes_NestedMessage{}), "a": int32(5)},
-				{messageTypeKey: messageMetaOf(&testpb.TestAllTypes_NestedMessage{}), "a": int32(-5)},
-			},
-		},
-	}, {
-		in: &testpb.TestAllTypes{
-			MapBoolBool:     map[bool]bool{true: false},
-			MapInt32Int32:   map[int32]int32{-32: 32},
-			MapInt64Int64:   map[int64]int64{-64: 64},
-			MapUint32Uint32: map[uint32]uint32{0: 32},
-			MapUint64Uint64: map[uint64]uint64{0: 64},
-			MapInt32Float:   map[int32]float32{32: 32.32},
-			MapInt32Double:  map[int32]float64{64: 64.64},
-			MapStringString: map[string]string{"k": "v", "empty": ""},
-			MapStringBytes:  map[string][]byte{"k": []byte("v"), "empty": nil},
-			MapStringNestedEnum: map[string]testpb.TestAllTypes_NestedEnum{
-				"k": testpb.TestAllTypes_FOO,
-			},
-			MapStringNestedMessage: map[string]*testpb.TestAllTypes_NestedMessage{
-				"k": {A: proto.Int32(5)},
-			},
-		},
-		want: Message{
-			messageTypeKey:      messageMetaOf(&testpb.TestAllTypes{}),
-			"map_bool_bool":     map[bool]bool{true: false},
-			"map_int32_int32":   map[int32]int32{-32: 32},
-			"map_int64_int64":   map[int64]int64{-64: 64},
-			"map_uint32_uint32": map[uint32]uint32{0: 32},
-			"map_uint64_uint64": map[uint64]uint64{0: 64},
-			"map_int32_float":   map[int32]float32{32: 32.32},
-			"map_int32_double":  map[int32]float64{64: 64.64},
-			"map_string_string": map[string]string{"k": "v", "empty": ""},
-			"map_string_bytes":  map[string][]byte{"k": []byte("v"), "empty": []byte{}},
-			"map_string_nested_enum": map[string]Enum{
-				"k": enumOf(testpb.TestAllTypes_FOO),
-			},
-			"map_string_nested_message": map[string]Message{
-				"k": {messageTypeKey: messageMetaOf(&testpb.TestAllTypes_NestedMessage{}), "a": int32(5)},
-			},
-		},
-	}, {
-		in: func() proto.Message {
-			m := &testpb.TestAllExtensions{}
-			proto.SetExtension(m, testpb.E_OptionalBool, bool(false))
-			proto.SetExtension(m, testpb.E_OptionalInt32, int32(-32))
-			proto.SetExtension(m, testpb.E_OptionalInt64, int64(-64))
-			proto.SetExtension(m, testpb.E_OptionalUint32, uint32(32))
-			proto.SetExtension(m, testpb.E_OptionalUint64, uint64(64))
-			proto.SetExtension(m, testpb.E_OptionalFloat, float32(32.32))
-			proto.SetExtension(m, testpb.E_OptionalDouble, float64(64.64))
-			proto.SetExtension(m, testpb.E_OptionalString, string("string"))
-			proto.SetExtension(m, testpb.E_OptionalBytes, []byte("bytes"))
-			proto.SetExtension(m, testpb.E_OptionalNestedEnum, testpb.TestAllTypes_NEG)
-			proto.SetExtension(m, testpb.E_OptionalNestedMessage, &testpb.TestAllExtensions_NestedMessage{A: proto.Int32(5)})
-			return m
-		}(),
-		want: Message{
-			messageTypeKey:                                 messageMetaOf(&testpb.TestAllExtensions{}),
-			"[goproto.proto.test.optional_bool]":           bool(false),
-			"[goproto.proto.test.optional_int32]":          int32(-32),
-			"[goproto.proto.test.optional_int64]":          int64(-64),
-			"[goproto.proto.test.optional_uint32]":         uint32(32),
-			"[goproto.proto.test.optional_uint64]":         uint64(64),
-			"[goproto.proto.test.optional_float]":          float32(32.32),
-			"[goproto.proto.test.optional_double]":         float64(64.64),
-			"[goproto.proto.test.optional_string]":         string("string"),
-			"[goproto.proto.test.optional_bytes]":          []byte("bytes"),
-			"[goproto.proto.test.optional_nested_enum]":    enumOf(testpb.TestAllTypes_NEG),
-			"[goproto.proto.test.optional_nested_message]": Message{messageTypeKey: messageMetaOf(&testpb.TestAllExtensions_NestedMessage{}), "a": int32(5)},
-		},
-	}, {
-		in: func() proto.Message {
-			m := &testpb.TestAllExtensions{}
-			proto.SetExtension(m, testpb.E_RepeatedBool, []bool{false, true})
-			proto.SetExtension(m, testpb.E_RepeatedInt32, []int32{32, -32})
-			proto.SetExtension(m, testpb.E_RepeatedInt64, []int64{64, -64})
-			proto.SetExtension(m, testpb.E_RepeatedUint32, []uint32{0, 32})
-			proto.SetExtension(m, testpb.E_RepeatedUint64, []uint64{0, 64})
-			proto.SetExtension(m, testpb.E_RepeatedFloat, []float32{0, 32.32})
-			proto.SetExtension(m, testpb.E_RepeatedDouble, []float64{0, 64.64})
-			proto.SetExtension(m, testpb.E_RepeatedString, []string{"s1", "s2"})
-			proto.SetExtension(m, testpb.E_RepeatedBytes, [][]byte{{1}, {2}})
-			proto.SetExtension(m, testpb.E_RepeatedNestedEnum, []testpb.TestAllTypes_NestedEnum{
-				testpb.TestAllTypes_FOO,
-				testpb.TestAllTypes_BAR,
-			})
-			proto.SetExtension(m, testpb.E_RepeatedNestedMessage, []*testpb.TestAllExtensions_NestedMessage{
-				{A: proto.Int32(5)},
-				{A: proto.Int32(-5)},
-			})
-			return m
-		}(),
-		want: Message{
-			messageTypeKey:                         messageMetaOf(&testpb.TestAllExtensions{}),
-			"[goproto.proto.test.repeated_bool]":   []bool{false, true},
-			"[goproto.proto.test.repeated_int32]":  []int32{32, -32},
-			"[goproto.proto.test.repeated_int64]":  []int64{64, -64},
-			"[goproto.proto.test.repeated_uint32]": []uint32{0, 32},
-			"[goproto.proto.test.repeated_uint64]": []uint64{0, 64},
-			"[goproto.proto.test.repeated_float]":  []float32{0, 32.32},
-			"[goproto.proto.test.repeated_double]": []float64{0, 64.64},
-			"[goproto.proto.test.repeated_string]": []string{"s1", "s2"},
-			"[goproto.proto.test.repeated_bytes]":  [][]byte{{1}, {2}},
-			"[goproto.proto.test.repeated_nested_enum]": []Enum{
-				enumOf(testpb.TestAllTypes_FOO),
-				enumOf(testpb.TestAllTypes_BAR),
-			},
-			"[goproto.proto.test.repeated_nested_message]": []Message{
-				{messageTypeKey: messageMetaOf(&testpb.TestAllExtensions_NestedMessage{}), "a": int32(5)},
-				{messageTypeKey: messageMetaOf(&testpb.TestAllExtensions_NestedMessage{}), "a": int32(-5)},
-			},
-		},
-	}, {
-		in: func() proto.Message {
-			m := &testpb.TestAllTypes{}
-			m.ProtoReflect().SetUnknown(protopack.Message{
-				protopack.Tag{Number: 50000, Type: protopack.VarintType}, protopack.Uvarint(100),
-				protopack.Tag{Number: 50001, Type: protopack.Fixed32Type}, protopack.Uint32(200),
-				protopack.Tag{Number: 50002, Type: protopack.Fixed64Type}, protopack.Uint64(300),
-				protopack.Tag{Number: 50003, Type: protopack.BytesType}, protopack.String("hello"),
-				protopack.Message{
-					protopack.Tag{Number: 50004, Type: protopack.StartGroupType},
-					protopack.Tag{Number: 1, Type: protopack.VarintType}, protopack.Uvarint(100),
-					protopack.Tag{Number: 1, Type: protopack.Fixed32Type}, protopack.Uint32(200),
-					protopack.Tag{Number: 1, Type: protopack.Fixed64Type}, protopack.Uint64(300),
-					protopack.Tag{Number: 1, Type: protopack.BytesType}, protopack.String("hello"),
-					protopack.Message{
-						protopack.Tag{Number: 1, Type: protopack.StartGroupType},
-						protopack.Tag{Number: 1, Type: protopack.VarintType}, protopack.Uvarint(100),
-						protopack.Tag{Number: 1, Type: protopack.Fixed32Type}, protopack.Uint32(200),
-						protopack.Tag{Number: 1, Type: protopack.Fixed64Type}, protopack.Uint64(300),
-						protopack.Tag{Number: 1, Type: protopack.BytesType}, protopack.String("hello"),
-						protopack.Tag{Number: 1, Type: protopack.EndGroupType},
-					},
-					protopack.Tag{Number: 50004, Type: protopack.EndGroupType},
-				},
-			}.Marshal())
-			return m
-		}(),
-		want: Message{
-			messageTypeKey: messageMetaOf(&testpb.TestAllTypes{}),
-			"50000":        protoreflect.RawFields(protopack.Message{protopack.Tag{Number: 50000, Type: protopack.VarintType}, protopack.Uvarint(100)}.Marshal()),
-			"50001":        protoreflect.RawFields(protopack.Message{protopack.Tag{Number: 50001, Type: protopack.Fixed32Type}, protopack.Uint32(200)}.Marshal()),
-			"50002":        protoreflect.RawFields(protopack.Message{protopack.Tag{Number: 50002, Type: protopack.Fixed64Type}, protopack.Uint64(300)}.Marshal()),
-			"50003":        protoreflect.RawFields(protopack.Message{protopack.Tag{Number: 50003, Type: protopack.BytesType}, protopack.String("hello")}.Marshal()),
-			"50004": protoreflect.RawFields(protopack.Message{
-				protopack.Tag{Number: 50004, Type: protopack.StartGroupType},
-				protopack.Tag{Number: 1, Type: protopack.VarintType}, protopack.Uvarint(100),
-				protopack.Tag{Number: 1, Type: protopack.Fixed32Type}, protopack.Uint32(200),
-				protopack.Tag{Number: 1, Type: protopack.Fixed64Type}, protopack.Uint64(300),
-				protopack.Tag{Number: 1, Type: protopack.BytesType}, protopack.String("hello"),
-				protopack.Message{
-					protopack.Tag{Number: 1, Type: protopack.StartGroupType},
-					protopack.Tag{Number: 1, Type: protopack.VarintType}, protopack.Uvarint(100),
-					protopack.Tag{Number: 1, Type: protopack.Fixed32Type}, protopack.Uint32(200),
-					protopack.Tag{Number: 1, Type: protopack.Fixed64Type}, protopack.Uint64(300),
-					protopack.Tag{Number: 1, Type: protopack.BytesType}, protopack.String("hello"),
-					protopack.Tag{Number: 1, Type: protopack.EndGroupType},
-				},
-				protopack.Tag{Number: 50004, Type: protopack.EndGroupType},
-			}.Marshal()),
-		},
-	}}
-	for _, tt := range tests {
-		t.Run("", func(t *testing.T) {
-			got := transformMessage(tt.in.ProtoReflect())
-			if diff := cmp.Diff(tt.want, got); diff != "" {
-				t.Errorf("Transform() mismatch (-want +got):\n%v", diff)
-			}
-			if got.Unwrap() != tt.in {
-				t.Errorf("got.Unwrap() = %p, want %p", got.Unwrap(), tt.in)
-			}
-		})
-	}
-}
-
-func enumOf(e protoreflect.Enum) Enum {
-	return Enum{e.Number(), e.Descriptor()}
-}
-
-func messageMetaOf(m protoreflect.ProtoMessage) messageMeta {
-	return messageMeta{m: m, md: m.ProtoReflect().Descriptor()}
-}
diff --git a/testing/protopack/pack.go b/testing/protopack/pack.go
deleted file mode 100644
index 683ce0b..0000000
--- a/testing/protopack/pack.go
+++ /dev/null
@@ -1,721 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package protopack enables manual encoding and decoding of protobuf wire data.
-//
-// This package is intended for use in debugging and/or creation of test data.
-// Proper usage of this package requires knowledge of the wire format.
-//
-// See https://developers.google.com/protocol-buffers/docs/encoding.
-package protopack
-
-import (
-	"fmt"
-	"io"
-	"math"
-	"path"
-	"reflect"
-	"strconv"
-	"strings"
-	"unicode"
-	"unicode/utf8"
-
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/reflect/protoreflect"
-)
-
-// Number is the field number; aliased from the protowire package for convenience.
-type Number = protowire.Number
-
-// Number type constants; copied from the protowire package for convenience.
-const (
-	MinValidNumber      Number = protowire.MinValidNumber
-	FirstReservedNumber Number = protowire.FirstReservedNumber
-	LastReservedNumber  Number = protowire.LastReservedNumber
-	MaxValidNumber      Number = protowire.MaxValidNumber
-)
-
-// Type is the wire type; aliased from the protowire package for convenience.
-type Type = protowire.Type
-
-// Wire type constants; copied from the protowire package for convenience.
-const (
-	VarintType     Type = protowire.VarintType
-	Fixed32Type    Type = protowire.Fixed32Type
-	Fixed64Type    Type = protowire.Fixed64Type
-	BytesType      Type = protowire.BytesType
-	StartGroupType Type = protowire.StartGroupType
-	EndGroupType   Type = protowire.EndGroupType
-)
-
-type (
-	// Token is any other type (e.g., Message, Tag, Varint, Float32, etc).
-	Token token
-	// Message is an ordered sequence of  Tokens, where certain tokens may
-	// contain other tokens. It is functionally a concrete syntax tree that
-	// losslessly represents any arbitrary wire data (including invalid input).
-	Message []Token
-
-	// Tag is a tuple of the field number and the wire type.
-	Tag struct {
-		Number Number
-		Type   Type
-	}
-	// Bool is a boolean.
-	Bool bool
-	// Varint is a signed varint using 64-bit two's complement encoding.
-	Varint int64
-	// Svarint is a signed varint using zig-zag encoding.
-	Svarint int64
-	// Uvarint is a unsigned varint.
-	Uvarint uint64
-
-	// Int32 is a signed 32-bit fixed-width integer.
-	Int32 int32
-	// Uint32 is an unsigned 32-bit fixed-width integer.
-	Uint32 uint32
-	// Float32 is a 32-bit fixed-width floating point number.
-	Float32 float32
-
-	// Int64 is a signed 64-bit fixed-width integer.
-	Int64 int64
-	// Uint64 is an unsigned 64-bit fixed-width integer.
-	Uint64 uint64
-	// Float64 is a 64-bit fixed-width floating point number.
-	Float64 float64
-
-	// String is a length-prefixed string.
-	String string
-	// Bytes is a length-prefixed bytes.
-	Bytes []byte
-	// LengthPrefix is a length-prefixed message.
-	LengthPrefix Message
-
-	// Denormalized is a denormalized varint value, where a varint is encoded
-	// using more bytes than is strictly necessary. The number of extra bytes
-	// alone is sufficient to losslessly represent the denormalized varint.
-	//
-	// The value may be one of Tag, Bool, Varint, Svarint, or Uvarint,
-	// where the varint representation of each token is denormalized.
-	//
-	// Alternatively, the value may be one of String, Bytes, or LengthPrefix,
-	// where the varint representation of the length-prefix is denormalized.
-	Denormalized struct {
-		Count uint // number of extra bytes
-		Value Token
-	}
-
-	// Raw are bytes directly appended to output.
-	Raw []byte
-)
-
-type token interface {
-	isToken()
-}
-
-func (Message) isToken()      {}
-func (Tag) isToken()          {}
-func (Bool) isToken()         {}
-func (Varint) isToken()       {}
-func (Svarint) isToken()      {}
-func (Uvarint) isToken()      {}
-func (Int32) isToken()        {}
-func (Uint32) isToken()       {}
-func (Float32) isToken()      {}
-func (Int64) isToken()        {}
-func (Uint64) isToken()       {}
-func (Float64) isToken()      {}
-func (String) isToken()       {}
-func (Bytes) isToken()        {}
-func (LengthPrefix) isToken() {}
-func (Denormalized) isToken() {}
-func (Raw) isToken()          {}
-
-// Size reports the size in bytes of the marshaled message.
-func (m Message) Size() int {
-	var n int
-	for _, v := range m {
-		switch v := v.(type) {
-		case Message:
-			n += v.Size()
-		case Tag:
-			n += protowire.SizeTag(v.Number)
-		case Bool:
-			n += protowire.SizeVarint(protowire.EncodeBool(false))
-		case Varint:
-			n += protowire.SizeVarint(uint64(v))
-		case Svarint:
-			n += protowire.SizeVarint(protowire.EncodeZigZag(int64(v)))
-		case Uvarint:
-			n += protowire.SizeVarint(uint64(v))
-		case Int32, Uint32, Float32:
-			n += protowire.SizeFixed32()
-		case Int64, Uint64, Float64:
-			n += protowire.SizeFixed64()
-		case String:
-			n += protowire.SizeBytes(len(v))
-		case Bytes:
-			n += protowire.SizeBytes(len(v))
-		case LengthPrefix:
-			n += protowire.SizeBytes(Message(v).Size())
-		case Denormalized:
-			n += int(v.Count) + Message{v.Value}.Size()
-		case Raw:
-			n += len(v)
-		default:
-			panic(fmt.Sprintf("unknown type: %T", v))
-		}
-	}
-	return n
-}
-
-// Marshal encodes a syntax tree into the protobuf wire format.
-//
-// Example message definition:
-//	message MyMessage {
-//		string field1 = 1;
-//		int64 field2 = 2;
-//		repeated float32 field3 = 3;
-//	}
-//
-// Example encoded message:
-//	b := Message{
-//		Tag{1, BytesType}, String("Hello, world!"),
-//		Tag{2, VarintType}, Varint(-10),
-//		Tag{3, BytesType}, LengthPrefix{
-//			Float32(1.1), Float32(2.2), Float32(3.3),
-//		},
-//	}.Marshal()
-//
-// Resulting wire data:
-//	0x0000  0a 0d 48 65 6c 6c 6f 2c  20 77 6f 72 6c 64 21 10  |..Hello, world!.|
-//	0x0010  f6 ff ff ff ff ff ff ff  ff 01 1a 0c cd cc 8c 3f  |...............?|
-//	0x0020  cd cc 0c 40 33 33 53 40                           |...@33S@|
-func (m Message) Marshal() []byte {
-	var out []byte
-	for _, v := range m {
-		switch v := v.(type) {
-		case Message:
-			out = append(out, v.Marshal()...)
-		case Tag:
-			out = protowire.AppendTag(out, v.Number, v.Type)
-		case Bool:
-			out = protowire.AppendVarint(out, protowire.EncodeBool(bool(v)))
-		case Varint:
-			out = protowire.AppendVarint(out, uint64(v))
-		case Svarint:
-			out = protowire.AppendVarint(out, protowire.EncodeZigZag(int64(v)))
-		case Uvarint:
-			out = protowire.AppendVarint(out, uint64(v))
-		case Int32:
-			out = protowire.AppendFixed32(out, uint32(v))
-		case Uint32:
-			out = protowire.AppendFixed32(out, uint32(v))
-		case Float32:
-			out = protowire.AppendFixed32(out, math.Float32bits(float32(v)))
-		case Int64:
-			out = protowire.AppendFixed64(out, uint64(v))
-		case Uint64:
-			out = protowire.AppendFixed64(out, uint64(v))
-		case Float64:
-			out = protowire.AppendFixed64(out, math.Float64bits(float64(v)))
-		case String:
-			out = protowire.AppendBytes(out, []byte(v))
-		case Bytes:
-			out = protowire.AppendBytes(out, []byte(v))
-		case LengthPrefix:
-			out = protowire.AppendBytes(out, Message(v).Marshal())
-		case Denormalized:
-			b := Message{v.Value}.Marshal()
-			_, n := protowire.ConsumeVarint(b)
-			out = append(out, b[:n]...)
-			for i := uint(0); i < v.Count; i++ {
-				out[len(out)-1] |= 0x80 // set continuation bit on previous
-				out = append(out, 0)
-			}
-			out = append(out, b[n:]...)
-		case Raw:
-			return append(out, v...)
-		default:
-			panic(fmt.Sprintf("unknown type: %T", v))
-		}
-	}
-	return out
-}
-
-// Unmarshal parses the input protobuf wire data as a syntax tree.
-// Any parsing error results in the remainder of the input being
-// concatenated to the message as a Raw type.
-//
-// Each tag (a tuple of the field number and wire type) encountered is
-// inserted into the syntax tree as a Tag.
-//
-// The contents of each wire type is mapped to the following Go types:
-//	VarintType   => Uvarint
-//	Fixed32Type  => Uint32
-//	Fixed64Type  => Uint64
-//	BytesType    => Bytes
-//	GroupType    => Message
-//
-// Since the wire format is not self-describing, this function cannot parse
-// sub-messages and will leave them as the Bytes type. Further manual parsing
-// can be performed as such:
-//	var m, m1, m2 Message
-//	m.Unmarshal(b)
-//	m1.Unmarshal(m[3].(Bytes))
-//	m[3] = LengthPrefix(m1)
-//	m2.Unmarshal(m[3].(LengthPrefix)[1].(Bytes))
-//	m[3].(LengthPrefix)[1] = LengthPrefix(m2)
-//
-// Unmarshal is useful for debugging the protobuf wire format.
-func (m *Message) Unmarshal(in []byte) {
-	m.unmarshal(in, nil, false)
-}
-
-// UnmarshalDescriptor parses the input protobuf wire data as a syntax tree
-// using the provided message descriptor for more accurate parsing of fields.
-// It operates like Unmarshal, but may use a wider range of Go types to
-// represent the wire data.
-//
-// The contents of each wire type is mapped to one of the following Go types:
-//	VarintType   => Bool, Varint, Svarint, Uvarint
-//	Fixed32Type  => Int32, Uint32, Float32
-//	Fixed64Type  => Uint32, Uint64, Float64
-//	BytesType    => String, Bytes, LengthPrefix
-//	GroupType    => Message
-//
-// If the field is unknown, it uses the same mapping as Unmarshal.
-// Known sub-messages are parsed as a Message and packed repeated fields are
-// parsed as a LengthPrefix.
-func (m *Message) UnmarshalDescriptor(in []byte, desc protoreflect.MessageDescriptor) {
-	m.unmarshal(in, desc, false)
-}
-
-// UnmarshalAbductive is like UnmarshalDescriptor, but infers abductively
-// whether any unknown bytes values is a message based on whether it is
-// a syntactically well-formed message.
-//
-// Note that the protobuf wire format is not fully self-describing,
-// so abductive inference may attempt to expand a bytes value as a message
-// that is not actually a message. It is a best-effort guess.
-func (m *Message) UnmarshalAbductive(in []byte, desc protoreflect.MessageDescriptor) {
-	m.unmarshal(in, desc, true)
-}
-
-func (m *Message) unmarshal(in []byte, desc protoreflect.MessageDescriptor, inferMessage bool) {
-	p := parser{in: in, out: *m}
-	p.parseMessage(desc, false, inferMessage)
-	*m = p.out
-}
-
-type parser struct {
-	in  []byte
-	out []Token
-
-	invalid bool
-}
-
-func (p *parser) parseMessage(msgDesc protoreflect.MessageDescriptor, group, inferMessage bool) {
-	for len(p.in) > 0 {
-		v, n := protowire.ConsumeVarint(p.in)
-		num, typ := protowire.DecodeTag(v)
-		if n < 0 || num <= 0 || v > math.MaxUint32 {
-			p.out, p.in = append(p.out, Raw(p.in)), nil
-			p.invalid = true
-			return
-		}
-		if typ == EndGroupType && group {
-			return // if inside a group, then stop
-		}
-		p.out, p.in = append(p.out, Tag{num, typ}), p.in[n:]
-		if m := n - protowire.SizeVarint(v); m > 0 {
-			p.out[len(p.out)-1] = Denormalized{uint(m), p.out[len(p.out)-1]}
-		}
-
-		// If descriptor is available, use it for more accurate parsing.
-		var isPacked bool
-		var kind protoreflect.Kind
-		var subDesc protoreflect.MessageDescriptor
-		if msgDesc != nil && !msgDesc.IsPlaceholder() {
-			if fieldDesc := msgDesc.Fields().ByNumber(num); fieldDesc != nil {
-				isPacked = fieldDesc.IsPacked()
-				kind = fieldDesc.Kind()
-				switch kind {
-				case protoreflect.MessageKind, protoreflect.GroupKind:
-					subDesc = fieldDesc.Message()
-					if subDesc == nil || subDesc.IsPlaceholder() {
-						kind = 0
-					}
-				}
-			}
-		}
-
-		switch typ {
-		case VarintType:
-			p.parseVarint(kind)
-		case Fixed32Type:
-			p.parseFixed32(kind)
-		case Fixed64Type:
-			p.parseFixed64(kind)
-		case BytesType:
-			p.parseBytes(isPacked, kind, subDesc, inferMessage)
-		case StartGroupType:
-			p.parseGroup(num, subDesc, inferMessage)
-		case EndGroupType:
-			// Handled by p.parseGroup.
-		default:
-			p.out, p.in = append(p.out, Raw(p.in)), nil
-			p.invalid = true
-		}
-	}
-}
-
-func (p *parser) parseVarint(kind protoreflect.Kind) {
-	v, n := protowire.ConsumeVarint(p.in)
-	if n < 0 {
-		p.out, p.in = append(p.out, Raw(p.in)), nil
-		p.invalid = true
-		return
-	}
-	switch kind {
-	case protoreflect.BoolKind:
-		switch v {
-		case 0:
-			p.out, p.in = append(p.out, Bool(false)), p.in[n:]
-		case 1:
-			p.out, p.in = append(p.out, Bool(true)), p.in[n:]
-		default:
-			p.out, p.in = append(p.out, Uvarint(v)), p.in[n:]
-		}
-	case protoreflect.Int32Kind, protoreflect.Int64Kind:
-		p.out, p.in = append(p.out, Varint(v)), p.in[n:]
-	case protoreflect.Sint32Kind, protoreflect.Sint64Kind:
-		p.out, p.in = append(p.out, Svarint(protowire.DecodeZigZag(v))), p.in[n:]
-	default:
-		p.out, p.in = append(p.out, Uvarint(v)), p.in[n:]
-	}
-	if m := n - protowire.SizeVarint(v); m > 0 {
-		p.out[len(p.out)-1] = Denormalized{uint(m), p.out[len(p.out)-1]}
-	}
-}
-
-func (p *parser) parseFixed32(kind protoreflect.Kind) {
-	v, n := protowire.ConsumeFixed32(p.in)
-	if n < 0 {
-		p.out, p.in = append(p.out, Raw(p.in)), nil
-		p.invalid = true
-		return
-	}
-	switch kind {
-	case protoreflect.FloatKind:
-		p.out, p.in = append(p.out, Float32(math.Float32frombits(v))), p.in[n:]
-	case protoreflect.Sfixed32Kind:
-		p.out, p.in = append(p.out, Int32(v)), p.in[n:]
-	default:
-		p.out, p.in = append(p.out, Uint32(v)), p.in[n:]
-	}
-}
-
-func (p *parser) parseFixed64(kind protoreflect.Kind) {
-	v, n := protowire.ConsumeFixed64(p.in)
-	if n < 0 {
-		p.out, p.in = append(p.out, Raw(p.in)), nil
-		p.invalid = true
-		return
-	}
-	switch kind {
-	case protoreflect.DoubleKind:
-		p.out, p.in = append(p.out, Float64(math.Float64frombits(v))), p.in[n:]
-	case protoreflect.Sfixed64Kind:
-		p.out, p.in = append(p.out, Int64(v)), p.in[n:]
-	default:
-		p.out, p.in = append(p.out, Uint64(v)), p.in[n:]
-	}
-}
-
-func (p *parser) parseBytes(isPacked bool, kind protoreflect.Kind, desc protoreflect.MessageDescriptor, inferMessage bool) {
-	v, n := protowire.ConsumeVarint(p.in)
-	if n < 0 {
-		p.out, p.in = append(p.out, Raw(p.in)), nil
-		p.invalid = true
-		return
-	}
-	p.out, p.in = append(p.out, Uvarint(v)), p.in[n:]
-	if m := n - protowire.SizeVarint(v); m > 0 {
-		p.out[len(p.out)-1] = Denormalized{uint(m), p.out[len(p.out)-1]}
-	}
-	if v > uint64(len(p.in)) {
-		p.out, p.in = append(p.out, Raw(p.in)), nil
-		p.invalid = true
-		return
-	}
-	p.out = p.out[:len(p.out)-1] // subsequent tokens contain prefix-length
-
-	if isPacked {
-		p.parsePacked(int(v), kind)
-	} else {
-		switch kind {
-		case protoreflect.MessageKind:
-			p2 := parser{in: p.in[:v]}
-			p2.parseMessage(desc, false, inferMessage)
-			p.out, p.in = append(p.out, LengthPrefix(p2.out)), p.in[v:]
-		case protoreflect.StringKind:
-			p.out, p.in = append(p.out, String(p.in[:v])), p.in[v:]
-		case protoreflect.BytesKind:
-			p.out, p.in = append(p.out, Bytes(p.in[:v])), p.in[v:]
-		default:
-			if inferMessage {
-				// Check whether this is a syntactically valid message.
-				p2 := parser{in: p.in[:v]}
-				p2.parseMessage(nil, false, inferMessage)
-				if !p2.invalid {
-					p.out, p.in = append(p.out, LengthPrefix(p2.out)), p.in[v:]
-					break
-				}
-			}
-			p.out, p.in = append(p.out, Bytes(p.in[:v])), p.in[v:]
-		}
-	}
-	if m := n - protowire.SizeVarint(v); m > 0 {
-		p.out[len(p.out)-1] = Denormalized{uint(m), p.out[len(p.out)-1]}
-	}
-}
-
-func (p *parser) parsePacked(n int, kind protoreflect.Kind) {
-	p2 := parser{in: p.in[:n]}
-	for len(p2.in) > 0 {
-		switch kind {
-		case protoreflect.BoolKind, protoreflect.EnumKind,
-			protoreflect.Int32Kind, protoreflect.Sint32Kind, protoreflect.Uint32Kind,
-			protoreflect.Int64Kind, protoreflect.Sint64Kind, protoreflect.Uint64Kind:
-			p2.parseVarint(kind)
-		case protoreflect.Fixed32Kind, protoreflect.Sfixed32Kind, protoreflect.FloatKind:
-			p2.parseFixed32(kind)
-		case protoreflect.Fixed64Kind, protoreflect.Sfixed64Kind, protoreflect.DoubleKind:
-			p2.parseFixed64(kind)
-		default:
-			panic(fmt.Sprintf("invalid packed kind: %v", kind))
-		}
-	}
-	p.out, p.in = append(p.out, LengthPrefix(p2.out)), p.in[n:]
-}
-
-func (p *parser) parseGroup(startNum protowire.Number, desc protoreflect.MessageDescriptor, inferMessage bool) {
-	p2 := parser{in: p.in}
-	p2.parseMessage(desc, true, inferMessage)
-	if len(p2.out) > 0 {
-		p.out = append(p.out, Message(p2.out))
-	}
-	p.in = p2.in
-
-	// Append the trailing end group.
-	v, n := protowire.ConsumeVarint(p.in)
-	if endNum, typ := protowire.DecodeTag(v); typ == EndGroupType {
-		if startNum != endNum {
-			p.invalid = true
-		}
-		p.out, p.in = append(p.out, Tag{endNum, typ}), p.in[n:]
-		if m := n - protowire.SizeVarint(v); m > 0 {
-			p.out[len(p.out)-1] = Denormalized{uint(m), p.out[len(p.out)-1]}
-		}
-	}
-}
-
-// Format implements a custom formatter to visualize the syntax tree.
-// Using "%#v" formats the Message in Go source code.
-func (m Message) Format(s fmt.State, r rune) {
-	switch r {
-	case 'x':
-		io.WriteString(s, fmt.Sprintf("%x", m.Marshal()))
-	case 'X':
-		io.WriteString(s, fmt.Sprintf("%X", m.Marshal()))
-	case 'v':
-		switch {
-		case s.Flag('#'):
-			io.WriteString(s, m.format(true, true))
-		case s.Flag('+'):
-			io.WriteString(s, m.format(false, true))
-		default:
-			io.WriteString(s, m.format(false, false))
-		}
-	default:
-		panic("invalid verb: " + string(r))
-	}
-}
-
-// format formats the message.
-// If source is enabled, this emits valid Go source.
-// If multi is enabled, the output may span multiple lines.
-func (m Message) format(source, multi bool) string {
-	var ss []string
-	var prefix, nextPrefix string
-	for _, v := range m {
-		// Ensure certain tokens have preceding or succeeding newlines.
-		prefix, nextPrefix = nextPrefix, " "
-		if multi {
-			switch v := v.(type) {
-			case Tag: // only has preceding newline
-				prefix = "\n"
-			case Denormalized: // only has preceding newline
-				if _, ok := v.Value.(Tag); ok {
-					prefix = "\n"
-				}
-			case Message, Raw: // has preceding and succeeding newlines
-				prefix, nextPrefix = "\n", "\n"
-			}
-		}
-
-		s := formatToken(v, source, multi)
-		ss = append(ss, prefix+s+",")
-	}
-
-	var s string
-	if len(ss) > 0 {
-		s = strings.TrimSpace(strings.Join(ss, ""))
-		if multi {
-			s = "\n\t" + strings.Join(strings.Split(s, "\n"), "\n\t") + "\n"
-		} else {
-			s = strings.TrimSuffix(s, ",")
-		}
-	}
-	s = fmt.Sprintf("%T{%s}", m, s)
-	if !source {
-		s = trimPackage(s)
-	}
-	return s
-}
-
-// formatToken formats a single token.
-func formatToken(t Token, source, multi bool) (s string) {
-	switch v := t.(type) {
-	case Message:
-		s = v.format(source, multi)
-	case LengthPrefix:
-		s = formatPacked(v, source, multi)
-		if s == "" {
-			ms := Message(v).format(source, multi)
-			s = fmt.Sprintf("%T(%s)", v, ms)
-		}
-	case Tag:
-		s = fmt.Sprintf("%T{%d, %s}", v, v.Number, formatType(v.Type, source))
-	case Bool, Varint, Svarint, Uvarint, Int32, Uint32, Float32, Int64, Uint64, Float64:
-		if source {
-			// Print floats in a way that preserves exact precision.
-			if f, _ := v.(Float32); math.IsNaN(float64(f)) || math.IsInf(float64(f), 0) {
-				switch {
-				case f > 0:
-					s = fmt.Sprintf("%T(math.Inf(+1))", v)
-				case f < 0:
-					s = fmt.Sprintf("%T(math.Inf(-1))", v)
-				case math.Float32bits(float32(math.NaN())) == math.Float32bits(float32(f)):
-					s = fmt.Sprintf("%T(math.NaN())", v)
-				default:
-					s = fmt.Sprintf("%T(math.Float32frombits(0x%08x))", v, math.Float32bits(float32(f)))
-				}
-				break
-			}
-			if f, _ := v.(Float64); math.IsNaN(float64(f)) || math.IsInf(float64(f), 0) {
-				switch {
-				case f > 0:
-					s = fmt.Sprintf("%T(math.Inf(+1))", v)
-				case f < 0:
-					s = fmt.Sprintf("%T(math.Inf(-1))", v)
-				case math.Float64bits(float64(math.NaN())) == math.Float64bits(float64(f)):
-					s = fmt.Sprintf("%T(math.NaN())", v)
-				default:
-					s = fmt.Sprintf("%T(math.Float64frombits(0x%016x))", v, math.Float64bits(float64(f)))
-				}
-				break
-			}
-		}
-		s = fmt.Sprintf("%T(%v)", v, v)
-	case String, Bytes, Raw:
-		s = fmt.Sprintf("%s", v)
-		s = fmt.Sprintf("%T(%s)", v, formatString(s))
-	case Denormalized:
-		s = fmt.Sprintf("%T{+%d, %v}", v, v.Count, formatToken(v.Value, source, multi))
-	default:
-		panic(fmt.Sprintf("unknown type: %T", v))
-	}
-	if !source {
-		s = trimPackage(s)
-	}
-	return s
-}
-
-// formatPacked returns a non-empty string if LengthPrefix looks like a packed
-// repeated field of primitives.
-func formatPacked(v LengthPrefix, source, multi bool) string {
-	var ss []string
-	for _, v := range v {
-		switch v.(type) {
-		case Bool, Varint, Svarint, Uvarint, Int32, Uint32, Float32, Int64, Uint64, Float64, Denormalized, Raw:
-			if v, ok := v.(Denormalized); ok {
-				switch v.Value.(type) {
-				case Bool, Varint, Svarint, Uvarint:
-				default:
-					return ""
-				}
-			}
-			ss = append(ss, formatToken(v, source, multi))
-		default:
-			return ""
-		}
-	}
-	s := fmt.Sprintf("%T{%s}", v, strings.Join(ss, ", "))
-	if !source {
-		s = trimPackage(s)
-	}
-	return s
-}
-
-// formatType returns the name for Type.
-func formatType(t Type, source bool) (s string) {
-	switch t {
-	case VarintType:
-		s = pkg + ".VarintType"
-	case Fixed32Type:
-		s = pkg + ".Fixed32Type"
-	case Fixed64Type:
-		s = pkg + ".Fixed64Type"
-	case BytesType:
-		s = pkg + ".BytesType"
-	case StartGroupType:
-		s = pkg + ".StartGroupType"
-	case EndGroupType:
-		s = pkg + ".EndGroupType"
-	default:
-		s = fmt.Sprintf("Type(%d)", t)
-	}
-	if !source {
-		s = strings.TrimSuffix(trimPackage(s), "Type")
-	}
-	return s
-}
-
-// formatString returns a quoted string for s.
-func formatString(s string) string {
-	// Use quoted string if it the same length as a raw string literal.
-	// Otherwise, attempt to use the raw string form.
-	qs := strconv.Quote(s)
-	if len(qs) == 1+len(s)+1 {
-		return qs
-	}
-
-	// Disallow newlines to ensure output is a single line.
-	// Disallow non-printable runes for readability purposes.
-	rawInvalid := func(r rune) bool {
-		return r == '`' || r == '\n' || r == utf8.RuneError || !unicode.IsPrint(r)
-	}
-	if strings.IndexFunc(s, rawInvalid) < 0 {
-		return "`" + s + "`"
-	}
-	return qs
-}
-
-var pkg = path.Base(reflect.TypeOf(Tag{}).PkgPath())
-
-func trimPackage(s string) string {
-	return strings.TrimPrefix(strings.TrimPrefix(s, pkg), ".")
-}
diff --git a/testing/protopack/pack_test.go b/testing/protopack/pack_test.go
deleted file mode 100644
index 61ea336..0000000
--- a/testing/protopack/pack_test.go
+++ /dev/null
@@ -1,422 +0,0 @@
-// Copyright 2018 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package protopack
-
-import (
-	"bytes"
-	"encoding/hex"
-	"fmt"
-	"math"
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-
-	"google.golang.org/protobuf/encoding/prototext"
-	pdesc "google.golang.org/protobuf/reflect/protodesc"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-
-	"google.golang.org/protobuf/types/descriptorpb"
-)
-
-var msgDesc = func() pref.MessageDescriptor {
-	const s = `
-		name:   "test.proto"
-		syntax: "proto2"
-		message_type: [{
-			name: "Message"
-			field: [
-				{name:"f1"  number:1  label:LABEL_REPEATED type:TYPE_BOOL     options:{packed:true}},
-				{name:"f2"  number:2  label:LABEL_REPEATED type:TYPE_INT64    options:{packed:true}},
-				{name:"f3"  number:3  label:LABEL_REPEATED type:TYPE_SINT64   options:{packed:true}},
-				{name:"f4"  number:4  label:LABEL_REPEATED type:TYPE_UINT64   options:{packed:true}},
-				{name:"f5"  number:5  label:LABEL_REPEATED type:TYPE_FIXED32  options:{packed:true}},
-				{name:"f6"  number:6  label:LABEL_REPEATED type:TYPE_SFIXED32 options:{packed:true}},
-				{name:"f7"  number:7  label:LABEL_REPEATED type:TYPE_FLOAT    options:{packed:true}},
-				{name:"f8"  number:8  label:LABEL_REPEATED type:TYPE_FIXED64  options:{packed:true}},
-				{name:"f9"  number:9  label:LABEL_REPEATED type:TYPE_SFIXED64 options:{packed:true}},
-				{name:"f10" number:10 label:LABEL_REPEATED type:TYPE_DOUBLE   options:{packed:true}},
-				{name:"f11" number:11 label:LABEL_OPTIONAL type:TYPE_STRING},
-				{name:"f12" number:12 label:LABEL_OPTIONAL type:TYPE_BYTES},
-				{name:"f13" number:13 label:LABEL_OPTIONAL type:TYPE_MESSAGE type_name:".Message"},
-				{name:"f14" number:14 label:LABEL_OPTIONAL type:TYPE_GROUP   type_name:".Message.F14"}
-			]
-			nested_type: [{name: "F14"}]
-		}]
-	`
-	pb := new(descriptorpb.FileDescriptorProto)
-	if err := prototext.Unmarshal([]byte(s), pb); err != nil {
-		panic(err)
-	}
-	fd, err := pdesc.NewFile(pb, nil)
-	if err != nil {
-		panic(err)
-	}
-	return fd.Messages().Get(0)
-}()
-
-// dhex decodes a hex-string and returns the bytes and panics if s is invalid.
-func dhex(s string) []byte {
-	b, err := hex.DecodeString(s)
-	if err != nil {
-		panic(err)
-	}
-	return b
-}
-
-func TestPack(t *testing.T) {
-	tests := []struct {
-		raw      []byte
-		msg      Message
-		msgDesc  protoreflect.MessageDescriptor
-		inferMsg bool
-
-		wantOutCompact string
-		wantOutMulti   string
-		wantOutSource  string
-	}{{
-		raw: dhex("080088808080800002088280808080000a09010002828080808000"),
-		msg: Message{
-			Tag{1, VarintType}, Bool(false),
-			Denormalized{5, Tag{1, VarintType}}, Uvarint(2),
-			Tag{1, VarintType}, Denormalized{5, Uvarint(2)},
-			Tag{1, BytesType}, LengthPrefix{Bool(true), Bool(false), Uvarint(2), Denormalized{5, Uvarint(2)}},
-		},
-		msgDesc: msgDesc,
-		wantOutSource: `protopack.Message{
-	protopack.Tag{1, protopack.VarintType}, protopack.Bool(false),
-	protopack.Denormalized{+5, protopack.Tag{1, protopack.VarintType}}, protopack.Uvarint(2),
-	protopack.Tag{1, protopack.VarintType}, protopack.Denormalized{+5, protopack.Uvarint(2)},
-	protopack.Tag{1, protopack.BytesType}, protopack.LengthPrefix{protopack.Bool(true), protopack.Bool(false), protopack.Uvarint(2), protopack.Denormalized{+5, protopack.Uvarint(2)}},
-}`,
-	}, {
-		raw: dhex("080088808080800002088280808080000a09010002828080808000"),
-		msg: Message{
-			Tag{1, VarintType}, Uvarint(0),
-			Denormalized{5, Tag{1, VarintType}}, Uvarint(2),
-			Tag{1, VarintType}, Denormalized{5, Uvarint(2)},
-			Tag{1, BytesType}, Bytes(Message{Bool(true), Bool(false), Uvarint(2), Denormalized{5, Uvarint(2)}}.Marshal()),
-		},
-		inferMsg: true,
-	}, {
-		raw: dhex("100010828080808000121980808080808080808001ffffffffffffffff7f828080808000"),
-		msg: Message{
-			Tag{2, VarintType}, Varint(0),
-			Tag{2, VarintType}, Denormalized{5, Varint(2)},
-			Tag{2, BytesType}, LengthPrefix{Varint(math.MinInt64), Varint(math.MaxInt64), Denormalized{5, Varint(2)}},
-		},
-		msgDesc:        msgDesc,
-		wantOutCompact: `Message{Tag{2, Varint}, Varint(0), Tag{2, Varint}, Denormalized{+5, Varint(2)}, Tag{2, Bytes}, LengthPrefix{Varint(-9223372036854775808), Varint(9223372036854775807), Denormalized{+5, Varint(2)}}}`,
-	}, {
-		raw: dhex("1801188180808080001a1affffffffffffffffff01feffffffffffffffff01818080808000"),
-		msg: Message{
-			Tag{3, VarintType}, Svarint(-1),
-			Tag{3, VarintType}, Denormalized{5, Svarint(-1)},
-			Tag{3, BytesType}, LengthPrefix{Svarint(math.MinInt64), Svarint(math.MaxInt64), Denormalized{5, Svarint(-1)}},
-		},
-		msgDesc: msgDesc,
-		wantOutMulti: `Message{
-	Tag{3, Varint}, Svarint(-1),
-	Tag{3, Varint}, Denormalized{+5, Svarint(-1)},
-	Tag{3, Bytes}, LengthPrefix{Svarint(-9223372036854775808), Svarint(9223372036854775807), Denormalized{+5, Svarint(-1)}},
-}`,
-	}, {
-		raw: dhex("200120818080808000221100ffffffffffffffffff01818080808000"),
-		msg: Message{
-			Tag{4, VarintType}, Uvarint(+1),
-			Tag{4, VarintType}, Denormalized{5, Uvarint(+1)},
-			Tag{4, BytesType}, LengthPrefix{Uvarint(0), Uvarint(math.MaxUint64), Denormalized{5, Uvarint(+1)}},
-		},
-		msgDesc: msgDesc,
-		wantOutSource: `protopack.Message{
-	protopack.Tag{4, protopack.VarintType}, protopack.Uvarint(1),
-	protopack.Tag{4, protopack.VarintType}, protopack.Denormalized{+5, protopack.Uvarint(1)},
-	protopack.Tag{4, protopack.BytesType}, protopack.LengthPrefix{protopack.Uvarint(0), protopack.Uvarint(18446744073709551615), protopack.Denormalized{+5, protopack.Uvarint(1)}},
-}`,
-	}, {
-		raw: dhex("2d010000002a0800000000ffffffff"),
-		msg: Message{
-			Tag{5, Fixed32Type}, Uint32(+1),
-			Tag{5, BytesType}, LengthPrefix{Uint32(0), Uint32(math.MaxUint32)},
-		},
-		msgDesc:        msgDesc,
-		wantOutCompact: `Message{Tag{5, Fixed32}, Uint32(1), Tag{5, Bytes}, LengthPrefix{Uint32(0), Uint32(4294967295)}}`,
-	}, {
-		raw: dhex("35ffffffff320800000080ffffff7f"),
-		msg: Message{
-			Tag{6, Fixed32Type}, Int32(-1),
-			Tag{6, BytesType}, LengthPrefix{Int32(math.MinInt32), Int32(math.MaxInt32)},
-		},
-		msgDesc: msgDesc,
-		wantOutMulti: `Message{
-	Tag{6, Fixed32}, Int32(-1),
-	Tag{6, Bytes}, LengthPrefix{Int32(-2147483648), Int32(2147483647)},
-}`,
-	}, {
-		raw: dhex("3ddb0f49403a1001000000ffff7f7f0000807f000080ff"),
-		msg: Message{
-			Tag{7, Fixed32Type}, Float32(math.Pi),
-			Tag{7, BytesType}, LengthPrefix{Float32(math.SmallestNonzeroFloat32), Float32(math.MaxFloat32), Float32(math.Inf(+1)), Float32(math.Inf(-1))},
-		},
-		msgDesc: msgDesc,
-		wantOutSource: `protopack.Message{
-	protopack.Tag{7, protopack.Fixed32Type}, protopack.Float32(3.1415927),
-	protopack.Tag{7, protopack.BytesType}, protopack.LengthPrefix{protopack.Float32(1e-45), protopack.Float32(3.4028235e+38), protopack.Float32(math.Inf(+1)), protopack.Float32(math.Inf(-1))},
-}`,
-	}, {
-		raw: dhex("41010000000000000042100000000000000000ffffffffffffffff"),
-		msg: Message{
-			Tag{8, Fixed64Type}, Uint64(+1),
-			Tag{8, BytesType}, LengthPrefix{Uint64(0), Uint64(math.MaxUint64)},
-		},
-		msgDesc:        msgDesc,
-		wantOutCompact: `Message{Tag{8, Fixed64}, Uint64(1), Tag{8, Bytes}, LengthPrefix{Uint64(0), Uint64(18446744073709551615)}}`,
-	}, {
-		raw: dhex("49ffffffffffffffff4a100000000000000080ffffffffffffff7f"),
-		msg: Message{
-			Tag{9, Fixed64Type}, Int64(-1),
-			Tag{9, BytesType}, LengthPrefix{Int64(math.MinInt64), Int64(math.MaxInt64)},
-		},
-		msgDesc: msgDesc,
-		wantOutMulti: `Message{
-	Tag{9, Fixed64}, Int64(-1),
-	Tag{9, Bytes}, LengthPrefix{Int64(-9223372036854775808), Int64(9223372036854775807)},
-}`,
-	}, {
-		raw: dhex("51182d4454fb21094052200100000000000000ffffffffffffef7f000000000000f07f000000000000f0ff"),
-		msg: Message{
-			Tag{10, Fixed64Type}, Float64(math.Pi),
-			Tag{10, BytesType}, LengthPrefix{Float64(math.SmallestNonzeroFloat64), Float64(math.MaxFloat64), Float64(math.Inf(+1)), Float64(math.Inf(-1))},
-		},
-		msgDesc: msgDesc,
-		wantOutMulti: `Message{
-	Tag{10, Fixed64}, Float64(3.141592653589793),
-	Tag{10, Bytes}, LengthPrefix{Float64(5e-324), Float64(1.7976931348623157e+308), Float64(+Inf), Float64(-Inf)},
-}`,
-	}, {
-		raw: dhex("5a06737472696e675a868080808000737472696e67"),
-		msg: Message{
-			Tag{11, BytesType}, String("string"),
-			Tag{11, BytesType}, Denormalized{+5, String("string")},
-		},
-		msgDesc:        msgDesc,
-		wantOutCompact: `Message{Tag{11, Bytes}, String("string"), Tag{11, Bytes}, Denormalized{+5, String("string")}}`,
-	}, {
-		raw: dhex("62056279746573628580808080006279746573"),
-		msg: Message{
-			Tag{12, BytesType}, Bytes("bytes"),
-			Tag{12, BytesType}, Denormalized{+5, Bytes("bytes")},
-		},
-		msgDesc: msgDesc,
-		wantOutMulti: `Message{
-	Tag{12, Bytes}, Bytes("bytes"),
-	Tag{12, Bytes}, Denormalized{+5, Bytes("bytes")},
-}`,
-	}, {
-		raw: dhex("6a28a006ffffffffffffffffff01a506ffffffffa106ffffffffffffffffa206056279746573a306a406"),
-		msg: Message{
-			Tag{13, BytesType}, LengthPrefix(Message{
-				Tag{100, VarintType}, Uvarint(math.MaxUint64),
-				Tag{100, Fixed32Type}, Uint32(math.MaxUint32),
-				Tag{100, Fixed64Type}, Uint64(math.MaxUint64),
-				Tag{100, BytesType}, Bytes("bytes"),
-				Tag{100, StartGroupType}, Tag{100, EndGroupType},
-			}),
-		},
-		msgDesc: msgDesc,
-		wantOutSource: `protopack.Message{
-	protopack.Tag{13, protopack.BytesType}, protopack.LengthPrefix(protopack.Message{
-		protopack.Tag{100, protopack.VarintType}, protopack.Uvarint(18446744073709551615),
-		protopack.Tag{100, protopack.Fixed32Type}, protopack.Uint32(4294967295),
-		protopack.Tag{100, protopack.Fixed64Type}, protopack.Uint64(18446744073709551615),
-		protopack.Tag{100, protopack.BytesType}, protopack.Bytes("bytes"),
-		protopack.Tag{100, protopack.StartGroupType},
-		protopack.Tag{100, protopack.EndGroupType},
-	}),
-}`,
-	}, {
-		raw: dhex("6a28a006ffffffffffffffffff01a506ffffffffa106ffffffffffffffffa206056279746573a306a406"),
-		msg: Message{
-			Tag{13, BytesType}, LengthPrefix(Message{
-				Tag{100, VarintType}, Uvarint(math.MaxUint64),
-				Tag{100, Fixed32Type}, Uint32(math.MaxUint32),
-				Tag{100, Fixed64Type}, Uint64(math.MaxUint64),
-				Tag{100, BytesType}, Bytes("bytes"),
-				Tag{100, StartGroupType}, Tag{100, EndGroupType},
-			}),
-		},
-		inferMsg: true,
-	}, {
-		raw: dhex("6a28a006ffffffffffffffffff01a506ffffffffa106ffffffffffffffffa206056279746573a306ac06"),
-		msg: Message{
-			Tag{13, BytesType}, Bytes(Message{
-				Tag{100, VarintType}, Uvarint(math.MaxUint64),
-				Tag{100, Fixed32Type}, Uint32(math.MaxUint32),
-				Tag{100, Fixed64Type}, Uint64(math.MaxUint64),
-				Tag{100, BytesType}, Bytes("bytes"),
-				Tag{100, StartGroupType}, Tag{101, EndGroupType},
-			}.Marshal()),
-		},
-		inferMsg: true,
-	}, {
-		raw: dhex("6aa88080808000a006ffffffffffffffffff01a506ffffffffa106ffffffffffffffffa206056279746573a306a406"),
-		msg: Message{
-			Tag{13, BytesType}, Denormalized{5, LengthPrefix(Message{
-				Tag{100, VarintType}, Uvarint(math.MaxUint64),
-				Tag{100, Fixed32Type}, Uint32(math.MaxUint32),
-				Tag{100, Fixed64Type}, Uint64(math.MaxUint64),
-				Tag{100, BytesType}, Bytes("bytes"),
-				Tag{100, StartGroupType}, Tag{100, EndGroupType},
-			})},
-		},
-		msgDesc:        msgDesc,
-		wantOutCompact: `Message{Tag{13, Bytes}, Denormalized{+5, LengthPrefix(Message{Tag{100, Varint}, Uvarint(18446744073709551615), Tag{100, Fixed32}, Uint32(4294967295), Tag{100, Fixed64}, Uint64(18446744073709551615), Tag{100, Bytes}, Bytes("bytes"), Tag{100, StartGroup}, Tag{100, EndGroup}})}}`,
-	}, {
-		raw: dhex("73a006ffffffffffffffffff01a506ffffffffa106ffffffffffffffffa206056279746573a306a40674"),
-		msg: Message{
-			Tag{14, StartGroupType}, Message{
-				Tag{100, VarintType}, Uvarint(math.MaxUint64),
-				Tag{100, Fixed32Type}, Uint32(math.MaxUint32),
-				Tag{100, Fixed64Type}, Uint64(math.MaxUint64),
-				Tag{100, BytesType}, Bytes("bytes"),
-				Tag{100, StartGroupType}, Tag{100, EndGroupType},
-			},
-			Tag{14, EndGroupType},
-		},
-		msgDesc: msgDesc,
-		wantOutMulti: `Message{
-	Tag{14, StartGroup},
-	Message{
-		Tag{100, Varint}, Uvarint(18446744073709551615),
-		Tag{100, Fixed32}, Uint32(4294967295),
-		Tag{100, Fixed64}, Uint64(18446744073709551615),
-		Tag{100, Bytes}, Bytes("bytes"),
-		Tag{100, StartGroup},
-		Tag{100, EndGroup},
-	},
-	Tag{14, EndGroup},
-}`,
-	}, {
-		raw: dhex("d0faa972cd02a5f09051c2d8aa0d6a26a89c311eddef024b423c0f6f47b64227a1600db56e3f73d4113096c9a88e2b99f2d847516853d76a1a6e9811c85a2ab3"),
-		msg: Message{
-			Tag{29970346, VarintType}, Uvarint(333),
-			Tag{21268228, Fixed32Type}, Uint32(229300418),
-			Tag{13, BytesType}, LengthPrefix(Message{
-				Tag{100805, VarintType}, Uvarint(30),
-				Tag{5883, Fixed32Type}, Uint32(255607371),
-				Tag{13, Type(7)},
-				Raw("G\xb6B'\xa1`\r\xb5n?s\xd4\x110\x96ɨ\x8e+\x99\xf2\xd8GQhS"),
-			}),
-			Tag{1706, Type(7)},
-			Raw("\x1an\x98\x11\xc8Z*\xb3"),
-		},
-		msgDesc: msgDesc,
-	}, {
-		raw: dhex("3d08d0e57f"),
-		msg: Message{
-			Tag{7, Fixed32Type}, Float32(math.Float32frombits(
-				// TODO: Remove workaround for compiler bug (see https://golang.org/issues/27193).
-				func() uint32 { return 0x7fe5d008 }(),
-			)),
-		},
-		msgDesc: msgDesc,
-		wantOutSource: `protopack.Message{
-	protopack.Tag{7, protopack.Fixed32Type}, protopack.Float32(math.Float32frombits(0x7fe5d008)),
-}`,
-	}, {
-		raw: dhex("51a8d65110771bf97f"),
-		msg: Message{
-			Tag{10, Fixed64Type}, Float64(math.Float64frombits(0x7ff91b771051d6a8)),
-		},
-		msgDesc: msgDesc,
-		wantOutSource: `protopack.Message{
-	protopack.Tag{10, protopack.Fixed64Type}, protopack.Float64(math.Float64frombits(0x7ff91b771051d6a8)),
-}`,
-	}, {
-		raw: dhex("ab2c14481ab3e9a76d937fb4dd5e6c616ef311f62b7fe888785fca5609ffe81c1064e50dd7a9edb408d317e2891c0d54c719446938d41ab0ccf8e61dc28b0ebb"),
-		msg: Message{
-			Tag{709, StartGroupType},
-			Tag{2, EndGroupType},
-			Tag{9, VarintType}, Uvarint(26),
-			Tag{28655254, StartGroupType},
-			Message{
-				Tag{2034, StartGroupType},
-				Tag{194006, EndGroupType},
-			},
-			Tag{13, EndGroupType},
-			Tag{12, Fixed64Type}, Uint64(9865274810543764334),
-			Tag{15, VarintType}, Uvarint(95),
-			Tag{1385, BytesType}, Bytes("\xff\xe8\x1c\x10d\xe5\rש"),
-			Tag{17229, Fixed32Type}, Uint32(2313295827),
-			Tag{3, EndGroupType},
-			Tag{1, Fixed32Type}, Uint32(1142540116),
-			Tag{13, Fixed64Type}, Uint64(2154683029754926136),
-			Tag{28856, BytesType},
-			Raw("\xbb"),
-		},
-		msgDesc: msgDesc,
-	}, {
-		raw: dhex("29baa4ac1c1e0a20183393bac434b8d3559337ec940050038770eaa9937f98e4"),
-		msg: Message{
-			Tag{5, Fixed64Type}, Uint64(1738400580611384506),
-			Tag{6, StartGroupType},
-			Message{
-				Tag{13771682, StartGroupType},
-				Message{
-					Tag{175415, VarintType}, Uvarint(7059),
-				},
-				Denormalized{+1, Tag{333, EndGroupType}},
-				Tag{10, VarintType}, Uvarint(3),
-				Tag{1792, Type(7)},
-				Raw("꩓\u007f\x98\xe4"),
-			},
-		},
-		msgDesc: msgDesc,
-	}}
-
-	equateFloatBits := cmp.Options{
-		cmp.Comparer(func(x, y Float32) bool {
-			return math.Float32bits(float32(x)) == math.Float32bits(float32(y))
-		}),
-		cmp.Comparer(func(x, y Float64) bool {
-			return math.Float64bits(float64(x)) == math.Float64bits(float64(y))
-		}),
-	}
-	for _, tt := range tests {
-		t.Run("", func(t *testing.T) {
-			var msg Message
-			raw := tt.msg.Marshal()
-			msg.unmarshal(tt.raw, tt.msgDesc, tt.inferMsg)
-
-			if !bytes.Equal(raw, tt.raw) {
-				t.Errorf("Marshal() mismatch:\ngot  %x\nwant %x", raw, tt.raw)
-			}
-			if diff := cmp.Diff(tt.msg, msg, equateFloatBits); diff != "" {
-				t.Errorf("Unmarshal() mismatch (-want +got):\n%s", diff)
-			}
-			if got, want := tt.msg.Size(), len(tt.raw); got != want {
-				t.Errorf("Size() = %v, want %v", got, want)
-			}
-			if tt.wantOutCompact != "" {
-				gotOut := fmt.Sprintf("%v", tt.msg)
-				if string(gotOut) != tt.wantOutCompact {
-					t.Errorf("fmt.Sprintf(%q, msg):\ngot:  %s\nwant: %s", "%v", gotOut, tt.wantOutCompact)
-				}
-			}
-			if tt.wantOutMulti != "" {
-				gotOut := fmt.Sprintf("%+v", tt.msg)
-				if string(gotOut) != tt.wantOutMulti {
-					t.Errorf("fmt.Sprintf(%q, msg):\ngot:  %s\nwant: %s", "%+v", gotOut, tt.wantOutMulti)
-				}
-			}
-			if tt.wantOutSource != "" {
-				gotOut := fmt.Sprintf("%#v", tt.msg)
-				if string(gotOut) != tt.wantOutSource {
-					t.Errorf("fmt.Sprintf(%q, msg):\ngot:  %s\nwant: %s", "%#v", gotOut, tt.wantOutSource)
-				}
-			}
-		})
-	}
-}
diff --git a/testing/prototest/enum.go b/testing/prototest/enum.go
deleted file mode 100644
index 9ee422e..0000000
--- a/testing/prototest/enum.go
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package prototest
-
-import (
-	"testing"
-
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-)
-
-// Enum tests an EnumType implementation.
-type Enum struct{}
-
-func (test Enum) Test(t testing.TB, et pref.EnumType) {
-	ed := et.Descriptor()
-	values := ed.Values()
-	for i := 0; i < values.Len(); i++ {
-		evd := values.Get(i)
-		num := evd.Number()
-		e := et.New(num)
-		if e.Descriptor() != ed {
-			t.Errorf("enumType.New(%v).Descriptor() != enumType.Descriptor(), should match", num)
-		}
-		if e.Type() != et {
-			t.Errorf("enumType.New(%v).Type() != enumType, should match", num)
-		}
-		if got, want := e.Number(), num; got != want {
-			t.Errorf("enumType.New(%v).Number() = %v, want %v", num, got, want)
-		}
-	}
-}
diff --git a/testing/prototest/message.go b/testing/prototest/message.go
deleted file mode 100644
index c104605..0000000
--- a/testing/prototest/message.go
+++ /dev/null
@@ -1,894 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package prototest exercises protobuf reflection.
-package prototest
-
-import (
-	"bytes"
-	"fmt"
-	"math"
-	"reflect"
-	"sort"
-	"strings"
-	"testing"
-
-	"google.golang.org/protobuf/encoding/prototext"
-	"google.golang.org/protobuf/encoding/protowire"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/reflect/protoregistry"
-)
-
-// TODO: Test invalid field descriptors or oneof descriptors.
-// TODO: This should test the functionality that can be provided by fast-paths.
-
-// Message tests a message implemention.
-type Message struct {
-	// Resolver is used to determine the list of extension fields to test with.
-	// If nil, this defaults to using protoregistry.GlobalTypes.
-	Resolver interface {
-		FindExtensionByName(field pref.FullName) (pref.ExtensionType, error)
-		FindExtensionByNumber(message pref.FullName, field pref.FieldNumber) (pref.ExtensionType, error)
-		RangeExtensionsByMessage(message pref.FullName, f func(pref.ExtensionType) bool)
-	}
-}
-
-// Test performs tests on a MessageType implementation.
-func (test Message) Test(t testing.TB, mt pref.MessageType) {
-	testType(t, mt)
-
-	md := mt.Descriptor()
-	m1 := mt.New()
-	for i := 0; i < md.Fields().Len(); i++ {
-		fd := md.Fields().Get(i)
-		testField(t, m1, fd)
-	}
-	if test.Resolver == nil {
-		test.Resolver = protoregistry.GlobalTypes
-	}
-	var extTypes []pref.ExtensionType
-	test.Resolver.RangeExtensionsByMessage(md.FullName(), func(e pref.ExtensionType) bool {
-		extTypes = append(extTypes, e)
-		return true
-	})
-	for _, xt := range extTypes {
-		testField(t, m1, xt.TypeDescriptor())
-	}
-	for i := 0; i < md.Oneofs().Len(); i++ {
-		testOneof(t, m1, md.Oneofs().Get(i))
-	}
-	testUnknown(t, m1)
-
-	// Test round-trip marshal/unmarshal.
-	m2 := mt.New().Interface()
-	populateMessage(m2.ProtoReflect(), 1, nil)
-	for _, xt := range extTypes {
-		m2.ProtoReflect().Set(xt.TypeDescriptor(), newValue(m2.ProtoReflect(), xt.TypeDescriptor(), 1, nil))
-	}
-	b, err := proto.MarshalOptions{
-		AllowPartial: true,
-	}.Marshal(m2)
-	if err != nil {
-		t.Errorf("Marshal() = %v, want nil\n%v", err, prototext.Format(m2))
-	}
-	m3 := mt.New().Interface()
-	if err := (proto.UnmarshalOptions{
-		AllowPartial: true,
-		Resolver:     test.Resolver,
-	}.Unmarshal(b, m3)); err != nil {
-		t.Errorf("Unmarshal() = %v, want nil\n%v", err, prototext.Format(m2))
-	}
-	if !proto.Equal(m2, m3) {
-		t.Errorf("round-trip marshal/unmarshal did not preserve message\nOriginal:\n%v\nNew:\n%v", prototext.Format(m2), prototext.Format(m3))
-	}
-}
-
-func testType(t testing.TB, mt pref.MessageType) {
-	m := mt.New().Interface()
-	want := reflect.TypeOf(m)
-	if got := reflect.TypeOf(m.ProtoReflect().Interface()); got != want {
-		t.Errorf("type mismatch: reflect.TypeOf(m) != reflect.TypeOf(m.ProtoReflect().Interface()): %v != %v", got, want)
-	}
-	if got := reflect.TypeOf(m.ProtoReflect().New().Interface()); got != want {
-		t.Errorf("type mismatch: reflect.TypeOf(m) != reflect.TypeOf(m.ProtoReflect().New().Interface()): %v != %v", got, want)
-	}
-	if got := reflect.TypeOf(m.ProtoReflect().Type().Zero().Interface()); got != want {
-		t.Errorf("type mismatch: reflect.TypeOf(m) != reflect.TypeOf(m.ProtoReflect().Type().Zero().Interface()): %v != %v", got, want)
-	}
-	if mt, ok := mt.(pref.MessageFieldTypes); ok {
-		testFieldTypes(t, mt)
-	}
-}
-
-func testFieldTypes(t testing.TB, mt pref.MessageFieldTypes) {
-	descName := func(d pref.Descriptor) pref.FullName {
-		if d == nil {
-			return "<nil>"
-		}
-		return d.FullName()
-	}
-	typeName := func(mt pref.MessageType) pref.FullName {
-		if mt == nil {
-			return "<nil>"
-		}
-		return mt.Descriptor().FullName()
-	}
-	adjustExpr := func(idx int, expr string) string {
-		expr = strings.Replace(expr, "fd.", "md.Fields().Get(i).", -1)
-		expr = strings.Replace(expr, "(fd)", "(md.Fields().Get(i))", -1)
-		expr = strings.Replace(expr, "mti.", "mt.Message(i).", -1)
-		expr = strings.Replace(expr, "(i)", fmt.Sprintf("(%d)", idx), -1)
-		return expr
-	}
-	checkEnumDesc := func(idx int, gotExpr, wantExpr string, got, want protoreflect.EnumDescriptor) {
-		if got != want {
-			t.Errorf("descriptor mismatch: %v != %v: %v != %v", adjustExpr(idx, gotExpr), adjustExpr(idx, wantExpr), descName(got), descName(want))
-		}
-	}
-	checkMessageDesc := func(idx int, gotExpr, wantExpr string, got, want protoreflect.MessageDescriptor) {
-		if got != want {
-			t.Errorf("descriptor mismatch: %v != %v: %v != %v", adjustExpr(idx, gotExpr), adjustExpr(idx, wantExpr), descName(got), descName(want))
-		}
-	}
-	checkMessageType := func(idx int, gotExpr, wantExpr string, got, want protoreflect.MessageType) {
-		if got != want {
-			t.Errorf("type mismatch: %v != %v: %v != %v", adjustExpr(idx, gotExpr), adjustExpr(idx, wantExpr), typeName(got), typeName(want))
-		}
-	}
-
-	fds := mt.Descriptor().Fields()
-	m := mt.New()
-	for i := 0; i < fds.Len(); i++ {
-		fd := fds.Get(i)
-		switch {
-		case fd.IsList():
-			if fd.Enum() != nil {
-				checkEnumDesc(i,
-					"mt.Enum(i).Descriptor()", "fd.Enum()",
-					mt.Enum(i).Descriptor(), fd.Enum())
-			}
-			if fd.Message() != nil {
-				checkMessageDesc(i,
-					"mt.Message(i).Descriptor()", "fd.Message()",
-					mt.Message(i).Descriptor(), fd.Message())
-				checkMessageType(i,
-					"mt.Message(i)", "m.NewField(fd).List().NewElement().Message().Type()",
-					mt.Message(i), m.NewField(fd).List().NewElement().Message().Type())
-			}
-		case fd.IsMap():
-			mti := mt.Message(i)
-			if m := mti.New(); m != nil {
-				checkMessageDesc(i,
-					"m.Descriptor()", "fd.Message()",
-					m.Descriptor(), fd.Message())
-			}
-			if m := mti.Zero(); m != nil {
-				checkMessageDesc(i,
-					"m.Descriptor()", "fd.Message()",
-					m.Descriptor(), fd.Message())
-			}
-			checkMessageDesc(i,
-				"mti.Descriptor()", "fd.Message()",
-				mti.Descriptor(), fd.Message())
-			if mti := mti.(pref.MessageFieldTypes); mti != nil {
-				if fd.MapValue().Enum() != nil {
-					checkEnumDesc(i,
-						"mti.Enum(fd.MapValue().Index()).Descriptor()", "fd.MapValue().Enum()",
-						mti.Enum(fd.MapValue().Index()).Descriptor(), fd.MapValue().Enum())
-				}
-				if fd.MapValue().Message() != nil {
-					checkMessageDesc(i,
-						"mti.Message(fd.MapValue().Index()).Descriptor()", "fd.MapValue().Message()",
-						mti.Message(fd.MapValue().Index()).Descriptor(), fd.MapValue().Message())
-					checkMessageType(i,
-						"mti.Message(fd.MapValue().Index())", "m.NewField(fd).Map().NewValue().Message().Type()",
-						mti.Message(fd.MapValue().Index()), m.NewField(fd).Map().NewValue().Message().Type())
-				}
-			}
-		default:
-			if fd.Enum() != nil {
-				checkEnumDesc(i,
-					"mt.Enum(i).Descriptor()", "fd.Enum()",
-					mt.Enum(i).Descriptor(), fd.Enum())
-			}
-			if fd.Message() != nil {
-				checkMessageDesc(i,
-					"mt.Message(i).Descriptor()", "fd.Message()",
-					mt.Message(i).Descriptor(), fd.Message())
-				checkMessageType(i,
-					"mt.Message(i)", "m.NewField(fd).Message().Type()",
-					mt.Message(i), m.NewField(fd).Message().Type())
-			}
-		}
-	}
-}
-
-// testField exercises set/get/has/clear of a field.
-func testField(t testing.TB, m pref.Message, fd pref.FieldDescriptor) {
-	name := fd.FullName()
-	num := fd.Number()
-
-	switch {
-	case fd.IsList():
-		testFieldList(t, m, fd)
-	case fd.IsMap():
-		testFieldMap(t, m, fd)
-	case fd.Message() != nil:
-	default:
-		if got, want := m.NewField(fd), fd.Default(); !valueEqual(got, want) {
-			t.Errorf("Message.NewField(%v) = %v, want default value %v", name, formatValue(got), formatValue(want))
-		}
-		if fd.Kind() == pref.FloatKind || fd.Kind() == pref.DoubleKind {
-			testFieldFloat(t, m, fd)
-		}
-	}
-
-	// Set to a non-zero value, the zero value, different non-zero values.
-	for _, n := range []seed{1, 0, minVal, maxVal} {
-		v := newValue(m, fd, n, nil)
-		m.Set(fd, v)
-		wantHas := true
-		if n == 0 {
-			if fd.Syntax() == pref.Proto3 && fd.Message() == nil {
-				wantHas = false
-			}
-			if fd.IsExtension() {
-				wantHas = true
-			}
-			if fd.Cardinality() == pref.Repeated {
-				wantHas = false
-			}
-			if fd.ContainingOneof() != nil {
-				wantHas = true
-			}
-		}
-		if fd.Syntax() == pref.Proto3 && fd.Cardinality() != pref.Repeated && fd.ContainingOneof() == nil && fd.Kind() == pref.EnumKind && v.Enum() == 0 {
-			wantHas = false
-		}
-		if got, want := m.Has(fd), wantHas; got != want {
-			t.Errorf("after setting %q to %v:\nMessage.Has(%v) = %v, want %v", name, formatValue(v), num, got, want)
-		}
-		if got, want := m.Get(fd), v; !valueEqual(got, want) {
-			t.Errorf("after setting %q:\nMessage.Get(%v) = %v, want %v", name, num, formatValue(got), formatValue(want))
-		}
-		found := false
-		m.Range(func(d pref.FieldDescriptor, got pref.Value) bool {
-			if fd != d {
-				return true
-			}
-			found = true
-			if want := v; !valueEqual(got, want) {
-				t.Errorf("after setting %q:\nMessage.Range got value %v, want %v", name, formatValue(got), formatValue(want))
-			}
-			return true
-		})
-		if got, want := wantHas, found; got != want {
-			t.Errorf("after setting %q:\nMessageRange saw field: %v, want %v", name, got, want)
-		}
-	}
-
-	m.Clear(fd)
-	if got, want := m.Has(fd), false; got != want {
-		t.Errorf("after clearing %q:\nMessage.Has(%v) = %v, want %v", name, num, got, want)
-	}
-	switch {
-	case fd.IsList():
-		if got := m.Get(fd); got.List().Len() != 0 {
-			t.Errorf("after clearing %q:\nMessage.Get(%v) = %v, want empty list", name, num, formatValue(got))
-		}
-	case fd.IsMap():
-		if got := m.Get(fd); got.Map().Len() != 0 {
-			t.Errorf("after clearing %q:\nMessage.Get(%v) = %v, want empty map", name, num, formatValue(got))
-		}
-	case fd.Message() == nil:
-		if got, want := m.Get(fd), fd.Default(); !valueEqual(got, want) {
-			t.Errorf("after clearing %q:\nMessage.Get(%v) = %v, want default %v", name, num, formatValue(got), formatValue(want))
-		}
-	}
-
-	// Set to the default value.
-	switch {
-	case fd.IsList() || fd.IsMap():
-		m.Set(fd, m.Mutable(fd))
-		if got, want := m.Has(fd), (fd.IsExtension() && fd.Cardinality() != pref.Repeated) || fd.ContainingOneof() != nil; got != want {
-			t.Errorf("after setting %q to default:\nMessage.Has(%v) = %v, want %v", name, num, got, want)
-		}
-	case fd.Message() == nil:
-		m.Set(fd, m.Get(fd))
-		if got, want := m.Get(fd), fd.Default(); !valueEqual(got, want) {
-			t.Errorf("after setting %q to default:\nMessage.Get(%v) = %v, want default %v", name, num, formatValue(got), formatValue(want))
-		}
-	}
-	m.Clear(fd)
-
-	// Set to the wrong type.
-	v := pref.ValueOfString("")
-	if fd.Kind() == pref.StringKind {
-		v = pref.ValueOfInt32(0)
-	}
-	if !panics(func() {
-		m.Set(fd, v)
-	}) {
-		t.Errorf("setting %v to %T succeeds, want panic", name, v.Interface())
-	}
-}
-
-// testFieldMap tests set/get/has/clear of entries in a map field.
-func testFieldMap(t testing.TB, m pref.Message, fd pref.FieldDescriptor) {
-	name := fd.FullName()
-	num := fd.Number()
-
-	// New values.
-	m.Clear(fd) // start with an empty map
-	mapv := m.Get(fd).Map()
-	if mapv.IsValid() {
-		t.Errorf("after clearing field: message.Get(%v).IsValid() = true, want false", name)
-	}
-	if got, want := mapv.NewValue(), newMapValue(fd, mapv, 0, nil); !valueEqual(got, want) {
-		t.Errorf("message.Get(%v).NewValue() = %v, want %v", name, formatValue(got), formatValue(want))
-	}
-	if !panics(func() {
-		m.Set(fd, pref.ValueOfMap(mapv))
-	}) {
-		t.Errorf("message.Set(%v, <invalid>) does not panic", name)
-	}
-	if !panics(func() {
-		mapv.Set(newMapKey(fd, 0), newMapValue(fd, mapv, 0, nil))
-	}) {
-		t.Errorf("message.Get(%v).Set(...) of invalid map does not panic", name)
-	}
-	mapv = m.Mutable(fd).Map() // mutable map
-	if !mapv.IsValid() {
-		t.Errorf("message.Mutable(%v).IsValid() = false, want true", name)
-	}
-	if got, want := mapv.NewValue(), newMapValue(fd, mapv, 0, nil); !valueEqual(got, want) {
-		t.Errorf("message.Mutable(%v).NewValue() = %v, want %v", name, formatValue(got), formatValue(want))
-	}
-
-	// Add values.
-	want := make(testMap)
-	for i, n := range []seed{1, 0, minVal, maxVal} {
-		if got, want := m.Has(fd), i > 0; got != want {
-			t.Errorf("after inserting %d elements to %q:\nMessage.Has(%v) = %v, want %v", i, name, num, got, want)
-		}
-
-		k := newMapKey(fd, n)
-		v := newMapValue(fd, mapv, n, nil)
-		mapv.Set(k, v)
-		want.Set(k, v)
-		if got, want := m.Get(fd), pref.ValueOfMap(want); !valueEqual(got, want) {
-			t.Errorf("after inserting %d elements to %q:\nMessage.Get(%v) = %v, want %v", i, name, num, formatValue(got), formatValue(want))
-		}
-	}
-
-	// Set values.
-	want.Range(func(k pref.MapKey, v pref.Value) bool {
-		nv := newMapValue(fd, mapv, 10, nil)
-		mapv.Set(k, nv)
-		want.Set(k, nv)
-		if got, want := m.Get(fd), pref.ValueOfMap(want); !valueEqual(got, want) {
-			t.Errorf("after setting element %v of %q:\nMessage.Get(%v) = %v, want %v", formatValue(k.Value()), name, num, formatValue(got), formatValue(want))
-		}
-		return true
-	})
-
-	// Clear values.
-	want.Range(func(k pref.MapKey, v pref.Value) bool {
-		mapv.Clear(k)
-		want.Clear(k)
-		if got, want := m.Has(fd), want.Len() > 0; got != want {
-			t.Errorf("after clearing elements of %q:\nMessage.Has(%v) = %v, want %v", name, num, got, want)
-		}
-		if got, want := m.Get(fd), pref.ValueOfMap(want); !valueEqual(got, want) {
-			t.Errorf("after clearing elements of %q:\nMessage.Get(%v) = %v, want %v", name, num, formatValue(got), formatValue(want))
-		}
-		return true
-	})
-	if mapv := m.Get(fd).Map(); mapv.IsValid() {
-		t.Errorf("after clearing all elements: message.Get(%v).IsValid() = true, want false %v", name, formatValue(pref.ValueOfMap(mapv)))
-	}
-
-	// Non-existent map keys.
-	missingKey := newMapKey(fd, 1)
-	if got, want := mapv.Has(missingKey), false; got != want {
-		t.Errorf("non-existent map key in %q: Map.Has(%v) = %v, want %v", name, formatValue(missingKey.Value()), got, want)
-	}
-	if got, want := mapv.Get(missingKey).IsValid(), false; got != want {
-		t.Errorf("non-existent map key in %q: Map.Get(%v).IsValid() = %v, want %v", name, formatValue(missingKey.Value()), got, want)
-	}
-	mapv.Clear(missingKey) // noop
-
-	// Mutable.
-	if fd.MapValue().Message() == nil {
-		if !panics(func() {
-			mapv.Mutable(newMapKey(fd, 1))
-		}) {
-			t.Errorf("Mutable on %q succeeds, want panic", name)
-		}
-	} else {
-		k := newMapKey(fd, 1)
-		v := mapv.Mutable(k)
-		if got, want := mapv.Len(), 1; got != want {
-			t.Errorf("after Mutable on %q, Map.Len() = %v, want %v", name, got, want)
-		}
-		populateMessage(v.Message(), 1, nil)
-		if !valueEqual(mapv.Get(k), v) {
-			t.Errorf("after Mutable on %q, changing new mutable value does not change map entry", name)
-		}
-		mapv.Clear(k)
-	}
-}
-
-type testMap map[interface{}]pref.Value
-
-func (m testMap) Get(k pref.MapKey) pref.Value     { return m[k.Interface()] }
-func (m testMap) Set(k pref.MapKey, v pref.Value)  { m[k.Interface()] = v }
-func (m testMap) Has(k pref.MapKey) bool           { return m.Get(k).IsValid() }
-func (m testMap) Clear(k pref.MapKey)              { delete(m, k.Interface()) }
-func (m testMap) Mutable(k pref.MapKey) pref.Value { panic("unimplemented") }
-func (m testMap) Len() int                         { return len(m) }
-func (m testMap) NewValue() pref.Value             { panic("unimplemented") }
-func (m testMap) Range(f func(pref.MapKey, pref.Value) bool) {
-	for k, v := range m {
-		if !f(pref.ValueOf(k).MapKey(), v) {
-			return
-		}
-	}
-}
-func (m testMap) IsValid() bool { return true }
-
-// testFieldList exercises set/get/append/truncate of values in a list.
-func testFieldList(t testing.TB, m pref.Message, fd pref.FieldDescriptor) {
-	name := fd.FullName()
-	num := fd.Number()
-
-	m.Clear(fd) // start with an empty list
-	list := m.Get(fd).List()
-	if list.IsValid() {
-		t.Errorf("message.Get(%v).IsValid() = true, want false", name)
-	}
-	if !panics(func() {
-		m.Set(fd, pref.ValueOfList(list))
-	}) {
-		t.Errorf("message.Set(%v, <invalid>) does not panic", name)
-	}
-	if !panics(func() {
-		list.Append(newListElement(fd, list, 0, nil))
-	}) {
-		t.Errorf("message.Get(%v).Append(...) of invalid list does not panic", name)
-	}
-	if got, want := list.NewElement(), newListElement(fd, list, 0, nil); !valueEqual(got, want) {
-		t.Errorf("message.Get(%v).NewElement() = %v, want %v", name, formatValue(got), formatValue(want))
-	}
-	list = m.Mutable(fd).List() // mutable list
-	if !list.IsValid() {
-		t.Errorf("message.Get(%v).IsValid() = false, want true", name)
-	}
-	if got, want := list.NewElement(), newListElement(fd, list, 0, nil); !valueEqual(got, want) {
-		t.Errorf("message.Mutable(%v).NewElement() = %v, want %v", name, formatValue(got), formatValue(want))
-	}
-
-	// Append values.
-	var want pref.List = &testList{}
-	for i, n := range []seed{1, 0, minVal, maxVal} {
-		if got, want := m.Has(fd), i > 0; got != want {
-			t.Errorf("after appending %d elements to %q:\nMessage.Has(%v) = %v, want %v", i, name, num, got, want)
-		}
-		v := newListElement(fd, list, n, nil)
-		want.Append(v)
-		list.Append(v)
-
-		if got, want := m.Get(fd), pref.ValueOfList(want); !valueEqual(got, want) {
-			t.Errorf("after appending %d elements to %q:\nMessage.Get(%v) = %v, want %v", i+1, name, num, formatValue(got), formatValue(want))
-		}
-	}
-
-	// Set values.
-	for i := 0; i < want.Len(); i++ {
-		v := newListElement(fd, list, seed(i+10), nil)
-		want.Set(i, v)
-		list.Set(i, v)
-		if got, want := m.Get(fd), pref.ValueOfList(want); !valueEqual(got, want) {
-			t.Errorf("after setting element %d of %q:\nMessage.Get(%v) = %v, want %v", i, name, num, formatValue(got), formatValue(want))
-		}
-	}
-
-	// Truncate.
-	for want.Len() > 0 {
-		n := want.Len() - 1
-		want.Truncate(n)
-		list.Truncate(n)
-		if got, want := m.Has(fd), want.Len() > 0; got != want {
-			t.Errorf("after truncating %q to %d:\nMessage.Has(%v) = %v, want %v", name, n, num, got, want)
-		}
-		if got, want := m.Get(fd), pref.ValueOfList(want); !valueEqual(got, want) {
-			t.Errorf("after truncating %q to %d:\nMessage.Get(%v) = %v, want %v", name, n, num, formatValue(got), formatValue(want))
-		}
-	}
-
-	// AppendMutable.
-	if fd.Message() == nil {
-		if !panics(func() {
-			list.AppendMutable()
-		}) {
-			t.Errorf("AppendMutable on %q succeeds, want panic", name)
-		}
-	} else {
-		v := list.AppendMutable()
-		if got, want := list.Len(), 1; got != want {
-			t.Errorf("after AppendMutable on %q, list.Len() = %v, want %v", name, got, want)
-		}
-		populateMessage(v.Message(), 1, nil)
-		if !valueEqual(list.Get(0), v) {
-			t.Errorf("after AppendMutable on %q, changing new mutable value does not change list item 0", name)
-		}
-		want.Truncate(0)
-	}
-}
-
-type testList struct {
-	a []pref.Value
-}
-
-func (l *testList) Append(v pref.Value)       { l.a = append(l.a, v) }
-func (l *testList) AppendMutable() pref.Value { panic("unimplemented") }
-func (l *testList) Get(n int) pref.Value      { return l.a[n] }
-func (l *testList) Len() int                  { return len(l.a) }
-func (l *testList) Set(n int, v pref.Value)   { l.a[n] = v }
-func (l *testList) Truncate(n int)            { l.a = l.a[:n] }
-func (l *testList) NewElement() pref.Value    { panic("unimplemented") }
-func (l *testList) IsValid() bool             { return true }
-
-// testFieldFloat exercises some interesting floating-point scalar field values.
-func testFieldFloat(t testing.TB, m pref.Message, fd pref.FieldDescriptor) {
-	name := fd.FullName()
-	num := fd.Number()
-
-	for _, v := range []float64{math.Inf(-1), math.Inf(1), math.NaN(), math.Copysign(0, -1)} {
-		var val pref.Value
-		if fd.Kind() == pref.FloatKind {
-			val = pref.ValueOfFloat32(float32(v))
-		} else {
-			val = pref.ValueOfFloat64(float64(v))
-		}
-		m.Set(fd, val)
-		// Note that Has is true for -0.
-		if got, want := m.Has(fd), true; got != want {
-			t.Errorf("after setting %v to %v: Message.Has(%v) = %v, want %v", name, v, num, got, want)
-		}
-		if got, want := m.Get(fd), val; !valueEqual(got, want) {
-			t.Errorf("after setting %v: Message.Get(%v) = %v, want %v", name, num, formatValue(got), formatValue(want))
-		}
-	}
-}
-
-// testOneof tests the behavior of fields in a oneof.
-func testOneof(t testing.TB, m pref.Message, od pref.OneofDescriptor) {
-	for _, mutable := range []bool{false, true} {
-		for i := 0; i < od.Fields().Len(); i++ {
-			fda := od.Fields().Get(i)
-			if mutable {
-				// Set fields by requesting a mutable reference.
-				if !fda.IsMap() && !fda.IsList() && fda.Message() == nil {
-					continue
-				}
-				_ = m.Mutable(fda)
-			} else {
-				// Set fields explicitly.
-				m.Set(fda, newValue(m, fda, 1, nil))
-			}
-			if got, want := m.WhichOneof(od), fda; got != want {
-				t.Errorf("after setting oneof field %q:\nWhichOneof(%q) = %v, want %v", fda.FullName(), fda.Name(), got, want)
-			}
-			for j := 0; j < od.Fields().Len(); j++ {
-				fdb := od.Fields().Get(j)
-				if got, want := m.Has(fdb), i == j; got != want {
-					t.Errorf("after setting oneof field %q:\nGet(%q) = %v, want %v", fda.FullName(), fdb.FullName(), got, want)
-				}
-			}
-		}
-	}
-}
-
-// testUnknown tests the behavior of unknown fields.
-func testUnknown(t testing.TB, m pref.Message) {
-	var b []byte
-	b = protowire.AppendTag(b, 1000, protowire.VarintType)
-	b = protowire.AppendVarint(b, 1001)
-	m.SetUnknown(pref.RawFields(b))
-	if got, want := []byte(m.GetUnknown()), b; !bytes.Equal(got, want) {
-		t.Errorf("after setting unknown fields:\nGetUnknown() = %v, want %v", got, want)
-	}
-}
-
-func formatValue(v pref.Value) string {
-	switch v := v.Interface().(type) {
-	case pref.List:
-		var buf bytes.Buffer
-		buf.WriteString("list[")
-		for i := 0; i < v.Len(); i++ {
-			if i > 0 {
-				buf.WriteString(" ")
-			}
-			buf.WriteString(formatValue(v.Get(i)))
-		}
-		buf.WriteString("]")
-		return buf.String()
-	case pref.Map:
-		var buf bytes.Buffer
-		buf.WriteString("map[")
-		var keys []pref.MapKey
-		v.Range(func(k pref.MapKey, v pref.Value) bool {
-			keys = append(keys, k)
-			return true
-		})
-		sort.Slice(keys, func(i, j int) bool {
-			return keys[i].String() < keys[j].String()
-		})
-		for i, k := range keys {
-			if i > 0 {
-				buf.WriteString(" ")
-			}
-			buf.WriteString(formatValue(k.Value()))
-			buf.WriteString(":")
-			buf.WriteString(formatValue(v.Get(k)))
-		}
-		buf.WriteString("]")
-		return buf.String()
-	case pref.Message:
-		b, err := prototext.Marshal(v.Interface())
-		if err != nil {
-			return fmt.Sprintf("<%v>", err)
-		}
-		return fmt.Sprintf("%v{%s}", v.Descriptor().FullName(), b)
-	case string:
-		return fmt.Sprintf("%q", v)
-	default:
-		return fmt.Sprint(v)
-	}
-}
-
-func valueEqual(a, b pref.Value) bool {
-	ai, bi := a.Interface(), b.Interface()
-	switch ai.(type) {
-	case pref.Message:
-		return proto.Equal(
-			a.Message().Interface(),
-			b.Message().Interface(),
-		)
-	case pref.List:
-		lista, listb := a.List(), b.List()
-		if lista.Len() != listb.Len() {
-			return false
-		}
-		for i := 0; i < lista.Len(); i++ {
-			if !valueEqual(lista.Get(i), listb.Get(i)) {
-				return false
-			}
-		}
-		return true
-	case pref.Map:
-		mapa, mapb := a.Map(), b.Map()
-		if mapa.Len() != mapb.Len() {
-			return false
-		}
-		equal := true
-		mapa.Range(func(k pref.MapKey, v pref.Value) bool {
-			if !valueEqual(v, mapb.Get(k)) {
-				equal = false
-				return false
-			}
-			return true
-		})
-		return equal
-	case []byte:
-		return bytes.Equal(a.Bytes(), b.Bytes())
-	case float32:
-		// NaNs are equal, but must be the same NaN.
-		return math.Float32bits(ai.(float32)) == math.Float32bits(bi.(float32))
-	case float64:
-		// NaNs are equal, but must be the same NaN.
-		return math.Float64bits(ai.(float64)) == math.Float64bits(bi.(float64))
-	default:
-		return ai == bi
-	}
-}
-
-// A seed is used to vary the content of a value.
-//
-// A seed of 0 is the zero value. Messages do not have a zero-value; a 0-seeded messages
-// is unpopulated.
-//
-// A seed of minVal or maxVal is the least or greatest value of the value type.
-type seed int
-
-const (
-	minVal seed = -1
-	maxVal seed = -2
-)
-
-// newSeed creates new seed values from a base, for example to create seeds for the
-// elements in a list. If the input seed is minVal or maxVal, so is the output.
-func newSeed(n seed, adjust ...int) seed {
-	switch n {
-	case minVal, maxVal:
-		return n
-	}
-	for _, a := range adjust {
-		n = 10*n + seed(a)
-	}
-	return n
-}
-
-// newValue returns a new value assignable to a field.
-//
-// The stack parameter is used to avoid infinite recursion when populating circular
-// data structures.
-func newValue(m pref.Message, fd pref.FieldDescriptor, n seed, stack []pref.MessageDescriptor) pref.Value {
-	switch {
-	case fd.IsList():
-		if n == 0 {
-			return m.New().Mutable(fd)
-		}
-		list := m.NewField(fd).List()
-		list.Append(newListElement(fd, list, 0, stack))
-		list.Append(newListElement(fd, list, minVal, stack))
-		list.Append(newListElement(fd, list, maxVal, stack))
-		list.Append(newListElement(fd, list, n, stack))
-		return pref.ValueOfList(list)
-	case fd.IsMap():
-		if n == 0 {
-			return m.New().Mutable(fd)
-		}
-		mapv := m.NewField(fd).Map()
-		mapv.Set(newMapKey(fd, 0), newMapValue(fd, mapv, 0, stack))
-		mapv.Set(newMapKey(fd, minVal), newMapValue(fd, mapv, minVal, stack))
-		mapv.Set(newMapKey(fd, maxVal), newMapValue(fd, mapv, maxVal, stack))
-		mapv.Set(newMapKey(fd, n), newMapValue(fd, mapv, newSeed(n, 0), stack))
-		return pref.ValueOfMap(mapv)
-	case fd.Message() != nil:
-		return populateMessage(m.NewField(fd).Message(), n, stack)
-	default:
-		return newScalarValue(fd, n)
-	}
-}
-
-func newListElement(fd pref.FieldDescriptor, list pref.List, n seed, stack []pref.MessageDescriptor) pref.Value {
-	if fd.Message() == nil {
-		return newScalarValue(fd, n)
-	}
-	return populateMessage(list.NewElement().Message(), n, stack)
-}
-
-func newMapKey(fd pref.FieldDescriptor, n seed) pref.MapKey {
-	kd := fd.MapKey()
-	return newScalarValue(kd, n).MapKey()
-}
-
-func newMapValue(fd pref.FieldDescriptor, mapv pref.Map, n seed, stack []pref.MessageDescriptor) pref.Value {
-	vd := fd.MapValue()
-	if vd.Message() == nil {
-		return newScalarValue(vd, n)
-	}
-	return populateMessage(mapv.NewValue().Message(), n, stack)
-}
-
-func newScalarValue(fd pref.FieldDescriptor, n seed) pref.Value {
-	switch fd.Kind() {
-	case pref.BoolKind:
-		return pref.ValueOfBool(n != 0)
-	case pref.EnumKind:
-		vals := fd.Enum().Values()
-		var i int
-		switch n {
-		case minVal:
-			i = 0
-		case maxVal:
-			i = vals.Len() - 1
-		default:
-			i = int(n) % vals.Len()
-		}
-		return pref.ValueOfEnum(vals.Get(i).Number())
-	case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
-		switch n {
-		case minVal:
-			return pref.ValueOfInt32(math.MinInt32)
-		case maxVal:
-			return pref.ValueOfInt32(math.MaxInt32)
-		default:
-			return pref.ValueOfInt32(int32(n))
-		}
-	case pref.Uint32Kind, pref.Fixed32Kind:
-		switch n {
-		case minVal:
-			// Only use 0 for the zero value.
-			return pref.ValueOfUint32(1)
-		case maxVal:
-			return pref.ValueOfUint32(math.MaxInt32)
-		default:
-			return pref.ValueOfUint32(uint32(n))
-		}
-	case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
-		switch n {
-		case minVal:
-			return pref.ValueOfInt64(math.MinInt64)
-		case maxVal:
-			return pref.ValueOfInt64(math.MaxInt64)
-		default:
-			return pref.ValueOfInt64(int64(n))
-		}
-	case pref.Uint64Kind, pref.Fixed64Kind:
-		switch n {
-		case minVal:
-			// Only use 0 for the zero value.
-			return pref.ValueOfUint64(1)
-		case maxVal:
-			return pref.ValueOfUint64(math.MaxInt64)
-		default:
-			return pref.ValueOfUint64(uint64(n))
-		}
-	case pref.FloatKind:
-		switch n {
-		case minVal:
-			return pref.ValueOfFloat32(math.SmallestNonzeroFloat32)
-		case maxVal:
-			return pref.ValueOfFloat32(math.MaxFloat32)
-		default:
-			return pref.ValueOfFloat32(1.5 * float32(n))
-		}
-	case pref.DoubleKind:
-		switch n {
-		case minVal:
-			return pref.ValueOfFloat64(math.SmallestNonzeroFloat64)
-		case maxVal:
-			return pref.ValueOfFloat64(math.MaxFloat64)
-		default:
-			return pref.ValueOfFloat64(1.5 * float64(n))
-		}
-	case pref.StringKind:
-		if n == 0 {
-			return pref.ValueOfString("")
-		}
-		return pref.ValueOfString(fmt.Sprintf("%d", n))
-	case pref.BytesKind:
-		if n == 0 {
-			return pref.ValueOfBytes(nil)
-		}
-		return pref.ValueOfBytes([]byte{byte(n >> 24), byte(n >> 16), byte(n >> 8), byte(n)})
-	}
-	panic("unhandled kind")
-}
-
-func populateMessage(m pref.Message, n seed, stack []pref.MessageDescriptor) pref.Value {
-	if n == 0 {
-		return pref.ValueOfMessage(m)
-	}
-	md := m.Descriptor()
-	for _, x := range stack {
-		if md == x {
-			return pref.ValueOfMessage(m)
-		}
-	}
-	stack = append(stack, md)
-	for i := 0; i < md.Fields().Len(); i++ {
-		fd := md.Fields().Get(i)
-		if fd.IsWeak() {
-			continue
-		}
-		m.Set(fd, newValue(m, fd, newSeed(n, i), stack))
-	}
-	return pref.ValueOfMessage(m)
-}
-
-func panics(f func()) (didPanic bool) {
-	defer func() {
-		if err := recover(); err != nil {
-			didPanic = true
-		}
-	}()
-	f()
-	return false
-}
diff --git a/testing/prototest/prototest_test.go b/testing/prototest/prototest_test.go
deleted file mode 100644
index 4307d44..0000000
--- a/testing/prototest/prototest_test.go
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package prototest_test
-
-import (
-	"fmt"
-	"testing"
-
-	"google.golang.org/protobuf/internal/flags"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/runtime/protoimpl"
-	"google.golang.org/protobuf/testing/prototest"
-
-	irregularpb "google.golang.org/protobuf/internal/testprotos/irregular"
-	legacypb "google.golang.org/protobuf/internal/testprotos/legacy"
-	legacy1pb "google.golang.org/protobuf/internal/testprotos/legacy/proto2_20160225_2fc053c5"
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-	_ "google.golang.org/protobuf/internal/testprotos/test/weak1"
-	_ "google.golang.org/protobuf/internal/testprotos/test/weak2"
-	test3pb "google.golang.org/protobuf/internal/testprotos/test3"
-)
-
-func Test(t *testing.T) {
-	ms := []proto.Message{
-		(*testpb.TestAllTypes)(nil),
-		(*test3pb.TestAllTypes)(nil),
-		(*testpb.TestRequired)(nil),
-		(*irregularpb.Message)(nil),
-		(*testpb.TestAllExtensions)(nil),
-		(*legacypb.Legacy)(nil),
-		protoimpl.X.MessageOf((*legacy1pb.Message)(nil)).Interface(),
-	}
-	if flags.ProtoLegacy {
-		ms = append(ms, (*testpb.TestWeak)(nil))
-	}
-
-	for _, m := range ms {
-		t.Run(fmt.Sprintf("%T", m), func(t *testing.T) {
-			prototest.Message{}.Test(t, m.ProtoReflect().Type())
-		})
-	}
-}
diff --git a/types/descriptorpb/descriptor.pb.go b/types/descriptorpb/descriptor.pb.go
deleted file mode 100644
index abe4ab5..0000000
--- a/types/descriptorpb/descriptor.pb.go
+++ /dev/null
@@ -1,3957 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-//  Based on original Protocol Buffers design by
-//  Sanjay Ghemawat, Jeff Dean, and others.
-//
-// The messages in this file describe the definitions found in .proto files.
-// A valid .proto file can be translated directly to a FileDescriptorProto
-// without any other information (e.g. without reading its imports).
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google/protobuf/descriptor.proto
-
-package descriptorpb
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-type FieldDescriptorProto_Type int32
-
-const (
-	// 0 is reserved for errors.
-	// Order is weird for historical reasons.
-	FieldDescriptorProto_TYPE_DOUBLE FieldDescriptorProto_Type = 1
-	FieldDescriptorProto_TYPE_FLOAT  FieldDescriptorProto_Type = 2
-	// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if
-	// negative values are likely.
-	FieldDescriptorProto_TYPE_INT64  FieldDescriptorProto_Type = 3
-	FieldDescriptorProto_TYPE_UINT64 FieldDescriptorProto_Type = 4
-	// Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if
-	// negative values are likely.
-	FieldDescriptorProto_TYPE_INT32   FieldDescriptorProto_Type = 5
-	FieldDescriptorProto_TYPE_FIXED64 FieldDescriptorProto_Type = 6
-	FieldDescriptorProto_TYPE_FIXED32 FieldDescriptorProto_Type = 7
-	FieldDescriptorProto_TYPE_BOOL    FieldDescriptorProto_Type = 8
-	FieldDescriptorProto_TYPE_STRING  FieldDescriptorProto_Type = 9
-	// Tag-delimited aggregate.
-	// Group type is deprecated and not supported in proto3. However, Proto3
-	// implementations should still be able to parse the group wire format and
-	// treat group fields as unknown fields.
-	FieldDescriptorProto_TYPE_GROUP   FieldDescriptorProto_Type = 10
-	FieldDescriptorProto_TYPE_MESSAGE FieldDescriptorProto_Type = 11 // Length-delimited aggregate.
-	// New in version 2.
-	FieldDescriptorProto_TYPE_BYTES    FieldDescriptorProto_Type = 12
-	FieldDescriptorProto_TYPE_UINT32   FieldDescriptorProto_Type = 13
-	FieldDescriptorProto_TYPE_ENUM     FieldDescriptorProto_Type = 14
-	FieldDescriptorProto_TYPE_SFIXED32 FieldDescriptorProto_Type = 15
-	FieldDescriptorProto_TYPE_SFIXED64 FieldDescriptorProto_Type = 16
-	FieldDescriptorProto_TYPE_SINT32   FieldDescriptorProto_Type = 17 // Uses ZigZag encoding.
-	FieldDescriptorProto_TYPE_SINT64   FieldDescriptorProto_Type = 18 // Uses ZigZag encoding.
-)
-
-// Enum value maps for FieldDescriptorProto_Type.
-var (
-	FieldDescriptorProto_Type_name = map[int32]string{
-		1:  "TYPE_DOUBLE",
-		2:  "TYPE_FLOAT",
-		3:  "TYPE_INT64",
-		4:  "TYPE_UINT64",
-		5:  "TYPE_INT32",
-		6:  "TYPE_FIXED64",
-		7:  "TYPE_FIXED32",
-		8:  "TYPE_BOOL",
-		9:  "TYPE_STRING",
-		10: "TYPE_GROUP",
-		11: "TYPE_MESSAGE",
-		12: "TYPE_BYTES",
-		13: "TYPE_UINT32",
-		14: "TYPE_ENUM",
-		15: "TYPE_SFIXED32",
-		16: "TYPE_SFIXED64",
-		17: "TYPE_SINT32",
-		18: "TYPE_SINT64",
-	}
-	FieldDescriptorProto_Type_value = map[string]int32{
-		"TYPE_DOUBLE":   1,
-		"TYPE_FLOAT":    2,
-		"TYPE_INT64":    3,
-		"TYPE_UINT64":   4,
-		"TYPE_INT32":    5,
-		"TYPE_FIXED64":  6,
-		"TYPE_FIXED32":  7,
-		"TYPE_BOOL":     8,
-		"TYPE_STRING":   9,
-		"TYPE_GROUP":    10,
-		"TYPE_MESSAGE":  11,
-		"TYPE_BYTES":    12,
-		"TYPE_UINT32":   13,
-		"TYPE_ENUM":     14,
-		"TYPE_SFIXED32": 15,
-		"TYPE_SFIXED64": 16,
-		"TYPE_SINT32":   17,
-		"TYPE_SINT64":   18,
-	}
-)
-
-func (x FieldDescriptorProto_Type) Enum() *FieldDescriptorProto_Type {
-	p := new(FieldDescriptorProto_Type)
-	*p = x
-	return p
-}
-
-func (x FieldDescriptorProto_Type) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (FieldDescriptorProto_Type) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[0].Descriptor()
-}
-
-func (FieldDescriptorProto_Type) Type() protoreflect.EnumType {
-	return &file_google_protobuf_descriptor_proto_enumTypes[0]
-}
-
-func (x FieldDescriptorProto_Type) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *FieldDescriptorProto_Type) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = FieldDescriptorProto_Type(num)
-	return nil
-}
-
-// Deprecated: Use FieldDescriptorProto_Type.Descriptor instead.
-func (FieldDescriptorProto_Type) EnumDescriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{4, 0}
-}
-
-type FieldDescriptorProto_Label int32
-
-const (
-	// 0 is reserved for errors
-	FieldDescriptorProto_LABEL_OPTIONAL FieldDescriptorProto_Label = 1
-	FieldDescriptorProto_LABEL_REQUIRED FieldDescriptorProto_Label = 2
-	FieldDescriptorProto_LABEL_REPEATED FieldDescriptorProto_Label = 3
-)
-
-// Enum value maps for FieldDescriptorProto_Label.
-var (
-	FieldDescriptorProto_Label_name = map[int32]string{
-		1: "LABEL_OPTIONAL",
-		2: "LABEL_REQUIRED",
-		3: "LABEL_REPEATED",
-	}
-	FieldDescriptorProto_Label_value = map[string]int32{
-		"LABEL_OPTIONAL": 1,
-		"LABEL_REQUIRED": 2,
-		"LABEL_REPEATED": 3,
-	}
-)
-
-func (x FieldDescriptorProto_Label) Enum() *FieldDescriptorProto_Label {
-	p := new(FieldDescriptorProto_Label)
-	*p = x
-	return p
-}
-
-func (x FieldDescriptorProto_Label) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (FieldDescriptorProto_Label) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[1].Descriptor()
-}
-
-func (FieldDescriptorProto_Label) Type() protoreflect.EnumType {
-	return &file_google_protobuf_descriptor_proto_enumTypes[1]
-}
-
-func (x FieldDescriptorProto_Label) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *FieldDescriptorProto_Label) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = FieldDescriptorProto_Label(num)
-	return nil
-}
-
-// Deprecated: Use FieldDescriptorProto_Label.Descriptor instead.
-func (FieldDescriptorProto_Label) EnumDescriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{4, 1}
-}
-
-// Generated classes can be optimized for speed or code size.
-type FileOptions_OptimizeMode int32
-
-const (
-	FileOptions_SPEED FileOptions_OptimizeMode = 1 // Generate complete code for parsing, serialization,
-	// etc.
-	FileOptions_CODE_SIZE    FileOptions_OptimizeMode = 2 // Use ReflectionOps to implement these methods.
-	FileOptions_LITE_RUNTIME FileOptions_OptimizeMode = 3 // Generate code using MessageLite and the lite runtime.
-)
-
-// Enum value maps for FileOptions_OptimizeMode.
-var (
-	FileOptions_OptimizeMode_name = map[int32]string{
-		1: "SPEED",
-		2: "CODE_SIZE",
-		3: "LITE_RUNTIME",
-	}
-	FileOptions_OptimizeMode_value = map[string]int32{
-		"SPEED":        1,
-		"CODE_SIZE":    2,
-		"LITE_RUNTIME": 3,
-	}
-)
-
-func (x FileOptions_OptimizeMode) Enum() *FileOptions_OptimizeMode {
-	p := new(FileOptions_OptimizeMode)
-	*p = x
-	return p
-}
-
-func (x FileOptions_OptimizeMode) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (FileOptions_OptimizeMode) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[2].Descriptor()
-}
-
-func (FileOptions_OptimizeMode) Type() protoreflect.EnumType {
-	return &file_google_protobuf_descriptor_proto_enumTypes[2]
-}
-
-func (x FileOptions_OptimizeMode) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *FileOptions_OptimizeMode) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = FileOptions_OptimizeMode(num)
-	return nil
-}
-
-// Deprecated: Use FileOptions_OptimizeMode.Descriptor instead.
-func (FileOptions_OptimizeMode) EnumDescriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{10, 0}
-}
-
-type FieldOptions_CType int32
-
-const (
-	// Default mode.
-	FieldOptions_STRING       FieldOptions_CType = 0
-	FieldOptions_CORD         FieldOptions_CType = 1
-	FieldOptions_STRING_PIECE FieldOptions_CType = 2
-)
-
-// Enum value maps for FieldOptions_CType.
-var (
-	FieldOptions_CType_name = map[int32]string{
-		0: "STRING",
-		1: "CORD",
-		2: "STRING_PIECE",
-	}
-	FieldOptions_CType_value = map[string]int32{
-		"STRING":       0,
-		"CORD":         1,
-		"STRING_PIECE": 2,
-	}
-)
-
-func (x FieldOptions_CType) Enum() *FieldOptions_CType {
-	p := new(FieldOptions_CType)
-	*p = x
-	return p
-}
-
-func (x FieldOptions_CType) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (FieldOptions_CType) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[3].Descriptor()
-}
-
-func (FieldOptions_CType) Type() protoreflect.EnumType {
-	return &file_google_protobuf_descriptor_proto_enumTypes[3]
-}
-
-func (x FieldOptions_CType) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *FieldOptions_CType) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = FieldOptions_CType(num)
-	return nil
-}
-
-// Deprecated: Use FieldOptions_CType.Descriptor instead.
-func (FieldOptions_CType) EnumDescriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 0}
-}
-
-type FieldOptions_JSType int32
-
-const (
-	// Use the default type.
-	FieldOptions_JS_NORMAL FieldOptions_JSType = 0
-	// Use JavaScript strings.
-	FieldOptions_JS_STRING FieldOptions_JSType = 1
-	// Use JavaScript numbers.
-	FieldOptions_JS_NUMBER FieldOptions_JSType = 2
-)
-
-// Enum value maps for FieldOptions_JSType.
-var (
-	FieldOptions_JSType_name = map[int32]string{
-		0: "JS_NORMAL",
-		1: "JS_STRING",
-		2: "JS_NUMBER",
-	}
-	FieldOptions_JSType_value = map[string]int32{
-		"JS_NORMAL": 0,
-		"JS_STRING": 1,
-		"JS_NUMBER": 2,
-	}
-)
-
-func (x FieldOptions_JSType) Enum() *FieldOptions_JSType {
-	p := new(FieldOptions_JSType)
-	*p = x
-	return p
-}
-
-func (x FieldOptions_JSType) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (FieldOptions_JSType) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[4].Descriptor()
-}
-
-func (FieldOptions_JSType) Type() protoreflect.EnumType {
-	return &file_google_protobuf_descriptor_proto_enumTypes[4]
-}
-
-func (x FieldOptions_JSType) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *FieldOptions_JSType) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = FieldOptions_JSType(num)
-	return nil
-}
-
-// Deprecated: Use FieldOptions_JSType.Descriptor instead.
-func (FieldOptions_JSType) EnumDescriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12, 1}
-}
-
-// Is this method side-effect-free (or safe in HTTP parlance), or idempotent,
-// or neither? HTTP based RPC implementation may choose GET verb for safe
-// methods, and PUT verb for idempotent methods instead of the default POST.
-type MethodOptions_IdempotencyLevel int32
-
-const (
-	MethodOptions_IDEMPOTENCY_UNKNOWN MethodOptions_IdempotencyLevel = 0
-	MethodOptions_NO_SIDE_EFFECTS     MethodOptions_IdempotencyLevel = 1 // implies idempotent
-	MethodOptions_IDEMPOTENT          MethodOptions_IdempotencyLevel = 2 // idempotent, but may have side effects
-)
-
-// Enum value maps for MethodOptions_IdempotencyLevel.
-var (
-	MethodOptions_IdempotencyLevel_name = map[int32]string{
-		0: "IDEMPOTENCY_UNKNOWN",
-		1: "NO_SIDE_EFFECTS",
-		2: "IDEMPOTENT",
-	}
-	MethodOptions_IdempotencyLevel_value = map[string]int32{
-		"IDEMPOTENCY_UNKNOWN": 0,
-		"NO_SIDE_EFFECTS":     1,
-		"IDEMPOTENT":          2,
-	}
-)
-
-func (x MethodOptions_IdempotencyLevel) Enum() *MethodOptions_IdempotencyLevel {
-	p := new(MethodOptions_IdempotencyLevel)
-	*p = x
-	return p
-}
-
-func (x MethodOptions_IdempotencyLevel) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (MethodOptions_IdempotencyLevel) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_descriptor_proto_enumTypes[5].Descriptor()
-}
-
-func (MethodOptions_IdempotencyLevel) Type() protoreflect.EnumType {
-	return &file_google_protobuf_descriptor_proto_enumTypes[5]
-}
-
-func (x MethodOptions_IdempotencyLevel) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *MethodOptions_IdempotencyLevel) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = MethodOptions_IdempotencyLevel(num)
-	return nil
-}
-
-// Deprecated: Use MethodOptions_IdempotencyLevel.Descriptor instead.
-func (MethodOptions_IdempotencyLevel) EnumDescriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{17, 0}
-}
-
-// The protocol compiler can output a FileDescriptorSet containing the .proto
-// files it parses.
-type FileDescriptorSet struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	File []*FileDescriptorProto `protobuf:"bytes,1,rep,name=file" json:"file,omitempty"`
-}
-
-func (x *FileDescriptorSet) Reset() {
-	*x = FileDescriptorSet{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *FileDescriptorSet) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FileDescriptorSet) ProtoMessage() {}
-
-func (x *FileDescriptorSet) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use FileDescriptorSet.ProtoReflect.Descriptor instead.
-func (*FileDescriptorSet) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *FileDescriptorSet) GetFile() []*FileDescriptorProto {
-	if x != nil {
-		return x.File
-	}
-	return nil
-}
-
-// Describes a complete .proto file.
-type FileDescriptorProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Name    *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`       // file name, relative to root of source tree
-	Package *string `protobuf:"bytes,2,opt,name=package" json:"package,omitempty"` // e.g. "foo", "foo.bar", etc.
-	// Names of files imported by this file.
-	Dependency []string `protobuf:"bytes,3,rep,name=dependency" json:"dependency,omitempty"`
-	// Indexes of the public imported files in the dependency list above.
-	PublicDependency []int32 `protobuf:"varint,10,rep,name=public_dependency,json=publicDependency" json:"public_dependency,omitempty"`
-	// Indexes of the weak imported files in the dependency list.
-	// For Google-internal migration only. Do not use.
-	WeakDependency []int32 `protobuf:"varint,11,rep,name=weak_dependency,json=weakDependency" json:"weak_dependency,omitempty"`
-	// All top-level definitions in this file.
-	MessageType []*DescriptorProto        `protobuf:"bytes,4,rep,name=message_type,json=messageType" json:"message_type,omitempty"`
-	EnumType    []*EnumDescriptorProto    `protobuf:"bytes,5,rep,name=enum_type,json=enumType" json:"enum_type,omitempty"`
-	Service     []*ServiceDescriptorProto `protobuf:"bytes,6,rep,name=service" json:"service,omitempty"`
-	Extension   []*FieldDescriptorProto   `protobuf:"bytes,7,rep,name=extension" json:"extension,omitempty"`
-	Options     *FileOptions              `protobuf:"bytes,8,opt,name=options" json:"options,omitempty"`
-	// This field contains optional information about the original source code.
-	// You may safely remove this entire field without harming runtime
-	// functionality of the descriptors -- the information is needed only by
-	// development tools.
-	SourceCodeInfo *SourceCodeInfo `protobuf:"bytes,9,opt,name=source_code_info,json=sourceCodeInfo" json:"source_code_info,omitempty"`
-	// The syntax of the proto file.
-	// The supported values are "proto2" and "proto3".
-	Syntax *string `protobuf:"bytes,12,opt,name=syntax" json:"syntax,omitempty"`
-}
-
-func (x *FileDescriptorProto) Reset() {
-	*x = FileDescriptorProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *FileDescriptorProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FileDescriptorProto) ProtoMessage() {}
-
-func (x *FileDescriptorProto) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use FileDescriptorProto.ProtoReflect.Descriptor instead.
-func (*FileDescriptorProto) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *FileDescriptorProto) GetName() string {
-	if x != nil && x.Name != nil {
-		return *x.Name
-	}
-	return ""
-}
-
-func (x *FileDescriptorProto) GetPackage() string {
-	if x != nil && x.Package != nil {
-		return *x.Package
-	}
-	return ""
-}
-
-func (x *FileDescriptorProto) GetDependency() []string {
-	if x != nil {
-		return x.Dependency
-	}
-	return nil
-}
-
-func (x *FileDescriptorProto) GetPublicDependency() []int32 {
-	if x != nil {
-		return x.PublicDependency
-	}
-	return nil
-}
-
-func (x *FileDescriptorProto) GetWeakDependency() []int32 {
-	if x != nil {
-		return x.WeakDependency
-	}
-	return nil
-}
-
-func (x *FileDescriptorProto) GetMessageType() []*DescriptorProto {
-	if x != nil {
-		return x.MessageType
-	}
-	return nil
-}
-
-func (x *FileDescriptorProto) GetEnumType() []*EnumDescriptorProto {
-	if x != nil {
-		return x.EnumType
-	}
-	return nil
-}
-
-func (x *FileDescriptorProto) GetService() []*ServiceDescriptorProto {
-	if x != nil {
-		return x.Service
-	}
-	return nil
-}
-
-func (x *FileDescriptorProto) GetExtension() []*FieldDescriptorProto {
-	if x != nil {
-		return x.Extension
-	}
-	return nil
-}
-
-func (x *FileDescriptorProto) GetOptions() *FileOptions {
-	if x != nil {
-		return x.Options
-	}
-	return nil
-}
-
-func (x *FileDescriptorProto) GetSourceCodeInfo() *SourceCodeInfo {
-	if x != nil {
-		return x.SourceCodeInfo
-	}
-	return nil
-}
-
-func (x *FileDescriptorProto) GetSyntax() string {
-	if x != nil && x.Syntax != nil {
-		return *x.Syntax
-	}
-	return ""
-}
-
-// Describes a message type.
-type DescriptorProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Name           *string                           `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
-	Field          []*FieldDescriptorProto           `protobuf:"bytes,2,rep,name=field" json:"field,omitempty"`
-	Extension      []*FieldDescriptorProto           `protobuf:"bytes,6,rep,name=extension" json:"extension,omitempty"`
-	NestedType     []*DescriptorProto                `protobuf:"bytes,3,rep,name=nested_type,json=nestedType" json:"nested_type,omitempty"`
-	EnumType       []*EnumDescriptorProto            `protobuf:"bytes,4,rep,name=enum_type,json=enumType" json:"enum_type,omitempty"`
-	ExtensionRange []*DescriptorProto_ExtensionRange `protobuf:"bytes,5,rep,name=extension_range,json=extensionRange" json:"extension_range,omitempty"`
-	OneofDecl      []*OneofDescriptorProto           `protobuf:"bytes,8,rep,name=oneof_decl,json=oneofDecl" json:"oneof_decl,omitempty"`
-	Options        *MessageOptions                   `protobuf:"bytes,7,opt,name=options" json:"options,omitempty"`
-	ReservedRange  []*DescriptorProto_ReservedRange  `protobuf:"bytes,9,rep,name=reserved_range,json=reservedRange" json:"reserved_range,omitempty"`
-	// Reserved field names, which may not be used by fields in the same message.
-	// A given name may only be reserved once.
-	ReservedName []string `protobuf:"bytes,10,rep,name=reserved_name,json=reservedName" json:"reserved_name,omitempty"`
-}
-
-func (x *DescriptorProto) Reset() {
-	*x = DescriptorProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *DescriptorProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DescriptorProto) ProtoMessage() {}
-
-func (x *DescriptorProto) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use DescriptorProto.ProtoReflect.Descriptor instead.
-func (*DescriptorProto) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *DescriptorProto) GetName() string {
-	if x != nil && x.Name != nil {
-		return *x.Name
-	}
-	return ""
-}
-
-func (x *DescriptorProto) GetField() []*FieldDescriptorProto {
-	if x != nil {
-		return x.Field
-	}
-	return nil
-}
-
-func (x *DescriptorProto) GetExtension() []*FieldDescriptorProto {
-	if x != nil {
-		return x.Extension
-	}
-	return nil
-}
-
-func (x *DescriptorProto) GetNestedType() []*DescriptorProto {
-	if x != nil {
-		return x.NestedType
-	}
-	return nil
-}
-
-func (x *DescriptorProto) GetEnumType() []*EnumDescriptorProto {
-	if x != nil {
-		return x.EnumType
-	}
-	return nil
-}
-
-func (x *DescriptorProto) GetExtensionRange() []*DescriptorProto_ExtensionRange {
-	if x != nil {
-		return x.ExtensionRange
-	}
-	return nil
-}
-
-func (x *DescriptorProto) GetOneofDecl() []*OneofDescriptorProto {
-	if x != nil {
-		return x.OneofDecl
-	}
-	return nil
-}
-
-func (x *DescriptorProto) GetOptions() *MessageOptions {
-	if x != nil {
-		return x.Options
-	}
-	return nil
-}
-
-func (x *DescriptorProto) GetReservedRange() []*DescriptorProto_ReservedRange {
-	if x != nil {
-		return x.ReservedRange
-	}
-	return nil
-}
-
-func (x *DescriptorProto) GetReservedName() []string {
-	if x != nil {
-		return x.ReservedName
-	}
-	return nil
-}
-
-type ExtensionRangeOptions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	// 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"`
-}
-
-func (x *ExtensionRangeOptions) Reset() {
-	*x = ExtensionRangeOptions{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ExtensionRangeOptions) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ExtensionRangeOptions) ProtoMessage() {}
-
-func (x *ExtensionRangeOptions) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ExtensionRangeOptions.ProtoReflect.Descriptor instead.
-func (*ExtensionRangeOptions) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *ExtensionRangeOptions) GetUninterpretedOption() []*UninterpretedOption {
-	if x != nil {
-		return x.UninterpretedOption
-	}
-	return nil
-}
-
-// Describes a field within a message.
-type FieldDescriptorProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Name   *string                     `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
-	Number *int32                      `protobuf:"varint,3,opt,name=number" json:"number,omitempty"`
-	Label  *FieldDescriptorProto_Label `protobuf:"varint,4,opt,name=label,enum=google.protobuf.FieldDescriptorProto_Label" json:"label,omitempty"`
-	// If type_name is set, this need not be set.  If both this and type_name
-	// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
-	Type *FieldDescriptorProto_Type `protobuf:"varint,5,opt,name=type,enum=google.protobuf.FieldDescriptorProto_Type" json:"type,omitempty"`
-	// For message and enum types, this is the name of the type.  If the name
-	// starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
-	// rules are used to find the type (i.e. first the nested types within this
-	// message are searched, then within the parent, on up to the root
-	// namespace).
-	TypeName *string `protobuf:"bytes,6,opt,name=type_name,json=typeName" json:"type_name,omitempty"`
-	// For extensions, this is the name of the type being extended.  It is
-	// resolved in the same manner as type_name.
-	Extendee *string `protobuf:"bytes,2,opt,name=extendee" json:"extendee,omitempty"`
-	// For numeric types, contains the original text representation of the value.
-	// For booleans, "true" or "false".
-	// For strings, contains the default text contents (not escaped in any way).
-	// For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
-	// TODO(kenton):  Base-64 encode?
-	DefaultValue *string `protobuf:"bytes,7,opt,name=default_value,json=defaultValue" json:"default_value,omitempty"`
-	// If set, gives the index of a oneof in the containing type's oneof_decl
-	// list.  This field is a member of that oneof.
-	OneofIndex *int32 `protobuf:"varint,9,opt,name=oneof_index,json=oneofIndex" json:"oneof_index,omitempty"`
-	// JSON name of this field. The value is set by protocol compiler. If the
-	// user has set a "json_name" option on this field, that option's value
-	// will be used. Otherwise, it's deduced from the field's name by converting
-	// it to camelCase.
-	JsonName *string       `protobuf:"bytes,10,opt,name=json_name,json=jsonName" json:"json_name,omitempty"`
-	Options  *FieldOptions `protobuf:"bytes,8,opt,name=options" json:"options,omitempty"`
-	// If true, this is a proto3 "optional". When a proto3 field is optional, it
-	// tracks presence regardless of field type.
-	//
-	// When proto3_optional is true, this field must be belong to a oneof to
-	// signal to old proto3 clients that presence is tracked for this field. This
-	// oneof is known as a "synthetic" oneof, and this field must be its sole
-	// member (each proto3 optional field gets its own synthetic oneof). Synthetic
-	// oneofs exist in the descriptor only, and do not generate any API. Synthetic
-	// oneofs must be ordered after all "real" oneofs.
-	//
-	// For message fields, proto3_optional doesn't create any semantic change,
-	// since non-repeated message fields always track presence. However it still
-	// indicates the semantic detail of whether the user wrote "optional" or not.
-	// This can be useful for round-tripping the .proto file. For consistency we
-	// give message fields a synthetic oneof also, even though it is not required
-	// to track presence. This is especially important because the parser can't
-	// tell if a field is a message or an enum, so it must always create a
-	// synthetic oneof.
-	//
-	// Proto2 optional fields do not set this flag, because they already indicate
-	// optional with `LABEL_OPTIONAL`.
-	Proto3Optional *bool `protobuf:"varint,17,opt,name=proto3_optional,json=proto3Optional" json:"proto3_optional,omitempty"`
-}
-
-func (x *FieldDescriptorProto) Reset() {
-	*x = FieldDescriptorProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *FieldDescriptorProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FieldDescriptorProto) ProtoMessage() {}
-
-func (x *FieldDescriptorProto) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use FieldDescriptorProto.ProtoReflect.Descriptor instead.
-func (*FieldDescriptorProto) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *FieldDescriptorProto) GetName() string {
-	if x != nil && x.Name != nil {
-		return *x.Name
-	}
-	return ""
-}
-
-func (x *FieldDescriptorProto) GetNumber() int32 {
-	if x != nil && x.Number != nil {
-		return *x.Number
-	}
-	return 0
-}
-
-func (x *FieldDescriptorProto) GetLabel() FieldDescriptorProto_Label {
-	if x != nil && x.Label != nil {
-		return *x.Label
-	}
-	return FieldDescriptorProto_LABEL_OPTIONAL
-}
-
-func (x *FieldDescriptorProto) GetType() FieldDescriptorProto_Type {
-	if x != nil && x.Type != nil {
-		return *x.Type
-	}
-	return FieldDescriptorProto_TYPE_DOUBLE
-}
-
-func (x *FieldDescriptorProto) GetTypeName() string {
-	if x != nil && x.TypeName != nil {
-		return *x.TypeName
-	}
-	return ""
-}
-
-func (x *FieldDescriptorProto) GetExtendee() string {
-	if x != nil && x.Extendee != nil {
-		return *x.Extendee
-	}
-	return ""
-}
-
-func (x *FieldDescriptorProto) GetDefaultValue() string {
-	if x != nil && x.DefaultValue != nil {
-		return *x.DefaultValue
-	}
-	return ""
-}
-
-func (x *FieldDescriptorProto) GetOneofIndex() int32 {
-	if x != nil && x.OneofIndex != nil {
-		return *x.OneofIndex
-	}
-	return 0
-}
-
-func (x *FieldDescriptorProto) GetJsonName() string {
-	if x != nil && x.JsonName != nil {
-		return *x.JsonName
-	}
-	return ""
-}
-
-func (x *FieldDescriptorProto) GetOptions() *FieldOptions {
-	if x != nil {
-		return x.Options
-	}
-	return nil
-}
-
-func (x *FieldDescriptorProto) GetProto3Optional() bool {
-	if x != nil && x.Proto3Optional != nil {
-		return *x.Proto3Optional
-	}
-	return false
-}
-
-// Describes a oneof.
-type OneofDescriptorProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Name    *string       `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
-	Options *OneofOptions `protobuf:"bytes,2,opt,name=options" json:"options,omitempty"`
-}
-
-func (x *OneofDescriptorProto) Reset() {
-	*x = OneofDescriptorProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *OneofDescriptorProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*OneofDescriptorProto) ProtoMessage() {}
-
-func (x *OneofDescriptorProto) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use OneofDescriptorProto.ProtoReflect.Descriptor instead.
-func (*OneofDescriptorProto) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *OneofDescriptorProto) GetName() string {
-	if x != nil && x.Name != nil {
-		return *x.Name
-	}
-	return ""
-}
-
-func (x *OneofDescriptorProto) GetOptions() *OneofOptions {
-	if x != nil {
-		return x.Options
-	}
-	return nil
-}
-
-// Describes an enum type.
-type EnumDescriptorProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Name    *string                     `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
-	Value   []*EnumValueDescriptorProto `protobuf:"bytes,2,rep,name=value" json:"value,omitempty"`
-	Options *EnumOptions                `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
-	// Range of reserved numeric values. Reserved numeric values may not be used
-	// by enum values in the same enum declaration. Reserved ranges may not
-	// overlap.
-	ReservedRange []*EnumDescriptorProto_EnumReservedRange `protobuf:"bytes,4,rep,name=reserved_range,json=reservedRange" json:"reserved_range,omitempty"`
-	// Reserved enum value names, which may not be reused. A given name may only
-	// be reserved once.
-	ReservedName []string `protobuf:"bytes,5,rep,name=reserved_name,json=reservedName" json:"reserved_name,omitempty"`
-}
-
-func (x *EnumDescriptorProto) Reset() {
-	*x = EnumDescriptorProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *EnumDescriptorProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*EnumDescriptorProto) ProtoMessage() {}
-
-func (x *EnumDescriptorProto) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use EnumDescriptorProto.ProtoReflect.Descriptor instead.
-func (*EnumDescriptorProto) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *EnumDescriptorProto) GetName() string {
-	if x != nil && x.Name != nil {
-		return *x.Name
-	}
-	return ""
-}
-
-func (x *EnumDescriptorProto) GetValue() []*EnumValueDescriptorProto {
-	if x != nil {
-		return x.Value
-	}
-	return nil
-}
-
-func (x *EnumDescriptorProto) GetOptions() *EnumOptions {
-	if x != nil {
-		return x.Options
-	}
-	return nil
-}
-
-func (x *EnumDescriptorProto) GetReservedRange() []*EnumDescriptorProto_EnumReservedRange {
-	if x != nil {
-		return x.ReservedRange
-	}
-	return nil
-}
-
-func (x *EnumDescriptorProto) GetReservedName() []string {
-	if x != nil {
-		return x.ReservedName
-	}
-	return nil
-}
-
-// Describes a value within an enum.
-type EnumValueDescriptorProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Name    *string           `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
-	Number  *int32            `protobuf:"varint,2,opt,name=number" json:"number,omitempty"`
-	Options *EnumValueOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
-}
-
-func (x *EnumValueDescriptorProto) Reset() {
-	*x = EnumValueDescriptorProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *EnumValueDescriptorProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*EnumValueDescriptorProto) ProtoMessage() {}
-
-func (x *EnumValueDescriptorProto) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use EnumValueDescriptorProto.ProtoReflect.Descriptor instead.
-func (*EnumValueDescriptorProto) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *EnumValueDescriptorProto) GetName() string {
-	if x != nil && x.Name != nil {
-		return *x.Name
-	}
-	return ""
-}
-
-func (x *EnumValueDescriptorProto) GetNumber() int32 {
-	if x != nil && x.Number != nil {
-		return *x.Number
-	}
-	return 0
-}
-
-func (x *EnumValueDescriptorProto) GetOptions() *EnumValueOptions {
-	if x != nil {
-		return x.Options
-	}
-	return nil
-}
-
-// Describes a service.
-type ServiceDescriptorProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Name    *string                  `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
-	Method  []*MethodDescriptorProto `protobuf:"bytes,2,rep,name=method" json:"method,omitempty"`
-	Options *ServiceOptions          `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
-}
-
-func (x *ServiceDescriptorProto) Reset() {
-	*x = ServiceDescriptorProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ServiceDescriptorProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ServiceDescriptorProto) ProtoMessage() {}
-
-func (x *ServiceDescriptorProto) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[8]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ServiceDescriptorProto.ProtoReflect.Descriptor instead.
-func (*ServiceDescriptorProto) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *ServiceDescriptorProto) GetName() string {
-	if x != nil && x.Name != nil {
-		return *x.Name
-	}
-	return ""
-}
-
-func (x *ServiceDescriptorProto) GetMethod() []*MethodDescriptorProto {
-	if x != nil {
-		return x.Method
-	}
-	return nil
-}
-
-func (x *ServiceDescriptorProto) GetOptions() *ServiceOptions {
-	if x != nil {
-		return x.Options
-	}
-	return nil
-}
-
-// Describes a method of a service.
-type MethodDescriptorProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
-	// Input and output type names.  These are resolved in the same way as
-	// FieldDescriptorProto.type_name, but must refer to a message type.
-	InputType  *string        `protobuf:"bytes,2,opt,name=input_type,json=inputType" json:"input_type,omitempty"`
-	OutputType *string        `protobuf:"bytes,3,opt,name=output_type,json=outputType" json:"output_type,omitempty"`
-	Options    *MethodOptions `protobuf:"bytes,4,opt,name=options" json:"options,omitempty"`
-	// Identifies if client streams multiple client messages
-	ClientStreaming *bool `protobuf:"varint,5,opt,name=client_streaming,json=clientStreaming,def=0" json:"client_streaming,omitempty"`
-	// Identifies if server streams multiple server messages
-	ServerStreaming *bool `protobuf:"varint,6,opt,name=server_streaming,json=serverStreaming,def=0" json:"server_streaming,omitempty"`
-}
-
-// Default values for MethodDescriptorProto fields.
-const (
-	Default_MethodDescriptorProto_ClientStreaming = bool(false)
-	Default_MethodDescriptorProto_ServerStreaming = bool(false)
-)
-
-func (x *MethodDescriptorProto) Reset() {
-	*x = MethodDescriptorProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[9]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *MethodDescriptorProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MethodDescriptorProto) ProtoMessage() {}
-
-func (x *MethodDescriptorProto) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[9]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use MethodDescriptorProto.ProtoReflect.Descriptor instead.
-func (*MethodDescriptorProto) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *MethodDescriptorProto) GetName() string {
-	if x != nil && x.Name != nil {
-		return *x.Name
-	}
-	return ""
-}
-
-func (x *MethodDescriptorProto) GetInputType() string {
-	if x != nil && x.InputType != nil {
-		return *x.InputType
-	}
-	return ""
-}
-
-func (x *MethodDescriptorProto) GetOutputType() string {
-	if x != nil && x.OutputType != nil {
-		return *x.OutputType
-	}
-	return ""
-}
-
-func (x *MethodDescriptorProto) GetOptions() *MethodOptions {
-	if x != nil {
-		return x.Options
-	}
-	return nil
-}
-
-func (x *MethodDescriptorProto) GetClientStreaming() bool {
-	if x != nil && x.ClientStreaming != nil {
-		return *x.ClientStreaming
-	}
-	return Default_MethodDescriptorProto_ClientStreaming
-}
-
-func (x *MethodDescriptorProto) GetServerStreaming() bool {
-	if x != nil && x.ServerStreaming != nil {
-		return *x.ServerStreaming
-	}
-	return Default_MethodDescriptorProto_ServerStreaming
-}
-
-type FileOptions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	// Sets the Java package where classes generated from this .proto will be
-	// placed.  By default, the proto package is used, but this is often
-	// inappropriate because proto packages do not normally start with backwards
-	// domain names.
-	JavaPackage *string `protobuf:"bytes,1,opt,name=java_package,json=javaPackage" json:"java_package,omitempty"`
-	// If set, all the classes from the .proto file are wrapped in a single
-	// outer class with the given name.  This applies to both Proto1
-	// (equivalent to the old "--one_java_file" option) and Proto2 (where
-	// a .proto always translates to a single class, but you may want to
-	// explicitly choose the class name).
-	JavaOuterClassname *string `protobuf:"bytes,8,opt,name=java_outer_classname,json=javaOuterClassname" json:"java_outer_classname,omitempty"`
-	// If set true, then the Java code generator will generate a separate .java
-	// file for each top-level message, enum, and service defined in the .proto
-	// file.  Thus, these types will *not* be nested inside the outer class
-	// named by java_outer_classname.  However, the outer class will still be
-	// generated to contain the file's getDescriptor() method as well as any
-	// top-level extensions defined in the file.
-	JavaMultipleFiles *bool `protobuf:"varint,10,opt,name=java_multiple_files,json=javaMultipleFiles,def=0" json:"java_multiple_files,omitempty"`
-	// This option does nothing.
-	//
-	// Deprecated: Do not use.
-	JavaGenerateEqualsAndHash *bool `protobuf:"varint,20,opt,name=java_generate_equals_and_hash,json=javaGenerateEqualsAndHash" json:"java_generate_equals_and_hash,omitempty"`
-	// If set true, then the Java2 code generator will generate code that
-	// throws an exception whenever an attempt is made to assign a non-UTF-8
-	// byte sequence to a string field.
-	// Message reflection will do the same.
-	// However, an extension field still accepts non-UTF-8 byte sequences.
-	// This option has no effect on when used with the lite runtime.
-	JavaStringCheckUtf8 *bool                     `protobuf:"varint,27,opt,name=java_string_check_utf8,json=javaStringCheckUtf8,def=0" json:"java_string_check_utf8,omitempty"`
-	OptimizeFor         *FileOptions_OptimizeMode `protobuf:"varint,9,opt,name=optimize_for,json=optimizeFor,enum=google.protobuf.FileOptions_OptimizeMode,def=1" json:"optimize_for,omitempty"`
-	// Sets the Go package where structs generated from this .proto will be
-	// placed. If omitted, the Go package will be derived from the following:
-	//   - The basename of the package import path, if provided.
-	//   - Otherwise, the package statement in the .proto file, if present.
-	//   - Otherwise, the basename of the .proto file, without extension.
-	GoPackage *string `protobuf:"bytes,11,opt,name=go_package,json=goPackage" json:"go_package,omitempty"`
-	// Should generic services be generated in each language?  "Generic" services
-	// are not specific to any particular RPC system.  They are generated by the
-	// main code generators in each language (without additional plugins).
-	// Generic services were the only kind of service generation supported by
-	// early versions of google.protobuf.
-	//
-	// Generic services are now considered deprecated in favor of using plugins
-	// that generate code specific to your particular RPC system.  Therefore,
-	// these default to false.  Old code which depends on generic services should
-	// explicitly set them to true.
-	CcGenericServices   *bool `protobuf:"varint,16,opt,name=cc_generic_services,json=ccGenericServices,def=0" json:"cc_generic_services,omitempty"`
-	JavaGenericServices *bool `protobuf:"varint,17,opt,name=java_generic_services,json=javaGenericServices,def=0" json:"java_generic_services,omitempty"`
-	PyGenericServices   *bool `protobuf:"varint,18,opt,name=py_generic_services,json=pyGenericServices,def=0" json:"py_generic_services,omitempty"`
-	PhpGenericServices  *bool `protobuf:"varint,42,opt,name=php_generic_services,json=phpGenericServices,def=0" json:"php_generic_services,omitempty"`
-	// Is this file deprecated?
-	// Depending on the target platform, this can emit Deprecated annotations
-	// for everything in the file, or it will be completely ignored; in the very
-	// least, this is a formalization for deprecating files.
-	Deprecated *bool `protobuf:"varint,23,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
-	// Enables the use of arenas for the proto messages in this file. This applies
-	// only to generated classes for C++.
-	CcEnableArenas *bool `protobuf:"varint,31,opt,name=cc_enable_arenas,json=ccEnableArenas,def=1" json:"cc_enable_arenas,omitempty"`
-	// Sets the objective c class prefix which is prepended to all objective c
-	// generated classes from this .proto. There is no default.
-	ObjcClassPrefix *string `protobuf:"bytes,36,opt,name=objc_class_prefix,json=objcClassPrefix" json:"objc_class_prefix,omitempty"`
-	// Namespace for generated classes; defaults to the package.
-	CsharpNamespace *string `protobuf:"bytes,37,opt,name=csharp_namespace,json=csharpNamespace" json:"csharp_namespace,omitempty"`
-	// By default Swift generators will take the proto package and CamelCase it
-	// replacing '.' with underscore and use that to prefix the types/symbols
-	// defined. When this options is provided, they will use this value instead
-	// to prefix the types/symbols defined.
-	SwiftPrefix *string `protobuf:"bytes,39,opt,name=swift_prefix,json=swiftPrefix" json:"swift_prefix,omitempty"`
-	// Sets the php class prefix which is prepended to all php generated classes
-	// from this .proto. Default is empty.
-	PhpClassPrefix *string `protobuf:"bytes,40,opt,name=php_class_prefix,json=phpClassPrefix" json:"php_class_prefix,omitempty"`
-	// Use this option to change the namespace of php generated classes. Default
-	// is empty. When this option is empty, the package name will be used for
-	// determining the namespace.
-	PhpNamespace *string `protobuf:"bytes,41,opt,name=php_namespace,json=phpNamespace" json:"php_namespace,omitempty"`
-	// Use this option to change the namespace of php generated metadata classes.
-	// Default is empty. When this option is empty, the proto file name will be
-	// used for determining the namespace.
-	PhpMetadataNamespace *string `protobuf:"bytes,44,opt,name=php_metadata_namespace,json=phpMetadataNamespace" json:"php_metadata_namespace,omitempty"`
-	// Use this option to change the package of ruby generated classes. Default
-	// is empty. When this option is not set, the package name will be used for
-	// determining the ruby package.
-	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"`
-}
-
-// Default values for FileOptions fields.
-const (
-	Default_FileOptions_JavaMultipleFiles   = bool(false)
-	Default_FileOptions_JavaStringCheckUtf8 = bool(false)
-	Default_FileOptions_OptimizeFor         = FileOptions_SPEED
-	Default_FileOptions_CcGenericServices   = bool(false)
-	Default_FileOptions_JavaGenericServices = bool(false)
-	Default_FileOptions_PyGenericServices   = bool(false)
-	Default_FileOptions_PhpGenericServices  = bool(false)
-	Default_FileOptions_Deprecated          = bool(false)
-	Default_FileOptions_CcEnableArenas      = bool(true)
-)
-
-func (x *FileOptions) Reset() {
-	*x = FileOptions{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[10]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *FileOptions) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FileOptions) ProtoMessage() {}
-
-func (x *FileOptions) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[10]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use FileOptions.ProtoReflect.Descriptor instead.
-func (*FileOptions) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *FileOptions) GetJavaPackage() string {
-	if x != nil && x.JavaPackage != nil {
-		return *x.JavaPackage
-	}
-	return ""
-}
-
-func (x *FileOptions) GetJavaOuterClassname() string {
-	if x != nil && x.JavaOuterClassname != nil {
-		return *x.JavaOuterClassname
-	}
-	return ""
-}
-
-func (x *FileOptions) GetJavaMultipleFiles() bool {
-	if x != nil && x.JavaMultipleFiles != nil {
-		return *x.JavaMultipleFiles
-	}
-	return Default_FileOptions_JavaMultipleFiles
-}
-
-// Deprecated: Do not use.
-func (x *FileOptions) GetJavaGenerateEqualsAndHash() bool {
-	if x != nil && x.JavaGenerateEqualsAndHash != nil {
-		return *x.JavaGenerateEqualsAndHash
-	}
-	return false
-}
-
-func (x *FileOptions) GetJavaStringCheckUtf8() bool {
-	if x != nil && x.JavaStringCheckUtf8 != nil {
-		return *x.JavaStringCheckUtf8
-	}
-	return Default_FileOptions_JavaStringCheckUtf8
-}
-
-func (x *FileOptions) GetOptimizeFor() FileOptions_OptimizeMode {
-	if x != nil && x.OptimizeFor != nil {
-		return *x.OptimizeFor
-	}
-	return Default_FileOptions_OptimizeFor
-}
-
-func (x *FileOptions) GetGoPackage() string {
-	if x != nil && x.GoPackage != nil {
-		return *x.GoPackage
-	}
-	return ""
-}
-
-func (x *FileOptions) GetCcGenericServices() bool {
-	if x != nil && x.CcGenericServices != nil {
-		return *x.CcGenericServices
-	}
-	return Default_FileOptions_CcGenericServices
-}
-
-func (x *FileOptions) GetJavaGenericServices() bool {
-	if x != nil && x.JavaGenericServices != nil {
-		return *x.JavaGenericServices
-	}
-	return Default_FileOptions_JavaGenericServices
-}
-
-func (x *FileOptions) GetPyGenericServices() bool {
-	if x != nil && x.PyGenericServices != nil {
-		return *x.PyGenericServices
-	}
-	return Default_FileOptions_PyGenericServices
-}
-
-func (x *FileOptions) GetPhpGenericServices() bool {
-	if x != nil && x.PhpGenericServices != nil {
-		return *x.PhpGenericServices
-	}
-	return Default_FileOptions_PhpGenericServices
-}
-
-func (x *FileOptions) GetDeprecated() bool {
-	if x != nil && x.Deprecated != nil {
-		return *x.Deprecated
-	}
-	return Default_FileOptions_Deprecated
-}
-
-func (x *FileOptions) GetCcEnableArenas() bool {
-	if x != nil && x.CcEnableArenas != nil {
-		return *x.CcEnableArenas
-	}
-	return Default_FileOptions_CcEnableArenas
-}
-
-func (x *FileOptions) GetObjcClassPrefix() string {
-	if x != nil && x.ObjcClassPrefix != nil {
-		return *x.ObjcClassPrefix
-	}
-	return ""
-}
-
-func (x *FileOptions) GetCsharpNamespace() string {
-	if x != nil && x.CsharpNamespace != nil {
-		return *x.CsharpNamespace
-	}
-	return ""
-}
-
-func (x *FileOptions) GetSwiftPrefix() string {
-	if x != nil && x.SwiftPrefix != nil {
-		return *x.SwiftPrefix
-	}
-	return ""
-}
-
-func (x *FileOptions) GetPhpClassPrefix() string {
-	if x != nil && x.PhpClassPrefix != nil {
-		return *x.PhpClassPrefix
-	}
-	return ""
-}
-
-func (x *FileOptions) GetPhpNamespace() string {
-	if x != nil && x.PhpNamespace != nil {
-		return *x.PhpNamespace
-	}
-	return ""
-}
-
-func (x *FileOptions) GetPhpMetadataNamespace() string {
-	if x != nil && x.PhpMetadataNamespace != nil {
-		return *x.PhpMetadataNamespace
-	}
-	return ""
-}
-
-func (x *FileOptions) GetRubyPackage() string {
-	if x != nil && x.RubyPackage != nil {
-		return *x.RubyPackage
-	}
-	return ""
-}
-
-func (x *FileOptions) GetUninterpretedOption() []*UninterpretedOption {
-	if x != nil {
-		return x.UninterpretedOption
-	}
-	return nil
-}
-
-type MessageOptions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	// Set true to use the old proto1 MessageSet wire format for extensions.
-	// This is provided for backwards-compatibility with the MessageSet wire
-	// format.  You should not use this for any other reason:  It's less
-	// efficient, has fewer features, and is more complicated.
-	//
-	// The message must be defined exactly as follows:
-	//   message Foo {
-	//     option message_set_wire_format = true;
-	//     extensions 4 to max;
-	//   }
-	// Note that the message cannot have any defined fields; MessageSets only
-	// have extensions.
-	//
-	// All extensions of your type must be singular messages; e.g. they cannot
-	// be int32s, enums, or repeated messages.
-	//
-	// Because this is an option, the above two restrictions are not enforced by
-	// the protocol compiler.
-	MessageSetWireFormat *bool `protobuf:"varint,1,opt,name=message_set_wire_format,json=messageSetWireFormat,def=0" json:"message_set_wire_format,omitempty"`
-	// Disables the generation of the standard "descriptor()" accessor, which can
-	// conflict with a field of the same name.  This is meant to make migration
-	// from proto1 easier; new code should avoid fields named "descriptor".
-	NoStandardDescriptorAccessor *bool `protobuf:"varint,2,opt,name=no_standard_descriptor_accessor,json=noStandardDescriptorAccessor,def=0" json:"no_standard_descriptor_accessor,omitempty"`
-	// Is this message deprecated?
-	// Depending on the target platform, this can emit Deprecated annotations
-	// for the message, or it will be completely ignored; in the very least,
-	// this is a formalization for deprecating messages.
-	Deprecated *bool `protobuf:"varint,3,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
-	// Whether the message is an automatically generated map entry type for the
-	// maps field.
-	//
-	// For maps fields:
-	//     map<KeyType, ValueType> map_field = 1;
-	// The parsed descriptor looks like:
-	//     message MapFieldEntry {
-	//         option map_entry = true;
-	//         optional KeyType key = 1;
-	//         optional ValueType value = 2;
-	//     }
-	//     repeated MapFieldEntry map_field = 1;
-	//
-	// Implementations may choose not to generate the map_entry=true message, but
-	// use a native map in the target language to hold the keys and values.
-	// The reflection APIs in such implementations still need to work as
-	// if the field is a repeated message field.
-	//
-	// NOTE: Do not set the option in .proto files. Always use the maps syntax
-	// instead. The option should only be implicitly set by the proto compiler
-	// 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"`
-}
-
-// Default values for MessageOptions fields.
-const (
-	Default_MessageOptions_MessageSetWireFormat         = bool(false)
-	Default_MessageOptions_NoStandardDescriptorAccessor = bool(false)
-	Default_MessageOptions_Deprecated                   = bool(false)
-)
-
-func (x *MessageOptions) Reset() {
-	*x = MessageOptions{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[11]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *MessageOptions) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MessageOptions) ProtoMessage() {}
-
-func (x *MessageOptions) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[11]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use MessageOptions.ProtoReflect.Descriptor instead.
-func (*MessageOptions) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *MessageOptions) GetMessageSetWireFormat() bool {
-	if x != nil && x.MessageSetWireFormat != nil {
-		return *x.MessageSetWireFormat
-	}
-	return Default_MessageOptions_MessageSetWireFormat
-}
-
-func (x *MessageOptions) GetNoStandardDescriptorAccessor() bool {
-	if x != nil && x.NoStandardDescriptorAccessor != nil {
-		return *x.NoStandardDescriptorAccessor
-	}
-	return Default_MessageOptions_NoStandardDescriptorAccessor
-}
-
-func (x *MessageOptions) GetDeprecated() bool {
-	if x != nil && x.Deprecated != nil {
-		return *x.Deprecated
-	}
-	return Default_MessageOptions_Deprecated
-}
-
-func (x *MessageOptions) GetMapEntry() bool {
-	if x != nil && x.MapEntry != nil {
-		return *x.MapEntry
-	}
-	return false
-}
-
-func (x *MessageOptions) GetUninterpretedOption() []*UninterpretedOption {
-	if x != nil {
-		return x.UninterpretedOption
-	}
-	return nil
-}
-
-type FieldOptions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	// The ctype option instructs the C++ code generator to use a different
-	// representation of the field than it normally would.  See the specific
-	// options below.  This option is not yet implemented in the open source
-	// release -- sorry, we'll try to include it in a future version!
-	Ctype *FieldOptions_CType `protobuf:"varint,1,opt,name=ctype,enum=google.protobuf.FieldOptions_CType,def=0" json:"ctype,omitempty"`
-	// The packed option can be enabled for repeated primitive fields to enable
-	// a more efficient representation on the wire. Rather than repeatedly
-	// writing the tag and type for each element, the entire array is encoded as
-	// a single length-delimited blob. In proto3, only explicit setting it to
-	// false will avoid using packed encoding.
-	Packed *bool `protobuf:"varint,2,opt,name=packed" json:"packed,omitempty"`
-	// The jstype option determines the JavaScript type used for values of the
-	// field.  The option is permitted only for 64 bit integral and fixed types
-	// (int64, uint64, sint64, fixed64, sfixed64).  A field with jstype JS_STRING
-	// is represented as JavaScript string, which avoids loss of precision that
-	// can happen when a large value is converted to a floating point JavaScript.
-	// Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
-	// use the JavaScript "number" type.  The behavior of the default option
-	// JS_NORMAL is implementation dependent.
-	//
-	// This option is an enum to permit additional types to be added, e.g.
-	// goog.math.Integer.
-	Jstype *FieldOptions_JSType `protobuf:"varint,6,opt,name=jstype,enum=google.protobuf.FieldOptions_JSType,def=0" json:"jstype,omitempty"`
-	// Should this field be parsed lazily?  Lazy applies only to message-type
-	// fields.  It means that when the outer message is initially parsed, the
-	// inner message's contents will not be parsed but instead stored in encoded
-	// form.  The inner message will actually be parsed when it is first accessed.
-	//
-	// This is only a hint.  Implementations are free to choose whether to use
-	// eager or lazy parsing regardless of the value of this option.  However,
-	// setting this option true suggests that the protocol author believes that
-	// using lazy parsing on this field is worth the additional bookkeeping
-	// overhead typically needed to implement it.
-	//
-	// This option does not affect the public interface of any generated code;
-	// all method signatures remain the same.  Furthermore, thread-safety of the
-	// interface is not affected by this option; const methods remain safe to
-	// call from multiple threads concurrently, while non-const methods continue
-	// to require exclusive access.
-	//
-	//
-	// Note that implementations may choose not to check required fields within
-	// a lazy sub-message.  That is, calling IsInitialized() on the outer message
-	// may return true even if the inner message has missing required fields.
-	// This is necessary because otherwise the inner message would have to be
-	// parsed in order to perform the check, defeating the purpose of lazy
-	// parsing.  An implementation which chooses not to check required fields
-	// must be consistent about it.  That is, for any particular sub-message, the
-	// implementation must either *always* check its required fields, or *never*
-	// check its required fields, regardless of whether or not the message has
-	// been parsed.
-	Lazy *bool `protobuf:"varint,5,opt,name=lazy,def=0" json:"lazy,omitempty"`
-	// Is this field deprecated?
-	// Depending on the target platform, this can emit Deprecated annotations
-	// for accessors, or it will be completely ignored; in the very least, this
-	// is a formalization for deprecating fields.
-	Deprecated *bool `protobuf:"varint,3,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
-	// 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"`
-}
-
-// Default values for FieldOptions fields.
-const (
-	Default_FieldOptions_Ctype      = FieldOptions_STRING
-	Default_FieldOptions_Jstype     = FieldOptions_JS_NORMAL
-	Default_FieldOptions_Lazy       = bool(false)
-	Default_FieldOptions_Deprecated = bool(false)
-	Default_FieldOptions_Weak       = bool(false)
-)
-
-func (x *FieldOptions) Reset() {
-	*x = FieldOptions{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[12]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *FieldOptions) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FieldOptions) ProtoMessage() {}
-
-func (x *FieldOptions) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[12]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use FieldOptions.ProtoReflect.Descriptor instead.
-func (*FieldOptions) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *FieldOptions) GetCtype() FieldOptions_CType {
-	if x != nil && x.Ctype != nil {
-		return *x.Ctype
-	}
-	return Default_FieldOptions_Ctype
-}
-
-func (x *FieldOptions) GetPacked() bool {
-	if x != nil && x.Packed != nil {
-		return *x.Packed
-	}
-	return false
-}
-
-func (x *FieldOptions) GetJstype() FieldOptions_JSType {
-	if x != nil && x.Jstype != nil {
-		return *x.Jstype
-	}
-	return Default_FieldOptions_Jstype
-}
-
-func (x *FieldOptions) GetLazy() bool {
-	if x != nil && x.Lazy != nil {
-		return *x.Lazy
-	}
-	return Default_FieldOptions_Lazy
-}
-
-func (x *FieldOptions) GetDeprecated() bool {
-	if x != nil && x.Deprecated != nil {
-		return *x.Deprecated
-	}
-	return Default_FieldOptions_Deprecated
-}
-
-func (x *FieldOptions) GetWeak() bool {
-	if x != nil && x.Weak != nil {
-		return *x.Weak
-	}
-	return Default_FieldOptions_Weak
-}
-
-func (x *FieldOptions) GetUninterpretedOption() []*UninterpretedOption {
-	if x != nil {
-		return x.UninterpretedOption
-	}
-	return nil
-}
-
-type OneofOptions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	// 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"`
-}
-
-func (x *OneofOptions) Reset() {
-	*x = OneofOptions{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[13]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *OneofOptions) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*OneofOptions) ProtoMessage() {}
-
-func (x *OneofOptions) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[13]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use OneofOptions.ProtoReflect.Descriptor instead.
-func (*OneofOptions) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *OneofOptions) GetUninterpretedOption() []*UninterpretedOption {
-	if x != nil {
-		return x.UninterpretedOption
-	}
-	return nil
-}
-
-type EnumOptions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	// Set this option to true to allow mapping different tag names to the same
-	// value.
-	AllowAlias *bool `protobuf:"varint,2,opt,name=allow_alias,json=allowAlias" json:"allow_alias,omitempty"`
-	// Is this enum deprecated?
-	// Depending on the target platform, this can emit Deprecated annotations
-	// for the enum, or it will be completely ignored; in the very least, this
-	// 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"`
-}
-
-// Default values for EnumOptions fields.
-const (
-	Default_EnumOptions_Deprecated = bool(false)
-)
-
-func (x *EnumOptions) Reset() {
-	*x = EnumOptions{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[14]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *EnumOptions) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*EnumOptions) ProtoMessage() {}
-
-func (x *EnumOptions) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[14]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use EnumOptions.ProtoReflect.Descriptor instead.
-func (*EnumOptions) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *EnumOptions) GetAllowAlias() bool {
-	if x != nil && x.AllowAlias != nil {
-		return *x.AllowAlias
-	}
-	return false
-}
-
-func (x *EnumOptions) GetDeprecated() bool {
-	if x != nil && x.Deprecated != nil {
-		return *x.Deprecated
-	}
-	return Default_EnumOptions_Deprecated
-}
-
-func (x *EnumOptions) GetUninterpretedOption() []*UninterpretedOption {
-	if x != nil {
-		return x.UninterpretedOption
-	}
-	return nil
-}
-
-type EnumValueOptions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	// Is this enum value deprecated?
-	// Depending on the target platform, this can emit Deprecated annotations
-	// for the enum value, or it will be completely ignored; in the very least,
-	// 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"`
-}
-
-// Default values for EnumValueOptions fields.
-const (
-	Default_EnumValueOptions_Deprecated = bool(false)
-)
-
-func (x *EnumValueOptions) Reset() {
-	*x = EnumValueOptions{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[15]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *EnumValueOptions) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*EnumValueOptions) ProtoMessage() {}
-
-func (x *EnumValueOptions) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[15]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use EnumValueOptions.ProtoReflect.Descriptor instead.
-func (*EnumValueOptions) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{15}
-}
-
-func (x *EnumValueOptions) GetDeprecated() bool {
-	if x != nil && x.Deprecated != nil {
-		return *x.Deprecated
-	}
-	return Default_EnumValueOptions_Deprecated
-}
-
-func (x *EnumValueOptions) GetUninterpretedOption() []*UninterpretedOption {
-	if x != nil {
-		return x.UninterpretedOption
-	}
-	return nil
-}
-
-type ServiceOptions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	// Is this service deprecated?
-	// Depending on the target platform, this can emit Deprecated annotations
-	// for the service, or it will be completely ignored; in the very least,
-	// 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"`
-}
-
-// Default values for ServiceOptions fields.
-const (
-	Default_ServiceOptions_Deprecated = bool(false)
-)
-
-func (x *ServiceOptions) Reset() {
-	*x = ServiceOptions{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[16]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ServiceOptions) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ServiceOptions) ProtoMessage() {}
-
-func (x *ServiceOptions) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[16]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ServiceOptions.ProtoReflect.Descriptor instead.
-func (*ServiceOptions) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *ServiceOptions) GetDeprecated() bool {
-	if x != nil && x.Deprecated != nil {
-		return *x.Deprecated
-	}
-	return Default_ServiceOptions_Deprecated
-}
-
-func (x *ServiceOptions) GetUninterpretedOption() []*UninterpretedOption {
-	if x != nil {
-		return x.UninterpretedOption
-	}
-	return nil
-}
-
-type MethodOptions struct {
-	state           protoimpl.MessageState
-	sizeCache       protoimpl.SizeCache
-	unknownFields   protoimpl.UnknownFields
-	extensionFields protoimpl.ExtensionFields
-
-	// Is this method deprecated?
-	// Depending on the target platform, this can emit Deprecated annotations
-	// for the method, or it will be completely ignored; in the very least,
-	// this is a formalization for deprecating methods.
-	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"`
-}
-
-// Default values for MethodOptions fields.
-const (
-	Default_MethodOptions_Deprecated       = bool(false)
-	Default_MethodOptions_IdempotencyLevel = MethodOptions_IDEMPOTENCY_UNKNOWN
-)
-
-func (x *MethodOptions) Reset() {
-	*x = MethodOptions{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[17]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *MethodOptions) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*MethodOptions) ProtoMessage() {}
-
-func (x *MethodOptions) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[17]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use MethodOptions.ProtoReflect.Descriptor instead.
-func (*MethodOptions) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{17}
-}
-
-func (x *MethodOptions) GetDeprecated() bool {
-	if x != nil && x.Deprecated != nil {
-		return *x.Deprecated
-	}
-	return Default_MethodOptions_Deprecated
-}
-
-func (x *MethodOptions) GetIdempotencyLevel() MethodOptions_IdempotencyLevel {
-	if x != nil && x.IdempotencyLevel != nil {
-		return *x.IdempotencyLevel
-	}
-	return Default_MethodOptions_IdempotencyLevel
-}
-
-func (x *MethodOptions) GetUninterpretedOption() []*UninterpretedOption {
-	if x != nil {
-		return x.UninterpretedOption
-	}
-	return nil
-}
-
-// A message representing a option the parser does not recognize. This only
-// appears in options protos created by the compiler::Parser class.
-// DescriptorPool resolves these when building Descriptor objects. Therefore,
-// options protos in descriptor objects (e.g. returned by Descriptor::options(),
-// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
-// in them.
-type UninterpretedOption struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Name []*UninterpretedOption_NamePart `protobuf:"bytes,2,rep,name=name" json:"name,omitempty"`
-	// The value of the uninterpreted option, in whatever type the tokenizer
-	// identified it as during parsing. Exactly one of these should be set.
-	IdentifierValue  *string  `protobuf:"bytes,3,opt,name=identifier_value,json=identifierValue" json:"identifier_value,omitempty"`
-	PositiveIntValue *uint64  `protobuf:"varint,4,opt,name=positive_int_value,json=positiveIntValue" json:"positive_int_value,omitempty"`
-	NegativeIntValue *int64   `protobuf:"varint,5,opt,name=negative_int_value,json=negativeIntValue" json:"negative_int_value,omitempty"`
-	DoubleValue      *float64 `protobuf:"fixed64,6,opt,name=double_value,json=doubleValue" json:"double_value,omitempty"`
-	StringValue      []byte   `protobuf:"bytes,7,opt,name=string_value,json=stringValue" json:"string_value,omitempty"`
-	AggregateValue   *string  `protobuf:"bytes,8,opt,name=aggregate_value,json=aggregateValue" json:"aggregate_value,omitempty"`
-}
-
-func (x *UninterpretedOption) Reset() {
-	*x = UninterpretedOption{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[18]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *UninterpretedOption) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UninterpretedOption) ProtoMessage() {}
-
-func (x *UninterpretedOption) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[18]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use UninterpretedOption.ProtoReflect.Descriptor instead.
-func (*UninterpretedOption) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{18}
-}
-
-func (x *UninterpretedOption) GetName() []*UninterpretedOption_NamePart {
-	if x != nil {
-		return x.Name
-	}
-	return nil
-}
-
-func (x *UninterpretedOption) GetIdentifierValue() string {
-	if x != nil && x.IdentifierValue != nil {
-		return *x.IdentifierValue
-	}
-	return ""
-}
-
-func (x *UninterpretedOption) GetPositiveIntValue() uint64 {
-	if x != nil && x.PositiveIntValue != nil {
-		return *x.PositiveIntValue
-	}
-	return 0
-}
-
-func (x *UninterpretedOption) GetNegativeIntValue() int64 {
-	if x != nil && x.NegativeIntValue != nil {
-		return *x.NegativeIntValue
-	}
-	return 0
-}
-
-func (x *UninterpretedOption) GetDoubleValue() float64 {
-	if x != nil && x.DoubleValue != nil {
-		return *x.DoubleValue
-	}
-	return 0
-}
-
-func (x *UninterpretedOption) GetStringValue() []byte {
-	if x != nil {
-		return x.StringValue
-	}
-	return nil
-}
-
-func (x *UninterpretedOption) GetAggregateValue() string {
-	if x != nil && x.AggregateValue != nil {
-		return *x.AggregateValue
-	}
-	return ""
-}
-
-// Encapsulates information about the original source file from which a
-// FileDescriptorProto was generated.
-type SourceCodeInfo struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// A Location identifies a piece of source code in a .proto file which
-	// corresponds to a particular definition.  This information is intended
-	// to be useful to IDEs, code indexers, documentation generators, and similar
-	// tools.
-	//
-	// For example, say we have a file like:
-	//   message Foo {
-	//     optional string foo = 1;
-	//   }
-	// Let's look at just the field definition:
-	//   optional string foo = 1;
-	//   ^       ^^     ^^  ^  ^^^
-	//   a       bc     de  f  ghi
-	// We have the following locations:
-	//   span   path               represents
-	//   [a,i)  [ 4, 0, 2, 0 ]     The whole field definition.
-	//   [a,b)  [ 4, 0, 2, 0, 4 ]  The label (optional).
-	//   [c,d)  [ 4, 0, 2, 0, 5 ]  The type (string).
-	//   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
-	//   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
-	//
-	// Notes:
-	// - A location may refer to a repeated field itself (i.e. not to any
-	//   particular index within it).  This is used whenever a set of elements are
-	//   logically enclosed in a single code segment.  For example, an entire
-	//   extend block (possibly containing multiple extension definitions) will
-	//   have an outer location whose path refers to the "extensions" repeated
-	//   field without an index.
-	// - Multiple locations may have the same path.  This happens when a single
-	//   logical declaration is spread out across multiple places.  The most
-	//   obvious example is the "extend" block again -- there may be multiple
-	//   extend blocks in the same scope, each of which will have the same path.
-	// - A location's span is not always a subset of its parent's span.  For
-	//   example, the "extendee" of an extension declaration appears at the
-	//   beginning of the "extend" block and is shared by all extensions within
-	//   the block.
-	// - Just because a location's span is a subset of some other location's span
-	//   does not mean that it is a descendant.  For example, a "group" defines
-	//   both a type and a field in a single declaration.  Thus, the locations
-	//   corresponding to the type and field and their components will overlap.
-	// - Code which tries to interpret locations should probably be designed to
-	//   ignore those that it doesn't understand, as more types of locations could
-	//   be recorded in the future.
-	Location []*SourceCodeInfo_Location `protobuf:"bytes,1,rep,name=location" json:"location,omitempty"`
-}
-
-func (x *SourceCodeInfo) Reset() {
-	*x = SourceCodeInfo{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[19]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SourceCodeInfo) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SourceCodeInfo) ProtoMessage() {}
-
-func (x *SourceCodeInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[19]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SourceCodeInfo.ProtoReflect.Descriptor instead.
-func (*SourceCodeInfo) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19}
-}
-
-func (x *SourceCodeInfo) GetLocation() []*SourceCodeInfo_Location {
-	if x != nil {
-		return x.Location
-	}
-	return nil
-}
-
-// Describes the relationship between generated code and its original source
-// file. A GeneratedCodeInfo message is associated with only one generated
-// source file, but may contain references to different source .proto files.
-type GeneratedCodeInfo struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// An Annotation connects some span of text in generated code to an element
-	// of its generating .proto file.
-	Annotation []*GeneratedCodeInfo_Annotation `protobuf:"bytes,1,rep,name=annotation" json:"annotation,omitempty"`
-}
-
-func (x *GeneratedCodeInfo) Reset() {
-	*x = GeneratedCodeInfo{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[20]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GeneratedCodeInfo) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GeneratedCodeInfo) ProtoMessage() {}
-
-func (x *GeneratedCodeInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[20]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use GeneratedCodeInfo.ProtoReflect.Descriptor instead.
-func (*GeneratedCodeInfo) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{20}
-}
-
-func (x *GeneratedCodeInfo) GetAnnotation() []*GeneratedCodeInfo_Annotation {
-	if x != nil {
-		return x.Annotation
-	}
-	return nil
-}
-
-type DescriptorProto_ExtensionRange struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Start   *int32                 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` // Inclusive.
-	End     *int32                 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"`     // Exclusive.
-	Options *ExtensionRangeOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
-}
-
-func (x *DescriptorProto_ExtensionRange) Reset() {
-	*x = DescriptorProto_ExtensionRange{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[21]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *DescriptorProto_ExtensionRange) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DescriptorProto_ExtensionRange) ProtoMessage() {}
-
-func (x *DescriptorProto_ExtensionRange) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[21]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use DescriptorProto_ExtensionRange.ProtoReflect.Descriptor instead.
-func (*DescriptorProto_ExtensionRange) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{2, 0}
-}
-
-func (x *DescriptorProto_ExtensionRange) GetStart() int32 {
-	if x != nil && x.Start != nil {
-		return *x.Start
-	}
-	return 0
-}
-
-func (x *DescriptorProto_ExtensionRange) GetEnd() int32 {
-	if x != nil && x.End != nil {
-		return *x.End
-	}
-	return 0
-}
-
-func (x *DescriptorProto_ExtensionRange) GetOptions() *ExtensionRangeOptions {
-	if x != nil {
-		return x.Options
-	}
-	return nil
-}
-
-// Range of reserved tag numbers. Reserved tag numbers may not be used by
-// fields or extension ranges in the same message. Reserved ranges may
-// not overlap.
-type DescriptorProto_ReservedRange struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Start *int32 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` // Inclusive.
-	End   *int32 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"`     // Exclusive.
-}
-
-func (x *DescriptorProto_ReservedRange) Reset() {
-	*x = DescriptorProto_ReservedRange{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[22]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *DescriptorProto_ReservedRange) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DescriptorProto_ReservedRange) ProtoMessage() {}
-
-func (x *DescriptorProto_ReservedRange) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[22]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use DescriptorProto_ReservedRange.ProtoReflect.Descriptor instead.
-func (*DescriptorProto_ReservedRange) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{2, 1}
-}
-
-func (x *DescriptorProto_ReservedRange) GetStart() int32 {
-	if x != nil && x.Start != nil {
-		return *x.Start
-	}
-	return 0
-}
-
-func (x *DescriptorProto_ReservedRange) GetEnd() int32 {
-	if x != nil && x.End != nil {
-		return *x.End
-	}
-	return 0
-}
-
-// Range of reserved numeric values. Reserved values may not be used by
-// entries in the same enum. Reserved ranges may not overlap.
-//
-// Note that this is distinct from DescriptorProto.ReservedRange in that it
-// is inclusive such that it can appropriately represent the entire int32
-// domain.
-type EnumDescriptorProto_EnumReservedRange struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Start *int32 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"` // Inclusive.
-	End   *int32 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"`     // Inclusive.
-}
-
-func (x *EnumDescriptorProto_EnumReservedRange) Reset() {
-	*x = EnumDescriptorProto_EnumReservedRange{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[23]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *EnumDescriptorProto_EnumReservedRange) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*EnumDescriptorProto_EnumReservedRange) ProtoMessage() {}
-
-func (x *EnumDescriptorProto_EnumReservedRange) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[23]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use EnumDescriptorProto_EnumReservedRange.ProtoReflect.Descriptor instead.
-func (*EnumDescriptorProto_EnumReservedRange) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{6, 0}
-}
-
-func (x *EnumDescriptorProto_EnumReservedRange) GetStart() int32 {
-	if x != nil && x.Start != nil {
-		return *x.Start
-	}
-	return 0
-}
-
-func (x *EnumDescriptorProto_EnumReservedRange) GetEnd() int32 {
-	if x != nil && x.End != nil {
-		return *x.End
-	}
-	return 0
-}
-
-// The name of the uninterpreted option.  Each string represents a segment in
-// a dot-separated name.  is_extension is true iff a segment represents an
-// extension (denoted with parentheses in options specs in .proto files).
-// E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents
-// "foo.(bar.baz).qux".
-type UninterpretedOption_NamePart struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	NamePart    *string `protobuf:"bytes,1,req,name=name_part,json=namePart" json:"name_part,omitempty"`
-	IsExtension *bool   `protobuf:"varint,2,req,name=is_extension,json=isExtension" json:"is_extension,omitempty"`
-}
-
-func (x *UninterpretedOption_NamePart) Reset() {
-	*x = UninterpretedOption_NamePart{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[24]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *UninterpretedOption_NamePart) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UninterpretedOption_NamePart) ProtoMessage() {}
-
-func (x *UninterpretedOption_NamePart) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[24]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use UninterpretedOption_NamePart.ProtoReflect.Descriptor instead.
-func (*UninterpretedOption_NamePart) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{18, 0}
-}
-
-func (x *UninterpretedOption_NamePart) GetNamePart() string {
-	if x != nil && x.NamePart != nil {
-		return *x.NamePart
-	}
-	return ""
-}
-
-func (x *UninterpretedOption_NamePart) GetIsExtension() bool {
-	if x != nil && x.IsExtension != nil {
-		return *x.IsExtension
-	}
-	return false
-}
-
-type SourceCodeInfo_Location struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Identifies which part of the FileDescriptorProto was defined at this
-	// location.
-	//
-	// Each element is a field number or an index.  They form a path from
-	// the root FileDescriptorProto to the place where the definition.  For
-	// example, this path:
-	//   [ 4, 3, 2, 7, 1 ]
-	// refers to:
-	//   file.message_type(3)  // 4, 3
-	//       .field(7)         // 2, 7
-	//       .name()           // 1
-	// This is because FileDescriptorProto.message_type has field number 4:
-	//   repeated DescriptorProto message_type = 4;
-	// and DescriptorProto.field has field number 2:
-	//   repeated FieldDescriptorProto field = 2;
-	// and FieldDescriptorProto.name has field number 1:
-	//   optional string name = 1;
-	//
-	// Thus, the above path gives the location of a field name.  If we removed
-	// the last element:
-	//   [ 4, 3, 2, 7 ]
-	// this path refers to the whole field declaration (from the beginning
-	// of the label to the terminating semicolon).
-	Path []int32 `protobuf:"varint,1,rep,packed,name=path" json:"path,omitempty"`
-	// Always has exactly three or four elements: start line, start column,
-	// end line (optional, otherwise assumed same as start line), end column.
-	// These are packed into a single field for efficiency.  Note that line
-	// and column numbers are zero-based -- typically you will want to add
-	// 1 to each before displaying to a user.
-	Span []int32 `protobuf:"varint,2,rep,packed,name=span" json:"span,omitempty"`
-	// If this SourceCodeInfo represents a complete declaration, these are any
-	// comments appearing before and after the declaration which appear to be
-	// attached to the declaration.
-	//
-	// A series of line comments appearing on consecutive lines, with no other
-	// tokens appearing on those lines, will be treated as a single comment.
-	//
-	// leading_detached_comments will keep paragraphs of comments that appear
-	// before (but not connected to) the current element. Each paragraph,
-	// separated by empty lines, will be one comment element in the repeated
-	// field.
-	//
-	// Only the comment content is provided; comment markers (e.g. //) are
-	// stripped out.  For block comments, leading whitespace and an asterisk
-	// will be stripped from the beginning of each line other than the first.
-	// Newlines are included in the output.
-	//
-	// Examples:
-	//
-	//   optional int32 foo = 1;  // Comment attached to foo.
-	//   // Comment attached to bar.
-	//   optional int32 bar = 2;
-	//
-	//   optional string baz = 3;
-	//   // Comment attached to baz.
-	//   // Another line attached to baz.
-	//
-	//   // Comment attached to qux.
-	//   //
-	//   // Another line attached to qux.
-	//   optional double qux = 4;
-	//
-	//   // Detached comment for corge. This is not leading or trailing comments
-	//   // to qux or corge because there are blank lines separating it from
-	//   // both.
-	//
-	//   // Detached comment for corge paragraph 2.
-	//
-	//   optional string corge = 5;
-	//   /* Block comment attached
-	//    * to corge.  Leading asterisks
-	//    * will be removed. */
-	//   /* Block comment attached to
-	//    * grault. */
-	//   optional int32 grault = 6;
-	//
-	//   // ignored detached comments.
-	LeadingComments         *string  `protobuf:"bytes,3,opt,name=leading_comments,json=leadingComments" json:"leading_comments,omitempty"`
-	TrailingComments        *string  `protobuf:"bytes,4,opt,name=trailing_comments,json=trailingComments" json:"trailing_comments,omitempty"`
-	LeadingDetachedComments []string `protobuf:"bytes,6,rep,name=leading_detached_comments,json=leadingDetachedComments" json:"leading_detached_comments,omitempty"`
-}
-
-func (x *SourceCodeInfo_Location) Reset() {
-	*x = SourceCodeInfo_Location{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[25]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SourceCodeInfo_Location) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SourceCodeInfo_Location) ProtoMessage() {}
-
-func (x *SourceCodeInfo_Location) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[25]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SourceCodeInfo_Location.ProtoReflect.Descriptor instead.
-func (*SourceCodeInfo_Location) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{19, 0}
-}
-
-func (x *SourceCodeInfo_Location) GetPath() []int32 {
-	if x != nil {
-		return x.Path
-	}
-	return nil
-}
-
-func (x *SourceCodeInfo_Location) GetSpan() []int32 {
-	if x != nil {
-		return x.Span
-	}
-	return nil
-}
-
-func (x *SourceCodeInfo_Location) GetLeadingComments() string {
-	if x != nil && x.LeadingComments != nil {
-		return *x.LeadingComments
-	}
-	return ""
-}
-
-func (x *SourceCodeInfo_Location) GetTrailingComments() string {
-	if x != nil && x.TrailingComments != nil {
-		return *x.TrailingComments
-	}
-	return ""
-}
-
-func (x *SourceCodeInfo_Location) GetLeadingDetachedComments() []string {
-	if x != nil {
-		return x.LeadingDetachedComments
-	}
-	return nil
-}
-
-type GeneratedCodeInfo_Annotation struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Identifies the element in the original source .proto file. This field
-	// is formatted the same as SourceCodeInfo.Location.path.
-	Path []int32 `protobuf:"varint,1,rep,packed,name=path" json:"path,omitempty"`
-	// Identifies the filesystem path to the original source .proto.
-	SourceFile *string `protobuf:"bytes,2,opt,name=source_file,json=sourceFile" json:"source_file,omitempty"`
-	// Identifies the starting offset in bytes in the generated code
-	// that relates to the identified object.
-	Begin *int32 `protobuf:"varint,3,opt,name=begin" json:"begin,omitempty"`
-	// Identifies the ending offset in bytes in the generated code that
-	// relates to the identified offset. The end offset should be one past
-	// the last relevant byte (so the length of the text = end - begin).
-	End *int32 `protobuf:"varint,4,opt,name=end" json:"end,omitempty"`
-}
-
-func (x *GeneratedCodeInfo_Annotation) Reset() {
-	*x = GeneratedCodeInfo_Annotation{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_descriptor_proto_msgTypes[26]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GeneratedCodeInfo_Annotation) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GeneratedCodeInfo_Annotation) ProtoMessage() {}
-
-func (x *GeneratedCodeInfo_Annotation) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_descriptor_proto_msgTypes[26]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use GeneratedCodeInfo_Annotation.ProtoReflect.Descriptor instead.
-func (*GeneratedCodeInfo_Annotation) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_descriptor_proto_rawDescGZIP(), []int{20, 0}
-}
-
-func (x *GeneratedCodeInfo_Annotation) GetPath() []int32 {
-	if x != nil {
-		return x.Path
-	}
-	return nil
-}
-
-func (x *GeneratedCodeInfo_Annotation) GetSourceFile() string {
-	if x != nil && x.SourceFile != nil {
-		return *x.SourceFile
-	}
-	return ""
-}
-
-func (x *GeneratedCodeInfo_Annotation) GetBegin() int32 {
-	if x != nil && x.Begin != nil {
-		return *x.Begin
-	}
-	return 0
-}
-
-func (x *GeneratedCodeInfo_Annotation) GetEnd() int32 {
-	if x != nil && x.End != nil {
-		return *x.End
-	}
-	return 0
-}
-
-var File_google_protobuf_descriptor_proto protoreflect.FileDescriptor
-
-var file_google_protobuf_descriptor_proto_rawDesc = []byte{
-	0x0a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x12, 0x0f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x22, 0x4d, 0x0a, 0x11, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72,
-	0x69, 0x70, 0x74, 0x6f, 0x72, 0x53, 0x65, 0x74, 0x12, 0x38, 0x0a, 0x04, 0x66, 0x69, 0x6c, 0x65,
-	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73,
-	0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x04, 0x66, 0x69,
-	0x6c, 0x65, 0x22, 0xe4, 0x04, 0x0a, 0x13, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72,
-	0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
-	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18,
-	0x0a, 0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x07, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x65,
-	0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65,
-	0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x75, 0x62, 0x6c,
-	0x69, 0x63, 0x5f, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0a, 0x20,
-	0x03, 0x28, 0x05, 0x52, 0x10, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x44, 0x65, 0x70, 0x65, 0x6e,
-	0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x77, 0x65, 0x61, 0x6b, 0x5f, 0x64, 0x65,
-	0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e,
-	0x77, 0x65, 0x61, 0x6b, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x43,
-	0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f,
-	0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54,
-	0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65,
-	0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73,
-	0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x08, 0x65, 0x6e,
-	0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
-	0x65, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
-	0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f,
-	0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x43, 0x0a, 0x09, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46,
-	0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72,
-	0x6f, 0x74, 0x6f, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x36,
-	0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x49, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
-	0x5f, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66,
-	0x6f, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66,
-	0x6f, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x22, 0xb9, 0x06, 0x0a, 0x0f, 0x44, 0x65,
-	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a,
-	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
-	0x65, 0x12, 0x3b, 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
-	0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x43,
-	0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
-	0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x0b, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x79,
-	0x70, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72,
-	0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0a, 0x6e, 0x65, 0x73, 0x74,
-	0x65, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x41, 0x0a, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x5f, 0x74,
-	0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d,
-	0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52,
-	0x08, 0x65, 0x6e, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x58, 0x0a, 0x0f, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50,
-	0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61,
-	0x6e, 0x67, 0x65, 0x52, 0x0e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61,
-	0x6e, 0x67, 0x65, 0x12, 0x44, 0x0a, 0x0a, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f, 0x64, 0x65, 0x63,
-	0x6c, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x44,
-	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x09,
-	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x44, 0x65, 0x63, 0x6c, 0x12, 0x39, 0x0a, 0x07, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x73,
-	0x73, 0x61, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x55, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64,
-	0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44,
-	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x52,
-	0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x0d, 0x72, 0x65,
-	0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x72,
-	0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x03,
-	0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65,
-	0x1a, 0x7a, 0x0a, 0x0e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e,
-	0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x40, 0x0a, 0x07, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x37, 0x0a, 0x0d,
-	0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a,
-	0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74,
-	0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x03, 0x65, 0x6e, 0x64, 0x22, 0x7c, 0x0a, 0x15, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58,
-	0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74,
-	0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80,
-	0x80, 0x80, 0x02, 0x22, 0xc1, 0x06, 0x0a, 0x14, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x65, 0x73,
-	0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04,
-	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
-	0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65,
-	0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x44,
-	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c,
-	0x61, 0x62, 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x3e, 0x0a, 0x04, 0x74,
-	0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c,
-	0x64, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f,
-	0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74,
-	0x79, 0x70, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
-	0x74, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x74, 0x65,
-	0x6e, 0x64, 0x65, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x74, 0x65,
-	0x6e, 0x64, 0x65, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x66,
-	0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x6e, 0x65,
-	0x6f, 0x66, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
-	0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x73,
-	0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a,
-	0x73, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64,
-	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x61, 0x6c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x33, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x22, 0xb6, 0x02, 0x0a, 0x04, 0x54, 0x79,
-	0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x4f, 0x55, 0x42, 0x4c,
-	0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x41,
-	0x54, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x36,
-	0x34, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54,
-	0x36, 0x34, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54,
-	0x33, 0x32, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x58,
-	0x45, 0x44, 0x36, 0x34, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46,
-	0x49, 0x58, 0x45, 0x44, 0x33, 0x32, 0x10, 0x07, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45,
-	0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f,
-	0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45,
-	0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45,
-	0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x0b, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59,
-	0x50, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0c, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59,
-	0x50, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x0d, 0x12, 0x0d, 0x0a, 0x09, 0x54,
-	0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x10, 0x0e, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x59,
-	0x50, 0x45, 0x5f, 0x53, 0x46, 0x49, 0x58, 0x45, 0x44, 0x33, 0x32, 0x10, 0x0f, 0x12, 0x11, 0x0a,
-	0x0d, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x46, 0x49, 0x58, 0x45, 0x44, 0x36, 0x34, 0x10, 0x10,
-	0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10,
-	0x11, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x49, 0x4e, 0x54, 0x36, 0x34,
-	0x10, 0x12, 0x22, 0x43, 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x0e, 0x4c,
-	0x41, 0x42, 0x45, 0x4c, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x12,
-	0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45,
-	0x44, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x5f, 0x52, 0x45, 0x50,
-	0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x03, 0x22, 0x63, 0x0a, 0x14, 0x4f, 0x6e, 0x65, 0x6f, 0x66,
-	0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12,
-	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
-	0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe3, 0x02, 0x0a,
-	0x13, 0x45, 0x6e, 0x75, 0x6d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50,
-	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61,
-	0x6c, 0x75, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f,
-	0x74, 0x6f, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75,
-	0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x73, 0x12, 0x5d, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x72, 0x61,
-	0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d,
-	0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x45, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67,
-	0x65, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65,
-	0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d,
-	0x65, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65,
-	0x64, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x3b, 0x0a, 0x11, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x65, 0x73,
-	0x65, 0x72, 0x76, 0x65, 0x64, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74,
-	0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74,
-	0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65,
-	0x6e, 0x64, 0x22, 0x83, 0x01, 0x0a, 0x18, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65,
-	0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12,
-	0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e,
-	0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x07, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45,
-	0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
-	0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x16, 0x53, 0x65, 0x72,
-	0x76, 0x69, 0x63, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72,
-	0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f,
-	0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64,
-	0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52,
-	0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x39, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69,
-	0x63, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x73, 0x22, 0x89, 0x02, 0x0a, 0x15, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x44, 0x65, 0x73,
-	0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04,
-	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
-	0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12,
-	0x1f, 0x0a, 0x0b, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x54, 0x79, 0x70, 0x65,
-	0x12, 0x38, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x30, 0x0a, 0x10, 0x63, 0x6c,
-	0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0f, 0x63, 0x6c, 0x69,
-	0x65, 0x6e, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x30, 0x0a, 0x10,
-	0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67,
-	0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0f, 0x73,
-	0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x22, 0x91,
-	0x09, 0x0a, 0x0b, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21,
-	0x0a, 0x0c, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6a, 0x61, 0x76, 0x61, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67,
-	0x65, 0x12, 0x30, 0x0a, 0x14, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x5f,
-	0x63, 0x6c, 0x61, 0x73, 0x73, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x12, 0x6a, 0x61, 0x76, 0x61, 0x4f, 0x75, 0x74, 0x65, 0x72, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x6e,
-	0x61, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x13, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x6d, 0x75, 0x6c, 0x74,
-	0x69, 0x70, 0x6c, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08,
-	0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x6a, 0x61, 0x76, 0x61, 0x4d, 0x75, 0x6c,
-	0x74, 0x69, 0x70, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x44, 0x0a, 0x1d, 0x6a, 0x61,
-	0x76, 0x61, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x5f, 0x65, 0x71, 0x75, 0x61,
-	0x6c, 0x73, 0x5f, 0x61, 0x6e, 0x64, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18, 0x14, 0x20, 0x01, 0x28,
-	0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x19, 0x6a, 0x61, 0x76, 0x61, 0x47, 0x65, 0x6e, 0x65, 0x72,
-	0x61, 0x74, 0x65, 0x45, 0x71, 0x75, 0x61, 0x6c, 0x73, 0x41, 0x6e, 0x64, 0x48, 0x61, 0x73, 0x68,
-	0x12, 0x3a, 0x0a, 0x16, 0x6a, 0x61, 0x76, 0x61, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f,
-	0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x75, 0x74, 0x66, 0x38, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x08,
-	0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x13, 0x6a, 0x61, 0x76, 0x61, 0x53, 0x74, 0x72,
-	0x69, 0x6e, 0x67, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x55, 0x74, 0x66, 0x38, 0x12, 0x53, 0x0a, 0x0c,
-	0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x18, 0x09, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x3a, 0x05, 0x53,
-	0x50, 0x45, 0x45, 0x44, 0x52, 0x0b, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x65, 0x46, 0x6f,
-	0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x6f, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18,
-	0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x67, 0x6f, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65,
-	0x12, 0x35, 0x0a, 0x13, 0x63, 0x63, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73,
-	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66,
-	0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x63, 0x63, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53,
-	0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x15, 0x6a, 0x61, 0x76, 0x61, 0x5f,
-	0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73,
-	0x18, 0x11, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x13, 0x6a,
-	0x61, 0x76, 0x61, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
-	0x65, 0x73, 0x12, 0x35, 0x0a, 0x13, 0x70, 0x79, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63,
-	0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x3a,
-	0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x11, 0x70, 0x79, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69,
-	0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x37, 0x0a, 0x14, 0x70, 0x68, 0x70,
-	0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
-	0x73, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x12,
-	0x70, 0x68, 0x70, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
-	0x65, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64,
-	0x18, 0x17, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64,
-	0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x10, 0x63, 0x63, 0x5f,
-	0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x61, 0x72, 0x65, 0x6e, 0x61, 0x73, 0x18, 0x1f, 0x20,
-	0x01, 0x28, 0x08, 0x3a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x0e, 0x63, 0x63, 0x45, 0x6e, 0x61,
-	0x62, 0x6c, 0x65, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x6f, 0x62, 0x6a,
-	0x63, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x24,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6f, 0x62, 0x6a, 0x63, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x50,
-	0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x73, 0x68, 0x61, 0x72, 0x70, 0x5f,
-	0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x25, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0f, 0x63, 0x73, 0x68, 0x61, 0x72, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
-	0x12, 0x21, 0x0a, 0x0c, 0x73, 0x77, 0x69, 0x66, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
-	0x18, 0x27, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x77, 0x69, 0x66, 0x74, 0x50, 0x72, 0x65,
-	0x66, 0x69, 0x78, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x68, 0x70, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73,
-	0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70,
-	0x68, 0x70, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x23, 0x0a,
-	0x0d, 0x70, 0x68, 0x70, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x29,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x68, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
-	0x63, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x68, 0x70, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
-	0x74, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x2c, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x14, 0x70, 0x68, 0x70, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4e,
-	0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x75, 0x62, 0x79,
-	0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x2d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b,
-	0x72, 0x75, 0x62, 0x79, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x58, 0x0a, 0x14, 0x75,
-	0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69,
-	0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a,
-	0x65, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x50, 0x45, 0x45, 0x44, 0x10, 0x01,
-	0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x02, 0x12,
-	0x10, 0x0a, 0x0c, 0x4c, 0x49, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x54, 0x49, 0x4d, 0x45, 0x10,
-	0x03, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x26,
-	0x10, 0x27, 0x22, 0xd1, 0x02, 0x0a, 0x0e, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x4f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x17, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65,
-	0x5f, 0x73, 0x65, 0x74, 0x5f, 0x77, 0x69, 0x72, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x14, 0x6d,
-	0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x53, 0x65, 0x74, 0x57, 0x69, 0x72, 0x65, 0x46, 0x6f, 0x72,
-	0x6d, 0x61, 0x74, 0x12, 0x4c, 0x0a, 0x1f, 0x6e, 0x6f, 0x5f, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61,
-	0x72, 0x64, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x5f, 0x61, 0x63,
-	0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61,
-	0x6c, 0x73, 0x65, 0x52, 0x1c, 0x6e, 0x6f, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x44,
-	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x6f,
-	0x72, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65,
-	0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x5f,
-	0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6d, 0x61, 0x70,
-	0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72,
-	0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72,
-	0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e,
-	0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a,
-	0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09,
-	0x4a, 0x04, 0x08, 0x09, 0x10, 0x0a, 0x22, 0xe2, 0x03, 0x0a, 0x0c, 0x46, 0x69, 0x65, 0x6c, 0x64,
-	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x41, 0x0a, 0x05, 0x63, 0x74, 0x79, 0x70, 0x65,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x06, 0x53, 0x54, 0x52,
-	0x49, 0x4e, 0x47, 0x52, 0x05, 0x63, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61,
-	0x63, 0x6b, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x61, 0x63, 0x6b,
-	0x65, 0x64, 0x12, 0x47, 0x0a, 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x73, 0x2e, 0x4a, 0x53, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x09, 0x4a, 0x53, 0x5f, 0x4e, 0x4f, 0x52,
-	0x4d, 0x41, 0x4c, 0x52, 0x06, 0x6a, 0x73, 0x74, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x04, 0x6c,
-	0x61, 0x7a, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65,
-	0x52, 0x04, 0x6c, 0x61, 0x7a, 0x79, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63,
-	0x61, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73,
-	0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a,
-	0x04, 0x77, 0x65, 0x61, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c,
-	0x73, 0x65, 0x52, 0x04, 0x77, 0x65, 0x61, 0x6b, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e,
-	0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65,
-	0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75,
-	0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x22, 0x2f, 0x0a, 0x05, 0x43, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0a, 0x0a, 0x06, 0x53,
-	0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x43, 0x4f, 0x52, 0x44, 0x10,
-	0x01, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x49, 0x45, 0x43,
-	0x45, 0x10, 0x02, 0x22, 0x35, 0x0a, 0x06, 0x4a, 0x53, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0d, 0x0a,
-	0x09, 0x4a, 0x53, 0x5f, 0x4e, 0x4f, 0x52, 0x4d, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09,
-	0x4a, 0x53, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4a,
-	0x53, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x02, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10,
-	0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08, 0x04, 0x10, 0x05, 0x22, 0x73, 0x0a, 0x0c, 0x4f,
-	0x6e, 0x65, 0x6f, 0x66, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x58, 0x0a, 0x14, 0x75,
-	0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69,
-	0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02,
-	0x22, 0xc0, 0x01, 0x0a, 0x0b, 0x45, 0x6e, 0x75, 0x6d, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x6c, 0x69, 0x61,
-	0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65,
-	0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e,
-	0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65,
-	0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75,
-	0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x4a, 0x04, 0x08,
-	0x05, 0x10, 0x06, 0x22, 0x9e, 0x01, 0x0a, 0x10, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75,
-	0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72,
-	0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61,
-	0x6c, 0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12,
-	0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64,
-	0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65,
-	0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80,
-	0x80, 0x80, 0x80, 0x02, 0x22, 0x9c, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
-	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65,
-	0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c,
-	0x73, 0x65, 0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x58,
-	0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x5f,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74,
-	0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x09, 0x08, 0xe8, 0x07, 0x10, 0x80, 0x80,
-	0x80, 0x80, 0x02, 0x22, 0xe0, 0x02, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25, 0x0a, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61,
-	0x74, 0x65, 0x64, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65,
-	0x52, 0x0a, 0x64, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x12, 0x71, 0x0a, 0x11,
-	0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65,
-	0x6c, 0x18, 0x22, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64,
-	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65,
-	0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x3a, 0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f,
-	0x54, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x52, 0x10, 0x69,
-	0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12,
-	0x58, 0x0a, 0x14, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64,
-	0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2e, 0x55, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x75, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65,
-	0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x50, 0x0a, 0x10, 0x49, 0x64, 0x65,
-	0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x17, 0x0a,
-	0x13, 0x49, 0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, 0x4e, 0x43, 0x59, 0x5f, 0x55, 0x4e, 0x4b,
-	0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4e, 0x4f, 0x5f, 0x53, 0x49, 0x44,
-	0x45, 0x5f, 0x45, 0x46, 0x46, 0x45, 0x43, 0x54, 0x53, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x49,
-	0x44, 0x45, 0x4d, 0x50, 0x4f, 0x54, 0x45, 0x4e, 0x54, 0x10, 0x02, 0x2a, 0x09, 0x08, 0xe8, 0x07,
-	0x10, 0x80, 0x80, 0x80, 0x80, 0x02, 0x22, 0x9a, 0x03, 0x0a, 0x13, 0x55, 0x6e, 0x69, 0x6e, 0x74,
-	0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41,
-	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55,
-	0x6e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x64, 0x4f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74, 0x52, 0x04, 0x6e, 0x61, 0x6d,
-	0x65, 0x12, 0x29, 0x0a, 0x10, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x5f,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x69, 0x64, 0x65,
-	0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x12,
-	0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69,
-	0x76, 0x65, 0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x6e, 0x65,
-	0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
-	0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65,
-	0x49, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x6f, 0x75, 0x62,
-	0x6c, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b,
-	0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73,
-	0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28,
-	0x0c, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27,
-	0x0a, 0x0f, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x61, 0x67, 0x67, 0x72, 0x65, 0x67, 0x61,
-	0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x4a, 0x0a, 0x08, 0x4e, 0x61, 0x6d, 0x65, 0x50,
-	0x61, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x74,
-	0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x08, 0x6e, 0x61, 0x6d, 0x65, 0x50, 0x61, 0x72, 0x74,
-	0x12, 0x21, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x18, 0x02, 0x20, 0x02, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x22, 0xa7, 0x02, 0x0a, 0x0e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f,
-	0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x44, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69,
-	0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63,
-	0x65, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69,
-	0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0xce, 0x01, 0x0a,
-	0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x04, 0x70, 0x61, 0x74,
-	0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74,
-	0x68, 0x12, 0x16, 0x0a, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x42,
-	0x02, 0x10, 0x01, 0x52, 0x04, 0x73, 0x70, 0x61, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x6c, 0x65, 0x61,
-	0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d,
-	0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67,
-	0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x10, 0x74, 0x72, 0x61, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74,
-	0x73, 0x12, 0x3a, 0x0a, 0x19, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x74,
-	0x61, 0x63, 0x68, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x06,
-	0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x44, 0x65, 0x74,
-	0x61, 0x63, 0x68, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xd1, 0x01,
-	0x0a, 0x11, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49,
-	0x6e, 0x66, 0x6f, 0x12, 0x4d, 0x0a, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f,
-	0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61,
-	0x74, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x6e, 0x6e, 0x6f,
-	0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69,
-	0x6f, 0x6e, 0x1a, 0x6d, 0x0a, 0x0a, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x12, 0x16, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02,
-	0x10, 0x01, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72,
-	0x63, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73,
-	0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x65, 0x67,
-	0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x12,
-	0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x65, 0x6e,
-	0x64, 0x42, 0x7e, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x42, 0x10, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69,
-	0x70, 0x74, 0x6f, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x48, 0x01, 0x5a, 0x2d, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x64,
-	0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x70, 0x62, 0xf8, 0x01, 0x01, 0xa2, 0x02,
-	0x03, 0x47, 0x50, 0x42, 0xaa, 0x02, 0x1a, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x50, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f,
-	0x6e,
-}
-
-var (
-	file_google_protobuf_descriptor_proto_rawDescOnce sync.Once
-	file_google_protobuf_descriptor_proto_rawDescData = file_google_protobuf_descriptor_proto_rawDesc
-)
-
-func file_google_protobuf_descriptor_proto_rawDescGZIP() []byte {
-	file_google_protobuf_descriptor_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_descriptor_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_protobuf_descriptor_proto_rawDescData)
-	})
-	return file_google_protobuf_descriptor_proto_rawDescData
-}
-
-var file_google_protobuf_descriptor_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
-var file_google_protobuf_descriptor_proto_msgTypes = make([]protoimpl.MessageInfo, 27)
-var file_google_protobuf_descriptor_proto_goTypes = []interface{}{
-	(FieldDescriptorProto_Type)(0),                // 0: google.protobuf.FieldDescriptorProto.Type
-	(FieldDescriptorProto_Label)(0),               // 1: google.protobuf.FieldDescriptorProto.Label
-	(FileOptions_OptimizeMode)(0),                 // 2: google.protobuf.FileOptions.OptimizeMode
-	(FieldOptions_CType)(0),                       // 3: google.protobuf.FieldOptions.CType
-	(FieldOptions_JSType)(0),                      // 4: google.protobuf.FieldOptions.JSType
-	(MethodOptions_IdempotencyLevel)(0),           // 5: google.protobuf.MethodOptions.IdempotencyLevel
-	(*FileDescriptorSet)(nil),                     // 6: google.protobuf.FileDescriptorSet
-	(*FileDescriptorProto)(nil),                   // 7: google.protobuf.FileDescriptorProto
-	(*DescriptorProto)(nil),                       // 8: google.protobuf.DescriptorProto
-	(*ExtensionRangeOptions)(nil),                 // 9: google.protobuf.ExtensionRangeOptions
-	(*FieldDescriptorProto)(nil),                  // 10: google.protobuf.FieldDescriptorProto
-	(*OneofDescriptorProto)(nil),                  // 11: google.protobuf.OneofDescriptorProto
-	(*EnumDescriptorProto)(nil),                   // 12: google.protobuf.EnumDescriptorProto
-	(*EnumValueDescriptorProto)(nil),              // 13: google.protobuf.EnumValueDescriptorProto
-	(*ServiceDescriptorProto)(nil),                // 14: google.protobuf.ServiceDescriptorProto
-	(*MethodDescriptorProto)(nil),                 // 15: google.protobuf.MethodDescriptorProto
-	(*FileOptions)(nil),                           // 16: google.protobuf.FileOptions
-	(*MessageOptions)(nil),                        // 17: google.protobuf.MessageOptions
-	(*FieldOptions)(nil),                          // 18: google.protobuf.FieldOptions
-	(*OneofOptions)(nil),                          // 19: google.protobuf.OneofOptions
-	(*EnumOptions)(nil),                           // 20: google.protobuf.EnumOptions
-	(*EnumValueOptions)(nil),                      // 21: google.protobuf.EnumValueOptions
-	(*ServiceOptions)(nil),                        // 22: google.protobuf.ServiceOptions
-	(*MethodOptions)(nil),                         // 23: google.protobuf.MethodOptions
-	(*UninterpretedOption)(nil),                   // 24: google.protobuf.UninterpretedOption
-	(*SourceCodeInfo)(nil),                        // 25: google.protobuf.SourceCodeInfo
-	(*GeneratedCodeInfo)(nil),                     // 26: google.protobuf.GeneratedCodeInfo
-	(*DescriptorProto_ExtensionRange)(nil),        // 27: google.protobuf.DescriptorProto.ExtensionRange
-	(*DescriptorProto_ReservedRange)(nil),         // 28: google.protobuf.DescriptorProto.ReservedRange
-	(*EnumDescriptorProto_EnumReservedRange)(nil), // 29: google.protobuf.EnumDescriptorProto.EnumReservedRange
-	(*UninterpretedOption_NamePart)(nil),          // 30: google.protobuf.UninterpretedOption.NamePart
-	(*SourceCodeInfo_Location)(nil),               // 31: google.protobuf.SourceCodeInfo.Location
-	(*GeneratedCodeInfo_Annotation)(nil),          // 32: google.protobuf.GeneratedCodeInfo.Annotation
-}
-var file_google_protobuf_descriptor_proto_depIdxs = []int32{
-	7,  // 0: google.protobuf.FileDescriptorSet.file:type_name -> google.protobuf.FileDescriptorProto
-	8,  // 1: google.protobuf.FileDescriptorProto.message_type:type_name -> google.protobuf.DescriptorProto
-	12, // 2: google.protobuf.FileDescriptorProto.enum_type:type_name -> google.protobuf.EnumDescriptorProto
-	14, // 3: google.protobuf.FileDescriptorProto.service:type_name -> google.protobuf.ServiceDescriptorProto
-	10, // 4: google.protobuf.FileDescriptorProto.extension:type_name -> google.protobuf.FieldDescriptorProto
-	16, // 5: google.protobuf.FileDescriptorProto.options:type_name -> google.protobuf.FileOptions
-	25, // 6: google.protobuf.FileDescriptorProto.source_code_info:type_name -> google.protobuf.SourceCodeInfo
-	10, // 7: google.protobuf.DescriptorProto.field:type_name -> google.protobuf.FieldDescriptorProto
-	10, // 8: google.protobuf.DescriptorProto.extension:type_name -> google.protobuf.FieldDescriptorProto
-	8,  // 9: google.protobuf.DescriptorProto.nested_type:type_name -> google.protobuf.DescriptorProto
-	12, // 10: google.protobuf.DescriptorProto.enum_type:type_name -> google.protobuf.EnumDescriptorProto
-	27, // 11: google.protobuf.DescriptorProto.extension_range:type_name -> google.protobuf.DescriptorProto.ExtensionRange
-	11, // 12: google.protobuf.DescriptorProto.oneof_decl:type_name -> google.protobuf.OneofDescriptorProto
-	17, // 13: google.protobuf.DescriptorProto.options:type_name -> google.protobuf.MessageOptions
-	28, // 14: google.protobuf.DescriptorProto.reserved_range:type_name -> google.protobuf.DescriptorProto.ReservedRange
-	24, // 15: google.protobuf.ExtensionRangeOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
-	1,  // 16: google.protobuf.FieldDescriptorProto.label:type_name -> google.protobuf.FieldDescriptorProto.Label
-	0,  // 17: google.protobuf.FieldDescriptorProto.type:type_name -> google.protobuf.FieldDescriptorProto.Type
-	18, // 18: google.protobuf.FieldDescriptorProto.options:type_name -> google.protobuf.FieldOptions
-	19, // 19: google.protobuf.OneofDescriptorProto.options:type_name -> google.protobuf.OneofOptions
-	13, // 20: google.protobuf.EnumDescriptorProto.value:type_name -> google.protobuf.EnumValueDescriptorProto
-	20, // 21: google.protobuf.EnumDescriptorProto.options:type_name -> google.protobuf.EnumOptions
-	29, // 22: google.protobuf.EnumDescriptorProto.reserved_range:type_name -> google.protobuf.EnumDescriptorProto.EnumReservedRange
-	21, // 23: google.protobuf.EnumValueDescriptorProto.options:type_name -> google.protobuf.EnumValueOptions
-	15, // 24: google.protobuf.ServiceDescriptorProto.method:type_name -> google.protobuf.MethodDescriptorProto
-	22, // 25: google.protobuf.ServiceDescriptorProto.options:type_name -> google.protobuf.ServiceOptions
-	23, // 26: google.protobuf.MethodDescriptorProto.options:type_name -> google.protobuf.MethodOptions
-	2,  // 27: google.protobuf.FileOptions.optimize_for:type_name -> google.protobuf.FileOptions.OptimizeMode
-	24, // 28: google.protobuf.FileOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
-	24, // 29: google.protobuf.MessageOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
-	3,  // 30: google.protobuf.FieldOptions.ctype:type_name -> google.protobuf.FieldOptions.CType
-	4,  // 31: google.protobuf.FieldOptions.jstype:type_name -> google.protobuf.FieldOptions.JSType
-	24, // 32: google.protobuf.FieldOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
-	24, // 33: google.protobuf.OneofOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
-	24, // 34: google.protobuf.EnumOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
-	24, // 35: google.protobuf.EnumValueOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
-	24, // 36: google.protobuf.ServiceOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
-	5,  // 37: google.protobuf.MethodOptions.idempotency_level:type_name -> google.protobuf.MethodOptions.IdempotencyLevel
-	24, // 38: google.protobuf.MethodOptions.uninterpreted_option:type_name -> google.protobuf.UninterpretedOption
-	30, // 39: google.protobuf.UninterpretedOption.name:type_name -> google.protobuf.UninterpretedOption.NamePart
-	31, // 40: google.protobuf.SourceCodeInfo.location:type_name -> google.protobuf.SourceCodeInfo.Location
-	32, // 41: google.protobuf.GeneratedCodeInfo.annotation:type_name -> google.protobuf.GeneratedCodeInfo.Annotation
-	9,  // 42: google.protobuf.DescriptorProto.ExtensionRange.options:type_name -> google.protobuf.ExtensionRangeOptions
-	43, // [43:43] is the sub-list for method output_type
-	43, // [43:43] is the sub-list for method input_type
-	43, // [43:43] is the sub-list for extension type_name
-	43, // [43:43] is the sub-list for extension extendee
-	0,  // [0:43] is the sub-list for field type_name
-}
-
-func init() { file_google_protobuf_descriptor_proto_init() }
-func file_google_protobuf_descriptor_proto_init() {
-	if File_google_protobuf_descriptor_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_google_protobuf_descriptor_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FileDescriptorSet); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FileDescriptorProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DescriptorProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ExtensionRangeOptions); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FieldDescriptorProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*OneofDescriptorProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*EnumDescriptorProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*EnumValueDescriptorProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ServiceDescriptorProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MethodDescriptorProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FileOptions); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MessageOptions); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FieldOptions); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*OneofOptions); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*EnumOptions); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*EnumValueOptions); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ServiceOptions); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*MethodOptions); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			case 3:
-				return &v.extensionFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UninterpretedOption); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SourceCodeInfo); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GeneratedCodeInfo); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DescriptorProto_ExtensionRange); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DescriptorProto_ReservedRange); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*EnumDescriptorProto_EnumReservedRange); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UninterpretedOption_NamePart); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SourceCodeInfo_Location); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_descriptor_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GeneratedCodeInfo_Annotation); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_google_protobuf_descriptor_proto_rawDesc,
-			NumEnums:      6,
-			NumMessages:   27,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_google_protobuf_descriptor_proto_goTypes,
-		DependencyIndexes: file_google_protobuf_descriptor_proto_depIdxs,
-		EnumInfos:         file_google_protobuf_descriptor_proto_enumTypes,
-		MessageInfos:      file_google_protobuf_descriptor_proto_msgTypes,
-	}.Build()
-	File_google_protobuf_descriptor_proto = out.File
-	file_google_protobuf_descriptor_proto_rawDesc = nil
-	file_google_protobuf_descriptor_proto_goTypes = nil
-	file_google_protobuf_descriptor_proto_depIdxs = nil
-}
diff --git a/types/dynamicpb/dynamic.go b/types/dynamicpb/dynamic.go
deleted file mode 100644
index 900b9d2..0000000
--- a/types/dynamicpb/dynamic.go
+++ /dev/null
@@ -1,713 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Package dynamicpb creates protocol buffer messages using runtime type information.
-package dynamicpb
-
-import (
-	"math"
-
-	"google.golang.org/protobuf/internal/errors"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/runtime/protoiface"
-	"google.golang.org/protobuf/runtime/protoimpl"
-)
-
-// enum is a dynamic protoreflect.Enum.
-type enum struct {
-	num pref.EnumNumber
-	typ pref.EnumType
-}
-
-func (e enum) Descriptor() pref.EnumDescriptor { return e.typ.Descriptor() }
-func (e enum) Type() pref.EnumType             { return e.typ }
-func (e enum) Number() pref.EnumNumber         { return e.num }
-
-// enumType is a dynamic protoreflect.EnumType.
-type enumType struct {
-	desc pref.EnumDescriptor
-}
-
-// NewEnumType creates a new EnumType with the provided descriptor.
-//
-// EnumTypes created by this package are equal if their descriptors are equal.
-// That is, if ed1 == ed2, then NewEnumType(ed1) == NewEnumType(ed2).
-//
-// Enum values created by the EnumType are equal if their numbers are equal.
-func NewEnumType(desc pref.EnumDescriptor) pref.EnumType {
-	return enumType{desc}
-}
-
-func (et enumType) New(n pref.EnumNumber) pref.Enum { return enum{n, et} }
-func (et enumType) Descriptor() pref.EnumDescriptor { return et.desc }
-
-// extensionType is a dynamic protoreflect.ExtensionType.
-type extensionType struct {
-	desc extensionTypeDescriptor
-}
-
-// A Message is a dynamically constructed protocol buffer message.
-//
-// Message implements the proto.Message interface, and may be used with all
-// standard proto package functions such as Marshal, Unmarshal, and so forth.
-//
-// Message also implements the protoreflect.Message interface. See the protoreflect
-// package documentation for that interface for how to get and set fields and
-// otherwise interact with the contents of a Message.
-//
-// Reflection API functions which construct messages, such as NewField,
-// return new dynamic messages of the appropriate type. Functions which take
-// messages, such as Set for a message-value field, will accept any message
-// with a compatible type.
-//
-// Operations which modify a Message are not safe for concurrent use.
-type Message struct {
-	typ     messageType
-	known   map[pref.FieldNumber]pref.Value
-	ext     map[pref.FieldNumber]pref.FieldDescriptor
-	unknown pref.RawFields
-}
-
-var (
-	_ pref.Message         = (*Message)(nil)
-	_ pref.ProtoMessage    = (*Message)(nil)
-	_ protoiface.MessageV1 = (*Message)(nil)
-)
-
-// NewMessage creates a new message with the provided descriptor.
-func NewMessage(desc pref.MessageDescriptor) *Message {
-	return &Message{
-		typ:   messageType{desc},
-		known: make(map[pref.FieldNumber]pref.Value),
-		ext:   make(map[pref.FieldNumber]pref.FieldDescriptor),
-	}
-}
-
-// ProtoMessage implements the legacy message interface.
-func (m *Message) ProtoMessage() {}
-
-// ProtoReflect implements the protoreflect.ProtoMessage interface.
-func (m *Message) ProtoReflect() pref.Message {
-	return m
-}
-
-// String returns a string representation of a message.
-func (m *Message) String() string {
-	return protoimpl.X.MessageStringOf(m)
-}
-
-// Reset clears the message to be empty, but preserves the dynamic message type.
-func (m *Message) Reset() {
-	m.known = make(map[pref.FieldNumber]pref.Value)
-	m.ext = make(map[pref.FieldNumber]pref.FieldDescriptor)
-	m.unknown = nil
-}
-
-// Descriptor returns the message descriptor.
-func (m *Message) Descriptor() pref.MessageDescriptor {
-	return m.typ.desc
-}
-
-// Type returns the message type.
-func (m *Message) Type() pref.MessageType {
-	return m.typ
-}
-
-// New returns a newly allocated empty message with the same descriptor.
-// See protoreflect.Message for details.
-func (m *Message) New() pref.Message {
-	return m.Type().New()
-}
-
-// Interface returns the message.
-// See protoreflect.Message for details.
-func (m *Message) Interface() pref.ProtoMessage {
-	return m
-}
-
-// ProtoMethods is an internal detail of the protoreflect.Message interface.
-// Users should never call this directly.
-func (m *Message) ProtoMethods() *protoiface.Methods {
-	return nil
-}
-
-// Range visits every populated field in undefined order.
-// See protoreflect.Message for details.
-func (m *Message) Range(f func(pref.FieldDescriptor, pref.Value) bool) {
-	for num, v := range m.known {
-		fd := m.ext[num]
-		if fd == nil {
-			fd = m.Descriptor().Fields().ByNumber(num)
-		}
-		if !isSet(fd, v) {
-			continue
-		}
-		if !f(fd, v) {
-			return
-		}
-	}
-}
-
-// Has reports whether a field is populated.
-// See protoreflect.Message for details.
-func (m *Message) Has(fd pref.FieldDescriptor) bool {
-	m.checkField(fd)
-	if fd.IsExtension() && m.ext[fd.Number()] != fd {
-		return false
-	}
-	v, ok := m.known[fd.Number()]
-	if !ok {
-		return false
-	}
-	return isSet(fd, v)
-}
-
-// Clear clears a field.
-// See protoreflect.Message for details.
-func (m *Message) Clear(fd pref.FieldDescriptor) {
-	m.checkField(fd)
-	num := fd.Number()
-	delete(m.known, num)
-	delete(m.ext, num)
-}
-
-// Get returns the value of a field.
-// See protoreflect.Message for details.
-func (m *Message) Get(fd pref.FieldDescriptor) pref.Value {
-	m.checkField(fd)
-	num := fd.Number()
-	if fd.IsExtension() {
-		if fd != m.ext[num] {
-			return fd.(pref.ExtensionTypeDescriptor).Type().Zero()
-		}
-		return m.known[num]
-	}
-	if v, ok := m.known[num]; ok {
-		switch {
-		case fd.IsMap():
-			if v.Map().Len() > 0 {
-				return v
-			}
-		case fd.IsList():
-			if v.List().Len() > 0 {
-				return v
-			}
-		default:
-			return v
-		}
-	}
-	switch {
-	case fd.IsMap():
-		return pref.ValueOfMap(&dynamicMap{desc: fd})
-	case fd.IsList():
-		return pref.ValueOfList(emptyList{desc: fd})
-	case fd.Message() != nil:
-		return pref.ValueOfMessage(&Message{typ: messageType{fd.Message()}})
-	case fd.Kind() == pref.BytesKind:
-		return pref.ValueOfBytes(append([]byte(nil), fd.Default().Bytes()...))
-	default:
-		return fd.Default()
-	}
-}
-
-// Mutable returns a mutable reference to a repeated, map, or message field.
-// See protoreflect.Message for details.
-func (m *Message) Mutable(fd pref.FieldDescriptor) pref.Value {
-	m.checkField(fd)
-	if !fd.IsMap() && !fd.IsList() && fd.Message() == nil {
-		panic(errors.New("%v: getting mutable reference to non-composite type", fd.FullName()))
-	}
-	if m.known == nil {
-		panic(errors.New("%v: modification of read-only message", fd.FullName()))
-	}
-	num := fd.Number()
-	if fd.IsExtension() {
-		if fd != m.ext[num] {
-			m.ext[num] = fd
-			m.known[num] = fd.(pref.ExtensionTypeDescriptor).Type().New()
-		}
-		return m.known[num]
-	}
-	if v, ok := m.known[num]; ok {
-		return v
-	}
-	m.clearOtherOneofFields(fd)
-	m.known[num] = m.NewField(fd)
-	if fd.IsExtension() {
-		m.ext[num] = fd
-	}
-	return m.known[num]
-}
-
-// Set stores a value in a field.
-// See protoreflect.Message for details.
-func (m *Message) Set(fd pref.FieldDescriptor, v pref.Value) {
-	m.checkField(fd)
-	if m.known == nil {
-		panic(errors.New("%v: modification of read-only message", fd.FullName()))
-	}
-	if fd.IsExtension() {
-		isValid := true
-		switch {
-		case !fd.(pref.ExtensionTypeDescriptor).Type().IsValidValue(v):
-			isValid = false
-		case fd.IsList():
-			isValid = v.List().IsValid()
-		case fd.IsMap():
-			isValid = v.Map().IsValid()
-		case fd.Message() != nil:
-			isValid = v.Message().IsValid()
-		}
-		if !isValid {
-			panic(errors.New("%v: assigning invalid type %T", fd.FullName(), v.Interface()))
-		}
-		m.ext[fd.Number()] = fd
-	} else {
-		typecheck(fd, v)
-	}
-	m.clearOtherOneofFields(fd)
-	m.known[fd.Number()] = v
-}
-
-func (m *Message) clearOtherOneofFields(fd pref.FieldDescriptor) {
-	od := fd.ContainingOneof()
-	if od == nil {
-		return
-	}
-	num := fd.Number()
-	for i := 0; i < od.Fields().Len(); i++ {
-		if n := od.Fields().Get(i).Number(); n != num {
-			delete(m.known, n)
-		}
-	}
-}
-
-// NewField returns a new value for assignable to the field of a given descriptor.
-// See protoreflect.Message for details.
-func (m *Message) NewField(fd pref.FieldDescriptor) pref.Value {
-	m.checkField(fd)
-	switch {
-	case fd.IsExtension():
-		return fd.(pref.ExtensionTypeDescriptor).Type().New()
-	case fd.IsMap():
-		return pref.ValueOfMap(&dynamicMap{
-			desc: fd,
-			mapv: make(map[interface{}]pref.Value),
-		})
-	case fd.IsList():
-		return pref.ValueOfList(&dynamicList{desc: fd})
-	case fd.Message() != nil:
-		return pref.ValueOfMessage(NewMessage(fd.Message()).ProtoReflect())
-	default:
-		return fd.Default()
-	}
-}
-
-// WhichOneof reports which field in a oneof is populated, returning nil if none are populated.
-// See protoreflect.Message for details.
-func (m *Message) WhichOneof(od pref.OneofDescriptor) pref.FieldDescriptor {
-	for i := 0; i < od.Fields().Len(); i++ {
-		fd := od.Fields().Get(i)
-		if m.Has(fd) {
-			return fd
-		}
-	}
-	return nil
-}
-
-// GetUnknown returns the raw unknown fields.
-// See protoreflect.Message for details.
-func (m *Message) GetUnknown() pref.RawFields {
-	return m.unknown
-}
-
-// SetUnknown sets the raw unknown fields.
-// See protoreflect.Message for details.
-func (m *Message) SetUnknown(r pref.RawFields) {
-	if m.known == nil {
-		panic(errors.New("%v: modification of read-only message", m.typ.desc.FullName()))
-	}
-	m.unknown = r
-}
-
-// IsValid reports whether the message is valid.
-// See protoreflect.Message for details.
-func (m *Message) IsValid() bool {
-	return m.known != nil
-}
-
-func (m *Message) checkField(fd pref.FieldDescriptor) {
-	if fd.IsExtension() && fd.ContainingMessage().FullName() == m.Descriptor().FullName() {
-		if _, ok := fd.(pref.ExtensionTypeDescriptor); !ok {
-			panic(errors.New("%v: extension field descriptor does not implement ExtensionTypeDescriptor", fd.FullName()))
-		}
-		return
-	}
-	if fd.Parent() == m.Descriptor() {
-		return
-	}
-	fields := m.Descriptor().Fields()
-	index := fd.Index()
-	if index >= fields.Len() || fields.Get(index) != fd {
-		panic(errors.New("%v: field descriptor does not belong to this message", fd.FullName()))
-	}
-}
-
-type messageType struct {
-	desc pref.MessageDescriptor
-}
-
-// NewMessageType creates a new MessageType with the provided descriptor.
-//
-// MessageTypes created by this package are equal if their descriptors are equal.
-// That is, if md1 == md2, then NewMessageType(md1) == NewMessageType(md2).
-func NewMessageType(desc pref.MessageDescriptor) pref.MessageType {
-	return messageType{desc}
-}
-
-func (mt messageType) New() pref.Message                  { return NewMessage(mt.desc) }
-func (mt messageType) Zero() pref.Message                 { return &Message{typ: messageType{mt.desc}} }
-func (mt messageType) Descriptor() pref.MessageDescriptor { return mt.desc }
-func (mt messageType) Enum(i int) pref.EnumType {
-	if ed := mt.desc.Fields().Get(i).Enum(); ed != nil {
-		return NewEnumType(ed)
-	}
-	return nil
-}
-func (mt messageType) Message(i int) pref.MessageType {
-	if md := mt.desc.Fields().Get(i).Message(); md != nil {
-		return NewMessageType(md)
-	}
-	return nil
-}
-
-type emptyList struct {
-	desc pref.FieldDescriptor
-}
-
-func (x emptyList) Len() int                  { return 0 }
-func (x emptyList) Get(n int) pref.Value      { panic(errors.New("out of range")) }
-func (x emptyList) Set(n int, v pref.Value)   { panic(errors.New("modification of immutable list")) }
-func (x emptyList) Append(v pref.Value)       { panic(errors.New("modification of immutable list")) }
-func (x emptyList) AppendMutable() pref.Value { panic(errors.New("modification of immutable list")) }
-func (x emptyList) Truncate(n int)            { panic(errors.New("modification of immutable list")) }
-func (x emptyList) NewElement() pref.Value    { return newListEntry(x.desc) }
-func (x emptyList) IsValid() bool             { return false }
-
-type dynamicList struct {
-	desc pref.FieldDescriptor
-	list []pref.Value
-}
-
-func (x *dynamicList) Len() int {
-	return len(x.list)
-}
-
-func (x *dynamicList) Get(n int) pref.Value {
-	return x.list[n]
-}
-
-func (x *dynamicList) Set(n int, v pref.Value) {
-	typecheckSingular(x.desc, v)
-	x.list[n] = v
-}
-
-func (x *dynamicList) Append(v pref.Value) {
-	typecheckSingular(x.desc, v)
-	x.list = append(x.list, v)
-}
-
-func (x *dynamicList) AppendMutable() pref.Value {
-	if x.desc.Message() == nil {
-		panic(errors.New("%v: invalid AppendMutable on list with non-message type", x.desc.FullName()))
-	}
-	v := x.NewElement()
-	x.Append(v)
-	return v
-}
-
-func (x *dynamicList) Truncate(n int) {
-	// Zero truncated elements to avoid keeping data live.
-	for i := n; i < len(x.list); i++ {
-		x.list[i] = pref.Value{}
-	}
-	x.list = x.list[:n]
-}
-
-func (x *dynamicList) NewElement() pref.Value {
-	return newListEntry(x.desc)
-}
-
-func (x *dynamicList) IsValid() bool {
-	return true
-}
-
-type dynamicMap struct {
-	desc pref.FieldDescriptor
-	mapv map[interface{}]pref.Value
-}
-
-func (x *dynamicMap) Get(k pref.MapKey) pref.Value { return x.mapv[k.Interface()] }
-func (x *dynamicMap) Set(k pref.MapKey, v pref.Value) {
-	typecheckSingular(x.desc.MapKey(), k.Value())
-	typecheckSingular(x.desc.MapValue(), v)
-	x.mapv[k.Interface()] = v
-}
-func (x *dynamicMap) Has(k pref.MapKey) bool { return x.Get(k).IsValid() }
-func (x *dynamicMap) Clear(k pref.MapKey)    { delete(x.mapv, k.Interface()) }
-func (x *dynamicMap) Mutable(k pref.MapKey) pref.Value {
-	if x.desc.MapValue().Message() == nil {
-		panic(errors.New("%v: invalid Mutable on map with non-message value type", x.desc.FullName()))
-	}
-	v := x.Get(k)
-	if !v.IsValid() {
-		v = x.NewValue()
-		x.Set(k, v)
-	}
-	return v
-}
-func (x *dynamicMap) Len() int { return len(x.mapv) }
-func (x *dynamicMap) NewValue() pref.Value {
-	if md := x.desc.MapValue().Message(); md != nil {
-		return pref.ValueOfMessage(NewMessage(md).ProtoReflect())
-	}
-	return x.desc.MapValue().Default()
-}
-func (x *dynamicMap) IsValid() bool {
-	return x.mapv != nil
-}
-
-func (x *dynamicMap) Range(f func(pref.MapKey, pref.Value) bool) {
-	for k, v := range x.mapv {
-		if !f(pref.ValueOf(k).MapKey(), v) {
-			return
-		}
-	}
-}
-
-func isSet(fd pref.FieldDescriptor, v pref.Value) bool {
-	switch {
-	case fd.IsMap():
-		return v.Map().Len() > 0
-	case fd.IsList():
-		return v.List().Len() > 0
-	case fd.ContainingOneof() != nil:
-		return true
-	case fd.Syntax() == pref.Proto3 && !fd.IsExtension():
-		switch fd.Kind() {
-		case pref.BoolKind:
-			return v.Bool()
-		case pref.EnumKind:
-			return v.Enum() != 0
-		case pref.Int32Kind, pref.Sint32Kind, pref.Int64Kind, pref.Sint64Kind, pref.Sfixed32Kind, pref.Sfixed64Kind:
-			return v.Int() != 0
-		case pref.Uint32Kind, pref.Uint64Kind, pref.Fixed32Kind, pref.Fixed64Kind:
-			return v.Uint() != 0
-		case pref.FloatKind, pref.DoubleKind:
-			return v.Float() != 0 || math.Signbit(v.Float())
-		case pref.StringKind:
-			return v.String() != ""
-		case pref.BytesKind:
-			return len(v.Bytes()) > 0
-		}
-	}
-	return true
-}
-
-func typecheck(fd pref.FieldDescriptor, v pref.Value) {
-	if err := typeIsValid(fd, v); err != nil {
-		panic(err)
-	}
-}
-
-func typeIsValid(fd pref.FieldDescriptor, v pref.Value) error {
-	switch {
-	case !v.IsValid():
-		return errors.New("%v: assigning invalid value", fd.FullName())
-	case fd.IsMap():
-		if mapv, ok := v.Interface().(*dynamicMap); !ok || mapv.desc != fd || !mapv.IsValid() {
-			return errors.New("%v: assigning invalid type %T", fd.FullName(), v.Interface())
-		}
-		return nil
-	case fd.IsList():
-		switch list := v.Interface().(type) {
-		case *dynamicList:
-			if list.desc == fd && list.IsValid() {
-				return nil
-			}
-		case emptyList:
-			if list.desc == fd && list.IsValid() {
-				return nil
-			}
-		}
-		return errors.New("%v: assigning invalid type %T", fd.FullName(), v.Interface())
-	default:
-		return singularTypeIsValid(fd, v)
-	}
-}
-
-func typecheckSingular(fd pref.FieldDescriptor, v pref.Value) {
-	if err := singularTypeIsValid(fd, v); err != nil {
-		panic(err)
-	}
-}
-
-func singularTypeIsValid(fd pref.FieldDescriptor, v pref.Value) error {
-	vi := v.Interface()
-	var ok bool
-	switch fd.Kind() {
-	case pref.BoolKind:
-		_, ok = vi.(bool)
-	case pref.EnumKind:
-		// We could check against the valid set of enum values, but do not.
-		_, ok = vi.(pref.EnumNumber)
-	case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
-		_, ok = vi.(int32)
-	case pref.Uint32Kind, pref.Fixed32Kind:
-		_, ok = vi.(uint32)
-	case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
-		_, ok = vi.(int64)
-	case pref.Uint64Kind, pref.Fixed64Kind:
-		_, ok = vi.(uint64)
-	case pref.FloatKind:
-		_, ok = vi.(float32)
-	case pref.DoubleKind:
-		_, ok = vi.(float64)
-	case pref.StringKind:
-		_, ok = vi.(string)
-	case pref.BytesKind:
-		_, ok = vi.([]byte)
-	case pref.MessageKind, pref.GroupKind:
-		var m pref.Message
-		m, ok = vi.(pref.Message)
-		if ok && m.Descriptor().FullName() != fd.Message().FullName() {
-			return errors.New("%v: assigning invalid message type %v", fd.FullName(), m.Descriptor().FullName())
-		}
-		if dm, ok := vi.(*Message); ok && dm.known == nil {
-			return errors.New("%v: assigning invalid zero-value message", fd.FullName())
-		}
-	}
-	if !ok {
-		return errors.New("%v: assigning invalid type %T", fd.FullName(), v.Interface())
-	}
-	return nil
-}
-
-func newListEntry(fd pref.FieldDescriptor) pref.Value {
-	switch fd.Kind() {
-	case pref.BoolKind:
-		return pref.ValueOfBool(false)
-	case pref.EnumKind:
-		return pref.ValueOfEnum(fd.Enum().Values().Get(0).Number())
-	case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
-		return pref.ValueOfInt32(0)
-	case pref.Uint32Kind, pref.Fixed32Kind:
-		return pref.ValueOfUint32(0)
-	case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
-		return pref.ValueOfInt64(0)
-	case pref.Uint64Kind, pref.Fixed64Kind:
-		return pref.ValueOfUint64(0)
-	case pref.FloatKind:
-		return pref.ValueOfFloat32(0)
-	case pref.DoubleKind:
-		return pref.ValueOfFloat64(0)
-	case pref.StringKind:
-		return pref.ValueOfString("")
-	case pref.BytesKind:
-		return pref.ValueOfBytes(nil)
-	case pref.MessageKind, pref.GroupKind:
-		return pref.ValueOfMessage(NewMessage(fd.Message()).ProtoReflect())
-	}
-	panic(errors.New("%v: unknown kind %v", fd.FullName(), fd.Kind()))
-}
-
-// NewExtensionType creates a new ExtensionType with the provided descriptor.
-//
-// Dynamic ExtensionTypes with the same descriptor compare as equal. That is,
-// if xd1 == xd2, then NewExtensionType(xd1) == NewExtensionType(xd2).
-//
-// The InterfaceOf and ValueOf methods of the extension type are defined as:
-//
-//	func (xt extensionType) ValueOf(iv interface{}) protoreflect.Value {
-//		return protoreflect.ValueOf(iv)
-//	}
-//
-//	func (xt extensionType) InterfaceOf(v protoreflect.Value) interface{} {
-//		return v.Interface()
-//	}
-//
-// The Go type used by the proto.GetExtension and proto.SetExtension functions
-// is determined by these methods, and is therefore equivalent to the Go type
-// used to represent a protoreflect.Value. See the protoreflect.Value
-// documentation for more details.
-func NewExtensionType(desc pref.ExtensionDescriptor) pref.ExtensionType {
-	if xt, ok := desc.(pref.ExtensionTypeDescriptor); ok {
-		desc = xt.Descriptor()
-	}
-	return extensionType{extensionTypeDescriptor{desc}}
-}
-
-func (xt extensionType) New() pref.Value {
-	switch {
-	case xt.desc.IsMap():
-		return pref.ValueOfMap(&dynamicMap{
-			desc: xt.desc,
-			mapv: make(map[interface{}]pref.Value),
-		})
-	case xt.desc.IsList():
-		return pref.ValueOfList(&dynamicList{desc: xt.desc})
-	case xt.desc.Message() != nil:
-		return pref.ValueOfMessage(NewMessage(xt.desc.Message()))
-	default:
-		return xt.desc.Default()
-	}
-}
-
-func (xt extensionType) Zero() pref.Value {
-	switch {
-	case xt.desc.IsMap():
-		return pref.ValueOfMap(&dynamicMap{desc: xt.desc})
-	case xt.desc.Cardinality() == pref.Repeated:
-		return pref.ValueOfList(emptyList{desc: xt.desc})
-	case xt.desc.Message() != nil:
-		return pref.ValueOfMessage(&Message{typ: messageType{xt.desc.Message()}})
-	default:
-		return xt.desc.Default()
-	}
-}
-
-func (xt extensionType) TypeDescriptor() pref.ExtensionTypeDescriptor {
-	return xt.desc
-}
-
-func (xt extensionType) ValueOf(iv interface{}) pref.Value {
-	v := pref.ValueOf(iv)
-	typecheck(xt.desc, v)
-	return v
-}
-
-func (xt extensionType) InterfaceOf(v pref.Value) interface{} {
-	typecheck(xt.desc, v)
-	return v.Interface()
-}
-
-func (xt extensionType) IsValidInterface(iv interface{}) bool {
-	return typeIsValid(xt.desc, pref.ValueOf(iv)) == nil
-}
-
-func (xt extensionType) IsValidValue(v pref.Value) bool {
-	return typeIsValid(xt.desc, v) == nil
-}
-
-type extensionTypeDescriptor struct {
-	pref.ExtensionDescriptor
-}
-
-func (xt extensionTypeDescriptor) Type() pref.ExtensionType {
-	return extensionType{xt}
-}
-
-func (xt extensionTypeDescriptor) Descriptor() pref.ExtensionDescriptor {
-	return xt.ExtensionDescriptor
-}
diff --git a/types/dynamicpb/dynamic_test.go b/types/dynamicpb/dynamic_test.go
deleted file mode 100644
index 6835d3e..0000000
--- a/types/dynamicpb/dynamic_test.go
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package dynamicpb_test
-
-import (
-	"testing"
-
-	"google.golang.org/protobuf/proto"
-	pref "google.golang.org/protobuf/reflect/protoreflect"
-	preg "google.golang.org/protobuf/reflect/protoregistry"
-	"google.golang.org/protobuf/testing/prototest"
-	"google.golang.org/protobuf/types/dynamicpb"
-
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-	test3pb "google.golang.org/protobuf/internal/testprotos/test3"
-)
-
-func TestConformance(t *testing.T) {
-	for _, message := range []proto.Message{
-		(*testpb.TestAllTypes)(nil),
-		(*test3pb.TestAllTypes)(nil),
-		(*testpb.TestAllExtensions)(nil),
-	} {
-		mt := dynamicpb.NewMessageType(message.ProtoReflect().Descriptor())
-		prototest.Message{}.Test(t, mt)
-	}
-}
-
-func TestDynamicExtensions(t *testing.T) {
-	for _, message := range []proto.Message{
-		(*testpb.TestAllExtensions)(nil),
-	} {
-		mt := dynamicpb.NewMessageType(message.ProtoReflect().Descriptor())
-		prototest.Message{
-			Resolver: extResolver{},
-		}.Test(t, mt)
-	}
-}
-
-func TestDynamicEnums(t *testing.T) {
-	for _, enum := range []pref.Enum{
-		testpb.TestAllTypes_FOO,
-		test3pb.TestAllTypes_FOO,
-	} {
-		et := dynamicpb.NewEnumType(enum.Descriptor())
-		prototest.Enum{}.Test(t, et)
-	}
-}
-
-type extResolver struct{}
-
-func (extResolver) FindExtensionByName(field pref.FullName) (pref.ExtensionType, error) {
-	xt, err := preg.GlobalTypes.FindExtensionByName(field)
-	if err != nil {
-		return nil, err
-	}
-	return dynamicpb.NewExtensionType(xt.TypeDescriptor().Descriptor()), nil
-}
-
-func (extResolver) FindExtensionByNumber(message pref.FullName, field pref.FieldNumber) (pref.ExtensionType, error) {
-	xt, err := preg.GlobalTypes.FindExtensionByNumber(message, field)
-	if err != nil {
-		return nil, err
-	}
-	return dynamicpb.NewExtensionType(xt.TypeDescriptor().Descriptor()), nil
-}
-
-func (extResolver) RangeExtensionsByMessage(message pref.FullName, f func(pref.ExtensionType) bool) {
-	preg.GlobalTypes.RangeExtensionsByMessage(message, func(xt pref.ExtensionType) bool {
-		return f(dynamicpb.NewExtensionType(xt.TypeDescriptor().Descriptor()))
-	})
-}
diff --git a/types/known/anypb/any.pb.go b/types/known/anypb/any.pb.go
deleted file mode 100644
index 8c10797..0000000
--- a/types/known/anypb/any.pb.go
+++ /dev/null
@@ -1,498 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google/protobuf/any.proto
-
-// Package anypb contains generated types for google/protobuf/any.proto.
-//
-// The Any message is a dynamic representation of any other message value.
-// It is functionally a tuple of the full name of the remote message type and
-// the serialized bytes of the remote message value.
-//
-//
-// Constructing an Any
-//
-// An Any message containing another message value is constructed using New:
-//
-//	any, err := anypb.New(m)
-//	if err != nil {
-//		... // handle error
-//	}
-//	... // make use of any
-//
-//
-// Unmarshaling an Any
-//
-// With a populated Any message, the underlying message can be serialized into
-// a remote concrete message value in a few ways.
-//
-// If the exact concrete type is known, then a new (or pre-existing) instance
-// of that message can be passed to the UnmarshalTo method:
-//
-//	m := new(foopb.MyMessage)
-//	if err := any.UnmarshalTo(m); err != nil {
-//		... // handle error
-//	}
-//	... // make use of m
-//
-// If the exact concrete type is not known, then the UnmarshalNew method can be
-// used to unmarshal the contents into a new instance of the remote message type:
-//
-//	m, err := any.UnmarshalNew()
-//	if err != nil {
-//		... // handle error
-//	}
-//	... // make use of m
-//
-// UnmarshalNew uses the global type registry to resolve the message type and
-// construct a new instance of that message to unmarshal into. In order for a
-// message type to appear in the global registry, the Go type representing that
-// protobuf message type must be linked into the Go binary. For messages
-// generated by protoc-gen-go, this is achieved through an import of the
-// generated Go package representing a .proto file.
-//
-// A common pattern with UnmarshalNew is to use a type switch with the resulting
-// proto.Message value:
-//
-//	switch m := m.(type) {
-//	case *foopb.MyMessage:
-//		... // make use of m as a *foopb.MyMessage
-//	case *barpb.OtherMessage:
-//		... // make use of m as a *barpb.OtherMessage
-//	case *bazpb.SomeMessage:
-//		... // make use of m as a *bazpb.SomeMessage
-//	}
-//
-// This pattern ensures that the generated packages containing the message types
-// listed in the case clauses are linked into the Go binary and therefore also
-// registered in the global registry.
-//
-//
-// Type checking an Any
-//
-// In order to type check whether an Any message represents some other message,
-// then use the MessageIs method:
-//
-//	if any.MessageIs((*foopb.MyMessage)(nil)) {
-//		... // make use of any, knowing that it contains a foopb.MyMessage
-//	}
-//
-// The MessageIs method can also be used with an allocated instance of the target
-// message type if the intention is to unmarshal into it if the type matches:
-//
-//	m := new(foopb.MyMessage)
-//	if any.MessageIs(m) {
-//		if err := any.UnmarshalTo(m); err != nil {
-//			... // handle error
-//		}
-//		... // make use of m
-//	}
-//
-package anypb
-
-import (
-	proto "google.golang.org/protobuf/proto"
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoregistry "google.golang.org/protobuf/reflect/protoregistry"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	strings "strings"
-	sync "sync"
-)
-
-// `Any` contains an arbitrary serialized protocol buffer message along with a
-// URL that describes the type of the serialized message.
-//
-// Protobuf library provides support to pack/unpack Any values in the form
-// of utility functions or additional generated methods of the Any type.
-//
-// Example 1: Pack and unpack a message in C++.
-//
-//     Foo foo = ...;
-//     Any any;
-//     any.PackFrom(foo);
-//     ...
-//     if (any.UnpackTo(&foo)) {
-//       ...
-//     }
-//
-// Example 2: Pack and unpack a message in Java.
-//
-//     Foo foo = ...;
-//     Any any = Any.pack(foo);
-//     ...
-//     if (any.is(Foo.class)) {
-//       foo = any.unpack(Foo.class);
-//     }
-//
-//  Example 3: Pack and unpack a message in Python.
-//
-//     foo = Foo(...)
-//     any = Any()
-//     any.Pack(foo)
-//     ...
-//     if any.Is(Foo.DESCRIPTOR):
-//       any.Unpack(foo)
-//       ...
-//
-//  Example 4: Pack and unpack a message in Go
-//
-//      foo := &pb.Foo{...}
-//      any, err := anypb.New(foo)
-//      if err != nil {
-//        ...
-//      }
-//      ...
-//      foo := &pb.Foo{}
-//      if err := any.UnmarshalTo(foo); err != nil {
-//        ...
-//      }
-//
-// The pack methods provided by protobuf library will by default use
-// 'type.googleapis.com/full.type.name' as the type URL and the unpack
-// methods only use the fully qualified type name after the last '/'
-// in the type URL, for example "foo.bar.com/x/y.z" will yield type
-// name "y.z".
-//
-//
-// JSON
-// ====
-// The JSON representation of an `Any` value uses the regular
-// representation of the deserialized, embedded message, with an
-// additional field `@type` which contains the type URL. Example:
-//
-//     package google.profile;
-//     message Person {
-//       string first_name = 1;
-//       string last_name = 2;
-//     }
-//
-//     {
-//       "@type": "type.googleapis.com/google.profile.Person",
-//       "firstName": <string>,
-//       "lastName": <string>
-//     }
-//
-// If the embedded message type is well-known and has a custom JSON
-// representation, that representation will be embedded adding a field
-// `value` which holds the custom JSON in addition to the `@type`
-// field. Example (for message [google.protobuf.Duration][]):
-//
-//     {
-//       "@type": "type.googleapis.com/google.protobuf.Duration",
-//       "value": "1.212s"
-//     }
-//
-type Any struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// A URL/resource name that uniquely identifies the type of the serialized
-	// protocol buffer message. This string must contain at least
-	// one "/" character. The last segment of the URL's path must represent
-	// the fully qualified name of the type (as in
-	// `path/google.protobuf.Duration`). The name should be in a canonical form
-	// (e.g., leading "." is not accepted).
-	//
-	// In practice, teams usually precompile into the binary all types that they
-	// expect it to use in the context of Any. However, for URLs which use the
-	// scheme `http`, `https`, or no scheme, one can optionally set up a type
-	// server that maps type URLs to message definitions as follows:
-	//
-	// * If no scheme is provided, `https` is assumed.
-	// * An HTTP GET on the URL must yield a [google.protobuf.Type][]
-	//   value in binary format, or produce an error.
-	// * Applications are allowed to cache lookup results based on the
-	//   URL, or have them precompiled into a binary to avoid any
-	//   lookup. Therefore, binary compatibility needs to be preserved
-	//   on changes to types. (Use versioned type names to manage
-	//   breaking changes.)
-	//
-	// Note: this functionality is not currently available in the official
-	// protobuf release, and it is not used for type URLs beginning with
-	// type.googleapis.com.
-	//
-	// Schemes other than `http`, `https` (or the empty scheme) might be
-	// used with implementation specific semantics.
-	//
-	TypeUrl string `protobuf:"bytes,1,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"`
-	// Must be a valid serialized protocol buffer of the above specified type.
-	Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-// New marshals src into a new Any instance.
-func New(src proto.Message) (*Any, error) {
-	dst := new(Any)
-	if err := dst.MarshalFrom(src); err != nil {
-		return nil, err
-	}
-	return dst, nil
-}
-
-// MarshalFrom marshals src into dst as the underlying message
-// using the provided marshal options.
-//
-// If no options are specified, call dst.MarshalFrom instead.
-func MarshalFrom(dst *Any, src proto.Message, opts proto.MarshalOptions) error {
-	const urlPrefix = "type.googleapis.com/"
-	if src == nil {
-		return protoimpl.X.NewError("invalid nil source message")
-	}
-	b, err := opts.Marshal(src)
-	if err != nil {
-		return err
-	}
-	dst.TypeUrl = urlPrefix + string(src.ProtoReflect().Descriptor().FullName())
-	dst.Value = b
-	return nil
-}
-
-// UnmarshalTo unmarshals the underlying message from src into dst
-// using the provided unmarshal options.
-// It reports an error if dst is not of the right message type.
-//
-// If no options are specified, call src.UnmarshalTo instead.
-func UnmarshalTo(src *Any, dst proto.Message, opts proto.UnmarshalOptions) error {
-	if src == nil {
-		return protoimpl.X.NewError("invalid nil source message")
-	}
-	if !src.MessageIs(dst) {
-		got := dst.ProtoReflect().Descriptor().FullName()
-		want := src.MessageName()
-		return protoimpl.X.NewError("mismatched message type: got %q, want %q", got, want)
-	}
-	return opts.Unmarshal(src.GetValue(), dst)
-}
-
-// UnmarshalNew unmarshals the underlying message from src into dst,
-// which is newly created message using a type resolved from the type URL.
-// The message type is resolved according to opt.Resolver,
-// which should implement protoregistry.MessageTypeResolver.
-// It reports an error if the underlying message type could not be resolved.
-//
-// If no options are specified, call src.UnmarshalNew instead.
-func UnmarshalNew(src *Any, opts proto.UnmarshalOptions) (dst proto.Message, err error) {
-	if src.GetTypeUrl() == "" {
-		return nil, protoimpl.X.NewError("invalid empty type URL")
-	}
-	if opts.Resolver == nil {
-		opts.Resolver = protoregistry.GlobalTypes
-	}
-	r, ok := opts.Resolver.(protoregistry.MessageTypeResolver)
-	if !ok {
-		return nil, protoregistry.NotFound
-	}
-	mt, err := r.FindMessageByURL(src.GetTypeUrl())
-	if err != nil {
-		if err == protoregistry.NotFound {
-			return nil, err
-		}
-		return nil, protoimpl.X.NewError("could not resolve %q: %v", src.GetTypeUrl(), err)
-	}
-	dst = mt.New().Interface()
-	return dst, opts.Unmarshal(src.GetValue(), dst)
-}
-
-// MessageIs reports whether the underlying message is of the same type as m.
-func (x *Any) MessageIs(m proto.Message) bool {
-	if m == nil {
-		return false
-	}
-	url := x.GetTypeUrl()
-	name := string(m.ProtoReflect().Descriptor().FullName())
-	if !strings.HasSuffix(url, name) {
-		return false
-	}
-	return len(url) == len(name) || url[len(url)-len(name)-1] == '/'
-}
-
-// MessageName reports the full name of the underlying message,
-// returning an empty string if invalid.
-func (x *Any) MessageName() protoreflect.FullName {
-	url := x.GetTypeUrl()
-	name := protoreflect.FullName(url)
-	if i := strings.LastIndexByte(url, '/'); i >= 0 {
-		name = name[i+len("/"):]
-	}
-	if !name.IsValid() {
-		return ""
-	}
-	return name
-}
-
-// MarshalFrom marshals m into x as the underlying message.
-func (x *Any) MarshalFrom(m proto.Message) error {
-	return MarshalFrom(x, m, proto.MarshalOptions{})
-}
-
-// UnmarshalTo unmarshals the contents of the underlying message of x into m.
-// It resets m before performing the unmarshal operation.
-// It reports an error if m is not of the right message type.
-func (x *Any) UnmarshalTo(m proto.Message) error {
-	return UnmarshalTo(x, m, proto.UnmarshalOptions{})
-}
-
-// UnmarshalNew unmarshals the contents of the underlying message of x into
-// a newly allocated message of the specified type.
-// It reports an error if the underlying message type could not be resolved.
-func (x *Any) UnmarshalNew() (proto.Message, error) {
-	return UnmarshalNew(x, proto.UnmarshalOptions{})
-}
-
-func (x *Any) Reset() {
-	*x = Any{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_any_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Any) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Any) ProtoMessage() {}
-
-func (x *Any) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_any_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Any.ProtoReflect.Descriptor instead.
-func (*Any) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_any_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Any) GetTypeUrl() string {
-	if x != nil {
-		return x.TypeUrl
-	}
-	return ""
-}
-
-func (x *Any) GetValue() []byte {
-	if x != nil {
-		return x.Value
-	}
-	return nil
-}
-
-var File_google_protobuf_any_proto protoreflect.FileDescriptor
-
-var file_google_protobuf_any_proto_rawDesc = []byte{
-	0x0a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, 0x36, 0x0a, 0x03,
-	0x41, 0x6e, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x79, 0x70, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x14,
-	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x42, 0x76, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x42, 0x08, 0x41, 0x6e, 0x79,
-	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
-	0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x2f,
-	0x61, 0x6e, 0x79, 0x70, 0x62, 0xa2, 0x02, 0x03, 0x47, 0x50, 0x42, 0xaa, 0x02, 0x1e, 0x47, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x57, 0x65,
-	0x6c, 0x6c, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_google_protobuf_any_proto_rawDescOnce sync.Once
-	file_google_protobuf_any_proto_rawDescData = file_google_protobuf_any_proto_rawDesc
-)
-
-func file_google_protobuf_any_proto_rawDescGZIP() []byte {
-	file_google_protobuf_any_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_any_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_protobuf_any_proto_rawDescData)
-	})
-	return file_google_protobuf_any_proto_rawDescData
-}
-
-var file_google_protobuf_any_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_google_protobuf_any_proto_goTypes = []interface{}{
-	(*Any)(nil), // 0: google.protobuf.Any
-}
-var file_google_protobuf_any_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_google_protobuf_any_proto_init() }
-func file_google_protobuf_any_proto_init() {
-	if File_google_protobuf_any_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_google_protobuf_any_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Any); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_google_protobuf_any_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_google_protobuf_any_proto_goTypes,
-		DependencyIndexes: file_google_protobuf_any_proto_depIdxs,
-		MessageInfos:      file_google_protobuf_any_proto_msgTypes,
-	}.Build()
-	File_google_protobuf_any_proto = out.File
-	file_google_protobuf_any_proto_rawDesc = nil
-	file_google_protobuf_any_proto_goTypes = nil
-	file_google_protobuf_any_proto_depIdxs = nil
-}
diff --git a/types/known/anypb/any_test.go b/types/known/anypb/any_test.go
deleted file mode 100644
index 68e6391..0000000
--- a/types/known/anypb/any_test.go
+++ /dev/null
@@ -1,184 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package anypb_test
-
-import (
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-	"google.golang.org/protobuf/proto"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/testing/protocmp"
-
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-	apb "google.golang.org/protobuf/types/known/anypb"
-	epb "google.golang.org/protobuf/types/known/emptypb"
-	wpb "google.golang.org/protobuf/types/known/wrapperspb"
-)
-
-func mustMarshal(m proto.Message) []byte {
-	b, err := proto.MarshalOptions{AllowPartial: true, Deterministic: true}.Marshal(m)
-	if err != nil {
-		panic(err)
-	}
-	return b
-}
-
-func TestMessage(t *testing.T) {
-	tests := []struct {
-		inAny    *apb.Any
-		inTarget proto.Message
-		wantIs   bool
-		wantName protoreflect.FullName
-	}{{
-		inAny:    nil,
-		inTarget: nil,
-		wantIs:   false,
-		wantName: "",
-	}, {
-		inAny:    new(apb.Any),
-		inTarget: nil,
-		wantIs:   false,
-		wantName: "",
-	}, {
-		inAny:    new(apb.Any),
-		inTarget: (*testpb.TestAllTypes)(nil),
-		wantIs:   false,
-		wantName: "",
-	}, {
-		inAny:    &apb.Any{TypeUrl: "foo"},
-		inTarget: (*testpb.TestAllTypes)(nil),
-		wantIs:   false,
-		wantName: "foo",
-	}, {
-		inAny:    &apb.Any{TypeUrl: "foo$"},
-		inTarget: (*testpb.TestAllTypes)(nil),
-		wantIs:   false,
-		wantName: "",
-	}, {
-		inAny:    &apb.Any{TypeUrl: "/foo"},
-		inTarget: (*testpb.TestAllTypes)(nil),
-		wantIs:   false,
-		wantName: "foo",
-	}, {
-		inAny:    &apb.Any{TypeUrl: "/bar/foo"},
-		inTarget: (*testpb.TestAllTypes)(nil),
-		wantIs:   false,
-		wantName: "foo",
-	}, {
-		inAny:    &apb.Any{TypeUrl: "google.golang.org/bar/foo"},
-		inTarget: (*testpb.TestAllTypes)(nil),
-		wantIs:   false,
-		wantName: "foo",
-	}, {
-		inAny:    &apb.Any{TypeUrl: "goproto.proto.test.TestAllTypes"},
-		inTarget: (*testpb.TestAllTypes)(nil),
-		wantIs:   true,
-		wantName: "goproto.proto.test.TestAllTypes",
-	}, {
-		inAny:    &apb.Any{TypeUrl: "goproto.proto.test.TestAllTypes$"},
-		inTarget: (*testpb.TestAllTypes)(nil),
-		wantIs:   false,
-		wantName: "",
-	}, {
-		inAny:    &apb.Any{TypeUrl: "/goproto.proto.test.TestAllTypes"},
-		inTarget: (*testpb.TestAllTypes)(nil),
-		wantIs:   true,
-		wantName: "goproto.proto.test.TestAllTypes",
-	}, {
-		inAny:    &apb.Any{TypeUrl: "google.golang.org/foo/goproto.proto.test.TestAllTypes"},
-		inTarget: (*testpb.TestAllTypes)(nil),
-		wantIs:   true,
-		wantName: "goproto.proto.test.TestAllTypes",
-	}}
-
-	for _, tt := range tests {
-		gotIs := tt.inAny.MessageIs(tt.inTarget)
-		if gotIs != tt.wantIs {
-			t.Errorf("MessageIs(%v, %v) = %v, want %v", tt.inAny, tt.inTarget, gotIs, tt.wantIs)
-		}
-		gotName := tt.inAny.MessageName()
-		if gotName != tt.wantName {
-			t.Errorf("MessageName(%v) = %v, want %v", tt.inAny, gotName, tt.wantName)
-		}
-	}
-}
-
-func TestRoundtrip(t *testing.T) {
-	tests := []struct {
-		msg proto.Message
-		any *apb.Any
-	}{{
-		msg: &testpb.TestAllTypes{},
-		any: &apb.Any{
-			TypeUrl: "type.googleapis.com/goproto.proto.test.TestAllTypes",
-		},
-	}, {
-		msg: &testpb.TestAllTypes{
-			OptionalString: proto.String("hello, world!"),
-		},
-		any: &apb.Any{
-			TypeUrl: "type.googleapis.com/goproto.proto.test.TestAllTypes",
-			Value: mustMarshal(&testpb.TestAllTypes{
-				OptionalString: proto.String("hello, world!"),
-			}),
-		},
-	}, {
-		msg: &wpb.StringValue{Value: ""},
-		any: &apb.Any{
-			TypeUrl: "type.googleapis.com/google.protobuf.StringValue",
-		},
-	}, {
-		msg: wpb.String("hello, world"),
-		any: &apb.Any{
-			TypeUrl: "type.googleapis.com/google.protobuf.StringValue",
-			Value:   mustMarshal(wpb.String("hello, world")),
-		},
-	}, {
-		msg: &apb.Any{
-			TypeUrl: "type.googleapis.com/google.protobuf.StringValue",
-			Value:   mustMarshal(wpb.String("hello, world")),
-		},
-		any: &apb.Any{
-			TypeUrl: "type.googleapis.com/google.protobuf.Any",
-			Value: mustMarshal(&apb.Any{
-				TypeUrl: "type.googleapis.com/google.protobuf.StringValue",
-				Value:   mustMarshal(wpb.String("hello, world")),
-			}),
-		},
-	}}
-
-	for _, tt := range tests {
-		// Unmarshal to the wrong message type.
-		var empty epb.Empty
-		if err := tt.any.UnmarshalTo(&empty); err == nil {
-			t.Errorf("UnmarshalTo(empty) = nil, want non-nil")
-		}
-
-		gotAny := new(apb.Any)
-		if err := gotAny.MarshalFrom(tt.msg); err != nil {
-			t.Errorf("MarshalFrom() error: %v", err)
-		}
-		if diff := cmp.Diff(tt.any, gotAny, protocmp.Transform()); diff != "" {
-			t.Errorf("MarshalFrom() output mismatch (-want +got):\n%s", diff)
-		}
-
-		gotPB := tt.msg.ProtoReflect().New().Interface()
-		if err := tt.any.UnmarshalTo(gotPB); err != nil {
-			t.Errorf("UnmarshalTo() error: %v", err)
-		}
-		if diff := cmp.Diff(tt.msg, gotPB, protocmp.Transform()); diff != "" {
-			t.Errorf("UnmarshalTo() output mismatch (-want +got):\n%s", diff)
-		}
-
-		gotPB, err := tt.any.UnmarshalNew()
-		if err != nil {
-			t.Errorf("UnmarshalNew() error: %v", err)
-		}
-		if diff := cmp.Diff(tt.msg, gotPB, protocmp.Transform()); diff != "" {
-			t.Errorf("UnmarshalNew() output mismatch (-want +got):\n%s", diff)
-		}
-	}
-}
diff --git a/types/known/apipb/api.pb.go b/types/known/apipb/api.pb.go
deleted file mode 100644
index 4cbfc63..0000000
--- a/types/known/apipb/api.pb.go
+++ /dev/null
@@ -1,577 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google/protobuf/api.proto
-
-package apipb
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	sourcecontextpb "google.golang.org/protobuf/types/known/sourcecontextpb"
-	typepb "google.golang.org/protobuf/types/known/typepb"
-	reflect "reflect"
-	sync "sync"
-)
-
-// Api is a light-weight descriptor for an API Interface.
-//
-// Interfaces are also described as "protocol buffer services" in some contexts,
-// such as by the "service" keyword in a .proto file, but they are different
-// from API Services, which represent a concrete implementation of an interface
-// as opposed to simply a description of methods and bindings. They are also
-// sometimes simply referred to as "APIs" in other contexts, such as the name of
-// this message itself. See https://cloud.google.com/apis/design/glossary for
-// detailed terminology.
-type Api struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// The fully qualified name of this interface, including package name
-	// followed by the interface's simple name.
-	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	// The methods of this interface, in unspecified order.
-	Methods []*Method `protobuf:"bytes,2,rep,name=methods,proto3" json:"methods,omitempty"`
-	// Any metadata attached to the interface.
-	Options []*typepb.Option `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"`
-	// A version string for this interface. If specified, must have the form
-	// `major-version.minor-version`, as in `1.10`. If the minor version is
-	// omitted, it defaults to zero. If the entire version field is empty, the
-	// major version is derived from the package name, as outlined below. If the
-	// field is not empty, the version in the package name will be verified to be
-	// consistent with what is provided here.
-	//
-	// The versioning schema uses [semantic
-	// versioning](http://semver.org) where the major version number
-	// indicates a breaking change and the minor version an additive,
-	// non-breaking change. Both version numbers are signals to users
-	// what to expect from different versions, and should be carefully
-	// chosen based on the product plan.
-	//
-	// The major version is also reflected in the package name of the
-	// interface, which must end in `v<major-version>`, as in
-	// `google.feature.v1`. For major versions 0 and 1, the suffix can
-	// be omitted. Zero major versions must only be used for
-	// experimental, non-GA interfaces.
-	//
-	//
-	Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"`
-	// Source context for the protocol buffer service represented by this
-	// message.
-	SourceContext *sourcecontextpb.SourceContext `protobuf:"bytes,5,opt,name=source_context,json=sourceContext,proto3" json:"source_context,omitempty"`
-	// Included interfaces. See [Mixin][].
-	Mixins []*Mixin `protobuf:"bytes,6,rep,name=mixins,proto3" json:"mixins,omitempty"`
-	// The source syntax of the service.
-	Syntax typepb.Syntax `protobuf:"varint,7,opt,name=syntax,proto3,enum=google.protobuf.Syntax" json:"syntax,omitempty"`
-}
-
-func (x *Api) Reset() {
-	*x = Api{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_api_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Api) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Api) ProtoMessage() {}
-
-func (x *Api) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_api_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Api.ProtoReflect.Descriptor instead.
-func (*Api) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_api_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Api) GetName() string {
-	if x != nil {
-		return x.Name
-	}
-	return ""
-}
-
-func (x *Api) GetMethods() []*Method {
-	if x != nil {
-		return x.Methods
-	}
-	return nil
-}
-
-func (x *Api) GetOptions() []*typepb.Option {
-	if x != nil {
-		return x.Options
-	}
-	return nil
-}
-
-func (x *Api) GetVersion() string {
-	if x != nil {
-		return x.Version
-	}
-	return ""
-}
-
-func (x *Api) GetSourceContext() *sourcecontextpb.SourceContext {
-	if x != nil {
-		return x.SourceContext
-	}
-	return nil
-}
-
-func (x *Api) GetMixins() []*Mixin {
-	if x != nil {
-		return x.Mixins
-	}
-	return nil
-}
-
-func (x *Api) GetSyntax() typepb.Syntax {
-	if x != nil {
-		return x.Syntax
-	}
-	return typepb.Syntax(0)
-}
-
-// Method represents a method of an API interface.
-type Method struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// The simple name of this method.
-	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	// A URL of the input message type.
-	RequestTypeUrl string `protobuf:"bytes,2,opt,name=request_type_url,json=requestTypeUrl,proto3" json:"request_type_url,omitempty"`
-	// If true, the request is streamed.
-	RequestStreaming bool `protobuf:"varint,3,opt,name=request_streaming,json=requestStreaming,proto3" json:"request_streaming,omitempty"`
-	// The URL of the output message type.
-	ResponseTypeUrl string `protobuf:"bytes,4,opt,name=response_type_url,json=responseTypeUrl,proto3" json:"response_type_url,omitempty"`
-	// If true, the response is streamed.
-	ResponseStreaming bool `protobuf:"varint,5,opt,name=response_streaming,json=responseStreaming,proto3" json:"response_streaming,omitempty"`
-	// Any metadata attached to the method.
-	Options []*typepb.Option `protobuf:"bytes,6,rep,name=options,proto3" json:"options,omitempty"`
-	// The source syntax of this method.
-	Syntax typepb.Syntax `protobuf:"varint,7,opt,name=syntax,proto3,enum=google.protobuf.Syntax" json:"syntax,omitempty"`
-}
-
-func (x *Method) Reset() {
-	*x = Method{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_api_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Method) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Method) ProtoMessage() {}
-
-func (x *Method) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_api_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Method.ProtoReflect.Descriptor instead.
-func (*Method) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_api_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Method) GetName() string {
-	if x != nil {
-		return x.Name
-	}
-	return ""
-}
-
-func (x *Method) GetRequestTypeUrl() string {
-	if x != nil {
-		return x.RequestTypeUrl
-	}
-	return ""
-}
-
-func (x *Method) GetRequestStreaming() bool {
-	if x != nil {
-		return x.RequestStreaming
-	}
-	return false
-}
-
-func (x *Method) GetResponseTypeUrl() string {
-	if x != nil {
-		return x.ResponseTypeUrl
-	}
-	return ""
-}
-
-func (x *Method) GetResponseStreaming() bool {
-	if x != nil {
-		return x.ResponseStreaming
-	}
-	return false
-}
-
-func (x *Method) GetOptions() []*typepb.Option {
-	if x != nil {
-		return x.Options
-	}
-	return nil
-}
-
-func (x *Method) GetSyntax() typepb.Syntax {
-	if x != nil {
-		return x.Syntax
-	}
-	return typepb.Syntax(0)
-}
-
-// Declares an API Interface to be included in this interface. The including
-// interface must redeclare all the methods from the included interface, but
-// documentation and options are inherited as follows:
-//
-// - If after comment and whitespace stripping, the documentation
-//   string of the redeclared method is empty, it will be inherited
-//   from the original method.
-//
-// - Each annotation belonging to the service config (http,
-//   visibility) which is not set in the redeclared method will be
-//   inherited.
-//
-// - If an http annotation is inherited, the path pattern will be
-//   modified as follows. Any version prefix will be replaced by the
-//   version of the including interface plus the [root][] path if
-//   specified.
-//
-// Example of a simple mixin:
-//
-//     package google.acl.v1;
-//     service AccessControl {
-//       // Get the underlying ACL object.
-//       rpc GetAcl(GetAclRequest) returns (Acl) {
-//         option (google.api.http).get = "/v1/{resource=**}:getAcl";
-//       }
-//     }
-//
-//     package google.storage.v2;
-//     service Storage {
-//       rpc GetAcl(GetAclRequest) returns (Acl);
-//
-//       // Get a data record.
-//       rpc GetData(GetDataRequest) returns (Data) {
-//         option (google.api.http).get = "/v2/{resource=**}";
-//       }
-//     }
-//
-// Example of a mixin configuration:
-//
-//     apis:
-//     - name: google.storage.v2.Storage
-//       mixins:
-//       - name: google.acl.v1.AccessControl
-//
-// The mixin construct implies that all methods in `AccessControl` are
-// also declared with same name and request/response types in
-// `Storage`. A documentation generator or annotation processor will
-// see the effective `Storage.GetAcl` method after inheriting
-// documentation and annotations as follows:
-//
-//     service Storage {
-//       // Get the underlying ACL object.
-//       rpc GetAcl(GetAclRequest) returns (Acl) {
-//         option (google.api.http).get = "/v2/{resource=**}:getAcl";
-//       }
-//       ...
-//     }
-//
-// Note how the version in the path pattern changed from `v1` to `v2`.
-//
-// If the `root` field in the mixin is specified, it should be a
-// relative path under which inherited HTTP paths are placed. Example:
-//
-//     apis:
-//     - name: google.storage.v2.Storage
-//       mixins:
-//       - name: google.acl.v1.AccessControl
-//         root: acls
-//
-// This implies the following inherited HTTP annotation:
-//
-//     service Storage {
-//       // Get the underlying ACL object.
-//       rpc GetAcl(GetAclRequest) returns (Acl) {
-//         option (google.api.http).get = "/v2/acls/{resource=**}:getAcl";
-//       }
-//       ...
-//     }
-type Mixin struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// The fully qualified name of the interface which is included.
-	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	// If non-empty specifies a path under which inherited HTTP paths
-	// are rooted.
-	Root string `protobuf:"bytes,2,opt,name=root,proto3" json:"root,omitempty"`
-}
-
-func (x *Mixin) Reset() {
-	*x = Mixin{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_api_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Mixin) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Mixin) ProtoMessage() {}
-
-func (x *Mixin) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_api_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Mixin.ProtoReflect.Descriptor instead.
-func (*Mixin) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_api_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Mixin) GetName() string {
-	if x != nil {
-		return x.Name
-	}
-	return ""
-}
-
-func (x *Mixin) GetRoot() string {
-	if x != nil {
-		return x.Root
-	}
-	return ""
-}
-
-var File_google_protobuf_api_proto protoreflect.FileDescriptor
-
-var file_google_protobuf_api_proto_rawDesc = []byte{
-	0x0a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x24, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x6f,
-	0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x1a, 0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc1,
-	0x02, 0x0a, 0x03, 0x41, 0x70, 0x69, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, 0x07, 0x6d, 0x65,
-	0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65,
-	0x74, 0x68, 0x6f, 0x64, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x12, 0x31, 0x0a,
-	0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73,
-	0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x0e, 0x73, 0x6f,
-	0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65,
-	0x78, 0x74, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78,
-	0x74, 0x12, 0x2e, 0x0a, 0x06, 0x6d, 0x69, 0x78, 0x69, 0x6e, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x4d, 0x69, 0x78, 0x69, 0x6e, 0x52, 0x06, 0x6d, 0x69, 0x78, 0x69, 0x6e,
-	0x73, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28,
-	0x0e, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x52, 0x06, 0x73, 0x79, 0x6e, 0x74,
-	0x61, 0x78, 0x22, 0xb2, 0x02, 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x12, 0x0a,
-	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
-	0x65, 0x12, 0x28, 0x0a, 0x10, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x79, 0x70,
-	0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x72, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x2b, 0x0a, 0x11, 0x72,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x53,
-	0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x2a, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x54, 0x79, 0x70,
-	0x65, 0x55, 0x72, 0x6c, 0x12, 0x2d, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x5f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x11, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d,
-	0x69, 0x6e, 0x67, 0x12, 0x31, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x06,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78,
-	0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x52,
-	0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x22, 0x2f, 0x0a, 0x05, 0x4d, 0x69, 0x78, 0x69, 0x6e,
-	0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
-	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x74, 0x42, 0x76, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x42,
-	0x08, 0x41, 0x70, 0x69, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2c, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x6b, 0x6e,
-	0x6f, 0x77, 0x6e, 0x2f, 0x61, 0x70, 0x69, 0x70, 0x62, 0xa2, 0x02, 0x03, 0x47, 0x50, 0x42, 0xaa,
-	0x02, 0x1e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2e, 0x57, 0x65, 0x6c, 0x6c, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73,
-	0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_google_protobuf_api_proto_rawDescOnce sync.Once
-	file_google_protobuf_api_proto_rawDescData = file_google_protobuf_api_proto_rawDesc
-)
-
-func file_google_protobuf_api_proto_rawDescGZIP() []byte {
-	file_google_protobuf_api_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_api_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_protobuf_api_proto_rawDescData)
-	})
-	return file_google_protobuf_api_proto_rawDescData
-}
-
-var file_google_protobuf_api_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
-var file_google_protobuf_api_proto_goTypes = []interface{}{
-	(*Api)(nil),                           // 0: google.protobuf.Api
-	(*Method)(nil),                        // 1: google.protobuf.Method
-	(*Mixin)(nil),                         // 2: google.protobuf.Mixin
-	(*typepb.Option)(nil),                 // 3: google.protobuf.Option
-	(*sourcecontextpb.SourceContext)(nil), // 4: google.protobuf.SourceContext
-	(typepb.Syntax)(0),                    // 5: google.protobuf.Syntax
-}
-var file_google_protobuf_api_proto_depIdxs = []int32{
-	1, // 0: google.protobuf.Api.methods:type_name -> google.protobuf.Method
-	3, // 1: google.protobuf.Api.options:type_name -> google.protobuf.Option
-	4, // 2: google.protobuf.Api.source_context:type_name -> google.protobuf.SourceContext
-	2, // 3: google.protobuf.Api.mixins:type_name -> google.protobuf.Mixin
-	5, // 4: google.protobuf.Api.syntax:type_name -> google.protobuf.Syntax
-	3, // 5: google.protobuf.Method.options:type_name -> google.protobuf.Option
-	5, // 6: google.protobuf.Method.syntax:type_name -> google.protobuf.Syntax
-	7, // [7:7] is the sub-list for method output_type
-	7, // [7:7] is the sub-list for method input_type
-	7, // [7:7] is the sub-list for extension type_name
-	7, // [7:7] is the sub-list for extension extendee
-	0, // [0:7] is the sub-list for field type_name
-}
-
-func init() { file_google_protobuf_api_proto_init() }
-func file_google_protobuf_api_proto_init() {
-	if File_google_protobuf_api_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_google_protobuf_api_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Api); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_api_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Method); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_api_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Mixin); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_google_protobuf_api_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   3,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_google_protobuf_api_proto_goTypes,
-		DependencyIndexes: file_google_protobuf_api_proto_depIdxs,
-		MessageInfos:      file_google_protobuf_api_proto_msgTypes,
-	}.Build()
-	File_google_protobuf_api_proto = out.File
-	file_google_protobuf_api_proto_rawDesc = nil
-	file_google_protobuf_api_proto_goTypes = nil
-	file_google_protobuf_api_proto_depIdxs = nil
-}
diff --git a/types/known/durationpb/duration.pb.go b/types/known/durationpb/duration.pb.go
deleted file mode 100644
index a583ca2..0000000
--- a/types/known/durationpb/duration.pb.go
+++ /dev/null
@@ -1,379 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google/protobuf/duration.proto
-
-// Package durationpb contains generated types for google/protobuf/duration.proto.
-//
-// The Duration message represents a signed span of time.
-//
-//
-// Conversion to a Go Duration
-//
-// The AsDuration method can be used to convert a Duration message to a
-// standard Go time.Duration value:
-//
-//	d := dur.AsDuration()
-//	... // make use of d as a time.Duration
-//
-// Converting to a time.Duration is a common operation so that the extensive
-// set of time-based operations provided by the time package can be leveraged.
-// See https://golang.org/pkg/time for more information.
-//
-// The AsDuration method performs the conversion on a best-effort basis.
-// Durations with denormal values (e.g., nanoseconds beyond -99999999 and
-// +99999999, inclusive; or seconds and nanoseconds with opposite signs)
-// are normalized during the conversion to a time.Duration. To manually check for
-// invalid Duration per the documented limitations in duration.proto,
-// additionally call the CheckValid method:
-//
-//	if err := dur.CheckValid(); err != nil {
-//		... // handle error
-//	}
-//
-// Note that the documented limitations in duration.proto does not protect a
-// Duration from overflowing the representable range of a time.Duration in Go.
-// The AsDuration method uses saturation arithmetic such that an overflow clamps
-// the resulting value to the closest representable value (e.g., math.MaxInt64
-// for positive overflow and math.MinInt64 for negative overflow).
-//
-//
-// Conversion from a Go Duration
-//
-// The durationpb.New function can be used to construct a Duration message
-// from a standard Go time.Duration value:
-//
-//	dur := durationpb.New(d)
-//	... // make use of d as a *durationpb.Duration
-//
-package durationpb
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	math "math"
-	reflect "reflect"
-	sync "sync"
-	time "time"
-)
-
-// A Duration represents a signed, fixed-length span of time represented
-// as a count of seconds and fractions of seconds at nanosecond
-// resolution. It is independent of any calendar and concepts like "day"
-// or "month". It is related to Timestamp in that the difference between
-// two Timestamp values is a Duration and it can be added or subtracted
-// from a Timestamp. Range is approximately +-10,000 years.
-//
-// # Examples
-//
-// Example 1: Compute Duration from two Timestamps in pseudo code.
-//
-//     Timestamp start = ...;
-//     Timestamp end = ...;
-//     Duration duration = ...;
-//
-//     duration.seconds = end.seconds - start.seconds;
-//     duration.nanos = end.nanos - start.nanos;
-//
-//     if (duration.seconds < 0 && duration.nanos > 0) {
-//       duration.seconds += 1;
-//       duration.nanos -= 1000000000;
-//     } else if (duration.seconds > 0 && duration.nanos < 0) {
-//       duration.seconds -= 1;
-//       duration.nanos += 1000000000;
-//     }
-//
-// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
-//
-//     Timestamp start = ...;
-//     Duration duration = ...;
-//     Timestamp end = ...;
-//
-//     end.seconds = start.seconds + duration.seconds;
-//     end.nanos = start.nanos + duration.nanos;
-//
-//     if (end.nanos < 0) {
-//       end.seconds -= 1;
-//       end.nanos += 1000000000;
-//     } else if (end.nanos >= 1000000000) {
-//       end.seconds += 1;
-//       end.nanos -= 1000000000;
-//     }
-//
-// Example 3: Compute Duration from datetime.timedelta in Python.
-//
-//     td = datetime.timedelta(days=3, minutes=10)
-//     duration = Duration()
-//     duration.FromTimedelta(td)
-//
-// # JSON Mapping
-//
-// In JSON format, the Duration type is encoded as a string rather than an
-// object, where the string ends in the suffix "s" (indicating seconds) and
-// is preceded by the number of seconds, with nanoseconds expressed as
-// fractional seconds. For example, 3 seconds with 0 nanoseconds should be
-// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should
-// be expressed in JSON format as "3.000000001s", and 3 seconds and 1
-// microsecond should be expressed in JSON format as "3.000001s".
-//
-//
-type Duration struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Signed seconds of the span of time. Must be from -315,576,000,000
-	// to +315,576,000,000 inclusive. Note: these bounds are computed from:
-	// 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
-	Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"`
-	// Signed fractions of a second at nanosecond resolution of the span
-	// of time. Durations less than one second are represented with a 0
-	// `seconds` field and a positive or negative `nanos` field. For durations
-	// of one second or more, a non-zero value for the `nanos` field must be
-	// of the same sign as the `seconds` field. Must be from -999,999,999
-	// to +999,999,999 inclusive.
-	Nanos int32 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"`
-}
-
-// New constructs a new Duration from the provided time.Duration.
-func New(d time.Duration) *Duration {
-	nanos := d.Nanoseconds()
-	secs := nanos / 1e9
-	nanos -= secs * 1e9
-	return &Duration{Seconds: int64(secs), Nanos: int32(nanos)}
-}
-
-// AsDuration converts x to a time.Duration,
-// returning the closest duration value in the event of overflow.
-func (x *Duration) AsDuration() time.Duration {
-	secs := x.GetSeconds()
-	nanos := x.GetNanos()
-	d := time.Duration(secs) * time.Second
-	overflow := d/time.Second != time.Duration(secs)
-	d += time.Duration(nanos) * time.Nanosecond
-	overflow = overflow || (secs < 0 && nanos < 0 && d > 0)
-	overflow = overflow || (secs > 0 && nanos > 0 && d < 0)
-	if overflow {
-		switch {
-		case secs < 0:
-			return time.Duration(math.MinInt64)
-		case secs > 0:
-			return time.Duration(math.MaxInt64)
-		}
-	}
-	return d
-}
-
-// IsValid reports whether the duration is valid.
-// It is equivalent to CheckValid == nil.
-func (x *Duration) IsValid() bool {
-	return x.check() == 0
-}
-
-// CheckValid returns an error if the duration is invalid.
-// In particular, it checks whether the value is within the range of
-// -10000 years to +10000 years inclusive.
-// An error is reported for a nil Duration.
-func (x *Duration) CheckValid() error {
-	switch x.check() {
-	case invalidNil:
-		return protoimpl.X.NewError("invalid nil Duration")
-	case invalidUnderflow:
-		return protoimpl.X.NewError("duration (%v) exceeds -10000 years", x)
-	case invalidOverflow:
-		return protoimpl.X.NewError("duration (%v) exceeds +10000 years", x)
-	case invalidNanosRange:
-		return protoimpl.X.NewError("duration (%v) has out-of-range nanos", x)
-	case invalidNanosSign:
-		return protoimpl.X.NewError("duration (%v) has seconds and nanos with different signs", x)
-	default:
-		return nil
-	}
-}
-
-const (
-	_ = iota
-	invalidNil
-	invalidUnderflow
-	invalidOverflow
-	invalidNanosRange
-	invalidNanosSign
-)
-
-func (x *Duration) check() uint {
-	const absDuration = 315576000000 // 10000yr * 365.25day/yr * 24hr/day * 60min/hr * 60sec/min
-	secs := x.GetSeconds()
-	nanos := x.GetNanos()
-	switch {
-	case x == nil:
-		return invalidNil
-	case secs < -absDuration:
-		return invalidUnderflow
-	case secs > +absDuration:
-		return invalidOverflow
-	case nanos <= -1e9 || nanos >= +1e9:
-		return invalidNanosRange
-	case (secs > 0 && nanos < 0) || (secs < 0 && nanos > 0):
-		return invalidNanosSign
-	default:
-		return 0
-	}
-}
-
-func (x *Duration) Reset() {
-	*x = Duration{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_duration_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Duration) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Duration) ProtoMessage() {}
-
-func (x *Duration) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_duration_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Duration.ProtoReflect.Descriptor instead.
-func (*Duration) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_duration_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Duration) GetSeconds() int64 {
-	if x != nil {
-		return x.Seconds
-	}
-	return 0
-}
-
-func (x *Duration) GetNanos() int32 {
-	if x != nil {
-		return x.Nanos
-	}
-	return 0
-}
-
-var File_google_protobuf_duration_proto protoreflect.FileDescriptor
-
-var file_google_protobuf_duration_proto_rawDesc = []byte{
-	0x0a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x12, 0x0f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x22, 0x3a, 0x0a, 0x08, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a,
-	0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07,
-	0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6e, 0x6f, 0x73,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x42, 0x83, 0x01,
-	0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x42, 0x0d, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50,
-	0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67,
-	0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x2f, 0x64,
-	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x70, 0x62, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x03, 0x47,
-	0x50, 0x42, 0xaa, 0x02, 0x1e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74,
-	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x57, 0x65, 0x6c, 0x6c, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79,
-	0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_google_protobuf_duration_proto_rawDescOnce sync.Once
-	file_google_protobuf_duration_proto_rawDescData = file_google_protobuf_duration_proto_rawDesc
-)
-
-func file_google_protobuf_duration_proto_rawDescGZIP() []byte {
-	file_google_protobuf_duration_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_duration_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_protobuf_duration_proto_rawDescData)
-	})
-	return file_google_protobuf_duration_proto_rawDescData
-}
-
-var file_google_protobuf_duration_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_google_protobuf_duration_proto_goTypes = []interface{}{
-	(*Duration)(nil), // 0: google.protobuf.Duration
-}
-var file_google_protobuf_duration_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_google_protobuf_duration_proto_init() }
-func file_google_protobuf_duration_proto_init() {
-	if File_google_protobuf_duration_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_google_protobuf_duration_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Duration); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_google_protobuf_duration_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_google_protobuf_duration_proto_goTypes,
-		DependencyIndexes: file_google_protobuf_duration_proto_depIdxs,
-		MessageInfos:      file_google_protobuf_duration_proto_msgTypes,
-	}.Build()
-	File_google_protobuf_duration_proto = out.File
-	file_google_protobuf_duration_proto_rawDesc = nil
-	file_google_protobuf_duration_proto_goTypes = nil
-	file_google_protobuf_duration_proto_depIdxs = nil
-}
diff --git a/types/known/durationpb/duration_test.go b/types/known/durationpb/duration_test.go
deleted file mode 100644
index 0e86eb1..0000000
--- a/types/known/durationpb/duration_test.go
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package durationpb_test
-
-import (
-	"math"
-	"strings"
-	"testing"
-	"time"
-
-	"github.com/google/go-cmp/cmp"
-	"github.com/google/go-cmp/cmp/cmpopts"
-	"google.golang.org/protobuf/internal/detrand"
-	"google.golang.org/protobuf/testing/protocmp"
-
-	durpb "google.golang.org/protobuf/types/known/durationpb"
-)
-
-func init() {
-	detrand.Disable()
-}
-
-const (
-	minGoSeconds = math.MinInt64 / int64(1e9)
-	maxGoSeconds = math.MaxInt64 / int64(1e9)
-	absSeconds   = 315576000000 // 10000yr * 365.25day/yr * 24hr/day * 60min/hr * 60sec/min
-)
-
-func TestToDuration(t *testing.T) {
-	tests := []struct {
-		in   time.Duration
-		want *durpb.Duration
-	}{
-		{in: time.Duration(0), want: &durpb.Duration{Seconds: 0, Nanos: 0}},
-		{in: -time.Second, want: &durpb.Duration{Seconds: -1, Nanos: 0}},
-		{in: +time.Second, want: &durpb.Duration{Seconds: +1, Nanos: 0}},
-		{in: -time.Second - time.Millisecond, want: &durpb.Duration{Seconds: -1, Nanos: -1e6}},
-		{in: +time.Second + time.Millisecond, want: &durpb.Duration{Seconds: +1, Nanos: +1e6}},
-		{in: time.Duration(math.MinInt64), want: &durpb.Duration{Seconds: minGoSeconds, Nanos: int32(math.MinInt64 - 1e9*minGoSeconds)}},
-		{in: time.Duration(math.MaxInt64), want: &durpb.Duration{Seconds: maxGoSeconds, Nanos: int32(math.MaxInt64 - 1e9*maxGoSeconds)}},
-	}
-
-	for _, tt := range tests {
-		got := durpb.New(tt.in)
-		if diff := cmp.Diff(tt.want, got, protocmp.Transform()); diff != "" {
-			t.Errorf("New(%v) mismatch (-want +got):\n%s", tt.in, diff)
-		}
-	}
-}
-
-func TestFromDuration(t *testing.T) {
-	tests := []struct {
-		in      *durpb.Duration
-		wantDur time.Duration
-		wantErr error
-	}{
-		{in: nil, wantDur: time.Duration(0), wantErr: textError("invalid nil Duration")},
-		{in: new(durpb.Duration), wantDur: time.Duration(0)},
-		{in: &durpb.Duration{Seconds: -1, Nanos: 0}, wantDur: -time.Second},
-		{in: &durpb.Duration{Seconds: +1, Nanos: 0}, wantDur: +time.Second},
-		{in: &durpb.Duration{Seconds: 0, Nanos: -1}, wantDur: -time.Nanosecond},
-		{in: &durpb.Duration{Seconds: 0, Nanos: +1}, wantDur: +time.Nanosecond},
-		{in: &durpb.Duration{Seconds: -100, Nanos: 0}, wantDur: -100 * time.Second},
-		{in: &durpb.Duration{Seconds: +100, Nanos: 0}, wantDur: +100 * time.Second},
-		{in: &durpb.Duration{Seconds: -100, Nanos: -987}, wantDur: -100*time.Second - 987*time.Nanosecond},
-		{in: &durpb.Duration{Seconds: +100, Nanos: +987}, wantDur: +100*time.Second + 987*time.Nanosecond},
-		{in: &durpb.Duration{Seconds: minGoSeconds, Nanos: int32(math.MinInt64 - 1e9*minGoSeconds)}, wantDur: time.Duration(math.MinInt64)},
-		{in: &durpb.Duration{Seconds: maxGoSeconds, Nanos: int32(math.MaxInt64 - 1e9*maxGoSeconds)}, wantDur: time.Duration(math.MaxInt64)},
-		{in: &durpb.Duration{Seconds: minGoSeconds - 1, Nanos: int32(math.MinInt64 - 1e9*minGoSeconds)}, wantDur: time.Duration(math.MinInt64)},
-		{in: &durpb.Duration{Seconds: maxGoSeconds + 1, Nanos: int32(math.MaxInt64 - 1e9*maxGoSeconds)}, wantDur: time.Duration(math.MaxInt64)},
-		{in: &durpb.Duration{Seconds: minGoSeconds, Nanos: int32(math.MinInt64-1e9*minGoSeconds) - 1}, wantDur: time.Duration(math.MinInt64)},
-		{in: &durpb.Duration{Seconds: maxGoSeconds, Nanos: int32(math.MaxInt64-1e9*maxGoSeconds) + 1}, wantDur: time.Duration(math.MaxInt64)},
-		{in: &durpb.Duration{Seconds: -123, Nanos: +456}, wantDur: -123*time.Second + 456*time.Nanosecond, wantErr: textError("duration (seconds:-123 nanos:456) has seconds and nanos with different signs")},
-		{in: &durpb.Duration{Seconds: +123, Nanos: -456}, wantDur: +123*time.Second - 456*time.Nanosecond, wantErr: textError("duration (seconds:123 nanos:-456) has seconds and nanos with different signs")},
-		{in: &durpb.Duration{Seconds: math.MinInt64}, wantDur: time.Duration(math.MinInt64), wantErr: textError("duration (seconds:-9223372036854775808) exceeds -10000 years")},
-		{in: &durpb.Duration{Seconds: math.MaxInt64}, wantDur: time.Duration(math.MaxInt64), wantErr: textError("duration (seconds:9223372036854775807) exceeds +10000 years")},
-		{in: &durpb.Duration{Seconds: -absSeconds, Nanos: -(1e9 - 1)}, wantDur: time.Duration(math.MinInt64)},
-		{in: &durpb.Duration{Seconds: +absSeconds, Nanos: +(1e9 - 1)}, wantDur: time.Duration(math.MaxInt64)},
-		{in: &durpb.Duration{Seconds: -absSeconds - 1, Nanos: 0}, wantDur: time.Duration(math.MinInt64), wantErr: textError("duration (seconds:-315576000001) exceeds -10000 years")},
-		{in: &durpb.Duration{Seconds: +absSeconds + 1, Nanos: 0}, wantDur: time.Duration(math.MaxInt64), wantErr: textError("duration (seconds:315576000001) exceeds +10000 years")},
-	}
-
-	for _, tt := range tests {
-		gotDur := tt.in.AsDuration()
-		if diff := cmp.Diff(tt.wantDur, gotDur); diff != "" {
-			t.Errorf("AsDuration(%v) mismatch (-want +got):\n%s", tt.in, diff)
-		}
-		gotErr := tt.in.CheckValid()
-		if diff := cmp.Diff(tt.wantErr, gotErr, cmpopts.EquateErrors()); diff != "" {
-			t.Errorf("CheckValid(%v) mismatch (-want +got):\n%s", tt.in, diff)
-		}
-	}
-}
-
-type textError string
-
-func (e textError) Error() string     { return string(e) }
-func (e textError) Is(err error) bool { return err != nil && strings.Contains(err.Error(), e.Error()) }
diff --git a/types/known/emptypb/empty.pb.go b/types/known/emptypb/empty.pb.go
deleted file mode 100644
index e7fcea3..0000000
--- a/types/known/emptypb/empty.pb.go
+++ /dev/null
@@ -1,168 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google/protobuf/empty.proto
-
-package emptypb
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-// A generic empty message that you can re-use to avoid defining duplicated
-// empty messages in your APIs. A typical example is to use it as the request
-// or the response type of an API method. For instance:
-//
-//     service Foo {
-//       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
-//     }
-//
-// The JSON representation for `Empty` is empty JSON object `{}`.
-type Empty struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *Empty) Reset() {
-	*x = Empty{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_empty_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Empty) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Empty) ProtoMessage() {}
-
-func (x *Empty) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_empty_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Empty.ProtoReflect.Descriptor instead.
-func (*Empty) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_empty_proto_rawDescGZIP(), []int{0}
-}
-
-var File_google_protobuf_empty_proto protoreflect.FileDescriptor
-
-var file_google_protobuf_empty_proto_rawDesc = []byte{
-	0x0a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, 0x07,
-	0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x7d, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x42, 0x0a,
-	0x45, 0x6d, 0x70, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x6b,
-	0x6e, 0x6f, 0x77, 0x6e, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x70, 0x62, 0xf8, 0x01, 0x01, 0xa2,
-	0x02, 0x03, 0x47, 0x50, 0x42, 0xaa, 0x02, 0x1e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x50,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x57, 0x65, 0x6c, 0x6c, 0x4b, 0x6e, 0x6f, 0x77,
-	0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_google_protobuf_empty_proto_rawDescOnce sync.Once
-	file_google_protobuf_empty_proto_rawDescData = file_google_protobuf_empty_proto_rawDesc
-)
-
-func file_google_protobuf_empty_proto_rawDescGZIP() []byte {
-	file_google_protobuf_empty_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_empty_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_protobuf_empty_proto_rawDescData)
-	})
-	return file_google_protobuf_empty_proto_rawDescData
-}
-
-var file_google_protobuf_empty_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_google_protobuf_empty_proto_goTypes = []interface{}{
-	(*Empty)(nil), // 0: google.protobuf.Empty
-}
-var file_google_protobuf_empty_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_google_protobuf_empty_proto_init() }
-func file_google_protobuf_empty_proto_init() {
-	if File_google_protobuf_empty_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_google_protobuf_empty_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Empty); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_google_protobuf_empty_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_google_protobuf_empty_proto_goTypes,
-		DependencyIndexes: file_google_protobuf_empty_proto_depIdxs,
-		MessageInfos:      file_google_protobuf_empty_proto_msgTypes,
-	}.Build()
-	File_google_protobuf_empty_proto = out.File
-	file_google_protobuf_empty_proto_rawDesc = nil
-	file_google_protobuf_empty_proto_goTypes = nil
-	file_google_protobuf_empty_proto_depIdxs = nil
-}
diff --git a/types/known/fieldmaskpb/field_mask.pb.go b/types/known/fieldmaskpb/field_mask.pb.go
deleted file mode 100644
index 7f94443..0000000
--- a/types/known/fieldmaskpb/field_mask.pb.go
+++ /dev/null
@@ -1,591 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google/protobuf/field_mask.proto
-
-// Package fieldmaskpb contains generated types for google/protobuf/field_mask.proto.
-//
-// The FieldMask message represents a set of symbolic field paths.
-// The paths are specific to some target message type,
-// which is not stored within the FieldMask message itself.
-//
-//
-// Constructing a FieldMask
-//
-// The New function is used construct a FieldMask:
-//
-//	var messageType *descriptorpb.DescriptorProto
-//	fm, err := fieldmaskpb.New(messageType, "field.name", "field.number")
-//	if err != nil {
-//		... // handle error
-//	}
-//	... // make use of fm
-//
-// The "field.name" and "field.number" paths are valid paths according to the
-// google.protobuf.DescriptorProto message. Use of a path that does not correlate
-// to valid fields reachable from DescriptorProto would result in an error.
-//
-// Once a FieldMask message has been constructed,
-// the Append method can be used to insert additional paths to the path set:
-//
-//	var messageType *descriptorpb.DescriptorProto
-//	if err := fm.Append(messageType, "options"); err != nil {
-//		... // handle error
-//	}
-//
-//
-// Type checking a FieldMask
-//
-// In order to verify that a FieldMask represents a set of fields that are
-// reachable from some target message type, use the IsValid method:
-//
-//	var messageType *descriptorpb.DescriptorProto
-//	if fm.IsValid(messageType) {
-//		... // make use of fm
-//	}
-//
-// IsValid needs to be passed the target message type as an input since the
-// FieldMask message itself does not store the message type that the set of paths
-// are for.
-package fieldmaskpb
-
-import (
-	proto "google.golang.org/protobuf/proto"
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sort "sort"
-	strings "strings"
-	sync "sync"
-)
-
-// `FieldMask` represents a set of symbolic field paths, for example:
-//
-//     paths: "f.a"
-//     paths: "f.b.d"
-//
-// Here `f` represents a field in some root message, `a` and `b`
-// fields in the message found in `f`, and `d` a field found in the
-// message in `f.b`.
-//
-// Field masks are used to specify a subset of fields that should be
-// returned by a get operation or modified by an update operation.
-// Field masks also have a custom JSON encoding (see below).
-//
-// # Field Masks in Projections
-//
-// When used in the context of a projection, a response message or
-// sub-message is filtered by the API to only contain those fields as
-// specified in the mask. For example, if the mask in the previous
-// example is applied to a response message as follows:
-//
-//     f {
-//       a : 22
-//       b {
-//         d : 1
-//         x : 2
-//       }
-//       y : 13
-//     }
-//     z: 8
-//
-// The result will not contain specific values for fields x,y and z
-// (their value will be set to the default, and omitted in proto text
-// output):
-//
-//
-//     f {
-//       a : 22
-//       b {
-//         d : 1
-//       }
-//     }
-//
-// A repeated field is not allowed except at the last position of a
-// paths string.
-//
-// If a FieldMask object is not present in a get operation, the
-// operation applies to all fields (as if a FieldMask of all fields
-// had been specified).
-//
-// Note that a field mask does not necessarily apply to the
-// top-level response message. In case of a REST get operation, the
-// field mask applies directly to the response, but in case of a REST
-// list operation, the mask instead applies to each individual message
-// in the returned resource list. In case of a REST custom method,
-// other definitions may be used. Where the mask applies will be
-// clearly documented together with its declaration in the API.  In
-// any case, the effect on the returned resource/resources is required
-// behavior for APIs.
-//
-// # Field Masks in Update Operations
-//
-// A field mask in update operations specifies which fields of the
-// targeted resource are going to be updated. The API is required
-// to only change the values of the fields as specified in the mask
-// and leave the others untouched. If a resource is passed in to
-// describe the updated values, the API ignores the values of all
-// fields not covered by the mask.
-//
-// If a repeated field is specified for an update operation, new values will
-// be appended to the existing repeated field in the target resource. Note that
-// a repeated field is only allowed in the last position of a `paths` string.
-//
-// If a sub-message is specified in the last position of the field mask for an
-// update operation, then new value will be merged into the existing sub-message
-// in the target resource.
-//
-// For example, given the target message:
-//
-//     f {
-//       b {
-//         d: 1
-//         x: 2
-//       }
-//       c: [1]
-//     }
-//
-// And an update message:
-//
-//     f {
-//       b {
-//         d: 10
-//       }
-//       c: [2]
-//     }
-//
-// then if the field mask is:
-//
-//  paths: ["f.b", "f.c"]
-//
-// then the result will be:
-//
-//     f {
-//       b {
-//         d: 10
-//         x: 2
-//       }
-//       c: [1, 2]
-//     }
-//
-// An implementation may provide options to override this default behavior for
-// repeated and message fields.
-//
-// In order to reset a field's value to the default, the field must
-// be in the mask and set to the default value in the provided resource.
-// Hence, in order to reset all fields of a resource, provide a default
-// instance of the resource and set all fields in the mask, or do
-// not provide a mask as described below.
-//
-// If a field mask is not present on update, the operation applies to
-// all fields (as if a field mask of all fields has been specified).
-// Note that in the presence of schema evolution, this may mean that
-// fields the client does not know and has therefore not filled into
-// the request will be reset to their default. If this is unwanted
-// behavior, a specific service may require a client to always specify
-// a field mask, producing an error if not.
-//
-// As with get operations, the location of the resource which
-// describes the updated values in the request message depends on the
-// operation kind. In any case, the effect of the field mask is
-// required to be honored by the API.
-//
-// ## Considerations for HTTP REST
-//
-// The HTTP kind of an update operation which uses a field mask must
-// be set to PATCH instead of PUT in order to satisfy HTTP semantics
-// (PUT must only be used for full updates).
-//
-// # JSON Encoding of Field Masks
-//
-// In JSON, a field mask is encoded as a single string where paths are
-// separated by a comma. Fields name in each path are converted
-// to/from lower-camel naming conventions.
-//
-// As an example, consider the following message declarations:
-//
-//     message Profile {
-//       User user = 1;
-//       Photo photo = 2;
-//     }
-//     message User {
-//       string display_name = 1;
-//       string address = 2;
-//     }
-//
-// In proto a field mask for `Profile` may look as such:
-//
-//     mask {
-//       paths: "user.display_name"
-//       paths: "photo"
-//     }
-//
-// In JSON, the same mask is represented as below:
-//
-//     {
-//       mask: "user.displayName,photo"
-//     }
-//
-// # Field Masks and Oneof Fields
-//
-// Field masks treat fields in oneofs just as regular fields. Consider the
-// following message:
-//
-//     message SampleMessage {
-//       oneof test_oneof {
-//         string name = 4;
-//         SubMessage sub_message = 9;
-//       }
-//     }
-//
-// The field mask can be:
-//
-//     mask {
-//       paths: "name"
-//     }
-//
-// Or:
-//
-//     mask {
-//       paths: "sub_message"
-//     }
-//
-// Note that oneof type names ("test_oneof" in this case) cannot be used in
-// paths.
-//
-// ## Field Mask Verification
-//
-// The implementation of any API method which has a FieldMask type field in the
-// request should verify the included field paths, and return an
-// `INVALID_ARGUMENT` error if any path is unmappable.
-type FieldMask struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// The set of field mask paths.
-	Paths []string `protobuf:"bytes,1,rep,name=paths,proto3" json:"paths,omitempty"`
-}
-
-// New constructs a field mask from a list of paths and verifies that
-// each one is valid according to the specified message type.
-func New(m proto.Message, paths ...string) (*FieldMask, error) {
-	x := new(FieldMask)
-	return x, x.Append(m, paths...)
-}
-
-// Union returns the union of all the paths in the input field masks.
-func Union(mx *FieldMask, my *FieldMask, ms ...*FieldMask) *FieldMask {
-	var out []string
-	out = append(out, mx.GetPaths()...)
-	out = append(out, my.GetPaths()...)
-	for _, m := range ms {
-		out = append(out, m.GetPaths()...)
-	}
-	return &FieldMask{Paths: normalizePaths(out)}
-}
-
-// Intersect returns the intersection of all the paths in the input field masks.
-func Intersect(mx *FieldMask, my *FieldMask, ms ...*FieldMask) *FieldMask {
-	var ss1, ss2 []string // reused buffers for performance
-	intersect := func(out, in []string) []string {
-		ss1 = normalizePaths(append(ss1[:0], in...))
-		ss2 = normalizePaths(append(ss2[:0], out...))
-		out = out[:0]
-		for i1, i2 := 0, 0; i1 < len(ss1) && i2 < len(ss2); {
-			switch s1, s2 := ss1[i1], ss2[i2]; {
-			case hasPathPrefix(s1, s2):
-				out = append(out, s1)
-				i1++
-			case hasPathPrefix(s2, s1):
-				out = append(out, s2)
-				i2++
-			case lessPath(s1, s2):
-				i1++
-			case lessPath(s2, s1):
-				i2++
-			}
-		}
-		return out
-	}
-
-	out := Union(mx, my, ms...).GetPaths()
-	out = intersect(out, mx.GetPaths())
-	out = intersect(out, my.GetPaths())
-	for _, m := range ms {
-		out = intersect(out, m.GetPaths())
-	}
-	return &FieldMask{Paths: normalizePaths(out)}
-}
-
-// IsValid reports whether all the paths are syntactically valid and
-// refer to known fields in the specified message type.
-// It reports false for a nil FieldMask.
-func (x *FieldMask) IsValid(m proto.Message) bool {
-	paths := x.GetPaths()
-	return x != nil && numValidPaths(m, paths) == len(paths)
-}
-
-// Append appends a list of paths to the mask and verifies that each one
-// is valid according to the specified message type.
-// An invalid path is not appended and breaks insertion of subsequent paths.
-func (x *FieldMask) Append(m proto.Message, paths ...string) error {
-	numValid := numValidPaths(m, paths)
-	x.Paths = append(x.Paths, paths[:numValid]...)
-	paths = paths[numValid:]
-	if len(paths) > 0 {
-		name := m.ProtoReflect().Descriptor().FullName()
-		return protoimpl.X.NewError("invalid path %q for message %q", paths[0], name)
-	}
-	return nil
-}
-
-func numValidPaths(m proto.Message, paths []string) int {
-	md0 := m.ProtoReflect().Descriptor()
-	for i, path := range paths {
-		md := md0
-		if !rangeFields(path, func(field string) bool {
-			// Search the field within the message.
-			if md == nil {
-				return false // not within a message
-			}
-			fd := md.Fields().ByName(protoreflect.Name(field))
-			// The real field name of a group is the message name.
-			if fd == nil {
-				gd := md.Fields().ByName(protoreflect.Name(strings.ToLower(field)))
-				if gd != nil && gd.Kind() == protoreflect.GroupKind && string(gd.Message().Name()) == field {
-					fd = gd
-				}
-			} else if fd.Kind() == protoreflect.GroupKind && string(fd.Message().Name()) != field {
-				fd = nil
-			}
-			if fd == nil {
-				return false // message has does not have this field
-			}
-
-			// Identify the next message to search within.
-			md = fd.Message() // may be nil
-
-			// Repeated fields are only allowed at the last postion.
-			if fd.IsList() || fd.IsMap() {
-				md = nil
-			}
-
-			return true
-		}) {
-			return i
-		}
-	}
-	return len(paths)
-}
-
-// Normalize converts the mask to its canonical form where all paths are sorted
-// and redundant paths are removed.
-func (x *FieldMask) Normalize() {
-	x.Paths = normalizePaths(x.Paths)
-}
-
-func normalizePaths(paths []string) []string {
-	sort.Slice(paths, func(i, j int) bool {
-		return lessPath(paths[i], paths[j])
-	})
-
-	// Elide any path that is a prefix match on the previous.
-	out := paths[:0]
-	for _, path := range paths {
-		if len(out) > 0 && hasPathPrefix(path, out[len(out)-1]) {
-			continue
-		}
-		out = append(out, path)
-	}
-	return out
-}
-
-// hasPathPrefix is like strings.HasPrefix, but further checks for either
-// an exact matche or that the prefix is delimited by a dot.
-func hasPathPrefix(path, prefix string) bool {
-	return strings.HasPrefix(path, prefix) && (len(path) == len(prefix) || path[len(prefix)] == '.')
-}
-
-// lessPath is a lexicographical comparison where dot is specially treated
-// as the smallest symbol.
-func lessPath(x, y string) bool {
-	for i := 0; i < len(x) && i < len(y); i++ {
-		if x[i] != y[i] {
-			return (x[i] - '.') < (y[i] - '.')
-		}
-	}
-	return len(x) < len(y)
-}
-
-// rangeFields is like strings.Split(path, "."), but avoids allocations by
-// iterating over each field in place and calling a iterator function.
-func rangeFields(path string, f func(field string) bool) bool {
-	for {
-		var field string
-		if i := strings.IndexByte(path, '.'); i >= 0 {
-			field, path = path[:i], path[i:]
-		} else {
-			field, path = path, ""
-		}
-
-		if !f(field) {
-			return false
-		}
-
-		if len(path) == 0 {
-			return true
-		}
-		path = strings.TrimPrefix(path, ".")
-	}
-}
-
-func (x *FieldMask) Reset() {
-	*x = FieldMask{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_field_mask_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *FieldMask) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FieldMask) ProtoMessage() {}
-
-func (x *FieldMask) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_field_mask_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use FieldMask.ProtoReflect.Descriptor instead.
-func (*FieldMask) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_field_mask_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *FieldMask) GetPaths() []string {
-	if x != nil {
-		return x.Paths
-	}
-	return nil
-}
-
-var File_google_protobuf_field_mask_proto protoreflect.FileDescriptor
-
-var file_google_protobuf_field_mask_proto_rawDesc = []byte{
-	0x0a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x12, 0x0f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x22, 0x21, 0x0a, 0x09, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b,
-	0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
-	0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x42, 0x85, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x42, 0x0e,
-	0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01,
-	0x5a, 0x32, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e,
-	0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x79, 0x70,
-	0x65, 0x73, 0x2f, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x6d, 0x61,
-	0x73, 0x6b, 0x70, 0x62, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x03, 0x47, 0x50, 0x42, 0xaa, 0x02, 0x1e,
-	0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x57, 0x65, 0x6c, 0x6c, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_google_protobuf_field_mask_proto_rawDescOnce sync.Once
-	file_google_protobuf_field_mask_proto_rawDescData = file_google_protobuf_field_mask_proto_rawDesc
-)
-
-func file_google_protobuf_field_mask_proto_rawDescGZIP() []byte {
-	file_google_protobuf_field_mask_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_field_mask_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_protobuf_field_mask_proto_rawDescData)
-	})
-	return file_google_protobuf_field_mask_proto_rawDescData
-}
-
-var file_google_protobuf_field_mask_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_google_protobuf_field_mask_proto_goTypes = []interface{}{
-	(*FieldMask)(nil), // 0: google.protobuf.FieldMask
-}
-var file_google_protobuf_field_mask_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_google_protobuf_field_mask_proto_init() }
-func file_google_protobuf_field_mask_proto_init() {
-	if File_google_protobuf_field_mask_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_google_protobuf_field_mask_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FieldMask); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_google_protobuf_field_mask_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_google_protobuf_field_mask_proto_goTypes,
-		DependencyIndexes: file_google_protobuf_field_mask_proto_depIdxs,
-		MessageInfos:      file_google_protobuf_field_mask_proto_msgTypes,
-	}.Build()
-	File_google_protobuf_field_mask_proto = out.File
-	file_google_protobuf_field_mask_proto_rawDesc = nil
-	file_google_protobuf_field_mask_proto_goTypes = nil
-	file_google_protobuf_field_mask_proto_depIdxs = nil
-}
diff --git a/types/known/fieldmaskpb/field_mask_test.go b/types/known/fieldmaskpb/field_mask_test.go
deleted file mode 100644
index 19756c5..0000000
--- a/types/known/fieldmaskpb/field_mask_test.go
+++ /dev/null
@@ -1,338 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package fieldmaskpb_test
-
-import (
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-	"github.com/google/go-cmp/cmp/cmpopts"
-	"google.golang.org/protobuf/proto"
-
-	testpb "google.golang.org/protobuf/internal/testprotos/test"
-	fmpb "google.golang.org/protobuf/types/known/fieldmaskpb"
-)
-
-func TestAppend(t *testing.T) {
-	tests := []struct {
-		inMessage proto.Message
-		inPaths   []string
-		wantPaths []string
-		wantError error
-	}{{
-		inMessage: (*fmpb.FieldMask)(nil),
-		inPaths:   []string{},
-		wantPaths: []string{},
-	}, {
-		inMessage: (*fmpb.FieldMask)(nil),
-		inPaths:   []string{"paths", "paths"},
-		wantPaths: []string{"paths", "paths"},
-	}, {
-		inMessage: (*fmpb.FieldMask)(nil),
-		inPaths:   []string{"paths", "<INVALID>", "paths"},
-		wantPaths: []string{"paths"},
-		wantError: cmpopts.AnyError,
-	}, {
-		inMessage: (*testpb.TestAllTypes)(nil),
-		inPaths:   []string{"optional_int32", "OptionalGroup.optional_nested_message", "map_uint32_uint32", "map_string_nested_message.corecursive", "oneof_bool"},
-		wantPaths: []string{"optional_int32", "OptionalGroup.optional_nested_message", "map_uint32_uint32"},
-		wantError: cmpopts.AnyError,
-	}, {
-		inMessage: (*testpb.TestAllTypes)(nil),
-		inPaths:   []string{"optional_nested_message", "optional_nested_message.corecursive", "optional_nested_message.corecursive.optional_nested_message", "optional_nested_message.corecursive.optional_nested_message.corecursive"},
-		wantPaths: []string{"optional_nested_message", "optional_nested_message.corecursive", "optional_nested_message.corecursive.optional_nested_message", "optional_nested_message.corecursive.optional_nested_message.corecursive"},
-	}, {
-		inMessage: (*testpb.TestAllTypes)(nil),
-		inPaths:   []string{"optional_int32", "optional_nested_message.corecursive.optional_int64", "optional_nested_message.corecursive.<INVALID>", "optional_int64"},
-		wantPaths: []string{"optional_int32", "optional_nested_message.corecursive.optional_int64"},
-		wantError: cmpopts.AnyError,
-	}, {
-		inMessage: (*testpb.TestAllTypes)(nil),
-		inPaths:   []string{"optional_int32", "optional_nested_message.corecursive.oneof_uint32", "optional_nested_message.oneof_field", "optional_int64"},
-		wantPaths: []string{"optional_int32", "optional_nested_message.corecursive.oneof_uint32"},
-		wantError: cmpopts.AnyError,
-	}}
-
-	for _, tt := range tests {
-		t.Run("", func(t *testing.T) {
-			var mask fmpb.FieldMask
-			gotError := mask.Append(tt.inMessage, tt.inPaths...)
-			gotPaths := mask.GetPaths()
-			if diff := cmp.Diff(tt.wantPaths, gotPaths, cmpopts.EquateEmpty()); diff != "" {
-				t.Errorf("Append() paths mismatch (-want +got):\n%s", diff)
-			}
-			if diff := cmp.Diff(tt.wantError, gotError, cmpopts.EquateErrors()); diff != "" {
-				t.Errorf("Append() error mismatch (-want +got):\n%s", diff)
-			}
-		})
-	}
-}
-
-func TestCombine(t *testing.T) {
-	tests := []struct {
-		in            [][]string
-		wantUnion     []string
-		wantIntersect []string
-	}{{
-		in: [][]string{
-			{},
-			{},
-		},
-		wantUnion:     []string{},
-		wantIntersect: []string{},
-	}, {
-		in: [][]string{
-			{"a"},
-			{},
-		},
-		wantUnion:     []string{"a"},
-		wantIntersect: []string{},
-	}, {
-		in: [][]string{
-			{"a"},
-			{"a"},
-		},
-		wantUnion:     []string{"a"},
-		wantIntersect: []string{"a"},
-	}, {
-		in: [][]string{
-			{"a"},
-			{"b"},
-			{"c"},
-		},
-		wantUnion:     []string{"a", "b", "c"},
-		wantIntersect: []string{},
-	}, {
-		in: [][]string{
-			{"a", "b"},
-			{"b.b"},
-			{"b"},
-			{"b", "a.A"},
-			{"b", "c", "c.a", "c.b"},
-		},
-		wantUnion:     []string{"a", "b", "c"},
-		wantIntersect: []string{"b.b"},
-	}, {
-		in: [][]string{
-			{"a.b", "a.c.d"},
-			{"a"},
-		},
-		wantUnion:     []string{"a"},
-		wantIntersect: []string{"a.b", "a.c.d"},
-	}, {
-		in: [][]string{
-			{},
-			{"a.b", "a.c", "d"},
-		},
-		wantUnion:     []string{"a.b", "a.c", "d"},
-		wantIntersect: []string{},
-	}}
-
-	for _, tt := range tests {
-		t.Run("", func(t *testing.T) {
-			var masks []*fmpb.FieldMask
-			for _, paths := range tt.in {
-				masks = append(masks, &fmpb.FieldMask{Paths: paths})
-			}
-
-			union := fmpb.Union(masks[0], masks[1], masks[2:]...)
-			gotUnion := union.GetPaths()
-			if diff := cmp.Diff(tt.wantUnion, gotUnion, cmpopts.EquateEmpty()); diff != "" {
-				t.Errorf("Union() mismatch (-want +got):\n%s", diff)
-			}
-
-			intersect := fmpb.Intersect(masks[0], masks[1], masks[2:]...)
-			gotIntersect := intersect.GetPaths()
-			if diff := cmp.Diff(tt.wantIntersect, gotIntersect, cmpopts.EquateEmpty()); diff != "" {
-				t.Errorf("Intersect() mismatch (-want +got):\n%s", diff)
-			}
-		})
-	}
-}
-
-func TestNormalize(t *testing.T) {
-	tests := []struct {
-		in   []string
-		want []string
-	}{{
-		in:   []string{},
-		want: []string{},
-	}, {
-		in:   []string{"a"},
-		want: []string{"a"},
-	}, {
-		in:   []string{"foo", "foo.bar", "foo.baz"},
-		want: []string{"foo"},
-	}, {
-		in:   []string{"foo.bar", "foo.baz"},
-		want: []string{"foo.bar", "foo.baz"},
-	}, {
-		in:   []string{"", "a.", ".b", "a.b", ".", "", "a.", ".b", "a.b", "."},
-		want: []string{"", "a.", "a.b"},
-	}, {
-		in:   []string{"e.a", "e.b", "e.c", "e.d", "e.f", "e.g", "e.b.a", "e$c", "e.b.c"},
-		want: []string{"e.a", "e.b", "e.c", "e.d", "e.f", "e.g", "e$c"},
-	}, {
-		in:   []string{"a", "aa", "aaa", "a$", "AAA", "aA.a", "a.a", "a", "aa", "aaa", "a$", "AAA", "aA.a"},
-		want: []string{"AAA", "a", "aA.a", "aa", "aaa", "a$"},
-	}, {
-		in:   []string{"a.b", "aa.bb.cc", ".", "a$b", "aa", "a.", "a", "b.c.d", ".a", "", "a$", "a$", "a.b", "a", "a.bb", ""},
-		want: []string{"", "a", "aa", "a$", "a$b", "b.c.d"},
-	}}
-
-	for _, tt := range tests {
-		t.Run("", func(t *testing.T) {
-			mask := &fmpb.FieldMask{
-				Paths: append([]string(nil), tt.in...),
-			}
-			mask.Normalize()
-			got := mask.GetPaths()
-			if diff := cmp.Diff(tt.want, got, cmpopts.EquateEmpty()); diff != "" {
-				t.Errorf("Normalize() mismatch (-want +got):\n%s", diff)
-			}
-		})
-	}
-}
-
-func TestIsValid(t *testing.T) {
-	tests := []struct {
-		message proto.Message
-		paths   []string
-		want    bool
-	}{{
-		message: (*testpb.TestAllTypes)(nil),
-		paths:   []string{"no_such_field"},
-		want:    false,
-	}, {
-		message: (*testpb.TestAllTypes)(nil),
-		paths:   []string{""},
-		want:    false,
-	}, {
-		message: (*testpb.TestAllTypes)(nil),
-		paths: []string{
-			"optional_int32",
-			"optional_int32",
-			"optional_int64",
-			"optional_uint32",
-			"optional_uint64",
-			"optional_sint32",
-			"optional_sint64",
-			"optional_fixed32",
-			"optional_fixed64",
-			"optional_sfixed32",
-			"optional_sfixed64",
-			"optional_float",
-			"optional_double",
-			"optional_bool",
-			"optional_string",
-			"optional_bytes",
-			"OptionalGroup",
-			"optional_nested_message",
-			"optional_foreign_message",
-			"optional_import_message",
-			"optional_nested_enum",
-			"optional_foreign_enum",
-			"optional_import_enum",
-			"repeated_int32",
-			"repeated_int64",
-			"repeated_uint32",
-			"repeated_uint64",
-			"repeated_sint32",
-			"repeated_sint64",
-			"repeated_fixed32",
-			"repeated_fixed64",
-			"repeated_sfixed32",
-			"repeated_sfixed64",
-			"repeated_float",
-			"repeated_double",
-			"repeated_bool",
-			"repeated_string",
-			"repeated_bytes",
-			"RepeatedGroup",
-			"repeated_nested_message",
-			"repeated_foreign_message",
-			"repeated_importmessage",
-			"repeated_nested_enum",
-			"repeated_foreign_enum",
-			"repeated_importenum",
-			"map_int32_int32",
-			"map_int64_int64",
-			"map_uint32_uint32",
-			"map_uint64_uint64",
-			"map_sint32_sint32",
-			"map_sint64_sint64",
-			"map_fixed32_fixed32",
-			"map_fixed64_fixed64",
-			"map_sfixed32_sfixed32",
-			"map_sfixed64_sfixed64",
-			"map_int32_float",
-			"map_int32_double",
-			"map_bool_bool",
-			"map_string_string",
-			"map_string_bytes",
-			"map_string_nested_message",
-			"map_string_nested_enum",
-			"oneof_uint32",
-			"oneof_nested_message",
-			"oneof_string",
-			"oneof_bytes",
-			"oneof_bool",
-			"oneof_uint64",
-			"oneof_float",
-			"oneof_double",
-			"oneof_enum",
-			"OneofGroup",
-		},
-		want: true,
-	}, {
-		message: (*testpb.TestAllTypes)(nil),
-		paths: []string{
-			"optional_nested_message.a",
-			"optional_nested_message.corecursive",
-			"optional_nested_message.corecursive.optional_int32",
-			"optional_nested_message.corecursive.optional_nested_message.corecursive.optional_nested_message.a",
-			"OptionalGroup.a",
-			"OptionalGroup.optional_nested_message",
-			"OptionalGroup.optional_nested_message.corecursive",
-			"oneof_nested_message.a",
-			"oneof_nested_message.corecursive",
-		},
-		want: true,
-	}, {
-		message: (*testpb.TestAllTypes)(nil),
-		paths:   []string{"repeated_nested_message.a"},
-		want:    false,
-	}, {
-		message: (*testpb.TestAllTypes)(nil),
-		paths:   []string{"repeated_nested_message[0]"},
-		want:    false,
-	}, {
-		message: (*testpb.TestAllTypes)(nil),
-		paths:   []string{"repeated_nested_message[0].a"},
-		want:    false,
-	}, {
-		message: (*testpb.TestAllTypes)(nil),
-		paths:   []string{"map_string_nested_message.a"},
-		want:    false,
-	}, {
-		message: (*testpb.TestAllTypes)(nil),
-		paths:   []string{`map_string_nested_message["key"]`},
-		want:    false,
-	}, {
-		message: (*testpb.TestAllExtensions)(nil),
-		paths:   []string{"nested_string_extension"},
-		want:    false,
-	}}
-
-	for _, tt := range tests {
-		t.Run("", func(t *testing.T) {
-			mask := &fmpb.FieldMask{Paths: tt.paths}
-			got := mask.IsValid(tt.message)
-			if got != tt.want {
-				t.Errorf("IsValid() returns %v want %v", got, tt.want)
-			}
-		})
-	}
-}
diff --git a/types/known/sourcecontextpb/source_context.pb.go b/types/known/sourcecontextpb/source_context.pb.go
deleted file mode 100644
index 0980d5a..0000000
--- a/types/known/sourcecontextpb/source_context.pb.go
+++ /dev/null
@@ -1,176 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google/protobuf/source_context.proto
-
-package sourcecontextpb
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-// `SourceContext` represents information about the source of a
-// protobuf element, like the file in which it is defined.
-type SourceContext struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// The path-qualified name of the .proto file that contained the associated
-	// protobuf element.  For example: `"google/protobuf/source_context.proto"`.
-	FileName string `protobuf:"bytes,1,opt,name=file_name,json=fileName,proto3" json:"file_name,omitempty"`
-}
-
-func (x *SourceContext) Reset() {
-	*x = SourceContext{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_source_context_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SourceContext) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SourceContext) ProtoMessage() {}
-
-func (x *SourceContext) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_source_context_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SourceContext.ProtoReflect.Descriptor instead.
-func (*SourceContext) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_source_context_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *SourceContext) GetFileName() string {
-	if x != nil {
-		return x.FileName
-	}
-	return ""
-}
-
-var File_google_protobuf_source_context_proto protoreflect.FileDescriptor
-
-var file_google_protobuf_source_context_proto_rawDesc = []byte{
-	0x0a, 0x24, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22, 0x2c, 0x0a, 0x0d, 0x53, 0x6f, 0x75, 0x72, 0x63,
-	0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65,
-	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c,
-	0x65, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x8a, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x42, 0x12, 0x53,
-	0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x50, 0x72, 0x6f, 0x74,
-	0x6f, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61,
-	0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f,
-	0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x2f, 0x73, 0x6f, 0x75, 0x72,
-	0x63, 0x65, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x70, 0x62, 0xa2, 0x02, 0x03, 0x47, 0x50,
-	0x42, 0xaa, 0x02, 0x1e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x57, 0x65, 0x6c, 0x6c, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79, 0x70,
-	0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_google_protobuf_source_context_proto_rawDescOnce sync.Once
-	file_google_protobuf_source_context_proto_rawDescData = file_google_protobuf_source_context_proto_rawDesc
-)
-
-func file_google_protobuf_source_context_proto_rawDescGZIP() []byte {
-	file_google_protobuf_source_context_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_source_context_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_protobuf_source_context_proto_rawDescData)
-	})
-	return file_google_protobuf_source_context_proto_rawDescData
-}
-
-var file_google_protobuf_source_context_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_google_protobuf_source_context_proto_goTypes = []interface{}{
-	(*SourceContext)(nil), // 0: google.protobuf.SourceContext
-}
-var file_google_protobuf_source_context_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_google_protobuf_source_context_proto_init() }
-func file_google_protobuf_source_context_proto_init() {
-	if File_google_protobuf_source_context_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_google_protobuf_source_context_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SourceContext); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_google_protobuf_source_context_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_google_protobuf_source_context_proto_goTypes,
-		DependencyIndexes: file_google_protobuf_source_context_proto_depIdxs,
-		MessageInfos:      file_google_protobuf_source_context_proto_msgTypes,
-	}.Build()
-	File_google_protobuf_source_context_proto = out.File
-	file_google_protobuf_source_context_proto_rawDesc = nil
-	file_google_protobuf_source_context_proto_goTypes = nil
-	file_google_protobuf_source_context_proto_depIdxs = nil
-}
diff --git a/types/known/structpb/struct.pb.go b/types/known/structpb/struct.pb.go
deleted file mode 100644
index 5866905..0000000
--- a/types/known/structpb/struct.pb.go
+++ /dev/null
@@ -1,810 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google/protobuf/struct.proto
-
-// Package structpb contains generated types for google/protobuf/struct.proto.
-//
-// The messages (i.e., Value, Struct, and ListValue) defined in struct.proto are
-// used to represent arbitrary JSON. The Value message represents a JSON value,
-// the Struct message represents a JSON object, and the ListValue message
-// represents a JSON array. See https://json.org for more information.
-//
-// The Value, Struct, and ListValue types have generated MarshalJSON and
-// UnmarshalJSON methods such that they serialize JSON equivalent to what the
-// messages themselves represent. Use of these types with the
-// "google.golang.org/protobuf/encoding/protojson" package
-// ensures that they will be serialized as their JSON equivalent.
-//
-//
-// Conversion to and from a Go interface
-//
-// The standard Go "encoding/json" package has functionality to serialize
-// arbitrary types to a large degree. The Value.AsInterface, Struct.AsMap, and
-// ListValue.AsSlice methods can convert the protobuf message representation into
-// a form represented by interface{}, map[string]interface{}, and []interface{}.
-// This form can be used with other packages that operate on such data structures
-// and also directly with the standard json package.
-//
-// In order to convert the interface{}, map[string]interface{}, and []interface{}
-// forms back as Value, Struct, and ListValue messages, use the NewStruct,
-// NewList, and NewValue constructor functions.
-//
-//
-// Example usage
-//
-// Consider the following example JSON object:
-//
-//	{
-//		"firstName": "John",
-//		"lastName": "Smith",
-//		"isAlive": true,
-//		"age": 27,
-//		"address": {
-//			"streetAddress": "21 2nd Street",
-//			"city": "New York",
-//			"state": "NY",
-//			"postalCode": "10021-3100"
-//		},
-//		"phoneNumbers": [
-//			{
-//				"type": "home",
-//				"number": "212 555-1234"
-//			},
-//			{
-//				"type": "office",
-//				"number": "646 555-4567"
-//			}
-//		],
-//		"children": [],
-//		"spouse": null
-//	}
-//
-// To construct a Value message representing the above JSON object:
-//
-//	m, err := structpb.NewValue(map[string]interface{}{
-//		"firstName": "John",
-//		"lastName":  "Smith",
-//		"isAlive":   true,
-//		"age":       27,
-//		"address": map[string]interface{}{
-//			"streetAddress": "21 2nd Street",
-//			"city":          "New York",
-//			"state":         "NY",
-//			"postalCode":    "10021-3100",
-//		},
-//		"phoneNumbers": []interface{}{
-//			map[string]interface{}{
-//				"type":   "home",
-//				"number": "212 555-1234",
-//			},
-//			map[string]interface{}{
-//				"type":   "office",
-//				"number": "646 555-4567",
-//			},
-//		},
-//		"children": []interface{}{},
-//		"spouse":   nil,
-//	})
-//	if err != nil {
-//		... // handle error
-//	}
-//	... // make use of m as a *structpb.Value
-//
-package structpb
-
-import (
-	base64 "encoding/base64"
-	protojson "google.golang.org/protobuf/encoding/protojson"
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	math "math"
-	reflect "reflect"
-	sync "sync"
-	utf8 "unicode/utf8"
-)
-
-// `NullValue` is a singleton enumeration to represent the null value for the
-// `Value` type union.
-//
-//  The JSON representation for `NullValue` is JSON `null`.
-type NullValue int32
-
-const (
-	// Null value.
-	NullValue_NULL_VALUE NullValue = 0
-)
-
-// Enum value maps for NullValue.
-var (
-	NullValue_name = map[int32]string{
-		0: "NULL_VALUE",
-	}
-	NullValue_value = map[string]int32{
-		"NULL_VALUE": 0,
-	}
-)
-
-func (x NullValue) Enum() *NullValue {
-	p := new(NullValue)
-	*p = x
-	return p
-}
-
-func (x NullValue) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (NullValue) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_struct_proto_enumTypes[0].Descriptor()
-}
-
-func (NullValue) Type() protoreflect.EnumType {
-	return &file_google_protobuf_struct_proto_enumTypes[0]
-}
-
-func (x NullValue) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use NullValue.Descriptor instead.
-func (NullValue) EnumDescriptor() ([]byte, []int) {
-	return file_google_protobuf_struct_proto_rawDescGZIP(), []int{0}
-}
-
-// `Struct` represents a structured data value, consisting of fields
-// which map to dynamically typed values. In some languages, `Struct`
-// might be supported by a native representation. For example, in
-// scripting languages like JS a struct is represented as an
-// object. The details of that representation are described together
-// with the proto support for the language.
-//
-// The JSON representation for `Struct` is JSON object.
-type Struct struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Unordered map of dynamically typed values.
-	Fields map[string]*Value `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
-}
-
-// NewStruct constructs a Struct from a general-purpose Go map.
-// The map keys must be valid UTF-8.
-// The map values are converted using NewValue.
-func NewStruct(v map[string]interface{}) (*Struct, error) {
-	x := &Struct{Fields: make(map[string]*Value, len(v))}
-	for k, v := range v {
-		if !utf8.ValidString(k) {
-			return nil, protoimpl.X.NewError("invalid UTF-8 in string: %q", k)
-		}
-		var err error
-		x.Fields[k], err = NewValue(v)
-		if err != nil {
-			return nil, err
-		}
-	}
-	return x, nil
-}
-
-// AsMap converts x to a general-purpose Go map.
-// The map values are converted by calling Value.AsInterface.
-func (x *Struct) AsMap() map[string]interface{} {
-	vs := make(map[string]interface{})
-	for k, v := range x.GetFields() {
-		vs[k] = v.AsInterface()
-	}
-	return vs
-}
-
-func (x *Struct) MarshalJSON() ([]byte, error) {
-	return protojson.Marshal(x)
-}
-
-func (x *Struct) UnmarshalJSON(b []byte) error {
-	return protojson.Unmarshal(b, x)
-}
-
-func (x *Struct) Reset() {
-	*x = Struct{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_struct_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Struct) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Struct) ProtoMessage() {}
-
-func (x *Struct) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_struct_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Struct.ProtoReflect.Descriptor instead.
-func (*Struct) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_struct_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Struct) GetFields() map[string]*Value {
-	if x != nil {
-		return x.Fields
-	}
-	return nil
-}
-
-// `Value` represents a dynamically typed value which can be either
-// null, a number, a string, a boolean, a recursive struct value, or a
-// list of values. A producer of value is expected to set one of that
-// variants, absence of any variant indicates an error.
-//
-// The JSON representation for `Value` is JSON value.
-type Value struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// The kind of value.
-	//
-	// Types that are assignable to Kind:
-	//	*Value_NullValue
-	//	*Value_NumberValue
-	//	*Value_StringValue
-	//	*Value_BoolValue
-	//	*Value_StructValue
-	//	*Value_ListValue
-	Kind isValue_Kind `protobuf_oneof:"kind"`
-}
-
-// NewValue constructs a Value from a general-purpose Go interface.
-//
-//	╔════════════════════════╤════════════════════════════════════════════╗
-//	║ Go type                │ Conversion                                 ║
-//	╠════════════════════════╪════════════════════════════════════════════╣
-//	║ nil                    │ stored as NullValue                        ║
-//	║ bool                   │ stored as BoolValue                        ║
-//	║ int, int32, int64      │ stored as NumberValue                      ║
-//	║ uint, uint32, uint64   │ stored as NumberValue                      ║
-//	║ float32, float64       │ stored as NumberValue                      ║
-//	║ string                 │ stored as StringValue; must be valid UTF-8 ║
-//	║ []byte                 │ stored as StringValue; base64-encoded      ║
-//	║ map[string]interface{} │ stored as StructValue                      ║
-//	║ []interface{}          │ stored as ListValue                        ║
-//	╚════════════════════════╧════════════════════════════════════════════╝
-//
-// When converting an int64 or uint64 to a NumberValue, numeric precision loss
-// is possible since they are stored as a float64.
-func NewValue(v interface{}) (*Value, error) {
-	switch v := v.(type) {
-	case nil:
-		return NewNullValue(), nil
-	case bool:
-		return NewBoolValue(v), nil
-	case int:
-		return NewNumberValue(float64(v)), nil
-	case int32:
-		return NewNumberValue(float64(v)), nil
-	case int64:
-		return NewNumberValue(float64(v)), nil
-	case uint:
-		return NewNumberValue(float64(v)), nil
-	case uint32:
-		return NewNumberValue(float64(v)), nil
-	case uint64:
-		return NewNumberValue(float64(v)), nil
-	case float32:
-		return NewNumberValue(float64(v)), nil
-	case float64:
-		return NewNumberValue(float64(v)), nil
-	case string:
-		if !utf8.ValidString(v) {
-			return nil, protoimpl.X.NewError("invalid UTF-8 in string: %q", v)
-		}
-		return NewStringValue(v), nil
-	case []byte:
-		s := base64.StdEncoding.EncodeToString(v)
-		return NewStringValue(s), nil
-	case map[string]interface{}:
-		v2, err := NewStruct(v)
-		if err != nil {
-			return nil, err
-		}
-		return NewStructValue(v2), nil
-	case []interface{}:
-		v2, err := NewList(v)
-		if err != nil {
-			return nil, err
-		}
-		return NewListValue(v2), nil
-	default:
-		return nil, protoimpl.X.NewError("invalid type: %T", v)
-	}
-}
-
-// NewNullValue constructs a new null Value.
-func NewNullValue() *Value {
-	return &Value{Kind: &Value_NullValue{NullValue: NullValue_NULL_VALUE}}
-}
-
-// NewBoolValue constructs a new boolean Value.
-func NewBoolValue(v bool) *Value {
-	return &Value{Kind: &Value_BoolValue{BoolValue: v}}
-}
-
-// NewNumberValue constructs a new number Value.
-func NewNumberValue(v float64) *Value {
-	return &Value{Kind: &Value_NumberValue{NumberValue: v}}
-}
-
-// NewStringValue constructs a new string Value.
-func NewStringValue(v string) *Value {
-	return &Value{Kind: &Value_StringValue{StringValue: v}}
-}
-
-// NewStructValue constructs a new struct Value.
-func NewStructValue(v *Struct) *Value {
-	return &Value{Kind: &Value_StructValue{StructValue: v}}
-}
-
-// NewListValue constructs a new list Value.
-func NewListValue(v *ListValue) *Value {
-	return &Value{Kind: &Value_ListValue{ListValue: v}}
-}
-
-// AsInterface converts x to a general-purpose Go interface.
-//
-// Calling Value.MarshalJSON and "encoding/json".Marshal on this output produce
-// semantically equivalent JSON (assuming no errors occur).
-//
-// Floating-point values (i.e., "NaN", "Infinity", and "-Infinity") are
-// converted as strings to remain compatible with MarshalJSON.
-func (x *Value) AsInterface() interface{} {
-	switch v := x.GetKind().(type) {
-	case *Value_NumberValue:
-		if v != nil {
-			switch {
-			case math.IsNaN(v.NumberValue):
-				return "NaN"
-			case math.IsInf(v.NumberValue, +1):
-				return "Infinity"
-			case math.IsInf(v.NumberValue, -1):
-				return "-Infinity"
-			default:
-				return v.NumberValue
-			}
-		}
-	case *Value_StringValue:
-		if v != nil {
-			return v.StringValue
-		}
-	case *Value_BoolValue:
-		if v != nil {
-			return v.BoolValue
-		}
-	case *Value_StructValue:
-		if v != nil {
-			return v.StructValue.AsMap()
-		}
-	case *Value_ListValue:
-		if v != nil {
-			return v.ListValue.AsSlice()
-		}
-	}
-	return nil
-}
-
-func (x *Value) MarshalJSON() ([]byte, error) {
-	return protojson.Marshal(x)
-}
-
-func (x *Value) UnmarshalJSON(b []byte) error {
-	return protojson.Unmarshal(b, x)
-}
-
-func (x *Value) Reset() {
-	*x = Value{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_struct_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Value) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Value) ProtoMessage() {}
-
-func (x *Value) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_struct_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Value.ProtoReflect.Descriptor instead.
-func (*Value) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_struct_proto_rawDescGZIP(), []int{1}
-}
-
-func (m *Value) GetKind() isValue_Kind {
-	if m != nil {
-		return m.Kind
-	}
-	return nil
-}
-
-func (x *Value) GetNullValue() NullValue {
-	if x, ok := x.GetKind().(*Value_NullValue); ok {
-		return x.NullValue
-	}
-	return NullValue_NULL_VALUE
-}
-
-func (x *Value) GetNumberValue() float64 {
-	if x, ok := x.GetKind().(*Value_NumberValue); ok {
-		return x.NumberValue
-	}
-	return 0
-}
-
-func (x *Value) GetStringValue() string {
-	if x, ok := x.GetKind().(*Value_StringValue); ok {
-		return x.StringValue
-	}
-	return ""
-}
-
-func (x *Value) GetBoolValue() bool {
-	if x, ok := x.GetKind().(*Value_BoolValue); ok {
-		return x.BoolValue
-	}
-	return false
-}
-
-func (x *Value) GetStructValue() *Struct {
-	if x, ok := x.GetKind().(*Value_StructValue); ok {
-		return x.StructValue
-	}
-	return nil
-}
-
-func (x *Value) GetListValue() *ListValue {
-	if x, ok := x.GetKind().(*Value_ListValue); ok {
-		return x.ListValue
-	}
-	return nil
-}
-
-type isValue_Kind interface {
-	isValue_Kind()
-}
-
-type Value_NullValue struct {
-	// Represents a null value.
-	NullValue NullValue `protobuf:"varint,1,opt,name=null_value,json=nullValue,proto3,enum=google.protobuf.NullValue,oneof"`
-}
-
-type Value_NumberValue struct {
-	// Represents a double value.
-	NumberValue float64 `protobuf:"fixed64,2,opt,name=number_value,json=numberValue,proto3,oneof"`
-}
-
-type Value_StringValue struct {
-	// Represents a string value.
-	StringValue string `protobuf:"bytes,3,opt,name=string_value,json=stringValue,proto3,oneof"`
-}
-
-type Value_BoolValue struct {
-	// Represents a boolean value.
-	BoolValue bool `protobuf:"varint,4,opt,name=bool_value,json=boolValue,proto3,oneof"`
-}
-
-type Value_StructValue struct {
-	// Represents a structured value.
-	StructValue *Struct `protobuf:"bytes,5,opt,name=struct_value,json=structValue,proto3,oneof"`
-}
-
-type Value_ListValue struct {
-	// Represents a repeated `Value`.
-	ListValue *ListValue `protobuf:"bytes,6,opt,name=list_value,json=listValue,proto3,oneof"`
-}
-
-func (*Value_NullValue) isValue_Kind() {}
-
-func (*Value_NumberValue) isValue_Kind() {}
-
-func (*Value_StringValue) isValue_Kind() {}
-
-func (*Value_BoolValue) isValue_Kind() {}
-
-func (*Value_StructValue) isValue_Kind() {}
-
-func (*Value_ListValue) isValue_Kind() {}
-
-// `ListValue` is a wrapper around a repeated field of values.
-//
-// The JSON representation for `ListValue` is JSON array.
-type ListValue struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Repeated field of dynamically typed values.
-	Values []*Value `protobuf:"bytes,1,rep,name=values,proto3" json:"values,omitempty"`
-}
-
-// NewList constructs a ListValue from a general-purpose Go slice.
-// The slice elements are converted using NewValue.
-func NewList(v []interface{}) (*ListValue, error) {
-	x := &ListValue{Values: make([]*Value, len(v))}
-	for i, v := range v {
-		var err error
-		x.Values[i], err = NewValue(v)
-		if err != nil {
-			return nil, err
-		}
-	}
-	return x, nil
-}
-
-// AsSlice converts x to a general-purpose Go slice.
-// The slice elements are converted by calling Value.AsInterface.
-func (x *ListValue) AsSlice() []interface{} {
-	vs := make([]interface{}, len(x.GetValues()))
-	for i, v := range x.GetValues() {
-		vs[i] = v.AsInterface()
-	}
-	return vs
-}
-
-func (x *ListValue) MarshalJSON() ([]byte, error) {
-	return protojson.Marshal(x)
-}
-
-func (x *ListValue) UnmarshalJSON(b []byte) error {
-	return protojson.Unmarshal(b, x)
-}
-
-func (x *ListValue) Reset() {
-	*x = ListValue{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_struct_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ListValue) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListValue) ProtoMessage() {}
-
-func (x *ListValue) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_struct_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListValue.ProtoReflect.Descriptor instead.
-func (*ListValue) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_struct_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *ListValue) GetValues() []*Value {
-	if x != nil {
-		return x.Values
-	}
-	return nil
-}
-
-var File_google_protobuf_struct_proto protoreflect.FileDescriptor
-
-var file_google_protobuf_struct_proto_rawDesc = []byte{
-	0x0a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x22,
-	0x98, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x12, 0x3b, 0x0a, 0x06, 0x66, 0x69,
-	0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x67, 0x6f, 0x6f,
-	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72,
-	0x75, 0x63, 0x74, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
-	0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x1a, 0x51, 0x0a, 0x0b, 0x46, 0x69, 0x65, 0x6c, 0x64,
-	0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb2, 0x02, 0x0a, 0x05, 0x56,
-	0x61, 0x6c, 0x75, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x6e, 0x75, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4e, 0x75, 0x6c, 0x6c, 0x56,
-	0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75,
-	0x65, 0x12, 0x23, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x62, 0x65,
-	0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
-	0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b,
-	0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0a, 0x62,
-	0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48,
-	0x00, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3c, 0x0a, 0x0c,
-	0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x73,
-	0x74, 0x72, 0x75, 0x63, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x6c, 0x69,
-	0x73, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x09, 0x6c, 0x69,
-	0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22,
-	0x3b, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x0a, 0x06,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56,
-	0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2a, 0x1b, 0x0a, 0x09,
-	0x4e, 0x75, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x4e, 0x55, 0x4c,
-	0x4c, 0x5f, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x10, 0x00, 0x42, 0x7f, 0x0a, 0x13, 0x63, 0x6f, 0x6d,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x42, 0x0b, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a,
-	0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f,
-	0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65,
-	0x73, 0x2f, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x70, 0x62,
-	0xf8, 0x01, 0x01, 0xa2, 0x02, 0x03, 0x47, 0x50, 0x42, 0xaa, 0x02, 0x1e, 0x47, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x57, 0x65, 0x6c, 0x6c,
-	0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x33,
-}
-
-var (
-	file_google_protobuf_struct_proto_rawDescOnce sync.Once
-	file_google_protobuf_struct_proto_rawDescData = file_google_protobuf_struct_proto_rawDesc
-)
-
-func file_google_protobuf_struct_proto_rawDescGZIP() []byte {
-	file_google_protobuf_struct_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_struct_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_protobuf_struct_proto_rawDescData)
-	})
-	return file_google_protobuf_struct_proto_rawDescData
-}
-
-var file_google_protobuf_struct_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_google_protobuf_struct_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
-var file_google_protobuf_struct_proto_goTypes = []interface{}{
-	(NullValue)(0),    // 0: google.protobuf.NullValue
-	(*Struct)(nil),    // 1: google.protobuf.Struct
-	(*Value)(nil),     // 2: google.protobuf.Value
-	(*ListValue)(nil), // 3: google.protobuf.ListValue
-	nil,               // 4: google.protobuf.Struct.FieldsEntry
-}
-var file_google_protobuf_struct_proto_depIdxs = []int32{
-	4, // 0: google.protobuf.Struct.fields:type_name -> google.protobuf.Struct.FieldsEntry
-	0, // 1: google.protobuf.Value.null_value:type_name -> google.protobuf.NullValue
-	1, // 2: google.protobuf.Value.struct_value:type_name -> google.protobuf.Struct
-	3, // 3: google.protobuf.Value.list_value:type_name -> google.protobuf.ListValue
-	2, // 4: google.protobuf.ListValue.values:type_name -> google.protobuf.Value
-	2, // 5: google.protobuf.Struct.FieldsEntry.value:type_name -> google.protobuf.Value
-	6, // [6:6] is the sub-list for method output_type
-	6, // [6:6] is the sub-list for method input_type
-	6, // [6:6] is the sub-list for extension type_name
-	6, // [6:6] is the sub-list for extension extendee
-	0, // [0:6] is the sub-list for field type_name
-}
-
-func init() { file_google_protobuf_struct_proto_init() }
-func file_google_protobuf_struct_proto_init() {
-	if File_google_protobuf_struct_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_google_protobuf_struct_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Struct); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_struct_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Value); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_struct_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListValue); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	file_google_protobuf_struct_proto_msgTypes[1].OneofWrappers = []interface{}{
-		(*Value_NullValue)(nil),
-		(*Value_NumberValue)(nil),
-		(*Value_StringValue)(nil),
-		(*Value_BoolValue)(nil),
-		(*Value_StructValue)(nil),
-		(*Value_ListValue)(nil),
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_google_protobuf_struct_proto_rawDesc,
-			NumEnums:      1,
-			NumMessages:   4,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_google_protobuf_struct_proto_goTypes,
-		DependencyIndexes: file_google_protobuf_struct_proto_depIdxs,
-		EnumInfos:         file_google_protobuf_struct_proto_enumTypes,
-		MessageInfos:      file_google_protobuf_struct_proto_msgTypes,
-	}.Build()
-	File_google_protobuf_struct_proto = out.File
-	file_google_protobuf_struct_proto_rawDesc = nil
-	file_google_protobuf_struct_proto_goTypes = nil
-	file_google_protobuf_struct_proto_depIdxs = nil
-}
diff --git a/types/known/structpb/struct_test.go b/types/known/structpb/struct_test.go
deleted file mode 100644
index 643f740..0000000
--- a/types/known/structpb/struct_test.go
+++ /dev/null
@@ -1,512 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package structpb_test
-
-import (
-	"encoding/json"
-	"math"
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-	"github.com/google/go-cmp/cmp/cmpopts"
-	"google.golang.org/protobuf/reflect/protoreflect"
-	"google.golang.org/protobuf/testing/protocmp"
-
-	spb "google.golang.org/protobuf/types/known/structpb"
-)
-
-var equateJSON = cmpopts.AcyclicTransformer("UnmarshalJSON", func(in []byte) (out interface{}) {
-	if err := json.Unmarshal(in, &out); err != nil {
-		return in
-	}
-	return out
-})
-
-func TestToStruct(t *testing.T) {
-	tests := []struct {
-		in      map[string]interface{}
-		wantPB  *spb.Struct
-		wantErr error
-	}{{
-		in:     nil,
-		wantPB: new(spb.Struct),
-	}, {
-		in:     make(map[string]interface{}),
-		wantPB: new(spb.Struct),
-	}, {
-		in: map[string]interface{}{
-			"nil":     nil,
-			"bool":    bool(false),
-			"int":     int(-123),
-			"int32":   int32(math.MinInt32),
-			"int64":   int64(math.MinInt64),
-			"uint":    uint(123),
-			"uint32":  uint32(math.MaxInt32),
-			"uint64":  uint64(math.MaxInt64),
-			"float32": float32(123.456),
-			"float64": float64(123.456),
-			"string":  string("hello, world!"),
-			"bytes":   []byte("\xde\xad\xbe\xef"),
-			"map":     map[string]interface{}{"k1": "v1", "k2": "v2"},
-			"slice":   []interface{}{"one", "two", "three"},
-		},
-		wantPB: &spb.Struct{Fields: map[string]*spb.Value{
-			"nil":     spb.NewNullValue(),
-			"bool":    spb.NewBoolValue(false),
-			"int":     spb.NewNumberValue(float64(-123)),
-			"int32":   spb.NewNumberValue(float64(math.MinInt32)),
-			"int64":   spb.NewNumberValue(float64(math.MinInt64)),
-			"uint":    spb.NewNumberValue(float64(123)),
-			"uint32":  spb.NewNumberValue(float64(math.MaxInt32)),
-			"uint64":  spb.NewNumberValue(float64(math.MaxInt64)),
-			"float32": spb.NewNumberValue(float64(float32(123.456))),
-			"float64": spb.NewNumberValue(float64(float64(123.456))),
-			"string":  spb.NewStringValue("hello, world!"),
-			"bytes":   spb.NewStringValue("3q2+7w=="),
-			"map": spb.NewStructValue(&spb.Struct{Fields: map[string]*spb.Value{
-				"k1": spb.NewStringValue("v1"),
-				"k2": spb.NewStringValue("v2"),
-			}}),
-			"slice": spb.NewListValue(&spb.ListValue{Values: []*spb.Value{
-				spb.NewStringValue("one"),
-				spb.NewStringValue("two"),
-				spb.NewStringValue("three"),
-			}}),
-		}},
-	}, {
-		in:      map[string]interface{}{"\xde\xad\xbe\xef": "<invalid UTF-8>"},
-		wantErr: cmpopts.AnyError,
-	}, {
-		in:      map[string]interface{}{"<invalid UTF-8>": "\xde\xad\xbe\xef"},
-		wantErr: cmpopts.AnyError,
-	}, {
-		in:      map[string]interface{}{"key": protoreflect.Name("named string")},
-		wantErr: cmpopts.AnyError,
-	}}
-
-	for _, tt := range tests {
-		gotPB, gotErr := spb.NewStruct(tt.in)
-		if diff := cmp.Diff(tt.wantPB, gotPB, protocmp.Transform()); diff != "" {
-			t.Errorf("NewStruct(%v) output mismatch (-want +got):\n%s", tt.in, diff)
-		}
-		if diff := cmp.Diff(tt.wantErr, gotErr, cmpopts.EquateErrors()); diff != "" {
-			t.Errorf("NewStruct(%v) error mismatch (-want +got):\n%s", tt.in, diff)
-		}
-	}
-}
-
-func TestFromStruct(t *testing.T) {
-	tests := []struct {
-		in   *spb.Struct
-		want map[string]interface{}
-	}{{
-		in:   nil,
-		want: make(map[string]interface{}),
-	}, {
-		in:   new(spb.Struct),
-		want: make(map[string]interface{}),
-	}, {
-		in:   &spb.Struct{Fields: make(map[string]*spb.Value)},
-		want: make(map[string]interface{}),
-	}, {
-		in: &spb.Struct{Fields: map[string]*spb.Value{
-			"nil":     spb.NewNullValue(),
-			"bool":    spb.NewBoolValue(false),
-			"int":     spb.NewNumberValue(float64(-123)),
-			"int32":   spb.NewNumberValue(float64(math.MinInt32)),
-			"int64":   spb.NewNumberValue(float64(math.MinInt64)),
-			"uint":    spb.NewNumberValue(float64(123)),
-			"uint32":  spb.NewNumberValue(float64(math.MaxInt32)),
-			"uint64":  spb.NewNumberValue(float64(math.MaxInt64)),
-			"float32": spb.NewNumberValue(float64(float32(123.456))),
-			"float64": spb.NewNumberValue(float64(float64(123.456))),
-			"string":  spb.NewStringValue("hello, world!"),
-			"bytes":   spb.NewStringValue("3q2+7w=="),
-			"map": spb.NewStructValue(&spb.Struct{Fields: map[string]*spb.Value{
-				"k1": spb.NewStringValue("v1"),
-				"k2": spb.NewStringValue("v2"),
-			}}),
-			"slice": spb.NewListValue(&spb.ListValue{Values: []*spb.Value{
-				spb.NewStringValue("one"),
-				spb.NewStringValue("two"),
-				spb.NewStringValue("three"),
-			}}),
-		}},
-		want: map[string]interface{}{
-			"nil":     nil,
-			"bool":    bool(false),
-			"int":     float64(-123),
-			"int32":   float64(math.MinInt32),
-			"int64":   float64(math.MinInt64),
-			"uint":    float64(123),
-			"uint32":  float64(math.MaxInt32),
-			"uint64":  float64(math.MaxInt64),
-			"float32": float64(float32(123.456)),
-			"float64": float64(float64(123.456)),
-			"string":  string("hello, world!"),
-			"bytes":   string("3q2+7w=="),
-			"map":     map[string]interface{}{"k1": "v1", "k2": "v2"},
-			"slice":   []interface{}{"one", "two", "three"},
-		},
-	}}
-
-	for _, tt := range tests {
-		got := tt.in.AsMap()
-		if diff := cmp.Diff(tt.want, got); diff != "" {
-			t.Errorf("AsMap(%v) mismatch (-want +got):\n%s", tt.in, diff)
-		}
-		gotJSON, err := json.Marshal(got)
-		if err != nil {
-			t.Errorf("Marshal error: %v", err)
-		}
-		wantJSON, err := tt.in.MarshalJSON()
-		if err != nil {
-			t.Errorf("Marshal error: %v", err)
-		}
-		if diff := cmp.Diff(wantJSON, gotJSON, equateJSON); diff != "" {
-			t.Errorf("MarshalJSON(%v) mismatch (-want +got):\n%s", tt.in, diff)
-		}
-	}
-}
-
-func TestToListValue(t *testing.T) {
-	tests := []struct {
-		in      []interface{}
-		wantPB  *spb.ListValue
-		wantErr error
-	}{{
-		in:     nil,
-		wantPB: new(spb.ListValue),
-	}, {
-		in:     make([]interface{}, 0),
-		wantPB: new(spb.ListValue),
-	}, {
-		in: []interface{}{
-			nil,
-			bool(false),
-			int(-123),
-			int32(math.MinInt32),
-			int64(math.MinInt64),
-			uint(123),
-			uint32(math.MaxInt32),
-			uint64(math.MaxInt64),
-			float32(123.456),
-			float64(123.456),
-			string("hello, world!"),
-			[]byte("\xde\xad\xbe\xef"),
-			map[string]interface{}{"k1": "v1", "k2": "v2"},
-			[]interface{}{"one", "two", "three"},
-		},
-		wantPB: &spb.ListValue{Values: []*spb.Value{
-			spb.NewNullValue(),
-			spb.NewBoolValue(false),
-			spb.NewNumberValue(float64(-123)),
-			spb.NewNumberValue(float64(math.MinInt32)),
-			spb.NewNumberValue(float64(math.MinInt64)),
-			spb.NewNumberValue(float64(123)),
-			spb.NewNumberValue(float64(math.MaxInt32)),
-			spb.NewNumberValue(float64(math.MaxInt64)),
-			spb.NewNumberValue(float64(float32(123.456))),
-			spb.NewNumberValue(float64(float64(123.456))),
-			spb.NewStringValue("hello, world!"),
-			spb.NewStringValue("3q2+7w=="),
-			spb.NewStructValue(&spb.Struct{Fields: map[string]*spb.Value{
-				"k1": spb.NewStringValue("v1"),
-				"k2": spb.NewStringValue("v2"),
-			}}),
-			spb.NewListValue(&spb.ListValue{Values: []*spb.Value{
-				spb.NewStringValue("one"),
-				spb.NewStringValue("two"),
-				spb.NewStringValue("three"),
-			}}),
-		}},
-	}, {
-		in:      []interface{}{"\xde\xad\xbe\xef"},
-		wantErr: cmpopts.AnyError,
-	}, {
-		in:      []interface{}{protoreflect.Name("named string")},
-		wantErr: cmpopts.AnyError,
-	}}
-
-	for _, tt := range tests {
-		gotPB, gotErr := spb.NewList(tt.in)
-		if diff := cmp.Diff(tt.wantPB, gotPB, protocmp.Transform()); diff != "" {
-			t.Errorf("NewListValue(%v) output mismatch (-want +got):\n%s", tt.in, diff)
-		}
-		if diff := cmp.Diff(tt.wantErr, gotErr, cmpopts.EquateErrors()); diff != "" {
-			t.Errorf("NewListValue(%v) error mismatch (-want +got):\n%s", tt.in, diff)
-		}
-	}
-}
-
-func TestFromListValue(t *testing.T) {
-	tests := []struct {
-		in   *spb.ListValue
-		want []interface{}
-	}{{
-		in:   nil,
-		want: make([]interface{}, 0),
-	}, {
-		in:   new(spb.ListValue),
-		want: make([]interface{}, 0),
-	}, {
-		in:   &spb.ListValue{Values: make([]*spb.Value, 0)},
-		want: make([]interface{}, 0),
-	}, {
-		in: &spb.ListValue{Values: []*spb.Value{
-			spb.NewNullValue(),
-			spb.NewBoolValue(false),
-			spb.NewNumberValue(float64(-123)),
-			spb.NewNumberValue(float64(math.MinInt32)),
-			spb.NewNumberValue(float64(math.MinInt64)),
-			spb.NewNumberValue(float64(123)),
-			spb.NewNumberValue(float64(math.MaxInt32)),
-			spb.NewNumberValue(float64(math.MaxInt64)),
-			spb.NewNumberValue(float64(float32(123.456))),
-			spb.NewNumberValue(float64(float64(123.456))),
-			spb.NewStringValue("hello, world!"),
-			spb.NewStringValue("3q2+7w=="),
-			spb.NewStructValue(&spb.Struct{Fields: map[string]*spb.Value{
-				"k1": spb.NewStringValue("v1"),
-				"k2": spb.NewStringValue("v2"),
-			}}),
-			spb.NewListValue(&spb.ListValue{Values: []*spb.Value{
-				spb.NewStringValue("one"),
-				spb.NewStringValue("two"),
-				spb.NewStringValue("three"),
-			}}),
-		}},
-		want: []interface{}{
-			nil,
-			bool(false),
-			float64(-123),
-			float64(math.MinInt32),
-			float64(math.MinInt64),
-			float64(123),
-			float64(math.MaxInt32),
-			float64(math.MaxInt64),
-			float64(float32(123.456)),
-			float64(float64(123.456)),
-			string("hello, world!"),
-			string("3q2+7w=="),
-			map[string]interface{}{"k1": "v1", "k2": "v2"},
-			[]interface{}{"one", "two", "three"},
-		},
-	}}
-
-	for _, tt := range tests {
-		got := tt.in.AsSlice()
-		if diff := cmp.Diff(tt.want, got); diff != "" {
-			t.Errorf("AsSlice(%v) mismatch (-want +got):\n%s", tt.in, diff)
-		}
-		gotJSON, err := json.Marshal(got)
-		if err != nil {
-			t.Errorf("Marshal error: %v", err)
-		}
-		wantJSON, err := tt.in.MarshalJSON()
-		if err != nil {
-			t.Errorf("Marshal error: %v", err)
-		}
-		if diff := cmp.Diff(wantJSON, gotJSON, equateJSON); diff != "" {
-			t.Errorf("MarshalJSON(%v) mismatch (-want +got):\n%s", tt.in, diff)
-		}
-	}
-}
-
-func TestToValue(t *testing.T) {
-	tests := []struct {
-		in      interface{}
-		wantPB  *spb.Value
-		wantErr error
-	}{{
-		in:     nil,
-		wantPB: spb.NewNullValue(),
-	}, {
-		in:     bool(false),
-		wantPB: spb.NewBoolValue(false),
-	}, {
-		in:     int(-123),
-		wantPB: spb.NewNumberValue(float64(-123)),
-	}, {
-		in:     int32(math.MinInt32),
-		wantPB: spb.NewNumberValue(float64(math.MinInt32)),
-	}, {
-		in:     int64(math.MinInt64),
-		wantPB: spb.NewNumberValue(float64(math.MinInt64)),
-	}, {
-		in:     uint(123),
-		wantPB: spb.NewNumberValue(float64(123)),
-	}, {
-		in:     uint32(math.MaxInt32),
-		wantPB: spb.NewNumberValue(float64(math.MaxInt32)),
-	}, {
-		in:     uint64(math.MaxInt64),
-		wantPB: spb.NewNumberValue(float64(math.MaxInt64)),
-	}, {
-		in:     float32(123.456),
-		wantPB: spb.NewNumberValue(float64(float32(123.456))),
-	}, {
-		in:     float64(123.456),
-		wantPB: spb.NewNumberValue(float64(float64(123.456))),
-	}, {
-		in:     string("hello, world!"),
-		wantPB: spb.NewStringValue("hello, world!"),
-	}, {
-		in:     []byte("\xde\xad\xbe\xef"),
-		wantPB: spb.NewStringValue("3q2+7w=="),
-	}, {
-		in:     map[string]interface{}(nil),
-		wantPB: spb.NewStructValue(nil),
-	}, {
-		in:     make(map[string]interface{}),
-		wantPB: spb.NewStructValue(nil),
-	}, {
-		in: map[string]interface{}{"k1": "v1", "k2": "v2"},
-		wantPB: spb.NewStructValue(&spb.Struct{Fields: map[string]*spb.Value{
-			"k1": spb.NewStringValue("v1"),
-			"k2": spb.NewStringValue("v2"),
-		}}),
-	}, {
-		in:     []interface{}(nil),
-		wantPB: spb.NewListValue(nil),
-	}, {
-		in:     make([]interface{}, 0),
-		wantPB: spb.NewListValue(nil),
-	}, {
-		in: []interface{}{"one", "two", "three"},
-		wantPB: spb.NewListValue(&spb.ListValue{Values: []*spb.Value{
-			spb.NewStringValue("one"),
-			spb.NewStringValue("two"),
-			spb.NewStringValue("three"),
-		}}),
-	}, {
-		in:      "\xde\xad\xbe\xef",
-		wantErr: cmpopts.AnyError,
-	}, {
-		in:      protoreflect.Name("named string"),
-		wantErr: cmpopts.AnyError,
-	}}
-
-	for _, tt := range tests {
-		gotPB, gotErr := spb.NewValue(tt.in)
-		if diff := cmp.Diff(tt.wantPB, gotPB, protocmp.Transform()); diff != "" {
-			t.Errorf("NewValue(%v) output mismatch (-want +got):\n%s", tt.in, diff)
-		}
-		if diff := cmp.Diff(tt.wantErr, gotErr, cmpopts.EquateErrors()); diff != "" {
-			t.Errorf("NewValue(%v) error mismatch (-want +got):\n%s", tt.in, diff)
-		}
-	}
-}
-
-func TestFromValue(t *testing.T) {
-	tests := []struct {
-		in   *spb.Value
-		want interface{}
-	}{{
-		in:   nil,
-		want: nil,
-	}, {
-		in:   new(spb.Value),
-		want: nil,
-	}, {
-		in:   &spb.Value{Kind: (*spb.Value_NullValue)(nil)},
-		want: nil,
-	}, {
-		in:   spb.NewNullValue(),
-		want: nil,
-	}, {
-		in:   &spb.Value{Kind: &spb.Value_NullValue{NullValue: math.MinInt32}},
-		want: nil,
-	}, {
-		in:   &spb.Value{Kind: (*spb.Value_BoolValue)(nil)},
-		want: nil,
-	}, {
-		in:   spb.NewBoolValue(false),
-		want: bool(false),
-	}, {
-		in:   &spb.Value{Kind: (*spb.Value_NumberValue)(nil)},
-		want: nil,
-	}, {
-		in:   spb.NewNumberValue(float64(math.MinInt32)),
-		want: float64(math.MinInt32),
-	}, {
-		in:   spb.NewNumberValue(float64(math.MinInt64)),
-		want: float64(math.MinInt64),
-	}, {
-		in:   spb.NewNumberValue(float64(123)),
-		want: float64(123),
-	}, {
-		in:   spb.NewNumberValue(float64(math.MaxInt32)),
-		want: float64(math.MaxInt32),
-	}, {
-		in:   spb.NewNumberValue(float64(math.MaxInt64)),
-		want: float64(math.MaxInt64),
-	}, {
-		in:   spb.NewNumberValue(float64(float32(123.456))),
-		want: float64(float32(123.456)),
-	}, {
-		in:   spb.NewNumberValue(float64(float64(123.456))),
-		want: float64(float64(123.456)),
-	}, {
-		in:   spb.NewNumberValue(math.NaN()),
-		want: string("NaN"),
-	}, {
-		in:   spb.NewNumberValue(math.Inf(-1)),
-		want: string("-Infinity"),
-	}, {
-		in:   spb.NewNumberValue(math.Inf(+1)),
-		want: string("Infinity"),
-	}, {
-		in:   &spb.Value{Kind: (*spb.Value_StringValue)(nil)},
-		want: nil,
-	}, {
-		in:   spb.NewStringValue("hello, world!"),
-		want: string("hello, world!"),
-	}, {
-		in:   spb.NewStringValue("3q2+7w=="),
-		want: string("3q2+7w=="),
-	}, {
-		in:   &spb.Value{Kind: (*spb.Value_StructValue)(nil)},
-		want: nil,
-	}, {
-		in:   &spb.Value{Kind: &spb.Value_StructValue{}},
-		want: make(map[string]interface{}),
-	}, {
-		in: spb.NewListValue(&spb.ListValue{Values: []*spb.Value{
-			spb.NewStringValue("one"),
-			spb.NewStringValue("two"),
-			spb.NewStringValue("three"),
-		}}),
-		want: []interface{}{"one", "two", "three"},
-	}, {
-		in:   &spb.Value{Kind: (*spb.Value_ListValue)(nil)},
-		want: nil,
-	}, {
-		in:   &spb.Value{Kind: &spb.Value_ListValue{}},
-		want: make([]interface{}, 0),
-	}, {
-		in: spb.NewListValue(&spb.ListValue{Values: []*spb.Value{
-			spb.NewStringValue("one"),
-			spb.NewStringValue("two"),
-			spb.NewStringValue("three"),
-		}}),
-		want: []interface{}{"one", "two", "three"},
-	}}
-
-	for _, tt := range tests {
-		got := tt.in.AsInterface()
-		if diff := cmp.Diff(tt.want, got); diff != "" {
-			t.Errorf("AsInterface(%v) mismatch (-want +got):\n%s", tt.in, diff)
-		}
-		gotJSON, gotErr := json.Marshal(got)
-		if gotErr != nil {
-			t.Errorf("Marshal error: %v", gotErr)
-		}
-		wantJSON, wantErr := tt.in.MarshalJSON()
-		if diff := cmp.Diff(wantJSON, gotJSON, equateJSON); diff != "" && wantErr == nil {
-			t.Errorf("MarshalJSON(%v) mismatch (-want +got):\n%s", tt.in, diff)
-		}
-	}
-}
diff --git a/types/known/timestamppb/timestamp.pb.go b/types/known/timestamppb/timestamp.pb.go
deleted file mode 100644
index c9ae921..0000000
--- a/types/known/timestamppb/timestamp.pb.go
+++ /dev/null
@@ -1,390 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google/protobuf/timestamp.proto
-
-// Package timestamppb contains generated types for google/protobuf/timestamp.proto.
-//
-// The Timestamp message represents a timestamp,
-// an instant in time since the Unix epoch (January 1st, 1970).
-//
-//
-// Conversion to a Go Time
-//
-// The AsTime method can be used to convert a Timestamp message to a
-// standard Go time.Time value in UTC:
-//
-//	t := ts.AsTime()
-//	... // make use of t as a time.Time
-//
-// Converting to a time.Time is a common operation so that the extensive
-// set of time-based operations provided by the time package can be leveraged.
-// See https://golang.org/pkg/time for more information.
-//
-// The AsTime method performs the conversion on a best-effort basis. Timestamps
-// with denormal values (e.g., nanoseconds beyond 0 and 99999999, inclusive)
-// are normalized during the conversion to a time.Time. To manually check for
-// invalid Timestamps per the documented limitations in timestamp.proto,
-// additionally call the CheckValid method:
-//
-//	if err := ts.CheckValid(); err != nil {
-//		... // handle error
-//	}
-//
-//
-// Conversion from a Go Time
-//
-// The timestamppb.New function can be used to construct a Timestamp message
-// from a standard Go time.Time value:
-//
-//	ts := timestamppb.New(t)
-//	... // make use of ts as a *timestamppb.Timestamp
-//
-// In order to construct a Timestamp representing the current time, use Now:
-//
-//	ts := timestamppb.Now()
-//	... // make use of ts as a *timestamppb.Timestamp
-//
-package timestamppb
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-	time "time"
-)
-
-// A Timestamp represents a point in time independent of any time zone or local
-// calendar, encoded as a count of seconds and fractions of seconds at
-// nanosecond resolution. The count is relative to an epoch at UTC midnight on
-// January 1, 1970, in the proleptic Gregorian calendar which extends the
-// Gregorian calendar backwards to year one.
-//
-// All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap
-// second table is needed for interpretation, using a [24-hour linear
-// smear](https://developers.google.com/time/smear).
-//
-// The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
-// restricting to that range, we ensure that we can convert to and from [RFC
-// 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
-//
-// # Examples
-//
-// Example 1: Compute Timestamp from POSIX `time()`.
-//
-//     Timestamp timestamp;
-//     timestamp.set_seconds(time(NULL));
-//     timestamp.set_nanos(0);
-//
-// Example 2: Compute Timestamp from POSIX `gettimeofday()`.
-//
-//     struct timeval tv;
-//     gettimeofday(&tv, NULL);
-//
-//     Timestamp timestamp;
-//     timestamp.set_seconds(tv.tv_sec);
-//     timestamp.set_nanos(tv.tv_usec * 1000);
-//
-// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
-//
-//     FILETIME ft;
-//     GetSystemTimeAsFileTime(&ft);
-//     UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
-//
-//     // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
-//     // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
-//     Timestamp timestamp;
-//     timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
-//     timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
-//
-// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
-//
-//     long millis = System.currentTimeMillis();
-//
-//     Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
-//         .setNanos((int) ((millis % 1000) * 1000000)).build();
-//
-//
-// Example 5: Compute Timestamp from Java `Instant.now()`.
-//
-//     Instant now = Instant.now();
-//
-//     Timestamp timestamp =
-//         Timestamp.newBuilder().setSeconds(now.getEpochSecond())
-//             .setNanos(now.getNano()).build();
-//
-//
-// Example 6: Compute Timestamp from current time in Python.
-//
-//     timestamp = Timestamp()
-//     timestamp.GetCurrentTime()
-//
-// # JSON Mapping
-//
-// In JSON format, the Timestamp type is encoded as a string in the
-// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the
-// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
-// where {year} is always expressed using four digits while {month}, {day},
-// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
-// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
-// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
-// is required. A proto3 JSON serializer should always use UTC (as indicated by
-// "Z") when printing the Timestamp type and a proto3 JSON parser should be
-// able to accept both UTC and other timezones (as indicated by an offset).
-//
-// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
-// 01:30 UTC on January 15, 2017.
-//
-// In JavaScript, one can convert a Date object to this format using the
-// standard
-// [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)
-// method. In Python, a standard `datetime.datetime` object can be converted
-// to this format using
-// [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with
-// the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use
-// the Joda Time's [`ISODateTimeFormat.dateTime()`](
-// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D
-// ) to obtain a formatter capable of generating timestamps in this format.
-//
-//
-type Timestamp struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Represents seconds of UTC time since Unix epoch
-	// 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
-	// 9999-12-31T23:59:59Z inclusive.
-	Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"`
-	// Non-negative fractions of a second at nanosecond resolution. Negative
-	// second values with fractions must still have non-negative nanos values
-	// that count forward in time. Must be from 0 to 999,999,999
-	// inclusive.
-	Nanos int32 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"`
-}
-
-// Now constructs a new Timestamp from the current time.
-func Now() *Timestamp {
-	return New(time.Now())
-}
-
-// New constructs a new Timestamp from the provided time.Time.
-func New(t time.Time) *Timestamp {
-	return &Timestamp{Seconds: int64(t.Unix()), Nanos: int32(t.Nanosecond())}
-}
-
-// AsTime converts x to a time.Time.
-func (x *Timestamp) AsTime() time.Time {
-	return time.Unix(int64(x.GetSeconds()), int64(x.GetNanos())).UTC()
-}
-
-// IsValid reports whether the timestamp is valid.
-// It is equivalent to CheckValid == nil.
-func (x *Timestamp) IsValid() bool {
-	return x.check() == 0
-}
-
-// CheckValid returns an error if the timestamp is invalid.
-// In particular, it checks whether the value represents a date that is
-// in the range of 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.
-// An error is reported for a nil Timestamp.
-func (x *Timestamp) CheckValid() error {
-	switch x.check() {
-	case invalidNil:
-		return protoimpl.X.NewError("invalid nil Timestamp")
-	case invalidUnderflow:
-		return protoimpl.X.NewError("timestamp (%v) before 0001-01-01", x)
-	case invalidOverflow:
-		return protoimpl.X.NewError("timestamp (%v) after 9999-12-31", x)
-	case invalidNanos:
-		return protoimpl.X.NewError("timestamp (%v) has out-of-range nanos", x)
-	default:
-		return nil
-	}
-}
-
-const (
-	_ = iota
-	invalidNil
-	invalidUnderflow
-	invalidOverflow
-	invalidNanos
-)
-
-func (x *Timestamp) check() uint {
-	const minTimestamp = -62135596800  // Seconds between 1970-01-01T00:00:00Z and 0001-01-01T00:00:00Z, inclusive
-	const maxTimestamp = +253402300799 // Seconds between 1970-01-01T00:00:00Z and 9999-12-31T23:59:59Z, inclusive
-	secs := x.GetSeconds()
-	nanos := x.GetNanos()
-	switch {
-	case x == nil:
-		return invalidNil
-	case secs < minTimestamp:
-		return invalidUnderflow
-	case secs > maxTimestamp:
-		return invalidOverflow
-	case nanos < 0 || nanos >= 1e9:
-		return invalidNanos
-	default:
-		return 0
-	}
-}
-
-func (x *Timestamp) Reset() {
-	*x = Timestamp{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_timestamp_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Timestamp) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Timestamp) ProtoMessage() {}
-
-func (x *Timestamp) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_timestamp_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Timestamp.ProtoReflect.Descriptor instead.
-func (*Timestamp) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_timestamp_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Timestamp) GetSeconds() int64 {
-	if x != nil {
-		return x.Seconds
-	}
-	return 0
-}
-
-func (x *Timestamp) GetNanos() int32 {
-	if x != nil {
-		return x.Nanos
-	}
-	return 0
-}
-
-var File_google_protobuf_timestamp_proto protoreflect.FileDescriptor
-
-var file_google_protobuf_timestamp_proto_rawDesc = []byte{
-	0x0a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x12, 0x0f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x22, 0x3b, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12,
-	0x18, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6e,
-	0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x42,
-	0x85, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x42, 0x0e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61,
-	0x6d, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x32, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x6b, 0x6e, 0x6f, 0x77,
-	0x6e, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x70, 0x62, 0xf8, 0x01, 0x01,
-	0xa2, 0x02, 0x03, 0x47, 0x50, 0x42, 0xaa, 0x02, 0x1e, 0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
-	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x57, 0x65, 0x6c, 0x6c, 0x4b, 0x6e, 0x6f,
-	0x77, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_google_protobuf_timestamp_proto_rawDescOnce sync.Once
-	file_google_protobuf_timestamp_proto_rawDescData = file_google_protobuf_timestamp_proto_rawDesc
-)
-
-func file_google_protobuf_timestamp_proto_rawDescGZIP() []byte {
-	file_google_protobuf_timestamp_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_timestamp_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_protobuf_timestamp_proto_rawDescData)
-	})
-	return file_google_protobuf_timestamp_proto_rawDescData
-}
-
-var file_google_protobuf_timestamp_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
-var file_google_protobuf_timestamp_proto_goTypes = []interface{}{
-	(*Timestamp)(nil), // 0: google.protobuf.Timestamp
-}
-var file_google_protobuf_timestamp_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_google_protobuf_timestamp_proto_init() }
-func file_google_protobuf_timestamp_proto_init() {
-	if File_google_protobuf_timestamp_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_google_protobuf_timestamp_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Timestamp); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_google_protobuf_timestamp_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   1,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_google_protobuf_timestamp_proto_goTypes,
-		DependencyIndexes: file_google_protobuf_timestamp_proto_depIdxs,
-		MessageInfos:      file_google_protobuf_timestamp_proto_msgTypes,
-	}.Build()
-	File_google_protobuf_timestamp_proto = out.File
-	file_google_protobuf_timestamp_proto_rawDesc = nil
-	file_google_protobuf_timestamp_proto_goTypes = nil
-	file_google_protobuf_timestamp_proto_depIdxs = nil
-}
diff --git a/types/known/timestamppb/timestamp_test.go b/types/known/timestamppb/timestamp_test.go
deleted file mode 100644
index dfd666d..0000000
--- a/types/known/timestamppb/timestamp_test.go
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package timestamppb_test
-
-import (
-	"math"
-	"strings"
-	"testing"
-	"time"
-
-	"github.com/google/go-cmp/cmp"
-	"github.com/google/go-cmp/cmp/cmpopts"
-	"google.golang.org/protobuf/internal/detrand"
-	"google.golang.org/protobuf/testing/protocmp"
-
-	tspb "google.golang.org/protobuf/types/known/timestamppb"
-)
-
-func init() {
-	detrand.Disable()
-}
-
-const (
-	minTimestamp = -62135596800  // Seconds between 1970-01-01T00:00:00Z and 0001-01-01T00:00:00Z, inclusive
-	maxTimestamp = +253402300799 // Seconds between 1970-01-01T00:00:00Z and 9999-12-31T23:59:59Z, inclusive
-)
-
-func TestToTimestamp(t *testing.T) {
-	tests := []struct {
-		in   time.Time
-		want *tspb.Timestamp
-	}{
-		{in: time.Time{}, want: &tspb.Timestamp{Seconds: -62135596800, Nanos: 0}},
-		{in: time.Unix(0, 0), want: &tspb.Timestamp{Seconds: 0, Nanos: 0}},
-		{in: time.Unix(math.MinInt64, 0), want: &tspb.Timestamp{Seconds: math.MinInt64, Nanos: 0}},
-		{in: time.Unix(math.MaxInt64, 1e9-1), want: &tspb.Timestamp{Seconds: math.MaxInt64, Nanos: 1e9 - 1}},
-		{in: time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC), want: &tspb.Timestamp{Seconds: minTimestamp, Nanos: 0}},
-		{in: time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC).Add(-time.Nanosecond), want: &tspb.Timestamp{Seconds: minTimestamp - 1, Nanos: 1e9 - 1}},
-		{in: time.Date(9999, 12, 31, 23, 59, 59, 1e9-1, time.UTC), want: &tspb.Timestamp{Seconds: maxTimestamp, Nanos: 1e9 - 1}},
-		{in: time.Date(9999, 12, 31, 23, 59, 59, 1e9-1, time.UTC).Add(+time.Nanosecond), want: &tspb.Timestamp{Seconds: maxTimestamp + 1}},
-		{in: time.Date(1961, 1, 26, 0, 0, 0, 0, time.UTC), want: &tspb.Timestamp{Seconds: -281836800, Nanos: 0}},
-		{in: time.Date(2011, 1, 26, 0, 0, 0, 0, time.UTC), want: &tspb.Timestamp{Seconds: 1296000000, Nanos: 0}},
-		{in: time.Date(2011, 1, 26, 3, 25, 45, 940483, time.UTC), want: &tspb.Timestamp{Seconds: 1296012345, Nanos: 940483}},
-	}
-
-	for _, tt := range tests {
-		got := tspb.New(tt.in)
-		if diff := cmp.Diff(tt.want, got, protocmp.Transform()); diff != "" {
-			t.Errorf("New(%v) mismatch (-want +got):\n%s", tt.in, diff)
-		}
-	}
-}
-
-func TestFromTimestamp(t *testing.T) {
-	tests := []struct {
-		in       *tspb.Timestamp
-		wantTime time.Time
-		wantErr  error
-	}{
-		{in: nil, wantTime: time.Unix(0, 0), wantErr: textError("invalid nil Timestamp")},
-		{in: new(tspb.Timestamp), wantTime: time.Unix(0, 0)},
-		{in: &tspb.Timestamp{Seconds: -62135596800, Nanos: 0}, wantTime: time.Time{}},
-		{in: &tspb.Timestamp{Seconds: -1, Nanos: -1}, wantTime: time.Unix(-1, -1), wantErr: textError("timestamp (seconds:-1 nanos:-1) has out-of-range nanos")},
-		{in: &tspb.Timestamp{Seconds: -1, Nanos: 0}, wantTime: time.Unix(-1, 0)},
-		{in: &tspb.Timestamp{Seconds: -1, Nanos: +1}, wantTime: time.Unix(-1, +1)},
-		{in: &tspb.Timestamp{Seconds: 0, Nanos: -1}, wantTime: time.Unix(0, -1), wantErr: textError("timestamp (nanos:-1) has out-of-range nanos")},
-		{in: &tspb.Timestamp{Seconds: 0, Nanos: 0}, wantTime: time.Unix(0, 0)},
-		{in: &tspb.Timestamp{Seconds: 0, Nanos: +1}, wantTime: time.Unix(0, +1)},
-		{in: &tspb.Timestamp{Seconds: +1, Nanos: -1}, wantTime: time.Unix(+1, -1), wantErr: textError("timestamp (seconds:1 nanos:-1) has out-of-range nanos")},
-		{in: &tspb.Timestamp{Seconds: +1, Nanos: 0}, wantTime: time.Unix(+1, 0)},
-		{in: &tspb.Timestamp{Seconds: +1, Nanos: +1}, wantTime: time.Unix(+1, +1)},
-		{in: &tspb.Timestamp{Seconds: -9876543210, Nanos: -1098765432}, wantTime: time.Unix(-9876543210, -1098765432), wantErr: textError("timestamp (seconds:-9876543210 nanos:-1098765432) has out-of-range nanos")},
-		{in: &tspb.Timestamp{Seconds: +9876543210, Nanos: -1098765432}, wantTime: time.Unix(+9876543210, -1098765432), wantErr: textError("timestamp (seconds:9876543210 nanos:-1098765432) has out-of-range nanos")},
-		{in: &tspb.Timestamp{Seconds: -9876543210, Nanos: +1098765432}, wantTime: time.Unix(-9876543210, +1098765432), wantErr: textError("timestamp (seconds:-9876543210 nanos:1098765432) has out-of-range nanos")},
-		{in: &tspb.Timestamp{Seconds: +9876543210, Nanos: +1098765432}, wantTime: time.Unix(+9876543210, +1098765432), wantErr: textError("timestamp (seconds:9876543210 nanos:1098765432) has out-of-range nanos")},
-		{in: &tspb.Timestamp{Seconds: math.MinInt64, Nanos: 0}, wantTime: time.Unix(math.MinInt64, 0), wantErr: textError("timestamp (seconds:-9223372036854775808) before 0001-01-01")},
-		{in: &tspb.Timestamp{Seconds: math.MaxInt64, Nanos: 1e9 - 1}, wantTime: time.Unix(math.MaxInt64, 1e9-1), wantErr: textError("timestamp (seconds:9223372036854775807 nanos:999999999) after 9999-12-31")},
-		{in: &tspb.Timestamp{Seconds: minTimestamp, Nanos: 0}, wantTime: time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC)},
-		{in: &tspb.Timestamp{Seconds: minTimestamp - 1, Nanos: 1e9 - 1}, wantTime: time.Date(1, 1, 1, 0, 0, 0, 0, time.UTC).Add(-time.Nanosecond), wantErr: textError("timestamp (seconds:-62135596801 nanos:999999999) before 0001-01-01")},
-		{in: &tspb.Timestamp{Seconds: maxTimestamp, Nanos: 1e9 - 1}, wantTime: time.Date(9999, 12, 31, 23, 59, 59, 1e9-1, time.UTC)},
-		{in: &tspb.Timestamp{Seconds: maxTimestamp + 1}, wantTime: time.Date(9999, 12, 31, 23, 59, 59, 1e9-1, time.UTC).Add(+time.Nanosecond), wantErr: textError("timestamp (seconds:253402300800) after 9999-12-31")},
-		{in: &tspb.Timestamp{Seconds: -281836800, Nanos: 0}, wantTime: time.Date(1961, 1, 26, 0, 0, 0, 0, time.UTC)},
-		{in: &tspb.Timestamp{Seconds: 1296000000, Nanos: 0}, wantTime: time.Date(2011, 1, 26, 0, 0, 0, 0, time.UTC)},
-		{in: &tspb.Timestamp{Seconds: 1296012345, Nanos: 940483}, wantTime: time.Date(2011, 1, 26, 3, 25, 45, 940483, time.UTC)},
-	}
-
-	for _, tt := range tests {
-		gotTime := tt.in.AsTime()
-		if diff := cmp.Diff(tt.wantTime, gotTime); diff != "" {
-			t.Errorf("AsTime(%v) mismatch (-want +got):\n%s", tt.in, diff)
-		}
-		gotErr := tt.in.CheckValid()
-		if diff := cmp.Diff(tt.wantErr, gotErr, cmpopts.EquateErrors()); diff != "" {
-			t.Errorf("CheckValid(%v) mismatch (-want +got):\n%s", tt.in, diff)
-		}
-	}
-}
-
-type textError string
-
-func (e textError) Error() string     { return string(e) }
-func (e textError) Is(err error) bool { return err != nil && strings.Contains(err.Error(), e.Error()) }
diff --git a/types/known/typepb/type.pb.go b/types/known/typepb/type.pb.go
deleted file mode 100644
index a42c8fc..0000000
--- a/types/known/typepb/type.pb.go
+++ /dev/null
@@ -1,964 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google/protobuf/type.proto
-
-package typepb
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	anypb "google.golang.org/protobuf/types/known/anypb"
-	sourcecontextpb "google.golang.org/protobuf/types/known/sourcecontextpb"
-	reflect "reflect"
-	sync "sync"
-)
-
-// The syntax in which a protocol buffer element is defined.
-type Syntax int32
-
-const (
-	// Syntax `proto2`.
-	Syntax_SYNTAX_PROTO2 Syntax = 0
-	// Syntax `proto3`.
-	Syntax_SYNTAX_PROTO3 Syntax = 1
-)
-
-// Enum value maps for Syntax.
-var (
-	Syntax_name = map[int32]string{
-		0: "SYNTAX_PROTO2",
-		1: "SYNTAX_PROTO3",
-	}
-	Syntax_value = map[string]int32{
-		"SYNTAX_PROTO2": 0,
-		"SYNTAX_PROTO3": 1,
-	}
-)
-
-func (x Syntax) Enum() *Syntax {
-	p := new(Syntax)
-	*p = x
-	return p
-}
-
-func (x Syntax) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Syntax) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_type_proto_enumTypes[0].Descriptor()
-}
-
-func (Syntax) Type() protoreflect.EnumType {
-	return &file_google_protobuf_type_proto_enumTypes[0]
-}
-
-func (x Syntax) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Syntax.Descriptor instead.
-func (Syntax) EnumDescriptor() ([]byte, []int) {
-	return file_google_protobuf_type_proto_rawDescGZIP(), []int{0}
-}
-
-// Basic field types.
-type Field_Kind int32
-
-const (
-	// Field type unknown.
-	Field_TYPE_UNKNOWN Field_Kind = 0
-	// Field type double.
-	Field_TYPE_DOUBLE Field_Kind = 1
-	// Field type float.
-	Field_TYPE_FLOAT Field_Kind = 2
-	// Field type int64.
-	Field_TYPE_INT64 Field_Kind = 3
-	// Field type uint64.
-	Field_TYPE_UINT64 Field_Kind = 4
-	// Field type int32.
-	Field_TYPE_INT32 Field_Kind = 5
-	// Field type fixed64.
-	Field_TYPE_FIXED64 Field_Kind = 6
-	// Field type fixed32.
-	Field_TYPE_FIXED32 Field_Kind = 7
-	// Field type bool.
-	Field_TYPE_BOOL Field_Kind = 8
-	// Field type string.
-	Field_TYPE_STRING Field_Kind = 9
-	// Field type group. Proto2 syntax only, and deprecated.
-	Field_TYPE_GROUP Field_Kind = 10
-	// Field type message.
-	Field_TYPE_MESSAGE Field_Kind = 11
-	// Field type bytes.
-	Field_TYPE_BYTES Field_Kind = 12
-	// Field type uint32.
-	Field_TYPE_UINT32 Field_Kind = 13
-	// Field type enum.
-	Field_TYPE_ENUM Field_Kind = 14
-	// Field type sfixed32.
-	Field_TYPE_SFIXED32 Field_Kind = 15
-	// Field type sfixed64.
-	Field_TYPE_SFIXED64 Field_Kind = 16
-	// Field type sint32.
-	Field_TYPE_SINT32 Field_Kind = 17
-	// Field type sint64.
-	Field_TYPE_SINT64 Field_Kind = 18
-)
-
-// Enum value maps for Field_Kind.
-var (
-	Field_Kind_name = map[int32]string{
-		0:  "TYPE_UNKNOWN",
-		1:  "TYPE_DOUBLE",
-		2:  "TYPE_FLOAT",
-		3:  "TYPE_INT64",
-		4:  "TYPE_UINT64",
-		5:  "TYPE_INT32",
-		6:  "TYPE_FIXED64",
-		7:  "TYPE_FIXED32",
-		8:  "TYPE_BOOL",
-		9:  "TYPE_STRING",
-		10: "TYPE_GROUP",
-		11: "TYPE_MESSAGE",
-		12: "TYPE_BYTES",
-		13: "TYPE_UINT32",
-		14: "TYPE_ENUM",
-		15: "TYPE_SFIXED32",
-		16: "TYPE_SFIXED64",
-		17: "TYPE_SINT32",
-		18: "TYPE_SINT64",
-	}
-	Field_Kind_value = map[string]int32{
-		"TYPE_UNKNOWN":  0,
-		"TYPE_DOUBLE":   1,
-		"TYPE_FLOAT":    2,
-		"TYPE_INT64":    3,
-		"TYPE_UINT64":   4,
-		"TYPE_INT32":    5,
-		"TYPE_FIXED64":  6,
-		"TYPE_FIXED32":  7,
-		"TYPE_BOOL":     8,
-		"TYPE_STRING":   9,
-		"TYPE_GROUP":    10,
-		"TYPE_MESSAGE":  11,
-		"TYPE_BYTES":    12,
-		"TYPE_UINT32":   13,
-		"TYPE_ENUM":     14,
-		"TYPE_SFIXED32": 15,
-		"TYPE_SFIXED64": 16,
-		"TYPE_SINT32":   17,
-		"TYPE_SINT64":   18,
-	}
-)
-
-func (x Field_Kind) Enum() *Field_Kind {
-	p := new(Field_Kind)
-	*p = x
-	return p
-}
-
-func (x Field_Kind) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Field_Kind) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_type_proto_enumTypes[1].Descriptor()
-}
-
-func (Field_Kind) Type() protoreflect.EnumType {
-	return &file_google_protobuf_type_proto_enumTypes[1]
-}
-
-func (x Field_Kind) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Field_Kind.Descriptor instead.
-func (Field_Kind) EnumDescriptor() ([]byte, []int) {
-	return file_google_protobuf_type_proto_rawDescGZIP(), []int{1, 0}
-}
-
-// Whether a field is optional, required, or repeated.
-type Field_Cardinality int32
-
-const (
-	// For fields with unknown cardinality.
-	Field_CARDINALITY_UNKNOWN Field_Cardinality = 0
-	// For optional fields.
-	Field_CARDINALITY_OPTIONAL Field_Cardinality = 1
-	// For required fields. Proto2 syntax only.
-	Field_CARDINALITY_REQUIRED Field_Cardinality = 2
-	// For repeated fields.
-	Field_CARDINALITY_REPEATED Field_Cardinality = 3
-)
-
-// Enum value maps for Field_Cardinality.
-var (
-	Field_Cardinality_name = map[int32]string{
-		0: "CARDINALITY_UNKNOWN",
-		1: "CARDINALITY_OPTIONAL",
-		2: "CARDINALITY_REQUIRED",
-		3: "CARDINALITY_REPEATED",
-	}
-	Field_Cardinality_value = map[string]int32{
-		"CARDINALITY_UNKNOWN":  0,
-		"CARDINALITY_OPTIONAL": 1,
-		"CARDINALITY_REQUIRED": 2,
-		"CARDINALITY_REPEATED": 3,
-	}
-)
-
-func (x Field_Cardinality) Enum() *Field_Cardinality {
-	p := new(Field_Cardinality)
-	*p = x
-	return p
-}
-
-func (x Field_Cardinality) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Field_Cardinality) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_type_proto_enumTypes[2].Descriptor()
-}
-
-func (Field_Cardinality) Type() protoreflect.EnumType {
-	return &file_google_protobuf_type_proto_enumTypes[2]
-}
-
-func (x Field_Cardinality) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use Field_Cardinality.Descriptor instead.
-func (Field_Cardinality) EnumDescriptor() ([]byte, []int) {
-	return file_google_protobuf_type_proto_rawDescGZIP(), []int{1, 1}
-}
-
-// A protocol buffer message type.
-type Type struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// The fully qualified message name.
-	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	// The list of fields.
-	Fields []*Field `protobuf:"bytes,2,rep,name=fields,proto3" json:"fields,omitempty"`
-	// The list of types appearing in `oneof` definitions in this type.
-	Oneofs []string `protobuf:"bytes,3,rep,name=oneofs,proto3" json:"oneofs,omitempty"`
-	// The protocol buffer options.
-	Options []*Option `protobuf:"bytes,4,rep,name=options,proto3" json:"options,omitempty"`
-	// The source context.
-	SourceContext *sourcecontextpb.SourceContext `protobuf:"bytes,5,opt,name=source_context,json=sourceContext,proto3" json:"source_context,omitempty"`
-	// The source syntax.
-	Syntax Syntax `protobuf:"varint,6,opt,name=syntax,proto3,enum=google.protobuf.Syntax" json:"syntax,omitempty"`
-}
-
-func (x *Type) Reset() {
-	*x = Type{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_type_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Type) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Type) ProtoMessage() {}
-
-func (x *Type) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_type_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Type.ProtoReflect.Descriptor instead.
-func (*Type) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_type_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Type) GetName() string {
-	if x != nil {
-		return x.Name
-	}
-	return ""
-}
-
-func (x *Type) GetFields() []*Field {
-	if x != nil {
-		return x.Fields
-	}
-	return nil
-}
-
-func (x *Type) GetOneofs() []string {
-	if x != nil {
-		return x.Oneofs
-	}
-	return nil
-}
-
-func (x *Type) GetOptions() []*Option {
-	if x != nil {
-		return x.Options
-	}
-	return nil
-}
-
-func (x *Type) GetSourceContext() *sourcecontextpb.SourceContext {
-	if x != nil {
-		return x.SourceContext
-	}
-	return nil
-}
-
-func (x *Type) GetSyntax() Syntax {
-	if x != nil {
-		return x.Syntax
-	}
-	return Syntax_SYNTAX_PROTO2
-}
-
-// A single field of a message type.
-type Field struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// The field type.
-	Kind Field_Kind `protobuf:"varint,1,opt,name=kind,proto3,enum=google.protobuf.Field_Kind" json:"kind,omitempty"`
-	// The field cardinality.
-	Cardinality Field_Cardinality `protobuf:"varint,2,opt,name=cardinality,proto3,enum=google.protobuf.Field_Cardinality" json:"cardinality,omitempty"`
-	// The field number.
-	Number int32 `protobuf:"varint,3,opt,name=number,proto3" json:"number,omitempty"`
-	// The field name.
-	Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
-	// The field type URL, without the scheme, for message or enumeration
-	// types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`.
-	TypeUrl string `protobuf:"bytes,6,opt,name=type_url,json=typeUrl,proto3" json:"type_url,omitempty"`
-	// The index of the field type in `Type.oneofs`, for message or enumeration
-	// types. The first type has index 1; zero means the type is not in the list.
-	OneofIndex int32 `protobuf:"varint,7,opt,name=oneof_index,json=oneofIndex,proto3" json:"oneof_index,omitempty"`
-	// Whether to use alternative packed wire representation.
-	Packed bool `protobuf:"varint,8,opt,name=packed,proto3" json:"packed,omitempty"`
-	// The protocol buffer options.
-	Options []*Option `protobuf:"bytes,9,rep,name=options,proto3" json:"options,omitempty"`
-	// The field JSON name.
-	JsonName string `protobuf:"bytes,10,opt,name=json_name,json=jsonName,proto3" json:"json_name,omitempty"`
-	// The string value of the default value of this field. Proto2 syntax only.
-	DefaultValue string `protobuf:"bytes,11,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"`
-}
-
-func (x *Field) Reset() {
-	*x = Field{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_type_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Field) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Field) ProtoMessage() {}
-
-func (x *Field) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_type_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Field.ProtoReflect.Descriptor instead.
-func (*Field) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_type_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *Field) GetKind() Field_Kind {
-	if x != nil {
-		return x.Kind
-	}
-	return Field_TYPE_UNKNOWN
-}
-
-func (x *Field) GetCardinality() Field_Cardinality {
-	if x != nil {
-		return x.Cardinality
-	}
-	return Field_CARDINALITY_UNKNOWN
-}
-
-func (x *Field) GetNumber() int32 {
-	if x != nil {
-		return x.Number
-	}
-	return 0
-}
-
-func (x *Field) GetName() string {
-	if x != nil {
-		return x.Name
-	}
-	return ""
-}
-
-func (x *Field) GetTypeUrl() string {
-	if x != nil {
-		return x.TypeUrl
-	}
-	return ""
-}
-
-func (x *Field) GetOneofIndex() int32 {
-	if x != nil {
-		return x.OneofIndex
-	}
-	return 0
-}
-
-func (x *Field) GetPacked() bool {
-	if x != nil {
-		return x.Packed
-	}
-	return false
-}
-
-func (x *Field) GetOptions() []*Option {
-	if x != nil {
-		return x.Options
-	}
-	return nil
-}
-
-func (x *Field) GetJsonName() string {
-	if x != nil {
-		return x.JsonName
-	}
-	return ""
-}
-
-func (x *Field) GetDefaultValue() string {
-	if x != nil {
-		return x.DefaultValue
-	}
-	return ""
-}
-
-// Enum type definition.
-type Enum struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Enum type name.
-	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	// Enum value definitions.
-	Enumvalue []*EnumValue `protobuf:"bytes,2,rep,name=enumvalue,proto3" json:"enumvalue,omitempty"`
-	// Protocol buffer options.
-	Options []*Option `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"`
-	// The source context.
-	SourceContext *sourcecontextpb.SourceContext `protobuf:"bytes,4,opt,name=source_context,json=sourceContext,proto3" json:"source_context,omitempty"`
-	// The source syntax.
-	Syntax Syntax `protobuf:"varint,5,opt,name=syntax,proto3,enum=google.protobuf.Syntax" json:"syntax,omitempty"`
-}
-
-func (x *Enum) Reset() {
-	*x = Enum{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_type_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Enum) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Enum) ProtoMessage() {}
-
-func (x *Enum) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_type_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Enum.ProtoReflect.Descriptor instead.
-func (*Enum) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_type_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Enum) GetName() string {
-	if x != nil {
-		return x.Name
-	}
-	return ""
-}
-
-func (x *Enum) GetEnumvalue() []*EnumValue {
-	if x != nil {
-		return x.Enumvalue
-	}
-	return nil
-}
-
-func (x *Enum) GetOptions() []*Option {
-	if x != nil {
-		return x.Options
-	}
-	return nil
-}
-
-func (x *Enum) GetSourceContext() *sourcecontextpb.SourceContext {
-	if x != nil {
-		return x.SourceContext
-	}
-	return nil
-}
-
-func (x *Enum) GetSyntax() Syntax {
-	if x != nil {
-		return x.Syntax
-	}
-	return Syntax_SYNTAX_PROTO2
-}
-
-// Enum value definition.
-type EnumValue struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Enum value name.
-	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	// Enum value number.
-	Number int32 `protobuf:"varint,2,opt,name=number,proto3" json:"number,omitempty"`
-	// Protocol buffer options.
-	Options []*Option `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"`
-}
-
-func (x *EnumValue) Reset() {
-	*x = EnumValue{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_type_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *EnumValue) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*EnumValue) ProtoMessage() {}
-
-func (x *EnumValue) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_type_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use EnumValue.ProtoReflect.Descriptor instead.
-func (*EnumValue) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_type_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *EnumValue) GetName() string {
-	if x != nil {
-		return x.Name
-	}
-	return ""
-}
-
-func (x *EnumValue) GetNumber() int32 {
-	if x != nil {
-		return x.Number
-	}
-	return 0
-}
-
-func (x *EnumValue) GetOptions() []*Option {
-	if x != nil {
-		return x.Options
-	}
-	return nil
-}
-
-// A protocol buffer option, which can be attached to a message, field,
-// enumeration, etc.
-type Option struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// The option's name. For protobuf built-in options (options defined in
-	// descriptor.proto), this is the short name. For example, `"map_entry"`.
-	// For custom options, it should be the fully-qualified name. For example,
-	// `"google.api.http"`.
-	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
-	// The option's value packed in an Any message. If the value is a primitive,
-	// the corresponding wrapper type defined in google/protobuf/wrappers.proto
-	// should be used. If the value is an enum, it should be stored as an int32
-	// value using the google.protobuf.Int32Value type.
-	Value *anypb.Any `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-func (x *Option) Reset() {
-	*x = Option{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_type_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Option) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Option) ProtoMessage() {}
-
-func (x *Option) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_type_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Option.ProtoReflect.Descriptor instead.
-func (*Option) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_type_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Option) GetName() string {
-	if x != nil {
-		return x.Name
-	}
-	return ""
-}
-
-func (x *Option) GetValue() *anypb.Any {
-	if x != nil {
-		return x.Value
-	}
-	return nil
-}
-
-var File_google_protobuf_type_proto protoreflect.FileDescriptor
-
-var file_google_protobuf_type_proto_rawDesc = []byte{
-	0x0a, 0x1a, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x19, 0x67,
-	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x61,
-	0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
-	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8d,
-	0x02, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x06, 0x66,
-	0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f,
-	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69,
-	0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6f,
-	0x6e, 0x65, 0x6f, 0x66, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x6f, 0x6e, 0x65,
-	0x6f, 0x66, 0x73, 0x12, 0x31, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f,
-	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x45, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
-	0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0d,
-	0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x2f, 0x0a,
-	0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x52, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x22, 0xb4,
-	0x06, 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x2f, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x2e, 0x4b,
-	0x69, 0x6e, 0x64, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x44, 0x0a, 0x0b, 0x63, 0x61, 0x72,
-	0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x2e, 0x43, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69,
-	0x74, 0x79, 0x52, 0x0b, 0x63, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12,
-	0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x74,
-	0x79, 0x70, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74,
-	0x79, 0x70, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x6e, 0x65, 0x6f, 0x66, 0x5f,
-	0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6f, 0x6e, 0x65,
-	0x6f, 0x66, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x63, 0x6b, 0x65,
-	0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x12,
-	0x31, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
-	0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a, 0x73, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12,
-	0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
-	0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x56,
-	0x61, 0x6c, 0x75, 0x65, 0x22, 0xc8, 0x02, 0x0a, 0x04, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x0a,
-	0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12,
-	0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x4f, 0x55, 0x42, 0x4c, 0x45, 0x10, 0x01,
-	0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x10, 0x02,
-	0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x03,
-	0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10,
-	0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10,
-	0x05, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x58, 0x45, 0x44, 0x36,
-	0x34, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x49, 0x58, 0x45,
-	0x44, 0x33, 0x32, 0x10, 0x07, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f,
-	0x4f, 0x4c, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x52,
-	0x49, 0x4e, 0x47, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x52,
-	0x4f, 0x55, 0x50, 0x10, 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45,
-	0x53, 0x53, 0x41, 0x47, 0x45, 0x10, 0x0b, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f,
-	0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x0c, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f,
-	0x55, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x0d, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x59, 0x50, 0x45,
-	0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x10, 0x0e, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x59, 0x50, 0x45, 0x5f,
-	0x53, 0x46, 0x49, 0x58, 0x45, 0x44, 0x33, 0x32, 0x10, 0x0f, 0x12, 0x11, 0x0a, 0x0d, 0x54, 0x59,
-	0x50, 0x45, 0x5f, 0x53, 0x46, 0x49, 0x58, 0x45, 0x44, 0x36, 0x34, 0x10, 0x10, 0x12, 0x0f, 0x0a,
-	0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x11, 0x12, 0x0f,
-	0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x12, 0x22,
-	0x74, 0x0a, 0x0b, 0x43, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x17,
-	0x0a, 0x13, 0x43, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e,
-	0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x41, 0x52, 0x44, 0x49,
-	0x4e, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10,
-	0x01, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x41, 0x52, 0x44, 0x49, 0x4e, 0x41, 0x4c, 0x49, 0x54, 0x59,
-	0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x43,
-	0x41, 0x52, 0x44, 0x49, 0x4e, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x50, 0x45, 0x41,
-	0x54, 0x45, 0x44, 0x10, 0x03, 0x22, 0xff, 0x01, 0x0a, 0x04, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x12,
-	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
-	0x6d, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
-	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
-	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x56, 0x61, 0x6c, 0x75,
-	0x65, 0x52, 0x09, 0x65, 0x6e, 0x75, 0x6d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x31, 0x0a, 0x07,
-	0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
-	0x45, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78,
-	0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65,
-	0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43,
-	0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78,
-	0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x52,
-	0x06, 0x73, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x22, 0x6a, 0x0a, 0x09, 0x45, 0x6e, 0x75, 0x6d, 0x56,
-	0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62,
-	0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72,
-	0x12, 0x31, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x62, 0x75, 0x66, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x73, 0x22, 0x48, 0x0a, 0x06, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a,
-	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d,
-	0x65, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2a, 0x2e, 0x0a,
-	0x06, 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x59, 0x4e, 0x54, 0x41,
-	0x58, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x32, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x59,
-	0x4e, 0x54, 0x41, 0x58, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x33, 0x10, 0x01, 0x42, 0x7b, 0x0a,
-	0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x62, 0x75, 0x66, 0x42, 0x09, 0x54, 0x79, 0x70, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
-	0x01, 0x5a, 0x2d, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
-	0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x79,
-	0x70, 0x65, 0x73, 0x2f, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x70, 0x62,
-	0xf8, 0x01, 0x01, 0xa2, 0x02, 0x03, 0x47, 0x50, 0x42, 0xaa, 0x02, 0x1e, 0x47, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x57, 0x65, 0x6c, 0x6c,
-	0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x33,
-}
-
-var (
-	file_google_protobuf_type_proto_rawDescOnce sync.Once
-	file_google_protobuf_type_proto_rawDescData = file_google_protobuf_type_proto_rawDesc
-)
-
-func file_google_protobuf_type_proto_rawDescGZIP() []byte {
-	file_google_protobuf_type_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_type_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_protobuf_type_proto_rawDescData)
-	})
-	return file_google_protobuf_type_proto_rawDescData
-}
-
-var file_google_protobuf_type_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
-var file_google_protobuf_type_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
-var file_google_protobuf_type_proto_goTypes = []interface{}{
-	(Syntax)(0),                           // 0: google.protobuf.Syntax
-	(Field_Kind)(0),                       // 1: google.protobuf.Field.Kind
-	(Field_Cardinality)(0),                // 2: google.protobuf.Field.Cardinality
-	(*Type)(nil),                          // 3: google.protobuf.Type
-	(*Field)(nil),                         // 4: google.protobuf.Field
-	(*Enum)(nil),                          // 5: google.protobuf.Enum
-	(*EnumValue)(nil),                     // 6: google.protobuf.EnumValue
-	(*Option)(nil),                        // 7: google.protobuf.Option
-	(*sourcecontextpb.SourceContext)(nil), // 8: google.protobuf.SourceContext
-	(*anypb.Any)(nil),                     // 9: google.protobuf.Any
-}
-var file_google_protobuf_type_proto_depIdxs = []int32{
-	4,  // 0: google.protobuf.Type.fields:type_name -> google.protobuf.Field
-	7,  // 1: google.protobuf.Type.options:type_name -> google.protobuf.Option
-	8,  // 2: google.protobuf.Type.source_context:type_name -> google.protobuf.SourceContext
-	0,  // 3: google.protobuf.Type.syntax:type_name -> google.protobuf.Syntax
-	1,  // 4: google.protobuf.Field.kind:type_name -> google.protobuf.Field.Kind
-	2,  // 5: google.protobuf.Field.cardinality:type_name -> google.protobuf.Field.Cardinality
-	7,  // 6: google.protobuf.Field.options:type_name -> google.protobuf.Option
-	6,  // 7: google.protobuf.Enum.enumvalue:type_name -> google.protobuf.EnumValue
-	7,  // 8: google.protobuf.Enum.options:type_name -> google.protobuf.Option
-	8,  // 9: google.protobuf.Enum.source_context:type_name -> google.protobuf.SourceContext
-	0,  // 10: google.protobuf.Enum.syntax:type_name -> google.protobuf.Syntax
-	7,  // 11: google.protobuf.EnumValue.options:type_name -> google.protobuf.Option
-	9,  // 12: google.protobuf.Option.value:type_name -> google.protobuf.Any
-	13, // [13:13] is the sub-list for method output_type
-	13, // [13:13] is the sub-list for method input_type
-	13, // [13:13] is the sub-list for extension type_name
-	13, // [13:13] is the sub-list for extension extendee
-	0,  // [0:13] is the sub-list for field type_name
-}
-
-func init() { file_google_protobuf_type_proto_init() }
-func file_google_protobuf_type_proto_init() {
-	if File_google_protobuf_type_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_google_protobuf_type_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Type); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_type_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Field); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_type_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Enum); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_type_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*EnumValue); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_type_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Option); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_google_protobuf_type_proto_rawDesc,
-			NumEnums:      3,
-			NumMessages:   5,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_google_protobuf_type_proto_goTypes,
-		DependencyIndexes: file_google_protobuf_type_proto_depIdxs,
-		EnumInfos:         file_google_protobuf_type_proto_enumTypes,
-		MessageInfos:      file_google_protobuf_type_proto_msgTypes,
-	}.Build()
-	File_google_protobuf_type_proto = out.File
-	file_google_protobuf_type_proto_rawDesc = nil
-	file_google_protobuf_type_proto_goTypes = nil
-	file_google_protobuf_type_proto_depIdxs = nil
-}
diff --git a/types/known/wrapperspb/wrappers.pb.go b/types/known/wrapperspb/wrappers.pb.go
deleted file mode 100644
index 895a804..0000000
--- a/types/known/wrapperspb/wrappers.pb.go
+++ /dev/null
@@ -1,760 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Wrappers for primitive (non-message) types. These types are useful
-// for embedding primitives in the `google.protobuf.Any` type and for places
-// where we need to distinguish between the absence of a primitive
-// typed field and its default value.
-//
-// These wrappers have no meaningful use within repeated fields as they lack
-// the ability to detect presence on individual elements.
-// These wrappers have no meaningful use within a map or a oneof since
-// individual entries of a map or fields of a oneof can already detect presence.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google/protobuf/wrappers.proto
-
-package wrapperspb
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-// Wrapper message for `double`.
-//
-// The JSON representation for `DoubleValue` is JSON number.
-type DoubleValue struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// The double value.
-	Value float64 `protobuf:"fixed64,1,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-// Double stores v in a new DoubleValue and returns a pointer to it.
-func Double(v float64) *DoubleValue {
-	return &DoubleValue{Value: v}
-}
-
-func (x *DoubleValue) Reset() {
-	*x = DoubleValue{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_wrappers_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *DoubleValue) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DoubleValue) ProtoMessage() {}
-
-func (x *DoubleValue) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_wrappers_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use DoubleValue.ProtoReflect.Descriptor instead.
-func (*DoubleValue) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_wrappers_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *DoubleValue) GetValue() float64 {
-	if x != nil {
-		return x.Value
-	}
-	return 0
-}
-
-// Wrapper message for `float`.
-//
-// The JSON representation for `FloatValue` is JSON number.
-type FloatValue struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// The float value.
-	Value float32 `protobuf:"fixed32,1,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-// Float stores v in a new FloatValue and returns a pointer to it.
-func Float(v float32) *FloatValue {
-	return &FloatValue{Value: v}
-}
-
-func (x *FloatValue) Reset() {
-	*x = FloatValue{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_wrappers_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *FloatValue) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*FloatValue) ProtoMessage() {}
-
-func (x *FloatValue) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_wrappers_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use FloatValue.ProtoReflect.Descriptor instead.
-func (*FloatValue) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_wrappers_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *FloatValue) GetValue() float32 {
-	if x != nil {
-		return x.Value
-	}
-	return 0
-}
-
-// Wrapper message for `int64`.
-//
-// The JSON representation for `Int64Value` is JSON string.
-type Int64Value struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// The int64 value.
-	Value int64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-// Int64 stores v in a new Int64Value and returns a pointer to it.
-func Int64(v int64) *Int64Value {
-	return &Int64Value{Value: v}
-}
-
-func (x *Int64Value) Reset() {
-	*x = Int64Value{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_wrappers_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Int64Value) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Int64Value) ProtoMessage() {}
-
-func (x *Int64Value) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_wrappers_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Int64Value.ProtoReflect.Descriptor instead.
-func (*Int64Value) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_wrappers_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *Int64Value) GetValue() int64 {
-	if x != nil {
-		return x.Value
-	}
-	return 0
-}
-
-// Wrapper message for `uint64`.
-//
-// The JSON representation for `UInt64Value` is JSON string.
-type UInt64Value struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// The uint64 value.
-	Value uint64 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-// UInt64 stores v in a new UInt64Value and returns a pointer to it.
-func UInt64(v uint64) *UInt64Value {
-	return &UInt64Value{Value: v}
-}
-
-func (x *UInt64Value) Reset() {
-	*x = UInt64Value{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_wrappers_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *UInt64Value) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UInt64Value) ProtoMessage() {}
-
-func (x *UInt64Value) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_wrappers_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use UInt64Value.ProtoReflect.Descriptor instead.
-func (*UInt64Value) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_wrappers_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *UInt64Value) GetValue() uint64 {
-	if x != nil {
-		return x.Value
-	}
-	return 0
-}
-
-// Wrapper message for `int32`.
-//
-// The JSON representation for `Int32Value` is JSON number.
-type Int32Value struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// The int32 value.
-	Value int32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-// Int32 stores v in a new Int32Value and returns a pointer to it.
-func Int32(v int32) *Int32Value {
-	return &Int32Value{Value: v}
-}
-
-func (x *Int32Value) Reset() {
-	*x = Int32Value{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_wrappers_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Int32Value) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Int32Value) ProtoMessage() {}
-
-func (x *Int32Value) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_wrappers_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Int32Value.ProtoReflect.Descriptor instead.
-func (*Int32Value) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_wrappers_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *Int32Value) GetValue() int32 {
-	if x != nil {
-		return x.Value
-	}
-	return 0
-}
-
-// Wrapper message for `uint32`.
-//
-// The JSON representation for `UInt32Value` is JSON number.
-type UInt32Value struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// The uint32 value.
-	Value uint32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-// UInt32 stores v in a new UInt32Value and returns a pointer to it.
-func UInt32(v uint32) *UInt32Value {
-	return &UInt32Value{Value: v}
-}
-
-func (x *UInt32Value) Reset() {
-	*x = UInt32Value{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_wrappers_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *UInt32Value) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UInt32Value) ProtoMessage() {}
-
-func (x *UInt32Value) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_wrappers_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use UInt32Value.ProtoReflect.Descriptor instead.
-func (*UInt32Value) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_wrappers_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *UInt32Value) GetValue() uint32 {
-	if x != nil {
-		return x.Value
-	}
-	return 0
-}
-
-// Wrapper message for `bool`.
-//
-// The JSON representation for `BoolValue` is JSON `true` and `false`.
-type BoolValue struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// The bool value.
-	Value bool `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-// Bool stores v in a new BoolValue and returns a pointer to it.
-func Bool(v bool) *BoolValue {
-	return &BoolValue{Value: v}
-}
-
-func (x *BoolValue) Reset() {
-	*x = BoolValue{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_wrappers_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *BoolValue) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*BoolValue) ProtoMessage() {}
-
-func (x *BoolValue) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_wrappers_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use BoolValue.ProtoReflect.Descriptor instead.
-func (*BoolValue) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_wrappers_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *BoolValue) GetValue() bool {
-	if x != nil {
-		return x.Value
-	}
-	return false
-}
-
-// Wrapper message for `string`.
-//
-// The JSON representation for `StringValue` is JSON string.
-type StringValue struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// The string value.
-	Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-// String stores v in a new StringValue and returns a pointer to it.
-func String(v string) *StringValue {
-	return &StringValue{Value: v}
-}
-
-func (x *StringValue) Reset() {
-	*x = StringValue{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_wrappers_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *StringValue) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*StringValue) ProtoMessage() {}
-
-func (x *StringValue) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_wrappers_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use StringValue.ProtoReflect.Descriptor instead.
-func (*StringValue) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_wrappers_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *StringValue) GetValue() string {
-	if x != nil {
-		return x.Value
-	}
-	return ""
-}
-
-// Wrapper message for `bytes`.
-//
-// The JSON representation for `BytesValue` is JSON string.
-type BytesValue struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// The bytes value.
-	Value []byte `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
-}
-
-// Bytes stores v in a new BytesValue and returns a pointer to it.
-func Bytes(v []byte) *BytesValue {
-	return &BytesValue{Value: v}
-}
-
-func (x *BytesValue) Reset() {
-	*x = BytesValue{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_wrappers_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *BytesValue) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*BytesValue) ProtoMessage() {}
-
-func (x *BytesValue) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_wrappers_proto_msgTypes[8]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use BytesValue.ProtoReflect.Descriptor instead.
-func (*BytesValue) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_wrappers_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *BytesValue) GetValue() []byte {
-	if x != nil {
-		return x.Value
-	}
-	return nil
-}
-
-var File_google_protobuf_wrappers_proto protoreflect.FileDescriptor
-
-var file_google_protobuf_wrappers_proto_rawDesc = []byte{
-	0x0a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x12, 0x0f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x22, 0x23, 0x0a, 0x0b, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65,
-	0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x22, 0x0a, 0x0a, 0x46, 0x6c, 0x6f, 0x61, 0x74, 0x56,
-	0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x22, 0x0a, 0x0a, 0x49, 0x6e,
-	0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x23,
-	0x0a, 0x0b, 0x55, 0x49, 0x6e, 0x74, 0x36, 0x34, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x76, 0x61,
-	0x6c, 0x75, 0x65, 0x22, 0x22, 0x0a, 0x0a, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75,
-	0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x23, 0x0a, 0x0b, 0x55, 0x49, 0x6e, 0x74, 0x33,
-	0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x21, 0x0a, 0x09,
-	0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
-	0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22,
-	0x23, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14,
-	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x22, 0x22, 0x0a, 0x0a, 0x42, 0x79, 0x74, 0x65, 0x73, 0x56, 0x61, 0x6c,
-	0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x83, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d,
-	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
-	0x42, 0x0d, 0x57, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50,
-	0x01, 0x5a, 0x31, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
-	0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x79,
-	0x70, 0x65, 0x73, 0x2f, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65,
-	0x72, 0x73, 0x70, 0x62, 0xf8, 0x01, 0x01, 0xa2, 0x02, 0x03, 0x47, 0x50, 0x42, 0xaa, 0x02, 0x1e,
-	0x47, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x57, 0x65, 0x6c, 0x6c, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x62, 0x06,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_google_protobuf_wrappers_proto_rawDescOnce sync.Once
-	file_google_protobuf_wrappers_proto_rawDescData = file_google_protobuf_wrappers_proto_rawDesc
-)
-
-func file_google_protobuf_wrappers_proto_rawDescGZIP() []byte {
-	file_google_protobuf_wrappers_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_wrappers_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_protobuf_wrappers_proto_rawDescData)
-	})
-	return file_google_protobuf_wrappers_proto_rawDescData
-}
-
-var file_google_protobuf_wrappers_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
-var file_google_protobuf_wrappers_proto_goTypes = []interface{}{
-	(*DoubleValue)(nil), // 0: google.protobuf.DoubleValue
-	(*FloatValue)(nil),  // 1: google.protobuf.FloatValue
-	(*Int64Value)(nil),  // 2: google.protobuf.Int64Value
-	(*UInt64Value)(nil), // 3: google.protobuf.UInt64Value
-	(*Int32Value)(nil),  // 4: google.protobuf.Int32Value
-	(*UInt32Value)(nil), // 5: google.protobuf.UInt32Value
-	(*BoolValue)(nil),   // 6: google.protobuf.BoolValue
-	(*StringValue)(nil), // 7: google.protobuf.StringValue
-	(*BytesValue)(nil),  // 8: google.protobuf.BytesValue
-}
-var file_google_protobuf_wrappers_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_google_protobuf_wrappers_proto_init() }
-func file_google_protobuf_wrappers_proto_init() {
-	if File_google_protobuf_wrappers_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_google_protobuf_wrappers_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DoubleValue); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_wrappers_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FloatValue); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_wrappers_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Int64Value); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_wrappers_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UInt64Value); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_wrappers_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Int32Value); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_wrappers_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UInt32Value); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_wrappers_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*BoolValue); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_wrappers_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*StringValue); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_wrappers_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*BytesValue); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_google_protobuf_wrappers_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   9,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_google_protobuf_wrappers_proto_goTypes,
-		DependencyIndexes: file_google_protobuf_wrappers_proto_depIdxs,
-		MessageInfos:      file_google_protobuf_wrappers_proto_msgTypes,
-	}.Build()
-	File_google_protobuf_wrappers_proto = out.File
-	file_google_protobuf_wrappers_proto_rawDesc = nil
-	file_google_protobuf_wrappers_proto_goTypes = nil
-	file_google_protobuf_wrappers_proto_depIdxs = nil
-}
diff --git a/types/pluginpb/plugin.pb.go b/types/pluginpb/plugin.pb.go
deleted file mode 100644
index e511ad6..0000000
--- a/types/pluginpb/plugin.pb.go
+++ /dev/null
@@ -1,653 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-// Author: kenton@google.com (Kenton Varda)
-//
-// WARNING:  The plugin interface is currently EXPERIMENTAL and is subject to
-//   change.
-//
-// protoc (aka the Protocol Compiler) can be extended via plugins.  A plugin is
-// just a program that reads a CodeGeneratorRequest from stdin and writes a
-// CodeGeneratorResponse to stdout.
-//
-// Plugins written using C++ can use google/protobuf/compiler/plugin.h instead
-// of dealing with the raw protocol defined here.
-//
-// A plugin executable needs only to be placed somewhere in the path.  The
-// plugin should be named "protoc-gen-$NAME", and will then be used when the
-// flag "--${NAME}_out" is passed to protoc.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// source: google/protobuf/compiler/plugin.proto
-
-package pluginpb
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	descriptorpb "google.golang.org/protobuf/types/descriptorpb"
-	reflect "reflect"
-	sync "sync"
-)
-
-// Sync with code_generator.h.
-type CodeGeneratorResponse_Feature int32
-
-const (
-	CodeGeneratorResponse_FEATURE_NONE            CodeGeneratorResponse_Feature = 0
-	CodeGeneratorResponse_FEATURE_PROTO3_OPTIONAL CodeGeneratorResponse_Feature = 1
-)
-
-// Enum value maps for CodeGeneratorResponse_Feature.
-var (
-	CodeGeneratorResponse_Feature_name = map[int32]string{
-		0: "FEATURE_NONE",
-		1: "FEATURE_PROTO3_OPTIONAL",
-	}
-	CodeGeneratorResponse_Feature_value = map[string]int32{
-		"FEATURE_NONE":            0,
-		"FEATURE_PROTO3_OPTIONAL": 1,
-	}
-)
-
-func (x CodeGeneratorResponse_Feature) Enum() *CodeGeneratorResponse_Feature {
-	p := new(CodeGeneratorResponse_Feature)
-	*p = x
-	return p
-}
-
-func (x CodeGeneratorResponse_Feature) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (CodeGeneratorResponse_Feature) Descriptor() protoreflect.EnumDescriptor {
-	return file_google_protobuf_compiler_plugin_proto_enumTypes[0].Descriptor()
-}
-
-func (CodeGeneratorResponse_Feature) Type() protoreflect.EnumType {
-	return &file_google_protobuf_compiler_plugin_proto_enumTypes[0]
-}
-
-func (x CodeGeneratorResponse_Feature) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *CodeGeneratorResponse_Feature) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = CodeGeneratorResponse_Feature(num)
-	return nil
-}
-
-// Deprecated: Use CodeGeneratorResponse_Feature.Descriptor instead.
-func (CodeGeneratorResponse_Feature) EnumDescriptor() ([]byte, []int) {
-	return file_google_protobuf_compiler_plugin_proto_rawDescGZIP(), []int{2, 0}
-}
-
-// The version number of protocol compiler.
-type Version struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Major *int32 `protobuf:"varint,1,opt,name=major" json:"major,omitempty"`
-	Minor *int32 `protobuf:"varint,2,opt,name=minor" json:"minor,omitempty"`
-	Patch *int32 `protobuf:"varint,3,opt,name=patch" json:"patch,omitempty"`
-	// A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should
-	// be empty for mainline stable releases.
-	Suffix *string `protobuf:"bytes,4,opt,name=suffix" json:"suffix,omitempty"`
-}
-
-func (x *Version) Reset() {
-	*x = Version{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_compiler_plugin_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Version) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Version) ProtoMessage() {}
-
-func (x *Version) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_compiler_plugin_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Version.ProtoReflect.Descriptor instead.
-func (*Version) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_compiler_plugin_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *Version) GetMajor() int32 {
-	if x != nil && x.Major != nil {
-		return *x.Major
-	}
-	return 0
-}
-
-func (x *Version) GetMinor() int32 {
-	if x != nil && x.Minor != nil {
-		return *x.Minor
-	}
-	return 0
-}
-
-func (x *Version) GetPatch() int32 {
-	if x != nil && x.Patch != nil {
-		return *x.Patch
-	}
-	return 0
-}
-
-func (x *Version) GetSuffix() string {
-	if x != nil && x.Suffix != nil {
-		return *x.Suffix
-	}
-	return ""
-}
-
-// An encoded CodeGeneratorRequest is written to the plugin's stdin.
-type CodeGeneratorRequest struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// The .proto files that were explicitly listed on the command-line.  The
-	// code generator should generate code only for these files.  Each file's
-	// descriptor will be included in proto_file, below.
-	FileToGenerate []string `protobuf:"bytes,1,rep,name=file_to_generate,json=fileToGenerate" json:"file_to_generate,omitempty"`
-	// The generator parameter passed on the command-line.
-	Parameter *string `protobuf:"bytes,2,opt,name=parameter" json:"parameter,omitempty"`
-	// FileDescriptorProtos for all files in files_to_generate and everything
-	// they import.  The files will appear in topological order, so each file
-	// appears before any file that imports it.
-	//
-	// protoc guarantees that all proto_files will be written after
-	// the fields above, even though this is not technically guaranteed by the
-	// protobuf wire format.  This theoretically could allow a plugin to stream
-	// in the FileDescriptorProtos and handle them one by one rather than read
-	// the entire set into memory at once.  However, as of this writing, this
-	// is not similarly optimized on protoc's end -- it will store all fields in
-	// memory at once before sending them to the plugin.
-	//
-	// Type names of fields and extensions in the FileDescriptorProto are always
-	// fully qualified.
-	ProtoFile []*descriptorpb.FileDescriptorProto `protobuf:"bytes,15,rep,name=proto_file,json=protoFile" json:"proto_file,omitempty"`
-	// The version number of protocol compiler.
-	CompilerVersion *Version `protobuf:"bytes,3,opt,name=compiler_version,json=compilerVersion" json:"compiler_version,omitempty"`
-}
-
-func (x *CodeGeneratorRequest) Reset() {
-	*x = CodeGeneratorRequest{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_compiler_plugin_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CodeGeneratorRequest) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CodeGeneratorRequest) ProtoMessage() {}
-
-func (x *CodeGeneratorRequest) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_compiler_plugin_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CodeGeneratorRequest.ProtoReflect.Descriptor instead.
-func (*CodeGeneratorRequest) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_compiler_plugin_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *CodeGeneratorRequest) GetFileToGenerate() []string {
-	if x != nil {
-		return x.FileToGenerate
-	}
-	return nil
-}
-
-func (x *CodeGeneratorRequest) GetParameter() string {
-	if x != nil && x.Parameter != nil {
-		return *x.Parameter
-	}
-	return ""
-}
-
-func (x *CodeGeneratorRequest) GetProtoFile() []*descriptorpb.FileDescriptorProto {
-	if x != nil {
-		return x.ProtoFile
-	}
-	return nil
-}
-
-func (x *CodeGeneratorRequest) GetCompilerVersion() *Version {
-	if x != nil {
-		return x.CompilerVersion
-	}
-	return nil
-}
-
-// The plugin writes an encoded CodeGeneratorResponse to stdout.
-type CodeGeneratorResponse struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// Error message.  If non-empty, code generation failed.  The plugin process
-	// should exit with status code zero even if it reports an error in this way.
-	//
-	// This should be used to indicate errors in .proto files which prevent the
-	// code generator from generating correct code.  Errors which indicate a
-	// problem in protoc itself -- such as the input CodeGeneratorRequest being
-	// unparseable -- should be reported by writing a message to stderr and
-	// exiting with a non-zero status code.
-	Error *string `protobuf:"bytes,1,opt,name=error" json:"error,omitempty"`
-	// A bitmask of supported features that the code generator supports.
-	// This is a bitwise "or" of values from the Feature enum.
-	SupportedFeatures *uint64                       `protobuf:"varint,2,opt,name=supported_features,json=supportedFeatures" json:"supported_features,omitempty"`
-	File              []*CodeGeneratorResponse_File `protobuf:"bytes,15,rep,name=file" json:"file,omitempty"`
-}
-
-func (x *CodeGeneratorResponse) Reset() {
-	*x = CodeGeneratorResponse{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_compiler_plugin_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CodeGeneratorResponse) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CodeGeneratorResponse) ProtoMessage() {}
-
-func (x *CodeGeneratorResponse) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_compiler_plugin_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CodeGeneratorResponse.ProtoReflect.Descriptor instead.
-func (*CodeGeneratorResponse) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_compiler_plugin_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *CodeGeneratorResponse) GetError() string {
-	if x != nil && x.Error != nil {
-		return *x.Error
-	}
-	return ""
-}
-
-func (x *CodeGeneratorResponse) GetSupportedFeatures() uint64 {
-	if x != nil && x.SupportedFeatures != nil {
-		return *x.SupportedFeatures
-	}
-	return 0
-}
-
-func (x *CodeGeneratorResponse) GetFile() []*CodeGeneratorResponse_File {
-	if x != nil {
-		return x.File
-	}
-	return nil
-}
-
-// Represents a single generated file.
-type CodeGeneratorResponse_File struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// The file name, relative to the output directory.  The name must not
-	// contain "." or ".." components and must be relative, not be absolute (so,
-	// the file cannot lie outside the output directory).  "/" must be used as
-	// the path separator, not "\".
-	//
-	// If the name is omitted, the content will be appended to the previous
-	// file.  This allows the generator to break large files into small chunks,
-	// and allows the generated text to be streamed back to protoc so that large
-	// files need not reside completely in memory at one time.  Note that as of
-	// this writing protoc does not optimize for this -- it will read the entire
-	// CodeGeneratorResponse before writing files to disk.
-	Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
-	// If non-empty, indicates that the named file should already exist, and the
-	// content here is to be inserted into that file at a defined insertion
-	// point.  This feature allows a code generator to extend the output
-	// produced by another code generator.  The original generator may provide
-	// insertion points by placing special annotations in the file that look
-	// like:
-	//   @@protoc_insertion_point(NAME)
-	// The annotation can have arbitrary text before and after it on the line,
-	// which allows it to be placed in a comment.  NAME should be replaced with
-	// an identifier naming the point -- this is what other generators will use
-	// as the insertion_point.  Code inserted at this point will be placed
-	// immediately above the line containing the insertion point (thus multiple
-	// insertions to the same point will come out in the order they were added).
-	// The double-@ is intended to make it unlikely that the generated code
-	// could contain things that look like insertion points by accident.
-	//
-	// For example, the C++ code generator places the following line in the
-	// .pb.h files that it generates:
-	//   // @@protoc_insertion_point(namespace_scope)
-	// This line appears within the scope of the file's package namespace, but
-	// outside of any particular class.  Another plugin can then specify the
-	// insertion_point "namespace_scope" to generate additional classes or
-	// other declarations that should be placed in this scope.
-	//
-	// Note that if the line containing the insertion point begins with
-	// whitespace, the same whitespace will be added to every line of the
-	// inserted text.  This is useful for languages like Python, where
-	// indentation matters.  In these languages, the insertion point comment
-	// should be indented the same amount as any inserted code will need to be
-	// in order to work correctly in that context.
-	//
-	// The code generator that generates the initial file and the one which
-	// inserts into it must both run as part of a single invocation of protoc.
-	// Code generators are executed in the order in which they appear on the
-	// command line.
-	//
-	// If |insertion_point| is present, |name| must also be present.
-	InsertionPoint *string `protobuf:"bytes,2,opt,name=insertion_point,json=insertionPoint" json:"insertion_point,omitempty"`
-	// The file contents.
-	Content *string `protobuf:"bytes,15,opt,name=content" json:"content,omitempty"`
-	// Information describing the file content being inserted. If an insertion
-	// point is used, this information will be appropriately offset and inserted
-	// into the code generation metadata for the generated files.
-	GeneratedCodeInfo *descriptorpb.GeneratedCodeInfo `protobuf:"bytes,16,opt,name=generated_code_info,json=generatedCodeInfo" json:"generated_code_info,omitempty"`
-}
-
-func (x *CodeGeneratorResponse_File) Reset() {
-	*x = CodeGeneratorResponse_File{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_google_protobuf_compiler_plugin_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CodeGeneratorResponse_File) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CodeGeneratorResponse_File) ProtoMessage() {}
-
-func (x *CodeGeneratorResponse_File) ProtoReflect() protoreflect.Message {
-	mi := &file_google_protobuf_compiler_plugin_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CodeGeneratorResponse_File.ProtoReflect.Descriptor instead.
-func (*CodeGeneratorResponse_File) Descriptor() ([]byte, []int) {
-	return file_google_protobuf_compiler_plugin_proto_rawDescGZIP(), []int{2, 0}
-}
-
-func (x *CodeGeneratorResponse_File) GetName() string {
-	if x != nil && x.Name != nil {
-		return *x.Name
-	}
-	return ""
-}
-
-func (x *CodeGeneratorResponse_File) GetInsertionPoint() string {
-	if x != nil && x.InsertionPoint != nil {
-		return *x.InsertionPoint
-	}
-	return ""
-}
-
-func (x *CodeGeneratorResponse_File) GetContent() string {
-	if x != nil && x.Content != nil {
-		return *x.Content
-	}
-	return ""
-}
-
-func (x *CodeGeneratorResponse_File) GetGeneratedCodeInfo() *descriptorpb.GeneratedCodeInfo {
-	if x != nil {
-		return x.GeneratedCodeInfo
-	}
-	return nil
-}
-
-var File_google_protobuf_compiler_plugin_proto protoreflect.FileDescriptor
-
-var file_google_protobuf_compiler_plugin_proto_rawDesc = []byte{
-	0x0a, 0x25, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
-	0x66, 0x2f, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x2f, 0x70, 0x6c, 0x75, 0x67, 0x69,
-	0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65,
-	0x72, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
-	0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x22, 0x63, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x14,
-	0x0a, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6d,
-	0x61, 0x6a, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61,
-	0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68,
-	0x12, 0x16, 0x0a, 0x06, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x06, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x22, 0xf1, 0x01, 0x0a, 0x14, 0x43, 0x6f, 0x64,
-	0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x12, 0x28, 0x0a, 0x10, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x67, 0x65, 0x6e,
-	0x65, 0x72, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x66, 0x69, 0x6c,
-	0x65, 0x54, 0x6f, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x70,
-	0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
-	0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x0a, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e,
-	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
-	0x46, 0x69, 0x6c, 0x65, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x50, 0x72,
-	0x6f, 0x74, 0x6f, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x4c,
-	0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69,
-	0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69,
-	0x6c, 0x65, 0x72, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0f, 0x63, 0x6f, 0x6d,
-	0x70, 0x69, 0x6c, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x94, 0x03, 0x0a,
-	0x15, 0x43, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x52, 0x65,
-	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x2d, 0x0a, 0x12,
-	0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72,
-	0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72,
-	0x74, 0x65, 0x64, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x04, 0x66,
-	0x69, 0x6c, 0x65, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
-	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x63, 0x6f, 0x6d, 0x70,
-	0x69, 0x6c, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74,
-	0x6f, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52,
-	0x04, 0x66, 0x69, 0x6c, 0x65, 0x1a, 0xb1, 0x01, 0x0a, 0x04, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x12,
-	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
-	0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
-	0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x73,
-	0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63,
-	0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f,
-	0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x13, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74,
-	0x65, 0x64, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x10, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f,
-	0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x11, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65,
-	0x64, 0x43, 0x6f, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x38, 0x0a, 0x07, 0x46, 0x65, 0x61,
-	0x74, 0x75, 0x72, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52, 0x45, 0x5f,
-	0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x46, 0x45, 0x41, 0x54, 0x55, 0x52,
-	0x45, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x33, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x41,
-	0x4c, 0x10, 0x01, 0x42, 0x57, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
-	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x63, 0x6f, 0x6d, 0x70, 0x69,
-	0x6c, 0x65, 0x72, 0x42, 0x0c, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f,
-	0x73, 0x5a, 0x29, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67,
-	0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x79,
-	0x70, 0x65, 0x73, 0x2f, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x70, 0x62,
-}
-
-var (
-	file_google_protobuf_compiler_plugin_proto_rawDescOnce sync.Once
-	file_google_protobuf_compiler_plugin_proto_rawDescData = file_google_protobuf_compiler_plugin_proto_rawDesc
-)
-
-func file_google_protobuf_compiler_plugin_proto_rawDescGZIP() []byte {
-	file_google_protobuf_compiler_plugin_proto_rawDescOnce.Do(func() {
-		file_google_protobuf_compiler_plugin_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_protobuf_compiler_plugin_proto_rawDescData)
-	})
-	return file_google_protobuf_compiler_plugin_proto_rawDescData
-}
-
-var file_google_protobuf_compiler_plugin_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_google_protobuf_compiler_plugin_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
-var file_google_protobuf_compiler_plugin_proto_goTypes = []interface{}{
-	(CodeGeneratorResponse_Feature)(0),       // 0: google.protobuf.compiler.CodeGeneratorResponse.Feature
-	(*Version)(nil),                          // 1: google.protobuf.compiler.Version
-	(*CodeGeneratorRequest)(nil),             // 2: google.protobuf.compiler.CodeGeneratorRequest
-	(*CodeGeneratorResponse)(nil),            // 3: google.protobuf.compiler.CodeGeneratorResponse
-	(*CodeGeneratorResponse_File)(nil),       // 4: google.protobuf.compiler.CodeGeneratorResponse.File
-	(*descriptorpb.FileDescriptorProto)(nil), // 5: google.protobuf.FileDescriptorProto
-	(*descriptorpb.GeneratedCodeInfo)(nil),   // 6: google.protobuf.GeneratedCodeInfo
-}
-var file_google_protobuf_compiler_plugin_proto_depIdxs = []int32{
-	5, // 0: google.protobuf.compiler.CodeGeneratorRequest.proto_file:type_name -> google.protobuf.FileDescriptorProto
-	1, // 1: google.protobuf.compiler.CodeGeneratorRequest.compiler_version:type_name -> google.protobuf.compiler.Version
-	4, // 2: google.protobuf.compiler.CodeGeneratorResponse.file:type_name -> google.protobuf.compiler.CodeGeneratorResponse.File
-	6, // 3: google.protobuf.compiler.CodeGeneratorResponse.File.generated_code_info:type_name -> google.protobuf.GeneratedCodeInfo
-	4, // [4:4] is the sub-list for method output_type
-	4, // [4:4] is the sub-list for method input_type
-	4, // [4:4] is the sub-list for extension type_name
-	4, // [4:4] is the sub-list for extension extendee
-	0, // [0:4] is the sub-list for field type_name
-}
-
-func init() { file_google_protobuf_compiler_plugin_proto_init() }
-func file_google_protobuf_compiler_plugin_proto_init() {
-	if File_google_protobuf_compiler_plugin_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_google_protobuf_compiler_plugin_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Version); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_compiler_plugin_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CodeGeneratorRequest); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_compiler_plugin_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CodeGeneratorResponse); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_google_protobuf_compiler_plugin_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CodeGeneratorResponse_File); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_google_protobuf_compiler_plugin_proto_rawDesc,
-			NumEnums:      1,
-			NumMessages:   4,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_google_protobuf_compiler_plugin_proto_goTypes,
-		DependencyIndexes: file_google_protobuf_compiler_plugin_proto_depIdxs,
-		EnumInfos:         file_google_protobuf_compiler_plugin_proto_enumTypes,
-		MessageInfos:      file_google_protobuf_compiler_plugin_proto_msgTypes,
-	}.Build()
-	File_google_protobuf_compiler_plugin_proto = out.File
-	file_google_protobuf_compiler_plugin_proto_rawDesc = nil
-	file_google_protobuf_compiler_plugin_proto_goTypes = nil
-	file_google_protobuf_compiler_plugin_proto_depIdxs = nil
-}